aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--internal/cmdlineopt.h3
-rw-r--r--ruby.c21
2 files changed, 15 insertions, 9 deletions
diff --git a/internal/cmdlineopt.h b/internal/cmdlineopt.h
index 483a5d4f75..4958044d78 100644
--- a/internal/cmdlineopt.h
+++ b/internal/cmdlineopt.h
@@ -27,7 +27,8 @@ typedef struct ruby_cmdline_options {
struct rb_rjit_options rjit;
#endif
- int sflag, xflag;
+ signed int sflag: 2;
+ unsigned int xflag: 1;
unsigned int warning: 1;
unsigned int verbose: 1;
unsigned int do_loop: 1;
diff --git a/ruby.c b/ruby.c
index 52a016ae0c..479f8c4857 100644
--- a/ruby.c
+++ b/ruby.c
@@ -811,10 +811,10 @@ toplevel_context(rb_binding_t *bind)
return &bind->block;
}
-static void
-process_sflag(int *sflag)
+static int
+process_sflag(int sflag)
{
- if (*sflag > 0) {
+ if (sflag > 0) {
long n;
const VALUE *args;
VALUE argv = rb_argv;
@@ -871,8 +871,9 @@ process_sflag(int *sflag)
while (n--) {
rb_ary_shift(argv);
}
- *sflag = -1;
+ return -1;
}
+ return sflag;
}
static long proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt);
@@ -2203,7 +2204,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
#undef SET_COMPILE_OPTION
}
ruby_set_argv(argc, argv);
- process_sflag(&opt->sflag);
+ opt->sflag = process_sflag(opt->sflag);
if (opt->e_script) {
VALUE progname = rb_progname;
@@ -2233,7 +2234,9 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
}
else {
VALUE f;
- f = open_load_file(script_name, &opt->xflag);
+ int xflag = opt->xflag;
+ f = open_load_file(script_name, &xflag);
+ opt->xflag = xflag != 0;
rb_parser_set_context(parser, 0, f == rb_stdin);
ast = load_file(parser, opt->script_name, f, 1, opt);
}
@@ -2265,7 +2268,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
return Qfalse;
}
- process_sflag(&opt->sflag);
+ opt->sflag = process_sflag(opt->sflag);
opt->xflag = 0;
if (dump & DUMP_BIT(syntax)) {
@@ -2636,7 +2639,9 @@ void *
rb_parser_load_file(VALUE parser, VALUE fname_v)
{
ruby_cmdline_options_t opt;
- VALUE f = open_load_file(fname_v, &cmdline_options_init(&opt)->xflag);
+ int xflag = 0;
+ VALUE f = open_load_file(fname_v, &xflag);
+ cmdline_options_init(&opt)->xflag = xflag != 0;
return load_file(parser, fname_v, f, 0, &opt);
}