X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fset.q;h=4c2d66a3a1d6b450b99837313f602ab34b0ab35f;hb=d2f8593a1f1d39a3264682af0da898a3d67b68cf;hp=f297bc847d77231e6a4ab666bf97727023639ef3;hpb=def7e6026513a3ee7c2b38416b30a2e890e34311;p=pspp diff --git a/src/set.q b/src/set.q index f297bc847d..4c2d66a3a1 100644 --- a/src/set.q +++ b/src/set.q @@ -60,7 +60,7 @@ #include #include "settings.h" -#include +#include "error.h" #include #include #include @@ -158,7 +158,7 @@ static int set_ccx (const char *cc_string, struct set_cust_currency * cc, listing=custom; log=custom; lowres=lores:auto/on/off; - lpi=integer "x>0" "% must be greater than 0"; + lpi=integer "x>0" "%s must be greater than 0"; menus=menus:standard/extended; messages=messages:on/off/terminal/listing/both/none; mexpand=mexp:on/off; @@ -358,8 +358,6 @@ int cmd_set (void) { - lex_match_id ("SET"); - if (!parse_set (&cmd)) return CMD_FAILURE; @@ -597,7 +595,7 @@ stc_custom_pager (struct cmd_set *cmd UNUSED) return 0; if (set_pager) free (set_pager); - set_pager = xstrdup (ds_value (&tokstr)); + set_pager = xstrdup (ds_c_str (&tokstr)); lex_get (); } return 1; @@ -778,7 +776,7 @@ stc_custom_journal (struct cmd_set *cmd UNUSED) set_journaling = 0; if (token == T_STRING) { - set_journal = xstrdup (ds_value (&tokstr)); + set_journal = xstrdup (ds_c_str (&tokstr)); lex_get (); } return 1; @@ -981,17 +979,14 @@ stc_custom_workdev (struct cmd_set *cmd UNUSED) static void -set_viewport(void) +set_viewport(int sig_num UNUSED) { #if HAVE_LIBTERMCAP static char term_buffer[16384]; #endif - /* Workable defaults before we determine the real terminal size. */ - set_viewwidth = 79; - set_viewlength = 24; - - + set_viewwidth = -1; + set_viewlength = -1; #if __DJGPP__ || __BORLANDC__ { @@ -1009,7 +1004,7 @@ set_viewport(void) /* This code stolen from termcap.info, though modified. */ termtype = getenv ("TERM"); if (!termtype) - msg (FE, _("Specify a terminal type with `setenv TERM '.")); + msg (FE, _("Specify a terminal type with the TERM environment variable.")); success = tgetent (term_buffer, termtype); if (success <= 0) @@ -1021,22 +1016,36 @@ set_viewport(void) } else { - set_viewlength = tgetnum ("li"); - set_viewwidth = tgetnum ("co") - 1; + /* NOTE: Do not rely upon tgetnum returning -1 if the value is + not available. It's supposed to do it, but not all platforms + do (eg Cygwin) . + */ + if ( -1 != tgetnum("li")) + set_viewlength = tgetnum ("li"); + + if ( -1 != tgetnum("co")) + set_viewwidth = tgetnum ("co") - 1; } } -#else - { - char *s; +#endif /* HAVE_LIBTERMCAP */ /* Try the environment variables */ - s = getenv("COLUMNS"); - if ( s ) set_viewwidth = atoi(s); + if ( -1 == set_viewwidth ) + { + char *s = getenv("COLUMNS"); + if ( s ) set_viewwidth = atoi(s); + } - s = getenv("LINES"); - if ( s ) set_viewlength = atoi(s); - } -#endif /* !HAVE_LIBTERMCAP */ + if ( -1 == set_viewwidth ) + { + char *s = getenv("LINES"); + if ( s ) set_viewlength = atoi(s); + } + + + /* Last resort. Use hard coded values */ + if ( 0 > set_viewwidth ) set_viewwidth = 79; + if ( 0 > set_viewlength ) set_viewlength = 24; } @@ -1054,8 +1063,8 @@ init_settings(void) cmd.safe = STC_OFF; cmd.dec = STC_DOT; - cmd.n_cpi = 6; - cmd.n_lpi = 10; + cmd.n_cpi[0] = 6; + cmd.n_lpi[0] = 10; cmd.echo = STC_OFF; cmd.more = STC_ON; cmd.headers = STC_YES; @@ -1071,10 +1080,10 @@ init_settings(void) set_journal = xstrdup ("pspp.jnl"); set_journaling = 1; - cmd.n_mxwarns = 100; - cmd.n_mxerrs = 100; - cmd.n_mxloops = 1; - cmd.n_workspace = 4L * 1024 * 1024; + cmd.n_mxwarns[0] = 100; + cmd.n_mxerrs[0] = 100; + cmd.n_mxloops[0] = 1; + cmd.n_workspace[0] = 4L * 1024 * 1024; #if !USE_INTERNAL_PAGER @@ -1112,8 +1121,8 @@ init_settings(void) if ( ! long_view ) { - set_viewport(); - signal (SIGWINCH,set_viewport); + set_viewport (0); + signal (SIGWINCH, set_viewport); } } @@ -1202,13 +1211,13 @@ get_undefined(void) int get_mxwarns(void) { - return cmd.n_mxwarns; + return cmd.n_mxwarns[0]; } int get_mxerrs(void) { - return cmd.n_mxerrs; + return cmd.n_mxerrs[0]; } int @@ -1226,7 +1235,7 @@ get_printback(void) int get_mxloops(void) { - return cmd.n_mxloops; + return cmd.n_mxloops[0]; } int @@ -1251,7 +1260,7 @@ get_endcmd(void) size_t get_max_workspace(void) { - return cmd.n_workspace; + return cmd.n_workspace[0]; } double @@ -1325,6 +1334,56 @@ seed_is_set(unsigned long *seed) } +static int global_algorithm = ENHANCED; +static int cmd_algorithm = ENHANCED; +static int *algorithm = &global_algorithm; + +static int syntax = ENHANCED; + +/* Set the algorithm option globally */ +void +set_algorithm(int x) +{ + global_algorithm = x; +} + +/* Set the algorithm option for this command only */ +void +set_cmd_algorithm(int x) +{ + cmd_algorithm = x; + algorithm = &cmd_algorithm; +} + +/* Unset the algorithm option for this command */ +void +unset_cmd_algorithm(void) +{ + algorithm = &global_algorithm; +} + +/* Return the current algorithm setting */ +int +get_algorithm(void) +{ + return *algorithm; +} + +/* Set the syntax option */ +void +set_syntax(int x) +{ + syntax = x; +} + +/* Get the current syntax setting */ +int +get_syntax(void) +{ + return syntax; +} + + /* Local Variables: mode: c