home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / DEVELOP / RGFA42 / LGLIB / LGLIB.LST
File List  |  2001-07-01  |  5KB  |  220 lines

  1. '
  2. ' (c)2001 RGF Software, Richard Gordon Faika
  3. '
  4. ' Anwendung:
  5. '
  6. ' Initialisierung:  @vfat_init
  7. ' Abmelden:         @vfat_exit
  8. '
  9. '
  10. '  Globales:
  11. ' ===============================================================================
  12. ' vfat!        - TRUE: lange Dateinamen funktionieren
  13. ' gl_fnamebuf  - Puffer
  14. ' gl_fname%    - Adresse eines 512-Byte-Puffers für Dateinamen/Pfade
  15. ' gl_fpath%    - Adresse eines 512-Byte-Puffers für Dateinamen/Pfade
  16. '
  17. '
  18. '
  19. '
  20. '
  21. '  Beispiel zum öffnen einer Datei:
  22. ' ===============================================================================
  23. '
  24. ' CHAR{gl_fname%}=file$
  25. ' fh&=@fopen(gl_fname%,0)
  26. ' IF @fok(fh&)
  27. '   ' alles in Butter
  28. '   ~@fclose(fh&)
  29. ' ELSE
  30. '   ' Fehler
  31. ' ENDIF
  32. '
  33. '  Bildschrimausgaben umlenken in eine Datei:
  34. ' ===============================================================================
  35. '
  36. ' @force_init("ausgabe.txt")  ! alle Bildschirmausgaben in Datei "ausgabe.txt"
  37. ' [...]
  38. ' @force_exit
  39. '
  40. ' -------------------------------------------------------------------------------
  41. '                                                        LICOM-GEMDOS-LIB (FILE)
  42. '
  43. > PROCEDURE vfat_init
  44.   '
  45.   ~@pdomain(1)              ! in die Mint-Domain schalten (lange Dateinamen/VFAT/FAT32 dann  möglich)
  46.   vfat!=@pdomain(-1)>0
  47.   '
  48.   gl_fnamebuf%=MALLOC(2048)            !Puffer
  49.   gl_fname%=ADD(gl_fnamebuf%,4)
  50.   gl_fpath%=gl_fname%+512
  51.   '
  52. RETURN
  53. > FUNCTION dir_handle(f$)
  54. $F%
  55. IF vfat!
  56.   @chk_dirhandle
  57.   RETURN GEMDOS(296,L:V:f$,0)
  58. ENDIF
  59. RETURN FALSE
  60. ENDFUNC
  61. > FUNCTION dclosedir(dirhandle%)
  62. IF vfat!
  63. RETURN GEMDOS(299,L:dirhandle%)
  64. ENDIF
  65. RETURN FALSE
  66. ENDFUNC
  67. > FUNCTION dreaddir(dirhandle%,buf%)
  68. IF vfat!
  69. RETURN GEMDOS(297,255,L:dirhandle%,L:buf%)
  70. ENDIF
  71. RETURN FALSE
  72. ENDFUNC
  73. > PROCEDURE vfat_exit
  74. IF vfat!
  75. @chk_dirhandle
  76. IF gl_fnamebuf%>0
  77. ~MFREE(gl_fnamebuf%)
  78. CLR gl_fnamebuf%
  79. ENDIF
  80. ~MFREE(filebuffer%)
  81. ENDIF
  82. RETURN
  83. > PROCEDURE chk_dirhandle
  84. IF vfat!
  85. IF gl_dirhandle%>0
  86. ~@dclosedir(gl_dirhandle%)
  87. CLR gl_dirhandle%
  88. ENDIF
  89. ENDIF
  90. RETURN
  91. '
  92. > PROCEDURE force_init(outputfile$)
  93. '
  94. LOCAL fhandle&
  95. '
  96. IF NOT force_init!
  97. CHAR{gl_fname%}=outputfile$
  98. fhandle&=@fcreate(gl_fname%)
  99. IF fhandle&=>0
  100. force_fhandle&=fhandle&
  101. ~@fforce(1,force_fhandle&)
  102. force_init!=TRUE
  103. ENDIF
  104. ENDIF
  105. RETURN
  106. > PROCEDURE force_exit
  107. IF force_init!
  108. ~@fclose(force_fhandle&)
  109. force_exit!=FALSE
  110. ENDIF
  111. RETURN
  112. '
  113. > FUNCTION fopen(file%,mode&)
  114. $F%
  115. RETURN GEMDOS(61,L:file%,mode&)
  116. ENDFUNC
  117. > FUNCTION fread(f_handle&,adr%,len%)                               !call
  118. $F%
  119. RETURN GEMDOS(63,W:f_handle&,L:len%,L:adr%)
  120. ENDFUNC
  121. > FUNCTION fxattr(flag&,file%,VAR xattr%)
  122. RETURN GEMDOS(300,flag&,L:file%,L:xattr%)
  123. ENDFUNC
  124. > FUNCTION lof(fhandle&)                        ! Dateilänge ermitteln
  125. $F%
  126. '
  127. LOCAL len%
  128. '
  129. len%=@fseek(fhandle&,0,2)
  130. ~@fseek(fhandle&,0,0)
  131. RETURN len%
  132. ENDFUNC
  133. > FUNCTION fseek(fh&,offset%,mode&)
  134. $F%
  135. RETURN GEMDOS(66,L:offset%,fh&,mode&)
  136. ENDFUNC
  137. > FUNCTION fforce(stdh&,handle&)
  138. $F%
  139. RETURN GEMDOS(70,stdh&,handle&)
  140. ENDFUNC
  141. > FUNCTION fcreate(file%)                               !call
  142. $F%
  143. RETURN GEMDOS(60,L:file%,0)
  144. ENDFUNC
  145. > FUNCTION fwrite(f_handle&,adr%,len%)
  146. $F%
  147. RETURN GEMDOS(64,W:f_handle&,L:len%,L:adr%)
  148. ENDFUNC
  149. > FUNCTION linefeed(fh&)
  150. $F&
  151. '
  152. LOCAL var&
  153. '
  154. var&=3338
  155. RETURN @fwrite(fh&,V:var&,2)
  156. ENDFUNC
  157. > PROCEDURE fprint(fh&,var$)
  158. $F%
  159. CHAR{gl_fpath%}=var$+CHR$(13)+CHR$(10)
  160. ~GEMDOS(64,W:fh&,L:LEN(var$)+2,L:gl_fpath%)
  161. RETURN
  162. > FUNCTION fdelete(file%)
  163. $F%
  164. RETURN GEMDOS(65,L:file%)
  165. ENDFUNC
  166. > FUNCTION fok(fh&)
  167. $F%
  168. RETURN fh&>-1
  169. ENDFUNC
  170. > FUNCTION fclose(f_handle&)
  171. $F%
  172. RETURN GEMDOS(62,W:f_handle&)
  173. ENDFUNC
  174. > PROCEDURE print(var$)
  175. var$=var$+ret0$
  176. ~GEMDOS(9,L:V:var$)
  177. RETURN
  178. > FUNCTION outw(fhandle&,var&)
  179. $F%
  180. RETURN GEMDOS(64,fhandle&,L:2,L:V:var&)
  181. ENDFUNC
  182. > FUNCTION outb(fhandle&,var|)
  183. $F%
  184. RETURN GEMDOS(64,fhandle&,L:1,L:V:var|)
  185. ENDFUNC
  186. > FUNCTION pdomain(var&)
  187. $F%
  188. RETURN GEMDOS(281,var&)
  189. ENDFUNC
  190. '
  191. ' -------------------------------------------------------------------------------
  192. '                                                        NAMES
  193. > FUNCTION aesname$(file$)
  194. $F%
  195. file$=@getname$(file$)
  196. RETURN UPPER$(LEFT$(LEFT$(file$,PRED(INSTR(file$,".")))+"        ",8))
  197. ENDFUNC
  198. > FUNCTION getname$(file$)
  199. $F%
  200. RETURN MID$(file$,SUCC(RINSTR(file$,"\")))
  201. ENDFUNC
  202. > FUNCTION getpath$(file$)
  203. $F%
  204. RETURN LEFT$(file$,RINSTR(file$,"\"))
  205. ENDFUNC
  206. > FUNCTION getext$(file$)
  207. $F%
  208. '
  209. LOCAL p&,s&
  210. '
  211. IF RIGHT$(file$)<>"\"
  212. p&=RINSTR(file$,".")
  213. s&=RINSTR(file$,"\")
  214. IF s&<p&
  215. RETURN MID$(file$,SUCC(p&))
  216. ENDIF
  217. ENDIF
  218. RETURN ""
  219. ENDFUNC
  220.