]> git.wh0rd.org Git - nano.git/commitdiff
Code to read/write dos formatted files. Massive amounts of new code in read_line...
authorChris Allegretta <chrisa@asty.org>
Fri, 21 Sep 2001 02:37:01 +0000 (02:37 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 21 Sep 2001 02:37:01 +0000 (02:37 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
files.c
nano.h

index 92c792cfd2f60593bc80874b41e8488cf36f1d0d..a76022a05a148ace1ea6555d1d8677b41f6a572b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,8 @@ CVS code -
          function check_operating_dir(), changes to load_file (arg),
          open_file_dup_search (arg), new function do_gotopos for -F
          (Ravid Lawrence Ramsey).
+       - Code to read/write dos formatted files.  Massive amounts of
+         new code in read_line and write_file.  New flag DOS_FILE.
 - nano.c:
   main()
        - Added vars oldcurrent and oldcurrent_x to check whether cursor
diff --git a/files.c b/files.c
index eaedd47144f5d3e4ce252bcb60ab1348b1283499..e553ab878b8c98aeab3286e69af19a89f3a379cb 100644 (file)
--- a/files.c
+++ b/files.c
@@ -124,6 +124,13 @@ filestruct *read_line(char *buf, filestruct * prev, int *line1ins)
     fileptr->data = charalloc(strlen(buf) + 2);
     strcpy(fileptr->data, buf);
 
+#ifndef NANO_SMALL
+    if (buf[strlen(buf) - 1] == '\r') {
+       SET(DOS_FILE);
+       fileptr->data[strlen(buf) - 1] = 0;
+    }
+#endif
+
     if (*line1ins) {
        /* Special case, insert with cursor on 1st line. */
        fileptr->prev = NULL;
@@ -1117,6 +1124,10 @@ int write_file(char *name, int tmp, int append, int nonamechange)
            fprintf(stderr, _("Wrote >%s\n"), fileptr->data);
 #endif
        }
+#ifndef NANO_SMALL
+       if (ISSET(DOS_FILE))
+           write(fd, "\r", 1);
+#endif
        write(fd, "\n", 1);
 
        fileptr = fileptr->next;
@@ -1130,6 +1141,17 @@ int write_file(char *name, int tmp, int append, int nonamechange)
                      strerror(errno));
            return -1;
        } else if (size > 0) {
+#ifndef NANO_SMALL
+           if (ISSET(DOS_FILE)) {
+               size = write(fd, "\r", 1);
+               lineswritten++;
+               if (size == -1) {
+                   statusbar(_("Could not open file for writing: %s"),
+                         strerror(errno));
+                   return -1;
+               }
+           }
+#endif
            size = write(fd, "\n", 1);
            lineswritten++;
            if (size == -1) {
diff --git a/nano.h b/nano.h
index f5d77170ac74b40fc3490b7cf598b58b21c9aa1b..71657dbd0a466c27c19301721b1735d40f8f2cbb 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -140,6 +140,7 @@ typedef struct rcoption {
 #define REVERSE_SEARCH         (1<<18)
 #define MULTIBUFFER            (1<<19)
 #define CLEAR_BACKUPSTRING     (1<<20)
+#define DOS_FILE               (1<<21)
 
 /* Control key sequences, changing these would be very very bad */