Mercurial > hg
comparison mcabber/src/jabglue.c @ 223:925bb5fa85ac
[/trunk] Changeset 235 by mikael
* Use messages timestamps for offline messages
author | mikael |
---|---|
date | Sat, 04 Jun 2005 16:06:01 +0000 |
parents | 73f6ce668ba8 |
children | 193c08454aac |
comparison
equal
deleted
inserted
replaced
222:882029ebd052 | 223:925bb5fa85ac |
---|---|
514 | 514 |
515 postlogin(); | 515 postlogin(); |
516 } | 516 } |
517 | 517 |
518 void gotmessage(char *type, const char *from, const char *body, | 518 void gotmessage(char *type, const char *from, const char *body, |
519 const char *enc) | 519 const char *enc, time_t timestamp) |
520 { | 520 { |
521 char *jid; | 521 char *jid; |
522 char *buffer = utf8_decode(body); | 522 char *buffer = utf8_decode(body); |
523 | 523 |
524 /* | 524 /* |
529 scr_LogPrint("There is an extra part in message (resource?): %s", r); | 529 scr_LogPrint("There is an extra part in message (resource?): %s", r); |
530 //scr_LogPrint("Msg from <%s>, type=%s", jidtodisp(from), type); | 530 //scr_LogPrint("Msg from <%s>, type=%s", jidtodisp(from), type); |
531 */ | 531 */ |
532 | 532 |
533 jid = jidtodisp(from); | 533 jid = jidtodisp(from); |
534 hk_message_in(jid, 0, buffer); | 534 hk_message_in(jid, timestamp, buffer); |
535 g_free(jid); | 535 g_free(jid); |
536 free(buffer); | 536 free(buffer); |
537 } | 537 } |
538 | 538 |
539 void statehandler(jconn conn, int state) | 539 void statehandler(jconn conn, int state) |
594 | 594 |
595 switch (packet->type) { | 595 switch (packet->type) { |
596 case JPACKET_MESSAGE: | 596 case JPACKET_MESSAGE: |
597 { | 597 { |
598 char *tmp = NULL; | 598 char *tmp = NULL; |
599 time_t timestamp = 0; | |
600 | |
599 x = xmlnode_get_tag(packet->x, "body"); | 601 x = xmlnode_get_tag(packet->x, "body"); |
600 p = xmlnode_get_data(x); if (p) body = p; | 602 p = xmlnode_get_data(x); if (p) body = p; |
601 | 603 |
602 if ((x = xmlnode_get_tag(packet->x, "subject")) != NULL) | 604 if ((x = xmlnode_get_tag(packet->x, "subject")) != NULL) |
603 if ((p = xmlnode_get_data(x)) != NULL) { | 605 if ((p = xmlnode_get_data(x)) != NULL) { |
620 enc = p; | 622 enc = p; |
621 break; | 623 break; |
622 } | 624 } |
623 } | 625 } |
624 | 626 |
627 // Timestamp? | |
628 if ((x = xmlnode_get_tag(packet->x, "x")) != NULL) { | |
629 if ((p = xmlnode_get_attrib(x, "stamp")) != NULL) { | |
630 struct tm tstamp; | |
631 memset(&tstamp, 0, sizeof(tstamp)); | |
632 if (strptime(p, "%Y%m%dT%H:%M:%S", &tstamp)) | |
633 timestamp = mktime(&tstamp) - timezone; | |
634 } | |
635 } | |
636 | |
625 if (from && body) | 637 if (from && body) |
626 gotmessage(type, from, body, enc); | 638 gotmessage(type, from, body, enc, timestamp); |
627 if (tmp) | 639 if (tmp) |
628 g_free(tmp); | 640 g_free(tmp); |
629 } | 641 } |
630 break; | 642 break; |
631 | 643 |