changeset 14406:8d1ec7b0bc4d

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
author Bruce Korb <bkorb@gnu.org>
date Thu, 03 Mar 2011 15:07:32 -0800
parents 6b613ec494cf
children 45ec4f35abdf
files ChangeLog lib/parse-duration.c modules/parse-duration
diffstat 3 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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 @@
 }
 
 /* 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 @@
 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);
--- a/modules/parse-duration
+++ b/modules/parse-duration
@@ -6,7 +6,6 @@
 lib/parse-duration.c
 
 Depends-on:
-xalloc
 
 configure.ac:
 AC_REQUIRE([AC_C_INLINE])