summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-07-07 17:40:25 +0200
committerLennart Poettering <lennart@poettering.net>2010-07-07 17:40:25 +0200
commit8f75a603ec833a07a9d9d05782713807297c0c53 (patch)
treef3ef6a0dd8725be483e6c3dfdfc27b3cc6099117 /src
parentafe1be4dbdf142513f6ac1d92e6a20bdc4b20c80 (diff)
util: implement safe_atolu based on safe_atolli/safe_atoi, depending on word size
Diffstat (limited to 'src')
-rw-r--r--src/conf-parser.c1
-rw-r--r--src/hostname-setup.c2
-rw-r--r--src/load-fragment.c1
-rw-r--r--src/service.c1
-rw-r--r--src/util.c34
-rw-r--r--src/util.h40
6 files changed, 34 insertions, 45 deletions
diff --git a/src/conf-parser.c b/src/conf-parser.c
index 13f873869f..a2204530c2 100644
--- a/src/conf-parser.c
+++ b/src/conf-parser.c
@@ -32,7 +32,6 @@
#include "log.h"
#define COMMENTS "#;\n"
-#define LINE_MAX 4096
/* Run the user supplied parser for an assignment */
static int next_assignment(
diff --git a/src/hostname-setup.c b/src/hostname-setup.c
index e9f722e622..24e0f9d9fe 100644
--- a/src/hostname-setup.c
+++ b/src/hostname-setup.c
@@ -30,8 +30,6 @@
#include "util.h"
#include "log.h"
-#define LINE_MAX 4096
-
#if defined(TARGET_FEDORA)
#define FILENAME "/etc/sysconfig/network"
#elif defined(TARGET_SUSE) || defined(TARGET_SLACKWARE)
diff --git a/src/load-fragment.c b/src/load-fragment.c
index 591b73d01b..1cc7c5cc39 100644
--- a/src/load-fragment.c
+++ b/src/load-fragment.c
@@ -41,7 +41,6 @@
#include "unit-name.h"
#define COMMENTS "#;\n"
-#define LINE_MAX 4096
static int config_parse_deps(
const char *filename,
diff --git a/src/service.c b/src/service.c
index 9086590cbb..3bc56d0239 100644
--- a/src/service.c
+++ b/src/service.c
@@ -36,7 +36,6 @@
#define COMMENTS "#;\n"
#define NEWLINES "\n\r"
-#define LINE_MAX 4096
typedef enum RunlevelType {
RUNLEVEL_UP,
diff --git a/src/util.c b/src/util.c
index a5f904dbfd..8360eb68fd 100644
--- a/src/util.c
+++ b/src/util.c
@@ -307,40 +307,6 @@ int safe_atoi(const char *s, int *ret_i) {
return 0;
}
-int safe_atolu(const char *s, long unsigned *ret_lu) {
- char *x = NULL;
- unsigned long l;
-
- assert(s);
- assert(ret_lu);
-
- errno = 0;
- l = strtoul(s, &x, 0);
-
- if (!x || *x || errno)
- return errno ? -errno : -EINVAL;
-
- *ret_lu = l;
- return 0;
-}
-
-int safe_atoli(const char *s, long int *ret_li) {
- char *x = NULL;
- long l;
-
- assert(s);
- assert(ret_li);
-
- errno = 0;
- l = strtol(s, &x, 0);
-
- if (!x || *x || errno)
- return errno ? -errno : -EINVAL;
-
- *ret_li = l;
- return 0;
-}
-
int safe_atollu(const char *s, long long unsigned *ret_llu) {
char *x = NULL;
unsigned long long l;
diff --git a/src/util.h b/src/util.h
index 65a5e66ad1..fed0e670ef 100644
--- a/src/util.h
+++ b/src/util.h
@@ -30,6 +30,7 @@
#include <stdio.h>
#include <signal.h>
#include <sched.h>
+#include <limits.h>
#include "macro.h"
@@ -119,21 +120,48 @@ int parse_pid(const char *s, pid_t* ret_pid);
int safe_atou(const char *s, unsigned *ret_u);
int safe_atoi(const char *s, int *ret_i);
+int safe_atollu(const char *s, unsigned long long *ret_u);
+int safe_atolli(const char *s, long long int *ret_i);
+
+#if __WORDSIZE == 32
+static inline int safe_atolu(const char *s, unsigned long *ret_u) {
+ assert_cc(sizeof(unsigned long) == sizeof(unsigned));
+ return safe_atou(s, (unsigned*) ret_u);
+}
+static inline int safe_atoli(const char *s, long int *ret_u) {
+ assert_cc(sizeof(long int) == sizeof(int));
+ return safe_atoi(s, (int*) ret_u);
+}
+#else
+static inline int safe_atolu(const char *s, unsigned long *ret_u) {
+ assert_cc(sizeof(unsigned long) == sizeof(unsigned long long));
+ return safe_atollu(s, (unsigned long long*) ret_u);
+}
+static inline int safe_atoli(const char *s, long int *ret_u) {
+ assert_cc(sizeof(long int) == sizeof(long long int));
+ return safe_atolli(s, (long long int*) ret_u);
+}
+#endif
+
static inline int safe_atou32(const char *s, uint32_t *ret_u) {
assert_cc(sizeof(uint32_t) == sizeof(unsigned));
return safe_atou(s, (unsigned*) ret_u);
}
-static inline int safe_atoi32(const char *s, int32_t *ret_u) {
+static inline int safe_atoi32(const char *s, int32_t *ret_i) {
assert_cc(sizeof(int32_t) == sizeof(int));
- return safe_atoi(s, (int*) ret_u);
+ return safe_atoi(s, (int*) ret_i);
}
-int safe_atolu(const char *s, unsigned long *ret_u);
-int safe_atoli(const char *s, long int *ret_i);
+static inline int safe_atou64(const char *s, uint64_t *ret_u) {
+ assert_cc(sizeof(uint64_t) == sizeof(unsigned long long));
+ return safe_atollu(s, (unsigned long long*) ret_u);
+}
-int safe_atollu(const char *s, unsigned long long *ret_u);
-int safe_atolli(const char *s, long long int *ret_i);
+static inline int safe_atoi64(const char *s, int64_t *ret_i) {
+ assert_cc(sizeof(int64_t) == sizeof(long long int));
+ return safe_atolli(s, (long long int*) ret_i);
+}
char *split(const char *c, size_t *l, const char *separator, char **state);
char *split_quoted(const char *c, size_t *l, char **state);