From effe7bf69a344422169ef7ce293b9d52d7d22a06 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 31 Jan 2019 23:23:05 +0100 Subject: [PATCH] pack: If source path is omitted, interpret as relative path If no source file path is given for the file statement in a package source listing, take the actual file name and interpret it as relative to the source listing file. Signed-off-by: David Oberhollenzer --- main/cmd/pack/filelist.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/main/cmd/pack/filelist.c b/main/cmd/pack/filelist.c index d9dc737..619320c 100644 --- a/main/cmd/pack/filelist.c +++ b/main/cmd/pack/filelist.c @@ -160,12 +160,26 @@ int filelist_mkfile(input_file_t *f, void *obj) { image_entry_t *ent = filelist_mkentry(f, S_IFREG); image_entry_t **listptr = obj; + const char *ptr; struct stat sb; if (ent == NULL) return -1; - ent->data.file.location = strdup(f->line); + if (f->line[0] == '\0') { + ptr = strrchr(f->filename, '/'); + + if (ptr == NULL) { + ent->data.file.location = strdup(ent->name); + } else { + asprintf(&ent->data.file.location, "%.*s/%s", + (int)(ptr - f->filename), f->filename, + ent->name); + } + } else { + ent->data.file.location = strdup(f->line); + } + if (ent->data.file.location == NULL) { oom(f); goto fail;