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 <goliath@infraroot.at>
This commit is contained in:
David Oberhollenzer 2019-01-31 23:23:05 +01:00
parent a32a4cb149
commit effe7bf69a
1 changed files with 15 additions and 1 deletions

View File

@ -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;