X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fvps.c;h=a3055a360fec9d6cb9d20337b67475990e38fb3b;hb=0d5f1561a88261415e2f3cf4f1de411d11878562;hp=a02b09f32e592709feec76ff4fc2b62470789098;hpb=171e766c6c9243be089823bb42ab067852276f70;p=util-vserver.git diff --git a/util-vserver/src/vps.c b/util-vserver/src/vps.c index a02b09f..a3055a3 100644 --- a/util-vserver/src/vps.c +++ b/util-vserver/src/vps.c @@ -21,13 +21,20 @@ #endif #include "util.h" -#include "wrappers.h" -#include "wrappers-vserver.h" #include "pathconfig.h" #include #include #include +#include +#include +#include + +#define ENSC_WRAPPERS_VSERVER 1 +#define ENSC_WRAPPERS_STDLIB 1 +#define ENSC_WRAPPERS_UNISTD 1 +#define ENSC_WRAPPERS_FCNTL 1 +#include #define CTXNR_WIDTH 5 #define HUNK_SIZE 0x4000 @@ -71,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_X_getctx(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(); @@ -241,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); }