From 66dd141637df28bc5928173a7a346b5e61f84b4c Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 16 Nov 2007 17:15:22 +0000 Subject: [PATCH] Move vcard.c into libcitadel. --- citadel/Makefile.in | 5 +- citadel/journaling.c | 3 +- .../autocompletion/serv_autocompletion.c | 1 - citadel/modules/vcard/serv_vcard.c | 1 - citadel/msgbase.c | 1 - citadel/vcard.h | 35 -- libcitadel/Makefile.in | 3 +- libcitadel/lib/libcitadel.h | 27 ++ {citadel => libcitadel/lib}/vcard.c | 86 ++-- webcit/Makefile.in | 4 +- webcit/html2html.c | 1 - webcit/messages.c | 1 - webcit/vcard.c | 384 ------------------ webcit/vcard.h | 39 -- webcit/vcard_edit.c | 1 - 15 files changed, 71 insertions(+), 521 deletions(-) delete mode 100644 citadel/vcard.h rename {citadel => libcitadel/lib}/vcard.c (81%) delete mode 100644 webcit/vcard.c delete mode 100644 webcit/vcard.h diff --git a/citadel/Makefile.in b/citadel/Makefile.in index 79d40df39..9c8445176 100644 --- a/citadel/Makefile.in +++ b/citadel/Makefile.in @@ -29,8 +29,7 @@ EXEEXT=@EXEEXT@ CLIENT_TARGETS=citadel$(EXEEXT) whobbs$(EXEEXT) stress$(EXEEXT) SERVER_TARGETS=citserver -SERV_MODULES=vcard.o \ - crc16.o \ +SERV_MODULES=crc16.o \ md5.o \ ical_dezonify.o @@ -82,7 +81,7 @@ SOURCES=aidepost.c auth.c base64.c chkpwd.c chkpw.c citadel.c citadel_ipc.c \ server_main.c \ setup.c snprintf.c \ stress.c support.c sysdep.c user_ops.c userlist.c \ - whobbs.c vcard.c \ + whobbs.c \ crc16.c journaling.c citadel_dirs.c include Make_sources diff --git a/citadel/journaling.c b/citadel/journaling.c index 9ea772860..e344e6ba9 100644 --- a/citadel/journaling.c +++ b/citadel/journaling.c @@ -45,8 +45,7 @@ #include "html.h" #include "genstamp.h" #include "internet_addressing.h" -#include "vcard.h" -#include "serv_vcard.h" /* Needed for vcard_getuser and extract_inet_email_addrs */ +#include "serv_vcard.h" /* Needed for vcard_getuser and extract_inet_email_addrs */ #include "journaling.h" struct jnlq *jnlq = NULL; /* journal queue */ diff --git a/citadel/modules/autocompletion/serv_autocompletion.c b/citadel/modules/autocompletion/serv_autocompletion.c index 9ca03240c..02f09969c 100644 --- a/citadel/modules/autocompletion/serv_autocompletion.c +++ b/citadel/modules/autocompletion/serv_autocompletion.c @@ -39,7 +39,6 @@ #include "user_ops.h" #include "room_ops.h" #include "database.h" -#include "vcard.h" #include "serv_autocompletion.h" #include "ctdl_module.h" diff --git a/citadel/modules/vcard/serv_vcard.c b/citadel/modules/vcard/serv_vcard.c index 0e3d264f8..7cb8d6d53 100644 --- a/citadel/modules/vcard/serv_vcard.c +++ b/citadel/modules/vcard/serv_vcard.c @@ -60,7 +60,6 @@ #include "database.h" #include "msgbase.h" #include "internet_addressing.h" -#include "vcard.h" #include "serv_vcard.h" #include "ctdl_module.h" diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 48f2eb727..c75cd1e26 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -48,7 +48,6 @@ #include "html.h" #include "genstamp.h" #include "internet_addressing.h" -#include "vcard.h" #include "euidindex.h" #include "journaling.h" #include "citadel_dirs.h" diff --git a/citadel/vcard.h b/citadel/vcard.h deleted file mode 100644 index 077c34345..000000000 --- a/citadel/vcard.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * $Id$ - * - * vCard implementation for Citadel - * - * Copyright (C) 1999 by Art Cancro - * This code is freely redistributable under the terms of the GNU General - * Public License. All other rights reserved. - */ - - -#define CTDL_VCARD_MAGIC 0xa1f9 - -/* - * This data structure represents a vCard object currently in memory. - */ -struct vCard { - int magic; - int numprops; - struct vCardProp { - char *name; - char *value; - } *prop; -}; - - -struct vCard *vcard_new(void); -void vcard_add_prop(struct vCard *v, char *propname, char *propvalue); -struct vCard *vcard_load(char *); -void vcard_free(struct vCard *); -void vcard_set_prop(struct vCard *v, char *name, char *value, int append); -char *vcard_get_prop(struct vCard *v, char *propname, int is_partial, - int instance, int return_propname); -char *vcard_serialize(struct vCard *); -void vcard_fn_to_n(char *vname, char *n, size_t vname_size); diff --git a/libcitadel/Makefile.in b/libcitadel/Makefile.in index a95cf2128..212436bb8 100755 --- a/libcitadel/Makefile.in +++ b/libcitadel/Makefile.in @@ -83,13 +83,14 @@ LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -no-undefined $(VSNFLAG) LINK_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LDFLAGS) -o $@ LINK_CXX_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CXXCOMPILE) $(LDFLAGS) -o $@ -LIB_OBJS = lib/libcitadel.lo lib/mime_parser.lo lib/tools.lo +LIB_OBJS = lib/libcitadel.lo lib/mime_parser.lo lib/tools.lo lib/vcard.lo $(LIBRARY): $(LIB_OBJS) $(LINK_LIB) $(LIB_OBJS) lib/libcitadel.lo: lib/libcitadel.c lib/libcitadel.h lib/mime_parser.lo: lib/mime_parser.c lib/libcitadel.h lib/tools.lo: lib/tools.c lib/libcitadel.h +lib/vcard.lo: lib/vcard.c lib/libcitadel.h .SUFFIXES: .c .cpp .lo .o diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index 99a3a27fb..62d3a4f29 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -189,3 +189,30 @@ int is_msg_in_mset(char *mset, long msgnum); int pattern2(char *search, char *patn); void stripltlen(char *, int *); + + +/* vCard stuff */ + +#define CTDL_VCARD_MAGIC 0xa1f9 + +/* This data structure represents a vCard object currently in memory. */ +struct vCard { + int magic; + int numprops; + struct vCardProp { + char *name; + char *value; + } *prop; +}; + + +struct vCard *vcard_new(void); +void vcard_add_prop(struct vCard *v, char *propname, char *propvalue); +struct vCard *vcard_load(char *); +void vcard_free(struct vCard *); +void vcard_set_prop(struct vCard *v, char *name, char *value, int append); +char *vcard_get_prop(struct vCard *v, char *propname, int is_partial, + int instance, int return_propname); +char *vcard_serialize(struct vCard *); +void vcard_fn_to_n(char *vname, char *n, size_t vname_size); +void remove_charset_attribute(char *strbuf); diff --git a/citadel/vcard.c b/libcitadel/lib/vcard.c similarity index 81% rename from citadel/vcard.c rename to libcitadel/lib/vcard.c index 75a2c9f7c..f0afd4706 100644 --- a/citadel/vcard.c +++ b/libcitadel/lib/vcard.c @@ -1,9 +1,9 @@ /* - * $Id$ + * $Id: vcard.c 5754 2007-11-16 05:52:26Z ajc $ * * vCard implementation for Citadel * - * Copyright (C) 1999-2005 by Art Cancro + * Copyright (C) 1999-2007 by Art Cancro * This code is freely redistributable under the terms of the GNU General * Public License. All other rights reserved. */ @@ -32,18 +32,11 @@ #include #include #include -#include "citadel.h" -#include "server.h" -#include "support.h" -#include "vcard.h" - - - /** - * \brief Constructor (empty vCard) - * \return an empty vcard + * Constructor (empty vCard) + * Returns an empty vcard */ struct vCard *vcard_new() { struct vCard *v; @@ -59,9 +52,8 @@ struct vCard *vcard_new() { } /** - * \brief Remove the "charset=" attribute from a vCard property name + * Remove the "charset=" attribute from a vCard property name * - * \param strbuf The property name string to be stripped */ void remove_charset_attribute(char *strbuf) { @@ -85,11 +77,11 @@ void remove_charset_attribute(char *strbuf) /* - * \brief Add a property to a vCard + * Add a property to a vCard * - * \param v vCard structure to which we are adding - * \param propname name of new property - * \param propvalue value of new property + * v vCard structure to which we are adding + * propname name of new property + * propvalue value of new property */ void vcard_add_prop(struct vCard *v, char *propname, char *propvalue) { ++v->numprops; @@ -102,9 +94,7 @@ void vcard_add_prop(struct vCard *v, char *propname, char *propvalue) { /** - * \brief Constructor (supply serialized vCard) - * \param vtext the text to parse into the new vcard - * \return the parsed VCard + * Constructor - returns a new struct vcard given a serialized vcard */ struct vCard *vcard_load(char *vtext) { struct vCard *v; @@ -187,18 +177,20 @@ struct vCard *vcard_load(char *vtext) { /** - * \brief Fetch the value of a particular key. + * Fetch the value of a particular key. * If is_partial is set to 1, a partial match is ok (for example, * a key of "tel;home" will satisfy a search for "tel"). * Set "instance" to a value higher than 0 to return subsequent instances * of the same key. + * * Set "get_propname" to nonzero to fetch the property name instead of value. - * \param v vCard to get keyvalue from - * \param propname key to retrieve - * \param is_partial dunno??? - * \param instance if >0 return a later token of the value - * \param get_propname if nonzero get the real property name??? - * \return the requested value / token / propertyname + * v vCard to get keyvalue from + * propname key to retrieve + * is_partial + * instance if nonzero return a later token of the value + * get_propname if nonzero get the real property name??? + * + * returns the requested value / token / propertyname */ char *vcard_get_prop(struct vCard *v, char *propname, int is_partial, int instance, int get_propname) { @@ -229,10 +221,8 @@ char *vcard_get_prop(struct vCard *v, char *propname, -/** - * \brief Destructor - * kill a vCard - * \param v the vCard to purge from memory +/* + * Destructor */ void vcard_free(struct vCard *v) { int i; @@ -253,17 +243,17 @@ void vcard_free(struct vCard *v) { -/** - * \brief Set a name/value pair in the card - * \param v vCard to inspect - * \param name key to set - * \param value the value to assign to key - * \param append should we append the value to an existing one? +/* + * Set a name/value pair in the card + * v vCard to manipulate + * name key to set + * value the value to assign to key + * append if nonzero, append rather than replace if this key already exists. */ void vcard_set_prop(struct vCard *v, char *name, char *value, int append) { int i; - if (v->magic != CTDL_VCARD_MAGIC) return; /** Self-check */ + if (v->magic != CTDL_VCARD_MAGIC) return; /* Self-check */ /** If this key is already present, replace it */ if (!append) if (v->numprops) for (i=0; i<(v->numprops); ++i) { @@ -276,7 +266,7 @@ void vcard_set_prop(struct vCard *v, char *name, char *value, int append) { } } - /** Otherwise, append it */ + /* Otherwise, append it */ ++v->numprops; v->prop = realloc(v->prop, (v->numprops * sizeof(struct vCardProp)) ); @@ -287,10 +277,8 @@ void vcard_set_prop(struct vCard *v, char *name, char *value, int append) { -/** - * \brief Serialize a 'struct vcard' into an actual vcard. - * \param v vCard to serialize - * \return the serialized vCard +/* + * Serialize a 'struct vcard' into an actual vcard. */ char *vcard_serialize(struct vCard *v) { @@ -299,10 +287,10 @@ char *vcard_serialize(struct vCard *v) size_t len; int is_utf8 = 0; - if (v->magic != CTDL_VCARD_MAGIC) return NULL; /** self check */ + if (v->magic != CTDL_VCARD_MAGIC) return NULL; /* self check */ /** Figure out how big a buffer we need to allocate */ - len = 64; /** for begin, end, and a little padding for safety */ + len = 64; /* for begin, end, and a little padding for safety */ if (v->numprops) for (i=0; i<(v->numprops); ++i) { len = len + strlen(v->prop[i].name) + @@ -338,11 +326,11 @@ char *vcard_serialize(struct vCard *v) /* - * \brief Convert FN (Friendly Name) into N (Name) + * Convert FN (Friendly Name) into N (Name) * - * \param vname Supplied friendly-name - * \param n Target buffer to store Name - * \param vname_size Size of buffer + * vname Supplied friendly-name + * n Target buffer to store Name + * vname_size Size of buffer */ void vcard_fn_to_n(char *vname, char *n, size_t vname_size) { char lastname[256]; diff --git a/webcit/Makefile.in b/webcit/Makefile.in index 2c024f9d6..8af3349ee 100644 --- a/webcit/Makefile.in +++ b/webcit/Makefile.in @@ -44,7 +44,7 @@ webserver: webserver.o context_loop.o ical_dezonify.o \ cookie_conversion.o locate_host.o floors.o summary.o \ webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o \ roomops.o messages.o userlist.o paging.o sysmsgs.o useredit.o \ - vcard.o vcard_edit.o preferences.o html2html.o listsub.o \ + vcard_edit.o preferences.o html2html.o listsub.o \ graphics.o netconf.o siteconfig.o subst.o rss.o \ calendar.o calendar_tools.o calendar_view.o event.o smtpqueue.o \ availability.o iconbar.o crypto.o inetconf.o notes.o wiki.o \ @@ -56,7 +56,7 @@ webserver: webserver.o context_loop.o ical_dezonify.o \ $(CC) webserver.o context_loop.o cookie_conversion.o \ webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o listsub.o \ roomops.o messages.o userlist.o paging.o sysmsgs.o useredit.o \ - locate_host.o siteconfig.o subst.o vcard.o vcard_edit.o floors.o \ + locate_host.o siteconfig.o subst.o vcard_edit.o floors.o \ graphics.o netconf.o preferences.o html2html.o rss.o \ summary.o calendar.o calendar_tools.o calendar_view.o event.o wiki.o \ availability.o ical_dezonify.o iconbar.o crypto.o inetconf.o notes.o \ diff --git a/webcit/html2html.c b/webcit/html2html.c index f96c23908..893acf2a9 100644 --- a/webcit/html2html.c +++ b/webcit/html2html.c @@ -8,7 +8,6 @@ */ /*@{*/ #include "webcit.h" -#include "vcard.h" #include "webserver.h" diff --git a/webcit/messages.c b/webcit/messages.c index 935e9a367..ed90acba3 100644 --- a/webcit/messages.c +++ b/webcit/messages.c @@ -8,7 +8,6 @@ */ /*@{*/ #include "webcit.h" -#include "vcard.h" #include "webserver.h" #include "groupdav.h" diff --git a/webcit/vcard.c b/webcit/vcard.c deleted file mode 100644 index 50675cc53..000000000 --- a/webcit/vcard.c +++ /dev/null @@ -1,384 +0,0 @@ -/* - * $Id$ - * Copyright (C) 1999-2006 by Art Cancro - * This code is freely redistributable under the terms of the GNU General - * Public License. All other rights reserved. - */ -/** - * \defgroup VCardMain vCard data type implementation for the Citadel system. - * \ingroup VCards - */ -/*@{*/ -#include "webcit.h" -#include "webserver.h" -#include "vcard.h" - -/** - * \brief Constructor (empty vCard) - * \return an empty vcard - */ -struct vCard *vcard_new() { - struct vCard *v; - - v = (struct vCard *) malloc(sizeof(struct vCard)); - if (v == NULL) return v; - - v->magic = CTDL_VCARD_MAGIC; - v->numprops = 0; - v->prop = NULL; - - return v; -} - -/** - * \brief Remove the "charset=" attribute from a vCard property name - * - * \param strbuf The property name string to be stripped - */ -void remove_charset_attribute(char *strbuf) -{ - int i, t; - char compare[256]; - - t = num_tokens(strbuf, ';'); - for (i=0; i colonpos) && (colonpos > 0)) { - namebuf = malloc(colonpos + 1); - valuebuf = malloc(nlpos - colonpos + 1); - strncpy(namebuf, ptr, colonpos); - namebuf[colonpos] = 0; - strncpy(valuebuf, &ptr[colonpos+1], nlpos-colonpos-1); - valuebuf[nlpos-colonpos-1] = 0; - - if (!strcasecmp(namebuf, "end")) { - valid = 0; - } - if ( (!strcasecmp(namebuf, "begin")) - && (!strcasecmp(valuebuf, "vcard")) - ) { - valid = 1; - } - - if ( (valid) && (strcasecmp(namebuf, "begin")) ) { - remove_charset_attribute(namebuf); - ++v->numprops; - v->prop = realloc(v->prop, - (v->numprops * sizeof(struct vCardProp)) - ); - v->prop[v->numprops-1].name = namebuf; - v->prop[v->numprops-1].value = valuebuf; - } - else { - free(namebuf); - free(valuebuf); - } - - } - - while ( (*ptr != '\n') && (*ptr != '\0') ) { - ++ptr; - } - if (*ptr == '\n') ++ptr; - } - - free(mycopy); - return v; -} - - -/** - * \brief Fetch the value of a particular key. - * If is_partial is set to 1, a partial match is ok (for example, - * a key of "tel;home" will satisfy a search for "tel"). - * Set "instance" to a value higher than 0 to return subsequent instances - * of the same key. - * Set "get_propname" to nonzero to fetch the property name instead of value. - * \param v vCard to get keyvalue from - * \param propname key to retrieve - * \param is_partial dunno??? - * \param instance if >0 return a later token of the value - * \param get_propname if nonzero get the real property name??? - * \return the requested value / token / propertyname - */ -char *vcard_get_prop(struct vCard *v, char *propname, - int is_partial, int instance, int get_propname) { - int i; - int found_instance = 0; - int len; - - len = strlen(propname); - if (v->numprops) for (i=0; i<(v->numprops); ++i) { - if ( (!strcasecmp(v->prop[i].name, propname)) - || (propname[0] == 0) - || ( (!strncasecmp(v->prop[i].name, - propname, len)) - && (v->prop[i].name[len] == ';') - && (is_partial) ) ) { - if (instance == found_instance++) { - if (get_propname) { - return(v->prop[i].name); - } - else { - return(v->prop[i].value); - } - } - } - } - - return NULL; -} - - - - -/** - * \brief Destructor - * kill a vCard - * \param v the vCard to purge from memory - */ -void vcard_free(struct vCard *v) { - int i; - - if (v->magic != CTDL_VCARD_MAGIC) return; /* Self-check */ - - if (v->numprops) for (i=0; i<(v->numprops); ++i) { - free(v->prop[i].name); - free(v->prop[i].value); - } - - if (v->prop != NULL) free(v->prop); - - memset(v, 0, sizeof(struct vCard)); - free(v); -} - - - - -/** - * \brief Set a name/value pair in the card - * \param v vCard to inspect - * \param name key to set - * \param value the value to assign to key - * \param append should we append the value to an existing one? - */ -void vcard_set_prop(struct vCard *v, char *name, char *value, int append) { - int i; - - if (v->magic != CTDL_VCARD_MAGIC) return; /** Self-check */ - - /** If this key is already present, replace it */ - if (!append) if (v->numprops) for (i=0; i<(v->numprops); ++i) { - if (!strcasecmp(v->prop[i].name, name)) { - free(v->prop[i].name); - free(v->prop[i].value); - v->prop[i].name = strdup(name); - v->prop[i].value = strdup(value); - return; - } - } - - /** Otherwise, append it */ - ++v->numprops; - v->prop = realloc(v->prop, - (v->numprops * sizeof(struct vCardProp)) ); - v->prop[v->numprops-1].name = strdup(name); - v->prop[v->numprops-1].value = strdup(value); -} - - - - -/** - * \brief Serialize a struct vcard into its standard format. - * \param v vCard to serialize - * \return the serialized vCard - */ -char *vcard_serialize(struct vCard *v) -{ - char *ser; - int i, j; - size_t len; - int is_utf8 = 0; - - if (v->magic != CTDL_VCARD_MAGIC) return NULL; /** self check */ - - /** Figure out how big a buffer we need to allocate */ - len = 64; /** for begin, end, and a little padding for safety */ - if (v->numprops) for (i=0; i<(v->numprops); ++i) { - len = len + - strlen(v->prop[i].name) + - strlen(v->prop[i].value) + 16; - } - - ser = malloc(len); - if (ser == NULL) return NULL; - - safestrncpy(ser, "begin:vcard\r\n", len); - if (v->numprops) for (i=0; i<(v->numprops); ++i) { - if ( (strcasecmp(v->prop[i].name, "end")) && (v->prop[i].value != NULL) ) { - is_utf8 = 0; - for (j=0; jprop[i].value); ++j) { - if ( (v->prop[i].value[j] < 32) || (v->prop[i].value[j] > 126) ) { - is_utf8 = 1; - } - } - strcat(ser, v->prop[i].name); - if (is_utf8) { - strcat(ser, ";charset=UTF-8"); - } - strcat(ser, ":"); - strcat(ser, v->prop[i].value); - strcat(ser, "\r\n"); - } - } - strcat(ser, "end:vcard\r\n"); - - return ser; -} - - - -/* - * \brief Convert FN (Friendly Name) into N (Name) - * - * \param vname Supplied friendly-name - * \param n Target buffer to store Name - * \param vname_size Size of buffer - */ -void vcard_fn_to_n(char *vname, char *n, size_t vname_size) { - char lastname[256]; - char firstname[256]; - char middlename[256]; - char honorific_prefixes[256]; - char honorific_suffixes[256]; - char buf[256]; - - safestrncpy(buf, n, sizeof buf); - - /* Try to intelligently convert the screen name to a - * fully expanded vCard name based on the number of - * words in the name - */ - safestrncpy(lastname, "", sizeof lastname); - safestrncpy(firstname, "", sizeof firstname); - safestrncpy(middlename, "", sizeof middlename); - safestrncpy(honorific_prefixes, "", sizeof honorific_prefixes); - safestrncpy(honorific_suffixes, "", sizeof honorific_suffixes); - - /* Honorific suffixes */ - if (num_tokens(buf, ',') > 1) { - extract_token(honorific_suffixes, buf, (num_tokens(buf, ' ') - 1), ',', - sizeof honorific_suffixes); - remove_token(buf, (num_tokens(buf, ',') - 1), ','); - } - - /* Find a last name */ - extract_token(lastname, buf, (num_tokens(buf, ' ') - 1), ' ', sizeof lastname); - remove_token(buf, (num_tokens(buf, ' ') - 1), ' '); - - /* Find honorific prefixes */ - if (num_tokens(buf, ' ') > 2) { - extract_token(honorific_prefixes, buf, 0, ' ', sizeof honorific_prefixes); - remove_token(buf, 0, ' '); - } - - /* Find a middle name */ - if (num_tokens(buf, ' ') > 1) { - extract_token(middlename, buf, (num_tokens(buf, ' ') - 1), ' ', sizeof middlename); - remove_token(buf, (num_tokens(buf, ' ') - 1), ' '); - } - - /* Anything left is probably the first name */ - safestrncpy(firstname, buf, sizeof firstname); - striplt(firstname); - - /* Compose the structured name */ - snprintf(vname, vname_size, "%s;%s;%s;%s;%s", lastname, firstname, middlename, - honorific_prefixes, honorific_suffixes); -} - - - - - - -/*@}*/ diff --git a/webcit/vcard.h b/webcit/vcard.h deleted file mode 100644 index 33a455905..000000000 --- a/webcit/vcard.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * $Id$ - * Copyright (C) 1999 by Art Cancro - * This code is freely redistributable under the terms of the GNU General - * Public License. All other rights reserved. - */ -/** - * \defgroup VcardHeader vCard implementation for Citadel - * \ingroup VCards - * - */ - -/*@{ */ -#define CTDL_VCARD_MAGIC 0xa1f9 /**< magic byte vcards start with??? */ - -/** - * \brief This data structure represents a vCard object currently in memory. - */ -struct vCard { - int magic; /**< the Magic Byte */ - int numprops; /**< number of properties this vcard will have */ - struct vCardProp { - char *name; /**< Keyname of the property */ - char *value; /**< value of the property */ - } *prop; /**< Vcard Property. Linked list??? */ -}; - - -struct vCard *vcard_new(void); -struct vCard *vcard_load(char *); -void vcard_free(struct vCard *); -void vcard_set_prop(struct vCard *v, char *name, char *value, int append); -char *vcard_get_prop(struct vCard *v, char *propname, int is_partial, - int instance, int return_propname); -char *vcard_serialize(struct vCard *); -void vcard_add_prop(struct vCard *v, char *propname, char *propvalue); - - -/*@}*/ diff --git a/webcit/vcard_edit.c b/webcit/vcard_edit.c index a4067e104..b527217f1 100644 --- a/webcit/vcard_edit.c +++ b/webcit/vcard_edit.c @@ -7,7 +7,6 @@ */ /*@{*/ #include "webcit.h" -#include "vcard.h" /** * \brief Edit the vCard component of a MIME message. -- 2.30.2