lib: Remove global xfile.h includes
[samba.git] / source3 / winbindd / idmap_hash / mapfile.c
index 5ab1142ffe0182e63e1988f5f5765cd0e165decc..41554a157203b5813bfbe16af5be07747d9ab94e 100644 (file)
  */
 
 #include "includes.h"
+#include "system/filesys.h"
 #include "winbindd/winbindd.h"
+#include "idmap.h"
 #include "idmap_hash.h"
 #include <stdio.h>
+#include "lib/util/xfile.h"
 
 XFILE *lw_map_file = NULL;
 
@@ -65,13 +68,19 @@ static bool mapfile_read_line(fstring key, fstring value)
        if (!lw_map_file)
                return false;
 
-       if ((p = x_fgets(buffer, sizeof(buffer)-1, lw_map_file)) == NULL) {
+       p = x_fgets(buffer, sizeof(buffer)-1, lw_map_file);
+       if (p == NULL) {
                return false;
        }
 
        /* Strip newlines and carriage returns */
 
-       len = strlen_m(buffer) - 1;
+       len = strlen_m(buffer);
+       if (len == 0) {
+               return false;
+       }
+       len -= 1;
+
        while ((buffer[len] == '\n') || (buffer[len] == '\r')) {
                buffer[len--] = '\0';
        }
@@ -85,8 +94,8 @@ static bool mapfile_read_line(fstring key, fstring value)
        *p = '\0';
        p++;
 
-       fstrcpy(key, buffer);
-       fstrcpy(value, p);
+       strlcpy(key, buffer, sizeof(fstring));
+       strlcpy(value, p, sizeof(fstring));
 
        /* Eat whitespace */