Ticket #1169: skype-displayname.patch

File skype-displayname.patch, 3.0 KB (added by anonymous, at 2014-07-20T11:30:01Z)
  • protocols/skype/skype.c

    old new  
    9393        int topic_wait;
    9494        /* These are used by the info command. */
    9595        char *info_fullname;
     96        char *info_displayname;
    9697        char *info_phonehome;
    9798        char *info_phoneoffice;
    9899        char *info_phonemobile;
     
    117118        /* Pending user which has to be added to the next group which is
    118119         * created. */
    119120        char *pending_user;
    120         /* If the info command was used, to determine what to do with FULLNAME result. */
    121         int is_info;
     121        /* If the info command was used, to determine what to do with
     122         * FULLNAME & DISPLAYNAME result. */
     123        int is_info_fullname;
     124        int is_info_displayname;
    122125};
    123126
    124127struct skype_away_state {
     
    324327        for (i = nicks; *i; i++) {
    325328                skype_printf(ic, "GET USER %s ONLINESTATUS\n", *i);
    326329                skype_printf(ic, "GET USER %s FULLNAME\n", *i);
     330                skype_printf(ic, "GET USER %s DISPLAYNAME\n", *i);
    327331        }
    328332        g_strfreev(nicks);
    329333}
     
    380384                        imcb_log(ic, "User `%s' changed mood text to `%s'", user, buf);
    381385        } else if (!strncmp(ptr, "FULLNAME ", 9)) {
    382386                char *name = ptr + 9;
    383                 if (sd->is_info) {
    384                         sd->is_info = FALSE;
     387                if (sd->is_info_fullname) {
     388                        sd->is_info_fullname = FALSE;
    385389                        sd->info_fullname = g_strdup(name);
    386390                } else {
    387391                        char *buf = g_strdup_printf("%s@skype.com", user);
    388                         imcb_rename_buddy(ic, buf, name);
    389                         g_free(buf);
     392                        if (strlen(name)) {
     393                                imcb_rename_buddy(ic, buf, name);
     394                                bee_t *bee = ic->bee;
     395                                bee_user_t *bu = bee_user_by_handle(bee, ic, buf);
     396                                if (bu)
     397                                        bee->ui->user_group(bee, bu);
     398                                g_free(buf);
     399                        }
     400                }
     401        } else if (!strncmp(ptr, "DISPLAYNAME ", 12)) {
     402                char *name = ptr + 12;
     403                if (sd->is_info_displayname) {
     404                        sd->is_info_displayname = FALSE;
     405                        sd->info_displayname = g_strdup(name);
     406                } else {
     407                        if (strlen(name)) {
     408                                char *buf = g_strdup_printf("%s@skype.com", user);
     409                                imcb_rename_buddy(ic, buf, name);
     410                                bee_t *bee = ic->bee;
     411                                bee_user_t *bu = bee_user_by_handle(bee, ic, buf);
     412                                if (bu)
     413                                        bee->ui->user_group(bee, bu);
     414                                g_free(buf);
     415                        }
    390416                }
    391417        } else if (!strncmp(ptr, "PHONE_HOME ", 11))
    392418                sd->info_phonehome = g_strdup(ptr + 11);
     
    435461                        g_free(sd->info_fullname);
    436462                        sd->info_fullname = NULL;
    437463                }
     464                if (sd->info_displayname) {
     465                        if (strlen(sd->info_displayname))
     466                                g_string_append_printf(st, "Display Name: %s\n",
     467                                        sd->info_displayname);
     468                        g_free(sd->info_displayname);
     469                        sd->info_displayname = NULL;
     470                }
    438471                if (sd->info_phonehome) {
    439472                        if (strlen(sd->info_phonehome))
    440473                                g_string_append_printf(st, "Home Phone: %s\n",
     
    15271560        ptr = strchr(nick, '@');
    15281561        if (ptr)
    15291562                *ptr = '\0';
    1530         sd->is_info = TRUE;
     1563        sd->is_info_fullname = TRUE;
     1564        sd->is_info_displayname = TRUE;
    15311565        skype_printf(ic, "GET USER %s FULLNAME\n", nick);
     1566        skype_printf(ic, "GET USER %s DISPLAYNAME\n", nick);
    15321567        skype_printf(ic, "GET USER %s PHONE_HOME\n", nick);
    15331568        skype_printf(ic, "GET USER %s PHONE_OFFICE\n", nick);
    15341569        skype_printf(ic, "GET USER %s PHONE_MOBILE\n", nick);