From c0ee9e21157b86eeb151debcc1b8f4b1ca7e9eb8 Mon Sep 17 00:00:00 2001 From: Di-an Jan Date: Tue, 28 Oct 2008 21:38:32 -0400 Subject: [PATCH] Don't overwrite the input file. * src/files.c (output_file_name_check): Fatal error if using input file for output. * tests/output.at: (AT_CHECK_CONFLICTING_OUTPUT): Add return status argument. (Conflicting output files): Add test. --- ChangeLog | 9 +++++++++ src/files.c | 2 ++ tests/output.at | 11 ++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4852ba01..6a2327e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-10-28 Di-an Jan (tiny change) + + Don't overwrite the input file. + * src/files.c (output_file_name_check): Fatal error if using input file + for output. + * tests/output.at: (AT_CHECK_CONFLICTING_OUTPUT): Add return status + argument. + (Conflicting output files): Add test. + 2008-10-28 Akim Demaille Space changes. diff --git a/src/files.c b/src/files.c index 0499a353..d995d187 100644 --- a/src/files.c +++ b/src/files.c @@ -351,6 +351,8 @@ compute_output_file_names (void) void output_file_name_check (char const *file_name) { + if (0 == strcmp (file_name, grammar_file)) + fatal (_("refusing to overwrite the input file %s"), quote (file_name)); { int i; for (i = 0; i < file_names_count; i++) diff --git a/tests/output.at b/tests/output.at index 6e21dc93..3e815d70 100644 --- a/tests/output.at +++ b/tests/output.at @@ -117,8 +117,9 @@ AT_CHECK_OUTPUT([subdir/foo.yy], [%skeleton "lalr1.cc" %defines %verbose], [], [AT_CHECK_NO_SUBDIR_PART([subdir/foo])]) -# AT_CHECK_CONFLICTING_OUTPUT(INPUT-FILE, DIRECTIVES, FLAGS, STDERR) -# ----------------------------------------------------------------------------- +# AT_CHECK_CONFLICTING_OUTPUT(INPUT-FILE, DIRECTIVES, FLAGS, STDERR, +# [EXIT-STATUS]) +# ------------------------------------------------------------------ m4_define([AT_CHECK_CONFLICTING_OUTPUT], [AT_SETUP([Conflicting output files: $2 $3]) case "$1" in @@ -130,7 +131,7 @@ AT_DATA([$1], foo: {}; ]]) -AT_BISON_CHECK([$3 $1], 0, [], [$4]) +AT_BISON_CHECK([$3 $1], $5, [], [$4]) AT_CLEANUP ]) @@ -149,6 +150,10 @@ AT_CHECK_CONFLICTING_OUTPUT([foo.y], [foo.y: warning: conflicting outputs to file `location.hh' ]) +AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y], +[foo.y: fatal error: refusing to overwrite the input file `foo.y' +], 1) + # AT_CHECK_OUTPUT_FILE_NAME(FILE-NAME-PREFIX, [ADDITIONAL-TESTS]) # ----------------------------------------------------------------------------- -- 2.47.2