chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: simplify normalize_env_assignment() a bit
[elogind.git]
/
src
/
shared
/
util.c
diff --git
a/src/shared/util.c
b/src/shared/util.c
index ba86d206150cc92e0b43954d12dfb6d21404e1e6..3411cea34305b783420ec88f2f3cb91dd2a9e6bf 100644
(file)
--- a/
src/shared/util.c
+++ b/
src/shared/util.c
@@
-2783,7
+2783,7
@@
int get_ctty(pid_t pid, dev_t *_devnr, char **r) {
if (k < 0)
return k;
if (k < 0)
return k;
- s
nprintf(fn, sizeof(fn)
, "/dev/char/%u:%u", major(devnr), minor(devnr));
+ s
printf(fn
, "/dev/char/%u:%u", major(devnr), minor(devnr));
k = readlink_malloc(fn, &s);
if (k < 0) {
k = readlink_malloc(fn, &s);
if (k < 0) {
@@
-2941,6
+2941,19
@@
int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root
return rm_rf_children_dangerous(fd, only_dirs, honour_sticky, root_dev);
}
return rm_rf_children_dangerous(fd, only_dirs, honour_sticky, root_dev);
}
+static int file_is_priv_sticky(const char *p) {
+ struct stat st;
+
+ assert(p);
+
+ if (lstat(p, &st) < 0)
+ return -errno;
+
+ return
+ (st.st_uid == 0 || st.st_uid == getuid()) &&
+ (st.st_mode & S_ISVTX);
+}
+
static int rm_rf_internal(const char *path, bool only_dirs, bool delete_root, bool honour_sticky, bool dangerous) {
int fd, r;
struct statfs s;
static int rm_rf_internal(const char *path, bool only_dirs, bool delete_root, bool honour_sticky, bool dangerous) {
int fd, r;
struct statfs s;
@@
-3578,41
+3591,33
@@
char *unquote(const char *s, const char* quotes) {
}
char *normalize_env_assignment(const char *s) {
}
char *normalize_env_assignment(const char *s) {
- _cleanup_free_ char *name = NULL, *value = NULL, *p = NULL;
- char *eq, *r;
+ _cleanup_free_ char *value = NULL;
+ const char *eq;
+ char *p, *name;
eq = strchr(s, '=');
if (!eq) {
eq = strchr(s, '=');
if (!eq) {
- char *t;
+ char *
r, *
t;
r = strdup(s);
if (!r)
return NULL;
t = strstrip(r);
r = strdup(s);
if (!r)
return NULL;
t = strstrip(r);
- if (t
=
= r)
-
return r
;
+ if (t
!
= r)
+
memmove(r, t, strlen(t) + 1)
;
- memmove(r, t, strlen(t) + 1);
return r;
}
return r;
}
- name = strndup(s, eq - s);
- if (!name)
- return NULL;
-
- p = strdup(eq + 1);
- if (!p)
- return NULL;
+ name = strndupa(s, eq - s);
+ p = strdupa(eq + 1);
value = unquote(strstrip(p), QUOTES);
if (!value)
return NULL;
value = unquote(strstrip(p), QUOTES);
if (!value)
return NULL;
- if (asprintf(&r, "%s=%s", strstrip(name), value) < 0)
- r = NULL;
-
- return r;
+ return strjoin(strstrip(name), "=", value, NULL);
}
int wait_for_terminate(pid_t pid, siginfo_t *status) {
}
int wait_for_terminate(pid_t pid, siginfo_t *status) {
@@
-4829,19
+4834,6
@@
int block_get_whole_disk(dev_t d, dev_t *ret) {
return -ENOENT;
}
return -ENOENT;
}
-int file_is_priv_sticky(const char *p) {
- struct stat st;
-
- assert(p);
-
- if (lstat(p, &st) < 0)
- return -errno;
-
- return
- (st.st_uid == 0 || st.st_uid == getuid()) &&
- (st.st_mode & S_ISVTX);
-}
-
static const char *const ioprio_class_table[] = {
[IOPRIO_CLASS_NONE] = "none",
[IOPRIO_CLASS_RT] = "realtime",
static const char *const ioprio_class_table[] = {
[IOPRIO_CLASS_NONE] = "none",
[IOPRIO_CLASS_RT] = "realtime",