Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Spot
Spot
Commits
267183bd
Commit
267183bd
authored
Sep 03, 2012
by
Alexandre Duret-Lutz
Browse files
ltlfilt: update the exit status in the same way as grep
* src/bin/ltlfilt.cc: Do it.
parent
24a8c031
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/bin/ltlfilt.cc
View file @
267183bd
...
...
@@ -55,7 +55,11 @@ to the extent permitted by law.";
const
char
*
argp_program_bug_address
=
"<"
SPOT_PACKAGE_BUGREPORT
">"
;
const
char
argp_program_doc
[]
=
"\
Read a list of formulas and output them back after some optional processing."
;
Read a list of formulas and output them back after some optional processing.
\v
\
Exit status:
\n
\
0 if some formulas were output (skipped syntax errors do not count)
\n
\
1 if no formula were output (no match)
\n
\
2 if any error has been reported"
;
#define OPT_SPOT 1
#define OPT_SKIP_ERRORS 2
...
...
@@ -178,6 +182,8 @@ struct job
typedef
std
::
vector
<
job
>
jobs_t
;
static
jobs_t
jobs
;
static
bool
one_match
=
false
;
enum
error_style_t
{
drop_errors
,
skip_errors
};
static
error_style_t
error_style
=
drop_errors
;
static
bool
quiet
=
false
;
...
...
@@ -218,7 +224,7 @@ to_int(const char* s)
char
*
endptr
;
int
res
=
strtol
(
s
,
&
endptr
,
10
);
if
(
*
endptr
)
error
(
1
,
0
,
"failed to parse '%s' as an integer."
,
s
);
error
(
2
,
0
,
"failed to parse '%s' as an integer."
,
s
);
return
res
;
}
...
...
@@ -229,7 +235,7 @@ parse_formula_arg(const std::string& input)
spot
::
ltl
::
parse_error_list
pel
;
const
spot
::
ltl
::
formula
*
f
=
spot
::
ltl
::
parse
(
input
,
pel
);
if
(
spot
::
ltl
::
format_parse_errors
(
std
::
cerr
,
input
,
pel
))
error
(
1
,
0
,
"parse error when parsing an argument"
);
error
(
2
,
0
,
"parse error when parsing an argument"
);
return
f
;
}
...
...
@@ -278,7 +284,7 @@ parse_opt(int key, char* arg, struct argp_state* state)
level
=
arg
[
0
]
=
'0'
;
return
0
;
}
error
(
1
,
0
,
"invalid simplification level '%s'"
,
arg
);
error
(
2
,
0
,
"invalid simplification level '%s'"
,
arg
);
}
break
;
case
's'
:
...
...
@@ -373,7 +379,7 @@ parse_opt(int key, char* arg, struct argp_state* state)
case
OPT_EQUIVALENT_TO
:
{
if
(
equivalent_to
)
error
(
1
,
0
,
"only one --equivalent-to option can be given"
);
error
(
2
,
0
,
"only one --equivalent-to option can be given"
);
equivalent_to
=
parse_formula_arg
(
arg
);
break
;
}
...
...
@@ -418,21 +424,15 @@ namespace
if
(
f
)
f
->
destroy
();
if
(
error_style
==
drop_errors
)
return
1
;
if
(
error_style
==
skip_errors
)
{
std
::
cout
<<
input
<<
std
::
endl
;
return
1
;
}
assert
(
!
"unreachable"
);
std
::
cout
<<
input
<<
std
::
endl
;
else
assert
(
error_style
==
drop_errors
);
return
!
quiet
;
}
if
(
negate
)
{
f
=
spot
::
ltl
::
unop
::
instance
(
spot
::
ltl
::
unop
::
Not
,
f
);
}
f
=
spot
::
ltl
::
unop
::
instance
(
spot
::
ltl
::
unop
::
Not
,
f
);
if
(
level
)
{
...
...
@@ -515,6 +515,7 @@ namespace
if
(
matched
)
{
one_match
=
true
;
switch
(
output_format
)
{
case
spot_output
:
...
...
@@ -555,7 +556,7 @@ namespace
errno
=
0
;
std
::
ifstream
input
(
filename
);
if
(
!
input
)
error
(
1
,
errno
,
"cannot open '%s'"
,
filename
);
error
(
2
,
errno
,
"cannot open '%s'"
,
filename
);
return
process_stream
(
input
,
filename
);
}
};
...
...
@@ -595,7 +596,9 @@ run_jobs()
else
error
|=
processor
.
process_file
(
i
->
str
);
}
return
error
;
if
(
error
)
return
2
;
return
one_match
?
0
:
1
;
}
int
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment