mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
Introduce _cleanup_endmntent_
This commit is contained in:
parent
9a5cb1371b
commit
5862d652ba
@ -236,31 +236,24 @@ finish:
|
||||
}
|
||||
|
||||
static char *disk_mount_point(const char *label) {
|
||||
char *mp = NULL;
|
||||
_cleanup_free_ char *device = NULL;
|
||||
FILE *f = NULL;
|
||||
_cleanup_endmntent_ FILE *f = NULL;
|
||||
struct mntent *m;
|
||||
|
||||
/* Yeah, we don't support native systemd unit files here for now */
|
||||
|
||||
if (asprintf(&device, "/dev/mapper/%s", label) < 0)
|
||||
goto finish;
|
||||
return NULL;
|
||||
|
||||
f = setmntent("/etc/fstab", "r");
|
||||
if (!f)
|
||||
goto finish;
|
||||
return NULL;
|
||||
|
||||
while ((m = getmntent(f)))
|
||||
if (path_equal(m->mnt_fsname, device)) {
|
||||
mp = strdup(m->mnt_dir);
|
||||
break;
|
||||
}
|
||||
if (path_equal(m->mnt_fsname, device))
|
||||
return strdup(m->mnt_dir);
|
||||
|
||||
finish:
|
||||
if (f)
|
||||
endmntent(f);
|
||||
|
||||
return mp;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int get_password(const char *name, usec_t until, bool accept_cached, char ***passwords) {
|
||||
|
@ -301,15 +301,12 @@ static int add_mount(
|
||||
}
|
||||
|
||||
static int parse_fstab(const char *prefix, bool initrd) {
|
||||
_cleanup_free_ char *fstab_path = NULL;
|
||||
FILE *f;
|
||||
char *fstab_path;
|
||||
_cleanup_endmntent_ FILE *f;
|
||||
int r = 0;
|
||||
struct mntent *me;
|
||||
|
||||
fstab_path = strjoin(strempty(prefix), "/etc/fstab", NULL);
|
||||
if (!fstab_path)
|
||||
return log_oom();
|
||||
|
||||
fstab_path = strappenda(strempty(prefix), "/etc/fstab");
|
||||
f = setmntent(fstab_path, "r");
|
||||
if (!f) {
|
||||
if (errno == ENOENT)
|
||||
@ -328,10 +325,8 @@ static int parse_fstab(const char *prefix, bool initrd) {
|
||||
|
||||
what = fstab_node_to_udev_node(me->mnt_fsname);
|
||||
where = strjoin(strempty(prefix), me->mnt_dir, NULL);
|
||||
if (!what || !where) {
|
||||
r = log_oom();
|
||||
goto finish;
|
||||
}
|
||||
if (!what || !where)
|
||||
return log_oom();
|
||||
|
||||
if (is_path(where))
|
||||
path_kill_slashes(where);
|
||||
@ -369,8 +364,6 @@ static int parse_fstab(const char *prefix, bool initrd) {
|
||||
r = k;
|
||||
}
|
||||
|
||||
finish:
|
||||
endmntent(f);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int ret = EXIT_FAILURE;
|
||||
FILE *f = NULL;
|
||||
_cleanup_endmntent_ FILE *f = NULL;
|
||||
struct mntent* me;
|
||||
Hashmap *pids = NULL;
|
||||
|
||||
@ -57,13 +57,11 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
f = setmntent("/etc/fstab", "r");
|
||||
if (!f) {
|
||||
if (errno == ENOENT) {
|
||||
ret = EXIT_SUCCESS;
|
||||
goto finish;
|
||||
}
|
||||
if (errno == ENOENT)
|
||||
return EXIT_SUCCESS;
|
||||
|
||||
log_error("Failed to open /etc/fstab: %m");
|
||||
goto finish;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
pids = hashmap_new(trivial_hash_func, trivial_compare_func);
|
||||
@ -162,8 +160,5 @@ finish:
|
||||
if (pids)
|
||||
hashmap_free_free(pids);
|
||||
|
||||
if (f)
|
||||
endmntent(f);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
#include <locale.h>
|
||||
#include <mntent.h>
|
||||
|
||||
#include "macro.h"
|
||||
#include "time-util.h"
|
||||
@ -578,6 +579,11 @@ static inline void umaskp(mode_t *u) {
|
||||
umask(*u);
|
||||
}
|
||||
|
||||
static inline void endmntentp(FILE **f) {
|
||||
if (*f)
|
||||
endmntent(*f);
|
||||
}
|
||||
|
||||
#define _cleanup_free_ _cleanup_(freep)
|
||||
#define _cleanup_fclose_ _cleanup_(fclosep)
|
||||
#define _cleanup_pclose_ _cleanup_(pclosep)
|
||||
@ -585,6 +591,7 @@ static inline void umaskp(mode_t *u) {
|
||||
#define _cleanup_closedir_ _cleanup_(closedirp)
|
||||
#define _cleanup_umask_ _cleanup_(umaskp)
|
||||
#define _cleanup_globfree_ _cleanup_(globfree)
|
||||
#define _cleanup_endmntent_ _cleanup_(endmntentp)
|
||||
|
||||
_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
|
||||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
|
||||
|
Loading…
Reference in New Issue
Block a user