home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / c / snippets / fscrnsav.c < prev    next >
C/C++ Source or Header  |  1995-03-13  |  2KB  |  84 lines

  1. /*
  2. **  Portable PC screen functions
  3. **  Public domain by Bob Stout
  4. **  Uses SCRNMACS.H and HUGEREAD.C, also from SNIPPETS
  5. */
  6.  
  7. #include <stdio.h>
  8. #include "scrnmacs.h"         /* Also in SNIPPETS     */
  9.  
  10. typedef enum { ERROR = -1, SUCCESS} RESULT;
  11.  
  12. /*
  13. **  Prototypes from HUGEREAD.C, also in SNIPPETS
  14. */
  15.  
  16. long hugefread(FILE *fp, char FAR *buf, long size);
  17. long hugefwrite(FILE *fp, char FAR *buf, long size);
  18.  
  19. /*
  20. **  Save the text screen to a file
  21. */
  22.  
  23. RESULT fSaveScrn(const char *fname)
  24. {
  25.       FILE *file;
  26.  
  27.       if (NULL == (file = fopen(fname, "wb")))
  28.             return ERROR;
  29.       if ((long)SCRNBYTES != hugefwrite(file, (unsigned char FAR *)SCRBUFF,
  30.             (long)SCRNBYTES))
  31.       {
  32.             return ERROR;
  33.       }
  34.       fclose(file);
  35.       return SUCCESS;
  36. }
  37.  
  38. /*
  39. **  Restore the text screen from a file
  40. */
  41.  
  42. RESULT fRestoreScrn(const char *fname)
  43. {
  44.       FILE *file;
  45.  
  46.       if (NULL == (file = fopen(fname, "rb")))
  47.             return ERROR;
  48.       if ((long)SCRNBYTES != hugefread(file, (unsigned char FAR *)SCRBUFF,
  49.             (long)SCRNBYTES))
  50.       {
  51.             return ERROR;
  52.       }
  53.       fclose(file);
  54.       return SUCCESS;
  55. }
  56.  
  57. #ifdef TEST
  58.  
  59. #include <conio.h>
  60.  
  61. /*
  62. **  Run this test with a screenful of misc. stuff
  63. **
  64. **  Note that this test requires that VIDPORT.C and SCROLL.C, also from
  65. **  SNIPPETS, be linked.
  66. */
  67.  
  68. main()
  69. {
  70.       if (ERROR == fSaveScrn("fscrnsav.tst"))
  71.       {
  72.             puts("Unable to save the screen");
  73.             return 1;
  74.       }
  75.       ClrScrn(7);
  76.       GotoXY(0, 0);
  77.       fputs("fClrScrn() tested", stderr);
  78.       fputs("\nHit any key to continue...\n", stderr);
  79.       getch();
  80.       fRestoreScrn("fscrnsav.tst");
  81. }
  82.  
  83. #endif
  84.