X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fvps.c;h=a3055a360fec9d6cb9d20337b67475990e38fb3b;hb=5b39edfee423f5f3cbe8fa223dcfdc9e8d66e286;hp=1d8e4dea81edf2a5eaa3bb5edb6aadf000b959c6;hpb=86a23427cca76a5a9befd60c85535a0e738bc3c6;p=util-vserver.git diff --git a/util-vserver/src/vps.c b/util-vserver/src/vps.c index 1d8e4de..a3055a3 100644 --- a/util-vserver/src/vps.c +++ b/util-vserver/src/vps.c @@ -27,6 +27,8 @@ #include #include #include +#include +#include #define ENSC_WRAPPERS_VSERVER 1 #define ENSC_WRAPPERS_STDLIB 1 @@ -76,18 +78,25 @@ showVersion() static size_t writeContextInfo(xid_t ctx, char const *name) { - char buf[sizeof(ctx)*3+1]; - size_t l = utilvserver_fmt_ulong(buf, ctx); size_t l1 = name==0 ? 0 : strlen(name); size_t res = CTXNR_WIDTH + 1; + + if (ctx==VC_NOCTX) { + if (31) { if (strcmp(argv[1], "--help") ==0) showHelp(1, argv[0], 0); if (strcmp(argv[1], "--version")==0) showVersion(); } - - if (vc_get_task_xid(0)!=1) - Evc_new_s_context(1, vc_get_securecaps(), 0); + + signal(SIGCHLD, SIG_DFL); + + if (!switchToWatchXid(&errptr)) { + perror(errptr); + exit(wrapper_exit_code); + } + + if (access("/proc/uptime",R_OK)==-1 && errno==ENOENT) + WRITE_MSG(2, + "WARNING: can not access /proc/uptime. Usually, this is caused by\n" + " procfs-security. Please read the FAQ for more details\n" + " http://www.linux-vserver.org/index.php?page=Linux-Vserver+FAQ\n"); Epipe(p); pid = Efork(); @@ -246,8 +267,5 @@ int main(int argc, char *argv[]) Eclose(p[0]); processOutput(data, len); - - exitLikeProcess(pid); - perror("exitLikeProcess()"); - return wrapper_exit_code; + exitLikeProcess(pid, "ps", wrapper_exit_code); }