X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsettings.c;h=313fed0baf191821434d0cc91de087ebb61bc262;hb=a22af84523eb716b947123186bd4f89a3d92945e;hp=0dfa94751f974ff8ba1f6c50d05638c5d7a157d0;hpb=78d5f809e7dedb2fa85ac1961a340089fd2e2711;p=pspp diff --git a/src/data/settings.c b/src/data/settings.c index 0dfa94751f..313fed0baf 100644 --- a/src/data/settings.c +++ b/src/data/settings.c @@ -59,7 +59,13 @@ struct settings double blanks; int max_messages[MSG_N_SEVERITIES]; bool printback; - bool mprint; + + /* Macro settings. */ + bool mexpand; /* Expand macros? */ + bool mprint; /* Print macro expansions? */ + int miterate; /* Maximum iterations of !FOR. */ + int mnest; /* Maximum nested macro expansion levels. */ + int mxloops; size_t workspace; struct fmt_spec default_format; @@ -101,7 +107,12 @@ static struct settings the_settings = { }, .printback = true, - .mprint = true, + + .mexpand = true, + .mprint = false, + .miterate = 1000, + .mnest = 50, + .mxloops = 40, .workspace = 64L * 1024 * 1024, .default_format = { .type = FMT_F, .w = 8, .d = 2 }, @@ -294,6 +305,13 @@ settings_set_include (bool include) the_settings.include = include; } +/* Returns the year that starts the epoch. */ +int +settings_get_epoch (void) +{ + return the_settings.styles.epoch; +} + /* Sets the year that starts the epoch. */ void settings_set_epoch (int epoch) @@ -384,6 +402,20 @@ settings_set_max_messages (enum msg_severity severity, int max) the_settings.max_messages[severity] = max; } +/* Returns whether to expand macro invocations. */ +bool +settings_get_mexpand (void) +{ + return the_settings.mexpand; +} + +/* Sets whether to expand macro invocations. */ +void +settings_set_mexpand (bool mexpand) +{ + the_settings.mexpand = mexpand; +} + /* Independent of get_printback, controls whether the commands generated by macro invocations are displayed. */ bool @@ -400,6 +432,35 @@ settings_set_mprint (bool mprint) the_settings.mprint = mprint; } +/* Returns the limit for loop iterations within a macro. */ +int +settings_get_miterate (void) +{ + return the_settings.miterate; +} + +/* Sets the limit for loop iterations within a macro. */ +void +settings_set_miterate (int miterate) +{ + the_settings.miterate = miterate; +} + +/* Returns the limit for recursion macro expansions. */ +int settings_get_mnest (void) +{ + return the_settings.mnest; +} + +/* Sets the limit for recursion macro expansions. */ +void +settings_set_mnest (int mnest) +{ + the_settings.mnest = mnest; +} + +int settings_get_mxloops (void); +void settings_set_mxloops (int); /* Implied limit of unbounded loop. */ int settings_get_mxloops (void)