summaryrefslogtreecommitdiff
path: root/usr/src/lib/libast/common/comp/fmtmsglib.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libast/common/comp/fmtmsglib.c')
-rw-r--r--usr/src/lib/libast/common/comp/fmtmsglib.c335
1 files changed, 0 insertions, 335 deletions
diff --git a/usr/src/lib/libast/common/comp/fmtmsglib.c b/usr/src/lib/libast/common/comp/fmtmsglib.c
deleted file mode 100644
index 695651f5e9..0000000000
--- a/usr/src/lib/libast/common/comp/fmtmsglib.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/***********************************************************************
-* *
-* This software is part of the ast package *
-* Copyright (c) 1985-2010 AT&T Intellectual Property *
-* and is licensed under the *
-* Common Public License, Version 1.0 *
-* by AT&T Intellectual Property *
-* *
-* A copy of the License is available at *
-* http://www.opensource.org/licenses/cpl1.0.txt *
-* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
-* *
-* Information and Software Systems Research *
-* AT&T Research *
-* Florham Park NJ *
-* *
-* Glenn Fowler <gsf@research.att.com> *
-* David Korn <dgk@research.att.com> *
-* Phong Vo <kpv@research.att.com> *
-* *
-***********************************************************************/
-#pragma prototyped
-/*
- * fmtmsg implementation
- */
-
-#include <ast.h>
-
-#if _lib_fmtmsg
-
-NoN(fmtmsg)
-
-#else
-
-#define MM_TABLES
-
-#include <fmtmsg.h>
-
-#define INIT_VERB 0x1
-#define INIT_CONSOLE 0x2
-
-static struct
-{
- int console;
- unsigned int init;
- unsigned int mask;
-} mm;
-
-const MM_table_t mm_class[] =
-{
- "null", 0, 0,
- "hard", "HARDWARE", MM_HARD,
- "soft", "SOFTWARE", MM_SOFT,
- "firm", "FIRMWARE", MM_FIRM,
- "appl", "APPLICATION", MM_APPL,
- "util", "UTILITY", MM_UTIL,
- "opsys", "KERNEL", MM_OPSYS,
- "print", 0, MM_PRINT,
- "console", 0, MM_CONSOLE,
- "recov", "RECOVERABLE", MM_RECOVER,
- "nrecov", "PANIC", MM_NRECOV,
- 0, 0, 0
-};
-
-static const MM_table_t mm_severity_init[] =
-{
- "nosev", 0, MM_NOSEV,
- "halt", "HALT", MM_HALT,
- "error", "ERROR", MM_ERROR,
- "warn", "WARNING", MM_WARNING,
- "info", "INFO", MM_INFO,
- 0, 0, 0
-};
-
-const MM_table_t mm_verb[] =
-{
- "all", 0, MM_all,
- "action", 0, MM_action,
- "class", 0, MM_class,
- "default", 0, MM_default,
- "label", 0, MM_label,
- "severity", 0, MM_severity,
- "source", 0, MM_source,
- "tag", 0, MM_tag,
- "text", 0, MM_text,
- 0, 0, 0
-};
-
-const MM_table_t*
-_mm_severity(void)
-{
- static MM_table_t* severity;
-
- if (!severity)
- {
- register char* s;
- register MM_table_t* p;
- register int n;
- register int c;
- char* e;
- MM_table_t* q;
-
- n = 0;
- if ((s = getenv(MM_SEVERITY_ENV)) && *s)
- {
- e = s;
- c = 0;
- for (;;)
- {
- switch (*s++)
- {
- case 0:
- break;
- case ',':
- if (++c > 2)
- {
- n = 0;
- break;
- }
- continue;
- case ':':
- if (c != 2)
- {
- n = 0;
- break;
- }
- c = 0;
- n++;
- continue;
- default:
- continue;
- }
- break;
- }
- if (c == 2)
- n++;
- else n = 0;
- if (n)
- {
- for (p = (MM_table_t*)mm_severity_init; p->name; p++);
- n += p - (MM_table_t*)mm_severity_init + 1;
- if (severity = newof(0, MM_table_t, n, s - e))
- {
- s = (char*)severity + n * sizeof(MM_table_t);
- strcpy(s, e);
- p = severity;
- for (q = (MM_table_t*)mm_severity_init; q->name; q++)
- *p++ = *q;
- p->name = s;
- c = 0;
- for (;;)
- {
- switch (*s++)
- {
- case 0:
- break;
- case ',':
- switch (c++)
- {
- case 0:
- *(s - 1) = 0;
- p->value = strtol(s, NiL, 0);
- break;
- case 1:
- p->display = s;
- break;
- }
- continue;
- case ':':
- c = 0;
- *(s - 1) = 0;
- (++p)->name = s;
- continue;
- default:
- continue;
- }
- break;
- }
- }
- }
- }
- if (!severity)
- severity = (MM_table_t*)mm_severity_init;
- }
- return (const MM_table_t*)severity;
-}
-
-static char*
-display(register const MM_table_t* tab, int value, int mask)
-{
- while (tab->name)
- {
- if (value == tab->value || mask && (value & tab->value))
- return (char*)tab->display;
- tab++;
- }
- return 0;
-}
-
-int
-fmtmsg(long classification, const char* label, int severity, const char* text, const char* action, const char* tag)
-{
- register int c;
- register char* s;
- register char* t;
- register MM_table_t* p;
- int n;
- int m;
- int r;
- int fd;
- unsigned int mask;
- Sfio_t* sp;
- char lab[MM_LABEL_1_MAX + MM_LABEL_2_MAX + 3];
-
- if (!mm.init)
- {
- mm.init = INIT_VERB;
- if (!(s = getenv(MM_VERB_ENV)))
- mm.mask = MM_default;
- else for (;;)
- {
- if (t = strchr(s, ':'))
- *t = 0;
- if (!(p = (MM_table_t*)strlook(mm_verb, sizeof(MM_table_t), s)))
- {
- mm.mask = MM_default;
- if (t)
- *t = ':';
- break;
- }
- mm.mask |= p->value;
- if (!t)
- break;
- *t++ = ':';
- s = t;
- }
- }
- if (!(classification & (MM_CONSOLE|MM_PRINT)))
- return 0;
- if (!(sp = sfstropen()))
- return MM_NOTOK;
- r = 0;
- if (s = (char*)label)
- {
- if (t = strchr(s, ':'))
- {
- if ((n = t - s) > MM_LABEL_1_MAX)
- n = MM_LABEL_1_MAX;
- sfprintf(sp, "%*.*s:", n, n, s);
- s = ++t;
- if ((n = strlen(t)) > MM_LABEL_2_MAX)
- n = MM_LABEL_2_MAX;
- sfprintf(sp, "%*.*s", n, n, s);
- }
- else
- {
- if ((n = strlen(t)) > MM_LABEL_1_MAX)
- n = MM_LABEL_1_MAX;
- sfprintf(sp, "%*.*s", n, n, s);
- }
- if (!(s = sfstruse(sp)))
- {
- sfstrclose(sp);
- return MM_NOTOK;
- }
- strcpy(lab, s);
- }
- for (;;)
- {
- if (classification & MM_CONSOLE)
- {
- classification &= ~MM_CONSOLE;
- if (!(mm.init & INIT_CONSOLE))
- mm.console = open("/dev/console", O_WRONLY|O_APPEND|O_NOCTTY);
- if (mm.console < 0)
- {
- r |= MM_NOCON;
- continue;
- }
- c = MM_NOCON;
- fd = mm.console;
- mask = MM_all;
- }
- else if (classification & MM_PRINT)
- {
- classification &= ~MM_PRINT;
- c = MM_NOMSG;
- fd = 2;
- mask = mm.mask;
- }
- else break;
- if ((mask & MM_label) && label)
- sfprintf(sp, "%s: ", lab);
- if ((mask & MM_severity) && (s = display(mm_severity, severity, 0)))
- sfprintf(sp, "%s: ", s);
- n = sfstrtell(sp);
- if ((mask & MM_text) && text)
- sfprintf(sp, "%s\n", text);
- else sfputc(sp, '\n');
- if ((mask & MM_action) && action || (mask & MM_tag) && (label || tag))
- {
- if (fd != mm.console && (n -= 8) > 0)
- sfprintf(sp, "%*.*s", n, n, "");
- sfprintf(sp, "TO FIX:");
- if ((mask & MM_action) && action)
- sfprintf(sp, " %s", action);
- if ((mask & MM_tag) && (label || tag))
- {
- sfprintf(sp, " ");
- if (!tag || label && !strchr(tag, ':'))
- sfprintf(sp, "%s%s", lab, tag ? ":" : "");
- if (tag)
- sfprintf(sp, "%s", tag);
- }
- if (mask & (MM_class|MM_source|MM_status))
- {
- sfputc(sp, ' ');
- if ((mask & MM_source) && (m = classification & (MM_APPL|MM_UTIL|MM_OPSYS)) && (s = display(mm_class, m, 1)))
- sfprintf(sp, " %s", s);
- if ((mask & MM_class) && (m = classification & (MM_HARD|MM_SOFT|MM_FIRM)) && (s = display(mm_class, m, 1)))
- sfprintf(sp, " %s", s);
- if ((mask & MM_status) && (m = classification & (MM_RECOVER|MM_NRECOV)) && (s = display(mm_class, m, 1)))
- sfprintf(sp, " %s", s);
- }
- sfputc(sp, '\n');
- }
- n = sfstrtell(sp);
- if (!(s = sfstruse(sp)) || write(fd, s, n) != n)
- r |= c;
- }
- sfstrclose(sp);
- return r;
-}
-
-#endif