summaryrefslogtreecommitdiff
path: root/pico/osdep/popen.c
diff options
context:
space:
mode:
authorEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
committerEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
commit094ca96844842928810f14844413109fc6cdd890 (patch)
treee60efbb980f38ba9308ccb4fb2b77b87bbc115f3 /pico/osdep/popen.c
downloadalpine-094ca96844842928810f14844413109fc6cdd890.tar.xz
Initial Alpine Version
Diffstat (limited to 'pico/osdep/popen.c')
-rw-r--r--pico/osdep/popen.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/pico/osdep/popen.c b/pico/osdep/popen.c
new file mode 100644
index 00000000..575929a6
--- /dev/null
+++ b/pico/osdep/popen.c
@@ -0,0 +1,68 @@
+#if !defined(lint) && !defined(DOS)
+static char rcsid[] = "$Id: popen.c 761 2007-10-23 22:35:18Z hubert@u.washington.edu $";
+#endif
+
+/*
+ * ========================================================================
+ * Copyright 2006 University of Washington
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * ========================================================================
+ */
+
+#include <system.h>
+#include <general.h>
+#include "../estruct.h"
+
+
+
+
+/*
+ * P_open - run the given command in a sub-shell returning a file pointer
+ * from which to read the output
+ *
+ * note:
+ * For OS's other than unix, you will have to rewrite this function.
+ * Hopefully it'll be easy to exec the command into a temporary file,
+ * and return a file pointer to that opened file or something.
+ */
+int
+P_open(char *s)
+{
+#if HAVE_POPEN
+ extern FIOINFO g_pico_fio;
+
+ g_pico_fio.flags = FIOINFO_READ;
+ g_pico_fio.name = "pipe";
+
+ if((g_pico_fio.fp = popen(s, "r")) != NULL)
+ return(FIOSUC);
+
+ return(FIOERR);
+#else
+ /* Windows never did this, but piping has been done elsewhere */
+ return(0);
+#endif
+}
+
+
+
+/*
+ * P_close - close the given descriptor
+ *
+ */
+void
+P_close(void)
+{
+#if HAVE_PCLOSE
+ extern FIOINFO g_pico_fio;
+
+ if(g_pico_fio.fp)
+ (void) pclose(g_pico_fio.fp);
+#endif
+}