add ftell primitive
parent
cb308e8cc8
commit
11d55131de
|
|
@ -486,6 +486,7 @@ tuple
|
||||||
{ "fputc" "io.streams.c" (( ch alien -- )) }
|
{ "fputc" "io.streams.c" (( ch alien -- )) }
|
||||||
{ "fwrite" "io.streams.c" (( string alien -- )) }
|
{ "fwrite" "io.streams.c" (( string alien -- )) }
|
||||||
{ "fflush" "io.streams.c" (( alien -- )) }
|
{ "fflush" "io.streams.c" (( alien -- )) }
|
||||||
|
{ "ftell" "io.streams.c" (( alien -- n )) }
|
||||||
{ "fseek" "io.streams.c" (( alien offset whence -- )) }
|
{ "fseek" "io.streams.c" (( alien offset whence -- )) }
|
||||||
{ "fclose" "io.streams.c" (( alien -- )) }
|
{ "fclose" "io.streams.c" (( alien -- )) }
|
||||||
{ "<wrapper>" "kernel" (( obj -- wrapper )) }
|
{ "<wrapper>" "kernel" (( obj -- wrapper )) }
|
||||||
|
|
|
||||||
11
vm/io.cpp
11
vm/io.cpp
|
|
@ -164,6 +164,17 @@ void factor_vm::primitive_fwrite()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void factor_vm::primitive_ftell()
|
||||||
|
{
|
||||||
|
FILE *file = (FILE *)unbox_alien();
|
||||||
|
off_t offset;
|
||||||
|
|
||||||
|
if((offset = FTELL(file)) == -1)
|
||||||
|
io_error();
|
||||||
|
|
||||||
|
box_signed_8(offset);
|
||||||
|
}
|
||||||
|
|
||||||
void factor_vm::primitive_fseek()
|
void factor_vm::primitive_fseek()
|
||||||
{
|
{
|
||||||
int whence = to_fixnum(dpop());
|
int whence = to_fixnum(dpop());
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ typedef char symbol_char;
|
||||||
#define STRNCMP strncmp
|
#define STRNCMP strncmp
|
||||||
#define STRDUP strdup
|
#define STRDUP strdup
|
||||||
|
|
||||||
|
#define FTELL ftello
|
||||||
#define FSEEK fseeko
|
#define FSEEK fseeko
|
||||||
|
|
||||||
#define FIXNUM_FORMAT "%ld"
|
#define FIXNUM_FORMAT "%ld"
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,8 @@ typedef wchar_t vm_char;
|
||||||
#define STRNCMP wcsncmp
|
#define STRNCMP wcsncmp
|
||||||
#define STRDUP _wcsdup
|
#define STRDUP _wcsdup
|
||||||
#define MIN(a,b) ((a)>(b)?(b):(a))
|
#define MIN(a,b) ((a)>(b)?(b):(a))
|
||||||
#define FSEEK fseek
|
#define FTELL _ftelli64
|
||||||
|
#define FSEEK _fseeki64
|
||||||
|
|
||||||
#ifdef WIN64
|
#ifdef WIN64
|
||||||
#define CELL_FORMAT "%Iu"
|
#define CELL_FORMAT "%Iu"
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@ const primitive_type primitives[] = {
|
||||||
primitive_fputc,
|
primitive_fputc,
|
||||||
primitive_fwrite,
|
primitive_fwrite,
|
||||||
primitive_fflush,
|
primitive_fflush,
|
||||||
|
primitive_ftell,
|
||||||
primitive_fseek,
|
primitive_fseek,
|
||||||
primitive_fclose,
|
primitive_fclose,
|
||||||
primitive_wrapper,
|
primitive_wrapper,
|
||||||
|
|
@ -254,6 +255,7 @@ PRIMITIVE_FORWARD(fread)
|
||||||
PRIMITIVE_FORWARD(fputc)
|
PRIMITIVE_FORWARD(fputc)
|
||||||
PRIMITIVE_FORWARD(fwrite)
|
PRIMITIVE_FORWARD(fwrite)
|
||||||
PRIMITIVE_FORWARD(fflush)
|
PRIMITIVE_FORWARD(fflush)
|
||||||
|
PRIMITIVE_FORWARD(ftell)
|
||||||
PRIMITIVE_FORWARD(fseek)
|
PRIMITIVE_FORWARD(fseek)
|
||||||
PRIMITIVE_FORWARD(fclose)
|
PRIMITIVE_FORWARD(fclose)
|
||||||
PRIMITIVE_FORWARD(wrapper)
|
PRIMITIVE_FORWARD(wrapper)
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@ PRIMITIVE(fread);
|
||||||
PRIMITIVE(fputc);
|
PRIMITIVE(fputc);
|
||||||
PRIMITIVE(fwrite);
|
PRIMITIVE(fwrite);
|
||||||
PRIMITIVE(fflush);
|
PRIMITIVE(fflush);
|
||||||
|
PRIMITIVE(ftell);
|
||||||
PRIMITIVE(fseek);
|
PRIMITIVE(fseek);
|
||||||
PRIMITIVE(fclose);
|
PRIMITIVE(fclose);
|
||||||
PRIMITIVE(wrapper);
|
PRIMITIVE(wrapper);
|
||||||
|
|
|
||||||
|
|
@ -510,6 +510,7 @@ struct factor_vm
|
||||||
void primitive_fread();
|
void primitive_fread();
|
||||||
void primitive_fputc();
|
void primitive_fputc();
|
||||||
void primitive_fwrite();
|
void primitive_fwrite();
|
||||||
|
void primitive_ftell();
|
||||||
void primitive_fseek();
|
void primitive_fseek();
|
||||||
void primitive_fflush();
|
void primitive_fflush();
|
||||||
void primitive_fclose();
|
void primitive_fclose();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue