diff --git a/C/stdpreds.c b/C/stdpreds.c index dbc457297..1d3c6bf4a 100644 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -1526,6 +1526,18 @@ mk_argc_list( USES_REGS1 ) return(t); } +static Term +mk_os_argc_list( USES_REGS1 ) +{ + int i =0; + Term t = TermNil; + for (i = 0 ; i < GLOBAL_argc; i++) { + char *arg = GLOBAL_argv[i]; + t = MkPairTerm(MkAtomTerm(Yap_LookupAtom(arg)),t); + } + return(t); +} + static Int p_argv( USES_REGS1 ) { @@ -1533,6 +1545,13 @@ p_argv( USES_REGS1 ) return Yap_unify(t, ARG1); } +static Int +p_os_argv( USES_REGS1 ) +{ + Term t = mk_os_argc_list( PASS_REGS1 ); + return Yap_unify(t, ARG1); +} + static Int p_executable( USES_REGS1 ) { @@ -1954,6 +1973,7 @@ consisting of just a number. Yap_InitCPred("$statistics_db_size", 4, p_statistics_db_size, SafePredFlag|SyncPredFlag); Yap_InitCPred("$statistics_lu_db_size", 5, p_statistics_lu_db_size, SafePredFlag|SyncPredFlag); Yap_InitCPred("$argv", 1, p_argv, SafePredFlag); + Yap_InitCPred("$os_argv", 1, p_os_argv, SafePredFlag); Yap_InitCPred("$executable", 1, p_executable, SafePredFlag); Yap_InitCPred("$runtime", 2, p_runtime, SafePredFlag|SyncPredFlag); Yap_InitCPred("$cputime", 2, p_cputime, SafePredFlag|SyncPredFlag); diff --git a/os/pl-prologflag.c b/os/pl-prologflag.c index e1df6ae80..bf5e23fdc 100755 --- a/os/pl-prologflag.c +++ b/os/pl-prologflag.c @@ -77,7 +77,7 @@ we want to be able to have a lot of flags and don't harm thread_create/3 too much. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ -static void setArgvPrologFlag(const char *flag, int argc, char **argv); +//static void setArgvPrologFlag(const char *flag, int argc, char **argv); static void setTZPrologFlag(void); static void setVersionPrologFlag(void); static void initPrologFlagTable(void); @@ -1243,11 +1243,14 @@ initPrologFlags(void) setTZPrologFlag(); setOSPrologFlags(); setVersionPrologFlag(); +#ifndef __YAP_PROLOG__ setArgvPrologFlag("os_argv", GD->cmdline.os_argc, GD->cmdline.os_argv); setArgvPrologFlag("argv", GD->cmdline.appl_argc, GD->cmdline.appl_argv); +#endif } +#ifndef __YAP_PROLOG__ static void setArgvPrologFlag(const char *flag, int argc, char **argv) { GET_LD @@ -1267,7 +1270,7 @@ setArgvPrologFlag(const char *flag, int argc, char **argv) setPrologFlag(flag, FT_TERM, l); PL_discard_foreign_frame(fid); } - +#endif static void setTZPrologFlag(void) diff --git a/pl/flags.yap b/pl/flags.yap index 69b4b2db6..c70610133 100644 --- a/pl/flags.yap +++ b/pl/flags.yap @@ -1049,6 +1049,15 @@ yap_flag(toplevel_print_options,Opts) :- yap_flag(host_type,X) :- '$host_type'(X). +yap_flag(host_type,X) :- + '$host_type'(X). + +yap_flag(argv,X) :- + '$argv'(X). + +yap_flag(os_argv,X) :- + '$os_argv'(X). + yap_flag(float_format,X) :- var(X), !, '$float_format'(X). @@ -1118,6 +1127,7 @@ yap_flag(max_threads,X) :- '$yap_system_flag'(agc_margin). '$yap_system_flag'(arithmetic_exceptions). +'$yap_system_flag'(argv). '$yap_system_flag'(chr_toplevel_show_store). '$yap_system_flag'(debugger_print_options). '$yap_system_flag'(discontiguous_warnings). @@ -1144,6 +1154,7 @@ yap_flag(max_threads,X) :- '$yap_system_flag'(max_threads). '$yap_system_flag'(n_of_integer_keys_in_db). '$yap_system_flag'(open_expands_filename). +'$yap_system_flag'(os_argv). '$yap_system_flag'(profiling). '$yap_system_flag'(prompt_alternatives_on). '$yap_system_flag'(redefine_warnings).