home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
DEVELOP
/
RGFA42
/
LGLIB
/
LGLIB.LST
Wrap
File List
|
2001-07-01
|
5KB
|
220 lines
'
' (c)2001 RGF Software, Richard Gordon Faika
'
' Anwendung:
'
' Initialisierung: @vfat_init
' Abmelden: @vfat_exit
'
'
' Globales:
' ===============================================================================
' vfat! - TRUE: lange Dateinamen funktionieren
' gl_fnamebuf - Puffer
' gl_fname% - Adresse eines 512-Byte-Puffers für Dateinamen/Pfade
' gl_fpath% - Adresse eines 512-Byte-Puffers für Dateinamen/Pfade
'
'
'
'
'
' Beispiel zum öffnen einer Datei:
' ===============================================================================
'
' CHAR{gl_fname%}=file$
' fh&=@fopen(gl_fname%,0)
' IF @fok(fh&)
' ' alles in Butter
' ~@fclose(fh&)
' ELSE
' ' Fehler
' ENDIF
'
' Bildschrimausgaben umlenken in eine Datei:
' ===============================================================================
'
' @force_init("ausgabe.txt") ! alle Bildschirmausgaben in Datei "ausgabe.txt"
' [...]
' @force_exit
'
' -------------------------------------------------------------------------------
' LICOM-GEMDOS-LIB (FILE)
'
> PROCEDURE vfat_init
'
~@pdomain(1) ! in die Mint-Domain schalten (lange Dateinamen/VFAT/FAT32 dann möglich)
vfat!=@pdomain(-1)>0
'
gl_fnamebuf%=MALLOC(2048) !Puffer
gl_fname%=ADD(gl_fnamebuf%,4)
gl_fpath%=gl_fname%+512
'
RETURN
> FUNCTION dir_handle(f$)
$F%
IF vfat!
@chk_dirhandle
RETURN GEMDOS(296,L:V:f$,0)
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION dclosedir(dirhandle%)
IF vfat!
RETURN GEMDOS(299,L:dirhandle%)
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION dreaddir(dirhandle%,buf%)
IF vfat!
RETURN GEMDOS(297,255,L:dirhandle%,L:buf%)
ENDIF
RETURN FALSE
ENDFUNC
> PROCEDURE vfat_exit
IF vfat!
@chk_dirhandle
IF gl_fnamebuf%>0
~MFREE(gl_fnamebuf%)
CLR gl_fnamebuf%
ENDIF
~MFREE(filebuffer%)
ENDIF
RETURN
> PROCEDURE chk_dirhandle
IF vfat!
IF gl_dirhandle%>0
~@dclosedir(gl_dirhandle%)
CLR gl_dirhandle%
ENDIF
ENDIF
RETURN
'
> PROCEDURE force_init(outputfile$)
'
LOCAL fhandle&
'
IF NOT force_init!
CHAR{gl_fname%}=outputfile$
fhandle&=@fcreate(gl_fname%)
IF fhandle&=>0
force_fhandle&=fhandle&
~@fforce(1,force_fhandle&)
force_init!=TRUE
ENDIF
ENDIF
RETURN
> PROCEDURE force_exit
IF force_init!
~@fclose(force_fhandle&)
force_exit!=FALSE
ENDIF
RETURN
'
> FUNCTION fopen(file%,mode&)
$F%
RETURN GEMDOS(61,L:file%,mode&)
ENDFUNC
> FUNCTION fread(f_handle&,adr%,len%) !call
$F%
RETURN GEMDOS(63,W:f_handle&,L:len%,L:adr%)
ENDFUNC
> FUNCTION fxattr(flag&,file%,VAR xattr%)
RETURN GEMDOS(300,flag&,L:file%,L:xattr%)
ENDFUNC
> FUNCTION lof(fhandle&) ! Dateilänge ermitteln
$F%
'
LOCAL len%
'
len%=@fseek(fhandle&,0,2)
~@fseek(fhandle&,0,0)
RETURN len%
ENDFUNC
> FUNCTION fseek(fh&,offset%,mode&)
$F%
RETURN GEMDOS(66,L:offset%,fh&,mode&)
ENDFUNC
> FUNCTION fforce(stdh&,handle&)
$F%
RETURN GEMDOS(70,stdh&,handle&)
ENDFUNC
> FUNCTION fcreate(file%) !call
$F%
RETURN GEMDOS(60,L:file%,0)
ENDFUNC
> FUNCTION fwrite(f_handle&,adr%,len%)
$F%
RETURN GEMDOS(64,W:f_handle&,L:len%,L:adr%)
ENDFUNC
> FUNCTION linefeed(fh&)
$F&
'
LOCAL var&
'
var&=3338
RETURN @fwrite(fh&,V:var&,2)
ENDFUNC
> PROCEDURE fprint(fh&,var$)
$F%
CHAR{gl_fpath%}=var$+CHR$(13)+CHR$(10)
~GEMDOS(64,W:fh&,L:LEN(var$)+2,L:gl_fpath%)
RETURN
> FUNCTION fdelete(file%)
$F%
RETURN GEMDOS(65,L:file%)
ENDFUNC
> FUNCTION fok(fh&)
$F%
RETURN fh&>-1
ENDFUNC
> FUNCTION fclose(f_handle&)
$F%
RETURN GEMDOS(62,W:f_handle&)
ENDFUNC
> PROCEDURE print(var$)
var$=var$+ret0$
~GEMDOS(9,L:V:var$)
RETURN
> FUNCTION outw(fhandle&,var&)
$F%
RETURN GEMDOS(64,fhandle&,L:2,L:V:var&)
ENDFUNC
> FUNCTION outb(fhandle&,var|)
$F%
RETURN GEMDOS(64,fhandle&,L:1,L:V:var|)
ENDFUNC
> FUNCTION pdomain(var&)
$F%
RETURN GEMDOS(281,var&)
ENDFUNC
'
' -------------------------------------------------------------------------------
' NAMES
> FUNCTION aesname$(file$)
$F%
file$=@getname$(file$)
RETURN UPPER$(LEFT$(LEFT$(file$,PRED(INSTR(file$,".")))+" ",8))
ENDFUNC
> FUNCTION getname$(file$)
$F%
RETURN MID$(file$,SUCC(RINSTR(file$,"\")))
ENDFUNC
> FUNCTION getpath$(file$)
$F%
RETURN LEFT$(file$,RINSTR(file$,"\"))
ENDFUNC
> FUNCTION getext$(file$)
$F%
'
LOCAL p&,s&
'
IF RIGHT$(file$)<>"\"
p&=RINSTR(file$,".")
s&=RINSTR(file$,"\")
IF s&<p&
RETURN MID$(file$,SUCC(p&))
ENDIF
ENDIF
RETURN ""
ENDFUNC