src/common.[ch]: Implement “strtoderive”.
authorFlorian Forster <octo@huhu.verplant.org>
Wed, 20 Jan 2010 17:08:49 +0000 (18:08 +0100)
committerFlorian Forster <octo@huhu.verplant.org>
Wed, 20 Jan 2010 17:08:49 +0000 (18:08 +0100)
Simplifies error handling.

src/common.c
src/common.h

index 3695a9b..8c2aeae 100644 (file)
@@ -1142,3 +1142,21 @@ int service_name_to_port_number (const char *service_name)
                return (service_number);
        return (-1);
 } /* int service_name_to_port_number */
+
+int strtoderive (const char *string, derive_t *ret_value) /* {{{ */
+{
+       derive_t tmp;
+       char *endptr;
+
+       if ((string == NULL) || (ret_value == NULL))
+               return (EINVAL);
+
+       errno = 0;
+       endptr = NULL;
+       tmp = (derive_t) strtoll (string, &endptr, /* base = */ 0);
+       if ((endptr == string) || (errno != 0))
+               return (-1);
+
+       *ret_value = tmp;
+       return (0);
+} /* }}} int strtoderive */
index 2d5c794..fc809f2 100644 (file)
@@ -289,4 +289,6 @@ counter_t counter_diff (counter_t old_value, counter_t new_value);
  * (in the range [1-65535]). Returns less than zero on error. */
 int service_name_to_port_number (const char *service_name);
 
+int strtoderive (const char *string, derive_t *ret_value);
+
 #endif /* COMMON_H */