home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / WIN_UTL2 / VULCAN.ZIP / VULSRC.ZIP / VCN.HPP < prev    next >
C/C++ Source or Header  |  1994-02-08  |  2KB  |  49 lines

  1. // VCN.HPP Part of VULCAN
  2. // Copyright (c) 1993 John Deurbrouck
  3. // must include time.h before this file
  4. #define SIGNATURE 0x6
  5. // INFLATION used to pump up raw file size to account for header data
  6. #define INFLATION 200L
  7.  
  8. #pragma pack(1)
  9. struct vcn_info{
  10. // following stored in each .VCN file and in VULCAN.VCN
  11.     long Index;
  12.     long FileSize; // refers to *original* file
  13.     unsigned FileDate,FileTime,Attrib; // refers to *original* file
  14.     int DispChar; // shows whether file is a part of a group
  15.     unsigned version:4, // 1 is first released version
  16.         compressed:4, // 0 for no compression, nbr indicates algorithm
  17.         signature:4; // signature should be SIGNATURE
  18.     char _far *FullName; // NULL if full data not yet read
  19.     // in file, unsigned byte is length incl. terminator, then data & NULL
  20. // following derived from directory entry or preceding
  21.     char _far *FileName; // may overlap with previous
  22.     unsigned StoredDate,StoredTime;
  23.     long StoredSize;
  24. };
  25. #pragma pack()
  26. extern int vcnSetup(void); // call after szTargetDirectory set
  27. extern void vcnGetFilenumberRange(long &bottom,long &top);
  28. extern int vcnGetInfo(long index,vcn_info &vcn);
  29. extern int vcnGetRecordAfter(long index,vcn_info &vcn); // next higher index
  30. extern int vcnGetRecordBefore(long index,vcn_info &vcn); // next lower index
  31. extern int vcnPutInfo(vcn_info &vcn); // does not write to disk, allocates
  32.                                       // space for new item if necessary
  33. extern void vcnDeleteOldestItem(); // deletes from disk too
  34. extern void vcnDeleteItem(long index,int delete_file=1); // from disk, queue
  35. extern long vcnGetTargetDiskBytes(); // takes free space into account
  36. extern long vcnGetActualDiskBytes(); // includes all VCN files
  37. extern int vcnAddBytesRequiresSomeDelete(long bytes);
  38. extern long vcnAdjustForClusterSize(long siz);
  39. extern void vcnForceToCorrectSize(long space=0L);
  40.     // delete old guys until within spec
  41.     // if adding a file, pass its size to prerelease room
  42. extern void vcnSaveVcnFile(void); // saves queue to disk
  43. extern void vcnDestroy(void); // saves queue to disk, frees memory
  44. extern int vcnWriteEntry(vcn_info& vcn,int fhandle,int* hsize=NULL);
  45.     // just vcn, filename. 0 failure, 1 success
  46.     // if hsize non-null, puts nbr bytes written there
  47. extern int vcnReadEntry(vcn_info* vcnp,char* filename,int fhandle);
  48.     // returns 1 for successful read, 0 for EOF, error or garbage
  49.