From d4e3fb9a0843badbc4a6a1a5f64b9e850d1285f8 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sun, 22 Jan 2006 18:15:21 +0000 Subject: [PATCH] added some workarounds so that it build without compat/legacy API resp. give out warnings explaining the situation git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2269 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/src/capchroot.c | 13 +++++++++++-- util-vserver/src/chcontext.c | 31 ++++++++++++++++++++++++++++++- util-vserver/src/reducecap.c | 27 +++++++++++++++++++++++++-- 3 files changed, 66 insertions(+), 5 deletions(-) diff --git a/util-vserver/src/capchroot.c b/util-vserver/src/capchroot.c index e151bb2..dd1dc74 100644 --- a/util-vserver/src/capchroot.c +++ b/util-vserver/src/capchroot.c @@ -66,6 +66,11 @@ 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(2, "ERROR: tools were built without legacy API support; capchroot will not work!\n\n"); +#endif + WRITE_MSG(fd, "Usage: "); WRITE_STR(fd, cmd); WRITE_MSG(fd, @@ -92,7 +97,7 @@ showVersion() exit(0); } -static void +static UNUSED void setUser(char const *user) { struct passwd *p = 0; @@ -141,6 +146,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 directory specified; try '--help' for more information\n"); else if (optind+1==argc) @@ -159,6 +165,9 @@ int main (int argc, char *argv[]) setUser(suid_user); EexecvpD(argv[optind+1], argv+optind+1); } - +#else + WRITE_MSG(2, "capchroot: tools were built without legacy API support; can not continue\n"); +#endif + return EXIT_FAILURE; } diff --git a/util-vserver/src/chcontext.c b/util-vserver/src/chcontext.c index 0e0ae48..c63b1eb 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(2, "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) { @@ -266,6 +272,9 @@ tellContext(xid_t ctx) #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 diff --git a/util-vserver/src/reducecap.c b/util-vserver/src/reducecap.c index 2567ebd..fb936dd 100644 --- a/util-vserver/src/reducecap.c +++ b/util-vserver/src/reducecap.c @@ -143,6 +143,10 @@ int wrapper_exit_code = 255; static void showHelp(int fd, char const *cmd, int res) { +#if !defined(VC_ENABLE_API_COMPAT) && !defined(VC_ENABLE_API_LEGACY) + WRITE_MSG(2, "ERROR: tools were built without legacy API support; reducecap will not work!\n\n"); +#endif + WRITE_MSG(fd, "Usage:\n "); WRITE_STR(fd, cmd); WRITE_MSG(fd, @@ -206,6 +210,8 @@ show(pid_t pid) printReducecap(&user); } +#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY) + static uint32_t getCap(char const *cap) { @@ -220,6 +226,8 @@ getCap(char const *cap) return (1<