Example #1
0
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);
}
Example #2
0
/* release. */
void
autoh_freeall(autoh_t *ah)
{
	autoh_t *ahp;

	ahp = ah;

	while (*ahp != NULL) {
		autoh_free(*ahp);
		ahp++;
	}
	safe_free(ah);
}