#
# Patch managed by http://www.holgerschurig.de/patcher.html
#

Index: fush-0-9-0/configure.in
===================================================================
--- fush-0-9-0.orig/configure.in	2004-01-25 18:52:01.000000000 -0600
+++ fush-0-9-0/configure.in	2005-01-18 13:41:06.000000000 -0600
@@ -27,7 +27,7 @@
 # Checks for header files.
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/ioctl.h sys/param.h syslog.h unistd.h string.h sys/types.h syslog.h glob.h time.h errno.h libutil.h termios.h])
+AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/ioctl.h sys/param.h syslog.h unistd.h string.h sys/types.h syslog.h glob.h time.h errno.h libutil.h pty.h termios.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -35,6 +35,14 @@
 AC_STRUCT_TM
 AC_TYPE_UID_T
 AC_CHECK_TYPE( mode_t, unsigned short )
+AC_CHECK_DECLS( [user_from_uid], [], [], [
+#if HAVE_LIBUTIL_H
+# include <libutil.h>
+#endif] )
+if test x"$HAVE_DECL_USER_FROM_UID" = "x"; then
+  PWCACHE_OBJS="pwcache.o"
+fi
+AC_SUBST(PWCACHE_OBJS)
 
 # Checks for library functions.
 AC_FUNC_FORK
Index: fush-0-9-0/src/fushtools.c
===================================================================
--- fush-0-9-0.orig/src/fushtools.c	2004-01-25 18:52:01.000000000 -0600
+++ fush-0-9-0/src/fushtools.c	2005-01-18 13:41:30.000000000 -0600
@@ -23,7 +23,13 @@
 #include "linklist.h"
 #include "md5.h"
 #include <pwd.h>
-#include <libutil.h>
+#if HAVE_LIBUTIL_H
+# include <libutil.h>
+#else
+# include <pty.h>
+# include <utmp.h>
+# include "pwcache.h"
+#endif
 #include <termios.h>
 
 extern List g_replace;
Index: fush-0-9-0/src/pwcache.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ fush-0-9-0/src/pwcache.c	2005-01-18 15:38:02.000000000 -0600
@@ -0,0 +1,88 @@
+// Copyright (C) 1992-1998 by Michael K. Johnson, johnsonm@redhat.com
+// Note: most likely none of his code remains
+//
+// Copyright 2002, Albert Cahalan
+//
+// This file is placed under the conditions of the GNU Library
+// General Public License, version 2, or any later version.
+// See file COPYING for information on distribution conditions.
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#include <pwd.h>
+//#include "alloc.h"
+#include "pwcache.h"
+#include <grp.h>
+
+// might as well fill cache lines... else we waste memory anyway
+
+#define	HASHSIZE	64		/* power of 2 */
+#define	HASH(x)		((x) & (HASHSIZE - 1))
+
+#define NAMESIZE	20
+#define NAMELENGTH	"19"
+
+static struct pwbuf {
+    struct pwbuf *next;
+    uid_t uid;
+    char name[NAMESIZE];
+} *pwhash[HASHSIZE];
+
+char *user_from_uid(uid_t uid, int nouser)
+{
+    struct pwbuf **p;
+    struct passwd *pw;
+    char *ret;
+
+    p = &pwhash[HASH(uid)];
+    while (*p) {
+	if ((*p)->uid == uid)
+	    return((*p)->name);
+	p = &(*p)->next;
+    }
+    *p = (struct pwbuf *) malloc(sizeof(struct pwbuf));
+    (*p)->uid = uid;
+    ret = (*p)->name;
+    if ((pw = getpwuid(uid)) == NULL)
+	if (nouser)
+	    ret = NULL;
+	else
+	    sprintf((*p)->name, "#%d", uid);
+    else
+	sprintf((*p)->name, "%-." NAMELENGTH "s", pw->pw_name);
+    (*p)->next = NULL;
+    return ret;
+}
+
+static struct grpbuf {
+    struct grpbuf *next;
+    gid_t gid;
+    char name[NAMESIZE];
+} *grphash[HASHSIZE];
+
+char *group_from_gid(gid_t gid, int nogroup)
+{
+    struct grpbuf **g;
+    struct group *gr;
+    char *ret;
+
+    g = &grphash[HASH(gid)];
+    while (*g) {
+       if ((*g)->gid == gid)
+           return((*g)->name);
+       g = &(*g)->next;
+    }
+    *g = (struct grpbuf *) malloc(sizeof(struct grpbuf));
+    (*g)->gid = gid;
+    ret = (*g)->name;
+    if ((gr = getgrgid(gid)) == NULL)
+       if (nogroup)
+	   ret = NULL;
+       else
+           sprintf((*g)->name, "#%d", gid);
+    else
+       sprintf((*g)->name, "%-." NAMELENGTH "s", gr->gr_name);
+    (*g)->next = NULL;
+    return ret;
+}
Index: fush-0-9-0/src/pwcache.h
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ fush-0-9-0/src/pwcache.h	2005-01-18 13:45:17.000000000 -0600
@@ -0,0 +1,9 @@
+#ifndef PROCPS_PROC_PWCACHE_H
+#define PROCPS_PROC_PWCACHE_H
+
+#include <sys/types.h>
+
+extern char *user_from_uid(uid_t uid, int nouser);
+extern char *group_from_gid(gid_t gid, int nogroup);
+
+#endif
Index: fush-0-9-0/src/Makefile.in
===================================================================
--- fush-0-9-0.orig/src/Makefile.in	2004-01-25 18:52:01.000000000 -0600
+++ fush-0-9-0/src/Makefile.in	2005-01-18 13:37:23.000000000 -0600
@@ -1,7 +1,7 @@
 CC =		@CC@
 CFLAGS =	-Wall @CFLAGS@ @CPPFLAGS@ @DEFS@
 LDFLAGS =	@LDFLAGS@ @LIBS@
-OBJS =		fush.o fushtools.o fuparse.o md5.o linklist.o
+OBJS =		fush.o fushtools.o fuparse.o md5.o linklist.o @PWCACHE_OBJS@
 ADMOBJS = fushadmin.o md5.o
 HEADERS = fush.h