|
|
| version 1.4, 2004/01/10 17:36:07 | version 1.5, 2004/01/12 08:01:00 |
|---|---|
| Line 100 static BOOL hddsea(void *vpItem, void *v | Line 100 static BOOL hddsea(void *vpItem, void *v |
| return(FALSE); | return(FALSE); |
| } | } |
| static BOOL hddseadir(void *vpItem, void *vpArg) { | |
| if ((((HDRVLST)vpItem)->di.attr & 0x10) && | |
| (!memcmp(((HDRVLST)vpItem)->di.fcbname, vpArg, 11))) { | |
| return(TRUE); | |
| } | |
| return(FALSE); | |
| } | |
| LISTARRAY hostdrvs_getpathlist(const char *realpath) { | LISTARRAY hostdrvs_getpathlist(const char *realpath) { |
| FLISTH flh; | FLISTH flh; |
| Line 237 hdsgrp_err: | Line 246 hdsgrp_err: |
| return(FAILURE); | return(FAILURE); |
| } | } |
| BOOL hostdrvs_newrealpath(HDRVPATH *hdp, char *dospath) { | BOOL hostdrvs_getrealdir(char *path, int size, char *fcb, char *dospath) { |
| char path[MAX_PATH]; | |
| LISTARRAY lst; | LISTARRAY lst; |
| HDRVLST hdl; | HDRVLST hdl; |
| char fcbname[11]; | |
| char dosname[16]; | |
| UINT i; | |
| char *p; | |
| file_cpyname(path, np2cfg.hdrvroot, sizeof(path)); | file_cpyname(path, np2cfg.hdrvroot, size); |
| lst = NULL; | if (dospath[0] == '\\') { |
| if (dospath[0] != '\\') { | file_setseparator(path, size); |
| goto hdsgrp_err; | dospath++; |
| } | |
| else if (dospath[0] != '\0') { | |
| goto hdsgrd_err; | |
| } | } |
| while(1) { | while(1) { |
| file_setseparator(path, sizeof(path)); | dospath = dospath2fcb(fcb, dospath); |
| dospath++; | |
| if (dospath[0] == '\0') { | |
| goto hdsgrp_err; | |
| } | |
| dospath = dospath2fcb(fcbname, dospath); | |
| if (dospath[0] != '\\') { | if (dospath[0] != '\\') { |
| break; | break; |
| } | } |
| listarray_destroy(lst); | |
| lst = hostdrvs_getpathlist(path); | lst = hostdrvs_getpathlist(path); |
| hdl = (HDRVLST)listarray_enum(lst, hddsea, fcbname); | hdl = (HDRVLST)listarray_enum(lst, hddseadir, fcb); |
| if ((hdl == NULL) || (!(hdl->di.attr & 0x10))) { | if (hdl != NULL) { |
| goto hdsgrp_err; | file_catname(path, hdl->realname, size); |
| } | } |
| file_catname(path, hdl->realname, sizeof(path)); | listarray_destroy(lst); |
| if (hdl == NULL) { | |
| goto hdsgrd_err; | |
| } | |
| file_setseparator(path, size); | |
| dospath++; | |
| } | } |
| if (dospath[0] != '\0') { | if (dospath[0] != '\0') { |
| goto hdsgrp_err; | goto hdsgrd_err; |
| } | |
| return(SUCCESS); | |
| hdsgrd_err: | |
| return(FAILURE); | |
| } | |
| BOOL hostdrvs_newrealpath(HDRVPATH *hdp, char *dospath) { | |
| char path[MAX_PATH]; | |
| char fcb[11]; | |
| LISTARRAY lst; | |
| HDRVLST hdl; | |
| char dosname[16]; | |
| UINT i; | |
| char *p; | |
| if ((hostdrvs_getrealdir(path, sizeof(path), fcb, dospath) != SUCCESS) || | |
| (fcb[0] == ' ')) { | |
| return(FAILURE); | |
| } | } |
| listarray_destroy(lst); | |
| lst = hostdrvs_getpathlist(path); | lst = hostdrvs_getpathlist(path); |
| hdl = (HDRVLST)listarray_enum(lst, hddsea, fcbname); | hdl = (HDRVLST)listarray_enum(lst, hddsea, fcb); |
| if (hdl != NULL) { | if (hdl != NULL) { |
| file_catname(path, hdl->realname, sizeof(path)); | file_catname(path, hdl->realname, sizeof(path)); |
| if (hdp) { | if (hdp) { |
| Line 285 BOOL hostdrvs_newrealpath(HDRVPATH *hdp, | Line 310 BOOL hostdrvs_newrealpath(HDRVPATH *hdp, |
| } | } |
| else { | else { |
| p = dosname; | p = dosname; |
| for (i=0; (i<8) && (fcbname[i] != ' '); i++) { | for (i=0; (i<8) && (fcb[i] != ' '); i++) { |
| *p++ = fcbname[i]; | *p++ = fcb[i]; |
| } | } |
| if (fcbname[8] != ' ') { | if (fcb[8] != ' ') { |
| *p++ = '.'; | *p++ = '.'; |
| for (i=8; (i<11) && (fcbname[i] != ' '); i++) { | for (i=8; (i<11) && (fcb[i] != ' '); i++) { |
| *p++ = fcbname[i]; | *p++ = fcb[i]; |
| } | } |
| } | } |
| *p = '\0'; | *p = '\0'; |
| file_catname(path, dosname, sizeof(path)); | file_catname(path, dosname, sizeof(path)); |
| if (hdp) { | if (hdp) { |
| CopyMemory(hdp->di.fcbname, fcbname, 11); | ZeroMemory(&hdp->di, sizeof(hdp->di)); |
| hdp->di.size = 0; | CopyMemory(hdp->di.fcbname, fcb, 11); |
| hdp->di.attr = 0; | |
| file_cpyname(hdp->path, path, sizeof(hdp->path)); | file_cpyname(hdp->path, path, sizeof(hdp->path)); |
| } | } |
| } | } |
| listarray_destroy(lst); | listarray_destroy(lst); |
| return(SUCCESS); | return(SUCCESS); |
| hdsgrp_err: | |
| listarray_destroy(lst); | |
| return(FAILURE); | |
| } | } |