2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/kernel32/file/curdir.c
5 * PURPOSE: Current directory functions
6 * PROGRAMMER: David Welch (welch@mcmail.com)
12 /* INCLUDES ******************************************************************/
16 /* GLOBALS *******************************************************************/
19 WCHAR CurrentDirectoryW
[MAX_PATH
] = {0,};
21 WCHAR SystemDirectoryW
[MAX_PATH
];
23 WCHAR WindowsDirectoryW
[MAX_PATH
];
25 /* FUNCTIONS *****************************************************************/
27 DWORD STDCALL
GetCurrentDirectoryA(DWORD nBufferLength
, LPSTR lpBuffer
)
30 if ( lpBuffer
== NULL
)
32 uSize
= lstrlenW(CurrentDirectoryW
);
33 if ( nBufferLength
> uSize
) {
35 while ((CurrentDirectoryW
[i
])!=0 && i
< MAX_PATH
)
37 lpBuffer
[i
] = (unsigned char)CurrentDirectoryW
[i
];
45 DWORD STDCALL
GetCurrentDirectoryW(DWORD nBufferLength
, LPWSTR lpBuffer
)
49 dprintf("CurrentDirectoryW %w\n",CurrentDirectoryW
);
51 if ( lpBuffer
== NULL
)
53 uSize
= lstrlenW(CurrentDirectoryW
);
54 if ( nBufferLength
> uSize
)
55 lstrcpynW(lpBuffer
,CurrentDirectoryW
,uSize
);
57 dprintf("GetCurrentDirectoryW() = %w\n",lpBuffer
);
62 BOOL STDCALL
SetCurrentDirectoryA(LPCSTR lpPathName
)
66 dprintf("SetCurrentDirectoryA(lpPathName %s)\n",lpPathName
);
68 if ( lpPathName
== NULL
)
70 if ( lstrlenA(lpPathName
) > MAX_PATH
)
73 while ((lpPathName
[i
])!=0 && i
< MAX_PATH
)
75 CurrentDirectoryW
[i
] = (unsigned short)lpPathName
[i
];
78 CurrentDirectoryW
[i
] = 0;
80 dprintf("CurrentDirectoryW = '%w'\n",CurrentDirectoryW
);
92 if ( lpPathName
== NULL
)
94 if ( lstrlenW(lpPathName
) > MAX_PATH
)
96 lstrcpyW(CurrentDirectoryW
,lpPathName
);
107 WCHAR BufferW
[MAX_PATH
];
110 retCode
= GetTempPathW(nBufferLength
,BufferW
);
112 while ((BufferW
[i
])!=0 && i
< MAX_PATH
)
114 lpBuffer
[i
] = (unsigned char)BufferW
[i
];
130 WCHAR EnvironmentBufferW
[MAX_PATH
];
133 EnvironmentBufferW
[0] = 0;
134 i
= GetEnvironmentVariableW(L
"TMP",EnvironmentBufferW
,MAX_PATH
);
136 i
= GetEnvironmentVariableW(L
"TEMP",EnvironmentBufferW
,MAX_PATH
);
138 i
= GetCurrentDirectoryW(MAX_PATH
,EnvironmentBufferW
);
151 if ( lpBuffer
== NULL
)
153 uPathSize
= lstrlenW(SystemDirectoryW
);
154 if ( uSize
> uPathSize
) {
156 while ((SystemDirectoryW
[i
])!=0 && i
< uSize
)
158 lpBuffer
[i
] = (unsigned char)SystemDirectoryW
[i
];
169 GetWindowsDirectoryA(
175 if ( lpBuffer
== NULL
)
177 uPathSize
= lstrlenW(WindowsDirectoryW
);
178 if ( uSize
> uPathSize
) {
180 while ((WindowsDirectoryW
[i
])!=0 && i
< uSize
)
182 lpBuffer
[i
] = (unsigned char)WindowsDirectoryW
[i
];
198 if ( lpBuffer
== NULL
)
200 uPathSize
= lstrlenW(SystemDirectoryW
);
201 if ( uSize
> uPathSize
)
202 lstrcpynW(lpBuffer
,SystemDirectoryW
,uPathSize
);
210 GetWindowsDirectoryW(
216 if ( lpBuffer
== NULL
)
218 uPathSize
= lstrlenW(WindowsDirectoryW
);
219 if ( uSize
> uPathSize
);
220 lstrcpynW(lpBuffer
,WindowsDirectoryW
,uPathSize
);