X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fsave_ctxinfo.c;h=2f84d3f51fa3f59e96214b3c41b073240b87bf74;hb=090a340dad3e79a3ccfa6954c779f5abf71f0f60;hp=3163596c50440ae22f03920880b6cb0d8b585120;hpb=effffe9f6b12f7605a439196b4d45e64e98af598;p=util-vserver.git diff --git a/util-vserver/src/save_ctxinfo.c b/util-vserver/src/save_ctxinfo.c index 3163596..2f84d3f 100644 --- a/util-vserver/src/save_ctxinfo.c +++ b/util-vserver/src/save_ctxinfo.c @@ -22,17 +22,23 @@ # include #endif +#include "pathconfig.h" #include "vserver.h" #include "internal.h" #include "util.h" -#include "wrappers.h" -#include "wrappers-vserver.h" #include #include #include #include #include +#include + +#define ENSC_WRAPPERS_PREFIX "save_ctxinfo: " +#define ENSC_WRAPPERS_VSERVER 1 +#define ENSC_WRAPPERS_UNISTD 1 +#define ENSC_WRAPPERS_FCNTL 1 +#include int wrapper_exit_code = 255; @@ -47,18 +53,18 @@ checkParams(int argc, char UNUSED * argv[]) int main(int argc, char *argv[]) { - char runfile[(checkParams(argc,argv),strlen(argv[1])) + sizeof("/run.rev/99999")]; + char runfile[(checkParams(argc,argv),strlen(argv[1])) + sizeof(DEFAULT_PKGSTATEREVDIR "/99999")]; char dstfile[PATH_MAX]; int fd; - char buf[6]; - ctx_t ctx; + char buf[sizeof(int)*3+2]; + xid_t ctx; ssize_t len; ssize_t len1 = strlen(argv[1]); strcpy(runfile, argv[1]); strcpy(runfile+len1, "/run"); - ctx=Evc_X_getctx(0); + ctx=Evc_get_task_xid(0); if (ctx==0) { WRITE_MSG(2, "save_ctxinfo: Can not operate in context 0\n"); @@ -70,21 +76,22 @@ int main(int argc, char *argv[]) return 255; } - Ereadlink(runfile, dstfile, sizeof(dstfile)); - len = utilvserver_uint2str(buf, sizeof(buf), ctx, 10); + len = EreadlinkD(runfile, dstfile, sizeof(dstfile)-1); + dstfile[len] = '\0'; + len = utilvserver_fmt_uint(buf, ctx); - fd = Eopen(dstfile, O_EXCL|O_CREAT|O_WRONLY, 0644); + fd = EopenD(dstfile, O_EXCL|O_CREAT|O_WRONLY, 0644); if (write(fd, buf, len) !=len || write(fd, "\n", 1) !=1) { - perror("write()"); + perror("save_ctxinfo: write()"); return -1; } Eclose(fd); - strcat(runfile, ".rev/"); - strcat(runfile, buf); + strcpy(runfile, DEFAULT_PKGSTATEREVDIR "/"); + strncat(runfile, buf, len); unlink(runfile); - Esymlink(argv[1], runfile); + EsymlinkD(argv[1], runfile); Eexecv(argv[2], argv+2); }