Index: trunk/include/sh_cat.h
===================================================================
--- trunk/include/sh_cat.h	(revision 167)
+++ trunk/include/sh_cat.h	(revision 169)
@@ -142,5 +142,8 @@
 
 #ifdef SH_USE_PORTCHECK
- MSG_PORT_REPORT,
+ MSG_PORT_MISS,
+ MSG_PORT_NEW,
+ MSG_PORT_RESTART,
+ MSG_PORT_NEWPORT,
 #endif
 
Index: trunk/include/sh_extern.h
===================================================================
--- trunk/include/sh_extern.h	(revision 167)
+++ trunk/include/sh_extern.h	(revision 169)
@@ -10,6 +10,7 @@
   char   *  envv[32];
   char      checksum[KEY_LEN + 1];
-
+#if 0
   uid_t     trusted_users[32];
+#endif
   uid_t     run_user_uid;
   gid_t     run_user_gid;
Index: trunk/include/sh_hash.h
===================================================================
--- trunk/include/sh_hash.h	(revision 167)
+++ trunk/include/sh_hash.h	(revision 169)
@@ -47,4 +47,8 @@
  */
 int sh_hash_list_db (const char * db_file);
+
+/* List database content for a single file
+ */
+int set_list_file (const char * c);
 
 /* List database content with full detail
Index: trunk/include/sh_string.h
===================================================================
--- trunk/include/sh_string.h	(revision 169)
+++ trunk/include/sh_string.h	(revision 169)
@@ -0,0 +1,47 @@
+#ifndef SH_STRING_H
+#define SH_STRING_H
+
+
+/* String definition and utility functions.
+ */
+typedef struct sh_str_struct
+{
+  char * str; /* always NULL terminated               */
+  size_t len; /* without terminating \0               */
+  size_t siz; /* size of allocated buffer             */
+} sh_string;
+
+sh_string * sh_string_new(size_t size);
+void sh_string_destroy(sh_string ** s);
+#define sh_string_str(a) ((a)->str)
+#define sh_string_len(a) ((a)->len)
+
+/* concat string to sh_string
+ */
+sh_string * sh_string_cat_lchar(sh_string * s, char * str, size_t len);
+
+/* set sh_string from string
+ */
+sh_string * sh_string_set_from_char(sh_string * s, char * str);
+
+/* create new sh_string from array of given length
+ */
+sh_string * sh_string_new_from_lchar(char * str, size_t len);
+
+#define sh_string_copy(a) ((a) ? sh_string_new_from_lchar(((a)->str), ((a)->len)) : NULL)
+
+/* create new sh_string from three arrays of given length
+ */
+sh_string * sh_string_new_from_lchar3(char * str1, size_t len1,
+                                      char * str2, size_t len2,
+                                      char * str3, size_t len3);
+
+/* Truncate to desired length.
+ */
+sh_string * sh_string_truncate(sh_string * s, size_t len);
+
+/* If requested increase is zero, increase by default amount. 
+ */
+sh_string * sh_string_grow(sh_string * s, size_t increase);
+
+#endif
Index: trunk/include/sh_unix.h
===================================================================
--- trunk/include/sh_unix.h	(revision 167)
+++ trunk/include/sh_unix.h	(revision 169)
@@ -91,5 +91,5 @@
 #define MODI_PREL (1 << 13)
 /* get content     */
-#define MODI_TXT (1 << 14)
+#define MODI_TXT ((1 << 14)|MODI_CHK)
 
 #define SH_TXT_MAX 9200
Index: trunk/include/slib.h
===================================================================
--- trunk/include/slib.h	(revision 167)
+++ trunk/include/slib.h	(revision 169)
@@ -213,4 +213,9 @@
 
   /*
+   * robust strcasecmp replacement
+   */
+  int sl_strcasecmp(const char * one, const char * two);
+
+  /*
    * robust strlen replacement
    */
