From: Chris Allegretta Date: Fri, 21 Sep 2001 02:37:01 +0000 (+0000) Subject: Code to read/write dos formatted files. Massive amounts of new code in read_line... X-Git-Tag: v1.1.2~60 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=91841895e0afb316124368bd8723eb823d4a7c89;p=nano.git Code to read/write dos formatted files. Massive amounts of new code in read_line and write_file. New flag DOS_FILE git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 92c792cf..a76022a0 100644 --- 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 eaedd471..e553ab87 100644 --- 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 f5d77170..71657dbd 100644 --- 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 */