version 1.20, 2004/04/26 05:28:40 |
version 1.22, 2006/02/08 02:11:19 |
|
|
* 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.19 2003/11/12 07:48:50 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/file.c,v 1.21 2006/02/03 03:55:18 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 77 void Pbsave_compat(), Pbload_compat(); |
|
Line 77 void Pbsave_compat(), Pbload_compat(); |
|
void Pbsave_cmo(), Pbload_cmo(); |
void Pbsave_cmo(), Pbload_cmo(); |
void Popen_file(), Pclose_file(), Pget_line(), Pget_byte(), Pput_byte(); |
void Popen_file(), Pclose_file(), Pget_line(), Pget_byte(), Pput_byte(); |
void Ppurge_stdin(); |
void Ppurge_stdin(); |
void Pexec(); |
void Pimport(); |
|
|
extern int des_encryption; |
extern int des_encryption; |
extern char *asir_libdir; |
extern char *asir_libdir; |
Line 92 struct ftab file_tab[] = { |
|
Line 92 struct ftab file_tab[] = { |
|
{"remove_file",Premove_file,1}, |
{"remove_file",Premove_file,1}, |
{"access",Paccess,1}, |
{"access",Paccess,1}, |
{"load",Pload,-1}, |
{"load",Pload,-1}, |
{"exec",Pexec,1}, |
{"import",Pimport,-1}, |
{"which",Pwhich,1}, |
{"which",Pwhich,1}, |
{"loadfiles",Ploadfiles,1}, |
{"loadfiles",Ploadfiles,1}, |
{"output",Poutput,-1}, |
{"output",Poutput,-1}, |
Line 276 void Pload(NODE arg,Q *rp) |
|
Line 276 void Pload(NODE arg,Q *rp) |
|
sprintf(errbuf,"load : \"%s\" not found in the search path",name0); |
sprintf(errbuf,"load : \"%s\" not found in the search path",name0); |
error(errbuf); |
error(errbuf); |
} |
} |
ret = loadfile(name); |
execasirfile(name); |
if ( !ret ) { |
|
sprintf(errbuf,"load : \"%s\" could not be loaded",name); |
|
error(errbuf); |
|
} |
|
break; |
break; |
default: |
default: |
error("load : invalid argument"); |
error("load : invalid argument"); |
Line 290 void Pload(NODE arg,Q *rp) |
|
Line 286 void Pload(NODE arg,Q *rp) |
|
STOQ(ret,*rp); |
STOQ(ret,*rp); |
} |
} |
|
|
void Pexec(NODE arg,Q *rp) |
NODE imported_files; |
|
|
|
void Pimport(NODE arg,Q *rp) |
{ |
{ |
int ret; |
char *name; |
char *name0,*name; |
NODE t,p,opt; |
|
|
name0 = BDY((STRING)ARG0(arg)); |
name = BDY((STRING)ARG0(arg)); |
searchasirpath(name0,&name); |
for ( t = imported_files; t; t = NEXT(t) ) |
if ( !name ) |
if ( !strcmp((char *)BDY(t),name) ) break; |
ret = -1; |
if ( !t ) { |
else { |
Pload(arg,rp); |
execasirfile(name); |
MKNODE(t,name,imported_files); |
ret = 0; |
imported_files = t; |
|
return; |
|
} else if ( current_option ) { |
|
for ( opt = current_option; opt; opt = NEXT(opt) ) { |
|
p = BDY((LIST)BDY(opt)); |
|
if ( !strcmp(BDY((STRING)BDY(p)),"reimport") && BDY(NEXT(p)) ) { |
|
Pload(arg,rp); |
|
return; |
|
} |
|
} |
} |
} |
STOQ(ret,*rp); |
*rp = 0; |
} |
} |
|
|
void Pwhich(NODE arg,STRING *rp) |
void Pwhich(NODE arg,STRING *rp) |