Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
225
cde/lib/DtSvc/DtUtil2/UErrNoBMS.c
Normal file
225
cde/lib/DtSvc/DtUtil2/UErrNoBMS.c
Normal file
@@ -0,0 +1,225 @@
|
||||
/* $TOG: UErrNoBMS.c /main/9 1998/04/09 17:50:11 mgreess $ */
|
||||
/*
|
||||
* (c) Copyright 1995 Digital Equipment Corporation.
|
||||
* (c) Copyright 1987, 1988, 1989, 1990, 1993, 1994, 1995 Hewlett-Packard Company
|
||||
* (c) Copyright 1993, 1994, 1995 International Business Machines Corp.
|
||||
* (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc.
|
||||
* (c) Copyright 1993, 1994, 1995 Novell, Inc.
|
||||
* (c) Copyright 1995 FUJITSU LIMITED.
|
||||
* (c) Copyright 1995 Hitachi.
|
||||
*/
|
||||
/*************************************<+>*************************************
|
||||
*****************************************************************************
|
||||
**
|
||||
** File: UErrNoBMS.c
|
||||
**
|
||||
** Project: DT
|
||||
**
|
||||
** Description: This file contains the CDE 1.0 message logging functions
|
||||
**
|
||||
****************************************************************************
|
||||
************************************<+>*************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <Dt/MsgLog.h>
|
||||
#include <Dt/MsgLogI.h>
|
||||
#include <Dt/UserMsg.h>
|
||||
|
||||
#define MESSAGE_BUFFER 2048
|
||||
|
||||
|
||||
static char * errno_string(
|
||||
unsigned int errn, char *buff) ;
|
||||
static void log_message(
|
||||
char *progName,
|
||||
char *help,
|
||||
char *message,
|
||||
DtSeverity severity,
|
||||
int errnoset);
|
||||
|
||||
|
||||
static char *
|
||||
errno_string(
|
||||
unsigned int errn, char *buff)
|
||||
{
|
||||
char * s;
|
||||
|
||||
switch (errn) {
|
||||
|
||||
/* These are all in POSIX 1003.1 and/or X/Open XPG3 */
|
||||
/* ---------------------------------------------------- */
|
||||
case EPERM : s = "EPERM"; break;
|
||||
case ENOENT : s = "ENOENT"; break;
|
||||
case ESRCH : s = "ESRCH"; break;
|
||||
case EINTR : s = "EINTR"; break;
|
||||
case EIO : s = "EIO"; break;
|
||||
case ENXIO : s = "ENXIO"; break;
|
||||
case E2BIG : s = "E2BIG"; break;
|
||||
case ENOEXEC : s = "ENOEXEC";break;
|
||||
case EBADF : s = "EBADF"; break;
|
||||
case ECHILD : s = "ECHILD"; break;
|
||||
case EAGAIN : s = "EAGAIN"; break;
|
||||
case ENOMEM : s = "ENOMEM"; break;
|
||||
case EACCES : s = "EACCES"; break;
|
||||
case EFAULT : s = "EFAULT"; break;
|
||||
case ENOTBLK : s = "ENOTBLK";break;
|
||||
case EBUSY : s = "EBUSY"; break;
|
||||
case EEXIST : s = "EEXIST"; break;
|
||||
case EXDEV : s = "EXDEV"; break;
|
||||
case ENODEV : s = "ENODEV"; break;
|
||||
case ENOTDIR : s = "ENOTDIR";break;
|
||||
case EISDIR : s = "EISDIR"; break;
|
||||
case EINVAL : s = "EINVAL"; break;
|
||||
case ENFILE : s = "ENFILE"; break;
|
||||
case EMFILE : s = "EMFILE"; break;
|
||||
case ENOTTY : s = "ENOTTY"; break;
|
||||
case ETXTBSY : s = "ETXTBSY";break;
|
||||
case EFBIG : s = "EFBIG"; break;
|
||||
case ENOSPC : s = "ENOSPC"; break;
|
||||
case ESPIPE : s = "ESPIPE"; break;
|
||||
case EROFS : s = "EROFS"; break;
|
||||
case EMLINK : s = "EMLINK"; break;
|
||||
case EPIPE : s = "EPIPE"; break;
|
||||
case ENOMSG : s = "ENOMSG"; break;
|
||||
case EIDRM : s = "EIDRM"; break;
|
||||
case EDEADLK : s = "EDEADLK";break;
|
||||
case ENOLCK : s = "ENOLCK"; break;
|
||||
#ifndef _AIX
|
||||
case ENOTEMPTY : s = "ENOTEMPTY"; break;
|
||||
#endif
|
||||
case ENAMETOOLONG : s = "ENAMETOOLONG"; break;
|
||||
case ENOSYS : s = "ENOSYS"; break;
|
||||
default : s = NULL; break;
|
||||
}
|
||||
|
||||
if (s)
|
||||
sprintf(buff, "%s (%d)",s,errn);
|
||||
else
|
||||
sprintf(buff, "(%d)",errn);
|
||||
|
||||
return (buff);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This function calls the CDE message logging service.
|
||||
*/
|
||||
static void
|
||||
log_message(
|
||||
char *progName,
|
||||
char *help,
|
||||
char *message,
|
||||
DtSeverity severity,
|
||||
int errnoset )
|
||||
{
|
||||
char * errmsg = NULL;
|
||||
char * errname = NULL;
|
||||
char format[25];
|
||||
DtMsgLogType msg_type;
|
||||
char buff[40];
|
||||
|
||||
(void) strcpy (format, "%s");
|
||||
|
||||
if (help)
|
||||
(void) strcat (format, "\n %s");
|
||||
|
||||
if (errnoset) {
|
||||
unsigned int errn;
|
||||
|
||||
if (errnoset == TRUE) /* Use "errno" from <errno.h> ? */
|
||||
errn = errno; /* --- yep. */
|
||||
else
|
||||
errn = errnoset; /* No, not the magic value, use parm */
|
||||
|
||||
errname = errno_string(errn, buff);
|
||||
|
||||
if (!(errmsg = strerror(errn)))
|
||||
errmsg = "unknown";
|
||||
}
|
||||
|
||||
/*
|
||||
* Must map the old message types to the new
|
||||
*/
|
||||
switch (severity) {
|
||||
case DtError:
|
||||
DtFatalError:
|
||||
DtInternalError:
|
||||
msg_type = DtMsgLogError; break;
|
||||
case DtIgnore:
|
||||
DtInformation:
|
||||
msg_type = DtMsgLogInformation; break;
|
||||
case DtWarning:
|
||||
msg_type = DtMsgLogWarning; break;
|
||||
default:
|
||||
msg_type = DtMsgLogError;
|
||||
}
|
||||
|
||||
if (errmsg)
|
||||
(void) strcat (format, "\n [%s] %s");
|
||||
|
||||
if (help) {
|
||||
if (errmsg)
|
||||
DtMsgLogMessage (progName, msg_type, format, message, help,
|
||||
errname, errmsg);
|
||||
else
|
||||
DtMsgLogMessage (progName, msg_type, format, message, help);
|
||||
} else {
|
||||
if (errmsg)
|
||||
DtMsgLogMessage (progName, msg_type, format, message, errname, errmsg);
|
||||
else
|
||||
DtMsgLogMessage (progName, msg_type, format, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_DtSimpleError(
|
||||
char *progName,
|
||||
DtSeverity severity,
|
||||
char *help,
|
||||
char *format,
|
||||
... )
|
||||
{
|
||||
va_list args;
|
||||
char *message = (char*) malloc(MESSAGE_BUFFER);
|
||||
|
||||
if (NULL == message) return;
|
||||
|
||||
Va_start(args, format);
|
||||
#if defined(USE_SNPRINTF)
|
||||
(void) vsnprintf(message, MESSAGE_BUFFER, format, args);
|
||||
#else
|
||||
(void) vsprintf(message, format, args);
|
||||
#endif
|
||||
va_end(args);
|
||||
|
||||
log_message(progName, help, message, severity, FALSE);
|
||||
if (message) free(message);
|
||||
}
|
||||
|
||||
void
|
||||
_DtSimpleErrnoError(
|
||||
char *progName,
|
||||
DtSeverity severity,
|
||||
char *help,
|
||||
char *format,
|
||||
... )
|
||||
{
|
||||
va_list args;
|
||||
char *message = (char*) malloc(MESSAGE_BUFFER);
|
||||
|
||||
if (NULL == message) return;
|
||||
|
||||
Va_start(args, format);
|
||||
#if defined(USE_SNPRINTF)
|
||||
(void) vsnprintf(message, MESSAGE_BUFFER, format, args);
|
||||
#else
|
||||
(void) vsprintf(message, format, args);
|
||||
#endif
|
||||
va_end(args);
|
||||
|
||||
log_message(progName, help, message, severity, TRUE);
|
||||
if (message) free(message);
|
||||
}
|
||||
Reference in New Issue
Block a user