Diff for /np2/win9x/dosio.cpp between versions 1.9 and 1.13

version 1.9, 2005/02/12 12:13:59 version 1.13, 2005/04/01 15:35:49
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "oemtext.h"
 #include        "dosio.h"  #include        "dosio.h"
   
   
Line 11  static OEMCHAR *curfilep = curpath; Line 12  static OEMCHAR *curfilep = curpath;
 void dosio_init(void) { }  void dosio_init(void) { }
 void dosio_term(void) { }  void dosio_term(void) { }
   
   
                                                                                         // ファイル操作                                                                                          // ファイル操作
 FILEH DOSIOCALL file_open(const OEMCHAR *path) {  FILEH DOSIOCALL file_open(const OEMCHAR *path) {
   
         FILEH   ret;  #if defined(OEMCHAR_SAME_TCHAR)
           const TCHAR *tcharpath = path;
         if ((ret = CreateFile(path, GENERIC_READ | GENERIC_WRITE,  #else
                                                 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))          TCHAR tcharpath[MAX_PATH];
                                                                                                         == INVALID_HANDLE_VALUE) {          oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
                 if ((ret = CreateFile(path, GENERIC_READ,  #endif
                                                 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))          FILEH ret;
                                                                                                         == INVALID_HANDLE_VALUE) {          ret = CreateFile(tcharpath, GENERIC_READ | GENERIC_WRITE,
                                                   0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret == INVALID_HANDLE_VALUE) {
                   ret = CreateFile(tcharpath, GENERIC_READ,
                                                   0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
                   if (ret == INVALID_HANDLE_VALUE) {
                         return(FILEH_INVALID);                          return(FILEH_INVALID);
                 }                  }
         }          }
Line 30  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(OEMCHAR_SAME_TCHAR)
           const TCHAR *tcharpath = path;
         if ((ret = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, 0,  #else
                                                                 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))          TCHAR tcharpath[MAX_PATH];
                                                                                                         == INVALID_HANDLE_VALUE) {          oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           FILEH ret;
           ret = CreateFile(tcharpath, GENERIC_READ, FILE_SHARE_READ, 0,
                                                                   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret != INVALID_HANDLE_VALUE) {
                   return(ret);
           }
           else {
                 return(FILEH_INVALID);                  return(FILEH_INVALID);
         }          }
         return(ret);  
 }  }
   
 FILEH DOSIOCALL file_create(const OEMCHAR *path) {  FILEH DOSIOCALL file_create(const OEMCHAR *path) {
   
         FILEH   ret;  #if defined(OEMCHAR_SAME_TCHAR)
           const TCHAR *tcharpath = path;
         if ((ret = CreateFile(path, GENERIC_READ | GENERIC_WRITE,  #else
                                                  0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL))          TCHAR tcharpath[MAX_PATH];
                                                                                         == INVALID_HANDLE_VALUE) {          oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           FILEH ret;
           ret = CreateFile(tcharpath, GENERIC_READ | GENERIC_WRITE,
                                                    0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
           if (ret != INVALID_HANDLE_VALUE) {
                   return(ret);
           }
           else {
                 return(FILEH_INVALID);                  return(FILEH_INVALID);
         }          }
         return(ret);  
 }  }
   
 long DOSIOCALL file_seek(FILEH handle, long pointer, int method) {  long DOSIOCALL file_seek(FILEH handle, long pointer, int method) {
Line 93  UINT DOSIOCALL file_getsize(FILEH handle Line 114  UINT DOSIOCALL file_getsize(FILEH handle
         return(GetFileSize(handle, NULL));          return(GetFileSize(handle, NULL));
 }  }
   
 static BRESULT DOSIOCALL cnvdatetime(FILETIME *file, DOSDATE *dosdate, DOSTIME *dostime) {  static BRESULT DOSIOCALL cnvdatetime(const FILETIME *file,
                                                                                   DOSDATE *dosdate, DOSTIME *dostime) {
   
         FILETIME        localtime;          FILETIME        localtime;
         SYSTEMTIME      systime;          SYSTEMTIME      systime;
Line 115  static BRESULT DOSIOCALL cnvdatetime(FIL Line 137  static BRESULT DOSIOCALL cnvdatetime(FIL
         return(SUCCESS);          return(SUCCESS);
 }  }
   
 short DOSIOCALL file_getdatetime(FILEH handle, DOSDATE *dosdate, DOSTIME *dostime) {  short DOSIOCALL file_getdatetime(FILEH handle,
                                                                                   DOSDATE *dosdate, DOSTIME *dostime) {
   
         FILETIME        lastwrite;          FILETIME        lastwrite;
   
Line 128  short DOSIOCALL file_getdatetime(FILEH h Line 151  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(OEMCHAR_SAME_TCHAR)
           const TCHAR *tcharpath = path;
   #else
           TCHAR tcharpath[MAX_PATH];
           oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           return(DeleteFile(tcharpath)?0:-1);
 }  }
   
 short DOSIOCALL file_attr(const OEMCHAR *path) {  short DOSIOCALL file_attr(const OEMCHAR *path) {
   
         return((short)GetFileAttributes(path));  #if defined(OEMCHAR_SAME_TCHAR)
   const TCHAR *tcharpath = path;
   #else
           TCHAR tcharpath[MAX_PATH];
           oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           return((short)GetFileAttributes(tcharpath));
 }  }
   
 short DOSIOCALL file_dircreate(const OEMCHAR *path) {  short DOSIOCALL file_dircreate(const OEMCHAR *path) {
   
         return(CreateDirectory(path, NULL)?0:-1);  #if defined(OEMCHAR_SAME_TCHAR)
           const TCHAR *tcharpath = path;
   #else
           TCHAR tcharpath[MAX_PATH];
           oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           return(CreateDirectory(tcharpath, NULL)?0:-1);
 }  }
   
   
Line 152  void DOSIOCALL file_setcd(const OEMCHAR  Line 193  void DOSIOCALL file_setcd(const OEMCHAR 
   
 OEMCHAR * DOSIOCALL file_getcd(const OEMCHAR *path) {  OEMCHAR * DOSIOCALL file_getcd(const OEMCHAR *path) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         return(curpath);          return(curpath);
 }  }
   
 FILEH DOSIOCALL file_open_c(const OEMCHAR *path) {  FILEH DOSIOCALL file_open_c(const OEMCHAR *path) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - 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) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - 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) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - 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) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - 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) {
   
         file_cpyname(curfilep, path, sizeof(curpath) - (curfilep - curpath));          file_cpyname(curfilep, path, NELEMENTS(curpath) - (curfilep - curpath));
         return(file_attr(curpath));          return(file_attr(curpath));
 }  }
   
   
   // ----
   
   #if !defined(_WIN32_WCE)
   static const TCHAR str_selfdir[] = _T(".");
   static const TCHAR str_parentdir[] = _T("..");
   #endif
   static const OEMCHAR str_wildcard[] = OEMTEXT("*.*");
   
 static BRESULT DOSIOCALL setflist(WIN32_FIND_DATA *w32fd, FLINFO *fli) {  static BRESULT DOSIOCALL setflist(WIN32_FIND_DATA *w32fd, FLINFO *fli) {
   
 #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, str_selfdir)) ||
                 (!file_cmpname(w32fd->cFileName, OEMTEXT(".."))))) {                  (!lstrcmp(w32fd->cFileName, str_parentdir)))) {
                 return(FAILURE);                  return(FAILURE);
         }          }
 #endif  #endif
Line 200  static BRESULT DOSIOCALL setflist(WIN32_ Line 249  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);
         milstr_ncpy(fli->path, w32fd->cFileName, NELEMENTS(fli->path));  #if defined(OEMCHAR_SAME_TCHAR)
           file_cpyname(fli->path, w32fd->cFileName, NELEMENTS(fli->path));
   #else
           tchartooem(fli->path, NELEMENTS(fli->path), w32fd->cFileName, (UINT)-1);
   #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];          OEMCHAR path[MAX_PATH];
         HANDLE                  hdl;          file_cpyname(path, dir, NELEMENTS(path));
         WIN32_FIND_DATA w32fd;  
   
         milstr_ncpy(path, dir, NELEMENTS(path));  
         file_setseparator(path, NELEMENTS(path));          file_setseparator(path, NELEMENTS(path));
         milstr_ncat(path, OEMTEXT("*.*"), NELEMENTS(path));          file_catname(path, str_wildcard, NELEMENTS(path));
         TRACEOUT(("file_list1st %s", path));          TRACEOUT(("file_list1st %s", path));
         hdl = FindFirstFile(path, &w32fd);  #if defined(OEMCHAR_SAME_TCHAR)
   const TCHAR *tcharpath = path;
   #else
           TCHAR tcharpath[MAX_PATH];
           oemtotchar(tcharpath, NELEMENTS(tcharpath), path, (UINT)-1);
   #endif
           HANDLE hdl;
           WIN32_FIND_DATA w32fd;
           hdl = FindFirstFile(tcharpath, &w32fd);
         if (hdl != INVALID_HANDLE_VALUE) {          if (hdl != INVALID_HANDLE_VALUE) {
                 do {                  do {
                         if (setflist(&w32fd, fli) == SUCCESS) {                          if (setflist(&w32fd, fli) == SUCCESS) {
Line 251  const OEMCHAR *ret; Line 309  const OEMCHAR *ret;
   
         ret = path;          ret = path;
         while((csize = milstr_charsize(path)) != 0) {          while((csize = milstr_charsize(path)) != 0) {
                 if (csize == 1) {                  if ((csize == 1) &&
                         if ((*path == '\\') || (*path == '/') || (*path == ':')) {                          ((*path == '\\') || (*path == '/') || (*path == ':'))) {
                                 ret = path + 1;                          ret = path + 1;
                         }  
                 }                  }
                 path += csize;                  path += csize;
         }          }
Line 278  const OEMCHAR *q; Line 335  const OEMCHAR *q;
         p = file_getname(path);          p = file_getname(path);
         q = NULL;          q = NULL;
         while((csize = milstr_charsize(p)) != 0) {          while((csize = milstr_charsize(p)) != 0) {
                 if ((csize == 1) && (*path == '.')) {                  if ((csize == 1) && (*p == '.')) {
                         q = p + 1;                          q = p + 1;
                 }                  }
                 p += csize;                  p += csize;
Line 298  void DOSIOCALL file_cutext(OEMCHAR *path Line 355  void DOSIOCALL file_cutext(OEMCHAR *path
         p = file_getname(path);          p = file_getname(path);
         q = NULL;          q = NULL;
         while((csize = milstr_charsize(p)) != 0) {          while((csize = milstr_charsize(p)) != 0) {
                 if ((csize == 1) && (*path == '.')) {                  if ((csize == 1) && (*p == '.')) {
                         q = p;                          q = p;
                 }                  }
                 p += csize;                  p += csize;

Removed from v.1.9  
changed lines
  Added in v.1.13


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