projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rewrote most of the examine command.
[pspp-builds.git]
/
src
/
set.q
diff --git
a/src/set.q
b/src/set.q
index 8d9afd61cf455776a12992a7ae2327d9d96e6cc2..c291c1a87946575f20c37320fc7f49b240da723b 100644
(file)
--- a/
src/set.q
+++ b/
src/set.q
@@
-64,6
+64,7
@@
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
+#include <time.h>
#include "alloc.h"
#include "command.h"
#include "lexer.h"
#include "alloc.h"
#include "command.h"
#include "lexer.h"
@@
-74,7
+75,6
@@
#include "var.h"
#include "format.h"
#include "copyleft.h"
#include "var.h"
#include "format.h"
#include "copyleft.h"
-#include "random.h"
#include "signal.h"
#include "signal.h"
@@
-106,8
+106,7
@@
static int set_listing=1;
static char *set_pager=0;
#endif /* !USE_INTERNAL_PAGER */
static char *set_pager=0;
#endif /* !USE_INTERNAL_PAGER */
-static unsigned long set_seed;
-static int seed_flag=0;
+static gsl_rng *rng;
static int long_view=0;
int set_testing_mode=0;
static int long_view=0;
int set_testing_mode=0;
@@
-122,6
+121,9
@@
static void set_routing (int q, int *setting);
static int set_ccx (const char *cc_string, struct set_cust_currency * cc,
int cc_name);
static int set_ccx (const char *cc_string, struct set_cust_currency * cc,
int cc_name);
+static void set_rng (unsigned long);
+static unsigned long random_seed (void);
+
/* (specification)
"SET" (stc_):
automenu=automenu:on/off;
/* (specification)
"SET" (stc_):
automenu=automenu:on/off;
@@
-158,7
+160,7
@@
static int set_ccx (const char *cc_string, struct set_cust_currency * cc,
listing=custom;
log=custom;
lowres=lores:auto/on/off;
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;
menus=menus:standard/extended;
messages=messages:on/off/terminal/listing/both/none;
mexpand=mexp:on/off;
@@
-301,7
+303,6
@@
aux_stc_custom_results(struct cmd_set *cmd UNUSED)
static int
aux_stc_custom_seed(struct cmd_set *cmd UNUSED)
{
static int
aux_stc_custom_seed(struct cmd_set *cmd UNUSED)
{
- msg(MM, "%ld",set_seed);
return 0;
}
return 0;
}
@@
-595,7
+596,7
@@
stc_custom_pager (struct cmd_set *cmd UNUSED)
return 0;
if (set_pager)
free (set_pager);
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;
lex_get ();
}
return 1;
@@
-704,15
+705,14
@@
stc_custom_seed (struct cmd_set *cmd UNUSED)
{
lex_match ('=');
if (lex_match_id ("RANDOM"))
{
lex_match ('=');
if (lex_match_id ("RANDOM"))
- set_
seed = random_seed(
);
+ set_
rng (random_seed ()
);
else
{
if (!lex_force_num ())
return 0;
else
{
if (!lex_force_num ())
return 0;
- set_
seed = tokval
;
+ set_
rng (tokval)
;
lex_get ();
}
lex_get ();
}
- seed_flag = 1;
return 1;
}
return 1;
}
@@
-776,7
+776,7
@@
stc_custom_journal (struct cmd_set *cmd UNUSED)
set_journaling = 0;
if (token == T_STRING)
{
set_journaling = 0;
if (token == T_STRING)
{
- set_journal = xstrdup (ds_
value
(&tokstr));
+ set_journal = xstrdup (ds_
c_str
(&tokstr));
lex_get ();
}
return 1;
lex_get ();
}
return 1;
@@
-1063,8
+1063,8
@@
init_settings(void)
cmd.safe = STC_OFF;
cmd.dec = STC_DOT;
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;
cmd.echo = STC_OFF;
cmd.more = STC_ON;
cmd.headers = STC_YES;
@@
-1080,10
+1080,10
@@
init_settings(void)
set_journal = xstrdup ("pspp.jnl");
set_journaling = 1;
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
#if !USE_INTERNAL_PAGER
@@
-1211,13
+1211,13
@@
get_undefined(void)
int
get_mxwarns(void)
{
int
get_mxwarns(void)
{
- return cmd.n_mxwarns;
+ return cmd.n_mxwarns
[0]
;
}
int
get_mxerrs(void)
{
}
int
get_mxerrs(void)
{
- return cmd.n_mxerrs;
+ return cmd.n_mxerrs
[0]
;
}
int
}
int
@@
-1235,7
+1235,7
@@
get_printback(void)
int
get_mxloops(void)
{
int
get_mxloops(void)
{
- return cmd.n_mxloops;
+ return cmd.n_mxloops
[0]
;
}
int
}
int
@@
-1260,7
+1260,7
@@
get_endcmd(void)
size_t
get_max_workspace(void)
{
size_t
get_max_workspace(void)
{
- return cmd.n_workspace;
+ return cmd.n_workspace
[0]
;
}
double
}
double
@@
-1313,26
+1313,28
@@
get_pager(void)
return set_pager;
}
return set_pager;
}
-/* Return 1 if the seed has been set since the last time this function
- was called.
- Fill the value pointed to by seed with the seed .
-*/
-int
-seed_is_set(unsigned long *seed)
+gsl_rng *
+get_rng (void)
{
{
- int result = 0;
-
- *seed = set_seed ;
-
- if ( seed_flag )
- result = 1;
-
- seed_flag = 0;
+ if (rng == NULL)
+ set_rng (random_seed ());
+ return rng;
+}
- return result;
-
+static void
+set_rng (unsigned long seed)
+{
+ rng = gsl_rng_alloc (gsl_rng_mt19937);
+ if (rng == NULL)
+ out_of_memory ();
+ gsl_rng_set (rng, seed);
}
}
+static unsigned long
+random_seed (void)
+{
+ return time (0);
+}
static int global_algorithm = ENHANCED;
static int cmd_algorithm = ENHANCED;
static int global_algorithm = ENHANCED;
static int cmd_algorithm = ENHANCED;