Ticket #1510: delete-local-data.diff

File delete-local-data.diff, 5.2 KB (added by charles, 12 years ago)

second revision

  • libtransmission/rpcimpl.c

     
    136136}
    137137
    138138static const char*
    139 torrentRemove( tr_handle *        h,
    140                tr_benc *          args_in,
    141                tr_benc * args_out UNUSED )
     139torrentRemove( tr_handle   * h,
     140               tr_benc     * args_in,
     141               tr_benc     * args_out UNUSED )
    142142{
    143     int           i, torrentCount;
     143    int i;
     144    int torrentCount;
    144145    tr_torrent ** torrents = getTorrents( h, args_in, &torrentCount );
    145146
    146     for( i = 0; i < torrentCount; ++i )
     147    for( i=0; i<torrentCount; ++i )
    147148    {
    148         tr_torrent *                 tor = torrents[i];
    149         const tr_rpc_callback_status status = notify(
    150             h, TR_RPC_TORRENT_REMOVING, tor );
     149        tr_torrent * tor = torrents[i];
     150        const tr_rpc_callback_status status = notify( h, TR_RPC_TORRENT_REMOVING, tor );
    151151        if( !( status & TR_RPC_NOREMOVE ) )
     152        {
     153            int64_t deleteFlag;
     154            if( tr_bencDictFindInt( args_in, "delete-local-data", &deleteFlag ) && deleteFlag )
     155                tr_torrentDeleteLocalData( tor );
    152156            tr_torrentRemove( tor );
     157        }
    153158    }
    154159    tr_free( torrents );
    155160    return NULL;
  • libtransmission/transmission.h

     
    838838/** @brief Stop (pause) a torrent */
    839839void tr_torrentStop( tr_torrent * torrent );
    840840
     841/** @brief Deletes the torrent data stored on disk. */
     842void tr_torrentDeleteLocalData( tr_torrent * torrent );
     843
    841844/**
    842845 * @brief Iterate through the torrents.
    843846 *
  • libtransmission/torrent.c

     
    12121212}
    12131213
    12141214void
     1215tr_torrentDeleteLocalData( tr_torrent * tor )
     1216{
     1217    tr_file_index_t i;
     1218
     1219    for( i=0; i<tor->info.fileCount; ++i )
     1220    {
     1221        const tr_file * file = &tor->info.files[i];
     1222        char * path = tr_buildPath( tor->downloadDir, file->name, NULL );
     1223        tr_fdFileClose( path );
     1224        unlink( path );
     1225        tr_free( path );
     1226    }
     1227}
     1228
     1229void
    12151230tr_torrentStop( tr_torrent * tor )
    12161231{
    12171232    if( tor )
  • daemon/transmission-remote.1

     
    2828.Op Fl pl Ar files
    2929.Op Fl pn Ar files
    3030.Op Fl r
     31.Op Fl R
    3132.Op Fl s | S
    3233.Op Fl t Ar all | Ar id | Ar hash
    3334.Op Fl u Ar number | Fl U
     
    134135.It Fl r Fl -remove
    135136Remove the current torrent(s).  This does not delete the downloaded data.
    136137
     138.It Fl R Fl -remove-and-delete
     139Remove the current torrent(s) and delete their downloaded data.
     140
    137141.It Fl s Fl -start
    138142Start the current torrent(s)
    139143
  • daemon/remote.c

     
    9999      "pl", 1, "<files>"             },
    100100    { 'r', "remove",               "Remove the current torrent(s)",
    101101      "r",  0, NULL                  },
     102    { 'R', "remove-and-delete",    "Remove the current torrent(s) and delete local data",
     103      "R",  0, NULL                  },
    102104    { 's', "start",                "Start the current torrent(s)",
    103105      "s",  0, NULL                  },
    104106    { 'S', "stop",                 "Stop the current torrent(s)",
     
    409411                addIdArg( args, id );
    410412                break;
    411413
     414            case 'R':
     415                tr_bencDictAddStr( &top, "method", "torrent-remove" );
     416                addIdArg( args, id );
     417                tr_bencDictAddInt( args, "delete-local-data", 1 );
     418                break;
     419
    412420            case 's':
    413421                tr_bencDictAddStr( &top, "method", "torrent-start" );
    414422                addIdArg( args, id );
  • doc/rpc-spec.txt

     
    6868
    6969   Method name         | libtransmission function
    7070   --------------------+-------------------------------------------------
    71    "torrent-remove"    | tr_torrentRemove
    7271   "torrent-start"     | tr_torrentStart
    7372   "torrent-stop"      | tr_torrentStop
    7473   "torrent-verify"    | tr_torrentVerify
     
    292291                       form of one of 3.3's tr_info objects with the
    293292                       fields for id, name, and hashString.
    294293
     2943.5.  Removing a Torrent
    295295
     296   Method name: "torrent-remove"
     297
     298   Request arguments:
     299
     300   string                     | value type & description
     301   ---------------------------+-------------------------------------------------
     302   "ids"                      | array      torrent list, as described in 3.1
     303   "delete-local-data"        | 'boolean'  delete local data. (default: false)
     304
     305   Response arguments: none
     306
     307
    2963084.   Session Requests
    297309
    2983104.1.  Session Arguments