--- gforth/prim 1998/11/22 23:18:09 1.15 +++ gforth/prim 1998/12/20 23:17:55 1.20 @@ -1,6 +1,6 @@ \ Gforth primitives -\ Copyright (C) 1995,1996 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -1369,15 +1369,23 @@ n=1; : 1 ; -\+os - key-file wfileid -- n gforth paren_key_file +#ifdef HAS_FILE fflush(stdout); n = key((FILE*)wfileid); +#else +n = key(stdin); +#endif key?-file wfileid -- n facility key_q_file +#ifdef HAS_FILE fflush(stdout); n = key_query((FILE*)wfileid); +#else +n = key_query(stdin); +#endif + +\+os stdin -- wfileid gforth wfileid = (Cell)stdin; @@ -1412,12 +1420,16 @@ FLUSH_ICACHE(c_addr,u); return (Label *)n; (system) c_addr u -- wretval wior gforth peren_system +#ifndef MSDOS int old_tp=terminal_prepped; deprep_terminal(); +#endif wretval=system(cstr(c_addr,u,1)); /* ~ expansion on first part of string? */ wior = IOR(wretval==-1 || (wretval==127 && errno != 0)); +#ifndef MSDOS if (old_tp) prep_terminal(); +#endif getenv c_addr1 u1 -- c_addr2 u2 gforth c_addr2 = getenv(cstr(c_addr1,u1,1)); @@ -1528,6 +1540,7 @@ delete-file c_addr u -- wior file delet wior = IOR(unlink(tilde_cstr(c_addr, u, 1))==-1); rename-file c_addr1 u1 c_addr2 u2 -- wior file-ext rename_file +""rename file c_addr1 u1 to new name c_addr2 u2"" char *s1=tilde_cstr(c_addr2, u2, 1); wior = IOR(rename(tilde_cstr(c_addr1, u1, 0), s1)==-1); @@ -1596,12 +1609,17 @@ write-file c_addr u1 wfileid -- wior fil clearerr((FILE *)wfileid); } +\+ + emit-file c wfileid -- wior gforth emit_file +#ifdef HAS_FILE wior = FILEIO(putc(c, (FILE *)wfileid)==EOF); if (wior) clearerr((FILE *)wfileid); +#else +putc(c, stdout); +#endif -\+ \+file flush-file wfileid -- wior file-ext flush_file @@ -2041,7 +2059,7 @@ open-lib c_addr1 u1 -- u2 gforth open_li #endif u2=(UCell) dlopen(cstr(c_addr1, u1, 1), RTLD_GLOBAL | RTLD_LAZY); #else -# ifdef HAVE_LIBKERNEL32 +# ifdef _WIN32 u2 = (Cell) GetModuleHandle(cstr(c_addr1, u1, 1)); # else #warning Define open-lib! @@ -2053,7 +2071,7 @@ lib-sym c_addr1 u1 u2 -- u3 gforth lib_s #if defined(HAVE_LIBDL) || defined(HAVE_DLOPEN) u3 = (UCell) dlsym((void*)u2,cstr(c_addr1, u1, 1)); #else -# ifdef HAVE_LIBKERNEL32 +# ifdef _WIN32 u3 = (Cell) GetProcAddress((HMODULE)u2, cstr(c_addr1, u1, 1)); # else #warning Define lib-sym! @@ -2073,4 +2091,3 @@ UP=up=(char *)a_addr; : up ! ; Variable UP -