4 * Handles editing of vCard objects.
15 #include <sys/types.h>
17 #include <sys/socket.h>
20 #include <netinet/in.h>
33 void edit_vcard(void) {
35 char *serialized_vcard = NULL;
55 char extrafields[SIZ];
72 sprintf(buf, "OPNA %s|%s", bstr("msgnum"), bstr("partnum") );
80 total_len = atoi(&buf[4]);
81 serialized_vcard = malloc(total_len + 1);
82 while (bytes < total_len) {
84 if ((total_len - bytes) < thisblock) thisblock = total_len - bytes;
85 sprintf(buf, "READ %d|%d", bytes, thisblock);
89 thisblock = atoi(&buf[4]);
90 serv_read(&serialized_vcard[bytes], thisblock);
94 wprintf("Error: %s<BR>\n", &buf[4]);
100 serialized_vcard[total_len + 1] = 0;
102 v = vcard_load(serialized_vcard);
103 free(serialized_vcard);
105 /* Populate the variables for our form */
107 while (key = vcard_get_prop(v, "", 0, i, 1), key != NULL) {
108 value = vcard_get_prop(v, "", 0, i++, 0);
110 if (!strcasecmp(key, "n")) {
111 extract_token(lastname, value, 0, ';');
112 extract_token(firstname, value, 1, ';');
113 extract_token(middlename, value, 2, ';');
114 extract_token(prefix, value, 3, ';');
115 extract_token(suffix, value, 4, ';');
118 else if (!strcasecmp(key, "adr")) {
119 extract_token(pobox, value, 0, ';');
120 extract_token(extadr, value, 1, ';');
121 extract_token(street, value, 2, ';');
122 extract_token(city, value, 3, ';');
123 extract_token(state, value, 4, ';');
124 extract_token(zipcode, value, 5, ';');
125 extract_token(country, value, 6, ';');
129 strcat(extrafields, key);
130 strcat(extrafields, ":");
131 strcat(extrafields, value);
132 strcat(extrafields, "\n");
139 /* Display the form */
140 wprintf("<FORM METHOD=\"POST\" ACTION=\"/do_FIXME_stuff\">\n");
141 wprintf("<H2><IMG VALIGN=CENTER SRC=\"/static/vcard.gif\">"
142 "Contact information for FIXME</H2>\n");
144 wprintf("Last name: "
145 "<INPUT TYPE=\"text\" NAME=\"lastname\" "
146 "VALUE=\"%s\" MAXLENGTH=\"29\"><BR>\n",
148 wprintf("First name: "
149 "<INPUT TYPE=\"text\" NAME=\"firstname\" "
150 "VALUE=\"%s\" MAXLENGTH=\"29\"><BR>\n",
153 "<INPUT TYPE=\"text\" NAME=\"prefix\" "
154 "VALUE=\"%s\" MAXLENGTH=\"5\"><BR>\n",
157 "<INPUT TYPE=\"text\" NAME=\"suffix\" "
158 "VALUE=\"%s\" MAXLENGTH=\"10\"><BR><BR>\n",
161 wprintf("<TABLE border=0><TR><TD>Address - PO box; optional:</TD>"
162 "<TD><INPUT TYPE=\"text\" NAME=\"pobox\" "
163 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
165 wprintf("<TR><TD>Street:</TD>"
166 "<TD><INPUT TYPE=\"text\" NAME=\"extadr\" "
167 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
169 wprintf("<TR><TD> </TD>"
170 "<TD><INPUT TYPE=\"text\" NAME=\"street\" "
171 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
173 wprintf("<TR><TD>City:</TD>"
174 "<TD><INPUT TYPE=\"text\" NAME=\"city\" "
175 "VALUE=\"%s\" MAXLENGTH=\"29\">\n",
178 "<INPUT TYPE=\"text\" NAME=\"state\" "
179 "VALUE=\"%s\" MAXLENGTH=\"2\">\n",
181 wprintf(" ZIP code: "
182 "<INPUT TYPE=\"text\" NAME=\"zipcode\" "
183 "VALUE=\"%s\" MAXLENGTH=\"10\"></TD></TR>\n",
185 wprintf("<TR><TD>Country:</TD>"
186 "<TD><INPUT TYPE=\"text\" NAME=\"country\" "
187 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR></TABLE>\n",
190 wprintf("<TEXTAREA NAME=\"extrafields\" ROWS=10 COLS=80 WIDTH=80>");
191 escputs(extrafields);
192 wprintf("</TEXTAREA><BR>\n");