text-utils: verify writing to streams was successful

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2012-04-04 19:39:15 +02:00
parent 302e423dc1
commit b87cbe8486
10 changed files with 29 additions and 20 deletions

View File

@ -56,6 +56,7 @@
#include "xalloc.h"
#include "widechar.h"
#include "strutils.h"
#include "closestream.h"
#define BS '\b' /* backspace */
#define TAB '\t' /* tab */
@ -174,6 +175,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
max_bufd_lines = 128 * 2;
compress_spaces = 1; /* compress spaces into tabs */
@ -388,8 +390,6 @@ int main(int argc, char **argv)
/* missing a \n on the last line? */
nblank_lines = 2;
flush_blanks();
if (ferror(stdout) || fclose(stdout))
return EXIT_FAILURE;
return ret;
}

View File

@ -47,6 +47,7 @@
#include "widechar.h"
#include "c.h"
#include "closestream.h"
int plus(wchar_t c, wchar_t d);
void move(int l, int m);
@ -93,6 +94,7 @@ int main(int argc, char **argv) {
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
/* Take care of lonely hyphen option. */
for (i = 0; i < argc; i++)
@ -141,8 +143,6 @@ int main(int argc, char **argv) {
fclose(f);
} while (argc > 0);
fflush(stdout);
if (ferror(stdout) || fclose(stdout))
return EXIT_FAILURE;
return EXIT_SUCCESS;
}

View File

@ -41,11 +41,13 @@
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <unistd.h>
#include "nls.h"
#include "widechar.h"
#include "strutils.h"
#include "c.h"
#include "closestream.h"
/*
COLRM removes unwanted columns from a file
@ -162,6 +164,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
while ((opt =
getopt_long(argc, argv, "bfhl:pxVH", longopts,
@ -187,7 +190,5 @@ int main(int argc, char **argv)
;
fflush(stdout);
if (ferror(stdout) || fclose(stdout))
return EXIT_FAILURE;
return EXIT_SUCCESS;
}

View File

@ -55,6 +55,7 @@
#include "c.h"
#include "xalloc.h"
#include "strutils.h"
#include "closestream.h"
#ifdef HAVE_WIDECHAR
#define wcs_width(s) wcswidth(s,wcslen(s))
@ -131,6 +132,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1 || !win.ws_col) {
char *p;
@ -203,9 +205,6 @@ int main(int argc, char **argv)
free(list[i]);
free(list);
if (ferror(stdout) || fclose(stdout))
eval += EXIT_FAILURE;
if (eval == 0)
return EXIT_SUCCESS;
else

View File

@ -43,6 +43,7 @@
#include "nls.h"
#include "c.h"
#include "closestream.h"
FS *fshead; /* head of format strings */
int blocksize; /* data block size */
@ -57,6 +58,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
if (!(p = strrchr(argv[0], 'o')) || strcmp(p, "od")) {
newsyntax(argc, &argv);

View File

@ -56,11 +56,12 @@
#include <sys/stat.h>
#include <sys/file.h>
#include <sys/wait.h>
#include "strutils.h"
#include "strutils.h"
#include "nls.h"
#include "xalloc.h"
#include "widechar.h"
#include "closestream.h"
#define _REGEX_RE_COMP
#include <regex.h>
@ -90,7 +91,7 @@ void doclear(void);
void cleareol(void);
void clreos(void);
void home(void);
void error (char *mess);
void more_error (char *mess);
void do_shell (char *filename);
int colon (char *filename, int cmd, int nlines);
int expand (char **outbuf, char *inbuf);
@ -330,6 +331,7 @@ int main(int argc, char **argv) {
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
nfiles = argc;
fnames = argv;
@ -1589,7 +1591,7 @@ void search(char buf[], FILE *file, register int n)
context.chrctr = startline;
lncount = 0;
if ((s = re_comp (buf)) != 0)
error (s);
more_error (s);
while (!feof (file)) {
line3 = line2;
line2 = line1;
@ -1632,7 +1634,7 @@ void search(char buf[], FILE *file, register int n)
break;
}
} else if (rv == -1)
error (_("Regular expression botch"));
more_error (_("Regular expression botch"));
}
if (feof (file)) {
if (!no_intty) {
@ -1643,7 +1645,7 @@ void search(char buf[], FILE *file, register int n)
putsout(_("\nPattern not found\n"));
end_it (0);
}
error (_("Pattern not found"));
more_error (_("Pattern not found"));
}
}
@ -2025,7 +2027,7 @@ void ttyin (char buf[], register int nmax, char pchar) {
*--sp = '\0';
if (!eraseln) promptlen = maxlen;
if (sp - buf >= nmax - 1)
error (_("Line too long"));
more_error (_("Line too long"));
}
/* return: 0 - unchanged, 1 - changed, -1 - overflow (unchanged) */
@ -2060,7 +2062,7 @@ int expand (char **outbuf, char *inbuf) {
break;
case '!':
if (!shellp)
error (_("No previous command to substitute for"));
more_error (_("No previous command to substitute for"));
strcpy (outstr, shell_line);
outstr += strlen (shell_line);
changed++;
@ -2089,7 +2091,7 @@ void show (char c) {
promptlen++;
}
void error (char *mess)
void more_error (char *mess)
{
if (clreol)
cleareol ();

View File

@ -63,6 +63,7 @@
#include "xalloc.h"
#include "widechar.h"
#include "writeall.h"
#include "closestream.h"
#define READBUF LINE_MAX /* size of input buffer */
#define CMDBUF 255 /* size of command buffer */
@ -1594,6 +1595,7 @@ main(int argc, char **argv)
setlocale(LC_MESSAGES, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
if (tcgetattr(1, &otio) == 0) {
ontty = 1;

View File

@ -62,6 +62,7 @@
#include "xalloc.h"
#include "widechar.h"
#include "c.h"
#include "closestream.h"
wchar_t *buf;
@ -96,6 +97,7 @@ int main(int argc, char *argv[])
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);

View File

@ -45,6 +45,7 @@
#include "usleep.h"
#include "strutils.h"
#include "c.h"
#include "closestream.h"
#define DEFAULT_LINES 10
@ -240,6 +241,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
static const struct option longopts[] = {
{ "lines", required_argument, 0, 'n' },

View File

@ -54,6 +54,7 @@
#include "xalloc.h"
#include "widechar.h"
#include "c.h"
#include "closestream.h"
#ifdef HAVE_WIDECHAR
/* Output an ASCII character as a wide character */
@ -162,6 +163,7 @@ int main(int argc, char **argv)
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
atexit(close_stdout);
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);
@ -231,9 +233,6 @@ int main(int argc, char **argv)
filter(f);
fclose(f);
}
if (ferror(stdout) || fclose(stdout))
return EXIT_FAILURE;
free(obuf);
return EXIT_SUCCESS;
}