Changeset 1806


Ignore:
Timestamp:
Apr 26, 2007, 7:03:36 AM (15 years ago)
Author:
joshe
Message:

Add debug mode to daemon.

Location:
trunk/daemon
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/daemon.c

    r1732 r1806  
    5050
    5151static void usage       ( const char *, ... );
    52 static int  readargs    ( int, char ** );
     52static void readargs    ( int, char **, int *, int * );
    5353static int  trylocksock ( void );
    5454static int  getlock     ( const char * );
     
    6767{
    6868    struct event_base * evbase;
    69     int                 nofork, sockfd;
     69    int                 nofork, debug, sockfd;
    7070
    7171    setmyname( argv[0] );
    72     nofork = readargs( argc, argv );
     72    readargs( argc, argv, &nofork, &debug );
    7373
    7474    if( !nofork )
     
    9393    torrent_init( evbase );
    9494    server_init( evbase );
     95    server_debug( debug );
    9596    server_listen( sockfd );
    9697
     
    116117
    117118    printf(
    118   "usage: %s [-fh]\n"
     119  "usage: %s [-dfh]\n"
    119120  "\n"
    120121  "Transmission %s (r%d) http://transmission.m0k.org/\n"
    121122  "A free, lightweight BitTorrent client with a simple, intuitive interface\n"
    122123  "\n"
     124  "  -d --debug                Print data send and received, implies -f\n"
    123125  "  -f --foreground           Run in the foreground and log to stderr\n"
    124126  "  -h --help                 Display this message and exit\n"
     
    129131}
    130132
    131 int
    132 readargs( int argc, char ** argv )
    133 {
    134     char optstr[] = "fh";
     133void
     134readargs( int argc, char ** argv, int * nofork, int * debug )
     135{
     136    char optstr[] = "dfh";
    135137    struct option longopts[] =
    136138    {
     139        { "debug",              no_argument,       NULL, 'd' },
    137140        { "foreground",         no_argument,       NULL, 'f' },
    138141        { "help",               no_argument,       NULL, 'h' },
    139142        { NULL, 0, NULL, 0 }
    140143    };
    141     int opt, nofork;
    142 
    143     nofork = 0;
     144    int opt;
     145
     146    *nofork = 0;
     147    *debug  = 0;
    144148
    145149    while( 0 <= ( opt = getopt_long( argc, argv, optstr, longopts, NULL ) ) )
     
    147151        switch( opt )
    148152        {
     153            case 'd':
     154                *debug = 1;
     155                /* FALLTHROUGH */
    149156            case 'f':
    150                 nofork = 1;
     157                *nofork = 1;
    151158                break;
    152159            default:
     
    155162        }
    156163    }
    157 
    158     return nofork;
    159164}
    160165
  • trunk/daemon/server.c

    r1732 r1806  
    8585static struct event_base * gl_base    = NULL;
    8686static struct ipc_funcs  * gl_tree    = NULL;
     87static int                 gl_debug   = 0;
    8788static int                 gl_exiting = 0;
    8889static struct allclients   gl_clients = RB_INITIALIZER( &gl_clients );
     
    138139}
    139140
     141void
     142server_debug( int enable )
     143{
     144    gl_debug = enable;
     145}
     146
    140147int
    141148server_listen( int fd )
     
    234241        assert( NULL == old );
    235242
     243        if( gl_debug )
     244        {
     245            printf( "*** new client %i\n", clfd );
     246        }
     247
    236248        bufferevent_enable( clev, EV_READ );
    237249        buf = ipc_mkvers( &buflen );
     
    287299    bufferevent_free( ev );
    288300    close( client->fd );
     301    if( gl_debug )
     302    {
     303        printf( "*** client %i went bye-bye\n", client->fd );
     304    }
    289305    free( client );
    290306}
     
    302318    buf = EVBUFFER_DATA( EVBUFFER_INPUT( ev ) );
    303319    len = EVBUFFER_LENGTH( EVBUFFER_INPUT( ev ) );
     320
     321    if( gl_debug )
     322    {
     323        printf( "<<< %zu bytes from client %i: ", len, client->fd );
     324        fwrite( buf, 1, len, stdout );
     325        putc( '\n', stdout );
     326    }
    304327
    305328    if( IPC_MIN_MSG_LEN > len )
     
    348371        }
    349372        return -1;
     373    }
     374
     375    if( gl_debug )
     376    {
     377        printf( ">>> %zu bytes to client %i: ", buflen, client->fd );
     378        fwrite( buf, 1, buflen, stdout );
     379        putc( '\n', stdout );
    350380    }
    351381
  • trunk/daemon/server.h

    r1617 r1806  
    2828struct event_base;
    2929
    30 int server_init(   struct event_base * );
    31 int server_listen( int );
     30int  server_init(   struct event_base * );
     31void server_debug( int );
     32int  server_listen( int );
    3233
    3334#endif /* TR_DAEMON_SERVER_H */
  • trunk/daemon/transmission-daemon.1

    r1623 r1806  
    3131.Fl h
    3232.Nm
    33 .Op Fl f
     33.Op Fl df
    3434.Sh DESCRIPTION
    3535The
     
    3939The options are as follows:
    4040.Bl -tag -width Ds
     41.It Fl d Fl -debug
     42Print data send and received to and from clients to stdout, also implies
     43.Fl f .
    4144.It Fl f Fl -foreground
    4245Run in the foreground and print errors to stderr instead of forking
Note: See TracChangeset for help on using the changeset viewer.