diff src/libident/support.c @ 0:08114f7dcc23 0.2.21

this is masqmail-0.2.21 from oliver kurth
author meillo@marmaro.de
date Fri, 26 Sep 2008 17:05:23 +0200
parents
children 26e34ae9a3e3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/libident/support.c	Fri Sep 26 17:05:23 2008 +0200
@@ -0,0 +1,86 @@
+/*
+** support.c
+**
+** Author: Pr Emanuelsson <pell@lysator.liu.se>
+** Hacked by: Peter Eriksson <pen@lysator.liu.se>
+*/
+#include <stdio.h>
+#include <ctype.h>
+
+#ifdef HAVE_ANSIHEADERS
+#  include <stdlib.h>
+#  include <string.h>
+#else
+#  define strchr(str, c) index(str, c)
+#endif
+
+#define IN_LIBIDENT_SRC
+#include "ident.h"
+
+
+char *id_strdup __P1(char *, str)
+{
+    char *cp;
+
+    cp = (char *) malloc(strlen(str)+1);
+    if (cp == NULL)
+    {
+#ifdef DEBUG
+	perror("libident: malloc");
+#endif
+        return NULL;
+    }
+
+    strcpy(cp, str);
+
+    return cp;
+}
+
+
+char *id_strtok __P3(char *, cp,
+		      char *, cs,
+		      char *, dc)
+{
+    static char *bp = 0;
+    
+    if (cp)
+	bp = cp;
+    
+    /*
+    ** No delimitor cs - return whole buffer and point at end
+    */
+    if (!cs)
+    {
+	while (*bp)
+	    bp++;
+	return cs;
+    }
+    
+    /*
+    ** Skip leading spaces
+    */
+    while (isspace(*bp))
+	bp++;
+    
+    /*
+    ** No token found?
+    */
+    if (!*bp)
+	return 0;
+    
+    cp = bp;
+    while (*bp && !strchr(cs, *bp))
+	bp++;
+    
+    /*
+    ** Remove trailing spaces
+    */
+    *dc = *bp;
+    for (dc = bp-1; dc > cp && isspace(*dc); dc--)
+	;
+    *++dc = '\0';
+    
+    bp++;
+    
+    return cp;
+}