=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/file.c,v retrieving revision 1.8 retrieving revision 1.10 diff -u -p -r1.8 -r1.10 --- OpenXM_contrib2/asir2000/builtin/file.c 2000/11/08 08:44:13 1.8 +++ OpenXM_contrib2/asir2000/builtin/file.c 2000/11/13 01:48:12 1.10 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/file.c,v 1.7 2000/11/08 06:21:17 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/file.c,v 1.9 2000/11/10 08:28:52 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -57,6 +57,7 @@ #if defined(VISUAL) #include +#include /* #define ECGEN_KEYNAME "SoftWare\\Fujitsu\\WinECgen\\1.00.000" */ #define ECGEN_KEYNAME "SoftWare\\Fujitsu\\FSEcParamGen\\V1.0L10" #define ASIR_KEYNAME "SoftWare\\Fujitsu\\Asir\\1999.03.31" @@ -71,15 +72,17 @@ void Pbsave(), Pbload(), Pbload27(); void Pbsave_compat(), Pbload_compat(); void Pbsave_cmo(), Pbload_cmo(); void Popen_file(), Pclose_file(), Pget_line(), Pget_byte(); +void Ppurge_stdin(); extern int des_encryption; extern char *asir_libdir; struct ftab file_tab[] = { + {"purge_stdin",Ppurge_stdin,0}, {"open_file",Popen_file,1}, {"close_file",Pclose_file,1}, {"get_byte",Pget_byte,1}, - {"get_line",Pget_line,1}, + {"get_line",Pget_line,-1}, {"remove_file",Premove_file,1}, {"access",Paccess,1}, {"load",Pload,-1}, @@ -103,6 +106,13 @@ struct ftab file_tab[] = { static FILE *file_ptrs[BUFSIZ]; +void Ppurge_stdin(rp) +Q *rp; +{ + purge_stdin(stdin); + *rp = 0; +} + void Popen_file(arg,rp) NODE arg; Q *rp; @@ -150,7 +160,21 @@ STRING *rp; FILE *fp; fpos_t head; char *str; + char buf[BUFSIZ]; + if ( !arg ) { +#if defined(VISUAL_LIB) + get_string(buf,sizeof(buf)); +#else + fgets(buf,sizeof(buf),stdin); +#endif + i = strlen(buf); + str = (char *)MALLOC_ATOMIC(i+1); + strcpy(str,buf); + MKSTR(*rp,str); + return; + } + asir_assert(ARG0(arg),O_N,"get_line"); i = QTOS((Q)ARG0(arg)); if ( fp = file_ptrs[i] ) { @@ -610,3 +634,17 @@ Q *rp; else *rp = 0; } + +#if defined(VISUAL) +int process_id() +{ + return GetCurrentProcessId(); +} + +void call_exe(name,av) +char *name; +char **av; +{ + _spawnv(_P_WAIT,name,av); +} +#endif