added chbind-test
[util-vserver.git] / util-vserver / src / util.h
index ebf6ee0..0525e08 100644 (file)
@@ -19,6 +19,8 @@
 #ifndef H_UTIL_VSERVER_SRC_UTIL_H
 #define H_UTIL_VSERVER_SRC_UTIL_H
 
+#include "compat.h"
+
 #include <unistd.h>
 #include <string.h>
 
   "the GNU General Public License.  This program has absolutely no warranty.\n"
 #endif
 
-inline static void
+#ifndef __cplusplus
+#  define cAsT_(X)              (X))
+#  define reinterpret_cast(X)   ((X) cAsT_
+#  define static_cast(X)        ((X) cAsT_
+#  define const_cast(X)         ((X) cAsT_
+#else   /* __cplusplus */
+#  define reinterpret_cast(X)   reinterpret_cast<X>
+#  define static_cast(X)        static_cast<X>
+#  define const_cast(X)         const_cast<X>
+#endif
+
+#define DIM_OF(X)              (sizeof(X)/sizeof((X)[0]))
+
+inline static void *
+Xmemcpy(void * restrict dst, void const * restrict src, size_t len)
+{
+  memcpy(dst, src, len);
+  return (char *)(dst)+len;
+}
+
+inline static void UNUSED
 writeStr(int fd, char const *cmd)
 {
   (void)write(fd, cmd, strlen(cmd));
 }
 
-#define WRITE_MSG(FD,X)                (void)(write(FD,X,sizeof(X)))
+struct stat;
+int    safeChdir(char const *, struct stat const *exp_stat) NONNULL((1,2));
+
+void   exitLikeProcess(int pid) NORETURN;
+
+#define WRITE_MSG(FD,X)                (void)(write(FD,X,sizeof(X)-1))
 #define WRITE_STR(FD,X)                writeStr(FD,X)
 
+#define VSERVER_DECLARE_CMD(CMD)     \
+  char         buf[strlen(CMD)+1];  \
+  memcpy(buf, (CMD), strlen(CMD)+1); \
+  CMD = basename(buf);
+
 #endif //  H_UTIL_VSERVER_SRC_UTIL_H