Index: trunk/include/samhain.h
===================================================================
--- trunk/include/samhain.h	(revision 130)
+++ trunk/include/samhain.h	(revision 131)
@@ -42,4 +42,7 @@
 #define SH_MAXBUF      4096
 #define SH_PATHBUF      256
+
+#define SH_GRBUF_SIZE  4096
+#define SH_PWBUF_SIZE  4096
 
 /* Sizes for arrays (user, group, timestamp).
Index: trunk/include/sh_files.h
===================================================================
--- trunk/include/sh_files.h	(revision 130)
+++ trunk/include/sh_files.h	(revision 131)
@@ -21,4 +21,17 @@
 #define SH_FILES_H
 
+struct sh_dirent {
+  char             * sh_d_name;
+  struct sh_dirent * next;
+};
+
+/* free a directory listing
+ */
+void kill_sh_dirlist (struct sh_dirent * dirlist);
+
+/* add an entry to a directory listing
+ */
+struct sh_dirent * addto_sh_dirlist (struct dirent * thisEntry, 
+				     struct sh_dirent * dirlist);
 /* register exceptions to hardlink check
  */
Index: trunk/include/sh_static.h
===================================================================
--- trunk/include/sh_static.h	(revision 130)
+++ trunk/include/sh_static.h	(revision 131)
@@ -15,7 +15,17 @@
 void  sh_setpwent(void);
 struct group * sh_getgrnam(const char *name);
+
 struct passwd * sh_getpwnam(const char *name);
+int getpwnam_r(const char *name, struct passwd *pwbuf,
+               char *buf, size_t buflen, struct passwd **pwbufp);
+
 struct group * sh_getgrgid(gid_t gid);
+int getgrgid_r(gid_t gid, struct group *gbuf,
+	       char *buf, size_t buflen, struct group **gbufp);
+
 struct passwd * sh_getpwuid(uid_t uid);
+int getpwuid_r(uid_t uid, struct passwd *pwbuf,
+               char *buf, size_t buflen, struct passwd **pwbufp);
+
 #endif
 
@@ -29,7 +39,10 @@
 #define sh_initgroups initgroups
 #define sh_getgrgid   getgrgid
+#define sh_getgrgid_r getgrgid_r
+#define sh_getpwnam   getpwnam
+#define sh_getpwnam_r getpwnam_r
+#define sh_getpwuid   getpwuid
+#define sh_getpwuid_r getpwuid_r
 #define sh_getpwent   getpwent
-#define sh_getpwnam   getpwnam
-#define sh_getpwuid   getpwuid
 #define sh_endpwent   endpwent
 #define sh_setpwent   setpwent
Index: trunk/include/slib.h
===================================================================
--- trunk/include/slib.h	(revision 130)
+++ trunk/include/slib.h	(revision 131)
@@ -353,6 +353,9 @@
   int sl_read_timeout_prep (SL_TICKET ticket);
 
+  int sl_read_timeout_fd (int fd, void * buf, 
+			  size_t count, int timeout, int is_nonblocking);
+
   int sl_read_timeout (SL_TICKET ticket, void * buf, 
-		       size_t count, int timeout);
+		       size_t count, int timeout, int is_nonblocking);
 
   int sl_read_fast (SL_TICKET ticket, void * buf_in, size_t count);
