summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2022-07-24 14:39:11 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2022-07-25 09:44:00 -0700
commit49861479860247a738eac6e041d4ec2758bc1a25 (patch)
tree90f288cbf2667231ab6bfd3fd50e749a6331031e
parente5aac38c8094b320d67d352b2b99973622ac9751 (diff)
downloadtar-49861479860247a738eac6e041d4ec2758bc1a25.tar.gz
Work around GCC bug 106428
* src/names.c (read_next_name): Reword and clarify to avoid GCC bug 106428.
-rw-r--r--src/names.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/names.c b/src/names.c
index 43c70f8f..a70bf9ac 100644
--- a/src/names.c
+++ b/src/names.c
@@ -199,7 +199,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state)
case ADD_FILE_OPTION:
name_add_name (arg);
break;
-
+
case ARGP_KEY_ERROR:
{
struct tar_args *args = state->input;
@@ -217,7 +217,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state)
name_add_option (key, arg);
else
return ARGP_ERR_UNKNOWN;
-
+
}
return 0;
}
@@ -1028,8 +1028,10 @@ read_next_name (struct name_elt *ent, struct name_elt *ret)
name_list_advance ();
return 1;
}
- if ((ent->v.file.fp = fopen (ent->v.file.name, "r")) == NULL)
+ FILE *fp = fopen (ent->v.file.name, "r");
+ if (!fp)
open_fatal (ent->v.file.name);
+ ent->v.file.fp = fp;
}
ent->v.file.term = filename_terminator;
ent->v.file.verbatim = verbatim_files_from_option;
@@ -1250,13 +1252,13 @@ add_starting_file (char const *file_name)
remname (head);
free_name (head);
}
-
+
name->prev = NULL;
name->next = namelist;
namelist = name;
if (!nametail)
nametail = namelist;
-
+
name->found_count = 0;
name->matching_flags = INCLUDE_OPTIONS;
name->change_dir = 0;