Distinguishing a failure to launch the linter from receiving 0 parsable lines.

Adding a new function to glue together the invocation-error string.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5199 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Benno Schulenberg 2015-04-17 09:24:17 +00:00
parent 4d2b198403
commit f225991b05
2 changed files with 33 additions and 29 deletions

View File

@ -1,3 +1,8 @@
2015-04-17 Benno Schulenberg <bensberg@justemail.net>
* src/text.c (do_alt_speller, do_linter, do_formatter): Distinguish
a failure to launch the linter from receiving zero parsable lines;
add a new function to glue together the invocation-error string.
2015-04-13 Benno Schulenberg <bensberg@justemail.net> 2015-04-13 Benno Schulenberg <bensberg@justemail.net>
* src/search.c (do_replace_loop): Fix compilation with --enable-tiny. * src/search.c (do_replace_loop): Fix compilation with --enable-tiny.
* README: Mention also the Savannah page for reporting bugs. * README: Mention also the Savannah page for reporting bugs.

View File

@ -63,6 +63,18 @@ void do_mark(void)
} }
#endif /* !NANO_TINY */ #endif /* !NANO_TINY */
#if !defined(DISABLE_COLOR) || !defined(DISABLE_SPELLER)
/* Return an error message containing the given name. */
char *invocation_error(const char *name)
{
char *message, *invoke_error = _("Error invoking \"%s\"");
message = charalloc(strlen(invoke_error) + strlen(name) + 1);
sprintf(message, invoke_error, name);
return message;
}
#endif /* !DISABLE_COLOR || !DISABLE_SPELLER */
/* Delete the character under the cursor. */ /* Delete the character under the cursor. */
void do_deletion(undo_type action) void do_deletion(undo_type action)
{ {
@ -2753,21 +2765,12 @@ const char *do_alt_speller(char *tempfile_name)
* the windows based on the new screen dimensions. */ * the windows based on the new screen dimensions. */
window_init(); window_init();
if (!WIFEXITED(alt_spell_status) || if (!WIFEXITED(alt_spell_status) || WEXITSTATUS(alt_spell_status) != 0) {
WEXITSTATUS(alt_spell_status) != 0) {
char *alt_spell_error;
char *invoke_error = _("Error invoking \"%s\"");
#ifndef NANO_TINY #ifndef NANO_TINY
/* Turn the mark back on if it was on before. */ /* Turn the mark back on if it was on before. */
openfile->mark_set = old_mark_set; openfile->mark_set = old_mark_set;
#endif #endif
return invocation_error(alt_speller);
alt_spell_error =
charalloc(strlen(invoke_error) +
strlen(alt_speller) + 1);
sprintf(alt_spell_error, invoke_error, alt_speller);
return alt_spell_error;
} }
#ifndef NANO_TINY #ifndef NANO_TINY
@ -2991,17 +2994,17 @@ void do_linter(void)
/* Send the linter's standard output + err to the pipe. */ /* Send the linter's standard output + err to the pipe. */
if (dup2(lint_fd[1], STDOUT_FILENO) != STDOUT_FILENO) if (dup2(lint_fd[1], STDOUT_FILENO) != STDOUT_FILENO)
exit(1); exit(9);
if (dup2(lint_fd[1], STDERR_FILENO) != STDERR_FILENO) if (dup2(lint_fd[1], STDERR_FILENO) != STDERR_FILENO)
exit(1); exit(9);
close(lint_fd[1]); close(lint_fd[1]);
/* Start the linter program; we are using $PATH. */ /* Start the linter program; we are using $PATH. */
execvp(lintargs[0], lintargs); execvp(lintargs[0], lintargs);
/* This should not be reached if linter is found. */ /* This is only reached when the linter is not found. */
exit(1); exit(9);
} }
/* Parent continues here. */ /* Parent continues here. */
@ -3115,11 +3118,15 @@ void do_linter(void)
read_buff_ptr++; read_buff_ptr++;
} }
/* Process the end of the linting process. /* Process the end of the linting process. */
* XXX: The return value should be checked.
* Will make an invocation-error routine. */
waitpid(pid_lint, &lint_status, 0); waitpid(pid_lint, &lint_status, 0);
if (!WIFEXITED(lint_status) || WEXITSTATUS(lint_status) > 2) {
statusbar(invocation_error(openfile->syntax->linter));
lint_cleanup();
return;
}
free(read_buff); free(read_buff);
if (parsesuccess == 0) { if (parsesuccess == 0) {
@ -3332,17 +3339,9 @@ void do_formatter(void)
* the windows based on the new screen dimensions. */ * the windows based on the new screen dimensions. */
window_init(); window_init();
if (!WIFEXITED(format_status) || if (!WIFEXITED(format_status) || WEXITSTATUS(format_status) != 0)
WEXITSTATUS(format_status) != 0) { finalstatus = invocation_error(openfile->syntax->formatter);
char *format_error; else {
char *invoke_error = _("Error invoking \"%s\"");
format_error =
charalloc(strlen(invoke_error) +
strlen(openfile->syntax->formatter) + 1);
sprintf(format_error, invoke_error, openfile->syntax->formatter);
finalstatus = format_error;
} else {
/* Replace the text of the current buffer with the formatted text. */ /* Replace the text of the current buffer with the formatted text. */
replace_buffer(temp); replace_buffer(temp);