=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/miscf.c,v retrieving revision 1.20 retrieving revision 1.25 diff -u -p -r1.20 -r1.25 --- OpenXM_contrib2/asir2000/builtin/miscf.c 2003/11/11 06:14:08 1.20 +++ OpenXM_contrib2/asir2000/builtin/miscf.c 2004/11/16 01:47:31 1.25 @@ -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/miscf.c,v 1.19 2003/10/20 00:21:09 takayama Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/miscf.c,v 1.24 2004/10/27 08:21:47 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -59,9 +59,11 @@ #include #endif +void Pset_secure_mode(); +void Pset_secure_flag(); void Pquit(), Pdebug(), Pnmono(), Pnez(), Popt(), Pshell(), Pheap(); void Ptoplevel(); -void Perror(), Perror3(), Pversion(), Pflist(), Pdelete_history(), Ppause(), Pxpause(); +void Perror(), Perror3(), Pversion(), Pcopyright(), Pflist(), Pdelete_history(), Ppause(), Pxpause(); void Pr2g(), Pread_cmo(), Pwrite_cmo(); void Pgc(),Pbatch(),Psend_progress(); void Pnull_command(); @@ -72,10 +74,13 @@ void Psleep(); void Premove_module(); void Pmodule_list(); void Pmodule_definedp(); +void Ptest(); void delete_history(int,int); struct ftab misc_tab[] = { + {"set_secure_mode",Pset_secure_mode,-1}, + {"set_secure_flag",Pset_secure_flag,-2}, {"module_list",Pmodule_list,0}, {"remove_module",Premove_module,1}, {"module_definedp",Pmodule_definedp,1}, @@ -88,6 +93,7 @@ struct ftab misc_tab[] = { {"shell",Pshell,-2}, {"heap",Pheap,-1}, {"version",Pversion,-99999}, + {"copyright",Pcopyright,0}, {"nmono",Pnmono,1}, {"toplevel",Ptoplevel,-1}, {"error",Perror,1}, @@ -112,6 +118,55 @@ struct ftab misc_tab[] = { {0,0,0}, }; +void Pset_secure_mode(NODE arg,Q *rp) +{ + int s; + if ( argc(arg) ) + setsecuremode(QTOS((Q)ARG0(arg))); + s = getsecuremode(); + STOQ(s,*rp); +} + +void Pset_secure_flag(NODE arg,Q *rp) +{ + int ac,s,status; + Obj f; + char *fname; + + ac = argc(arg); + if ( !ac ) + error("set_secure_flag : a function name must be specified"); + if ( ac == 2 ) + s = QTOS((Q)ARG1(arg)); + else + s = 1; + f = ARG0(arg); + if ( !f ) + error("set_secure_flag : invalid argument"); + switch ( OID(f) ) { + case O_STR: + fname = BDY((STRING)f); break; + case O_P: + fname = NAME(VR((P)f)); break; + default: + error("set_secure_flag : invalid argument"); break; + } + status = setsecureflag(fname,s); + if ( status < 0 ) + error("set_secure_flag : function not found"); + STOQ(s,*rp); +} + +void Ptest(arg,rp) +NODE arg; +Q *rp; +{ + int r; + + r = equalr(CO,ARG0(arg),ARG1(arg)); + STOQ(r,*rp); +} + void Psleep(arg,rp) NODE arg; Q *rp; @@ -305,6 +360,14 @@ Obj *rp; MKLIST(l,n); *rp = (Obj)l; } +} + +char *scopyright(); + +void Pcopyright(rp) +STRING *rp; +{ + MKSTR(*rp,scopyright()); } extern int nez;