- Timestamp:
- Jun 1, 2003, 1:46:49 PM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 31e48a3
- Parents:
- 440ce01
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
message.c
r440ce01 r0ff8fb57 14 14 static const char fileIdent[] = "$Id$"; 15 15 16 void owl_message_init(owl_message *m) { 16 void owl_message_init(owl_message *m) 17 { 17 18 time_t t; 18 19 … … 32 33 } 33 34 34 void owl_message_set_attribute(owl_message *m, char *attrname, char *attrvalue) { 35 void owl_message_set_attribute(owl_message *m, char *attrname, char *attrvalue) 36 { 35 37 /* add the named attribute to the message. If an attribute with the 36 38 name already exists, replace the old value with the new value */ … … 58 60 } 59 61 60 char *owl_message_get_attribute_value(owl_message *m, char *attrname) { 62 char *owl_message_get_attribute_value(owl_message *m, char *attrname) 63 { 61 64 /* return the value associated with the named attribute, or NULL if 62 65 the attribute does not exist */ … … 76 79 77 80 78 owl_fmtext *owl_message_get_fmtext(owl_message *m) { 81 owl_fmtext *owl_message_get_fmtext(owl_message *m) 82 { 79 83 return(&(m->fmtext)); 80 84 } 81 85 82 void owl_message_set_class(owl_message *m, char *class) { 86 void owl_message_set_class(owl_message *m, char *class) 87 { 83 88 owl_message_set_attribute(m, "class", class); 84 89 } 85 90 86 char *owl_message_get_class(owl_message *m) { 91 char *owl_message_get_class(owl_message *m) 92 { 87 93 char *class; 88 94 … … 92 98 } 93 99 94 void owl_message_set_instance(owl_message *m, char *inst) { 100 void owl_message_set_instance(owl_message *m, char *inst) 101 { 95 102 owl_message_set_attribute(m, "instance", inst); 96 103 } 97 104 98 char *owl_message_get_instance(owl_message *m) { 105 char *owl_message_get_instance(owl_message *m) 106 { 99 107 char *instance; 100 108 … … 104 112 } 105 113 106 void owl_message_set_sender(owl_message *m, char *sender) { 114 void owl_message_set_sender(owl_message *m, char *sender) 115 { 107 116 owl_message_set_attribute(m, "sender", sender); 108 117 } 109 118 110 char *owl_message_get_sender(owl_message *m) { 119 char *owl_message_get_sender(owl_message *m) 120 { 111 121 char *sender; 112 122 … … 116 126 } 117 127 118 void owl_message_set_zsig(owl_message *m, char *zsig) { 128 void owl_message_set_zsig(owl_message *m, char *zsig) 129 { 119 130 owl_message_set_attribute(m, "zsig", zsig); 120 131 } 121 132 122 char *owl_message_get_zsig(owl_message *m) { 133 char *owl_message_get_zsig(owl_message *m) 134 { 123 135 char *zsig; 124 136 … … 128 140 } 129 141 130 void owl_message_set_recipient(owl_message *m, char *recip) { 142 void owl_message_set_recipient(owl_message *m, char *recip) 143 { 131 144 owl_message_set_attribute(m, "recipient", recip); 132 145 } 133 146 134 char *owl_message_get_recipient(owl_message *m) { 147 char *owl_message_get_recipient(owl_message *m) 148 { 135 149 /* this is stupid for outgoing messages, we need to fix it. */ 136 150 137 151 char *recip; 138 139 if (m->type==OWL_MESSAGE_TYPE_ZEPHYR) { 140 recip=owl_message_get_attribute_value(m, "recipient"); 141 } else if (owl_message_is_direction_out(m)) { 142 recip=m->zwriteline; 143 } else { 144 recip=owl_message_get_attribute_value(m, "recipient"); 145 } 152 153 recip=owl_message_get_attribute_value(m, "recipient"); 146 154 if (!recip) return(""); 147 155 return(recip); 148 156 } 149 157 150 void owl_message_set_realm(owl_message *m, char *realm) { 158 void owl_message_set_realm(owl_message *m, char *realm) 159 { 151 160 owl_message_set_attribute(m, "realm", realm); 152 161 } 153 162 154 char *owl_message_get_realm(owl_message *m) { 163 char *owl_message_get_realm(owl_message *m) 164 { 155 165 char *realm; 156 166 … … 160 170 } 161 171 162 void owl_message_set_body(owl_message *m, char *body) { 172 void owl_message_set_body(owl_message *m, char *body) 173 { 163 174 owl_message_set_attribute(m, "body", body); 164 175 } 165 176 166 char *owl_message_get_body(owl_message *m) { 177 char *owl_message_get_body(owl_message *m) 178 { 167 179 char *body; 168 180 … … 173 185 174 186 175 void owl_message_set_opcode(owl_message *m, char *opcode) { 187 void owl_message_set_opcode(owl_message *m, char *opcode) 188 { 176 189 owl_message_set_attribute(m, "opcode", opcode); 177 190 } 178 191 179 char *owl_message_get_opcode(owl_message *m) { 192 char *owl_message_get_opcode(owl_message *m) 193 { 180 194 char *opcode; 181 195 … … 185 199 } 186 200 187 char *owl_message_get_timestr(owl_message *m) { 201 char *owl_message_get_timestr(owl_message *m) 202 { 188 203 return(m->time); 189 204 } 190 205 191 void owl_message_set_type_admin(owl_message *m) { 206 void owl_message_set_type_admin(owl_message *m) 207 { 192 208 m->type=OWL_MESSAGE_TYPE_ADMIN; 193 209 } 194 210 195 void owl_message_set_type_zephyr(owl_message *m) { 211 void owl_message_set_type_zephyr(owl_message *m) 212 { 196 213 m->type=OWL_MESSAGE_TYPE_ZEPHYR; 197 214 } 198 215 199 void owl_message_set_type_aim(owl_message *m) { 216 void owl_message_set_type_aim(owl_message *m) 217 { 200 218 m->type=OWL_MESSAGE_TYPE_AIM; 201 219 } 202 220 203 int owl_message_is_type_admin(owl_message *m) { 221 int owl_message_is_type_admin(owl_message *m) 222 { 204 223 if (m->type==OWL_MESSAGE_TYPE_ADMIN) return(1); 205 224 return(0); 206 225 } 207 226 208 int owl_message_is_type_zephyr(owl_message *m) { 227 int owl_message_is_type_zephyr(owl_message *m) 228 { 209 229 if (m->type==OWL_MESSAGE_TYPE_ZEPHYR) return(1); 210 230 return(0); 211 231 } 212 232 213 int owl_message_is_type_aim(owl_message *m) { 233 int owl_message_is_type_aim(owl_message *m) 234 { 214 235 if (m->type==OWL_MESSAGE_TYPE_AIM) return(1); 215 236 return(0); 216 237 } 217 238 218 int owl_message_is_type_generic(owl_message *m) { 239 int owl_message_is_type_generic(owl_message *m) 240 { 219 241 if (m->type==OWL_MESSAGE_TYPE_GENERIC) return(1); 220 242 return(0); 221 243 } 222 244 223 char *owl_message_get_text(owl_message *m) { 245 char *owl_message_get_text(owl_message *m) 246 { 224 247 return(owl_fmtext_get_text(&(m->fmtext))); 225 248 } 226 249 227 void owl_message_set_direction_in(owl_message *m) { 250 void owl_message_set_direction_in(owl_message *m) 251 { 228 252 m->direction=OWL_MESSAGE_DIRECTION_IN; 229 253 } 230 254 231 void owl_message_set_direction_out(owl_message *m) { 255 void owl_message_set_direction_out(owl_message *m) 256 { 232 257 m->direction=OWL_MESSAGE_DIRECTION_OUT; 233 258 } 234 259 235 void owl_message_set_direction_none(owl_message *m) { 260 void owl_message_set_direction_none(owl_message *m) 261 { 236 262 m->direction=OWL_MESSAGE_DIRECTION_NONE; 237 263 } 238 264 239 int owl_message_is_direction_in(owl_message *m) { 265 int owl_message_is_direction_in(owl_message *m) 266 { 240 267 if (m->direction==OWL_MESSAGE_DIRECTION_IN) return(1); 241 268 return(0); 242 269 } 243 270 244 int owl_message_is_direction_out(owl_message *m) { 271 int owl_message_is_direction_out(owl_message *m) 272 { 245 273 if (m->direction==OWL_MESSAGE_DIRECTION_OUT) return(1); 246 274 return(0); 247 275 } 248 276 249 int owl_message_is_direction_none(owl_message *m) { 277 int owl_message_is_direction_none(owl_message *m) 278 { 250 279 if (m->direction==OWL_MESSAGE_DIRECTION_NONE) return(1); 251 280 return(0); 252 281 } 253 282 254 int owl_message_get_numlines(owl_message *m) { 283 int owl_message_get_numlines(owl_message *m) 284 { 255 285 if (m == NULL) return(0); 256 286 return(owl_fmtext_num_lines(&(m->fmtext))); 257 287 } 258 288 259 void owl_message_mark_delete(owl_message *m) { 289 void owl_message_mark_delete(owl_message *m) 290 { 260 291 if (m == NULL) return; 261 292 m->delete=1; 262 293 } 263 294 264 void owl_message_unmark_delete(owl_message *m) { 295 void owl_message_unmark_delete(owl_message *m) 296 { 265 297 if (m == NULL) return; 266 298 m->delete=0; 267 299 } 268 300 269 char *owl_message_get_zwriteline(owl_message *m) { 301 char *owl_message_get_zwriteline(owl_message *m) 302 { 270 303 return(m->zwriteline); 271 304 } 272 305 273 void owl_message_set_zwriteline(owl_message *m, char *line) { 306 void owl_message_set_zwriteline(owl_message *m, char *line) 307 { 274 308 m->zwriteline=strdup(line); 275 309 } 276 310 277 int owl_message_is_delete(owl_message *m) { 311 int owl_message_is_delete(owl_message *m) 312 { 278 313 if (m == NULL) return(0); 279 314 if (m->delete==1) return(1); … … 281 316 } 282 317 283 ZNotice_t *owl_message_get_notice(owl_message *m) { 318 ZNotice_t *owl_message_get_notice(owl_message *m) 319 { 284 320 return(&(m->notice)); 285 321 } 286 322 287 char *owl_message_get_hostname(owl_message *m) { 323 char *owl_message_get_hostname(owl_message *m) 324 { 288 325 return(m->hostname); 289 326 } 290 327 291 328 292 void owl_message_curs_waddstr(owl_message *m, WINDOW *win, int aline, int bline, int acol, int bcol, int color) { 329 void owl_message_curs_waddstr(owl_message *m, WINDOW *win, int aline, int bline, int acol, int bcol, int color) 330 { 293 331 owl_fmtext a, b; 294 332 … … 312 350 } 313 351 314 int owl_message_is_personal(owl_message *m) { 315 if (strcasecmp(owl_message_get_class(m), "message")) return(0); 316 if (strcasecmp(owl_message_get_instance(m), "personal")) return(0); 317 if (!strcasecmp(owl_message_get_recipient(m), ZGetSender()) || 318 !strcasecmp(owl_message_get_sender(m), ZGetSender())) { 352 int owl_message_is_personal(owl_message *m) 353 { 354 if (owl_message_is_type_zephyr(m)) { 355 if (strcasecmp(owl_message_get_class(m), "message")) return(0); 356 if (strcasecmp(owl_message_get_instance(m), "personal")) return(0); 357 if (!strcasecmp(owl_message_get_recipient(m), ZGetSender()) || 358 !strcasecmp(owl_message_get_sender(m), ZGetSender())) { 359 return(1); 360 } 361 } 362 return(0); 363 } 364 365 /* true if the message is only intended for one recipient (me) */ 366 int owl_message_is_to_me(owl_message *m) 367 { 368 if (owl_message_is_type_zephyr(m)) { 369 if (!strcasecmp(owl_message_get_recipient(m), ZGetSender())) { 370 return(1); 371 } else { 372 return(0); 373 } 374 } else if (owl_message_is_type_aim(m)) { 375 /* right now we don't support chat rooms */ 319 376 return(1); 320 } 321 return(0); 322 } 323 324 int owl_message_is_private(owl_message *m) { 325 if (!strcasecmp(owl_message_get_recipient(m), ZGetSender())) return(1); 326 return(0); 327 } 328 329 int owl_message_is_mail(owl_message *m) { 330 if (!strcasecmp(owl_message_get_class(m), "mail") && owl_message_is_private(m)) { 377 } else if (owl_message_is_type_admin(m)) { 331 378 return(1); 332 379 } … … 334 381 } 335 382 336 int owl_message_is_ping(owl_message *m) { 337 if (!strcasecmp(owl_message_get_opcode(m), "ping")) return(1); 338 return(0); 339 } 340 341 int owl_message_is_login(owl_message *m) { 342 if (!strcasecmp(owl_message_get_class(m), "login")) return(1); 343 return(0); 344 /* is this good enough? */ 345 } 346 347 int owl_message_is_burningears(owl_message *m) { 383 384 int owl_message_is_from_me(owl_message *m) 385 { 386 if (owl_message_is_type_zephyr(m)) { 387 if (!strcasecmp(owl_message_get_sender(m), ZGetSender())) { 388 return(1); 389 } else { 390 return(0); 391 } 392 } else if (owl_message_is_type_aim(m)) { 393 if (!strcasecmp(owl_message_get_sender(m), owl_global_get_aim_screenname(&g))) { 394 return(1); 395 } else { 396 return(0); 397 } 398 } else if (owl_message_is_type_admin(m)) { 399 return(0); 400 } 401 return(0); 402 } 403 404 int owl_message_is_mail(owl_message *m) 405 { 406 if (owl_message_is_type_zephyr(m)) { 407 if (!strcasecmp(owl_message_get_class(m), "mail") && owl_message_is_to_me(m)) { 408 return(1); 409 } else { 410 return(0); 411 } 412 } 413 return(0); 414 } 415 416 int owl_message_is_ping(owl_message *m) 417 { 418 if (owl_message_is_type_zephyr(m)) { 419 if (!strcasecmp(owl_message_get_opcode(m), "ping")) { 420 return(1); 421 } else { 422 return(0); 423 } 424 } 425 return(0); 426 } 427 428 int owl_message_is_login(owl_message *m) 429 { 430 if (owl_message_is_type_zephyr(m)) { 431 if (!strcasecmp(owl_message_get_class(m), "login")) { 432 return(1); 433 } else { 434 return(0); 435 } 436 } else if (owl_message_is_type_aim(m)) { 437 /* deal with this once we can use buddy lists */ 438 return(0); 439 } 440 441 return(0); 442 } 443 444 int owl_message_is_burningears(owl_message *m) 445 { 348 446 /* we should add a global to cache the short zsender */ 349 447 char sender[LINE], *ptr; 350 448 351 449 /* if the message is from us or to us, it doesn't count */ 352 if (!strcasecmp(ZGetSender(), owl_message_get_sender(m))) return(0); 353 if (!strcasecmp(ZGetSender(), owl_message_get_recipient(m))) return(0); 354 355 strcpy(sender, ZGetSender()); 356 ptr=strchr(sender, '@'); 357 if (ptr) *ptr='\0'; 450 if (owl_message_is_from_me(m) || owl_message_is_to_me(m)) return(0); 451 452 if (owl_message_is_type_zephyr(m)) { 453 strcpy(sender, ZGetSender()); 454 ptr=strchr(sender, '@'); 455 if (ptr) *ptr='\0'; 456 } else if (owl_message_is_type_aim(m)) { 457 strcpy(sender, owl_global_get_aim_screenname(&g)); 458 } else { 459 return(0); 460 } 358 461 359 462 if (stristr(owl_message_get_body(m), sender)) { … … 364 467 365 468 /* caller must free return value. */ 366 char *owl_message_get_cc(owl_message *m) { 469 char *owl_message_get_cc(owl_message *m) 470 { 367 471 char *cur, *out, *end; 368 472 … … 378 482 } 379 483 380 int owl_message_get_id(owl_message *m) { 484 int owl_message_get_id(owl_message *m) 485 { 381 486 return(m->id); 382 487 } 383 488 384 int owl_message_search(owl_message *m, char *string) { 489 int owl_message_search(owl_message *m, char *string) 490 { 385 491 /* return 1 if the message contains "string", 0 otherwise. This is 386 492 * case insensitive because the functions it uses are */ … … 389 495 } 390 496 391 void owl_message_create(owl_message *m, char *header, char *text) { 497 void owl_message_create(owl_message *m, char *header, char *text) 498 { 392 499 char *indent; 393 500 … … 409 516 } 410 517 411 void owl_message_create_aim(owl_message *m, char *sender, char *recipient, char *text) { 518 void owl_message_create_aim(owl_message *m, char *sender, char *recipient, char *text) 519 { 412 520 char *indent; 413 521 … … 435 543 } 436 544 437 void owl_message_create_admin(owl_message *m, char *header, char *text) { 545 void owl_message_create_admin(owl_message *m, char *header, char *text) 546 { 438 547 char *indent; 439 548 … … 460 569 } 461 570 462 void owl_message_create_from_znotice(owl_message *m, ZNotice_t *n) { 571 void owl_message_create_from_znotice(owl_message *m, ZNotice_t *n) 572 { 463 573 struct hostent *hent; 464 574 int k; … … 552 662 } 553 663 554 void owl_message_create_from_zwriteline(owl_message *m, char *line, char *body, char *zsig) { 664 void owl_message_create_from_zwriteline(owl_message *m, char *line, char *body, char *zsig) 665 { 555 666 owl_zwrite z; 556 667 int ret; … … 593 704 } 594 705 595 void _owl_message_make_text_from_config(owl_message *m) { 706 void _owl_message_make_text_from_config(owl_message *m) 707 { 596 708 char *body, *indent; 597 709 … … 612 724 } 613 725 614 void _owl_message_make_text_from_zwriteline_standard(owl_message *m) { 726 void _owl_message_make_text_from_zwriteline_standard(owl_message *m) 727 { 615 728 char *indent, *text, *zsigbuff, *foo; 616 729 … … 642 755 } 643 756 644 void _owl_message_make_text_from_zwriteline_simple(owl_message *m) { 757 void _owl_message_make_text_from_zwriteline_simple(owl_message *m) 758 { 645 759 char *indent, *text, *zsigbuff, *foo; 646 760 … … 672 786 } 673 787 674 void _owl_message_make_text_from_notice_standard(owl_message *m) { 788 void _owl_message_make_text_from_notice_standard(owl_message *m) 789 { 675 790 char *body, *indent, *ptr, *zsigbuff, frombuff[LINE]; 676 791 ZNotice_t *n; … … 702 817 owl_fmtext_append_normal(&(m->fmtext), OWL_TABSTR); 703 818 704 if (!strcasecmp(owl_message_get_opcode(m), "ping") && owl_message_is_ private(m)) {819 if (!strcasecmp(owl_message_get_opcode(m), "ping") && owl_message_is_to_me(m)) { 705 820 owl_fmtext_append_bold(&(m->fmtext), "PING"); 706 821 owl_fmtext_append_normal(&(m->fmtext), " from "); … … 773 888 } 774 889 775 void _owl_message_make_text_from_notice_simple(owl_message *m) { 890 void _owl_message_make_text_from_notice_simple(owl_message *m) 891 { 776 892 char *body, *indent, *ptr, *zsigbuff, frombuff[LINE]; 777 893 ZNotice_t *n; … … 873 989 } 874 990 875 void owl_message_pretty_zsig(owl_message *m, char *buff) { 991 void owl_message_pretty_zsig(owl_message *m, char *buff) 992 { 876 993 /* stick a one line version of the zsig in buff */ 877 994 char *ptr; … … 882 999 } 883 1000 884 void owl_message_free(owl_message *m) { 1001 void owl_message_free(owl_message *m) 1002 { 885 1003 int i, j; 886 1004 owl_pair *p;
Note: See TracChangeset
for help on using the changeset viewer.