![]() ![]() | ![]() |
version 1.7, 2000/11/08 06:21:17 | version 1.10, 2000/11/13 01:48:12 | ||
---|---|---|---|
|
|
||
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, | ||
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. | ||
* | * | ||
* $OpenXM: OpenXM_contrib2/asir2000/builtin/file.c,v 1.6 2000/08/25 08:06:19 noro Exp $ | * $OpenXM: OpenXM_contrib2/asir2000/builtin/file.c,v 1.9 2000/11/10 08:28:52 noro Exp $ | ||
*/ | */ | ||
#include "ca.h" | #include "ca.h" | ||
#include "parse.h" | #include "parse.h" | ||
|
|
||
#if defined(VISUAL) | #if defined(VISUAL) | ||
#include <windows.h> | #include <windows.h> | ||
#include <process.h> | |||
/* #define ECGEN_KEYNAME "SoftWare\\Fujitsu\\WinECgen\\1.00.000" */ | /* #define ECGEN_KEYNAME "SoftWare\\Fujitsu\\WinECgen\\1.00.000" */ | ||
#define ECGEN_KEYNAME "SoftWare\\Fujitsu\\FSEcParamGen\\V1.0L10" | #define ECGEN_KEYNAME "SoftWare\\Fujitsu\\FSEcParamGen\\V1.0L10" | ||
#define ASIR_KEYNAME "SoftWare\\Fujitsu\\Asir\\1999.03.31" | #define ASIR_KEYNAME "SoftWare\\Fujitsu\\Asir\\1999.03.31" | ||
|
|
||
void Pbsave(), Pbload(), Pbload27(); | void Pbsave(), Pbload(), Pbload27(); | ||
void Pbsave_compat(), Pbload_compat(); | void Pbsave_compat(), Pbload_compat(); | ||
void Pbsave_cmo(), Pbload_cmo(); | void Pbsave_cmo(), Pbload_cmo(); | ||
void Popen_file(), Pclose_file(), Pget_line(); | void Popen_file(), Pclose_file(), Pget_line(), Pget_byte(); | ||
void Ppurge_stdin(); | |||
extern int des_encryption; | extern int des_encryption; | ||
extern char *asir_libdir; | extern char *asir_libdir; | ||
struct ftab file_tab[] = { | struct ftab file_tab[] = { | ||
{"purge_stdin",Ppurge_stdin,0}, | |||
{"open_file",Popen_file,1}, | {"open_file",Popen_file,1}, | ||
{"close_file",Pclose_file,1}, | {"close_file",Pclose_file,1}, | ||
{"get_line",Pget_line,1}, | {"get_byte",Pget_byte,1}, | ||
{"get_line",Pget_line,-1}, | |||
{"remove_file",Premove_file,1}, | {"remove_file",Premove_file,1}, | ||
{"access",Paccess,1}, | {"access",Paccess,1}, | ||
{"load",Pload,-1}, | {"load",Pload,-1}, | ||
|
|
||
static FILE *file_ptrs[BUFSIZ]; | static FILE *file_ptrs[BUFSIZ]; | ||
void Ppurge_stdin(rp) | |||
Q *rp; | |||
{ | |||
purge_stdin(stdin); | |||
*rp = 0; | |||
} | |||
void Popen_file(arg,rp) | void Popen_file(arg,rp) | ||
NODE arg; | NODE arg; | ||
Q *rp; | Q *rp; | ||
|
|
||
{ | { | ||
int i; | int i; | ||
asir_assert(ARG0(arg),O_N,"open_file"); | asir_assert(ARG0(arg),O_N,"close_file"); | ||
i = QTOS((Q)ARG0(arg)); | i = QTOS((Q)ARG0(arg)); | ||
if ( file_ptrs[i] ) { | if ( file_ptrs[i] ) { | ||
fclose(file_ptrs[i]); | fclose(file_ptrs[i]); | ||
|
|
||
FILE *fp; | FILE *fp; | ||
fpos_t head; | fpos_t head; | ||
char *str; | char *str; | ||
char buf[BUFSIZ]; | |||
asir_assert(ARG0(arg),O_N,"open_file"); | 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)); | i = QTOS((Q)ARG0(arg)); | ||
if ( fp = file_ptrs[i] ) { | if ( fp = file_ptrs[i] ) { | ||
if ( feof(fp) ) { | if ( feof(fp) ) { | ||
|
|
||
error("get_line : invalid argument"); | error("get_line : invalid argument"); | ||
} | } | ||
void Pget_byte(arg,rp) | |||
NODE arg; | |||
Q *rp; | |||
{ | |||
int i,c; | |||
FILE *fp; | |||
asir_assert(ARG0(arg),O_N,"get_byte"); | |||
i = QTOS((Q)ARG0(arg)); | |||
if ( fp = file_ptrs[i] ) { | |||
if ( feof(fp) ) { | |||
STOQ(-1,*rp); | |||
return; | |||
} | |||
c = getc(fp); | |||
STOQ(c,*rp); | |||
} else | |||
error("get_byte : invalid argument"); | |||
} | |||
void Pload(arg,rp) | void Pload(arg,rp) | ||
NODE arg; | NODE arg; | ||
Q *rp; | Q *rp; | ||
|
|
||
else | else | ||
*rp = 0; | *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 |