From 7004c289f870e745e13dbc19696e282a09954fa4 Mon Sep 17 00:00:00 2001
From: Chris Allegretta <chrisa@asty.org>
Date: Sat, 22 Sep 2001 00:42:10 +0000
Subject: [PATCH] -D cmdline flag for DOS formatted files

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@773 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog |  4 +++-
 files.c   |  2 +-
 global.c  | 11 +++++++----
 nano.c    | 23 ++++++++++++++++++-----
 nano.h    |  3 ++-
 5 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0a9e6e89..5c0260f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,7 +11,9 @@ CVS code -
 	  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.
+	  new code in read_line and write_file.  New cmdline flag
+	  (-D --dos) to automatically write the file in DOS format,
+	  regardless of the original format.
 - nano.c:
   main()
 	- Added vars oldcurrent and oldcurrent_x to check whether cursor
diff --git a/files.c b/files.c
index e553ab87..6f08a100 100644
--- a/files.c
+++ b/files.c
@@ -126,8 +126,8 @@ filestruct *read_line(char *buf, filestruct * prev, int *line1ins)
 
 #ifndef NANO_SMALL
     if (buf[strlen(buf) - 1] == '\r') {
-	SET(DOS_FILE);
 	fileptr->data[strlen(buf) - 1] = 0;
+	totsize--;
     }
 #endif
 
diff --git a/global.c b/global.c
index 0c0de3ff..4ea47395 100644
--- a/global.c
+++ b/global.c
@@ -151,7 +151,7 @@ void toggle_init(void)
     char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg,
 	*toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg,
 	*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, 
-	*toggle_backwards_msg;
+	*toggle_backwards_msg, *toggle_dos_msg;
 
 #ifdef ENABLE_MULTIBUFFER
     char *toggle_load_msg, *nano_openprev_msg, *nano_opennext_msg;
@@ -170,6 +170,7 @@ void toggle_init(void)
     toggle_cuttoend_msg = _("Cut to end");
     toggle_backwards_msg = _("Backwards Search");
     toggle_case_msg = _("Case Sensitive Search");
+    toggle_dos_msg = _("Writing file in DOS format");
 #ifdef HAVE_REGEX_H
     toggle_regexp_msg = _("Regular expressions");
 #endif
@@ -201,13 +202,15 @@ void toggle_init(void)
 		    REVERSE_SEARCH, 0);
     toggle_init_one(&toggles[9], TOGGLE_CASE_KEY, toggle_case_msg,
 		    CASE_SENSITIVE, 0);
+    toggle_init_one(&toggles[10], TOGGLE_DOS_KEY, toggle_dos_msg,
+		    DOS_FILE, 0);
 
 #ifdef ENABLE_MULTIBUFFER
-    toggle_init_one(&toggles[10], TOGGLE_LOAD_KEY, toggle_load_msg,
+    toggle_init_one(&toggles[11], TOGGLE_LOAD_KEY, toggle_load_msg,
 		    MULTIBUFFER, 0);
-    toggle_init_one(&toggles[11], NANO_OPENPREV_KEY, nano_openprev_msg,
+    toggle_init_one(&toggles[12], NANO_OPENPREV_KEY, nano_openprev_msg,
 		    0, '<');
-    toggle_init_one(&toggles[12], NANO_OPENNEXT_KEY, nano_opennext_msg,
+    toggle_init_one(&toggles[13], NANO_OPENNEXT_KEY, nano_opennext_msg,
 		    0, '>');
 #endif
 
diff --git a/nano.c b/nano.c
index 00fa6c04..efd9c034 100644
--- a/nano.c
+++ b/nano.c
@@ -402,18 +402,22 @@ void usage(void)
     printf(_("Usage: nano [GNU long option] [option] +LINE <file>\n\n"));
     printf(_("Option		Long option		Meaning\n"));
 
+#ifndef NANO_SMALL
+    printf
+	(_
+	 (" -D 		--dos			Write file in DOS format\n"));
+#endif
 #ifdef ENABLE_MULTIBUFFER
     printf
 	(_
 	 (" -F 		--multibuffer		Enable multiple file buffers\n"));
 #endif
-
-    printf(_
-	   (" -T [num]	--tabsize=[num]		Set width of a tab to num\n"));
 #ifdef HAVE_REGEX_H
     printf(_
 	   (" -R		--regexp		Use regular expressions for search\n"));
 #endif
+    printf(_
+	   (" -T [num]	--tabsize=[num]		Set width of a tab to num\n"));
     printf
 	(_
 	 (" -V 		--version		Print version information and exit\n"));
@@ -467,6 +471,9 @@ void usage(void)
 #else
     printf(_("Usage: nano [option] +LINE <file>\n\n"));
     printf(_("Option		Meaning\n"));
+#ifndef NANO_SMALL
+    printf(_(" -D 		Write file in DOS format\n"));
+#endif
 #ifdef ENABLE_MULTIBUFFER
     printf(_(" -F 		Enable multiple file buffers\n"));
 #endif
@@ -2408,6 +2415,7 @@ int main(int argc, char *argv[])
 	{"view", 0, 0, 'v'},
 #ifndef NANO_SMALL
 	{"cut", 0, 0, 'k'},
+	{"dos", 0, 0, 'D'},
 	{"autoindent", 0, 0, 'i'},
 #endif
 	{"tempfile", 0, 0, 't'},
@@ -2450,15 +2458,20 @@ int main(int argc, char *argv[])
 #endif /* ENABLE_NANORC */
 
 #ifdef HAVE_GETOPT_LONG
-    while ((optchr = getopt_long(argc, argv, "h?FT:RVabcefgijklmo:pr:s:tvwxz",
+    while ((optchr = getopt_long(argc, argv, "h?DFRT:Vabcefgijklmo:pr:s:tvwxz",
 				 long_options, &option_index)) != EOF) {
 #else
     while ((optchr =
-	    getopt(argc, argv, "h?FT:RVabcefgijklmo:pr:s:tvwxz")) != EOF) {
+	    getopt(argc, argv, "h?DFRT:Vabcefgijklmo:pr:s:tvwxz")) != EOF) {
 #endif
 
 	switch (optchr) {
 
+#ifndef NANO_SMALL
+	case 'D':
+	    SET(DOS_FILE);
+	    break;
+#endif
 #ifdef ENABLE_MULTIBUFFER
 	case 'F':
 	    SET(MULTIBUFFER);
diff --git a/nano.h b/nano.h
index 71657dbd..b007450c 100644
--- a/nano.h
+++ b/nano.h
@@ -274,6 +274,7 @@ know what you're doing */
 #define TOGGLE_BACKWARDS_KEY	NANO_ALT_B
 #define TOGGLE_CASE_KEY		NANO_ALT_A
 #define TOGGLE_LOAD_KEY		NANO_ALT_F
+#define TOGGLE_DOS_KEY		NANO_ALT_D
 
 /* Toggle stuff, these static lengths need to go away RSN */
 
@@ -307,7 +308,7 @@ know what you're doing */
 
 #define WHEREIS_LIST_LEN (8 - NO_REGEX - NO_TOGGLES)
 #define REPLACE_LIST_LEN (8 - NO_REGEX - NO_TOGGLES)
-#define TOGGLE_LEN (11 - NO_REGEX + MULTI_TOGGLES)
+#define TOGGLE_LEN (12 - NO_REGEX + MULTI_TOGGLES)
 #define WRITEFILE_LIST_LEN (3 - NO_BROWSER)
 #define INSERTFILE_LIST_LEN (2 - NO_BROWSER)
 #define BROWSER_LIST_LEN 4
-- 
GitLab