1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#include <gnome.h>
#include <e-card.h>
#define TEST_VCARD \
"BEGIN:VCARD
" \
"FN:Nat
" \
"N:Friedman;Nat;D;Mr.
" \
"BDAY:1977-08-06
" \
"TEL;WORK:617 679 1984
" \
"TEL;CELL:123 456 7890
" \
"EMAIL;INTERNET:nat@nat.org
" \
"EMAIL;INTERNET:nat@helixcode.com
" \
"ADR;WORK;POSTAL:P.O. Box 101;;;Any Town;CA;91921-1234;
" \
"END:VCARD
" \
"
"
static char *
read_file (char *name)
{
int len;
char buff[65536];
char line[1024];
FILE *f;
f = fopen (name, "r");
if (f == NULL)
g_error ("Unable to open %s!\n", name);
len = 0;
while (fgets (line, sizeof (line), f) != NULL) {
strcpy (buff + len, line);
len += strlen (line);
}
fclose (f);
return g_strdup (buff);
}
int
main (int argc, char **argv)
{
char *cardstr;
ECard *card;
gnome_init ("TestCard", "0.0", argc, argv);
cardstr = NULL;
if (argc == 2)
cardstr = read_file (argv [1]);
if (cardstr == NULL)
cardstr = TEST_VCARD;
#if 0
{
int i;
for ( i = 0; i < 100000; i++ ) {
card = e_card_new (cardstr);
gtk_object_unref (GTK_OBJECT (card));
}
}
#endif
card = e_card_new (cardstr);
if ( card->fname )
printf("Name : %s\n", card->fname);
if ( card->name ) {
printf("Full Name:\n");
if ( card->name->prefix )
printf(" prefix : %s\n", card->name->prefix);
if ( card->name->given )
printf(" given : %s\n", card->name->given);
if ( card->name->additional )
printf(" additional : %s\n", card->name->additional);
if ( card->name->family )
printf(" family : %s\n", card->name->family);
if ( card->name->suffix )
printf(" suffix : %s\n", card->name->suffix);
}
if ( card->bday ) {
printf("BDay : %4d-%02d-%02d\n", card->bday->year, card->bday->month, card->bday->day);
}
if ( card->email ) {
GList *email = card->email;
for ( ; email; email = email->next ) {
printf("Email : %s\n", (char *) email->data);
}
}
if ( card->phone ) {
GList *phone = card->phone;
for ( ; phone; phone = phone->next ) {
ECardPhone *e_card_phone = (ECardPhone *) phone->data;
printf("Phone ; %d : %s\n", e_card_phone->flags, e_card_phone->number);
}
}
if ( card->address ) {
GList *address = card->address;
for ( ; address; address = address->next ) {
ECardDeliveryAddress *del_address = (ECardDeliveryAddress *) address->data;
printf("Address ; %d:\n", del_address->flags);
if ( del_address->po )
printf(" Po : %s\n", del_address->po);
if ( del_address->ext )
printf(" Ext : %s\n", del_address->ext);
if ( del_address->street )
printf(" Street : %s\n", del_address->street);
if ( del_address->city )
printf(" City : %s\n", del_address->city);
if ( del_address->region )
printf(" Region : %s\n", del_address->region);
if ( del_address->code )
printf(" Code : %s\n", del_address->code);
if ( del_address->country )
printf(" Country : %s\n", del_address->country);
if ( del_address->description )
printf(" Description : %s\n", del_address->description);
}
}
gtk_object_unref (GTK_OBJECT (card));
return 0;
}
|