home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / FSCRNSAV.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  2KB  |  86 lines

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