fix(dracut-install): allow globbing for multiple sources
Signed-off-by: Zoltán Böszörményi <zboszor@pr.hu>master
parent
c409108b04
commit
ddcdee9147
|
@ -1318,8 +1318,30 @@ static int install_all(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
_cleanup_free_ char *dest = strdup(argv[i]);
|
if (strchr(argv[i], '*') == NULL) {
|
||||||
ret = dracut_install(argv[i], dest, arg_createdir, arg_resolvedeps, true);
|
_cleanup_free_ char *dest = strdup(argv[i]);
|
||||||
|
ret = dracut_install(argv[i], dest, arg_createdir, arg_resolvedeps, true);
|
||||||
|
} else {
|
||||||
|
_cleanup_free_ char *realsrc = NULL;
|
||||||
|
_cleanup_globfree_ glob_t globbuf;
|
||||||
|
|
||||||
|
ret = asprintf(&realsrc, "%s%s", sysrootdir ? sysrootdir : "", argv[i]);
|
||||||
|
if (ret < 0) {
|
||||||
|
log_error("Out of memory!");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = glob(realsrc, 0, NULL, &globbuf);
|
||||||
|
if (ret == 0) {
|
||||||
|
int j;
|
||||||
|
|
||||||
|
for (j = 0; j < globbuf.gl_pathc; j++) {
|
||||||
|
char *dest = strdup(globbuf.gl_pathv[j] + sysrootdirlen);
|
||||||
|
ret |= dracut_install(globbuf.gl_pathv[j] + sysrootdirlen, dest, arg_createdir, arg_resolvedeps, true);
|
||||||
|
free(dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret != 0) && (!arg_optional)) {
|
if ((ret != 0) && (!arg_optional)) {
|
||||||
|
|
Loading…
Reference in New Issue