summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJohn Denker <jsd@av8n.com>2012-07-15 04:41:00 -0700
committerJohn Denker <jsd@av8n.com>2012-07-15 04:41:00 -0700
commit5b14bc41824ae70d33f1e7cd1486aec32b46b3e1 (patch)
tree3ae1117ee818dea48e302b3c0b5116d565a7691a /tools
parent536e04ff8c9452ac799c7c53c0414bd3b75f3b56 (diff)
pass group-ID in environment
Diffstat (limited to 'tools')
-rw-r--r--tools/hi-q.c15
-rw-r--r--tools/hi-test.c6
2 files changed, 18 insertions, 3 deletions
diff --git a/tools/hi-q.c b/tools/hi-q.c
index 40d7100..9d85b7a 100644
--- a/tools/hi-q.c
+++ b/tools/hi-q.c
@@ -20,6 +20,7 @@ using namespace std;
#include <sstream>
#include <string>
#include <vector>
+#include <sstream>
// error exit codes, as stated in qmail.c
const int ex_spam = 21;
@@ -126,7 +127,9 @@ int xclose(int arg){
return close(arg);
}
-int main(int argc, char** argv, char const * const * env) {
+extern char** environ;
+
+int main(int argc, char** argv) {
int verbose(1);
int kidstatus;
pid_t somekid;
@@ -339,7 +342,15 @@ int main(int argc, char** argv, char const * const * env) {
close(resync[rEnd]);
close(sync[rEnd]);
close(sync[wEnd]);
- rslt = Execve(prog[0], prog, env);
+
+ stringstream convert;
+ convert << getpgid(0);
+ const string grouper("HI_Q_GROUP=" + convert.str());
+ if (putenv((char*)grouper.c_str()) != 0) {
+ cerr << "putenv failed" << endl;
+ exit(1);
+ }
+ rslt = Execve(prog[0], prog, environ);
fprintf(stderr, "hi-q: failed to exec '%s': ", prog[0]);
perror(0);
exit(ex_syserr);
diff --git a/tools/hi-test.c b/tools/hi-test.c
index 3086535..d74b3c9 100644
--- a/tools/hi-test.c
+++ b/tools/hi-test.c
@@ -1,7 +1,11 @@
#include <iostream>
+#include <stdlib.h>
using namespace std;
int main(){
- cerr << "++++ hi-test pid: " << getpid() << " group: " << getpgid(0) << endl;
+ cerr << "++++ hi-test pid: " << getpid() << " group: " << getpgid(0);
+ char* foo = getenv("HI_Q_GROUP");
+ if (foo) cerr << " HI_Q_GROUP: " << foo;
+ cerr << endl;
}