You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

41 lines
928 B

diff -uNr mktorrent-1.1/ftw.c mktorrent-1.1.mod/ftw.c
--- mktorrent-1.1/ftw.c 2017-01-11 23:13:16.000000000 +0200
+++ mktorrent-1.1.mod/ftw.c 2019-01-30 16:51:09.927683504 +0200
@@ -45,6 +45,20 @@
off_t offset;
};
+struct DIR {
+ int fd_;
+};
+
+static long telldir_custom(struct DIR *dirp)
+{
+ return (long) lseek(dirp->fd_, 0, SEEK_CUR);
+}
+
+static void seekdir_custom(DIR *dirp, long loc)
+{
+ (void) lseek(dirp->fd_, loc, SEEK_SET);
+}
+
static struct dir_state *dir_state_new(struct dir_state *prev,
struct dir_state *next)
{
@@ -88,14 +102,14 @@
name[ds->length] = DIRSEP_CHAR;
- seekdir(ds->dir, ds->offset);
+ seekdir_custom(ds->dir, ds->offset);
return 0;
}
static unsigned int dir_state_close(struct dir_state *ds)
{
- ds->offset = telldir(ds->dir);
+ ds->offset = telldir_custom(ds->dir);
if (ds->offset < 0) {
fprintf(stderr, "Error getting dir offset: %s\n",
strerror(errno));