summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/parse-duration.c16
-rw-r--r--modules/parse-duration1
3 files changed, 18 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 1b9a2f3b88..af2abe5eb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-03 Bruce Korb <bkorb@gnu.org>
+
+ parse-duration: remove xalloc.h dependency
+ * lib/parse-duration.c (parse_period): handle NULL return from
+ strdup instead of calling xstrdup().
+ * modules/parse-duration: remove "xalloc" dependency
+
2011-03-03 Matthew Booth <mbooth@redhat.com>
bootstrap: honor m4_base when running aclocal
diff --git a/lib/parse-duration.c b/lib/parse-duration.c
index 8c281330a4..0a8c4ada84 100644
--- a/lib/parse-duration.c
+++ b/lib/parse-duration.c
@@ -26,7 +26,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "xalloc.h"
#ifndef NUL
#define NUL '\0'
@@ -381,7 +380,7 @@ parse_time (cch_t * pz)
}
/* Returns a substring of the given string, with spaces at the beginning and at
- the end destructively removed. */
+ the end destructively removed, per SNOBOL. */
static char *
trim (char * pz)
{
@@ -406,13 +405,20 @@ trim (char * pz)
static time_t
parse_period (cch_t * in_pz)
{
- char * pz = xstrdup (in_pz);
- char * pT = strchr (pz, 'T');
+ char * pT;
char * ps;
+ char * pz = strdup (in_pz);
void * fptr = pz;
time_t res = 0;
- if (pT != NUL)
+ if (pz == NULL)
+ {
+ errno = ENOMEM;
+ return BAD_TIME;
+ }
+
+ pT = strchr (pz, 'T');
+ if (pT != NULL)
{
*(pT++) = NUL;
pz = trim (pz);
diff --git a/modules/parse-duration b/modules/parse-duration
index 2e8f3d1b6e..e36c917aaa 100644
--- a/modules/parse-duration
+++ b/modules/parse-duration
@@ -6,7 +6,6 @@ lib/parse-duration.h
lib/parse-duration.c
Depends-on:
-xalloc
configure.ac:
AC_REQUIRE([AC_C_INLINE])