aboutsummaryrefslogtreecommitdiffstats
path: root/awk5.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-02 15:46:31 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-02 15:46:31 +0300
commit3711eedc1b995eb1926c9ffb902d5d796cacf8d0 (patch)
tree5642fdee11499774e0b7401f195931cd3a143d18 /awk5.c
parentec6415f1ba061b2fb78808b7dba3246745a15398 (diff)
downloadegawk-3711eedc1b995eb1926c9ffb902d5d796cacf8d0.tar.gz
egawk-3711eedc1b995eb1926c9ffb902d5d796cacf8d0.tar.bz2
egawk-3711eedc1b995eb1926c9ffb902d5d796cacf8d0.zip
Now at 2.02.
Diffstat (limited to 'awk5.c')
-rw-r--r--awk5.c154
1 files changed, 154 insertions, 0 deletions
diff --git a/awk5.c b/awk5.c
new file mode 100644
index 00000000..185fecb5
--- /dev/null
+++ b/awk5.c
@@ -0,0 +1,154 @@
+/*
+ * routines for error messages
+ *
+ * Copyright (C) 1988 Free Software Foundation
+ *
+ * $Log: awk5.c,v $
+ * Revision 1.10 88/12/08 11:00:07 david
+ * add $Log$
+ *
+ */
+
+/*
+ * GAWK is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY. No author or distributor accepts responsibility to anyone for
+ * the consequences of using it or for whether it serves any particular
+ * purpose or works at all, unless he says so in writing. Refer to the GAWK
+ * General Public License for full details.
+ *
+ * Everyone is granted permission to copy, modify and redistribute GAWK, but
+ * only under the conditions described in the GAWK General Public License. A
+ * copy of this license is supposed to have been given to you along with GAWK
+ * so you can know your rights and responsibilities. It should be in a file
+ * named COPYING. Among other things, the copyright notice and this notice
+ * must be preserved on all copies.
+ *
+ * In other words, go ahead and share GAWK, but don't try to stop anyone else
+ * from sharing it farther. Help stamp out software hoarding!
+ */
+
+#include "awk.h"
+
+int sourceline = 0;
+char *source = NULL;
+
+err(s, argp)
+char *s;
+va_list *argp;
+{
+ char *fmt;
+ int line;
+ char *file;
+
+ (void) fprintf(stderr, "%s: %s ", myname, s);
+ fmt = va_arg(*argp, char *);
+ vfprintf(stderr, fmt, *argp);
+ (void) fprintf(stderr, "\n");
+ line = (int) FNR_node->var_value->numbr;
+ if (line)
+ (void) fprintf(stderr, " input line number %d", line);
+ file = FILENAME_node->var_value->stptr;
+ if (file && strcmp(file, "-") != 0)
+ (void) fprintf(stderr, ", file `%s'", file);
+ (void) fprintf(stderr, "\n");
+ if (sourceline)
+ (void) fprintf(stderr, " source line number %d", sourceline);
+ if (source)
+ (void) fprintf(stderr, ", file `%s'", source);
+ (void) fprintf(stderr, "\n");
+}
+
+/*VARARGS0*/
+void
+msg(va_alist)
+va_dcl
+{
+ va_list args;
+
+ va_start(args);
+ err("", &args);
+ va_end(args);
+}
+
+/*VARARGS0*/
+void
+warning(va_alist)
+va_dcl
+{
+ va_list args;
+
+ va_start(args);
+ err("warning:", &args);
+ va_end(args);
+}
+
+/*VARARGS0*/
+void
+fatal(va_alist)
+va_dcl
+{
+ va_list args;
+ extern char *sourcefile;
+
+ va_start(args);
+ err("fatal error:", &args);
+ va_end(args);
+#ifdef DEBUG
+ abort();
+#endif
+ exit(1);
+}
+
+char *
+safe_malloc(size)
+unsigned size;
+{
+ char *ret;
+
+ ret = malloc(size);
+ if (ret == NULL)
+ fatal("safe_malloc: can't allocate memory (%s)",
+ sys_errlist[errno]);
+ return ret;
+}
+
+#if defined(BSD) && !defined(VPRINTF)
+int
+vsprintf(str, fmt, ap)
+ char *str, *fmt;
+ va_list ap;
+{
+ FILE f;
+ int len;
+
+ f._flag = _IOWRT+_IOSTRG;
+ f._ptr = str;
+ f._cnt = 32767;
+ len = _doprnt(fmt, ap, &f);
+ *f._ptr = 0;
+ return (len);
+}
+
+int
+vfprintf(iop, fmt, ap)
+ FILE *iop;
+ char *fmt;
+ va_list ap;
+{
+ int len;
+
+ len = _doprnt(fmt, ap, iop);
+ return (ferror(iop) ? EOF : len);
+}
+
+int
+vprintf(fmt, ap)
+ char *fmt;
+ va_list ap;
+{
+ int len;
+
+ len = _doprnt(fmt, ap, stdout);
+ return (ferror(stdout) ? EOF : len);
+}
+#endif