chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Always use errno > 0 to help gcc
[elogind.git]
/
src
/
shared
/
util.c
diff --git
a/src/shared/util.c
b/src/shared/util.c
index 0444cf44561360d20f0589e17283c5517fc77ee2..7281cc8ab88a572b507404f28d5332b7a176437f 100644
(file)
--- a/
src/shared/util.c
+++ b/
src/shared/util.c
@@
-59,6
+59,7
@@
#include <limits.h>
#include <langinfo.h>
#include <locale.h>
#include <limits.h>
#include <langinfo.h>
#include <locale.h>
+#include <libgen.h>
#include "macro.h"
#include "util.h"
#include "macro.h"
#include "util.h"
@@
-2264,7
+2265,7
@@
int parse_bytes(const char *t, off_t *bytes) {
errno = 0;
l = strtoll(p, &e, 10);
errno = 0;
l = strtoll(p, &e, 10);
- if (errno
!=
0)
+ if (errno
>
0)
return -errno;
if (l < 0)
return -errno;
if (l < 0)
@@
-2356,6
+2357,24
@@
int dir_is_empty(const char *path) {
}
}
}
}
+char* dirname_malloc(const char *path) {
+ char *d, *dir, *dir2;
+
+ d = strdup(path);
+ if (!d)
+ return NULL;
+ dir = dirname(d);
+ assert(dir);
+
+ if (dir != d) {
+ dir2 = strdup(dir);
+ free(d);
+ return dir2;
+ }
+
+ return dir;
+}
+
unsigned long long random_ull(void) {
_cleanup_close_ int fd;
uint64_t ull;
unsigned long long random_ull(void) {
_cleanup_close_ int fd;
uint64_t ull;
@@
-4172,7
+4191,7
@@
int get_user_creds(
}
if (!p)
}
if (!p)
- return errno
!=
0 ? -errno : -ESRCH;
+ return errno
>
0 ? -errno : -ESRCH;
if (uid)
*uid = p->pw_uid;
if (uid)
*uid = p->pw_uid;
@@
-4253,7
+4272,7
@@
int get_group_creds(const char **groupname, gid_t *gid) {
}
if (!g)
}
if (!g)
- return errno
!=
0 ? -errno : -ESRCH;
+ return errno
>
0 ? -errno : -ESRCH;
if (gid)
*gid = g->gr_gid;
if (gid)
*gid = g->gr_gid;
@@
-5708,7
+5727,7
@@
int create_tmp_dir(char template[], char** dir_name) {
dt = strjoin(d, "/tmp", NULL);
if (!dt) {
r = log_oom();
dt = strjoin(d, "/tmp", NULL);
if (!dt) {
r = log_oom();
- goto fail
2
;
+ goto fail
3
;
}
umask(0000);
}
umask(0000);
@@
-5716,7
+5735,7
@@
int create_tmp_dir(char template[], char** dir_name) {
if (r) {
log_error("Can't create directory %s: %m", dt);
r = -errno;
if (r) {
log_error("Can't create directory %s: %m", dt);
r = -errno;
- goto fail
1
;
+ goto fail
2
;
}
log_debug("Created temporary directory %s", dt);
}
log_debug("Created temporary directory %s", dt);
@@
-5734,6
+5753,8
@@
int create_tmp_dir(char template[], char** dir_name) {
fail1:
rmdir(dt);
fail2:
fail1:
rmdir(dt);
fail2:
+ free(dt);
+fail3:
rmdir(template);
return r;
}
rmdir(template);
return r;
}