X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fvps.c;h=ead995da4b4b5e3870858a7ca3e1387e7d3b74b1;hb=a917f24ef7b003dcef54a3db2644cf9cb4bc2db2;hp=aac59f4d60aa71bc60de97259a140f98a931c815;hpb=6afa2d4b4b24055db250911aa8674c09fa623752;p=util-vserver.git diff --git a/util-vserver/src/vps.c b/util-vserver/src/vps.c index aac59f4..ead995d 100644 --- a/util-vserver/src/vps.c +++ b/util-vserver/src/vps.c @@ -21,16 +21,21 @@ #endif #include "util.h" -#include "wrappers.h" -#include "wrappers-vserver.h" #include "pathconfig.h" #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 0x40; +#define HUNK_SIZE 0x4000 #define CONTEXT_WIDTH 20 #define CONTEXT_PLACE " " @@ -44,6 +49,30 @@ struct ContextMapping { static struct ContextMapping *mapping = 0; static size_t mapping_len = 0; + +static void +showHelp(int fd, char const *cmd, int res) +{ + WRITE_MSG(fd, "Usage: "); + WRITE_STR(fd, cmd); + WRITE_MSG(fd, + " *\n\n" + "Please report bugs to " PACKAGE_BUGREPORT "\n"); + exit(res); +} + +static void +showVersion() +{ + WRITE_MSG(1, + "vps " VERSION " -- shows processes in vserver-contexts\n" + "This program is part of " PACKAGE_STRING "\n\n" + "Copyright (C) 2004 Enrico Scholz\n" + VERSION_COPYRIGHT_DISCLAIMER); + exit(0); +} + + static size_t writeContextInfo(xid_t ctx, char const *name) { @@ -72,7 +101,7 @@ extractCtx(char *pid_str) while (*pid_str==' ') ++pid_str; pid = atoi(pid_str); - return vc_X_getctx(pid); + return vc_get_task_xid(pid); } static char const * @@ -173,6 +202,7 @@ processOutput(char *data, size_t len) write(1, data, pid_end); l = writeContextInfo(ctx, vserver_name); if (l1) { + if (strcmp(argv[1], "--help") ==0) showHelp(1, argv[0], 0); + if (strcmp(argv[1], "--version")==0) showVersion(); + } + + if (!switchToWatchXid(&errptr)) { + perror(errptr); + exit(wrapper_exit_code); + } Epipe(p); pid = Efork();