- serv_printf("GOTO %s", bstr("which_addr_book"));
- serv_getln(buf, sizeof buf);
- serv_puts("DVCA");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- wprintf("<option value=\"");
- escputs(buf);
- wprintf("\">");
- escputs(buf);
- wprintf("</option>\n");
+ }
+ SortByHashKey(List, 1);
+ it = GetNewHashPos(List, 0);
+ while (GetNextHashPos(List, it, &len, &VCName, &Namee)) {
+ wc_printf("<option value=\"");
+ escputs((char*)Namee);
+ wc_printf("\">");
+ escputs((char*)Namee);
+ wc_printf("</option>\n");
+ }
+ DeleteHashPos(&it);
+ DeleteHash(&List);
+ }
+
+ else {
+ set_room_pref("defaddrbook",NewStrBufDup(sbstr("which_addr_book")), 0);
+ saved_roomname = NewStrBufDup(WC->CurRoom.name);
+ gotoroom(sbstr("which_addr_book"));
+ serv_puts("DVCA");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '1') while(len = serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ Name = (char*) malloc(len + 1);
+ len = extract_token(Name, buf, 0, '|', len + 1);
+ Put(List, Name, len, Name, NULL);
+
+ }
+ SortByHashKey(List, 1);
+ it = GetNewHashPos(List, 0);
+ while (GetNextHashPos(List, it, &len, &VCName, (void**)&Namee)) {
+ wc_printf("<option value=\"");
+ escputs((char*)Namee);
+ wc_printf("\">");
+ escputs((char*)Namee);
+ wc_printf("</option>\n");
+ }
+ DeleteHashPos(&it);
+ DeleteHash(&List);
+ gotoroom(saved_roomname);
+ FreeStrBuf(&saved_roomname);