int env(int argc, char **argv) { char epath[PATH_MAX + 1]; char *oldpath = getenv("PATH"); assert(oldpath); if (!getExecutablePath(epath, sizeof(epath))) exit(EXIT_FAILURE); if (argc <= 1) { const std::string &pname = getParentProcessName(); if (pname == "csh" || pname == "tcsh") { std::cerr << std::endl << "you are invoking this program from a C shell, " << std::endl << "please use " << std::endl << std::endl << "setenv PATH `" << epath << "/osxcross-env -v=PATH`" << std::endl << std::endl << "instead." << std::endl << std::endl; } } std::vector<std::string> path; std::map<std::string, std::string> vars; splitPath(oldpath, path); if (!hasPath(path, epath)) path.push_back(epath); vars["PATH"] = joinPath(path); auto printVariable = [&](const std::string & var)->bool { auto it = vars.find(var); if (it == vars.end()) { std::cerr << "unknown variable '" << var << "'" << std::endl; return false; } std::cout << it->second << std::endl; return true; }; if (argc <= 1) { std::cout << std::endl; for (auto &v : vars) { std::cout << "export " << v.first << "="; if (!printVariable(v.first)) return 1; std::cout << std::endl; } } else { if (strncmp(argv[1], "-v=", 3)) return 1; const char *var = argv[1] + 3; return static_cast<int>(printVariable(var)); } return 0; }
bool ArchMiscWindows::wasLaunchedAsService() { String name; if (!getParentProcessName(name)) { LOG((CLOG_ERR "cannot determine if process was launched as service")); return false; } return (name == SERVICE_LAUNCHER); }