commit 7bf86e1707459e2c3a486709efb1d25eaebed4e9
parent 23d3cf4515ab030727d41fc77e29a77b9bddfe32
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Wed, 8 Jun 2005 19:50:02 +0000
when reading a file in, make sure each line is a valid multibyte string
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
5 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -54,6 +54,9 @@ CVS code -
and NANO_APPEND_KEY are. Changes to shortcut_init(), usage(),
main(), search_init(), nanorc.sample, nano.1, nanorc.5,
nano.texi, etc. (DLR)
+ - When reading a file in, make sure each line is a valid
+ multibyte string. Changes to make_mbstring(), read_line(),
+ and do_credits(). (DLR)
- chars.c:
make_mbstring()
- Change erroneous ENABLE_EXTRA #ifdef to NANO_EXTRA to fix a
diff --git a/src/chars.c b/src/chars.c
@@ -301,7 +301,7 @@ char *make_mbchar(int chr, int *chr_mb_len)
return chr_mb;
}
-#if defined(ENABLE_NANORC) || defined(NANO_EXTRA)
+#if !defined(NANO_SMALL) || defined(ENABLE_NANORC) || defined(NANO_EXTRA)
/* Convert the string str to a valid multibyte string with the same wide
* character values as str. Return the (dynamically allocated)
* multibyte string. */
diff --git a/src/files.c b/src/files.c
@@ -77,10 +77,16 @@ filestruct *read_line(char *buf, filestruct *prevnode, bool
fileptr->data = mallocstrcpy(NULL, buf);
#ifndef NANO_SMALL
- /* If it's a DOS file (CR LF), and file conversion isn't disabled,
- * strip out the CR part. */
- if (!ISSET(NO_CONVERT) && len > 0 && buf[len - 1] == '\r')
- fileptr->data[len - 1] = '\0';
+ if (!ISSET(NO_CONVERT)) {
+ /* If it's a DOS file (CR LF), and file conversion isn't
+ * disabled, strip the CR part from fileptr->data. */
+ if (len > 0 && buf[len - 1] == '\r')
+ fileptr->data[len - 1] = '\0';
+
+ /* Make sure fileptr->data is a valid multibyte string. */
+ fileptr->data = mallocstrassn(fileptr->data,
+ make_mbstring(fileptr->data));
+ }
#endif
if (*first_line_ins || fileage == NULL) {
diff --git a/src/rcfile.c b/src/rcfile.c
@@ -557,6 +557,9 @@ void parse_rcfile(FILE *rcstream)
if (*option == '"')
option++;
ptr = parse_argument(ptr);
+
+ /* Make sure option is a valid multibyte
+ * string. */
option = make_mbstring(option);
#ifdef DEBUG
fprintf(stderr, "option = \"%s\"\n", option);
diff --git a/src/winio.c b/src/winio.c
@@ -4036,7 +4036,7 @@ void do_credits(void)
"David Benbennick",
"Ken Tyler",
"Sven Guckes",
- "Florian König",
+ "Florian K\xF6nig",
"Pauli Virtanen",
"Daniele Medri",
"Clement Laforet",