chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove hasprefix(), use startswith()
[elogind.git]
/
src
/
shared
/
util.c
diff --git
a/src/shared/util.c
b/src/shared/util.c
index 19ca8ad1358f68f5733cdea1d1a9ec4855f122d2..ca9c2eb9d138486b0f6608226fd8d3137e5e8ba7 100644
(file)
--- a/
src/shared/util.c
+++ b/
src/shared/util.c
@@
-367,7
+367,7
@@
int safe_atolli(const char *s, long long int *ret_lli) {
int safe_atod(const char *s, double *ret_d) {
char *x = NULL;
int safe_atod(const char *s, double *ret_d) {
char *x = NULL;
- double d;
+ double d
= 0
;
assert(s);
assert(ret_d);
assert(s);
assert(ret_d);
@@
-1875,8
+1875,10
@@
int open_terminal(const char *name, int mode) {
* https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554172/comments/245
*/
* https://bugs.launchpad.net/ubuntu/+source/linux/+bug/554172/comments/245
*/
+ assert(!(mode & O_CREAT));
+
for (;;) {
for (;;) {
- fd = open(name, mode);
+ fd = open(name, mode
, 0
);
if (fd >= 0)
break;
if (fd >= 0)
break;
@@
-2828,8
+2830,8
@@
int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct
_pure_ static int is_temporary_fs(struct statfs *s) {
assert(s);
return
_pure_ static int is_temporary_fs(struct statfs *s) {
assert(s);
return
- F_TYPE_
CMP
(s->f_type, TMPFS_MAGIC) ||
- F_TYPE_
CMP
(s->f_type, RAMFS_MAGIC);
+ F_TYPE_
EQUAL
(s->f_type, TMPFS_MAGIC) ||
+ F_TYPE_
EQUAL
(s->f_type, RAMFS_MAGIC);
}
int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) {
}
int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) {
@@
-3330,7
+3332,7
@@
char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigne
r = new0(char, new_length+1);
if (!r)
r = new0(char, new_length+1);
if (!r)
- return
r
;
+ return
NULL
;
x = (new_length * percent) / 100;
x = (new_length * percent) / 100;
@@
-3520,7
+3522,9
@@
DIR *xopendirat(int fd, const char *name, int flags) {
int nfd;
DIR *d;
int nfd;
DIR *d;
- nfd = openat(fd, name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags);
+ assert(!(flags & O_CREAT));
+
+ nfd = openat(fd, name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags, 0);
if (nfd < 0)
return NULL;
if (nfd < 0)
return NULL;
@@
-5420,20
+5424,24
@@
bool is_locale_utf8(void) {
goto out;
}
goto out;
}
- /* For LC_CTYPE=="C" return true,
- * because CTYPE is effectly unset and
- * everything defaults to UTF-8 nowadays. */
-
+ /* For LC_CTYPE=="C" return true, because CTYPE is effectly
+ * unset and everything can do to UTF-8 nowadays. */
set = setlocale(LC_CTYPE, NULL);
if (!set) {
cached_answer = true;
goto out;
}
set = setlocale(LC_CTYPE, NULL);
if (!set) {
cached_answer = true;
goto out;
}
- cached_answer = streq(set, "C");
+ /* Check result, but ignore the result if C was set
+ * explicitly. */
+ cached_answer =
+ streq(set, "C") &&
+ !getenv("LC_ALL") &&
+ !getenv("LC_CTYPE") &&
+ !getenv("LANG");
out:
out:
- return (bool)cached_answer;
+ return (bool)
cached_answer;
}
const char *draw_special_char(DrawSpecialChar ch) {
}
const char *draw_special_char(DrawSpecialChar ch) {
@@
-5748,7
+5756,7
@@
int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear
int create_tmp_dir(char template[], char** dir_name) {
int r = 0;
int create_tmp_dir(char template[], char** dir_name) {
int r = 0;
- char *d, *dt;
+ char *d
= NULL
, *dt;
assert(dir_name);
assert(dir_name);
@@
-5938,3
+5946,34
@@
void parse_user_at_host(char *arg, char **user, char **host) {
*user = arg;
}
}
*user = arg;
}
}
+
+int split_pair(const char *s, const char *sep, char **l, char **r) {
+ char *x, *a, *b;
+
+ assert(s);
+ assert(sep);
+ assert(l);
+ assert(r);
+
+ if (isempty(sep))
+ return -EINVAL;
+
+ x = strstr(s, sep);
+ if (!x)
+ return -EINVAL;
+
+ a = strndup(s, x - s);
+ if (!a)
+ return -ENOMEM;
+
+ b = strdup(x + strlen(sep));
+ if (!b) {
+ free(a);
+ return -ENOMEM;
+ }
+
+ *l = a;
+ *r = b;
+
+ return 0;
+}