Преглед изворни кода

Allow empty files in torrents. Create them in stat_and_adjust and let the

stream abstraction skip past them.
master
Richard Nyberg пре 18 година
родитељ
комит
45bf9f2658
3 измењених фајлова са 11 додато и 1 уклоњено
  1. +6
    -0
      btpd/content.c
  2. +1
    -1
      misc/metainfo.c
  3. +4
    -0
      misc/stream.c

+ 6
- 0
btpd/content.c Прегледај датотеку

@@ -595,6 +595,12 @@ again:
if (truncate(path, tp->files[i].length) != 0)
return errno;
goto again;
} else if (ret[i].size == -1 && tp->files[i].length == 0) {
int fd;
errno = vopen(&fd, O_CREAT|O_RDWR, "%s", path);
if (errno != 0 || close(fd) != 0)
return errno;
goto again;
}
}
return 0;


+ 1
- 1
misc/metainfo.c Прегледај датотеку

@@ -279,7 +279,7 @@ mi_test_files(const char *files)
int pcount = 0;
if (!benc_isdct(fdct))
return 0;
if (benc_dget_int(fdct, "length") <= 0)
if (benc_dget_int(fdct, "length") < 0)
return 0;
if ((plst = benc_dget_lst(fdct, "path")) == NULL)
return 0;


+ 4
- 0
misc/stream.c Прегледај датотеку

@@ -83,6 +83,8 @@ bts_get(struct bt_stream *bts, off_t off, uint8_t *buf, size_t len)
boff = 0;
while (boff < len) {
if (bts->fd == -1) {
while (bts->files[bts->index].length == 0)
bts->index++;
err = bts->fd_cb(bts->files[bts->index].path,
&bts->fd, bts->fd_arg);
if (err != 0)
@@ -125,6 +127,8 @@ bts_put(struct bt_stream *bts, off_t off, const uint8_t *buf, size_t len)
boff = 0;
while (boff < len) {
if (bts->fd == -1) {
while (bts->files[bts->index].length == 0)
bts->index++;
err = bts->fd_cb(bts->files[bts->index].path,
&bts->fd, bts->fd_arg);
if (err != 0)


Loading…
Откажи
Сачувај