home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / TESERACT / TESS-025.ZIP / PASUTIL2.LBR / ARGLIST.PIN next >
Text File  |  1989-01-22  |  4KB  |  115 lines

  1. { This provides capabilities similar to argc/argv in C. You can now
  2.   read the argument list from your TURBO Pascal program. `argc' is
  3.   actually a function that returns the number of parameters on the
  4.   command line. Spaces are the separators between parameters. If the
  5.   parameter is enclosed in quotes ('), then any characters can appear.
  6.   If you want a quote, put two in the command line parameter.
  7.  
  8. Example
  9.  
  10.     cmd 'this is the first' and 'this is the ''third'' argument'
  11.  
  12. This will return argc=3.
  13.  
  14. You can retrieve the arguments by calling argv(#)
  15.  
  16. Example
  17.    if the above was the command line, then the program
  18.  
  19.       for i := 1 to argc do
  20.          writeln('argv(',i,') =<',argv(i),'>');
  21.  
  22. would print
  23.  
  24.     argv(1) =<this is the first>
  25.     argv(2) =<and>
  26.     argv(3) =<this is the 'third' argument>
  27.  
  28.             Jim Holtman
  29.             35 Dogwood Trail
  30.             Randolph, NJ 07869
  31.             (201) 361-3395
  32. }
  33.  
  34. type
  35.     arglist_string = string[80];
  36. const
  37.     arglist_max = 20;
  38.     arglist_number : integer = -1;
  39. var
  40.     argvlist : array[1..arglist_max] of ^arglist_string;
  41. function argv(num : integer) : arglist_string;
  42.  
  43. var
  44.     argument : arglist_string absolute cseg:$80;
  45.     newparm,parmline : arglist_string;
  46.     i,j : integer;
  47.     state : (leading_ws, non_quote, quoted, end_quote);
  48.     inchar : char;
  49.  
  50.     procedure saveparm;
  51.     begin
  52.       if arglist_number < arglist_max then begin
  53.         arglist_number := arglist_number+1;
  54.         new(argvlist[arglist_number]);
  55.         argvlist[arglist_number]^ := newparm;
  56.         newparm := '';
  57.         end;
  58.       end;
  59.  
  60. begin
  61.     if arglist_number = -1 then begin
  62.         arglist_number := 0;
  63.         parmline := argument+' ';
  64.         state := leading_ws;
  65.         newpanto the sign bit}
  66.                    s_string := current_directory+'\'+s_string;
  67.                    writeln(s_string, '':(65-length(s_string)),(r2*65536.0+r1):7:
  68.                         0, attribute:3);
  69.                    end;
  70.                 ax := $4F00;       {get next}
  71.                 msdos(param);
  72.                 end;
  73.              ax := $1A00;          {set DTA}
  74.              ds := dta_save[1];
  75.              dx := dta_save[2];
  76.              msdos(param);
  77.              end;
  78.           end;
  79.  
  80.    = ofs(current_directory[1]);
  81.              ax := $4700;
  82.              msdos(param);
  83.              current_directory := '\'+pack_name(current_directory[1],64);
  84.  
  85.              while (flags and carry) = 0 do begin
  86.                 s_string := pack_name(file_name,sizeof(file_name));
  87.                 if ((attribute and directory) <> 0) and (s_string <> '.') and (
  88.                      s_string <> '..') then begin
  89.                                    {writeln('decending to ',s_string);}
  90.                          nteger;
  91.     state : (leading_ws, non_quote, quoted, end_quote);
  92.     inchar : char;
  93.  
  94.     procedure saveparm;
  95.     begin
  96.       if arglist_number < arglist_max then begin
  97.         arglist_number := arglist_number+1;
  98.         new(argvlist[arglist_number]);
  99.         argvlist[arglist_number]^ := newparm;
  100.         newparm := '';
  101.         end;
  102.       end;
  103.  
  104. begin
  105.     if arglist_number = -1 then begin
  106.         arglist_number := 0;
  107.         parmline := argument+' ';
  108.         state := leading_ws;
  109.         newpa begin
  110.        write('Pattern to search for - ');
  111.        readln(pattern);
  112.        pattern := pattern+chr(0);
  113.        recurse;
  114.        end.
  115.