static int install_binaries(const char *esp_path, bool force) { struct dirent *de; _cleanup_closedir_ DIR *d = NULL; int r = 0; if (force) { /* Don't create any of these directories when we are * just updating. When we update we'll drop-in our * files (unless there are newer ones already), but we * won't create the directories for them in the first * place. */ r = create_dirs(esp_path); if (r < 0) return r; } d = opendir(BOOTLIBDIR); if (!d) return log_error_errno(errno, "Failed to open \""BOOTLIBDIR"\": %m"); FOREACH_DIRENT(de, d, break) { int k; if (!endswith_no_case(de->d_name, ".efi")) continue; k = copy_one_file(esp_path, de->d_name, force); if (k < 0 && r == 0) r = k; } return r; }
static int install_binaries(const char *esp_path, bool force) { struct dirent *de; DIR *d; int r = 0; if (force) { /* Don't create any of these directories when we are * just updating. When we update we'll drop-in our * files (unless there are newer ones already), but we * won't create the directories for them in the first * place. */ r = create_dirs(esp_path); if (r < 0) return r; } d = opendir(BOOTLIBDIR); if (!d) { fprintf(stderr, "Failed to open "BOOTLIBDIR": %m\n"); return -errno; } while ((de = readdir(d))) { size_t n; int k; if (de->d_name[0] == '.') continue; n = strlen(de->d_name); if (n < 4 || strcmp(de->d_name + n - 4, ".efi") != 0) continue; k = copy_one_file(esp_path, de->d_name, force); if (k < 0 && r == 0) r = k; } closedir(d); return r; }