#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;
};
struct client * uh_client_lookup(int sock);
void uh_client_remove(int sock);
+#ifdef HAVE_CGI
+struct interpreter * uh_interpreter_add(const char *extn, const char *path);
+struct interpreter * uh_interpreter_lookup(const char *path);
+#endif
+
#endif