Changeset aa2f575


Ignore:
Timestamp:
2011-08-17T22:21:47Z (9 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
fd1ca44
Parents:
5f1e78d
Message:

Better cleanup of status IDs in Twitter commands. Stop using that silly
g_ascii_strtoull() everywhere. This should fix some accidental Tweet
incidents.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/twitter/twitter.c

    r5f1e78d raa2f575  
    465465                guint64 id;
    466466
    467                 if (cmd[1])
    468                         id = g_ascii_strtoull(cmd[1], NULL, 10);
    469                 else
    470                         id = td->last_status_id;
    471 
    472                 /* TODO: User feedback. */
    473                 if (id)
     467                if (cmd[1] == NULL)
     468                        twitter_status_destroy(ic, td->last_status_id);
     469                else if (sscanf(cmd[1], "%" G_GUINT64_FORMAT, &id) == 1) {
     470                        if (id < TWITTER_LOG_LENGTH && td->log)
     471                                id = td->log[id].id;
     472                       
    474473                        twitter_status_destroy(ic, id);
    475                 else
     474                } else
    476475                        twitter_msg(ic, "Could not undo last action");
    477476
     
    491490                guint64 id;
    492491
    493                 if (g_str_has_prefix(cmd[1], "#")) {
    494                         id = g_ascii_strtoull(cmd[1] + 1, NULL, 10);
     492                if (g_str_has_prefix(cmd[1], "#") &&
     493                    sscanf(cmd[1] + 1, "%" G_GUINT64_FORMAT, &id) == 1) {
    495494                        if (id < TWITTER_LOG_LENGTH && td->log)
    496495                                id = td->log[id].id;
     
    498497                    (tud = bu->data) && tud->last_id)
    499498                        id = tud->last_id;
    500                 else {
    501                         id = g_ascii_strtoull(cmd[1], NULL, 10);
     499                else if (sscanf(cmd[1], "%" G_GUINT64_FORMAT, &id) == 1){
    502500                        if (id < TWITTER_LOG_LENGTH && td->log)
    503501                                id = td->log[id].id;
     
    518516                guint64 id = 0;
    519517
    520                 if ((bu = bee_user_by_handle(ic->bee, ic, cmd[1])) &&
     518                if (g_str_has_prefix(cmd[1], "#") &&
     519                    sscanf(cmd[1] + 1, "%" G_GUINT64_FORMAT, &id) == 1 &&
     520                    (id < TWITTER_LOG_LENGTH) && td->log) {
     521                        bu = td->log[id].bu;
     522                        if (g_slist_find(ic->bee->users, bu))
     523                                id = td->log[id].id;
     524                        else
     525                                bu = NULL;
     526                } else if ((bu = bee_user_by_handle(ic->bee, ic, cmd[1])) &&
    521527                    (tud = bu->data) && tud->last_id) {
    522528                        id = tud->last_id;
     
    529535                                bu = NULL;
    530536                }
     537
    531538                if (!id || !bu) {
    532539                        twitter_msg(ic, "User `%s' does not exist or didn't "
Note: See TracChangeset for help on using the changeset viewer.