WvStreams
wvsystem.h
00001 /* -*- Mode: C++ -*-
00002  * Worldvisions Weaver Software:
00003  *   Copyright (C) 1997-2002 Net Integration Technologies, Inc.
00004  */
00005 #ifndef __WVSYSTEM_H
00006 #define __WVSYSTEM_H
00007 
00008 #include "wvsubproc.h"
00009 
00029 class WvSystem : private WvSubProc
00030 {
00031 public:
00044     WvSystem(const char cmd[],
00045              const char *a0 = NULL,
00046              const char *a1 = NULL,
00047              const char *a2 = NULL,
00048              const char *a3 = NULL,
00049              const char *a4 = NULL,
00050              const char *a5 = NULL,
00051              const char *a6 = NULL,
00052              const char *a7 = NULL,
00053              const char *a8 = NULL,
00054              const char *a9 = NULL,
00055              const char *a10 = NULL,
00056              const char *a11 = NULL,
00057              const char *a12 = NULL,
00058              const char *a13 = NULL,
00059              const char *a14 = NULL,
00060              const char *a15 = NULL,
00061              const char *a16 = NULL,
00062              const char *a17 = NULL,
00063              const char *a18 = NULL,
00064              const char *a19 = NULL
00065              )
00066     {
00067         // this function is inline so it can be a little bit less wasteful...
00068         const char * const argv[] = {
00069             cmd,
00070             a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
00071             a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
00072             NULL
00073         };
00074         init(argv);
00075     }
00076 
00086     WvSystem(const char * const *argv)
00087         { init(argv); }
00088     
00093     virtual ~WvSystem();
00094     
00100     int go();
00101     
00103     WvSystem &infile(WvStringParm filename);
00104     
00106     WvSystem &outfile(WvStringParm filename);
00107     
00109     WvSystem &errfile(WvStringParm filename);
00110 
00111 private:
00112     bool started;
00113     WvString fdfiles[3]; // stdin, stdout, stderr
00114     
00115     void init(const char * const *argv);
00116     virtual int fork(int *waitfd);
00117 };
00118 
00119 
00120 #endif // __WVSYSTEM_H