diff --git a/ChangeLog b/ChangeLog index 1628c2a0a94355acf87f966f9ad37cb51599b35a..41b0eb8041bd3f0dd20e663e4a6fc88cf9adc6e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-02-11 Chris Allegretta <chrisa@asty.org> + * nanorc.c (parse_include): Do call real_dir_from_tilde() on included + files in .nanorc, but still avoiding bug #25297. Fixes ~ and ~user + specifications for nanorc include files, as reported by Eitan Adler. + 2009-02-09 Chris Allegretta <chrisa@asty.org> * New option -q, --quiet, rcfile option "quiet" implemented. Skips printing errors about the rcfile and asking user to press enter. Also, nano should diff --git a/src/rcfile.c b/src/rcfile.c index dd4c059e735401aabbe431fe8bfeeeb1671173bd..4704e85e71f8df1fbd667d6410a0a52c0b82969b 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -474,7 +474,7 @@ void parse_include(char *ptr) { struct stat rcinfo; FILE *rcstream; - char *option, *nanorc_save = nanorc; + char *option, *nanorc_save = nanorc, *expanded; size_t lineno_save = lineno; option = ptr; @@ -495,20 +495,22 @@ void parse_include(char *ptr) } } + expanded = real_dir_from_tilde(option); + /* Open the new syntax file. */ - if ((rcstream = fopen(option, "rb")) == NULL) { - rcfile_error(_("Error reading %s: %s"), option, + if ((rcstream = fopen(expanded, "rb")) == NULL) { + rcfile_error(_("Error reading %s: %s"), expanded, strerror(errno)); return; } /* Use the name and line number position of the new syntax file * while parsing it, so we can know where any errors in it are. */ - nanorc = option; + nanorc = expanded; lineno = 0; #ifdef DEBUG - fprintf(stderr, "Parsing file \"%s\"\n", option); + fprintf(stderr, "Parsing file \"%s\" (expanded from \"%s\")\n", expanded, option); #endif parse_rcfile(rcstream