Hervé Poussineau [Sun, 4 Jun 2006 20:31:42 +0000 (20:31 +0000)]
Fix little spelling mistakes
Set svn:eol-style to native
svn path=/trunk/; revision=22222
Hervé Poussineau [Sun, 4 Jun 2006 20:10:02 +0000 (20:10 +0000)]
Fix DPFLTR_IHVVIDEO_ID constant value
svn path=/trunk/; revision=22221
Martin Fuchs [Sun, 4 Jun 2006 20:07:56 +0000 (20:07 +0000)]
Patch of Coviti: change "Reactos" texts to "ReactOS"
svn path=/trunk/; revision=22220
Magnus Olsen [Sun, 4 Jun 2006 19:20:20 +0000 (19:20 +0000)]
fixing one more of wine msvcrt printf test
svn path=/trunk/; revision=22219
Eric Kohl [Sun, 4 Jun 2006 19:12:58 +0000 (19:12 +0000)]
Add PNP_AddID stub and implement CM_Add_ID_ExW.
svn path=/trunk/; revision=22218
Aleksey Bragin [Sun, 4 Jun 2006 18:27:48 +0000 (18:27 +0000)]
Add a little more tests for Mdl testing, only 1 failes in ReactOS currently
svn path=/trunk/; revision=22217
Art Yerkes [Sun, 4 Jun 2006 17:24:37 +0000 (17:24 +0000)]
Fix four winetests from msvcrt:file.c
- The winetests show that the pointer never moves after calling chsize.
- Using SetEndOfFile is the best way to do this. I wrote a test case that
uses WriteFile as we did before and it did not expand the file past eof.
svn path=/trunk/; revision=22216
Magnus Olsen [Sun, 4 Jun 2006 17:22:12 +0000 (17:22 +0000)]
[AUDIT] this code is clean, for it is from DJGPP
svn path=/trunk/; revision=22215
Magnus Olsen [Sun, 4 Jun 2006 17:15:47 +0000 (17:15 +0000)]
fixing 24 bugs in *printf string version. we are failing 34 test in wine_test msvcrt printf
svn path=/trunk/; revision=22214
Hervé Poussineau [Sun, 4 Jun 2006 16:32:54 +0000 (16:32 +0000)]
Fix call to IOCTL_SERIAL_PURGE
svn path=/trunk/; revision=22213
Hervé Poussineau [Sun, 4 Jun 2006 16:30:27 +0000 (16:30 +0000)]
Display an error message only if we're not in the "load only boot drivers" phase
svn path=/trunk/; revision=22212
Johannes Anderwald [Sun, 4 Jun 2006 14:24:45 +0000 (14:24 +0000)]
revert _strdate modifications
svn path=/trunk/; revision=22211
Aleksey Bragin [Sun, 4 Jun 2006 14:24:08 +0000 (14:24 +0000)]
Fix some warnings
svn path=/trunk/; revision=22210
Aleksey Bragin [Sun, 4 Jun 2006 14:19:48 +0000 (14:19 +0000)]
Delete unneeded makefile
svn path=/trunk/; revision=22209
Aleksey Bragin [Sun, 4 Jun 2006 14:18:24 +0000 (14:18 +0000)]
- Add csqtest to build-system
- Add initial Kernel-Mode regression testing framework (thanks to Filip Navara for his PnPTest, thanks to Alexandre Julliard for Wine regression testing framework). Framework consists of: the driver (kmtest.sys) and the loader (kmtloader.exe).
svn path=/trunk/; revision=22208
Hervé Poussineau [Sun, 4 Jun 2006 14:10:21 +0000 (14:10 +0000)]
Convert result struct only if NtUserEnumDisplaySettings returned success
svn path=/trunk/; revision=22207
Hervé Poussineau [Sun, 4 Jun 2006 14:09:29 +0000 (14:09 +0000)]
Don't crash when no working display adapter is present
svn path=/trunk/; revision=22206
Hervé Poussineau [Sun, 4 Jun 2006 13:36:39 +0000 (13:36 +0000)]
Convert result struct only if NtUserEnumDisplayDevices returned success
svn path=/trunk/; revision=22205
Johannes Anderwald [Sun, 4 Jun 2006 13:20:09 +0000 (13:20 +0000)]
_strdate should return maximum 8 chars
does not work yet
svn path=/trunk/; revision=22204
Hervé Poussineau [Sun, 4 Jun 2006 13:09:25 +0000 (13:09 +0000)]
IntEnumDisplaySettings returns a BOOL, not a NTSTATUS
svn path=/trunk/; revision=22203
Johannes Anderwald [Sun, 4 Jun 2006 10:23:28 +0000 (10:23 +0000)]
make _tfullpath pass all msvcrt_winetest dir tests
svn path=/trunk/; revision=22202
Magnus Olsen [Sun, 4 Jun 2006 10:14:45 +0000 (10:14 +0000)]
[AUDIT] this code is clear, no signs of revers is found it is only around 3-4 line of one function
svn path=/trunk/; revision=22201
Magnus Olsen [Sat, 3 Jun 2006 20:29:26 +0000 (20:29 +0000)]
do not cuase crash in dhcp when no networkcard is found
svn path=/trunk/; revision=22200
Magnus Olsen [Sat, 3 Jun 2006 17:45:07 +0000 (17:45 +0000)]
sorrry I did break the build
svn path=/trunk/; revision=22198
Magnus Olsen [Sat, 3 Jun 2006 17:40:23 +0000 (17:40 +0000)]
fixing malloc and realloc so it return right value
do not mix the doc over malloc and realloc. Thanks filip
<filip2307> malloc(0) -> valid buffer
<GreatLord> then I revert that change
<filip2307> realloc(<non-null pointer>, 0) -> NULL
<filip2307> realloc(NULL, 0) -> valid buffer
svn path=/trunk/; revision=22197
Magnus Olsen [Sat, 3 Jun 2006 17:18:09 +0000 (17:18 +0000)]
Fix overflow caltions bugs in varus memmory functions, Thanks irc : Elrond (from TNG) for fixing calloc overflow bug.
svn path=/trunk/; revision=22196
Magnus Olsen [Sat, 3 Jun 2006 13:22:11 +0000 (13:22 +0000)]
make malloc, calloc and some other function return NULL if size is 0
svn path=/trunk/; revision=22195
Magnus Olsen [Sat, 3 Jun 2006 13:20:03 +0000 (13:20 +0000)]
[AUDIT] this code is clear, no signs of revers is found it is only around 2-3 line of each functions
svn path=/trunk/; revision=22194
Johannes Anderwald [Sat, 3 Jun 2006 12:53:45 +0000 (12:53 +0000)]
re-enable lock
svn path=/trunk/; revision=22193
Johannes Anderwald [Sat, 3 Jun 2006 12:48:09 +0000 (12:48 +0000)]
fix bug in CmiCreateHiveFreeCellList when a cell has size 0 which leads to inifite loop
fix bug in CmiCreateTempHive where only a pointer was allocated for the first cell but not object itself
svn path=/trunk/; revision=22192
Hervé Poussineau [Sat, 3 Jun 2006 11:47:04 +0000 (11:47 +0000)]
Fix some little bugs
svn path=/trunk/; revision=22191
Ged Murphy [Sat, 3 Jun 2006 11:30:13 +0000 (11:30 +0000)]
[AUDIT]
umpnpmgr
Eric Kohl and Hervé Poussineau have both confirmed their contributions are clean.
Eric also stated it was developed using information from the Samba project.
svn path=/trunk/; revision=22190
Ged Murphy [Sat, 3 Jun 2006 11:25:47 +0000 (11:25 +0000)]
[AUDIT]
services.exe
Eric Kohl and Filip Navara have both confirmed their contributions are clean.
Public documentation, like "Inside Microsoft Windows 2000", and tests were used to implement it
svn path=/trunk/; revision=22189
James Tabor [Sat, 3 Jun 2006 07:00:09 +0000 (07:00 +0000)]
Fix compiling. Well for me anyway.
svn path=/trunk/; revision=22188
Aleksey Bragin [Fri, 2 Jun 2006 20:15:54 +0000 (20:15 +0000)]
Add forgotten KeAcquire/ReleaseQueuedSpinLock exported funcs to hal.def
svn path=/trunk/; revision=22187
Aleksey Bragin [Fri, 2 Jun 2006 20:14:40 +0000 (20:14 +0000)]
[AUDIT]
halmp.dll
- Most functions are 2 lines
- And other funcs are simply UNIMPLEMENTED
svn path=/trunk/; revision=22186
Johannes Anderwald [Fri, 2 Jun 2006 19:02:21 +0000 (19:02 +0000)]
return ERROR_INVALID_HANDLE when hKey is invalid
ReactOS passes now 88 of 89 advapi32_winetest registry tests
svn path=/trunk/; revision=22185
Ged Murphy [Fri, 2 Jun 2006 16:47:39 +0000 (16:47 +0000)]
- remove all reliance on 'extern' data, using abstraction.
- store pointer to currently selected service in info struct so we don't have to keep calling it
- rewrite create.c making it more modular. Still has some missing features.
- lots of bugfixes and small improvements
svn path=/trunk/; revision=22184
Johannes Anderwald [Fri, 2 Jun 2006 14:37:25 +0000 (14:37 +0000)]
fix apps depending on INVALID_HANDLE_VALUE
bug report & patch by w3seek
svn path=/trunk/; revision=22179
Johannes Anderwald [Fri, 2 Jun 2006 14:08:22 +0000 (14:08 +0000)]
forgot header in last commit
bug report(1455) & patch by w3seek
svn path=/trunk/; revision=22178
Johannes Anderwald [Fri, 2 Jun 2006 14:05:38 +0000 (14:05 +0000)]
always zero handle on return
ros now passes 87/89 advapi32_winetest registry tests
bug report & patch by w3seek
svn path=/trunk/; revision=22177
Hervé Poussineau [Fri, 2 Jun 2006 13:43:02 +0000 (13:43 +0000)]
By default, don't search a driver on removable media.
Do it only when choosing automatic install or selecting "Include removable media" in new hardware wizard
svn path=/trunk/; revision=22175
Hervé Poussineau [Fri, 2 Jun 2006 11:17:37 +0000 (11:17 +0000)]
Implement CM_Add_IDA, CM_Add_IDW, CM_Add_ID_ExA
Add stub for CM_Add_ID_ExW
svn path=/trunk/; revision=22174
Johannes Anderwald [Fri, 2 Jun 2006 10:13:17 +0000 (10:13 +0000)]
disable timer when user wants to set an alternative date -
enables setting time and fixes bug 1398
bug report by Coviti
svn path=/trunk/; revision=22173
Hervé Poussineau [Fri, 2 Jun 2006 09:06:05 +0000 (09:06 +0000)]
Extract some code from devinst.c to new files: devclass.c (device class functions), driver.c (Driver install/enumeration functions), interface.c (Interface install/enumeration functions)
devinst.c is now 123 Kb instead of 285 Kb.
No code change.
svn path=/trunk/; revision=22172
Hervé Poussineau [Thu, 1 Jun 2006 22:00:43 +0000 (22:00 +0000)]
Change registry settings (related to revision 22169)
I'm not sure if this change is correct or if win32k has to be fixed.
svn path=/trunk/; revision=22170
Hervé Poussineau [Thu, 1 Jun 2006 21:45:50 +0000 (21:45 +0000)]
Store real parameters registry key in DEVICEMAP\VIDEO
Use it in win32k when loading and storing settings (SetupDevMode and IntChangeDisplaySettings)
svn path=/trunk/; revision=22169
Christoph von Wittich [Thu, 1 Jun 2006 21:38:07 +0000 (21:38 +0000)]
-fix copy paste error (crypt32->cryptdll)
svn path=/trunk/; revision=22168
Christoph von Wittich [Thu, 1 Jun 2006 21:36:42 +0000 (21:36 +0000)]
-added cryptdll to build
-added cryptdll.dll and usb.inf to bootcd
svn path=/trunk/; revision=22167
Ged Murphy [Thu, 1 Jun 2006 21:30:02 +0000 (21:30 +0000)]
First time import from wine-0.9.14
svn path=/trunk/; revision=22166
Magnus Olsen [Thu, 1 Jun 2006 21:26:10 +0000 (21:26 +0000)]
redirect __p__tzname to _tzname, I copy the idea from wine, for they are doing same
svn path=/trunk/; revision=22164
Magnus Olsen [Thu, 1 Jun 2006 21:21:16 +0000 (21:21 +0000)]
redirect __p__mbctype to _mbctype, I copy the idea from wine, for they are doing same
svn path=/trunk/; revision=22162
Ged Murphy [Thu, 1 Jun 2006 21:18:22 +0000 (21:18 +0000)]
more gcc 4.1 fixes
svn path=/trunk/; revision=22161
Ged Murphy [Thu, 1 Jun 2006 21:12:55 +0000 (21:12 +0000)]
fix build for w3seek and his gcc 4.1 crew ;)
svn path=/trunk/; revision=22160
Magnus Olsen [Thu, 1 Jun 2006 21:05:53 +0000 (21:05 +0000)]
remove stub for _wenviron we already have it implement in crt.a
svn path=/trunk/; revision=22159
Hervé Poussineau [Thu, 1 Jun 2006 19:55:28 +0000 (19:55 +0000)]
Don't free the string, as it is not ours
svn path=/trunk/; revision=22158
Ged Murphy [Thu, 1 Jun 2006 19:34:33 +0000 (19:34 +0000)]
- Temperarly add the screenshot app to the start menu
- Remove the existance checks for the games as they're part of ROS now.
svn path=/trunk/; revision=22157
Hervé Poussineau [Thu, 1 Jun 2006 18:27:08 +0000 (18:27 +0000)]
Fix calculation of loss percentage
svn path=/trunk/; revision=22156
Magnus Olsen [Thu, 1 Jun 2006 18:20:34 +0000 (18:20 +0000)]
fix so fread return right value of bytes/chars it reads
make one more wine test pass in msvcrt file
svn path=/trunk/; revision=22155
Christoph von Wittich [Thu, 1 Jun 2006 18:06:25 +0000 (18:06 +0000)]
-don't update the time in the DTP control when the user is about to change it
svn path=/trunk/; revision=22154
Magnus Olsen [Thu, 1 Jun 2006 17:42:00 +0000 (17:42 +0000)]
[AUDIT] this code is clear, if u look at djgpp fread u will see it base directly of it same struct and line out.
svn path=/trunk/; revision=22153
Ged Murphy [Thu, 1 Jun 2006 17:29:05 +0000 (17:29 +0000)]
add a really dodgy delete button. I'll replace all these buttons in due course.
svn path=/trunk/; revision=22152
Christoph von Wittich [Thu, 1 Jun 2006 17:26:49 +0000 (17:26 +0000)]
-forgot to add world.bmp
svn path=/trunk/; revision=22151
Hervé Poussineau [Thu, 1 Jun 2006 17:08:28 +0000 (17:08 +0000)]
If the section name contained a dot, sometimes the right section to install was not found
svn path=/trunk/; revision=22150
Ged Murphy [Thu, 1 Jun 2006 16:47:11 +0000 (16:47 +0000)]
hmm, tortoise is messing me about ;)
svn path=/trunk/; revision=22149
Ged Murphy [Thu, 1 Jun 2006 16:42:08 +0000 (16:42 +0000)]
- Start a complete overhaul of servman, using abstraction instead of the old messy way.
- Far to many changes to list, so I'm not even gonna even try ;)
svn path=/trunk/; revision=22148
Christoph von Wittich [Thu, 1 Jun 2006 16:34:53 +0000 (16:34 +0000)]
-forgot to check lpDrawItem->CtlID
svn path=/trunk/; revision=22147
Hervé Poussineau [Thu, 1 Jun 2006 16:25:15 +0000 (16:25 +0000)]
Amovible devices should be checked when doing automatic install
svn path=/trunk/; revision=22146
Christoph von Wittich [Thu, 1 Jun 2006 16:25:13 +0000 (16:25 +0000)]
-added a worldmap picture (source: en.wikipedia.org/wiki/Image:Earth_satellite_plane.jpg)
svn path=/trunk/; revision=22145
Magnus Olsen [Thu, 1 Jun 2006 09:38:11 +0000 (09:38 +0000)]
Sorry I did wrong calc of the position of ungetc did not think of TCHAR size.
svn path=/trunk/; revision=22144
Magnus Olsen [Thu, 1 Jun 2006 09:26:32 +0000 (09:26 +0000)]
small rewrite by me, pass wine test and no bugs in ungetc accroing wine test of msvcrt.
svn path=/trunk/; revision=22143
Magnus Olsen [Thu, 1 Jun 2006 09:23:00 +0000 (09:23 +0000)]
[AUDIT] this code is clear base from djgpp with small modifcation, and bugs as hell. Bugfix will folllow in next commit
svn path=/trunk/; revision=22142
Ged Murphy [Wed, 31 May 2006 22:39:51 +0000 (22:39 +0000)]
fix possible memory leak
svn path=/trunk/; revision=22136
Christoph von Wittich [Wed, 31 May 2006 15:28:43 +0000 (15:28 +0000)]
-fixed bug 1513
-some changes to De.rc
svn path=/trunk/; revision=22129
Magnus Olsen [Wed, 31 May 2006 15:18:02 +0000 (15:18 +0000)]
recommit french translatoins : patch from bug 1539 : the patch are provide by usurp
svn path=/trunk/; revision=22128
Johannes Anderwald [Wed, 31 May 2006 15:04:01 +0000 (15:04 +0000)]
add french translation
svn path=/trunk/; revision=22127
Hervé Poussineau [Wed, 31 May 2006 14:26:56 +0000 (14:26 +0000)]
Fix BSOD in IntPrepareDriver (bug 1321)
svn path=/trunk/; revision=22126
Christoph von Wittich [Wed, 31 May 2006 14:26:46 +0000 (14:26 +0000)]
show Cancel button
svn path=/trunk/; revision=22125
Hervé Poussineau [Wed, 31 May 2006 12:28:30 +0000 (12:28 +0000)]
Remove useless cast
svn path=/trunk/; revision=22124
Magnus Olsen [Wed, 31 May 2006 07:56:39 +0000 (07:56 +0000)]
start implement WSHGetSockaddrType, it missing error code at return, and handling other struct and sockeradr_in.
Code was done by me and irc : Elrond (from TNG), Arty please check this, Other people test see if it works for u.
svn path=/trunk/; revision=22123
Ged Murphy [Tue, 30 May 2006 21:12:31 +0000 (21:12 +0000)]
add screenshot app to bootcd
svn path=/trunk/; revision=22122
Ged Murphy [Tue, 30 May 2006 21:11:41 +0000 (21:11 +0000)]
add a temp screenshot app in case I don't get time to stick it in win32k before 0.3.0 FF.
svn path=/trunk/; revision=22121
Aleksey Bragin [Tue, 30 May 2006 21:01:24 +0000 (21:01 +0000)]
- Unlock *.def file (it doesn't need to be audited)
- Patch by Andrey Korotaev: Fix wgl* function definitions
svn path=/trunk/; revision=22120
Hervé Poussineau [Tue, 30 May 2006 19:40:52 +0000 (19:40 +0000)]
Fix indentation by replacing tabs by spaces. No code change
svn path=/trunk/; revision=22119
Hervé Poussineau [Tue, 30 May 2006 16:05:27 +0000 (16:05 +0000)]
Fix installation from default directory (%SYSTEMROOT%\Inf).
Thanks WaxDragon for reporting.
svn path=/trunk/; revision=22118
Hervé Poussineau [Tue, 30 May 2006 13:39:21 +0000 (13:39 +0000)]
Implement the Browse button, but it is not working well :(
svn path=/trunk/; revision=22117
Hervé Poussineau [Tue, 30 May 2006 10:13:47 +0000 (10:13 +0000)]
Remember custom paths entered in wizard
svn path=/trunk/; revision=22116
James Tabor [Tue, 30 May 2006 06:50:03 +0000 (06:50 +0000)]
Implement NtGdiGetCharABCWidths. Not sure if the math is right. Tested with Lazarus IDE. It is completely based on Filip Navara work on NtGdiGetCharWidth32.
svn path=/trunk/; revision=22115
Ged Murphy [Mon, 29 May 2006 16:20:45 +0000 (16:20 +0000)]
change version text in line with new svn version
svn path=/trunk/; revision=22112
Hervé Poussineau [Mon, 29 May 2006 13:32:51 +0000 (13:32 +0000)]
- Implement SetupCopyOEMInfW
- Correctly sort drivers by rank and by date
- Fix memory corruption if %SYSTEMROOT% was longer than 128 chars
svn path=/trunk/; revision=22109
Hervé Poussineau [Mon, 29 May 2006 13:30:50 +0000 (13:30 +0000)]
Fix typo ("SetupDiGetDeviceRegistryProperty" -> "SetupDiInstallDevice" in debug message)
svn path=/trunk/; revision=22108
Magnus Olsen [Mon, 29 May 2006 12:43:01 +0000 (12:43 +0000)]
Hidden bug in our tcp/ip stack, at shutdown api the so can be NULL if that happen, ReactOS will bsod the tcp/ip stack.
Arty can u look if this changes is right if not revert it. This changes was tested in fireforx at http://www.mirc.com/get.html and try d/l mirc. This patch do not make firefox bsod, instead it genrate a long crash log at serial debug.
svn path=/trunk/; revision=22106
Magnus Olsen [Mon, 29 May 2006 11:28:55 +0000 (11:28 +0000)]
revers r22073 and r22075 bugfix for envinmert for it break firefox, not tested in trunk, I tested to revers this change in r22075
svn path=/trunk/; revision=22105
Hervé Poussineau [Mon, 29 May 2006 11:09:54 +0000 (11:09 +0000)]
Do the normal install before custom install actions.
So, we should get the right .inf filename in SP_DRVINFO_DETAIL_DATA.InfFileName, as it is modified if the file is copied to %SYSTEMROOT%/Inf
svn path=/trunk/; revision=22104
Hervé Poussineau [Mon, 29 May 2006 11:03:24 +0000 (11:03 +0000)]
SP_DRVINFO_DETAIL_DATA_W.InfFileName must contain the full file name
Add SetupDiSelectDevice stub
svn path=/trunk/; revision=22103
Hervé Poussineau [Mon, 29 May 2006 09:36:26 +0000 (09:36 +0000)]
Don't stop the search after the first driver found. Next ones may be better
svn path=/trunk/; revision=22102
Hervé Poussineau [Mon, 29 May 2006 08:55:08 +0000 (08:55 +0000)]
Fix some whitespaces
Change swprintf by sprintfW
svn path=/trunk/; revision=22101
Alex Ionescu [Mon, 29 May 2006 03:32:43 +0000 (03:32 +0000)]
- Object Manager Improvements (3 of 3):
* Implement Per-Processor Lookaside List based allocation and de-allocation of the Object Create Information (object attributes capture) and of the object name. I counted over 4000 allocations for only 30 seconds of runtime, so this change greatly reduces pool fragmentation and increases speed. (Implementation is similar to the IRP lookaside list implementation, but inlined for speed).
* Fix some cases where we weren't freeing captured information properly. This patch should also decrease memory leaks/usage.
* Comment/formatting fixes.
svn path=/trunk/; revision=22100
Alex Ionescu [Mon, 29 May 2006 00:18:36 +0000 (00:18 +0000)]
- Object Manager Fixes (2 of 3):
* Remove superflous debug prints used a long time ago while debugging
* Set the CreatorUniqueProcess
* Align code to 80 chars
* Do a privilege check of OB_FLAG_PERMANENT is being used, and de-allocate the object if this failed.
* Send the PreviousMode to ObpAllocateObject so that it can honor it and set the OB_FLAG_KERNEL_MODE flag.
* Use OBJECT_TYPE accounting to increase TotalNumberOfObjects.
* Fail ObCreateObject in low-memory situations instead of ignoring it.
* Respect OBJECT_TYPE.TypeInfo.InvalidAttributes if an attempt is to create an object with invalid attributes is detected.
* Respect PagedPoolCharge and NonPagedPoolCharge parameters and save them in the OBJECT_CREATE_INFORMATION strucutre.
svn path=/trunk/; revision=22099
Alex Ionescu [Mon, 29 May 2006 00:05:07 +0000 (00:05 +0000)]
- Object Manager Improvement Patch 1/3:
- Re-implement delayed object deletion by using an optimized Object Reaper based on OBJECT_HEADER->NextToFree. Thanks to Thomas for the algorithm.
- Refactor object deletion into two operations: Removal and de-allocation (this is needed for failure during allocation, which we don't do yet).
- BugFixes:
* After freeing an object header structure, also clear the pointer so we don't attempt it again.
* Clear the handle database if there is one
* Make sure the create info flag is set before deleting captured attributes.
* Use the allocation pool tag when de-allocating.
* Use OBJECT_TYPE accounting for tracking the numbef of objects.
* Remove the object from it's typelist if it has creator information.
* Call the security procedure to delete the security descriptor.
svn path=/trunk/; revision=22098