From ea11fd8868779815ca6482d7fe0ee9d50d351d8c Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 29 Apr 1996 01:44:33 +0000 Subject: FIXME --- src/asa.c | 333 ++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 160 insertions(+), 173 deletions(-) (limited to 'src/asa.c') diff --git a/src/asa.c b/src/asa.c index 64260f88f..411122c38 100644 --- a/src/asa.c +++ b/src/asa.c @@ -1,23 +1,28 @@ -/* - * asa.c - interpret ASA carriage control characters - * Copyright (C) 1994 Thomas Koenig - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#define _POSIX_SOURCE 1 +/* +TODO + mark translatable strings + add usage function + call parse_long_options + dcl, set program_name + do fclose/error checking + */ + +/* asa.c - interpret ASA carriage control characters + Copyright (C) 94, 1996 Thomas Koenig + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* System Headers */ @@ -34,244 +39,226 @@ /* Structures and unions */ -typedef struct -{ +struct Str + { char *chr; size_t len; -} str; + }; +typedef struct Str str; /* File scope variables */ -static char rcsid[] = "$Id: asa.c,v 1.1 1996/04/29 01:43:52 meyering Exp $"; static str *line_buffer = (str *) 0; static size_t line_num = 0; static size_t linebuf_size; /* Function declarations */ -static void *mymalloc(size_t); -static size_t readline(FILE *fp, char **a); -static void form_feed(void); -static void add_line(str); -static void flush(void); -static void copy_file(FILE *fp); - -/* Local functions */ +char *xmalloc (); +char *xrealloc (); -static void* -mymalloc(size_t n) -{ - void *p; - if ((p=malloc(n))) - return p; - else - { - fprintf(stderr,"Virtual memory exhausted\n"); - exit(EXIT_FAILURE); - } -} +static size_t readline (FILE *fp, char **a); +static void add_line (str *); +static void flush (void); +static void copy_file (FILE *fp); + +/* Local functions */ -static void* -myrealloc(void *p, size_t n) -{ - if ((p=realloc(p,n))) - return p; - else - { - fprintf(stderr,"Virtual memory exhausted\n"); - exit(EXIT_FAILURE); - } -} static void -form_feed() +form_feed () { - putchar('\f'); + putchar ('\f'); } static void -new_line() +new_line () { - putchar('\n'); + putchar ('\n'); } static void -add_line(str a) +add_line (str *line) { - if (line_num >= linebuf_size) + if (line_num >= linebuf_size) { - linebuf_size += NUMLINES; - line_buffer = myrealloc(line_buffer, linebuf_size*sizeof(str *)); + linebuf_size += NUMLINES; + line_buffer = (str *) xrealloc (line_buffer, linebuf_size * sizeof (str *)); } - line_buffer[line_num]=a; - line_num++; + line_buffer[line_num] = *line; + line_num++; } static void -flush() +flush () { - size_t i,j; - size_t max_len; + size_t i, j; + size_t max_len; - if (line_num == 0) - return; - if (line_num == 1) + if (line_num == 0) + return; + if (line_num == 1) { - printf("%s\n", line_buffer[0].chr +1); - line_num = 0; - return; + printf ("%s\n", line_buffer[0].chr + 1); + line_num = 0; + return; } - max_len = 0; - for (j=0; j< line_num; j++) - max_len = MAX(max_len, line_buffer[j].len); + max_len = 0; + for (j = 0; j < line_num; j++) + max_len = MAX (max_len, line_buffer[j].len); - for (i=1; i<= max_len; i++) + for (i = 1; i <= max_len; i++) { - int printed = 0; + int printed = 0; - for (j=0; j< line_num; j++) + for (j = 0; j < line_num; j++) { - if (line_buffer[j].len > i) + if (line_buffer[j].len > i) { - int ch = line_buffer[j].chr[i]; - - if (ch != ' ') { - if (printed) - putchar('\b'); - putchar(ch); - printed = 1; + int ch = line_buffer[j].chr[i]; + + if (ch != ' ') + { + if (printed) + putchar ('\b'); + putchar (ch); + printed = 1; } } } - if (!printed) - putchar(' '); + if (!printed) + putchar (' '); } - for (j=0; j bufsize-2) + if (len + inc > bufsize - 2) { - bufsize += LINESIZE; - buffer = myrealloc(buffer, bufsize); + bufsize += LINESIZE; + buffer = xrealloc (buffer, bufsize); } - for (i=0; i 0) + while (--argc > 0) { - fname = *++argv; - if ((fp = fopen(fname,"r")) == NULL) + fname = *++argv; + if ((fp = fopen (fname, "r")) == NULL) + { + err = 1; + error (0, errno, "%s", fname); + } + else { - fprintf(stderr,"Cannot open %s: %s\n",fname,strerror(errno)); - exit(EXIT_FAILURE); + copy_file (fp); + fclose (fp); } - copy_file(fp); - fclose(fp); } } - flush(); - exit(EXIT_SUCCESS); + flush (); + exit (err ? EXIT_FAILURE : EXIT_SUCCESS); } -- cgit v1.2.3-54-g00ecf