Changeset 3347 for trunk/src/kernel32/directory.cpp
- Timestamp:
- Apr 7, 2000, 9:43:46 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/directory.cpp
r3005 r3347 1 /* $Id: directory.cpp,v 1.1 7 2000-03-04 19:52:35sandervl Exp $ */1 /* $Id: directory.cpp,v 1.18 2000-04-07 19:43:46 sandervl Exp $ */ 2 2 3 3 /* … … 220 220 * Variables : 221 221 * Result : 222 * Remark : 222 * Remark : Should return length of system dir even if lpBuffer == NULL 223 223 * Status : 224 224 * … … 230 230 { 231 231 LPSTR lpstrEnv = getenv("WIN32.DIR.SYSTEM"); /* query environment */ 232 CHAR buf[255]; 232 233 233 234 if (lpstrEnv != NULL) 234 235 { 235 lstrcpynA(lpBuffer, /* copy environment variable to buffer */ 236 lpstrEnv,237 uSize); 238 return (lstrlenA(lpBuffer)); /* return number of copies bytes */236 if(lpBuffer) 237 lstrcpynA(lpBuffer, lpstrEnv, uSize); 238 239 return (lstrlenA(lpstrEnv)); /* return number of copies bytes */ 239 240 } 240 241 else … … 242 243 int len; 243 244 244 len = ODIN_PROFILE_GetOdinIniString(ODINDIRECTORIES,"SYSTEM","", lpBuffer,uSize);245 len = ODIN_PROFILE_GetOdinIniString(ODINDIRECTORIES,"SYSTEM","",buf,sizeof(buf)); 245 246 if (len > 2) { 246 if( lpBuffer[len-1] == '\\') {247 lpBuffer[len-1] = 0;247 if(buf[len-1] == '\\') { 248 buf[len-1] = 0; 248 249 len--; 249 250 } 251 if(lpBuffer) 252 lstrcpynA(lpBuffer, buf, uSize); 253 250 254 return len; 251 255 } 252 256 else {//SvL: Use path of kernel32.dll instead of calling Open32 api (which returns \OS2\SYSTEM) 253 lstrcpynA( lpBuffer, kernel32Path, uSize);254 len = lstrlenA( lpBuffer);;255 if( lpBuffer[len-1] == '\\') {256 lpBuffer[len-1] = 0;257 lstrcpynA(buf, kernel32Path, sizeof(buf)-1); 258 len = lstrlenA(buf);; 259 if(buf[len-1] == '\\') { 260 buf[len-1] = 0; 257 261 len--; 258 262 } 263 if(lpBuffer) 264 lstrcpynA(lpBuffer, buf, uSize); 259 265 return len; 260 266 } … … 269 275 * Variables : 270 276 * Result : 271 * Remark : 277 * Remark : Should return length of system dir even if lpBuffer == NULL 272 278 * Status : 273 279 * … … 278 284 UINT, uSize) 279 285 { 280 char *asciibuffer = (char *)malloc(uSize+1);286 char *asciibuffer = NULL; 281 287 UINT rc; 282 288 289 if(lpBuffer) 290 asciibuffer = (char *)malloc(uSize+1); 291 283 292 rc = GetSystemDirectoryA(asciibuffer, uSize); 284 if(rc) AsciiToUnicode(asciibuffer, lpBuffer); 285 free(asciibuffer); 293 if(rc && asciibuffer) 294 AsciiToUnicode(asciibuffer, lpBuffer); 295 296 if(asciibuffer) 297 free(asciibuffer); 286 298 return(rc); 287 299 } … … 294 306 * Variables : 295 307 * Result : 296 * Remark : 308 * Remark : Should return length of system dir even if lpBuffer == NULL 297 309 * Status : 298 310 * … … 304 316 { 305 317 LPSTR lpstrEnv = getenv("WIN32.DIR.WINDOWS"); /* query environment */ 318 CHAR buf[255]; 306 319 307 320 if (lpstrEnv != NULL) 308 321 { 309 lstrcpynA(lpBuffer, /* copy environment variable to buffer */ 310 lpstrEnv,311 uSize); 312 return (lstrlenA(lpBuffer)); /* return number of copies bytes */322 if(lpBuffer) 323 lstrcpynA(lpBuffer, lpstrEnv, uSize); 324 325 return (lstrlenA(lpstrEnv)); /* return number of copies bytes */ 313 326 } 314 327 else … … 316 329 int len; 317 330 318 len = ODIN_PROFILE_GetOdinIniString(ODINDIRECTORIES,"WINDOWS","", lpBuffer,uSize);331 len = ODIN_PROFILE_GetOdinIniString(ODINDIRECTORIES,"WINDOWS","",buf,sizeof(buf)); 319 332 if (len > 2) { 320 if( lpBuffer[len-1] == '\\') {321 lpBuffer[len-1] = 0;333 if(buf[len-1] == '\\') { 334 buf[len-1] = 0; 322 335 len--; 323 336 } 337 if(lpBuffer) 338 lstrcpynA(lpBuffer, buf, uSize); 339 324 340 return len; 325 341 } 326 342 else {//SvL: Use path of kernel32.dll instead of calling Open32 api (which returns \OS2\SYSTEM) 327 CHAR buf[255];328 343 329 344 lstrcpynA(buf, kernel32Path, sizeof(buf)-1); … … 331 346 O32_CreateDirectory(buf, NULL); 332 347 333 lstrcpynA(lpBuffer, buf, uSize); 334 len = lstrlenA(lpBuffer);; 335 if(lpBuffer[len-1] == '\\') { 336 lpBuffer[len-1] = 0; 348 len = lstrlenA(buf);; 349 if(buf[len-1] == '\\') { 350 buf[len-1] = 0; 337 351 len--; 338 352 } 353 if(lpBuffer) 354 lstrcpynA(lpBuffer, buf, uSize); 339 355 return len; 340 356 } … … 349 365 * Variables : 350 366 * Result : 351 * Remark : 367 * Remark : Should return length of system dir even if lpBuffer == NULL 352 368 * Status : 353 369 * … … 358 374 UINT, uSize) 359 375 { 360 char *asciibuffer = (char *)malloc(uSize+1);376 char *asciibuffer = NULL; 361 377 UINT rc; 362 378 379 if(lpBuffer) 380 asciibuffer = (char *)malloc(uSize+1); 381 363 382 rc = GetWindowsDirectoryA(asciibuffer, uSize); 364 if(rc) 365 AsciiToUnicode(asciibuffer, lpBuffer); 366 free(asciibuffer); 383 if(rc && asciibuffer) 384 AsciiToUnicode(asciibuffer, lpBuffer); 385 386 if(asciibuffer) 387 free(asciibuffer); 367 388 return(rc); 368 389 } … … 390 411 if(tmp[len -1] == '\\') 391 412 tmp[len -1] = 0; 413 414 dprintf(("RemoveDirectory %S", arg1)); 415 392 416 return O32_RemoveDirectory(tmp); 393 417 }
Note:
See TracChangeset
for help on using the changeset viewer.