Browse Source

fix(dracut-install): allow globbing for multiple sources

Signed-off-by: Zoltán Böszörményi <zboszor@pr.hu>
master
Zoltán Böszörményi 3 years ago committed by Jóhann B. Guðmundsson
parent
commit
ddcdee9147
  1. 26
      install/dracut-install.c

26
install/dracut-install.c

@ -1318,8 +1318,30 @@ static int install_all(int argc, char **argv) @@ -1318,8 +1318,30 @@ static int install_all(int argc, char **argv)
}

} else {
_cleanup_free_ char *dest = strdup(argv[i]);
ret = dracut_install(argv[i], dest, arg_createdir, arg_resolvedeps, true);
if (strchr(argv[i], '*') == NULL) {
_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)) {

Loading…
Cancel
Save