#include <getopt.h>
#include <assert.h>
#include <fcntl.h>
+#include <libgen.h>
#define ENSC_WRAPPERS_PREFIX "chcontext: "
#define ENSC_WRAPPERS_VSERVER 1
static void
showHelp(int fd, char const *cmd, int res)
{
+ VSERVER_DECLARE_CMD(cmd);
+
WRITE_MSG(fd, "Usage: ");
WRITE_STR(fd, cmd);
WRITE_MSG(fd,
showVersion()
{
WRITE_MSG(1,
- "chcontext " VERSION " -- allocates/enters a security context\n"
+ "chcontext-compat " VERSION " -- allocates/enters a security context\n"
"This program is part of " PACKAGE_STRING "\n\n"
"Copyright (C) 2003,2004 Enrico Scholz\n"
VERSION_COPYRIGHT_DISCLAIMER);
static inline void
setFlags(char const *str, uint32_t *flags)
{
- char const *err_ptr;
- size_t err_len;
+ struct vc_err_listparser err;
- *flags = vc_textlist2flag(str, 0, &err_ptr, &err_len);
+ *flags = vc_list2flag_compat(str, 0, &err);
- if (err_ptr!=0) {
+ if (err.ptr!=0) {
WRITE_MSG(2, "Unknown flag '");
- write(2, err_ptr, err_len);
+ write(2, err.ptr, err.len);
WRITE_MSG(2, "'\n");
exit(wrapper_exit_code);
}
args.domainname = "";
if (args.nbctx == 0)
- args.ctxs[args.nbctx++] = VC_RANDCTX;
+ args.ctxs[args.nbctx++] = VC_DYNAMIC_XID;
xflags = args.flags & S_CTX_INFO_INIT;
args.flags &= ~S_CTX_INFO_INIT;
if (args.remove_caps!=0 || xflags!=0)
Evc_new_s_context (VC_SAMECTX,args.remove_caps,xflags);
- tellContext(args.ctxs[0]==VC_RANDCTX ? newctx : args.ctxs[0]);
+ tellContext(args.ctxs[0]==VC_DYNAMIC_XID ? newctx : args.ctxs[0]);
doSyncStage1(p);
execvp (argv[optind],argv+optind);
doSyncStage2(p);
- perror("chcontext: execvp()");
+ PERROR_Q("chcontext: execvp", argv[optind]);
exit(255);
}