home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Amiga / Internet / Web / 2b_Cashana.lha / Cashana / Src / Cashana.e next >
Text File  |  1998-05-04  |  4KB  |  195 lines

  1. /*
  2.     Changes IB 1.12 Cache to normal files in HTML document
  3.     $VER: 0.35
  4.  
  5.     0.35:
  6.  
  7.         - dodany licznik bεδd≤w
  8.         - obsεuguje starΓ wersjδ kaszy Voyagera.
  9. */
  10.  
  11. OPT PREPROCESS
  12.  
  13. #define VERSION '$VER: Cashana 0.35 (04.05.98) BLABLA Production\0'
  14.  
  15. MODULE 'dos/dos'
  16.  
  17. ENUM O,ER_BADARGS, ER_BREAK
  18.  
  19. DEF sourcelist:PTR TO LONG, rdargs
  20.  
  21. DEF destdir, errors=NIL
  22.  
  23. PROC main() HANDLE
  24. DEF next=NIL
  25.     getargs()
  26.  
  27.  
  28.     WHILE sourcelist[next]<>NIL
  29.  
  30.         processFile(sourcelist[next])
  31.  
  32.         INC next
  33.         IF CtrlC() THEN Raise(ER_BREAK)
  34.     ENDWHILE
  35.  
  36. EXCEPT DO
  37. WriteF('Number of problems counted: \d\n',errors)
  38.  
  39. IF exception
  40.     SELECT exception
  41.         CASE ER_BADARGS; WriteF('CACHEFILE - files(s) to process\nDESTDIR - directory where to copy files\n')
  42.         CASE ER_BREAK; WriteF('BREAK **CtrlC\n')
  43.         DEFAULT; WriteF('Exception: \d\n',exception)
  44.     ENDSELECT
  45. ENDIF
  46. FreeArgs(rdargs)
  47. CleanUp()
  48. ENDPROC
  49. /*
  50.  
  51.     Gε≤wna procedura wczytujΓca pliki!
  52.  
  53.     cachename=nazwa pliku z cachy do spreparowania...
  54.  
  55. */
  56. PROC processFile(cachename:PTR TO CHAR) HANDLE
  57.     DEF info:fileinfoblock,lock,c=0
  58.  
  59.     IF lock:=Lock(cachename,-2)
  60.         IF Examine(lock,info)
  61.             WriteF('\s[17] \d[7]\n', info.filename, info.size)
  62.  
  63.             cache2File(cachename,info.comment)
  64.  
  65.         ENDIF
  66.         UnLock(lock)
  67.     ELSE
  68.         WriteF('Wrong file name!\n')
  69.     ENDIF
  70.  
  71.     EXCEPT
  72.     INC errors
  73.     SELECT exception
  74.         CASE "OPEN"; WriteF('Cannot open file for reading\n')
  75.         CASE "IN"; WriteF('Cannot read file properly\n')
  76.         DEFAULT; WriteF('Unknown error!\n')
  77.     ENDSELECT
  78. ENDPROC
  79. /*
  80.  
  81.     Pobiera plik, zmienia nazwe i kopiuje!
  82.     cachename...
  83.     comment - komentarz pliku
  84. */
  85. PROC cache2File(cachename:PTR TO CHAR,comment:PTR TO CHAR)
  86.     DEF com:PTR TO CHAR, newfile:PTR TO CHAR
  87.     DEF mem,len, pos
  88.  
  89.     -> Pobranie komentarza
  90.     IF StrLen(comment)>7
  91.         IF (pos:=InStr(comment,'http://'))<>-1
  92.     ->        com:=String(StrLen(cachename)+StrLen(comment)-7)
  93.             com:=String(StrLen(comment)-7)
  94.             MidStr(com,comment,pos+7)
  95.         ->    WriteF('to file: \s...\n',com)
  96.             makeDirs(com)                    /* tworzy potrzebne katalogi, jesli trzeba */
  97.  
  98.  
  99.             -> Kopiujemy plik pod nowΓ nazwΓ!
  100.  
  101.             newfile:=String(StrLen(destdir)+StrLen(com)+12)
  102.             StrCopy(newfile,destdir)
  103.             AddPart(newfile,com,StrLen(destdir)+StrLen(com)+2)
  104.             IF StrCmp(newfile+StrLen(newfile)-1,'/',1) THEN AddPart(newfile,'index.html',StrLen(newfile)+12)
  105.             WriteF('Writing file as \s\n',newfile)
  106.         
  107.             mem,len:=readf(cachename)
  108.             IF mem THEN savefile(newfile,mem,len) ELSE WriteF('File not saved...\n')
  109.         
  110.             DisposeLink(com)
  111.             DisposeLink(newfile)
  112.         ELSE
  113.             INC errors
  114.         ENDIF
  115.     ELSE
  116.         WriteF('This file is not part of the cache\n')
  117.         INC errors
  118.     ENDIF
  119.  
  120. ENDPROC
  121. /*
  122.  
  123.     Tworzy katalogi potrzebne do przekopiowania plik≤w
  124.     w odpowiednie miejsca...
  125.  
  126. */
  127. PROC makeDirs(newfile:PTR TO CHAR)
  128.     DEF pos=0, dir:PTR TO CHAR, newdir:PTR TO CHAR, r
  129.     dir:=String(StrLen(newfile))
  130.  
  131.     LOOP
  132.         IF (pos:=InStr(newfile,'/',pos))=-1 THEN JUMP x
  133.         StrCopy(dir,newfile,pos)
  134.         newdir:=String(StrLen(destdir)+StrLen(dir)+2)
  135.         StrCopy(newdir,destdir)
  136.         AddPart(newdir,dir,StrLen(destdir)+StrLen(dir)+2)
  137.         IF (r:=CreateDir(newdir))=NIL
  138.             -> WriteF('Nie utworzyεem katalogu!\n') 
  139.         ELSE
  140.             WriteF('Creating dir \s\n',newdir)
  141.             UnLock(r)
  142.         ENDIF
  143.         DisposeLink(newdir)
  144.         INC pos
  145.     ENDLOOP
  146.  
  147. x:
  148. ENDPROC pos
  149.  
  150.  
  151. PROC readf(filename)
  152.     DEF len,memory,rl,fh
  153.     IF (len:=FileLength(filename))<1 THEN Raise("OPEN")
  154.     memory:=NewR(len)
  155.     IF (fh:=Open(filename,OLDFILE))=NIL THEN Raise("OPEN")
  156.     rl:=Read(fh,memory,len)
  157.     Close(fh)
  158.     IF rl<>len THEN Raise("IN")
  159. ENDPROC memory,len
  160.  
  161.  
  162. PROC savefile(name:PTR TO CHAR,addy,len)
  163.  
  164.     DEF flock,lastlen
  165.  
  166.     IF (flock:=Open(name,MODE_NEWFILE))=NIL THEN WriteF('Cannot write!\n')
  167.     lastlen:=Write(flock,addy,len)
  168.     IF lastlen<>len THEN WriteF('Cannot write!\n')
  169.  
  170.  
  171.     IF flock THEN Close(flock)
  172.  
  173.  
  174. ENDPROC
  175.  
  176.  
  177.  
  178. /*
  179.     Pobranie argument≤w z CLI
  180. */
  181.  
  182. PROC getargs()
  183.  
  184.     DEF myargs:PTR TO LONG
  185.  
  186.     myargs:=[0,0,0]
  187.     IF (rdargs:=ReadArgs('CACHEFILE/A/M,DESTDIR/A',myargs,NIL))=NIL THEN Raise(ER_BADARGS)
  188.  
  189.     sourcelist:=myargs[0]
  190.     destdir:=String(StrLen(myargs[1])+4)
  191.     StrCopy(destdir,myargs[1])
  192.  
  193. ENDPROC
  194. CHAR VERSION
  195.