#include <stdarg.h>
#include <fcntl.h>
#include <pwd.h>
-#include <shadow.h>
#include <sys/stat.h>
+#ifdef HAVE_SHADOW
+#include <shadow.h>
+#endif
+
#define min(x, y) (((x) < (y)) ? (x) : (y))
#define max(x, y) (((x) > (y)) ? (x) : (y))
#define fd_cloexec(fd) \
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC)
+#define ensure_out(x) \
+ do { if((x) < 0) goto out; } while(0)
+
+#define ensure_ret(x) \
+ do { if((x) < 0) return -1; } while(0)
+
+
struct path_info {
char *root;
char *phys;
char *name;
char *info;
char *query;
+ int redirected;
struct stat stat;
};