]> code.citadel.org Git - citadel.git/blob - citadel/vcard.c
* Began work on vCard. This could be kinda cool.
[citadel.git] / citadel / vcard.c
1 /*
2  * $Id$
3  *
4  * vCard implementation for Citadel/UX
5  *
6  * Copyright (C) 1999 by Art Cancro
7  * This code is freely redistributable under the terms of the GNU General
8  * Public License.  All other rights reserved.
9  */
10
11
12 #include <stdlib.h>
13 #include <unistd.h>
14 #include <stdio.h>
15 #include <ctype.h>
16 #include <string.h>
17
18 #define CTDL_VCARD_MAGIC        0xa1f9
19
20 /*
21  * This data structure represents a vCard object currently in memory.
22  */
23 struct vCard {
24         int magic;
25         int numprops;
26         struct {
27                 char *name;
28                 char *value;
29         } *prop;
30 };
31
32
33
34
35 /* 
36  * Constructor (empty vCard)
37  */
38 struct vCard *new_vcard() {
39         struct vCard *v;
40
41         v = (struct vCard *) malloc(sizeof(struct vCard));
42         if (v == NULL) return v;
43
44         v->magic = CTDL_VCARD_MAGIC;
45         v->numprops = 0;
46         v->prop = NULL;
47
48         return v;
49 }
50
51
52
53 /*
54  * Destructor
55  */
56 void free_vcard(struct vCard *v) {
57         int i;
58
59         if (v->magic != CTDL_VCARD_MAGIC) return;       /* Self-check */
60         
61         if (v->numprops) for (i=0; i<(v->numprops); ++i) {
62                 free(v->prop[i].name);
63                 free(v->prop[i].value);
64         }
65
66         if (v->prop != NULL) free(v->prop);
67         
68         memset(v, 0, sizeof(struct vCard));
69 }