void populate_tab(void) { struct autoentry *ent; char *path, *cmd; int error; autoh_t ah; path = cmd = NULL; for (ent = entries; ent != NULL; ent = ent->ae_next) { free(path); free(cmd); error = asprintf(&path, "%s/%s", ent->ae_mnt, ent->ae_path); if (error == -1) err(1, "asprintf"); error = asprintf(&cmd, "mkdir -p %s", path); if (error == -1) err(1, "asprintf"); error = system(cmd); if (error) { warn("system: %s", cmd); continue; } if (autoh_get(ent->ae_mnt, &ah)) { warn("autoh_get %s", path); continue; } error = autoh_togglepath(ah, AUTO_MOUNTER, getpid(), path); if (error) { err(1, "AUTO_MOUNTER %s", path); continue; } if (ent->ae_browse) { error = autoh_togglepath(ah, AUTO_BROWSE, getpid(), path); if (error) err(1, "AUTO_BROWSE %s", path); } if (ent->ae_direct) { error = autoh_togglepath(ah, AUTO_DIRECT, getpid(), path); if (error) err(1, "AUTO_DIRECT %s", path); } if (ent->ae_indirect) { error = autoh_togglepath(ah, AUTO_INDIRECT, getpid(), path); if (error) err(1, "AUTO_INDIRECT %s", path); } autoh_free(ah); } free(path); free(cmd); }
/* release. */ void autoh_freeall(autoh_t *ah) { autoh_t *ahp; ahp = ah; while (*ahp != NULL) { autoh_free(*ahp); ahp++; } safe_free(ah); }