/[weechat]/weechat/src/irc/irc-recv.c
ViewVC logotype

Diff of /weechat/src/irc/irc-recv.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.68 by flashcode, Thu Jun 30 12:55:36 2005 UTC revision 1.69 by flashcode, Wed Jul 13 16:24:47 2005 UTC
# Line 1159  int Line 1159  int
1159  irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)  irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
1160  {  {
1161      char *pos, *pos2, *host2;      char *pos, *pos2, *host2;
1162      char *pos_file, *pos_addr, *pos_port, *pos_size;    /* for DCC */      char *pos_file, *pos_addr, *pos_port, *pos_size, *pos_start_resume;  /* for DCC */
1163      t_irc_channel *ptr_channel;      t_irc_channel *ptr_channel;
1164      t_irc_nick *ptr_nick;      t_irc_nick *ptr_nick;
1165      struct utsname *buf;      struct utsname *buf;
# Line 1425  irc_cmd_recv_privmsg (t_irc_server *serv Line 1425  irc_cmd_recv_privmsg (t_irc_server *serv
1425                  return 0;                  return 0;
1426              }              }
1427                            
1428                /* incoming DCC RESUME (asked by receiver) */
1429                if (strncmp (pos, "\01DCC RESUME", 11) == 0)
1430                {
1431                    /* check if DCC RESUME is ok, i.e. with 0x01 at end */
1432                    pos2 = strchr (pos + 1, '\01');
1433                    if (!pos2)
1434                    {
1435                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1436                        gui_printf_nolog (server->buffer,
1437                                          _("%s cannot parse \"%s\" command\n"),
1438                                          WEECHAT_ERROR, "privmsg");
1439                        return -1;
1440                    }
1441                    pos2[0] = '\0';
1442                    
1443                    /* DCC filename */
1444                    pos_file = pos + 11;
1445                    while (pos_file[0] == ' ')
1446                        pos_file++;
1447                    
1448                    /* look for resume start position */
1449                    pos_start_resume = strrchr (pos_file, ' ');
1450                    if (!pos_start_resume)
1451                    {
1452                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1453                        gui_printf_nolog (server->buffer,
1454                                          _("%s cannot parse \"%s\" command\n"),
1455                                          WEECHAT_ERROR, "privmsg");
1456                        return -1;
1457                    }
1458                    pos2 = pos_start_resume;
1459                    pos_start_resume++;
1460                    while (pos2[0] == ' ')
1461                        pos2--;
1462                    pos2[1] = '\0';
1463                    
1464                    /* look for DCC port */
1465                    pos_port = strrchr (pos_file, ' ');
1466                    if (!pos_port)
1467                    {
1468                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1469                        gui_printf_nolog (server->buffer,
1470                                          _("%s cannot parse \"%s\" command\n"),
1471                                          WEECHAT_ERROR, "privmsg");
1472                        return -1;
1473                    }
1474                    pos2 = pos_port;
1475                    pos_port++;
1476                    while (pos2[0] == ' ')
1477                        pos2--;
1478                    pos2[1] = '\0';
1479                    
1480                    dcc_accept_resume (server, pos_file, atoi (pos_port),
1481                                       (unsigned long) atol (pos_start_resume));
1482                    return 0;
1483                }
1484                
1485                /* incoming DCC ACCEPT (resume accepted by sender) */
1486                if (strncmp (pos, "\01DCC ACCEPT", 11) == 0)
1487                {
1488                    /* check if DCC ACCEPT is ok, i.e. with 0x01 at end */
1489                    pos2 = strchr (pos + 1, '\01');
1490                    if (!pos2)
1491                    {
1492                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1493                        gui_printf_nolog (server->buffer,
1494                                          _("%s cannot parse \"%s\" command\n"),
1495                                          WEECHAT_ERROR, "privmsg");
1496                        return -1;
1497                    }
1498                    pos2[0] = '\0';
1499                    
1500                    /* DCC filename */
1501                    pos_file = pos + 11;
1502                    while (pos_file[0] == ' ')
1503                        pos_file++;
1504                    
1505                    /* look for resume start position */
1506                    pos_start_resume = strrchr (pos_file, ' ');
1507                    if (!pos_start_resume)
1508                    {
1509                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1510                        gui_printf_nolog (server->buffer,
1511                                          _("%s cannot parse \"%s\" command\n"),
1512                                          WEECHAT_ERROR, "privmsg");
1513                        return -1;
1514                    }
1515                    pos2 = pos_start_resume;
1516                    pos_start_resume++;
1517                    while (pos2[0] == ' ')
1518                        pos2--;
1519                    pos2[1] = '\0';
1520                    
1521                    /* look for DCC port */
1522                    pos_port = strrchr (pos_file, ' ');
1523                    if (!pos_port)
1524                    {
1525                        irc_display_prefix (server->buffer, PREFIX_ERROR);
1526                        gui_printf_nolog (server->buffer,
1527                                          _("%s cannot parse \"%s\" command\n"),
1528                                          WEECHAT_ERROR, "privmsg");
1529                        return -1;
1530                    }
1531                    pos2 = pos_port;
1532                    pos_port++;
1533                    while (pos2[0] == ' ')
1534                        pos2--;
1535                    pos2[1] = '\0';
1536                    
1537                    dcc_start_resume (server, pos_file, atoi (pos_port),
1538                                      (unsigned long) atol (pos_start_resume));
1539                    return 0;
1540                }
1541                
1542              /* incoming DCC CHAT */              /* incoming DCC CHAT */
1543              if (strncmp (pos, "\01DCC CHAT", 9) == 0)              if (strncmp (pos, "\01DCC CHAT", 9) == 0)
1544              {              {

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.69

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26