Diff for /np2/generic/hostdrvs.c between versions 1.1 and 1.3

version 1.1, 2004/01/09 04:36:02 version 1.3, 2004/01/10 17:24:01
Line 5 Line 5
 #include        "hostdrvs.h"  #include        "hostdrvs.h"
   
   
 static const HDRVDIR hddroot = {"           ", 0, 0x10};  static const HDRVDIR hddroot = {"           ", 0, 0, 0x10, {0}, {0}};
   
 static const BYTE dospathchr[] = {  static const BYTE dospathchr[] = {
                         0xfa, 0x23,             // '&%$#"!  /.-,+*)(                          0xfa, 0x23,             // '&%$#"!  /.-,+*)(
Line 96  LISTARRAY hostdrvs_getpathlist(const cha Line 96  LISTARRAY hostdrvs_getpathlist(const cha
                                 break;                                  break;
                         }                          }
                         CopyMemory(hdd->di.fcbname, fcbname, 11);                          CopyMemory(hdd->di.fcbname, fcbname, 11);
                           hdd->di.caps = fli.caps;
                         hdd->di.size = fli.size;                          hdd->di.size = fli.size;
                         hdd->di.attr = fli.attr;                          hdd->di.attr = fli.attr;
                           hdd->di.date = fli.date;
                           hdd->di.time = fli.time;
                         milstr_ncpy(hdd->realname, fli.path, sizeof(hdd->realname));                          milstr_ncpy(hdd->realname, fli.path, sizeof(hdd->realname));
                           TRACEOUT(("%s -> %11s", fli.path, fcbname));
                 }                  }
         } while(file_listnext(flh, &fli) == SUCCESS);          } while(file_listnext(flh, &fli) == SUCCESS);
         if (listarray_getitems(ret) == 0) {          if (listarray_getitems(ret) == 0) {
Line 163  static char *dospath2fcb(char *fcbname,  Line 167  static char *dospath2fcb(char *fcbname, 
   
 BOOL hostdrvs_getrealpath(HDRVPATH *hdp, char *dospath) {  BOOL hostdrvs_getrealpath(HDRVPATH *hdp, char *dospath) {
   
         BOOL            ret;  
         char            path[MAX_PATH];          char            path[MAX_PATH];
         LISTARRAY       lst;          LISTARRAY       lst;
 const HDRVDIR   *di;  const HDRVDIR   *di;
         HDRVLST         hdl;          HDRVLST         hdl;
         char            fcbname[11];          char            fcbname[11];
   
         ret = SUCCESS;  
         file_cpyname(path, np2cfg.hdrvroot, sizeof(path));          file_cpyname(path, np2cfg.hdrvroot, sizeof(path));
         lst = NULL;          lst = NULL;
         di = &hddroot;          di = &hddroot;
Line 194  const HDRVDIR  *di; Line 196  const HDRVDIR  *di;
                 file_catname(path, hdl->realname, sizeof(path));                  file_catname(path, hdl->realname, sizeof(path));
                 di = &hdl->di;                  di = &hdl->di;
         }          }
         if (hdl) {          if (hdp) {
                 CopyMemory(&hdp->di, di, sizeof(HDRVDIR));                  CopyMemory(&hdp->di, di, sizeof(HDRVDIR));
                 file_cpyname(hdp->path, path, sizeof(hdp->path));                  file_cpyname(hdp->path, path, sizeof(hdp->path));
         }          }
Line 206  hdsgrp_err: Line 208  hdsgrp_err:
         return(FAILURE);          return(FAILURE);
 }  }
   
   BOOL hostdrvs_newrealpath(HDRVPATH *hdp, char *dospath) {
   
           char            path[MAX_PATH];
           LISTARRAY       lst;
           HDRVLST         hdl;
           char            fcbname[11];
           char            dosname[16];
           UINT            i;
           char            *p;
   
           file_cpyname(path, np2cfg.hdrvroot, sizeof(path));
           lst = NULL;
           if (dospath[0] != '\\') {
                   goto hdsgrp_err;
           }
           while(1) {
                   file_setseparator(path, sizeof(path));
                   dospath++;
                   if (dospath[0] == '\0') {
                           goto hdsgrp_err;
                   }
                   dospath = dospath2fcb(fcbname, dospath);
                   if (dospath[0] != '\\') {
                           break;
                   }
                   listarray_destroy(lst);
                   lst = hostdrvs_getpathlist(path);
                   hdl = (HDRVLST)listarray_enum(lst, hddsea, fcbname);
                   if ((hdl == NULL) || (!(hdl->di.attr & 0x10))) {
                           goto hdsgrp_err;
                   }
                   file_catname(path, hdl->realname, sizeof(path));
           }
           if (dospath[0] != '\0') {
                   goto hdsgrp_err;
           }
           listarray_destroy(lst);
           lst = hostdrvs_getpathlist(path);
           hdl = (HDRVLST)listarray_enum(lst, hddsea, fcbname);
           if (hdl != NULL) {
                   file_catname(path, hdl->realname, sizeof(path));
                   if (hdp) {
                           CopyMemory(&hdp->di, &hdl->di, sizeof(HDRVDIR));
                           file_cpyname(hdp->path, path, sizeof(hdp->path));
                   }
           }
           else {
                   p = dosname;
                   for (i=0; (i<8) && (fcbname[i] != ' '); i++) {
                           *p++ = fcbname[i];
                   }
                   if (fcbname[8] != ' ') {
                           *p++ = '.';
                           for (i=8; (i<11) && (fcbname[i] != ' '); i++) {
                                   *p++ = fcbname[i];
                           }
                   }
                   *p = '\0';
                   file_catname(path, dosname, sizeof(path));
                   if (hdp) {
                           CopyMemory(hdp->di.fcbname, fcbname, 11);
                           hdp->di.size = 0;
                           hdp->di.attr = 0;
                           file_cpyname(hdp->path, path, sizeof(hdp->path));
                   }
           }
           listarray_destroy(lst);
           return(SUCCESS);
   
   hdsgrp_err:
           listarray_destroy(lst);
           return(FAILURE);
   }
   
   
 // ----  // ----
   

Removed from v.1.1  
changed lines
  Added in v.1.3


RetroPC.NET-CVS <cvs@retropc.net>