#ifndef CONTAIN_H
#define CONTAIN_H

#define GID 0
#define UID 1
#define INVALID ((unsigned) -1)
#define SHELL "/bin/sh"

#define getid(type) ((unsigned) ((type) == GID ? getgid() : getuid()))
#define idfile(type) ((type) == GID ? "gid_map" : "uid_map")
#define idname(type) ((type) == GID ? "GID" : "UID")
#define subpath(type) ((type) == GID ? "/etc/subgid" : "/etc/subuid")

extern char *append(char **destination, const char *format, ...);
extern void createroot(char *src, int console, char *helper, char *bind);
extern void denysetgroups(pid_t pid);
extern void enterroot(void);
extern int getconsole(void);
extern void mountproc(void);
extern void mountsys(void);
extern void setconsole(char *name);
extern char *string(const char *format, ...);
extern int supervise(pid_t child, int console);
extern char *tmpdir(void);
extern void waitforstop(pid_t child);
extern void waitforexit(pid_t child);
extern void writemap(pid_t pid, int type, char *map);

#endif