WvStreams
wvsystem.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  */
5 #ifndef __WVSYSTEM_H
6 #define __WVSYSTEM_H
7 
8 #include "wvsubproc.h"
9 
29 class WvSystem : private WvSubProc
30 {
31 public:
44  WvSystem(const char cmd[],
45  const char *a0 = NULL,
46  const char *a1 = NULL,
47  const char *a2 = NULL,
48  const char *a3 = NULL,
49  const char *a4 = NULL,
50  const char *a5 = NULL,
51  const char *a6 = NULL,
52  const char *a7 = NULL,
53  const char *a8 = NULL,
54  const char *a9 = NULL,
55  const char *a10 = NULL,
56  const char *a11 = NULL,
57  const char *a12 = NULL,
58  const char *a13 = NULL,
59  const char *a14 = NULL,
60  const char *a15 = NULL,
61  const char *a16 = NULL,
62  const char *a17 = NULL,
63  const char *a18 = NULL,
64  const char *a19 = NULL
65  )
66  {
67  // this function is inline so it can be a little bit less wasteful...
68  const char * const argv[] = {
69  cmd,
70  a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
71  a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
72  NULL
73  };
74  init(argv);
75  }
76 
86  WvSystem(const char * const *argv)
87  { init(argv); }
88 
93  virtual ~WvSystem();
94 
100  int go();
101 
103  WvSystem &infile(WvStringParm filename);
104 
106  WvSystem &outfile(WvStringParm filename);
107 
109  WvSystem &errfile(WvStringParm filename);
110 
111 private:
112  bool started;
113  WvString fdfiles[3]; // stdin, stdout, stderr
114 
115  void init(const char * const *argv);
116  virtual int fork(int *waitfd);
117 };
118 
119 
120 #endif // __WVSYSTEM_H