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;
57 char extrafields[SIZ];
76 sprintf(buf, "OPNA %s|%s", bstr("msgnum"), bstr("partnum") );
84 total_len = atoi(&buf[4]);
85 serialized_vcard = malloc(total_len + 1);
86 while (bytes < total_len) {
88 if ((total_len - bytes) < thisblock) thisblock = total_len - bytes;
89 sprintf(buf, "READ %d|%d", bytes, thisblock);
93 thisblock = atoi(&buf[4]);
94 serv_read(&serialized_vcard[bytes], thisblock);
98 wprintf("Error: %s<BR>\n", &buf[4]);
104 serialized_vcard[total_len + 1] = 0;
106 v = vcard_load(serialized_vcard);
107 free(serialized_vcard);
109 /* Populate the variables for our form */
111 while (key = vcard_get_prop(v, "", 0, i, 1), key != NULL) {
112 value = vcard_get_prop(v, "", 0, i++, 0);
114 if (!strcasecmp(key, "n")) {
115 extract_token(lastname, value, 0, ';');
116 extract_token(firstname, value, 1, ';');
117 extract_token(middlename, value, 2, ';');
118 extract_token(prefix, value, 3, ';');
119 extract_token(suffix, value, 4, ';');
122 else if (!strcasecmp(key, "adr")) {
123 extract_token(pobox, value, 0, ';');
124 extract_token(extadr, value, 1, ';');
125 extract_token(street, value, 2, ';');
126 extract_token(city, value, 3, ';');
127 extract_token(state, value, 4, ';');
128 extract_token(zipcode, value, 5, ';');
129 extract_token(country, value, 6, ';');
132 else if (!strcasecmp(key, "tel;home")) {
133 extract_token(hometel, value, 0, ';');
136 else if (!strcasecmp(key, "tel;work")) {
137 extract_token(hometel, value, 0, ';');
141 strcat(extrafields, key);
142 strcat(extrafields, ":");
143 strcat(extrafields, value);
144 strcat(extrafields, "\n");
151 /* Display the form */
152 wprintf("<FORM METHOD=\"POST\" ACTION=\"/do_FIXME_stuff\">\n");
153 wprintf("<H2><IMG VALIGN=CENTER SRC=\"/static/vcard.gif\">"
154 "Contact information for FIXME</H2>\n");
156 wprintf("Last name: "
157 "<INPUT TYPE=\"text\" NAME=\"lastname\" "
158 "VALUE=\"%s\" MAXLENGTH=\"29\"><BR>\n",
160 wprintf("First name: "
161 "<INPUT TYPE=\"text\" NAME=\"firstname\" "
162 "VALUE=\"%s\" MAXLENGTH=\"29\"><BR>\n",
165 "<INPUT TYPE=\"text\" NAME=\"prefix\" "
166 "VALUE=\"%s\" MAXLENGTH=\"5\"><BR>\n",
169 "<INPUT TYPE=\"text\" NAME=\"suffix\" "
170 "VALUE=\"%s\" MAXLENGTH=\"10\"><BR><BR>\n",
173 wprintf("<TABLE border=0><TR><TD>Address - PO box; optional:</TD>"
174 "<TD><INPUT TYPE=\"text\" NAME=\"pobox\" "
175 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
177 wprintf("<TR><TD>Street:</TD>"
178 "<TD><INPUT TYPE=\"text\" NAME=\"extadr\" "
179 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
181 wprintf("<TR><TD> </TD>"
182 "<TD><INPUT TYPE=\"text\" NAME=\"street\" "
183 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
185 wprintf("<TR><TD>City:</TD>"
186 "<TD><INPUT TYPE=\"text\" NAME=\"city\" "
187 "VALUE=\"%s\" MAXLENGTH=\"29\">\n",
190 "<INPUT TYPE=\"text\" NAME=\"state\" "
191 "VALUE=\"%s\" MAXLENGTH=\"2\">\n",
193 wprintf(" ZIP code: "
194 "<INPUT TYPE=\"text\" NAME=\"zipcode\" "
195 "VALUE=\"%s\" MAXLENGTH=\"10\"></TD></TR>\n",
197 wprintf("<TR><TD>Country:</TD>"
198 "<TD><INPUT TYPE=\"text\" NAME=\"country\" "
199 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR></TABLE>\n",
202 wprintf("<TABLE BORDER=0><TR><TD>Home telephone:</TD>"
203 "<TD><INPUT TYPE=\"text\" NAME=\"hometel\" "
204 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR>\n",
206 wprintf("<TR><TD>Work telephone:</TD>"
207 "<TD><INPUT TYPE=\"text\" NAME=\"worktel\" "
208 "VALUE=\"%s\" MAXLENGTH=\"29\"></TD></TR></TABLE>\n",
211 wprintf("<TEXTAREA NAME=\"extrafields\" ROWS=10 COLS=80 WIDTH=80>");
212 escputs(extrafields);
213 wprintf("</TEXTAREA><BR>\n");