WvStreams
|
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