Changeset 5927
- Timestamp:
- May 24, 2008, 6:22:16 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/daemon/Makefile.am
r5843 r5927 10 10 transmission-remote 11 11 12 COMMON_LDADD = \12 LDADD = \ 13 13 $(top_builddir)/libtransmission/libtransmission.a \ 14 $(top_builddir)/third-party/shttpd/libshttpd.a \ 14 15 $(top_builddir)/third-party/miniupnp/libminiupnp.a \ 15 16 $(top_builddir)/third-party/libnatpmp/libnatpmp.a \ … … 21 22 22 23 transmission_daemon_SOURCES = daemon.c 23 transmission_daemon_LDADD = $(COMMON_LDADD) $(top_builddir)/third-party/shttpd/libshttpd.a24 24 transmission_remote_SOURCES = remote.c 25 transmission_remote_LDADD = $(COMMON_LDADD) -
trunk/daemon/remote.c
r5860 r5927 197 197 case 'r': tr_bencDictAddStr( &top, "method", "torrent-remove" ); 198 198 if( strcmp( optarg, "all" ) ) 199 tr_ bencDictAddStr( args, "ids", optarg);199 tr_rpc_parse_list_str( tr_bencDictAdd( args, "ids" ), optarg, strlen(optarg) ); 200 200 break; 201 201 case 's': tr_bencDictAddStr( &top, "method", "torrent-start" ); 202 202 if( strcmp( optarg, "all" ) ) 203 tr_ bencDictAddStr( args, "ids", optarg);203 tr_rpc_parse_list_str( tr_bencDictAdd( args, "ids" ), optarg, strlen(optarg) ); 204 204 break; 205 205 case 'S': tr_bencDictAddStr( &top, "method", "torrent-stop" ); 206 206 if( strcmp( optarg, "all" ) ) 207 tr_ bencDictAddStr( args, "ids", optarg);207 tr_rpc_parse_list_str( tr_bencDictAdd( args, "ids" ), optarg, strlen(optarg) ); 208 208 break; 209 209 case 'v': tr_bencDictAddStr( &top, "method", "torrent-verify" ); 210 210 if( strcmp( optarg, "all" ) ) 211 tr_ bencDictAddStr( args, "ids", optarg);211 tr_rpc_parse_list_str( tr_bencDictAdd( args, "ids" ), optarg, strlen(optarg) ); 212 212 break; 213 213 default: … … 341 341 CURLcode res; 342 342 curl_easy_setopt( curl, CURLOPT_POSTFIELDS, reqs[i] ); 343 if( debug ) 344 tr_ninf( MY_NAME, "posting [%s]\n", reqs[i] ); 343 345 if(( res = curl_easy_perform( curl ))) 344 346 tr_nerr( MY_NAME, "(%s:%d) %s", host, port, curl_easy_strerror( res ) ); -
trunk/libtransmission/bencode.c
r5901 r5927 770 770 */ 771 771 static void 772 bencWalk( const tr_benc * top,772 bencWalk( const tr_benc * top, 773 773 struct WalkFuncs * walkFuncs, 774 774 void * user_data ) … … 802 802 } 803 803 804 switch( val->type )804 if( val ) switch( val->type ) 805 805 { 806 806 case TYPE_INT: … … 1096 1096 { 1097 1097 switch( *it ) { 1098 case ' "' :1099 case ' /' :1100 case '\ b':1101 case '\ f':1102 case '\ n':1103 case '\ r':1104 case ' \t':1105 case '\\': evbuffer_add_printf( data->out, "\\ %c", *it); break;1098 case '/' : evbuffer_add_printf( data->out, "\\/" ); break; 1099 case '\b': evbuffer_add_printf( data->out, "\\b" ); break; 1100 case '\f': evbuffer_add_printf( data->out, "\\f" ); break; 1101 case '\n': evbuffer_add_printf( data->out, "\\n" ); break; 1102 case '\r': evbuffer_add_printf( data->out, "\\r" ); break; 1103 case '\t': evbuffer_add_printf( data->out, "\\t" ); break; 1104 case '"' : evbuffer_add_printf( data->out, "\\\"" ); break; 1105 case '\\': evbuffer_add_printf( data->out, "\\\\" ); break; 1106 1106 default: { 1107 1107 if( isascii( *it ) ) -
trunk/libtransmission/rpc.c
r5913 r5927 742 742 } 743 743 744 /** 745 * Munge the URI into a usable form. 746 * 747 * We have very loose typing on this to make the URIs as simple as possible: 748 * - anything not a 'tag' or 'method' is automatically in 'arguments' 749 * - values that are all-digits are numbers 750 * - values that are all-digits or commas are number lists 751 * - all other values are strings 752 */ 753 void 754 tr_rpc_parse_list_str( tr_benc * setme, 755 const char * str_in, 756 size_t len ) 757 758 { 759 char * str = tr_strndup( str_in, len ); 760 int isNum; 761 int isNumList; 762 int commaCount; 763 const char * walk; 764 765 isNum = 1; 766 isNumList = 1; 767 commaCount = 0; 768 walk = str; 769 for( ; *walk && (isNumList || isNum); ++walk ) { 770 if( isNumList ) isNumList = *walk=='-' || isdigit(*walk) || *walk==','; 771 if( isNum ) isNum = *walk=='-' || isdigit(*walk); 772 if( *walk == ',' ) ++commaCount; 773 } 774 775 if( isNum ) 776 tr_bencInitInt( setme, strtol( str, NULL, 10 ) ); 777 else if( !isNumList ) 778 tr_bencInitStrDup( setme, str ); 779 else { 780 tr_bencInitList( setme, commaCount + 1 ); 781 walk = str; 782 while( *walk ) { 783 char * p; 784 tr_bencListAddInt( setme, strtol( walk, &p, 10 ) ); 785 if( *p!=',' ) 786 break; 787 walk = p + 1; 788 } 789 } 790 791 tr_free( str ); 792 } 793 794 744 795 char* 745 796 tr_rpc_request_exec_uri( struct tr_handle * handle, … … 772 823 if( delim ) 773 824 { 774 int isNum = 1;775 int isNumList = 1;776 const char * walk;777 825 char * key = tr_strndup( pch, delim-pch ); 778 826 int isArg = strcmp( key, "method" ) && strcmp( key, "tag" ); 779 827 tr_benc * parent = isArg ? args : ⊤ 780 char * val = next ? tr_strndup( delim+1, next-(delim+1) ) 781 : tr_strdup( delim+1 ); 782 for( walk=val; *walk && ( isNumList || isNum ); ++walk ) { 783 if( isNumList ) isNumList = *walk=='-' || isdigit(*walk) || *walk==','; 784 if( isNum ) isNum = *walk=='-' || isdigit(*walk); 785 } 786 if( isNum ) 787 tr_bencDictAddInt( parent, key, strtol( val, NULL, 10 ) ); 788 else if( !isNumList ) 789 tr_bencDictAddStr( parent, key, val ); 790 else { 791 tr_benc * numList = tr_bencDictAddList( parent, key, 10 ); 792 walk = val; 793 for( ;; ) { 794 char * end; 795 tr_bencListAddInt( numList, strtol( walk, &end, 10 ) ); 796 if( *end!=',' ) 797 break; 798 walk = end + 1; 799 } 800 } 828 tr_rpc_parse_list_str( tr_bencDictAdd( parent, key ), 829 delim+1, 830 next ? (size_t)(next-(delim+1)) : strlen(delim+1) ); 831 tr_free( key ); 801 832 } 802 833 pch = next ? next+1 : NULL; -
trunk/libtransmission/rpc.h
r5843 r5927 18 18 ***/ 19 19 20 struct tr_benc; 20 21 struct tr_handle; 21 22 … … 34 35 int * response_len ); 35 36 37 void 38 tr_rpc_parse_list_str( struct tr_benc * setme, 39 const char * list_str, 40 size_t list_str_len ); 41 36 42 #endif
Note: See TracChangeset
for help on using the changeset viewer.