summaryrefslogtreecommitdiffstats
path: root/src/cryptsetup
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-10-13 02:28:21 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-10-13 23:56:55 +0200
commit1ca208fb4f93e5869704af1812cbff7130a2fc03 (patch)
tree689343b99c76e4d34c625197762de97e8435571d /src/cryptsetup
parentgitignore: ignore clang --analyze output (diff)
downloadsystemd-1ca208fb4f93e5869704af1812cbff7130a2fc03.tar.xz
systemd-1ca208fb4f93e5869704af1812cbff7130a2fc03.zip
Introduce udev object cleanup functions
Diffstat (limited to 'src/cryptsetup')
-rw-r--r--src/cryptsetup/cryptsetup.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
index 4f2f52a28a..0a15b503b0 100644
--- a/src/cryptsetup/cryptsetup.c
+++ b/src/cryptsetup/cryptsetup.c
@@ -25,7 +25,6 @@
#include <mntent.h>
#include <libcryptsetup.h>
-#include <libudev.h>
#include "fileio.h"
#include "log.h"
@@ -34,6 +33,8 @@
#include "strv.h"
#include "ask-password-api.h"
#include "def.h"
+#include "libudev.h"
+#include "udev-util.h"
static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */
static char *opt_cipher = NULL;
@@ -184,7 +185,7 @@ static void log_glue(int level, const char *msg, void *usrptr) {
log_debug("%s", msg);
}
-static char *disk_description(const char *path) {
+static char* disk_description(const char *path) {
static const char name_fields[] = {
"ID_PART_ENTRY_NAME\0"
@@ -193,10 +194,9 @@ static char *disk_description(const char *path) {
"ID_MODEL\0"
};
- struct udev *udev = NULL;
- struct udev_device *device = NULL;
+ _cleanup_udev_unref_ struct udev *udev = NULL;
+ _cleanup_udev_device_unref_ struct udev_device *device = NULL;
struct stat st;
- char *description = NULL;
const char *i;
assert(path);
@@ -213,26 +213,17 @@ static char *disk_description(const char *path) {
device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
if (!device)
- goto finish;
+ return NULL;
NULSTR_FOREACH(i, name_fields) {
const char *name;
name = udev_device_get_property_value(device, i);
- if (!isempty(name)) {
- description = strdup(name);
- break;
- }
+ if (!isempty(name))
+ return strdup(name);
}
-finish:
- if (device)
- udev_device_unref(device);
-
- if (udev)
- udev_unref(udev);
-
- return description;
+ return NULL;
}
static char *disk_mount_point(const char *label) {