X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fchcontext.c;h=1d88b0d677e822840ab17bdbcd4997fea982d2ce;hb=3eae145226ee3d60a7fa3b03dba1f98880747da8;hp=4da51d99837f893a9f981525c7fcd40d97171f9a;hpb=a4f37dc057de58a91433035a366bf956c6201d69;p=util-vserver.git diff --git a/util-vserver/src/chcontext.c b/util-vserver/src/chcontext.c index 4da51d9..1d88b0d 100644 --- a/util-vserver/src/chcontext.c +++ b/util-vserver/src/chcontext.c @@ -95,6 +95,10 @@ static void showHelp(int fd, char const *cmd, int res) { VSERVER_DECLARE_CMD(cmd); + +#if !defined(VC_ENABLE_API_COMPAT) && !defined(VC_ENABLE_API_LEGACY) + WRITE_MSG(1, "ERROR: tools were built without legacy API support; chcontext will not work!\n\n"); +#endif WRITE_MSG(fd, "Usage: "); WRITE_STR(fd, cmd); @@ -178,6 +182,8 @@ showVersion() exit(0); } +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) + static inline void setCap(char const *str, uint32_t *add_caps, uint32_t *remove_caps) { @@ -211,7 +217,7 @@ setFlags(char const *str, uint32_t *flags) if (err.ptr!=0) { WRITE_MSG(2, "Unknown flag '"); - write(2, err.ptr, err.len); + Vwrite(2, err.ptr, err.len); WRITE_MSG(2, "'\n"); exit(wrapper_exit_code); } @@ -260,12 +266,15 @@ tellContext(xid_t ctx) l = utilvserver_fmt_long(buf,ctx); WRITE_MSG(1, "New security context is "); - write(1, buf, l); + Vwrite(1, buf, l); WRITE_MSG(1, "\n"); } #include "context-sync.hc" +#endif + + int main (int argc, char *argv[]) { struct Arguments args = { @@ -278,10 +287,13 @@ int main (int argc, char *argv[]) .hostname = 0, .domainname = 0 }; + +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) xid_t newctx; int xflags; int p[2][2]; pid_t pid; +#endif global_args = &args; signal(SIGCHLD, SIG_DFL); @@ -298,6 +310,7 @@ int main (int argc, char *argv[]) case CMD_DOMAINNAME : args.domainname = optarg; break; case CMD_HOSTNAME : args.hostname = optarg; break; +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) case CMD_CAP : setCap(optarg, &args.add_caps, &args.remove_caps); break; @@ -316,7 +329,12 @@ int main (int argc, char *argv[]) } args.ctxs[args.nbctx++] = Evc_xidopt2xid(optarg, true); break; - +#else + case CMD_CAP : + case CMD_SECURE : + case CMD_FLAG : + case CMD_CTX : break; +#endif default : WRITE_MSG(2, "Try '"); @@ -327,6 +345,7 @@ int main (int argc, char *argv[]) } } +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) if (optind>=argc) { WRITE_MSG(2, "No command given; use '--help' for more information.\n"); exit(255); @@ -364,8 +383,14 @@ int main (int argc, char *argv[]) waitOnSync(pid, p, args.ctxs[0]!=VC_DYNAMIC_XID); return EXIT_SUCCESS; +#else + WRITE_MSG(2, "chcontext: tools were built without legacy API support; can not continue\n"); + return EXIT_FAILURE; +#endif } +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) + #ifdef ENSC_TESTSUITE #define FLAG_TEST(STR,EXP) \ { \ @@ -394,3 +419,7 @@ test() CAP_TEST("!CAP_CHOWN", 0, 1); } #endif + +#else +void test() {} +#endif