Index: Makefile.in
--- Makefile.in.orig	2011-08-06 10:18:07.000000000 +0200
+++ Makefile.in	2011-10-10 21:14:58.000000000 +0200
@@ -1208,8 +1208,6 @@
 	  sed -e '/^#ifdef  *DPKGBUILD$$/,/^#endif$$/d';                      \
 	fi |                                                                  \
 	sed -e '/^#/d' >"$@"
-	@out=`echo "$@" 2>/dev/null|sed -e 's/\.[^.]*$$/.ps/'`;               \
-	man -Tps "./$@" >"$${out}" 2>/dev/null || rm -f "$${out}"
 
 clean-local:
 	-rm -rf shellinaboxd.1                                                \
Index: libhttp/httpconnection.c
--- libhttp/httpconnection.c.orig	2011-08-06 10:18:07.000000000 +0200
+++ libhttp/httpconnection.c	2011-10-10 21:14:58.000000000 +0200
@@ -51,6 +51,7 @@
 #include <math.h>
 #include <netdb.h>
 #include <netinet/in.h>
+#include <sys/socket.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
Index: libhttp/server.c
--- libhttp/server.c.orig	2011-08-06 10:18:07.000000000 +0200
+++ libhttp/server.c	2011-10-10 21:14:58.000000000 +0200
@@ -46,6 +46,7 @@
 #include "config.h"
 
 #include <arpa/inet.h>
+#include <netinet/in.h>
 #include <fcntl.h>
 #include <netinet/in.h>
 #include <stdlib.h>
Index: shellinabox/launcher.c
--- shellinabox/launcher.c.orig	2011-08-06 10:18:07.000000000 +0200
+++ shellinabox/launcher.c	2011-10-10 21:14:58.000000000 +0200
@@ -500,6 +500,7 @@
 #endif
 
 int launchChild(int service, struct Session *session, const char *url) {
+  const char *header;
   if (launcher < 0) {
     errno              = EINVAL;
     return -1;
@@ -522,6 +523,10 @@
   request->service     = service;
   request->width       = session->width;
   request->height      = session->height;
+  if ((header = getFromHashMap(httpGetHeaders(session->http), "x-shellinabox-preauthuser")) != NULL)
+      strncat(request->preAuthUser, header, sizeof(request->preAuthUser) - 1);
+  else
+      strncat(request->preAuthUser, "unknown", sizeof(request->preAuthUser) - 1);
   strncat(request->peerName, httpGetPeerName(session->http),
           sizeof(request->peerName) - 1);
   request->urlLength   = strlen(u);
@@ -1189,7 +1194,7 @@
 }
 
 static void execService(int width ATTR_UNUSED, int height ATTR_UNUSED,
-                        struct Service *service, const char *peerName,
+                        struct Service *service, const char *peerName, const char *preAuthUser,
                         char **environment, const char *url) {
   UNUSED(width);
   UNUSED(height);
@@ -1227,6 +1232,9 @@
   check(key                   = strdup("peer"));
   check(value                 = strdup(peerName));
   addToHashMap(vars, key, value);
+  check(key                   = strdup("preauthuser"));
+  check(value                 = strdup(preAuthUser));
+  addToHashMap(vars, key, value);
   check(key                   = strdup("uid"));
   addToHashMap(vars, key, stringPrintf(NULL, "%d", service->uid));
   check(key                   = strdup("url"));
@@ -1416,7 +1424,7 @@
 }
 
 static void childProcess(struct Service *service, int width, int height,
-                         struct Utmp *utmp, const char *peerName,
+                         struct Utmp *utmp, const char *peerName, const char *preAuthUser,
                          const char *url) {
   // Set initial window size
   setWindowSize(0, width, height);
@@ -1548,7 +1556,7 @@
     execle("/usr/bin/login", "login", "-p", "-h", peerName,
            (void *)0, environment);
   } else {
-    execService(width, height, service, peerName, environment, url);
+    execService(width, height, service, peerName, preAuthUser, environment, url);
   }
   _exit(1);
 }
@@ -1638,7 +1646,7 @@
                                         services[request.service]->useLogin,
                                         &utmp, request.peerName)) == 0) {
       childProcess(services[request.service], request.width, request.height,
-                   utmp, request.peerName, url);
+                   utmp, request.peerName, request.preAuthUser, url);
       free(url);
       _exit(1);
     } else {
Index: shellinabox/launcher.h
--- shellinabox/launcher.h.orig	2011-08-06 10:18:07.000000000 +0200
+++ shellinabox/launcher.h	2011-10-10 21:14:58.000000000 +0200
@@ -55,6 +55,7 @@
   int  service;
   int  width, height;
   char peerName[128];
+  char preAuthUser[32];
   int  urlLength;
   char url[0];
 };
