Compare commits

...

2038 Commits

Author SHA1 Message Date
The ReactOS Team
63b2a4f19c This commit was manufactured by cvs2svn to create tag 'krnl0018'.
svn path=/tags/krnl0018/; revision=2136
2001-08-02 08:09:11 +00:00
Eric Kohl
7e4a551cd5 Added .cvsignore
svn path=/trunk/; revision=2135
2001-08-02 08:09:11 +00:00
Hartmut Birr
5e85eb7d8e Fixed a minor bug in _filbuf().
When there was returned a character from stream,
the counter wasn't decremented.

svn path=/trunk/; revision=2134
2001-08-02 07:26:30 +00:00
Hartmut Birr
f1a3075ad7 Fixed a bug in FindFirstFileW() and FindNextFileW().
The lengs of the copied strings was wrong.

svn path=/trunk/; revision=2133
2001-08-01 19:26:41 +00:00
Emanuele Aliberti
a798ec1a86 I added a rule for .cpp source files.
svn path=/trunk/; revision=2132
2001-08-01 17:40:02 +00:00
Hartmut Birr
130bddfe9f Fixed a bug in vfatGetNextDirEntry().
A valid file name was generated from a deleted LFN entry.
An overrun occurred, when a directory has more then 19 deleted LFN entries.

svn path=/trunk/; revision=2131
2001-08-01 15:59:24 +00:00
Eric Kohl
cad3eb8c42 Added CMOS configuration space handler.
svn path=/trunk/; revision=2130
2001-08-01 10:39:50 +00:00
Hartmut Birr
4032632974 Fixed a minor bug in vfat8Dot3ToString,
that expands a short name from 'test.x' to 'test.x  '.

svn path=/trunk/; revision=2129
2001-08-01 10:12:33 +00:00
Emanuele Aliberti
7034b49d22 \t processing in SCREEN_BUFFER bugged.
Partial fix.

svn path=/trunk/; revision=2128
2001-07-31 20:47:44 +00:00
Emanuele Aliberti
d87b450266 Removed the bugged conio.c:ComputeOffsetBuffer()
(Phillip noted it). Restored the inline offset
computation in conio.c:CsrpWriteConsole().
Added \t and \r processing in conio.c:CsrpWriteConsole()
which leads to formatted SCREEN_BUFFERS to
be restored when you switch console.
Please test it.

svn path=/trunk/; revision=2127
2001-07-31 20:28:43 +00:00
Emanuele Aliberti
a44f8b0d7a Little CsrpWriteConsole() cleanup.
(WIP) Restoring a non active screen buffer is bugged:
control characters are NOT processed.

svn path=/trunk/; revision=2126
2001-07-30 11:56:54 +00:00
Emanuele Aliberti
e439100646 Minor changes.
svn path=/trunk/; revision=2125
2001-07-30 11:50:44 +00:00
Emanuele Aliberti
aaa8d41666 \r processing.
svn path=/trunk/; revision=2124
2001-07-30 11:49:38 +00:00
Rex Jolliff
fe1d0d581a some changes to support loading actual drivers
svn path=/trunk/; revision=2123
2001-07-30 03:05:30 +00:00
Rex Jolliff
5d5aba0812 added rdel to all rule
svn path=/trunk/; revision=2122
2001-07-30 01:02:51 +00:00
Eric Kohl
f478c3bb18 Major npfs update, missing typedefs.
svn path=/trunk/; revision=2121
2001-07-29 23:52:49 +00:00
Eric Kohl
8d40c0f964 Fixed more %Z / %wZ bugs.
svn path=/trunk/; revision=2120
2001-07-29 16:47:11 +00:00
Eric Kohl
a305fad232 Fixed msvcrt startup bug.
svn path=/trunk/; revision=2119
2001-07-29 16:42:35 +00:00
Eric Kohl
a600af1a27 Major npfs update.
svn path=/trunk/; revision=2118
2001-07-29 16:41:25 +00:00
Eric Kohl
ab405511d9 Fixed buggy 'install' rule.
svn path=/trunk/; revision=2117
2001-07-29 16:39:12 +00:00
Hartmut Birr
4ae9a4b859 Fixed a bug in _vsnprintf() with formats %wZ and %Z.
svn path=/trunk/; revision=2116
2001-07-29 12:42:40 +00:00
Phillip Susi
0d7487a18c Removed non existant header file include so it will compile
svn path=/trunk/; revision=2115
2001-07-28 15:24:04 +00:00
Emanuele Aliberti
ab529dfd67 Fixed makefile (missing specs).
svn path=/trunk/; revision=2114
2001-07-28 14:46:27 +00:00
Hartmut Birr
818f6c4bfc Fixed a bug FsdGetFsVolumeInformation().
The returned length was wrong.

svn path=/trunk/; revision=2113
2001-07-28 10:12:36 +00:00
Emanuele Aliberti
920ae420ee Make gditest draw a background.
Mostly PR to show we can do graphics...

svn path=/trunk/; revision=2112
2001-07-28 10:05:36 +00:00
Emanuele Aliberti
2f5809598e cmd, more, tee, y, notevil, sysutils linked to msvcrt.dll.
svn path=/trunk/; revision=2111
2001-07-28 08:02:05 +00:00
Emanuele Aliberti
3de844a224 *** empty log message ***
svn path=/trunk/; revision=2110
2001-07-28 07:57:24 +00:00
Hartmut Birr
28f723e21e Fixed the 'REACTOS' volume label bug.
svn path=/trunk/; revision=2109
2001-07-28 07:05:56 +00:00
Eric Kohl
85a1907ad6 Disabled a function-call that crashes all msvcrt-based apps.
Further investigation will be done.

svn path=/trunk/; revision=2108
2001-07-27 23:54:05 +00:00
Eric Kohl
d50f7d2496 Fixed a warning.
svn path=/trunk/; revision=2107
2001-07-27 10:15:48 +00:00
Eric Kohl
5cd5457f10 Removed specs files.
svn path=/trunk/; revision=2106
2001-07-26 16:52:53 +00:00
Eric Kohl
db88524e4f Fixed broken rule.
svn path=/trunk/; revision=2105
2001-07-26 12:36:33 +00:00
Eric Kohl
c98b85ff40 Updated .cvsignore and makefile.
svn path=/trunk/; revision=2104
2001-07-26 11:44:04 +00:00
Eric Kohl
c0333e56cd Vidport did not have an export table because of broken rule.
svn path=/trunk/; revision=2103
2001-07-26 11:40:59 +00:00
Hartmut Birr
2da14243ee Fixed bug in vfatMakeRootFCB().
svn path=/trunk/; revision=2102
2001-07-25 17:39:34 +00:00
Eric Kohl
6bad760721 Fixed bug in ReadVolumeLabel().
svn path=/trunk/; revision=2101
2001-07-25 08:58:21 +00:00
Eric Kohl
5844ee0a81 Updated driver list.
svn path=/trunk/; revision=2100
2001-07-25 08:31:22 +00:00
Eric Kohl
cf6085206f Remove unusable 'driver'.
svn path=/trunk/; revision=2099
2001-07-25 08:30:01 +00:00
Eric Kohl
8d6a03b3eb Added missing .cvsignore files.
Updated makefiles.

svn path=/trunk/; revision=2098
2001-07-25 08:29:15 +00:00
Eric Kohl
74893f61fb Minor update
svn path=/trunk/; revision=2097
2001-07-25 08:26:06 +00:00
Eric Kohl
b8cfaa435e Added missing .cvsignore files.
Updated makefiles.

svn path=/trunk/; revision=2096
2001-07-25 06:21:38 +00:00
Eric Kohl
7b23bdc4ac Documentation update.
Added preliminary road-map.

svn path=/trunk/; revision=2095
2001-07-24 20:49:57 +00:00
Eric Kohl
6c6bb5f62e More cleanups
svn path=/trunk/; revision=2094
2001-07-24 18:39:02 +00:00
Eric Kohl
72a83f69ee Updated makefile
svn path=/trunk/; revision=2093
2001-07-24 16:32:16 +00:00
Eric Kohl
1a42d9ea1c Minor updates.
svn path=/trunk/; revision=2092
2001-07-24 10:22:18 +00:00
Eric Kohl
e604d7b0fe Added disk class driver skeleton.
svn path=/trunk/; revision=2091
2001-07-24 10:21:15 +00:00
Eric Kohl
c0eef82d19 Moved lsass out of the way.
svn path=/trunk/; revision=2090
2001-07-24 10:18:39 +00:00
Eric Kohl
2f246b69d1 Added typedef for PCCHAR.
svn path=/trunk/; revision=2089
2001-07-23 12:54:35 +00:00
Eric Kohl
066d5b9dda Added storage drivers to the build process.
svn path=/trunk/; revision=2088
2001-07-23 06:15:27 +00:00
Eric Kohl
3df0bbbfce Added scsi class driver skeleton.
svn path=/trunk/; revision=2087
2001-07-23 06:13:48 +00:00
Emanuele Aliberti
9859f23c21 Skeleton for KERNEL32.GlobalMemoryStatus
svn path=/trunk/; revision=2086
2001-07-22 19:55:21 +00:00
Emanuele Aliberti
062243bc91 Minor path parametrization.
svn path=/trunk/; revision=2085
2001-07-21 20:16:09 +00:00
Eric Kohl
6429b16f0a Fixed dll build order
svn path=/trunk/; revision=2084
2001-07-21 20:08:42 +00:00
Emanuele Aliberti
97aa97fdd0 Minor fix.
svn path=/trunk/; revision=2083
2001-07-21 15:45:20 +00:00
Emanuele Aliberti
5e6df71477 Added version resource script.
svn path=/trunk/; revision=2082
2001-07-21 15:40:04 +00:00
Emanuele Aliberti
5cb7155212 Added version resource script.
svn path=/trunk/; revision=2081
2001-07-21 15:34:08 +00:00
Emanuele Aliberti
4ed1b71717 Ops! Target of a forwarded exported symbol should be as
decorated as the target itself.

svn path=/trunk/; revision=2080
2001-07-21 08:43:59 +00:00
Emanuele Aliberti
b4a32f4a4c Added forwarded exports to KERNEL32.
svn path=/trunk/; revision=2079
2001-07-21 08:41:12 +00:00
Emanuele Aliberti
ee0e06c2c1 Added version resource script.
svn path=/trunk/; revision=2078
2001-07-21 08:37:06 +00:00
Eric Kohl
b8ec1f6a56 Added scsiport driver skeleton.
svn path=/trunk/; revision=2077
2001-07-21 07:30:26 +00:00
Eric Kohl
75d57b4fa1 Enabled caching for FAT32 partitions.
Enabled FAT32 write code.
Various smaller fixes.
Patch by Hartmut Birr (part 2).

svn path=/trunk/; revision=2076
2001-07-20 08:00:21 +00:00
Eric Kohl
7192939c7d Restored _wmakepath(). Grrr. :-/
svn path=/trunk/; revision=2075
2001-07-19 18:53:29 +00:00
Eric Kohl
d24d5849fe Fixed bug in SetFileTime().
Patch by Hartmut Birr.

svn path=/trunk/; revision=2074
2001-07-19 18:42:02 +00:00
Eric Kohl
20a0131534 Fixed bug in _makepath().
Patch by Hartmut Birr.

svn path=/trunk/; revision=2073
2001-07-19 18:41:09 +00:00
Eric Kohl
e6063f185b Various fixes by Hartmut Birr.
svn path=/trunk/; revision=2072
2001-07-18 12:04:52 +00:00
Eric Kohl
1481663f41 Added mbstring functions.
svn path=/trunk/; revision=2071
2001-07-18 10:44:18 +00:00
Eric Kohl
c65dea5060 Added process and mbstring functions.
svn path=/trunk/; revision=2070
2001-07-18 09:23:02 +00:00
Eric Kohl
3edae5c9c1 Added process functions.
svn path=/trunk/; revision=2069
2001-07-18 09:22:04 +00:00
Eric Kohl
5cb6979b1a Added mbstring functions.
svn path=/trunk/; revision=2068
2001-07-18 09:20:23 +00:00
Eric Kohl
ccf31892a1 Fixed a tiny bug.
svn path=/trunk/; revision=2067
2001-07-18 09:18:10 +00:00
Eric Kohl
f488ede562 Fixed crash while mounting a FAT32 partition.
svn path=/trunk/; revision=2066
2001-07-17 07:48:06 +00:00
Rex Jolliff
5c2ae92c47 Added a stubbed oleaut32.dll and a little work on ole32.dll
svn path=/trunk/; revision=2065
2001-07-16 01:45:44 +00:00
Rex Jolliff
1f7f2ec88f move work on clean rule
svn path=/trunk/; revision=2064
2001-07-15 21:19:02 +00:00
Rex Jolliff
5ce255ed4c some work on clean rule
svn path=/trunk/; revision=2063
2001-07-15 18:06:23 +00:00
Eric Kohl
ac38bc6706 Named pipes and mail slots need a valid file object.
svn path=/trunk/; revision=2062
2001-07-15 15:36:31 +00:00
Eric Kohl
8e8502cc51 Create symbolic links for dos devices.
svn path=/trunk/; revision=2061
2001-07-15 13:46:16 +00:00
Casper Hornstrup
20da260a3c Temporary fix to prevent a crash when running in VMware (and possibly bochs too)
svn path=/trunk/; revision=2060
2001-07-14 21:10:31 +00:00
Eric Kohl
5b04ae25a4 Fixed a string overrun.
Patch by Hartmut Birr.

svn path=/trunk/; revision=2059
2001-07-14 18:21:23 +00:00
Nedko Arnaudov
372a3cc161 "Because of changes in winnt.h, some of security definitions must be used from there."
svn path=/trunk/; revision=2058
2001-07-14 07:01:38 +00:00
Eric Kohl
889f9e3c01 Added support for FAT16 partition with clustersize greater than page size.
Patch by Hartmut Birr.

svn path=/trunk/; revision=2057
2001-07-13 10:31:14 +00:00
Eric Kohl
6d64efee46 Moved interlocked and locale functions.
Implemented basic locale support.
Added some missing interlocked functions.

svn path=/trunk/; revision=2056
2001-07-12 17:23:42 +00:00
Eric Kohl
b03d2d1155 Added more functions to msvcrt.
svn path=/trunk/; revision=2055
2001-07-12 16:31:03 +00:00
Eric Kohl
562836fa81 Fixed a warning.
svn path=/trunk/; revision=2054
2001-07-12 11:59:51 +00:00
Eric Kohl
e9f2e019b1 Fixed warnings and errors.
svn path=/trunk/; revision=2053
2001-07-12 11:58:57 +00:00
Eric Kohl
577c72f5b0 Fixed compiling bug for gcc-2.95.3.
svn path=/trunk/; revision=2052
2001-07-11 20:26:58 +00:00
Casper Hornstrup
6f0b5babc4 Use fastcall in NDIS header.
svn path=/trunk/; revision=2050
2001-07-06 23:05:11 +00:00
Brian Palmer
17dc9b5270 Full memory management support (memory.c & memory.h & mem.S)
Preliminary debug code (debug.c & debug.h)
Reworked .ini file code (parseini.c & parseini.h)
Size optimizations (fat.asm & fat32.asm)
FAT12/16 boot sector now fully understands the FAT (fat.asm)

svn path=/trunk/; revision=2049
2001-07-06 22:05:05 +00:00
Eric Kohl
e575ed9544 Enabled FASTCALL calling convention
svn path=/trunk/; revision=2048
2001-07-06 21:32:43 +00:00
Eric Kohl
af1605f6f6 Added _wasctime() and _wctime().
svn path=/trunk/; revision=2047
2001-07-06 21:17:36 +00:00
Eric Kohl
4eca28a7a6 Fixed a windres warning
svn path=/trunk/; revision=2046
2001-07-06 21:15:20 +00:00
Eric Kohl
aa234d8870 Added missing _wmktemp().
svn path=/trunk/; revision=2045
2001-07-06 14:33:19 +00:00
Eric Kohl
10cde64c1f Added more missing functions
svn path=/trunk/; revision=2044
2001-07-06 12:53:03 +00:00
Rex Jolliff
131f7804ab some corrections to the stubs
svn path=/trunk/; revision=2043
2001-07-06 04:01:27 +00:00
Rex Jolliff
d152260ffa Added a stubbed shell32.dll
svn path=/trunk/; revision=2042
2001-07-06 02:47:17 +00:00
Eric Kohl
e5e74911b3 Added missing math and stdio functions
svn path=/trunk/; revision=2041
2001-07-06 00:58:15 +00:00
Eric Kohl
3bba37d64a Added missing math functions
svn path=/trunk/; revision=2040
2001-07-06 00:54:39 +00:00
Rex Jolliff
0e53a7424f added object handling routines for user objects in win32k.sys
svn path=/trunk/; revision=2039
2001-07-06 00:05:05 +00:00
Rex Jolliff
208eecc0f4 Partial directory caching (create calls cached, but dir info calls
still use non cached routines).

svn path=/trunk/; revision=2038
2001-07-05 01:51:53 +00:00
Casper Hornstrup
52ead14335 Fixed ne2000 driver so it will link correctly.
svn path=/trunk/; revision=2037
2001-07-04 21:24:02 +00:00
Casper Hornstrup
3a9de284ad Updated clean rules.
Implemented sequenced lists and lookaside lists.
Started on TCP/IP connection endpoints.
Save process window station in EPROCESS instead of PEB.
NOTICE: please do a make win32k_clean or you might experience a crash

svn path=/trunk/; revision=2036
2001-07-04 20:40:24 +00:00
Rex Jolliff
df84ec15d8 Fix for error in reading next extended partition when partition contains slack
or more than one non container partition.

svn path=/trunk/; revision=2035
2001-07-04 16:42:37 +00:00
Eric Kohl
eed177f191 Added conio functions
svn path=/trunk/; revision=2034
2001-07-04 16:39:37 +00:00
Rex Jolliff
d46de4a28a added some test cases to fsd tests
svn path=/trunk/; revision=2033
2001-07-04 03:07:54 +00:00
Eric Kohl
bd74b6b30a Added missing io functions from crtdll and implemented wide and 64 bit functions.
svn path=/trunk/; revision=2032
2001-07-03 22:18:42 +00:00
Eric Kohl
357a89921a Untangled crtdll/msvcrt header mess.
svn path=/trunk/; revision=2031
2001-07-03 13:21:22 +00:00
Eric Kohl
a6f8fd2f79 Oooops! This should not have heppened
svn path=/trunk/; revision=2030
2001-07-03 13:14:18 +00:00
Eric Kohl
83e63dc11b Untangled crtdll/msvcrt header mess.
svn path=/trunk/; revision=2029
2001-07-03 13:07:12 +00:00
Eric Kohl
0bbf23c333 Untangled crtdll/msvcrt header mess.
svn path=/trunk/; revision=2028
2001-07-03 12:56:48 +00:00
Eric Kohl
49ad46d964 Added some float and stdlib functions
svn path=/trunk/; revision=2027
2001-07-02 21:52:25 +00:00
Phillip Susi
8dacbd3ab0 Fixed LdrShutdownProcess() to only detach static dlls, any dynamically loaded ones should be FreeLibrary()d from the static dlls and then they will be detached
svn path=/trunk/; revision=2026
2001-07-02 20:27:41 +00:00
Eric Kohl
8cd4cde19c Added some code to map more predefined keys (like HKCU).
Implemented some ansi functions

svn path=/trunk/; revision=2025
2001-07-01 17:54:07 +00:00
Jason Filby
a9be5303eb Fixed warnings
svn path=/trunk/; revision=2024
2001-07-01 14:34:45 +00:00
Jason Filby
e9ff4263ca Wide characters to conform to LOGFONTW definition
svn path=/trunk/; revision=2023
2001-07-01 14:32:47 +00:00
Jason Filby
b7239a157c Defined LOGFONTW and now use it in DEVINFO
svn path=/trunk/; revision=2022
2001-07-01 14:31:46 +00:00
Jason Filby
93bd949df5 Bug fix
svn path=/trunk/; revision=2021
2001-06-30 17:43:05 +00:00
Emanuele Aliberti
b1cc45efd9 Fixed includes to compile.
svn path=/trunk/; revision=2020
2001-06-29 21:08:50 +00:00
Eric Kohl
965c424c85 Prepared loading of .nls files
svn path=/trunk/; revision=2019
2001-06-29 20:43:55 +00:00
Eric Kohl
b6da4ac7a1 Prepared loading of .nls files
svn path=/trunk/; revision=2018
2001-06-29 20:31:03 +00:00
Eric Kohl
29b5ab4122 Started moving common gdi32/w32k types into common header file.
svn path=/trunk/; revision=2017
2001-06-29 19:34:35 +00:00
Eric Kohl
8a477f58d7 Read partition tables only once while assigning drive letters.
svn path=/trunk/; revision=2016
2001-06-29 11:09:48 +00:00
Rex Jolliff
c967887093 oops, left in some debugging statements
svn path=/trunk/; revision=2015
2001-06-28 02:56:27 +00:00
Rex Jolliff
5eb89e0c5a fixed problem with extended partitions that contain only Linux logical partitions
svn path=/trunk/; revision=2014
2001-06-28 02:42:27 +00:00
Eric Kohl
b8e0d46292 Fixed typos and warnings.
svn path=/trunk/; revision=2013
2001-06-26 12:54:58 +00:00
Eric Kohl
edd3aa06a7 Fixed a lot of warnings.
svn path=/trunk/; revision=2012
2001-06-25 23:48:20 +00:00
Eric Kohl
25138c970a Oooops. Still something missing!
svn path=/trunk/; revision=2011
2001-06-25 18:57:41 +00:00
Eric Kohl
3454082412 Fixed a lot of warnings.
svn path=/trunk/; revision=2010
2001-06-25 18:51:31 +00:00
Eric Kohl
d450a93214 Fixed a lot of warnings.
svn path=/trunk/; revision=2009
2001-06-25 14:22:45 +00:00
Eric Kohl
6e9bf90969 Fixed a lot of warnings.
svn path=/trunk/; revision=2008
2001-06-25 12:32:56 +00:00
Eric Kohl
b9689b04fa Fixed a lot of warnings.
svn path=/trunk/; revision=2007
2001-06-25 09:30:45 +00:00
Phillip Susi
4a45379380 Added missing extern "C"
svn path=/trunk/; revision=2006
2001-06-24 17:58:13 +00:00
Phillip Susi
b5686dbcd2 Treat STATUS_PORT_DISCONNECTED as full error, now that LPC ports correctly deliver the LPC_PORT_CLOSED message.
svn path=/trunk/; revision=2005
2001-06-23 19:20:01 +00:00
Phillip Susi
db9f10747e Handles should be closed in the context of the dead process, not the system process.
For now, I just used KeAttachProcess() to do this, but this should be moved so it is called by the last thread of the process before it dies.

svn path=/trunk/; revision=2004
2001-06-23 19:15:14 +00:00
Phillip Susi
71f7e0cad5 Fixed LPC port implementation to use an internal semaphore, rather than an
event.  When using the event, if multiple messages were queued to the port
at once, the client would only get the first one, and then block rather than
read the next message.

I think that the port object should have a DISPATCHER_HEADER to make it a
full blown dispatcher object, allowing clients to wait on the port object.

svn path=/trunk/; revision=2003
2001-06-23 19:13:33 +00:00
Eric Kohl
1dfc10a465 Added protection against inclusion of conflicting prototypes.
svn path=/trunk/; revision=2002
2001-06-22 12:40:45 +00:00
Eric Kohl
a4356344c9 Minor fixes.
svn path=/trunk/; revision=2001
2001-06-22 12:36:23 +00:00
Eric Kohl
0514d0e92b Added symbol __NTDRIVER__ to identify drivers.
svn path=/trunk/; revision=2000
2001-06-22 12:30:02 +00:00
Eric Kohl
a25e9783d7 Replaced call to KeBugCheck().
svn path=/trunk/; revision=1999
2001-06-22 12:19:45 +00:00
Eric Kohl
770c504a74 Fixed 'clean' rule.
svn path=/trunk/; revision=1998
2001-06-22 12:17:24 +00:00
Phillip Susi
3e22e847c2 Implemented support for console titles
Display console title while swapping consoles with alt-tab
Use alt-tab now instead of alt-q

svn path=/trunk/; revision=1997
2001-06-22 02:11:44 +00:00
Phillip Susi
4eb1d89866 Set console title to "Winlogon"
svn path=/trunk/; revision=1996
2001-06-22 02:10:11 +00:00
Eric Kohl
932eaef816 Added missing directories to 'clean' rule.
svn path=/trunk/; revision=1995
2001-06-21 17:25:35 +00:00
Eric Kohl
294fa73123 Added missing io status blocks.
Fixed some warnings.

svn path=/trunk/; revision=1994
2001-06-21 13:14:41 +00:00
Rex Jolliff
9a56bea334 command line parse changed to not stop after first instance of each argument found
svn path=/trunk/; revision=1993
2001-06-21 04:12:19 +00:00
Brian Palmer
5efafbf03e Win2k FAT32 Boot Sector Disassembly
svn path=/trunk/; revision=1992
2001-06-20 20:31:35 +00:00
Eric Kohl
c280651aa2 Some more fixes for 'fastcall' support.
svn path=/trunk/; revision=1991
2001-06-20 20:00:36 +00:00
Eric Kohl
93eeaf2b3e First fixes to support fastcall:
- moved FILETIME
- removed inclusion of <windows.h> from ntoskrnl
- fixed typos

svn path=/trunk/; revision=1990
2001-06-20 13:00:53 +00:00
Eric Kohl
c79b121347 Implemented some more registry functions.
svn path=/trunk/; revision=1989
2001-06-19 15:09:16 +00:00
Eric Kohl
76f1b8fa3c Implemented RtlOpenCurrentUser().
svn path=/trunk/; revision=1988
2001-06-18 18:37:12 +00:00
Phillip Susi
439bc219e0 Enhanced floppy driver to read up to an entire track at a time
Not sure if I did this correctly, but it seems to work:

By accident, I noticed that it seems to return more than the sector you requested if you program the DMAC to transfer more than one sector of bytes, so I decided to go with it.

Minor fixes.

svn path=/trunk/; revision=1987
2001-06-18 03:14:24 +00:00
Phillip Susi
d28ae7e82f Check in of new ram disk driver, loads floppy image into ram on boot
svn path=/trunk/; revision=1986
2001-06-18 03:10:00 +00:00
Phillip Susi
a504708d4e Fixed console mode behavior with processed input but not line buffered mode
svn path=/trunk/; revision=1985
2001-06-18 03:07:37 +00:00
Phillip Susi
16588f8362 Put LoadString code back that was removed by someone...
svn path=/trunk/; revision=1984
2001-06-18 03:05:54 +00:00
Phillip Susi
a49c07b8f2 Fixed CreateProcess() to use the command line parameter like NT does
This still needs quite a bit more work to fix bugs and be 100% compatible with NT

svn path=/trunk/; revision=1983
2001-06-18 03:02:43 +00:00
Phillip Susi
045f617089 Corrected CreateProcess() command line parameter to be more compatible with NT
Fixed minor bugs with console mode being set incorrectly

svn path=/trunk/; revision=1982
2001-06-18 02:55:47 +00:00
Phillip Susi
35b12b3d8c Added .cvsignore to ignore cmd.coff
svn path=/trunk/; revision=1981
2001-06-17 23:10:07 +00:00
Eric Kohl
c4b00c80d8 Implemented some registry functions.
svn path=/trunk/; revision=1980
2001-06-17 22:54:36 +00:00
Emanuele Aliberti
ab5917c0c7 Fixed a typo.
svn path=/trunk/; revision=1979
2001-06-17 20:36:35 +00:00
Eric Kohl
fdbabc8ad9 Implemented AllocateLocallyUniqueId().
svn path=/trunk/; revision=1978
2001-06-17 20:20:21 +00:00
Emanuele Aliberti
1731f27560 NTDLL/csr: some more stubs; code split;
NTDLL/rtl: some more stubs; RtlRaiseStatus() implemented;
Minor changes.

svn path=/trunk/; revision=1977
2001-06-17 20:05:10 +00:00
Eric Kohl
c4bb1e256b Some csr additions
svn path=/trunk/; revision=1976
2001-06-17 09:25:03 +00:00
Eric Kohl
5a58cc8836 Changed ObCreateObject() to a more nt-compatible format.
Now it returns a status value.

svn path=/trunk/; revision=1975
2001-06-16 14:11:31 +00:00
Eric Kohl
ae8ba926ce Added unstripped driver to .cvsignore.
svn path=/trunk/; revision=1974
2001-06-16 09:54:43 +00:00
Eric Kohl
9d72cf785d Added some error checks.
svn path=/trunk/; revision=1973
2001-06-16 09:49:45 +00:00
Eric Kohl
9d04225d93 Fixed linker error.
svn path=/trunk/; revision=1972
2001-06-15 18:32:25 +00:00
Casper Hornstrup
a3ba68ae58 More work on winsock stack (ping is now working)
svn path=/trunk/; revision=1971
2001-06-15 17:48:43 +00:00
Eric Kohl
ae87e6af46 Fixes for gcc-2.95.3-4
Fixed typos

svn path=/trunk/; revision=1970
2001-06-15 11:15:32 +00:00
Jason Filby
2f3eb30871 From Eugene Ingerman:
Create default registry files is they don't exist
Modularized registry.c into more files, more manageable
Bug fix in IoCreateFile that didn't return IoStatusBlock
'dir' now works in Bochs - corrected parsing in VfatOpenFile

svn path=/trunk/; revision=1969
2001-06-14 21:05:08 +00:00
Eric Kohl
e180745ffa Added some error checks.
svn path=/trunk/; revision=1968
2001-06-14 10:02:59 +00:00
Eric Kohl
d8f25b3cb8 Implemented access to PCI configuration space
svn path=/trunk/; revision=1967
2001-06-13 22:17:01 +00:00
Eric Kohl
dbb696c65d Mostly STDCALL fixes.
svn path=/trunk/; revision=1966
2001-06-13 10:59:50 +00:00
Casper Hornstrup
8eba21d917 Window stations and desktops
svn path=/trunk/; revision=1965
2001-06-12 17:51:51 +00:00
Casper Hornstrup
db931ec021 Removed old wine code
svn path=/trunk/; revision=1964
2001-06-12 17:44:50 +00:00
Casper Hornstrup
bc8b4c3210 Removed old wine code
svn path=/trunk/; revision=1963
2001-06-12 17:35:46 +00:00
Casper Hornstrup
b0f6cfbe69 Removed old wine code
svn path=/trunk/; revision=1962
2001-06-12 17:30:27 +00:00
Brian Palmer
4750bc0160 Implemented memory detection & BIOS memory map
Added memory management prototypes

svn path=/trunk/; revision=1961
2001-06-12 16:12:50 +00:00
Eric Kohl
35850562c1 Added missing STDCALLs.
svn path=/trunk/; revision=1960
2001-06-12 12:36:58 +00:00
Eric Kohl
e8c61143ed Fixed some NT compatibility issues in Nt[Query/Set]InformationFile().
Fixed buffer size issues in volume functions.
Fixed several minor bugs.

svn path=/trunk/; revision=1959
2001-06-12 12:35:42 +00:00
Emanuele Aliberti
d1c18ff4e4 *** empty log message ***
svn path=/trunk/; revision=1958
2001-06-11 20:36:44 +00:00
Eric Kohl
4c892bc4e7 Implemented SetVolumeLabelW().
svn path=/trunk/; revision=1957
2001-06-11 19:54:05 +00:00
Eric Kohl
bf1b360a1e Fixed some NT compatibility issues in Nt[Query/Set]VolumeInformationFile().
svn path=/trunk/; revision=1956
2001-06-11 19:52:22 +00:00
Eric Kohl
80f8038f24 Fixed MaxRootEntries. This caused disk corruption.
svn path=/trunk/; revision=1955
2001-06-09 15:51:23 +00:00
Brian Palmer
dc36f333cf Forgot to add a semi-colon at end of statement
svn path=/trunk/; revision=1954
2001-06-08 23:20:14 +00:00
Brian Palmer
1d9101d6ea Separated multiboot kernel loader and reactos kernel loader so that support for other operating systems can be added
svn path=/trunk/; revision=1953
2001-06-08 23:12:40 +00:00
Eric Kohl
4c1911c2ca Use ARC-Path to boot ReactOS
svn path=/trunk/; revision=1952
2001-06-08 17:46:52 +00:00
Eric Kohl
18b431ed17 Added stubs for missing partition functions
svn path=/trunk/; revision=1951
2001-06-08 15:11:04 +00:00
Eric Kohl
624e3335e1 Implemented the most simple functions.
svn path=/trunk/; revision=1950
2001-06-07 21:27:45 +00:00
Eric Kohl
a68d65df79 Fixes to build win32k.sys again.
svn path=/trunk/; revision=1949
2001-06-07 21:22:32 +00:00
Eric Kohl
77fa055814 Replaced IDEGetPartitionTable() by call to IoReadPartitionTable()
Several minor fixes

svn path=/trunk/; revision=1948
2001-06-07 21:18:01 +00:00
Emanuele Aliberti
6d96f0e0cc Fixed includes to compile.
svn path=/trunk/; revision=1947
2001-06-07 20:38:53 +00:00
Jason Filby
51c0ed06fe Updated definition
svn path=/trunk/; revision=1946
2001-06-06 14:25:13 +00:00
Brian Palmer
4531d3752a Multiboot Kernel Compliance
svn path=/trunk/; revision=1945
2001-06-05 21:45:51 +00:00
Jason Filby
49e30c043c Bug fixes
svn path=/trunk/; revision=1944
2001-06-04 14:54:40 +00:00
Casper Hornstrup
f105303a7b Win32k native user stubs
svn path=/trunk/; revision=1943
2001-06-04 14:39:43 +00:00
Casper Hornstrup
465823fcc7 Default is screen debug output
svn path=/trunk/; revision=1942
2001-06-04 11:27:54 +00:00
Casper Hornstrup
514cb6a689 Raw IP and ICMP fixes
More work on winsock stack (not usable yet though)
Support for loading symbols for user mode modules

svn path=/trunk/; revision=1941
2001-06-04 11:26:13 +00:00
Jason Filby
3d24d1f443 Small fixes
svn path=/trunk/; revision=1940
2001-06-03 10:48:41 +00:00
Jason Filby
b6af1f6bab Prevent mouse from interfering with GDI drawing
svn path=/trunk/; revision=1939
2001-06-03 10:47:29 +00:00
Eric Kohl
c3b862d61d Fixed partition table bug
svn path=/trunk/; revision=1938
2001-06-02 15:53:26 +00:00
Jason Filby
4ce8aabb3c Faster moving mouse cursor
svn path=/trunk/; revision=1937
2001-06-02 08:44:46 +00:00
Jason Filby
a9d9714a23 Better looking mouse cursor
svn path=/trunk/; revision=1936
2001-06-02 08:43:48 +00:00
Eric Kohl
7d15b82aa0 Implemented RtlFindMessage() and Rtl[Query/Set]TimeZoneInformation().
svn path=/trunk/; revision=1935
2001-06-01 17:14:40 +00:00
Eric Kohl
efe6366a22 Implemented RtlFindMessage().
Implemented Rtl[Query/Set]TimeZoneInformation().
Implemented RtlQueryRegistryValues() partially.

svn path=/trunk/; revision=1933
2001-05-30 20:03:28 +00:00
Eric Kohl
553aab4bb7 Fixed a crash in NtCreateKey() when an existing key is opened
svn path=/trunk/; revision=1932
2001-05-30 14:40:36 +00:00
Eric Kohl
2c92d6e39b Fixed potential crash when empty ANSI_STRING or UNICODE_STRING is printed
svn path=/trunk/; revision=1931
2001-05-30 14:38:14 +00:00
Jason Filby
8c8de10906 Improve mouse driver stability a bit
svn path=/trunk/; revision=1930
2001-05-30 08:07:48 +00:00
Eric Kohl
5a12816c16 Fixed a typo
svn path=/trunk/; revision=1929
2001-05-27 23:03:51 +00:00
Casper Hornstrup
f821d295ad Double makefile in cvs
svn path=/trunk/; revision=1928
2001-05-27 16:37:24 +00:00
Casper Hornstrup
94fe75aeb4 Full make
svn path=/trunk/; revision=1927
2001-05-27 16:23:20 +00:00
Eric Kohl
eb7f6b07c8 Rewrote atom functions in kernel32
svn path=/trunk/; revision=1926
2001-05-27 15:40:31 +00:00
Eric Kohl
4790ca37b0 Implemented atoms in ntoskrnl and fixed a few bugs
svn path=/trunk/; revision=1925
2001-05-27 11:17:01 +00:00
Eric Kohl
803636da4a Implemented handle table and atom table
svn path=/trunk/; revision=1924
2001-05-26 17:49:18 +00:00
Eric Kohl
f9384f3cf8 Implemented handle table and atom table
svn path=/trunk/; revision=1923
2001-05-26 16:52:31 +00:00
Jason Filby
4c125c3021 Was not clearing screen on some cards
svn path=/trunk/; revision=1922
2001-05-26 10:25:22 +00:00
Jason Filby
2262d67ef2 Build mouclass and psaux
svn path=/trunk/; revision=1921
2001-05-26 10:20:07 +00:00
Jason Filby
c6287c59d3 Load PS/2 mouse and mouse class drivers on startup
svn path=/trunk/; revision=1920
2001-05-26 10:05:40 +00:00
Jason Filby
9726e9950b Minor update
svn path=/trunk/; revision=1919
2001-05-26 10:04:06 +00:00
Jason Filby
a91a0d77da VGA software cursor
svn path=/trunk/; revision=1918
2001-05-26 08:21:03 +00:00
Jason Filby
02e9af8bda Mouse driver improvements; callback between mouse class and GDI
svn path=/trunk/; revision=1917
2001-05-26 08:19:03 +00:00
Jason Filby
73b9ac6994 Initial GDI Mouse support, small DC fix
svn path=/trunk/; revision=1916
2001-05-26 08:15:40 +00:00
Eric Kohl
caae64da4b Fixed duplicate DELETE
svn path=/trunk/; revision=1915
2001-05-25 08:51:41 +00:00
Eric Kohl
0f9dfab704 Implemented file access/sharing check functions
svn path=/trunk/; revision=1914
2001-05-24 22:19:25 +00:00
Eric Kohl
ca61cc2444 Implemented resource (multiple-reader-single-writer) lock
svn path=/trunk/; revision=1913
2001-05-24 11:28:54 +00:00
Jurgen van Gael
56ab538abe Added the definition files for ole32.dll
svn path=/trunk/; revision=1912
2001-05-19 21:23:20 +00:00
Nedko Arnaudov
1d63ef67f5 added #ifdefs for clipboard feature
svn path=/trunk/; revision=1911
2001-05-16 21:19:06 +00:00
Jurgen van Gael
5fda84ce39 Put the CLSID definition between the ifdef statement for the guid, otherwise compiling ole32 would generate multiple definition error messages
svn path=/trunk/; revision=1910
2001-05-15 21:04:09 +00:00
Jurgen van Gael
079339b3b8 Sourc code for the first ole32.dll COM implementation
svn path=/trunk/; revision=1909
2001-05-15 12:22:18 +00:00
Jurgen van Gael
48da1fcf14 Added header files for ole32.dll COM implementation
svn path=/trunk/; revision=1908
2001-05-15 11:53:23 +00:00
Brian Palmer
afdf923c65 Initial revision
svn path=/trunk/; revision=1904
2001-05-15 03:50:25 +00:00
Casper Hornstrup
bbf48f20aa Removed the assertion
svn path=/trunk/; revision=1903
2001-05-13 13:35:37 +00:00
Eric Kohl
7d0f1e3433 Some named pipe improvements (not usable yet!).
svn path=/trunk/; revision=1902
2001-05-10 23:38:31 +00:00
Rex Jolliff
4c5a154f4d a few more changes to vfat driver
svn path=/trunk/; revision=1901
2001-05-10 06:30:23 +00:00
Rex Jolliff
9cfc87e333 extracted a few more FCB funcs
svn path=/trunk/; revision=1900
2001-05-10 04:02:21 +00:00
Eric Kohl
3c986c6d3a Use MinGW startup code (crt0)
svn path=/trunk/; revision=1899
2001-05-08 11:19:43 +00:00
Casper Hornstrup
432ae66313 oops...back to default configuration
svn path=/trunk/; revision=1898
2001-05-08 09:43:55 +00:00
Casper Hornstrup
fc6a12de18 Preparations for 32-bit/64-bit architectures
Added stubs for most user32.dll functions

svn path=/trunk/; revision=1897
2001-05-07 22:03:27 +00:00
Eric Kohl
3694ebf507 Cleanup
svn path=/trunk/; revision=1896
2001-05-06 22:39:13 +00:00
Eric Kohl
7398918d11 Fixed bootable partition bug
svn path=/trunk/; revision=1895
2001-05-06 22:32:34 +00:00
Emanuele Aliberti
cbcc365a25 Added dist rule.
svn path=/trunk/; revision=1894
2001-05-06 19:28:50 +00:00
Carl Nettelblad
a975142a8d Last change stop CD from working. That's fixed now.
svn path=/trunk/; revision=1893
2001-05-06 17:27:50 +00:00
Carl Nettelblad
96a0d04b3b Removed support for current directories on several drives at once from cmd.exe. Now in NTDLL.
svn path=/trunk/; revision=1892
2001-05-06 17:12:44 +00:00
Carl Nettelblad
8efef1784a Moving support for current dir on several drives from cmd.exe to NTDLL.
svn path=/trunk/; revision=1891
2001-05-06 16:09:03 +00:00
Casper Hornstrup
ba2a8ca045 Added ACPI bus manager
Added ACPI button driver

svn path=/trunk/; revision=1890
2001-05-05 19:15:44 +00:00
Casper Hornstrup
efc93e5ae8 Added runtime configuration of debug prints from kernel debugger (on a per file basis)
svn path=/trunk/; revision=1889
2001-05-05 19:13:10 +00:00
Nedko Arnaudov
6fb7445d87 added optional parameter to specify destination directory
svn path=/trunk/; revision=1888
2001-05-05 19:11:29 +00:00
Phillip Susi
a0fe0d14a0 Removed a bunch of junk from wine and fixed crash on loading
svn path=/trunk/; revision=1887
2001-05-05 18:09:30 +00:00
Eric Kohl
3f98a7dd14 Added makefile
svn path=/trunk/; revision=1886
2001-05-05 18:01:07 +00:00
Eric Kohl
4304c92e6e Fixed silly 'off by one' bug
svn path=/trunk/; revision=1885
2001-05-05 18:00:33 +00:00
Eric Kohl
d13046ca0f Added mailslot fs driver
svn path=/trunk/; revision=1884
2001-05-05 15:21:05 +00:00
Emanuele Aliberti
f7d5d08e6e PORT_MESSAGE_TYPE(m) macro added.
svn path=/trunk/; revision=1883
2001-05-05 12:52:49 +00:00
Eric Kohl
7c469f9c46 Added attributes to object parse method.
svn path=/trunk/; revision=1882
2001-05-05 09:33:16 +00:00
Emanuele Aliberti
ab494baccd Fixed NtQueryDirectoryObject.
svn path=/trunk/; revision=1881
2001-05-04 21:44:21 +00:00
Rex Jolliff
ac9d3e30fb Changed Cc interface func names to CcRos.
Changed CcReleaseFileCache to use and dereference FileObject in BCB
instead of the one passed.

svn path=/trunk/; revision=1880
2001-05-04 01:21:45 +00:00
Nedko Arnaudov
d9776acd0c Added detection of redirection. GetStdHandle() used instead of CreateFile(). Error message is shown to user when it tries to redirect.
svn path=/trunk/; revision=1879
2001-05-03 22:41:16 +00:00
Casper Hornstrup
278ce6bf50 Removed debug code
Compile correctly with pool validation enabled

svn path=/trunk/; revision=1878
2001-05-03 17:24:00 +00:00
Jason Filby
53de047b71 Truetype files from OpenOffice
svn path=/trunk/; revision=1877
2001-05-03 07:17:38 +00:00
Jason Filby
87f05689bc *** empty log message ***
svn path=/trunk/; revision=1876
2001-05-03 07:16:33 +00:00
Eric Kohl
96a826ad92 Moved some heap stubs
svn path=/trunk/; revision=1875
2001-05-03 06:13:05 +00:00
Eric Kohl
973bed37c6 Implemented missing mailslot functions
svn path=/trunk/; revision=1874
2001-05-03 06:10:29 +00:00
Eric Kohl
4be50fdc7e Implemented mailslot functions
svn path=/trunk/; revision=1873
2001-05-02 22:29:18 +00:00
Eric Kohl
9f1e5ac42c Implemented CsrNewThread()
Added some registry functions

svn path=/trunk/; revision=1872
2001-05-02 22:25:58 +00:00
Emanuele Aliberti
ff2adbb728 Added -r switch to objdir to recurse the system name space.
svn path=/trunk/; revision=1871
2001-05-02 20:50:06 +00:00
Eric Kohl
7de8ff7c3c Fixed typo
svn path=/trunk/; revision=1870
2001-05-02 19:04:25 +00:00
Jason Filby
a4a7d78546 Truetype fonts from OpenOffice
svn path=/trunk/; revision=1869
2001-05-02 17:27:00 +00:00
Jason Filby
ce4ce9b5e9 Files incorrectly committed in ASCII
svn path=/trunk/; revision=1868
2001-05-02 17:25:47 +00:00
Jason Filby
66044c37fd reverted to proper makefile
svn path=/trunk/; revision=1867
2001-05-02 15:11:19 +00:00
Jason Filby
98fc0115be accidental commit
svn path=/trunk/; revision=1866
2001-05-02 15:10:24 +00:00
Jason Filby
f5a5752043 minor fix
svn path=/trunk/; revision=1865
2001-05-02 13:46:29 +00:00
Jason Filby
02184a83d4 Update install files
svn path=/trunk/; revision=1864
2001-05-02 12:37:06 +00:00
Jason Filby
979adb975e Update to test new GDI functions
svn path=/trunk/; revision=1863
2001-05-02 12:35:48 +00:00
Jason Filby
5ee6fc75ae GDI32 support for new win32k functions
svn path=/trunk/; revision=1862
2001-05-02 12:35:06 +00:00
Jason Filby
c84d5016d1 Initial font and text support. Fixes to color palette support. Mask and transparent blt support.
svn path=/trunk/; revision=1861
2001-05-02 12:33:42 +00:00
Jason Filby
b27e3264a9 Updates to GDI include files
svn path=/trunk/; revision=1860
2001-05-02 12:31:04 +00:00
Jason Filby
1a4b287958 VGA driver support for TransparentBlt
svn path=/trunk/; revision=1859
2001-05-02 12:29:51 +00:00
Jason Filby
69a45c48b1 Correct palette info. Initial support for bitblt masks
svn path=/trunk/; revision=1858
2001-05-02 12:29:08 +00:00
Jason Filby
6be44d6e81 Correctly configure palette registers
svn path=/trunk/; revision=1857
2001-05-02 12:27:32 +00:00
Jason Filby
4167bc8912 Initial TrueType fonts
svn path=/trunk/; revision=1856
2001-05-02 12:26:15 +00:00
Jason Filby
83352970a1 Freetype 2 includes
svn path=/trunk/; revision=1855
2001-05-02 12:24:36 +00:00
Jason Filby
be9bb3fb3c Freetype 2
svn path=/trunk/; revision=1854
2001-05-02 12:21:38 +00:00
Rex Jolliff
38afc0ac8b Extracted vfat8dot3ToFilename from GetEntryName
Extracted vfatMakeAbsoluteFilename from vfatOpenFile
Extracted vfatGrabFCBFromTable from vfatOpenFile
Extracted vfatNewFCB from vfatOpenFile
Extracted vfatAddFCBToTable from vfatOpenFile
Removed RtlAnsiToUnicode, RtlCatAnsiToUnicode

svn path=/trunk/; revision=1853
2001-05-02 03:18:03 +00:00
Casper Hornstrup
87589daf4e Preparations for checked/free like builds (CPRINT == DbgPrint when DBG is defined).
Modified loadros to support loading symbol files early at startup.
Modified loadros to convey BIOS memory map to the kernel if available.
Began building PnP manager device tree.
Added shutdown command to shell.exe

svn path=/trunk/; revision=1852
2001-05-01 23:08:21 +00:00
Phillip Susi
58e60b3092 Don't crash if win32k.sys isn't there.. it's ok..
svn path=/trunk/; revision=1851
2001-05-01 23:06:25 +00:00
Casper Hornstrup
f98bbb1df7 Ported ACPI CA (from the nice guys at Intel) to ReactOS (ACPI bus driver).
Started on ISA PnP bus driver.

svn path=/trunk/; revision=1850
2001-05-01 23:00:05 +00:00
Casper Hornstrup
1debf1a12d Work on winsock stack and indentation corrections.
svn path=/trunk/; revision=1849
2001-05-01 22:44:07 +00:00
Casper Hornstrup
72c2af4ca7 Better RawIP support.
Minor fixes.

svn path=/trunk/; revision=1848
2001-05-01 22:34:01 +00:00
Emanuele Aliberti
8d5c635a36 NtQueryDirectoryObject rewritten.
apps/objdir.c fixed to work under nt4sp6a AND reactos.

svn path=/trunk/; revision=1847
2001-05-01 21:43:45 +00:00
Nedko Arnaudov
1afd43b049 ^ is used for escape sequences
svn path=/trunk/; revision=1846
2001-05-01 20:53:24 +00:00
Nedko Arnaudov
13eef5cc24 now it compiles
svn path=/trunk/; revision=1845
2001-05-01 19:42:56 +00:00
Rex Jolliff
d73834ea4f added a few more fsd tests
svn path=/trunk/; revision=1844
2001-05-01 17:36:04 +00:00
Eric Kohl
b76211b20a Mailslot and named pipe preparations
svn path=/trunk/; revision=1843
2001-05-01 11:09:01 +00:00
Rex Jolliff
dabd23ba77 added test set for fsd driver
svn path=/trunk/; revision=1842
2001-05-01 04:35:08 +00:00
Rex Jolliff
fdfb9053d9 BUGFIX: Primary partitions that appeared after extended in table were incorrectly mounted
changed some error messages from DPRINT to DbgPrint

svn path=/trunk/; revision=1841
2001-04-30 05:28:17 +00:00
Carl Nettelblad
7e0bfac662 This change shouldn't mess things up, if used together with latest vfat version.
NtQueryInformationFile is required to return valid name information for this to work.

svn path=/trunk/; revision=1840
2001-04-29 21:09:20 +00:00
Carl Nettelblad
59e33e46af Probably getting fcb.PathName handling right this time.
svn path=/trunk/; revision=1839
2001-04-29 21:08:14 +00:00
David Welch
8701c47012 Removed .dbg target
svn path=/trunk/; revision=1838
2001-04-28 22:59:16 +00:00
Phillip Susi
56d6a0c2b1 Undo last change removing config.h, which is now correctly auto generated
svn path=/trunk/; revision=1837
2001-04-26 14:26:23 +00:00
Phillip Susi
39b80bfefd Fixed definition of EPROCESS to work with the forward declaration in ketypes.h
svn path=/trunk/; revision=1836
2001-04-26 13:29:58 +00:00
David Welch
a1f93462d3 Explicitly create config.h
svn path=/trunk/; revision=1835
2001-04-26 13:23:38 +00:00
Phillip Susi
51ca2e3c1a Removed reference to kernel private header internal/ps.h
svn path=/trunk/; revision=1834
2001-04-26 13:23:01 +00:00
Phillip Susi
4420d9e0cb Added forward declaration for EPROCESS
svn path=/trunk/; revision=1833
2001-04-26 13:22:24 +00:00
Eric Kohl
18f8e8da80 Some minor cleanup
svn path=/trunk/; revision=1832
2001-04-26 11:31:33 +00:00
Phillip Susi
af3325ef66 Undo last change
svn path=/trunk/; revision=1831
2001-04-26 04:01:54 +00:00
Phillip Susi
6de9186661 Removed references to obsolete config.h preventing compilation
svn path=/trunk/; revision=1830
2001-04-26 03:58:33 +00:00
Phillip Susi
dff9686ea0 Close handles to shell process/thread
svn path=/trunk/; revision=1829
2001-04-26 01:36:32 +00:00
Phillip Susi
50f5d0807c Added Tail.Overlay.DriverContext to IRP structure
svn path=/trunk/; revision=1828
2001-04-26 01:31:35 +00:00
Phillip Susi
9b3a488664 Fixed bug in IoFlushAdapterBuffers
svn path=/trunk/; revision=1827
2001-04-26 01:30:17 +00:00
Phillip Susi
595a5bad20 Added a check for end of fat chain before end of recorded length
svn path=/trunk/; revision=1826
2001-04-26 01:28:54 +00:00
Phillip Susi
21cbb4fcc1 FAT12GetNextCluster still needs fixed to not assume entire FAT fits in one cache page
Fixed minor typos
Temporary fix for FAT12GetNextCluster to at least not overflow the cache page

svn path=/trunk/; revision=1825
2001-04-26 01:28:15 +00:00
Phillip Susi
dc3c360885 Floppy driver updates, managed to boot system from floppy
svn path=/trunk/; revision=1824
2001-04-26 01:24:31 +00:00
Nedko Arnaudov
197fe0acf4 escape char when setting string value changed to ^
svn path=/trunk/; revision=1823
2001-04-24 23:05:56 +00:00
Nedko Arnaudov
05a5575ff1 minor changes
svn path=/trunk/; revision=1822
2001-04-24 22:53:00 +00:00
Nedko Arnaudov
5ac5ed1e37 quotation handling bug fixed
svn path=/trunk/; revision=1821
2001-04-24 22:32:31 +00:00
Emanuele Aliberti
f57fc2af90 Some FsRtl API updated (stubs) to sync with ntifs.h v25 by Bo Branten.
Added a new DDK header file to group any symbol definition related to
NTIFS: ddk/fstypes.h. Now ddk/ntifs.h includes fstypes and fsfuncs.

svn path=/trunk/; revision=1820
2001-04-24 18:36:39 +00:00
Emanuele Aliberti
a9dc0b739e Compilation bug fixed (due to having used an "unknown" field in the
SYSTEM_MODULE_ENTRY object I updated yesterday).

svn path=/trunk/; revision=1819
2001-04-23 22:00:28 +00:00
Emanuele Aliberti
4fc0783845 Query/SetSystemInformation: added stubs for information classes 0-53 (up to nt5/w2k).
Updated the SYSTEM_INFORMATION_CLASS enumeration with members names from the Net, Dabak and Nebbett.

svn path=/trunk/; revision=1818
2001-04-22 23:06:57 +00:00
Casper Hornstrup
fa71c1ff6c Added kernel debugger help (type help for a list of commands)
svn path=/trunk/; revision=1817
2001-04-22 14:47:00 +00:00
David Welch
40ef0ef8e2 Set the fs register properly on entry to the kernel from an irq
svn path=/trunk/; revision=1816
2001-04-21 22:39:42 +00:00
Eric Kohl
cb2396496c Implemented PsCreateSystemProcess()
svn path=/trunk/; revision=1815
2001-04-21 12:39:33 +00:00
David Welch
71d0b655ac Ignore config.h
svn path=/trunk/; revision=1814
2001-04-20 12:59:59 +00:00
David Welch
6b9f511801 Remove config.h
svn path=/trunk/; revision=1813
2001-04-20 12:59:13 +00:00
Casper Hornstrup
f0e807621f Call KiUpdateSystemTime from KiInterruptDispatch if on first processor.
Mask correct interrupts at each IRQ level
Fixed APIC error on initialization

svn path=/trunk/; revision=1812
2001-04-20 12:42:23 +00:00
David Welch
e344bc3faa UP fixes, was enabling interrupts too early
svn path=/trunk/; revision=1811
2001-04-18 03:31:19 +00:00
David Welch
6dd0418c50 Forgot to test compilation under UP
UP is default

svn path=/trunk/; revision=1810
2001-04-17 23:53:16 +00:00
David Welch
d41145488c SMP scheduling fixes
Obey thread affinity
Fix bogus invariant in KeAcquireSpinLockAtDpcLevel
Protect display with spinlock

svn path=/trunk/; revision=1809
2001-04-17 23:39:26 +00:00
David Welch
f29036d97b Further SMP work (associate an idle thread with each processor)
svn path=/trunk/; revision=1808
2001-04-17 04:11:01 +00:00
David Welch
2cfadf3b41 per processor TSS
svn path=/trunk/; revision=1807
2001-04-16 23:29:55 +00:00
David Welch
2dfc5cfcd4 Missing file
svn path=/trunk/; revision=1806
2001-04-16 18:06:29 +00:00
David Welch
85f85e8462 Further SMP initialization work (now boots all processors on SMP bochs)
Preparation for per-processor GDT

svn path=/trunk/; revision=1805
2001-04-16 16:29:03 +00:00
Nedko Arnaudov
add5e2d89f Added base support for user settings.
svn path=/trunk/; revision=1804
2001-04-16 05:11:54 +00:00
Nedko Arnaudov
2957aa4ce5 Added support for escape sequences when setting string value.
svn path=/trunk/; revision=1803
2001-04-16 05:09:51 +00:00
Nedko Arnaudov
368db861e4 unexpected declaration removed :}
svn path=/trunk/; revision=1802
2001-04-16 05:07:23 +00:00
Nedko Arnaudov
7f0a6dcd48 Implemented: default settings, loading settings from registry key, settings for prompt, normal text colors and command text colors.
svn path=/trunk/; revision=1801
2001-04-16 05:03:29 +00:00
Nedko Arnaudov
2b246092f3 Argument parser now ignores escape sequences.
svn path=/trunk/; revision=1800
2001-04-16 04:58:31 +00:00
Nedko Arnaudov
616e4d5242 Prompt now supports customization. Implementation is based on customization string with escape sequences. The prompt currently recognizes only one sequence in the customization string, \w - the current path.
svn path=/trunk/; revision=1799
2001-04-16 04:53:31 +00:00
David Welch
aeb62db2e8 Default config
svn path=/trunk/; revision=1798
2001-04-16 02:02:43 +00:00
David Welch
65b55ec6c6 SMP detection work
Changed initialization back
Changed to NT IRQLs
Check for return from main

svn path=/trunk/; revision=1797
2001-04-16 02:02:07 +00:00
Casper Hornstrup
bdfcd5630a Fixes for NE2000 driver
svn path=/trunk/; revision=1796
2001-04-16 01:16:36 +00:00
Casper Hornstrup
8c8d19c080 Added PnP and Power structures
svn path=/trunk/; revision=1795
2001-04-16 00:52:12 +00:00
Casper Hornstrup
262859736d Added PnP and Power stubs
svn path=/trunk/; revision=1794
2001-04-16 00:51:19 +00:00
Casper Hornstrup
e8fc884c37 Added PnP and Power structures
svn path=/trunk/; revision=1793
2001-04-16 00:44:54 +00:00
Nedko Arnaudov
1648d6ba62 gdb2\Makefile
svn path=/trunk/; revision=1792
2001-04-15 23:43:12 +00:00
Nedko Arnaudov
2c11752216 RegistryExplorer.cpp
svn path=/trunk/; revision=1791
2001-04-15 22:17:50 +00:00
Nedko Arnaudov
a70a5e92d0 INSTALL
svn path=/trunk/; revision=1790
2001-04-15 22:08:23 +00:00
Casper Hornstrup
94309de6e4 Added Intel MultiProcessor Specification support
svn path=/trunk/; revision=1789
2001-04-13 16:12:26 +00:00
David Welch
33408fe398 Reduced the size of the kernel disk image by moving the initial page
tables and page directory to the bss and initializing them at runtime.

svn path=/trunk/; revision=1788
2001-04-12 00:56:04 +00:00
David Welch
c21076a36c buildno doesn't rewrite the include/reactos/buildno.h
Discard relocations and import table from ntoskrnl
Reorganise multiboot.S

svn path=/trunk/; revision=1787
2001-04-11 22:13:21 +00:00
Casper Hornstrup
db0d247af0 Added loading of symbols when modules are loaded.
Print symbols on stack frame dump.
Put symbols in \SystemRoot\Symbols.

svn path=/trunk/; revision=1786
2001-04-11 12:46:05 +00:00
David Welch
33267a7bd2 More sensible dependencies scheme for configuration
svn path=/trunk/; revision=1785
2001-04-10 22:13:23 +00:00
Eric Kohl
78232dab8b Added functions to run MS VC++ 5/6 apps
svn path=/trunk/; revision=1784
2001-04-10 19:20:37 +00:00
Eric Kohl
6a0be77508 Fixed crash if exported function does not exist
svn path=/trunk/; revision=1783
2001-04-10 19:14:27 +00:00
David Welch
3a788d44ee Trace facility
svn path=/trunk/; revision=1782
2001-04-10 18:15:22 +00:00
David Welch
e40a4953f2 .cvsignore file
svn path=/trunk/; revision=1781
2001-04-10 18:12:51 +00:00
David Welch
bd5d1d2adf Correct problem with keyboard input not being accepted
Added kernel debugger
Kernel configuration

svn path=/trunk/; revision=1780
2001-04-10 17:48:17 +00:00
David Welch
db0e348770 Reorganised cache segment data structure
svn path=/trunk/; revision=1779
2001-04-09 02:45:04 +00:00
jean
de935b3cf0 undo replacement of FILETIME by LARGE_INTEGER.
indeed LARGE_INTEGER cause bad alignement.

svn path=/trunk/; revision=1778
2001-04-07 15:06:17 +00:00
Phillip Susi
9b90a6532b Fixed IoCompleteRequest() to directly call completion function, rather than queue an APC, if the target thread == current thread, because the APC code doesn't seem to correctly handle queueing an APC to the current thread
svn path=/trunk/; revision=1777
2001-04-06 04:29:16 +00:00
Eric Kohl
b2a5aa012c Fixed global and local memory functions
svn path=/trunk/; revision=1776
2001-04-05 01:54:42 +00:00
David Welch
b7437fe01a Fix longstanding bug in keyboard driver
svn path=/trunk/; revision=1775
2001-04-04 22:21:32 +00:00
Eric Kohl
8d1e0c87b3 Fixed a severe typo
svn path=/trunk/; revision=1774
2001-04-03 20:18:21 +00:00
David Welch
b63d768a18 Keep DPC queue size correct
Share section pages with cache if possible
If doing a read direct from disk (not via the cache) don't copy the data
MDL fixes

svn path=/trunk/; revision=1773
2001-04-03 17:25:50 +00:00
Phillip Susi
0858e6f0fb Oops... forgot to use physical address when programming the dma controller
svn path=/trunk/; revision=1772
2001-04-02 23:54:37 +00:00
Phillip Susi
9dfa505536 Fixed DPC bug: when the DPC is run, it has been removed from the queue and therefore can be queued again, the old code did not allow the dpc to be queued again until after the first one returned
svn path=/trunk/; revision=1771
2001-04-02 04:07:49 +00:00
Jason Filby
da6d4130c3 fixed a stupid bug
svn path=/trunk/; revision=1770
2001-04-01 15:18:35 +00:00
David Welch
6ca8f2a32b Use unix style path seperators
svn path=/trunk/; revision=1769
2001-04-01 14:44:40 +00:00
David Welch
c53353dfcb Reverted previous change, unnecessary
svn path=/trunk/; revision=1768
2001-03-31 17:02:17 +00:00
Jason Filby
fd1d23c72f reference moved hal.h
svn path=/trunk/; revision=1767
2001-03-31 16:46:59 +00:00
Phillip Susi
c48815ca85 Moved header
svn path=/trunk/; revision=1766
2001-03-31 16:36:46 +00:00
Jason Filby
0d87c04fdb last typo, really!
svn path=/trunk/; revision=1765
2001-03-31 16:12:13 +00:00
Jason Filby
c321566c86 *** empty log message ***
svn path=/trunk/; revision=1764
2001-03-31 16:09:17 +00:00
Jason Filby
fac82fed75 typo
svn path=/trunk/; revision=1763
2001-03-31 16:05:55 +00:00
Phillip Susi
57dfac271e Added declaration for MmAllocateContiguousAlignedMemory
svn path=/trunk/; revision=1762
2001-03-31 16:02:07 +00:00
Phillip Susi
a758924464 Added FILE_XXX_ALIGNMENT defines
svn path=/trunk/; revision=1761
2001-03-31 16:01:42 +00:00
Phillip Susi
137c93f9c6 DMA support added
svn path=/trunk/; revision=1760
2001-03-31 16:01:03 +00:00
Jason Filby
f56e6b7e9e oops
svn path=/trunk/; revision=1759
2001-03-31 16:00:24 +00:00
Jason Filby
f22ea77911 disable freetype for now
svn path=/trunk/; revision=1758
2001-03-31 15:56:57 +00:00
Phillip Susi
d8538e9795 Massive floppy work
svn path=/trunk/; revision=1757
2001-03-31 15:53:56 +00:00
Phillip Susi
6b46ea08e7 Go back to stripping only debug syms, not everything, from ntoskrnl because the boot loader doesn't correctly process the image and create a BSS, so the BSS overwrites the debug info if it is there, or the first driver loaded if it is not.
svn path=/trunk/; revision=1756
2001-03-31 15:46:08 +00:00
Jason Filby
f3b6ab3603 Indentation corrected, new tests
svn path=/trunk/; revision=1755
2001-03-31 15:43:22 +00:00
Jason Filby
389375c4ee Indentation corrected, minor fixes
svn path=/trunk/; revision=1754
2001-03-31 15:40:34 +00:00
Jason Filby
14c634ca97 Identation corrected, many fixes and minor improvements, initial DIB support
svn path=/trunk/; revision=1753
2001-03-31 15:35:08 +00:00
David Welch
a934fd1c24 Fix for not valid PE module bug
svn path=/trunk/; revision=1752
2001-03-31 12:56:37 +00:00
David Welch
4e81d099cf Check for failed allocation
Split up kernel32 stubs
Print proper stack trace for user mode exceptions

svn path=/trunk/; revision=1751
2001-03-31 01:17:30 +00:00
Phillip Susi
5907d91e41 apps/uitest does not seem to exist, don't try to make it
svn path=/trunk/; revision=1750
2001-03-30 22:10:47 +00:00
David Welch
d135a77c67 Enable atom functions
Don't load NOLOAD sections
Print additional debugging information about module loading

svn path=/trunk/; revision=1749
2001-03-30 17:26:42 +00:00
David Welch
381057612c Don't map NOLOAD sections
svn path=/trunk/; revision=1748
2001-03-30 15:14:53 +00:00
Jason Filby
74412de062 Initialize the VGA to work with display driver's vgavideo.c
svn path=/trunk/; revision=1747
2001-03-29 17:45:50 +00:00
David Welch
fbb680dffd Strip everything from ntoskrnl
svn path=/trunk/; revision=1746
2001-03-29 17:24:43 +00:00
David Welch
877f965575 Remove debugging code
svn path=/trunk/; revision=1745
2001-03-29 02:25:10 +00:00
David Welch
ca5d9b1a2d Fixed int 10 problems
Guard pages for all thread stacks

svn path=/trunk/; revision=1744
2001-03-29 01:14:00 +00:00
David Welch
d9925196f3 Catch stack over/underflows
svn path=/trunk/; revision=1743
2001-03-28 14:24:05 +00:00
David Welch
bde0898ab5 Fixed page list initialization
svn path=/trunk/; revision=1742
2001-03-28 11:57:51 +00:00
Phillip Susi
eca8ca8582 Also removed call to ExAllocatePool from DPRINT1
Why the heck was this in DPRINT1 and not DPRINT?

svn path=/trunk/; revision=1741
2001-03-28 04:43:02 +00:00
Phillip Susi
b20a5f12ed Removed call to ExAllocatePool from CHECKPOINT1
svn path=/trunk/; revision=1740
2001-03-28 03:06:55 +00:00
David Welch
09ad24f08c Print addresses in stack frames even early in the boot
svn path=/trunk/; revision=1739
2001-03-27 21:43:43 +00:00
David Welch
634bb6b997 Set the io bitmap pointer beyond the TSS limit
svn path=/trunk/; revision=1738
2001-03-26 23:01:39 +00:00
Emanuele Aliberti
988ec8cb30 This is really a bare bones counter. It works with the last build.
Not really useful, but lets you watch ROS working for hours.
Counters slow down dramatically (486/66) when many instances are
running (3+). Also a subtle CSR console support bug appears: when
you switch console, if the restored one wrote below the bottom line,
current Y is not the bottom line anymore.

svn path=/trunk/; revision=1737
2001-03-26 21:30:20 +00:00
David Welch
8c86bcfe89 Fixes for page list initialization
V86 mode fixes

svn path=/trunk/; revision=1736
2001-03-26 20:46:53 +00:00
David Welch
51a205bc71 Fixed bug with calling RtlFreeUnicodeString too early in LdrFixupForward
svn path=/trunk/; revision=1735
2001-03-26 16:33:10 +00:00
Phillip Susi
b1601c09d8 Fixed incorrect assertion in IoAllocateController: assert_irql() seems to check for IRQL <= current IRQL, but this function must be called with current IRQL == DISPATCH_LEVEL, not <= DISPATCH_LEVEL.
svn path=/trunk/; revision=1734
2001-03-26 05:03:54 +00:00
Phillip Susi
cf4a06ff33 fixed bug in MmAllocateContiguousAlignedMemory due to uninitialized BaseAddress local
svn path=/trunk/; revision=1733
2001-03-26 04:38:39 +00:00
David Welch
e065bf41ff Bug fixes
svn path=/trunk/; revision=1732
2001-03-26 00:56:53 +00:00
David Welch
9b95a9991c Disable debug prints
svn path=/trunk/; revision=1731
2001-03-25 19:05:30 +00:00
David Welch
99a644a366 Further fixes
svn path=/trunk/; revision=1730
2001-03-25 18:56:13 +00:00
David Welch
c2d9004a56 Oops, forget this file
svn path=/trunk/; revision=1729
2001-03-25 11:48:18 +00:00
David Welch
51f1b4ac50 V86 mode fixes
Preparation for paging support

svn path=/trunk/; revision=1728
2001-03-25 03:34:30 +00:00
David Welch
9b3c1a2a1d Make the trap handlers work early in the boot process
svn path=/trunk/; revision=1727
2001-03-22 11:14:22 +00:00
Casper Hornstrup
5bbfcbdcde Pass RemainingPath for device type FILE_DEVICE_NETWORK
svn path=/trunk/; revision=1726
2001-03-21 23:30:20 +00:00
Casper Hornstrup
61c860daf7 Set FileObject in stack location in NtDeviceIoControlFile
svn path=/trunk/; revision=1725
2001-03-21 23:27:18 +00:00
Casper Hornstrup
547f4b4197 Fix for MmBuildMdlForNonPagedPool
svn path=/trunk/; revision=1724
2001-03-21 23:06:08 +00:00
Casper Hornstrup
0f3822bfb9 Added script for creating binary distribution
svn path=/trunk/; revision=1723
2001-03-21 22:34:24 +00:00
Casper Hornstrup
0b3adffd26 Added classes for cabinet handling
Added a cabinet manager

svn path=/trunk/; revision=1722
2001-03-21 22:32:33 +00:00
David Welch
591d955230 Bug fixes
svn path=/trunk/; revision=1721
2001-03-20 16:09:44 +00:00
Eric Kohl
7a86200cdc Use vidport-functions instead of ntdll-functions
svn path=/trunk/; revision=1720
2001-03-20 15:11:51 +00:00
Eric Kohl
04c0aa0853 Established forwarded exports in vidport.sys
svn path=/trunk/; revision=1719
2001-03-20 15:09:02 +00:00
Eric Kohl
e3b61f2e00 Established forwarded exports in win32k.sys
svn path=/trunk/; revision=1718
2001-03-20 15:06:22 +00:00
Phillip Susi
486ce0ad1a apps/exp does not seem to exist, prevents full make, removing
svn path=/trunk/; revision=1717
2001-03-20 03:09:01 +00:00
David Welch
32e24ab35e User exception handling doesn't work yet
svn path=/trunk/; revision=1716
2001-03-20 00:52:21 +00:00
David Welch
cebfcd7c5e One more bug in MmAllocateContiguousPages
Removed debugging code

svn path=/trunk/; revision=1715
2001-03-18 21:28:30 +00:00
David Welch
ffca6e4a0a Typo
svn path=/trunk/; revision=1714
2001-03-18 20:30:22 +00:00
Emanuele Aliberti
f8ad495ac2 Really simple application that displays how much time elaped.
svn path=/trunk/; revision=1713
2001-03-18 20:20:13 +00:00
Emanuele Aliberti
f907dc6e87 KERNEL32.GetSystemTimeAsFileTime prototype added.
svn path=/trunk/; revision=1712
2001-03-18 20:18:34 +00:00
David Welch
7e2c26824a Beginnings of user-mode debugging support.
svn path=/trunk/; revision=1711
2001-03-18 19:52:38 +00:00
David Welch
1e02a7d8d9 Allocate pages beginning from the top of memory
svn path=/trunk/; revision=1710
2001-03-18 19:37:54 +00:00
David Welch
d60628a01b Fixes for APC handling
Fixes for exceptions
Remove KeAddTimeoutThread
Beginnings of debug handling
Fixes for contiguous memory allocation
Cancel the thread timer before termination

svn path=/trunk/; revision=1709
2001-03-18 19:35:14 +00:00
Emanuele Aliberti
01846dd237 Stubs for LookupPrivilege* added.
svn path=/trunk/; revision=1708
2001-03-17 22:05:25 +00:00
David Welch
5d2401e39c More missing files
svn path=/trunk/; revision=1707
2001-03-17 12:20:13 +00:00
David Welch
1a0448a35b Bug fixes
Started work on exception handling

svn path=/trunk/; revision=1706
2001-03-17 11:11:11 +00:00
David Welch
58fc2c8cf8 Oops, missing files
svn path=/trunk/; revision=1705
2001-03-17 09:43:27 +00:00
David Welch
6fbeba1e7c Moved microkernel to the architecture specific directory
svn path=/trunk/; revision=1704
2001-03-16 23:05:00 +00:00
David Welch
2a613a30c4 Removed obsolete header files
Updated copyright notices

svn path=/trunk/; revision=1703
2001-03-16 18:11:24 +00:00
David Welch
9926c78c7f Removed obsolete file
svn path=/trunk/; revision=1702
2001-03-16 16:23:05 +00:00
David Welch
18015b2244 * include/ddk/zw.h: Corrected declarations of NtCreateProfile,
NtQueryIntervalProfile, NtSetIntervalProfile.
* include/ddk/zwtypes.h: Added definitions of KPROFILE_SOURCE.
* ntoskrnl/include/internal/ke.h: Added the interrupted EIP as a
parameter to KiUpdateSystemTime for profiling purposes.
* ntoskrnl/include/internal/nt: Added declaration for profiling
support initialization.
* ntoskrnl/ke/timer.c (KiUpdateSystemTime, KeExpireTimers): Call
the profiling code on a timer interrupt with the interrupt EIP.
* ntoskrnl/ke/i386/irq.c (KiDispatchInterrupt): Pass the
interrupted EIP to KiUpdateSystemTime.
* ntoskrnl/mm/virtual.c (NtReadVirtualMemory, NtWriteVirtualMemory):
Release the MDLs used properly.
* ntoskrnl/nt/nt.c: Call the profiling support initialization.
* ntoskrnl/nt/ntevent.c (NtCreateEvent): Don't try copying the
ObjectAttributes parameter if it is NULL.
* ntoskrnl/nt/profile.c: Implemented profiling.

svn path=/trunk/; revision=1701
2001-03-16 16:05:34 +00:00
David Welch
18f3b6c58b * ntoskrnl/include/internal/safe.h: Corrected typo.
* ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtQueryEvent):
  Corrected typos.
* ntoskrnl/rtl/mem.c: Missing header file.

svn path=/trunk/; revision=1700
2001-03-16 10:58:47 +00:00
David Welch
22dc9e2a5e * ntoskrnl/include/internal/safe.h: Add definitions for handling
potentially unsafe pointers.

svn path=/trunk/; revision=1699
2001-03-16 09:53:28 +00:00
David Welch
3744b5d4cf * ntoskrnl/include/internal/mm.h: Removed MmSafeCopyToUser and
MmSafeCopyFromUser as source files need these but don't want internal
  mm definitions.
* ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtPulseEvent,
  NtQueryEvent, NtResetEvent, NtSetEvent): Copy data to and from user mode
  safely.
* ntoskrnl/rtl/mem.c (MmCopyToCaller, MmCopyFromCaller): Helper functions
  for copying data to and from potentially unsafe pointers.

svn path=/trunk/; revision=1698
2001-03-16 09:50:38 +00:00
David Welch
549cb5b03d Further fixes
svn path=/trunk/; revision=1697
2001-03-16 00:00:47 +00:00
David Welch
2eb05bdbc5 Further dependency fixes
svn path=/trunk/; revision=1696
2001-03-15 23:41:31 +00:00
David Welch
7244e5bac9 Hopefully final dependencies fixes
svn path=/trunk/; revision=1695
2001-03-15 22:13:50 +00:00
David Welch
e7f98c9000 Missing file
svn path=/trunk/; revision=1694
2001-03-15 20:15:05 +00:00
David Welch
be2ca4fccd Oops, missing files
svn path=/trunk/; revision=1693
2001-03-15 18:52:45 +00:00
David Welch
a068c65d79 Oops, cope if the dependency list is empty
svn path=/trunk/; revision=1692
2001-03-15 18:49:17 +00:00
David Welch
c3c30d0692 Further dependency tracking fixes
svn path=/trunk/; revision=1691
2001-03-15 18:37:29 +00:00
David Welch
6fc1bdc912 Merge adjacent free blocks in the non-paged pool
Don't print the timer tick count to the screen

svn path=/trunk/; revision=1690
2001-03-14 23:19:14 +00:00
David Welch
d12635ff66 Remove part of the script
svn path=/trunk/; revision=1689
2001-03-14 16:36:26 +00:00
David Welch
5e5862c7fe More dependency fixes
svn path=/trunk/; revision=1688
2001-03-14 16:30:08 +00:00
David Welch
fc5f4ae9a5 Some work on portabilitity
svn path=/trunk/; revision=1687
2001-03-14 00:21:22 +00:00
David Welch
f7186d4cc3 Disable pool validation by default
svn path=/trunk/; revision=1686
2001-03-13 21:46:43 +00:00
David Welch
fba831e913 Reenable pool validation
svn path=/trunk/; revision=1685
2001-03-13 21:39:47 +00:00
Jason Filby
efbd594370 OLE32 header files from Jurgen Van Gael
svn path=/trunk/; revision=1684
2001-03-13 19:00:13 +00:00
David Welch
33702a0775 Retain reference to file objects so cached data isn't automatically loss
when the last handle is closed

svn path=/trunk/; revision=1683
2001-03-13 17:47:47 +00:00
David Welch
47ea39add9 Represent page-in operations by descriptors
svn path=/trunk/; revision=1682
2001-03-13 16:25:55 +00:00
David Welch
c20f2479b6 Further dependency tracking fixes
svn path=/trunk/; revision=1681
2001-03-12 19:23:48 +00:00
David Welch
7853be9c86 Escape '\' on UNIX
svn path=/trunk/; revision=1680
2001-03-12 17:32:54 +00:00
David Welch
6ea1527cfc Fixes for dependency tracking
svn path=/trunk/; revision=1679
2001-03-12 16:10:57 +00:00
David Welch
d520a12907 Close section handle after NtCreateProces in KERNEL32.CreateProcess
Cleanup after file object dereference
Cleanup after section object dereference

svn path=/trunk/; revision=1678
2001-03-09 14:40:28 +00:00
David Welch
6e9d388644 Reverted broken code
svn path=/trunk/; revision=1677
2001-03-08 22:48:42 +00:00
David Welch
6e89a9d21c Proper cleanup after processes
svn path=/trunk/; revision=1676
2001-03-08 22:06:02 +00:00
Carl Nettelblad
03e327f37f Current directory now always with correct casing.
svn path=/trunk/; revision=1675
2001-03-07 22:29:09 +00:00
David Welch
c5cdaa420a More .cvsignore files
svn path=/trunk/; revision=1674
2001-03-07 16:55:42 +00:00
David Welch
c706428a2b Added tagging of most allocates
Added facility to print out newly allocated blocks from the non paged pool

svn path=/trunk/; revision=1673
2001-03-07 16:48:45 +00:00
Eric Kohl
05428a2fea Added request routine for IRP_MJ_CLEANUP
svn path=/trunk/; revision=1672
2001-03-07 13:44:41 +00:00
David Welch
3073e95ed9 Print out the contents of the non-paged pool on SysRq+'A'
Bug fixes

svn path=/trunk/; revision=1671
2001-03-07 08:57:09 +00:00
Carl Nettelblad
f665b3f2f4 FILE_NAME_INFORMATION, returning correct casing thanks to changes in create.c
svn path=/trunk/; revision=1670
2001-03-06 23:36:35 +00:00
Carl Nettelblad
29552067b3 NtQueryObject in early test version and reorganization of NtQueryInformationFile.
svn path=/trunk/; revision=1669
2001-03-06 23:34:39 +00:00
Carl Nettelblad
870a302f96 Restoring NDEBUG flag again.
svn path=/trunk/; revision=1668
2001-03-06 23:31:44 +00:00
Carl Nettelblad
9e66717a35 Storing the real casing of names internally.
svn path=/trunk/; revision=1667
2001-03-06 23:28:42 +00:00
David Welch
43038e9c15 Hide dependency files
Wildcard characters are illegal in filenames

svn path=/trunk/; revision=1666
2001-03-06 17:28:25 +00:00
David Welch
e87e6d58ee And again.
svn path=/trunk/; revision=1665
2001-03-06 14:52:58 +00:00
David Welch
971b171d02 Minor dependency tracking fixes
svn path=/trunk/; revision=1664
2001-03-06 14:51:07 +00:00
David Welch
044ab2b0df Automatic dependency tracking
svn path=/trunk/; revision=1663
2001-03-06 14:41:18 +00:00
Eric Kohl
2d5f3d1c74 Fixed typos
Added more safety checks
Minor cleanup

svn path=/trunk/; revision=1662
2001-03-06 08:19:58 +00:00
Carl Nettelblad
de10767975 Additional fixes.
svn path=/trunk/; revision=1661
2001-03-06 06:20:36 +00:00
Eric Kohl
2ec9eaf736 Increased number of busy retries
svn path=/trunk/; revision=1660
2001-03-04 00:46:46 +00:00
Carl Nettelblad
d5d8d819b8 Reflecting changes in crtdll.
svn path=/trunk/; revision=1659
2001-03-03 13:28:28 +00:00
Carl Nettelblad
afe0e9f601 Fragmented directories and crosslinking related fixes.
svn path=/trunk/; revision=1658
2001-03-02 15:59:16 +00:00
Carl Nettelblad
d3e61a64dd Fixes for cmd copy command.
svn path=/trunk/; revision=1657
2001-03-02 15:45:31 +00:00
Eric Kohl
5149f0d29a Some atom prototype fixes
svn path=/trunk/; revision=1656
2001-03-01 15:36:34 +00:00
Eric Kohl
bf9d9a12e7 Fix for RtlUnicodeStringToInteger
svn path=/trunk/; revision=1655
2001-03-01 15:30:36 +00:00
David Welch
574a1b82f4 Changed wildcare handling (Carl Nettelblad)
svn path=/trunk/; revision=1654
2001-03-01 13:46:22 +00:00
David Welch
a2329a46e9 Fixed from Carl Nettelblad
svn path=/trunk/; revision=1653
2001-03-01 07:48:17 +00:00
Phillip Susi
c9a6908fb9 Fixed crash on help command, due to a buffer overflow. Thanks to jim4
svn path=/trunk/; revision=1652
2001-02-28 23:51:58 +00:00
Eric Kohl
ea6cacb6ed Various improvements by Carl Nettelblad.
svn path=/trunk/; revision=1651
2001-02-28 22:33:23 +00:00
David Welch
80ec0821f8 Allow allocating aligned, contiguous memory
svn path=/trunk/; revision=1650
2001-02-28 18:23:32 +00:00
Casper Hornstrup
327980fe31 Return affinity in HalpGetSystemInterruptVector
svn path=/trunk/; revision=1649
2001-02-25 12:54:37 +00:00
Casper Hornstrup
85e1649fc4 Fix for RtlUnicodeStringToInteger
svn path=/trunk/; revision=1648
2001-02-25 12:51:43 +00:00
Eric Kohl
c3dc053ba2 Fixed a horrible typo :-)
svn path=/trunk/; revision=1647
2001-02-22 23:46:45 +00:00
Eric Kohl
3121974d42 Implemented forwarded exports in kernel-mode
svn path=/trunk/; revision=1646
2001-02-21 18:19:19 +00:00
David Welch
c1c75ffd5e Fix from Mike Lerwill for KeStallExecutionProcessor
svn path=/trunk/; revision=1645
2001-02-20 14:43:46 +00:00
David Welch
15445cf1c8 Corrected va_arg bugs
Don't require c++ for compilation
Make sure the various stddef.h headers are kept seperate

svn path=/trunk/; revision=1644
2001-02-19 15:04:51 +00:00
David Welch
ac82b90278 Fix for memory management issue.
svn path=/trunk/; revision=1643
2001-02-18 22:16:05 +00:00
Phillip Susi
24fea578c1 Updated instructions
svn path=/trunk/; revision=1642
2001-02-18 21:35:21 +00:00
David Welch
209d2a0bdd Removed timer app
svn path=/trunk/; revision=1641
2001-02-18 21:04:09 +00:00
Phillip Susi
835e5e69e5 Ignore csrss.coff
svn path=/trunk/; revision=1640
2001-02-18 20:15:14 +00:00
Phillip Susi
dae0efdd4a Ignore keyboard.coff, keyboard.sys.unstripped
svn path=/trunk/; revision=1639
2001-02-18 20:11:41 +00:00
Phillip Susi
fd25f6dae0 Ignore vfatfs.coff
svn path=/trunk/; revision=1638
2001-02-18 20:10:32 +00:00
Phillip Susi
c57a9b4991 Ignore vidport.coff
svn path=/trunk/; revision=1637
2001-02-18 20:07:41 +00:00
Phillip Susi
2b3a1f40c1 Ignore vgamp.coff
svn path=/trunk/; revision=1636
2001-02-18 19:58:41 +00:00
Phillip Susi
689a632cf7 Ignore vgaddi.coff, vgaddi.dll
svn path=/trunk/; revision=1635
2001-02-18 19:56:14 +00:00
Phillip Susi
b65738db8d Ignore ide.sys.unstripped
svn path=/trunk/; revision=1634
2001-02-18 19:55:17 +00:00
Phillip Susi
4546061999 Ignore floppy.sys.unstripped
svn path=/trunk/; revision=1633
2001-02-18 19:54:37 +00:00
Phillip Susi
20612fed4c Ignore blue.sys.unstripped
svn path=/trunk/; revision=1632
2001-02-18 19:53:37 +00:00
Phillip Susi
99529fbb93 Missing .cvsignore
svn path=/trunk/; revision=1631
2001-02-18 19:47:42 +00:00
Phillip Susi
e9143b26d7 Fixes to waitable timer implementation
svn path=/trunk/; revision=1630
2001-02-18 19:43:15 +00:00
Phillip Susi
3d4886b292 Switched to using waitable timers instead of Sleep(), gives more accurate time cycles, also added some small optimizations
svn path=/trunk/; revision=1629
2001-02-18 19:31:38 +00:00
Emanuele Aliberti
349ae0c799 CMD: implemented IF [NOT] DEFINED variable command
CMD: fixed IF NOT EXIST file command

svn path=/trunk/; revision=1628
2001-02-18 18:51:46 +00:00
David Welch
f827a8f124 Fixed reference counting of page tables
Don't print addresses that aren't in the text segment of a module

svn path=/trunk/; revision=1627
2001-02-18 17:43:32 +00:00
Eric Kohl
d458692c89 Removed obsolete code
svn path=/trunk/; revision=1626
2001-02-17 17:42:46 +00:00
Eric Kohl
65a803db11 Added missing RtlGetProcessHeaps() prototype
svn path=/trunk/; revision=1625
2001-02-17 17:40:05 +00:00
Eric Kohl
0e40521339 Fixed timer access right
svn path=/trunk/; revision=1624
2001-02-17 00:07:49 +00:00
Eric Kohl
9f2db0a1d2 Established forwarded exports and removed superfluous functions
svn path=/trunk/; revision=1623
2001-02-17 00:02:32 +00:00
David Welch
beae346469 Changed irq handler from C to assembler
Began work on holding information about active page operations

svn path=/trunk/; revision=1622
2001-02-16 18:32:20 +00:00
David Welch
727b62c27f Fixed MmProbeAndLockPages issues pointed out by Philip Susi
svn path=/trunk/; revision=1621
2001-02-14 02:53:54 +00:00
Phillip Susi
07142de752 Darnit, don't override the rules.mak rule for building resources
svn path=/trunk/; revision=1620
2001-02-12 03:50:00 +00:00
Eric Kohl
933ff9a467 Changed version information for 0.0.17
svn path=/trunk/; revision=1619
2001-02-11 15:02:48 +00:00
Eric Kohl
b91cda60d8 RtlInitializeCriticalSection() returns NTSTATUS
svn path=/trunk/; revision=1618
2001-02-11 00:15:56 +00:00
David Welch
9359db14a0 Section and general memory manager enhancements including COW
svn path=/trunk/; revision=1617
2001-02-10 22:51:11 +00:00
Eric Kohl
29c4727f7a Preliminary command line fix
svn path=/trunk/; revision=1616
2001-02-10 22:30:21 +00:00
Eric Kohl
6922d2a9e5 GetModuleFileName[A/W] must cope with NULL module handles
svn path=/trunk/; revision=1615
2001-02-10 22:29:35 +00:00
Eric Kohl
af68ad91d4 Preparations for use of forwarded exports
svn path=/trunk/; revision=1614
2001-02-10 22:26:26 +00:00
Eric Kohl
03fd77240f Fixed typos
svn path=/trunk/; revision=1613
2001-02-10 22:23:30 +00:00
Emanuele Aliberti
b611b79b36 KERNEL32.GetProcessVersion partial implementation.
KERNEL32.GetSystemInfo about finished.

svn path=/trunk/; revision=1612
2001-02-10 22:01:50 +00:00
Emanuele Aliberti
37361ed1e8 GetProcessVersion prototype missing.
svn path=/trunk/; revision=1611
2001-02-10 22:00:20 +00:00
Eric Kohl
41280eeeb5 Implemented handling of forwarded exports
svn path=/trunk/; revision=1610
2001-02-10 10:04:39 +00:00
David Welch
c87bd2d365 More FAT32 fixes
svn path=/trunk/; revision=1609
2001-02-06 20:17:35 +00:00
David Welch
c93d52a405 Use import hint if present
svn path=/trunk/; revision=1608
2001-02-06 05:50:50 +00:00
Phillip Susi
ae14d5ffc6 If APC routines are supposed to be STDCALL, then they should all be, and a lot of code needs fixed. Because all of the existing code seems to not use STDCALL, neither should the normal routine. This was causing ntoskrnl to fail to compile
svn path=/trunk/; revision=1607
2001-02-06 05:12:42 +00:00
Phillip Susi
501fee0d15 Fixed makefile to use default rule for building resources, and fixed resource includes to use paths relative to the include dir given to windres by rules.mak
svn path=/trunk/; revision=1606
2001-02-06 03:58:34 +00:00
David Welch
bcc1b4e9a5 Implemented binary search of the export tables
svn path=/trunk/; revision=1605
2001-02-06 02:03:35 +00:00
David Welch
b2fe7525bf Reads of the FAT on FAT32 filesystems go through the cache, writes are
disabled

svn path=/trunk/; revision=1604
2001-02-06 00:41:19 +00:00
David Welch
076c1c6ac3 Fixed timer code
Fixed NtClose return in case of error
Added new APC-like primitive for terminating threads
Fixed restriction on size of working set

svn path=/trunk/; revision=1603
2001-02-06 00:11:20 +00:00
Phillip Susi
ae6b859854 Fixed clock increment for 10ms clock, and bug in computing relative time
svn path=/trunk/; revision=1602
2001-02-05 02:31:04 +00:00
Eric Kohl
fef0ed0d35 Implemented KeRemoveQueueApc() (not exported).
Implemented timer object.

svn path=/trunk/; revision=1601
2001-02-04 17:28:13 +00:00
Eric Kohl
543839bcee Implemented ObOpenObjectByPointer().
svn path=/trunk/; revision=1600
2001-02-03 23:25:06 +00:00
Eric Kohl
2a2b027dc1 Fixed command line size
Added workaround for broken command line support

svn path=/trunk/; revision=1599
2001-02-03 10:40:19 +00:00
Eric Kohl
62d9e11763 Reduced command line size in ReactOS mode
svn path=/trunk/; revision=1598
2001-02-03 10:37:51 +00:00
Eric Kohl
a7772a9954 Fixed command line size
svn path=/trunk/; revision=1597
2001-02-03 10:36:11 +00:00
Jason Filby
a34348ef4e *** empty log message ***
svn path=/trunk/; revision=1596
2001-02-03 10:29:54 +00:00
jean
47f77fa056 oops! leave make a pop, and caller of alloca make esp = esp +16.
svn path=/trunk/; revision=1595
2001-02-03 10:28:28 +00:00
Jason Filby
766ded4e0f Corrected line feeds so that DOS can run the .bat
svn path=/trunk/; revision=1594
2001-02-03 10:28:14 +00:00
Eric Kohl
ec9ef6951c Added access right mapping
Fixed access rights

svn path=/trunk/; revision=1593
2001-02-02 20:49:40 +00:00
jean
5f529d5a90 *** empty log message ***
svn path=/trunk/; revision=1592
2001-02-01 16:51:03 +00:00
jean
65249c23ae correct some bugs in spawn... functions
svn path=/trunk/; revision=1591
2001-02-01 16:44:19 +00:00
jean
c8f92d26a9 changes in alloca because gcc push only ebp at begin of function
svn path=/trunk/; revision=1590
2001-02-01 16:37:08 +00:00
jean
51c7c6091a fourth argument of WriteConsoleA is mandatory
svn path=/trunk/; revision=1589
2001-02-01 16:30:46 +00:00
Phillip Susi
3c5287c859 Forgot to commit bug fix for LoadString()
svn path=/trunk/; revision=1588
2001-02-01 00:04:44 +00:00
Phillip Susi
ed2b81a1b5 Minor fix
svn path=/trunk/; revision=1587
2001-01-31 03:03:20 +00:00
Phillip Susi
2965b6c9d7 Had to rearange some structure members
svn path=/trunk/; revision=1586
2001-01-31 02:27:04 +00:00
Phillip Susi
79c82716fa Bug fixes and redesign of a few ioctls
svn path=/trunk/; revision=1585
2001-01-31 02:24:46 +00:00
Phillip Susi
20916cab69 A few bug fixes
svn path=/trunk/; revision=1584
2001-01-31 02:23:52 +00:00
Phillip Susi
b93435c7db Bug fixes and speedup
svn path=/trunk/; revision=1583
2001-01-31 02:22:09 +00:00
Eric Kohl
1416a36841 Corrected unknown parameter
Added ObOpenObjectByPointer() stub

svn path=/trunk/; revision=1582
2001-01-29 00:32:13 +00:00
Emanuele Aliberti
7bfcc9b94c Stubs for some new LPC functions (w2k).
Added some base checking in NtCreatePort's parameters.

svn path=/trunk/; revision=1581
2001-01-29 00:13:22 +00:00
Eric Kohl
17b93d7d9b Added mapping of access rights
Removed user-mode types

svn path=/trunk/; revision=1580
2001-01-28 21:37:37 +00:00
Eric Kohl
c06ef435fb Added mapping of access rights
svn path=/trunk/; revision=1579
2001-01-28 17:42:56 +00:00
Eric Kohl
6c726dfe40 Added mapping of access rights
Improved 'open' function

svn path=/trunk/; revision=1578
2001-01-28 15:17:52 +00:00
Eric Kohl
9331d6391e Added mapping of access rights
svn path=/trunk/; revision=1577
2001-01-28 15:13:11 +00:00
Eric Kohl
d4850da19d Fixed a compiler warning
svn path=/trunk/; revision=1576
2001-01-28 01:20:20 +00:00
Emanuele Aliberti
ff1de6a212 Simple W32 telnet client.
Version resource added to ping and roshttpd.

svn path=/trunk/; revision=1575
2001-01-27 22:38:43 +00:00
Eric Kohl
5786d70e39 Fixed _iob bug
svn path=/trunk/; revision=1574
2001-01-27 20:56:44 +00:00
Eric Kohl
dc0568827a Fixed timer issues
svn path=/trunk/; revision=1573
2001-01-27 19:35:04 +00:00
Phillip Susi
2d87dedf3e OOps... that was already defined elsewhere...
svn path=/trunk/; revision=1572
2001-01-26 05:24:17 +00:00
jean
fb75aa1293 changes in _iob
svn path=/trunk/; revision=1571
2001-01-25 19:01:16 +00:00
jean
03832de6e4 *** empty log message ***
svn path=/trunk/; revision=1570
2001-01-25 18:59:49 +00:00
jean
12e9069480 correct some arguments for CreateFile
svn path=/trunk/; revision=1569
2001-01-25 18:55:33 +00:00
jean
98414449d5 *** empty log message ***
svn path=/trunk/; revision=1568
2001-01-25 18:51:26 +00:00
Phillip Susi
dee175afca Added LoadString() stringtable resource support
svn path=/trunk/; revision=1567
2001-01-25 05:39:31 +00:00
Phillip Susi
74e0c4a781 A few more console fixes
svn path=/trunk/; revision=1566
2001-01-25 05:37:03 +00:00
Phillip Susi
a6a0f5ae18 Added declarations for waitable timer functions
svn path=/trunk/; revision=1565
2001-01-25 05:36:21 +00:00
Phillip Susi
1ec1a6741c Fixed backwards parameters in FindResource()
svn path=/trunk/; revision=1564
2001-01-25 02:20:05 +00:00
Phillip Susi
a9527291d6 Fixed backspace handling
svn path=/trunk/; revision=1563
2001-01-24 05:13:12 +00:00
Phillip Susi
3943df51ea Fixed broken console code
svn path=/trunk/; revision=1562
2001-01-24 05:11:21 +00:00
Phillip Susi
89e2e7a616 Fixed kernel loader code also to handle uninitialized sections
svn path=/trunk/; revision=1561
2001-01-24 04:43:54 +00:00
Phillip Susi
207393f045 Both GetModuleHandleA and GetModuleHandleW need to handle NULL module name
svn path=/trunk/; revision=1560
2001-01-24 04:41:58 +00:00
Eric Kohl
42d7089e72 Removed fixed stack base address
svn path=/trunk/; revision=1559
2001-01-23 09:58:12 +00:00
Phillip Susi
6579aafa03 Undoing last commit, causes kernel to crash on boot. David, any idea why?
svn path=/trunk/; revision=1558
2001-01-23 04:46:08 +00:00
Phillip Susi
b6593ffc1b Fixed loader bug with uninitialized sections
svn path=/trunk/; revision=1557
2001-01-23 04:37:13 +00:00
Casper Hornstrup
e6c8459347 no message
svn path=/trunk/; revision=1556
2001-01-21 21:04:53 +00:00
Phillip Susi
782b28151b Applied David Welsh's fix for getting physical address from specified process instead of current one here as well
svn path=/trunk/; revision=1555
2001-01-21 19:00:59 +00:00
David Welch
10f230ae0a Fixed bug in NtFreeVirtualMemory reported by Philip Susi
Added all thread information classes
Began work on fixing suspend/resume

svn path=/trunk/; revision=1554
2001-01-21 14:54:30 +00:00
Phillip Susi
3f694e507f Keyboard driver should not translate \r to \n
svn path=/trunk/; revision=1553
2001-01-21 00:13:41 +00:00
Phillip Susi
f353289fba Reworked console code to use frame buffers and input queues
svn path=/trunk/; revision=1552
2001-01-21 00:11:54 +00:00
Phillip Susi
5d6f1d7dfa Added InterlockedXXX functions, probobly should use a different name
svn path=/trunk/; revision=1551
2001-01-21 00:09:05 +00:00
Phillip Susi
5c0fb84170 New console client support
svn path=/trunk/; revision=1550
2001-01-21 00:07:03 +00:00
Phillip Susi
b360ee177d Fixed a few bugs and enhanced performance
svn path=/trunk/; revision=1549
2001-01-21 00:05:53 +00:00
Eric Kohl
0f09a6d59c Added services.exe to boot sequence
svn path=/trunk/; revision=1548
2001-01-20 19:01:37 +00:00
Eric Kohl
03be08974e Added services.exe to boot sequence
svn path=/trunk/; revision=1547
2001-01-20 18:40:27 +00:00
Eric Kohl
300201892a Fixed severe bug in CreateEventW()
Implemented use of "\BaseNamedObjects" directory

svn path=/trunk/; revision=1546
2001-01-20 18:37:58 +00:00
Eric Kohl
86c7503953 Implemented ObOpenObjectByName()
svn path=/trunk/; revision=1545
2001-01-20 18:34:34 +00:00
Eric Kohl
3676b49d28 Completed mutex and semaphore implementation
Enabled some global memory functions

svn path=/trunk/; revision=1544
2001-01-20 12:20:43 +00:00
David Welch
703924d130 (Finally) implemented Philip Susi's suggestion for non-counting block
Moved suspend/resume code to seperate file

svn path=/trunk/; revision=1543
2001-01-19 15:09:01 +00:00
Eric Kohl
e443f083f2 Implemented system module Information
Got rid of cryptic driver names

svn path=/trunk/; revision=1542
2001-01-18 16:55:00 +00:00
jean
fd4c82a289 suppress use of FILE_READ_xx and FILE_WRITE_xxx defines.
not available for CreateFile ?

svn path=/trunk/; revision=1541
2001-01-18 15:04:06 +00:00
David Welch
a8660c1f02 Fixes for problems with NtReplyWaitReceive and KeWaitForSingleObject
svn path=/trunk/; revision=1540
2001-01-18 15:00:09 +00:00
jean
3116ca9df2 correct _environ assignment, because it's an array of pointers
and GetEnvironmentString return a pointer.

svn path=/trunk/; revision=1539
2001-01-18 14:43:25 +00:00
jean
d2833af32c incorrect use of FILE_xxx defines, not avalaible for CreateFile ?
svn path=/trunk/; revision=1538
2001-01-18 13:54:03 +00:00
jean
20ee4eb9a7 changes due to correction in ../misc/dllmain.c
for update of environ when calling putenv.

svn path=/trunk/; revision=1537
2001-01-18 13:25:33 +00:00
jean
7863eef29d *** empty log message ***
svn path=/trunk/; revision=1536
2001-01-18 13:23:26 +00:00
jean
d6e19c5407 correct environ affectation : it's an array of pointers
, and GetEnvironmentStrings return a pointer.

svn path=/trunk/; revision=1535
2001-01-18 13:21:51 +00:00
jean
a1da8a3ac2 *** empty log message ***
svn path=/trunk/; revision=1534
2001-01-18 13:18:05 +00:00
Emanuele Aliberti
efd7d3cbd8 Bootstrap title and short licence banner reformatted.
Please say your opinion about it.
Should the title line ("Starting ReactOS...") be the 1st line on the blue screen?

svn path=/trunk/; revision=1533
2001-01-17 19:07:13 +00:00
Emanuele Aliberti
394b6b568c Log file names macros added.
svn path=/trunk/; revision=1532
2001-01-17 19:04:15 +00:00
jean
824df27238 ibetter clean
svn path=/trunk/; revision=1531
2001-01-17 17:14:34 +00:00
jean
fcca9be111 better clean
svn path=/trunk/; revision=1530
2001-01-17 17:01:38 +00:00
David Welch
7a3409d80c Multiboot fixes
svn path=/trunk/; revision=1529
2001-01-17 15:38:03 +00:00
Eric Kohl
695a57cff6 Implemented SystemDeviceInformation info class
svn path=/trunk/; revision=1528
2001-01-17 02:02:39 +00:00
David Welch
0d8b4e3da6 FAT12 fixes
svn path=/trunk/; revision=1527
2001-01-16 23:22:03 +00:00
Phillip Susi
7b0b7c5396 Fixed bug with screen buffers larger than console window ( i.e. scrollback buffers )
svn path=/trunk/; revision=1526
2001-01-16 20:58:58 +00:00
David Welch
643441de17 Removed debugging prints
svn path=/trunk/; revision=1525
2001-01-16 15:43:42 +00:00
David Welch
25dc208536 Fix bug in MmAllocateContinuousPages spotted by Philip Susi
Fixed compilation bugs in roshttpd
Work on write support (still not working)

svn path=/trunk/; revision=1524
2001-01-16 09:55:02 +00:00
jean
7887cc9965 *** empty log message ***
svn path=/trunk/; revision=1523
2001-01-15 15:46:04 +00:00
jean
352d348f09 correct crash when running DllMain
svn path=/trunk/; revision=1522
2001-01-15 15:40:58 +00:00
Emanuele Aliberti
2faa9c1b95 Copyright string updated.
svn path=/trunk/; revision=1521
2001-01-14 23:27:36 +00:00
Emanuele Aliberti
db38d666da SYSTEMTIME type replaced by TIME.
svn path=/trunk/; revision=1520
2001-01-14 20:56:48 +00:00
Emanuele Aliberti
a04660d2b0 tz command fixed (info class 44).
svn path=/trunk/; revision=1519
2001-01-14 20:16:37 +00:00
Emanuele Aliberti
01531797b4 SYSTEM_TIME_ZONE_INFORMATION added.
svn path=/trunk/; revision=1518
2001-01-14 20:06:20 +00:00
Emanuele Aliberti
4a354f1128 FLG decoding added.
svn path=/trunk/; revision=1517
2001-01-14 19:59:43 +00:00
Emanuele Aliberti
a3a116651b FLG macros added.
svn path=/trunk/; revision=1516
2001-01-14 19:58:58 +00:00
Casper Hornstrup
52f51dc4b9 Small HTTP daemon
svn path=/trunk/; revision=1515
2001-01-14 18:35:17 +00:00
Casper Hornstrup
05ccbb2696 Some work on winsock stack
svn path=/trunk/; revision=1514
2001-01-14 17:44:38 +00:00
Eric Kohl
2dd3473a90 Added some hal functions
svn path=/trunk/; revision=1513
2001-01-14 15:36:55 +00:00
Eric Kohl
eaeab91ab2 Print driver names on initialization
svn path=/trunk/; revision=1512
2001-01-14 15:30:47 +00:00
Eric Kohl
7efa62275f Added shutdown description
svn path=/trunk/; revision=1511
2001-01-14 15:28:50 +00:00
Eric Kohl
36c7b523ee Fixed 'clean' rule
svn path=/trunk/; revision=1510
2001-01-14 15:27:15 +00:00
David Welch
eda06227b3 More small cluster size fixes
svn path=/trunk/; revision=1509
2001-01-14 15:05:53 +00:00
Emanuele Aliberti
51772d486a ADVAPI32.LookupAccountSidA and ADVAPI32.LookupAccountSidW stubs added.
svn path=/trunk/; revision=1508
2001-01-14 12:15:19 +00:00
Nedko Arnaudov
bf1b057da3 no message
svn path=/trunk/; revision=1507
2001-01-13 23:55:37 +00:00
David Welch
15491f14dd Fix for vfatfs on volumes with smaller cluster sizes
svn path=/trunk/; revision=1506
2001-01-13 18:38:09 +00:00
Emanuele Aliberti
df75bd846f PE image file dumper, by Sang Cho, adapted to ROS (wip).
svn path=/trunk/; revision=1505
2001-01-13 18:19:23 +00:00
Emanuele Aliberti
5d04b18c15 Obsolete regnav removed.
qsi updated (still wip).
Minor changes.

svn path=/trunk/; revision=1504
2001-01-13 18:17:17 +00:00
David Welch
d2b9b6d912 Removed use of intermediate buffering when reading from the cache
svn path=/trunk/; revision=1503
2001-01-13 12:40:21 +00:00
David Welch
e371c33d76 Removed debugging code from NTDLL loader
Make sure there is a space between the boot device and the kernel command
line
Vfat fixes

svn path=/trunk/; revision=1502
2001-01-12 21:00:08 +00:00
Phillip Susi
1c655ae05a Fixed compilation error with symbols _environ/_environ_dll
svn path=/trunk/; revision=1501
2001-01-11 02:38:34 +00:00
Nedko Arnaudov
1688a8d7c5 no message
svn path=/trunk/; revision=1500
2001-01-10 01:25:29 +00:00
David Welch
48b5533bd5 Some memory manager cleanups
Hopefully fixed vfat fsd reported by Philip Susi
FAT lookups go through cache

svn path=/trunk/; revision=1499
2001-01-08 02:14:06 +00:00
Eric Kohl
21c3a954d0 Updated 'clean' rule (added missing directories)
svn path=/trunk/; revision=1498
2001-01-07 18:45:21 +00:00
Eric Kohl
624869c3c3 Added some more runtime functions
svn path=/trunk/; revision=1497
2001-01-07 03:00:32 +00:00
Eric Kohl
8fe6e74b25 Indicate loading process by dots (in non-debug mode only)
svn path=/trunk/; revision=1496
2001-01-07 02:56:20 +00:00
Rex Jolliff
b12b25cd3d Fixed a bug in partition chain handling
svn path=/trunk/; revision=1495
2001-01-06 23:25:35 +00:00
Rex Jolliff
e4b73aa914 Fixed a problem with command line parsing
svn path=/trunk/; revision=1494
2001-01-06 21:40:13 +00:00
Eric Kohl
66aa4c41db Added some more functions
Got rid of spec file

svn path=/trunk/; revision=1493
2001-01-06 15:49:53 +00:00
Phillip Susi
83463a35cc Export SetLastErrorByStatus()
svn path=/trunk/; revision=1492
2001-01-05 05:39:18 +00:00
Eric Kohl
58f7f41275 Implemented NtSignalAndWaitForSingleObject()
svn path=/trunk/; revision=1491
2001-01-02 00:47:08 +00:00
David Welch
240c9da1da The VFAT filesystem driver now goes through the cache for reads, writing
is disabled.

svn path=/trunk/; revision=1490
2001-01-01 04:42:12 +00:00
David Welch
9e386e114c Fix for compilation bug
svn path=/trunk/; revision=1489
2000-12-30 04:19:42 +00:00
Eric Kohl
138b30dd40 Added HalAllocateAdapterChannel()
svn path=/trunk/; revision=1488
2000-12-30 01:41:52 +00:00
David Welch
ed20b9b6ba Implemented MmAllocateContinuousMemory
VFAT driver cleanups

svn path=/trunk/; revision=1487
2000-12-29 23:17:12 +00:00
Eric Kohl
1f1ae27105 Added / moved exception support functions
svn path=/trunk/; revision=1486
2000-12-29 13:49:15 +00:00
Eric Kohl
380b1db222 Implemented shutdown routine dummy
svn path=/trunk/; revision=1485
2000-12-29 13:45:01 +00:00
Eric Kohl
65c77b52d6 Implemented fsd shutdown support
svn path=/trunk/; revision=1484
2000-12-29 13:43:13 +00:00
Eric Kohl
66f91ccbf9 Fixed some undocumented functions and types
svn path=/trunk/; revision=1483
2000-12-28 20:38:28 +00:00
jean
7bd40a855a copy some functions from crtdll
svn path=/trunk/; revision=1482
2000-12-28 11:57:10 +00:00
jean
43999c2a2d copy of some functions from crtdll
svn path=/trunk/; revision=1481
2000-12-28 11:43:07 +00:00
jean
7a974c0294 *** empty log message ***
svn path=/trunk/; revision=1480
2000-12-28 11:39:33 +00:00
David Welch
0fc13a01ee Implemented /Device/PhysicalMemory
Corrected an LPC bug when terminating a process with threads waiting for
LPC messages

svn path=/trunk/; revision=1479
2000-12-28 03:38:08 +00:00
David Welch
7f10630ab4 Disable testing code
svn path=/trunk/; revision=1478
2000-12-26 05:34:27 +00:00
David Welch
390fd4f1fb Added support for calling BIOS functions
Partially implemented VideoPortInt10

svn path=/trunk/; revision=1477
2000-12-26 05:32:44 +00:00
David Welch
3b50cd9ca9 Fixed compilation bug
svn path=/trunk/; revision=1476
2000-12-24 03:35:54 +00:00
David Welch
8445b12452 All task switching is done in software.
Beginnings of v86 mode support.
Corrected locking bug when terminating multithreaded process.

svn path=/trunk/; revision=1475
2000-12-23 02:37:41 +00:00
Emanuele Aliberti
b6c91b703e _itow, _ltow, _ultow added to crtdll.
*** TO BE TESTED ***

svn path=/trunk/; revision=1474
2000-12-22 23:20:15 +00:00
Eric Kohl
91bcb7413f Implemented NtResumeThread() and NtSuspendThread()
Cleanup

svn path=/trunk/; revision=1473
2000-12-22 13:37:41 +00:00
Eric Kohl
64ba922c19 Implemented NtResumeThread() and NtSuspendThread()
Cleanup

svn path=/trunk/; revision=1472
2000-12-22 13:32:06 +00:00
jean
90beca63cb begin implementation of memory detection
svn path=/trunk/; revision=1471
2000-12-20 18:44:20 +00:00
Emanuele Aliberti
c6010e401e Version resource added to the command line utilities more, tee, and y.
svn path=/trunk/; revision=1470
2000-12-19 23:06:20 +00:00
Rex Jolliff
72e967e710 Fixed a problem with install rule
svn path=/trunk/; revision=1469
2000-12-19 20:20:16 +00:00
Eric Kohl
a391eec94c Implemented some verify functions.
svn path=/trunk/; revision=1468
2000-12-11 18:20:02 +00:00
David Welch
488f0ac078 Some work on file caching
Some work on the minix filesystem
Some work on v86 mode support
Implemented NtGetContextThread

svn path=/trunk/; revision=1467
2000-12-10 23:42:01 +00:00
Eric Kohl
4ac4987dd2 Implemented some verify functions.
svn path=/trunk/; revision=1466
2000-12-10 19:15:45 +00:00
Emanuele Aliberti
6d9f357735 Cleaning up before moving psxss to subsys/psx/server .
svn path=/trunk/; revision=1465
2000-12-10 16:57:07 +00:00
Emanuele Aliberti
1439a96e69 Cleaning up before moving psxdll in subsys/psx/client .
svn path=/trunk/; revision=1464
2000-12-10 16:44:50 +00:00
Emanuele Aliberti
7235c776e4 I added the -p option to make buildno simply print the current build number,
but not generate the reactos/buildno.h file.

svn path=/trunk/; revision=1463
2000-12-10 16:23:15 +00:00
Emanuele Aliberti
6faae58d64 Updated to be a proper secur32.dll version resource.
Still missing a proper description: where is secur32.dll from?

svn path=/trunk/; revision=1462
2000-12-09 22:37:14 +00:00
Phillip Susi
b2b12a1d09 Opps... can't just return from a native thread proc, have to TerminateProcess()
svn path=/trunk/; revision=1461
2000-12-09 06:29:29 +00:00
Phillip Susi
8bdd137c8f RtlCreateUserProcess was not checking for failure of mapping the executable file and returning that error
svn path=/trunk/; revision=1460
2000-12-09 04:34:52 +00:00
Casper Hornstrup
af9693f4da Fixed typo.
svn path=/trunk/; revision=1459
2000-12-08 22:09:17 +00:00
Casper Hornstrup
d3f5f7862f Fixed bug that caused a crash when creating an unnamed semaphore.
svn path=/trunk/; revision=1458
2000-12-08 22:08:02 +00:00
jean
4dc42b4202 SUPERSEDE implemented
svn path=/trunk/; revision=1457
2000-12-08 17:12:43 +00:00
Eric Kohl
2af149a27c Replaced hard-coded paths
svn path=/trunk/; revision=1456
2000-12-08 00:45:04 +00:00
Eric Kohl
07127c18af Fixed floppy driver bug!
The floppy controler is now recognized properly!!

svn path=/trunk/; revision=1455
2000-12-08 00:43:45 +00:00
jean
3d521d0a20 LdrFixupImports more verbose when DLL not found.
svn path=/trunk/; revision=1454
2000-12-07 17:00:12 +00:00
jean
02d3c2cb72 bug corrected in updating fat16
erase clusters before use.

svn path=/trunk/; revision=1453
2000-12-07 16:58:42 +00:00
Eric Kohl
d8748695f2 Run winlogon.exe instead of shell.exe
Replaced hard-coded paths

svn path=/trunk/; revision=1452
2000-12-05 18:14:07 +00:00
Eric Kohl
3ab0b1f9a2 Minor fixes
svn path=/trunk/; revision=1451
2000-12-05 18:11:51 +00:00
Eric Kohl
e69d5f4655 Fixed forwarding of current directory string
svn path=/trunk/; revision=1450
2000-12-05 18:08:24 +00:00
jean
a7d8f1c9ab corrected bugs in create operations
svn path=/trunk/; revision=1449
2000-12-05 17:12:16 +00:00
Eric Kohl
564101ab11 Moved system applications
svn path=/trunk/; revision=1448
2000-12-05 02:40:51 +00:00
Eric Kohl
c40c9f88c1 no message
svn path=/trunk/; revision=1447
2000-12-03 20:31:03 +00:00
Eric Kohl
d4ae36c1c5 no message
svn path=/trunk/; revision=1446
2000-12-03 20:29:44 +00:00
Eric Kohl
f01dd17793 Added some functions to msvcrt
svn path=/trunk/; revision=1445
2000-12-03 18:00:07 +00:00
Eric Kohl
a9828950fe Added some functions to msvcrt
svn path=/trunk/; revision=1444
2000-12-03 17:49:41 +00:00
Eric Kohl
b7a9c63dad Some minor fixes
svn path=/trunk/; revision=1443
2000-12-03 17:43:46 +00:00
Eric Kohl
9deb8f01da Fixed compiler warnings
svn path=/trunk/; revision=1442
2000-12-02 02:25:30 +00:00
jean
55feb47d30 added test arg in NtFlushKey
svn path=/trunk/; revision=1441
2000-12-01 12:44:15 +00:00
jean
45fcd58321 corrected bug in writing files : extend files before needed
svn path=/trunk/; revision=1440
2000-12-01 12:41:08 +00:00
jean
7cdd9a1c62 *** empty log message ***
svn path=/trunk/; revision=1439
2000-12-01 12:39:17 +00:00
jean
bd1cb1e820 many bugs corrected
now pass OK tests 1,2,3 and 5 of regtest

svn path=/trunk/; revision=1438
2000-11-27 14:54:28 +00:00
jean
c07ef00211 added test for NtFlushKey
added a loop, allowing to make several tests before exiting.

svn path=/trunk/; revision=1437
2000-11-27 14:21:04 +00:00
jean
e53fb528db correct bug in write operations
svn path=/trunk/; revision=1436
2000-11-23 15:53:37 +00:00
jean
565277e563 *** empty log message ***
svn path=/trunk/; revision=1435
2000-11-21 15:10:15 +00:00
jean
cf1b2d1b6c some changes to prepare write in hive files
svn path=/trunk/; revision=1434
2000-11-21 11:12:27 +00:00
Eric Kohl
716fa2a717 Modified makefiles for use with rcopy
Added a missing prototype

svn path=/trunk/; revision=1433
2000-11-20 19:59:14 +00:00
Eric Kohl
d456e5b838 Fixed bug (or better: typo)
svn path=/trunk/; revision=1432
2000-11-19 22:15:03 +00:00
Eric Kohl
a703d88253 Fixed tls code
svn path=/trunk/; revision=1431
2000-11-19 16:01:29 +00:00
Eric Kohl
41ac59fb91 Added tls bitmap initialization
svn path=/trunk/; revision=1430
2000-11-19 15:59:46 +00:00
Eric Kohl
885e8a3344 Fixed bitmap bug
svn path=/trunk/; revision=1429
2000-11-19 15:58:58 +00:00
Eric Kohl
bd08f2070e Fixed tiny display buglet
svn path=/trunk/; revision=1428
2000-11-19 15:57:27 +00:00
Jason Filby
4b0dec4293 minor fix
svn path=/trunk/; revision=1427
2000-11-16 21:45:54 +00:00
Eric Kohl
143ef3c5b1 Fixed a compiler warning
svn path=/trunk/; revision=1426
2000-11-16 00:32:12 +00:00
jean
575c0c896a bugs corrected
svn path=/trunk/; revision=1425
2000-11-10 15:41:46 +00:00
jean
fb51b0f647 reference/dereference of objects corrected
update time of heap when data changed
some other bugs corrected

svn path=/trunk/; revision=1424
2000-11-10 15:35:40 +00:00
Eric Kohl
93647509cc Fixed some system information stuff
svn path=/trunk/; revision=1423
2000-11-04 13:52:12 +00:00
Eric Kohl
3f82e28a32 Fixed compiler warning
svn path=/trunk/; revision=1422
2000-11-04 13:48:11 +00:00
Eric Kohl
e7f86f45fb Fixed linker warning about missing _NtProcessStartup()
svn path=/trunk/; revision=1421
2000-11-01 12:45:53 +00:00
Jason Filby
55a9a7623e minor fixes
svn path=/trunk/; revision=1420
2000-10-25 13:09:05 +00:00
Nedko Arnaudov
a248f1e7c3 GPL sync + delete value implemented
svn path=/trunk/; revision=1419
2000-10-24 20:17:42 +00:00
jean
2a81cebc82 fixed bugs
load registry file entirely

svn path=/trunk/; revision=1418
2000-10-24 12:13:12 +00:00
Eric Kohl
b60489a76a Removed obsolete linux header files
svn path=/trunk/; revision=1417
2000-10-22 16:36:53 +00:00
Eric Kohl
1c236a2886 Replaced linux io calls
Removed references to linux io headers

svn path=/trunk/; revision=1416
2000-10-22 13:30:19 +00:00
Eric Kohl
dab151f2f1 Implemented event pair
svn path=/trunk/; revision=1415
2000-10-22 11:30:00 +00:00
Eric Kohl
9267a79b9e Replaced linux io calls
svn path=/trunk/; revision=1414
2000-10-22 02:02:28 +00:00
Eric Kohl
1db1c12cf3 Fixed prototype
svn path=/trunk/; revision=1413
2000-10-22 02:01:42 +00:00
Eric Kohl
382d5a76c2 Removed duplicate code and replaced linux io calls
svn path=/trunk/; revision=1412
2000-10-22 01:59:51 +00:00
Eric Kohl
a83fd9fd73 Fixed warnings and indentation
svn path=/trunk/; revision=1411
2000-10-22 01:58:11 +00:00
Jason Filby
201009ddd9 *** empty log message ***
svn path=/trunk/; revision=1410
2000-10-18 10:42:07 +00:00
Jason Filby
14b2a471ce *** empty log message ***
svn path=/trunk/; revision=1409
2000-10-18 09:39:32 +00:00
Jason Filby
77d9f6fb99 *** empty log message ***
svn path=/trunk/; revision=1408
2000-10-18 09:11:01 +00:00
jean
bb44d63a00 add management of free blocks
svn path=/trunk/; revision=1407
2000-10-16 15:22:45 +00:00
jean
3f76d0e8a9 remove unimplemented functions
test more verbose

svn path=/trunk/; revision=1406
2000-10-16 15:05:19 +00:00
Jason Filby
76ba7eadb1 Improved bitblt and painting performance
Initial mouse pointer code

svn path=/trunk/; revision=1405
2000-10-14 22:58:24 +00:00
Jason Filby
06bf88e073 Minor fixes
svn path=/trunk/; revision=1404
2000-10-14 22:42:11 +00:00
Jason Filby
d17678ebd0 *** empty log message ***
svn path=/trunk/; revision=1403
2000-10-14 22:40:18 +00:00
David Welch
e9b7a9a972 Corrected typos in the minix driver
svn path=/trunk/; revision=1402
2000-10-11 20:57:19 +00:00
David Welch
9ab512dafc Correct implementation of user-mode APCs
svn path=/trunk/; revision=1401
2000-10-11 20:50:35 +00:00
jean
e7214e13b1 remove code for tests
svn path=/trunk/; revision=1400
2000-10-11 15:06:31 +00:00
jean
3199989397 added tests in apps/regtest
work on write hive registry
read tests successful for volatile and non volatile keys
write tests successful for volatile keys

svn path=/trunk/; revision=1399
2000-10-11 13:20:39 +00:00
Eric Kohl
3b8acca85c Minor update
svn path=/trunk/; revision=1398
2000-10-09 00:18:00 +00:00
Eric Kohl
e224120546 Fixed compiler warning
svn path=/trunk/; revision=1397
2000-10-09 00:12:01 +00:00
David Welch
d996724891 Fixed compilation bugs
Removed useless spec files

svn path=/trunk/; revision=1396
2000-10-08 23:44:46 +00:00
Eric Kohl
26aa5fb4dd Fixed a typo
svn path=/trunk/; revision=1395
2000-10-08 19:13:01 +00:00
Eric Kohl
69afd5910f Added nameless struct/union support for [U]LARGE_INTEGER
svn path=/trunk/; revision=1394
2000-10-08 19:11:28 +00:00
David Welch
8a74f96a65 Additional bug fixes
Removed spec file
Removed libgcc.a
Set FS register in thread contexts

svn path=/trunk/; revision=1393
2000-10-08 16:32:53 +00:00
Eric Kohl
8d1034c5fa Added atom table stubs
Implemented NtQuerySemaphore()
Implemented RtlConvertSidToUnicode()
Replaced more calls to Linux io functions
Some minor fixes

svn path=/trunk/; revision=1392
2000-10-08 12:56:45 +00:00
Eric Kohl
9e2f41853a Added atom table stubs
Implemented NtQuerySemaphore()
Implemented RtlConvertSidToUnicode()
Replaced more calls to Linux io functions
Some minor fixes

svn path=/trunk/; revision=1391
2000-10-08 12:51:25 +00:00
Nedko Arnaudov
4e21487a31 In GNU make, Variables and functions in all parts of a makefile are expanded when read, so include of rules.mak must be done before using variable defined in it.
svn path=/trunk/; revision=1390
2000-10-08 10:48:10 +00:00
Eric Kohl
a2d079723b Implemented missing KeRaiseIrqlToXxLevel() functions
svn path=/trunk/; revision=1389
2000-10-07 21:06:19 +00:00
Eric Kohl
5bea9979e8 Added check for existing 'SystemRoot' link target
svn path=/trunk/; revision=1388
2000-10-07 20:55:15 +00:00
David Welch
f1096bb7f0 Some bug fixes
svn path=/trunk/; revision=1387
2000-10-07 18:44:08 +00:00
David Welch
fe87b12edd Renamed makefile to Makefile
svn path=/trunk/; revision=1386
2000-10-07 13:44:24 +00:00
David Welch
a254e64d73 Added multiboot support to ntoskrnl
Updated loadros to boot new kernel
Corrected thread priority bugs
Removed Linux port io
Added system call entry/exit that updates PreviousMode
Changes to allow ntoskrnl to be built without optimization
Updated make system
Added PCR
Most components can be built without special spec file

svn path=/trunk/; revision=1385
2000-10-07 13:41:58 +00:00
Eric Kohl
15b935ba7c Implemented NtPulseEvent() and NtQueryEvent()
svn path=/trunk/; revision=1384
2000-10-06 22:54:58 +00:00
Eric Kohl
4a5bc9edc8 Minor fix
svn path=/trunk/; revision=1383
2000-10-06 22:54:41 +00:00
Eric Kohl
bd44cd188f obsolete
svn path=/trunk/; revision=1382
2000-10-06 16:54:38 +00:00
Eric Kohl
0a2b580710 Implemented IoCreateNotificationEvent() and IoCreateSynchronizationEvent()
svn path=/trunk/; revision=1381
2000-10-06 16:54:04 +00:00
Eric Kohl
6e63676205 Added missing STDCALLs
svn path=/trunk/; revision=1380
2000-10-05 19:17:25 +00:00
Eric Kohl
aa5a575bd0 Added registry shutdown function CmShutdownRegistry()
Updated shutdown sequence

svn path=/trunk/; revision=1379
2000-10-05 19:15:50 +00:00
Eric Kohl
beaf6eac44 Implmented NtFlushWriteBuffer()
svn path=/trunk/; revision=1378
2000-10-05 19:10:55 +00:00
jean
619ad3483b add some tests
svn path=/trunk/; revision=1377
2000-10-05 14:55:55 +00:00
jean
a1b7c80868 correct bugs
svn path=/trunk/; revision=1376
2000-10-05 14:55:25 +00:00
Emanuele Aliberti
ae69a8e1e4 Registry Explorer (console tool) by Nedko Arnaoudov added to the system utilities subtree.
Also here: http://www.geocities.com/registryexplorer/

svn path=/trunk/; revision=1375
2000-10-04 21:04:31 +00:00
Eric Kohl
f3632d15b8 Implemented GetFileType()
Some cleanup

svn path=/trunk/; revision=1374
2000-10-01 19:54:57 +00:00
jean
31f697ce8f work on registry
svn path=/trunk/; revision=1373
2000-09-29 15:03:21 +00:00
Eric Kohl
bd6afcb8ba Implemented CreatePipe()
svn path=/trunk/; revision=1372
2000-09-27 01:24:37 +00:00
Eric Kohl
99434057af Implemented some ascii functions
svn path=/trunk/; revision=1371
2000-09-27 01:22:31 +00:00
Phillip Susi
0ea51977f6 Fixed crash due to thread priority out of bonuds bug... not sure if I did this right, but it seems to fix the crash. Someone should probobly look at this.
svn path=/trunk/; revision=1370
2000-09-24 23:55:21 +00:00
jean
08982a387e read functions on file SYSTEM implemented
svn path=/trunk/; revision=1369
2000-09-22 15:08:55 +00:00
jean
572b3bf901 work on ntopenkey forkeys insystem hive
svn path=/trunk/; revision=1368
2000-09-21 13:45:42 +00:00
jean
56cd5f816c type of Name in KEY_BLOCK corrected
svn path=/trunk/; revision=1367
2000-09-18 09:39:18 +00:00
Casper Hornstrup
37d6d2f97f Added WinSock 2 DLL Stubs
svn path=/trunk/; revision=1366
2000-09-17 09:41:15 +00:00
Casper Hornstrup
7ec7480d5c Added ping application (won't work on ReactOS yet)
svn path=/trunk/; revision=1365
2000-09-17 09:40:33 +00:00
Casper Hornstrup
734dbaddef Small change in tdikrnl.h
svn path=/trunk/; revision=1364
2000-09-17 09:38:46 +00:00
Casper Hornstrup
b7eaee833c Added WinSock 2 Headers
svn path=/trunk/; revision=1363
2000-09-17 09:37:04 +00:00
Casper Hornstrup
ab2b4e0924 Added WinSock 2 DLL Stubs
svn path=/trunk/; revision=1362
2000-09-17 09:36:01 +00:00
Casper Hornstrup
2a734dfd02 Added WinSock 2 Helper DLL for TCP/IP (Stubs only)
svn path=/trunk/; revision=1361
2000-09-17 09:33:44 +00:00
jean
b0a3240f8e work on registry files
svn path=/trunk/; revision=1360
2000-09-14 14:45:06 +00:00
jean
522110434e report changes from 1.29
svn path=/trunk/; revision=1359
2000-09-13 11:46:35 +00:00
jean
ad66ea993a work on registry
svn path=/trunk/; revision=1358
2000-09-13 10:29:48 +00:00
jean
ee426ef891 work on registry
svn path=/trunk/; revision=1357
2000-09-13 09:51:58 +00:00
Rex Jolliff
79753f70ea added some book references
svn path=/trunk/; revision=1356
2000-09-13 03:54:09 +00:00
Emanuele Aliberti
192a6b11b4 Added Casper to the coders parade.
svn path=/trunk/; revision=1355
2000-09-12 23:21:20 +00:00
Emanuele Aliberti
f452b24998 Updated years in version info.
svn path=/trunk/; revision=1354
2000-09-12 23:20:15 +00:00
jean
380f53e057 remove ctrl-M
svn path=/trunk/; revision=1353
2000-09-12 10:43:56 +00:00
jean
7a86d15add declaration of NtLoadKey2 corrected.
svn path=/trunk/; revision=1352
2000-09-12 10:43:28 +00:00
jean
cfa0bfd3f1 changes in IRP for compatibility
svn path=/trunk/; revision=1351
2000-09-12 10:12:13 +00:00
Emanuele Aliberti
28d86222cd Version resource added to the system utilities.
svn path=/trunk/; revision=1350
2000-09-11 20:17:02 +00:00
Emanuele Aliberti
e7a0c9b4eb Little change to make version resource linked in ne2000.sys.
svn path=/trunk/; revision=1349
2000-09-10 20:00:13 +00:00
Eric Kohl
f6975e3ad4 Implemented driver shutdown registration
svn path=/trunk/; revision=1348
2000-09-10 13:54:01 +00:00
Emanuele Aliberti
18fb33cd77 RC script updated.
svn path=/trunk/; revision=1347
2000-09-10 10:14:39 +00:00
Eric Kohl
4b34e5c2de Implemented basic registry functions
svn path=/trunk/; revision=1346
2000-09-08 22:55:14 +00:00
Eric Kohl
16625529a2 Fixed [Nt/Zw]LoadKey2 prototype
svn path=/trunk/; revision=1345
2000-09-08 22:52:17 +00:00
Eric Kohl
6320160bea Ooops! I forgot that little thingy...
svn path=/trunk/; revision=1344
2000-09-08 19:39:31 +00:00
Eric Kohl
d7d755265d Fixed some bugs in the registry
Improved registry test app

svn path=/trunk/; revision=1343
2000-09-06 19:59:54 +00:00
Phillip Susi
e7365f8b00 Made PsGetCurrentThread STDCALL
svn path=/trunk/; revision=1342
2000-09-06 03:08:22 +00:00
Phillip Susi
11c7a09174 Initialize new Win32ThreadData member in ETHREAD
svn path=/trunk/; revision=1341
2000-09-06 03:08:08 +00:00
Phillip Susi
b9d500fbd4 Made ObAddEntryDirectory STDCALL
svn path=/trunk/; revision=1340
2000-09-06 03:06:55 +00:00
Phillip Susi
c76d475edb Made PsGetCurrentThread STDCALL
svn path=/trunk/; revision=1339
2000-09-06 03:00:10 +00:00
Phillip Susi
4ca3269e59 Added pointer to win32k data in ETHREAD
svn path=/trunk/; revision=1338
2000-09-06 02:57:24 +00:00
Phillip Susi
8dba8b5f8b Made ObAddEntryDirectory STDCALL
svn path=/trunk/; revision=1337
2000-09-06 02:56:53 +00:00
Phillip Susi
5df884f1d2 Added ObAdEntryDirectory and PsGetCurrentThread to kernel export list
svn path=/trunk/; revision=1336
2000-09-06 02:08:00 +00:00
Eric Kohl
991be350f7 Registry fixes (not usable yet)
Loader improvements

svn path=/trunk/; revision=1335
2000-09-05 23:03:09 +00:00
Eric Kohl
90a17ecf05 Added registry test app
svn path=/trunk/; revision=1334
2000-09-05 22:57:43 +00:00
Eric Kohl
fbac67d372 Implemented dll detach on thread termination
svn path=/trunk/; revision=1333
2000-09-05 13:53:27 +00:00
Eric Kohl
19e205fb97 Implemented dll detach on process termination
svn path=/trunk/; revision=1332
2000-09-05 11:01:03 +00:00
Eric Kohl
ed32877e90 Fixed some minor loader bugs
svn path=/trunk/; revision=1331
2000-09-04 19:05:03 +00:00
Eric Kohl
c0159ad5c8 Some minor fixes
svn path=/trunk/; revision=1330
2000-09-03 14:53:13 +00:00
Eric Kohl
3004e5b9bd Fixed mysterious registry bug
svn path=/trunk/; revision=1329
2000-09-03 14:46:49 +00:00
Eric Kohl
df314ce26e Improved internal dll handling
Implemented or fixed dll and resource functions

svn path=/trunk/; revision=1328
2000-09-01 17:09:50 +00:00
David Welch
dd7e38a19d Reverted back to revision 1.59 because my last commit overwrote recent
changes.

svn path=/trunk/; revision=1327
2000-08-31 00:11:15 +00:00
David Welch
8e0014c64b Added calibration of KeStallExecutionProcessor delay
Corrected compilation bugs in user32
Corrected compilation bugs related to anonymous structs in ndis code
Pass commandline from loadros
Corrected PIC mask calculation

svn path=/trunk/; revision=1326
2000-08-30 19:33:29 +00:00
Emanuele Aliberti
3b94410c8a Version resource was off the final binary image.
svn path=/trunk/; revision=1325
2000-08-29 20:10:49 +00:00
Eric Kohl
3f36421f86 Added/fixed resource 'loader'.
svn path=/trunk/; revision=1324
2000-08-28 21:49:11 +00:00
Casper Hornstrup
7550af7e4d Fixed user32.dll so it will compile
svn path=/trunk/; revision=1323
2000-08-28 19:36:49 +00:00
David Welch
8293c58f61 Added platform independant mkdir program
svn path=/trunk/; revision=1322
2000-08-27 23:06:36 +00:00
Eric Kohl
acaf5099d7 User-mode loader improvements
svn path=/trunk/; revision=1321
2000-08-27 22:37:45 +00:00
Casper Hornstrup
5c58f80d97 Fixed user32.dll so it will compile
svn path=/trunk/; revision=1320
2000-08-27 16:44:02 +00:00
Casper Hornstrup
9a1e13b7d8 Added Novell Eagle 2000 Driver
svn path=/trunk/; revision=1319
2000-08-27 16:35:31 +00:00
Casper Hornstrup
33252ab449 Basic NDIS 3.0 support
svn path=/trunk/; revision=1318
2000-08-27 16:31:41 +00:00
Casper Hornstrup
abd30f9819 Fixed bugs in TCP/IP driver
svn path=/trunk/; revision=1317
2000-08-27 16:28:59 +00:00
Eric Kohl
24d06e9f82 Replaced call to LdrLoadModule() by call to ZwSetSystemInformation()
svn path=/trunk/; revision=1316
2000-08-26 16:22:04 +00:00
Eric Kohl
1a10e72f31 Finished drive letter assignment
Implemented WinNT compatible ARC path (boot.ini)

svn path=/trunk/; revision=1315
2000-08-25 15:56:24 +00:00
Eric Kohl
6c2d255207 Minor ide driver cleanup
Implemented ARC names

svn path=/trunk/; revision=1314
2000-08-24 19:15:20 +00:00
Eric Kohl
495a30cb8e Fixed partition read bug
svn path=/trunk/; revision=1313
2000-08-22 21:10:28 +00:00
Eric Kohl
c27ed38f21 Fixed disk size and partition limits
svn path=/trunk/; revision=1312
2000-08-22 21:09:25 +00:00
Eric Kohl
e7dc6b7c4b xHalIoReadPartitionTable() can now handle partially corrupted partition tables
svn path=/trunk/; revision=1311
2000-08-22 14:10:59 +00:00
Eric Kohl
6f1d7ad00c Implemented IoReadPartitionTable().
Implemented proper drive letter assignment.

svn path=/trunk/; revision=1310
2000-08-21 00:15:54 +00:00
David Welch
8434fc42db Fixed memory manager bugs
Removed page directory references from machine independant code
Implemented page table reference counting
Added vm test application

svn path=/trunk/; revision=1309
2000-08-20 17:02:10 +00:00
Eric Kohl
7c29439d2b Fixed the real bug
svn path=/trunk/; revision=1308
2000-08-19 01:21:17 +00:00
Eric Kohl
1aa74074a2 Fixed an ugly bug
svn path=/trunk/; revision=1307
2000-08-19 00:02:55 +00:00
David Welch
ddfa2017c7 Added .o -> .sys rule to simplify driver makefiles
Added PATH_TO_ROOT variable to most makefiles
Added system independant install utility
Implemented prototype system for changing individual regions without a
memory area
Added some interesting articles from usenet

svn path=/trunk/; revision=1306
2000-08-18 22:27:09 +00:00
Eric Kohl
f7d76fbc5b Fixed port i/o functions
svn path=/trunk/; revision=1305
2000-08-18 17:25:54 +00:00
Eric Kohl
cc22ad9378 Fixed partition id bug
Moved some definitions

svn path=/trunk/; revision=1304
2000-08-18 17:24:17 +00:00
Eric Kohl
375b8055e3 Added preliminary pci bus scanner
svn path=/trunk/; revision=1303
2000-08-17 17:43:27 +00:00
Eric Kohl
7b9adffa48 Fixed some warnings
svn path=/trunk/; revision=1302
2000-08-15 12:50:35 +00:00
Eric Kohl
b4cd061025 Improved shared user page
Initialized windows and system directories

svn path=/trunk/; revision=1301
2000-08-15 12:44:47 +00:00
Emanuele Aliberti
f2e0104287 Win32 fiber stubs.
svn path=/trunk/; revision=1300
2000-08-14 14:34:12 +00:00
Emanuele Aliberti
47dfd4feaa Win32 fiber stubs
svn path=/trunk/; revision=1299
2000-08-14 14:33:24 +00:00
David Welch
6f6219e903 Added shared data test application
svn path=/trunk/; revision=1298
2000-08-12 19:37:03 +00:00
David Welch
3ae3b46dcd Updated CREDITS
Work on security
Updated heap code from wine implementation
Implemented kernel/user shared data page

svn path=/trunk/; revision=1297
2000-08-12 19:33:23 +00:00
Emanuele Aliberti
70a09d673c Fixed a pair of exported symbols' stack size.
svn path=/trunk/; revision=1296
2000-08-11 17:30:20 +00:00
Emanuele Aliberti
97b05ef460 Added symbolic link expansion.
svn path=/trunk/; revision=1295
2000-08-11 17:18:31 +00:00
Eric Kohl
6db1a5193f Removed M$ driver
svn path=/trunk/; revision=1294
2000-08-11 12:49:11 +00:00
Eric Kohl
891b9b74ee Removed unused file
svn path=/trunk/; revision=1293
2000-08-11 12:48:00 +00:00
Eric Kohl
c6c624ebe3 Renamed pseudo target 'floppy' to 'install'
Added workaround for corrupted dos header magic
Added some more rtl functions

svn path=/trunk/; revision=1292
2000-08-11 12:46:47 +00:00
jean
df3c817b6b little work on registry
svn path=/trunk/; revision=1291
2000-08-11 08:17:41 +00:00
Eric Kohl
71ea66b0b8 Fixed typo
svn path=/trunk/; revision=1290
2000-08-10 15:50:03 +00:00
Eric Kohl
f55fec7c32 Fixed compiler warnings
svn path=/trunk/; revision=1289
2000-08-08 17:42:33 +00:00
Eric Kohl
7a8a2f9e95 Fixed FLOPPY and DIST targets for net drivers
svn path=/trunk/; revision=1288
2000-08-08 17:41:41 +00:00
David Welch
c65edfad92 Integrated fixes from prep0016
Changes to the networking code to remove anonymous structures and unions
Fix for bug where RtlSetEnvironmentVariable didn't if it had acquired the
PEB lock before releasing it
Updating clean targets

svn path=/trunk/; revision=1286
2000-08-05 18:01:58 +00:00
Emanuele Aliberti
65ecb0b98b Simple utility to list the so called "DOS Devices", that is
symbolic links in the \?? directory of the Ob name space.

svn path=/trunk/; revision=1285
2000-08-04 21:49:31 +00:00
Casper Hornstrup
66d2f292ef Fixed compile issues with network code
svn path=/trunk/; revision=1284
2000-08-02 20:39:49 +00:00
David Welch
a859ee0c1e Added networking code from Casper Hornstrup
svn path=/trunk/; revision=1283
2000-08-02 00:24:26 +00:00
David Welch
b5ff23bb2f Added networking code from Casper Hornstrup
svn path=/trunk/; revision=1282
2000-08-02 00:02:53 +00:00
David Welch
792773e953 Added networking code from Casper Hornstrup
svn path=/trunk/; revision=1281
2000-08-01 23:54:06 +00:00
Casper Hornstrup
2c41cbbe57 Initial revision
svn path=/trunk/; revision=1277
2000-08-01 18:43:15 +00:00
David Welch
83f94cade6 Fixes from Casper Hornstrup
svn path=/trunk/; revision=1276
2000-07-30 18:22:35 +00:00
Eric Kohl
afde198a7d Implemented hal system interrupt functions
svn path=/trunk/; revision=1275
2000-07-24 23:51:46 +00:00
David Welch
07b9585e22 Added floppy makefile and version resource file
svn path=/trunk/; revision=1270
2000-07-19 14:25:35 +00:00
David Welch
768ab2e5dc Added timer constant fix from Genadi V. Zawidowski
svn path=/trunk/; revision=1269
2000-07-19 14:23:37 +00:00
David Welch
c3d5ea4e9b Removed broken dma code
Some work on memory managment
Initialize FPU
Reset CR0.TS after task switch but floating point state is *not* saved
Work on floppy driver
Add versions of ide and vfatfs drivers compiled with debugging information

svn path=/trunk/; revision=1268
2000-07-19 14:18:20 +00:00
Eric Kohl
6041051d6a Fixed 'echo.' and 'echoerr.'
svn path=/trunk/; revision=1267
2000-07-19 06:58:13 +00:00
Phillip Susi
fb416bf8e2 Updated shell.exe to be console mode aware
svn path=/trunk/; revision=1265
2000-07-11 04:40:00 +00:00
Phillip Susi
cc05ca5acb Implemented console modes
svn path=/trunk/; revision=1264
2000-07-11 04:09:25 +00:00
Phillip Susi
041f614e06 Minor bug fix
svn path=/trunk/; revision=1263
2000-07-11 04:08:43 +00:00
Phillip Susi
510af07f3c Removed calls to ExAllocatePool so code can be used in components that do not link to ntoskrnl.exe
svn path=/trunk/; revision=1262
2000-07-11 04:02:45 +00:00
Eric Kohl
85c3d3799b Moved interrupt code from hal into kernel
Implemented missing interrupt functions

svn path=/trunk/; revision=1261
2000-07-10 21:55:49 +00:00
Rex Jolliff
b4f80cb2e6 added files to be ignored
svn path=/trunk/; revision=1260
2000-07-09 17:34:05 +00:00
Rex Jolliff
a6613e4b6f added cvsignore file so that dir gets created
svn path=/trunk/; revision=1259
2000-07-09 17:32:49 +00:00
Rex Jolliff
f48fc3a954 added some files to be ignored by cvs
svn path=/trunk/; revision=1258
2000-07-09 17:31:32 +00:00
Eric Kohl
e97ef012de Fixed typos
svn path=/trunk/; revision=1257
2000-07-08 18:49:24 +00:00
David Welch
68375602c1 *** empty log message ***
svn path=/trunk/; revision=1256
2000-07-08 16:53:33 +00:00
Eric Kohl
fb7b00bd59 Added check for valid DC
svn path=/trunk/; revision=1255
2000-07-08 09:46:32 +00:00
Eric Kohl
0afbea5a1c Added checks for loaded drivers
svn path=/trunk/; revision=1254
2000-07-07 11:59:11 +00:00
Eric Kohl
8353127423 Fixed a typo
svn path=/trunk/; revision=1253
2000-07-07 11:56:04 +00:00
Eric Kohl
25557b0457 Added dist target
svn path=/trunk/; revision=1252
2000-07-07 11:55:02 +00:00
David Welch
8689a5cfe9 Corrected bug where user32.a wasn't being cleaned
Corrected bugs in paging implementation
Began work on MPW thread

svn path=/trunk/; revision=1251
2000-07-07 10:30:57 +00:00
Eric Kohl
0ea1d03808 Separated close request
Fixed bugs in create request

svn path=/trunk/; revision=1250
2000-07-07 02:14:14 +00:00
Eric Kohl
a20a2dd801 Implemented vpb spinlock
svn path=/trunk/; revision=1249
2000-07-07 02:10:50 +00:00
Phillip Susi
b81629c2a0 More DbgPrint to DPRINT changes, Implimented support for deleting DCs, causing switch back to text mode, and another change from nonpaged to paged pool
svn path=/trunk/; revision=1248
2000-07-07 01:20:53 +00:00
Phillip Susi
4568d2fd4c Converted more DbgPrints to DPRINT and allocate bitmaps from paged pool instead of non paged
svn path=/trunk/; revision=1247
2000-07-07 01:19:02 +00:00
Phillip Susi
96e4bf5c1f Bug fixes to win32k
svn path=/trunk/; revision=1246
2000-07-07 01:18:04 +00:00
Phillip Susi
418efd5de8 Implimented switch back to text mode after gditest
svn path=/trunk/; revision=1245
2000-07-07 01:16:50 +00:00
Phillip Susi
aa9ca10d75 One should not say the device does not exist causing the driver to fail to load... how the hell did this work before?
svn path=/trunk/; revision=1244
2000-07-07 01:06:35 +00:00
Phillip Susi
21489b923a Implimented reset to text mode
svn path=/trunk/; revision=1243
2000-07-07 01:05:33 +00:00
Phillip Susi
61ed9441a3 Converted a bunch of DbgPrint() calls to DPRINT()
svn path=/trunk/; revision=1242
2000-07-07 01:02:11 +00:00
Phillip Susi
a1ff5576a5 Implimented switch back to text mode after gditest
svn path=/trunk/; revision=1241
2000-07-07 00:59:41 +00:00
Phillip Susi
001c73ed14 Fixed ps code to terminate threads correctly
svn path=/trunk/; revision=1240
2000-07-07 00:49:02 +00:00
Phillip Susi
3ca24a2c2a Fixed [Ke/Nt]WaitForMultipleObjects() bug
svn path=/trunk/; revision=1239
2000-07-07 00:46:35 +00:00
Phillip Susi
db1ccdf290 Fixes to timeout code
svn path=/trunk/; revision=1238
2000-07-07 00:45:37 +00:00
Phillip Susi
84f943edc6 Fixed ps bug, proper termination of threads
svn path=/trunk/; revision=1237
2000-07-07 00:44:07 +00:00
Phillip Susi
67d46de5d3 Fixed typeo that was breaking NtReadFile() with async reads
svn path=/trunk/; revision=1236
2000-07-07 00:42:58 +00:00
Phillip Susi
10c1321106 Do not clean up mdl on paging requests, as the mm needs it still
svn path=/trunk/; revision=1235
2000-07-07 00:41:36 +00:00
Phillip Susi
7bf98ea309 Set IRP_PAGING_IO on mdl ( paging ) requests
svn path=/trunk/; revision=1234
2000-07-07 00:40:49 +00:00
Phillip Susi
2b37b9beea Exported NtOpenEvent()
svn path=/trunk/; revision=1233
2000-07-07 00:39:24 +00:00
Phillip Susi
194e86b860 Implimented DeleteDC()
svn path=/trunk/; revision=1232
2000-07-07 00:38:17 +00:00
Phillip Susi
2f1d0bf882 Minor fixes, enabled return to text mode
svn path=/trunk/; revision=1231
2000-07-07 00:36:36 +00:00
Phillip Susi
017479a5f0 Fixed left out paremter error
svn path=/trunk/; revision=1230
2000-07-06 20:53:27 +00:00
David Welch
d26222f310 Added experimental paging out code (wouldn't activate until the system is
out of memory)
Added stress test application (consumes memory)
Corrected mutex implementation
Moved csrss startup into kernel32 to avoid ugly messages on startup

svn path=/trunk/; revision=1229
2000-07-06 14:34:52 +00:00
Eric Kohl
671c1bc412 Append the '.exe' extension automatically
svn path=/trunk/; revision=1228
2000-07-05 18:07:08 +00:00
Eric Kohl
bea48dda7a Fixed 'cd \' bug
svn path=/trunk/; revision=1227
2000-07-05 18:05:21 +00:00
Phillip Susi
2946fd90c7 Removed duplicate and incorrect declaration for KeRaiseUserException
svn path=/trunk/; revision=1226
2000-07-04 20:02:35 +00:00
David Welch
f801003a51 Compilation fixes
svn path=/trunk/; revision=1225
2000-07-04 11:11:06 +00:00
David Welch
d351d182ef Added working set functions
Seperated memory manager initialization
Seperated trap functions
Removed process/thread definitions from ddk headers
Changed indentation back to sane style (please don't change)

svn path=/trunk/; revision=1224
2000-07-04 08:52:47 +00:00
Eric Kohl
9caffc49ae Fixed RtlNtStatusToDosError()
Implemented some more functions

svn path=/trunk/; revision=1223
2000-07-04 01:30:18 +00:00
Eric Kohl
bad7efb0e7 Final macro fixes
Minor fixes

svn path=/trunk/; revision=1222
2000-07-02 17:33:15 +00:00
Eric Kohl
add4b2d35b Simplified driver initialization
svn path=/trunk/; revision=1221
2000-07-02 10:54:41 +00:00
Eric Kohl
73437d2939 Fixed more macros
Merged/moved/deleted some files

svn path=/trunk/; revision=1220
2000-07-02 10:50:48 +00:00
David Welch
ed53dc2acc Removed unused header file
Fixed compilation errors resulting from header file changes
Fixed vga driver compilation under unix
Patched up use of *deprecated* inb/outb interfaces in vga driver

svn path=/trunk/; revision=1219
2000-07-01 23:18:59 +00:00
Eric Kohl
83e4b66c10 Fixed Ps macros
svn path=/trunk/; revision=1218
2000-07-01 22:38:15 +00:00
Eric Kohl
6abd233802 Replaced boot_param by LOADER_PARAMETER_BLOCK
Added missing dpc functions
Fixed some Ke macros

svn path=/trunk/; revision=1217
2000-07-01 18:27:03 +00:00
Emanuele Aliberti
95f8770ae2 Minor changes.
svn path=/trunk/; revision=1216
2000-07-01 17:07:02 +00:00
Eric Kohl
f3e6819471 Added hal dispatch tables.
Implemented PhysicalDrive links.
Started drive letter assignment.

svn path=/trunk/; revision=1214
2000-06-30 22:53:32 +00:00
David Welch
cc95f73421 Made header file usage more consistent
Tried to reduce dependancies between layers by moving ntoskrnl's private
header files inside its directory
Removed the need to include windows.h for ddk code
Removed obsolete testing code

svn path=/trunk/; revision=1213
2000-06-29 23:35:53 +00:00
David Welch
109fef6e75 Corrected bug when booting with loadros
Began work on fixing up APCs.

svn path=/trunk/; revision=1212
2000-06-27 19:20:45 +00:00
David Welch
17e1656941 Documented parts of the page fault path and flagged some possible locking
issues.
Implemented waiting on page i/o.

svn path=/trunk/; revision=1211
2000-06-26 19:41:43 +00:00
David Welch
fcf9dcd627 Fixed bug.
svn path=/trunk/; revision=1210
2000-06-25 17:41:01 +00:00
David Welch
6e00280f38 Removed from redundant files from the mm directory
Added some preliminary work on the pager
Fixed ntoskrnl/mm/npool.c (This may have been the cause of the
problems reported with loading win32k.sys)
Fixed problems with reporting space used to store physical page
information
Added code to support MmSafeCopy{To/From}User interface work
(untested)
Added Event member of the PHYSICAL_PAGE structure to implement Philip
Susi's suggestion
Reworked section page-in code (not really tested)
Replaced inline string functions with gcc builtins to make debugging easier

svn path=/trunk/; revision=1209
2000-06-25 03:59:17 +00:00
Emanuele Aliberti
a8ed3ed57e Fixed a path problem in the makefile that Phillip reported a few days ago.
Unix paths are handled correctly by DOS and Win32 kernels, but NOT by
command.com and cmd.exe shells. Therefore, when a path is to be handed to
a shell, use \ but when you hand it to any other program, use / instead.

svn path=/trunk/; revision=1208
2000-06-24 09:02:02 +00:00
Eric Kohl
3d2ca25cb4 Added counting physical discs
Fixed a compiler warning

svn path=/trunk/; revision=1207
2000-06-19 22:15:50 +00:00
Eric Kohl
57fc573524 Removed invalid includes
svn path=/trunk/; revision=1206
2000-06-19 16:42:31 +00:00
Eric Kohl
88cf03e85b Use SystemRoot link instead of LdrGetSystemDirectory()
svn path=/trunk/; revision=1205
2000-06-18 17:40:35 +00:00
Eric Kohl
5b2343f9f1 Not used any longer
svn path=/trunk/; revision=1204
2000-06-18 17:39:57 +00:00
Eric Kohl
539b0a1259 Fixed typo and added freetype dir to clean target
svn path=/trunk/; revision=1203
2000-06-18 17:37:57 +00:00
Eric Kohl
9f1e56d438 Implemented IoAttachDeviceByPointer() and IoGetDeviceObjectPointer().
svn path=/trunk/; revision=1202
2000-06-18 15:23:40 +00:00
Eric Kohl
44bdd793c1 Changed list functions to macros (or static inline functions).
svn path=/trunk/; revision=1201
2000-06-18 15:21:53 +00:00
Jason Filby
e3b8762528 Small change and removed unnecessary files
svn path=/trunk/; revision=1200
2000-06-18 12:29:32 +00:00
Jason Filby
943db2de5a Math functions required by win32k
svn path=/trunk/; revision=1199
2000-06-18 12:26:26 +00:00
Jason Filby
dd085499e8 Altered to use new and smaller math.c
svn path=/trunk/; revision=1198
2000-06-18 12:25:42 +00:00
Jason Filby
991cde2c53 Makefile changes for win32k
svn path=/trunk/; revision=1197
2000-06-18 12:25:00 +00:00
Jason Filby
669a590c02 Commented out test code that prevented compilation
svn path=/trunk/; revision=1196
2000-06-18 12:24:22 +00:00
Emanuele Aliberti
b441b2ed03 Base files for a compatible MSVCRT.DLL.
Currently useless.

svn path=/trunk/; revision=1195
2000-06-18 10:57:42 +00:00
David Welch
9d3cd59f17 Corrected build problem
svn path=/trunk/; revision=1194
2000-06-17 23:58:53 +00:00
Phillip Susi
e6bcb9741d Forgot to seek before trying to read back data, and added a check for the data integrity
svn path=/trunk/; revision=1193
2000-06-17 22:04:49 +00:00
Phillip Susi
4e91635e4a Fixed several erronious checks to detect things such as eof on directories too, not just files
svn path=/trunk/; revision=1192
2000-06-17 22:04:08 +00:00
Phillip Susi
274c4db921 Added missing DPRINT
svn path=/trunk/; revision=1191
2000-06-17 22:03:23 +00:00
Phillip Susi
ea455bcfce Fixed bug that fails to update files entries in the root, and added some error checking
svn path=/trunk/; revision=1190
2000-06-17 22:02:09 +00:00
Phillip Susi
8eb69e31d4 Fixed code that checks for a deleted directory entry ( which is really used to find a free entry ) to accept a blank ( never before used ) entry as free
svn path=/trunk/; revision=1189
2000-06-17 22:00:46 +00:00
Jason Filby
a32b900658 temporary float and math support
svn path=/trunk/; revision=1188
2000-06-16 21:13:18 +00:00
Jason Filby
ea1da2be56 missing updates
svn path=/trunk/; revision=1187
2000-06-16 20:58:56 +00:00
Jason Filby
efd7fbb22e missed update
svn path=/trunk/; revision=1186
2000-06-16 20:50:31 +00:00
Jason Filby
a25a8e2e02 GDI Improvements
svn path=/trunk/; revision=1185
2000-06-16 07:36:10 +00:00
Jason Filby
77ef48e705 VGA display driver improvements
svn path=/trunk/; revision=1184
2000-06-16 07:28:20 +00:00
Jason Filby
0b34b1b746 GDI improvements
svn path=/trunk/; revision=1183
2000-06-16 07:25:41 +00:00
Eric Kohl
94c0c4bab2 Improved symbolic links (reparsing).
Implemented SystemRoot and DosDevices links.

svn path=/trunk/; revision=1182
2000-06-15 18:39:25 +00:00
Eric Kohl
fb6c04efbd Implemented IoDeleteSymbolicLink() and NtCreateSymbolicLinkObject().
svn path=/trunk/; revision=1181
2000-06-13 15:51:13 +00:00
Eric Kohl
19e66992de Added cache manager prototypes.
Fixed Io macros.
Fixed and exported more hal functions.

svn path=/trunk/; revision=1180
2000-06-12 14:57:10 +00:00
Emanuele Aliberti
65a13ef159 Return type KIRQL fixed to allow compilation.
svn path=/trunk/; revision=1179
2000-06-09 22:22:32 +00:00
Eric Kohl
3cd7d0dcd3 Moved some functions into the hal.
Replaced some functions by macros.

svn path=/trunk/; revision=1178
2000-06-09 20:07:20 +00:00
Eric Kohl
0aac416a18 Update after server failure.
Fixed STDCALL issues in Ex functions.

svn path=/trunk/; revision=1177
2000-06-07 13:05:09 +00:00
Eric Kohl
d40e55b4e1 Fixed STDCALL issues in Ex functions
svn path=/trunk/; revision=1176
2000-06-05 22:12:06 +00:00
Eric Kohl
64c33bb910 Fixed STDCALL issues in Ke functions
Renamed KiTimerInterrupt() to KeUpdateSystemTime()
Added KeNumberProcessors variable

svn path=/trunk/; revision=1175
2000-06-04 19:51:05 +00:00
Emanuele Aliberti
077ac93718 Type definitions and macros previously in ntoskrnl/nt/port.c moved
in include/internal/port.h .

svn path=/trunk/; revision=1174
2000-06-04 17:32:44 +00:00
Emanuele Aliberti
9464b7005d Made and new ntoskrnl/lpc directory for the LPC subsystem.
Moved ntoskrnl/nt/port.c in ntoskrnl/lpc and split code into
smaller pieces. Little cleanup.

svn path=/trunk/; revision=1173
2000-06-04 17:27:39 +00:00
Eric Kohl
6d5e353126 Fixed clean target (didn't delete all .o files)
svn path=/trunk/; revision=1172
2000-06-04 17:15:47 +00:00
Eric Kohl
ceed9a079e Fixed paths
svn path=/trunk/; revision=1171
2000-06-04 17:14:25 +00:00
Eric Kohl
abc6758e63 Updated Ps* functions
Implemented PsGetVersion()

svn path=/trunk/; revision=1170
2000-06-03 21:36:32 +00:00
Emanuele Aliberti
8123995861 Minor changes.
svn path=/trunk/; revision=1169
2000-06-03 14:47:33 +00:00
Emanuele Aliberti
7fbe844acc Minor changes to kernel32.
svn path=/trunk/; revision=1168
2000-05-30 23:41:06 +00:00
Emanuele Aliberti
f53d713f9a Renamed NTDLL.RtlNtStatusToDosError() RtlNtStatusToDosErrorNoTeb().
Added NTDLL.RtlNtStatusToDosError() that calls RtlNtStatusToDosErrorNoTeb().
Still not understood why RtlNtStatusToDosError() stores in the TEB the given NtStatus.

svn path=/trunk/; revision=1167
2000-05-30 22:25:10 +00:00
Emanuele Aliberti
3918e5583d Added handle type to object name translation in qsi.
svn path=/trunk/; revision=1166
2000-05-28 17:44:53 +00:00
David Welch
279b8390a0 Fix for issue with closing non-existent or already closed handle
svn path=/trunk/; revision=1165
2000-05-27 12:48:59 +00:00
David Welch
06784b2b11 Added etags target
svn path=/trunk/; revision=1164
2000-05-26 14:25:50 +00:00
Phillip Susi
9f7a5635de big work on the console front
svn path=/trunk/; revision=1163
2000-05-26 06:06:42 +00:00
Phillip Susi
97f4345422 fixed color info
svn path=/trunk/; revision=1162
2000-05-26 06:06:05 +00:00
Phillip Susi
232a66904f big work on the console front
svn path=/trunk/; revision=1161
2000-05-26 05:43:33 +00:00
Phillip Susi
1410c2b0a4 a few fixes to the shell
svn path=/trunk/; revision=1160
2000-05-26 05:38:42 +00:00
Eric Kohl
dd76e08c86 Implemented:
- dbg functions
 - RtlFreeUserThreadStack()
 - rtl nls functions
 - rtl process heaps functions
Improved .def and .edf files

svn path=/trunk/; revision=1159
2000-05-25 15:55:35 +00:00
David Welch
3e519811c4 More bug fixes.
svn path=/trunk/; revision=1158
2000-05-24 22:29:38 +00:00
David Welch
1001fb267c Updated clean targets in various places
svn path=/trunk/; revision=1157
2000-05-14 13:10:01 +00:00
Emanuele Aliberti
6bd8ebc9e2 Added ifdef to skip a piece of code commited by mistake (I am still working on it, sorry!).
svn path=/trunk/; revision=1156
2000-05-14 09:34:14 +00:00
Emanuele Aliberti
0726ddaa11 Fixed bug reported by Michael Rich in kernel32 compilation.
svn path=/trunk/; revision=1155
2000-05-14 09:31:05 +00:00
Eric Kohl
f5c8f9fdab Added FLOPPY and DIST targets
svn path=/trunk/; revision=1154
2000-05-13 17:34:15 +00:00
Emanuele Aliberti
d7b4fba550 IoSetThreadHardErrorMode().
svn path=/trunk/; revision=1153
2000-05-13 14:56:47 +00:00
David Welch
598c0f3b1f Fixed typo.
svn path=/trunk/; revision=1152
2000-05-13 14:21:44 +00:00
David Welch
d173c588c7 Some fixes.
Began work on implementing named pipes.

svn path=/trunk/; revision=1151
2000-05-13 13:51:08 +00:00
Eric Kohl
1d034b8c4e Fixed typos in IoGetStackLimits()
svn path=/trunk/; revision=1150
2000-05-13 10:39:23 +00:00
Eric Kohl
3086566400 Fixed IoGetStackLimits()
svn path=/trunk/; revision=1149
2000-05-13 01:48:59 +00:00
Eric Kohl
17e86aad5d Implemented RtlCustomCPxx functions
svn path=/trunk/; revision=1148
2000-05-13 01:48:01 +00:00
Eric Kohl
bb665e58b7 Fixed some more ntoskrnl exports
svn path=/trunk/; revision=1147
2000-05-09 21:31:01 +00:00
Eric Kohl
5c644fe59b Fixed or added exported object type variables
svn path=/trunk/; revision=1146
2000-05-09 16:16:07 +00:00
Eric Kohl
a3160d79cd Implemented IOCTL to draw screen buffer
Changed screen buffer from array of bytes to array of CHAR_INFO

svn path=/trunk/; revision=1145
2000-05-08 23:27:52 +00:00
Eric Kohl
34010a1fcb Fixed ntoskrnl makefile
svn path=/trunk/; revision=1144
2000-05-07 23:04:43 +00:00
Emanuele Aliberti
78a6c60acd Some STDCALL/FASTCALL added in Ex code.
NTOSKRNL's makefile revised with redundant passes removed.

svn path=/trunk/; revision=1142
2000-05-01 14:15:03 +00:00
Emanuele Aliberti
fdf480d262 objdir made compilable.
svn path=/trunk/; revision=1141
2000-05-01 13:53:43 +00:00
Phillip Susi
32ea00da50 NtTerminateProcess did not terminate the current thread if it was a member of the process being terminated
svn path=/trunk/; revision=1140
2000-04-28 17:29:42 +00:00
Emanuele Aliberti
537f82fd1a A fix in the SYSTEM_HANDLE_INFORMATION structure.
svn path=/trunk/; revision=1139
2000-04-27 23:39:49 +00:00
Emanuele Aliberti
b13b811b5f I forgot to update the code that uses SYSTEM_TIME_INFORMATION.
svn path=/trunk/; revision=1138
2000-04-26 06:56:12 +00:00
Emanuele Aliberti
b3ea65f0e4 Partially implemented (handlers only)
NTOSKRNL.NtQuerySystemInformation() and
NTOSKRNL.NtSetSystemInformation().

---

Partially implemented (kernel32/process/proc.c)

KERNEL32.GetPriorityClass(),
KERNEL32.SetPriorityClass() and
NTDLL.CsrSetPriorityClass() (stub only).

Renamed (in include/csrss/csrss.h) priority
class macros:

#define CSR_PRIORITY_CLASS_NORMAL	(0x10)
#define CSR_PRIORITY_CLASS_IDLE		(0x20)
#define CSR_PRIORITY_CLASS_HIGH		(0x40)
#define CSR_PRIORITY_CLASS_REALTIME	(0x80)

---

Implemented (kernel32/misc/error.c)

#include <kernel32/error.h>

DWORD
STDCALL
SetLastErrorByStatus (
	NTSTATUS	Status
	);

to replace SetLastError(RtlNtStatusToDosError(Status))
in KERNEL32, and fixed

KERNEL32.SetLastError()
KERNEL32.GetLastError()

to use the field in NT_TEB (LastError is per thread
not per process).

---

Implemented (lib/kernel32/sysinfo.c) GetSystemInfo()
(to be completed).

---

Fixed rosapps/sysutils/makefile to use ROS import
libraries.

---

Added QSI to the system utilities set. The target is
writing a tool that can be used to query as much system
information as possible from user mode (to be finished
and tested only under nt4sp4/x86; it was NOT tested
under ROS: it crashes immediately and needs
NtQuerySystemInformation implemented!).

svn path=/trunk/; revision=1137
2000-04-25 23:22:57 +00:00
Phillip Susi
0c4a5f1e06 NtDeviceIoControllFile() was not specifying IoFileObjectType as the object type when referencing the file handle
svn path=/trunk/; revision=1136
2000-04-24 04:17:55 +00:00
Phillip Susi
5fea099598 Do not set std handles when AllocConsole() fails, I swear I fixed this before...
svn path=/trunk/; revision=1135
2000-04-24 01:52:24 +00:00
Phillip Susi
23b59ecccb Disabled debug prints
svn path=/trunk/; revision=1134
2000-04-23 18:01:21 +00:00
Phillip Susi
cbf17cd791 Disabled debug prints
svn path=/trunk/; revision=1133
2000-04-23 17:55:21 +00:00
Phillip Susi
0bb8878fc1 Dumped anoying debug print
svn path=/trunk/; revision=1132
2000-04-23 17:52:44 +00:00
Phillip Susi
0d569ee50b Added a event handle to reply struct
svn path=/trunk/; revision=1131
2000-04-23 17:51:35 +00:00
Phillip Susi
de82241cb1 Added declaration for InterlockedCompareExchange
svn path=/trunk/; revision=1130
2000-04-23 17:50:47 +00:00
Phillip Susi
7928fc621a Switched to CREATE_NEW_CONSOLE from DETACHED_PROCESS
svn path=/trunk/; revision=1129
2000-04-23 17:49:07 +00:00
Phillip Susi
cdd3a57119 Whole new win32 console support, with multiple virtual consoles and scrollback support
svn path=/trunk/; revision=1128
2000-04-23 17:44:53 +00:00
Phillip Susi
4f6c860da3 Was reporting geometry backwards, and needed to add a raw output mode
svn path=/trunk/; revision=1127
2000-04-23 17:42:57 +00:00
Phillip Susi
6ac6c50282 Patched up console code a bit
svn path=/trunk/; revision=1126
2000-04-23 17:41:40 +00:00
Phillip Susi
66780d1d02 CreateProcess was eating the flags, had to pass them on
svn path=/trunk/; revision=1125
2000-04-23 17:40:52 +00:00
Phillip Susi
ee3307e21d Fixed up Critical Section code
svn path=/trunk/; revision=1124
2000-04-20 05:29:27 +00:00
Phillip Susi
b01b3e0e97 Replaced a -- with an InterlockedDecrement
svn path=/trunk/; revision=1123
2000-04-17 03:09:04 +00:00
Eric Kohl
8b7920f796 Added some rtl functions
svn path=/trunk/; revision=1122
2000-04-15 23:14:32 +00:00
Eric Kohl
86a1100180 Implemented debugger functions
svn path=/trunk/; revision=1121
2000-04-14 01:50:38 +00:00
Boudewijn Dekker
4542601468 applied fixes to make a user32.dll
code is based on wine.

svn path=/trunk/; revision=1120
2000-04-13 20:59:11 +00:00
Boudewijn Dekker
99fb26fc8b .
svn path=/trunk/; revision=1119
2000-04-12 22:41:51 +00:00
Eric Kohl
7910a00791 Added kernel_parameters to boot_param
svn path=/trunk/; revision=1118
2000-04-12 17:34:27 +00:00
Jason Filby
93d95d8063 Fixed EngFreeMem def
svn path=/trunk/; revision=1117
2000-04-11 20:56:11 +00:00
Jason Filby
04a84d5ab8 Implemented DrvCopybits
Minor fixes

svn path=/trunk/; revision=1116
2000-04-10 20:17:34 +00:00
Eric Kohl
5b7a3113d5 Added system and isa bus handler
svn path=/trunk/; revision=1115
2000-04-09 15:58:13 +00:00
Eric Kohl
db593a0fb7 Fixed compiler warnings
svn path=/trunk/; revision=1114
2000-04-08 23:35:27 +00:00
Eric Kohl
51db0e6fed Moved KeStallExecutionProcessor() into HAL.
Added some security functions.

svn path=/trunk/; revision=1113
2000-04-08 19:10:50 +00:00
Eric Kohl
55c5bbf0be Fixed bug in COPY command
svn path=/trunk/; revision=1112
2000-04-08 14:50:47 +00:00
Phillip Susi
4be5d21243 Correted path to be system32 instead of system
svn path=/trunk/; revision=1111
2000-04-07 22:59:38 +00:00
Phillip Susi
fe9a733457 Removed LoadLibraryW from kernel32.edf, as it seems to not have an implementation and so would not compile. Wonder where the implementation whent?
svn path=/trunk/; revision=1110
2000-04-07 21:45:32 +00:00
Eric Kohl
654c8e7d00 Added more time functions
svn path=/trunk/; revision=1109
2000-04-07 12:45:22 +00:00
David Welch
53e0232c6c Began seperation of machine-dependant/independant sections of memory
manager
Did some more work on the dce/rpc implementation
Corrected loadros so the kernel can no longer write to read-only areas
of memory
Corrected alignment and size of initial stack

svn path=/trunk/; revision=1108
2000-04-07 02:24:03 +00:00
Eric Kohl
e3ce7008d7 Moved debug functions
svn path=/trunk/; revision=1107
2000-04-06 17:23:52 +00:00
Eric Kohl
9d90e8c107 Added some more security functions
svn path=/trunk/; revision=1106
2000-04-06 02:29:57 +00:00
Eric Kohl
48c46844eb Added hal functions
Fixed se functions

svn path=/trunk/; revision=1105
2000-04-05 15:52:45 +00:00
Eric Kohl
05bf1339f9 Added ace, acl and sid functions
svn path=/trunk/; revision=1104
2000-04-05 01:41:01 +00:00
David Welch
d54e68673b Correct LPC implementation
Removed thread leak in csrss
Added notification of port closing

svn path=/trunk/; revision=1103
2000-04-03 21:54:42 +00:00
Jason Filby
eb1f2f9bd1 Implemented DrvPaint and DrvBitBlt
Added tests for new routines
Minor fixes

svn path=/trunk/; revision=1102
2000-04-03 19:55:33 +00:00
Emanuele Aliberti
3b0f32720d Mm subsystem exports table complete.
svn path=/trunk/; revision=1101
2000-04-02 13:32:43 +00:00
Jason Filby
fccf1c26a7 All video related files now loaded by win32k
svn path=/trunk/; revision=1100
2000-04-02 13:09:50 +00:00
Jason Filby
b8d0ffaf38 Use NonPagedPool in EngAllocMem for now
svn path=/trunk/; revision=1099
2000-04-02 12:44:57 +00:00
Emanuele Aliberti
49f35db9e8 Version info for Named Pipe fs driver.
svn path=/trunk/; revision=1098
2000-04-01 14:20:21 +00:00
Emanuele Aliberti
1fc2971156 Version info for Minix driver.
svn path=/trunk/; revision=1097
2000-04-01 14:19:48 +00:00
Emanuele Aliberti
cdbe762497 Version info for ext2fs driver.
svn path=/trunk/; revision=1096
2000-04-01 14:19:07 +00:00
Jason Filby
248fe1f79d Implemented basic VGA routines
Implemented Eng\DrvLineTo

svn path=/trunk/; revision=1095
2000-04-01 12:31:29 +00:00
David Welch
9d6388ae05 Corrected mutex implementation
Added proper locking to the memory managment

svn path=/trunk/; revision=1093
2000-03-29 13:11:55 +00:00
Phillip Susi
3bd2a11130 Fixed typeo preventing compilation
svn path=/trunk/; revision=1092
2000-03-29 03:15:11 +00:00
David Welch
1be4f77bcb Corrected the handle generation algorithm in the kernel and csrss
Did some work on services.exe
Did some work on the service functions in advapi32
Made some progress in implementing npfs
Implemented a basic grammar for midl

svn path=/trunk/; revision=1091
2000-03-26 22:00:10 +00:00
Emanuele Aliberti
758ba695e1 Io subsystem clean-up. Every exported symbols is not STDCALL.
NtCreateFile renamed IoCreateFile and Nt{Create,Open}File call IoCreateFile.
Io data items added (to be fixed).

svn path=/trunk/; revision=1090
2000-03-26 19:38:32 +00:00
David Welch
79eff41abb Connected standard input/output to the console
Removed from superfluous assertions
Changed the ide read and write commands to work with bochs
Corrected bug in the csrss server

svn path=/trunk/; revision=1089
2000-03-24 22:25:39 +00:00
David Welch
0bd4cf0cbf Updated the minix driver
Moved console handling into csrss
Gave each process a name for debugging purposes

svn path=/trunk/; revision=1088
2000-03-22 18:36:00 +00:00
Eric Kohl
a1c9a520cf Modified kernel initialization sequence
Enabled bus handlers

svn path=/trunk/; revision=1087
2000-03-20 18:00:55 +00:00
Eric Kohl
dc3956d8ac Added some more status codes
svn path=/trunk/; revision=1086
2000-03-19 15:57:39 +00:00
Eric Kohl
802301d861 Implemented bus handler functions (not working yet)
Several STDCALL fixes

svn path=/trunk/; revision=1085
2000-03-19 13:35:38 +00:00
Eric Kohl
9887130ab7 Implemented bus handler functions (not working yet)
svn path=/trunk/; revision=1084
2000-03-19 13:33:39 +00:00
Eric Kohl
d4fc70afdc Implemented VideoPortDebugPrint()
svn path=/trunk/; revision=1083
2000-03-19 13:31:37 +00:00
Eric Kohl
bd02ee978f Added SYSTEM_TIME_INFORMATION
svn path=/trunk/; revision=1082
2000-03-19 13:30:30 +00:00
Emanuele Aliberti
bc30557a61 Some clean-up in ntoskrnl/mm. MmAllocateSection prototype moved in
internal/mm.h.

svn path=/trunk/; revision=1081
2000-03-19 09:14:52 +00:00
Eric Kohl
56132bfb44 Fixed path bugs
svn path=/trunk/; revision=1080
2000-03-18 19:55:53 +00:00
Jason Filby
c4ecfc894c Added forgotten .h files
svn path=/trunk/; revision=1079
2000-03-18 18:39:44 +00:00
Emanuele Aliberti
d6f6aad9e7 qsort in NTOSKRNL and some STDCALL declarations.
svn path=/trunk/; revision=1078
2000-03-18 15:12:19 +00:00
Eric Kohl
5e7a2202d1 Oops...
svn path=/trunk/; revision=1077
2000-03-18 14:37:43 +00:00
Eric Kohl
2c6fae9c20 Added image functions
Include pe.h in windows.h to avoid conflicts

svn path=/trunk/; revision=1076
2000-03-18 14:02:01 +00:00
Eric Kohl
1042f1ae27 Added security descriptor functions
svn path=/trunk/; revision=1075
2000-03-18 13:48:24 +00:00
Eric Kohl
753cb16c91 Fixed compiler warnings
svn path=/trunk/; revision=1074
2000-03-18 02:39:39 +00:00
Jason Filby
5d99a8740a last mod...
svn path=/trunk/; revision=1073
2000-03-17 22:19:44 +00:00
Jason Filby
1ba7343b1c Additional modifications
svn path=/trunk/; revision=1072
2000-03-17 22:14:31 +00:00
Jason Filby
2adbc636a8 Additional modifications
svn path=/trunk/; revision=1071
2000-03-17 21:56:43 +00:00
Jason Filby
c404283ff4 Additional modifications
svn path=/trunk/; revision=1070
2000-03-17 21:49:32 +00:00
Eric Kohl
d9d3272dc6 Fixed compiler warning
svn path=/trunk/; revision=1069
2000-03-17 21:46:41 +00:00
Jason Filby
690a781452 Added eng files
svn path=/trunk/; revision=1068
2000-03-17 21:44:02 +00:00
Jason Filby
e1d6086025 Miniport driver now loaded from win32k
Display and miniport drivers can now talk to each other
Sets the VGA video mode

svn path=/trunk/; revision=1067
2000-03-17 21:02:59 +00:00
Eric Kohl
40ee84e997 Oops! Typos...
svn path=/trunk/; revision=1066
2000-03-16 21:50:56 +00:00
Eric Kohl
ef5f880bac Fixed ANSI <--> Unicode conversions
svn path=/trunk/; revision=1065
2000-03-16 21:50:11 +00:00
David Welch
6088637c5e Oops.
svn path=/trunk/; revision=1064
2000-03-16 20:50:48 +00:00
Eric Kohl
0344745e30 Fixed a confusing error message
svn path=/trunk/; revision=1063
2000-03-16 20:02:44 +00:00
David Welch
337952bfb9 Implemented setting the fs register to point to the TEB
svn path=/trunk/; revision=1062
2000-03-16 18:44:57 +00:00
Eric Kohl
15c9809105 Fixed ANSI/OEM <--> Unicode conversions
svn path=/trunk/; revision=1061
2000-03-16 01:14:58 +00:00
Eric Kohl
b820741431 Fixed WIN32_FIND_DATA[A/W] structs and resulting bugs
svn path=/trunk/; revision=1060
2000-03-15 23:13:29 +00:00
Eric Kohl
67200bd4f9 Fixed ANSI/OEM <--> Unicode conversions
svn path=/trunk/; revision=1059
2000-03-15 18:30:30 +00:00
Eric Kohl
b2eb99d9f7 Obsolete!
svn path=/trunk/; revision=1058
2000-03-15 18:29:50 +00:00
Eric Kohl
9658579d48 Fixed ANSI/OEM <--> Unicode conversions
svn path=/trunk/; revision=1057
2000-03-15 12:25:47 +00:00
Eric Kohl
1c5d2b7204 Fixed ANSI/OEM <--> Unicode conversions
svn path=/trunk/; revision=1056
2000-03-14 23:09:23 +00:00
David Welch
fbfce3bc03 Updated install script
svn path=/trunk/; revision=1055
2000-03-13 23:16:46 +00:00
Eric Kohl
045a3dfdd2 Unused characters in long file name buffers (directory slots) must be filled with 0xFFFF.
svn path=/trunk/; revision=1054
2000-03-13 17:58:06 +00:00
Eric Kohl
2ef0c4177b Fixed a bug in rtlGetFullPathName_U()
svn path=/trunk/; revision=1053
2000-03-13 17:54:23 +00:00
Eric Kohl
6865b783cc Fixed file creation date and time
Implemented synchronization of all FATs (FAT16 only)
Fixed bug in directory creation

svn path=/trunk/; revision=1052
2000-03-12 23:28:59 +00:00
Eric Kohl
15094179f1 Add MD command
svn path=/trunk/; revision=1051
2000-03-12 23:24:51 +00:00
Eric Kohl
d9a0a586a8 Updated INTERFACE_TYPE
svn path=/trunk/; revision=1050
2000-03-12 01:22:37 +00:00
Eric Kohl
afa23cb264 Added some security functions
svn path=/trunk/; revision=1049
2000-03-12 01:18:18 +00:00
Eric Kohl
9488b3031c Fixed lots of status values
svn path=/trunk/; revision=1048
2000-03-12 01:15:09 +00:00
Emanuele Aliberti
a665da497e NTOKRNL.FsRtl notification and cache tunnels stubs added.
Possibly fixed the win32k.sys import error reported by Jason.

svn path=/trunk/; revision=1047
2000-03-11 00:51:36 +00:00
Emanuele Aliberti
f1d9e95a84 NTOSKRNL.FsRtl opportunistic lock stubs added.
svn path=/trunk/; revision=1046
2000-03-10 22:09:17 +00:00
Eric Kohl
91d68b2e7b Fixed compiler warning
svn path=/trunk/; revision=1045
2000-03-10 13:46:27 +00:00
Jason Filby
200afa376d Add VGA display driver
svn path=/trunk/; revision=1044
2000-03-10 12:45:45 +00:00
Jason Filby
836456a97d Small fix
svn path=/trunk/; revision=1043
2000-03-10 12:39:53 +00:00
Jason Filby
10f82cf988 Implemented DRIVER_BuildDDIFunctions
svn path=/trunk/; revision=1042
2000-03-09 21:04:10 +00:00
Eric Kohl
bf4806c502 Added time related functions
svn path=/trunk/; revision=1041
2000-03-09 16:01:25 +00:00
Eric Kohl
89871935c1 Implemented bitmap functions
svn path=/trunk/; revision=1040
2000-03-09 00:14:10 +00:00
Emanuele Aliberti
c3f375c672 win32k.sys exports script.
svn path=/trunk/; revision=1039
2000-03-08 22:39:04 +00:00
Emanuele Aliberti
267e86b00e Version info added to Eric's edit port.
svn path=/trunk/; revision=1038
2000-03-08 22:38:01 +00:00
Emanuele Aliberti
b129b2caea Some minor fixes.
svn path=/trunk/; revision=1037
2000-03-08 22:37:04 +00:00
Jason Filby
3da0b018e5 Moved display driver and got win32k loading it's entry point.
svn path=/trunk/; revision=1036
2000-03-08 21:23:14 +00:00
Eric Kohl
e2eb8c1697 Added more bitmap functions
Fixed some STDCALL issues

svn path=/trunk/; revision=1035
2000-03-08 01:55:34 +00:00
Eric Kohl
a12836346f Improved keyboard handling code
Fixed problems with differnet console sizes
Started function renaming

svn path=/trunk/; revision=1034
2000-03-08 01:49:37 +00:00
Emanuele Aliberti
1eed2a945a Added .Type and .Size attributes to the IRP object: so far nothing
seems broken.
Added __stdcall to some Io subsystem functions.
Attempt to implement IoIsOperationSynchronous().

svn path=/trunk/; revision=1033
2000-03-06 01:02:30 +00:00
Eric Kohl
79d0e047eb Added D-Flat/32 library
svn path=/trunk/; revision=1032
2000-03-05 19:58:08 +00:00
Emanuele Aliberti
2634e901be NTOSKRNL.FSRtl MDL stubs added.
svn path=/trunk/; revision=1031
2000-03-05 19:17:43 +00:00
Eric Kohl
9eac680002 Implemented kernel parameter line
Some kernel debugger improvements

svn path=/trunk/; revision=1030
2000-03-04 22:03:32 +00:00
Emanuele Aliberti
51df161b78 *** empty log message ***
svn path=/trunk/; revision=1029
2000-03-04 20:45:34 +00:00
Eric Kohl
2b0d467176 Moved spinlock.c and head.s from 'hal/x86' to 'ke'.
This is needed for the hal separation.

svn path=/trunk/; revision=1028
2000-03-04 13:44:59 +00:00
Eric Kohl
92857818cb Added bitmaps
Added some Rtl string functions
Various changes

svn path=/trunk/; revision=1026
2000-03-03 00:48:50 +00:00
Eric Kohl
fd304f0ef5 Fixed compiler warnings
svn path=/trunk/; revision=1025
2000-03-03 00:34:54 +00:00
Emanuele Aliberti
ef5b0066c7 *** empty log message ***
svn path=/trunk/; revision=1024
2000-03-01 23:41:35 +00:00
Emanuele Aliberti
395fb3c86f NTOSKRNL.FsRtlAllocate functions.
svn path=/trunk/; revision=1023
2000-03-01 22:52:28 +00:00
Eric Kohl
76f55a8a93 Fixed mp driver initialization bug and some other ones
svn path=/trunk/; revision=1022
2000-03-01 03:25:11 +00:00
Emanuele Aliberti
d53eeb0cee Added help command to shell.exe.
Minor changes.

svn path=/trunk/; revision=1021
2000-02-29 23:57:47 +00:00
Eric Kohl
c37b4fd7f1 Fixed some unicode initialization bugs
svn path=/trunk/; revision=1020
2000-02-27 18:01:44 +00:00
Eric Kohl
c0ad0d9b02 Added 'Path' and 'windir' system environment variables
svn path=/trunk/; revision=1019
2000-02-27 15:47:17 +00:00
Eric Kohl
853d9d4ae2 Fixed bugs in RtlExpandEnvironmentStrings_U() and RtlSetEnvironmentVariable()
svn path=/trunk/; revision=1018
2000-02-27 15:45:57 +00:00
Eric Kohl
6eb7010078 Fixed bugs in '%wZ' string output
svn path=/trunk/; revision=1017
2000-02-27 15:43:58 +00:00
Jason Filby
48db9468eb Minor fixes
svn path=/trunk/; revision=1016
2000-02-27 11:04:36 +00:00
Eric Kohl
fa81b6d260 Improved csrss (doesn't crash any more)
Improved kernel debugger code
Various minor improvements

svn path=/trunk/; revision=1015
2000-02-27 02:12:07 +00:00
Eric Kohl
012968e3dc Removed obsolete header include
svn path=/trunk/; revision=1014
2000-02-26 23:20:50 +00:00
Emanuele Aliberti
debfec7180 Some __stdcall declarations in ntoskrnl/hal.
A new include/ddk/kdfuncs.h header.

svn path=/trunk/; revision=1013
2000-02-26 22:41:35 +00:00
Emanuele Aliberti
4b80eae220 File locking NTOSKRNL.FsRtl stubs.
svn path=/trunk/; revision=1012
2000-02-26 16:22:27 +00:00
Boudewijn Dekker
ad382b39b3 changed struct FILE_OBJECT* to struct _FILE_OBJECT* at line 154
svn path=/trunk/; revision=1011
2000-02-26 09:58:06 +00:00
Eric Kohl
89875c3a44 Improved RtlCreateUserProcess()
svn path=/trunk/; revision=1010
2000-02-25 23:58:57 +00:00
Emanuele Aliberti
8f1ea8477c FsRtl stubs for DBCS names handling.
svn path=/trunk/; revision=1009
2000-02-25 23:27:51 +00:00
Eric Kohl
26253d8e9b Fixed PEB related bugs
svn path=/trunk/; revision=1008
2000-02-25 00:35:06 +00:00
Eric Kohl
0723b7c345 Removed useless debug messages and header files
svn path=/trunk/; revision=1007
2000-02-25 00:34:12 +00:00
Emanuele Aliberti
ac8c87276f Minor changes.
svn path=/trunk/; revision=1006
2000-02-24 23:38:26 +00:00
Emanuele Aliberti
00a4935163 *** empty log message ***
svn path=/trunk/; revision=1005
2000-02-24 23:31:27 +00:00
Emanuele Aliberti
9dc1aa60cb Changes for FsRtl added functions.
svn path=/trunk/; revision=1004
2000-02-24 23:27:52 +00:00
Emanuele Aliberti
9f87d15938 More stubs for NTOSKRNL.FsRtl: file name handling.
svn path=/trunk/; revision=1003
2000-02-24 23:25:16 +00:00
Eric Kohl
d7de328d0c Replaced direct io space mapping by call to MmMapIoSpace()
svn path=/trunk/; revision=1002
2000-02-24 13:16:40 +00:00
Eric Kohl
6165746875 Added gdi test program gditest.exe
svn path=/trunk/; revision=1001
2000-02-22 20:58:26 +00:00
Eric Kohl
7b02da36f7 Added GdiDllInitialize()
svn path=/trunk/; revision=1000
2000-02-22 20:55:57 +00:00
Eric Kohl
f8fe1ea0b1 Added W32kInitialize service (orig. name NtGdiInit)
svn path=/trunk/; revision=999
2000-02-22 20:53:11 +00:00
Eric Kohl
213e8b569c Fixed minor bugs interrupt_service2e()
svn path=/trunk/; revision=998
2000-02-22 20:50:07 +00:00
Rex Jolliff
5db4e55264 added support for shadow syscall table
svn path=/trunk/; revision=997
2000-02-22 07:27:30 +00:00
Eric Kohl
7cb2e823a0 Fixed minor bugs. 'ddk/ntddk.h' MUST ALWAYS be included FIST!!!!!
svn path=/trunk/; revision=996
2000-02-22 02:02:08 +00:00
Eric Kohl
d1341007cf Changed RtlCopyMemory() from function to macro
Improved system service table code

svn path=/trunk/; revision=995
2000-02-21 22:44:37 +00:00
Emanuele Aliberti
151f2f646e WIN32K Kernel API main include file (replaces win32k/win32k.h).
svn path=/trunk/; revision=994
2000-02-21 00:50:17 +00:00
Emanuele Aliberti
7d3fded0ba Added little prog. that builds the WIN32K.SYS service table
and the stubs to be used in GDI32.DLL.
Converted to __stdcall every W32k... call in WIN32K.SYS.
Fixed the entry point in GDI32.DLL.
WARNING: the thing compiles, but Jason reports it does not work as is
(he tested a preliminary stub piece of code).
Perhaps changing it (as Phillip proposes) or fixing it to make WIN32K.SYS
work the NT way is required (Hernan, are you there: I did not understand
well how the additional service tables work). Feel free to change it.

svn path=/trunk/; revision=993
2000-02-20 22:52:50 +00:00
Eric Kohl
b9bb1744aa Fixed bugs in process parameter and environment code
svn path=/trunk/; revision=992
2000-02-19 19:37:13 +00:00
Eric Kohl
e632116bee Fixed buggy RtlCompareString() and RtlCompareUnicodeString()
svn path=/trunk/; revision=991
2000-02-19 19:31:41 +00:00
Eric Kohl
f28a023c99 Fixed a bug - memmove() couldn't handle overlapping buffers
svn path=/trunk/; revision=990
2000-02-19 17:18:34 +00:00
Eric Kohl
b0780ae5d6 Fixed environment implementation
Fixed current directory implementation

svn path=/trunk/; revision=989
2000-02-18 01:01:06 +00:00
Eric Kohl
6bea08705e Fixed minor bugs and removed fixed start directory
svn path=/trunk/; revision=988
2000-02-18 00:53:11 +00:00
Eric Kohl
6708f0b87e Fixed environment implementation
Fixed current directory implementation

svn path=/trunk/; revision=987
2000-02-18 00:51:03 +00:00
Emanuele Aliberti
f0175145d6 Untested raw implementation of MultiByteToWideChar().
svn path=/trunk/; revision=986
2000-02-14 22:10:46 +00:00
David Welch
3cd2fc22d7 Fixed compilation bug
Made a start on some documentation in info format

svn path=/trunk/; revision=985
2000-02-14 14:13:34 +00:00
Boudewijn Dekker
b49921cb96 impl. NtGetTickCount
svn path=/trunk/; revision=984
2000-02-14 10:27:40 +00:00
David Welch
c110a36a78 Moved user-process loading into ZwCreateProcess
svn path=/trunk/; revision=983
2000-02-13 16:05:19 +00:00
Eric Kohl
ca7bca8f84 Fixed a bug in NtQueryVirtualMemory()
svn path=/trunk/; revision=982
2000-02-06 15:52:04 +00:00
Eric Kohl
5f71c29e2c Fixed _wcsnicmp()
svn path=/trunk/; revision=981
2000-02-05 23:46:14 +00:00
Eric Kohl
326a3cd58b Added some string functions
Added security descriptor functions
Implemented environment functions
Implemented current directory functions

svn path=/trunk/; revision=980
2000-02-05 16:08:49 +00:00
Eric Kohl
18c0c85dd8 Added CHECKPOINT macro
svn path=/trunk/; revision=978
2000-02-03 22:45:11 +00:00
Phillip Susi
480136bdf4 Fixed loader bugs, still needs reworked to create multiple sections
svn path=/trunk/; revision=977
2000-02-03 21:34:14 +00:00
Paolo Pantaleo
16ef6ef2af history command added and some minor changes to history interface
svn path=/trunk/; revision=976
2000-02-01 18:29:11 +00:00
Eric Kohl
33258c166f Fixed a stdcall bug
svn path=/trunk/; revision=975
2000-01-31 20:26:15 +00:00
Eric Kohl
f09ef9894a Fixed an invalid printf() format type
svn path=/trunk/; revision=974
2000-01-31 20:25:43 +00:00
Eric Kohl
19e258120e Fixed compiler warnings
svn path=/trunk/; revision=973
2000-01-31 20:24:41 +00:00
Eric Kohl
7c3e6e80c1 Fixed METAFILEPICT bug
svn path=/trunk/; revision=972
2000-01-31 20:23:54 +00:00
Hernan Ochoa
5dc3ee0414 Added $Id Tag for commit info
svn path=/trunk/; revision=971
2000-01-30 20:55:51 +00:00
Hernan Ochoa
90579ae67f Added $Id Tag for commit info
svn path=/trunk/; revision=970
2000-01-30 17:02:44 +00:00
Phillip Susi
5dff1d9789 ignore errors deleting files for make clean
svn path=/trunk/; revision=969
2000-01-29 20:32:12 +00:00
Hernan Ochoa
337692832a Added parameters checking, help, and some information about
when the program was compiled.

svn path=/trunk/; revision=968
2000-01-29 19:20:26 +00:00
David Welch
d633bd8168 Changed the loader so ZwCreateProcess now maps ntdll into memory
svn path=/trunk/; revision=967
2000-01-27 08:56:50 +00:00
Jason Filby
980d94c760 *** empty log message ***
svn path=/trunk/; revision=966
2000-01-26 21:10:16 +00:00
David Welch
d24a48cd94 More improvements to LPC code
Updated TEB structure
Changed selectors value to be closer to nt
Some bugfixes

svn path=/trunk/; revision=965
2000-01-26 10:07:30 +00:00
Phillip Susi
52404fd1c8 Fixed bug in IO manager that caused crash when trying to open a file on a non existant device
Fixed memory leaks in object manager

svn path=/trunk/; revision=964
2000-01-25 06:31:25 +00:00
Emanuele Aliberti
3a18299c0f Coders directory updated.
svn path=/trunk/; revision=963
2000-01-23 22:52:57 +00:00
Phillip Susi
c41488b99a Fixed syntax error
svn path=/trunk/; revision=962
2000-01-23 19:36:41 +00:00
Hernan Ochoa
3cd7e191a4 now NTOSKRNL exports KeServiceDescriptorTable just like
NT's NTOSKRNL does.

svn path=/trunk/; revision=961
2000-01-23 15:21:25 +00:00
Hernan Ochoa
185d2be0f1 added definitions for SSDT, SSPT, KeServiceDescriptorTable,
KeServiceDescriptorTableShadow, KeAddSystemService(),
KE_SERVIDE_DESCRIPTOR_TABLE_ENTRY.

svn path=/trunk/; revision=960
2000-01-23 15:19:05 +00:00
Hernan Ochoa
55bb357489 changed syscall tables. now it mimics NT style.
it has a SSDT a SSPT, a KeServiceDescriptorTable and a
KeServiceDescriptorTableShadow. modified the code
inside the int2e_handler() to use the new syscall tables.

svn path=/trunk/; revision=959
2000-01-23 15:17:06 +00:00
Hernan Ochoa
65a742ceaa changed syscall tables. now it mimics NT style.
it has a SSDT a SSPT, a KeServiceDescriptorTable and a
KeServiceDescriptorTableShadow. genntdll now also generates
some useful defines about min syscall number, max
syscall number, and number of syscalls.

svn path=/trunk/; revision=958
2000-01-23 15:14:42 +00:00
Phillip Susi
1220167730 New Read/Write File IO test utility
svn path=/trunk/; revision=957
2000-01-23 09:04:30 +00:00
Phillip Susi
2001008199 Fixed OutputDebugString() to use the new int 2D debug service
Moved include of rules.mak up to top so it picks up the HOST variable from there

svn path=/trunk/; revision=956
2000-01-23 08:16:20 +00:00
Emanuele Aliberti
74131ebded Added error reporting to lpcsrv and lpcclt.
svn path=/trunk/; revision=955
2000-01-22 22:22:48 +00:00
Emanuele Aliberti
5415f6f333 Fixed a stupid bug in time conversion code that generated abnormally high
build numbers.

svn path=/trunk/; revision=954
2000-01-22 14:25:48 +00:00
Phillip Susi
0ab77c8e74 Fixed a broken DPRINT
svn path=/trunk/; revision=953
2000-01-22 00:04:56 +00:00
Phillip Susi
51445f2db1 Made symbolic links permanent the proper way, with the perm flag, rather than leaking a refcount
svn path=/trunk/; revision=952
2000-01-21 23:59:53 +00:00
Phillip Susi
4d393f112a darnit... another debug print.. someone kick me
svn path=/trunk/; revision=951
2000-01-21 23:27:47 +00:00
Phillip Susi
a706ca2b64 Ooops... forgot some debug prints ( embarassed )
svn path=/trunk/; revision=950
2000-01-21 23:17:47 +00:00
Phillip Susi
e4008de214 Fixed makefile to include rules.mak first, so it gets the settings in there right
Fixed path parsing for \\.\

svn path=/trunk/; revision=949
2000-01-21 23:06:26 +00:00
Eric Kohl
2a24d175bf Replaced calls to aprintf() or dprintf() by DPRINT()
Removed old debugging code

svn path=/trunk/; revision=948
2000-01-20 22:57:01 +00:00
Eric Kohl
b6c944afcc Added missing format types to vfprintf()
Implemented vfwprintf()

svn path=/trunk/; revision=947
2000-01-20 22:49:12 +00:00
Emanuele Aliberti
90617da53d Minor changes.
svn path=/trunk/; revision=946
2000-01-20 22:14:45 +00:00
Emanuele Aliberti
b6de29fefb Two more FsRtl stubs.
svn path=/trunk/; revision=945
2000-01-20 22:14:08 +00:00
Emanuele Aliberti
8b078f86ae Updated fsfuncs.h with latest stubs prototypes.
svn path=/trunk/; revision=944
2000-01-20 22:11:48 +00:00
Eric Kohl
1b92b852eb Cleanup
Added '%I64' format type

svn path=/trunk/; revision=943
2000-01-19 19:48:20 +00:00
Eric Kohl
072eed4ad3 Fixed compiler warning
svn path=/trunk/; revision=942
2000-01-19 19:47:15 +00:00
Eric Kohl
75f2f5b22e Fixed ugly bug in the serial debugging code
svn path=/trunk/; revision=941
2000-01-19 16:24:15 +00:00
Rex Jolliff
90e1f4cbf9 changes to support v15 release
svn path=/trunk/; revision=939
2000-01-19 07:05:04 +00:00
Eric Kohl
921363d647 Changed debug output to use INT 2D
svn path=/trunk/; revision=938
2000-01-18 12:04:45 +00:00
Eric Kohl
8234dea660 Changed debug output to use INT 2D
Ooops! This one was missing! Sorry!

svn path=/trunk/; revision=937
2000-01-18 11:04:53 +00:00
Eric Kohl
88cb154d19 Changed debug output to use INT 2D
svn path=/trunk/; revision=936
2000-01-17 21:02:50 +00:00
Phillip Susi
faac123528 fixed tab completion with long file names
svn path=/trunk/; revision=935
2000-01-17 02:17:50 +00:00
Emanuele Aliberti
e857e97df1 Some more stubs for NDIS.SYS.
svn path=/trunk/; revision=934
2000-01-16 18:32:34 +00:00
Emanuele Aliberti
d508a1f0bf Added two missing names.
svn path=/trunk/; revision=933
2000-01-16 18:31:48 +00:00
Eric Kohl
013fc117b8 Added missing features and functions
Cleaned confusing file naming

svn path=/trunk/; revision=932
2000-01-14 02:23:25 +00:00
Eric Kohl
3d1f2d98ba Added missing printf() functions
Changed format %w to %S and %W to %wZ

svn path=/trunk/; revision=931
2000-01-12 19:05:32 +00:00
Eric Kohl
de66c40007 Disabled debugging messages
svn path=/trunk/; revision=930
2000-01-11 17:33:44 +00:00
Eric Kohl
6cc53dd4b3 Fixed process parameters
Simplified current directory code
Added %C and %S formats to printf()
Changed %w to %S
Fixed compiler warnings

svn path=/trunk/; revision=929
2000-01-11 17:32:13 +00:00
Eric Kohl
fb7f4582cd Fixed ctype and Rtl functions
svn path=/trunk/; revision=928
2000-01-11 01:16:50 +00:00
Emanuele Aliberti
a11a76eaef Some more NTOSKRNL.FsRtl stubs.
svn path=/trunk/; revision=927
2000-01-10 22:46:38 +00:00
Eric Kohl
be132afdf2 Added DbgPrint()
Fixed some Rtl functions
Added missing printf() and wprintf() functions

svn path=/trunk/; revision=926
2000-01-10 20:34:41 +00:00
Eric Kohl
686387f8e0 Removed fixed screen size code
svn path=/trunk/; revision=925
2000-01-09 23:16:41 +00:00
Eric Kohl
492a608e06 Fixed hal display bug
svn path=/trunk/; revision=924
2000-01-09 21:39:07 +00:00
Emanuele Aliberti
fd411d8b8c New year in c/r string.
svn path=/trunk/; revision=923
2000-01-08 16:17:50 +00:00
Eric Kohl
6f3d53f751 Added reading screen sizes from crt controller
svn path=/trunk/; revision=922
2000-01-07 18:57:33 +00:00
Emanuele Aliberti
462fe323eb A few more return structures for NtQuerySystemInformation
svn path=/trunk/; revision=921
2000-01-06 13:17:48 +00:00
David Welch
4d8c6a710b Removed debug messages from queuing code (sorry)
Added __int64 datatype to files that use it
Hid bug in ide driver (or somewhere) for now

svn path=/trunk/; revision=920
2000-01-06 00:26:16 +00:00
David Welch
623093eaaa Implemented more security functions
Moved general security types into new header file
Implemented ThreadImpersonationToken info class
Bug fixes to queuing code

svn path=/trunk/; revision=919
2000-01-05 21:57:00 +00:00
Eric Kohl
453f513ed3 Fixed ctype table and functions.
svn path=/trunk/; revision=918
2000-01-05 19:42:56 +00:00
Eric Kohl
57919a833e Fixed ctype table.
svn path=/trunk/; revision=917
2000-01-05 17:49:00 +00:00
David Welch
e6b5c8bfc7 Disabled pragma statement that was causing problems
svn path=/trunk/; revision=916
2000-01-02 14:21:04 +00:00
Eric Kohl
974095c413 Added mbtowc(), mbstowcs(), wctomb() and wcstombs()
svn path=/trunk/; revision=914
1999-12-30 14:39:43 +00:00
David Welch
a8ca53d761 Added some additional csrss work
Some fixes to the queueing code
Some fixes to the lpc code
Fix to section code

svn path=/trunk/; revision=913
1999-12-30 01:51:42 +00:00
Eric Kohl
c54d897571 Added even more missing functions
svn path=/trunk/; revision=912
1999-12-30 01:33:47 +00:00
Eric Kohl
17afcb4dfd Added some missing debug, math and ctype functions
svn path=/trunk/; revision=911
1999-12-29 17:13:27 +00:00
Eric Kohl
2284e742b3 Fixed implementation of register io functions
Added luid functions

svn path=/trunk/; revision=910
1999-12-29 01:37:30 +00:00
Eric Kohl
c7580dacf3 Last update for millenium release
Fixed some minor bugs
Fixed window title

svn path=/trunk/; revision=909
1999-12-28 23:13:38 +00:00
Eric Kohl
9446011fc1 Minor update
svn path=/trunk/; revision=908
1999-12-28 16:25:21 +00:00
Emanuele Aliberti
586433918e Some more NDIS stubs.
svn path=/trunk/; revision=907
1999-12-27 22:27:39 +00:00
Eric Kohl
b9579544e7 Removed cmd target
svn path=/trunk/; revision=906
1999-12-27 15:07:00 +00:00
Eric Kohl
005106acbb Fixed some more STDCALL issues
svn path=/trunk/; revision=905
1999-12-27 15:06:13 +00:00
Emanuele Aliberti
38d1018911 Added (io/create.c) IoCreateFile stub.
svn path=/trunk/; revision=904
1999-12-26 20:21:03 +00:00
Emanuele Aliberti
ea5959a772 Some missing __stdcall declarations added in headers and in code.
svn path=/trunk/; revision=903
1999-12-26 17:22:19 +00:00
Emanuele Aliberti
6b50f46c2f Some old Fs/Po code added to the makefile
svn path=/trunk/; revision=902
1999-12-26 16:36:46 +00:00
David Welch
4d5643a96a Added some security functions
Changes to csrss console support
Fixed bug in gdt.c

svn path=/trunk/; revision=901
1999-12-26 15:50:53 +00:00
Eric Kohl
128cfc8af0 Fixed compiler warnings
svn path=/trunk/; revision=900
1999-12-24 17:20:54 +00:00
Eric Kohl
a7a23b4dc3 Added missing test
svn path=/trunk/; revision=899
1999-12-24 17:16:32 +00:00
David Welch
dbd051cad4 Corrected additional object manager issues pointed by Philip Susi
Began added console i/o code to csrss (not working yet)
Corrected long standing page fault bug (not zeroing allocated page)

svn path=/trunk/; revision=898
1999-12-22 14:48:30 +00:00
Phillip Susi
1667a4589a fixed typeo
svn path=/trunk/; revision=897
1999-12-20 21:30:13 +00:00
Eric Kohl
6a617736e9 Fixed a compiler warning
svn path=/trunk/; revision=896
1999-12-20 21:05:53 +00:00
Phillip Susi
d832a87f14 fixed missing dereference and cleaned up code in NtCreateEvent
svn path=/trunk/; revision=895
1999-12-20 20:49:27 +00:00
David Welch
13541861b1 Fixed problem with handles not being released
Changed page fault handling to take account of the error code
Changed handle table locking

svn path=/trunk/; revision=894
1999-12-20 02:14:40 +00:00
Phillip Susi
dfa5f04c63 merged better assert code back into main trunk
svn path=/trunk/; revision=893
1999-12-18 19:50:24 +00:00
David Welch
cc5dc64c30 Worked around compiler bug in NtDelayExecution
Added some page free checking
Reorganised thread code a bit

svn path=/trunk/; revision=892
1999-12-18 17:48:23 +00:00
Emanuele Aliberti
8abc09ec0d Versio info actually linked in *.sys modules
svn path=/trunk/; revision=891
1999-12-18 10:17:42 +00:00
Emanuele Aliberti
5b86e3a918 RtlNtStatusToDosError and RtlNtStatusToPsxErrno declared __stdcall
svn path=/trunk/; revision=890
1999-12-18 10:16:11 +00:00
Emanuele Aliberti
e5b9e13d59 Minor changes
svn path=/trunk/; revision=889
1999-12-18 10:15:11 +00:00
Phillip Susi
bfaef27782 Added tracking of running threads in a process, and termination of process when all threads terminate
svn path=/trunk/; revision=888
1999-12-18 07:33:53 +00:00
Phillip Susi
4e94397e24 Added list of threads in process
svn path=/trunk/; revision=887
1999-12-18 07:28:28 +00:00
Phillip Susi
683932b845 changed to use proper type for dispatcher header, instead of PVOID in WAIT_BLOCK
svn path=/trunk/; revision=886
1999-12-17 23:30:48 +00:00
Phillip Susi
4ce5c9d3b4 fixed WaitForMultipleObjects()'s handling of the WaitAll flag
svn path=/trunk/; revision=885
1999-12-17 23:24:27 +00:00
Phillip Susi
6b53b3acea Working and tested KeWaitForXXX
svn path=/trunk/; revision=884
1999-12-17 23:23:36 +00:00
Eric Kohl
81547d8842 Added missing .cvsignore file
svn path=/trunk/; revision=883
1999-12-16 23:09:34 +00:00
Eric Kohl
1b0b103796 Added a time conversion function and fixed a little bug
(fat stores only 2 second steps)

svn path=/trunk/; revision=882
1999-12-16 23:08:17 +00:00
Phillip Susi
98a6084104 found that list corruption bug. it was also resulting in a meory spray
svn path=/trunk/; revision=881
1999-12-16 22:59:03 +00:00
Phillip Susi
96aed594a2 fixed CreateEvent() with NULL name
svn path=/trunk/; revision=879
1999-12-16 17:48:43 +00:00
Phillip Susi
ca6a107ee2 fixed a few bugs in wait code
svn path=/trunk/; revision=878
1999-12-16 05:13:06 +00:00
Phillip Susi
414cd229d9 new event test app
svn path=/trunk/; revision=877
1999-12-16 05:12:12 +00:00
Eric Kohl
a09b668be6 Added missing .cvsignore file
svn path=/trunk/; revision=876
1999-12-16 00:15:19 +00:00
Phillip Susi
7f63532d94 fixed timeout on wait functions
svn path=/trunk/; revision=875
1999-12-15 06:48:10 +00:00
Eric Kohl
8bbcdc3d4a Fixed current directory handling
Added new prompt functions
Fixed dangling pointer bug in copy command

svn path=/trunk/; revision=874
1999-12-15 00:50:41 +00:00
Phillip Susi
43d5d0b2f0 used proper type pointer instead of PVOID
svn path=/trunk/; revision=873
1999-12-14 18:44:38 +00:00
Phillip Susi
a409988b36 missing initialization of Thread->Tcb.WaitBlockList
svn path=/trunk/; revision=872
1999-12-14 18:35:19 +00:00
Phillip Susi
33009b967e bug fix with file object's name being freed but the pointer not NULLed
svn path=/trunk/; revision=871
1999-12-14 18:32:38 +00:00
Phillip Susi
4c2f15bfb9 fixed runnable thread counters
svn path=/trunk/; revision=870
1999-12-14 00:54:29 +00:00
David Welch
c40b27bbc4 Forgot to remove obsolete file
svn path=/trunk/; revision=869
1999-12-13 23:07:49 +00:00
David Welch
ac7a3aa542 Reworked APC and waiting code, seems more stable now
KeWaitForMultipleObjects is broken, shouldn't be difficult to fix
Corrected bug in ntdll ldr which prevented VC applications being loaded
Added thread testing application
Tried to make thread termination reentrant
Improved stack frame dump

svn path=/trunk/; revision=868
1999-12-13 22:04:41 +00:00
Phillip Susi
90e6a2244e missing GetEnvironmentStrings export, was supposed to be aliased to GetEnvironmentStringsA for some reason, as NT's exports it, and ros's cmd.exe imports it.
svn path=/trunk/; revision=867
1999-12-12 07:59:41 +00:00
Phillip Susi
8c2f4d55e3 David forgot to take out a debugging line? Prevented process termination on user mode exception
svn path=/trunk/; revision=866
1999-12-12 06:09:29 +00:00
Phillip Susi
9a22766e36 new APC code ready for prime time
svn path=/trunk/; revision=865
1999-12-12 03:56:53 +00:00
Phillip Susi
53b1677997 new APC code ready for prime time
svn path=/trunk/; revision=864
1999-12-12 03:48:47 +00:00
David Welch
2cecd9846d Removed typo.
svn path=/trunk/; revision=863
1999-12-12 01:04:09 +00:00
David Welch
f822a2a9d9 Backed out Philip Susi's changes for further testing
Returned kernel to working state.
Made exception handling more tolerant

svn path=/trunk/; revision=862
1999-12-12 00:59:39 +00:00
Phillip Susi
a590b25e46 fixed thread dispatcher bug with spin lock
svn path=/trunk/; revision=861
1999-12-12 00:49:00 +00:00
Phillip Susi
5d2dc4de65 fixed bug caused by my APC code
svn path=/trunk/; revision=860
1999-12-12 00:44:39 +00:00
Eric Kohl
55fef42029 Added abs() and labs()
svn path=/trunk/; revision=859
1999-12-12 00:20:29 +00:00
Eric Kohl
0ce89e21d9 fixed a compiler warning
svn path=/trunk/; revision=858
1999-12-12 00:08:41 +00:00
David Welch
910f27a570 Put in updated version of bitops header
Corrected bug in loader with mapping sections with zero VirtualSize
Corrected bug in the vfat driver that accessed freed memory
General cleanup of the vfat driver

svn path=/trunk/; revision=857
1999-12-11 21:14:49 +00:00
Phillip Susi
14ac854378 fixed DPC and APC calling code
svn path=/trunk/; revision=856
1999-12-11 17:31:16 +00:00
Phillip Susi
e0e40991af thread priorities, and some APC work
svn path=/trunk/; revision=855
1999-12-11 17:26:43 +00:00
Phillip Susi
db262c9a74 reworked the APC code, they shold now be delivered properly when the IRQL falls below APC_LEVEL, and when there are more than one queued.
Added support for KeAddThreadTimeout() to time out
Fixed wait code to use the WaitStatus of the thread when it wakes up

svn path=/trunk/; revision=854
1999-12-11 17:25:27 +00:00
Phillip Susi
81310b4307 added DPC for timers to KTHREAD, and fixed ApcState
svn path=/trunk/; revision=853
1999-12-11 17:19:32 +00:00
Phillip Susi
77c8585f1c added initialization for APCs
svn path=/trunk/; revision=852
1999-12-11 06:40:08 +00:00
Phillip Susi
43f46ed4f8 at least it compiles now...
svn path=/trunk/; revision=851
1999-12-11 06:39:30 +00:00
Eric Kohl
66f738dbd1 cleanup
svn path=/trunk/; revision=850
1999-12-11 01:44:29 +00:00
Eric Kohl
45043db6ff Added waiting for port requests
svn path=/trunk/; revision=849
1999-12-11 01:42:44 +00:00
Phillip Susi
b14104f1e7 ooops... fix that..
svn path=/trunk/; revision=848
1999-12-10 22:25:18 +00:00
Phillip Susi
424d757107 added initial priorities to threads and processes
svn path=/trunk/; revision=847
1999-12-10 22:07:23 +00:00
Eric Kohl
a1c7df6990 Fixed command line code.
Fixed Rtl string functions.

svn path=/trunk/; revision=846
1999-12-10 17:49:21 +00:00
David Welch
c7b7c5b0b6 Modified LPC implementation to be closer to nt.
Did some initial work on support for paging
Switched some test application from using our special startup code
Correctly bug in DPC code (possible fix for "releasing unacquired spinlock" error")

svn path=/trunk/; revision=845
1999-12-10 17:04:37 +00:00
Phillip Susi
815a52debe fixed IoCompleteRequest() to give priority boost even when target thread != current thread
svn path=/trunk/; revision=844
1999-12-09 19:39:45 +00:00
Paolo Pantaleo
dbf662da37 4nt's CTRL-D and CRTL-K support
svn path=/trunk/; revision=843
1999-12-09 19:20:47 +00:00
Eric Kohl
5d99e9003a dll name comparison in LdrFindDll() must be case-insensitive
svn path=/trunk/; revision=842
1999-12-09 19:14:45 +00:00
Eric Kohl
ec235d7468 Fixed HalQueryRealTimeClock and HalSetRealTimeClock.
Thanks to Adam Polanski.

svn path=/trunk/; revision=841
1999-12-09 08:16:26 +00:00
Rex Jolliff
f09720f7d7 some more video code
svn path=/trunk/; revision=840
1999-12-09 02:45:06 +00:00
Paolo Pantaleo
258912bf48 fixed a stupid bug in history
minor chage to GetConsoleHandle

svn path=/trunk/; revision=839
1999-12-08 18:18:23 +00:00
Eric Kohl
9d84d82bd7 pointer to PEB becomes first parameter in call to NtProcessStartup
svn path=/trunk/; revision=838
1999-12-08 12:59:35 +00:00
Phillip Susi
904da6e474 disable interrupts first, then do work. Use HLT also instead of busy wait
svn path=/trunk/; revision=837
1999-12-08 06:34:25 +00:00
Paolo Pantaleo
915ff9328d history cleanup added
svn path=/trunk/; revision=836
1999-12-07 18:17:17 +00:00
Paolo Pantaleo
61c3984818 TAS searches in internal commands too
svn path=/trunk/; revision=835
1999-12-07 18:16:24 +00:00
Eric Kohl
4a02ce0c1e fixed typo
svn path=/trunk/; revision=834
1999-12-07 17:23:42 +00:00
Paolo Pantaleo
f30ade19b8 new history implementation, not complete yet...
svn path=/trunk/; revision=833
1999-12-06 19:26:49 +00:00
Phillip Susi
9530a7d656 fixed handling of enter with blank line, also by my good pal, jim4
svn path=/trunk/; revision=832
1999-12-06 06:53:24 +00:00
Phillip Susi
5716745a13 fixed for 25 line mode as it should be, and scrolling by my good pal, jim4
svn path=/trunk/; revision=831
1999-12-06 06:43:45 +00:00
Phillip Susi
680589c149 fixed default bochs log port
svn path=/trunk/; revision=830
1999-12-06 05:48:34 +00:00
Eric Kohl
2efd99afb2 removed outdated cmd
svn path=/trunk/; revision=829
1999-12-06 00:30:09 +00:00
Eric Kohl
b001203a86 - implemented process parameter block (PPB) code
- improved process environment block (PEB) code
- improved environment code

svn path=/trunk/; revision=828
1999-12-06 00:25:14 +00:00
Phillip Susi
09edfdc32f forgot to initialize Create member of OBJECT_TYPE for threads
svn path=/trunk/; revision=827
1999-12-05 23:23:50 +00:00
Phillip Susi
ae12418822 fixed sync problem: set dpc lock field before, rather than after droping the spin lock
svn path=/trunk/; revision=826
1999-12-05 19:26:11 +00:00
Phillip Susi
f9d4545552 fixed sync bug by elevating IRQL
svn path=/trunk/; revision=825
1999-12-05 08:30:10 +00:00
Emanuele Aliberti
bb25ff0f3a Minor changes.
svn path=/trunk/; revision=824
1999-12-04 21:11:00 +00:00
Emanuele Aliberti
4b70175e11 RtlNtStatusToPsxErrno stub added.
svn path=/trunk/; revision=823
1999-12-04 21:03:22 +00:00
Emanuele Aliberti
ba58b241e5 Added version resource to dd and fs.
svn path=/trunk/; revision=822
1999-12-04 20:58:45 +00:00
Eric Kohl
7c574c2d6e fixed compiler warnings
svn path=/trunk/; revision=821
1999-12-04 14:54:50 +00:00
Phillip Susi
47551b9846 ignore buildno.h
svn path=/trunk/; revision=819
1999-12-04 08:02:27 +00:00
Phillip Susi
d0c1e25256 fixed timers and a wait functions, and a few bugs
svn path=/trunk/; revision=818
1999-12-04 07:40:53 +00:00
Phillip Susi
d4c340c696 fixed ide.sys to run under bochs, disabled support for more than one controller to do it. Let me know of this breaks on real hardware.
svn path=/trunk/; revision=817
1999-12-04 07:38:16 +00:00
Brian Palmer
43014d0391 Fixed bug in LdrPEProcessModule() so that it correctly section sizes
svn path=/trunk/; revision=816
1999-12-04 04:59:38 +00:00
Paolo Pantaleo
e28f90e740 now c:\ do not crash cmd
svn path=/trunk/; revision=815
1999-12-03 18:50:00 +00:00
David Welch
ead0eeacdd Some bug fixes.
Corrected LPC implementation.

svn path=/trunk/; revision=814
1999-12-02 20:53:55 +00:00
Boudewijn Dekker
cf693462e6 .
svn path=/trunk/; revision=813
1999-12-01 22:31:45 +00:00
Boudewijn Dekker
67ad8387f3 fixed some prototypes by adding stdcall attribute
svn path=/trunk/; revision=812
1999-12-01 22:30:48 +00:00
Eric Kohl
eae47571c9 fixed little bug
svn path=/trunk/; revision=811
1999-12-01 17:34:55 +00:00
Eric Kohl
2ea8bb5aa4 minor improvements
svn path=/trunk/; revision=810
1999-12-01 15:22:49 +00:00
Eric Kohl
13436cd7f7 - added environment functions
- moved ntdll-only prototypes into ntdll header file

svn path=/trunk/; revision=809
1999-12-01 15:18:54 +00:00
Eric Kohl
3bee100dae Cleanup
svn path=/trunk/; revision=808
1999-12-01 15:10:42 +00:00
Eric Kohl
2eccd28b8f Fixed a typo
svn path=/trunk/; revision=807
1999-12-01 15:08:31 +00:00
Paolo Pantaleo
d2c016b5ab just fixed a stupid bug
svn path=/trunk/; revision=806
1999-11-29 18:25:05 +00:00
Emanuele Aliberti
b72dc46819 Almost complete skeleton for tdi.sys,
yet headers are still missing.

svn path=/trunk/; revision=805
1999-11-28 07:59:29 +00:00
Eric Kohl
e2e5efb9d7 fixed a typo
svn path=/trunk/; revision=804
1999-11-28 01:55:41 +00:00
Paolo Pantaleo
6d3a97eb5e type accepts more than one file specification
F3 working in command line history (for now simply the same as up arrow)

svn path=/trunk/; revision=803
1999-11-27 19:14:59 +00:00
Eric Kohl
0d630c9ee3 added atoi() and atol()
svn path=/trunk/; revision=802
1999-11-27 11:32:43 +00:00
Eric Kohl
8b829113cb - changed InitializeObjectAttributes() from a function to a macro
- fixed STDCALL more issues
- changed some RtlLargeIntegerXxx functions to macros

svn path=/trunk/; revision=801
1999-11-27 03:32:55 +00:00
Brian Palmer
c18e7f06ce *** empty log message ***
svn path=/trunk/; revision=800
1999-11-26 21:45:23 +00:00
Jason Filby
dfa8364302 *** empty log message ***
svn path=/trunk/; revision=799
1999-11-26 20:53:32 +00:00
Eric Kohl
ed3ca3d52c More runtime functions
svn path=/trunk/; revision=798
1999-11-25 23:45:30 +00:00
Eric Kohl
e77c8000db Fixed typo
svn path=/trunk/; revision=797
1999-11-25 23:37:02 +00:00
Eric Kohl
05a567fce3 More runtime functions
svn path=/trunk/; revision=796
1999-11-25 23:35:24 +00:00
David Welch
9b614b887d Corrected ntdll mapping bug
Implemented prototype lpc mechanism

svn path=/trunk/; revision=795
1999-11-25 10:47:58 +00:00
Emanuele Aliberti
1a0765f6c5 Some NdisXYZ stubs for NDIS.SYS.
svn path=/trunk/; revision=794
1999-11-24 23:11:17 +00:00
Emanuele Aliberti
ec4a27aeb7 Initial makefile for NDIS.SYS
svn path=/trunk/; revision=793
1999-11-24 23:06:24 +00:00
David Welch
b986ce1cac Began converting minix fsd to work with new caching mechanism
Implemented user-mode APCs (still some bugs)
Began implementing shared memory, still some locking issues

svn path=/trunk/; revision=792
1999-11-24 11:51:55 +00:00
Emanuele Aliberti
e510811de7 Some fixes in the TDI initial files.
svn path=/trunk/; revision=791
1999-11-21 23:48:14 +00:00
Rex Jolliff
a7e6e9c1f8 more win32k code
svn path=/trunk/; revision=790
1999-11-21 18:39:11 +00:00
Eric Kohl
64915d3ebe Added missing STDCALL.
svn path=/trunk/; revision=789
1999-11-20 21:59:39 +00:00
Eric Kohl
c8689122b1 Fixed typo.
svn path=/trunk/; revision=788
1999-11-20 21:53:53 +00:00
Eric Kohl
e0c1e02c47 Fixed compiler warning
svn path=/trunk/; revision=787
1999-11-20 21:51:19 +00:00
Eric Kohl
b09592bf32 Major update to Rtl string functions.
svn path=/trunk/; revision=786
1999-11-20 21:49:23 +00:00
Emanuele Aliberti
174adb3955 Some more stubs files for the TDI kernel module.
svn path=/trunk/; revision=785
1999-11-20 20:41:29 +00:00
Emanuele Aliberti
8a20ddc7d4 Initial files for the TCP/IP stack kernel module.
svn path=/trunk/; revision=784
1999-11-20 20:36:46 +00:00
Emanuele Aliberti
82a0c31208 Initial networking code layout.
svn path=/trunk/; revision=783
1999-11-20 10:21:18 +00:00
Rex Jolliff
d25098ba0c added ignore file
svn path=/trunk/; revision=782
1999-11-18 19:25:35 +00:00
Rex Jolliff
aba30a453f added some DDI functions to table
svn path=/trunk/; revision=781
1999-11-18 18:58:16 +00:00
Boudewijn Dekker
fde8b62215 added misc/res.c
svn path=/trunk/; revision=780
1999-11-17 21:33:44 +00:00
Boudewijn Dekker
e04faee634 fixed some bugs in LdrLoadDll
svn path=/trunk/; revision=779
1999-11-17 21:32:57 +00:00
Boudewijn Dekker
0d7b93783b no message
svn path=/trunk/; revision=778
1999-11-17 21:30:00 +00:00
Boudewijn Dekker
b361e13fab implemented LoadResource/FlushViewOfFile
svn path=/trunk/; revision=777
1999-11-17 21:28:08 +00:00
Boudewijn Dekker
44744d8d36 implemented LoadResource
svn path=/trunk/; revision=776
1999-11-17 21:21:08 +00:00
Boudewijn Dekker
614f99e406 implemented FlushViewOfFile in kernel32
svn path=/trunk/; revision=775
1999-11-17 21:20:15 +00:00
Rex Jolliff
6e605e712e fixed reference to abs
svn path=/trunk/; revision=774
1999-11-17 21:17:10 +00:00
Rex Jolliff
96d5e2c715 Added top level ignore list
svn path=/trunk/; revision=773
1999-11-17 20:54:05 +00:00
Rex Jolliff
6767fd7f43 Fixed BMI typedef
svn path=/trunk/; revision=772
1999-11-17 20:50:37 +00:00
Eric Kohl
85a3f3844c Started NLS support and improved Rtl string functions.
svn path=/trunk/; revision=771
1999-11-15 16:02:50 +00:00
Eric Kohl
c114003cb5 Added some RtlLargeInteger functions.
svn path=/trunk/; revision=770
1999-11-15 16:01:32 +00:00
Eric Kohl
c52cbf8517 Fixed warning.
svn path=/trunk/; revision=769
1999-11-15 15:53:31 +00:00
Boudewijn Dekker
abd233d61a Implemented LdrFindResource_U and LdrAccessResource
svn path=/trunk/; revision=768
1999-11-14 13:04:46 +00:00
David Welch
b0ff680e0e 1) Corrected bugs in ERESOURCE code
and added test
2) Moved some files which are only
architecture-dependant out of the hal
3) Corrected timer implementation (it
should now be possible to use them as dispatcher
objects)
4) Corrected stupid bug in dpc code
5) Made thread list locking more sensible
6) Altered system call handler to build a
proper context in preparation for implementing APCs
7) Rationalised the waiting code

svn path=/trunk/; revision=767
1999-11-12 12:01:17 +00:00
Rex Jolliff
1a8f8005ae fixed clean rule
svn path=/trunk/; revision=766
1999-11-12 00:16:51 +00:00
Rex Jolliff
5bc02dd95a Changed to support linux build
svn path=/trunk/; revision=765
1999-11-11 21:22:08 +00:00
Eric Kohl
44866ccf87 Fixed include bug with rosapps module.
svn path=/trunk/; revision=764
1999-11-09 18:17:10 +00:00
Eric Kohl
d431c0fa6d Fixed bug with gcc 2.95.2
svn path=/trunk/; revision=763
1999-11-09 18:15:16 +00:00
Eric Kohl
58b907b668 Added some RtlLargeInteger functions.
svn path=/trunk/; revision=762
1999-11-09 18:09:57 +00:00
Eric Kohl
761e03c5a1 Fixed memory functions.
svn path=/trunk/; revision=761
1999-11-09 18:07:50 +00:00
Eric Kohl
ea4204ce87 Changed to new HAL functions.
svn path=/trunk/; revision=760
1999-11-09 18:07:03 +00:00
Eric Kohl
eae6fb6efc Implemented ExInterlocked functions.
svn path=/trunk/; revision=759
1999-11-09 18:00:14 +00:00
Eric Kohl
157d5b3fa2 Added APC support to NtDeviceIoControlFile().
svn path=/trunk/; revision=758
1999-11-07 14:08:11 +00:00
Emanuele Aliberti
63665d54ed advapi32 ACE and ACL stubs.
svn path=/trunk/; revision=757
1999-11-07 08:04:55 +00:00
Emanuele Aliberti
eb2d1c2110 advapi32 compiles OK.
Build number auto-generated (see apps/buildno, include/reactos/version.h,
include/reactos/buildno.h).
include/internal/version.h moved in include/reactos.
Added default search paths for includes in .rc rule (rules.mak).

svn path=/trunk/; revision=756
1999-11-07 08:03:28 +00:00
Eric Kohl
dbbb7e41f0 Keep DEL quiet when called from a batch file.
svn path=/trunk/; revision=754
1999-11-06 00:53:33 +00:00
Eric Kohl
6758f479ef New Y command and some fixes.
svn path=/trunk/; revision=753
1999-11-05 20:41:17 +00:00
Eric Kohl
18a01fd10d Implemented 4nt compatible color command.
svn path=/trunk/; revision=752
1999-11-04 11:29:36 +00:00
Emanuele Aliberti
cfb22d72df Typo in the NTOSKRNL import library fixed
svn path=/trunk/; revision=751
1999-11-04 06:41:47 +00:00
David Welch
83c2d22a5e Improved scheduling code
Fixed win32k.sys entrypoint (otherwise it crashes on startup)
Included unix install script
Broke waiting for a thread to terminate (but will fix later)
Added spinlock debugging code
Improved InterlockXXXX functions
Added hooks for monitoring system calls and thread startup

svn path=/trunk/; revision=750
1999-11-02 08:55:45 +00:00
Emanuele Aliberti
96c9969a90 Various changes related to calling convention fixes
svn path=/trunk/; revision=749
1999-10-31 22:44:39 +00:00
Emanuele Aliberti
f0f8791763 W32kSetTextColor, W32GetDCState16 needed __stdcall; changed the subsystem field from windows to native
svn path=/trunk/; revision=748
1999-10-31 22:43:40 +00:00
Emanuele Aliberti
31c5b7839f RtlFillMemory, RtlMoveMemory, RtlZeroMemory needed __stdcall
svn path=/trunk/; revision=747
1999-10-31 22:41:49 +00:00
Emanuele Aliberti
dabbe50e39 LoadLibraryA, GetProcAddress, FreeLibrary, GetModuleHandleA, WriteFileEx needed __stdcall
svn path=/trunk/; revision=746
1999-10-31 22:41:15 +00:00
Emanuele Aliberti
68fbd54f2c KeDelayExecutionThread exported by ntoskrnl with correct calling convention (__stdcall)
svn path=/trunk/; revision=745
1999-10-30 21:24:37 +00:00
Rex Jolliff
766e6a262e added more KMGDI functions
svn path=/trunk/; revision=744
1999-10-29 01:58:20 +00:00
Rex Jolliff
c1795e9778 fixed problem with redefined status values
svn path=/trunk/; revision=743
1999-10-28 23:37:58 +00:00
Rex Jolliff
f886c2b9d6 added several new functions
svn path=/trunk/; revision=742
1999-10-28 23:37:14 +00:00
Rex Jolliff
7d45bbd5da needed for compile
svn path=/trunk/; revision=741
1999-10-28 23:35:34 +00:00
Rex Jolliff
8d87ab9d07 added fix for compile under linux
svn path=/trunk/; revision=740
1999-10-28 23:34:47 +00:00
Eric Kohl
95fcdd0943 Fixed batch mode bugs.
svn path=/trunk/; revision=739
1999-10-28 23:09:59 +00:00
Rex Jolliff
11d7e1e18c Fixed problems with vidport and vga loading
svn path=/trunk/; revision=738
1999-10-28 06:58:05 +00:00
Eric Kohl
863afe8930 Disabled prompting when in batch mode.
svn path=/trunk/; revision=737
1999-10-27 22:46:53 +00:00
Rex Jolliff
788e4dc053 Fix import problems in win32k.sys
svn path=/trunk/; revision=736
1999-10-27 05:49:58 +00:00
Emanuele Aliberti
125a62f79a An attempt to fix the ntdll not found bug.
svn path=/trunk/; revision=735
1999-10-26 19:47:06 +00:00
Rex Jolliff
99d62b4808 added check for bootloader config hive
svn path=/trunk/; revision=734
1999-10-26 04:52:39 +00:00
Rex Jolliff
3c1e76b027 Some small fixes to reported build problems
svn path=/trunk/; revision=733
1999-10-25 06:58:09 +00:00
Eric Kohl
2bd986927c Added some time related functions.
svn path=/trunk/; revision=732
1999-10-24 17:52:17 +00:00
Rex Jolliff
ad5e850736 Changes to get video drivers and win32k to load
svn path=/trunk/; revision=731
1999-10-24 17:07:57 +00:00
Rex Jolliff
6cc79a481e added some Eng funcs into build list
svn path=/trunk/; revision=730
1999-10-23 22:40:49 +00:00
Rex Jolliff
c0b2b118a0 Cleanup to make buildable
svn path=/trunk/; revision=729
1999-10-23 22:39:27 +00:00
Rex Jolliff
a53e883bb0 Added definitions for some eng funcs
svn path=/trunk/; revision=728
1999-10-23 22:38:26 +00:00
Rex Jolliff
bb0715f8e7 Added IOCTL codes for video drivers
svn path=/trunk/; revision=727
1999-10-23 22:37:11 +00:00
Rex Jolliff
bc08c68af9 Added vidport.sys to auto loaded drivers
svn path=/trunk/; revision=726
1999-10-23 18:58:40 +00:00
Rex Jolliff
28df2503d3 fixed handling of boot drivers
svn path=/trunk/; revision=725
1999-10-23 18:56:04 +00:00
Rex Jolliff
a5dd3430d6 fixed dist and floppy rule
svn path=/trunk/; revision=724
1999-10-23 18:33:38 +00:00
Eric Kohl
36f33622cc Fixed bugs and added DIRS command.
svn path=/trunk/; revision=723
1999-10-23 18:17:37 +00:00
Eric Kohl
583a7209da Added BOOT.BAT
svn path=/trunk/; revision=722
1999-10-23 18:15:39 +00:00
Eric Kohl
727671f12a Added Ctrl-C/Ctrl-Break handler.
svn path=/trunk/; revision=721
1999-10-22 20:35:02 +00:00
Eric Kohl
13e2e79e44 Added missing exports.
svn path=/trunk/; revision=720
1999-10-21 16:13:39 +00:00
Eric Kohl
0300e2a9d1 Fixed floppy and dist targets.
svn path=/trunk/; revision=719
1999-10-21 16:12:16 +00:00
Eric Kohl
ec16aa4c44 Improved debug output and
added hal READ_XXX and WRITE_XXX functions.

svn path=/trunk/; revision=718
1999-10-21 13:11:12 +00:00
Eric Kohl
e6f624f0e7 Improved debug output and
added hal READ_XXX and WRITE_XXX functions.

svn path=/trunk/; revision=717
1999-10-21 13:00:09 +00:00
Eric Kohl
7228dc135c Improved debug output and
added hal READ_XXX and WRITE_XXX functions.

svn path=/trunk/; revision=716
1999-10-21 11:13:38 +00:00
Eric Kohl
d2e85caa9e Improved debug output and
added hal READ_XXX and WRITE_XXX functions.

svn path=/trunk/; revision=715
1999-10-21 10:59:32 +00:00
Rex Jolliff
bff71dc524 Changed name to conform with kernel naming convention
svn path=/trunk/; revision=714
1999-10-20 23:09:26 +00:00
Rex Jolliff
a0570e7cbe added ignore files
svn path=/trunk/; revision=713
1999-10-20 23:08:58 +00:00
Boudewijn Dekker
ff9ce85a65 implemented some ldr functions
svn path=/trunk/; revision=712
1999-10-18 21:55:30 +00:00
Boudewijn Dekker
f3d9743503 implemented LdrUnloadDll
svn path=/trunk/; revision=711
1999-10-18 21:37:16 +00:00
Boudewijn Dekker
a66a6e5dba implemented LoadLibray and FreeLibrary
svn path=/trunk/; revision=710
1999-10-17 18:18:44 +00:00
Boudewijn Dekker
8690858184 implemented a reference count on LdrLoadDll
svn path=/trunk/; revision=709
1999-10-17 18:16:45 +00:00
Eric Kohl
9e4fec3838 Updated info about debugging.
svn path=/trunk/; revision=708
1999-10-16 21:10:23 +00:00
Eric Kohl
8001413b88 More exported functions.
svn path=/trunk/; revision=707
1999-10-16 21:09:12 +00:00
Eric Kohl
bae73138e8 Moved serial and bochs debug output.
svn path=/trunk/; revision=706
1999-10-16 21:08:39 +00:00
Eric Kohl
dad291cf6f Some fixes.
svn path=/trunk/; revision=705
1999-10-16 12:41:42 +00:00
Eric Kohl
22b26024cd More exported functions.
svn path=/trunk/; revision=704
1999-10-16 12:40:57 +00:00
Eric Kohl
3e6e6c12ee Added missing ntdll include.
svn path=/trunk/; revision=703
1999-10-16 12:39:44 +00:00
Eric Kohl
93a0fa88d2 Fixed NtCreatePort() prototype.
svn path=/trunk/; revision=702
1999-10-16 12:38:53 +00:00
Eric Kohl
9b2fc03fc7 Fixed $(NASM_CMD) bug.
svn path=/trunk/; revision=701
1999-10-16 12:36:47 +00:00
Eric Kohl
7975fc7fe7 Minor improvements.
svn path=/trunk/; revision=700
1999-10-16 12:35:10 +00:00
Eric Kohl
a23adc0492 Fixed hal display and initialization code.
svn path=/trunk/; revision=699
1999-10-16 00:17:40 +00:00
Eric Kohl
36e229b42f Fixed a typo.
svn path=/trunk/; revision=698
1999-10-15 15:26:34 +00:00
Eric Kohl
29812be566 Fixed hal display and initialization code.
svn path=/trunk/; revision=697
1999-10-15 15:21:39 +00:00
Eric Kohl
4551dfba1e Replaced calls to _printk() by calls to DbgPrint().
svn path=/trunk/; revision=696
1999-10-14 16:54:17 +00:00
Eric Kohl
babfe77ea9 PEB will be created in NtCreateProcess.
svn path=/trunk/; revision=695
1999-10-13 22:35:55 +00:00
Emanuele Aliberti
81a9f1c4b0 Little changes in the psxdll library.
svn path=/trunk/; revision=694
1999-10-12 21:19:40 +00:00
Boudewijn Dekker
74031c2379 implemented LoadLibrary and some Rtl stubs
svn path=/trunk/; revision=693
1999-10-12 19:45:01 +00:00
Eric Kohl
348ccdd39f Added REBOOT command.
svn path=/trunk/; revision=692
1999-10-11 20:51:07 +00:00
Eric Kohl
1d4d689bf2 Added new display and reboot code.
svn path=/trunk/; revision=691
1999-10-11 20:50:33 +00:00
Eric Kohl
8578ba8ac6 Minor fix to teb allocation.
svn path=/trunk/; revision=690
1999-10-11 20:43:10 +00:00
Eric Kohl
a77eef4a53 Fixed header inclusion order.
svn path=/trunk/; revision=689
1999-10-10 19:53:46 +00:00
Eric Kohl
648301897c Fixed header inclusion order.
svn path=/trunk/; revision=687
1999-10-07 23:46:27 +00:00
Emanuele Aliberti
2076e94020 I removed a pair of stubs for the OpenFileMapping functions
svn path=/trunk/; revision=686
1999-10-03 23:19:15 +00:00
Eric Kohl
c2829c9869 Minor fixes.
svn path=/trunk/; revision=685
1999-10-03 22:20:33 +00:00
Eric Kohl
49f51f37f3 Added activate command.
svn path=/trunk/; revision=684
1999-10-03 22:16:14 +00:00
Eric Kohl
1e637da493 Added echos, echoerr and echoserr commands.
svn path=/trunk/; revision=683
1999-10-03 22:15:33 +00:00
Eric Kohl
51cbed48ab No longer needed.
svn path=/trunk/; revision=682
1999-10-03 22:14:40 +00:00
Eric Kohl
e8abc51177 Minor fixes.
svn path=/trunk/; revision=681
1999-10-03 22:12:57 +00:00
Eric Kohl
29f5cf1341 Added floppy and dist targets.
svn path=/trunk/; revision=680
1999-10-03 22:12:24 +00:00
Eric Kohl
c33edc6cb7 Made notevil screen size aware.
svn path=/trunk/; revision=679
1999-10-03 22:10:15 +00:00
Boudewijn Dekker
1d786dd865 Miscellaneous implementation of kernel32 stubs.
Changed the implementation of ReadFileEx.

svn path=/trunk/; revision=678
1999-10-02 20:20:44 +00:00
Eric Kohl
3174c5069a Fixed typo.
svn path=/trunk/; revision=676
1999-09-29 23:19:32 +00:00
Eric Kohl
d63c23131c Fixed multiple STATUS_xxxx inclusions.
svn path=/trunk/; revision=675
1999-09-29 23:15:14 +00:00
Eric Kohl
56e30e8907 Minor updates and fixes.
svn path=/trunk/; revision=674
1999-09-27 22:15:44 +00:00
Eric Kohl
1241612f69 Added MORE command.
svn path=/trunk/; revision=673
1999-09-27 22:13:59 +00:00
Boudewijn Dekker
ddc9e680c9 Added support for critical sections.
svn path=/trunk/; revision=672
1999-09-27 20:58:46 +00:00
Boudewijn Dekker
15e29ff254 Small addition to token.c
svn path=/trunk/; revision=671
1999-09-25 06:25:51 +00:00
Eric Kohl
52498a577a Minor fixes.
svn path=/trunk/; revision=670
1999-09-24 22:05:25 +00:00
Eric Kohl
ee3dc0f0c1 Added window command.
svn path=/trunk/; revision=669
1999-09-24 22:03:11 +00:00
Emanuele Aliberti
58eedf7620 RtlReAllocHeap should be RtlReAllocateHeap
svn path=/trunk/; revision=668
1999-09-12 22:09:34 +00:00
Emanuele Aliberti
e6359887bb RtlReAllocHeap should be RtlReAllocateHeap.
svn path=/trunk/; revision=667
1999-09-12 21:59:40 +00:00
Emanuele Aliberti
cda1c38bae Some missing __stdcall added.
Some missing unicode functions stubs added.
RtlReAllocHeap should be RtlReAllocateHeap.

svn path=/trunk/; revision=666
1999-09-12 21:58:32 +00:00
Emanuele Aliberti
d82310b692 Skeleton for psxdll.dll
svn path=/trunk/; revision=665
1999-09-12 21:54:16 +00:00
Eric Kohl
45dd256ee3 Fixed typo.
svn path=/trunk/; revision=664
1999-09-12 20:58:29 +00:00
Eric Kohl
e0058203bb Fixed WaitForSingleObject() and WaitForMultipleObjects().
svn path=/trunk/; revision=663
1999-09-12 20:54:42 +00:00
Eric Kohl
3255097117 Stack is freed on failure.
svn path=/trunk/; revision=662
1999-09-12 20:49:06 +00:00
Eric Kohl
40f81ce970 Fixed some minor issues (NULL --> FALSE).
svn path=/trunk/; revision=661
1999-09-12 20:44:22 +00:00
Eric Kohl
bbcc7f9179 Fixed little bug ('cd d:' did't work, but 'cd D:').
svn path=/trunk/; revision=660
1999-09-12 20:41:56 +00:00
Eric Kohl
0c91339480 Added some more commands. Thanks to Dr. Faustus.
Some more cleanup.

svn path=/trunk/; revision=659
1999-09-12 18:23:31 +00:00
Eric Kohl
5249698af3 External TEE command.
svn path=/trunk/; revision=658
1999-09-12 18:20:47 +00:00
Eric Kohl
037d59aef7 Added master makefile with clean/dist/floppy targets.
svn path=/trunk/; revision=657
1999-09-12 18:18:09 +00:00
Eric Kohl
70f14aa73f Fixed typedef.
svn path=/trunk/; revision=656
1999-09-11 00:07:20 +00:00
Rex Jolliff
b779c01fb6 Changes to make win32k.sys compile
svn path=/trunk/; revision=655
1999-09-10 21:17:07 +00:00
Rex Jolliff
fe56845ebe Fixed function prototypes
svn path=/trunk/; revision=654
1999-09-10 21:16:36 +00:00
Rex Jolliff
70140f5ea7 Changed symbolic name for IDE devices
svn path=/trunk/; revision=653
1999-09-10 19:16:58 +00:00
Eric Kohl
fe27d316df Added creation of full user stack (including guard page).
svn path=/trunk/; revision=652
1999-09-10 15:50:30 +00:00
Eric Kohl
1fc6701c79 Implemented Nt/KeWaitForMultipleObjects (still buggy).
svn path=/trunk/; revision=651
1999-09-08 23:51:36 +00:00
Rex Jolliff
09d88da5e9 some minor coding on win32k
svn path=/trunk/; revision=650
1999-09-08 04:50:50 +00:00
Emanuele Aliberti
a06d619eca some symbols were not declared __stdcall
svn path=/trunk/; revision=649
1999-09-08 04:40:56 +00:00
Eric Kohl
242138f832 Fixed little bug.
svn path=/trunk/; revision=648
1999-09-07 20:41:47 +00:00
Emanuele Aliberti
af1ff6be3b More for the POSIX+ subsystem
svn path=/trunk/; revision=647
1999-09-07 17:12:39 +00:00
Eric Kohl
8c0b595a5e Thread improvements.
svn path=/trunk/; revision=646
1999-09-06 21:32:57 +00:00
Emanuele Aliberti
4280f4f60d stubs for HAL kernel debugger functions
svn path=/trunk/; revision=645
1999-09-05 20:54:57 +00:00
Eric Kohl
d5014c3bb3 Removed unused stuff.
svn path=/trunk/; revision=644
1999-09-05 12:40:20 +00:00
Eric Kohl
d81a116aba Run smss.exe instead of shell.exe.
svn path=/trunk/; revision=643
1999-09-05 12:39:45 +00:00
Eric Kohl
155d1ff5ae Removed smss from its old place
svn path=/trunk/; revision=642
1999-09-05 12:35:34 +00:00
Eric Kohl
fbccd722a1 Fixed little bug.
svn path=/trunk/; revision=641
1999-09-05 12:31:41 +00:00
Eric Kohl
648c68ff1a Moved smss to a better place.
svn path=/trunk/; revision=640
1999-09-05 12:29:50 +00:00
Eric Kohl
c92eafe2f1 Updated rules for subsys directory.
svn path=/trunk/; revision=639
1999-09-05 12:27:22 +00:00
Eric Kohl
b0e64d6cf7 Updated.
svn path=/trunk/; revision=638
1999-09-05 10:22:05 +00:00
Emanuele Aliberti
fa74a12186 added resource script with version information
svn path=/trunk/; revision=637
1999-09-04 20:50:34 +00:00
Eric Kohl
40bd704148 Implemented RtlCreateUserProcess() and RtlCreateUserThread().
svn path=/trunk/; revision=636
1999-09-04 18:38:29 +00:00
David Welch
4027ccab60 Correct keyboard bug with multiple readers
svn path=/trunk/; revision=634
1999-08-30 15:20:14 +00:00
Eric Kohl
ff511b446a Added MSGBOX and TIMER commands.
svn path=/trunk/; revision=633
1999-08-29 22:31:43 +00:00
David Welch
e31d342bc7 *** empty log message ***
svn path=/trunk/; revision=632
1999-08-29 13:45:08 +00:00
Emanuele Aliberti
7cf48757dc A top level header file for kernel and system stuff. At present simply includes ddk/ntddk.h.
svn path=/trunk/; revision=631
1999-08-29 07:02:52 +00:00
Emanuele Aliberti
07a2fbf7f7 Global ReactOS configuration file. Here we will put symbols for processor-, architecture-, and debugging-dependent conditional compilation.
svn path=/trunk/; revision=630
1999-08-29 07:01:32 +00:00
Emanuele Aliberti
fa3a5c2c71 some __stdcall fixes in ntoskrnl and ntdll
svn path=/trunk/; revision=629
1999-08-29 06:59:11 +00:00
Eric Kohl
5aaaad5c93 Added missing definition.
svn path=/trunk/; revision=628
1999-08-28 23:30:50 +00:00
Eric Kohl
7bcdd2ea10 Added CHOICE command and fixed a cursor bug.
svn path=/trunk/; revision=627
1999-08-22 21:46:50 +00:00
Eric Kohl
a35e54e5f8 Added CHOICE command and fixed a cursor bug.
svn path=/trunk/; revision=626
1999-08-21 22:06:03 +00:00
Eric Kohl
0b84d00506 Added CHOICE command and fixed a cursor bug.
svn path=/trunk/; revision=625
1999-08-21 21:54:30 +00:00
Boudewijn Dekker
c4385e9139 Small fixes
svn path=/trunk/; revision=624
1999-08-21 17:51:35 +00:00
Emanuele Aliberti
2c4de44226 Power management (Po) stubs.
svn path=/trunk/; revision=623
1999-08-20 16:31:17 +00:00
Emanuele Aliberti
1f636015ba NLS stubs and exported data.
svn path=/trunk/; revision=622
1999-08-20 16:30:16 +00:00
Emanuele Aliberti
e9703bfa98 FS stubs.
svn path=/trunk/; revision=621
1999-08-20 16:29:22 +00:00
Emanuele Aliberti
676e6609ce Kernel debugger stubs.
svn path=/trunk/; revision=620
1999-08-20 16:28:10 +00:00
Boudewijn Dekker
dbb9546d9d Small additions, not yet finished
svn path=/trunk/; revision=619
1999-08-20 10:12:53 +00:00
Boudewijn Dekker
007128eb66 Small additions, not yet finished
svn path=/trunk/; revision=618
1999-08-20 09:37:25 +00:00
Emanuele Aliberti
90129544e0 Fixed a bug in the parser.
svn path=/trunk/; revision=617
1999-08-20 05:53:04 +00:00
Eric Kohl
f72b0c8878 Fixed STDCALL bugs.
svn path=/trunk/; revision=616
1999-08-17 12:02:27 +00:00
Eric Kohl
36df88668d Fixed STDCALL bug.
svn path=/trunk/; revision=615
1999-08-15 00:36:59 +00:00
Rex Jolliff
9957d94c20 Various small changes for registry work
svn path=/trunk/; revision=614
1999-08-14 18:59:28 +00:00
Eric Kohl
2a466eda80 Partial Implementation of NtQuerySystemInformation and NtSetSystemInformation
svn path=/trunk/; revision=613
1999-08-11 23:29:26 +00:00
Emanuele Aliberti
6cb529270a Stubs for version.dll
svn path=/trunk/; revision=612
1999-08-11 19:56:48 +00:00
Emanuele Aliberti
cb7f83ac74 Some files for version.dll
svn path=/trunk/; revision=611
1999-08-10 20:21:32 +00:00
Rex Jolliff
9907c63794 Added STDCALL to Video functions
svn path=/trunk/; revision=610
1999-08-07 20:27:14 +00:00
Rex Jolliff
fc200ca733 Added export definition file and export library rule
svn path=/trunk/; revision=609
1999-08-06 17:27:45 +00:00
Jason Filby
bebdd316d5 *** empty log message ***
svn path=/trunk/; revision=608
1999-08-01 11:21:05 +00:00
Eric Kohl
e7cf9302fa Added more crt functions and fixed some.
svn path=/trunk/; revision=607
1999-07-29 21:25:04 +00:00
Emanuele Aliberti
69dc48c09f some work on fixing advapi32
svn path=/trunk/; revision=606
1999-07-26 20:46:40 +00:00
Eric Kohl
e3c471cf82 Added simple START command.
svn path=/trunk/; revision=605
1999-07-24 17:18:05 +00:00
Eric Kohl
0063a30376 Fixed a typo.
svn path=/trunk/; revision=604
1999-07-24 17:16:32 +00:00
Rex Jolliff
b9a38fb83d moved path functions into seperate file
svn path=/trunk/; revision=603
1999-07-23 20:21:06 +00:00
Rex Jolliff
1ff56406ca changes to support win32k
svn path=/trunk/; revision=602
1999-07-23 19:58:58 +00:00
Rex Jolliff
c69899317f finished win32k skeleton
svn path=/trunk/; revision=601
1999-07-23 19:57:18 +00:00
Rex Jolliff
b3995a1493 added a few pointer types
svn path=/trunk/; revision=600
1999-07-23 19:55:07 +00:00
Eric Kohl
3975f17012 Changes to compile advapi32.
svn path=/trunk/; revision=599
1999-07-22 21:36:37 +00:00
Rex Jolliff
3f261fab5d More changes to the win32k server
svn path=/trunk/; revision=598
1999-07-22 16:21:53 +00:00
Emanuele Aliberti
b6ae20fcd0 first bits for the POSIX+ client DLL
svn path=/trunk/; revision=597
1999-07-18 20:54:04 +00:00
Emanuele Aliberti
d2eea59593 original ntifs.h restored
svn path=/trunk/; revision=596
1999-07-18 07:53:27 +00:00
Emanuele Aliberti
6ac1592420 fixes
svn path=/trunk/; revision=595
1999-07-17 23:10:31 +00:00
Rex Jolliff
04f2911330 added dist rule
svn path=/trunk/; revision=593
1999-07-16 23:37:07 +00:00
Rex Jolliff
743df9ab84 fixed various build errors
svn path=/trunk/; revision=592
1999-07-13 01:08:47 +00:00
Rex Jolliff
e2a59404d8 added an ignore file
svn path=/trunk/; revision=591
1999-07-12 23:34:42 +00:00
Rex Jolliff
367fbb2a1f Added a service table registration function
svn path=/trunk/; revision=590
1999-07-12 23:32:30 +00:00
Rex Jolliff
932d4770ec more work on KMGDI subsystem
svn path=/trunk/; revision=589
1999-07-12 23:26:57 +00:00
Emanuele Aliberti
0584d3755f minor changes in the simple DEF-->EDF converter
svn path=/trunk/; revision=588
1999-07-12 21:02:06 +00:00
Emanuele Aliberti
221e27f1fa kernel32 missing stubs
svn path=/trunk/; revision=587
1999-07-12 21:01:06 +00:00
Boudewijn Dekker
581f2c7495 no message
svn path=/trunk/; revision=586
1999-07-11 14:19:14 +00:00
Rex Jolliff
6ef820374f put ifdef around defines
svn path=/trunk/; revision=585
1999-07-07 01:41:41 +00:00
Rex Jolliff
ce373b0c40 added pointer types for RECTL and POINTL
svn path=/trunk/; revision=584
1999-07-07 01:41:00 +00:00
Boudewijn Dekker
01034d9c59 no message
svn path=/trunk/; revision=583
1999-07-05 20:51:47 +00:00
Emanuele Aliberti
fad2f584e9 Bo's ntifs.h + ReactOS extensions (untested).
svn path=/trunk/; revision=582
1999-07-04 22:22:05 +00:00
Emanuele Aliberti
86b93a6ac8 A very simple application to create a named LPC port; application to connect to an existing LPC port updated.
svn path=/trunk/; revision=581
1999-07-04 22:04:31 +00:00
Emanuele Aliberti
6fcd126954 NtCreatePort and LPC_PORT_BASIC_INFORMATION partial definitions
svn path=/trunk/; revision=580
1999-07-04 22:00:31 +00:00
Boudewijn Dekker
2a01ea22a9 Initial commit. Ported some code from wine.
Not much working yet.

svn path=/trunk/; revision=579
1999-07-04 16:01:27 +00:00
Emanuele Aliberti
84d1d53870 Very simple tool to generate aliased *.def files from standard *.def files. May be used to have clean exports tables in DLLs and make ld link stdcall mangled symbols
svn path=/trunk/; revision=578
1999-07-04 11:14:15 +00:00
Rex Jolliff
5050cf437e Added brush scaffolding
svn path=/trunk/; revision=577
1999-07-02 02:33:59 +00:00
Rex Jolliff
9162781f47 more bitmap scaffolding
svn path=/trunk/; revision=576
1999-07-02 02:06:52 +00:00
Rex Jolliff
b63d64cc90 Bitmap scaffolding
svn path=/trunk/; revision=575
1999-07-02 00:54:01 +00:00
Rex Jolliff
858aaeac37 Moved service.h
svn path=/trunk/; revision=574
1999-06-30 22:28:34 +00:00
Eric Kohl
bd4786ea76 Fixed DeleteFileW().
svn path=/trunk/; revision=573
1999-06-27 23:08:31 +00:00
Eric Kohl
bcb831f3c9 Fixed RemoveDirectoryW().
svn path=/trunk/; revision=572
1999-06-27 23:08:07 +00:00
Eric Kohl
1bfb0f94d9 Added file and directory delete functionality (dummy).
svn path=/trunk/; revision=571
1999-06-27 23:06:50 +00:00
Eric Kohl
10f222cd92 Fixed typos.
svn path=/trunk/; revision=570
1999-06-27 13:02:20 +00:00
Eric Kohl
7f7c26ae4d Fixed irq level assertations (assert -> assert_irql).
svn path=/trunk/; revision=569
1999-06-27 13:01:23 +00:00
Emanuele Aliberti
56b4626f56 *** empty log message ***
svn path=/trunk/; revision=568
1999-06-27 07:15:16 +00:00
Emanuele Aliberti
b3f7f2d945 Clean up and more info about the LPC port handle.
svn path=/trunk/; revision=567
1999-06-27 07:11:25 +00:00
Eric Kohl
4d7dcc6886 Fixed application file name (absolute path) in command line.
svn path=/trunk/; revision=566
1999-06-26 18:24:38 +00:00
Eric Kohl
8ae06e50f1 Fixed typo in GetCommandLineA().
svn path=/trunk/; revision=565
1999-06-26 14:28:42 +00:00
Rex Jolliff
19a76ae9af consolidated makefiles and added floppy and dist rules.
svn path=/trunk/; revision=564
1999-06-25 04:36:03 +00:00
Emanuele Aliberti
15714a3ea7 Attempt to connect to a real LPC port
svn path=/trunk/; revision=563
1999-06-24 22:54:27 +00:00
Emanuele Aliberti
9ccf887c5a KeGetPreviousMode (useless)
svn path=/trunk/; revision=562
1999-06-24 22:40:06 +00:00
Boudewijn Dekker
62cdaf7f99 no message
svn path=/trunk/; revision=561
1999-06-24 21:59:41 +00:00
Emanuele Aliberti
fdb2041671 NtConnectPort partial interface
svn path=/trunk/; revision=560
1999-06-24 19:35:31 +00:00
Emanuele Aliberti
11cbd32ea6 Some more ideas for winlogon (it does not compile yet).
svn path=/trunk/; revision=559
1999-06-18 22:40:47 +00:00
Emanuele Aliberti
8d5b94094a NTOSKRNL.ZwXXX functions now call NTOSKRNL.NtXXX via int 0x2e.
svn path=/trunk/; revision=558
1999-06-18 22:11:21 +00:00
Emanuele Aliberti
3d0fe049f6 fixed my bug in ZwXXX stubs generation
svn path=/trunk/; revision=557
1999-06-17 18:09:27 +00:00
Emanuele Aliberti
1e589af8e1 genntdll enhanced to generate ntoskrnl Zw stubs (to be tested)
svn path=/trunk/; revision=556
1999-06-17 00:10:30 +00:00
Emanuele Aliberti
6409ce374c some ideas about LPC
svn path=/trunk/; revision=555
1999-06-15 23:00:39 +00:00
Rex Jolliff
11d31698d5 some additions to the GDI engine
svn path=/trunk/; revision=554
1999-06-15 02:27:24 +00:00
Rex Jolliff
e0c5a61982 untested implementation of the registry
svn path=/trunk/; revision=553
1999-06-14 07:37:55 +00:00
David Welch
d913de5c14 Fixed problem with dpc execution
svn path=/trunk/; revision=552
1999-06-10 20:59:19 +00:00
David Welch
5b3ccbfc02 Implemented ZwOpenProcess corrected
Implemented killing other threads (possible memory leaks)
Made a start on a proper implementation of APCs (based on NT Insider article)

svn path=/trunk/; revision=551
1999-06-09 15:50:16 +00:00
David Welch
f2a6a55325 Not needed anymore
svn path=/trunk/; revision=550
1999-06-09 15:48:56 +00:00
David Welch
4aa2c7952d Not been needed for ages
svn path=/trunk/; revision=549
1999-06-09 15:47:10 +00:00
David Welch
b54e7a6efa No longer need with rex's changes
svn path=/trunk/; revision=548
1999-06-09 15:46:06 +00:00
Emanuele Aliberti
8ae5eb02c7 Initial work for W32 server
svn path=/trunk/; revision=547
1999-06-08 22:50:59 +00:00
Emanuele Aliberti
34a9792f1e Updated to 0.0.14
svn path=/trunk/; revision=546
1999-06-08 22:47:39 +00:00
Emanuele Aliberti
44a536a421 Initial structure (won't compile)
svn path=/trunk/; revision=545
1999-06-08 22:45:53 +00:00
Emanuele Aliberti
c5e296fcf0 Updated to 0.0.14
RES_STR_FILE_VERSION eq RES_STR_PRODUCT_VERSION

svn path=/trunk/; revision=544
1999-06-08 22:37:30 +00:00
David Welch
c8cd1fe03c Added support for ZwOpenProcess
svn path=/trunk/; revision=543
1999-06-08 14:02:01 +00:00
Rex Jolliff
0a1f866c8f Added a few more functions for registry
svn path=/trunk/; revision=542
1999-06-08 07:11:29 +00:00
Rex Jolliff
a5e573f1b3 more hacking on the registry
svn path=/trunk/; revision=541
1999-06-08 04:34:48 +00:00
Rex Jolliff
06938a9103 more registry changes
svn path=/trunk/; revision=540
1999-06-07 15:14:23 +00:00
Emanuele Aliberti
b5118cc48f minor changes
svn path=/trunk/; revision=539
1999-06-06 20:35:26 +00:00
David Welch
31268dc661 Stub
svn path=/trunk/; revision=538
1999-06-06 16:40:10 +00:00
Emanuele Aliberti
9dc68f3b65 Context help functions stubs
svn path=/trunk/; revision=537
1999-06-06 15:34:09 +00:00
Emanuele Aliberti
1af4e48747 NtOpenProcess exported
svn path=/trunk/; revision=536
1999-06-06 15:31:58 +00:00
Emanuele Aliberti
154db698c9 start (to detach a new process) and kill commands added
svn path=/trunk/; revision=535
1999-06-06 15:29:46 +00:00
Boudewijn Dekker
f298282475 Added some user32 functions.
svn path=/trunk/; revision=534
1999-06-05 19:02:54 +00:00
Rex Jolliff
9083091f7b Added PE loader to LOADROS. Updated symbol search in Loader
svn path=/trunk/; revision=533
1999-06-04 23:59:35 +00:00
Rex Jolliff
c4ba9a330d some changes to registry code
svn path=/trunk/; revision=532
1999-06-03 15:07:49 +00:00
Boudewijn Dekker
46a0e6e16e Added stub for create token and delete object audit alarm.
svn path=/trunk/; revision=531
1999-05-31 18:53:33 +00:00
Boudewijn Dekker
f53177b2b2 Added prototype for create token.
svn path=/trunk/; revision=530
1999-05-31 18:50:11 +00:00
Emanuele Aliberti
380ae8a262 Session manager skeleton
svn path=/trunk/; revision=529
1999-05-30 20:40:18 +00:00
Rex Jolliff
28f788e6ed fixes for compile errors.
svn path=/trunk/; revision=528
1999-05-29 02:51:05 +00:00
David Welch
126768af64 Lots of changes to the kernel
svn path=/trunk/; revision=527
1999-05-29 00:15:17 +00:00
Rex Jolliff
0deeaa0d83 fixes for some compiler errors.
svn path=/trunk/; revision=526
1999-05-28 20:40:05 +00:00
Emanuele Aliberti
da7f2bf2b2 Little editing
svn path=/trunk/; revision=525
1999-05-28 19:49:46 +00:00
Rex Jolliff
6709ff7e24 added DDI version macro
svn path=/trunk/; revision=524
1999-05-28 18:46:23 +00:00
Rex Jolliff
d415ba8508 First hack at KMDLLs
svn path=/trunk/; revision=523
1999-05-28 18:24:27 +00:00
Rex Jolliff
9377d51b1a More code for win32k.sys
svn path=/trunk/; revision=522
1999-05-27 23:08:26 +00:00
Emanuele Aliberti
662c77c00c SetLastError() used in stubs
svn path=/trunk/; revision=521
1999-05-26 05:24:21 +00:00
Emanuele Aliberti
5169949e78 IMAGE_SUBSYSTEM_xxx
svn path=/trunk/; revision=520
1999-05-26 05:23:26 +00:00
Rex Jolliff
480d6d6388 More work on generic VGA driver
svn path=/trunk/; revision=519
1999-05-26 02:37:21 +00:00
Rex Jolliff
389b5fe480 More work on generic VGA driver skeleton
svn path=/trunk/; revision=518
1999-05-26 02:34:31 +00:00
Rex Jolliff
d89e0df163 changes to support VGA miniport driver
svn path=/trunk/; revision=517
1999-05-26 00:39:11 +00:00
Rex Jolliff
36a7c3cf0d Added a skeleton VGA miniport driver
svn path=/trunk/; revision=516
1999-05-26 00:35:26 +00:00
Eric Kohl
b887962d1d Fixed some compiler warnings.
svn path=/trunk/; revision=515
1999-05-25 19:16:29 +00:00
Rex Jolliff
5f710be5ef Added code to implement videoport driver
svn path=/trunk/; revision=514
1999-05-25 03:19:47 +00:00
Emanuele Aliberti
47ee1b5a90 gdi32.dll added
svn path=/trunk/; revision=513
1999-05-24 20:09:06 +00:00
Emanuele Aliberti
c9b6355479 stubs for most gdi32 functions
svn path=/trunk/; revision=512
1999-05-24 20:04:44 +00:00
Boudewijn Dekker
5c91ed98f2 no message
svn path=/trunk/; revision=511
1999-05-24 15:22:43 +00:00
Boudewijn Dekker
1cdff7f03d no message
svn path=/trunk/; revision=510
1999-05-24 15:14:14 +00:00
Boudewijn Dekker
d21b624ded no message
svn path=/trunk/; revision=509
1999-05-24 14:47:21 +00:00
Emanuele Aliberti
4b60f335f5 GDI32.DLL auxiliary files
svn path=/trunk/; revision=508
1999-05-23 07:41:33 +00:00
Rex Jolliff
c805537640 added stubs and build spec for win32k.sys
svn path=/trunk/; revision=507
1999-05-22 23:55:56 +00:00
Boudewijn Dekker
2b96374f2a no message
svn path=/trunk/; revision=506
1999-05-22 07:28:28 +00:00
Rex Jolliff
2854aac246 more work on the videoport driver.
svn path=/trunk/; revision=505
1999-05-22 07:25:30 +00:00
Rex Jolliff
ae32243b6a patches to get v14 to compile.
svn path=/trunk/; revision=503
1999-05-21 18:47:44 +00:00
Rex Jolliff
ed003aa199 bumped to version 14
svn path=/trunk/; revision=502
1999-05-21 18:21:10 +00:00
Rex Jolliff
ebf6630e2b Added skeleton video port driver
svn path=/trunk/; revision=501
1999-05-21 18:20:45 +00:00
Rex Jolliff
2a87426631 more additions to DDI interface
svn path=/trunk/; revision=500
1999-05-21 07:50:04 +00:00
Emanuele Aliberti
e30ffd7e27 fiber functions stubs
svn path=/trunk/; revision=499
1999-05-21 05:42:08 +00:00
Emanuele Aliberti
659762910c *** empty log message ***
svn path=/trunk/; revision=498
1999-05-21 05:25:12 +00:00
Rex Jolliff
cfe42a37eb More DDI stuff
svn path=/trunk/; revision=497
1999-05-21 02:34:38 +00:00
Eric Kohl
42dfa65049 Fixed bugs in batch file execution.
svn path=/trunk/; revision=496
1999-05-21 00:52:38 +00:00
Rex Jolliff
d22c45fab2 Added to DDI interface definition
svn path=/trunk/; revision=495
1999-05-21 00:02:39 +00:00
Emanuele Aliberti
f234e93d1e win32k.sys exports
svn path=/trunk/; revision=494
1999-05-20 17:26:02 +00:00
Rex Jolliff
905776a29b added GDI kernel mode graphics engine skeleton
svn path=/trunk/; revision=493
1999-05-20 01:31:05 +00:00
Rex Jolliff
56b16dbf01 added GDI-DDI interface header
svn path=/trunk/; revision=492
1999-05-20 01:30:01 +00:00
Eric Kohl
9ade7d9aaf Fixed typo.
svn path=/trunk/; revision=491
1999-05-19 18:02:11 +00:00
Eric Kohl
3bc13b6875 cleanup
svn path=/trunk/; revision=490
1999-05-19 18:00:17 +00:00
Eric Kohl
cf7d159791 Fixed CreateDirectoryExW.
svn path=/trunk/; revision=489
1999-05-19 17:57:57 +00:00
Eric Kohl
0495cfd8d4 several fixes
svn path=/trunk/; revision=488
1999-05-19 17:57:02 +00:00
Eric Kohl
77360caec8 warning fix
svn path=/trunk/; revision=487
1999-05-19 17:56:25 +00:00
Eric Kohl
64f28f26bd access fixes
svn path=/trunk/; revision=486
1999-05-19 17:55:44 +00:00
Emanuele Aliberti
e3876459ef rtlsec.{c,h} are in lib/ntdll/rtl/sec.{c,h}
svn path=/trunk/; revision=485
1999-05-19 16:52:08 +00:00
Emanuele Aliberti
72df55f2e2 more stubs
svn path=/trunk/; revision=484
1999-05-19 16:43:30 +00:00
Boudewijn Dekker
55b8b93555 Commit to implement all symbols initially
svn path=/trunk/; revision=483
1999-05-18 18:16:30 +00:00
Boudewijn Dekker
b06daa620f no message
svn path=/trunk/; revision=482
1999-05-18 18:04:30 +00:00
Emanuele Aliberti
6275e70165 Some more constants for common values to be used in .rc files.
svn path=/trunk/; revision=480
1999-05-17 05:23:50 +00:00
Eric Kohl
0344d1a114 Fixed SystemTimeToFileTime().
svn path=/trunk/; revision=479
1999-05-16 18:33:24 +00:00
Eric Kohl
7aaccee0e9 Added date/time output and fixed warnings.
svn path=/trunk/; revision=478
1999-05-16 18:31:00 +00:00
Emanuele Aliberti
b5d3b3bf2d $(RC)
svn path=/trunk/; revision=477
1999-05-16 17:35:42 +00:00
Emanuele Aliberti
5d7bcb07bd a rudimentary console regedit
svn path=/trunk/; revision=476
1999-05-16 17:23:22 +00:00
Emanuele Aliberti
9ef17eada6 A few system utilities that need fixing
svn path=/trunk/; revision=475
1999-05-16 07:27:35 +00:00
Emanuele Aliberti
b9bbf8287b ExitWindowsEx exported
svn path=/trunk/; revision=474
1999-05-16 07:21:45 +00:00
Eric Kohl
88df0b7726 Fixed typo.
svn path=/trunk/; revision=473
1999-05-15 22:44:38 +00:00
Eric Kohl
c6b0f56200 Fixed typo.
svn path=/trunk/; revision=472
1999-05-15 17:25:29 +00:00
Eric Kohl
0a70b0080a Improved time functions.
svn path=/trunk/; revision=471
1999-05-15 17:25:02 +00:00
Emanuele Aliberti
b2274fda0d USER32.ExitWindows removed (it's a macro!)
svn path=/trunk/; revision=470
1999-05-15 13:48:38 +00:00
Emanuele Aliberti
6ddcb50e38 naive USER32.ExitWindows
svn path=/trunk/; revision=469
1999-05-15 13:35:57 +00:00
Emanuele Aliberti
19c00dc04f *** empty log message ***
svn path=/trunk/; revision=468
1999-05-15 07:23:34 +00:00
Eric Kohl
acc9e8fbc3 Fixed bug in RtlTimeToTimeFields().
svn path=/trunk/; revision=467
1999-05-14 16:42:05 +00:00
Eric Kohl
3ed33156f2 Fixed another path bug.
svn path=/trunk/; revision=466
1999-05-14 13:32:13 +00:00
Eric Kohl
d2e0015ab7 Fixed overlapping buffer handling.
svn path=/trunk/; revision=465
1999-05-14 13:30:07 +00:00
Eric Kohl
4251bd8513 Fixed volume label reading.
svn path=/trunk/; revision=464
1999-05-13 18:02:24 +00:00
Eric Kohl
60f4a025ef Fixed includes.
svn path=/trunk/; revision=463
1999-05-13 14:54:14 +00:00
Eric Kohl
9bdf8fd314 Improved time functions.
svn path=/trunk/; revision=462
1999-05-13 14:52:35 +00:00
Eric Kohl
e1e75da515 Update to build cmd separately.
svn path=/trunk/; revision=461
1999-05-11 22:50:44 +00:00
Emanuele Aliberti
2711eadf8a Added DLLs user32 and fmifs.
svn path=/trunk/; revision=460
1999-05-11 21:39:54 +00:00
Emanuele Aliberti
2eb223d16f GNU GPL
svn path=/trunk/; revision=459
1999-05-11 21:33:57 +00:00
Emanuele Aliberti
7e62c34fdd File Manage{r|ment} IFS Utility
Do-nothing implementation for coming ReactOS sysutils.

svn path=/trunk/; revision=458
1999-05-11 21:19:41 +00:00
Emanuele Aliberti
603bb75198 stuctures, constants and prototypes used by fmifs.dll
svn path=/trunk/; revision=457
1999-05-11 21:16:01 +00:00
Eric Kohl
db37f2cecd Not needed any longer.
svn path=/trunk/; revision=456
1999-05-11 19:37:25 +00:00
Eric Kohl
76691783b3 Fixed LARGE_INTEGER hack.
svn path=/trunk/; revision=455
1999-05-11 19:32:15 +00:00
Eric Kohl
fc506149ce Not needed any longer.
svn path=/trunk/; revision=454
1999-05-11 16:09:02 +00:00
Eric Kohl
5edb029d51 Use crtdll instead of ntdll.
svn path=/trunk/; revision=453
1999-05-11 16:08:21 +00:00
Eric Kohl
acd3d263c1 Fixed clean target.
svn path=/trunk/; revision=452
1999-05-11 15:32:27 +00:00
Eric Kohl
a2e9c0c7a4 Fixed compiler warnings.
svn path=/trunk/; revision=451
1999-05-11 15:31:01 +00:00
Eric Kohl
d0fbe6c728 Export more functions.
svn path=/trunk/; revision=450
1999-05-11 15:29:04 +00:00
Eric Kohl
6bac8b1c92 Minor fixes.
svn path=/trunk/; revision=449
1999-05-11 15:28:34 +00:00
Eric Kohl
3f9e43cbf2 Added TerminateProcess().
svn path=/trunk/; revision=448
1999-05-11 15:28:11 +00:00
Eric Kohl
078d8a8502 Added stdlib directory to the clean target.
svn path=/trunk/; revision=447
1999-05-11 15:27:13 +00:00
Eric Kohl
d927063dd4 Not needed any longer.
svn path=/trunk/; revision=446
1999-05-11 12:40:59 +00:00
Eric Kohl
ffbc9d9c03 Update to build cmd separately.
svn path=/trunk/; revision=445
1999-05-11 12:40:11 +00:00
Eric Kohl
6a7adfd71f Update for global rules.mak file.
svn path=/trunk/; revision=444
1999-05-11 12:38:45 +00:00
Eric Kohl
e9ecf45119 Added process ids.
svn path=/trunk/; revision=443
1999-05-10 12:37:45 +00:00
Rex Jolliff
169894bcc5 a little work on the registry code
svn path=/trunk/; revision=442
1999-05-10 00:06:49 +00:00
Boudewijn Dekker
b9354028e0 fixed bug in scanf
svn path=/trunk/; revision=441
1999-05-09 14:01:59 +00:00
Boudewijn Dekker
0107a0743b no message
svn path=/trunk/; revision=440
1999-05-09 14:00:05 +00:00
Eric Kohl
901449bfe8 Fixed 'implicid declaration' warning.
svn path=/trunk/; revision=439
1999-05-08 18:10:33 +00:00
Eric Kohl
09b99f1097 Fixed KEY_EVENT_RECORD.
svn path=/trunk/; revision=438
1999-05-08 18:09:37 +00:00
Boudewijn Dekker
7f7d1d57b0 changed #include <windows32/defines.h> to
#include "../include/defines.h"

svn path=/trunk/; revision=437
1999-05-08 13:37:14 +00:00
Boudewijn Dekker
25cd7e1e5a changed #include <windows32/defines.h> to
#include "../../include/defines.h"

svn path=/trunk/; revision=436
1999-05-08 13:35:12 +00:00
Emanuele Aliberti
3cee782a23 user32.dll minimal implementation
svn path=/trunk/; revision=435
1999-05-08 07:09:31 +00:00
Rex Jolliff
ae4cb21e55 added a top level readme file.
svn path=/trunk/; revision=434
1999-05-07 20:18:25 +00:00
Eric Kohl
27cfdf8b3b Export some more functions.
svn path=/trunk/; revision=433
1999-05-07 20:10:45 +00:00
Eric Kohl
0064915ad7 Some more fixes.
svn path=/trunk/; revision=432
1999-05-07 20:09:54 +00:00
Eric Kohl
14e5e06271 Fixed typos and moved typedefs.
svn path=/trunk/; revision=431
1999-05-06 23:40:43 +00:00
Eric Kohl
781ba31ad3 Added GetDiskFreeSpaceEx().
svn path=/trunk/; revision=430
1999-05-06 20:06:42 +00:00
Eric Kohl
0072db2e5e Fixed GetDiskFreeSpace().
svn path=/trunk/; revision=429
1999-05-06 17:59:55 +00:00
Eric Kohl
70b2252a9d Fixed more bugs in GetFullPathName() and SetCurrentDirectory().
svn path=/trunk/; revision=428
1999-05-06 14:06:48 +00:00
Eric Kohl
bc291ce04e Fixed typos and compiler warnings.
svn path=/trunk/; revision=427
1999-05-05 21:05:00 +00:00
Eric Kohl
73d37669c4 Added volume serial number handling.
svn path=/trunk/; revision=426
1999-05-05 11:23:46 +00:00
Eric Kohl
d5f96518f2 Renamed wtolower() to towlower().
Renamed wtoupper() to towupper().
Added some runtime functions.

svn path=/trunk/; revision=425
1999-05-05 11:20:14 +00:00
Eric Kohl
490e4d94fc Fixed 'implicid declaration' warnings.
svn path=/trunk/; revision=424
1999-04-29 23:36:08 +00:00
Eric Kohl
ddd8467f99 Added missing features in GetFullPathName[A/W]().
svn path=/trunk/; revision=423
1999-04-29 23:32:27 +00:00
Eric Kohl
278a6c540b Fixed dependencies. Now ntdll.dll depends on ntdll.def too.
svn path=/trunk/; revision=422
1999-04-29 19:55:00 +00:00
Eric Kohl
241b23c24d Added aliases.
svn path=/trunk/; revision=421
1999-04-29 19:54:02 +00:00
Eric Kohl
c842409323 Added missing features in GetFullPathName[A/W]().
svn path=/trunk/; revision=420
1999-04-28 14:19:34 +00:00
Eric Kohl
e5bfd35667 Fixed the 'clean' rule.
svn path=/trunk/; revision=419
1999-04-27 14:51:27 +00:00
Eric Kohl
f661ec6b08 Cleaned up the 'clean' rule.
svn path=/trunk/; revision=418
1999-04-27 14:50:51 +00:00
Eric Kohl
27de25f464 Fixed compiler warning.
svn path=/trunk/; revision=417
1999-04-27 14:49:57 +00:00
Eric Kohl
e68d320afc Fixed LARGE_INTEGER handling
svn path=/trunk/; revision=416
1999-04-27 14:47:40 +00:00
Eric Kohl
56461438cb Fixed LARGE_INTEGER handling
svn path=/trunk/; revision=415
1999-04-27 14:15:56 +00:00
Boudewijn Dekker
cee2ad3925 no message
svn path=/trunk/; revision=414
1999-04-27 06:16:04 +00:00
Boudewijn Dekker
9f95b317f2 Fixed bug in modfl and in fread and fwrite and added
some permission checks in stdio.

svn path=/trunk/; revision=413
1999-04-27 06:15:27 +00:00
Emanuele Aliberti
2890508a82 version information
svn path=/trunk/; revision=412
1999-04-25 07:09:54 +00:00
Boudewijn Dekker
97c1f757f6 Fixed some bugs.
svn path=/trunk/; revision=411
1999-04-23 18:43:00 +00:00
Rex Jolliff
98a3f0d6f5 Updated boot disk builder and fixed CHECKPOINT macro in KERNEL32
svn path=/trunk/; revision=410
1999-04-23 16:20:31 +00:00
Eric Kohl
67d7e92025 fixed GetVolumeInformation()
svn path=/trunk/; revision=409
1999-04-23 11:54:47 +00:00
Eric Kohl
54378dbf2a fixed little bug in FindFirstFile()
svn path=/trunk/; revision=408
1999-04-23 11:51:00 +00:00
Emanuele Aliberti
321081bb62 version information to distinguish from MS
svn path=/trunk/; revision=407
1999-04-23 05:28:37 +00:00
Emanuele Aliberti
ad3c512ae2 added resource script with version information to distinguish from MS
svn path=/trunk/; revision=406
1999-04-23 05:27:49 +00:00
Emanuele Aliberti
3fe1c6d5f4 *.rc include
svn path=/trunk/; revision=405
1999-04-23 05:26:37 +00:00
Eric Kohl
36322cffcd fixed GetFileAttributes()
svn path=/trunk/; revision=404
1999-04-21 19:16:31 +00:00
Eric Kohl
73a193b7fe compatibility fixes
svn path=/trunk/; revision=403
1999-04-20 20:25:56 +00:00
Eric Kohl
94f82b0796 cleanup
svn path=/trunk/; revision=402
1999-04-19 18:44:36 +00:00
Eric Kohl
81b9b25bc7 fixed Beep()
svn path=/trunk/; revision=401
1999-04-19 18:43:54 +00:00
David Welch
db068d0cae Synched makefiles
svn path=/trunk/; revision=400
1999-04-18 21:13:11 +00:00
David Welch
dcd4ed3e62 Completely code to synchronize DbgPrint and console output (why was this
not tested?)

svn path=/trunk/; revision=399
1999-04-18 13:39:48 +00:00
David Welch
9adc8d3ca1 Fixed silly bug (sorry)
svn path=/trunk/; revision=398
1999-04-18 13:24:02 +00:00
David Welch
d2f7f11cfc Corrected bug which stopped(!) crtdll from compiling
svn path=/trunk/; revision=397
1999-04-18 12:13:55 +00:00
David Welch
4946832715 *** empty log message ***
svn path=/trunk/; revision=396
1999-04-18 09:11:27 +00:00
David Welch
5a3243d494 Several bug fixes
Added proper process cleanup
Added several programs for testing

svn path=/trunk/; revision=395
1999-04-18 08:56:23 +00:00
Boudewijn Dekker
6f801aae22 added quad.h and ieee.h
svn path=/trunk/; revision=394
1999-04-17 09:11:02 +00:00
Boudewijn Dekker
6becb71b7c Replaced old version of printf and added some long long and
long double support.

svn path=/trunk/; revision=393
1999-04-17 09:10:25 +00:00
Eric Kohl
a1418887c0 changes to build cmd again
svn path=/trunk/; revision=392
1999-04-16 17:26:10 +00:00
Eric Kohl
1644f93c49 dir workaround
svn path=/trunk/; revision=391
1999-04-16 17:25:39 +00:00
Eric Kohl
464c5c2187 changes to build cmd again
svn path=/trunk/; revision=390
1999-04-16 17:20:16 +00:00
Eric Kohl
eda973b1cc last bugfixes for cmd
svn path=/trunk/; revision=389
1999-04-16 00:16:18 +00:00
Eric Kohl
7e74c066a7 changes to build cmd again
svn path=/trunk/; revision=388
1999-04-15 17:40:56 +00:00
Emanuele Aliberti
64037e6939 complete but not aliased export table for advapi32.dll
svn path=/trunk/; revision=387
1999-04-15 05:46:09 +00:00
Eric Kohl
079a92a658 fixed cursor synchronization bug
svn path=/trunk/; revision=386
1999-04-15 02:02:13 +00:00
Eric Kohl
ff1e3c7b18 changed strupr() to _strupr()
svn path=/trunk/; revision=385
1999-04-14 23:52:13 +00:00
Eric Kohl
731f19e9b1 several changes to make cmd compile and link again
svn path=/trunk/; revision=384
1999-04-14 23:48:27 +00:00
Eric Kohl
ebb6fcbc30 added ver command
improved command line editing

svn path=/trunk/; revision=383
1999-04-14 23:45:48 +00:00
Eric Kohl
97c260445b fixed bug in FreeConsole()
svn path=/trunk/; revision=382
1999-04-14 23:43:56 +00:00
Eric Kohl
5d97b74881 fixed cursor synchroization bug
svn path=/trunk/; revision=381
1999-04-14 23:43:13 +00:00
Boudewijn Dekker
ed08466464 Added various files.
--> failed to pass test printing a simple string

svn path=/trunk/; revision=380
1999-04-14 21:27:02 +00:00
Boudewijn Dekker
b68aceef62 Added two header files for multi byte string functions
svn path=/trunk/; revision=379
1999-04-14 07:10:15 +00:00
David Welch
42965fae3b Fixed more compilation bugs (sorry)
svn path=/trunk/; revision=378
1999-04-14 03:39:11 +00:00
David Welch
600e81c60c Fixed silly compilation bug
svn path=/trunk/; revision=377
1999-04-14 02:31:11 +00:00
David Welch
0691de94b5 *** empty log message ***
svn path=/trunk/; revision=376
1999-04-14 00:58:52 +00:00
David Welch
d837d19fac *** empty log message ***
svn path=/trunk/; revision=375
1999-04-14 00:52:19 +00:00
Eric Kohl
eee72fe55d console update
svn path=/trunk/; revision=374
1999-04-11 20:59:24 +00:00
Eric Kohl
98d0da7e1c added .cvsignore file
svn path=/trunk/; revision=373
1999-04-10 14:48:38 +00:00
Eric Kohl
7c8b54eee0 fixed bugs and cleaned up (direct io is working now)
svn path=/trunk/; revision=372
1999-04-10 14:47:15 +00:00
David Welch
fd78805ffc Partially implemented PEB
Some bug fixes
Hacked crtdll to compile with a minimal set of functions

svn path=/trunk/; revision=371
1999-04-10 12:08:24 +00:00
Rex Jolliff
9221d5c854 fixing filenames
svn path=/trunk/; revision=370
1999-04-08 03:46:59 +00:00
David Welch
5503a0f0e4 Improved GDT managment
svn path=/trunk/; revision=369
1999-04-05 15:04:46 +00:00
Rex Jolliff
99fa281af1 fixed display of stack frames
svn path=/trunk/; revision=368
1999-04-04 00:22:33 +00:00
Rex Jolliff
29b9e3f0b4 Added a recursive clean rule and cleaned up a few loose ends
svn path=/trunk/; revision=367
1999-04-03 23:43:27 +00:00
Boudewijn Dekker
0c6333ed01 minor fixes
svn path=/trunk/; revision=366
1999-04-03 10:42:18 +00:00
Boudewijn Dekker
e8cbdde2a7 moved some header files from top level to crtdll directory
svn path=/trunk/; revision=365
1999-04-02 21:44:11 +00:00
The ReactOS Manager
de56bed16d to fix a problem
svn path=/trunk/; revision=364
1999-04-02 18:34:41 +00:00
The ReactOS Manager
5a25898d41 to fix a problem
svn path=/trunk/; revision=363
1999-04-02 18:21:44 +00:00
Rex Jolliff
fbe6ae7bc0 Setup CRTDLL config to build DLL
svn path=/trunk/; revision=362
1999-04-02 06:29:59 +00:00
Rex Jolliff
a3576ceb06 removed size_t from kernel specific includes.
svn path=/trunk/; revision=361
1999-04-02 02:34:40 +00:00
David Welch
63a3377143 Enhanced memory managment
Correct several bugs in the creation/termination of processes

svn path=/trunk/; revision=360
1999-04-01 12:39:43 +00:00
Rex Jolliff
240b550d9c Changes to be able to build system
svn path=/trunk/; revision=359
1999-04-01 05:22:18 +00:00
jean
839118b9b3 initialization of LastError
svn path=/trunk/; revision=358
1999-03-31 14:09:51 +00:00
jean
472aba6da2 correct bug in release of semaphore
svn path=/trunk/; revision=357
1999-03-31 13:57:22 +00:00
jean
d7acbe2251 correct bug in release of semaphore
svn path=/trunk/; revision=356
1999-03-31 13:38:13 +00:00
jean
3763d9c0dd report changes from dwelch in 1.5 (include <string.h>
svn path=/trunk/; revision=355
1999-03-31 13:26:40 +00:00
jean
3277301592 implement some functions
svn path=/trunk/; revision=354
1999-03-31 13:21:44 +00:00
David Welch
572d45daca Improved physical page managment
svn path=/trunk/; revision=353
1999-03-31 10:59:32 +00:00
Eric Kohl
e4bcefde7d Fixed bugs and improved del command.
svn path=/trunk/; revision=352
1999-03-30 22:06:36 +00:00
Eric Kohl
74b0d03ccc Fixed bug in DeviceIoContol().
svn path=/trunk/; revision=351
1999-03-30 22:05:06 +00:00
Eric Kohl
9e3fe0593a Changed beep to compile as sys driver.
svn path=/trunk/; revision=350
1999-03-30 21:59:12 +00:00
Eric Kohl
aa77254872 improved bluescreen driver
svn path=/trunk/; revision=349
1999-03-30 21:58:05 +00:00
David Welch
bbc8fd7b21 Began improvements to memory managment, changed method of
mapping page tables and directories to be more efficent. These
changes require you to update your version of loadros.com

svn path=/trunk/; revision=348
1999-03-30 12:55:31 +00:00
Rex Jolliff
dff0889c02 added GDI32 DLL skeleton
svn path=/trunk/; revision=347
1999-03-28 23:12:42 +00:00
Boudewijn Dekker
03f9e7b713 fixed some bugs to make nls functions compile
svn path=/trunk/; revision=346
1999-03-27 22:29:57 +00:00
David Welch
fbcc7fb423 Made process execution work again
svn path=/trunk/; revision=345
1999-03-26 10:48:45 +00:00
David Welch
140b387c62 Made user-mode execution of processes work again
svn path=/trunk/; revision=344
1999-03-26 10:37:03 +00:00
jean
867fa342e3 changed type for function ExIsResourceAcquiredSharedLite
svn path=/trunk/; revision=343
1999-03-25 14:13:05 +00:00
jean
db7bc7b4e8 modifiy ExIsResourceAcquiredxxx
svn path=/trunk/; revision=342
1999-03-25 14:10:14 +00:00
jean
e4981e3a09 work on semaphores.
svn path=/trunk/; revision=341
1999-03-25 13:53:45 +00:00
jean
42c50bfaa8 begin implement.
svn path=/trunk/; revision=340
1999-03-25 13:52:28 +00:00
David Welch
8688a2a272 Cleaned up code a bit
svn path=/trunk/; revision=339
1999-03-25 00:37:06 +00:00
David Welch
3f0a7424cb Changed kernel32 to compile as a dll
svn path=/trunk/; revision=338
1999-03-24 11:07:33 +00:00
Eric Kohl
00f2fc414e fixed drive reset bug!
svn path=/trunk/; revision=333
1999-03-23 21:23:50 +00:00
Boudewijn Dekker
4f928dad27 no message
svn path=/trunk/; revision=332
1999-03-22 21:01:37 +00:00
Boudewijn Dekker
150a9789e6 Added __set_errno to file.h
svn path=/trunk/; revision=331
1999-03-22 21:01:15 +00:00
Boudewijn Dekker
b3c424cd40 Changes and improved mingw32 compile
svn path=/trunk/; revision=330
1999-03-22 20:57:12 +00:00
Boudewijn Dekker
8bf8d53376 no message
svn path=/trunk/; revision=329
1999-03-22 20:48:08 +00:00
Boudewijn Dekker
5bd64e22e4 Converted cwait.c and system.c to lower case.
svn path=/trunk/; revision=328
1999-03-22 18:09:39 +00:00
Boudewijn Dekker
0dc103b08e Changed access.c and try to convert commit.c to lower case.
svn path=/trunk/; revision=327
1999-03-22 17:21:21 +00:00
Eric Kohl
108fcceee2 changes to make cmd compile (not link)
svn path=/trunk/; revision=326
1999-03-21 21:32:45 +00:00
Rex Jolliff
b172b0df42 added rule for cmd
svn path=/trunk/; revision=325
1999-03-20 20:47:25 +00:00
Rex Jolliff
9f7f2c0f72 Added Eric Kohl's port of freedos command
svn path=/trunk/; revision=324
1999-03-20 20:28:42 +00:00
Rex Jolliff
af3d943b02 cleanup after merge with mingw32
svn path=/trunk/; revision=323
1999-03-19 06:37:39 +00:00
Rex Jolliff
d704562082 Merged mingw32 branch into main trunk
svn path=/trunk/; revision=321
1999-03-19 05:55:55 +00:00
jean
bf4de1d7cd replaced call %eax with call *%eax.First syntax is not recognized
by all compilers.

svn path=/trunk/; revision=317
1999-03-16 13:35:26 +00:00
Boudewijn Dekker
f6a2bede37 no message
svn path=/trunk/; revision=307
1999-03-13 10:12:05 +00:00
Boudewijn Dekker
282bc306f8 Added logb from glibc math.h file
svn path=/trunk/; revision=306
1999-03-13 09:14:51 +00:00
Boudewijn Dekker
481a3a687c no message
svn path=/trunk/; revision=305
1999-03-13 09:03:35 +00:00
Boudewijn Dekker
48f92902c5 Added some nls functions
svn path=/trunk/; revision=304
1999-03-13 09:00:59 +00:00
Boudewijn Dekker
0c215b202d Changed .s files to .c files with gcc asm.
svn path=/trunk/; revision=301
1999-03-12 20:28:52 +00:00
Boudewijn Dekker
98071efc7e Changed .s files to .c files with gcc asm.
svn path=/trunk/; revision=300
1999-03-12 20:26:05 +00:00
jean
ad037179b4 generate napi.c instead of napi.asm
svn path=/trunk/; revision=299
1999-03-12 16:18:45 +00:00
jean
9d1624980f replaced by interlck.c
svn path=/trunk/; revision=298
1999-03-12 16:15:21 +00:00
jean
3276df883d created, replace interlck.asm
svn path=/trunk/; revision=297
1999-03-12 16:14:36 +00:00
jean
7994f333ab replaced by apchelp.c
svn path=/trunk/; revision=296
1999-03-12 16:08:15 +00:00
jean
49d35cfc27 created, replace apchelp.asm
svn path=/trunk/; revision=295
1999-03-12 16:07:32 +00:00
jean
a1c0b9b92a replaced by usercall.c
svn path=/trunk/; revision=294
1999-03-12 16:04:30 +00:00
jean
75a9d9fc5f replaced by irqhand.c
svn path=/trunk/; revision=293
1999-03-12 16:03:09 +00:00
jean
a0945c2aa2 created. replace usercall.asm
svn path=/trunk/; revision=292
1999-03-12 16:00:10 +00:00
jean
ee4c094831 created. replace irqhand.asm.
svn path=/trunk/; revision=291
1999-03-12 15:59:02 +00:00
Emanuele Aliberti
9ee6327262 stubs
svn path=/trunk/; revision=290
1999-03-12 06:29:00 +00:00
Rex Jolliff
24160311c0 more changes to compile under mingw32
svn path=/trunk/; revision=287
1999-03-10 07:18:38 +00:00
Rex Jolliff
275be13b58 Eric's beep driver and changes for same
svn path=/trunk/; revision=286
1999-03-10 06:39:59 +00:00
Rex Jolliff
3a2897ef52 Eric's beep driver and changes to support same
svn path=/trunk/; revision=285
1999-03-10 05:16:57 +00:00
Rex Jolliff
2e61a84b9d oops, put it in the wrong place
svn path=/trunk/; revision=284
1999-03-10 05:01:36 +00:00
Rex Jolliff
c00639bf8c Added the CRT lib for the kernel
svn path=/trunk/; revision=283
1999-03-09 07:15:46 +00:00
Boudewijn Dekker
09abfa6348 Various changes to crtdll.
svn path=/trunk/; revision=282
1999-03-07 14:15:23 +00:00
Boudewijn Dekker
01f4ff78c5 Various changes to crtdll, added some files to math and float
directory.

svn path=/trunk/; revision=281
1999-03-07 13:37:38 +00:00
Boudewijn Dekker
9fd228d402 Various changes to header files
svn path=/trunk/; revision=280
1999-03-07 13:35:11 +00:00
Rex Jolliff
1db33360e3 added config to generate NTDLL.DLL under mingw32
svn path=/trunk/; revision=279
1999-03-06 21:44:41 +00:00
Emanuele Aliberti
97a4cb23d5 stubs
svn path=/trunk/; revision=278
1999-03-06 10:57:02 +00:00
Boudewijn Dekker
eec445ded5 these files are defined in stdlib
svn path=/trunk/; revision=275
1999-02-27 16:59:01 +00:00
Boudewijn Dekker
5a9cee4031 made some small changes
svn path=/trunk/; revision=271
1999-02-25 22:53:40 +00:00
Boudewijn Dekker
b7b31cec92 added some header files
svn path=/trunk/; revision=270
1999-02-25 22:51:47 +00:00
Boudewijn Dekker
15df73e6b3 no message
svn path=/trunk/; revision=269
1999-02-25 21:36:26 +00:00
Boudewijn Dekker
d58a6ad5d6 added some wide character support
svn path=/trunk/; revision=268
1999-02-25 21:33:50 +00:00
Boudewijn Dekker
7946500988 no message
svn path=/trunk/; revision=267
1999-02-25 21:27:29 +00:00
Boudewijn Dekker
d9625dff78 implementation of debug assert
svn path=/trunk/; revision=266
1999-02-25 21:02:20 +00:00
Boudewijn Dekker
e66f3f0e7b Fixed some problems to make the mingw32 header files work with the
linux header files.

svn path=/trunk/; revision=265
1999-02-21 20:59:55 +00:00
Boudewijn Dekker
b57dd9d5b6 Fixed some bugs in header files
svn path=/trunk/; revision=264
1999-02-21 17:43:45 +00:00
Boudewijn Dekker
f929f4c00b changed header files from djgpp to mingw32
svn path=/trunk/; revision=263
1999-02-21 13:48:57 +00:00
Boudewijn Dekker
eef71ffb98 change exec and spawn to _exec and _spawn
svn path=/trunk/; revision=262
1999-02-21 13:43:05 +00:00
Boudewijn Dekker
87028edf14 changed some header file from djgpp to mingw32
svn path=/trunk/; revision=261
1999-02-21 13:33:27 +00:00
Boudewijn Dekker
38c0489092 Changed some header file from djgpp to mingw32
svn path=/trunk/; revision=260
1999-02-21 13:32:17 +00:00
Boudewijn Dekker
77ed4e360b Change some header file from djgpp to mingw32
svn path=/trunk/; revision=259
1999-02-21 13:29:57 +00:00
Boudewijn Dekker
37f381130a fixed bug in stdio.h
svn path=/trunk/; revision=258
1999-02-21 09:15:22 +00:00
Boudewijn Dekker
f6e36a9f86 implement use of _get_osfhandle
svn path=/trunk/; revision=257
1999-02-21 09:11:06 +00:00
Boudewijn Dekker
2c7fb0c72e fixed bug in unlink.c
svn path=/trunk/; revision=256
1999-02-21 09:02:18 +00:00
Boudewijn Dekker
4ad5db5d9c fixed bug in getch
svn path=/trunk/; revision=255
1999-02-21 08:58:57 +00:00
Boudewijn Dekker
95a2cd9225 Added some files
svn path=/trunk/; revision=254
1999-02-21 08:39:36 +00:00
Boudewijn Dekker
ddbc094b81 Added prototype for NtCreateToken
svn path=/trunk/; revision=253
1999-02-21 08:29:20 +00:00
Boudewijn Dekker
4e237f23ce Added prototype for ZwCreateToken
svn path=/trunk/; revision=252
1999-02-21 08:24:36 +00:00
Boudewijn Dekker
93e68a6285 changed io.h regarding prototypes starting with an underscore
svn path=/trunk/; revision=251
1999-02-20 18:40:58 +00:00
Boudewijn Dekker
17a714dfcd added some files and impl diff between fileno and handles
svn path=/trunk/; revision=250
1999-02-20 18:36:47 +00:00
Boudewijn Dekker
25f46657b5 Fixed bug in filetime to system time conversion.
svn path=/trunk/; revision=249
1999-02-20 09:11:46 +00:00
jean
e177bf992c revert change in IopCloseFile, because David Welch is sure we must send
IRP_MJ_CLEANUP

svn path=/trunk/; revision=248
1999-02-18 12:28:06 +00:00
jean
c3e2bc8f4d add date and time in dir.
svn path=/trunk/; revision=247
1999-02-16 12:48:15 +00:00
jean
bd305c8221 correct conversion from dos date and time to TIMEFIELDS.
svn path=/trunk/; revision=246
1999-02-16 12:47:30 +00:00
jean
b16dd07968 add time fields in Find Informations.
svn path=/trunk/; revision=245
1999-02-16 12:46:33 +00:00
jean
bc669554a9 correct bug
svn path=/trunk/; revision=244
1999-02-16 12:45:28 +00:00
jean
276842493c add time.o and memcpy.o
svn path=/trunk/; revision=243
1999-02-16 12:41:57 +00:00
jean
32835c2a47 removed stubs for memcpy,RtlTimeFieldsToTime,RtlTimeTotimeFields
svn path=/trunk/; revision=242
1999-02-16 12:40:05 +00:00
jean
edabb16494 copied from lib/crtdll/string/memcpy.c
svn path=/trunk/; revision=241
1999-02-16 12:38:46 +00:00
jean
d4164f1a07 copied from ntoskrnl/rtl/time.c
svn path=/trunk/; revision=240
1999-02-16 12:37:48 +00:00
Rex Jolliff
ace5da2d0d Added a clean rule
svn path=/trunk/; revision=239
1999-02-16 07:48:03 +00:00
Rex Jolliff
6752566cd2 missed this file
svn path=/trunk/; revision=238
1999-02-16 07:47:29 +00:00
jean
2c6653bf1c place hal/ddk.h after rtl.h, hal/ddk.h needs rtl.h for HalQueryRealTimeClock
svn path=/trunk/; revision=237
1999-02-15 11:40:28 +00:00
jean
6cbc9243c9 add HalQueryRealTimeClock
svn path=/trunk/; revision=236
1999-02-15 11:38:36 +00:00
jean
9c602cda2e add time.o (function HalQueryRealTimeClock)
svn path=/trunk/; revision=235
1999-02-15 11:36:21 +00:00
jean
fc52fb7648 function HalQueryRealTimeClock : partial implementation
svn path=/trunk/; revision=234
1999-02-15 11:35:01 +00:00
jean
621baeefa5 correct bug in CreateDirectory
svn path=/trunk/; revision=233
1999-02-15 11:33:06 +00:00
jean
9f5cc5a859 modify IopCloseFile : send IRP_MJ_CLOSE .
svn path=/trunk/; revision=232
1999-02-15 11:29:08 +00:00
jean
00ec608e15 add a buffer for each file opened
svn path=/trunk/; revision=231
1999-02-15 11:26:13 +00:00
jean
2f1849aae9 add a read buffer of one cluster for each file
svn path=/trunk/; revision=230
1999-02-15 11:25:23 +00:00
jean
36714219d9 initialize dates to current date
svn path=/trunk/; revision=229
1999-02-15 11:24:13 +00:00
Rex Jolliff
6e66d97592 Added check for ROSKRNL.EXE kernel import references
svn path=/trunk/; revision=228
1999-02-12 22:07:20 +00:00
jean
cadd577325 RtlNtStatusToDosError : return 0 if no error, 1 else.
svn path=/trunk/; revision=227
1999-02-11 12:42:18 +00:00
jean
d6995d6c9c correct bug in WriteFile : crash if Overlapped is null
svn path=/trunk/; revision=226
1999-02-11 12:40:02 +00:00
jean
638ba1c9e4 correct bug on CreateDirectory : crash if no template
correct call to ZwCreateFile

svn path=/trunk/; revision=225
1999-02-11 12:38:30 +00:00
jean
9e65542bad add defines for ByteOffset parameter
svn path=/trunk/; revision=224
1999-02-10 13:12:41 +00:00
jean
3315d25a64 change declaration of functions
svn path=/trunk/; revision=223
1999-02-10 13:04:16 +00:00
jean
a649212d32 correct bug in FindFile : support fragmented directories
suppress \ at end of filename

svn path=/trunk/; revision=222
1999-02-10 12:52:48 +00:00
jean
4b8117cedc completed write functions : write correct entries in directories
svn path=/trunk/; revision=221
1999-02-10 12:48:37 +00:00
jean
b9da76d7ef changes because of new version of function FindFile
svn path=/trunk/; revision=220
1999-02-10 12:46:59 +00:00
Rex Jolliff
0a828ed745 another test
svn path=/trunk/; revision=219
1999-02-09 06:54:53 +00:00
Rex Jolliff
a943c76484 a test
svn path=/trunk/; revision=218
1999-02-09 06:53:18 +00:00
David Welch
70f7c7269c Fixed bugs in lib/kernel32/file/curdir.c and
lib/kernel32/misc/console.c

svn path=/trunk/; revision=217
1999-02-07 00:37:29 +00:00
David Welch
02e70516ef Fixed bug in lib/kernel32/misc/console.c
svn path=/trunk/; revision=216
1999-02-06 18:39:40 +00:00
David Welch
e5dfcc9871 no message
svn path=/trunk/; revision=215
1999-02-06 18:34:14 +00:00
Rex Jolliff
f8492b9ae3 various changes
svn path=/trunk/; revision=214
1999-02-06 00:34:56 +00:00
Rex Jolliff
6bee27aa2a Fixed page fault due to timer. Problem with timeout still needs to be fixed.
svn path=/trunk/; revision=213
1999-02-06 00:33:33 +00:00
Rex Jolliff
dbad901d31 Fixed debug statement
svn path=/trunk/; revision=212
1999-02-06 00:29:31 +00:00
Rex Jolliff
e51b6b925d Forgot to bump version on last changes
svn path=/trunk/; revision=211
1999-02-05 19:39:35 +00:00
Rex Jolliff
f45b570cc3 Added symbolic stack dump
svn path=/trunk/; revision=210
1999-02-05 19:38:30 +00:00
Rex Jolliff
55d6c152b6 more changes from Boudewijn
svn path=/trunk/; revision=209
1999-02-05 19:36:21 +00:00
Rex Jolliff
3aed7d1da4 incorporating changes from Boudewijn
svn path=/trunk/; revision=208
1999-02-05 19:35:56 +00:00
Rex Jolliff
df27ab373b incorporated changes from Boudewijn
svn path=/trunk/; revision=207
1999-02-05 19:27:21 +00:00
Rex Jolliff
67c37a748e Incorporated changed from Boudewijn
svn path=/trunk/; revision=206
1999-02-05 19:24:10 +00:00
Rex Jolliff
d4195242ff incorporated changes from dekker
svn path=/trunk/; revision=205
1999-02-05 19:15:33 +00:00
Rex Jolliff
9bcc89126c a test
svn path=/trunk/; revision=204
1999-02-05 18:52:58 +00:00
Rex Jolliff
d7a481490e Renamed from uppercase
svn path=/trunk/; revision=203
1999-02-05 18:44:52 +00:00
Rex Jolliff
bfd196dfd9 changes to support new library modules
svn path=/trunk/; revision=202
1999-02-05 18:34:02 +00:00
Rex Jolliff
f4e6240546 added libgcc.a to link spec
svn path=/trunk/; revision=201
1999-02-05 18:24:00 +00:00
David Welch
5ba4cc87c5 Extensive changes to the objmgr
Some bug fixes

svn path=/trunk/; revision=200
1999-02-01 20:58:37 +00:00
David Welch
e999320cb5 Deleted these
svn path=/trunk/; revision=199
1999-02-01 20:52:55 +00:00
David Welch
88987510df Delete this (empty file)
svn path=/trunk/; revision=198
1999-02-01 20:52:08 +00:00
David Welch
5cb80487c2 Deleted these (shell now redundant)
svn path=/trunk/; revision=197
1999-02-01 20:51:28 +00:00
David Welch
3fcccd0b8c Removed some memory leaks
Moved from first-fit to best-fit for non-paged pool allocation
Fixed bug in console driver (wasn't completing irps)
Fixed bug in vfat fsd (didn't recognize paths of the form foo//bar)

svn path=/trunk/; revision=196
1999-01-29 14:33:04 +00:00
David Welch
a984daa5de no message
svn path=/trunk/; revision=195
1999-01-28 21:42:01 +00:00
David Welch
9a068f8b4b Removed memory leaks
Fixed bug in console driver (wasn't completing irp)

svn path=/trunk/; revision=194
1999-01-28 21:41:05 +00:00
David Welch
0bcca89137 no message
svn path=/trunk/; revision=193
1999-01-28 15:54:26 +00:00
Rex Jolliff
531f88e833 changed program loader to map image into section
svn path=/trunk/; revision=192
1999-01-25 23:06:30 +00:00
Rex Jolliff
a3232e28c6 changes to implement registry tags
svn path=/trunk/; revision=191
1999-01-22 00:28:31 +00:00
David Welch
1908a698e8 Fixed some bugs
svn path=/trunk/; revision=190
1999-01-20 19:02:05 +00:00
jean
97b7ce3ac3 prepare to reserve resource
svn path=/trunk/; revision=189
1999-01-20 13:07:12 +00:00
jean
f03f3933bc corrected bugs in long names, and write operations
add functionnalities to create operation

svn path=/trunk/; revision=188
1999-01-20 13:05:53 +00:00
jean
85e4809132 many bug fixes
svn path=/trunk/; revision=187
1999-01-20 13:00:35 +00:00
jean
e9b21d3c1d modify dir command : print altername name, size and long name
svn path=/trunk/; revision=186
1999-01-20 12:58:11 +00:00
jean
f9a230ad49 return both alternate and long filename
return file size

svn path=/trunk/; revision=185
1999-01-20 12:56:24 +00:00
jean
efa169ca61 remove STATUS_xxx values defined in ddk/status.h
add FILE_ATTRIBUTE_xxx values needed by vfat driver

svn path=/trunk/; revision=184
1999-01-20 12:53:14 +00:00
jean
8f3084dc6d define File disposition values as NT
add FILE_EXISTS

svn path=/trunk/; revision=183
1999-01-20 12:47:37 +00:00
jean
93afbbc9d6 define STATUS values as nt
add some values required by vfat driver

svn path=/trunk/; revision=182
1999-01-20 12:45:33 +00:00
Rex Jolliff
5998255e83 changed ObLookupObject to use Parse member if nonnull
svn path=/trunk/; revision=181
1999-01-20 00:19:46 +00:00
Rex Jolliff
a1fca3d3ae changed Parse member of object type
svn path=/trunk/; revision=180
1999-01-20 00:19:08 +00:00
Rex Jolliff
1e4904f8dd added for crtdll
svn path=/trunk/; revision=179
1999-01-17 17:57:38 +00:00
Rex Jolliff
ac9c590908 adding files for kernel32/crtdll
svn path=/trunk/; revision=178
1999-01-17 17:49:46 +00:00
Rex Jolliff
107f6406fc fixed a bug in K32 heap init
svn path=/trunk/; revision=177
1999-01-17 17:45:20 +00:00
David Welch
12ea84e3c9 Bug fixes
svn path=/trunk/; revision=176
1999-01-17 17:30:18 +00:00
David Welch
8551dc320b Removed obsolete documentation
svn path=/trunk/; revision=175
1999-01-17 17:18:35 +00:00
David Welch
512966336f Add new documentation
svn path=/trunk/; revision=174
1999-01-17 17:17:09 +00:00
David Welch
ed27871348 Updated TODO list
svn path=/trunk/; revision=173
1999-01-17 17:16:00 +00:00
David Welch
51f310e703 Fixed bug (please don't alter functions without debugging)
svn path=/trunk/; revision=172
1999-01-17 17:12:19 +00:00
David Welch
804bfa6fb9 Added this because the crtdll files seem to need it
svn path=/trunk/; revision=171
1999-01-16 21:16:38 +00:00
David Welch
c2059de8af Fixed several bugs
Commented out code that wouldn't compile in lib/crtdll
Began removed memory and file leaks

svn path=/trunk/; revision=170
1999-01-16 21:03:00 +00:00
Rex Jolliff
73d2af04d9 added to cover copyright requirements
svn path=/trunk/; revision=169
1999-01-16 17:30:25 +00:00
Rex Jolliff
d01f8c3180 Boudewjin's massive work on kernel32 and crtdll and a console driver.
svn path=/trunk/; revision=168
1999-01-16 02:11:45 +00:00
jean
6298d37c71 changes to make create directory functions active.
svn path=/trunk/; revision=167
1999-01-13 15:57:45 +00:00
jean
dd705acbd0 correct some bugs in WriteFile function
svn path=/trunk/; revision=166
1999-01-13 15:53:56 +00:00
jean
455be0fece transmit CreateOptions and CreateDisposition to Irp
svn path=/trunk/; revision=165
1999-01-13 15:49:07 +00:00
jean
2d3181f734 more completely implement write operations
svn path=/trunk/; revision=164
1999-01-13 15:46:52 +00:00
jean
2b59b2c1c2 add file dirwr.c
add entry to generate test executables

svn path=/trunk/; revision=163
1999-01-13 15:37:47 +00:00
jean
3c80407d9b write operations on directories
svn path=/trunk/; revision=162
1999-01-13 15:25:50 +00:00
jean
93b8081eed some bugfixes
work on write operations

svn path=/trunk/; revision=161
1999-01-13 15:21:34 +00:00
jean
a044d562b8 add more function's declarations
svn path=/trunk/; revision=160
1999-01-13 15:20:31 +00:00
jean
523aba9a89 cancel changes from david welch : write operations dangerous
remove allocations, use directly buffers

svn path=/trunk/; revision=159
1999-01-13 15:14:48 +00:00
Rex Jolliff
b0cbc91ce1 PE driver loader is complete.
svn path=/trunk/; revision=158
1999-01-13 03:00:06 +00:00
Rex Jolliff
dc7be08202 more work on loader
svn path=/trunk/; revision=157
1999-01-12 07:44:55 +00:00
Rex Jolliff
01e34a063a added for registry support
svn path=/trunk/; revision=156
1999-01-12 01:28:55 +00:00
Rex Jolliff
29ef6b5bac Wrote initial hack at ZwCreateKey and CmInitialize
svn path=/trunk/; revision=155
1999-01-07 01:38:57 +00:00
Rex Jolliff
4159ed2941 Modifed to add Registry specific object mgr types and functions
svn path=/trunk/; revision=154
1999-01-07 01:37:29 +00:00
jean
1e09a4813f redo changes in 1.9 from Rex.
correct bug on fragmented directories.

svn path=/trunk/; revision=153
1999-01-05 12:04:08 +00:00
David Welch
36902d624f Created bugs in wait and timer code
svn path=/trunk/; revision=152
1999-01-04 23:01:18 +00:00
jean
4850652d25 use of correct zones for arguments restartscan and singleentry
svn path=/trunk/; revision=151
1999-01-04 14:11:15 +00:00
jean
c92156be04 added function to defrag free list, because else pool take all memory
with free list.

svn path=/trunk/; revision=150
1999-01-04 12:35:24 +00:00
jean
17b6b4d72a correct bug in write operations
svn path=/trunk/; revision=149
1999-01-04 12:11:35 +00:00
jean
66658f3d1a many changes to :
support one FCB/file and one CCB/open
write on existing files
open of root directory

svn path=/trunk/; revision=148
1999-01-04 12:08:54 +00:00
jean
35f07df64f adaptation to new structs in vfat.h
svn path=/trunk/; revision=147
1999-01-04 12:02:38 +00:00
jean
06a593cc64 changes to support FCB and CCB better
svn path=/trunk/; revision=146
1999-01-04 11:59:25 +00:00
David Welch
20ef31f3cc Added directory listing support for the shell
Correctec bug that prevented listing the root directory in the vfat fsd
Corrected mistake where the SL_xxx constants were too long

svn path=/trunk/; revision=145
1999-01-03 16:18:19 +00:00
Rex Jolliff
2d14c3e110 Changes to support the COFF driver loader
svn path=/trunk/; revision=144
1999-01-01 22:33:38 +00:00
David Welch
02e3d7b08e *** empty log message ***
svn path=/trunk/; revision=143
1999-01-01 22:03:17 +00:00
David Welch
d55d012d33 Added ntdll functions
svn path=/trunk/; revision=142
1999-01-01 21:47:57 +00:00
David Welch
de8fc633f8 Beginnings of ext2fs driver
svn path=/trunk/; revision=141
1999-01-01 21:39:43 +00:00
Rex Jolliff
3244132cc7 Changes to support new VFAT functions and the loader
svn path=/trunk/; revision=140
1998-12-30 22:48:14 +00:00
Rex Jolliff
6ce4528a80 new file for driver from Jean
svn path=/trunk/; revision=139
1998-12-30 19:01:23 +00:00
Rex Jolliff
43fd2f2579 readme for the VFAT driver provided by jean
svn path=/trunk/; revision=138
1998-12-30 18:45:49 +00:00
Rex Jolliff
a984573ad4 more loader changes and new fixes to the VFAT driver from jean
svn path=/trunk/; revision=137
1998-12-30 18:43:27 +00:00
Rex Jolliff
6fd4505b6f more changes to support the loader
svn path=/trunk/; revision=136
1998-12-23 02:40:01 +00:00
David Welch
4209cfec73 Changed type of LONGLONG
svn path=/trunk/; revision=135
1998-12-22 20:41:40 +00:00
David Welch
e007300ee0 Fixed race in task-switching code
svn path=/trunk/; revision=134
1998-12-22 19:14:19 +00:00
David Welch
3ecc11334b Fixed race in task switching code
svn path=/trunk/; revision=133
1998-12-22 19:13:33 +00:00
David Welch
1628f7a89e Fixed a race in the task-switching code
svn path=/trunk/; revision=132
1998-12-22 19:11:47 +00:00
David Welch
b161ff0650 Fixed bug
svn path=/trunk/; revision=131
1998-12-21 15:48:21 +00:00
Rex Jolliff
6cd2bc16b8 Various changes to support the executable/driver loader
svn path=/trunk/; revision=130
1998-12-20 19:41:39 +00:00
David Welch
a9ce8c6379 *** empty log message ***
svn path=/trunk/; revision=129
1998-12-19 19:26:02 +00:00
David Welch
5d1ddcb775 Adding missing functions to ntdll
svn path=/trunk/; revision=128
1998-12-19 19:05:11 +00:00
David Welch
962e8486ea Put def file in its own directory
svn path=/trunk/; revision=127
1998-12-19 19:01:30 +00:00
David Welch
8f8c71dfb9 Minor bug fixes
svn path=/trunk/; revision=126
1998-12-19 18:56:57 +00:00
David Welch
e017266cd0 Corrected some bugs in the system libraries
svn path=/trunk/; revision=125
1998-12-19 18:49:28 +00:00
David Welch
316713be6b Small changes to include files
svn path=/trunk/; revision=124
1998-12-19 18:46:02 +00:00
David Welch
937e125ad7 Improved shell and removed symbol list
svn path=/trunk/; revision=123
1998-12-19 18:44:54 +00:00
David Welch
43c24d3654 Removed string functions from native system calls and removed binary from
repository

svn path=/trunk/; revision=122
1998-12-19 18:40:55 +00:00
David Welch
7e398d4e22 Cleaned up system libraries
svn path=/trunk/; revision=121
1998-12-19 17:48:53 +00:00
Rex Jolliff
0d71cd85bd more hacking on the loader
svn path=/trunk/; revision=120
1998-12-12 17:44:30 +00:00
David Welch
f5d7376e5a Additions to ntifs.h (just for reference)
svn path=/trunk/; revision=119
1998-12-12 17:01:34 +00:00
Rex Jolliff
570be7966c Implemented loader functions for COFF Drivers and BIN apps, and stubs for PE apps
svn path=/trunk/; revision=118
1998-12-12 00:24:12 +00:00
David Welch
6b8cb5c939 Added ChangeLog for better version information, io.h so it would compile
svn path=/trunk/; revision=117
1998-12-08 23:43:37 +00:00
David Welch
6eaf6180fd Corrected a memory leak in the read cleanup code
svn path=/trunk/; revision=116
1998-12-08 19:44:04 +00:00
David Welch
4bc75819a3 Corrected a number of bugs, including the keyboard one
svn path=/trunk/; revision=115
1998-12-08 16:51:47 +00:00
Rex Jolliff
8587170853 didnt want to delete these
svn path=/trunk/; revision=114
1998-12-08 04:31:41 +00:00
Rex Jolliff
683ed8c5a1 Added ZwQueryFileInformation
svn path=/trunk/; revision=113
1998-12-08 04:31:04 +00:00
Rex Jolliff
bc06faa8cd Fixed a bug introduced by a change in ZwAllocateVirtualMemory call
svn path=/trunk/; revision=112
1998-12-06 00:04:04 +00:00
Rex Jolliff
4bc8aa3713 more minor fixes
svn path=/trunk/; revision=111
1998-12-05 00:15:50 +00:00
Rex Jolliff
b097125d77 this file is machine generated
svn path=/trunk/; revision=110
1998-12-04 23:36:58 +00:00
Rex Jolliff
13e75fd710 cleanup to support incorporated changes
svn path=/trunk/; revision=109
1998-12-04 23:35:48 +00:00
Rex Jolliff
37af92952e Rolled in various changes from others
svn path=/trunk/; revision=108
1998-12-04 18:28:13 +00:00
Rex Jolliff
159ee3800d Added this file
svn path=/trunk/; revision=107
1998-12-03 04:49:07 +00:00
Rex Jolliff
82d21c903e Changed include/hal/io.h to halio.h with i386/io.h
svn path=/trunk/; revision=106
1998-11-29 19:39:40 +00:00
Rex Jolliff
b6187e2de7 added ext partition check macro
svn path=/trunk/; revision=105
1998-11-29 19:31:45 +00:00
Rex Jolliff
98d405409a bumped the DRQ timeout up due to user request
svn path=/trunk/; revision=104
1998-11-29 19:29:57 +00:00
Rex Jolliff
ce0b82afeb Used Ext partition detection macro and less intrusive register maps
svn path=/trunk/; revision=103
1998-11-29 19:28:18 +00:00
Rex Jolliff
fd5a21279e Continuing work in progress
svn path=/trunk/; revision=102
1998-11-29 19:25:39 +00:00
Rex Jolliff
e96765787f Thread should be restarted in passive level.
svn path=/trunk/; revision=101
1998-11-29 19:24:46 +00:00
Rex Jolliff
a06ebb79bb Changed include file spec
svn path=/trunk/; revision=100
1998-11-29 19:22:42 +00:00
Rex Jolliff
f075faafdf changed include file spec
svn path=/trunk/; revision=99
1998-11-29 19:15:37 +00:00
Rex Jolliff
043bc3b058 added support for CHECKED macro
svn path=/trunk/; revision=98
1998-11-29 19:11:10 +00:00
Rex Jolliff
a3a5ebb7c7 added CHECKED to defines
svn path=/trunk/; revision=97
1998-11-29 19:09:49 +00:00
Rex Jolliff
f93f98a522 added driver unloading to list
svn path=/trunk/; revision=96
1998-11-29 19:08:21 +00:00
David Welch
93263fa722 Updated version.h only, just a test really
svn path=/trunk/; revision=95
1998-11-28 23:07:08 +00:00
Rex Jolliff
d6830ac891 added more partition types including FAT32
svn path=/trunk/; revision=94
1998-11-13 08:06:13 +00:00
Rex Jolliff
1302d0fe3b used macro for winsize in place of hardcoded number
svn path=/trunk/; revision=93
1998-11-13 08:05:22 +00:00
Rex Jolliff
45a6e16434 fixed error in stub code
svn path=/trunk/; revision=92
1998-11-13 08:04:16 +00:00
Rex Jolliff
c89930f961 udpate
svn path=/trunk/; revision=91
1998-11-07 21:38:16 +00:00
Rex Jolliff
bc9bf59740 New release from Jason
svn path=/trunk/; revision=90
1998-11-07 20:30:33 +00:00
Rex Jolliff
a998ae77b0 Added unimplemented message to unimplemented functions
svn path=/trunk/; revision=89
1998-11-07 20:29:46 +00:00
Rex Jolliff
7499a5965d added unimplemented messages to all imimplemented functions
svn path=/trunk/; revision=88
1998-11-07 20:28:51 +00:00
Rex Jolliff
f530e60c76 Fixed calls to StartTimer
svn path=/trunk/; revision=87
1998-10-31 22:33:17 +00:00
Rex Jolliff
409861205e no change
svn path=/trunk/; revision=86
1998-10-31 22:32:13 +00:00
Rex Jolliff
33e768c8cd added descriptive text to exception dump
svn path=/trunk/; revision=85
1998-10-31 22:30:08 +00:00
Rex Jolliff
5dd16d52fe added cmd to gen syms
svn path=/trunk/; revision=84
1998-10-31 22:25:30 +00:00
Rex Jolliff
3c0b32b97a (Jason) various changes
svn path=/trunk/; revision=83
1998-10-31 15:54:07 +00:00
Rex Jolliff
b5be07756f (Jason) added sector count to blockdev interface
svn path=/trunk/; revision=82
1998-10-31 15:52:45 +00:00
Rex Jolliff
8134515a1a Used a different constant for number of poll retries
svn path=/trunk/; revision=81
1998-10-31 15:51:23 +00:00
Rex Jolliff
a3fbbaa42d added timer test routines
svn path=/trunk/; revision=80
1998-10-31 15:50:08 +00:00
Rex Jolliff
8b29e69d3d Verified correctness of epoch DOW
svn path=/trunk/; revision=79
1998-10-31 15:47:28 +00:00
Rex Jolliff
e3a11b68b8 Fixed timer constants and repitition code
svn path=/trunk/; revision=78
1998-10-31 15:46:36 +00:00
Rex Jolliff
09215f3126 Fixed large integer conv bug
svn path=/trunk/; revision=77
1998-10-31 15:44:22 +00:00
Rex Jolliff
e68e2e431a Added Fix for >255 sector read/write and first hack at timeout code
svn path=/trunk/; revision=76
1998-10-20 06:00:13 +00:00
Rex Jolliff
267b8c4e8c Fix from brian for broken function
svn path=/trunk/; revision=75
1998-10-20 05:58:53 +00:00
Rex Jolliff
dc5f3e0195 Fixed synchronous I/O bug in ZwWriteFile
svn path=/trunk/; revision=74
1998-10-20 05:56:26 +00:00
Rex Jolliff
74ff8524ad Added serial debugging support
svn path=/trunk/; revision=73
1998-10-20 05:54:29 +00:00
Rex Jolliff
37529daf35 Fixed a problem with buffered io IRPs
svn path=/trunk/; revision=72
1998-10-13 03:24:42 +00:00
Rex Jolliff
d0c8759887 Changed failure status report to print hex
svn path=/trunk/; revision=71
1998-10-12 21:05:58 +00:00
Rex Jolliff
8909f04b2c Fixed debugging messages and other minor changes
svn path=/trunk/; revision=70
1998-10-12 21:04:07 +00:00
Rex Jolliff
e1d692c393 Eliminated a compiler warning
svn path=/trunk/; revision=69
1998-10-12 21:02:34 +00:00
Rex Jolliff
1d9a6c728c changed static functions to standard naming convention
svn path=/trunk/; revision=68
1998-10-12 20:58:27 +00:00
Rex Jolliff
0805f2913e added include for debugging macros
svn path=/trunk/; revision=67
1998-10-12 20:54:51 +00:00
Rex Jolliff
135e1512ef UserEvent and UserIosb were not being set in IoBuildSynchronousFsdRequest
svn path=/trunk/; revision=66
1998-10-12 20:51:28 +00:00
Rex Jolliff
a7dd9bd3f9 added some comment markers in the status codes
svn path=/trunk/; revision=65
1998-10-12 20:50:33 +00:00
Rex Jolliff
6144b903c3 chagned to support local build
svn path=/trunk/; revision=64
1998-10-12 20:40:20 +00:00
Rex Jolliff
3afc66723c more chages to bring up to krnl0012
svn path=/trunk/; revision=62
1998-10-05 14:31:06 +00:00
Rex Jolliff
537bf0fdf6 This commit was generated by cvs2svn to compensate for changes in r58,
which included commits to RCS files with non-trunk default branches.

svn path=/trunk/; revision=59
1998-10-05 04:55:45 +00:00
Rex Jolliff
c38258c97a Initial revision
svn path=/trunk/; revision=56
1998-10-05 04:55:44 +00:00
Rex Jolliff
3f988bd286 brings code in line with release 12
svn path=/trunk/; revision=55
1998-10-05 04:50:07 +00:00
Rex Jolliff
ee81c811cd This commit was generated by cvs2svn to compensate for changes in r52,
which included commits to RCS files with non-trunk default branches.

svn path=/trunk/; revision=53
1998-10-05 04:01:30 +00:00
Rex Jolliff
645218d5c8 Initial revision
svn path=/trunk/; revision=50
1998-10-05 04:00:59 +00:00
Rex Jolliff
5c0fb0f108 general bug fix changes
svn path=/trunk/; revision=49
1998-10-05 03:39:36 +00:00
Rex Jolliff
22ebf085eb First release of the IDE driver
svn path=/trunk/; revision=48
1998-09-20 02:22:48 +00:00
Rex Jolliff
cb0fe70650 Page overlapping MDLs have been fixed
svn path=/trunk/; revision=47
1998-09-20 02:21:36 +00:00
Rex Jolliff
9a55f0f7ed this fixes the problem with NASM invocation in make
svn path=/trunk/; revision=46
1998-09-20 02:19:42 +00:00
Rex Jolliff
7967ac94a2 fixes and changes to support IDE driver
svn path=/trunk/; revision=45
1998-09-15 14:31:18 +00:00
Rex Jolliff
4bbc8ea6ef added pool validation to checkpoint/dprint macro
svn path=/trunk/; revision=44
1998-09-15 14:18:47 +00:00
Rex Jolliff
099d789b13 array definition had incorrect length
svn path=/trunk/; revision=43
1998-09-15 14:17:32 +00:00
Rex Jolliff
6bdaf42c26 cleanup of import
svn path=/trunk/; revision=42
1998-09-13 16:32:10 +00:00
Rex Jolliff
40473b6aba This commit was generated by cvs2svn to compensate for changes in r39,
which included commits to RCS files with non-trunk default branches.

svn path=/trunk/; revision=40
1998-09-13 15:55:55 +00:00
Rex Jolliff
ffc37c2cfd Initial revision
svn path=/trunk/; revision=37
1998-09-13 15:55:36 +00:00
Rex Jolliff
e8652909ce changes to support debugging of ide driver
svn path=/trunk/; revision=36
1998-09-13 02:37:20 +00:00
Rex Jolliff
153b0ad928 ZwReadFile was using Write member of Irp union.
ZwReadFile now returns correct status

svn path=/trunk/; revision=35
1998-09-13 01:17:05 +00:00
Rex Jolliff
ca01965c67 added code to initialize CurrentIrp in DeviceObject.
svn path=/trunk/; revision=34
1998-09-13 01:13:48 +00:00
Rex Jolliff
b903d86810 no specific problems fixed
svn path=/trunk/; revision=33
1998-09-09 02:34:38 +00:00
Rex Jolliff
809b4b1eab This commit was generated by cvs2svn to compensate for changes in r30,
which included commits to RCS files with non-trunk default branches.

svn path=/trunk/; revision=31
1998-09-05 17:34:23 +00:00
3253 changed files with 650133 additions and 29962 deletions

2
reactos/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
dist
errors

7
reactos/.gdbinit Normal file
View File

@@ -0,0 +1,7 @@
file ntoskrnl/ntoskrnl.nostrip.exe
#add-symbol-file lib/ntdll/ntdll.dll 0x77f61000
#add-symbol-file lib/kernel32/kernel32.dll 0x77f01000
#add-symbol-file apps/exp/exp.exe 0x401000
#add-symbol-file subsys/csrss/csrss.exe 0x401000
#add-symbol-file subsys/smss/smss.exe 0x401000
break exp.c:254

41
reactos/CREDITS Normal file
View File

@@ -0,0 +1,41 @@
In no particular order
Rex Jolliff (rex@lvcablemodem.com)
Boudewijn Dekker (ariadne@xs4all.nl)
Eric Kohl (ekohl@rz-online.de)
Emanuele Aliberti (ea@iol.it)
David Welch (welch@cwcom.net)
Iwan Fatahi (i_fatahi@hotmail.com)
Robert Bergkvist (fragdance@hotmail.com)
Victor Kirhenshtein (sauros@iname.com)
Jason Filby (jasonfilby@yahoo.com)
Brian Palmer (brianp@sginet.com)
Phillip Susi (phreak@iag.net)
Paolo Pantaleo (paolopan@freemail.it)
Casper S. Hornstrup (chorns@users.sourceforge.net)
Source and inspiration from
WINE (http://www.winehq.com)
WinFree (http://www.stack.nl/~onno/win32/)
Linux (http://www.kernel.org)
References (Rex's at least)
Baker, Art. The Windows NT Device Driver Book. Prentice Hall, 1997.
Borate, Dabak & Phadke. Undocumented Windows NT. M&T Books, 1999.
Brain, Marshall. Win32 System Services. Prentice Hall, 1996.
Cant, Chris. Writing Windows WDM Device Drivers. R&D Books, 1999.
Canton & Sanchez. IBM Microcomputers: A Programmer's Handbook. McGraw Hill, 1990.
Davis & Wallace. Windows Undocumented File Formats. R&D Books, 1997.
Mason & Viscarola. Windows NT Device Driver Development. Macmillan, 1999.
Mitchell, Stan. Inside the Windows 95 File System. O'Reilly, 1997.
Murray, James D. Windows NT Event Logging. O'Reilly, 1998.
Nagar, Rajeev. Windows NT File System Internals. O'Reilly, 1997.
Osbourne, Sandra. Windows NT Registry: A Settings Reference. New Riders, 1998.
Pietrek, Matt. Windows 95 System Programming Secrets. IDG, 1995.
Richter, Jeffery. Advanced Windows, 3rd ed. Microsoft, 1997.
Simon, Richard J. Windows NT Win32 API Superbible. Waite Group, 1996.
Solomon, David A. Inside Windows NT, 2nd Ed. Microsoft, 1998.
"The NT Insider." Open Systems Resources, 1999-2000.

154
reactos/ChangeLog Normal file
View File

@@ -0,0 +1,154 @@
2001-03-18 David Welch <welch@cwcom>
* ntoskrnl/ke/apc.c (KiDeliverApc): Bug fix.
* ntoskrnl/ke/apc.c (KeInsertQueueApc): More comments.
* ntoskrnl/ke/catch.c (KiDispatchException): Bug fix.
* ntoskrnl/ke/timer.c (KeDelayExecutionThread): Don't use removed
function KeAddTimeoutThread.
* ntoskrnl/ke/timer.c (KeAddTimeoutThread): Removed.
* ntoskrnl/ke/wait.c (KeWaitForSingleObject, KeWaitForMultipleObjects):
Don't use KeAddTimeoutThread.
* ntoskrnl/mm/freelist.c (MmAllocateContiguousAlignedMemory): Bug fix
* ntoskrnl/mm/freelist.c (MmAllocatePage): Allocate from the top
memory.
2001-03-17 David Welch <welch@cwcom.net>
* ntoskrnl/ke/catch.c (KiDispatchException): Implementation of
exception handling, user-mode only.
2001-03-16 David Welch <welch@cwcom.net>
* include/ddk/zw.h: Corrected declarations of NtCreateProfile,
NtQueryIntervalProfile, NtSetIntervalProfile.
* include/ddk/zwtypes.h: Added definitions of KPROFILE_SOURCE.
* ntoskrnl/include/internal/ke.h: Added the interrupted EIP as a
parameter to KiUpdateSystemTime for profiling purposes.
* ntoskrnl/include/internal/nt: Added declaration for profiling
support initialization.
* ntoskrnl/ke/timer.c (KiUpdateSystemTime, KeExpireTimers): Call
the profiling code on a timer interrupt with the interrupt EIP.
* ntoskrnl/ke/i386/irq.c (KiDispatchInterrupt): Pass the interrupted
EIP to KiUpdateSystemTime.
* ntoskrnl/mm/virtual.c (NtReadVirtualMemory, NtWriteVirtualMemory):
Release the MDLs used properly.
* ntoskrnl/nt/nt.c: Call the profiling support initialization.
* ntoskrnl/nt/ntevent.c (NtCreateEvent): Don't try copying the
ObjectAttributes parameter if it is NULL.
* ntoskrnl/nt/profile.c: Implemented profiling.
2001-03-16 David Welch <welch@cwcom.net>
* ntoskrnl/include/internal/safe.h: Corrected typo.
* ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtQueryEvent):
Corrected typos.
* ntoskrnl/rtl/mem.c: Missing header file.
2001-03-16 David Welch <welch@cwcom.net>
* ntoskrnl/include/internal/safe.h: Add definitions for handling
potentially unsafe pointers.
2001-03-16 David Welch <welch@cwcom.net>
* ntoskrnl/include/internal/mm.h: Removed MmSafeCopyToUser and
MmSafeCopyFromUser as source files need these but don't want internal
mm definitions.
* ntoskrnl/nt/ntevent.c (NtCreateEvent, NtOpenEvent, NtPulseEvent,
NtQueryEvent, NtResetEvent, NtSetEvent): Copy data to and from
user mode safely.
* ntoskrnl/rtl/mem.c (MmCopyToCaller, MmCopyFromCaller): Helper
functions for copying data to and from potentially unsafe pointers.
2000-12-23 David Welch <welch@cwcom.net>
* All task switching is done in software.
* Beginnings of v86 mode support.
2000-12-22 David Welch <welch@cwcom.net>
* ntoskrnl/ps/kill.c (PiTerminateProcessThreads): Drop
PiThreadListLock before calling PsTerminateOtherThread
2000-12-16 David Welch <welch@cwcom.net>
* ntoskrnl/ex/fmutex.c (ExReleaseFastMutexUnsafe): Only set the
fast mutex's owner back to NULL if it is being released
2000-12-10 David Welch <welch@cwcom.net>
* ntoskrnl/ke/i386/vm86_sup.S (Ki386RetToV86Mode): Added function
to do the raw switch to v86 mode.
* ntoskrnl/include/internal/vm86.h: Definitions for the v86 mode
support.
2000-12-10 David Welch <welch@cwcom.net>
* ntoskrnl/ke/i386/trap.s (PsBeginThreadWithContextInternal): Moved
to ntoskrnl/ke/i386/bswitch.S.
* ntoskrnl/ke/i386/trap.s (interrupt_handler2e): Moved to
ntoskrnl/ke/i386/syscall.S.
* ntoskrnl/ke/i386/trap.s (old_interrupt_handler2e): Removed.
2000-12-04 David Welch <welch@cwcom.net>
* ntoskrnl/ke/i386/irq.c (KiInterruptDispatch): Record the last PC
value for a rescheduled thread.
* ntoskrnl/ke/i386/irqhand.s: Construct a primitive trap frame
in interrupt handlers.
2000-08-30 David Welch <welch@cwcom.net>
* Added calibration of KeStallExecutionProcessor timing
(code from linux 2.2.16).
* Corrected compilation bugs in user32 library.
* Corrected compilation bugs related to anonymous structs
in ndis code.
* Pass command line to kernel from loadros.
* Corrected PIC mask calculation.
2000-05-27 David Welch <welch@cwcom.net>
* Fixed issue with closing non-existent or already closed
handle.
2000-01-26 David Welch <welch@cwcom.net>
* ZwCreateProcess now maps ntdll rather than the user-mode
code.
1999-09-06 David Welch <welch@cwcom.net>
* Implemented ZwOpenProcess.
* Partially implemented killing other threads (possible memory
leaks).
* Made a start on a proper implemention of APCs (based on
article in NT insider).
1998-12-08 David Welch <welch@cwcom.net>
* Corrected bug in shell (Read two keypresses and assumed they
where the key going up and down respectively).
* Corrected race in dpc handling.
* Took out cleanup sections in ZwReadFile (now handled by the
APC).
* Disabled broken code in kernel32.

39
reactos/INSTALL Normal file
View File

@@ -0,0 +1,39 @@
1. Build environment
To build the system you need either mingw32 installed on Windows or a
mingw32 cross compiler running on unix.
2. Building
To build from Windows run make. To build from unix, edit rules.mak and change
the PREFIX variable to the correct value for your cross-compiler, then run
'make'.
3. Installation
Installation isn't yet automated, sorry. The system can only be installed on
the first partition which must be formatted for DOS. Set up a directory
structure like the following
make directories C:\reactos,C:\reactos\system32,C:\reactos\system32\drivers
Copy apps/system/shell/shell.exe to C:\reactos\system32
Copy subsys/smss/smss.exe to C:\reactos\system32
Copy apps/system/winlogon/winlogon.exe to C:\reactos\system32
Copy apps/system/services/services.exe to C:\reactos\system32
Copy services/input/keyboard/keyboard.sys to C:\reactos\system32\drivers
Copy services/dd/blue/blue.sys to C:\reactos\system32\drivers
Copy lib/ntdll/ntdll.dll to C:\reactos\system32
Copy lib/kernel32/kernel32.dll to C:\reactos\system32
Copy lib/crtdll/crtdll.dll to C:\reactos\system32
The system can only be started from DOS. Copy the following files,
services/dd/ide/ide.sys, services/fs/vfat/vfatfsd.sys
ntoskrnl/ntoskrnl.exe and loaders/dos/loadros.com, to a suitable
directory, such as C:\. The system can then be booted with the
command 'loadros.com ntoskrnl.exe ide.sys vfatfs.sys'.
You may also want to try running the enhanced shell, cmd.exe, found in
the rosapps CVS module. For more information see the doc directory

460
reactos/Makefile Normal file
View File

@@ -0,0 +1,460 @@
#
# Global makefile
#
#
# Select your host
#
#HOST = mingw32-linux
#HOST = mingw32-windows
PATH_TO_TOP = .
include rules.mak
#
# Required to run the system
#
COMPONENTS = iface_native iface_additional ntoskrnl
BUS = acpi isapnp
DLLS = ntdll kernel32 advapi32 crtdll msvcrt fmifs gdi32 msafd \
ole32 oleaut32 secur32 shell32 user32 ws2_32
SUBSYS = smss win32k csrss
#
# Select the server(s) you want to build
#
#SERVERS = posix linux os2
SERVERS = win32
#
# Select the loader(s) you want to build
#
#LOADERS = boot dos
LOADERS = dos
#
# Select the device drivers and filesystems you want
#
#DEVICE_DRIVERS = beep floppy mouse sound test parallel serial
DEVICE_DRIVERS = vidport vga blue ide null floppy
#INPUT_DRIVERS = keyboard
INPUT_DRIVERS = keyboard mouclass psaux
#FS_DRIVERS = vfat minix ext2 template
FS_DRIVERS = vfat ms np
#NET_DRIVERS = ndis tdi tcpip tditest wshtcpip afd
NET_DRIVERS = ndis tcpip tditest wshtcpip afd
#NET_DEVICE_DRIVERS = ne2000
NET_DEVICE_DRIVERS = ne2000
#
# storage drivers (don't change the order)
#
STORAGE_DRIVERS = class2 scsiport disk
#
# system applications (required for startup)
#
#SYS_APPS = shell winlogon services
SYS_APPS = shell winlogon services
APPS = args hello test cat bench apc shm lpc thread event file gditest \
pteb consume dump_shared_data vmtest regtest alive mstest nptest \
objdir atomtest
#NET_APPS = ping roshttpd telnet
NET_APPS = ping
KERNEL_SERVICES = $(DEVICE_DRIVERS) $(INPUT_DRIVERS) $(FS_DRIVERS) \
$(NET_DRIVERS) $(NET_DEVICE_DRIVERS) $(STORAGE_DRIVERS)
all: rdel$(EXE_POSTFIX) buildno $(COMPONENTS) $(BUS) $(DLLS) \
$(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(SYS_APPS) $(APPS) $(NET_APPS)
.PHONY: all
clean: rdel$(EXE_POSTFIX) buildno_clean $(COMPONENTS:%=%_clean) \
$(BUS:%=%_clean) $(DLLS:%=%_clean) \
$(LOADERS:%=%_clean) $(KERNEL_SERVICES:%=%_clean) $(SUBSYS:%=%_clean) \
$(SYS_APPS:%=%_clean) $(APPS:%=%_clean) $(NET_APPS:%=%_clean)
.PHONY: clean
ifeq ($(HOST),mingw32-linux)
rcopy$(EXE_POSTFIX): rcopy.c
$(HOST_CC) -g -DUNIX_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
endif
ifeq ($(HOST),mingw32-windows)
rcopy$(EXE_POSTFIX): rcopy.c
$(HOST_CC) -g -DDOS_PATHS rcopy.c -o rcopy$(EXE_POSTFIX)
endif
ifeq ($(HOST),mingw32-linux)
rmkdir$(EXE_POSTFIX): rmkdir.c
$(HOST_CC) -g -DUNIX_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
endif
ifeq ($(HOST),mingw32-windows)
rmkdir$(EXE_POSTFIX): rmkdir.c
$(HOST_CC) -g -DDOS_PATHS rmkdir.c -o rmkdir$(EXE_POSTFIX)
endif
rdel$(EXE_POSTFIX): rdel.c
$(HOST_CC) -g rdel.c -liberty -o rdel$(EXE_POSTFIX)
install: rcopy$(EXE_POSTFIX) rmkdir$(EXE_POSTFIX) make_install_dirs autoexec_install \
$(COMPONENTS:%=%_install) $(BUS:%=%_install) \
$(DLLS:%=%_install) $(LOADERS:%=%_install) \
$(KERNEL_SERVICES:%=%_install) $(SUBSYS:%=%_install) \
$(SYS_APPS:%=%_install) $(APPS:%=%_install)
dist: rcopy$(EXE_POSTFIX) clean_dist_dir make_dist_dirs $(COMPONENTS:%=%_dist) \
$(BUS:%=%_dist) $(DLLS:%=%_dist) \
$(LOADERS:%=%_dist) $(KERNEL_SERVICES:%=%_dist) $(SUBSYS:%=%_dist) \
$(SYS_APPS:%=%_dist) $(APPS:%=%_dist) $(NET_APPS:%=%_dist)
#
# Build number generator
#
buildno: include/reactos/version.h
make -C apps/buildno
buildno_clean:
make -C apps/buildno clean
buildno_dist:
buildno_install:
.PHONY: buildno buildno_clean buildno_dist buildno_install
#
# System Applications
#
$(SYS_APPS): %:
make -C apps/system/$*
$(SYS_APPS:%=%_clean): %_clean:
make -C apps/system/$* clean
$(SYS_APPS:%=%_dist): %_dist:
make -C apps/system/$* dist
$(SYS_APPS:%=%_install): %_install:
make -C apps/system/$* install
.PHONY: $(SYS_APPS) $(SYS_APPS:%=%_clean) $(SYS_APPS:%=%_install) $(SYS_APPS:%=%_dist)
#
# Applications
#
$(APPS): %:
make -C apps/$*
$(APPS:%=%_clean): %_clean:
make -C apps/$* clean
$(APPS:%=%_dist): %_dist:
make -C apps/$* dist
$(APPS:%=%_install): %_install:
make -C apps/$* install
.PHONY: $(APPS) $(APPS:%=%_clean) $(APPS:%=%_install) $(APPS:%=%_dist)
#
# Network applications
#
$(NET_APPS): %:
make -C apps/net/$*
$(NET_APPS:%=%_clean): %_clean:
make -C apps/net/$* clean
$(NET_APPS:%=%_dist): %_dist:
make -C apps/net/$* dist
$(NET_APPS:%=%_install): %_install:
make -C apps/net/$* install
.PHONY: $(NET_APPS) $(NET_APPS:%=%_clean) $(NET_APPS:%=%_install) $(NET_APPS:%=%_dist)
#
# Interfaces
#
iface_native:
make -C iface/native
iface_native_clean:
make -C iface/native clean
iface_native_install:
iface_native_dist:
iface_additional:
make -C iface/addsys
iface_additional_clean:
make -C iface/addsys clean
iface_additional_install:
iface_additional_dist:
.PHONY: iface_native iface_native_clean iface_native_install \
iface_native_dist \
iface_additional iface_additional_clean iface_additional_install \
iface_additional_dist
#
# Bus driver rules
#
$(BUS): %:
make -C services/bus/$*
$(BUS:%=%_clean): %_clean:
make -C services/bus/$* clean
$(BUS:%=%_install): %_install:
make -C services/bus/$* install
$(BUS:%=%_dist): %_dist:
make -C services/bus/$* dist
.PHONY: $(BUS) $(BUS:%=%_clean) \
$(BUS:%=%_install) $(BUS:%=%_dist)
#
# Device driver rules
#
$(DEVICE_DRIVERS): %:
make -C services/dd/$*
$(DEVICE_DRIVERS:%=%_clean): %_clean:
make -C services/dd/$* clean
$(DEVICE_DRIVERS:%=%_install): %_install:
make -C services/dd/$* install
$(DEVICE_DRIVERS:%=%_dist): %_dist:
make -C services/dd/$* dist
.PHONY: $(DEVICE_DRIVERS) $(DEVICE_DRIVERS:%=%_clean) \
$(DEVICE_DRIVERS:%=%_install) $(DEVICE_DRIVERS:%=%_dist)
#
# Input driver rules
#
$(INPUT_DRIVERS): %:
make -C services/input/$*
$(INPUT_DRIVERS:%=%_clean): %_clean:
make -C services/input/$* clean
$(INPUT_DRIVERS:%=%_install): %_install:
make -C services/input/$* install
$(INPUT_DRIVERS:%=%_dist): %_dist:
make -C services/input/$* dist
.PHONY: $(INPUT_DRIVERS) $(INPUT_DRIVERS:%=%_clean) \
$(INPUT_DRIVERS:%=%_install) $(INPUT_DRIVERS:%=%_dist)
$(FS_DRIVERS): %:
make -C services/fs/$*
$(FS_DRIVERS:%=%_clean): %_clean:
make -C services/fs/$* clean
$(FS_DRIVERS:%=%_install): %_install:
make -C services/fs/$* install
$(FS_DRIVERS:%=%_dist): %_dist:
make -C services/fs/$* dist
.PHONY: $(FS_DRIVERS) $(FS_DRIVERS:%=%_clean) \
$(FS_DRIVERS:%=%_install) $(FS_DRIVERS:%=%_dist)
#
# Network driver rules
#
$(NET_DRIVERS): %:
make -C services/net/$*
$(NET_DRIVERS:%=%_clean): %_clean:
make -C services/net/$* clean
$(NET_DRIVERS:%=%_install): %_install:
make -C services/net/$* install
$(NET_DRIVERS:%=%_dist): %_dist:
make -C services/net/$* dist
.PHONY: $(NET_DRIVERS) $(NET_DRIVERS:%=%_clean) \
$(NET_DRIVERS:%=%_install) $(NET_DRIVERS:%=%_dist)
$(NET_DEVICE_DRIVERS): %:
make -C services/net/dd/$*
$(NET_DEVICE_DRIVERS:%=%_clean): %_clean:
make -C services/net/dd/$* clean
$(NET_DEVICE_DRIVERS:%=%_install): %_install:
make -C services/net/dd/$* install
$(NET_DEVICE_DRIVERS:%=%_dist): %_dist:
make -C services/net/dd/$* dist
.PHONY: $(NET_DEVICE_DRIVERS) $(NET_DEVICE_DRIVERS:%=%_clean) \
$(NET_DEVICE_DRIVERS:%=%_install) $(NET_DEVICE_DRIVERS:%=%_dist)
#
# storage driver rules
#
$(STORAGE_DRIVERS): %:
make -C services/storage/$*
$(STORAGE_DRIVERS:%=%_clean): %_clean:
make -C services/storage/$* clean
$(STORAGE_DRIVERS:%=%_install): %_install:
make -C services/storage/$* install
$(STORAGE_DRIVERS:%=%_dist): %_dist:
make -C services/storage/$* dist
.PHONY: $(STORAGE_DRIVERS) $(STORAGE_DRIVERS:%=%_clean) \
$(STORAGE_DRIVERS:%=%_install) $(STORAGE_DRIVERS:%=%_dist)
#
# Kernel loaders
#
$(LOADERS): %:
make -C loaders/$*
$(LOADERS:%=%_clean): %_clean:
make -C loaders/$* clean
$(LOADERS:%=%_install): %_install:
make -C loaders/$* install
$(LOADERS:%=%_dist): %_dist:
make -C loaders/$* dist
.PHONY: $(LOADERS) $(LOADERS:%=%_clean) $(LOADERS:%=%_install) \
$(LOADERS:%=%_dist)
#
# Required system components
#
ntoskrnl:
make -C ntoskrnl
ntoskrnl_clean:
make -C ntoskrnl clean
ntoskrnl_install:
make -C ntoskrnl install
ntoskrnl_dist:
make -C ntoskrnl dist
.PHONY: ntoskrnl ntoskrnl_clean ntoskrnl_install ntoskrnl_dist
#
# Required DLLs
#
$(DLLS): %:
make -C lib/$*
$(DLLS:%=%_clean): %_clean:
make -C lib/$* clean
$(DLLS:%=%_install): %_install:
make -C lib/$* install
$(DLLS:%=%_dist): %_dist:
make -C lib/$* dist
.PHONY: $(DLLS) $(DLLS:%=%_clean) $(DLLS:%=%_install) $(DLLS:%=%_dist)
#
# Kernel Subsystems
#
$(SUBSYS): %:
make -C subsys/$*
$(SUBSYS:%=%_clean): %_clean:
make -C subsys/$* clean
$(SUBSYS:%=%_install): %_install:
make -C subsys/$* install
$(SUBSYS:%=%_dist): %_dist:
make -C subsys/$* dist
.PHONY: $(SUBSYS) $(SUBSYS:%=%_clean) $(SUBSYS:%=%_install) \
$(SUBSYS:%=%_dist)
#
# Make an install floppy
#
make_install_dirs:
./rmkdir $(FLOPPY_DIR)/dlls
./rmkdir $(FLOPPY_DIR)/apps
./rmkdir $(FLOPPY_DIR)/drivers
./rmkdir $(FLOPPY_DIR)/subsys
.PHONY: make_install_dirs
autoexec_install: $(FLOPPY_DIR)/autoexec.bat
$(FLOPPY_DIR)/autoexec.bat: bootflop.bat
$(CP) bootflop.bat $(FLOPPY_DIR)/autoexec.bat
#
# Make a distribution saveset
#
clean_dist_dir:
ifeq ($(DOSCLI),yes)
- $(RM) $(DIST_DIR)\dlls\*.dll
- $(RM) $(DIST_DIR)\apps\*.exe
- $(RM) $(DIST_DIR)\drivers\*.sys
- $(RM) $(DIST_DIR)\subsys\*.exe
- $(RMDIR) $(DIST_DIR)\dlls
- $(RMDIR) $(DIST_DIR)\apps
- $(RMDIR) $(DIST_DIR)\drivers
- $(RMDIR) $(DIST_DIR)\subsys
- $(RMDIR) $(DIST_DIR)
else
$(RM) -r $(DIST_DIR)
endif
make_dist_dirs: ./rmkdir
./rmkdir $(DIST_DIR)
./rmkdir $(DIST_DIR)/dlls
./rmkdir $(DIST_DIR)/apps
./rmkdir $(DIST_DIR)/drivers
./rmkdir $(DIST_DIR)/dlls
./rmkdir $(DIST_DIR)/subsys
.PHONY: clean_dist_dir make_dist_dirs
#
#
#
etags:
find . -name "*.[ch]" -print | etags --language=c -
# EOF

15
reactos/NEWS Normal file
View File

@@ -0,0 +1,15 @@
0.0.14: Converted to PE format
All system libraries are now dlls
0.0.13: Mostly bugfixes (I think)
0.0.12: Added support for multiple processes (not really tested)
System calls
kernel32 now compiles (only as a static library)
Fixed invalid tss bug (hopefully)
Added section support
Added some of the ZwxxxVirtual calls
Added prototype caching functions (only the Minix fsd actually
uses them)
Added handle access and type checking
Prototype APC implementation (no support for user APCs)

24
reactos/README Normal file
View File

@@ -0,0 +1,24 @@
About Reactos
1. What is Reactos
A project aiming to make an approximate clone of Windows NT, compatible
with most Windows applications.
The project has a website at http://www.reactos.com/
2. Building Reactos
See the INSTALL file for more details.
3. More information
See the doc subdirectory for some sparse notes
4. Who is responsible
See the CREDITS file
5. Recent developments
See the NEWS file

View File

@@ -0,0 +1,33 @@
#include <windows.h>
extern int main(int args, char* argv[], char* environ[]);
static unsigned int _argc = 0;
static char** _argv = NULL;
static char** _environ = NULL;
int mainCRTStartup(PWSTR args)
{
int nRet;
// SetUnhandledExceptionFilter(NULL);
// _fpreset();
// __GetMainArgs(&_argc, &_argv, &_environ, 0);
nRet = main(_argc, _argv, _environ);
// _cexit();
ExitProcess(nRet);
}
int WinMainCRTStartup()
{
return mainCRTStartup(NULL);
}
void __main(void)
{
}

View File

@@ -0,0 +1,47 @@
#
#
#
PATH_TO_TOP=../..
TARGET_NAME=alive
OBJECTS=\
$(TARGET_NAME).o
LIBRARIES=\
$(PATH_TO_TOP)/lib/kernel32/kernel32.a\
$(PATH_TO_TOP)/lib/crtdll/crtdll.a\
$(PATH_TO_TOP)/lib/user32/user32.a
PROGS=\
$(TARGET_NAME).exe
BASE_CFLAGS = -I$(PATH_TO_TOP)/include
all: $(PROGS)
.phony: all
clean:
- $(RM) $(TARGET_NAME).o $(TARGET_NAME).exe $(TARGET_NAME).sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=$(PATH_TO_TOP)/$(DIST_DIR)/apps/%)
$(PROGS:%=$(PATH_TO_TOP)/$(DIST_DIR)/apps/%): $(PATH_TO_TOP)/$(DIST_DIR)/apps/%: %
$(CP) $* $(PATH_TO_TOP)/$(DIST_DIR)/apps/$*
$(TARGET_NAME).exe: $(OBJECTS)
$(CC)\
$(OBJECTS)\
$(LIBRARIES)\
-o $(TARGET_NAME).exe
$(NM) --numeric-sort $(TARGET_NAME).exe > $(TARGET_NAME).sym
include $(PATH_TO_TOP)/rules.mak

View File

@@ -0,0 +1,48 @@
/* $Id: alive.c,v 1.2 2001/03/26 21:30:20 ea Exp $
*
*/
#include <windows.h>
#include <stdlib.h>
HANDLE StandardOutput = INVALID_HANDLE_VALUE;
CHAR Message [80];
DWORD CharactersToWrite = 0;
DWORD WrittenCharacters = 0;
INT d = 0, h = 0, m = 0, s = 0;
int
main (int argc, char * argv [])
{
StandardOutput = GetStdHandle (STD_OUTPUT_HANDLE);
if (INVALID_HANDLE_VALUE == StandardOutput)
{
return (EXIT_FAILURE);
}
while (TRUE)
{
/* Prepare the message and update it */
CharactersToWrite =
wsprintf (
Message,
"Alive for %dd %dh %d' %d\" \r",
d, h, m, s
);
WriteConsole (
StandardOutput,
Message,
CharactersToWrite,
& WrittenCharacters,
NULL
);
/* suspend the execution for 1s */
Sleep (1000);
/* increment seconds */
++ s;
if (60 == s) { s = 0; ++ m; }
if (60 == m) { m = 0; ++ h; }
if (24 == h) { h = 0; ++ d; }
}
return (EXIT_SUCCESS);
}
/* EOF */

View File

@@ -0,0 +1,87 @@
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <windows.h>
#include <ddk/ntddk.h>
HANDLE OutputHandle;
HANDLE InputHandle;
VOID STDCALL
ApcRoutine(PVOID Context,
PIO_STATUS_BLOCK IoStatus,
ULONG Reserved)
{
printf("(apc.exe) ApcRoutine(Context %p)\n", Context);
}
int main(int argc, char* argv[])
{
NTSTATUS Status;
HANDLE FileHandle;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING FileName;
IO_STATUS_BLOCK IoStatus;
CHAR Buffer[256];
HANDLE EventHandle;
AllocConsole();
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
printf("APC test program\n");
EventHandle = CreateEventW(NULL,
FALSE,
FALSE,
NULL);
if (EventHandle == INVALID_HANDLE_VALUE)
{
printf("Failed to create event\n");
return 0;
}
printf("Opening file\n");
RtlInitUnicodeString(&FileName,
L"\\C:\\a.txt");
InitializeObjectAttributes(&ObjectAttributes,
&FileName,
0,
NULL,
NULL);
printf("Creating file\n");
FileHandle = CreateFileW(L"C:\\a.txt",
FILE_GENERIC_READ | FILE_GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
if (FileHandle == INVALID_HANDLE_VALUE)
{
printf("Open failed\n");
return 0;
}
printf("Reading file\n");
Status = ZwReadFile(FileHandle,
NULL,
(PIO_APC_ROUTINE)ApcRoutine,
(PVOID)0xdeadbeef,
&IoStatus,
Buffer,
256,
NULL,
NULL);
if (!NT_SUCCESS(Status))
{
printf("Read failed\n");
}
printf("Waiting\n");
WaitForSingleObjectEx(EventHandle, INFINITE, TRUE);
printf("Returned from wait\n");
ZwClose(FileHandle);
printf("Program finished\n");
return 0;
}

View File

@@ -0,0 +1,38 @@
#
#
#
PATH_TO_TOP = ../..
CFLAGS = -g
OBJECTS= apc.o
PROGS= apc.exe
BASE_CFLAGS = -I../../include
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a \
../../lib/ntdll/ntdll.a
all: $(PROGS)
.phony: all
clean:
- $(RM) apc.o apc.exe apc.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
apc.exe: $(OBJECTS) $(LIBS)
$(CC) $(OBJECTS) $(LIBS) -o apc.exe
$(NM) --numeric-sort apc.exe > apc.sym
include ../../rules.mak

View File

@@ -0,0 +1,39 @@
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <windows.h>
HANDLE OutputHandle;
HANDLE InputHandle;
void debug_printf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args,fmt);
vsprintf(buffer,fmt,args);
WriteConsoleA(OutputHandle, buffer, strlen(buffer), NULL, NULL);
va_end(args);
}
int main(int argc, char* argv[])
{
int i;
AllocConsole();
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
printf("GetCommandLineA() %s\n",GetCommandLineA());
debug_printf("GetCommandLineA() %s\n",GetCommandLineA());
debug_printf("argc %d\n", argc);
for (i=0; i<argc; i++)
{
debug_printf("Argv[%d]: %x\n",i,argv[i]);
debug_printf("Argv[%d]: '%s'\n",i,argv[i]);
}
return 0;
}

View File

@@ -0,0 +1,34 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS= args.o
PROGS= args.exe
BASE_CFLAGS = -I../../include
all: $(PROGS)
.phony: all
clean:
- $(RM) args.o args.exe args.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
args.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o args.exe
$(NM) --numeric-sort args.exe > args.sym
include ../../rules.mak

View File

@@ -0,0 +1,114 @@
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <ddk/ntddk.h>
#define BUFFER_SIZE 256
int main(int argc, char* argv[])
{
PRTL_ATOM_TABLE AtomTable = NULL;
RTL_ATOM AtomA = -1, AtomB = -1, AtomC = -1;
NTSTATUS Status;
WCHAR Buffer[BUFFER_SIZE];
ULONG NameLength, Data1, Data2;
printf("Atom table test app\n\n");
printf("RtlCreateAtomTable()\n");
Status = RtlCreateAtomTable(37,
&AtomTable);
printf(" Status 0x%08lx\n", Status);
if (NT_SUCCESS(Status))
{
printf(" AtomTable %p\n", AtomTable);
printf("RtlAddAtomToAtomTable()\n");
Status = RtlAddAtomToAtomTable(AtomTable,
L"TestAtomA",
&AtomA);
printf(" Status 0x%08lx\n", Status);
if (NT_SUCCESS(Status))
{
printf(" AtomA 0x%x\n", AtomA);
}
printf("RtlAddAtomToAtomTable()\n");
Status = RtlAddAtomToAtomTable(AtomTable,
L"TestAtomB",
&AtomB);
printf(" Status 0x%08lx\n", Status);
if (NT_SUCCESS(Status))
{
printf(" AtomB 0x%x\n", AtomB);
}
printf("RtlLookupAtomInAtomTable()\n");
Status = RtlLookupAtomInAtomTable(AtomTable,
L"TestAtomA",
&AtomC);
printf(" Status 0x%08lx\n", Status);
if (NT_SUCCESS(Status))
{
printf(" AtomC 0x%x\n", AtomC);
}
printf("RtlPinAtomInAtomTable()\n");
Status = RtlPinAtomInAtomTable(AtomTable,
AtomC);
printf(" Status 0x%08lx\n", Status);
printf("RtlPinAtomInAtomTable()\n");
Status = RtlPinAtomInAtomTable(AtomTable,
AtomC);
printf(" Status 0x%08lx\n", Status);
// printf("RtlDeleteAtomFromAtomTable()\n");
// Status = RtlDeleteAtomFromAtomTable(AtomTable,
// AtomC);
// printf(" Status 0x%08lx\n", Status);
// printf("RtlEmptyAtomTable()\n");
// Status = RtlEmptyAtomTable(AtomTable,
// TRUE);
// printf(" Status 0x%08lx\n", Status);
// printf("RtlLookupAtomInAtomTable()\n");
// Status = RtlLookupAtomInAtomTable(AtomTable,
// L"TestAtomA",
// &AtomC);
// printf(" Status 0x%08lx\n", Status);
printf("RtlQueryAtomInAtomTable()\n");
NameLength = sizeof(WCHAR) * BUFFER_SIZE;
Status = RtlQueryAtomInAtomTable(AtomTable,
AtomC,
&Data1,
&Data2,
Buffer,
&NameLength);
printf(" Status 0x%08lx\n", Status);
if (NT_SUCCESS(Status))
{
printf(" RefCount %ld\n", Data1);
printf(" PinCount %ld\n", Data2);
printf(" NameLength %lu\n", NameLength);
printf(" AtomName: %S\n", Buffer);
}
printf("RtlDestroyAtomTable()\n");
RtlDestroyAtomTable(AtomTable);
printf("Atom table test app finished\n");
}
return(0);
}

View File

@@ -0,0 +1,34 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = atomtest.o
PROGS = atomtest.exe
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a \
../../lib/ntdll/ntdll.a
CLEAN_FILES = atomtest.o atomtest.exe
all: atomtest.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
atomtest.exe: $(OBJECTS) $(LIBS)
$(CC) $(OBJECTS) $(LIBS) -o atomtest.exe
$(NM) --numeric-sort atomtest.exe > atomtest.sym
include ../../rules.mak

View File

@@ -0,0 +1,8 @@
/*
*
*/
int main(int argc, char* argv[])
{
}

View File

@@ -0,0 +1,82 @@
#include <stdio.h>
#include <windows.h>
#define NR_THREADS (30)
DWORD WINAPI
thread_main1(LPVOID param)
{
printf("Thread 1 running (Counter %lu)\n", (DWORD)param);
SleepEx(INFINITE, TRUE);
return 0;
}
DWORD WINAPI
thread_main2(LPVOID param)
{
printf("Thread 2 running (Counter %lu)\n", (DWORD)param);
Sleep(INFINITE);
return 0;
}
int main (void)
{
HANDLE hThread;
DWORD i=0;
DWORD id;
#if 1
printf("Creating %d threads...\n",NR_THREADS*2);
for (i=0;i<NR_THREADS;i++)
{
CreateThread(NULL,
0,
thread_main1,
(LPVOID)i,
0,
&id);
/* CreateThread(NULL,
0,
thread_main2,
(LPVOID)i,
0,
&id);*/
}
printf("All threads created...\n");
/*
* Waiting for threads is not implemented yet.
* If you want to see all threads running, uncomment the
* call to SuspendThread(). The test application will
* freeze after all threads are created.
*/
/* SuspendThread (GetCurrentThread()); */
#else
printf("Creating thread...\n");
hThread = CreateThread(NULL,
0,
thread_main1,
(LPVOID)i,
0,
&id);
printf("Thread created. Waiting for termination...\n");
WaitForSingleObject (hThread,
-1);
CloseHandle (hThread);
printf("Thread terminated...\n");
#endif
printf("Exiting\n");
return 0;
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
PROGS = bench-thread
all: $(PROGS:%=%.exe)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: # $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe)
$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe
$(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe)
$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe
$(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe
bench-thread.exe: bench-thread.c
$(CC) $(CFLAGS) bench-thread.c -lkernel32 -o bench-thread.exe
$(NM) --numeric-sort bench-thread.exe > bench-thread.sym
include ../../rules.mak

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = consume.o
PROGS = consume.exe
LIBS =
CLEAN_FILES = consume.o consume.exe
all: consume.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
consume.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o consume.exe
include ../../rules.mak

View File

@@ -0,0 +1,29 @@
#include <stdio.h>
#include <string.h>
#include <windows.h>
ULONG x[(4 * 1024 * 1024) / 4096];
int main()
{
int i;
PUCHAR BaseAddress;
BaseAddress = VirtualAlloc(NULL,
4 * 1024 * 1024,
MEM_COMMIT,
PAGE_READONLY);
if (BaseAddress == NULL)
{
printf("Failed to allocate virtual memory");
return(1);
}
printf("BaseAddress %p\n", BaseAddress);
for (i = 0; i < ((4 * 1024 * 1024) / 4096); i++)
{
printf("%.6x, ", i*4096);
x[i] = BaseAddress[i*4096];
}
return(0);
}

View File

@@ -0,0 +1,47 @@
#
#
#
PATH_TO_TOP=../..
TARGET_NAME=count
OBJECTS=\
$(TARGET_NAME).o
LIBRARIES=\
$(PATH_TO_TOP)/lib/kernel32/kernel32.a\
$(PATH_TO_TOP)/lib/crtdll/crtdll.a\
$(PATH_TO_TOP)/lib/user32/user32.a
PROGS=\
$(TARGET_NAME).exe
BASE_CFLAGS = -I$(PATH_TO_TOP)/include
all: $(PROGS)
.phony: all
clean:
- $(RM) $(TARGET_NAME).o $(TARGET_NAME).exe $(TARGET_NAME).sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=$(PATH_TO_TOP)/$(DIST_DIR)/apps/%)
$(PROGS:%=$(PATH_TO_TOP)/$(DIST_DIR)/apps/%): $(PATH_TO_TOP)/$(DIST_DIR)/apps/%: %
$(CP) $* $(PATH_TO_TOP)/$(DIST_DIR)/apps/$*
$(TARGET_NAME).exe: $(OBJECTS)
$(CC)\
$(OBJECTS)\
$(LIBRARIES)\
-o $(TARGET_NAME).exe
$(NM) --numeric-sort $(TARGET_NAME).exe > $(TARGET_NAME).sym
include $(PATH_TO_TOP)/rules.mak

View File

@@ -0,0 +1,15 @@
/* $Id: count.c,v 1.1 2001/03/26 21:30:20 ea Exp $
*
*/
#include <stdlib.h>
int n = 0;
int
main (int argc, char * argv [])
{
while (1) printf ("%d ", n ++ );
return (0);
}
/* EOF */

View File

@@ -0,0 +1,9 @@
#include <stdio.h>
#include <ntddk.h>
#include <napi/shared_data.h>
int main()
{
printf("TickCountLow: %x\n",
((PKUSER_SHARED_DATA)USER_SHARED_DATA_BASE)->TickCountLow);
}

View File

@@ -0,0 +1,32 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = dump_shared_data.o
PROGS = dump_shared_data.exe
LIBS =
CLEAN_FILES = dump_shared_data.o dump_shared_data.exe
all: dump_shared_data.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
floppy: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
dump_shared_data.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o dump_shared_data.exe
BASE_CFLAGS = -I../../include
include ../../rules.mak

View File

@@ -0,0 +1,33 @@
#include <windows.h>
#include <stdio.h>
HANDLE events[2];
DWORD WINAPI thread( LPVOID crap )
{
SetEvent( events[0] );
if( crap )
SetEvent( events[1] );
return 1;
}
int main( void )
{
DWORD id, Status;
printf( "Creating events\n" );
events[0] = CreateEvent( 0, TRUE, FALSE, 0 );
events[1] = CreateEvent( 0, TRUE, FALSE, 0 );
printf( "Created events\n" );
CreateThread( 0, 0, thread, 0, 0, &id );
printf( "WaitForSingleObject %s\n", ( WaitForSingleObject( events[0], INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
ResetEvent( events[0] );
CreateThread( 0, 0, thread, 0, 0, &id );
printf( "WaitForMultipleObjects with waitall = FALSE %s\n", ( WaitForMultipleObjects( 2, events, FALSE, INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
ResetEvent( events[0] );
CreateThread( 0, 0, thread, (void *)1, 0, &id );
Status = WaitForMultipleObjects( 2, events, TRUE, INFINITE );
printf( "WaitForMultipleObjects with waitall = TRUE %s\n", ( Status == WAIT_OBJECT_0 || Status == WAIT_OBJECT_0 + 1 ? "worked" : "failed" ) );
ResetEvent( events[0] );
printf( "WaitForSingleObject with timeout %s\n", ( WaitForSingleObject( events[0], 100 ) == WAIT_TIMEOUT ? "worked" : "failed" ) );
return 0;
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
PROGS = event
all: $(PROGS:%=%.exe)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: # $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe)
$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe
$(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe)
$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe
$(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe
event.exe: event.c
$(CC) $(CFLAGS) event.c -lkernel32 -o event.exe
$(NM) --numeric-sort event.exe > event.sym
include ../../rules.mak

View File

@@ -0,0 +1,43 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS= file.o
PROGS= file.exe
BASE_CFLAGS = -I../../include
all: $(PROGS)
.phony: all
clean:
- $(RM) file.o file.exe file.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
file.exe: $(OBJECTS)
$(CC) $(OBJECTS) $(BASE_CFLAGS) -o file.exe
$(NM) --numeric-sort file.exe > file.sym
include ../../rules.mak

View File

@@ -0,0 +1,54 @@
/***********************************************************
* File read/write test utility *
**********************************************************/
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
HANDLE file;
char buffer[4096];
DWORD wrote;
int c;
file = CreateFile("test.dat",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
0,
0);
if (file == INVALID_HANDLE_VALUE)
{
printf("Error opening file (Status %x)\n", GetLastError());
return 1;
}
for( c = 0; c < sizeof( buffer ); c++ )
buffer[c] = (char)c;
printf("Writing file\n");
if (WriteFile( file, buffer, 4096, &wrote, NULL) == FALSE)
{
printf("Error writing file (Status %x)\n", GetLastError());
exit(2);
}
printf("Reading file\n");
SetFilePointer( file, 0, 0, FILE_BEGIN );
if (ReadFile( file, buffer, 4096, &wrote, NULL) == FALSE)
{
printf("Error reading file (Status %x)\n", GetLastError());
exit(3);
}
for( c = 0; c < sizeof( buffer ); c++ )
if( buffer[c] != (char)c )
{
printf( "Error: data read back is not what was written\n" );
CloseHandle( file );
return 0;
}
printf("Finished, works fine\n");
CloseHandle( file );
return 0;
}

View File

@@ -0,0 +1,39 @@
/***********************************************************
* File read/write test utility *
**********************************************************/
#include <windows.h>
#include <iostream>
#include <stdlib.h>
int main( void )
{
HANDLE file = CreateFile( "test.dat", GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
char buffer[4096];
if( file == INVALID_HANDLE_VALUE )
{
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, buffer, 4096, NULL );
cout << "Error opening file: " << buffer << endl;
return 1;
}
DWORD wrote;
for( int c = 0; c < 1024; c++ )
if( WriteFile( file, buffer, 4096, &wrote, NULL ) == FALSE )
{
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, buffer, 4096, NULL );
cout << "Error writing file: " << buffer << endl;
exit(2);
}
cout << "File written, trying to read now" << endl;
for( int c = 0; c < 1024; c++ )
if( ReadFile( file, buffer, 4096, &wrote, NULL ) == FALSE )
{
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, buffer, 4096, NULL );
cout << "Error reading file: " << buffer << endl;
exit(3);
}
cout << "Test passed" << endl;
return 0;
}

View File

@@ -0,0 +1,131 @@
/*
* gditest
*/
#include <windows.h>
extern BOOL STDCALL GdiDllInitialize(HANDLE hInstance, DWORD Event, LPVOID Reserved);
void __stdcall Background (HDC Desktop)
{
HPEN Pen;
int x, y;
Pen = CreatePen(PS_SOLID, 1, RGB(64, 64, 128));
SelectObject (Desktop, Pen);
MoveToEx (Desktop, 0, 0, NULL);
LineTo (Desktop, 640, 480);
for (y = 480, x = 0; x < 640; x+=2)
{
MoveToEx (Desktop, 0, 0, NULL);
LineTo (Desktop, x, y);
}
for (y = 0, x = 640; y < 480; y+=2)
{
MoveToEx (Desktop, 0, 0, NULL);
LineTo (Desktop, x, y);
}
}
int main (void)
{
HDC Desktop, MyDC, DC24;
HPEN RedPen, GreenPen, BluePen, WhitePen;
HBITMAP MyBitmap, DIB24;
HFONT hf, tf;
BITMAPINFOHEADER BitInf;
BITMAPINFO BitPalInf;
printf("Entering GDITest..\n");
GdiDllInitialize (NULL, DLL_PROCESS_ATTACH, NULL);
// Set up a DC called Desktop that accesses DISPLAY
Desktop = CreateDCA("DISPLAY", NULL, NULL, NULL);
if (Desktop == NULL)
return 1;
// Background
Background (Desktop);
// Create a blue pen and select it into the DC
BluePen = CreatePen(PS_SOLID, 8, RGB(0, 0, 0xff));
SelectObject(Desktop, BluePen);
// Draw a shape on the DC
MoveToEx(Desktop, 50, 50, NULL);
LineTo(Desktop, 200, 60);
LineTo(Desktop, 200, 300);
LineTo(Desktop, 50, 50);
MoveToEx(Desktop, 50, 50, NULL);
LineTo(Desktop, 200, 50);
WhitePen = CreatePen(PS_SOLID, 3, RGB(0xff, 0xff, 0xff));
SelectObject(Desktop, GreenPen);
MoveToEx(Desktop, 20, 70, NULL);
LineTo(Desktop, 500, 70);
MoveToEx(Desktop, 70, 20, NULL);
LineTo(Desktop, 70, 150);
// Test font support
GreenPen = CreatePen(PS_SOLID, 3, RGB(0, 0xff, 0));
RedPen = CreatePen(PS_SOLID, 3, RGB(0xff, 0, 0));
hf = CreateFontA(24, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE,
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Helmet");
SelectObject(Desktop, hf);
SetTextColor(Desktop, RGB(0xff, 0, 0));
TextOutA(Desktop, 70, 70, "React", 5);
SetTextColor(Desktop, RGB(0, 0xff, 0));
TextOutA(Desktop, 140, 70, "OS", 2);
tf = CreateFontA(14, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE,
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons");
SelectObject(Desktop, tf);
SetTextColor(Desktop, RGB(0xff, 0xff, 0xff));
TextOutA(Desktop, 70, 90, "This is a test of ReactOS text, using the FreeType 2 library!", 61);
// TEST 1: Copy from the VGA into a device compatible DC, draw on it, then blt it to the VGA again
MyDC = CreateCompatibleDC(Desktop);
MyBitmap = CreateCompatibleBitmap(Desktop, 151, 251);
SelectObject(MyDC, MyBitmap);
BitBlt(MyDC, 0, 0, 151, 251, Desktop, 50, 50, SRCCOPY); // can we say 151, 251 since bottom corner is not inclusive?
SelectObject(MyDC, GreenPen);
Rectangle(MyDC, 10, 10, 50, 50);
// TEST 2: Copy from the device compatible DC into a 24BPP bitmap, draw on it, then blt to the VGA again
BitInf.biSize = sizeof(BITMAPINFOHEADER);
BitInf.biWidth = 152;
BitInf.biHeight = -252; // it's top down (since BI_RGB is used, the sign is operative of direction)
BitInf.biPlanes = 1;
BitInf.biBitCount = 24;
BitInf.biCompression = BI_RGB;
BitInf.biSizeImage = 0;
BitInf.biXPelsPerMeter = 0;
BitInf.biYPelsPerMeter = 0;
BitInf.biClrUsed = 0;
BitInf.biClrImportant = 0;
BitPalInf.bmiHeader = BitInf;
DIB24 = (HBITMAP) CreateDIBSection(NULL, &BitPalInf, DIB_RGB_COLORS, NULL, NULL, 0);
DC24 = CreateCompatibleDC(NULL);
SelectObject(DC24, DIB24);
BitBlt(DC24, 0, 0, 101, 201, MyDC, 0, 0, SRCCOPY);
SelectObject(DC24, RedPen);
Rectangle(DC24, 80, 90, 100, 110);
MoveToEx(DC24, 80, 90, NULL);
LineTo(DC24, 100, 110);
BitBlt(Desktop, 200, 200, 110, 120, DC24, 0, 0, SRCCOPY);
Sleep( 990000 ); // fixme delay only 10000 (for 10 seconds)
// Free up everything
DeleteDC(Desktop);
DeleteDC(MyDC);
return 0;
}

View File

@@ -0,0 +1,35 @@
#
#
#
PATH_TO_TOP = ../..
PROGS = gditest
OBJECTS =
LIBS= ../../lib/kernel32/kernel32.a ../../lib/gdi32/gdi32.a
CFLAGS = -I../../include
all: $(PROGS:%=%.exe)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe)
$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe
$(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe)
$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe
$(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe
gditest.exe: gditest.c
$(CC) $(CFLAGS) gditest.c $(LIBS) -o gditest.exe
$(NM) --numeric-sort gditest.exe > gditest.sym
include ../../rules.mak

View File

@@ -0,0 +1,8 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
printf("Hello world\n");
return(0);
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = hello.o
PROGS = hello.exe
LIBS =
CLEAN_FILES = hello.o hello.exe
all: hello.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
hello.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o hello.exe
include ../../rules.mak

View File

@@ -0,0 +1,205 @@
/* $Id: conport.c,v 1.6 2000/04/25 23:22:46 ea Exp $
*
* reactos/apps/lpc/conport.c
*
* To be run in a real WNT 4.0 system with
* "\SmApiPort" as argument. Do not try to
* connect to "\Windows\ApiPort" since that
* reboots immeditely.
*
* Use Russinovich' HandleEx to verify
* conport.exe owns two unnamed LPC ports:
* the one created by kernel32.dll connecting
* to csrss.exe, and one connected to here.
*
* 19990627 (Emanuele Aliberti)
* Initial implementation.
* 19990704 (EA)
* Dump object's attributes moved in dumpinfo.c.
*/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define PROTO_LPC
#include <ddk/ntddk.h>
#include "dumpinfo.h"
#define LPC_CONNECT_FLAG1 0x00000001
#define LPC_CONNECT_FLAG2 0x00000010
#define LPC_CONNECT_FLAG3 0x00000100
#define LPC_CONNECT_FLAG4 0x00001000
#define LPC_CONNECT_FLAG5 0x00010000
NTSTATUS
(STDCALL * ConnectPort)(
OUT PHANDLE PortHandle,
IN PUNICODE_STRING PortName,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN DWORD Unknown3,
IN DWORD Unknown4,
IN DWORD Unknown5,
IN DWORD Unknown6,
IN ULONG Flags
);
NTSTATUS
(STDCALL * QueryObject)(
IN HANDLE ObjectHandle,
IN CINT ObjectInformationClass,
OUT PVOID ObjectInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
NTSTATUS
(STDCALL * YieldExecution)(VOID);
#define BUF_SIZE 1024
#define MAXARG 1000000
VOID
TryConnectPort(char *port_name)
{
DWORD Status = 0;
HANDLE Port = 0;
int i;
UNICODE_STRING PortName;
OBJECT_ATTRIBUTES ObjectAttributes;
WORD Name [BUF_SIZE] = {0};
int dwx = 0;
char * port_name_save = port_name;
/*
* Convert the port's name to Unicode.
*/
for (
PortName.Length = 0;
( *port_name
&& (PortName.Length < BUF_SIZE)
);
)
{
Name[PortName.Length++] = (WORD) *port_name++;
}
Name[PortName.Length] = 0;
PortName.Length = PortName.Length * sizeof (WORD);
PortName.MaximumLength = PortName.Length + sizeof (WORD);
PortName.Buffer = (PWSTR) Name;
/*
* Prepare the port object attributes.
*/
ObjectAttributes.Length =
sizeof (OBJECT_ATTRIBUTES);
ObjectAttributes.RootDirectory =
NULL;
ObjectAttributes.ObjectName =
NULL /*& PortName */;
ObjectAttributes.Attributes =
OBJ_CASE_INSENSITIVE;
ObjectAttributes.SecurityDescriptor =
NULL;
ObjectAttributes.SecurityQualityOfService =
NULL;
/*
* Try to issue a connection request.
*/
Port = 0;
Status = ConnectPort(
& Port, /* & PortHandle */
& PortName, /* & PortName */
& ObjectAttributes, /* & PortAttributes */
NULL, /* & SecurityQos */
NULL, /* & SectionInfo */
NULL, /* & MapInfo */
NULL, /* & MaxMessageSize */
LPC_CONNECT_FLAG5 /* & ConnectInfoLength */
);
if (Status == STATUS_SUCCESS)
{
DumpInfo(
Name,
Status,
"connected",
Port
);
/* Hot waiting */
for (dwx=0; dwx<MAXARG; ++dwx)
{
YieldExecution();
}
if (FALSE == CloseHandle(Port))
{
printf(
"Could not close the port handle %08X.\n",
Port
);
}
return;
}
printf(
"Connection to port \"%s\" failed (Status = %08X).\n",
port_name_save,
Status
);
}
main( int argc, char * argv[] )
{
HINSTANCE ntdll;
if (argc != 2)
{
printf("WNT LPC Port Connector\n");
printf("Usage: %s [port_name]\n",argv[0]);
exit(EXIT_FAILURE);
}
printf("LoadLibrary(NTDLL)\n");
ntdll = LoadLibrary("NTDLL");
if (ntdll == NULL)
{
printf("Could not load NTDLL\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtConnectPort)\n");
ConnectPort = (VOID*) GetProcAddress(
ntdll,
"NtConnectPort"
);
if (ConnectPort == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtConnectPort\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtQueryObject)\n");
QueryObject = (VOID*) GetProcAddress(
ntdll,
"NtQueryObject"
);
if (QueryObject == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtQueryObject\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtYieldExecution)\n");
YieldExecution = (VOID*) GetProcAddress(
ntdll,
"NtYieldExecution"
);
if (YieldExecution == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtYieldExecution\n");
return EXIT_FAILURE;
}
printf("TryConnectPort(%s)\n",argv[1]);
TryConnectPort(argv[1]);
printf("Done\n");
return EXIT_SUCCESS;
}
/* EOF */

View File

@@ -0,0 +1,192 @@
/* $Id: creport.c,v 1.2 1999/07/17 23:10:12 ea Exp $
*
* reactos/apps/lpc/creport.c
*
* To be run in a real WNT 4.0 system to
* create an LPC named port.
*
* Use Russinovich' HandleEx to verify
* creport.exe owns the named LPC port
* you asked to create.
*/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define PROTO_LPC
#include <ddk/ntddk.h>
#include "dumpinfo.h"
#define LPC_CONNECT_FLAG1 0x00000001
#define LPC_CONNECT_FLAG2 0x00000010
#define LPC_CONNECT_FLAG3 0x00000100
#define LPC_CONNECT_FLAG4 0x00001000
#define LPC_CONNECT_FLAG5 0x00010000
NTSTATUS
(STDCALL * CreatePort)(
/*OUT PHANDLE PortHandle,*/
PVOID Buffer,
IN POBJECT_ATTRIBUTES PortAttributes OPTIONAL,
IN ACCESS_MASK DesiredAccess,
IN DWORD Unknown3,
IN ULONG Flags
);
NTSTATUS
(STDCALL * QueryObject)(
IN HANDLE ObjectHandle,
IN CINT ObjectInformationClass,
OUT PVOID ObjectInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
NTSTATUS
(STDCALL * YieldExecution)(VOID);
#define BUF_SIZE 1024
#define MAXARG 5000000
VOID
TryCreatePort(char *port_name)
{
DWORD Status = 0;
HANDLE Port = 0;
int i;
UNICODE_STRING PortName;
OBJECT_ATTRIBUTES ObjectAttributes;
WORD Name [BUF_SIZE] = {0};
int dwx = 0;
char * port_name_save = port_name;
/*
* Convert the port's name to Unicode.
*/
for (
PortName.Length = 0;
( *port_name
&& (PortName.Length < BUF_SIZE)
);
)
{
Name[PortName.Length++] = (WORD) *port_name++;
}
Name[PortName.Length] = 0;
PortName.Length = PortName.Length * sizeof (WORD);
PortName.MaximumLength = PortName.Length + sizeof (WORD);
PortName.Buffer = (PWSTR) Name;
/*
* Prepare the port object attributes.
*/
ObjectAttributes.Length =
sizeof (OBJECT_ATTRIBUTES);
ObjectAttributes.RootDirectory =
NULL;
ObjectAttributes.ObjectName =
& PortName;
ObjectAttributes.Attributes =
0; //OBJ_CASE_INSENSITIVE --> STATUS_INVALID_PARAMETER ==> case sensitive!;
ObjectAttributes.SecurityDescriptor =
NULL;
ObjectAttributes.SecurityQualityOfService =
NULL;
/*
* Try to issue a connection request.
*/
Port = 0;
Status = CreatePort(
& Port,
& ObjectAttributes,
0, /* ACCESS_MASK? */
0, /* Unknown3 */
LPC_CONNECT_FLAG5
);
if (Status == STATUS_SUCCESS)
{
DumpInfo(
Name,
Status,
"created",
Port
);
/* Hot waiting */
for (dwx=0; dwx<MAXARG; ++dwx)
{
YieldExecution();
}
if (FALSE == CloseHandle(Port))
{
printf(
"Could not close the port handle %08X.\n",
Port
);
}
return;
}
printf(
"Creating port \"%s\" failed (Status = %08X).\n",
port_name_save,
Status
);
}
main( int argc, char * argv[] )
{
HINSTANCE ntdll;
if (argc != 2)
{
printf("WNT LPC Port Creator\n");
printf("Usage: %s [port_name]\n",argv[0]);
exit(EXIT_FAILURE);
}
printf("LoadLibrary(NTDLL)\n");
ntdll = LoadLibrary("NTDLL");
if (ntdll == NULL)
{
printf("Could not load NTDLL\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtCreatePort)\n");
CreatePort = (VOID*) GetProcAddress(
ntdll,
"NtCreatePort"
);
if (CreatePort == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtCreatePort\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtQueryObject)\n");
QueryObject = (VOID*) GetProcAddress(
ntdll,
"NtQueryObject"
);
if (QueryObject == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtQueryObject\n");
return EXIT_FAILURE;
}
printf("GetProcAddress(NTDLL.NtYieldExecution)\n");
YieldExecution = (VOID*) GetProcAddress(
ntdll,
"NtYieldExecution"
);
if (YieldExecution == NULL)
{
FreeLibrary(ntdll);
printf("Could not find NTDLL.NtYieldExecution\n");
return EXIT_FAILURE;
}
printf("TryCreatePort(%s)\n",argv[1]);
TryCreatePort(argv[1]);
printf("Done\n");
return EXIT_SUCCESS;
}
/* EOF */

View File

@@ -0,0 +1,239 @@
/* $Id: dumpinfo.c,v 1.2 1999/07/17 23:10:12 ea Exp $
*
* reactos/apps/lpc/dumpinfo.c
*
* ReactOS Operating System
*
* Dump a kernel object's attributes by its handle.
*
* 19990627 (Emanuele Aliberti)
* Initial implementation.
* 19990704 (EA)
* Added code to find the basic information buffer size
* for the LPC port object.
* 19990710 (EA)
*
*/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ddk/ntddk.h>
#define BUF_SIZE 1024
#define MAX_BASIC_INFO_SIZE 512
extern
NTSTATUS
(STDCALL * QueryObject)(
IN HANDLE ObjectHandle,
IN CINT ObjectInformationClass,
OUT PVOID ObjectInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
extern
NTSTATUS
(STDCALL * QueryInformationPort)(
IN HANDLE PortHandle,
IN CINT PortInformationClass, /* guess */
OUT PVOID PortInformation, /* guess */
IN ULONG PortInformationLength, /* guess */
OUT PULONG ReturnLength /* guess */
);
/*
static
VOID
DumpBuffer(
char *Name,
BYTE *buffer,
ULONG size
)
{
register ULONG i = 0;
printf("%s [%d] = ",Name,size);
for ( i = 0;
i != size;
++i
)
{
printf("%02X",buffer[i]);
}
printf("\n");
}
*/
VOID
DumpInfo (
LPCWSTR Name,
NTSTATUS Status,
LPCWSTR Comment,
HANDLE Port
)
{
BYTE ObjectInformation [BUF_SIZE] = {0};
ULONG ResultLength;
wprintf(
L"Port \"%s\" %s:\n",
Name,
Comment
);
printf("\tStatus = %08X\n",Status);
printf("\tPort = %08X\n\n",Port);
/*
* Query object information.
*/
printf("Basic Information:\n");
Status = QueryObject(
Port,
ObjectBasicInformation,
ObjectInformation,
sizeof (LPC_PORT_BASIC_INFORMATION),
& ResultLength
);
if (Status == STATUS_SUCCESS)
{
PLPC_PORT_BASIC_INFORMATION i;
i = (PLPC_PORT_BASIC_INFORMATION) ObjectInformation;
printf( "\tUnknown01 = 0x%08X\n", i->Unknown0 );
printf( "\tUnknown02 = 0x%08X\n", i->Unknown1 );
printf( "\tUnknown03 = 0x%08X\n", i->Unknown2 );
printf( "\tUnknown04 = 0x%08X\n", i->Unknown3 );
printf( "\tUnknown05 = 0x%08X\n", i->Unknown4 );
printf( "\tUnknown06 = 0x%08X\n", i->Unknown5 );
printf( "\tUnknown07 = 0x%08X\n", i->Unknown6 );
printf( "\tUnknown08 = 0x%08X\n", i->Unknown7 );
printf( "\tUnknown09 = 0x%08X\n", i->Unknown8 );
printf( "\tUnknown10 = 0x%08X\n", i->Unknown9 );
printf( "\tUnknown11 = 0x%08X\n", i->Unknown10 );
printf( "\tUnknown12 = 0x%08X\n", i->Unknown11 );
printf( "\tUnknown13 = 0x%08X\n", i->Unknown12 );
printf( "\tUnknown14 = 0x%08X\n", i->Unknown13 );
}
else
{
printf("\tStatus = %08X\n",Status);
}
printf("Type Information:\n");
Status = QueryObject(
Port,
ObjectTypeInformation,
ObjectInformation,
sizeof ObjectInformation,
& ResultLength
);
if (Status == STATUS_SUCCESS)
{
OBJECT_TYPE_INFORMATION * i;
i = (OBJECT_TYPE_INFORMATION *) ObjectInformation;
wprintf(
L"\tName: \"%s\"\n",
(i->Name.Length ? i->Name.Buffer : L"")
);
/*
FIXME: why this always raise an access violation exception?
wprintf(
L"\tType: \"%s\"\n",
(i->Type.Length ? i->Type.Buffer : L"")
);
/**/
printf(
"\tTotal Handles: %d\n",
i->TotalHandles
);
printf(
"\tReference Count: %d\n",
i->ReferenceCount
);
}
else
{
printf("\tStatus = %08X\n",Status);
}
printf("Name Information:\n");
Status = QueryObject(
Port,
ObjectNameInformation,
ObjectInformation,
sizeof ObjectInformation,
& ResultLength
);
if (Status == STATUS_SUCCESS)
{
OBJECT_NAME_INFORMATION * i;
i = (OBJECT_NAME_INFORMATION *) ObjectInformation;
wprintf(
L"\tName: \"%s\"\n",
(i->Name.Length ? i->Name.Buffer : L"")
);
}
else
{
printf("\tStatus = %08X\n",Status);
}
printf("Data Information:\n");
Status = QueryObject(
Port,
ObjectDataInformation,
ObjectInformation,
sizeof ObjectInformation,
& ResultLength
);
if (Status == STATUS_SUCCESS)
{
OBJECT_DATA_INFORMATION * i;
i = (OBJECT_DATA_INFORMATION *) ObjectInformation;
printf(
"\tInherit Handle: %s\n",
(i->bInheritHandle ? "TRUE" : "FALSE")
);
printf(
"\tProtect from Close: %s\n",
(i->bProtectFromClose ? "TRUE" : "FALSE")
);
}
else
{
printf("\tStatus = %08X\n",Status);
}
//---
printf("Port Information:\n");
/* Status = QueryInformationPort(
Port,
1, /* info class * /
ObjectInformation,
sizeof ObjectInformation,
& ResultLength
);
if (Status == STATUS_SUCCESS)
{
DWORD * i = ObjectInformation;
int j = 0;
while (j < ResultLength / sizeof (DWORD))
{
printf("\t%08X\n",i[j]);
++j;
}
}
else
{
printf("\tStatus = %08X\n",Status);
}
*/
}
/* EOF */

View File

@@ -0,0 +1,8 @@
VOID
DumpInfo (
LPCWSTR Name,
NTSTATUS Status,
LPCWSTR Comment,
HANDLE Port
);

View File

@@ -0,0 +1,75 @@
/* $Id: lpcclt.c,v 1.7 2000/06/29 23:35:09 dwelch Exp $
*
* DESCRIPTION: Simple LPC Client
* PROGRAMMER: David Welch
*/
#include <ddk/ntddk.h>
#include <windows.h>
#include <napi/lpc.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
HANDLE OutputHandle;
HANDLE InputHandle;
void debug_printf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args,fmt);
vsprintf(buffer,fmt,args);
WriteConsoleA(OutputHandle, buffer, strlen(buffer), NULL, NULL);
va_end(args);
}
int main(int argc, char* argv[])
{
UNICODE_STRING PortName;
NTSTATUS Status;
HANDLE PortHandle;
LPC_MAX_MESSAGE Request;
ULONG ConnectInfoLength;
printf("(lpcclt.exe) Lpc client\n");
RtlInitUnicodeString(&PortName, L"\\TestPort");
printf("(lpcclt.exe) Connecting to port \"\\TestPort\"\n");
ConnectInfoLength = 0;
Status = NtConnectPort(&PortHandle,
&PortName,
NULL,
0,
0,
0,
NULL,
&ConnectInfoLength);
if (!NT_SUCCESS(Status))
{
printf("(lpcclt.exe) Failed to connect (Status = 0x%08X)\n", Status);
return EXIT_FAILURE;
}
strcpy(Request.Data, GetCommandLineA());
Request.Header.DataSize = strlen(Request.Data);
Request.Header.MessageSize = sizeof(LPC_MESSAGE_HEADER) +
Request.Header.DataSize;
printf("(lpcclt.exe) Sending message \"%s\"\n",
(char *) Request.Data);
Status = NtRequestPort(PortHandle,
&Request.Header);
if (!NT_SUCCESS(Status))
{
printf("(lpcclt.exe) Failed to send request (Status = 0x%8X)\n",
Status);
return EXIT_FAILURE;
}
printf("(lpcclt.exe) Succeeded\n");
return EXIT_SUCCESS;
}

View File

@@ -0,0 +1,111 @@
/* $Id: lpcsrv.c,v 1.7 2000/06/29 23:35:10 dwelch Exp $
*
* DESCRIPTION: Simple LPC Server
* PROGRAMMER: David Welch
*/
#include <ddk/ntddk.h>
#include <windows.h>
#include <napi/lpc.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
HANDLE OutputHandle;
HANDLE InputHandle;
void debug_printf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args,fmt);
vsprintf(buffer,fmt,args);
WriteConsoleA(OutputHandle, buffer, strlen(buffer), NULL, NULL);
va_end(args);
}
int main(int argc, char* argv[])
{
UNICODE_STRING PortName;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
HANDLE NamedPortHandle;
HANDLE PortHandle;
LPC_MAX_MESSAGE ConnectMsg;
printf("(lpcsrv.exe) Lpc test server\n");
RtlInitUnicodeString(&PortName, L"\\TestPort");
InitializeObjectAttributes(&ObjectAttributes,
&PortName,
0,
NULL,
NULL);
printf("(lpcsrv.exe) Creating port\n");
Status = NtCreatePort(&NamedPortHandle,
&ObjectAttributes,
0,
0,
0);
if (!NT_SUCCESS(Status))
{
printf("(lpcsrv.exe) Failed to create port (Status = 0x%08lX)\n", Status);
return EXIT_FAILURE;
}
printf("(lpcsrv.exe) Listening for connections\n");
Status = NtListenPort(NamedPortHandle,
&ConnectMsg.Header);
if (!NT_SUCCESS(Status))
{
printf("(lpcsrv.exe) Failed to listen for connections (Status = 0x%08lX)\n", Status);
return EXIT_FAILURE;
}
printf("(lpcsrv.exe) Accepting connections\n");
Status = NtAcceptConnectPort(&PortHandle,
NamedPortHandle,
NULL,
1,
0,
NULL);
if (!NT_SUCCESS(Status))
{
printf("(lpcsrv.exe) Failed to accept connection (Status = 0x%08lX)\n", Status);
return EXIT_FAILURE;
}
printf("(lpcsrv.exe) Completing connection\n");
Status = NtCompleteConnectPort(PortHandle);
if (!NT_SUCCESS(Status))
{
printf("(lpcsrv.exe) Failed to complete connection (Status = 0x%08lX)\n", Status);
return EXIT_FAILURE;
}
for(;;)
{
LPC_MAX_MESSAGE Request;
Status = NtReplyWaitReceivePort(PortHandle,
0,
NULL,
&Request.Header);
if (!NT_SUCCESS(Status))
{
printf("(lpcsrv.exe) Failed to receive request (Status = 0x%08lX)\n", Status);
return EXIT_FAILURE;
}
printf("(lpcsrv.exe) Message contents are <%s>\n",
Request.Data);
}
return EXIT_SUCCESS;
}
/* EOF */

View File

@@ -0,0 +1,43 @@
#
#
#
PATH_TO_TOP = ../..
SRV_OBJECTS= lpcsrv.o
CLT_OBJECTS= lpcclt.o
PROGS= lpcsrv.exe lpcclt.exe
BASE_CFLAGS = -I../../include
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a \
../../lib/ntdll/ntdll.a
all: $(PROGS)
.phony: all
clean:
- $(RM) lpcsrv.o lpcsrv.exe lpcsrv.sym lpcclt.o lpcclt.exe lpcsrv.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
lpcsrv.exe: $(SRV_OBJECTS) $(LIBS)
$(CC) $(SRV_OBJECTS) $(LIBS) -o lpcsrv.exe
$(NM) --numeric-sort lpcsrv.exe > lpcsrv.sym
lpcclt.exe: $(CLT_OBJECTS) $(LIBS)
$(CC) $(CLT_OBJECTS) $(LIBS) -o lpcclt.exe
$(NM) --numeric-sort lpcclt.exe > lpcclt.sym
include ../../rules.mak

View File

@@ -0,0 +1,42 @@
#
#
#
PATH_TO_TOP = ../..
SRV_OBJECTS = msserver.o
CLT_OBJECTS = msclient.o
PROGS = msserver.exe msclient.exe
BASE_CFLAGS = -I../../include
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a
all: $(PROGS)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
msserver.exe: $(SRV_OBJECTS) $(LIBS)
$(CC) $(SRV_OBJECTS) $(LIBS) -o msserver.exe
$(NM) --numeric-sort msserver.exe > msserver.sym
msclient.exe: $(CLT_OBJECTS) $(LIBS)
$(CC) $(CLT_OBJECTS) $(LIBS) -o msclient.exe
$(NM) --numeric-sort msclient.exe > msclient.sym
include ../../rules.mak

View File

@@ -0,0 +1,46 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>
#define BUFSIZE 1024
#define MAILSLOT_TIMEOUT 1000
int main(int argc, char *argv[])
{
HANDLE hMailslot;
LPSTR lpszMailslotName = "\\\\.\\MAILSLOT\\mymailslot";
LPSTR lpszTestMessage = "Mailslot test message!";
DWORD cbLength, cbWritten;
hMailslot = CreateFile(lpszMailslotName,
GENERIC_WRITE,
FILE_SHARE_READ,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
(HANDLE)NULL);
printf("hMailslot %x\n", (DWORD)hMailslot);
if (hMailslot == INVALID_HANDLE_VALUE)
{
printf("CreateFile() failed\n");
return 0;
}
cbLength = (ULONG)strlen(lpszTestMessage)+1;
WriteFile(hMailslot,
lpszTestMessage,
cbLength,
&cbWritten,
NULL);
CloseHandle(hMailslot);
return 0;
}
/* EOF */

View File

@@ -0,0 +1,40 @@
#include <windows.h>
int main(int argc, char *argv[])
{
HANDLE hMailslot;
CHAR chBuf[512];
BOOL fResult;
DWORD cbRead;
LPTSTR lpszMailslotName = "\\\\.\\mailslot\\mymailslot";
hMailslot = CreateMailslot(lpszMailslotName,
512,
MAILSLOT_WAIT_FOREVER,
NULL);
for (;;)
{
fResult = ReadFile(hMailslot,
chBuf,
512,
&cbRead,
NULL);
if (fResult == FALSE)
{
printf("ReadFile() failed!\n");
CloseHandle(hMailslot);
return 0;
}
printf("Data read: %s\n", chBuf);
}
CloseHandle(hMailslot);
return 0;
}
/* EOF */

View File

@@ -0,0 +1,42 @@
#
#
#
PATH_TO_TOP = ../..
SRV_OBJECTS = npserver.o
CLT_OBJECTS = npclient.o
PROGS = npserver.exe npclient.exe
BASE_CFLAGS = -I../../include
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a
all: $(PROGS)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
npserver.exe: $(SRV_OBJECTS) $(LIBS)
$(CC) $(SRV_OBJECTS) $(LIBS) -o npserver.exe
$(NM) --numeric-sort npserver.exe > npserver.sym
npclient.exe: $(CLT_OBJECTS) $(LIBS)
$(CC) $(CLT_OBJECTS) $(LIBS) -o npclient.exe
$(NM) --numeric-sort npclient.exe > npclient.sym
include ../../rules.mak

View File

@@ -0,0 +1,100 @@
#include <windows.h>
VOID MyErrExit(LPTSTR Message)
{
// MessageBox(NULL, Message, NULL, MB_OK);
puts(Message);
ExitProcess(0);
}
int main(int argc, char *argv[])
{
HANDLE hPipe;
LPVOID lpvMessage;
CHAR chBuf[512];
BOOL fSuccess;
DWORD cbRead, cbWritten, dwMode;
LPTSTR lpszPipename = "\\\\.\\pipe\\mynamedpipe";
// Try to open a named pipe; wait for it, if necessary.
while (1)
{
hPipe = CreateFile(
lpszPipename, // pipe name
GENERIC_READ | // read and write access
GENERIC_WRITE,
0, // no sharing
NULL, // no security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
NULL); // no template file
// Break if the pipe handle is valid.
if (hPipe != INVALID_HANDLE_VALUE)
break;
// Exit if an error other than ERROR_PIPE_BUSY occurs.
if (GetLastError() != ERROR_PIPE_BUSY)
MyErrExit("Could not open pipe");
// All pipe instances are busy, so wait for 20 seconds.
if (! WaitNamedPipe(lpszPipename, 20000) )
MyErrExit("Could not open pipe");
}
// The pipe connected; change to message-read mode.
dwMode = PIPE_READMODE_MESSAGE;
fSuccess = SetNamedPipeHandleState(
hPipe, // pipe handle
&dwMode, // new pipe mode
NULL, // don't set maximum bytes
NULL); // don't set maximum time
if (!fSuccess)
MyErrExit("SetNamedPipeHandleState");
// Send a message to the pipe server.
lpvMessage = (argc > 1) ? argv[1] : "default message";
fSuccess = WriteFile(
hPipe, // pipe handle
lpvMessage, // message
strlen(lpvMessage) + 1, // message length
&cbWritten, // bytes written
NULL); // not overlapped
if (! fSuccess)
MyErrExit("WriteFile");
do
{
// Read from the pipe.
fSuccess = ReadFile(
hPipe, // pipe handle
chBuf, // buffer to receive reply
512, // size of buffer
&cbRead, // number of bytes read
NULL); // not overlapped
if (! fSuccess && GetLastError() != ERROR_MORE_DATA)
break;
// Reply from the pipe is written to STDOUT.
if (! WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),
chBuf, cbRead, &cbWritten, NULL))
{
break;
}
} while (! fSuccess); // repeat loop if ERROR_MORE_DATA
CloseHandle(hPipe);
return 0;
}

View File

@@ -0,0 +1,120 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>
#define BUFSIZE 1024
#define PIPE_TIMEOUT 1000
VOID InstanceThread (LPVOID);
VOID
GetAnswerToRequest(LPTSTR lpRequest,
LPTSTR lpReply,
LPDWORD lpcbReplyBytes)
{
}
VOID MyErrExit(LPTSTR Message)
{
// MessageBox(NULL, Message, NULL, MB_OK);
puts(Message);
ExitProcess(0);
}
int xx = 0;
int main(int argc, char *argv[])
{
BOOL fConnected;
DWORD dwThreadId;
HANDLE hPipe, hThread;
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\mynamedpipe");
// for (;;)
// {
hPipe = CreateNamedPipe(lpszPipename,
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |
PIPE_READMODE_MESSAGE |
PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
BUFSIZE,
BUFSIZE,
PIPE_TIMEOUT,
NULL);
if (hPipe == INVALID_HANDLE_VALUE)
{
printf("CreateNamedPipe() failed\n");
return 0;
}
fConnected = ConnectNamedPipe(hPipe,
NULL) ? TRUE : (GetLastError () ==
ERROR_PIPE_CONNECTED);
if (fConnected)
{
printf("Pipe connected!\n");
DisconnectNamedPipe(hPipe);
#if 0
hThread = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE) InstanceThread,
(LPVOID) hPipe,
0,
&dwThreadId);
if (hThread == NULL)
MyErrExit("CreateThread");
#endif
}
else
{
// CloseHandle(hPipe);
}
// }
CloseHandle(hPipe);
return 0;
}
VOID InstanceThread (LPVOID lpvParam)
{
CHAR chRequest[BUFSIZE];
CHAR chReply[BUFSIZE];
DWORD cbBytesRead, cbReplyBytes, cbWritten;
BOOL fSuccess;
HANDLE hPipe;
hPipe = (HANDLE)lpvParam;
while (1)
{
fSuccess = ReadFile(hPipe,
chRequest,
BUFSIZE,
&cbBytesRead,
NULL);
if (!fSuccess || cbBytesRead == 0)
break;
GetAnswerToRequest(chRequest, chReply, &cbReplyBytes);
fSuccess = WriteFile(hPipe,
chReply,
cbReplyBytes,
&cbWritten,
NULL);
if (!fSuccess || cbReplyBytes != cbWritten)
break;
}
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
CloseHandle(hPipe);
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = pteb.o
PROGS = pteb.exe
LIBS =
CLEAN_FILES = pteb.o pteb.exe
all: pteb.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
pteb.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o pteb.exe
include ../../rules.mak

View File

@@ -0,0 +1,14 @@
#include <stdio.h>
int main(int argc, char* argv[])
{
int x;
printf("TEB dumpper\n");
__asm__("movl %%fs:0x18, %0\n\t"
: "=a" (x)
: /* no inputs */);
printf("fs[0x18] %x\n", x);
return(0);
}

View File

@@ -0,0 +1,36 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS= regtest.o
PROGS= regtest.exe
LIBS= ../../lib/kernel32/kernel32.a ../../lib/ntdll/ntdll.a \
../../lib/advapi32/advapi32.a
BASE_CFLAGS = -I../../include
all: $(PROGS)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
regtest.exe: $(OBJECTS) $(LIBS)
$(CC) $(OBJECTS) $(LIBS) -o regtest.exe
$(NM) --numeric-sort regtest.exe > regtest.sym
include ../../rules.mak

View File

@@ -0,0 +1,715 @@
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <windows.h>
#include <ddk/ntddk.h>
HANDLE OutputHandle;
HANDLE InputHandle;
void dprintf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args,fmt);
vsprintf(buffer,fmt,args);
WriteConsoleA(OutputHandle, buffer, strlen(buffer), NULL, NULL);
va_end(args);
}
void do_enumeratekey(PWSTR Name)
{
ULONG Index,Length,i;
KEY_BASIC_INFORMATION KeyInformation[5];
NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE hKey1;
UNICODE_STRING KeyName;
RtlInitUnicodeString(&KeyName, Name);
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status=NtOpenKey( &hKey1, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("NtEnumerateKey : \n");
Index=0;
while(Status == STATUS_SUCCESS)
{
Status=NtEnumerateKey(hKey1,Index++,KeyBasicInformation
,&KeyInformation[0], sizeof(KeyInformation)
,&Length);
if(Status== STATUS_SUCCESS)
{
dprintf("\tSubKey Name = ");
for (i=0;i<KeyInformation[0].NameLength/2;i++)
dprintf("%C",KeyInformation[0].Name[i]);
dprintf("\n");
}
}
NtClose(hKey1);
}
void test1(void)
{
HKEY hKey = NULL,hKey1;
OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status;
UNICODE_STRING KeyName;
ULONG Index,Length,i;
KEY_BASIC_INFORMATION KeyInformation[5];
KEY_VALUE_FULL_INFORMATION KeyValueInformation[5];
dprintf("NtOpenKey \\Registry : ");
RtlInitUnicodeString(&KeyName, L"\\Registry");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status=NtOpenKey( &hKey1, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
if(Status==0)
{
dprintf("NtQueryKey : ");
Status=NtQueryKey(hKey1,KeyBasicInformation
,&KeyInformation[0], sizeof(KeyInformation)
,&Length);
dprintf("\t\t\t\t\tStatus =%x\n",Status);
if (Status == STATUS_SUCCESS)
{
dprintf("\tKey Name = ");
for (i=0;i<KeyInformation[0].NameLength/2;i++)
dprintf("%C",KeyInformation[0].Name[i]);
dprintf("\n");
}
dprintf("NtEnumerateKey : \n");
Index=0;
while(Status == STATUS_SUCCESS)
{
Status=NtEnumerateKey(hKey1,Index++,KeyBasicInformation
,&KeyInformation[0], sizeof(KeyInformation)
,&Length);
if(Status== STATUS_SUCCESS)
{
dprintf("\tSubKey Name = ");
for (i=0;i<KeyInformation[0].NameLength/2;i++)
dprintf("%C",KeyInformation[0].Name[i]);
dprintf("\n");
}
}
dprintf("NtClose : ");
Status = NtClose( hKey1 );
dprintf("\t\t\t\t\tStatus =%x\n",Status);
}
NtClose(hKey);
dprintf("NtOpenKey \\Registry\\Machine : ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status=NtOpenKey( &hKey1, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\t\tStatus =%x\n",Status);
dprintf("NtOpenKey System\\Setup : ");
RtlInitUnicodeString(&KeyName, L"System\\Setup");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, hKey1 , NULL);
Status = NtOpenKey ( &hKey, KEY_READ , &ObjectAttributes);
dprintf("\t\t\tStatus =%x\n",Status);
if(Status==0)
{
dprintf("NtQueryValueKey : ");
RtlInitUnicodeString(&KeyName, L"CmdLine");
Status=NtQueryValueKey(hKey,&KeyName,KeyValueFullInformation
,&KeyValueInformation[0], sizeof(KeyValueInformation)
,&Length);
dprintf("\t\t\t\tStatus =%x\n",Status);
if (Status == STATUS_SUCCESS)
{
dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
,KeyValueInformation[0].DataOffset
,KeyValueInformation[0].DataLength
,KeyValueInformation[0].NameLength);
for (i=0;i<10 && i<KeyValueInformation[0].NameLength/2;i++)
dprintf("%C",KeyValueInformation[0].Name[i]);
dprintf("\n");
dprintf("\t\tType = %d\n",KeyValueInformation[0].Type);
if (KeyValueInformation[0].Type == REG_SZ)
dprintf("\t\tValue = %S\n",KeyValueInformation[0].Name+1
+KeyValueInformation[0].NameLength/2);
}
dprintf("NtEnumerateValueKey : \n");
Index=0;
while(Status == STATUS_SUCCESS)
{
Status=NtEnumerateValueKey(hKey,Index++,KeyValueFullInformation
,&KeyValueInformation[0], sizeof(KeyValueInformation)
,&Length);
if(Status== STATUS_SUCCESS)
{
dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
,KeyValueInformation[0].DataOffset
,KeyValueInformation[0].DataLength
,KeyValueInformation[0].NameLength);
for (i=0;i<KeyValueInformation[0].NameLength/2;i++)
dprintf("%C",KeyValueInformation[0].Name[i]);
dprintf(", Type = %d\n",KeyValueInformation[0].Type);
if (KeyValueInformation[0].Type == REG_SZ)
dprintf("\t\tValue = %S\n",((char*)&KeyValueInformation[0]
+KeyValueInformation[0].DataOffset));
}
}
dprintf("NtClose : ");
Status = NtClose( hKey );
dprintf("\t\t\t\t\tStatus =%x\n",Status);
}
NtClose( hKey1 );
}
void test2(void)
{
HKEY hKey,hKey1;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING KeyName,ValueName;
NTSTATUS Status;
KEY_VALUE_FULL_INFORMATION KeyValueInformation[5];
ULONG Index,Length,i;
char Buffer[10];
DWORD Result;
dprintf("NtCreateKey volatile: \n");
dprintf(" \\Registry\\Machine\\Software\\test2reactos: ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_VOLATILE,NULL);
dprintf("\t\tStatus=%x\n",Status);
NtClose(hKey);
do_enumeratekey(L"\\Registry\\Machine\\Software");
dprintf(" ...\\test2 :");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos\\test2");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtCreateKey ( &hKey1, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_VOLATILE,NULL);
dprintf("\t\t\t\t\tStatus=%x\n",Status);
dprintf(" ...\\TestVolatile :");
RtlInitUnicodeString(&KeyName, L"TestVolatile");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, hKey1, NULL);
Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_VOLATILE,NULL);
dprintf("\t\t\t\tStatus=%x\n",Status);
NtClose(hKey1);
RtlInitUnicodeString(&ValueName, L"TestREG_SZ");
dprintf("NtSetValueKey reg_sz: ");
Status=NtSetValueKey(hKey,&ValueName,0,REG_SZ,(PVOID)L"Test Reg_sz",24);
dprintf("\t\t\t\tStatus=%x\n",Status);
RtlInitUnicodeString(&ValueName, L"TestDWORD");
dprintf("NtSetValueKey reg_dword: ");
Status=NtSetValueKey(hKey,&ValueName,0,REG_DWORD,(PVOID)"reac",4);
dprintf("\t\t\tStatus=%x\n",Status);
NtClose(hKey);
dprintf("NtOpenKey \\Registry\\Machine\\Software\\test2reactos\\test2\\TestVolatile : ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos\\test2\\TestVolatile");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status=NtOpenKey( &hKey, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
if(Status==0)
{
dprintf("NtEnumerateValueKey : \n");
Index=0;
while(Status == STATUS_SUCCESS)
{
Status=NtEnumerateValueKey(hKey,Index++,KeyValueFullInformation
,&KeyValueInformation[0], sizeof(KeyValueInformation)
,&Length);
if(Status== STATUS_SUCCESS)
{
dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
,KeyValueInformation[0].DataOffset
,KeyValueInformation[0].DataLength
,KeyValueInformation[0].NameLength);
for (i=0;i<KeyValueInformation[0].NameLength/2;i++)
dprintf("%C",KeyValueInformation[0].Name[i]);
dprintf(", Type = %d\n",KeyValueInformation[0].Type);
if (KeyValueInformation[0].Type == REG_SZ)
dprintf("\t\tValue = %S\n",((char*)&KeyValueInformation[0]
+KeyValueInformation[0].DataOffset));
}
}
}
NtClose(hKey);
dprintf("delete \\Registry\\Machine\\software\\test2reactos ?");
ReadConsoleA(InputHandle, Buffer, 3, &Result, NULL) ;
if (Buffer[0] != 'y' && Buffer[0] != 'Y') return;
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos\\test2\\TestVolatile");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
NtClose(hKey);
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos\\test2");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
NtClose(hKey);
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test2reactos");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
NtClose(hKey);
}
void test3(void)
{
HKEY hKey,hKey1;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING KeyName,ValueName;
NTSTATUS Status;
KEY_VALUE_FULL_INFORMATION KeyValueInformation[5];
ULONG Index,Length,i;
char Buffer[10];
DWORD Result;
dprintf("NtCreateKey non volatile: \n");
dprintf(" \\Registry\\Machine\\Software\\test3reactos: ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_NON_VOLATILE,NULL);
dprintf("\t\tStatus=%x\n",Status);
NtClose(hKey);
do_enumeratekey(L"\\Registry\\Machine\\Software");
dprintf("NtOpenKey: ");
Status=NtOpenKey( &hKey, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\tStatus=%x\n",Status);
NtClose(hKey);
dprintf(" ...\\test3 :");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos\\test3");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_NON_VOLATILE,NULL);
dprintf("\t\t\t\t\tStatus=%x\n",Status);
dprintf("NtOpenKey: ");
Status=NtOpenKey( &hKey1, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\tStatus=%x\n",Status);
NtClose(hKey);
dprintf(" ...\\testNonVolatile :");
RtlInitUnicodeString(&KeyName, L"TestNonVolatile");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, hKey1, NULL);
Status = NtCreateKey ( &hKey, KEY_ALL_ACCESS , &ObjectAttributes
,0,NULL,REG_OPTION_NON_VOLATILE,NULL);
dprintf("\t\t\t\tStatus=%x\n",Status);
NtClose(hKey1);
RtlInitUnicodeString(&ValueName, L"TestREG_SZ");
dprintf("NtSetValueKey reg_sz: ");
Status=NtSetValueKey(hKey,&ValueName,0,REG_SZ,(PVOID)L"Test Reg_sz",24);
dprintf("\t\t\t\tStatus=%x\n",Status);
RtlInitUnicodeString(&ValueName, L"TestDWORD");
dprintf("NtSetValueKey reg_dword: ");
Status=NtSetValueKey(hKey,&ValueName,0,REG_DWORD,(PVOID)"reac",4);
dprintf("\t\t\tStatus=%x\n",Status);
NtClose(hKey);
dprintf("NtOpenKey \\Registry\\Machine\\Software\\test3reactos\\test3\\testNonVolatile : ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos\\test3\\testNonVolatile");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status=NtOpenKey( &hKey, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
if(Status==0)
{
dprintf("NtEnumerateValueKey : \n");
Index=0;
while(Status == STATUS_SUCCESS)
{
Status=NtEnumerateValueKey(hKey,Index++,KeyValueFullInformation
,&KeyValueInformation[0], sizeof(KeyValueInformation)
,&Length);
if(Status== STATUS_SUCCESS)
{
dprintf("\tValue:DO=%d, DL=%d, NL=%d, Name = "
,KeyValueInformation[0].DataOffset
,KeyValueInformation[0].DataLength
,KeyValueInformation[0].NameLength);
for (i=0;i<KeyValueInformation[0].NameLength/2;i++)
dprintf("%C",KeyValueInformation[0].Name[i]);
dprintf(", Type = %d\n",KeyValueInformation[0].Type);
if (KeyValueInformation[0].Type == REG_SZ)
dprintf("\t\tValue = %S\n",((char*)&KeyValueInformation[0]
+KeyValueInformation[0].DataOffset));
}
}
}
NtClose(hKey);
dprintf("delete \\Registry\\Machine\\software\\test3reactos ?");
ReadConsoleA(InputHandle, Buffer, 3, &Result, NULL) ;
if (Buffer[0] != 'y' && Buffer[0] != 'Y') return;
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos\\test3\\testNonvolatile");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos\\test3");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
NtClose(hKey);
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine\\Software\\test3reactos");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
dprintf("NtOpenKey : ");
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dprintf("NtDeleteKey : ");
Status=NtDeleteKey(hKey);
dprintf("\t\t\t\tStatus =%x\n",Status);
NtClose(hKey);
}
void test4(void)
{
HKEY hKey = NULL,hKey1;
DWORD dwDisposition;
DWORD dwError;
DWORD RegDataType, RegDataSize;
BOOL GlobalFifoEnable;
HKEY hPortKey;
DWORD RegDisposition;
WCHAR szClass[260];
DWORD cchClass;
DWORD cSubKeys;
DWORD cchMaxSubkey;
DWORD cchMaxClass;
DWORD cValues;
DWORD cchMaxValueName;
DWORD cbMaxValueData;
DWORD cbSecurityDescriptor;
FILETIME ftLastWriteTime;
SYSTEMTIME LastWriteTime;
dprintf ("RegOpenKeyExW HKLM\\System\\Setup: ");
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\Setup",
0,
KEY_ALL_ACCESS,
&hKey1);
dprintf("\t\tdwError =%x\n",dwError);
if (dwError == ERROR_SUCCESS)
{
dprintf("RegQueryInfoKeyW: ");
cchClass=260;
dwError = RegQueryInfoKeyW(hKey1
, szClass, &cchClass, NULL, &cSubKeys
, &cchMaxSubkey, &cchMaxClass, &cValues, &cchMaxValueName
, &cbMaxValueData, &cbSecurityDescriptor, &ftLastWriteTime);
dprintf ("\t\t\t\tdwError %x\n", dwError);
FileTimeToSystemTime(&ftLastWriteTime,&LastWriteTime);
dprintf ("\tnb of subkeys=%d,last write : %d/%d/%d %d:%02.2d'%02.2d''%03.3d\n",cSubKeys
,LastWriteTime.wMonth
,LastWriteTime.wDay
,LastWriteTime.wYear
,LastWriteTime.wHour
,LastWriteTime.wMinute
,LastWriteTime.wSecond
,LastWriteTime.wMilliseconds
);
}
dprintf ("RegOpenKeyExW: ");
dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"System\\ControlSet001\\Services\\Serial",
0,
KEY_ALL_ACCESS,
&hKey);
dprintf ("\t\t\t\t\tdwError %x\n", dwError);
RegDataSize = sizeof(GlobalFifoEnable);
if (dwError == ERROR_SUCCESS)
{
dprintf ("RegQueryValueExW: ");
dwError = RegQueryValueExW(hKey,
L"ForceFifoEnable",
NULL,
&RegDataType,
(PBYTE)&GlobalFifoEnable,
&RegDataSize);
dprintf("\t\t\t\tdwError =%x\n",dwError);
if (dwError == 0)
{
dprintf("\tValue:DT=%d, DS=%d, Value=%d\n"
,RegDataType
,RegDataSize
,GlobalFifoEnable);
}
}
dprintf ("RegCreateKeyExW: ");
dwError = RegCreateKeyExW(hKey,
L"Parameters\\Serial001",
0,
NULL,
0,
KEY_ALL_ACCESS,
NULL,
&hPortKey,
&RegDisposition
);
dprintf ("\t\t\t\tdwError %x\n", dwError);
dprintf ("RegCreateKeyExW: ");
dwError = RegCreateKeyExW (HKEY_LOCAL_MACHINE,
L"Software\\test4reactos\\test",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
&dwDisposition);
dprintf ("\t\t\t\tdwError %x ", dwError);
dprintf ("dwDisposition %x\n", dwDisposition);
if (dwError == ERROR_SUCCESS)
{
dprintf ("RegSetValueExW: ");
dwError = RegSetValueExW (hKey,
L"TestValue",
0,
REG_SZ,
(BYTE*)L"TestString",
20);
dprintf ("\t\t\t\tdwError %x\n", dwError);
dprintf ("RegCloseKey: ");
dwError = RegCloseKey (hKey);
dprintf ("\t\t\t\t\tdwError %x\n", dwError);
}
dprintf ("\n\n");
hKey = NULL;
dprintf ("RegCreateKeyExW: ");
dwError = RegCreateKeyExW (HKEY_LOCAL_MACHINE,
L"software\\Test",
0,
NULL,
REG_OPTION_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
&dwDisposition);
dprintf ("\t\t\t\tdwError %x ", dwError);
dprintf ("dwDisposition %x\n", dwDisposition);
if (dwError == ERROR_SUCCESS)
{
dprintf("RegQueryInfoKeyW: ");
cchClass=260;
dwError = RegQueryInfoKeyW(hKey
, szClass, &cchClass, NULL, &cSubKeys
, &cchMaxSubkey, &cchMaxClass, &cValues, &cchMaxValueName
, &cbMaxValueData, &cbSecurityDescriptor, &ftLastWriteTime);
dprintf ("\t\t\t\tdwError %x\n", dwError);
FileTimeToSystemTime(&ftLastWriteTime,&LastWriteTime);
dprintf ("\tnb of subkeys=%d,last write : %d/%d/%d %d:%02.2d'%02.2d''%03.3d\n",cSubKeys
,LastWriteTime.wMonth
,LastWriteTime.wDay
,LastWriteTime.wYear
,LastWriteTime.wHour
,LastWriteTime.wMinute
,LastWriteTime.wSecond
,LastWriteTime.wMilliseconds
);
dprintf ("RegCloseKey: ");
dwError = RegCloseKey (hKey);
dprintf ("\t\t\t\t\tdwError %x\n", dwError);
}
dprintf ("\nTests done...\n");
}
void test5(void)
{
HKEY hKey,hKey1;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING KeyName,ValueName;
NTSTATUS Status;
KEY_VALUE_FULL_INFORMATION KeyValueInformation[5];
ULONG Index,Length,i;
char Buffer[10];
DWORD Result;
dprintf("NtOpenKey : \n");
dprintf(" \\Registry\\Machine\\Software\\reactos : ");
RtlInitUnicodeString(&KeyName,L"\\Registry\\Machine\\Software\\reactos");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status=NtOpenKey( &hKey, KEY_ALL_ACCESS, &ObjectAttributes);
dprintf("\t\tStatus=%x\n",Status);
dprintf("NtFlushKey : \n");
Status = NtFlushKey(hKey);
dprintf("\t\tStatus=%x\n",Status);
dprintf("NtCloseKey : \n");
Status=NtClose(hKey);
dprintf("\t\tStatus=%x\n",Status);
}
void test6(void)
{
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING KeyName;
NTSTATUS Status;
LONG dwError;
TOKEN_PRIVILEGES NewPrivileges;
HANDLE Token,hKey;
LUID Luid;
BOOLEAN bRes;
Status=NtOpenProcessToken(GetCurrentProcess()
,TOKEN_ADJUST_PRIVILEGES,&Token);
// ,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&Token);
dprintf("\t\t\t\tStatus =%x\n",Status);
// bRes=LookupPrivilegeValueA(NULL,SE_RESTORE_NAME,&Luid);
// dprintf("\t\t\t\tbRes =%x\n",bRes);
NewPrivileges.PrivilegeCount = 1;
NewPrivileges.Privileges[0].Luid = Luid;
// NewPrivileges.Privileges[0].Luid.u.LowPart=18;
// NewPrivileges.Privileges[0].Luid.u.HighPart=0;
NewPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Status = NtAdjustPrivilegesToken(
bRes = AdjustTokenPrivileges(
Token,
FALSE,
&NewPrivileges,
0,
NULL,
NULL
);
dprintf("\t\t\t\tbRes =%x\n",bRes);
// Status=NtClose(Token);
// dprintf("\t\t\t\tStatus =%x\n",Status);
RtlInitUnicodeString(&KeyName,L"test5");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtLoadKey(HKEY_LOCAL_MACHINE,&ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
dwError=RegLoadKey(HKEY_LOCAL_MACHINE,"def"
,"test5");
dprintf("\t\t\t\tdwError =%x\n",dwError);
dprintf("NtOpenKey \\Registry\\Machine : ");
RtlInitUnicodeString(&KeyName, L"\\Registry\\Machine");
InitializeObjectAttributes(&ObjectAttributes,
&KeyName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);
Status=NtOpenKey( &hKey, MAXIMUM_ALLOWED, &ObjectAttributes);
dprintf("\t\t\tStatus =%x\n",Status);
RtlInitUnicodeString(&KeyName,L"test5");
InitializeObjectAttributes(&ObjectAttributes, &KeyName, OBJ_CASE_INSENSITIVE
, NULL, NULL);
Status = NtLoadKey(hKey,&ObjectAttributes);
dprintf("\t\t\t\tStatus =%x\n",Status);
}
int main(int argc, char* argv[])
{
char Buffer[10];
DWORD Result;
AllocConsole();
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
while(1)
{
dprintf("choose test :\n");
dprintf(" 0=Exit\n");
dprintf(" 1=Ntxxx read functions\n");
dprintf(" 2=Ntxxx write functions : volatile keys\n");
dprintf(" 3=Ntxxx write functions : non volatile keys\n");
dprintf(" 4=Regxxx functions\n");
dprintf(" 5=FlushKey \n");
ReadConsoleA(InputHandle, Buffer, 3, &Result, NULL) ;
switch (Buffer[0])
{
case '0':
return(0);
case '1':
test1();
break;
case '2':
test2();
break;
case '3':
test3();
break;
case '4':
test4();
break;
case '5':
test5();
break;
case '6':
test6();
break;
}
}
return 0;
}

View File

@@ -0,0 +1,43 @@
#
#
#
PATH_TO_TOP = ../..
SRV_OBJECTS= shmsrv.o
CLT_OBJECTS= shmclt.o
PROGS= shmsrv.exe shmclt.exe
BASE_CFLAGS = -I../../include
LIBS = ../../lib/crtdll/crtdll.a ../../lib/kernel32/kernel32.a \
../../lib/ntdll/ntdll.a
all: $(PROGS)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
shmsrv.exe: $(SRV_OBJECTS) $(LIBS)
$(CC) $(SRV_OBJECTS) $(LIBS) -o shmsrv.exe
$(NM) --numeric-sort shmsrv.exe > shmsrv.sym
shmclt.exe: $(CLT_OBJECTS) $(LIBS)
$(CC) $(CLT_OBJECTS) $(LIBS) -o shmclt.exe
$(NM) --numeric-sort shmsrv.exe > shmclt.sym
include ../../rules.mak

View File

@@ -0,0 +1,61 @@
#include <ddk/ntddk.h>
#include <windows.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
HANDLE OutputHandle;
HANDLE InputHandle;
void debug_printf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args,fmt);
vsprintf(buffer,fmt,args);
WriteConsoleA(OutputHandle, buffer, strlen(buffer), NULL, NULL);
va_end(args);
}
int
main(int argc, char* argv[])
{
HANDLE Section;
PVOID BaseAddress;
char buffer[256];
printf("Shm test server\n");
Section = OpenFileMappingW (
// PAGE_EXECUTE_READWRITE, invalid parameter
FILE_MAP_WRITE,
FALSE,
L"TestSection"
);
if (Section == NULL)
{
printf("Failed to open section (err=%d)", GetLastError());
return 1;
}
BaseAddress = MapViewOfFile(Section,
FILE_MAP_ALL_ACCESS,
0,
0,
8192);
if (BaseAddress == NULL)
{
printf("Failed to map section (err=%d)\n", GetLastError());
return 1;
}
printf("BaseAddress %x\n", (UINT) BaseAddress);
printf("Copying from section\n");
strcpy(buffer, BaseAddress);
printf("Copyed <%s>\n", buffer);
// for(;;);
return 0;
}

View File

@@ -0,0 +1,53 @@
/* $Id: shmsrv.c,v 1.5 2000/06/29 23:35:10 dwelch Exp $
*
* FILE : reactos/apps/shm/shmsrv.c
* AUTHOR: David Welch
*/
#include <ddk/ntddk.h>
#include <windows.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
HANDLE Section;
PVOID BaseAddress;
printf("Shm test server\n");
Section = CreateFileMappingW (
(HANDLE) 0xFFFFFFFF,
NULL,
PAGE_READWRITE,
0,
8192,
L"TestSection"
);
if (Section == NULL)
{
printf("Failed to create section (err=%d)", GetLastError());
return 1;
}
printf("Mapping view of section\n");
BaseAddress = MapViewOfFile(Section,
FILE_MAP_ALL_ACCESS,
0,
0,
8192);
printf("BaseAddress %x\n", (UINT) BaseAddress);
if (BaseAddress == NULL)
{
printf("Failed to map section\n");
}
printf("Copying to section\n");
printf("Copying %s\n", GetCommandLineA());
strcpy(BaseAddress, GetCommandLineA());
Sleep(INFINITE);
return 0;
}

View File

@@ -0,0 +1,11 @@
#include <stdio.h>
int
main (void)
{
int i;
puts ("This should print \"wow = I\" for I from 0 to 39 inclusive.");
for (i = 0; i < 40; i++)
printf ("%s = %d\n", "wow", i);
return 0;
}

View File

@@ -0,0 +1,53 @@
#include <stdio.h>
#include <string.h>
int
main (void)
{
FILE *f;
int i;
const char filename[] = "/tmp/bug3.test";
f = fopen(filename, "w+");
for (i=0; i<9000; i++)
putc ('x', f);
fseek (f, 8180L, 0);
fwrite ("Where does this text go?", 1, 24, f);
fflush (f);
rewind (f);
for (i=0; i<9000; i++)
{
int j;
if ((j = getc(f)) != 'x')
{
if (i != 8180)
{
printf ("Test FAILED!");
return 1;
}
else
{
char buf[25];
buf[0] = j;
fread (buf + 1, 1, 23, f);
buf[24] = '\0';
if (strcmp (buf, "Where does this text go?") != 0)
{
printf ("%s\nTest FAILED!\n", buf);
return 1;
}
i += 23;
}
}
}
fclose(f);
remove(filename);
puts ("Test succeeded.");
return 0;
}

View File

@@ -0,0 +1,68 @@
#
#
#
PATH_TO_TOP = ../..
PROGS= test-stdio tst-printf tstdiomisc bug2 bug3 \
temptest test-fseek test_rdwr testfsd
all: $(PROGS:%=%.exe)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: # $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe)
$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe
$(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe)
$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe
$(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe
bug2.exe: bug2.c
$(CC) bug2.c -lkernel32 -o bug2.exe
$(NM) --numeric-sort bug2.exe > bug2.sym
bug3.exe: bug3.c
$(CC) bug3.c -lkernel32 -o bug3.exe
$(NM) --numeric-sort bug3.exe > bug3.sym
temptest.exe: temptest.c
$(CC) temptest.c -lkernel32 -o temptest.exe
$(NM) --numeric-sort temptest.exe > temptest.sym
test-fseek.exe: test-fseek.c
$(CC) test-fseek.c -lkernel32 -o test-fseek.exe
$(NM) --numeric-sort test-fseek.exe > test-fseek.sym
test-fwrite.exe: test-fwrite.c
$(CC) test-fwrite.c -lkernel32 -o test-fwrite.exe
$(NM) --numeric-sort test-fwrite.exe > test-fwrite.sym
test_rdwr.exe: test_rdwr.c
$(CC) test_rdwr.c -lkernel32 -o test_rdwr.exe
$(NM) --numeric-sort test_rdwr.exe > test_rdwr.sym
test-stdio.exe: test-stdio.c
$(CC) test-stdio.c -lkernel32 -o test-stdio.exe
$(NM) --numeric-sort test-stdio.exe > test-stdio.sym
tst-printf.exe: tst-printf.c
$(CC) tst-printf.c -lkernel32 -o tst-printf.exe
$(NM) --numeric-sort tst-printf.exe > tst-printf.sym
tstdiomisc.exe: tstdiomisc.c
$(CC) tstdiomisc.c -lkernel32 -o tstdiomisc.exe
$(NM) --numeric-sort tstdiomisc.exe > tstdiomisc.sym
testfsd.exe: testfsd.c testsuite.c
$(CC) testfsd.c testsuite.c -lkernel32 -o testfsd.exe
$(NM) --numeric-sort testfsd.exe > testfsd.sym
include ../../rules.mak

View File

@@ -0,0 +1,27 @@
#include <stdio.h>
#include <string.h>
char *files[500];
int
main (int argc, char *argv[])
{
FILE *fp;
int i;
for (i = 0; i < 500; i++) {
files[i] = tempnam (NULL, "file");
if (files[i] == NULL) {
printf ("tempnam failed\n");
exit (1);
}
printf ("file: %s\n", files[i]);
fp = fopen (files[i], "w");
fclose (fp);
}
for (i = 0; i < 500; i++)
remove (files[i]);
exit (0);
}

View File

@@ -0,0 +1,85 @@
/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stdio.h>
#define TESTFILE "/tmp/test.dat"
int
main (void)
{
FILE *fp;
int i, j;
puts ("\nFile seek test");
fp = fopen (TESTFILE, "w");
if (fp == NULL)
{
perror (TESTFILE);
return 1;
}
for (i = 0; i < 256; i++)
putc (i, fp);
if (freopen (TESTFILE, "r", fp) != fp)
{
perror ("Cannot open file for reading");
return 1;
}
for (i = 1; i <= 255; i++)
{
printf ("%3d\n", i);
fseek (fp, (long) -i, SEEK_END);
if ((j = getc (fp)) != 256 - i)
{
printf ("SEEK_END failed %d\n", j);
break;
}
if (fseek (fp, (long) i, SEEK_SET))
{
puts ("Cannot SEEK_SET");
break;
}
if ((j = getc (fp)) != i)
{
printf ("SEEK_SET failed %d\n", j);
break;
}
if (fseek (fp, (long) i, SEEK_SET))
{
puts ("Cannot SEEK_SET");
break;
}
if (fseek (fp, (long) (i >= 128 ? -128 : 128), SEEK_CUR))
{
puts ("Cannot SEEK_CUR");
break;
}
if ((j = getc (fp)) != (i >= 128 ? i - 128 : i + 128))
{
printf ("SEEK_CUR failed %d\n", j);
break;
}
}
fclose (fp);
remove (TESTFILE);
puts ((i > 255) ? "Test succeeded." : "Test FAILED!");
return (i > 255) ? 0 : 1;
}

View File

@@ -0,0 +1,68 @@
#include <stdio.h>
#include <string.h>
int
main (int argc, char *argv[])
{
FILE *f = tmpfile ();
char obuf[99999], ibuf[sizeof obuf];
char *line;
size_t linesz;
if (! f)
{
perror ("tmpfile");
return 1;
}
if (fputs ("line\n", f) == EOF)
{
perror ("fputs");
return 1;
}
memset (obuf, 'z', sizeof obuf);
memset (ibuf, 'y', sizeof ibuf);
if (fwrite (obuf, sizeof obuf, 1, f) != 1)
{
perror ("fwrite");
return 1;
}
rewind (f);
line = NULL;
linesz = 0;
if (getline (&line, &linesz, f) != 5)
{
perror ("getline");
return 1;
}
if (strcmp (line, "line\n"))
{
puts ("Lines differ. Test FAILED!");
return 1;
}
if (fread (ibuf, sizeof ibuf, 1, f) != 1)
{
perror ("fread");
return 1;
}
if (memcmp (ibuf, obuf, sizeof ibuf))
{
puts ("Buffers differ. Test FAILED!");
return 1;
}
asprintf (&line, "\
GDB is free software and you are welcome to distribute copies of it\n\
under certain conditions; type \"show copying\" to see the conditions.\n\
There is absolutely no warranty for GDB; type \"show warranty\" for details.\n\
");
puts ("Test succeeded.");
return 0;
}

View File

@@ -0,0 +1,55 @@
#include <stdio.h>
#include <string.h>
int main()
{
char msg1[] = "testing _write\n";
char msg2[] = "testing putchar.";
char msg3[] = "testing printf.";
char tmpbuf[255];
FILE* f1;
write(1, msg1, strlen(msg1));
write(1, msg2, strlen(msg2));
putchar('o'); putchar('k'); putchar('\n');
write(1, msg3, strlen(msg3));
printf("ok\n");
printf("Testing fopen\n");
f1 = fopen("tmp.txt","w+b");
if (f1 == NULL)
{
printf("fopen failed\n");
return(1);
}
printf("Testing fwrite\n");
if (fwrite(msg1, 1, strlen(msg1)+1, f1) != (strlen(msg1)+1))
{
printf("fwrite failed\n");
return(1);
}
printf("Testing fread\n");
fseek(f1, 0, SEEK_SET);
if (fread(tmpbuf, 1, strlen(msg1)+1, f1) != (strlen(msg1)+1))
{
printf("fread failed\n");
return(1);
}
if (strcmp(tmpbuf,msg1) != 0)
{
printf("fread failed, data corrupt\n");
return(1);
}
printf("Testing fclose\n");
if (fclose(f1) != 0)
{
printf("fclose failed\n");
return(1);
}
return(0);
}

View File

@@ -0,0 +1,129 @@
/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main (int argc, char **argv)
{
static const char hello[] = "Hello, world.\n";
static const char replace[] = "Hewwo, world.\n";
static const size_t replace_from = 2, replace_to = 4;
char filename[FILENAME_MAX];
char *name = strrchr (*argv, '/');
char buf[BUFSIZ];
FILE *f;
int lose = 0;
if (name != NULL)
++name;
else
name = *argv;
(void) sprintf (filename, "/tmp/%s.test", name);
f = fopen (filename, "w+");
if (f == NULL)
{
perror (filename);
exit (1);
}
(void) fputs (hello, f);
rewind (f);
(void) fgets (buf, sizeof (buf), f);
rewind (f);
(void) fputs (buf, f);
rewind (f);
{
size_t i;
for (i = 0; i < replace_from; ++i)
{
int c = getc (f);
if (c == EOF)
{
printf ("EOF at %Zu.\n", i);
lose = 1;
break;
}
else if (c != hello[i])
{
printf ("Got '%c' instead of '%c' at %Zu.\n",
(unsigned char) c, hello[i], i);
lose = 1;
break;
}
}
}
{
long int where = ftell (f);
if (where == (long int) replace_from)
{
register size_t i;
for (i = replace_from; i < replace_to; ++i)
if (putc(replace[i], f) == EOF)
{
printf ("putc('%c') got %s at %Zu.\n",
replace[i], strerror (errno), i);
lose = 1;
break;
}
}
else if (where == -1L)
{
printf ("ftell got %s (should be at %Zu).\n",
strerror (errno), replace_from);
lose = 1;
}
else
{
printf ("ftell returns %lu; should be %Zu.\n", where, replace_from);
lose = 1;
}
}
if (!lose)
{
rewind (f);
if (fgets (buf, sizeof (buf), f) == NULL)
{
printf ("fgets got %s.\n", strerror(errno));
lose = 1;
}
else if (strcmp (buf, replace))
{
printf ("Read \"%s\" instead of \"%s\".\n", buf, replace);
lose = 1;
}
}
if (lose)
printf ("Test FAILED! Losing file is \"%s\".\n", filename);
else
{
(void) remove (filename);
puts ("Test succeeded.");
}
exit (lose ? EXIT_FAILURE : EXIT_SUCCESS);
}

View File

@@ -0,0 +1,315 @@
/* $Id: testfsd.c,v 1.4 2001/07/04 03:07:54 rex Exp $
*
* FILE: testFSD.c
* PURPOSE: A test set for the File System Driver
* PROJECT: ReactOS kernel
* COPYRIGHT: See COPYING in the top level directory
* PROGRAMMER: Rex Jolliff (rex@lvcablemodem.com)
*
*/
#include <errno.h>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include "testsuite.h"
const char *rootDir = "c:\\";
const char *systemRootDir = "c:\\ReactOS";
const char *systemDllDir = "c:\\ReactOS\\System32";
const char *bogusRootFile = "c:\\bogus";
const char *bogusDirAndFile = "c:\\bogus\\bogus";
const char *bogusSystemRootFile = "c:\\ReactOS\\bogus";
const char *bogusSystemDllFile = "c:\\ReactOS\\System32\\bogus";
const char *shortFile = "c:\\ReactOS\\boot.bat";
const char *longFile = "c:\\ReactOS\\loadros.com";
void testOpenExistant (void)
{
HANDLE fileHandle;
fileHandle = CreateFile (rootDir, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile (systemRootDir, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile (systemDllDir, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
}
void testOpenNonExistant (void)
{
DWORD status;
HANDLE fileHandle;
fileHandle = CreateFile (bogusRootFile, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_FILE_NOT_FOUND);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusDirAndFile, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_PATH_NOT_FOUND);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusSystemRootFile, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_FILE_NOT_FOUND);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusSystemDllFile, GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_FILE_NOT_FOUND);
CloseHandle (fileHandle);
}
void testCreateExistant (void)
{
DWORD status;
HANDLE fileHandle;
fileHandle = CreateFile (rootDir, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_ALREADY_EXISTS);
fileHandle = CreateFile (systemRootDir, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_ALREADY_EXISTS);
fileHandle = CreateFile (systemDllDir, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_ALREADY_EXISTS);
}
void testCreateNonExistant (void)
{
DWORD status;
HANDLE fileHandle;
fileHandle = CreateFile (bogusRootFile, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusSystemRootFile, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusSystemDllFile, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
#if 0
fileHandle = CreateFile (bogusDirAndFile, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle == INVALID_HANDLE_VALUE);
status = GetLastError ();
ASSERT (status == ERROR_PATH_NOT_FOUND);
CloseHandle (fileHandle);
#endif
}
void testDeleteFiles (void)
{
BOOL returnValue;
HANDLE fileHandle;
fileHandle = CreateFile ("bogus", GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
returnValue = DeleteFile ("bogus");
ASSERT_MSG (returnValue,
"Delete of bogus failed, error:%d",
GetLastError ());
#if 0
returnValue = DeleteFile (bogusRootFile);
ASSERT_MSG (returnValue,
"Delete of %s failed, error:%d",
bogusRootFile,
GetLastError ());
returnValue = DeleteFile (bogusRootFile);
ASSERT_MSG (!returnValue,
"2nd Delete of %s succeeded but should fail",
bogusRootFile);
returnValue = DeleteFile (bogusSystemRootFile);
ASSERT_MSG (returnValue,
"Delete of %s failed, error:%d",
bogusSystemRootFile,
GetLastError ());
returnValue = DeleteFile (bogusSystemRootFile);
ASSERT_MSG (!returnValue,
"2nd Delete of %s succeeded but should fail",
bogusSystemRootFile);
returnValue = DeleteFile (bogusSystemDllFile);
ASSERT_MSG (returnValue,
"Delete of %s failed, error:%d",
bogusSystemDllFile,
GetLastError ());
returnValue = DeleteFile (bogusSystemDllFile);
ASSERT_MSG (!returnValue,
"2nd Delete of %s succeeded but should fail",
bogusSystemDllFile);
returnValue = DeleteFile (bogusDirAndFile);
ASSERT_MSG (!returnValue,
"Delete of %s succeded but should fail",
bogusDirAndFile);
#endif
}
void testOpenWithBlankPathElements (void)
{
HANDLE fileHandle;
fileHandle = CreateFile ("c:", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile ("c:\\\\", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile ("c:\\\\reactos\\", GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile ("c:\\reactos\\\\", GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile ("c:\\reactos\\\\system32\\", GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile ("c:\\reactos\\system32\\\\", GENERIC_READ, 0, 0,
OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
}
void testReadOnInvalidHandle (void)
{
BOOL returnValue;
char buffer [256];
DWORD bytesRead;
returnValue = ReadFile (INVALID_HANDLE_VALUE,
buffer,
256,
&bytesRead,
NULL);
ASSERT_MSG (!returnValue,
"Read from invalid handle succeeded but should fail",0);
ASSERT (GetLastError () != ENOFILE);
}
void testReadOnZeroLengthFile (void)
{
BOOL returnValue;
HANDLE fileHandle;
char buffer [256];
DWORD bytesRead;
fileHandle = CreateFile (bogusRootFile, GENERIC_READ, 0, 0,
CREATE_NEW, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
CloseHandle (fileHandle);
fileHandle = CreateFile (bogusRootFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
returnValue = ReadFile (fileHandle, buffer, 256, &bytesRead, NULL);
ASSERT_MSG (!returnValue,
"Read from zero length file succeeded but should fail",0);
ASSERT (GetLastError () != ERROR_HANDLE_EOF);
CloseHandle (fileHandle);
returnValue = DeleteFile (bogusRootFile);
ASSERT_MSG (returnValue,
"Delete of %s failed, error:%d",
bogusRootFile,
GetLastError ());
}
void testReadOnShortFile (void)
{
BOOL returnValue;
HANDLE fileHandle;
char buffer [256];
DWORD bytesRead;
fileHandle = CreateFile (shortFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
returnValue = ReadFile (fileHandle,
buffer,
256,
&bytesRead,
NULL);
ASSERT_MSG (returnValue,
"Read from short length file failed, error:%d",
GetLastError ());
ASSERT (bytesRead > 0 && bytesRead < 256);
CloseHandle (fileHandle);
}
void testReadOnLongFile (void)
{
BOOL returnValue;
HANDLE fileHandle;
char buffer [256];
DWORD bytesRead;
int count;
fileHandle = CreateFile (longFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
ASSERT (fileHandle != INVALID_HANDLE_VALUE);
for (count = 0; count < 20; count++)
{
returnValue = ReadFile (fileHandle,
buffer,
256,
&bytesRead,
NULL);
ASSERT_MSG (returnValue,
"Read from short length file failed, error:%d",
GetLastError ());
ASSERT (bytesRead == 256);
}
CloseHandle (fileHandle);
}
int main (void)
{
TEST_RUNNER testRunner;
TEST_SUITE testsToRun [] =
{
ADD_TEST (testOpenExistant),
ADD_TEST (testOpenNonExistant),
ADD_TEST (testCreateExistant),
ADD_TEST (testCreateNonExistant),
ADD_TEST (testDeleteFiles),
/* ADD_TEST (testOverwriteExistant),*/
/* ADD_TEST (testOverwriteNonExistant),*/
ADD_TEST (testOpenWithBlankPathElements),
ADD_TEST (testReadOnInvalidHandle),
ADD_TEST (testReadOnZeroLengthFile),
ADD_TEST (testReadOnShortFile),
ADD_TEST (testReadOnLongFile),
/* ADD_TEST (test), */
END_TESTS
};
memset (&testRunner, 0, sizeof (TEST_RUNNER));
tsRunTests (&testRunner, testsToRun);
tsReportResults (&testRunner);
}

View File

@@ -0,0 +1,65 @@
#include <windows.h>
#include <stdio.h>
#include "testsuite.h"
static PTEST_RUNNER iTestRunner = 0;
void tsRunTests (PTEST_RUNNER pTestRunner, PTEST_SUITE pTests)
{
int testIndex;
iTestRunner = pTestRunner;
for (testIndex = 0; pTests [testIndex].testFunc != 0; testIndex++)
{
pTests [testIndex].testFunc ();
pTestRunner->tests++;
}
}
void tsReportResults (PTEST_RUNNER pTestRunner)
{
printf ("\nTotal of %d tests.\n"
"Assertions: %d\n"
" Assertions which passed: %d\n"
" Assertions which failed: %d\n",
pTestRunner->tests,
pTestRunner->assertions,
pTestRunner->successes,
pTestRunner->failures);
if (pTestRunner->failures == 0)
{
printf ("\n*** OK ***\n");
}
else
{
printf ("\n*** FAIL ***\n");
}
}
void tsDoAssertion (BOOL pTest,
PCHAR pTestText,
PCHAR pFunction,
int pLine,
...)
{
va_list ap;
iTestRunner->assertions++;
if (!pTest)
{
va_start (ap, pLine);
printf ("%s(%d): ", pFunction, pLine);
vprintf (pTestText, ap);
printf ("\n");
va_end(ap);
iTestRunner->failures++;
}
else
{
iTestRunner->successes++;
}
}

View File

@@ -0,0 +1,44 @@
#ifndef H_TESTSUITE_H
#define H_TESTSUITE_H
struct TestSuite
{
char *name;
void (*testFunc)(void);
};
typedef struct TestSuite TEST_SUITE, *PTEST_SUITE;
#define ADD_TEST(x) {#x, x}
#define END_TESTS {0, 0}
#define COUNT_TESTS(x) (sizeof x/sizeof (struct TestSuite))
struct TestRunner
{
int tests;
int assertions;
int failures;
int successes;
};
typedef struct TestRunner TEST_RUNNER, *PTEST_RUNNER;
void tsDoAssertion (BOOL pTest,
PCHAR pTestText,
PCHAR pFunction,
int pLine,
...);
#ifdef ASSERT
#undef ASSERT
#endif
#define ASSERT(x) tsDoAssertion (x, "assertion \"" ## #x ## "\" failed", __FUNCTION__, __LINE__)
#define ASSERT_MSG(x,y,a...) tsDoAssertion (x, y, __FUNCTION__, __LINE__,a)
void tsRunTests (PTEST_RUNNER pTestRunner, PTEST_SUITE pTests);
void tsReportResults (PTEST_RUNNER pTestRunner);
#endif

View File

@@ -0,0 +1,311 @@
/* Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifdef BSD
#include </usr/include/stdio.h>
#define EXIT_SUCCESS 0
#else
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif
#include <float.h>
void rfg1 (void);
void rfg2 (void);
void
fmtchk (const char *fmt)
{
(void) fputs(fmt, stdout);
(void) printf(":\t`");
(void) printf(fmt, 0x12);
(void) printf("'\n");
}
void
fmtst1chk (const char *fmt)
{
(void) fputs(fmt, stdout);
(void) printf(":\t`");
(void) printf(fmt, 4, 0x12);
(void) printf("'\n");
}
void
fmtst2chk (const char *fmt)
{
(void) fputs(fmt, stdout);
(void) printf(":\t`");
(void) printf(fmt, 4, 4, 0x12);
(void) printf("'\n");
}
/* This page is covered by the following copyright: */
/* (C) Copyright C E Chew
*
* Feel free to copy, use and distribute this software provided:
*
* 1. you do not pretend that you wrote it
* 2. you leave this copyright notice intact.
*/
/*
* Extracted from exercise.c for glibc-1.05 bug report by Bruce Evans.
*/
#define DEC -123
#define INT 255
#define UNS (~0)
/* Formatted Output Test
*
* This exercises the output formatting code.
*/
void
fp_test (void)
{
int i, j, k, l;
char buf[7];
char *prefix = buf;
char tp[20];
puts("\nFormatted output test");
printf("prefix 6d 6o 6x 6X 6u\n");
strcpy(prefix, "%");
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
for (k = 0; k < 2; k++) {
for (l = 0; l < 2; l++) {
strcpy(prefix, "%");
if (i == 0) strcat(prefix, "-");
if (j == 0) strcat(prefix, "+");
if (k == 0) strcat(prefix, "#");
if (l == 0) strcat(prefix, "0");
printf("%5s |", prefix);
strcpy(tp, prefix);
strcat(tp, "6d |");
printf(tp, DEC);
strcpy(tp, prefix);
strcat(tp, "6o |");
printf(tp, INT);
strcpy(tp, prefix);
strcat(tp, "6x |");
printf(tp, INT);
strcpy(tp, prefix);
strcat(tp, "6X |");
printf(tp, INT);
strcpy(tp, prefix);
strcat(tp, "6u |");
printf(tp, UNS);
printf("\n");
}
}
}
}
printf("%10s\n", (char *) NULL);
printf("%-10s\n", (char *) NULL);
}
int
main (int argc, char *argv[])
{
static char shortstr[] = "Hi, Z.";
static char longstr[] = "Good morning, Doctor Chandra. This is Hal. \
I am ready for my first lesson today.";
fmtchk("%.4x");
fmtchk("%04x");
fmtchk("%4.4x");
fmtchk("%04.4x");
fmtchk("%4.3x");
fmtchk("%04.3x");
fmtst1chk("%.*x");
fmtst1chk("%0*x");
fmtst2chk("%*.*x");
fmtst2chk("%0*.*x");
#ifndef BSD
printf("bad format:\t\"%b\"\n");
printf("nil pointer (padded):\t\"%10p\"\n", (void *) NULL);
#endif
printf("decimal negative:\t\"%d\"\n", -2345);
printf("octal negative:\t\"%o\"\n", -2345);
printf("hex negative:\t\"%x\"\n", -2345);
printf("long decimal number:\t\"%ld\"\n", -123456L);
printf("long octal negative:\t\"%lo\"\n", -2345L);
printf("long unsigned decimal number:\t\"%lu\"\n", -123456L);
printf("zero-padded LDN:\t\"%010ld\"\n", -123456L);
printf("left-adjusted ZLDN:\t\"%-010ld\"\n", -123456);
printf("space-padded LDN:\t\"%10ld\"\n", -123456L);
printf("left-adjusted SLDN:\t\"%-10ld\"\n", -123456L);
printf("zero-padded string:\t\"%010s\"\n", shortstr);
printf("left-adjusted Z string:\t\"%-010s\"\n", shortstr);
printf("space-padded string:\t\"%10s\"\n", shortstr);
printf("left-adjusted S string:\t\"%-10s\"\n", shortstr);
printf("null string:\t\"%s\"\n", (char *)NULL);
printf("limited string:\t\"%.22s\"\n", longstr);
printf("e-style >= 1:\t\"%e\"\n", 12.34);
printf("e-style >= .1:\t\"%e\"\n", 0.1234);
printf("e-style < .1:\t\"%e\"\n", 0.001234);
printf("e-style big:\t\"%.60e\"\n", 1e20);
printf ("e-style == .1:\t\"%e\"\n", 0.1);
printf("f-style >= 1:\t\"%f\"\n", 12.34);
printf("f-style >= .1:\t\"%f\"\n", 0.1234);
printf("f-style < .1:\t\"%f\"\n", 0.001234);
printf("g-style >= 1:\t\"%g\"\n", 12.34);
printf("g-style >= .1:\t\"%g\"\n", 0.1234);
printf("g-style < .1:\t\"%g\"\n", 0.001234);
printf("g-style big:\t\"%.60g\"\n", 1e20);
printf (" %6.5f\n", .099999999860301614);
printf (" %6.5f\n", .1);
printf ("x%5.4fx\n", .5);
printf ("%#03x\n", 1);
{
double d = FLT_MIN;
int niter = 17;
while (niter-- != 0)
printf ("%.17e\n", d / 2);
fflush (stdout);
}
printf ("%15.5e\n", 4.9406564584124654e-324);
#define FORMAT "|%12.4f|%12.4e|%12.4g|\n"
printf (FORMAT, 0.0, 0.0, 0.0);
printf (FORMAT, 1.0, 1.0, 1.0);
printf (FORMAT, -1.0, -1.0, -1.0);
printf (FORMAT, 100.0, 100.0, 100.0);
printf (FORMAT, 1000.0, 1000.0, 1000.0);
printf (FORMAT, 10000.0, 10000.0, 10000.0);
printf (FORMAT, 12345.0, 12345.0, 12345.0);
printf (FORMAT, 100000.0, 100000.0, 100000.0);
printf (FORMAT, 123456.0, 123456.0, 123456.0);
#undef FORMAT
{
char buf[20];
printf ("sprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n",
sprintf (buf, "%30s", "foo"), sizeof (buf), buf);
}
fp_test ();
printf ("%e should be 1.234568e+06\n", 1234567.8);
printf ("%f should be 1234567.800000\n", 1234567.8);
printf ("%g should be 1.23457e+06\n", 1234567.8);
printf ("%g should be 123.456\n", 123.456);
printf ("%g should be 1e+06\n", 1000000.0);
printf ("%g should be 10\n", 10.0);
printf ("%g should be 0.02\n", 0.02);
{
double x=1.0;
printf("%.17f\n",(1.0/x/10.0+1.0)*x-x);
}
puts ("--- Should be no further output. ---");
rfg1 ();
rfg2 ();
{
char buf[200];
int result;
sprintf(buf,"%*s%*s%*s",-1,"one",-20,"two",-30,"three");
result = strcmp (buf,
"onetwo three ");
puts (result != 0 ? "Test failed!" : "Test ok.");
return result != 0;
}
}
void
rfg1 (void)
{
char buf[100];
sprintf (buf, "%5.s", "xyz");
if (strcmp (buf, " ") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " ");
sprintf (buf, "%5.f", 33.3);
if (strcmp (buf, " 33") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 33");
sprintf (buf, "%8.e", 33.3e7);
if (strcmp (buf, " 3e+08") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 3e+08");
sprintf (buf, "%8.E", 33.3e7);
if (strcmp (buf, " 3E+08") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 3E+08");
sprintf (buf, "%.g", 33.3);
if (strcmp (buf, "3e+01") != 0)
printf ("got: '%s', expected: '%s'\n", buf, "3e+01");
sprintf (buf, "%.G", 33.3);
if (strcmp (buf, "3E+01") != 0)
printf ("got: '%s', expected: '%s'\n", buf, "3E+01");
}
void
rfg2 (void)
{
int prec;
char buf[100];
prec = 0;
sprintf (buf, "%.*g", prec, 3.3);
if (strcmp (buf, "3") != 0)
printf ("got: '%s', expected: '%s'\n", buf, "3");
prec = 0;
sprintf (buf, "%.*G", prec, 3.3);
if (strcmp (buf, "3") != 0)
printf ("got: '%s', expected: '%s'\n", buf, "3");
prec = 0;
sprintf (buf, "%7.*G", prec, 3.33);
if (strcmp (buf, " 3") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 3");
prec = 3;
sprintf (buf, "%04.*o", prec, 33);
if (strcmp (buf, " 041") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 041");
prec = 7;
sprintf (buf, "%09.*u", prec, 33);
if (strcmp (buf, " 0000033") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 0000033");
prec = 3;
sprintf (buf, "%04.*x", prec, 33);
if (strcmp (buf, " 021") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 021");
prec = 3;
sprintf (buf, "%04.*X", prec, 33);
if (strcmp (buf, " 021") != 0)
printf ("got: '%s', expected: '%s'\n", buf, " 021");
}

View File

@@ -0,0 +1,56 @@
#include <stdio.h>
int
t1 (void)
{
int n = -1;
sscanf ("abc ", "abc %n", &n);
printf ("t1: count=%d\n", n);
return n != 5;
}
int
t2 (void)
{
int result = 0;
int n;
long N;
int retval;
#define SCAN(INPUT, FORMAT, VAR, EXP_RES, EXP_VAL) \
VAR = -1; \
retval = sscanf (INPUT, FORMAT, &VAR); \
printf ("sscanf (\"%s\", \"%s\", &x) => %d, x = %ld\n", \
INPUT, FORMAT, retval, (long int) VAR); \
result |= retval != EXP_RES || VAR != EXP_VAL
SCAN ("12345", "%ld", N, 1, 12345);
SCAN ("12345", "%llllld", N, 0, -1);
SCAN ("12345", "%LLLLLd", N, 0, -1);
SCAN ("test ", "%*s%n", n, 0, 4);
SCAN ("test ", "%2*s%n", n, 0, -1);
SCAN ("12 ", "%l2d", n, 0, -1);
SCAN ("12 ", "%2ld", N, 1, 12);
n = -1;
N = -1;
retval = sscanf ("1 1", "%d %Z", &n, &N);
printf ("sscanf (\"1 1\", \"%%d %%Z\", &n, &N) => %d, n = %d, N = %ld\n", \
retval, n, N); \
result |= retval != 1 || n != 1 || N != -1;
return result;
}
int
main (int argc, char *argv[])
{
int result = 0;
result |= t1 ();
result |= t2 ();
result |= fflush (stdout) == EOF;
return result;
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
PROGS = thread
all: $(PROGS:%=%.exe)
.phony: all
clean:
- $(RM) *.o *.exe *.sym
.phony: clean
install: # $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe)
$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe
$(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe)
$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe
$(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe
thread.exe: thread.c
$(CC) $(CFLAGS) thread.c -lkernel32 -o thread.exe
$(NM) --numeric-sort thread.exe > thread.sym
include ../../rules.mak

View File

@@ -0,0 +1,75 @@
/* $Id: thread.c,v 1.7 2001/02/06 00:11:17 dwelch Exp $
*
*
*
*
*/
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#define NR_THREADS (10)
ULONG nr;
DWORD WINAPI thread_main1(LPVOID param)
{
ULONG s;
printf("Thread %ld running\n", (DWORD)param);
s = nr = ((nr * 1103515245) + 12345) & 0x7fffffff;
s = s % 10;
printf("s %ld\n", s);
Sleep(s);
printf("Thread %ld finished\n", (DWORD)param);
return 0;
}
// Shows the help on how to use these program to the user
void showHelp(void)
{
printf("\nReactOS threads test program (built on %s).\n\n", __DATE__);
printf("syntax:\tthread.exe <seed>\n");
printf("\twhere <seed> is an integer number\n");
printf("\texample: thread.exe 100\n");
}
int main (int argc, char* argv[])
{
HANDLE hThread;
DWORD i=0;
DWORD id;
ULONG nr;
// The user must supply one argument (the seed). if he/she doesn't
// then we show the help.
// if(argc < 2) {
// showHelp();
// return 1;
// }
// nr = atoi(argv[1]);
nr = 500;
printf("Seed %ld\n", nr);
printf("Creating %d threads...\n",NR_THREADS*2);
for (i=0;i<NR_THREADS;i++)
{
CreateThread(NULL,
0,
thread_main1,
(LPVOID)i,
0,
&id);
}
printf("All threads created...\n");
for(;;);
return 0;
}

View File

@@ -0,0 +1,31 @@
#
#
#
PATH_TO_TOP = ../..
OBJECTS = vmtest.o
PROGS = vmtest.exe
LIBS =
CLEAN_FILES = vmtest.o vmtest.exe
all: vmtest.exe
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
floppy: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
$(CP) $* $(FLOPPY_DIR)/apps/$*
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
$(CP) $* ../../$(DIST_DIR)/apps/$*
vmtest.exe: $(OBJECTS)
$(CC) $(OBJECTS) -o vmtest.exe
include ../../rules.mak

View File

@@ -0,0 +1,54 @@
#include <stdio.h>
#include <windows.h>
int main()
{
PVOID Base;
PVOID Ret;
Base = VirtualAlloc(NULL,
1048576,
MEM_RESERVE,
PAGE_READWRITE);
if (Base == NULL)
{
printf("VirtualAlloc failed 1\n");
}
Ret = VirtualAlloc(Base + 4096,
4096,
MEM_COMMIT,
PAGE_READWRITE);
if (Ret == NULL)
{
printf("VirtualAlloc failed 2\n");
}
Ret = VirtualAlloc(Base + 12288,
4096,
MEM_COMMIT,
PAGE_READWRITE);
if (Ret == NULL)
{
printf("VirtualAlloc failed 3\n");
}
Ret = VirtualAlloc(Base + 20480,
4096,
MEM_COMMIT,
PAGE_READWRITE);
if (Ret == NULL)
{
printf("VirtualAlloc failed 4\n");
}
Ret = VirtualAlloc(Base + 4096,
28672,
MEM_RESERVE,
PAGE_READWRITE);
if (Ret == NULL)
{
printf("VirtualAlloc failed 5\n");
}
}

View File

@@ -0,0 +1,2 @@
buildno
buildno.exe

View File

@@ -0,0 +1,26 @@
# $Id: Makefile,v 1.10 2001/07/15 21:18:49 rex Exp $
#
PATH_TO_TOP = ../..
BASE_CFLAGS =
TARGETNAME=buildno
CLEAN_FILES= $(TARGETNAME).o $(TARGETNAME)$(EXE_POSTFIX) $(TARGETNAME).sym
all: $(TARGETNAME)$(EXE_POSTFIX)
$(EXE_PREFIX)$(TARGETNAME)$(EXE_POSTFIX)
$(TARGETNAME)$(EXE_POSTFIX): $(TARGETNAME).c ../../include/reactos/version.h
$(HOST_CC) -g -o $(TARGETNAME)$(EXE_POSTFIX) $(TARGETNAME).c
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
include ../../rules.mak
# EOF

View File

@@ -0,0 +1,329 @@
/* $Id: buildno.c,v 1.6 2001/04/11 22:13:21 dwelch Exp $
*
* buildno - Generate the build number for ReactOS
*
* Copyright (c) 1999,2000 Emanuele Aliberti
*
* License: GNU GPL
*
* It assumes the last release date is defined in
* <reactos/version.h> as a macro named
*
* KERNEL_RELEASE_DATE
*
* as a 32-bit unsigned long YYYYMMDD (UTC;
* MM=01-12; DD=01-31).
*
* The build number is the number of full days
* elapsed since the last release date (UTC).
*
* The build number is stored in the file
* <reactos/buildno.h> as a set of macros:
*
* KERNEL_VERSION_BUILD base 10 number
* KERNEL_VERSION_BUILD_STR C string
* KERNEL_VERSION_BUILD_RC RC string
*
* REVISIONS
* ---------
* 2000-01-22 (ea)
* Fixed bugs: tm_year is (current_year - 1900),
* tm_month is 0-11 not 1-12 and code ignored TZ.
* 2000-12-10 (ea)
* Added -p option to make it simply print the
* version number, but skip buildno.h generation.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "../../include/reactos/version.h"
#define FALSE 0
#define TRUE 1
/* File to (over)write */
#define BUILDNO_INCLUDE_FILE "../../include/reactos/buildno.h"
static char * argv0 = "";
#ifdef DBG
void
tm_dump (const char *tag, struct tm * t)
{
printf ("%s->tm_sec = %d\n", tag, t->tm_sec);
printf ("%s->tm_min = %d\n", tag, t->tm_min);
printf ("%s->tm_hour = %d\n", tag, t->tm_hour);
printf ("%s->tm_mday = %d\n", tag, t->tm_mday);
printf ("%s->tm_mon = %d\n", tag, t->tm_mon);
printf ("%s->tm_year = %d\n", tag, t->tm_year);
printf ("%s->tm_wday = %d\n", tag, t->tm_wday);
printf ("%s->tm_yday = %d\n", tag, t->tm_yday);
printf ("%s->tm_isdst = %d\n\n", tag, t->tm_isdst);
}
#endif
int
elapsed_days (
time_t t_today,
time_t t_release_day
)
{
double seconds = difftime (t_today, t_release_day);
double days = seconds / (double) 86400.0;
char buf [32];
char * dot = buf;
sprintf (buf, "%f", days );
while ( *dot && *dot != '.') ++dot;
*dot = '\0';
return atol (buf);
}
void
write_h (int build)
{
FILE *h = NULL;
char* s;
char* s1;
int length;
s1 = s = malloc(256 * 1024);
s = s + sprintf (s, "/* Do not edit - Machine generated */\n");
s = s + sprintf (s, "#ifndef _INC_REACTOS_BUILDNO\n" );
s = s + sprintf (s, "#define _INC_REACTOS_BUILDNO\n" );
s = s + sprintf (s, "#define KERNEL_VERSION_BUILD\t%d\n", build);
s = s + sprintf (s, "#define KERNEL_VERSION_BUILD_STR\t\"%d\"\n", build);
s = s + sprintf (s, "#define KERNEL_RELEASE_RC\t\"%d.%d.%d.%d\\0\"\n",
KERNEL_VERSION_MAJOR, KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL, build);
s = s + sprintf (s, "#define KERNEL_RELEASE_STR\t\"%d.%d.%d.%d\"\n",
KERNEL_VERSION_MAJOR,
KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL,
build);
s = s + sprintf (s, "#define KERNEL_VERSION_RC\t\"%d.%d.%d\\0\"\n",
KERNEL_VERSION_MAJOR,
KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL);
s = s + sprintf (s, "#define KERNEL_VERSION_STR\t\"%d.%d.%d\"\n",
KERNEL_VERSION_MAJOR,
KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL);
s = s + sprintf (s, "#endif\n/* EOF */\n");
h = fopen (BUILDNO_INCLUDE_FILE, "r");
if (h != NULL)
{
fseek(h, 0, SEEK_END);
length = ftell(h);
if (length == strlen(s1))
{
char* orig;
orig = malloc(length);
fseek(h, 0, SEEK_SET);
fread(orig, 1, length, h);
if (memcmp(s1, orig, length) == 0)
{
fclose(h);
return;
}
}
fclose(h);
}
h = fopen (BUILDNO_INCLUDE_FILE, "w");
if (!h)
{
fprintf (stderr,
"%s: can not create file \"%s\"!\n",
argv0,
BUILDNO_INCLUDE_FILE);
return;
}
fwrite(s1, 1, strlen(s1), h);
fclose (h);
}
void
usage (void)
{
fprintf (
stderr,
"Usage: %s [-{p|q}]\n\n -p print version number and exit\n -q run in quiet mode\n",
argv0
);
exit (EXIT_SUCCESS);
}
int
main (int argc, char * argv [])
{
int print_only = FALSE;
int quiet = FALSE;
int year = 0;
int month = 0;
int day = 0;
int build = 0;
time_t t0 = 0;
struct tm t0_tm = {0};
time_t t1 = 0;
struct tm * t1_tm = NULL;
argv0 = argv[0];
switch (argc)
{
case 1:
break;
case 2:
if (argv[1][0] == '-')
{
if (argv[1][1] == 'q')
{
quiet = TRUE;
}
else if (argv[1][1] == 'p')
{
print_only = TRUE;
}
else
{
usage ();
}
}
else
{
usage ();
}
break;
default:
usage ();
}
/*
* Set TZ information.
*/
tzset ();
/*
* We are building TODAY!
*/
time (& t0);
/*
* "Parse" the release date.
*/
day = KERNEL_RELEASE_DATE % 100;
month = ( ( KERNEL_RELEASE_DATE
% 10000
)
- day
)
/ 100;
year =
( KERNEL_RELEASE_DATE
- (month * 100)
- day
)
/ 10000;
if (FALSE == quiet)
{
printf ( "\n\
ReactOS Build Number Generator\n\n\
Last release: %4d-%02d-%02d\n",
year,
month,
day
);
}
#ifdef DBG
tm_dump ("t0", & t0_tm);
#endif
t0_tm.tm_year = (year - 1900);
t0_tm.tm_mon = --month; /* 0-11 */
t0_tm.tm_mday = day;
t0_tm.tm_hour = 0;
t0_tm.tm_min = 0;
t0_tm.tm_sec = 1;
t0_tm.tm_isdst = -1;
#ifdef DBG
tm_dump ("t0", & t0_tm);
#endif
if (-1 == (t0 = mktime (& t0_tm)))
{
fprintf (
stderr,
"%s: can not convert release date!\n",
argv[0]
);
return EXIT_FAILURE;
}
time (& t1); /* current build time */
t1_tm = gmtime (& t1);
#ifdef DBG
tm_dump ("t1", t1_tm);
#endif
t1_tm->tm_year +=
(t1_tm->tm_year < 70)
? 2000
: 1900;
#ifdef DBG
tm_dump ("t1", t1_tm);
#endif
if (FALSE == quiet)
{
printf (
"Current date: %4d-%02d-%02d\n\n",
t1_tm->tm_year,
(t1_tm->tm_mon + 1),
t1_tm->tm_mday
);
}
/*
* Compute delta days.
*/
build = elapsed_days (t1, t0);
if (FALSE == quiet)
{
printf (
"Build number: %d (elapsed days since last release)\n",
build
);
printf (
"ROS Version : %d.%d.%d.%d\n",
KERNEL_VERSION_MAJOR,
KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL,
build
);
}
/*
* (Over)write the include file, unless
* the user switched on -p.
*/
if (FALSE == print_only)
{
write_h (build);
}
else
{
printf ("%s: no code generated", argv [0]);
}
return EXIT_SUCCESS;
}
/* EOF */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,431 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/cabinet.h
* PURPOSE: Cabinet definitions
*/
#ifndef __CABINET_H
#define __CABINET_H
#include <string.h>
/* Debugging */
#define DBG
#define NORMAL_MASK 0x000000FF
#define SPECIAL_MASK 0xFFFFFF00
#define MIN_TRACE 0x00000001
#define MID_TRACE 0x00000002
#define MAX_TRACE 0x00000003
#define DEBUG_MEMORY 0x00000100
#ifdef DBG
extern DWORD DebugTraceLevel;
#define DPRINT(_t_, _x_) \
if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
printf("(%s:%d)(%s) ", __FILE__, __LINE__, __FUNCTION__); \
printf _x_ ; \
}
#define ASSERT(_b_) { \
if (!(_b_)) { \
printf("(%s:%d)(%s) ASSERTION: ", __FILE__, __LINE__, __FUNCTION__); \
printf(#_b_); \
ExitProcess(0); \
} \
}
#else /* DBG */
#define DPRINT(_t_, _x_)
#define ASSERT(_x_)
#endif /* DBG */
/* Macros */
#ifndef CopyMemory
#define CopyMemory(destination, source, length) memcpy(destination, source, length)
#endif /* CopyMemory */
/* Cabinet constants */
#define CAB_SIGNATURE 0x4643534D // "MSCF"
#define CAB_VERSION 0x0103
#define CAB_BLOCKSIZE 32768
#define CAB_COMP_MASK 0x00FF
#define CAB_COMP_NONE 0x0000
#define CAB_COMP_MSZIP 0x0001
#define CAB_COMP_QUANTUM 0x0002
#define CAB_COMP_LZX 0x0003
#define CAB_FLAG_HASPREV 0x0001
#define CAB_FLAG_HASNEXT 0x0002
#define CAB_FLAG_RESERVE 0x0004
#define CAB_ATTRIB_READONLY 0x0001
#define CAB_ATTRIB_HIDDEN 0x0002
#define CAB_ATTRIB_SYSTEM 0x0004
#define CAB_ATTRIB_VOLUME 0x0008
#define CAB_ATTRIB_DIRECTORY 0x0010
#define CAB_ATTRIB_ARCHIVE 0x0020
#define CAB_ATTRIB_EXECUTE 0x0040
#define CAB_ATTRIB_UTF_NAME 0x0080
#define CAB_FILE_MAX_FOLDER 0xFFFC
#define CAB_FILE_CONTINUED 0xFFFD
#define CAB_FILE_SPLIT 0xFFFE
#define CAB_FILE_PREV_NEXT 0xFFFF
/* Cabinet structures */
typedef struct _CFHEADER
{
DWORD Signature; // File signature 'MSCF' (CAB_SIGNATURE)
DWORD Reserved1; // Reserved field
DWORD CabinetSize; // Cabinet file size
DWORD Reserved2; // Reserved field
DWORD FileTableOffset; // Offset of first CFFILE
DWORD Reserved3; // Reserved field
WORD Version; // Cabinet version (CAB_VERSION)
WORD FolderCount; // Number of folders
WORD FileCount; // Number of files
WORD Flags; // Cabinet flags (CAB_FLAG_*)
WORD SetID; // Cabinet set id
WORD CabinetNumber; // Zero-based cabinet number
/* Optional fields (depends on Flags)
WORD CabinetResSize // Per-cabinet reserved area size
CHAR FolderResSize // Per-folder reserved area size
CHAR FileResSize // Per-file reserved area size
CHAR CabinetReserved[] // Per-cabinet reserved area
CHAR CabinetPrev[] // Name of previous cabinet file
CHAR DiskPrev[] // Name of previous disk
CHAR CabinetNext[] // Name of next cabinet file
CHAR DiskNext[] // Name of next disk
*/
} CFHEADER, *PCFHEADER;
typedef struct _CFFOLDER
{
DWORD DataOffset; // Absolute offset of first CFDATA block in this folder
WORD DataBlockCount; // Number of CFDATA blocks in this folder in this cabinet
WORD CompressionType; // Type of compression used for all CFDATA blocks in this folder
/* Optional fields (depends on Flags)
CHAR FolderReserved[] // Per-folder reserved area
*/
} CFFOLDER, *PCFFOLDER;
typedef struct _CFFILE
{
DWORD FileSize; // Uncompressed file size in bytes
DWORD FileOffset; // Uncompressed offset of file in the folder
WORD FileControlID; // File control ID (CAB_FILE_*)
WORD FileDate; // File date stamp, as used by DOS
WORD FileTime; // File time stamp, as used by DOS
WORD Attributes; // File attributes (CAB_ATTRIB_*)
/* After this is the NULL terminated filename */
} CFFILE, *PCFFILE;
typedef struct _CFDATA
{
DWORD Checksum; // Checksum of CFDATA entry
WORD CompSize; // Number of compressed bytes in this block
WORD UncompSize; // Number of uncompressed bytes in this block
/* Optional fields (depends on Flags)
CHAR DataReserved[] // Per-datablock reserved area
*/
} CFDATA, *PCFDATA;
typedef struct _CFDATA_NODE
{
struct _CFDATA_NODE *Next;
struct _CFDATA_NODE *Prev;
DWORD ScratchFilePosition; // Absolute offset in scratch file
DWORD AbsoluteOffset; // Absolute offset in cabinet
DWORD UncompOffset; // Uncompressed offset in folder
CFDATA Data;
} CFDATA_NODE, *PCFDATA_NODE;
typedef struct _CFFOLDER_NODE
{
struct _CFFOLDER_NODE *Next;
struct _CFFOLDER_NODE *Prev;
DWORD UncompOffset; // File size accumulator
DWORD AbsoluteOffset;
DWORD TotalFolderSize; // Total size of folder in current disk
PCFDATA_NODE DataListHead;
PCFDATA_NODE DataListTail;
DWORD Index;
BOOL Commit; // TRUE if the folder should be committed
BOOL Delete; // TRUE if marked for deletion
CFFOLDER Folder;
} CFFOLDER_NODE, *PCFFOLDER_NODE;
typedef struct _CFFILE_NODE
{
struct _CFFILE_NODE *Next;
struct _CFFILE_NODE *Prev;
CFFILE File;
LPTSTR FileName;
PCFDATA_NODE DataBlock; // First data block of file. NULL if not known
BOOL Commit; // TRUE if the file data should be committed
BOOL Delete; // TRUE if marked for deletion
PCFFOLDER_NODE FolderNode; // Folder this file belong to
} CFFILE_NODE, *PCFFILE_NODE;
typedef struct _CAB_SEARCH
{
TCHAR Search[MAX_PATH]; // Search criteria
PCFFILE_NODE Next; // Pointer to next node
PCFFILE File; // Pointer to current CFFILE
LPTSTR FileName; // Current filename
} CAB_SEARCH, *PCAB_SEARCH;
/* Constants */
/* Status codes */
#define CAB_STATUS_SUCCESS 0x00000000
#define CAB_STATUS_FAILURE 0x00000001
#define CAB_STATUS_NOMEMORY 0x00000002
#define CAB_STATUS_CANNOT_OPEN 0x00000003
#define CAB_STATUS_CANNOT_CREATE 0x00000004
#define CAB_STATUS_CANNOT_READ 0x00000005
#define CAB_STATUS_CANNOT_WRITE 0x00000006
#define CAB_STATUS_FILE_EXISTS 0x00000007
#define CAB_STATUS_INVALID_CAB 0x00000008
#define CAB_STATUS_NOFILE 0x00000009
#define CAB_STATUS_UNSUPPCOMP 0x0000000A
/* Codecs */
class CCABCodec {
public:
/* Default constructor */
CCABCodec() {};
/* Default destructor */
virtual ~CCABCodec() {};
/* Compresses a data block */
virtual ULONG Compress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength) = 0;
/* Uncompresses a data block */
virtual ULONG Uncompress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength) = 0;
};
/* Codec status codes */
#define CS_SUCCESS 0x0000 /* All data consumed */
#define CS_NOMEMORY 0x0001 /* Not enough free memory */
#define CS_BADSTREAM 0x0002 /* Bad data stream */
/* Codec indentifiers */
#define CAB_CODEC_RAW 0x00
#define CAB_CODEC_LZX 0x01
#define CAB_CODEC_MSZIP 0x02
/* Classes */
#ifndef CAB_READ_ONLY
class CCFDATAStorage {
public:
/* Default constructor */
CCFDATAStorage();
/* Default destructor */
virtual ~CCFDATAStorage();
ULONG Create(LPTSTR FileName);
ULONG Destroy();
ULONG Truncate();
ULONG Position();
ULONG Seek(LONG Position);
ULONG ReadBlock(PCFDATA Data, PVOID Buffer, PDWORD BytesRead);
ULONG WriteBlock(PCFDATA Data, PVOID Buffer, PDWORD BytesWritten);
private:
BOOL FileCreated;
HANDLE FileHandle;
};
#endif /* CAB_READ_ONLY */
class CCabinet {
public:
/* Default constructor */
CCabinet();
/* Default destructor */
virtual ~CCabinet();
/* Returns a pointer to the filename part of a fully qualified filename */
LPTSTR GetFileName(LPTSTR Path);
/* Removes a filename from a fully qualified filename */
VOID RemoveFileName(LPTSTR Path);
/* Normalizes a path */
BOOL NormalizePath(LPTSTR Path, DWORD Length);
/* Returns name of cabinet file */
LPTSTR GetCabinetName();
/* Sets the name of the cabinet file */
VOID SetCabinetName(LPTSTR FileName);
/* Sets destination path for extracted files */
VOID SetDestinationPath(LPTSTR DestinationPath);
/* Returns destination path */
LPTSTR GetDestinationPath();
/* Returns zero-based current disk number */
DWORD GetCurrentDiskNumber();
/* Opens the current cabinet file */
ULONG Open();
/* Closes the current open cabinet file */
VOID Close();
/* Locates the first file in the current cabinet file that matches a search criteria */
ULONG FindFirst(LPTSTR FileName, PCAB_SEARCH Search);
/* Locates the next file in the current cabinet file */
ULONG FindNext(PCAB_SEARCH Search);
/* Extracts a file from the current cabinet file */
ULONG ExtractFile(LPTSTR FileName);
/* Select codec engine to use */
VOID SelectCodec(ULONG Id);
#ifndef CAB_READ_ONLY
/* Creates a new cabinet file */
ULONG NewCabinet();
/* Forces a new disk to be created */
ULONG NewDisk();
/* Forces a new folder to be created */
ULONG NewFolder();
/* Writes a file to scratch storage */
ULONG WriteFileToScratchStorage(PCFFILE_NODE FileNode);
/* Forces the current disk to be written */
ULONG WriteDisk(DWORD MoreDisks);
/* Commits the current disk */
ULONG CommitDisk(DWORD MoreDisks);
/* Closes the current disk */
ULONG CloseDisk();
/* Closes the current cabinet */
ULONG CloseCabinet();
/* Adds a file to the current disk */
ULONG AddFile(LPTSTR FileName);
/* Sets the maximum size of the current disk */
VOID SetMaxDiskSize(DWORD Size);
#endif /* CAB_READ_ONLY */
/* Default event handlers */
/* Handler called when a file is about to be overridden */
virtual BOOL OnOverwrite(PCFFILE Entry, LPTSTR FileName);
/* Handler called when a file is about to be extracted */
virtual VOID OnExtract(PCFFILE Entry, LPTSTR FileName);
/* Handler called when a new disk is to be processed */
virtual VOID OnDiskChange(LPTSTR CabinetName, LPTSTR DiskLabel);
#ifndef CAB_READ_ONLY
/* Handler called when a file is about to be added */
virtual VOID OnAdd(PCFFILE Entry, LPTSTR FileName);
/* Handler called when a cabinet need a name */
virtual BOOL OnCabinetName(ULONG Number, LPTSTR Name);
/* Handler called when a disk needs a label */
virtual BOOL OnDiskLabel(ULONG Number, LPTSTR Label);
#endif /* CAB_READ_ONLY */
private:
PCFFOLDER_NODE LocateFolderNode(DWORD Index);
ULONG GetAbsoluteOffset(PCFFILE_NODE File);
ULONG LocateFile(LPTSTR FileName, PCFFILE_NODE *File);
ULONG ReadString(LPTSTR String, DWORD MaxLength);
ULONG ReadFileTable();
ULONG ReadDataBlocks(PCFFOLDER_NODE FolderNode);
PCFFOLDER_NODE NewFolderNode();
PCFFILE_NODE NewFileNode();
PCFDATA_NODE NewDataNode(PCFFOLDER_NODE FolderNode);
VOID DestroyDataNodes(PCFFOLDER_NODE FolderNode);
VOID DestroyFileNodes();
VOID DestroyDeletedFileNodes();
VOID DestroyFolderNodes();
VOID DestroyDeletedFolderNodes();
ULONG ComputeChecksum(PVOID Buffer, UINT Size, ULONG Seed);
ULONG ReadBlock(PVOID Buffer, DWORD Size, PDWORD BytesRead);
#ifndef CAB_READ_ONLY
ULONG InitCabinetHeader();
ULONG WriteCabinetHeader(BOOL MoreDisks);
ULONG WriteFolderEntries();
ULONG WriteFileEntries();
ULONG CommitDataBlocks(PCFFOLDER_NODE FolderNode);
ULONG WriteDataBlock();
ULONG GetAttributesOnFile(PCFFILE_NODE File);
ULONG SetAttributesOnFile(PCFFILE_NODE File);
#endif /* CAB_READ_ONLY */
DWORD CurrentDiskNumber; // Zero based disk number
TCHAR CabinetName[256]; // Filename of current cabinet
TCHAR CabinetPrev[256]; // Filename of previous cabinet
TCHAR DiskPrev[256]; // Label of cabinet in file CabinetPrev
TCHAR CabinetNext[256]; // Filename of next cabinet
TCHAR DiskNext[256]; // Label of cabinet in file CabinetNext
DWORD TotalHeaderSize; // Size of header and optional fields
DWORD NextFieldsSize; // Size of next cabinet name and next disk label
DWORD TotalFolderSize; // Size of all folder entries
DWORD TotalFileSize; // Size of all file entries
DWORD FolderUncompSize; // Uncompressed size of folder
DWORD BytesLeftInBlock; // Number of bytes left in current block
BOOL ReuseBlock;
TCHAR DestPath[MAX_PATH];
HANDLE FileHandle;
BOOL FileOpen;
CFHEADER CABHeader;
ULONG CabinetReserved;
ULONG FolderReserved;
ULONG DataReserved;
PCFFOLDER_NODE FolderListHead;
PCFFOLDER_NODE FolderListTail;
PCFFOLDER_NODE CurrentFolderNode;
PCFDATA_NODE CurrentDataNode;
PCFFILE_NODE FileListHead;
PCFFILE_NODE FileListTail;
CCABCodec *Codec;
ULONG CodecId;
BOOL CodecSelected;
PVOID InputBuffer;
PVOID CurrentIBuffer; // Current offset in input buffer
DWORD CurrentIBufferSize; // Bytes left in input buffer
PVOID OutputBuffer;
DWORD TotalCompSize; // Total size of current CFDATA block
PVOID CurrentOBuffer; // Current offset in output buffer
DWORD CurrentOBufferSize; // Bytes left in output buffer
DWORD BytesLeftInCabinet;
BOOL RestartSearch;
DWORD LastFileOffset; // Uncompressed offset of last extracted file
#ifndef CAB_READ_ONLY
DWORD LastBlockStart; // Uncompressed offset of last block in folder
DWORD MaxDiskSize;
DWORD DiskSize;
DWORD PrevCabinetNumber; // Previous cabinet number (where split file starts)
BOOL CreateNewDisk;
BOOL CreateNewFolder;
CCFDATAStorage *ScratchFile;
HANDLE SourceFile;
BOOL ContinueFile;
DWORD TotalBytesLeft;
BOOL BlockIsSplit; // TRUE if current data block is split
ULONG NextFolderNumber; // Zero based folder number
#endif /* CAB_READ_ONLY */
};
#endif /* __CABINET_H */
/* EOF */

View File

@@ -0,0 +1,47 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/cabman.h
* PURPOSE: Cabinet manager header
*/
#ifndef __CABMAN_H
#define __CABMAN_H
#include "cabinet.h"
#include "dfp.h"
/* Cabinet manager modes */
#define CM_MODE_CREATE 0
#define CM_MODE_DISPLAY 1
#define CM_MODE_EXTRACT 2
/* Classes */
class CCABManager : public CDFParser {
public:
CCABManager();
virtual ~CCABManager();
BOOL ParseCmdline(INT argc, PCHAR argv[]);
VOID Run();
private:
VOID Usage();
VOID CreateCabinet();
VOID DisplayCabinet();
VOID ExtractFromCabinet();
/* Event handlers */
virtual BOOL OnOverwrite(PCFFILE File, LPTSTR FileName);
virtual VOID OnExtract(PCFFILE File, LPTSTR FileName);
virtual VOID OnDiskChange(LPTSTR CabinetName, LPTSTR DiskLabel);
virtual VOID OnAdd(PCFFILE Entry, LPTSTR FileName);
/* Configuration */
BOOL ProcessAll;
DWORD Mode;
BOOL PromptOnOverwrite;
TCHAR Location[MAX_PATH];
TCHAR FileName[MAX_PATH];
};
#endif /* __CABMAN_H */
/* EOF */

View File

@@ -0,0 +1,55 @@
Directive File Format for ReactOS Cabinet Manager
-------------------------------------------------
Directives begin with a period ("."), and are followed by a command
name, and possibly blank delimited arguments. Commands and variable names are
case insensitive.
Syntax Description
-------------------------------------------------------------------------------
; Anything on a line after this is a comment
<filename> [destination] File copy command
.Define variable=[value] Define variable to be equal to value (*)
.Delete variable Delete a variable definition (*)
.New Disk|Cabinet|Folder Start a new disk, cabinet or folder (* -- new disk will work)
.Set variable=[value] Set variable to be equal to value (*)
%variable% Substitute value of variable (*)
<blank line> Blank lines are ignored
-------------------------------------------------------------------------------
Standard variable Description
-------------------------------------------------------------------------------
Cabinet=ON|OFF Turns cabinet mode on or off (* -- currently always on)
CabinetFileCountThreshold=count Threshold count of files per cabinet (*)
CabinetNamen=filename Cabinet file name for cabinet number n
CabinetNameTemplate=template Cabinet file name template
* is replaced by cabinet number
Compress=ON|OFF Turns compression on or off (* -- currently always on)
CompressionType=NONE|MSZIP Compression engine to use (* -- currently always mszip)
DiskLabeln=label Printed disk label name for disk n
DiskLabelTemplate=template Printed disk label name template
* is replaced by disk number
FolderFileCountThreshold=count Threshold count of files per folder (*)
FolderSizeThreshold=size Threshold folder size for current folder (*)
MaxDiskFileCount=count Maximum count of files per disk (*)
MaxDiskSize[n]=size Maximum disk size (for disk n)
ReservePerCabinetSize=size Amount of space to reserve in each cabinet (*)
ReservePerDataBlockSize=size Amount of space to reserve in each data block (*)
ReservePerFolderSize=size Amount of space to reserve in each folder (*)
SourceDir=path Default path for source files (*)
-------------------------------------------------------------------------------
(*) = not implemented
MaxDiskSize
-----------
0 means disk size is unlimited. Standard sizes available are:
2.88M
1.44M
1.25M
1.2M
720K
360K
CDROM

View File

@@ -0,0 +1,992 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/dfp.cpp
* PURPOSE: Directive file parser
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* NOTES: The directive file format is similar to the
* directive file format used by Microsoft's MAKECAB
* REVISIONS:
* CSH 21/03-2001 Created
*/
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "cabinet.h"
#include "dfp.h"
/* CDFParser */
CDFParser::CDFParser()
/*
* FUNCTION: Default constructor
*/
{
FileBuffer = NULL;
FileLoaded = FALSE;
CurrentOffset = 0;
CurrentLine = 0;
CabinetCreated = FALSE;
DiskCreated = FALSE;
FolderCreated = FALSE;
CabinetName = NULL;
DiskLabel = NULL;
MaxDiskSize = NULL;
MaxDiskSizeAllSet = FALSE;
CabinetNameTemplateSet = FALSE;
DiskLabelTemplateSet = FALSE;
}
CDFParser::~CDFParser()
/*
* FUNCTION: Default destructor
*/
{
PCABINET_NAME CNPrev;
PCABINET_NAME CNNext;
PDISK_NUMBER DNPrev;
PDISK_NUMBER DNNext;
if (FileBuffer)
HeapFree(GetProcessHeap(), 0, FileBuffer);
CNNext = CabinetName;
while (CNNext != NULL) {
CNPrev = CNNext->Next;
HeapFree(GetProcessHeap(), 0, CNNext);
CNNext = CNPrev;
}
CNNext = DiskLabel;
while (CNNext != NULL) {
CNPrev = CNNext->Next;
HeapFree(GetProcessHeap(), 0, CNNext);
CNNext = CNPrev;
}
DNNext = MaxDiskSize;
while (DNNext != NULL) {
DNPrev = DNNext->Next;
HeapFree(GetProcessHeap(), 0, DNNext);
DNNext = DNPrev;
}
}
ULONG CDFParser::Load(LPTSTR FileName)
/*
* FUNCTION: Loads a directive file into memory
* ARGUMENTS:
* FileName = Pointer to name of directive file
* RETURNS:
* Status of operation
*/
{
DWORD BytesRead;
LONG FileSize;
if (FileLoaded)
return CAB_STATUS_SUCCESS;
/* Create cabinet file, overwrite if it already exists */
FileHandle = CreateFile(FileName, // Create this file
GENERIC_READ, // Open for reading
0, // No sharing
NULL, // No security
OPEN_EXISTING, // Open the file
FILE_ATTRIBUTE_NORMAL, // Normal file
NULL); // No attribute template
if (FileHandle == INVALID_HANDLE_VALUE)
return CAB_STATUS_CANNOT_OPEN;
FileSize = GetFileSize(FileHandle, NULL);
if (FileSize < 0) {
CloseHandle(FileHandle);
return CAB_STATUS_CANNOT_OPEN;
}
FileBufferSize = (ULONG)FileSize;
FileBuffer = (PCHAR)HeapAlloc(GetProcessHeap(), 0, FileBufferSize);
if (!FileBuffer) {
CloseHandle(FileHandle);
return CAB_STATUS_NOMEMORY;
}
if (!ReadFile(FileHandle, FileBuffer, FileBufferSize, &BytesRead, NULL)) {
CloseHandle(FileHandle);
HeapFree(GetProcessHeap(), 0, FileBuffer);
FileBuffer = NULL;
return CAB_STATUS_CANNOT_READ;
}
CloseHandle(FileHandle);
FileLoaded = TRUE;
DPRINT(MAX_TRACE, ("File (%d bytes)\n", FileBufferSize));
return CAB_STATUS_SUCCESS;
}
ULONG CDFParser::Parse()
/*
* FUNCTION: Parses a loaded directive file
* RETURNS:
* Status of operation
*/
{
BOOL Command;
ULONG Status;
if (!FileLoaded)
return CAB_STATUS_NOFILE;
while (ReadLine()) {
Command = FALSE;
while (CurrentToken != TokenEnd) {
switch (CurrentToken) {
case TokenInteger:
itoa(CurrentInteger, (LPTSTR)&CurrentString, 10);
case TokenIdentifier:
if (Command) {
/* Command */
Status = PerformCommand();
if (Status == CAB_STATUS_FAILURE) {
printf("Directive file contains errors at line %d.\n", (UINT)CurrentLine);
DPRINT(MID_TRACE, ("Error while executing command.\n"));
}
if (Status != CAB_STATUS_SUCCESS)
return Status;
} else {
/* File copy */
Status = PerformFileCopy();
if (Status == CAB_STATUS_FAILURE) {
printf("Directive file contains errors at line %d.\n", (UINT)CurrentLine);
DPRINT(MID_TRACE, ("Error while copying file.\n"));
}
if (Status != CAB_STATUS_SUCCESS)
return Status;
}
break;
case TokenSpace:
break;
case TokenSemi:
CurrentToken = TokenEnd;
continue;
case TokenPeriod:
Command = TRUE;
break;
default:
printf("Directive file contains errors at line %d.\n", (UINT)CurrentLine);
DPRINT(MIN_TRACE, ("Token is (%d).\n", (UINT)CurrentToken));
return CAB_STATUS_SUCCESS;
}
NextToken();
}
}
printf("\nWriting cabinet. This may take a while...\n\n");
if (DiskCreated) {
Status = WriteDisk(FALSE);
if (Status == CAB_STATUS_SUCCESS)
Status = CloseDisk();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot write disk (%d).\n", (UINT)Status));
return Status;
}
}
if (CabinetCreated) {
Status = CloseCabinet();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot close cabinet (%d).\n", (UINT)Status));
return Status;
}
}
printf("\nDone.\n");
return CAB_STATUS_SUCCESS;
}
BOOL CDFParser::OnDiskLabel(ULONG Number, LPTSTR Label)
/*
* FUNCTION: Called when a disk needs a label
* ARGUMENTS:
* Number = Cabinet number that needs a label
* Label = Pointer to buffer to place label of disk
* RETURNS:
* TRUE if a disk label was returned, FALSE if not
*/
{
TCHAR Buffer[20];
INT i, j;
TCHAR ch;
Number += 1;
DPRINT(MID_TRACE, ("Giving disk (%d) a label...\n", (UINT)Number));
if (GetDiskName(&DiskLabel, Number, Label))
return TRUE;
if (DiskLabelTemplateSet) {
j = 0;
lstrcpy(Label, "");
for (i = 0; i < lstrlen(DiskLabelTemplate); i++) {
ch = DiskLabelTemplate[i];
if (ch == '*') {
lstrcat(Label, itoa(Number, Buffer, 10));
j += lstrlen(Buffer);
} else {
Label[j] = ch;
j++;
}
Label[j] = '\0';
}
DPRINT(MID_TRACE, ("Giving disk (%s) as a label...\n", Label));
return TRUE;
} else
return FALSE;
}
BOOL CDFParser::OnCabinetName(ULONG Number, LPTSTR Name)
/*
* FUNCTION: Called when a cabinet needs a name
* ARGUMENTS:
* Number = Disk number that needs a name
* Name = Pointer to buffer to place name of cabinet
* RETURNS:
* TRUE if a cabinet name was returned, FALSE if not
*/
{
TCHAR Buffer[20];
INT i, j;
TCHAR ch;
Number += 1;
DPRINT(MID_TRACE, ("Giving cabinet (%d) a name...\n", (UINT)Number));
if (GetDiskName(&CabinetName, Number, Name))
return TRUE;
if (CabinetNameTemplateSet) {
j = 0;
lstrcpy(Name, "");
for (i = 0; i < lstrlen(CabinetNameTemplate); i++) {
ch = CabinetNameTemplate[i];
if (ch == '*') {
lstrcat(Name, itoa(Number, Buffer, 10));
j += lstrlen(Buffer);
} else {
Name[j] = ch;
j++;
}
Name[j] = '\0';
}
DPRINT(MID_TRACE, ("Giving cabinet (%s) as a name...\n", Name));
return TRUE;
} else
return FALSE;
}
BOOL CDFParser::SetDiskName(PCABINET_NAME *List, ULONG Number, LPTSTR String)
/*
* FUNCTION: Sets an entry in a list
* ARGUMENTS:
* List = Address of pointer to list
* Number = Disk number
* String = Pointer to string
* RETURNS:
* FALSE if there was not enough free memory available
*/
{
PCABINET_NAME CN;
CN = *List;
while (CN != NULL) {
if (CN->DiskNumber == Number) {
lstrcpy(CN->Name, String);
return TRUE;
}
CN = CN->Next;
}
CN = (PCABINET_NAME)HeapAlloc(GetProcessHeap(), 0, sizeof(CABINET_NAME));
if (!CN)
return FALSE;
CN->DiskNumber = Number;
lstrcpy(CN->Name, String);
CN->Next = *List;
*List = CN;
return TRUE;
}
BOOL CDFParser::GetDiskName(PCABINET_NAME *List, ULONG Number, LPTSTR String)
/*
* FUNCTION: Returns an entry in a list
* ARGUMENTS:
* List = Address of pointer to list
* Number = Disk number
* String = Address of buffer to copy string to
* RETURNS:
* FALSE if there was not enough free memory available
*/
{
PCABINET_NAME CN;
CN = *List;
while (CN != NULL) {
if (CN->DiskNumber == Number) {
lstrcpy(String, CN->Name);
return TRUE;
}
CN = CN->Next;
}
return FALSE;
}
BOOL CDFParser::SetDiskNumber(PDISK_NUMBER *List, ULONG Number, ULONG Value)
/*
* FUNCTION: Sets an entry in a list
* ARGUMENTS:
* List = Address of pointer to list
* Number = Disk number
* Value = Value to set
* RETURNS:
* FALSE if there was not enough free memory available
*/
{
PDISK_NUMBER DN;
DN = *List;
while (DN != NULL) {
if (DN->DiskNumber == Number) {
DN->Number = Value;
return TRUE;
}
DN = DN->Next;
}
DN = (PDISK_NUMBER)HeapAlloc(GetProcessHeap(), 0, sizeof(DISK_NUMBER));
if (!DN)
return FALSE;
DN->DiskNumber = Number;
DN->Number = Value;
DN->Next = *List;
*List = DN;
return TRUE;
}
BOOL CDFParser::GetDiskNumber(PDISK_NUMBER *List, ULONG Number, PULONG Value)
/*
* FUNCTION: Returns an entry in a list
* ARGUMENTS:
* List = Address of pointer to list
* Number = Disk number
* Value = Address of buffer to place value
* RETURNS:
* TRUE if the entry was found
*/
{
PDISK_NUMBER DN;
DN = *List;
while (DN != NULL) {
if (DN->DiskNumber == Number) {
*Value = DN->Number;
return TRUE;
}
DN = DN->Next;
}
return FALSE;
}
BOOL CDFParser::DoDiskLabel(ULONG Number, LPTSTR Label)
/*
* FUNCTION: Sets the label of a disk
* ARGUMENTS:
* Number = Disk number
* Label = Pointer to label of disk
* RETURNS:
* FALSE if there was not enough free memory available
*/
{
DPRINT(MID_TRACE, ("Setting label of disk (%d) to '%s'\n", (UINT)Number, Label));
return SetDiskName(&DiskLabel, Number, Label);
}
VOID CDFParser::DoDiskLabelTemplate(LPTSTR Template)
/*
* FUNCTION: Sets a disk label template to use
* ARGUMENTS:
* Template = Pointer to disk label template
*/
{
DPRINT(MID_TRACE, ("Setting disk label template to '%s'\n", Template));
lstrcpy(DiskLabelTemplate, Template);
DiskLabelTemplateSet = TRUE;
}
BOOL CDFParser::DoCabinetName(ULONG Number, LPTSTR Name)
/*
* FUNCTION: Sets the name of a cabinet
* ARGUMENTS:
* Number = Disk number
* Name = Pointer to name of cabinet
* RETURNS:
* FALSE if there was not enough free memory available
*/
{
DPRINT(MID_TRACE, ("Setting name of cabinet (%d) to '%s'\n", (UINT)Number, Name));
return SetDiskName(&CabinetName, Number, Name);
}
VOID CDFParser::DoCabinetNameTemplate(LPTSTR Template)
/*
* FUNCTION: Sets a cabinet name template to use
* ARGUMENTS:
* Template = Pointer to cabinet name template
*/
{
DPRINT(MID_TRACE, ("Setting cabinet name template to '%s'\n", Template));
lstrcpy(CabinetNameTemplate, Template);
CabinetNameTemplateSet = TRUE;
}
ULONG CDFParser::DoMaxDiskSize(BOOL NumberValid, ULONG Number)
/*
* FUNCTION: Sets the maximum disk size
* ARGUMENTS:
* NumberValid = TRUE if disk number is valid
* Number = Disk number
* RETURNS:
* Status of operation
* NOTES:
* Standard sizes are 2.88M, 1.44M, 1.25M, 1.2M, 720K, 360K, and CDROM
*/
{
ULONG A, B, Value;
if (IsNextToken(TokenInteger, TRUE)) {
A = CurrentInteger;
if (IsNextToken(TokenPeriod, FALSE)) {
if (!IsNextToken(TokenInteger, FALSE))
return CAB_STATUS_FAILURE;
B = CurrentInteger;
} else
B = 0;
if (CurrentToken == TokenIdentifier) {
switch (CurrentString[0]) {
case 'K':
if (B != 0)
return CAB_STATUS_FAILURE;
if (A == 720)
/* 720K disk */
Value = 730112;
else if (A == 360)
/* 360K disk */
Value = 362496;
else
return CAB_STATUS_FAILURE;
break;
case 'M':
if (A == 1) {
if (B == 44)
/* 1.44M disk */
Value = 1457664;
else if (B == 25)
/* 1.25M disk */
Value = 1300000; // FIXME: Value?
else if (B == 2)
/* 1.2M disk */
Value = 1213952;
else
return CAB_STATUS_FAILURE;
} else if (A == 2) {
if (B == 88)
/* 2.88M disk */
Value = 2915328;
else
return CAB_STATUS_FAILURE;
} else
return CAB_STATUS_FAILURE;
break;
default:
DPRINT(MID_TRACE, ("Bad suffix (%c)\n", CurrentString[0]));
return CAB_STATUS_FAILURE;
}
} else
Value = A;
} else {
if ((CurrentToken != TokenString) &&
(strcmpi(CurrentString, "CDROM") != 0))
return CAB_STATUS_FAILURE;
/* CDROM */
Value = 640*1024*1024; // FIXME: Correct size for CDROM?
}
if (NumberValid)
return (SetDiskNumber(&MaxDiskSize, Number, Value)?
CAB_STATUS_SUCCESS : CAB_STATUS_FAILURE);
MaxDiskSizeAll = Value;
MaxDiskSizeAllSet = TRUE;
SetMaxDiskSize(Value);
return CAB_STATUS_SUCCESS;
}
ULONG CDFParser::SetupNewDisk()
/*
* FUNCTION: Sets up parameters for a new disk
* RETURNS:
* Status of operation
*/
{
ULONG Value;
if (!GetDiskNumber(&MaxDiskSize, GetCurrentDiskNumber(), &Value)) {
if (MaxDiskSizeAllSet)
Value = MaxDiskSizeAll;
else
Value = 0;
}
SetMaxDiskSize(Value);
return CAB_STATUS_SUCCESS;
}
ULONG CDFParser::PerformSetCommand()
/*
* FUNCTION: Performs a set variable command
* RETURNS:
* Status of operation
*/
{
SETTYPE SetType;
BOOL NumberValid = FALSE;
ULONG Number = 0;
if (!IsNextToken(TokenIdentifier, TRUE))
return CAB_STATUS_FAILURE;
if (strcmpi(CurrentString, "DiskLabel") == 0)
SetType = stDiskLabel;
else if (strcmpi(CurrentString, "DiskLabelTemplate") == 0)
SetType = stDiskLabelTemplate;
else if (strcmpi(CurrentString, "CabinetName") == 0)
SetType = stCabinetName;
else if (strcmpi(CurrentString, "CabinetNameTemplate") == 0)
SetType = stCabinetNameTemplate;
else if (strcmpi(CurrentString, "MaxDiskSize") == 0)
SetType = stMaxDiskSize;
else
return CAB_STATUS_FAILURE;
if ((SetType == stDiskLabel) || (SetType == stCabinetName)) {
if (!IsNextToken(TokenInteger, FALSE))
return CAB_STATUS_FAILURE;
Number = CurrentInteger;
if (!IsNextToken(TokenEqual, TRUE))
return CAB_STATUS_FAILURE;
} else if (SetType == stMaxDiskSize) {
if (IsNextToken(TokenInteger, FALSE)) {
NumberValid = TRUE;
Number = CurrentInteger;
} else {
NumberValid = FALSE;
while (CurrentToken == TokenSpace)
NextToken();
if (CurrentToken != TokenEqual)
return CAB_STATUS_FAILURE;
}
} else if (!IsNextToken(TokenEqual, TRUE))
return CAB_STATUS_FAILURE;
if (SetType != stMaxDiskSize) {
if (!IsNextToken(TokenString, TRUE))
return CAB_STATUS_FAILURE;
}
switch (SetType) {
case stDiskLabel:
if (!DoDiskLabel(Number, CurrentString))
DPRINT(MIN_TRACE, ("Not enough available free memory.\n"));
return CAB_STATUS_SUCCESS;
case stCabinetName:
if (!DoCabinetName(Number, CurrentString))
DPRINT(MIN_TRACE, ("Not enough available free memory.\n"));
return CAB_STATUS_SUCCESS;
case stDiskLabelTemplate:
DoDiskLabelTemplate(CurrentString);
return CAB_STATUS_SUCCESS;
case stCabinetNameTemplate:
DoCabinetNameTemplate(CurrentString);
return CAB_STATUS_SUCCESS;
case stMaxDiskSize:
return DoMaxDiskSize(NumberValid, Number);
default:
return CAB_STATUS_FAILURE;
}
}
ULONG CDFParser::PerformNewCommand()
/*
* FUNCTION: Performs a new disk|cabinet|folder command
* RETURNS:
* Status of operation
*/
{
NEWTYPE NewType;
ULONG Status;
if (!IsNextToken(TokenIdentifier, TRUE))
return CAB_STATUS_FAILURE;
if (strcmpi(CurrentString, "Disk") == 0)
NewType = ntDisk;
else if (strcmpi(CurrentString, "Cabinet") == 0)
NewType = ntCabinet;
else if (strcmpi(CurrentString, "Folder") == 0)
NewType = ntFolder;
else
return CAB_STATUS_FAILURE;
switch (NewType) {
case ntDisk:
if (DiskCreated) {
Status = WriteDisk(TRUE);
if (Status == CAB_STATUS_SUCCESS)
Status = CloseDisk();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot write disk (%d).\n", (UINT)Status));
return CAB_STATUS_SUCCESS;
}
DiskCreated = FALSE;
}
Status = NewDisk();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot create disk (%d).\n", (UINT)Status));
return CAB_STATUS_SUCCESS;
}
DiskCreated = TRUE;
SetupNewDisk();
return CAB_STATUS_SUCCESS;
case ntCabinet:
if (DiskCreated) {
Status = WriteDisk(TRUE);
if (Status == CAB_STATUS_SUCCESS)
Status = CloseDisk();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot write disk (%d).\n", (UINT)Status));
return CAB_STATUS_SUCCESS;
}
DiskCreated = FALSE;
}
Status = NewCabinet();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot create cabinet (%d).\n", (UINT)Status));
return CAB_STATUS_SUCCESS;
}
DiskCreated = TRUE;
SetupNewDisk();
return CAB_STATUS_SUCCESS;
case ntFolder:
Status = NewFolder();
ASSERT(Status == CAB_STATUS_SUCCESS);
return CAB_STATUS_SUCCESS;
default:
return CAB_STATUS_FAILURE;
}
}
ULONG CDFParser::PerformCommand()
/*
* FUNCTION: Performs a command
* RETURNS:
* Status of operation
*/
{
if (strcmpi(CurrentString, "Set") == 0)
return PerformSetCommand();
if (strcmpi(CurrentString, "New") == 0)
return PerformNewCommand();
return CAB_STATUS_FAILURE;
}
ULONG CDFParser::PerformFileCopy()
/*
* FUNCTION: Performs a file copy
* RETURNS:
* Status of operation
*/
{
ULONG Status;
ULONG i, j;
TCHAR ch;
TCHAR SrcName[MAX_PATH];
TCHAR DstName[MAX_PATH];
lstrcpy(SrcName, "");
lstrcpy(DstName, "");
i = lstrlen(CurrentString);
while ((i < LineLength) &&
((ch = Line[i]) != ' ') &&
(ch != 0x09) &&
(ch != ';')) {
CurrentString[i] = ch;
i++;
}
CurrentString[i] = '\0';
CurrentToken = TokenString;
CurrentChar = i + 1;
lstrcpy(SrcName, CurrentString);
SkipSpaces();
if (CurrentToken != TokenEnd) {
j = lstrlen(CurrentString); i = 0;
while ((CurrentChar + i < LineLength) &&
((ch = Line[CurrentChar + i]) != ' ') &&
(ch != 0x09) &&
(ch != ';')) {
CurrentString[j + i] = ch;
i++;
}
CurrentString[j + i] = '\0';
CurrentToken = TokenString;
CurrentChar += i + 1;
lstrcpy(DstName, CurrentString);
}
if (!CabinetCreated) {
DPRINT(MID_TRACE, ("Creating cabinet.\n"));
Status = NewCabinet();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot create cabinet (%d).\n", (UINT)Status));
printf("Cannot create cabinet.\n");
return CAB_STATUS_FAILURE;
}
CabinetCreated = TRUE;
DPRINT(MID_TRACE, ("Creating disk.\n"));
Status = NewDisk();
if (Status != CAB_STATUS_SUCCESS) {
DPRINT(MIN_TRACE, ("Cannot create disk (%d).\n", (UINT)Status));
printf("Cannot create disk.\n");
return CAB_STATUS_FAILURE;
}
DiskCreated = TRUE;
SetupNewDisk();
}
DPRINT(MID_TRACE, ("Adding file: '%s' destination: '%s'.\n", SrcName, DstName));
Status = AddFile(SrcName);
if (Status != CAB_STATUS_SUCCESS) {
if (Status == CAB_STATUS_CANNOT_OPEN)
printf("File does not exist: %s.\n", SrcName);
else if (Status == CAB_STATUS_NOMEMORY)
printf("Insufficient memory to add file: %s.\n", SrcName);
else
printf("Cannot add file: %s (%d).\n", SrcName, Status);
return Status;
}
return CAB_STATUS_SUCCESS;
}
VOID CDFParser::SkipSpaces()
/*
* FUNCTION: Skips any spaces in the current line
*/
{
NextToken();
while (CurrentToken == TokenSpace)
NextToken();
}
BOOL CDFParser::IsNextToken(TOKEN Token, BOOL NoSpaces)
/*
* FUNCTION: Checks if next token equals Token
* ARGUMENTS:
* Token = Token to compare with
* SkipSp = TRUE if spaces should be skipped
* RETURNS:
* FALSE if next token is diffrent from Token
*/
{
if (NoSpaces)
SkipSpaces();
else
NextToken();
return (CurrentToken == Token);
}
BOOL CDFParser::ReadLine()
/*
* FUNCTION: Reads the next line into the line buffer
* RETURNS:
* TRUE if there is a new line, FALSE if not
*/
{
ULONG i, j;
TCHAR ch;
if (CurrentOffset >= FileBufferSize)
return FALSE;
i = 0;
while (((j = CurrentOffset + i) < FileBufferSize) && (i < 127) &&
((ch = FileBuffer[j]) != 0x0D)) {
Line[i] = ch;
i++;
}
Line[i] = '\0';
LineLength = i;
if (FileBuffer[CurrentOffset + i + 1] == 0x0A)
CurrentOffset++;
CurrentOffset += i + 1;
CurrentChar = 0;
CurrentLine++;
NextToken();
return TRUE;
}
VOID CDFParser::NextToken()
/*
* FUNCTION: Reads the next token from the current line
*/
{
ULONG i;
TCHAR ch = ' ';
if (CurrentChar >= LineLength) {
CurrentToken = TokenEnd;
return;
}
switch (Line[CurrentChar]) {
case ' ':
case 0x09: CurrentToken = TokenSpace;
break;
case ';': CurrentToken = TokenSemi;
break;
case '=': CurrentToken = TokenEqual;
break;
case '.': CurrentToken = TokenPeriod;
break;
case '\\': CurrentToken = TokenBackslash;
break;
case '"':
i = 0;
while ((CurrentChar + i + 1 < LineLength) &&
((ch = Line[CurrentChar + i + 1]) != '"')) {
CurrentString[i] = ch;
i++;
}
CurrentString[i] = '\0';
CurrentToken = TokenString;
CurrentChar += i + 2;
return;
default:
i = 0;
while ((CurrentChar + i < LineLength) &&
((ch = Line[CurrentChar + i]) >= '0') && (ch <= '9')) {
CurrentString[i] = ch;
i++;
}
if (i > 0) {
CurrentString[i] = '\0';
CurrentInteger = atoi((PCHAR)CurrentString);
CurrentToken = TokenInteger;
CurrentChar += i;
return;
}
i = 0;
while (((CurrentChar + i < LineLength) &&
(((ch = Line[CurrentChar + i]) >= 'a') && (ch <= 'z')) ||
((ch >= 'A') && (ch <= 'Z')) || (ch == '_'))) {
CurrentString[i] = ch;
i++;
}
if (i > 0) {
CurrentString[i] = '\0';
CurrentToken = TokenIdentifier;
CurrentChar += i;
return;
}
CurrentToken = TokenUnknown;
}
CurrentChar++;
}
/* EOF */

View File

@@ -0,0 +1,130 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/dfp.h
* PURPOSE: Directive file parser header
*/
#ifndef __DFP_H
#define __DFP_H
#include "cabinet.h"
typedef struct _CABINET_NAME {
struct _CABINET_NAME *Next;
ULONG DiskNumber;
TCHAR Name[128];
} CABINET_NAME, *PCABINET_NAME;
typedef struct _DISK_NUMBER {
struct _DISK_NUMBER *Next;
ULONG DiskNumber;
ULONG Number;
} DISK_NUMBER, *PDISK_NUMBER;
typedef enum {
TokenUnknown,
TokenInteger,
TokenIdentifier,
TokenString,
TokenSpace,
TokenSemi,
TokenEqual,
TokenPeriod,
TokenBackslash,
TokenEnd,
} TOKEN;
typedef enum {
stCabinetName,
stCabinetNameTemplate,
stDiskLabel,
stDiskLabelTemplate,
stMaxDiskSize
} SETTYPE;
typedef enum {
ntDisk,
ntCabinet,
ntFolder,
} NEWTYPE;
/* Classes */
class CDFParser : public CCabinet {
public:
CDFParser();
virtual ~CDFParser();
ULONG Load(LPTSTR FileName);
ULONG Parse();
private:
/* Event handlers */
virtual BOOL OnDiskLabel(ULONG Number, LPTSTR Label);
virtual BOOL OnCabinetName(ULONG Number, LPTSTR Name);
BOOL SetDiskName(PCABINET_NAME *List, ULONG Number, LPTSTR String);
BOOL GetDiskName(PCABINET_NAME *List, ULONG Number, LPTSTR String);
BOOL SetDiskNumber(PDISK_NUMBER *List, ULONG Number, ULONG Value);
BOOL GetDiskNumber(PDISK_NUMBER *List, ULONG Number, PULONG Value);
BOOL DoDiskLabel(ULONG Number, LPTSTR Label);
VOID DoDiskLabelTemplate(LPTSTR Template);
BOOL DoCabinetName(ULONG Number, LPTSTR Name);
VOID DoCabinetNameTemplate(LPTSTR Template);
ULONG DoMaxDiskSize(BOOL NumberValid, ULONG Number);
ULONG SetupNewDisk();
ULONG PerformSetCommand();
ULONG PerformNewCommand();
ULONG PerformCommand();
ULONG PerformFileCopy();
VOID SkipSpaces();
BOOL IsNextToken(TOKEN Token, BOOL NoSpaces);
BOOL ReadLine();
VOID NextToken();
/* Parsing */
BOOL FileLoaded;
HANDLE FileHandle;
PCHAR FileBuffer;
DWORD FileBufferSize;
ULONG CurrentOffset;
TCHAR Line[128];
ULONG LineLength;
ULONG CurrentLine;
ULONG CurrentChar;
/* Token */
TOKEN CurrentToken;
ULONG CurrentInteger;
TCHAR CurrentString[256];
/* State */
BOOL CabinetCreated;
BOOL DiskCreated;
BOOL FolderCreated;
/* Standard directive variable */
BOOL Cabinet;
ULONG CabinetFileCountThreshold;
PCABINET_NAME CabinetName;
BOOL CabinetNameTemplateSet;
TCHAR CabinetNameTemplate[128];
BOOL Compress;
ULONG CompressionType;
PCABINET_NAME DiskLabel;
BOOL DiskLabelTemplateSet;
TCHAR DiskLabelTemplate[128];
ULONG FolderFileCountThreshold;
ULONG FolderSizeThreshold;
ULONG MaxCabinetSize;
ULONG MaxDiskFileCount;
PDISK_NUMBER MaxDiskSize;
BOOL MaxDiskSizeAllSet;
ULONG MaxDiskSizeAll;
ULONG ReservePerCabinetSize;
ULONG ReservePerDataBlockSize;
ULONG ReservePerFolderSize;
TCHAR SourceDir[256];
};
#endif /* __DFP_H */
/* EOF */

View File

@@ -0,0 +1,493 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/main.cpp
* PURPOSE: Main program
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 21/03-2001 Created
*/
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <reactos/buildno.h>
#include "cabman.h"
#ifdef DBG
DWORD DebugTraceLevel = MIN_TRACE;
//DWORD DebugTraceLevel = MID_TRACE;
//DWORD DebugTraceLevel = MAX_TRACE;
#endif /* DBG */
#define CM_VERSION KERNEL_VERSION_STR
LPTSTR Pad(LPTSTR Str, CHAR PadChar, UINT Length)
/*
* FUNCTION: Pads a string with a character to make a given length
* ARGUMENTS:
* Str = Pointer to string to pad
* PadChar = Character to pad with
* Length = Disired length of string
* RETURNS:
* Pointer to string
* NOTES:
* Str must be at least Length + 1 bytes
*/
{
UINT Len;
Len = lstrlen(Str);
if (Len < Length) {
memcpy(&Str[Length - Len], Str, Len + 1);
memset(Str, PadChar, Length - Len);
}
return Str;
}
LPTSTR Date2Str(LPTSTR Str, WORD Date)
/*
* FUNCTION: Converts a DOS style date to a string
* ARGUMENTS:
* Str = Pointer to destination string
* Date = DOS style date
* RETURNS:
* Pointer to string
*/
{
DWORD dw;
/* Month */
Str[0] = (CHAR)('0' + ((Date & 0x01E0) >> 5) / 10);
Str[1] = (CHAR)('0' + ((Date & 0x01E0) >> 5) % 10);
Str[2] = '-';
/* Day */
Str[3] = (CHAR)('0' + (Date & 0x001F) / 10);
Str[4] = (CHAR)('0' + (Date & 0x001F) % 10);
Str[5] = '-';
/* Year */
dw = 1980 + ((Date & 0xFE00) >> 9);
Str[6] = (CHAR)('0' + dw / 1000); dw %= 1000;
Str[7] = (CHAR)('0' + dw / 100); dw %= 100;
Str[8] = (CHAR)('0' + dw / 10); dw %= 10;
Str[9] = (CHAR)('0' + dw % 10);
Str[10] = '\0';
return Str;
}
LPTSTR Time2Str(LPTSTR Str, WORD Time)
/*
* FUNCTION: Converts a DOS style time to a string
* ARGUMENTS:
* Str = Pointer to destination string
* Time = DOS style time
* RETURNS:
* Pointer to string
*/
{
BOOL PM;
DWORD Hour;
DWORD dw;
Hour = ((Time & 0xF800) >> 11);
PM = (Hour >= 12);
Hour %= 12;
if (Hour == 0)
Hour = 12;
if (Hour >= 10)
Str[0] = (CHAR)('0' + Hour / 10);
else Str[0] = ' ';
Str[1] = (CHAR)('0' + Hour % 10);
Str[2] = ':';
/* Minute */
Str[3] = (CHAR)('0' + ((Time & 0x07E0) >> 5) / 10);
Str[4] = (CHAR)('0' + ((Time & 0x07E0) >> 5) % 10);
Str[5] = ':';
/* Second */
dw = 2 * (Time & 0x001F);
Str[6] = (CHAR)('0' + dw / 10);
Str[7] = (CHAR)('0' + dw % 10);
Str[8] = PM? 'p' : 'a';
Str[9] = '\0';
return Str;
}
LPTSTR Attr2Str(LPTSTR Str, WORD Attr)
/*
* FUNCTION: Converts attributes to a string
* ARGUMENTS:
* Str = Pointer to destination string
* Attr = Attributes
* RETURNS:
* Pointer to string
*/
{
/* Archive */
if (Attr & CAB_ATTRIB_ARCHIVE)
Str[0] = 'A';
else
Str[0] = '-';
/* Hidden */
if (Attr & CAB_ATTRIB_HIDDEN)
Str[1] = 'H';
else
Str[1] = '-';
/* Read only */
if (Attr & CAB_ATTRIB_READONLY)
Str[2] = 'R';
else
Str[2] = '-';
/* System */
if (Attr & CAB_ATTRIB_SYSTEM)
Str[3] = 'S';
else
Str[3] = '-';
Str[4] = '\0';
return Str;
}
/* CCABManager */
CCABManager::CCABManager()
/*
* FUNCTION: Default constructor
*/
{
ProcessAll = FALSE;
Mode = CM_MODE_DISPLAY;
PromptOnOverwrite = TRUE;
}
CCABManager::~CCABManager()
/*
* FUNCTION: Default destructor
*/
{
}
VOID CCABManager::Usage()
/*
* FUNCTION: Display usage information on screen
*/
{
printf("ReactOS Cabinet Manager - Version %s\n\n", CM_VERSION);
printf("CABMAN [/D | /E] [/A] [/L dir] [/Y] cabinet [filename ...]\n");
printf("CABMAN /C dirfile\n");
printf(" cabinet Cabinet file.\n");
printf(" filename Name of the file to extract from the cabinet.\n");
printf(" Wild cards and multiple filenames\n");
printf(" (separated by blanks) may be used.\n\n");
printf(" dirfile Name of the directive file to use.\n\n");
printf(" /A Process ALL cabinets. Follows cabinet chain\n");
printf(" starting in first cabinet mentioned.\n");
printf(" /C Create cabinet.\n");
printf(" /D Display cabinet directory.\n");
printf(" /E Extract files from cabinet.\n");
printf(" /L dir Location to place extracted files\n");
printf(" (default is current directory).\n");
printf(" /Y Do not prompt before overwriting an existing file.\n\n");
}
BOOL CCABManager::ParseCmdline(INT argc, PCHAR argv[])
/*
* FUNCTION: Parse command line arguments
* ARGUMENTS:
* argc = Number of arguments on command line
* argv = Pointer to list of command line arguments
* RETURNS:
* TRUE if command line arguments was successfully parsed, false if not
*/
{
INT i;
BOOL ShowUsage;
BOOL FoundCabinet = FALSE;
ShowUsage = (argc < 2);
for (i = 1; i < argc; i++) {
if (argv[i][0] == '/') {
switch (argv[i][1]) {
case 'a':
case 'A': ProcessAll = TRUE; break;
case 'c':
case 'C': Mode = CM_MODE_CREATE; break;
case 'd':
case 'D': Mode = CM_MODE_DISPLAY; break;
case 'e':
case 'E': Mode = CM_MODE_EXTRACT; break;
case 'l':
case 'L':
if (argv[i][2] == ' ') {
i++;
SetDestinationPath((LPTSTR)&argv[i][0]);
} else
SetDestinationPath((LPTSTR)&argv[i][1]);
break;
case 'y':
case 'Y': PromptOnOverwrite = FALSE; break;
default:
printf("Bad parameter %s.\n", argv[i]);
return FALSE;
}
} else {
if ((FoundCabinet) || (Mode == CM_MODE_CREATE)) {
/* FIXME: There may be many of these if Mode != CM_MODE_CREATE */
lstrcpy((LPTSTR)FileName, argv[i]);
} else {
SetCabinetName(argv[i]);
FoundCabinet = TRUE;
}
}
}
if (ShowUsage) {
Usage();
return FALSE;
}
/* FIXME */
SelectCodec(CAB_CODEC_MSZIP);
return TRUE;
}
VOID CCABManager::CreateCabinet()
/*
* FUNCTION: Create cabinet
*/
{
ULONG Status;
Status = Load((LPTSTR)&FileName);
if (Status != CAB_STATUS_SUCCESS) {
printf("Specified directive file could not be found: %s.\n", (LPTSTR)&FileName);
return;
}
Parse();
}
VOID CCABManager::DisplayCabinet()
/*
* FUNCTION: Display cabinet contents
*/
{
CAB_SEARCH Search;
TCHAR Str[20];
DWORD FileCount = 0;
DWORD ByteCount = 0;
if (Open() == CAB_STATUS_SUCCESS) {
printf("Cabinet %s\n\n", GetCabinetName());
if (FindFirst("", &Search) == CAB_STATUS_SUCCESS) {
do {
if (Search.File->FileControlID != CAB_FILE_CONTINUED) {
printf("%s ", Date2Str((LPTSTR)&Str, Search.File->FileDate));
printf("%s ", Time2Str((LPTSTR)&Str, Search.File->FileTime));
printf("%s ", Attr2Str((LPTSTR)&Str, Search.File->Attributes));
printf("%s ", Pad(itoa(Search.File->FileSize, (LPTSTR)&Str, 10), ' ', 13));
printf("%s\n", Search.FileName);
FileCount++;
ByteCount += Search.File->FileSize;
}
} while (FindNext(&Search) == CAB_STATUS_SUCCESS);
}
if (FileCount > 0) {
if (FileCount == 1)
printf(" 1 file ");
else
printf(" %s files ",
Pad(itoa(FileCount, (LPTSTR)&Str, 10), ' ', 12));
if (ByteCount == 1)
printf(" 1 byte\n");
else
printf("%s bytes\n",
Pad(itoa(ByteCount, (LPTSTR)&Str, 10), ' ', 12));
} else {
/* There should be at least one file in a cabinet */
printf("No files in cabinet.");
}
} else
printf("Cannot not open file: %s\n", GetCabinetName());
}
VOID CCABManager::ExtractFromCabinet()
/*
* FUNCTION: Extract file(s) from cabinet
*/
{
CAB_SEARCH Search;
ULONG Status;
if (Open() == CAB_STATUS_SUCCESS) {
printf("Cabinet %s\n\n", GetCabinetName());
if (FindFirst("", &Search) == CAB_STATUS_SUCCESS) {
do {
switch (Status = ExtractFile(Search.FileName)) {
case CAB_STATUS_SUCCESS:
break;
case CAB_STATUS_INVALID_CAB:
printf("Cabinet contains errors.\n");
return;
case CAB_STATUS_UNSUPPCOMP:
printf("Cabinet uses unsupported compression type.\n");
return;
case CAB_STATUS_CANNOT_WRITE:
printf("You've run out of free space on the destination volume or the volume is damaged.\n");
return;
default:
printf("Unspecified error code (%d).\n", (UINT)Status);
return;
}
} while (FindNext(&Search) == CAB_STATUS_SUCCESS);
}
} else
printf("Cannot not open file: %s.\n", GetCabinetName());
}
VOID CCABManager::Run()
/*
* FUNCTION: Process cabinet
*/
{
printf("ReactOS Cabinet Manager - Version %s\n\n", CM_VERSION);
switch (Mode) {
case CM_MODE_CREATE: CreateCabinet(); break;
case CM_MODE_DISPLAY: DisplayCabinet(); break;
case CM_MODE_EXTRACT: ExtractFromCabinet(); break;
default:
break;
}
printf("\n");
}
/* Event handlers */
BOOL CCABManager::OnOverwrite(PCFFILE File,
LPTSTR FileName)
/*
* FUNCTION: Called when extracting a file and it already exists
* ARGUMENTS:
* File = Pointer to CFFILE for file being extracted
* Filename = Pointer to buffer with name of file (full path)
* RETURNS
* TRUE if the file should be overwritten, FALSE if not
*/
{
TCHAR ch;
if (Mode == CM_MODE_CREATE)
return TRUE;
/* Should we prompt on overwrite? */
if (!PromptOnOverwrite)
return TRUE;
/* Ask if file should be overwritten */
printf("Overwrite %s (Yes/No/All)? ", GetFileName(FileName));
for (;;) {
ch = _getch();
switch (ch) {
case 'Y':
case 'y': printf("%c\n", ch); return TRUE;
case 'N':
case 'n': printf("%c\n", ch); return FALSE;
case 'A':
case 'a': printf("%c\n", ch); PromptOnOverwrite = FALSE; return TRUE;
}
}
}
VOID CCABManager::OnExtract(PCFFILE File,
LPTSTR FileName)
/*
* FUNCTION: Called just before extracting a file
* ARGUMENTS:
* File = Pointer to CFFILE for file being extracted
* FileName = Pointer to buffer with name of file (full path)
*/
{
printf("Extracting %s\n", GetFileName(FileName));
}
VOID CCABManager::OnDiskChange(LPTSTR CabinetName,
LPTSTR DiskLabel)
/*
* FUNCTION: Called when a new disk is to be processed
* ARGUMENTS:
* CabinetName = Pointer to buffer with name of cabinet
* DiskLabel = Pointer to buffer with label of disk
*/
{
printf("\nChanging to cabinet %s - %s\n\n", CabinetName, DiskLabel);
}
VOID CCABManager::OnAdd(PCFFILE File,
LPTSTR FileName)
/*
* FUNCTION: Called just before adding a file to a cabinet
* ARGUMENTS:
* File = Pointer to CFFILE for file being added
* FileName = Pointer to buffer with name of file (full path)
*/
{
printf("Adding %s\n", GetFileName(FileName));
}
INT main(INT argc, PCHAR argv[])
/*
* FUNCTION: Main entry point
* ARGUMENTS:
* argc = Number of arguments on command line
* argv = Pointer to list of command line arguments
*/
{
CCABManager CABMgr;
if (CABMgr.ParseCmdline(argc, argv))
CABMgr.Run();
return 0;
}
/* EOF */

View File

@@ -0,0 +1,54 @@
#
# Makefile for ReactOS Cabinet Manager
#
PATH_TO_TOP = ../..
ZLIB_OBJECTS = zlib/adler32.o zlib/deflate.o zlib/infblock.o zlib/infcodes.o \
zlib/inflate.o zlib/inftrees.o zlib/infutil.o zlib/inffast.o \
zlib/trees.o zlib/zutil.o
ENGINE_OBJECTS = $(ZLIB_OBJECTS) cabinet.o mszip.o raw.o
TEST_OBJECTS = $(ENGINE_OBJECTS) test.o
OBJECTS = $(ENGINE_OBJECTS) main.o dfp.o
TARGET = cabman
PROGS = $(TARGET).exe test.exe
CFLAGS += -O3
CLEAN_FILES = *.o zlib/*.o $(TARGET).exe $(TARGET).sym test.exe test.sym
all: $(PROGS)
clean:
- $(RM) $(CLEAN_FILES)
.phony: clean
install: $(PROGS:%=$(FLOPPY_DIR)/apps/%)
$(PROGS:%=$(FLOPPY_DIR)/apps/%): $(FLOPPY_DIR)/apps/%: %
ifeq ($(DOSCLI),yes)
$(CP) $* $(FLOPPY_DIR)\apps\$*
else
$(CP) $* $(FLOPPY_DIR)/apps/$*
endif
dist: $(PROGS:%=../../$(DIST_DIR)/apps/%)
$(PROGS:%=../../$(DIST_DIR)/apps/%): ../../$(DIST_DIR)/apps/%: %
ifeq ($(DOSCLI),yes)
$(CP) $* ..\..\$(DIST_DIR)\apps\$*
else
$(CP) $* ../../$(DIST_DIR)/apps/$*
endif
$(TARGET).exe: $(OBJECTS)
$(CC) $(OBJECTS) -o $(TARGET).exe
$(NM) --numeric-sort $(TARGET).exe > $(TARGET).sym
test.exe: $(TEST_OBJECTS)
$(CC) $(TEST_OBJECTS) -o test.exe
$(NM) --numeric-sort test.exe > test.sym
include ../../rules.mak

View File

@@ -0,0 +1,172 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/mszip.cpp
* PURPOSE: CAB codec for MSZIP compressed data
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* NOTES: The ZLIB does the real work. Get the full version
* from http://www.cdrom.com/pub/infozip/zlib/
* REVISIONS:
* CSH 21/03-2001 Created
*/
#include <windows.h>
#include <stdio.h>
#include "mszip.h"
/* Memory functions */
voidpf MSZipAlloc(voidpf opaque, uInt items, uInt size)
{
DPRINT(DEBUG_MEMORY, ("items = (%d) size = (%d)\n", items, size));
return HeapAlloc(GetProcessHeap(), 0, items * size);
}
void MSZipFree (voidpf opaque, voidpf address)
{
DPRINT(DEBUG_MEMORY, ("\n"));
HeapFree(GetProcessHeap(), 0, address);
}
/* CMSZipCodec */
CMSZipCodec::CMSZipCodec()
/*
* FUNCTION: Default constructor
*/
{
ZStream.zalloc = MSZipAlloc;
ZStream.zfree = MSZipFree;
ZStream.opaque = (voidpf)0;
}
CMSZipCodec::~CMSZipCodec()
/*
* FUNCTION: Default destructor
*/
{
}
ULONG CMSZipCodec::Compress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength)
/*
* FUNCTION: Compresses data in a buffer
* ARGUMENTS:
* OutputBuffer = Pointer to buffer to place compressed data
* InputBuffer = Pointer to buffer with data to be compressed
* InputLength = Length of input buffer
* OutputLength = Address of buffer to place size of compressed data
*/
{
PUSHORT Magic;
DPRINT(MAX_TRACE, ("InputLength (%d).\n", InputLength));
Magic = (PUSHORT)OutputBuffer;
*Magic = MSZIP_MAGIC;
ZStream.next_in = (PUCHAR)InputBuffer;
ZStream.avail_in = InputLength;
ZStream.next_out = (PUCHAR)((ULONG)OutputBuffer + 2);
ZStream.avail_out = CAB_BLOCKSIZE + 12;
/* WindowBits is passed < 0 to tell that there is no zlib header */
Status = deflateInit2(&ZStream,
Z_BEST_COMPRESSION,
Z_DEFLATED,
-MAX_WBITS,
8, /* memLevel */
Z_DEFAULT_STRATEGY);
if (Status != Z_OK) {
DPRINT(MIN_TRACE, ("deflateInit() returned (%d).\n", Status));
return CS_NOMEMORY;
}
Status = deflate(&ZStream, Z_FINISH);
if ((Status != Z_OK) && (Status != Z_STREAM_END)) {
DPRINT(MIN_TRACE, ("deflate() returned (%d) (%s).\n", Status, ZStream.msg));
if (Status == Z_MEM_ERROR)
return CS_NOMEMORY;
return CS_BADSTREAM;
}
*OutputLength = ZStream.total_out + 2;
Status = deflateEnd(&ZStream);
if (Status != Z_OK) {
DPRINT(MIN_TRACE, ("deflateEnd() returned (%d).\n", Status));
return CS_BADSTREAM;
}
return CS_SUCCESS;
}
ULONG CMSZipCodec::Uncompress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength)
/*
* FUNCTION: Uncompresses data in a buffer
* ARGUMENTS:
* OutputBuffer = Pointer to buffer to place uncompressed data
* InputBuffer = Pointer to buffer with data to be uncompressed
* InputLength = Length of input buffer
* OutputLength = Address of buffer to place size of uncompressed data
*/
{
USHORT Magic;
DPRINT(MAX_TRACE, ("InputLength (%d).\n", InputLength));
Magic = *((PUSHORT)InputBuffer);
if (Magic != MSZIP_MAGIC) {
DPRINT(MID_TRACE, ("Bad MSZIP block header magic (0x%X)\n", Magic));
return CS_BADSTREAM;
}
ZStream.next_in = (PUCHAR)((ULONG)InputBuffer + 2);
ZStream.avail_in = InputLength - 2;
ZStream.next_out = (PUCHAR)OutputBuffer;
ZStream.avail_out = CAB_BLOCKSIZE + 12;
/* WindowBits is passed < 0 to tell that there is no zlib header.
* Note that in this case inflate *requires* an extra "dummy" byte
* after the compressed stream in order to complete decompression and
* return Z_STREAM_END.
*/
Status = inflateInit2(&ZStream, -MAX_WBITS);
if (Status != Z_OK) {
DPRINT(MIN_TRACE, ("inflateInit2() returned (%d).\n", Status));
return CS_BADSTREAM;
}
while ((ZStream.total_out < CAB_BLOCKSIZE + 12) &&
(ZStream.total_in < InputLength - 2)) {
Status = inflate(&ZStream, Z_NO_FLUSH);
if (Status == Z_STREAM_END) break;
if (Status != Z_OK) {
DPRINT(MIN_TRACE, ("inflate() returned (%d) (%s).\n", Status, ZStream.msg));
if (Status == Z_MEM_ERROR)
return CS_NOMEMORY;
return CS_BADSTREAM;
}
}
*OutputLength = ZStream.total_out;
Status = inflateEnd(&ZStream);
if (Status != Z_OK) {
DPRINT(MIN_TRACE, ("inflateEnd() returned (%d).\n", Status));
return CS_BADSTREAM;
}
return CS_SUCCESS;
}
/* EOF */

View File

@@ -0,0 +1,41 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/mszip.h
* PURPOSE: CAB codec for MSZIP compressed data
*/
#ifndef __MSZIP_H
#define __MSZIP_H
#include "cabinet.h"
#include "zlib/zlib.h"
#define MSZIP_MAGIC 0x4B43
/* Classes */
class CMSZipCodec : public CCABCodec {
public:
/* Default constructor */
CMSZipCodec();
/* Default destructor */
virtual ~CMSZipCodec();
/* Compresses a data block */
virtual ULONG Compress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength);
/* Uncompresses a data block */
virtual ULONG Uncompress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength);
private:
INT Status;
z_stream ZStream; /* Zlib stream */
};
#endif /* __MSZIP_H */
/* EOF */

View File

@@ -0,0 +1,69 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/raw.cpp
* PURPOSE: CAB codec for uncompressed "raw" data
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 21/03-2001 Created
*/
#include <windows.h>
#include "raw.h"
/* CRawCodec */
CRawCodec::CRawCodec()
/*
* FUNCTION: Default constructor
*/
{
}
CRawCodec::~CRawCodec()
/*
* FUNCTION: Default destructor
*/
{
}
ULONG CRawCodec::Compress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength)
/*
* FUNCTION: Compresses data in a buffer
* ARGUMENTS:
* OutputBuffer = Pointer to buffer to place compressed data
* InputBuffer = Pointer to buffer with data to be compressed
* InputLength = Length of input buffer
* OutputLength = Address of buffer to place size of compressed data
*/
{
CopyMemory(OutputBuffer, InputBuffer, InputLength);
*OutputLength = InputLength;
return CS_SUCCESS;
}
ULONG CRawCodec::Uncompress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength)
/*
* FUNCTION: Uncompresses data in a buffer
* ARGUMENTS:
* OutputBuffer = Pointer to buffer to place uncompressed data
* InputBuffer = Pointer to buffer with data to be uncompressed
* InputLength = Length of input buffer
* OutputLength = Address of buffer to place size of uncompressed data
*/
{
CopyMemory(OutputBuffer, InputBuffer, InputLength);
*OutputLength = InputLength;
return CS_SUCCESS;
}
/* EOF */

View File

@@ -0,0 +1,35 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS cabinet manager
* FILE: apps/cabman/raw.h
* PURPOSE: CAB codec for uncompressed data
*/
#ifndef __RAW_H
#define __RAW_H
#include "cabinet.h"
/* Classes */
class CRawCodec : public CCABCodec {
public:
/* Default constructor */
CRawCodec();
/* Default destructor */
virtual ~CRawCodec();
/* Compresses a data block */
virtual ULONG Compress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength);
/* Uncompresses a data block */
virtual ULONG Uncompress(PVOID OutputBuffer,
PVOID InputBuffer,
DWORD InputLength,
PDWORD OutputLength);
};
#endif /* __RAW_H */
/* EOF */

View File

@@ -0,0 +1,164 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: Test program for cabinet classes
* FILE: apps/cabman/test.cpp
* PURPOSE: Test program
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* REVISIONS:
* CSH 21/03-2001 Created
*/
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include "test.h"
#ifdef DBG
DWORD DebugTraceLevel = MIN_TRACE;
//DWORD DebugTraceLevel = MID_TRACE;
//DWORD DebugTraceLevel = MAX_TRACE;
#endif /* DBG */
/* CCABManager */
CCABTest::CCABTest()
/*
* FUNCTION: Default constructor
*/
{
PromptOnOverwrite = FALSE;
}
CCABTest::~CCABTest()
/*
* FUNCTION: Default destructor
*/
{
}
VOID CCABTest::ExtractFromCabinet()
/*
* FUNCTION: Extract file(s) from cabinet
*/
{
CAB_SEARCH Search;
ULONG Status;
if (Open() == CAB_STATUS_SUCCESS) {
printf("Cabinet %s\n\n", GetCabinetName());
if (FindFirst("", &Search) == CAB_STATUS_SUCCESS) {
do {
switch (Status = ExtractFile(Search.FileName)) {
case CAB_STATUS_SUCCESS:
break;
case CAB_STATUS_INVALID_CAB:
printf("Cabinet contains errors.\n");
return;
case CAB_STATUS_UNSUPPCOMP:
printf("Cabinet uses unsupported compression type.\n");
return;
case CAB_STATUS_CANNOT_WRITE:
printf("You've run out of free space on the destination volume or the volume is damaged.\n");
return;
default:
printf("Unspecified error code (%d).\n", (UINT)Status);
return;
}
} while (FindNext(&Search) == CAB_STATUS_SUCCESS);
}
} else {
printf("Cannot not open file: %s.\n", GetCabinetName());
}
}
/* Event handlers */
BOOL CCABTest::OnOverwrite(PCFFILE File,
LPTSTR FileName)
/*
* FUNCTION: Called when extracting a file and it already exists
* ARGUMENTS:
* File = Pointer to CFFILE for file being extracted
* Filename = Pointer to buffer with name of file (full path)
* RETURNS
* TRUE if the file should be overwritten, FALSE if not
*/
{
TCHAR ch;
/* Should we prompt on overwrite? */
if (!PromptOnOverwrite)
return TRUE;
/* Ask if file should be overwritten */
printf("Overwrite %s (Yes/No/All)? ", GetFileName(FileName));
for (;;) {
ch = _getch();
switch (ch) {
case 'Y':
case 'y': printf("%c\n", ch); return TRUE;
case 'N':
case 'n': printf("%c\n", ch); return FALSE;
case 'A':
case 'a': printf("%c\n", ch); PromptOnOverwrite = FALSE; return TRUE;
}
}
}
VOID CCABTest::OnExtract(PCFFILE File,
LPTSTR FileName)
/*
* FUNCTION: Called just before extracting a file
* ARGUMENTS:
* File = Pointer to CFFILE for file being extracted
* FileName = Pointer to buffer with name of file (full path)
*/
{
printf("Extracting %s\n", GetFileName(FileName));
}
VOID CCABTest::OnDiskChange(LPTSTR CabinetName,
LPTSTR DiskLabel)
/*
* FUNCTION: Called when a new disk is to be processed
* ARGUMENTS:
* CabinetName = Pointer to buffer with name of cabinet
* DiskLabel = Pointer to buffer with label of disk
*/
{
printf("\nChanging to cabinet %s - %s\n\n", CabinetName, DiskLabel);
}
INT main(INT argc, PCHAR argv[])
/*
* FUNCTION: Main entry point
* ARGUMENTS:
* argc = Number of arguments on command line
* argv = Pointer to list of command line arguments
*/
{
CCABTest CABTest;
// Specify your cabinet filename here
CABTest.SetCabinetName("ros1.cab");
CABTest.ExtractFromCabinet();
return 0;
}
/* EOF */

View File

@@ -0,0 +1,32 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: Test program for cabinet classes
* FILE: apps/cabman/test.h
* PURPOSE: Test program header
*/
#ifndef __TEST_H
#define __TEST_H
#define CAB_READ_ONLY // Define for smaller read only version
#include "cabinet.h"
/* Classes */
class CCABTest : public CCabinet {
public:
CCABTest();
virtual ~CCABTest();
VOID ExtractFromCabinet();
/* Event handlers */
virtual BOOL OnOverwrite(PCFFILE File, LPTSTR FileName);
virtual VOID OnExtract(PCFFILE File, LPTSTR FileName);
virtual VOID OnDiskChange(LPTSTR CabinetName, LPTSTR DiskLabel);
private:
/* Configuration */
BOOL PromptOnOverwrite;
};
#endif /* __CABMAN_H */
/* EOF */

View File

@@ -0,0 +1,475 @@
ChangeLog file for zlib
Changes (21 March 2001)
- Adapted for ReactOS (Casper S. Hornstrup)
. Removed all but core zlib itself
Changes in 1.1.3 (9 July 1998)
- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html
- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file
- Support gzdopen on Mac with Metrowerks (Jason Linhart)
- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart)
- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young)
- avoid some warnings with Borland C (Tom Tanner)
- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant)
- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant)
- allow several arguments to configure (Tim Mooney, Frodo Looijaard)
- use libdir and includedir in Makefile.in (Tim Mooney)
- support shared libraries on OSF1 V4 (Tim Mooney)
- remove so_locations in "make clean" (Tim Mooney)
- fix maketree.c compilation error (Glenn, Mark)
- Python interface to zlib now in Python 1.5 (Jeremy Hylton)
- new Makefile.riscos (Rich Walker)
- initialize static descriptors in trees.c for embedded targets (Nick Smith)
- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith)
- add the OS/2 files in Makefile.in too (Andrew Zabolotny)
- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane)
- fix maketree.c to allow clean compilation of inffixed.h (Mark)
- fix parameter check in deflateCopy (Gunther Nikl)
- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler)
- Many portability patches by Christian Spieler:
. zutil.c, zutil.h: added "const" for zmem*
. Make_vms.com: fixed some typos
. Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists
. msdos/Makefile.msc: remove "default rtl link library" info from obj files
. msdos/Makefile.*: use model-dependent name for the built zlib library
. msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc:
new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT)
- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane)
- replace __far with _far for better portability (Christian Spieler, Tom Lane)
- fix test for errno.h in configure (Tim Newsham)
Changes in 1.1.2 (19 March 98)
- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant)
See http://www.winimage.com/zLibDll/unzip.html
- preinitialize the inflate tables for fixed codes, to make the code
completely thread safe (Mark)
- some simplifications and slight speed-up to the inflate code (Mark)
- fix gzeof on non-compressed files (Allan Schrum)
- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs)
- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn)
- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny)
- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori)
- do not wrap extern "C" around system includes (Tom Lane)
- mention zlib binding for TCL in README (Andreas Kupries)
- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert)
- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson)
- allow "configure --prefix $HOME" (Tim Mooney)
- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson)
- move Makefile.sas to amiga/Makefile.sas
Changes in 1.1.1 (27 Feb 98)
- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
matches in deflate_slow.
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
- do not return STREAM_END prematurely in inflate (John Bowler)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
- compile with -DFASTEST to get compression code optimized for speed only
- in minigzip, try mmap'ing the input file first (Miguel Albrecht)
- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain
on Sun but significant on HP)
- add a pointer to experimental unzip library in README (Gilles Vollant)
- initialize variable gcc in configure (Chris Herborth)
Changes in 1.0.9 (17 Feb 1998)
- added gzputs and gzgets functions
- do not clear eof flag in gzseek (Mark Diekhans)
- fix gzseek for files in transparent mode (Mark Diekhans)
- do not assume that vsprintf returns the number of bytes written (Jens Krinke)
- replace EXPORT with ZEXPORT to avoid conflict with other programs
- added compress2 in zconf.h, zlib.def, zlib.dnt
- new asm code from Gilles Vollant in contrib/asm386
- simplify the inflate code (Mark):
. Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new()
. ZALLOC the length list in inflate_trees_fixed() instead of using stack
. ZALLOC the value area for huft_build() instead of using stack
. Simplify Z_FINISH check in inflate()
- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
the declaration of FAR (Gilles VOllant)
- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
- read_buf buf parameter of type Bytef* instead of charf*
- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
- do not redeclare unlink in minigzip.c for WIN32 (John Bowler)
- fix check for presence of directories in "make install" (Ian Willis)
Changes in 1.0.8 (27 Jan 1998)
- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant)
- fix gzgetc and gzputc for big endian systems (Markus Oberhumer)
- added compress2() to allow setting the compression level
- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
- use constant arrays for the static trees in trees.c instead of computing
them at run time (thanks to Ken Raeburn for this suggestion). To create
trees.h, compile with GEN_TREES_H and run "make test".
- check return code of example in "make test" and display result
- pass minigzip command line options to file_compress
- simplifying code of inflateSync to avoid gcc 2.8 bug
- support CC="gcc -Wall" in configure -s (QingLong)
- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn)
- fix test for shared library support to avoid compiler warnings
- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant)
- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit)
- do not use fdopen for Metrowerks on Mac (Brad Pettit))
- add checks for gzputc and gzputc in example.c
- avoid warnings in gzio.c and deflate.c (Andreas Kleinert)
- use const for the CRC table (Ken Raeburn)
- fixed "make uninstall" for shared libraries
- use Tracev instead of Trace in infblock.c
- in example.c use correct compressed length for test_sync
- suppress +vnocompatwarnings in configure for HPUX (not always supported)
Changes in 1.0.7 (20 Jan 1998)
- fix gzseek which was broken in write mode
- return error for gzseek to negative absolute position
- fix configure for Linux (Chun-Chung Chen)
- increase stack space for MSC (Tim Wegner)
- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant)
- define EXPORTVA for gzprintf (Gilles Vollant)
- added man page zlib.3 (Rick Rodgers)
- for contrib/untgz, fix makedir() and improve Makefile
- check gzseek in write mode in example.c
- allocate extra buffer for seeks only if gzseek is actually called
- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant)
- add inflateSyncPoint in zconf.h
- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def
Changes in 1.0.6 (19 Jan 1998)
- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
- Fix a deflate bug occuring only with compression level 0 (thanks to
Andy Buckler for finding this one).
- In minigzip, pass transparently also the first byte for .Z files.
- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
- check Z_FINISH in inflate (thanks to Marc Schluper)
- Implement deflateCopy (thanks to Adam Costello)
- make static libraries by default in configure, add --shared option.
- move MSDOS or Windows specific files to directory msdos
- suppress the notion of partial flush to simplify the interface
(but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
- suppress history buffer provided by application to simplify the interface
(this feature was not implemented anyway in 1.0.4)
- next_in and avail_in must be initialized before calling inflateInit or
inflateInit2
- add EXPORT in all exported functions (for Windows DLL)
- added Makefile.nt (thanks to Stephen Williams)
- added the unsupported "contrib" directory:
contrib/asm386/ by Gilles Vollant <info@winimage.com>
386 asm code replacing longest_match().
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge L<>vset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
How to use compress(), uncompress() and the gz* functions from VB.
- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
level) in minigzip (thanks to Tom Lane)
- use const for rommable constants in deflate
- added test for gzseek and gztell in example.c
- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
- add undocumented function zError to convert error code to string
(for Tim Smithers)
- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
- Use default memcpy for Symantec MSDOS compiler.
- Add EXPORT keyword for check_func (needed for Windows DLL)
- add current directory to LD_LIBRARY_PATH for "make test"
- create also a link for libz.so.1
- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura)
- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX)
- added -soname for Linux in configure (Chun-Chung Chen,
- assign numbers to the exported functions in zlib.def (for Windows DLL)
- add advice in zlib.h for best usage of deflateSetDictionary
- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn)
- allow compilation with ANSI keywords only enabled for TurboC in large model
- avoid "versionString"[0] (Borland bug)
- add NEED_DUMMY_RETURN for Borland
- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
- allow compilation with CC
- defined STDC for OS/2 (David Charlap)
- limit external names to 8 chars for MVS (Thomas Lund)
- in minigzip.c, use static buffers only for 16-bit systems
- fix suffix check for "minigzip -d foo.gz"
- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
- Avoid expanded $Id: ChangeLog,v 1.1 2001/03/21 22:32:32 chorns Exp $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
- do not flush twice in gzclose (thanks to Ken Raeburn)
- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h
- use NO_ERRNO_H instead of enumeration of operating systems with errno.h
- work around buggy fclose on pipes for HP/UX
- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson)
- fix configure if CC is already equal to gcc
Changes in 1.0.5 (3 Jan 98)
- Fix inflate to terminate gracefully when fed corrupted or invalid data
- Use const for rommable constants in inflate
- Eliminate memory leaks on error conditions in inflate
- Removed some vestigial code in inflate
- Update web address in README
Changes in 1.0.4 (24 Jul 96)
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
bit, so the decompressor could decompress all the correct data but went
on to attempt decompressing extra garbage data. This affected minigzip too.
- zlibVersion and gzerror return const char* (needed for DLL)
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
- use z_error only for DEBUG (avoid problem with DLLs)
Changes in 1.0.3 (2 Jul 96)
- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
small and medium models; this makes the library incompatible with previous
versions for these models. (No effect in large model or on other systems.)
- return OK instead of BUF_ERROR if previous deflate call returned with
avail_out as zero but there is nothing to do
- added memcmp for non STDC compilers
- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
- better check for 16-bit mode MSC (avoids problem with Symantec)
Changes in 1.0.2 (23 May 96)
- added Windows DLL support
- added a function zlibVersion (for the DLL support)
- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
- Bytef is define's instead of typedef'd only for Borland C
- avoid reading uninitialized memory in example.c
- mention in README that the zlib format is now RFC1950
- updated Makefile.dj2
- added algorithm.doc
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
- fix deflateParams() which could generated bad compressed data.
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
- speed up adler32 for modern machines without auto-increment
- added -ansi for IRIX in configure
- static_init_done in trees.c is an int
- define unlink as delete for VMS
- fix configure for QNX
- add configure branch for SCO and HPUX
- avoid many warnings (unused variables, dead assignments, etc...)
- no fdopen for BeOS
- fix the Watcom fix for 32 bit mode (define FAR as empty)
- removed redefinition of Byte for MKWERKS
- work around an MWKERKS bug (incorrect merge of all .h files)
Changes in 0.99 (27 Jan 96)
- allow preset dictionary shared between compressor and decompressor
- allow compression level 0 (no compression)
- add deflateParams in zlib.h: allow dynamic change of compression level
and compression strategy.
- test large buffers and deflateParams in example.c
- add optional "configure" to build zlib as a shared library
- suppress Makefile.qnx, use configure instead
- fixed deflate for 64-bit systems (detected on Cray)
- fixed inflate_blocks for 64-bit systems (detected on Alpha)
- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2)
- always return Z_BUF_ERROR when deflate() has nothing to do
- deflateInit and inflateInit are now macros to allow version checking
- prefix all global functions and types with z_ with -DZ_PREFIX
- make falloc completely reentrant (inftrees.c)
- fixed very unlikely race condition in ct_static_init
- free in reverse order of allocation to help memory manager
- use zlib-1.0/* instead of zlib/* inside the tar.gz
- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith
-Wconversion -Wstrict-prototypes -Wmissing-prototypes"
- allow gzread on concatenated .gz files
- deflateEnd now returns Z_DATA_ERROR if it was premature
- deflate is finally (?) fully deterministic (no matches beyond end of input)
- Document Z_SYNC_FLUSH
- add uninstall in Makefile
- Check for __cpluplus in zlib.h
- Better test in ct_align for partial flush
- avoid harmless warnings for Borland C++
- initialize hash_head in deflate.c
- avoid warning on fdopen (gzio.c) for HP cc -Aa
- include stdlib.h for STDC compilers
- include errno.h for Cray
- ignore error if ranlib doesn't exist
- call ranlib twice for NeXTSTEP
- use exec_prefix instead of prefix for libz.a
- renamed ct_* as _tr_* to avoid conflict with applications
- clear z->msg in inflateInit2 before any error return
- initialize opaque in example.c, gzio.c, deflate.c and inflate.c
- fixed typo in zconf.h (_GNUC__ => __GNUC__)
- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode)
- fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
- in fcalloc, normalize pointer if size > 65520 bytes
- don't use special fcalloc for 32 bit Borland C++
- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
- use Z_BINARY instead of BINARY
- document that gzclose after gzdopen will close the file
- allow "a" as mode in gzopen.
- fix error checking in gzread
- allow skipping .gz extra-field on pipes
- added reference to Perl interface in README
- put the crc table in FAR data (I dislike more and more the medium model :)
- added get_crc_table
- added a dimension to all arrays (Borland C can't count).
- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
- guard against multiple inclusion of *.h (for precompiled header on Mac)
- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
- don't use unsized arrays to avoid silly warnings by Visual C++:
warning C4746: 'inflate_mask' : unsized array treated as '__far'
(what's wrong with far data in far model?).
- define enum out of inflate_blocks_state to allow compilation with C++
Changes in 0.95 (16 Aug 95)
- fix MSDOS small and medium model (now easier to adapt to any compiler)
- inlined send_bits
- fix the final (:-) bug for deflate with flush (output was correct but
not completely flushed in rare occasions).
- default window size is same for compression and decompression
(it's now sufficient to set MAX_WBITS in zconf.h).
- voidp -> voidpf and voidnp -> voidp (for consistency with other
typedefs and because voidnp was not near in large model).
Changes in 0.94 (13 Aug 95)
- support MSDOS medium model
- fix deflate with flush (could sometimes generate bad output)
- fix deflateReset (zlib header was incorrectly suppressed)
- added support for VMS
- allow a compression level in gzopen()
- gzflush now calls fflush
- For deflate with flush, flush even if no more input is provided.
- rename libgz.a as libz.a
- avoid complex expression in infcodes.c triggering Turbo C bug
- work around a problem with gcc on Alpha (in INSERT_STRING)
- don't use inline functions (problem with some gcc versions)
- allow renaming of Byte, uInt, etc... with #define.
- avoid warning about (unused) pointer before start of array in deflate.c
- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
- avoid reserved word 'new' in trees.c
Changes in 0.93 (25 June 95)
- temporarily disable inline functions
- make deflate deterministic
- give enough lookahead for PARTIAL_FLUSH
- Set binary mode for stdin/stdout in minigzip.c for OS/2
- don't even use signed char in inflate (not portable enough)
- fix inflate memory leak for segmented architectures
Changes in 0.92 (3 May 95)
- don't assume that char is signed (problem on SGI)
- Clear bit buffer when starting a stored block
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
- optimized inflate on stored blocks.
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- fix sync search logic in inflateSync
- deflate(Z_FULL_FLUSH) now works even if output buffer too short
- after inflateSync, don't scare people with just "lo world"
- added support for DJGPP
Changes in 0.9 (1 May 95)
- don't assume that zalloc clears the allocated memory (the TurboC bug
was Mark's bug after all :)
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
- added a test of inflateSync in example.c
- moved MAX_WBITS to zconf.h because users might want to change that.
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
- faster crc32()
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)
- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
is incompatible with previous versions of zlib which returned Z_OK.
- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
(actually that was not a compiler bug, see 0.81 above)
- gzread no longer reads one extra byte in certain cases
- In gzio destroy(), don't reference a freed structure
- avoid many warnings for MSDOS
- avoid the ERROR symbol which is used by MS Windows
Changes in 0.71 (14 April 95)
- Fixed more MSDOS compilation problems :( There is still a bug with
TurboC large model.
Changes in 0.7 (14 April 95)
- Added full inflate support.
- Simplified the crc32() interface. The pre- and post-conditioning
(one's complement) is now done inside crc32(). WARNING: this is
incompatible with previous versions; see zlib.h for the new usage.
Changes in 0.61 (12 April 95)
- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
Changes in 0.6 (11 April 95)
- added minigzip.c
- added gzdopen to reopen a file descriptor as gzFile
- added transparent reading of non-gziped files in gzread.
- fixed bug in gzread (don't read crc as data)
- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
- don't allocate big arrays in the stack (for MSDOS)
- fix some MSDOS compilation problems
Changes in 0.5:
- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
not yet Z_FULL_FLUSH.
- support decompression but only in a single step (forced Z_FINISH)
- added opaque object for zalloc and zfree.
- added deflateReset and inflateReset
- added a variable zlib_version for consistency checking.
- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
Changes in 0.4:
- avoid "zip" everywhere, use zlib instead of ziplib.
- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
if compression method == 8.
- added adler32 and crc32
- renamed deflateOptions as deflateInit2, call one or the other but not both
- added the method parameter for deflateInit2.
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
and inflateInit2.
Changes in 0.3:
- prefix all macro names with Z_
- use Z_FINISH instead of deflateEnd to finish compression.
- added Z_HUFFMAN_ONLY
- added gzerror()

View File

@@ -0,0 +1,148 @@
zlib 1.1.3 is a general purpose data compression library. All the code
is thread safe. The data format used by the zlib library
is described by RFCs (Request for Comments) 1950 to 1952 in the files
ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
format) and rfc1952.txt (gzip format). These documents are also available in
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact jloup@gzip.org). A usage
example of the library is given in the file example.c which also tests that
the library is working correctly. Another example is given in the file
minigzip.c. The compression library itself is composed of all source files
except example.c and minigzip.c.
To compile all files and run the test program, follow the instructions
given at the top of Makefile. In short "make test; make install"
should work for most machines. For Unix: "configure; make test; make install"
For MSDOS, use one of the special makefiles such as Makefile.msc.
For VMS, use Make_vms.com or descrip.mms.
Questions about zlib should be sent to <zlib@quest.jpl.nasa.gov>, or to
Gilles Vollant <info@winimage.com> for the Windows DLL version.
The zlib home page is http://www.cdrom.com/pub/infozip/zlib/
The official zlib ftp site is ftp://ftp.cdrom.com/pub/infozip/zlib/
Before reporting a problem, please check those sites to verify that
you have the latest version of zlib; otherwise get the latest version and
check whether the problem still exists or not.
Mark Nelson <markn@tiny.com> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available in
http://web2.airmail.net/markn/articles/zlibtool/zlibtool.htm
The changes made in version 1.1.3 are documented in the file ChangeLog.
The main changes since 1.1.2 are:
- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html
- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file
plus many changes for portability.
Unsupported third party contributions are provided in directory "contrib".
A Java implementation of zlib is available in the Java Development Kit 1.1
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
See the zlib home page http://www.cdrom.com/pub/infozip/zlib/ for details.
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
is in the CPAN (Comprehensive Perl Archive Network) sites, such as:
ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib*
A Python interface to zlib written by A.M. Kuchling <amk@magnet.com>
is available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com>
is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html
An experimental package to read and write files in .zip format,
written on top of zlib by Gilles Vollant <info@winimage.com>, is
available at http://www.winimage.com/zLibDll/unzip.html
and also in the contrib/minizip directory of zlib.
Notes for some targets:
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
The zlib DLL support was initially done by Alessandro Iacopetti and is
now maintained by Gilles Vollant <info@winimage.com>. Check the zlib DLL
home page at http://www.winimage.com/zLibDll
From Visual Basic, you can call the DLL functions which do not take
a structure as argument: compress, uncompress and all gz* functions.
See contrib/visual-basic.txt for more information, or get
http://www.tcfb.com/dowseware/cmp-z-it.zip
- For 64-bit Irix, deflate.c must be compiled without any optimization.
With -O, one libpng test fails. The test works in 32 bit mode (with
the -n32 compiler flag). The compiler bug has been reported to SGI.
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
it works when compiled with cc.
- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1
is necessary to get gzprintf working correctly. This is done by configure.
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works
with other compilers. Use "make test" to check your compiler.
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
- For Turbo C the small model is supported only with reduced performance to
avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
- For PalmOs, see http://www.cs.uit.no/~perm/PASTA/pilot/software.html
Per Harald Myrvang <perm@stud.cs.uit.no>
Acknowledgments:
The deflate format used by zlib was defined by Phil Katz. The deflate
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
people who reported problems and suggested various improvements in zlib;
they are too numerous to cite here.
Copyright notice:
(C) 1995-1998 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not*
receiving lengthy legal documents to sign. The sources are provided
for free but without warranty of any kind. The library has been
entirely written by Jean-loup Gailly and Mark Adler; it does not
include third-party code.
If you redistribute modified sources, we would appreciate that you include
in the file ChangeLog history information documenting your changes.

View File

@@ -0,0 +1,48 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id: adler32.c,v 1.1 2001/03/21 22:32:32 chorns Exp $ */
#include "zlib.h"
#define BASE 65521L /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
/* ========================================================================= */
uLong ZEXPORT adler32(adler, buf, len)
uLong adler;
const Bytef *buf;
uInt len;
{
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int k;
if (buf == Z_NULL) return 1L;
while (len > 0) {
k = len < NMAX ? len : NMAX;
len -= k;
while (k >= 16) {
DO16(buf);
buf += 16;
k -= 16;
}
if (k != 0) do {
s1 += *buf++;
s2 += s1;
} while (--k);
s1 %= BASE;
s2 %= BASE;
}
return (s2 << 16) | s1;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,318 @@
/* deflate.h -- internal compression state
* Copyright (C) 1995-1998 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* @(#) $Id: deflate.h,v 1.1 2001/03/21 22:32:32 chorns Exp $ */
#ifndef _DEFLATE_H
#define _DEFLATE_H
#include "zutil.h"
/* ===========================================================================
* Internal compression state.
*/
#define LENGTH_CODES 29
/* number of length codes, not counting the special END_BLOCK code */
#define LITERALS 256
/* number of literal bytes 0..255 */
#define L_CODES (LITERALS+1+LENGTH_CODES)
/* number of Literal or Length codes, including the END_BLOCK code */
#define D_CODES 30
/* number of distance codes */
#define BL_CODES 19
/* number of codes used to transfer the bit lengths */
#define HEAP_SIZE (2*L_CODES+1)
/* maximum heap size */
#define MAX_BITS 15
/* All codes must not exceed MAX_BITS bits */
#define INIT_STATE 42
#define BUSY_STATE 113
#define FINISH_STATE 666
/* Stream status */
/* Data structure describing a single value and its code string. */
typedef struct ct_data_s {
union {
ush freq; /* frequency count */
ush code; /* bit string */
} fc;
union {
ush dad; /* father node in Huffman tree */
ush len; /* length of bit string */
} dl;
} FAR ct_data;
#define Freq fc.freq
#define Code fc.code
#define Dad dl.dad
#define Len dl.len
typedef struct static_tree_desc_s static_tree_desc;
typedef struct tree_desc_s {
ct_data *dyn_tree; /* the dynamic tree */
int max_code; /* largest code with non zero frequency */
static_tree_desc *stat_desc; /* the corresponding static tree */
} FAR tree_desc;
typedef ush Pos;
typedef Pos FAR Posf;
typedef unsigned IPos;
/* A Pos is an index in the character window. We use short instead of int to
* save space in the various tables. IPos is used only for parameter passing.
*/
typedef struct internal_state {
z_streamp strm; /* pointer back to this zlib stream */
int status; /* as the name implies */
Bytef *pending_buf; /* output still pending */
ulg pending_buf_size; /* size of pending_buf */
Bytef *pending_out; /* next pending byte to output to the stream */
int pending; /* nb of bytes in the pending buffer */
int noheader; /* suppress zlib header and adler32 */
Byte data_type; /* UNKNOWN, BINARY or ASCII */
Byte method; /* STORED (for zip only) or DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
/* used by deflate.c: */
uInt w_size; /* LZ77 window size (32K by default) */
uInt w_bits; /* log2(w_size) (8..16) */
uInt w_mask; /* w_size - 1 */
Bytef *window;
/* Sliding window. Input bytes are read into the second half of the window,
* and move to the first half later to keep a dictionary of at least wSize
* bytes. With this organization, matches are limited to a distance of
* wSize-MAX_MATCH bytes, but this ensures that IO is always
* performed with a length multiple of the block size. Also, it limits
* the window size to 64K, which is quite useful on MSDOS.
* To do: use the user input buffer as sliding window.
*/
ulg window_size;
/* Actual size of window: 2*wSize, except when the user input buffer
* is directly used as sliding window.
*/
Posf *prev;
/* Link to older string with same hash index. To limit the size of this
* array to 64K, this link is maintained only for the last 32K strings.
* An index in this array is thus a window index modulo 32K.
*/
Posf *head; /* Heads of the hash chains or NIL. */
uInt ins_h; /* hash index of string to be inserted */
uInt hash_size; /* number of elements in hash table */
uInt hash_bits; /* log2(hash_size) */
uInt hash_mask; /* hash_size-1 */
uInt hash_shift;
/* Number of bits by which ins_h must be shifted at each input
* step. It must be such that after MIN_MATCH steps, the oldest
* byte no longer takes part in the hash key, that is:
* hash_shift * MIN_MATCH >= hash_bits
*/
long block_start;
/* Window position at the beginning of the current output block. Gets
* negative when the window is moved backwards.
*/
uInt match_length; /* length of best match */
IPos prev_match; /* previous match */
int match_available; /* set if previous match exists */
uInt strstart; /* start of string to insert */
uInt match_start; /* start of matching string */
uInt lookahead; /* number of valid bytes ahead in window */
uInt prev_length;
/* Length of the best match at previous step. Matches not greater than this
* are discarded. This is used in the lazy match evaluation.
*/
uInt max_chain_length;
/* To speed up deflation, hash chains are never searched beyond this
* length. A higher limit improves compression ratio but degrades the
* speed.
*/
uInt max_lazy_match;
/* Attempt to find a better match only when the current match is strictly
* smaller than this value. This mechanism is used only for compression
* levels >= 4.
*/
# define max_insert_length max_lazy_match
/* Insert new strings in the hash table only if the match length is not
* greater than this length. This saves time but degrades compression.
* max_insert_length is used only for compression levels <= 3.
*/
int level; /* compression level (1..9) */
int strategy; /* favor or force Huffman coding*/
uInt good_match;
/* Use a faster search when the previous match is longer than this */
int nice_match; /* Stop searching when current match exceeds this */
/* used by trees.c: */
/* Didn't use ct_data typedef below to supress compiler warning */
struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
struct tree_desc_s l_desc; /* desc. for literal tree */
struct tree_desc_s d_desc; /* desc. for distance tree */
struct tree_desc_s bl_desc; /* desc. for bit length tree */
ush bl_count[MAX_BITS+1];
/* number of codes at each bit length for an optimal tree */
int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
int heap_len; /* number of elements in the heap */
int heap_max; /* element of largest frequency */
/* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
* The same heap array is used to build all trees.
*/
uch depth[2*L_CODES+1];
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
uchf *l_buf; /* buffer for literals or lengths */
uInt lit_bufsize;
/* Size of match buffer for literals/lengths. There are 4 reasons for
* limiting lit_bufsize to 64K:
* - frequencies can be kept in 16 bit counters
* - if compression is not successful for the first block, all input
* data is still in the window so we can still emit a stored block even
* when input comes from standard input. (This can also be done for
* all blocks if lit_bufsize is not greater than 32K.)
* - if compression is not successful for a file smaller than 64K, we can
* even emit a stored file instead of a stored block (saving 5 bytes).
* This is applicable only for zip (not gzip or zlib).
* - creating new Huffman trees less frequently may not provide fast
* adaptation to changes in the input data statistics. (Take for
* example a binary file with poorly compressible code followed by
* a highly compressible string table.) Smaller buffer sizes give
* fast adaptation but have of course the overhead of transmitting
* trees more frequently.
* - I can't count above 4
*/
uInt last_lit; /* running index in l_buf */
ushf *d_buf;
/* Buffer for distances. To simplify the code, d_buf and l_buf have
* the same number of elements. To use different lengths, an extra flag
* array would be necessary.
*/
ulg opt_len; /* bit length of current block with optimal trees */
ulg static_len; /* bit length of current block with static trees */
uInt matches; /* number of string matches in current block */
int last_eob_len; /* bit length of EOB code for last block */
#ifdef DEBUG
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
ulg bits_sent; /* bit length of compressed data sent mod 2^32 */
#endif
ush bi_buf;
/* Output buffer. bits are inserted starting at the bottom (least
* significant bits).
*/
int bi_valid;
/* Number of valid bits in bi_buf. All bits above the last valid bit
* are always zero.
*/
} FAR deflate_state;
/* Output a byte on the stream.
* IN assertion: there is enough room in pending_buf.
*/
#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
/* Minimum amount of lookahead, except at the end of the input file.
* See deflate.c for comments about the MIN_MATCH+1.
*/
#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
/* In order to simplify the code, particularly on 16 bit machines, match
* distances are limited to MAX_DIST instead of WSIZE.
*/
/* in trees.c */
void _tr_init OF((deflate_state *s));
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
void _tr_align OF((deflate_state *s));
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
#define d_code(dist) \
((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
/* Mapping from a distance to a distance code. dist is the distance - 1 and
* must not have side effects. _dist_code[256] and _dist_code[257] are never
* used.
*/
#ifndef DEBUG
/* Inline versions of _tr_tally for speed: */
#if defined(GEN_TREES_H) || !defined(STDC)
extern uch _length_code[];
extern uch _dist_code[];
#else
extern const uch _length_code[];
extern const uch _dist_code[];
#endif
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
s->d_buf[s->last_lit] = 0; \
s->l_buf[s->last_lit++] = cc; \
s->dyn_ltree[cc].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (length); \
ush dist = (distance); \
s->d_buf[s->last_lit] = dist; \
s->l_buf[s->last_lit++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
# define _tr_tally_dist(s, distance, length, flush) \
flush = _tr_tally(s, distance, length)
#endif
#endif

View File

@@ -0,0 +1,398 @@
/* infblock.c -- interpret and process block types to last block
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "infblock.h"
#include "inftrees.h"
#include "infcodes.h"
#include "infutil.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
/* Table for deflate from PKZIP's appnote.txt. */
local const uInt border[] = { /* Order of the bit length code lengths */
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
/*
Notes beyond the 1.93a appnote.txt:
1. Distance pointers never point before the beginning of the output
stream.
2. Distance pointers can point back across blocks, up to 32k away.
3. There is an implied maximum of 7 bits for the bit length table and
15 bits for the actual data.
4. If only one code exists, then it is encoded using one bit. (Zero
would be more efficient, but perhaps a little confusing.) If two
codes exist, they are coded using one bit each (0 and 1).
5. There is no way of sending zero distance codes--a dummy must be
sent if there are none. (History: a pre 2.0 version of PKZIP would
store blocks with no distance codes, but this was discovered to be
too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
zero distance codes, which is sent as one code of zero bits in
length.
6. There are up to 286 literal/length codes. Code 256 represents the
end-of-block. Note however that the static length tree defines
288 codes just to fill out the Huffman codes. Codes 286 and 287
cannot be used though, since there is no length base or extra bits
defined for them. Similarily, there are up to 30 distance codes.
However, static trees define 32 codes (all 5 bits) to fill out the
Huffman codes, but the last two had better not show up in the data.
7. Unzip can check dynamic Huffman blocks for complete code sets.
The exception is that a single code would not be complete (see #4).
8. The five bits following the block type is really the number of
literal codes sent minus 257.
9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
(1+6+6). Therefore, to output three times the length, you output
three codes (1+1+1), whereas to output four times the same length,
you only need two codes (1+3). Hmm.
10. In the tree reconstruction algorithm, Code = Code + Increment
only if BitLength(i) is not zero. (Pretty obvious.)
11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
12. Note: length code 284 can represent 227-258, but length code 285
really is 258. The last length deserves its own, short code
since it gets used a lot in very redundant files. The length
258 is special since 258 - 3 (the min match length) is 255.
13. The literal/length and distance code bit lengths are read as a
single stream of lengths. It is possible (and advantageous) for
a repeat code (16, 17, or 18) to go across the boundary between
the two sets of lengths.
*/
void inflate_blocks_reset(s, z, c)
inflate_blocks_statef *s;
z_streamp z;
uLongf *c;
{
if (c != Z_NULL)
*c = s->check;
if (s->mode == BTREE || s->mode == DTREE)
ZFREE(z, s->sub.trees.blens);
if (s->mode == CODES)
inflate_codes_free(s->sub.decode.codes, z);
s->mode = TYPE;
s->bitk = 0;
s->bitb = 0;
s->read = s->write = s->window;
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(0L, (const Bytef *)Z_NULL, 0);
Tracev((stderr, "inflate: blocks reset\n"));
}
inflate_blocks_statef *inflate_blocks_new(z, c, w)
z_streamp z;
check_func c;
uInt w;
{
inflate_blocks_statef *s;
if ((s = (inflate_blocks_statef *)ZALLOC
(z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
return s;
if ((s->hufts =
(inflate_huft *)ZALLOC(z, sizeof(inflate_huft), MANY)) == Z_NULL)
{
ZFREE(z, s);
return Z_NULL;
}
if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
{
ZFREE(z, s->hufts);
ZFREE(z, s);
return Z_NULL;
}
s->end = s->window + w;
s->checkfn = c;
s->mode = TYPE;
Tracev((stderr, "inflate: blocks allocated\n"));
inflate_blocks_reset(s, z, Z_NULL);
return s;
}
int inflate_blocks(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt t; /* temporary storage */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
/* copy input/output information to locals (UPDATE macro restores) */
LOAD
/* process input based on current state */
while (1) switch (s->mode)
{
case TYPE:
NEEDBITS(3)
t = (uInt)b & 7;
s->last = t & 1;
switch (t >> 1)
{
case 0: /* stored */
Tracev((stderr, "inflate: stored block%s\n",
s->last ? " (last)" : ""));
DUMPBITS(3)
t = k & 7; /* go to byte boundary */
DUMPBITS(t)
s->mode = LENS; /* get length of stored block */
break;
case 1: /* fixed */
Tracev((stderr, "inflate: fixed codes block%s\n",
s->last ? " (last)" : ""));
{
uInt bl, bd;
inflate_huft *tl, *td;
inflate_trees_fixed(&bl, &bd, &tl, &td, z);
s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
if (s->sub.decode.codes == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
}
DUMPBITS(3)
s->mode = CODES;
break;
case 2: /* dynamic */
Tracev((stderr, "inflate: dynamic codes block%s\n",
s->last ? " (last)" : ""));
DUMPBITS(3)
s->mode = TABLE;
break;
case 3: /* illegal */
DUMPBITS(3)
s->mode = BAD;
z->msg = (char*)"invalid block type";
r = Z_DATA_ERROR;
LEAVE
}
break;
case LENS:
NEEDBITS(32)
if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
{
s->mode = BAD;
z->msg = (char*)"invalid stored block lengths";
r = Z_DATA_ERROR;
LEAVE
}
s->sub.left = (uInt)b & 0xffff;
b = k = 0; /* dump bits */
Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
break;
case STORED:
if (n == 0)
LEAVE
NEEDOUT
t = s->sub.left;
if (t > n) t = n;
if (t > m) t = m;
zmemcpy(q, p, t);
p += t; n -= t;
q += t; m -= t;
if ((s->sub.left -= t) != 0)
break;
Tracev((stderr, "inflate: stored end, %lu total out\n",
z->total_out + (q >= s->read ? q - s->read :
(s->end - s->read) + (q - s->window))));
s->mode = s->last ? DRY : TYPE;
break;
case TABLE:
NEEDBITS(14)
s->sub.trees.table = t = (uInt)b & 0x3fff;
#ifndef PKZIP_BUG_WORKAROUND
if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
{
s->mode = BAD;
z->msg = (char*)"too many length or distance symbols";
r = Z_DATA_ERROR;
LEAVE
}
#endif
t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
DUMPBITS(14)
s->sub.trees.index = 0;
Tracev((stderr, "inflate: table sizes ok\n"));
s->mode = BTREE;
case BTREE:
while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
{
NEEDBITS(3)
s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
DUMPBITS(3)
}
while (s->sub.trees.index < 19)
s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
s->sub.trees.bb = 7;
t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
&s->sub.trees.tb, s->hufts, z);
if (t != Z_OK)
{
ZFREE(z, s->sub.trees.blens);
r = t;
if (r == Z_DATA_ERROR)
s->mode = BAD;
LEAVE
}
s->sub.trees.index = 0;
Tracev((stderr, "inflate: bits tree ok\n"));
s->mode = DTREE;
case DTREE:
while (t = s->sub.trees.table,
s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
{
inflate_huft *h;
uInt i, j, c;
t = s->sub.trees.bb;
NEEDBITS(t)
h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
t = h->bits;
c = h->base;
if (c < 16)
{
DUMPBITS(t)
s->sub.trees.blens[s->sub.trees.index++] = c;
}
else /* c == 16..18 */
{
i = c == 18 ? 7 : c - 14;
j = c == 18 ? 11 : 3;
NEEDBITS(t + i)
DUMPBITS(t)
j += (uInt)b & inflate_mask[i];
DUMPBITS(i)
i = s->sub.trees.index;
t = s->sub.trees.table;
if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
(c == 16 && i < 1))
{
ZFREE(z, s->sub.trees.blens);
s->mode = BAD;
z->msg = (char*)"invalid bit length repeat";
r = Z_DATA_ERROR;
LEAVE
}
c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
do {
s->sub.trees.blens[i++] = c;
} while (--j);
s->sub.trees.index = i;
}
}
s->sub.trees.tb = Z_NULL;
{
uInt bl, bd;
inflate_huft *tl, *td;
inflate_codes_statef *c;
bl = 9; /* must be <= 9 for lookahead assumptions */
bd = 6; /* must be <= 9 for lookahead assumptions */
t = s->sub.trees.table;
t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
s->sub.trees.blens, &bl, &bd, &tl, &td,
s->hufts, z);
ZFREE(z, s->sub.trees.blens);
if (t != Z_OK)
{
if (t == (uInt)Z_DATA_ERROR)
s->mode = BAD;
r = t;
LEAVE
}
Tracev((stderr, "inflate: trees ok\n"));
if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
s->sub.decode.codes = c;
}
s->mode = CODES;
case CODES:
UPDATE
if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
return inflate_flush(s, z, r);
r = Z_OK;
inflate_codes_free(s->sub.decode.codes, z);
LOAD
Tracev((stderr, "inflate: codes end, %lu total out\n",
z->total_out + (q >= s->read ? q - s->read :
(s->end - s->read) + (q - s->window))));
if (!s->last)
{
s->mode = TYPE;
break;
}
s->mode = DRY;
case DRY:
FLUSH
if (s->read != s->write)
LEAVE
s->mode = DONE;
case DONE:
r = Z_STREAM_END;
LEAVE
case BAD:
r = Z_DATA_ERROR;
LEAVE
default:
r = Z_STREAM_ERROR;
LEAVE
}
}
int inflate_blocks_free(s, z)
inflate_blocks_statef *s;
z_streamp z;
{
inflate_blocks_reset(s, z, Z_NULL);
ZFREE(z, s->window);
ZFREE(z, s->hufts);
ZFREE(z, s);
Tracev((stderr, "inflate: blocks freed\n"));
return Z_OK;
}
void inflate_set_dictionary(s, d, n)
inflate_blocks_statef *s;
const Bytef *d;
uInt n;
{
zmemcpy(s->window, d, n);
s->read = s->write = s->window + n;
}
/* Returns true if inflate is currently at the end of a block generated
* by Z_SYNC_FLUSH or Z_FULL_FLUSH.
* IN assertion: s != Z_NULL
*/
int inflate_blocks_sync_point(s)
inflate_blocks_statef *s;
{
return s->mode == LENS;
}

View File

@@ -0,0 +1,39 @@
/* infblock.h -- header to use infblock.c
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
struct inflate_blocks_state;
typedef struct inflate_blocks_state FAR inflate_blocks_statef;
extern inflate_blocks_statef * inflate_blocks_new OF((
z_streamp z,
check_func c, /* check function */
uInt w)); /* window size */
extern int inflate_blocks OF((
inflate_blocks_statef *,
z_streamp ,
int)); /* initial return code */
extern void inflate_blocks_reset OF((
inflate_blocks_statef *,
z_streamp ,
uLongf *)); /* check value on output */
extern int inflate_blocks_free OF((
inflate_blocks_statef *,
z_streamp));
extern void inflate_set_dictionary OF((
inflate_blocks_statef *s,
const Bytef *d, /* dictionary */
uInt n)); /* dictionary length */
extern int inflate_blocks_sync_point OF((
inflate_blocks_statef *s));

View File

@@ -0,0 +1,257 @@
/* infcodes.c -- process literals and length/distance pairs
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#include "infblock.h"
#include "infcodes.h"
#include "infutil.h"
#include "inffast.h"
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
START, /* x: set up for LEN */
LEN, /* i: get length/literal/eob next */
LENEXT, /* i: getting length extra (have base) */
DIST, /* i: get distance next */
DISTEXT, /* i: getting distance extra */
COPY, /* o: copying bytes in window, waiting for space */
LIT, /* o: got literal, waiting for output space */
WASH, /* o: got eob, possibly still output waiting */
END, /* x: got eob and all data flushed */
BADCODE} /* x: got error */
inflate_codes_mode;
/* inflate codes private state */
struct inflate_codes_state {
/* mode */
inflate_codes_mode mode; /* current inflate_codes mode */
/* mode dependent information */
uInt len;
union {
struct {
inflate_huft *tree; /* pointer into tree */
uInt need; /* bits needed */
} code; /* if LEN or DIST, where in tree */
uInt lit; /* if LIT, literal */
struct {
uInt get; /* bits to get for extra */
uInt dist; /* distance back to copy from */
} copy; /* if EXT or COPY, where and how much */
} sub; /* submode */
/* mode independent information */
Byte lbits; /* ltree bits decoded per branch */
Byte dbits; /* dtree bits decoder per branch */
inflate_huft *ltree; /* literal/length/eob tree */
inflate_huft *dtree; /* distance tree */
};
inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
uInt bl, bd;
inflate_huft *tl;
inflate_huft *td; /* need separate declaration for Borland C++ */
z_streamp z;
{
inflate_codes_statef *c;
if ((c = (inflate_codes_statef *)
ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
{
c->mode = START;
c->lbits = (Byte)bl;
c->dbits = (Byte)bd;
c->ltree = tl;
c->dtree = td;
Tracev((stderr, "inflate: codes new\n"));
}
return c;
}
int inflate_codes(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt j; /* temporary storage */
inflate_huft *t; /* temporary pointer */
uInt e; /* extra bits or operation */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
Bytef *f; /* pointer to copy strings from */
inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
/* copy input/output information to locals (UPDATE macro restores) */
LOAD
/* process input and output based on current state */
while (1) switch (c->mode)
{ /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
case START: /* x: set up for LEN */
#ifndef SLOW
if (m >= 258 && n >= 10)
{
UPDATE
r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
LOAD
if (r != Z_OK)
{
c->mode = r == Z_STREAM_END ? WASH : BADCODE;
break;
}
}
#endif /* !SLOW */
c->sub.code.need = c->lbits;
c->sub.code.tree = c->ltree;
c->mode = LEN;
case LEN: /* i: get length/literal/eob next */
j = c->sub.code.need;
NEEDBITS(j)
t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
DUMPBITS(t->bits)
e = (uInt)(t->exop);
if (e == 0) /* literal */
{
c->sub.lit = t->base;
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: literal '%c'\n" :
"inflate: literal 0x%02x\n", t->base));
c->mode = LIT;
break;
}
if (e & 16) /* length */
{
c->sub.copy.get = e & 15;
c->len = t->base;
c->mode = LENEXT;
break;
}
if ((e & 64) == 0) /* next table */
{
c->sub.code.need = e;
c->sub.code.tree = t + t->base;
break;
}
if (e & 32) /* end of block */
{
Tracevv((stderr, "inflate: end of block\n"));
c->mode = WASH;
break;
}
c->mode = BADCODE; /* invalid code */
z->msg = (char*)"invalid literal/length code";
r = Z_DATA_ERROR;
LEAVE
case LENEXT: /* i: getting length extra (have base) */
j = c->sub.copy.get;
NEEDBITS(j)
c->len += (uInt)b & inflate_mask[j];
DUMPBITS(j)
c->sub.code.need = c->dbits;
c->sub.code.tree = c->dtree;
Tracevv((stderr, "inflate: length %u\n", c->len));
c->mode = DIST;
case DIST: /* i: get distance next */
j = c->sub.code.need;
NEEDBITS(j)
t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
DUMPBITS(t->bits)
e = (uInt)(t->exop);
if (e & 16) /* distance */
{
c->sub.copy.get = e & 15;
c->sub.copy.dist = t->base;
c->mode = DISTEXT;
break;
}
if ((e & 64) == 0) /* next table */
{
c->sub.code.need = e;
c->sub.code.tree = t + t->base;
break;
}
c->mode = BADCODE; /* invalid code */
z->msg = (char*)"invalid distance code";
r = Z_DATA_ERROR;
LEAVE
case DISTEXT: /* i: getting distance extra */
j = c->sub.copy.get;
NEEDBITS(j)
c->sub.copy.dist += (uInt)b & inflate_mask[j];
DUMPBITS(j)
Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
c->mode = COPY;
case COPY: /* o: copying bytes in window, waiting for space */
#ifndef __TURBOC__ /* Turbo C bug for following expression */
f = (uInt)(q - s->window) < c->sub.copy.dist ?
s->end - (c->sub.copy.dist - (q - s->window)) :
q - c->sub.copy.dist;
#else
f = q - c->sub.copy.dist;
if ((uInt)(q - s->window) < c->sub.copy.dist)
f = s->end - (c->sub.copy.dist - (uInt)(q - s->window));
#endif
while (c->len)
{
NEEDOUT
OUTBYTE(*f++)
if (f == s->end)
f = s->window;
c->len--;
}
c->mode = START;
break;
case LIT: /* o: got literal, waiting for output space */
NEEDOUT
OUTBYTE(c->sub.lit)
c->mode = START;
break;
case WASH: /* o: got eob, possibly more output */
if (k > 7) /* return unused byte, if any */
{
Assert(k < 16, "inflate_codes grabbed too many bytes")
k -= 8;
n++;
p--; /* can always return one */
}
FLUSH
if (s->read != s->write)
LEAVE
c->mode = END;
case END:
r = Z_STREAM_END;
LEAVE
case BADCODE: /* x: got error */
r = Z_DATA_ERROR;
LEAVE
default:
r = Z_STREAM_ERROR;
LEAVE
}
#ifdef NEED_DUMMY_RETURN
return Z_STREAM_ERROR; /* Some dumb compilers complain without this */
#endif
}
void inflate_codes_free(c, z)
inflate_codes_statef *c;
z_streamp z;
{
ZFREE(z, c);
Tracev((stderr, "inflate: codes free\n"));
}

View File

@@ -0,0 +1,27 @@
/* infcodes.h -- header to use infcodes.c
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
struct inflate_codes_state;
typedef struct inflate_codes_state FAR inflate_codes_statef;
extern inflate_codes_statef *inflate_codes_new OF((
uInt, uInt,
inflate_huft *, inflate_huft *,
z_streamp ));
extern int inflate_codes OF((
inflate_blocks_statef *,
z_streamp ,
int));
extern void inflate_codes_free OF((
inflate_codes_statef *,
z_streamp ));

View File

@@ -0,0 +1,170 @@
/* inffast.c -- process literals and length/distance pairs fast
* Copyright (C) 1995-1998 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#include "infblock.h"
#include "infcodes.h"
#include "infutil.h"
#include "inffast.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
/* macros for bit input with no checking and for returning unused bytes */
#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
#define UNGRAB {c=z->avail_in-n;c=(k>>3)<c?k>>3:c;n+=c;p-=c;k-=c<<3;}
/* Called with number of bytes left to write in window at least 258
(the maximum string length) and number of input bytes available
at least ten. The ten bytes are six bytes for the longest length/
distance pair plus four bytes for overloading the bit buffer. */
int inflate_fast(bl, bd, tl, td, s, z)
uInt bl, bd;
inflate_huft *tl;
inflate_huft *td; /* need separate declaration for Borland C++ */
inflate_blocks_statef *s;
z_streamp z;
{
inflate_huft *t; /* temporary pointer */
uInt e; /* extra bits or operation */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
uInt ml; /* mask for literal/length tree */
uInt md; /* mask for distance tree */
uInt c; /* bytes to copy */
uInt d; /* distance back to copy from */
Bytef *r; /* copy source pointer */
/* load input, output, bit values */
LOAD
/* initialize masks */
ml = inflate_mask[bl];
md = inflate_mask[bd];
/* do until not enough input or output space for fast loop */
do { /* assume called with m >= 258 && n >= 10 */
/* get literal/length code */
GRABBITS(20) /* max bits for literal/length code */
if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
{
DUMPBITS(t->bits)
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: * literal '%c'\n" :
"inflate: * literal 0x%02x\n", t->base));
*q++ = (Byte)t->base;
m--;
continue;
}
do {
DUMPBITS(t->bits)
if (e & 16)
{
/* get extra bits for length */
e &= 15;
c = t->base + ((uInt)b & inflate_mask[e]);
DUMPBITS(e)
Tracevv((stderr, "inflate: * length %u\n", c));
/* decode distance base of block to copy */
GRABBITS(15); /* max bits for distance code */
e = (t = td + ((uInt)b & md))->exop;
do {
DUMPBITS(t->bits)
if (e & 16)
{
/* get extra bits to add to distance base */
e &= 15;
GRABBITS(e) /* get extra bits (up to 13) */
d = t->base + ((uInt)b & inflate_mask[e]);
DUMPBITS(e)
Tracevv((stderr, "inflate: * distance %u\n", d));
/* do the copy */
m -= c;
if ((uInt)(q - s->window) >= d) /* offset before dest */
{ /* just copy */
r = q - d;
*q++ = *r++; c--; /* minimum count is three, */
*q++ = *r++; c--; /* so unroll loop a little */
}
else /* else offset after destination */
{
e = d - (uInt)(q - s->window); /* bytes from offset to end */
r = s->end - e; /* pointer to offset */
if (c > e) /* if source crosses, */
{
c -= e; /* copy to end of window */
do {
*q++ = *r++;
} while (--e);
r = s->window; /* copy rest from start of window */
}
}
do { /* copy all or what's left */
*q++ = *r++;
} while (--c);
break;
}
else if ((e & 64) == 0)
{
t += t->base;
e = (t += ((uInt)b & inflate_mask[e]))->exop;
}
else
{
z->msg = (char*)"invalid distance code";
UNGRAB
UPDATE
return Z_DATA_ERROR;
}
} while (1);
break;
}
if ((e & 64) == 0)
{
t += t->base;
if ((e = (t += ((uInt)b & inflate_mask[e]))->exop) == 0)
{
DUMPBITS(t->bits)
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: * literal '%c'\n" :
"inflate: * literal 0x%02x\n", t->base));
*q++ = (Byte)t->base;
m--;
break;
}
}
else if (e & 32)
{
Tracevv((stderr, "inflate: * end of block\n"));
UNGRAB
UPDATE
return Z_STREAM_END;
}
else
{
z->msg = (char*)"invalid literal/length code";
UNGRAB
UPDATE
return Z_DATA_ERROR;
}
} while (1);
} while (m >= 258 && n >= 10);
/* not enough input or output--restore pointers and return */
UNGRAB
UPDATE
return Z_OK;
}

Some files were not shown because too many files have changed in this diff Show More