Obsolete sys/time.h and HAVE_TIME_WITH_SYS_TIME
[citadel.git] / libcitadel / lib / vcard.c
index 2c8a7b65f06047ea1a46a9ec6d9297ac06d85364..a3ea54c791976736387d16d090a56835c794db11 100644 (file)
@@ -1,11 +1,10 @@
 /*
- * $Id: vcard.c 5754 2007-11-16 05:52:26Z ajc $
- *
  * vCard implementation for Citadel
  *
- * Copyright (C) 1999-2008 by the citadel.org development team.
- * This code is freely redistributable under the terms of the GNU General
- * Public License.  All other rights reserved.
+ * Copyright (C) 1999-2023 by the citadel.org development team.
+ *
+// This program is open source software.  Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
  */
 
 
 #include <stdio.h>
 #include <fcntl.h>
 #include <signal.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
+#include <time.h>
 #include <ctype.h>
 #include <string.h>
 #include <errno.h>
@@ -63,7 +51,7 @@ void remove_charset_attribute(char *strbuf)
        t = num_tokens(strbuf, ';');
        for (i=0; i<t; ++i) {
                extract_token(compare, strbuf, i, ';', sizeof compare);
-               striplt(compare);
+               string_trim(compare);
                if (!strncasecmp(compare, "charset=", 8)) {
                        remove_token(strbuf, i, ';');
                }
@@ -83,7 +71,7 @@ void remove_charset_attribute(char *strbuf)
  * propname    name of new property
  * propvalue   value of new property
  */
-void vcard_add_prop(struct vCard *v, char *propname, char *propvalue) {
+void vcard_add_prop(struct vCard *v, const char *propname, const char *propvalue) {
        ++v->numprops;
        v->prop = realloc(v->prop,
                (v->numprops * sizeof(struct vCardProp)) );
@@ -91,7 +79,12 @@ void vcard_add_prop(struct vCard *v, char *propname, char *propvalue) {
        v->prop[v->numprops-1].value = strdup(propvalue);
 }
 
-
+/*
+ * Constructor - returns a new struct vcard given a serialized vcard
+ */
+struct vCard *VCardLoad(StrBuf *vbtext) {
+       return vcard_load((char*)ChrPtr(vbtext));
+}
 
 /*
  * Constructor - returns a new struct vcard given a serialized vcard
@@ -123,12 +116,14 @@ struct vCard *vcard_load(char *vtext) {
        }
 
        v = vcard_new();
-       if (v == NULL) return v;
+       if (v == NULL)
+       {
+               free(mycopy);
+               return v;
+       }
 
        ptr = mycopy;
        while (!IsEmptyStr(ptr)) {
-               colonpos = (-1);
-               nlpos = (-1);
                colonpos = pattern2(ptr, ":");
                nlpos = pattern2(ptr, "\n");
 
@@ -381,7 +376,7 @@ void vcard_fn_to_n(char *vname, char *n, size_t vname_size) {
 
        /* Anything left is probably the first name */
        safestrncpy(firstname, buf, sizeof firstname);
-       striplt(firstname);
+       string_trim(firstname);
 
        /* Compose the structured name */
        snprintf(vname, vname_size, "%s;%s;%s;%s;%s", lastname, firstname, middlename,