Index: trunk/include/sh_cat.h
===================================================================
--- trunk/include/sh_cat.h	(revision 183)
+++ trunk/include/sh_cat.h	(revision 185)
@@ -277,5 +277,6 @@
  MSG_E_HASH,      
  MSG_E_ACCESS,    
- MSG_E_READ,      
+ MSG_E_READ,
+ MSG_E_NOTREG,
  MSG_E_TIMEOUT,
  MSG_NODEV,       
Index: trunk/include/sh_log_check.h
===================================================================
--- trunk/include/sh_log_check.h	(revision 183)
+++ trunk/include/sh_log_check.h	(revision 185)
@@ -64,4 +64,8 @@
 			       struct sh_logfile * logfile);
 
+/* Continued line reader.   */ 
+sh_string * sh_cont_reader (sh_string * record, 
+			    struct sh_logfile * logfile, char * cont);
+
 /* Binary reader */
 sh_string * sh_binary_reader (void * s, size_t size, struct sh_logfile * logfile);
@@ -81,4 +85,11 @@
 /* Parses a pacct record. */
 struct sh_logrecord * sh_parse_pacct (sh_string * logline, void * fileinfo);
+
+/* Get a samba record */
+sh_string * sh_read_samba (sh_string * record, struct sh_logfile * logfile);
+
+/* Parses a samba record. */
+struct sh_logrecord * sh_parse_samba (sh_string * logline, void * fileinfo);
+
 
 /**
Index: trunk/include/sh_string.h
===================================================================
--- trunk/include/sh_string.h	(revision 183)
+++ trunk/include/sh_string.h	(revision 185)
@@ -33,5 +33,5 @@
 
 #define sh_string_copy(a)  ((a) ? sh_string_new_from_lchar(((a)->str), ((a)->len)) : NULL)
-#define sh_string_add(a,b) ((a && b) ? sh_string_add_from_lchar((a), ((b)->str), ((b)->len)) : NULL)
+#define sh_string_add(a,b) ((a && b) ? sh_string_cat_lchar((a), ((b)->str), ((b)->len)) : NULL)
 
 /* create new sh_string from three arrays of given length
@@ -53,4 +53,11 @@
  */
 size_t sh_string_read(sh_string * s, FILE * fp, size_t maxlen);
+
+/* Read a string from a file, with maxlen. Return 0 on EOF,
+ * -1 on error, and -2 if a line exceeds maxlen.
+ * If 'cont' != NULL, continuation lines starting with a char
+ * in 'cont' are concatenated.
+ */
+size_t sh_string_read_cont(sh_string * s, FILE * fp, size_t maxlen, char *cont);
 
 /* Split array at delim in at most nfields fields. 
Index: trunk/include/sh_utils.h
===================================================================
--- trunk/include/sh_utils.h	(revision 183)
+++ trunk/include/sh_utils.h	(revision 185)
@@ -178,4 +178,6 @@
 char * sh_util_safe_name (const char * name) SH_GNUC_MALLOC SH_GNUC_PURE;
 
+char * sh_util_safe_name_keepspace (const char * name) SH_GNUC_MALLOC SH_GNUC_PURE;
+
 /* check max size of printf result string
  */
