38 lines
838 B
Diff
38 lines
838 B
Diff
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);
|