Changeset 6a5f0c3
- Timestamp:
- Dec 25, 2013, 3:22:29 PM (11 years ago)
- Children:
- b36b9a6
- Parents:
- 58777e9
- git-author:
- Anders Kaseorg <andersk@mit.edu> (12/25/13 12:53:27)
- git-committer:
- Anders Kaseorg <andersk@mit.edu> (12/25/13 15:22:29)
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
aim.c
r7dcef03 r6a5f0c3 1056 1056 OWL_MESSAGE_DIRECTION_IN, 1057 1057 0); 1058 if (args->icbmflags & AIM_IMFLAGS_AWAY) owl_message_set_attribute(m, "isauto", "" );1058 if (args->icbmflags & AIM_IMFLAGS_AWAY) owl_message_set_attribute(m, "isauto", "", NULL); 1059 1059 owl_global_messagequeue_addmsg(&g, m); 1060 1060 g_free(stripmsg); -
message.c
r8f95fc4 r6a5f0c3 52 52 * name already exists, replace the old value with the new value 53 53 */ 54 void owl_message_set_attribute(owl_message *m, const char *attrname, const char *attrvalue) 55 { 56 g_datalist_set_data_full(&m->attributes, attrname, 57 owl_validate_or_convert(attrvalue), g_free); 54 void owl_message_set_attribute(owl_message *m, const char *attrname, const char *attrvalue, GDestroyNotify attrdestroy) 55 { 56 if (owl_needs_convert(attrvalue)) { 57 g_datalist_set_data_full(&m->attributes, attrname, 58 owl_validate_or_convert(attrvalue), g_free); 59 if (attrdestroy) 60 attrdestroy((gpointer)attrvalue); 61 } else { 62 g_datalist_set_data_full(&m->attributes, attrname, (gpointer)attrvalue, attrdestroy); 63 } 58 64 } 59 65 … … 118 124 } 119 125 120 void owl_message_set_class(owl_message *m, const char *class)121 {122 owl_message_set_attribute(m, "class", class);123 }124 125 126 const char *owl_message_get_class(const owl_message *m) 126 127 { … … 132 133 } 133 134 134 void owl_message_set_instance(owl_message *m, const char *inst)135 {136 owl_message_set_attribute(m, "instance", inst);137 }138 139 135 const char *owl_message_get_instance(const owl_message *m) 140 136 { … … 146 142 } 147 143 148 void owl_message_set_sender(owl_message *m, const char *sender)149 {150 owl_message_set_attribute(m, "sender", sender);151 }152 153 144 const char *owl_message_get_sender(const owl_message *m) 154 145 { … … 160 151 } 161 152 162 void owl_message_set_zsig(owl_message *m, const char *zsig)163 {164 owl_message_set_attribute(m, "zsig", zsig);165 }166 167 153 const char *owl_message_get_zsig(const owl_message *m) 168 154 { … … 174 160 } 175 161 176 void owl_message_set_recipient(owl_message *m, const char *recip)177 {178 owl_message_set_attribute(m, "recipient", recip);179 }180 181 162 const char *owl_message_get_recipient(const owl_message *m) 182 163 { … … 190 171 } 191 172 192 void owl_message_set_realm(owl_message *m, const char *realm)193 {194 owl_message_set_attribute(m, "realm", realm);195 }196 197 173 const char *owl_message_get_realm(const owl_message *m) 198 174 { … … 204 180 } 205 181 206 void owl_message_set_body(owl_message *m, const char *body)207 {208 owl_message_set_attribute(m, "body", body);209 }210 211 182 const char *owl_message_get_body(const owl_message *m) 212 183 { … … 219 190 220 191 221 void owl_message_set_opcode(owl_message *m, const char *opcode)222 {223 owl_message_set_attribute(m, "opcode", opcode);224 }225 226 192 const char *owl_message_get_opcode(const owl_message *m) 227 193 { … … 236 202 void owl_message_set_islogin(owl_message *m) 237 203 { 238 owl_message_set_attribute(m, "loginout", "login" );204 owl_message_set_attribute(m, "loginout", "login", NULL); 239 205 } 240 206 … … 242 208 void owl_message_set_islogout(owl_message *m) 243 209 { 244 owl_message_set_attribute(m, "loginout", "logout" );210 owl_message_set_attribute(m, "loginout", "logout", NULL); 245 211 } 246 212 … … 277 243 void owl_message_set_isprivate(owl_message *m) 278 244 { 279 owl_message_set_attribute(m, "isprivate", "true" );245 owl_message_set_attribute(m, "isprivate", "true", NULL); 280 246 } 281 247 … … 302 268 void owl_message_set_type_admin(owl_message *m) 303 269 { 304 owl_message_set_attribute(m, "type", "admin" );270 owl_message_set_attribute(m, "type", "admin", NULL); 305 271 } 306 272 307 273 void owl_message_set_type_loopback(owl_message *m) 308 274 { 309 owl_message_set_attribute(m, "type", "loopback" );275 owl_message_set_attribute(m, "type", "loopback", NULL); 310 276 } 311 277 312 278 void owl_message_set_type_zephyr(owl_message *m) 313 279 { 314 owl_message_set_attribute(m, "type", "zephyr" );280 owl_message_set_attribute(m, "type", "zephyr", NULL); 315 281 } 316 282 317 283 void owl_message_set_type_aim(owl_message *m) 318 284 { 319 owl_message_set_attribute(m, "type", "AIM"); 320 } 321 322 void owl_message_set_type(owl_message *m, const char* type) 323 { 324 owl_message_set_attribute(m, "type", type); 285 owl_message_set_attribute(m, "type", "AIM", NULL); 325 286 } 326 287 … … 431 392 if (!z) return ""; 432 393 return z; 433 }434 435 void owl_message_set_zwriteline(owl_message *m, const char *line)436 {437 owl_message_set_attribute(m, "zwriteline", line);438 394 } 439 395 … … 512 468 513 469 void owl_message_set_isanswered(owl_message *m) { 514 owl_message_set_attribute(m, "question", "answered" );470 owl_message_set_attribute(m, "question", "answered", NULL); 515 471 } 516 472 … … 644 600 { 645 601 owl_message_init(m); 646 owl_message_set_ body(m, text);647 owl_message_set_ sender(m, sender);648 owl_message_set_ recipient(m, recipient);602 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 603 owl_message_set_attribute(m, "sender", g_strdup(sender), g_free); 604 owl_message_set_attribute(m, "recipient", g_strdup(recipient), g_free); 649 605 owl_message_set_type_aim(m); 650 606 … … 671 627 owl_message_init(m); 672 628 owl_message_set_type_admin(m); 673 owl_message_set_ body(m, text);674 owl_message_set_attribute(m, "adminheader", header); /* just a hack for now */629 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 630 owl_message_set_attribute(m, "adminheader", g_strdup(header), g_free); /* just a hack for now */ 675 631 } 676 632 … … 680 636 owl_message_init(m); 681 637 owl_message_set_type_loopback(m); 682 owl_message_set_ body(m, text);683 owl_message_set_ sender(m, "loopsender");684 owl_message_set_ recipient(m, "looprecip");638 owl_message_set_attribute(m, "body", g_strdup(text), g_free); 639 owl_message_set_attribute(m, "sender", "loopsender", NULL); 640 owl_message_set_attribute(m, "recipient", "looprecip", NULL); 685 641 owl_message_set_isprivate(m); 686 642 } … … 716 672 } 717 673 718 owl_message_set_attribute(m, "zephyr_ccs", recips->str); 719 g_string_free(recips, true); 674 owl_message_set_attribute(m, "zephyr_ccs", g_string_free(recips, false), g_free); 720 675 } 721 676 } … … 729 684 struct hostent *hent; 730 685 #endif /* ZNOTICE_SOCKADDR */ 731 char *tmp , *tmp2;686 char *tmp; 732 687 int len; 733 688 … … 751 706 752 707 /* set other info */ 753 owl_message_set_ sender(m, n->z_sender);754 owl_message_set_ class(m, n->z_class);755 owl_message_set_ instance(m, n->z_class_inst);756 owl_message_set_ recipient(m, n->z_recipient);708 owl_message_set_attribute(m, "sender", n->z_sender, NULL); 709 owl_message_set_attribute(m, "class", n->z_class, NULL); 710 owl_message_set_attribute(m, "instance", n->z_class_inst, NULL); 711 owl_message_set_attribute(m, "recipient", n->z_recipient, NULL); 757 712 if (n->z_opcode) { 758 owl_message_set_ opcode(m, n->z_opcode);713 owl_message_set_attribute(m, "opcode", n->z_opcode, NULL); 759 714 } else { 760 owl_message_set_ opcode(m, "");761 } 762 owl_message_set_ zsig(m, owl_zephyr_get_zsig(n, &len));763 764 owl_message_set_ realm(m, zuser_realm(n->z_recipient));715 owl_message_set_attribute(m, "opcode", "", NULL); 716 } 717 owl_message_set_attribute(m, "zsig", owl_zephyr_get_zsig(n, &len), NULL); 718 719 owl_message_set_attribute(m, "realm", zuser_realm(n->z_recipient), NULL); 765 720 766 721 /* Set the "isloginout" attribute if it's a login message */ 767 722 if (!strcasecmp(n->z_class, "login") || !strcasecmp(n->z_class, OWL_WEBZEPHYR_CLASS)) { 768 723 if (!strcasecmp(n->z_opcode, "user_login") || !strcasecmp(n->z_opcode, "user_logout")) { 769 tmp=owl_zephyr_get_field(n, 1); 770 owl_message_set_attribute(m, "loginhost", tmp); 771 g_free(tmp); 772 773 tmp=owl_zephyr_get_field(n, 3); 774 owl_message_set_attribute(m, "logintty", tmp); 775 g_free(tmp); 724 owl_message_set_attribute(m, "loginhost", owl_zephyr_get_field(n, 1), g_free); 725 owl_message_set_attribute(m, "logintty", owl_zephyr_get_field(n, 3), g_free); 776 726 } 777 727 … … 792 742 if (!strcasecmp(n->z_message, "Automated reply:") || 793 743 !strcasecmp(n->z_opcode, "auto")) { 794 owl_message_set_attribute(m, "isauto", "" );744 owl_message_set_attribute(m, "isauto", "", NULL); 795 745 } 796 746 … … 812 762 tmp=owl_zephyr_get_message(n, m); 813 763 if (owl_global_is_newlinestrip(&g)) { 814 tmp2=owl_util_stripnewlines(tmp); 815 owl_message_set_body(m, tmp2); 816 g_free(tmp2); 764 owl_message_set_attribute(m, "body", owl_util_stripnewlines(tmp), g_free); 765 g_free(tmp); 817 766 } else { 818 owl_message_set_body(m, tmp); 819 } 820 g_free(tmp); 767 owl_message_set_attribute(m, "body", tmp, g_free); 768 } 821 769 822 770 /* if zcrypt is enabled try to decrypt the message */ … … 845 793 out[len - 8] = 0; 846 794 } 847 owl_message_set_ body(m, out);795 owl_message_set_attribute(m, "body", out, g_free); 848 796 } else { 849 797 /* Replace the opcode. Otherwise the UI and other bits of code think the 850 798 * message was encrypted. */ 851 owl_message_set_opcode(m, "failed-decrypt"); 799 owl_message_set_attribute(m, "opcode", "failed-decrypt", NULL); 800 g_free(out); 852 801 } 853 g_free(out);854 802 } 855 803 … … 878 826 owl_message_set_direction_in(m); 879 827 880 owl_message_set_attribute(m, "pseudo", "" );881 owl_message_set_attribute(m, "loginhost", host ? host : "");882 owl_message_set_attribute(m, "logintty", tty ? tty : "");883 884 owl_message_set_ sender(m, longuser);885 owl_message_set_ class(m, "LOGIN");886 owl_message_set_ instance(m, longuser);887 owl_message_set_ recipient(m, "");828 owl_message_set_attribute(m, "pseudo", "", NULL); 829 owl_message_set_attribute(m, "loginhost", g_strdup(host ? host : ""), g_free); 830 owl_message_set_attribute(m, "logintty", g_strdup(tty ? tty : ""), g_free); 831 832 owl_message_set_attribute(m, "sender", g_strdup(longuser), g_free); 833 owl_message_set_attribute(m, "class", "LOGIN", NULL); 834 owl_message_set_attribute(m, "instance", g_strdup(longuser), g_free); 835 owl_message_set_attribute(m, "recipient", "", NULL); 888 836 if (direction==0) { 889 owl_message_set_ opcode(m, "USER_LOGIN");837 owl_message_set_attribute(m, "opcode", "USER_LOGIN", NULL); 890 838 owl_message_set_islogin(m); 891 839 } else if (direction==1) { 892 owl_message_set_ opcode(m, "USER_LOGOUT");840 owl_message_set_attribute(m, "opcode", "USER_LOGOUT", NULL); 893 841 owl_message_set_islogout(m); 894 842 } 895 843 896 owl_message_set_ realm(m, zuser_realm(longuser));897 898 owl_message_set_ body(m, "<uninitialized>");844 owl_message_set_attribute(m, "realm", g_strdup(zuser_realm(longuser)), g_free); 845 846 owl_message_set_attribute(m, "body", "<uninitialized>", NULL); 899 847 900 848 /* save the hostname */ … … 913 861 owl_message_set_direction_out(m); 914 862 owl_message_set_type_zephyr(m); 915 owl_message_set_ sender(m, owl_zephyr_get_sender());916 owl_message_set_ class(m, owl_zwrite_get_class(z));917 owl_message_set_ instance(m, owl_zwrite_get_instance(z));863 owl_message_set_attribute(m, "sender", g_strdup(owl_zephyr_get_sender()), g_free); 864 owl_message_set_attribute(m, "class", g_strdup(owl_zwrite_get_class(z)), g_free); 865 owl_message_set_attribute(m, "instance", g_strdup(owl_zwrite_get_instance(z)), g_free); 918 866 if (recip_index < owl_zwrite_get_numrecips(z)) { 919 867 char *zuser = owl_zwrite_get_recip_n_with_realm(z, recip_index); 920 868 char *longzuser = long_zuser(zuser); 921 owl_message_set_recipient(m, longzuser); 922 owl_message_set_realm(m, zuser_realm(longzuser)); 923 g_free(longzuser); 869 owl_message_set_attribute(m, "realm", g_strdup(zuser_realm(longzuser)), g_free); 870 owl_message_set_attribute(m, "recipient", longzuser, g_free); 924 871 g_free(zuser); 925 872 } else { … … 928 875 * anyway. */ 929 876 const char *realm = owl_zwrite_get_realm(z); 930 owl_message_set_ realm(m, realm[0] ? realm : owl_zephyr_get_realm());931 } 932 owl_message_set_ opcode(m, owl_zwrite_get_opcode(z));877 owl_message_set_attribute(m, "realm", g_strdup(realm[0] ? realm : owl_zephyr_get_realm()), g_free); 878 } 879 owl_message_set_attribute(m, "opcode", g_strdup(owl_zwrite_get_opcode(z)), g_free); 933 880 934 881 /* Although not strictly the zwriteline, anyone using the unsantized version 935 882 * of it probably has a bug. */ 936 883 replyline = owl_zwrite_get_replyline(z, recip_index); 937 owl_message_set_ zwriteline(m, replyline);884 owl_message_set_attribute(m, "zwriteline", g_strdup(replyline), g_free); 938 885 g_free(replyline); 939 886 940 owl_message_set_ body(m, body);941 owl_message_set_ zsig(m, owl_zwrite_get_zsig(z));887 owl_message_set_attribute(m, "body", g_strdup(body), g_free); 888 owl_message_set_attribute(m, "zsig", g_strdup(owl_zwrite_get_zsig(z)), g_free); 942 889 943 890 /* save the hostname */ -
perlconfig.c
r8f95fc4 r6a5f0c3 195 195 key = hv_iterkey(ent, &len); 196 196 val = SvPV_nolen(hv_iterval(hash, ent)); 197 if(!strcmp(key, "type")) { 198 owl_message_set_type(m, val); 199 } else if(!strcmp(key, "direction")) { 197 if (!strcmp(key, "direction")) { 200 198 owl_message_set_direction(m, owl_message_parse_direction(val)); 201 199 } else if(!strcmp(key, "private")) { … … 206 204 } else if (!strcmp(key, "hostname")) { 207 205 owl_message_set_hostname(m, val); 208 } else if (!strcmp(key, "zwriteline")) {209 owl_message_set_zwriteline(m, val);210 206 } else if (!strcmp(key, "time")) { 211 207 g_free(m->timestr); … … 214 210 m->time = mktime(&tm); 215 211 } else { 216 owl_message_set_attribute(m, key, val);212 owl_message_set_attribute(m, key, g_strdup(val), g_free); 217 213 } 218 214 } 219 215 if(owl_message_is_type_admin(m)) { 220 216 if(!owl_message_get_attribute_value(m, "adminheader")) 221 owl_message_set_attribute(m, "adminheader", "" );217 owl_message_set_attribute(m, "adminheader", "", NULL); 222 218 } 223 219 return m; -
tester.c
r21dc927 r6a5f0c3 464 464 owl_message_set_type_zephyr(&m); 465 465 owl_message_set_direction_in(&m); 466 owl_message_set_ class(&m, "owl");467 owl_message_set_ instance(&m, "tester");468 owl_message_set_ sender(&m, "owl-user");469 owl_message_set_ recipient(&m, "joe");470 owl_message_set_attribute(&m, "foo", "bar" );466 owl_message_set_attribute(&m, "class", "owl", NULL); 467 owl_message_set_attribute(&m, "instance", "tester", NULL); 468 owl_message_set_attribute(&m, "sender", "owl-user", NULL); 469 owl_message_set_attribute(&m, "recipient", "joe", NULL); 470 owl_message_set_attribute(&m, "foo", "bar", NULL); 471 471 472 472 #define TEST_FILTER(f, e) do { \ -
util.c
r7b89e8c r6a5f0c3 607 607 } 608 608 609 /* Check whether in is not valid UTF-8 or has format characters. */ 610 bool owl_needs_convert(const char *in) 611 { 612 const char *p; 613 if (!g_utf8_validate(in, -1, NULL)) 614 return true; 615 for (p = strchr(in, OWL_FMTEXT_UC_STARTBYTE_UTF8); 616 p != NULL; 617 p = strchr(p + 1, OWL_FMTEXT_UC_STARTBYTE_UTF8)) { 618 if (owl_fmtext_is_format_char(g_utf8_get_char(p))) 619 return true; 620 } 621 return false; 622 } 623 609 624 /* If in is not UTF-8, convert from ISO-8859-1. We may want to allow 610 625 * the caller to specify an alternative in the future. We also strip
Note: See TracChangeset
for help on using the changeset viewer.