home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / oberon / loader / log.mod < prev    next >
Text File  |  1999-11-16  |  2KB  |  79 lines

  1. MODULE log;
  2.  
  3. FROM Arguments IMPORT
  4.  GetArg,NumArgs;
  5.  
  6. FROM Break IMPORT
  7.  TestBreak;
  8.  
  9. FROM Logger IMPORT
  10.  clear,firstPos,nextPos,read,write,writeStamp;
  11.  
  12. FROM String IMPORT
  13.  ANSICapString,Compare;
  14.  
  15. FROM Terminal IMPORT
  16.  FormatNr,FormatS,Write,WriteLn;
  17.  
  18. PROCEDURE usage();
  19. VAR
  20.  arg:ARRAY [0..99] OF CHAR;
  21.  len:INTEGER;
  22. BEGIN
  23.  GetArg(0,arg,len);
  24.  IF len=0 THEN arg:="log"; END;
  25.  FormatS("usage: %s (dump|clear|status|write|tail text)\n",arg);
  26. END usage;
  27.  
  28. VAR
  29.  arg:ARRAY [0..99] OF CHAR;
  30.  ch:CHAR;
  31.  end,i,pos,start:LONGCARD;
  32.  len:INTEGER;
  33. BEGIN
  34.  IF NumArgs()=1 THEN
  35.   GetArg(1,arg,len);
  36.   ANSICapString(arg);
  37.   IF Compare(arg,"DUMP")=0 THEN
  38.    IF nextPos()>0 THEN
  39.     FOR pos:=firstPos() TO nextPos()-1 DO Write(read(pos)); TestBreak(); END;
  40.    END;
  41.   ELSIF Compare(arg,"TAIL")=0 THEN
  42.    end:=nextPos();
  43.    IF end>0 THEN
  44.     IF end>2000 THEN
  45.      start:=end-2000;
  46.     ELSE
  47.      start:=0;
  48.     END;
  49.     IF start<firstPos() THEN start:=firstPos(); END;
  50.     FOR pos:=start TO end-1 DO Write(read(pos)); TestBreak(); END;
  51.    END;
  52.   ELSIF Compare(arg,"CLEAR")=0 THEN
  53.    clear();
  54.   ELSIF Compare(arg,"STATUS")=0 THEN
  55.    FormatNr("First=%ld",firstPos());
  56.    FormatNr("  Next=%ld",nextPos());
  57.    FormatNr("  Length=%ld\n",nextPos()-firstPos());
  58.   ELSE
  59.    usage();
  60.   END;
  61.  ELSIF NumArgs()=2 THEN
  62.   GetArg(1,arg,len);
  63.   ANSICapString(arg);
  64.   IF Compare(arg,"WRITE")=0 THEN
  65.    writeStamp;
  66.    GetArg(2,arg,len);
  67.    IF len>0 THEN
  68.     FOR i:=0 TO len-1 DO write(arg[i]); END;
  69.    END;
  70.    write(12C);
  71.   ELSE
  72.    usage();
  73.   END;
  74.  ELSE
  75.   usage()
  76.  END;
  77. END log.
  78.  
  79.