r23796: main COPYING file for samba4, plus some formatting varients
[samba.git] / source / lib / util / util_file.c
index 5d7ec40b30903e93522951be3fa650f60363245b..df4cb902f0bf9b8c95d9de5cbe88e308ba1a2784 100644 (file)
@@ -7,7 +7,7 @@
  * 
  * This program is free software; you can redistribute it and/or modify it under
  * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
+ * Software Foundation; either version 3 of the License, or (at your option)
  * any later version.
  * 
  * This program is distributed in the hope that it will be useful, but WITHOUT
@@ -263,7 +263,6 @@ static char **file_lines_parse(char *p, size_t size, int *numlines, TALLOC_CTX *
        talloc_steal(ret, p);
        
        memset(ret, 0, sizeof(ret[0])*(i+2));
-       if (numlines) *numlines = i;
 
        ret[0] = p;
        for (s = p, i=0; s < p+size; s++) {
@@ -275,6 +274,13 @@ static char **file_lines_parse(char *p, size_t size, int *numlines, TALLOC_CTX *
                if (s[0] == '\r') s[0] = 0;
        }
 
+       /* remove any blank lines at the end */
+       while (i > 0 && ret[i-1][0] == 0) {
+               i--;
+       }
+
+       if (numlines) *numlines = i;
+
        return ret;
 }
 
@@ -358,8 +364,8 @@ _PUBLIC_ int vfdprintf(int fd, const char *format, va_list ap) _PRINTF_ATTRIBUTE
        va_list ap2;
 
        va_copy(ap2, ap);
-
        len = vasprintf(&p, format, ap2);
+       va_end(ap2);
        if (len <= 0) return len;
        ret = write(fd, p, len);
        SAFE_FREE(p);