X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fensc_wrappers%2Fwrappers.h;h=fbfafbdb438ed508757de223adf1bbc54e9626d2;hb=3ff08072cc2e06b99630ba3595ed289cf49a4a40;hp=d662051ff89155ac53e04d5642391a0f36c261c6;hpb=c66b2f97361761b8a87058dc7a49ab59d4520556;p=util-vserver.git diff --git a/util-vserver/ensc_wrappers/wrappers.h b/util-vserver/ensc_wrappers/wrappers.h index d662051..fbfafbd 100644 --- a/util-vserver/ensc_wrappers/wrappers.h +++ b/util-vserver/ensc_wrappers/wrappers.h @@ -24,6 +24,33 @@ #include "wrappers_handler.hc" +#define ENSC_DOQUOTE_COND(PTR, VAL, LEN, DO_QUOTE) \ + if (DO_QUOTE) *PTR++ = '"'; \ + memcpy(PTR, VAL, LEN); PTR += LEN; \ + if (DO_QUOTE) *PTR++ = '"' \ + +#define ENSC_DETAIL1(RES,FUNC,VAL,DO_QUOTE) \ + size_t l_ = strlen(VAL); \ + char RES[l_ + sizeof(FUNC "(\"\")")]; \ + char * ptr_ = RES; \ + memcpy(ptr_, FUNC "(", sizeof(FUNC)); ptr_ += sizeof(FUNC); \ + ENSC_DOQUOTE_COND(ptr_, VAL, l_, DO_QUOTE); \ + *ptr_++ = ')'; \ + *ptr_ = '\0'; + +#define ENSC_DETAIL2(RES,FUNC, VAL0,VAL1, DO_QUOTE0,DO_QUOTE1) \ + size_t l0_ = strlen(VAL0); \ + size_t l1_ = strlen(VAL1); \ + char RES[l0_ + l1_ + sizeof(FUNC "('','')")]; \ + char * ptr_ = RES; \ + memcpy(ptr_, FUNC "(", sizeof(FUNC)); ptr_ += sizeof(FUNC); \ + ENSC_DOQUOTE_COND(ptr_, VAL0, l0_, DO_QUOTE0); \ + *ptr_++ = ','; \ + ENSC_DOQUOTE_COND(ptr_, VAL1, l1_, DO_QUOTE1); \ + *ptr_++ = ')'; \ + *ptr_ = '\0'; + + #ifdef ENSC_WRAPPERS_UNISTD # include "wrappers-unistd.hc" #endif @@ -72,6 +99,13 @@ # include "wrappers-stdlib.hc" #endif +#ifdef ENSC_WRAPPERS_SOCKET +# include "wrappers-socket.hc" +#endif + +#undef ENSC_DETAIL2 +#undef ENSC_DETAIL1 +#undef ENSC_DOQUOTE_COND #undef H_ENSC_IN_WRAPPERS_H #undef WRAPPER_DECL