Commit Graph
71 Commits
Author SHA1 Message Date
Amine Khaldi 273956fd2a [RTL]
* Remove unused asmv2hashW and DeviceRootW.

svn path=/trunk/; revision=64086
2014-09-09 12:06:01 +00:00
Hermès Bélusca-Maïto e9cd63fb67 [RTL]
Some fixes for RtlGetFullPathName_U(str):
- Start to polish RtlpCollapsePath (Work in progress)
- Correctly zero-out the path destination buffer

They fix the following tests:
* ntdll:RtlGetFullPathName_U (2 failures to full success)
* ntdll:RtlGetFullPathName_UstrEx (2 failures to full success)

svn path=/trunk/; revision=62623
2014-04-05 14:56:41 +00:00
Hermès Bélusca-Maïto 8c96a4e9a2 [RTL]
Implement and export RtlGetLengthWithoutTrailingPathSeperators (aka. RtlGetLengthWithoutTrailingPathSeparators) (needed for win2k3's basesrv.dll).
Patch by David Quintana, where I simplified the loop (and reduced the number of local variables).
CORE-7482 #comment Function committed in revision 60348, thanks ;)

svn path=/trunk/; revision=60348
2013-09-24 22:16:30 +00:00
Amine Khaldi 6f54336e64 * Silence some more debug prints.
svn path=/trunk/; revision=60106
2013-09-14 17:25:04 +00:00
Alex Ionescu 34ae4aafae [NTDLL/RTL]: Stub and export all the routines that Kernel32 needs.
svn path=/trunk/; revision=59894
2013-08-30 06:34:16 +00:00
Hermès Bélusca-Maïto d405d25f8c [RTL:PATH]
- Use UNICODE markers for characters (the L'.' symbol for example) (i.e. fix code originating from Wine).
- Accept NULL Path/FileName in RtlDosSearchPath_U (fixes some ntdll_apitest tests, see after).

Fixes for RtlGetFullPathName_Ustr:
==================================
- Rework RtlGetFullPathName_Ustr by "reusing" little parts of the code of our old RtlGetFullPathName_U coming from Wine (and then make RtlGetFullPathName_U call RtlGetFullPathName_Ustr instead).
- Include the get_full_path_helper code into RtlGetFullPathName_Ustr and NT'ify it, and fix it too:
  * Fix skipping trailing path separators (slashes / backslashes) at the end of pathes.
  * Zero-out the destination buffer
  * Fix retrieving the "Short Name" (ie. the file name) out from the given full path name.
  * Fix remaining UNC path handling (ie. correctly remove trailing points, spaces, in UNC paths).

They fix the following tests:
* kernel32:FindFiles (6 failures to full success)
* ntdll:RtlDosPathNameToNtPathName_U (4 failures to full success)
* ntdll:RtlDosSearchPath_U (6 failures to full success)
* ntdll:RtlGetFullPathName_U (8 failures down to 2 failures because we don't correctly NULLify the user buffer when trimming unneeded chars)
* ntdll:RtlGetFullPathName_UstrEx (6 failures down to 2 failures for the same reasons as the previous test)

To Do: Finish to NT'ify the code originated from Wine, fix NULLification of the user buffer (when trimming unneeded characters), and "clean" the code ie. remove extra DPRINTs and added FIXMEs and NOTEs comments.

svn path=/trunk/; revision=59366
2013-06-29 15:29:09 +00:00
Hermès Bélusca-Maïto 450943cf42 [KERNEL32]
- Fix IN/OUT declaration of parameters for GetFullPathNameA/W
- Fix a bad usage of GetFullPathNameW in the GetTempPathW API, where the source and destination buffer for GetFullPathNameW was the same (Yet another Wineism :(( ). On Windows, using the same buffer fills it with a garbled string. Avoid this behaviour on ReactOS too, because internally GetFullPathNameW calls RtlGetFullPathName_U, the latter zeroing-out the destination buffer before usage.

[RTL:PATH]
See comments of revision r59183 (and in particular, fix some ntdll:RtlDos* path functions).

svn path=/trunk/; revision=59193
2013-06-08 14:48:33 +00:00
Hermès Bélusca-Maïto 6922a068e7 [KERNEL32-RTL]
Fix return type and usage of RtlDetermineDosPathNameType_U, and use the declaration of RTL_PATH_TYPE in winternl.h instead of the wineism DOS_PATHNAME_TYPE.

See r59183 and 59184 for more information.

svn path=/trunk/; revision=59185
2013-06-07 20:40:34 +00:00
Sylvain Petreolle d93b910537 Revert 59183 on hbelusca's request.
svn path=/trunk/; revision=59184
2013-06-07 09:36:37 +00:00
Hermès Bélusca-Maïto 917be25184 [KERNEL32-RTL]
Fix return type and usage of RtlDetermineDosPathNameType_U, and use the declaration of RTL_PATH_TYPE in winternl.h instead of the wineism DOS_PATHNAME_TYPE.

[RTL:PATH]
- Make usage of the IS_PATH_SEPARATOR(...) macro instead of automatically checking for L'\\' or L'/', and of OBJ_NAME_PATH_SEPARATOR when checking for L'\\' only or setting the character L'\\' (just code consistency only).

<Test fixes:>
- Fix a search loop and a check in RtlpWin32NTNameToNtPathName_U (a problem of setting the pointer *PartName via the variable p existed (always 1 character shift wrt. the expected result, and now *PartName is set to NULL even if p == NewBuffer).
- Zero out an optional parameter (if present) in RtlDosSearchPath_Ustr.
- Zero out the return buffer in RtlGetFullPathName_U (function from Wine).

Those fixes ^ correct the following tests:
* ntdll:RtlDosPathNameToNtPathName_U (58 errors to 4 errors remaining due to UNC path handling).
* ntdll:RtlDosSearchPath_U (9 errors to 6 errors remaining due to the fact that our RtlDosSearchPath_U doesn't throw exception on bad arguments because it checks the validity of its arguments (pointers especially), whereas on Windows it seems it doesn't happen to be the case).
* ntdll:RtlDosSearchPath_Ustr (4 errors to full success).
* ntdll:RtlGetFullPathName_U (31 errors to 8 errors).
* ntdll:RtlGetFullPathName_UstrEx (29 errors to 6 errors).

svn path=/trunk/; revision=59183
2013-06-07 01:25:57 +00:00
Hermès Bélusca-Maïto 6a14b4a76e [RTL]
Revert r59165 because RtlPrefixUnicodeString may not behave exactly as what the original code did (but keep the command in comment). I also want how tests behave with the change.

svn path=/trunk/; revision=59173
2013-06-03 21:05:32 +00:00
Hermès Bélusca-Maïto b7f2a77833 [RTL]
Use RtlPrefixUnicodeString.

svn path=/trunk/; revision=59165
2013-06-02 22:51:24 +00:00
Hermès Bélusca-Maïto 3326a5b566 [RTL]
Use RtlDowncaseUnicodeChar instead of towlower

svn path=/trunk/; revision=59163
2013-06-02 22:11:50 +00:00
Hermès Bélusca-Maïto 59abd42a24 [RTL-PATH]
- Fix hackish lower-casing instructions.
- Fix a DPRINT string specifier.
- Fix some string/pointer algebra.

Fixes 10 kernel32:FindFiles tests (all the "Test failed: Wrong last error. Expected 2, got 123" failures, where 123 == ERROR_INVALID_NAME).

CORE-6667 #commented "NoWine" patch committed in revision r59148.

svn path=/trunk/; revision=59148
2013-06-02 18:33:52 +00:00
Timo Kreuzer 50f0e9b20a [RTL]
Fix warnings from VS /analyze

svn path=/trunk/; revision=58322
2013-02-16 17:58:16 +00:00
Thomas Faber 67d9295a2d [RTL/NDK/DDK/XDK]
- RtlDosSearchPath_Ustr returns NTSTATUS, not ULONG
- Fix some ULONG vs SIZE_T issues
- RtlEqualMemory returns LOGICAL, not ULONG

svn path=/trunk/; revision=56455
2012-05-01 07:16:02 +00:00
Thomas Faber e5491506f1 [RTL]
- Do not null terminate buffer before initializing its length in RtlDosSearchPath_Ustr. Use unicode string functions made for this purpose instead.
See issue #7010 for more details.

svn path=/trunk/; revision=56438
2012-04-27 11:04:09 +00:00
Thomas Faber 9a9ec7bb7c [RTL]
- Accept NULL Buffer/Size in RtlGetFullPathName_Ustr
- Fix NULL dereference in RtlGetFullPathName_UstrEx if no StaticString was given
- Various other corrections to path functions. 17 test failures fixed overall.

svn path=/trunk/; revision=56426
2012-04-25 22:21:00 +00:00
Thomas Faber 6eef1df19a [RTL/NDK]
- Add missing mmtypes.h include in mmfuncs.h
- Remove RtlDetermineDosPathNameType_Ustr from rtlfuncs.h, move it up in path.c
- Add RtlGetLongestNtPathLength to rtlfuncs.h

svn path=/trunk/; revision=56410
2012-04-25 07:24:17 +00:00
Thomas Faber 95e2e118d0 [RTL/NDK]
- RtlGetFullPathName_UstrEx returns NTSTATUS

svn path=/trunk/; revision=56378
2012-04-21 06:57:07 +00:00
Thomas Faber 6d5fb45681 [RTL]
- Fix use of uninitialized variables in failure case of RtlSetCurrentDirectory_U. CID 15339, 15340
- Handles should be NULL, not 0

svn path=/trunk/; revision=55805
2012-02-22 12:02:59 +00:00
Timo Kreuzer cb1539b7df [RTL]
Fix64 bit warnings

svn path=/trunk/; revision=55527
2012-02-10 17:36:11 +00:00
Pierre Schweitzer f65034e760 [RTL]
- Reimplement RtlSetCurrentDirectory_U. This fixes bugs & implements references count
- Fix the FIXME in RtlpDosPathNameToRelativeNtPathName_Ustr by incrementing references count

svn path=/trunk/; revision=55017
2012-01-20 20:21:16 +00:00
Pierre Schweitzer f6bc586f58 [RTL]
Complete RtlpDosPathNameToRelativeNtPathName_Ustr() rewrite by properly handling relative names.
This fixes several regressions brought by r54804 (see winetests).
This also fixes file system corruption when using directory functions.
This may also fix general file system corruption, so, please retest bug #6720.

svn path=/trunk/; revision=54820
2012-01-03 19:08:46 +00:00
Pierre Schweitzer f41bad823b [NDK/RTL]
Fix RtlIsDosDeviceName_U, RtlIsDosDeviceName_Ustr, RtlDosPathNameToRelativeNtPathName_U, RtlDosPathNameToRelativeNtPathName_U_WithStatus prototypes.

svn path=/trunk/; revision=54801
2012-01-01 17:17:07 +00:00
Alex Ionescu b5381f1fd7 [RTL]: Implement, and export, RtlDosSearchPath_Ustr as well as RtlGetFullPathName_UstrEx. RtlGetFullPathName_U is still old code but it seems good enough for now, and isn't the next target.
Nothing calls this code yet (SearchPathW soon will), this is just an implementation commit. Code was tested to boot to 3rd stage after SearchPath modification, which is the next target (step 2).
After which, the only code in the loader paths that uses legacy path APIs will be the create process path, the third and final step.

svn path=/trunk/; revision=54646
2011-12-14 03:55:54 +00:00
Alex Ionescu ca193ad4a7 [RTL]: Clarify a comment.
svn path=/trunk/; revision=54588
2011-12-04 17:25:15 +00:00
Alex Ionescu 778d8cec8a [RTL]: Fix a bug in RtlGetCurrentDirectory_U.
svn path=/trunk/; revision=54586
2011-12-04 16:27:32 +00:00
Aleksey Bragin 360430be4d [RTL]
- Fix two bugs revealed by the newly added test in r54114.
 * Original length of the passed string should be used when checking for out-of-buffer access in the loop
 * PathChars should be updated if a DOS device name was found in the given string.
See issue #6390 for more details.

svn path=/trunk/; revision=54116
2011-10-13 18:15:50 +00:00
Timo Kreuzer 0fa1475dfd [RTL]
- Fix possible integer overflow in RtlpInitializeHeapSegment
- Simplify loop in RtlIsDosDeviceName_Ustr
- Make MonthLengths an array of UCHARs instead of ints
- Remove pointless loops in RtlTimeToTimeFields
- Fix MSVC warnings

svn path=/trunk/; revision=54054
2011-10-08 13:50:14 +00:00
Aleksey Bragin cf694ce4ea [RTL]
- Post-r52687 implementation of RtlIsDosDeviceName_U is more advanced than pre-r52687 one and covers more corner cases which may not be tested by existing winetests.
- Thus bring back the post-r52687 and also introduce fixes for the following bugs in it:
* Incorrect extension/space-at-the-end truncation
* Incorrect encoding of returned offset/length pair
* Incorrect condition for for-loop exit
* Incorrect calculation of the return length in case of COMx/AUX devices (it should not include the terminating 0 character)
- After those trivial fixes (mostly oneliners and typos), the function works as expected and passes all ntdll_winetest path tests. Sorry for any inconviniences!

svn path=/trunk/; revision=54018
2011-10-05 22:20:30 +00:00
Timo Kreuzer 16bab3bc1c [RTL]
- Remove qsort, its already in crt.
- Fix a number of MSVC/64 bit issues

svn path=/trunk/; revision=53776
2011-09-20 17:33:51 +00:00
Eric Kohl dd81be1f25 [RTL]
Fix the overly complicated and buggy implementation of RtlIsDosDeviceName_Ustr based on the simple pre-r52687 implementation of RtlIsDosDeviceName_U. This fixes 14(!) wine tests.

svn path=/trunk/; revision=53726
2011-09-17 00:55:02 +00:00
Thomas Faber 758fe19cd0 [NTOSKRNL][RTL][DOC]
- Fix incorrect loop boundaries in the ARM version of MmCreateProcessAddressSpace. Spotted by Vincenzo Cotugno and cppcheck
- Correct outdated wineimport.cmd URL in README.WINE
- Assorted spelling and readability fixes

svn path=/trunk/; revision=53688
2011-09-11 11:47:28 +00:00
Cameron Gutman e399b918e2 [RTL]
- Fix a couple of potential null pointer accesses

svn path=/trunk/; revision=52746
2011-07-20 18:38:13 +00:00
Cameron Gutman c4097c4a0c [RTL]
- Validate parameters passed into path functions

svn path=/trunk/; revision=52744
2011-07-20 17:59:16 +00:00
Cameron Gutman bbbb4ccf95 [RTL]
- Fix the string length calculation for the partial name
- Fixes the 2nd stage regression

svn path=/trunk/; revision=52733
2011-07-20 07:11:38 +00:00
Cameron Gutman d559321dff [RTL]
- Fix returning relative path names for path API calls using RtlpDosPathNameToRelativeNtPathName_Ustr on the backend

svn path=/trunk/; revision=52732
2011-07-20 05:34:33 +00:00
Alex Ionescu 1fdc23fa32 [RTL]: Makes sure there is a curdir handle.
svn path=/trunk/; revision=52728
2011-07-18 13:46:43 +00:00
Alex Ionescu 16163bbc4a [RTL]: Fix a typo in RtlpDosPathNameToRelativeNtPathName_Ustr thanks so smiley.
[RTL]: Implement the unimplemented corner case based on the old ReactOS code.

svn path=/trunk/; revision=52727
2011-07-18 13:45:32 +00:00
Alex Ionescu b328750c1b [RTL]: Implement RtlDosPathNameToRelativeNtPathName_U_WithStatus, RtlDosPathNameToRelativeNtPathName_U, RtlDosPathNameToNtPathName_U_WithStatus.
[RTL]: Reimplement RtlDosPathNameToNtPathName_U to use UNICODE_STRING semantics.
[RTL]: Fix RtlGetFullPathName_Ustr.
[RTL]: RtlGetFullPathName_U remains based on the legacy non-UNICODE_STRING mechanism, but it's too complex to attempt changing for now.

svn path=/trunk/; revision=52726
2011-07-18 13:22:09 +00:00
Alex Ionescu 094e863db8 [RTL]: Implement RtlGetFullPathName_Ustr, not yet used.
[RTL]: Simplify RtlDosSearchPath_U by not using a temporary "char" value, and just reading straight from the string buffer.

svn path=/trunk/; revision=52713
2011-07-17 13:15:50 +00:00
Jérôme Gardou e216eae70a [RTL]
- fix RtlDosSearchPath_U : do not alter filename while searching for file extension

svn path=/trunk/; revision=52707
2011-07-17 10:51:42 +00:00
Alex Ionescu 4f4b4e848c [RTL]: Cleanup, no code changes.
svn path=/trunk/; revision=52700
2011-07-16 19:03:50 +00:00
Alex Ionescu 3aab9ff5f6 [NDK]: Add RtlReleaseRelativeName.
[RTL]: Re-implement RtlDosSearchPath_U using new path functions from past commits. Uses correct behavior with RtlDoesFileExists (for relative paths, return success when file is locked -- for absolute paths, do not!). Also uses a more optimized path loop that does not alloc/realloc/free heap continously (only one heap allocation is used).

svn path=/trunk/; revision=52699
2011-07-16 18:58:52 +00:00
Alex Ionescu b9aaadf5ce [RTL]: Fix RtlDoesFileExists_UEx, thanks to ThFabba.
svn path=/trunk/; revision=52690
2011-07-15 21:59:06 +00:00
Alex Ionescu 60aa578875 [RTL]: Implement RtlIsDosDeviceName_Ustr and make RtlIsDosDeviceName use it. Uses UNICODE_STRING APIs everywhere and similar to the old implementation.
svn path=/trunk/; revision=52687
2011-07-15 13:08:43 +00:00
Alex Ionescu 048a29ec85 [KERNEL32/RTL]: Fix build.
svn path=/trunk/; revision=52686
2011-07-15 01:44:03 +00:00
Alex Ionescu a595971d83 [RTL]: Implement RtlDoesFileExists_UstrEx, RtlDoesFileExists_UStr, RtlDoesFileExists_UEx.
[RTL]: Make RtlDoesFileExists_UStrEx use the new RTL_RELATIVE_NAME structure and also support whether or not sharing violations should return success or not.
[RTL]: For now, use the old RtlDosPathNameToNtPathName API instead of the newer one.

svn path=/trunk/; revision=52685
2011-07-15 01:29:10 +00:00
Alex Ionescu 42cac56e9d [RTL]: Fix prototype of RtlDosPathNameToNtPathName_U and fix code to match the new prototype.
[NDK]: Add RTL_RELATIVE_NAME_U which is the Windows 2003+ structure used instead of CURDIR for all relative path APIs.

svn path=/trunk/; revision=52681
2011-07-14 15:33:29 +00:00