/* execvp_env.c -- exec from vector using PATH, expand environment args */ #include /* for getenv,etc. */ #include /* for strdup,etc. */ #include /* for execvp */ /* execvp_env -- exec from vector using PATH, expand environment args */ int execvp_env (const char *file, char *const argv[]) { #if defined (__MINGW32__) const char *args[50]; #else char *args[50]; #endif int i; for (i=0; argv[i]; i++) { char* expansion=0; if (*argv[i] == '$' && (expansion = getenv(argv[i]+1))) args[i] = strdup(expansion); else args[i] = argv[i]; } args[i] = 0; return execvp(args[0],args); }