Changeset 551 for trunk/dll/dirs.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/dirs.c
r2 r551 14 14 #pragma alloc_text(MISC9,save_dir,save_dir2,switch_to) 15 15 16 17 APIRET save_dir2 (CHAR *curdir){16 APIRET save_dir2(CHAR * curdir) 17 { 18 18 19 19 CHAR *env = getenv("FM3INI"); 20 20 21 if (env && *env) {22 strncpy(curdir, env,CCHMAXPATH);21 if (env && *env) { 22 strncpy(curdir, env, CCHMAXPATH); 23 23 curdir[CCHMAXPATH - 1] = 0; 24 if (IsValidDir(curdir))24 if (IsValidDir(curdir)) 25 25 return 0; 26 26 else { 27 env = strrchr(curdir, '\\');28 if (env) {29 30 if(IsValidDir(curdir))31 27 env = strrchr(curdir, '\\'); 28 if (env) { 29 *env = 0; 30 if (IsValidDir(curdir)) 31 return 0; 32 32 } 33 33 } … … 36 36 } 37 37 38 APIRET save_dir(CHAR * curdir) 39 { 38 40 39 APIRET save_dir (CHAR *curdir) { 40 41 APIRET ret; 42 ULONG curdirlen,curdrive,drivemap; 41 APIRET ret; 42 ULONG curdirlen, curdrive, drivemap; 43 43 44 44 *curdir = 0; 45 ret = DosQCurDisk 46 curdirlen = CCHMAXPATH - 4; 47 ret += DosQCurDir 48 *curdir = (CHAR) ('@' + (INT)curdrive);45 ret = DosQCurDisk(&curdrive, &drivemap); 46 curdirlen = CCHMAXPATH - 4; /* NOTE!!!!!!!!! */ 47 ret += DosQCurDir(curdrive, &curdir[3], &curdirlen); 48 *curdir = (CHAR) ('@' + (INT) curdrive); 49 49 curdir[1] = ':'; 50 50 curdir[2] = '\\'; … … 52 52 } 53 53 54 APIRET switch_to(CHAR * s) 55 { 54 56 55 APIRET switch_to (CHAR *s) { 57 APIRET ret; 58 FILESTATUS3 fsa; 59 CHAR path[CCHMAXPATH + 1], *p; 56 60 57 APIRET ret; 58 FILESTATUS3 fsa; 59 CHAR path[CCHMAXPATH + 1],*p; 60 61 strcpy(path,s); 62 while(*path) { 63 ret = DosQueryPathInfo(path,FIL_STANDARD,&fsa, 64 (ULONG)sizeof(FILESTATUS3)); 65 if(ret || !(fsa.attrFile & FILE_DIRECTORY)) { 66 p = strrchr(path,'\\'); 67 if(p) 68 *p = 0; 61 strcpy(path, s); 62 while (*path) { 63 ret = DosQueryPathInfo(path, FIL_STANDARD, &fsa, 64 (ULONG) sizeof(FILESTATUS3)); 65 if (ret || !(fsa.attrFile & FILE_DIRECTORY)) { 66 p = strrchr(path, '\\'); 67 if (p) 68 *p = 0; 69 69 else { 70 strcpy(path,s);71 70 strcpy(path, s); 71 break; 72 72 } 73 73 } … … 75 75 break; 76 76 } 77 if (isalpha(*path) && path[1] == ':') {77 if (isalpha(*path) && path[1] == ':') { 78 78 79 ULONG curdrive, drivemap;79 ULONG curdrive, drivemap; 80 80 81 if (!DosQCurDisk(&curdrive, &drivemap)) {82 if ((CHAR)((CHAR)curdrive + '@') != (CHAR)toupper(*HomePath) &&83 (CHAR)((CHAR)curdrive + '@') != (CHAR)toupper(*path))84 81 if (!DosQCurDisk(&curdrive, &drivemap)) { 82 if ((CHAR) ((CHAR) curdrive + '@') != (CHAR) toupper(*HomePath) && 83 (CHAR) ((CHAR) curdrive + '@') != (CHAR) toupper(*path)) 84 DosChDir("\\"); 85 85 } 86 86 ret = DosSelectDisk(toupper(*path) - '@');
Note:
See TracChangeset
for help on using the changeset viewer.