home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / amigae / e_v3.2a / src / tools / file / file.e < prev    next >
Text File  |  2001-03-31  |  1KB  |  72 lines

  1. /* file.m */
  2.  
  3. OPT MODULE
  4.  
  5. EXPORT PROC readfile(filename,trailbyte="\n",memflags=0)
  6.   DEF len,m,rl,fh,a
  7.   IF (len:=FileLength(filename))<1 THEN Throw("OPEN",filename)
  8.   m:=NewM(len+8,memflags)
  9.   FOR a:=0 TO 3
  10.     m[a]:=trailbyte
  11.     m[len+4+a]:=trailbyte
  12.   ENDFOR
  13.   m:=m+4
  14.   IF (fh:=Open(filename,OLDFILE))=NIL THEN Raise("OPEN")
  15.   rl:=Read(fh,m,len)
  16.   Close(fh)
  17.   IF rl<>len THEN Raise("IN")
  18. ENDPROC m,len
  19.  
  20. EXPORT PROC freefile(mem)
  21.   Dispose(mem-4)
  22. ENDPROC
  23.  
  24. EXPORT PROC writefile(filename,mem,len)
  25.   DEF fh,wl
  26.   IF (fh:=Open(filename,NEWFILE))=NIL THEN Throw("OPEN",filename)
  27.   wl:=Write(fh,mem,len)
  28.   Close(fh)
  29.   IF wl<>len THEN Raise("OUT")
  30. ENDPROC
  31.  
  32. EXPORT PROC countstrings(mem,len)
  33.   MOVE.L mem,A0
  34.   MOVE.L A0,D1
  35.   ADD.L  len,D1
  36.   MOVEQ  #0,D0
  37.   MOVEQ  #10,D2
  38. strings:
  39.   ADDQ.L #1,D0
  40. findstring:
  41.   CMP.B  (A0)+,D2
  42.   BNE.S  findstring
  43.   CMPA.L D1,A0
  44.   BMI.S  strings
  45. ENDPROC D0
  46.  
  47. EXPORT PROC stringsinfile(mem,len,max)
  48.   DEF list,l
  49.   IF (list:=List(max))=NIL THEN Raise("MEM")
  50.   MOVE.L list,A1
  51.   MOVE.L max,D3
  52.   MOVE.L mem,A0
  53.   MOVE.L A0,D1
  54.   ADD.L  len,D1
  55.   MOVEQ  #0,D0
  56.   MOVEQ  #10,D2
  57. stringsl:
  58.   CMP.L  D3,D0
  59.   BPL.S  done
  60.   ADDQ.L #1,D0
  61.   MOVE.L A0,(A1)+
  62. findstringl:
  63.   CMP.B  (A0)+,D2
  64.   BNE.S  findstringl
  65.   CLR.B  -1(A0)
  66.   CMPA.L D1,A0
  67.   BMI.S  stringsl
  68. done:
  69.   MOVE.L D0,l
  70.   SetList(list,l)
  71. ENDPROC list
  72.