aboutsummaryrefslogtreecommitdiff
path: root/tell.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-07-18 17:50:34 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-07-18 17:50:34 +0300
commit24b9e009c9c2eef1b6d1accb3ac7ccc53c44c0a8 (patch)
treefbd53229d5f87f9a99cbd64a89ac4fb1d06bd7ad /tell.c
parent3488a182f66e35b091f441b9201ad43ad6d0f1ac (diff)
downloadruncap-24b9e009c9c2eef1b6d1accb3ac7ccc53c44c0a8.tar.gz
runcap-24b9e009c9c2eef1b6d1accb3ac7ccc53c44c0a8.tar.bz2
Add missing API calls, provide testsuite
Diffstat (limited to 'tell.c')
-rw-r--r--tell.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tell.c b/tell.c
new file mode 100644
index 0000000..7044ddd
--- /dev/null
+++ b/tell.c
@@ -0,0 +1,41 @@
+/* runcap - run program and capture its output
+ Copyright (C) 2017 Sergey Poznyakoff
+
+ Runcap is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ Runcap is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with Runcap. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include "runcap.h"
+
+off_t
+runcap_tell(struct runcap *rc, int stream)
+{
+ struct filecapture *fp;
+ off_t off;
+
+ fp = runcap_filecapture(rc, stream);
+ if (!fp)
+ return -1;
+
+ if (fp->fc_tmpfd != -1) {
+ off = lseek(fp->fc_tmpfd, 0, SEEK_CUR);
+ if (off == -1)
+ return -1;
+ } else
+ off = 0;
+
+ return off + fp->fc_linestart;
+}
+

Return to:

Send suggestions and report system problems to the System administrator.