home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / beehive / bbs / rover12a.arc / ROVER12.PAS < prev    next >
Pascal/Delphi Source File  |  1991-08-11  |  5KB  |  206 lines

  1. program ROVER;
  2.  
  3. {Message import/export program for PBBS}
  4. {by Phil Hansford}
  5. {Mysteria}
  6. {818-353-8891 (modem)}
  7. {Sept. 28, 1988}
  8.  
  9. const
  10.   vers: string[5] = '1.2';    {version number}
  11.   area: string[2] = 'A0';     {default drive/user}
  12.   fnumber: integer = 4; {maximum folder number}
  13.   folders : array[1..9] of string[10] = ('General','Occult','Programing',
  14.            'Astral','Local','6','7','8','Netmail');
  15.   name: boolean = true;  {yes, show folder names}
  16.   CR = ^M;
  17.   NUL= ^@;
  18.   SOH= ^A;
  19.   ETX= ^C;
  20.  
  21. const {typed constants}
  22.   menu:   boolean = true;
  23.   export: boolean = true;
  24.   import: boolean = false;
  25.   do_commandline: boolean = false;
  26.  
  27. type
  28.   str1  = string[1];
  29.   str2 = string[2];
  30.   str8 = string[8];
  31.   str10 = string[10];
  32.   str14= string[14];
  33.   fileSpec= string[14];
  34.   str16= string[16];
  35.   str30= string[30];
  36.   str64= string[64];
  37.   str80= string[80];
  38.   buff30 = array[1..30] of byte;
  39.   msgtype = array[1..64] of byte;
  40.   bufftype = array[1..128] of byte;
  41.  
  42.   indextype  = record
  43.           date:   str8;
  44.           next_messages_rec: integer;
  45.           next_message_number: integer;
  46.           last_msgindex_rec: integer;
  47.         end;
  48.  
  49.   msgindextype  = record
  50.           receiver: str30;
  51.           msg_no:  integer;
  52.           date:    str8;
  53.           time:    str8;
  54.           num_of_recs: byte;
  55.           start_rec_no: integer;
  56.           msgindex_rec_no: integer;
  57.           subject: string[26];
  58.           sender:  str30;
  59.           public:  byte;
  60.           folder:  byte;
  61.           deleted: byte;
  62.           null:    byte;
  63.         end;
  64.  
  65. var
  66. {records}
  67.   index: indextype;
  68.   msgindex: msgindextype;
  69.  
  70. {booleans}
  71.   set_pick, by_number: boolean;
  72.  
  73. {numbers}
  74.   I, K, count: byte;
  75.   msgindexrec,
  76.   nextrecord, mirecord,
  77.   recsRead, start_number,
  78.   deleted, public, folder: integer;
  79.   msgindex_pointer: integer;
  80.   msg: array[1..10] of integer;
  81.  
  82. {strings}
  83.   time, date: str8;
  84.   sender1, receiver1: str14;
  85.   oldname, newname,
  86.   indexname, msgindexname,
  87.   messagesname, snapfilename: fileSpec;
  88.   commandline: string[20];
  89.   subject: string[26];
  90.   sender, receiver: str30;
  91.   linebuffer: str64;
  92.   line: str80;
  93.   sparebuffer: string[87];
  94.   line1: array[1..8] of str16;
  95.  
  96. {buffers}
  97.   filebuffer, ndxbuffer,
  98.   buffer, store,
  99.   msgindexbuffer: bufftype;
  100.   selectbuffer: array[1..30] of byte;
  101.   indexbuffer: array[1..100] of byte;
  102.  
  103. {files}
  104.   textfil, snapfil: text;
  105.   oldfil, fil,
  106.   newfil, ndxfil,
  107.   msgndxfil, messagesfil: file;
  108.  
  109.  
  110. {------ Include Files ------}
  111.  
  112. {The source code is broken into parts
  113. {to make it easier to edit}
  114.  
  115. {$I MUNDANE.INC}     {common routines}
  116. {$I EXPORT.INC}      {export code}
  117. {$I IMPORT.INC}      {import code}
  118.  
  119. {---------------------------}
  120.  
  121. procedure update_logs;
  122. begin
  123. end; {update_logs}
  124.  
  125. procedure check_commandline;
  126. begin
  127.   do_commandline:= (paramCount > 0);
  128.   if do_commandline then
  129.     commandline:= paramStr(1)
  130.   else commandline:= '';
  131. end; {check_commandline}
  132.  
  133. procedure parse_commandline; {set booleans}
  134. var
  135.   I: byte;
  136. begin
  137.   if not do_commandline then exit;
  138.   if (pos('S', commandline) > 0) and (pos('T', commandline) > 0)
  139.     then finis(0);
  140.   for I:= 1 to length(commandline) do
  141.   case commandline[I] of
  142.    'S': begin
  143.           export:= true;
  144.           import:= false;
  145.         end;
  146.    'T': begin
  147.           export:= false;
  148.           import:= true;
  149.         end;
  150.    'M': menu:= true;
  151.    else finis(0);
  152.   end; {case}
  153. end; {parse_commandline}
  154.  
  155. procedure do_menu;
  156. begin
  157.   if not menu then exit;
  158.   if export then export_menu;
  159.   if import then import_menu;
  160. end; {do_menu}
  161.  
  162. procedure check_commandfile;
  163. var
  164.   command_file: str14;
  165. begin
  166.   command_file:= 'ROVER.CMD';
  167.   if not exists(command_file) then exit;
  168.   menu:= false;
  169.   export:= false;
  170.   close(oldfil);
  171. end; {check_commandfile}
  172.  
  173. procedure title;
  174. begin
  175.   writeln('** ROVER ' + vers + ' -- Message transfer program for PBBS **');
  176.   writeln;
  177.   writeln('This utility exports PBBS messages to external files.');
  178.   writeln('It may also be used to import external message files to PBBS.');
  179.   writeln('PBBS files INDEX.PBS, MSGINDEX.PBS, and MESSAGES.PBS must be');
  180.   writeln('on the default disk drive.');
  181.   writeln;
  182. end; {title}
  183.  
  184. procedure command_mode;
  185. begin
  186.   parse_commandline; {set booleans}
  187.   check_commandfile;
  188.  
  189.   {conditional operations based on booleans}
  190.   do_menu;
  191.   do_export;
  192.   do_import;
  193.   update_logs;
  194. end; {command_mode}
  195.  
  196.  
  197. {-------- Main Program Area ---------}
  198.  
  199. begin {main}
  200.   check_commandline;
  201.   title;
  202.   command_mode;
  203.   finis(1);
  204. end. {program}
  205.  
  206.