36 void printUsage(
char* name)
39 <<
" MCS_CID MCS_USER MCS_PASS MCS_DBNAME WORK_DIR PROGNAME [PARS...]" 43 void printArguments(
int argc,
char* argv[])
46 cerr <<
"Arguments: " << argc << endl;
47 for (i=0; i<argc; i++)
48 cerr << i <<
" " << argv[i] <<
"|" << endl;
51 int main(
int argc,
char* argv[])
56 cerr <<
"MCSEXEC: Wrong number of parameters" << endl << endl;
58 printArguments(argc, argv);
63 string user = argv[2];
64 string pass = argv[3];
65 string dbna = argv[4];
67 string path = argv[6];
69 char* pc = (
char*) strrchr(path.c_str(),
'/');
73 int subargc = argc - N_ARGS;
74 char** subargv = (
char**) malloc((subargc+2) *
sizeof(
char*));
76 subargv[0] = (
char*) malloc(strlen(prog.c_str()) + 1);
77 strcpy(subargv[0], prog.c_str());
78 for (i=0; i<subargc; i++)
80 subargv[i+1] = (
char*) malloc(strlen(argv[N_ARGS + i]) + 1);
81 strcpy(subargv[i+1], argv[N_ARGS + i]);
83 *subargv[subargc+1] =
'\0';
86 ret = chdir(wd.c_str());
88 cerr << strerror(errno) << endl;
93 ret = setenv(
"PWD", pc, REPLACE); free(pc);
95 ret = setenv(
"MCS_CID" , cid.c_str() , REPLACE);
97 ret = setenv(
"MCS_USER", user.c_str(), REPLACE);
99 ret = setenv(
"MCS_PASS", pass.c_str(), REPLACE);
101 ret = setenv(
"MCS_DBNAME", dbna.c_str(), REPLACE);
103 ret = execv(path.c_str(), subargv);
105 cerr << strerror(errno) << endl;