| rTorrent sometimes creates invalid torrents which has empty path components. |
| the bitorrent spec allows for "" strings, but they make no sense in paths. |
| so instead of always adding a / in between, skip them. ugh. |
| |
| for example: |
| dict { |
| 'info' => dict { |
| 'name' => str = "some dir" (len = 8) |
| 'files' => list [ |
| dict { |
| 'length' => int = 12345567 |
| 'path' => list [ |
| str = "" (len = 0) |
| str = "foo.bin" (len = 7) |
| ] |
| } |
| ... |
| ] |
| ... |
| } |
| ... |
| } |
| |
| ctorrent will then try to fetch the file "/some dir/foo.bin" instead of |
| "some dir/foo.bin" (relative to $PWD). |
| |
| --- a/bencode.cpp |
| +++ b/bencode.cpp |
| @@ -258,7 +258,8 @@ |
| n -= r; |
| if( 'e' == *pb ) break; |
| if( pathname >= endmax ) return 0; |
| - *pathname++ = PATH_SP; |
| + if (q) |
| + *pathname++ = PATH_SP; |
| } |
| *pathname = '\0'; |
| return (pb - b + 1); |