/* INCLUDES ******************************************************************/
-#include <ddk/ntddk.h>
-#include <ntdll/rtl.h>
-#include <windows.h>
-#include <string.h>
-#include <wchar.h>
+#include <k32.h>
#define NDEBUG
#include <kernel32/kernel32.h>
-#include <kernel32/error.h>
/* FUNCTIONS *****************************************************************/
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
CreateDirectoryA (
lpSecurityAttributes);
}
+
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
CreateDirectoryExA (
}
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
CreateDirectoryW (
}
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
CreateDirectoryExW (
DPRINT ("lpTemplateDirectory %S lpNewDirectory %S lpSecurityAttributes %p\n",
lpTemplateDirectory, lpNewDirectory, lpSecurityAttributes);
+
+ // Can't create empty directory
+ if(lpNewDirectory == NULL || *lpNewDirectory == 0)
+ {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return FALSE;
+ }
if (lpTemplateDirectory != NULL && *lpTemplateDirectory != 0)
{
}
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
RemoveDirectoryA (
}
+/*
+ * @implemented
+ */
WINBOOL
STDCALL
RemoveDirectoryW (
}
+/*
+ * @implemented
+ */
DWORD
STDCALL
GetFullPathNameA (
PWSTR FilePartU;
ULONG BufferLength;
ULONG Offset;
+ DWORD FullNameLen;
DPRINT("GetFullPathNameA(lpFileName %s, nBufferLength %d, lpBuffer %p, "
"lpFilePart %p)\n",lpFileName,nBufferLength,lpBuffer,lpFilePart);
FullName.Length = 0;
FullName.Buffer = lpBuffer;
- RtlUnicodeStringToAnsiString (&FullName,
- &FullNameU,
- FALSE);
-
- if (lpFilePart != NULL)
+ if (lpBuffer != NULL )
{
- Offset = (ULONG)(FilePartU - FullNameU.Buffer);
- *lpFilePart = FullName.Buffer + Offset;
+ RtlUnicodeStringToAnsiString (&FullName,
+ &FullNameU,
+ FALSE);
+
+ if (lpFilePart != NULL)
+ {
+ Offset = (ULONG)(FilePartU - FullNameU.Buffer);
+ *lpFilePart = FullName.Buffer + Offset;
+ }
}
+ FullNameLen = FullNameU.Length / sizeof(WCHAR);
+
RtlFreeHeap (RtlGetProcessHeap (),
0,
FullNameU.Buffer);
DPRINT("lpBuffer %s lpFilePart %s Length %ld\n",
lpBuffer, lpFilePart, FullName.Length);
- return FullName.Length;
+ return FullNameLen;
}
+/*
+ * @implemented
+ */
DWORD
STDCALL
GetFullPathNameW (
}
+/*
+ * @unimplemented
+ */
DWORD
STDCALL
GetShortPathNameA (
}
+/*
+ * @unimplemented
+ */
DWORD
STDCALL
GetShortPathNameW (
}
+/*
+ * @implemented
+ */
DWORD
STDCALL
SearchPathA (
}
+/*
+ * @implemented
+ */
DWORD
STDCALL
SearchPathW (
len * sizeof(WCHAR));
if (EnvironmentBufferW == NULL)
{
+ SetLastError(ERROR_OUTOFMEMORY);
return 0;
}
lpPath = EnvironmentBufferW;
}
- retCode = RtlDosSearchPath_U ((PWCHAR)lpPath, (PWCHAR)lpFileName, (PWCHAR)lpExtension, nBufferLength, lpBuffer, lpFilePart);
+ retCode = RtlDosSearchPath_U ((PWCHAR)lpPath, (PWCHAR)lpFileName, (PWCHAR)lpExtension,
+ nBufferLength * sizeof(WCHAR), lpBuffer, lpFilePart);
if (EnvironmentBufferW != NULL)
{
RtlFreeHeap(GetProcessHeap(), 0, EnvironmentBufferW);
}
- return retCode;
+ if (retCode == 0)
+ {
+ SetLastError(ERROR_FILE_NOT_FOUND);
+ }
+ return retCode / sizeof(WCHAR);
}
/* EOF */