summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2008-03-06 12:16:55 +1100
committerJon Loeliger <jdl@loeliger.com>2008-03-23 08:00:33 -0500
commitf7ea3708c38bd38851baafa83e98d95602e53cbc (patch)
treec6acbffa899a43be4336d7e695715c2fffcc8d60
parent6c2e4d61f83af4233c3270e4f1ec1da01d90466e (diff)
downloaddtc-f7ea3708c38bd38851baafa83e98d95602e53cbc.tar.gz
dtc: Make dtc_open_file() die() if unable to open requested file
All current callers of dtc_open_file() immediately die() if it returns an error. In a non-interative tool like dtc, it's hard to see what you could sensibly do to recover from a failure to open an input file in any case. Therefore, make dtc_open_file() itself die() if there's an error opening the requested file. This removes the need for error checking at the callsites, and ensures a consistent error message in all cases. While we're at it, change the rror message from fstree.c when we fail to open the input directory to match dtc_open_file()'s error message. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--dtc-lexer.l3
-rw-r--r--dtc.c4
-rw-r--r--fstree.c4
-rw-r--r--srcpos.c11
4 files changed, 6 insertions, 16 deletions
diff --git a/dtc-lexer.l b/dtc-lexer.l
index 0cd3f69..a643ab3 100644
--- a/dtc-lexer.l
+++ b/dtc-lexer.l
@@ -259,9 +259,6 @@ void push_input_file(const char *filename)
}
newfile = dtc_open_file(filename, searchptr);
- if (!newfile)
- die("Couldn't open \"%s\": %s", filename, strerror(errno));
-
incl_file = xmalloc(sizeof(struct incl_file));
diff --git a/dtc.c b/dtc.c
index 90e1cce..75517f9 100644
--- a/dtc.c
+++ b/dtc.c
@@ -193,10 +193,6 @@ int main(int argc, char *argv[])
bi = dt_from_fs(arg);
} else if(streq(inform, "dtb")) {
inf = dtc_open_file(arg, NULL);
- if (!inf)
- die("Couldn't open \"%s\": %s\n", arg,
- strerror(errno));
-
bi = dt_from_blob(inf->file);
} else {
die("Unknown input format \"%s\"\n", inform);
diff --git a/fstree.c b/fstree.c
index 2fc5773..0c0bdf0 100644
--- a/fstree.c
+++ b/fstree.c
@@ -31,8 +31,8 @@ static struct node *read_fstree(const char *dirname)
struct node *tree;
d = opendir(dirname);
- if (! d)
- die("opendir(): %s\n", strerror(errno));
+ if (!d)
+ die("Couldn't opendir() \"%s\": %s\n", dirname, strerror(errno));
tree = build_node(NULL, NULL);
diff --git a/srcpos.c b/srcpos.c
index c8eaa1e..9641b76 100644
--- a/srcpos.c
+++ b/srcpos.c
@@ -82,9 +82,8 @@ struct dtc_file *dtc_open_file(const char *fname,
if (fname[0] == '/') {
file->file = fopen(fname, "r");
-
if (!file->file)
- goto out;
+ goto fail;
file->name = strdup(fname);
return file;
@@ -98,15 +97,13 @@ struct dtc_file *dtc_open_file(const char *fname,
return file;
if (errno != ENOENT)
- goto out;
+ goto fail;
search = search->next;
}
-out:
- free(file->dir);
- free(file);
- return NULL;
+fail:
+ die("Couldn't open \"%s\": %s\n", fname, strerror(errno));
}
void dtc_close_file(struct dtc_file *file)