/* Size2Comment 04.01.97 Public Domain by Tomash/Art-B & Blabla Contribution 2 BBMST Tomash-Prix :))) Notka: Wstawia wielkoōź katalogów do ich komentarzy. Robi wszystko rekursywnie Przydatne, przy wspóīpracy z FM3.0. Jak chcesz wykasowaź jakieō badziejstwa z najciemniejszych zakātków twardziela, to po kie licho za kaūdym razem siedzieź nad Disksizem? name - katalog test - nie dopisuje komentarza - wszystko ōlij do CON: */ MODULE 'dos/dos' ENUM NO,NOLOCK,NOEXAMINE,BREAK,NOCOMMENT DEF rdargs DEF nazwa:PTR TO CHAR,test=0 PROC main() -> Pobieramy argi getargs() -> i do roboty... IF process(nazwa)=-1 THEN WriteF('Do widzenia!\n') -> Do widzenia! ENDPROC /* Jadziem! */ PROC process(name:PTR TO CHAR) HANDLE DEF lock,fib:fileinfoblock, dir:PTR TO CHAR,com[8]:STRING,size=NIL,s IF (lock:=Lock(name,ACCESS_READ))=NIL THEN Raise(NOLOCK) IF (Examine(lock,fib))=NIL THEN Raise(NOEXAMINE) WHILE ExNext(lock,fib)<>FALSE dir:=String(StrLen(name)+StrLen(fib.filename)+2) StrCopy(dir,name) IF fib.direntrytype>=0 -> mamy katalog, doīāczamy jego nazwė do reszty AddPart(dir,fib.filename,StrLen(dir)+StrLen(fib.filename)+2) -> WriteF('\s, size:\d\n',dir,fib.size) IF (s:=process(dir))=-1 THEN Raise(BREAK) size:=size+s ELSE -> mamy pliczek... walimy jego dīugoōź do reszty size:=size+fib.size ENDIF DisposeLink(dir) IF CtrlC() THEN Raise(BREAK) ENDWHILE WriteF('\s dir size: \d\n',name,size) IF test=0 StringF(com,'\d',size) SetComment(name,com) ENDIF EXCEPT DO IF lock THEN UnLock(lock) IF exception SELECT exception CASE BREAK; RETURN -1 CASE NOLOCK; WriteF('Cannot lock to directory!\n') ENDSELECT ELSE ENDIF ENDPROC size /* bierzemy argumenciki... */ PROC getargs() DEF myargs:PTR TO LONG myargs:=[0,0] rdargs:=ReadArgs('NAME,TEST/S',myargs,NIL) nazwa:=String(StrLen(myargs[0])+1) StrCopy(nazwa,myargs[0]) test:=myargs[1] WriteF('Size 2 Comment by Tomash/Blabla\n') ENDPROC