]> git.sur5r.net Git - bacula/bacula/commitdiff
Added support for MacOS file format (\r used as return character).
authorNicolas Boichat <nicolas@boichat.ch>
Sun, 9 May 2004 18:25:28 +0000 (18:25 +0000)
committerNicolas Boichat <nicolas@boichat.ch>
Sun, 9 May 2004 18:25:28 +0000 (18:25 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1362 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/lib/bsys.c
bacula/src/lib/lex.c

index 1c0f40d7f4fd2ad6d3e6a66df3eb1fe574648e7e..b86ad53bf03e3af56c225b8530c83d75c8bd16a9 100644 (file)
@@ -547,20 +547,31 @@ char *bfgets(char *s, int size, FILE *fd)
    *p = 0;
    for (int i=0; i < size-1; i++) {
       do {
-        errno = 0;
-        ch = fgetc(fd);
+         errno = 0;
+         ch = fgetc(fd);
       } while (ch == -1 && (errno == EINTR || errno == EAGAIN));
       if (ch == -1) {
-        if (i == 0) {
-           return NULL;
-        } else {
-           return s;
-        }
+         if (i == 0) {
+            return NULL;
+         } else {
+            return s;
+         }
       }
       *p++ = ch;
       *p = 0;
+      if (ch == '\r') { /* Support for Mac/Windows file format */
+         ch = fgetc(fd);
+         if (ch == '\n') { /* Windows (\r\n) */
+            *p++ = ch;
+            *p = 0;
+         }
+         else { /* Mac (\r only) */
+            ungetc(ch, fd); /* Push next character back to fd */
+         }
+         break;
+      }      
       if (ch == '\n') {
-        break;
+         break;
       }
    }
    return s;
index 0a85a3f57aa135d05ec1d60d76728a28d6fe63a0..ead6a9ebdf708de5b981d8cb85b5c2bf7280fde0 100644 (file)
@@ -158,7 +158,7 @@ int lex_get_char(LEX *lf)
       Emsg0(M_ABORT, 0, "get_char: called after EOF\n");
    }
    if (lf->ch == L_EOL) {
-      if (fgets(lf->line, MAXSTRING, lf->fd) == NULL) {
+      if (bfgets(lf->line, MAXSTRING, lf->fd) == NULL) {
         lf->ch = L_EOF;
         if (lf->next) {
            lex_close_file(lf);