home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / catalog / pibcat17.arc / PIBCAT.GLO < prev    next >
Text File  |  1989-03-31  |  9KB  |  163 lines

  1. (*----------------------------------------------------------------------*)
  2. (*                   GLOBAL VARIABLE DEFINITIONS                        *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. USES                               (* DOS but not IBM PC specific *)
  6.    Dos;
  7.  
  8. TYPE
  9.  
  10.    AnyStr   = STRING[255]  (* Matches any string for parameter passing *);
  11.  
  12.    String2  = STRING[2]    (* Two character string *);
  13.  
  14.    String3  = STRING[3]    (* Three character string *);
  15.  
  16.    String8  = STRING[8]    (* Eight character string *);
  17.  
  18. (*----------------------------------------------------------------------*)
  19. (*                  Error types for library files                       *)
  20. (*----------------------------------------------------------------------*)
  21.  
  22. CONST
  23.    Open_Error    = 1               (* Error when opening file    *);
  24.    Format_Error  = 2               (* Library format bad         *);
  25.    End_Of_File   = 3               (* End of library directory   *);
  26.    Too_Many_Subs = 4               (* Too many nested subdirs    *);
  27.  
  28. (*----------------------------------------------------------------------*)
  29. (*                    Global program variables                          *)
  30. (*----------------------------------------------------------------------*)
  31.  
  32. CONST
  33.    FF_Char               : CHAR = ^L        (* Form feed character      *);
  34.  
  35. TYPE
  36.    Output_Buffer         = ARRAY[1..8192] OF CHAR;
  37.  
  38. TYPE
  39.    Condensed_Type        = ( Condensed_Columnar, Condensed_Comma );
  40.  
  41. VAR
  42.    Cat_Drive             : CHAR             (* Drive to catalog         *);
  43.    Output_File           : TEXT             (* File to receive output   *);
  44.    Output_File_Name      : AnyStr           (* Output file name         *);
  45.    Output_File_Buffer    : Output_Buffer    (* Output file buffer       *);
  46.    Status_File           : TEXT             (* Processing status lines  *);
  47.    Status_File_Name      : AnyStr           (* Status file name         *);
  48.    Do_Printer_Format     : BOOLEAN          (* Format for printer       *);
  49.    Left_Margin           : INTEGER          (* Left margin              *);
  50.    Page_Size             : INTEGER          (* Page size for output     *);
  51.    Expand_Libs           : BOOLEAN          (* TRUE to expand libraries *);
  52.    Expand_Libs_In        : BOOLEAN          (* TRUE to expand libraries *)
  53.                                             (* in main catalog list     *);
  54.    Left_Margin_String    : AnyStr           (* Blanks for left margin   *);
  55.    Library_Indent        : INTEGER          (* Indent for libraries     *);
  56.    User_Break            : BOOLEAN          (* TRUE if ^C stops liting  *);
  57.    Find_Spec             : AnyStr           (* File spec for listing    *);
  58.    Entry_Spec            : AnyStr           (* Entry spec for listing   *);
  59.    Entry_Name            : AnyStr           (* Name portion, entry spec *);
  60.    Entry_Ext             : AnyStr           (* Extension, entry spec    *);
  61.    Use_Entry_Spec        : BOOLEAN          (* TRUE to use entry spec   *);
  62.    Total_Files           : LONGINT          (* Total files found        *);
  63.    Total_Space           : LONGINT          (* Total space used         *);
  64.    Total_Entries         : LONGINT          (* Total entries found      *);
  65.    Total_ESpace          : LONGINT          (* Total space used, entries*);
  66.    Total_Dirs            : LONGINT          (* Total dirs scanned       *);
  67.    Page_Number           : INTEGER          (* Current page number      *);
  68.    Lines_Left            : INTEGER          (* Lines left on cur. page  *);
  69.    Help_Only             : BOOLEAN          (* TRUE if doing help only  *);
  70.    Read_Open_Mode        : BYTE             (* Open mode for reads      *);
  71.    Write_Open_Mode       : BYTE             (* Open mode for writes     *);
  72.    Show_Long_File_Names  : BOOLEAN          (* Show long file names     *);
  73.    Use_Share             : BOOLEAN          (* TRUE to use SHARE        *);
  74.    GMT_Difference        : LONGINT          (* # hours local time       *);
  75.                                             (* leads/lags GMT           *)
  76.    Use_Daylight_Savings  : BOOLEAN          (* TRUE to adjust times for *);
  77.                                             (* daylight savings in .DWC *)
  78.    Do_Condensed_Listing  : BOOLEAN          (* TRUE to produce condensed*);
  79.                                             (* format listing.          *)
  80.    Condensed_Listing_Type: Condensed_Type   (* Type of condensed listing*);
  81.    Volume_Label          : AnyStr           (* Disk volume label        *);
  82.    Condensed_Output_Line : AnyStr           (* Condensed output line    *);
  83.    Do_Blank_Line         : BOOLEAN          (* TRUE to print blank line *);
  84.    Current_Subdirectory  : AnyStr           (* Current subdirectory     *);
  85.    Open_For_Append       : BOOLEAN          (* Open output for append   *);
  86.  
  87. (*----------------------------------------------------------------------*)
  88. (*                  Titles and subtitles for paginated listings         *)
  89. (*----------------------------------------------------------------------*)
  90.  
  91. VAR
  92.    Volume_Title : AnyStr           (* Main title for entire listing *);
  93.    Subdir_Title : AnyStr           (* Current subdirectory title    *);
  94.    File_Title   : AnyStr           (* Current library file if any   *);
  95.  
  96. (*----------------------------------------------------------------------*)
  97. (*                  Saved file names from nested directories            *)
  98. (*----------------------------------------------------------------------*)
  99.  
  100. CONST
  101.    MaxFiles              = 2047             (* Max files in one segment   *);
  102.    MaxSeg                = 360              (* Maximum # segments         *);
  103.    SegShift              = 11               (* 2 ** 11 = 2048             *);
  104.  
  105. TYPE
  106.  
  107.    Short_Dir_Record = RECORD
  108.                          File_Attr : BYTE        (* File attributes *);
  109.                          File_Time : LONGINT     (* Creation time   *);
  110.                          File_Size : LONGINT     (* Size in bytes   *);
  111.                          File_Name : STRING[12]  (* File name       *);
  112.                       END;
  113.  
  114.    File_Stack_Type  = ARRAY[0..MaxFiles] OF Short_Dir_Record;
  115.    File_Stack_Ptr   = ^File_Stack_Type;
  116.  
  117. VAR
  118.                                    (* List of files in current and all  *)
  119.                                    (* previous directories along path   *)
  120.                                    (* back to root directory.           *)
  121.                                    (*                                   *)
  122.                                    (* Since Turbo Pascal doesn't allow  *)
  123.                                    (* arrays to exceed 64K bytes in     *)
  124.                                    (* size, we will use a vector of     *)
  125.                                    (* pointers to simulate a long       *)
  126.                                    (* vector.  The size of each segment *)
  127.                                    (* is chosen to be a power of 2 so   *)
  128.                                    (* that subscripts can be expressed  *)
  129.                                    (* using simple masking operations.  *)
  130.  
  131.    File_Stack  : ARRAY[ 0 .. MaxSeg ] OF File_Stack_Ptr;
  132.  
  133.    Stack_Alloc : INTEGER           (* # of stack entries allocated     *);
  134.  
  135.    File_Count  : WORD              (* # of files currently saved       *);
  136.  
  137. (*----------------------------------------------------------------------*)
  138. (*   Names of the months and days in each month for date conversions    *)
  139. (*----------------------------------------------------------------------*)
  140.  
  141. (* STRUCTURED *) CONST
  142.    Month_Names : ARRAY[1..12] OF STRING[3] =
  143.                  ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
  144.                   'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
  145.  
  146. (* STRUCTURED *) CONST
  147.    Days_Per_Month : ARRAY[1..12] OF BYTE
  148.                     = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
  149.  
  150. (*----------------------------------------------------------------------*)
  151. (*   Starting/ending dates for daylight savings time from 1980 to now   *)
  152. (*----------------------------------------------------------------------*)
  153.  
  154. TYPE
  155.    Daylight_Savings_Record = RECORD
  156.                                 Starting_Time : LONGINT;
  157.                                 Ending_Time   : LONGINT;
  158.                              END;
  159.  
  160. VAR
  161.    Daylight_Savings_Time : ARRAY[1980..2000] OF Daylight_Savings_Record;
  162.  
  163.