summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libudev/strv.c11
-rw-r--r--src/libudev/strv.h5
-rw-r--r--src/libudev/util.c70
-rw-r--r--src/libudev/util.h8
4 files changed, 43 insertions, 51 deletions
diff --git a/src/libudev/strv.c b/src/libudev/strv.c
index 45fb6b24a2..3619701e9d 100644
--- a/src/libudev/strv.c
+++ b/src/libudev/strv.c
@@ -144,32 +144,23 @@ char **strv_new(const char *x, ...) {
int strv_push(char ***l, char *value) {
char **c;
- char *v;
unsigned n;
if (!value)
return 0;
- v = strdup(value);
- if (!v)
- return -ENOMEM;
-
n = strv_length(*l);
c = realloc(*l, sizeof(char*) * (n + 2));
- if (!c) {
- free(v);
if (!c)
return -ENOMEM;
- }
- c[n] = v;
c[n] = value;
c[n+1] = NULL;
*l = c;
return 0;
}
-
+
int strv_extend(char ***l, const char *value) {
char *v;
int r;
diff --git a/src/libudev/strv.h b/src/libudev/strv.h
index ba2bc2f589..9fba94e566 100644
--- a/src/libudev/strv.h
+++ b/src/libudev/strv.h
@@ -36,9 +36,10 @@ static inline void strv_freep(char ***l) {
char **strv_copy(char * const *l);
unsigned strv_length(char * const *l) _pure_;
-char **strv_remove(char **l, const char *s);
-int strv_push(char ***l, char *value);
int strv_extend(char ***l, const char *value);
+int strv_push(char ***l, char *value);
+
+char **strv_remove(char **l, const char *s);
char **strv_uniq(char **l);
char **strv_new(const char *x, ...) _sentinel_;
diff --git a/src/libudev/util.c b/src/libudev/util.c
index 5abf6589af..10a786368e 100644
--- a/src/libudev/util.c
+++ b/src/libudev/util.c
@@ -545,6 +545,41 @@ char *strappend(const char *s, const char *suffix) {
return strnappend(s, suffix, suffix ? strlen(suffix) : 0);
}
+char hexchar(int x) {
+ static const char table[16] = "0123456789abcdef";
+
+ return table[x & 15];
+}
+
+char *xescape(const char *s, const char *bad) {
+ char *r, *t;
+ const char *f;
+
+ /* Escapes all chars in bad, in addition to \ and all special
+ * chars, in \xFF style escaping. May be reversed with
+ * cunescape. */
+
+ r = new(char, strlen(s) * 4 + 1);
+ if (!r)
+ return NULL;
+
+ for (f = s, t = r; *f; f++) {
+
+ if ((*f < ' ') || (*f >= 127) ||
+ (*f == '\\') || strchr(bad, *f)) {
+ *(t++) = '\\';
+ *(t++) = 'x';
+ *(t++) = hexchar(*f >> 4);
+ *(t++) = hexchar(*f);
+ } else
+ *(t++) = *f;
+ }
+
+ *t = 0;
+
+ return r;
+}
+
_pure_ static bool ignore_file_allow_backup(const char *filename) {
assert(filename);
@@ -999,12 +1034,6 @@ int fd_inc_sndbuf(int fd, size_t n) {
return 1;
}
-char hexchar(int x) {
- static const char table[16] = "0123456789abcdef";
-
- return table[x & 15];
-}
-
bool in_initrd(void) {
static __thread int saved = -1;
struct statfs s;
@@ -1051,32 +1080,3 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
}
return NULL;
}
-
-char *xescape(const char *s, const char *bad) {
- char *r, *t;
- const char *f;
-
- /* Escapes all chars in bad, in addition to \ and all special
- * chars, in \xFF style escaping. May be reversed with
- * cunescape. */
-
- if (!(r = new(char, strlen(s)*4+1)))
- return NULL;
-
- for (f = s, t = r; *f; f++) {
-
- if (*f < ' ' || *f >= 127 ||
- *f == '\\' || strchr(bad, *f)) {
- *(t++) = '\\';
- *(t++) = 'x';
- *(t++) = hexchar(*f >> 4);
- *(t++) = hexchar(*f);
- } else
- *(t++) = *f;
- }
-
- *t = 0;
-
- return r;
-}
-
diff --git a/src/libudev/util.h b/src/libudev/util.h
index f7058895c0..7b6571ab10 100644
--- a/src/libudev/util.h
+++ b/src/libudev/util.h
@@ -131,6 +131,10 @@ char *strnappend(const char *s, const char *suffix, size_t length);
char *truncate_nl(char *s);
+char hexchar(int x) _const_;
+
+char *xescape(const char *s, const char *bad);
+
bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) _pure_;
bool ignore_file(const char *filename) _pure_;
@@ -235,8 +239,6 @@ extern char **saved_argv;
int fd_inc_sndbuf(int fd, size_t n);
-char hexchar(int x);
-
bool in_initrd(void);
static inline void freep(void *p) {
@@ -274,8 +276,6 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
int (*compar) (const void *, const void *, void *),
void *arg);
-char *xescape(const char *s, const char *bad);
-
static inline void _reset_errno_(int *saved_errno) {
errno = *saved_errno;
}