version 1.6, 1994/05/07 14:56:03
|
version 1.7, 1994/05/18 17:29:58
|
Line 502 nip w1 w2 -- w2 core-ext
|
Line 502 nip w1 w2 -- w2 core-ext
|
tuck w1 w2 -- w2 w1 w2 core-ext |
tuck w1 w2 -- w2 w1 w2 core-ext |
|
|
?dup w -- w core question_dupe |
?dup w -- w core question_dupe |
/* resulting C code suboptimal */ |
|
/* make -dup an alias */ |
|
if (w!=0) { |
if (w!=0) { |
--sp; |
IF_TOS(*sp-- = w;) |
#ifndef USE_TOS |
#ifndef USE_TOS |
*sp = w; |
*--sp = w; |
#endif |
#endif |
} |
} |
|
|
Line 644 else {
|
Line 642 else {
|
} |
} |
|
|
close-file wfileid -- wior file close_file |
close-file wfileid -- wior file close_file |
wior = FLAG(fclose((FILE *)wfileid)==EOF); |
wior = FILEIO(fclose((FILE *)wfileid)==EOF); |
|
|
open-file c_addr u ntype -- w2 wior file open_file |
open-file c_addr u ntype -- w2 wior file open_file |
char fname[u+1]; |
char fname[u+1]; |
cstr(fname, c_addr, u); |
cstr(fname, c_addr, u); |
w2 = (Cell)fopen(fname, fileattr[ntype]); |
w2 = (Cell)fopen(fname, fileattr[ntype]); |
wior = FLAG(w2 == NULL); |
wior = FILEEXIST(w2 == NULL); |
|
|
create-file c_addr u ntype -- w2 wior file create_file |
create-file c_addr u ntype -- w2 wior file create_file |
int fd; |
int fd; |
Line 663 if (fd > -1) {
|
Line 661 if (fd > -1) {
|
wior = 0; |
wior = 0; |
} else { |
} else { |
assert(fd == -1); |
assert(fd == -1); |
wior = fd; |
wior = FILEIO(fd); |
w2 = 0; |
w2 = 0; |
} |
} |
|
|
delete-file c_addr u -- wior file delete_file |
delete-file c_addr u -- wior file delete_file |
char fname[u+1]; |
char fname[u+1]; |
cstr(fname, c_addr, u); |
cstr(fname, c_addr, u); |
wior = unlink(fname); |
wior = FILEEXIST(unlink(fname)); |
|
|
rename-file c_addr1 u1 c_addr2 u2 -- wior file-ext rename_file |
rename-file c_addr1 u1 c_addr2 u2 -- wior file-ext rename_file |
char fname1[u1+1]; |
char fname1[u1+1]; |
char fname2[u2+1]; |
char fname2[u2+1]; |
cstr(fname1, c_addr1, u1); |
cstr(fname1, c_addr1, u1); |
cstr(fname2, c_addr2, u2); |
cstr(fname2, c_addr2, u2); |
wior = rename(fname1, fname2); |
wior = FILEEXIST(rename(fname1, fname2)); |
|
|
file-position wfileid -- ud wior file file_position |
file-position wfileid -- ud wior file file_position |
/* !! use tell and lseek? */ |
/* !! use tell and lseek? */ |
Line 685 ud = ftell((FILE *)wfileid);
|
Line 683 ud = ftell((FILE *)wfileid);
|
wior = 0; /* !! or wior = FLAG(ud<0) */ |
wior = 0; /* !! or wior = FLAG(ud<0) */ |
|
|
reposition-file ud wfileid -- wior file reposition_file |
reposition-file ud wfileid -- wior file reposition_file |
wior = fseek((FILE *)wfileid, (long)ud, SEEK_SET); |
wior = FILEIO(fseek((FILE *)wfileid, (long)ud, SEEK_SET)); |
|
|
file-size wfileid -- ud wior file file_size |
file-size wfileid -- ud wior file file_size |
struct stat buf; |
struct stat buf; |
wior = fstat(fileno((FILE *)wfileid), &buf); |
wior = FILEEXIST(fstat(fileno((FILE *)wfileid), &buf)); |
ud = buf.st_size; |
ud = buf.st_size; |
|
|
resize-file ud wfileid -- wior file resize_file |
resize-file ud wfileid -- wior file resize_file |
wior = ftruncate(fileno((FILE *)wfileid), (int)ud); |
wior = FILEIO(ftruncate(fileno((FILE *)wfileid), (int)ud)); |
|
|
read-file c_addr u1 wfileid -- u2 wior file read_file |
read-file c_addr u1 wfileid -- u2 wior file read_file |
/* !! fread does not guarantee enough */ |
/* !! fread does not guarantee enough */ |
u2 = fread(c_addr, sizeof(Char), u1, (FILE *)wfileid); |
u2 = fread(c_addr, sizeof(Char), u1, (FILE *)wfileid); |
wior = FLAG(u2<u1 && ferror((FILE *)wfileid)); |
wior = FILEIO(u2<u1 && ferror((FILE *)wfileid)); |
/* !! who performs clearerr((FILE *)wfileid); ? */ |
/* !! who performs clearerr((FILE *)wfileid); ? */ |
|
|
read-line c_addr u1 wfileid -- u2 flag wior file read_line |
read-line c_addr u1 wfileid -- u2 flag wior file read_line |
wior=(Cell)fgets(c_addr,u1+1,(FILE *)wfileid); |
wior=(Cell)fgets(c_addr,u1+1,(FILE *)wfileid); |
flag=FLAG(!feof((FILE *)wfileid) && wior); |
flag=FLAG(!feof((FILE *)wfileid) && wior); |
wior=FLAG(ferror((FILE *)wfileid)) & flag; |
wior=FILEIO(ferror((FILE *)wfileid)) & flag; |
u2=(flag & strlen(c_addr)); |
u2=(flag & strlen(c_addr)); |
u2-=((u2>0) && (c_addr[u2-1]==NEWLINE)); |
u2-=((u2>0) && (c_addr[u2-1]==NEWLINE)); |
|
|
Line 712 write-file c_addr u1 wfileid -- wior fil
|
Line 710 write-file c_addr u1 wfileid -- wior fil
|
/* !! fwrite does not guarantee enough */ |
/* !! fwrite does not guarantee enough */ |
{ |
{ |
int u2 = fwrite(c_addr, sizeof(Char), u1, (FILE *)wfileid); |
int u2 = fwrite(c_addr, sizeof(Char), u1, (FILE *)wfileid); |
wior = FLAG(u2<u1 && ferror((FILE *)wfileid)); |
wior = FILEIO(u2<u1 && ferror((FILE *)wfileid)); |
} |
} |
|
|
flush-file wfileid -- wior file-ext flush_file |
flush-file wfileid -- wior file-ext flush_file |
wior = fflush((FILE *)wfileid); |
wior = FILEIO(fflush((FILE *) wfileid)); |
|
|
comparisons(f, r1 r2, f_, r1, r2, new, new, float, new) |
comparisons(f, r1 r2, f_, r1, r2, new, new, float, new) |
comparisons(f0, r, f_zero_, r, 0., float, new, float, new) |
comparisons(f0, r, f_zero_, r, 0., float, new, float, new) |