Diff for /np2/win9x/dosio.cpp between versions 1.8 and 1.12

version 1.8, 2005/02/09 20:11:35 version 1.12, 2005/03/20 13:12:49
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "oemtext.h"
 #include        "dosio.h"  #include        "dosio.h"
   
   
 static  OEMCHAR curpath[MAX_PATH];  static  OEMCHAR curpath[MAX_PATH];
 static  OEMCHAR *curfilep = curpath;  static  OEMCHAR *curfilep = curpath;
   
 #define ISKANJI(c)      (((((c) ^ 0x20) - 0xa1) & 0xff) < 0x3c)  
   
   
 // ----  // ----
   
Line 16  void dosio_term(void) { } Line 15  void dosio_term(void) { }
                                                                                         // ファイル操作                                                                                          // ファイル操作
 FILEH DOSIOCALL file_open(const OEMCHAR *path) {  FILEH DOSIOCALL file_open(const OEMCHAR *path) {
   
         FILEH   ret;  
   
         if ((ret = CreateFile(path, GENERIC_READ | GENERIC_WRITE,  #if defined(OSLANG_UTF8)
                                                 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))          TCHAR tchr[MAX_PATH];
                                                                                                         == INVALID_HANDLE_VALUE) {          oemtotchar(tchr, NELEMENTS(tchr), path, -1);
                 if ((ret = CreateFile(path, GENERIC_READ,  #else
                                                 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))          const TCHAR *tchr = path;
                                                                                                         == INVALID_HANDLE_VALUE) {  #endif
           FILEH ret;
           ret = CreateFile(tchr, GENERIC_READ | GENERIC_WRITE,
                                                   0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret == INVALID_HANDLE_VALUE) {
                   ret = CreateFile(tchr, GENERIC_READ,
                                                   0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
                   if (ret == INVALID_HANDLE_VALUE) {
                         return(FILEH_INVALID);                          return(FILEH_INVALID);
                 }                  }
         }          }
Line 32  FILEH DOSIOCALL file_open(const OEMCHAR  Line 37  FILEH DOSIOCALL file_open(const OEMCHAR 
   
 FILEH DOSIOCALL file_open_rb(const OEMCHAR *path) {  FILEH DOSIOCALL file_open_rb(const OEMCHAR *path) {
   
         FILEH   ret;  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
         if ((ret = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, 0,          oemtotchar(tchr, NELEMENTS(tchr), path, -1);
                                                                 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))  #else
                                                                                                         == INVALID_HANDLE_VALUE) {          const TCHAR *tchr = path;
   #endif
           FILEH ret;
           ret = CreateFile(tchr, GENERIC_READ, FILE_SHARE_READ, 0,
                                                                   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret == INVALID_HANDLE_VALUE) {
                 return(FILEH_INVALID);                  return(FILEH_INVALID);
         }          }
         return(ret);          return(ret);
Line 44  FILEH DOSIOCALL file_open_rb(const OEMCH Line 54  FILEH DOSIOCALL file_open_rb(const OEMCH
   
 FILEH DOSIOCALL file_create(const OEMCHAR *path) {  FILEH DOSIOCALL file_create(const OEMCHAR *path) {
   
         FILEH   ret;  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
         if ((ret = CreateFile(path, GENERIC_READ | GENERIC_WRITE,          oemtotchar(tchr, NELEMENTS(tchr), path, -1);
                                                  0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL))  #else
                                                                                         == INVALID_HANDLE_VALUE) {          const TCHAR *tchr = path;
   #endif
           FILEH ret;
           ret = CreateFile(tchr, GENERIC_READ | GENERIC_WRITE,
                                                    0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret == INVALID_HANDLE_VALUE) {
                 return(FILEH_INVALID);                  return(FILEH_INVALID);
         }          }
         return(ret);          return(ret);
Line 130  short DOSIOCALL file_getdatetime(FILEH h Line 145  short DOSIOCALL file_getdatetime(FILEH h
   
 short DOSIOCALL file_delete(const OEMCHAR *path) {  short DOSIOCALL file_delete(const OEMCHAR *path) {
   
         return(DeleteFile(path)?0:-1);  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
           oemtotchar(tchr, NELEMENTS(tchr), path, -1);
   #else
           const TCHAR *tchr = path;
   #endif
           return(DeleteFile(tchr)?0:-1);
 }  }
   
 short DOSIOCALL file_attr(const OEMCHAR *path) {  short DOSIOCALL file_attr(const OEMCHAR *path) {
   
         return((short)GetFileAttributes(path));  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
           oemtotchar(tchr, NELEMENTS(tchr), path, -1);
   #else
           const TCHAR *tchr = path;
   #endif
           return((short)GetFileAttributes(tchr));
 }  }
   
 short DOSIOCALL file_dircreate(const OEMCHAR *path) {  short DOSIOCALL file_dircreate(const OEMCHAR *path) {
   
         return(CreateDirectory(path, NULL)?0:-1);  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
           oemtotchar(tchr, NELEMENTS(tchr), path, -1);
   #else
           const TCHAR *tchr = path;
   #endif
           return(CreateDirectory(tchr, NULL)?0:-1);
 }  }
   
   
Line 154  void DOSIOCALL file_setcd(const OEMCHAR  Line 187  void DOSIOCALL file_setcd(const OEMCHAR 
   
 OEMCHAR * DOSIOCALL file_getcd(const OEMCHAR *path) {  OEMCHAR * DOSIOCALL file_getcd(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(curpath);          return(curpath);
 }  }
   
 FILEH DOSIOCALL file_open_c(const OEMCHAR *path) {  FILEH DOSIOCALL file_open_c(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(file_open(curpath));          return(file_open(curpath));
 }  }
   
 FILEH DOSIOCALL file_open_rb_c(const OEMCHAR *path) {  FILEH DOSIOCALL file_open_rb_c(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(file_open_rb(curpath));          return(file_open_rb(curpath));
 }  }
   
 FILEH DOSIOCALL file_create_c(const OEMCHAR *path) {  FILEH DOSIOCALL file_create_c(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(file_create(curpath));          return(file_create(curpath));
 }  }
   
 short DOSIOCALL file_delete_c(const OEMCHAR *path) {  short DOSIOCALL file_delete_c(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(file_delete(curpath));          return(file_delete(curpath));
 }  }
   
 short DOSIOCALL file_attr_c(const OEMCHAR *path) {  short DOSIOCALL file_attr_c(const OEMCHAR *path) {
   
         *curfilep = '\0';          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         file_catname(curpath, path, NELEMENTS(curpath));  
         return(file_attr(curpath));          return(file_attr(curpath));
 }  }
   
Line 199  static BRESULT DOSIOCALL setflist(WIN32_ Line 226  static BRESULT DOSIOCALL setflist(WIN32_
   
 #if !defined(_WIN32_WCE)  #if !defined(_WIN32_WCE)
         if ((w32fd->dwFileAttributes & FILEATTR_DIRECTORY) &&          if ((w32fd->dwFileAttributes & FILEATTR_DIRECTORY) &&
                 ((!file_cmpname(w32fd->cFileName, OEMTEXT("."))) ||                  ((!lstrcmp(w32fd->cFileName, _T("."))) ||
                 (!file_cmpname(w32fd->cFileName, OEMTEXT(".."))))) {                  (!lstrcmp(w32fd->cFileName, _T(".."))))) {
                 return(FAILURE);                  return(FAILURE);
         }          }
 #endif  #endif
Line 208  static BRESULT DOSIOCALL setflist(WIN32_ Line 235  static BRESULT DOSIOCALL setflist(WIN32_
         fli->size = w32fd->nFileSizeLow;          fli->size = w32fd->nFileSizeLow;
         fli->attr = w32fd->dwFileAttributes;          fli->attr = w32fd->dwFileAttributes;
         cnvdatetime(&w32fd->ftLastWriteTime, &fli->date, &fli->time);          cnvdatetime(&w32fd->ftLastWriteTime, &fli->date, &fli->time);
   #if defined(OSLANG_UTF8)
           tchartooem(fli->path, NELEMENTS(fli->path), w32fd->cFileName, -1);
   #else
         milstr_ncpy(fli->path, w32fd->cFileName, NELEMENTS(fli->path));          milstr_ncpy(fli->path, w32fd->cFileName, NELEMENTS(fli->path));
   #endif
         return(SUCCESS);          return(SUCCESS);
 }  }
   
 FLISTH DOSIOCALL file_list1st(const OEMCHAR *dir, FLINFO *fli) {  FLISTH DOSIOCALL file_list1st(const OEMCHAR *dir, FLINFO *fli) {
   
         OEMCHAR                 path[MAX_PATH];  
         HANDLE                  hdl;  
         WIN32_FIND_DATA w32fd;  
   
           OEMCHAR path[MAX_PATH];
         milstr_ncpy(path, dir, NELEMENTS(path));          milstr_ncpy(path, dir, NELEMENTS(path));
         file_setseparator(path, NELEMENTS(path));          file_setseparator(path, NELEMENTS(path));
         milstr_ncat(path, OEMTEXT("*.*"), NELEMENTS(path));          milstr_ncat(path, OEMTEXT("*.*"), NELEMENTS(path));
         TRACEOUT(("file_list1st %s", path));          TRACEOUT(("file_list1st %s", path));
         hdl = FindFirstFile(path, &w32fd);  #if defined(OSLANG_UTF8)
           TCHAR tchr[MAX_PATH];
           oemtotchar(tchr, NELEMENTS(tchr), path, -1);
   #else
           const TCHAR *tchr = path;
   #endif
           HANDLE hdl;
           WIN32_FIND_DATA w32fd;
           hdl = FindFirstFile(tchr, &w32fd);
         if (hdl != INVALID_HANDLE_VALUE) {          if (hdl != INVALID_HANDLE_VALUE) {
                 do {                  do {
                         if (setflist(&w32fd, fli) == SUCCESS) {                          if (setflist(&w32fd, fli) == SUCCESS) {
Line 255  void DOSIOCALL file_listclose(FLISTH hdl Line 292  void DOSIOCALL file_listclose(FLISTH hdl
 OEMCHAR * DOSIOCALL file_getname(const OEMCHAR *path) {  OEMCHAR * DOSIOCALL file_getname(const OEMCHAR *path) {
   
 const OEMCHAR   *ret;  const OEMCHAR   *ret;
           int                     csize;
   
         ret = path;          ret = path;
         while(*path != '\0') {          while((csize = milstr_charsize(path)) != 0) {
                 if (!ISKANJI(*path)) {                  if (csize == 1) {
                         if ((*path == '\\') || (*path == '/') || (*path == ':')) {                          if ((*path == '\\') || (*path == '/') || (*path == ':')) {
                                 ret = path + 1;                                  ret = path + 1;
                         }                          }
                 }                  }
                 else {                  path += csize;
                         if (path[1]) {  
                                 path++;  
                         }  
                 }  
                 path++;  
         }          }
         return((OEMCHAR *)ret);          return((OEMCHAR *)ret);
 }  }
Line 285  OEMCHAR * DOSIOCALL file_getext(const OE Line 318  OEMCHAR * DOSIOCALL file_getext(const OE
   
 const OEMCHAR   *p;  const OEMCHAR   *p;
 const OEMCHAR   *q;  const OEMCHAR   *q;
           int                     csize;
   
         p = file_getname(path);          p = file_getname(path);
         q = NULL;          q = NULL;
           while((csize = milstr_charsize(p)) != 0) {
         while(*p != '\0') {                  if ((csize == 1) && (*p == '.')) {
                 if (!ISKANJI(*p)) {                          q = p + 1;
                         if (*p == '.') {  
                                 q = p + 1;  
                         }  
                 }  
                 else {  
                         if (p[1]) {  
                                 p++;  
                         }  
                 }                  }
                 p++;                  p += csize;
         }          }
         if (!q) {          if (q == NULL) {
                 q = p;                  q = p;
         }          }
         return((OEMCHAR *)q);          return((OEMCHAR *)q);
Line 312  void DOSIOCALL file_cutext(OEMCHAR *path Line 338  void DOSIOCALL file_cutext(OEMCHAR *path
   
         OEMCHAR *p;          OEMCHAR *p;
         OEMCHAR *q;          OEMCHAR *q;
           int             csize;
   
         p = file_getname(path);          p = file_getname(path);
         q = NULL;          q = NULL;
         while(*p != '\0') {          while((csize = milstr_charsize(p)) != 0) {
                 if (!ISKANJI(*p)) {                  if ((csize == 1) && (*p == '.')) {
                         if (*p == '.') {                          q = p;
                                 q = p;  
                         }  
                 }  
                 else {  
                         if (p[1]) {  
                                 p++;  
                         }  
                 }                  }
                 p++;                  p += csize;
         }          }
         if (q) {          if (q) {
                 *q = '\0';                  *q = '\0';

Removed from v.1.8  
changed lines
  Added in v.1.12


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