Changeset 9afeefa


Ignore:
Timestamp:
2008-07-22T12:36:56Z (16 years ago)
Author:
ulim <a.sporto+bee@…>
Branches:
master
Children:
8a90001
Parents:
3355a82
Message:

fixes bug in handling file names with spaces.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dcc.c

    r3355a82 r9afeefa  
    628628{
    629629        char *pattern = "SEND"
    630                 " (([^\"][^ ]*)|\"([^\"]|\\\")*\")"
     630                " (([^\"][^ ]*)|\"(([^\"]|\\\")*)\")"
    631631                " (([0-9]*)|([^ ]*))"
    632632                " ([0-9]*)"
    633633                " ([0-9]*)\001";
    634         regmatch_t pmatch[9];
     634        regmatch_t pmatch[10];
    635635        regex_t re;
    636636        file_transfer_t *ft;
     
    640640
    641641        if( ( regerrcode = regcomp( &re, pattern, REG_EXTENDED ) ) ||
    642             ( regerrcode = regexec( &re, line, 9, pmatch, 0 ) ) ) {
     642            ( regerrcode = regexec( &re, line, 10, pmatch, 0 ) ) ) {
    643643                regerror( regerrcode,&re,errbuf,sizeof( errbuf ) );
    644644                imcb_log( ic,
     
    649649
    650650        if( ( pmatch[1].rm_so > 0 ) &&
    651             ( pmatch[4].rm_so > 0 ) &&
    652             ( pmatch[7].rm_so > 0 ) &&
    653             ( pmatch[8].rm_so > 0 ) )
     651            ( pmatch[5].rm_so > 0 ) &&
     652            ( pmatch[8].rm_so > 0 ) &&
     653            ( pmatch[9].rm_so > 0 ) )
    654654        {
    655655                char *input = g_strdup( line );
     
    669669                }
    670670                       
    671                 input[pmatch[4].rm_eo] = '\0';
     671                input[pmatch[5].rm_eo] = '\0';
    672672
    673673                /* number means ipv4, something else means ipv6 */
    674                 if ( pmatch[5].rm_so > 0 )
     674                if ( pmatch[6].rm_so > 0 )
    675675                {
    676676                        struct in_addr ipaddr = { .s_addr = htonl( atoi( input + pmatch[5].rm_so ) ) };
     
    679679                {
    680680                        /* Contains non-numbers, hopefully an IPV6 address */
    681                         host = input + pmatch[6].rm_so;
     681                        host = input + pmatch[7].rm_so;
    682682                }
    683683
    684                 input[pmatch[7].rm_eo] = '\0';
    685684                input[pmatch[8].rm_eo] = '\0';
    686 
    687                 port = input + pmatch[7].rm_so;
    688                 filesize = atoll( input + pmatch[8].rm_so );
     685                input[pmatch[9].rm_eo] = '\0';
     686
     687                port = input + pmatch[8].rm_so;
     688                filesize = atoll( input + pmatch[9].rm_so );
    689689
    690690                memset( &hints, 0, sizeof ( struct addrinfo ) );
Note: See TracChangeset for help on using the changeset viewer.