mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 09:21:26 +03:00
fstab-generator: modernize style
This commit is contained in:
parent
15f55e8092
commit
d0aa9ce519
@ -79,8 +79,8 @@ static int mount_find_pri(struct mntent *me, int *ret) {
|
||||
}
|
||||
|
||||
static int add_swap(const char *what, struct mntent *me) {
|
||||
char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL;
|
||||
FILE *f = NULL;
|
||||
char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL;
|
||||
FILE _cleanup_fclose_ *f = NULL;
|
||||
bool noauto, nofail;
|
||||
int r, pri = -1;
|
||||
|
||||
@ -97,25 +97,20 @@ static int add_swap(const char *what, struct mntent *me) {
|
||||
nofail = !!hasmntopt(me, "nofail");
|
||||
|
||||
name = unit_name_from_path(what, ".swap");
|
||||
if (!name) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!name)
|
||||
return log_oom();
|
||||
|
||||
unit = strjoin(arg_dest, "/", name, NULL);
|
||||
if (!unit) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!unit)
|
||||
return log_oom();
|
||||
|
||||
f = fopen(unit, "wxe");
|
||||
if (!f) {
|
||||
r = -errno;
|
||||
if (errno == EEXIST)
|
||||
log_error("Failed to create swap unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
|
||||
else
|
||||
log_error("Failed to create unit file %s: %m", unit);
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
fputs("# Automatically generated by systemd-fstab-generator\n\n"
|
||||
@ -142,56 +137,39 @@ static int add_swap(const char *what, struct mntent *me) {
|
||||
fflush(f);
|
||||
if (ferror(f)) {
|
||||
log_error("Failed to write unit file %s: %m", unit);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (!noauto) {
|
||||
lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL);
|
||||
if (!lnk) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!lnk)
|
||||
return log_oom();
|
||||
|
||||
mkdir_parents_label(lnk, 0755);
|
||||
if (symlink(unit, lnk) < 0) {
|
||||
log_error("Failed to create symlink %s: %m", lnk);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
r = device_name(what, &device);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
|
||||
if (r > 0) {
|
||||
free(lnk);
|
||||
lnk = strjoin(arg_dest, "/", device, ".wants/", name, NULL);
|
||||
if (!lnk) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!lnk)
|
||||
return log_oom();
|
||||
|
||||
mkdir_parents_label(lnk, 0755);
|
||||
if (symlink(unit, lnk) < 0) {
|
||||
log_error("Failed to create symlink %s: %m", lnk);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
r = 0;
|
||||
finish:
|
||||
if (f)
|
||||
fclose(f);
|
||||
|
||||
free(unit);
|
||||
free(lnk);
|
||||
free(name);
|
||||
free(device);
|
||||
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool mount_is_bind(struct mntent *me) {
|
||||
@ -213,8 +191,10 @@ static bool mount_is_network(struct mntent *me) {
|
||||
static int add_mount(const char *what, const char *where, const char *type, const char *opts,
|
||||
int passno, bool wait, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork,
|
||||
const char *source) {
|
||||
char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL;
|
||||
FILE *f = NULL;
|
||||
char _cleanup_free_
|
||||
*name = NULL, *unit = NULL, *lnk = NULL, *device = NULL,
|
||||
*automount_name = NULL, *automount_unit = NULL;
|
||||
FILE _cleanup_fclose_ *f = NULL;
|
||||
int r;
|
||||
const char *post, *pre;
|
||||
|
||||
@ -245,25 +225,20 @@ static int add_mount(const char *what, const char *where, const char *type, cons
|
||||
}
|
||||
|
||||
name = unit_name_from_path(where, ".mount");
|
||||
if (!name) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!name)
|
||||
return log_oom();
|
||||
|
||||
unit = strjoin(arg_dest, "/", name, NULL);
|
||||
if (!unit) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!unit)
|
||||
return log_oom();
|
||||
|
||||
f = fopen(unit, "wxe");
|
||||
if (!f) {
|
||||
r = -errno;
|
||||
if (errno == EEXIST)
|
||||
log_error("Failed to create mount unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
|
||||
else
|
||||
log_error("Failed to create unit file %s: %m", unit);
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
fprintf(f,
|
||||
@ -313,22 +288,18 @@ static int add_mount(const char *what, const char *where, const char *type, cons
|
||||
fflush(f);
|
||||
if (ferror(f)) {
|
||||
log_error("Failed to write unit file %s: %m", unit);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (!noauto) {
|
||||
lnk = strjoin(arg_dest, "/", post, nofail || automount ? ".wants/" : ".requires/", name, NULL);
|
||||
if (!lnk) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!lnk)
|
||||
return log_oom();
|
||||
|
||||
mkdir_parents_label(lnk, 0755);
|
||||
if (symlink(unit, lnk) < 0) {
|
||||
log_error("Failed to create symlink %s: %m", lnk);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (!isbind &&
|
||||
@ -336,21 +307,18 @@ static int add_mount(const char *what, const char *where, const char *type, cons
|
||||
|
||||
r = device_name(what, &device);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
return r;
|
||||
|
||||
if (r > 0) {
|
||||
free(lnk);
|
||||
lnk = strjoin(arg_dest, "/", device, ".wants/", name, NULL);
|
||||
if (!lnk) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!lnk)
|
||||
return log_oom();
|
||||
|
||||
mkdir_parents_label(lnk, 0755);
|
||||
if (symlink(unit, lnk) < 0) {
|
||||
log_error("Failed to create symlink %s: %m", lnk);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -358,23 +326,18 @@ static int add_mount(const char *what, const char *where, const char *type, cons
|
||||
|
||||
if (automount && !path_equal(where, "/")) {
|
||||
automount_name = unit_name_from_path(where, ".automount");
|
||||
if (!name) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!name)
|
||||
return log_oom();
|
||||
|
||||
automount_unit = strjoin(arg_dest, "/", automount_name, NULL);
|
||||
if (!automount_unit) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!automount_unit)
|
||||
return log_oom();
|
||||
|
||||
fclose(f);
|
||||
f = fopen(automount_unit, "wxe");
|
||||
if (!f) {
|
||||
r = -errno;
|
||||
log_error("Failed to create unit file %s: %m", automount_unit);
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
fprintf(f,
|
||||
@ -393,38 +356,22 @@ static int add_mount(const char *what, const char *where, const char *type, cons
|
||||
fflush(f);
|
||||
if (ferror(f)) {
|
||||
log_error("Failed to write unit file %s: %m", automount_unit);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
free(lnk);
|
||||
lnk = strjoin(arg_dest, "/", post, nofail ? ".wants/" : ".requires/", automount_name, NULL);
|
||||
if (!lnk) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!lnk)
|
||||
return log_oom();
|
||||
|
||||
mkdir_parents_label(lnk, 0755);
|
||||
if (symlink(automount_unit, lnk) < 0) {
|
||||
log_error("Failed to create symlink %s: %m", lnk);
|
||||
r = -errno;
|
||||
goto finish;
|
||||
return -errno;
|
||||
}
|
||||
}
|
||||
|
||||
r = 0;
|
||||
finish:
|
||||
if (f)
|
||||
fclose(f);
|
||||
|
||||
free(unit);
|
||||
free(lnk);
|
||||
free(name);
|
||||
free(device);
|
||||
free(automount_name);
|
||||
free(automount_unit);
|
||||
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parse_fstab(void) {
|
||||
@ -443,19 +390,13 @@ static int parse_fstab(void) {
|
||||
}
|
||||
|
||||
while ((me = getmntent(f))) {
|
||||
char *where, *what;
|
||||
char _cleanup_free_ *where = NULL, *what = NULL;
|
||||
int k;
|
||||
|
||||
what = fstab_node_to_udev_node(me->mnt_fsname);
|
||||
if (!what) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
|
||||
where = strdup(me->mnt_dir);
|
||||
if (!where) {
|
||||
if (!what || !where) {
|
||||
r = log_oom();
|
||||
free(what);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
@ -483,9 +424,6 @@ static int parse_fstab(void) {
|
||||
"/etc/fstab");
|
||||
}
|
||||
|
||||
free(what);
|
||||
free(where);
|
||||
|
||||
if (k < 0)
|
||||
r = k;
|
||||
}
|
||||
@ -509,10 +447,8 @@ static int parse_new_root_from_proc_cmdline(void) {
|
||||
}
|
||||
|
||||
opts = strdup("defaults");
|
||||
if (!opts)
|
||||
return log_oom();
|
||||
type = strdup("auto");
|
||||
if (!type)
|
||||
if (!opts || !type)
|
||||
return log_oom();
|
||||
|
||||
/* root= and roofstype= may occur more than once, the last instance should take precedence.
|
||||
@ -571,7 +507,8 @@ static int parse_new_root_from_proc_cmdline(void) {
|
||||
}
|
||||
|
||||
static int parse_proc_cmdline(void) {
|
||||
char *line, *w, *state;
|
||||
char _cleanup_free_ *line = NULL;
|
||||
char *w, *state;
|
||||
int r;
|
||||
size_t l;
|
||||
|
||||
@ -585,13 +522,11 @@ static int parse_proc_cmdline(void) {
|
||||
}
|
||||
|
||||
FOREACH_WORD_QUOTED(w, l, line, state) {
|
||||
char *word;
|
||||
char _cleanup_free_ *word = NULL;
|
||||
|
||||
word = strndup(w, l);
|
||||
if (!word) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!word)
|
||||
return log_oom();
|
||||
|
||||
if (startswith(word, "fstab=")) {
|
||||
r = parse_boolean(word + 6);
|
||||
@ -615,15 +550,9 @@ static int parse_proc_cmdline(void) {
|
||||
|
||||
log_warning("Unknown kernel switch %s. Ignoring.", word);
|
||||
}
|
||||
|
||||
free(word);
|
||||
}
|
||||
|
||||
r = 0;
|
||||
|
||||
finish:
|
||||
free(line);
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
Loading…
Reference in New Issue
Block a user