aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/lib.c13
-rw-r--r--lib/lib.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 70ad0758..fae71566 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -637,6 +637,19 @@ void loopfiles(char **argv, void (*function)(int fd, char *name))
loopfiles_rw(argv, O_RDONLY|O_CLOEXEC|WARN_ONLY, 0, function);
}
+// call loopfiles with do_lines()
+static void (*do_lines_bridge)(char **pline, long len);
+static void loopfile_lines_bridge(int fd, char *name)
+{
+ do_lines(fd, do_lines_bridge);
+}
+
+void loopfiles_lines(char **argv, void (*function)(char **pline, long len))
+{
+ do_lines_bridge = function;
+ loopfiles(argv, loopfile_lines_bridge);
+}
+
// Slow, but small.
char *get_rawline(int fd, long *plen, char end)
diff --git a/lib/lib.h b/lib/lib.h
index 889430bd..021ab44a 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -216,6 +216,7 @@ off_t fdlength(int fd);
void loopfiles_rw(char **argv, int flags, int permissions,
void (*function)(int fd, char *name));
void loopfiles(char **argv, void (*function)(int fd, char *name));
+void loopfiles_lines(char **argv, void (*function)(char **pline, long len));
long long xsendfile(int in, int out);
int wfchmodat(int rc, char *name, mode_t mode);
int copy_tempfile(int fdin, char *name, char **tempname);