Folding the parsing of a linter and formatter command into a single routine.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5714 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Benno Schulenberg 2016-03-10 10:36:49 +00:00
parent 2994ea9d02
commit 837b4e66e2
2 changed files with 12 additions and 37 deletions

View File

@ -1,6 +1,8 @@
2016-03-10 Benno Schulenberg <bensberg@justemail.net> 2016-03-10 Benno Schulenberg <bensberg@justemail.net>
* src/rcfile.c (grab_and_store): Do not accept 'header" and 'magic' * src/rcfile.c (grab_and_store): Do not accept 'header" and 'magic'
commands for the default syntax. This fixes Savannah bug #47323. commands for the default syntax. This fixes Savannah bug #47323.
* src/rcfile.c (pick_up_name): Fold the parsing of a linter and
formatter command into a single routine.
2016-03-09 Benno Schulenberg <bensberg@justemail.net> 2016-03-09 Benno Schulenberg <bensberg@justemail.net>
* src/rcfile.c (parse_syntax): Produce an adequate error message * src/rcfile.c (parse_syntax): Produce an adequate error message

View File

@ -877,57 +877,30 @@ void parse_magic_exp(char *ptr)
} }
#endif /* HAVE_LIBMAGIC */ #endif /* HAVE_LIBMAGIC */
/* Parse the linter requested for this syntax. */ /* Parse and store the name given after a linter/formatter command. */
void parse_linter(char *ptr) void pick_up_name(const char *kind, char *ptr, char **storage)
{ {
assert(ptr != NULL); assert(ptr != NULL);
if (!opensyntax) { if (!opensyntax) {
rcfile_error( rcfile_error(
N_("Cannot add a linter without a syntax command")); N_("A '%s' command requires a preceding 'syntax' command"), kind);
return; return;
} }
if (*ptr == '\0') { if (*ptr == '\0') {
rcfile_error(N_("Missing linter command")); rcfile_error(N_("Missing command after '%s'"), kind);
return; return;
} }
free(endsyntax->linter); free(*storage);
/* Let them unset the linter by using "". */ /* Allow unsetting the command by using an empty string. */
if (!strcmp(ptr, "\"\"")) if (!strcmp(ptr, "\"\""))
endsyntax->linter = NULL; *storage = NULL;
else else
endsyntax->linter = mallocstrcpy(NULL, ptr); *storage = mallocstrcpy(NULL, ptr);
} }
#ifndef DISABLE_SPELLER
/* Parse the formatter requested for this syntax. */
void parse_formatter(char *ptr)
{
assert(ptr != NULL);
if (!opensyntax) {
rcfile_error(
N_("Cannot add formatter without a syntax command"));
return;
}
if (*ptr == '\0') {
rcfile_error(N_("Missing formatter command"));
return;
}
free(endsyntax->formatter);
/* Let them unset the formatter by using "". */
if (!strcmp(ptr, "\"\""))
endsyntax->formatter = NULL;
else
endsyntax->formatter = mallocstrcpy(NULL, ptr);
}
#endif /* !DISABLE_SPELLER */
#endif /* !DISABLE_COLOR */ #endif /* !DISABLE_COLOR */
/* Check whether the user has unmapped every shortcut for a /* Check whether the user has unmapped every shortcut for a
@ -1070,10 +1043,10 @@ void parse_rcfile(FILE *rcstream
else if (strcasecmp(keyword, "icolor") == 0) else if (strcasecmp(keyword, "icolor") == 0)
parse_colors(ptr, TRUE); parse_colors(ptr, TRUE);
else if (strcasecmp(keyword, "linter") == 0) else if (strcasecmp(keyword, "linter") == 0)
parse_linter(ptr); pick_up_name("linter", ptr, &endsyntax->linter);
else if (strcasecmp(keyword, "formatter") == 0) else if (strcasecmp(keyword, "formatter") == 0)
#ifndef DISABLE_SPELLER #ifndef DISABLE_SPELLER
parse_formatter(ptr); pick_up_name("formatter", ptr, &endsyntax->formatter);
#else #else
; ;
#endif #endif