home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mnth0108.zip / Timur / files.c < prev    next >
Text File  |  1993-03-14  |  3KB  |  81 lines

  1. /* FILES.C - File I/O routines & dialog boxes window procedures
  2.  
  3. Copyright (c) 1993 Timur Tabi
  4. Copyright (c) 1993 Fasa Corporation
  5.  
  6. The following trademarks are the property of Fasa Corporation:
  7. BattleTech, CityTech, AeroTech, MechWarrior, BattleMech, and 'Mech.
  8. The use of these trademarks should not be construed as a challenge to these marks.
  9.  
  10. This new version of the code uses the WinFileDlg() API to handle the filename retrieval for the
  11. Load and Save features.
  12. */
  13.  
  14. #define INCL_DOSFILEMGR
  15. #define INCL_WINSTDFILE
  16. #include <os2.h>
  17. #include <string.h>
  18.  
  19. #include "header.h"
  20. #include "hexes.h"
  21.  
  22. static FILEDLG fdg;
  23. static HFILE hfile;
  24. static ULONG ulAction;
  25. static ULONG ulBytesRead;
  26.  
  27. #define LOAD_ACTION (OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW )
  28. #define SAVE_ACTION (OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS)
  29.  
  30. #define READ_ATTRS OPEN_FLAGS_NO_CACHE|              /* No need to take up precious cache space */ \
  31.                    OPEN_FLAGS_SEQUENTIAL|            /* One-time read, remember?                */ \
  32.                    OPEN_SHARE_DENYWRITE|             /* We don't want anyone changing it        */ \
  33.                    OPEN_ACCESS_READONLY              // To prevent accidentally writing to it
  34.  
  35. #define WRITE_ATTRS OPEN_FLAGS_NO_CACHE|              /* No need to take up precious cache space */ \
  36.                     OPEN_FLAGS_SEQUENTIAL|            /* One-time write, remember?               */ \
  37.                     OPEN_SHARE_DENYREADWRITE|         /* We don't want anyone touching it        */ \
  38.                     OPEN_ACCESS_WRITEONLY             // That's how we're gonna do it
  39.  
  40. void LoadMap(HWND hwnd) {
  41.   fdg.cbSize=sizeof(FILEDLG);
  42.   fdg.fl=FDS_CENTER | FDS_PRELOAD_VOLINFO | FDS_OPEN_DIALOG;
  43.   fdg.pszTitle="Load Map";
  44.   fdg.pszOKButton="Load";
  45.   fdg.pfnDlgProc=NULL;
  46.   fdg.pszIType=NULL;
  47.   fdg.papszITypeList=NULL;
  48.   fdg.pszIDrive=NULL;
  49.   fdg.papszIDriveList=NULL;
  50.   strcpy(fdg.szFullFile,"*");
  51.   fdg.papszIDriveList=NULL;
  52.  
  53.   if (!WinFileDlg(HWND_DESKTOP,hwnd,&fdg)) return;
  54.   if (fdg.lReturn != DID_OK) return;
  55.  
  56.   if (DosOpen(fdg.szFullFile,&hfile,&ulAction,0,FILE_NORMAL,LOAD_ACTION,READ_ATTRS,NULL)) return;
  57.   DosRead(hfile,amap,sizeof(amap),&ulBytesRead);
  58.   DosClose(hfile);
  59. }
  60.  
  61. void SaveMap(HWND hwnd) {
  62.   fdg.cbSize=sizeof(FILEDLG);
  63.   fdg.fl=FDS_CENTER | FDS_PRELOAD_VOLINFO | FDS_SAVEAS_DIALOG;
  64.   fdg.pszTitle="Save Map";
  65.   fdg.pszOKButton="Save";
  66.   fdg.pfnDlgProc=NULL;
  67.   fdg.pszIType=NULL;
  68.   fdg.papszITypeList=NULL;
  69.   fdg.pszIDrive=NULL;
  70.   fdg.papszIDriveList=NULL;
  71.   strcpy(fdg.szFullFile,"*");
  72.   fdg.papszIDriveList=NULL;
  73.  
  74.   if (!WinFileDlg(HWND_DESKTOP,hwnd,&fdg)) return;
  75.   if (fdg.lReturn != DID_OK) return;
  76.  
  77.   if (DosOpen(fdg.szFullFile,&hfile,&ulAction,sizeof(amap),FILE_NORMAL,SAVE_ACTION,WRITE_ATTRS,NULL)) return;
  78.   DosWrite(hfile,amap,sizeof(amap),&ulBytesRead);
  79.   DosClose(hfile);
  80. }
  81.