home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / LNF / LNFPACK.C < prev    next >
C/C++ Source or Header  |  1990-12-15  |  2KB  |  74 lines

  1. /*
  2.     lnfpack.c
  3.  
  4.     % A utility for removing free blocks and session info from screen files.
  5.  
  6.     works at the bfile level
  7.  
  8.     Look & Feel 3.2
  9.     Copyright (c) 1989-1990, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18.  
  19. #include "cscape.h"
  20. #include "sfile.h"
  21.  
  22. #define TEMPNAME "lnfpack.tmp"
  23.  
  24. int main(int argc, char *argv[]);    /* Prototype for main */
  25.  
  26. int main(int argc, char *argv[])
  27. {
  28.     int j;
  29.     unsigned int len;
  30.     char *bname;
  31.     bfile_type bfile, destfile;
  32.     char buffer[1001];
  33.  
  34.     if (argc <= 1
  35.     || *argv[1] == '?' 
  36.     || ((*argv[1] == '-' || *argv[1] == '/') && *(argv[1]+1) == '?')) {
  37.  
  38.         printf("\npacks .lnf files");
  39.         exit(0);
  40.     }
  41.  
  42.     if ((destfile = bfile_Open(TEMPNAME, 500, "LNFVER 3.2")) == NULL) {
  43.         printf("\nError opening temporay file.\n");
  44.         exit(1);
  45.     }
  46.  
  47.     if ((bfile = bfile_Open(argv[1], 500, "LNFVER 3.2")) != NULL) {
  48.  
  49.         for (j = 0; j < bfile_GetDirSize(bfile); j++) {
  50.  
  51.             if (*(bname = bfile_GetDirName(bfile, j)) == '_') {
  52.                 /* strip off system working areas */
  53.                 continue;
  54.             }
  55.             bfile_Find(bfile, bname, 0);
  56.             bfile_Find(destfile, bname, bfile_GetID(bfile, j));
  57.  
  58.             while ((len = bfile_Read(bfile, buffer, 1000)) > 0) {
  59.                 bfile_Write(destfile, buffer, len);
  60.             }
  61.         }
  62.         bfile_Close(bfile);
  63.         bfile_Close(destfile);
  64.  
  65.         remove(argv[1]);
  66.         rename(TEMPNAME, argv[1]);
  67.     }
  68.     else if (destfile != NULL) {
  69.         bfile_Close(destfile);
  70.     }
  71.  
  72.     return(0);
  73. }
  74.