Changeset 30678ae for perlglue.xs


Ignore:
Timestamp:
Jan 29, 2007, 9:54:41 PM (17 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
29ebcea
Parents:
a8a3433
git-author:
Nelson Elhage <nelhage@mit.edu> (01/29/07 21:54:30)
git-committer:
Nelson Elhage <nelhage@mit.edu> (01/29/07 21:54:41)
Message:
Making message type into a string
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perlglue.xs

    r7f792c1 r30678ae  
    117117        SV *msg
    118118        PREINIT:
    119                 char * key;
    120                 char * val;
    121119                owl_message *m;
    122                 HV * hash;
    123                 HE * ent;
    124                 I32 count;
    125                 I32 len;
    126120        CODE:
    127121        {
     
    130124                }
    131125
    132                 hash = (HV*)SvRV(msg);
    133                 m = owl_malloc(sizeof(owl_message));
    134                 owl_message_init(m);
    135 
    136                 count = hv_iterinit(hash);
    137                 while((ent = hv_iternext(hash))) {
    138                         key = hv_iterkey(ent, &len);
    139                         val = SvPV_nolen(hv_iterval(hash, ent));
    140                         if(!strcmp(key, "type")) {
    141                                 owl_message_set_type(m, owl_message_parse_type(val));
    142                         } else if(!strcmp(key, "direction")) {
    143                                 owl_message_set_direction(m, owl_message_parse_direction(val));
    144                         } else if(!strcmp(key, "private")) {
    145                                 SV * v = hv_iterval(hash, ent);
    146                                 if(SvTRUE(v)) {
    147                                         owl_message_set_isprivate(m);
    148                                 }
    149                         } else if (!strcmp(key, "hostname")) {
    150                                 owl_message_set_hostname(m, val);
    151                         } else if (!strcmp(key, "zwriteline")) {
    152                                 owl_message_set_zwriteline(m, val);
    153                         } else if (!strcmp(key, "time")) {
    154                                 m->timestr = owl_strdup(val);
    155                                 struct tm tm;
    156                                 strptime(val, "%a %b %d %T %Y", &tm);
    157                                 m->time = mktime(&tm);
    158                         } else {
    159                                 owl_message_set_attribute(m, key, val);
    160                         }
    161                 }
    162                 if(owl_message_is_type_admin(m)) {
    163                         if(!owl_message_get_attribute_value(m, "adminheader"))
    164                                 owl_message_set_attribute(m, "adminheader", "");
    165                 }
     126                m = owl_perlconfig_hashref2message(msg);
    166127
    167128                owl_global_messagequeue_addmsg(&g, m);
Note: See TracChangeset for help on using the changeset viewer.