Blame lib/Mrm/Mrmerror.c

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
 */ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
 */ 
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef REV_INFO
Packit b099d7
#ifndef lint
Packit b099d7
static char rcsid[] = "$XConsortium: Mrmerror.c /main/13 1996/11/13 14:00:43 drk $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
Packit b099d7
/* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *  FACILITY:
Packit b099d7
 *
Packit b099d7
 *      UIL Resource Manager (URM):
Packit b099d7
 *
Packit b099d7
 *  ABSTRACT:
Packit b099d7
 *
Packit b099d7
 *	All error signalling and handling routines are found here.
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *
Packit b099d7
 *  INCLUDE FILES
Packit b099d7
 *
Packit b099d7
 */
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <Mrm/Mrm.h>
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *
Packit b099d7
 *  GLOBAL VARIABLE DECLARATIONS
Packit b099d7
 *
Packit b099d7
 */
Packit b099d7
externaldef(urm__err_out)		MrmCode	urm__err_out = URMErrOutStdout ;
Packit b099d7
externaldef(urm__latest_error_code)	MrmCode	urm__latest_error_code = 0 ;
Packit b099d7
externaldef(urm__latest_error_msg)	String	urm__latest_error_msg = NULL ;
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *
Packit b099d7
 *  OWN VARIABLE DECLARATIONS
Packit b099d7
 *
Packit b099d7
 */
Packit b099d7
Packit b099d7
static	String	urm_codes_codstg[] = {
Packit b099d7
  "MrmFAILURE"
Packit b099d7
  ,"MrmSUCCESS"
Packit b099d7
  ,"MrmNOT_FOUND"
Packit b099d7
  ,"MrmCREATE_NEW"
Packit b099d7
  ,"MrmEXISTS"
Packit b099d7
  ,"URMIndex retry"
Packit b099d7
  ,"MrmNUL_GROUP"
Packit b099d7
  ,"MrmINDEX_GT"
Packit b099d7
  ,"MrmNUL_TYPE"
Packit b099d7
  ,"MrmINDEX_LT"
Packit b099d7
  ,"MrmWRONG_GROUP"
Packit b099d7
  ,"MrmPARTIAL_SUCCESS"
Packit b099d7
  ,"MrmWRONG_TYPE"
Packit b099d7
  ,"URM unused code 13"
Packit b099d7
  ,"MrmOUT_OF_RANGE"
Packit b099d7
  ,"URM unused code 15"
Packit b099d7
  ,"MrmBAD_RECORD"
Packit b099d7
  ,"URM unused code 17"
Packit b099d7
  ,"MrmNULL_DATA"
Packit b099d7
  ,"URM unused code 19"
Packit b099d7
  ,"MrmBAD_DATA_INDEX"
Packit b099d7
  ,"URM unused code 21"
Packit b099d7
  ,"MrmBAD_ORDER"
Packit b099d7
  ,"URM unused code 23"
Packit b099d7
  ,"MrmBAD_CONTEXT"
Packit b099d7
  ,"URM unused code 25"
Packit b099d7
  ,"MrmNOT_VALID"
Packit b099d7
  ,"URM unused code 27"
Packit b099d7
  ,"MrmBAD_BTREE"
Packit b099d7
  ,"URM unused code 29"
Packit b099d7
  ,"MrmBAD_WIDGET_REC"
Packit b099d7
  ,"URM unused code 31"
Packit b099d7
  ,"MrmBAD_CLASS_TYPE"
Packit b099d7
  ,"URM unused code 33"
Packit b099d7
  ,"MrmNO_CLASS_NAME"
Packit b099d7
  ,"URM unused code 35"
Packit b099d7
  ,"MrmTOO_MANY"
Packit b099d7
  ,"URM unused code 37"
Packit b099d7
  ,"MrmBAD_IF_MODULE"
Packit b099d7
  ,"URM unused code 39"
Packit b099d7
  ,"MrmNULL_DESC"
Packit b099d7
  ,"URM unused code 41"
Packit b099d7
  ,"MrmOUT_OF_BOUNDS"
Packit b099d7
  ,"URM unused code 43"
Packit b099d7
  ,"MrmBAD_COMPRESS"
Packit b099d7
  ,"URM unused code 45"
Packit b099d7
  ,"MrmBAD_ARG_TYPE"
Packit b099d7
  ,"URM unused code 47"
Packit b099d7
  ,"MrmNOT_IMP"
Packit b099d7
  ,"URM unused code 49"
Packit b099d7
  ,"MrmNULL_INDEX"
Packit b099d7
  ,"URM unused code 51"
Packit b099d7
  ,"MrmBAD_KEY_TYPE"
Packit b099d7
  ,"URM unused code 53"
Packit b099d7
  ,"MrmBAD_CALLBACK"
Packit b099d7
  ,"URM unused code 55"
Packit b099d7
  ,"MrmNULL_ROUTINE"
Packit b099d7
  ,"URM unused code 57"
Packit b099d7
  ,"MrmVEC_TOO_BIG"
Packit b099d7
  ,"URM unused code 59"
Packit b099d7
  ,"MrmBAD_HIERARCHY"
Packit b099d7
  ,"URM unused code 61"
Packit b099d7
  ,"MrmBAD_CLASS_CODE"
Packit b099d7
} ;
Packit b099d7
Packit b099d7
static String urm_codes_invalidcode = "Invalid URM code" ;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *
Packit b099d7
 *  PROCEDURE DESCRIPTION:
Packit b099d7
 *
Packit b099d7
 *	This routine is an error signalling routine for use within URM.
Packit b099d7
 *	It currently just reports the error on the terminal.
Packit b099d7
 *
Packit b099d7
 *  FORMAL PARAMETERS:
Packit b099d7
 *
Packit b099d7
 *	module		Identifies the module (routine) detecting the error
Packit b099d7
 *	error		Brief description of the error
Packit b099d7
 *	file_id		if not NULL, the IDB file implicated in the error
Packit b099d7
 *	context_id	if not NULL, the URM resource implicated in the error
Packit b099d7
 *	status		the return code associated with the error.
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT INPUTS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT OUTPUTS:
Packit b099d7
 *
Packit b099d7
 *  FUNCTION VALUE:
Packit b099d7
 *
Packit b099d7
 *  SIDE EFFECTS:
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
Cardinal 
Packit b099d7
Urm__UT_Error (char			*module,
Packit b099d7
	       char			*error,
Packit b099d7
	       IDBFile			file_id, /* unused */
Packit b099d7
	       URMResourceContextPtr	context_id, /* unused */
Packit b099d7
	       Cardinal			status)
Packit b099d7
{
Packit b099d7
Packit b099d7
  /*
Packit b099d7
   *  Local variables
Packit b099d7
   */
Packit b099d7
  char		msg[300] ;	/* error message */
Packit b099d7
Packit b099d7
Packit b099d7
  /*
Packit b099d7
   * construct error message
Packit b099d7
   */
Packit b099d7
Packit b099d7
  /* Old form
Packit b099d7
   * sprintf (msg, "%s detected error %s - %s", module, error,
Packit b099d7
   *	      Urm__UT_UrmCodeString(status)) ;
Packit b099d7
   */
Packit b099d7
  sprintf (msg, "%s: %s - %s", module, error, Urm__UT_UrmCodeString(status)) ;
Packit b099d7
Packit b099d7
  /*
Packit b099d7
   * Print or save the message depending on the reporting style
Packit b099d7
   */
Packit b099d7
  urm__latest_error_code = status ;
Packit b099d7
Packit b099d7
  switch ( urm__err_out )
Packit b099d7
    {
Packit b099d7
    case URMErrOutMemory:
Packit b099d7
      if ( urm__latest_error_msg != NULL )
Packit b099d7
	XtFree (urm__latest_error_msg) ;
Packit b099d7
      urm__latest_error_msg = (String) XtMalloc (strlen(msg)+1) ;
Packit b099d7
      strcpy (urm__latest_error_msg, msg) ;
Packit b099d7
      return status ;
Packit b099d7
    case URMErrOutStdout:
Packit b099d7
    default:
Packit b099d7
      XtWarning (msg) ;
Packit b099d7
      return status ;
Packit b099d7
    }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *
Packit b099d7
 *  PROCEDURE DESCRIPTION:
Packit b099d7
 *
Packit b099d7
 *	This routine sets the URM error report type to a standard state
Packit b099d7
 *
Packit b099d7
 *  FORMAL PARAMETERS:
Packit b099d7
 *
Packit b099d7
 *	report_type	URMErrOutMemory	- save message in memory, don't print
Packit b099d7
 *			URMErrOutStdout	- report to stdout
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT INPUTS:
Packit b099d7
 *
Packit b099d7
 *	urm__err_out
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT OUTPUTS:
Packit b099d7
 *
Packit b099d7
 *	urm__err_out
Packit b099d7
 *
Packit b099d7
 *  FUNCTION VALUE:
Packit b099d7
 *
Packit b099d7
 *      MrmSUCCESS	operation succeeded
Packit b099d7
 *	MrmFAILURE	illegal state requested
Packit b099d7
 *
Packit b099d7
 *  SIDE EFFECTS:
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
Cardinal 
Packit b099d7
Urm__UT_SetErrorReport (MrmCode report_type)
Packit b099d7
{
Packit b099d7
Packit b099d7
  switch ( report_type )
Packit b099d7
    {
Packit b099d7
    case URMErrOutMemory:
Packit b099d7
    case URMErrOutStdout:
Packit b099d7
      urm__err_out = report_type ;
Packit b099d7
      return MrmSUCCESS ;
Packit b099d7
Packit b099d7
    default:
Packit b099d7
      return MrmFAILURE ;
Packit b099d7
    }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *
Packit b099d7
 *  PROCEDURE DESCRIPTION:
Packit b099d7
 *
Packit b099d7
 *	 Returns the current error code
Packit b099d7
 *
Packit b099d7
 *  FORMAL PARAMETERS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT INPUTS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT OUTPUTS:
Packit b099d7
 *
Packit b099d7
 *  FUNCTION VALUE:
Packit b099d7
 *
Packit b099d7
 *  SIDE EFFECTS:
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
MrmCode 
Packit b099d7
Urm__UT_LatestErrorCode (void)
Packit b099d7
{
Packit b099d7
Packit b099d7
  return urm__latest_error_code ;
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *
Packit b099d7
 *  PROCEDURE DESCRIPTION:
Packit b099d7
 *
Packit b099d7
 *	 Returns the current error message
Packit b099d7
 *
Packit b099d7
 *  FORMAL PARAMETERS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT INPUTS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT OUTPUTS:
Packit b099d7
 *
Packit b099d7
 *  FUNCTION VALUE:
Packit b099d7
 *
Packit b099d7
 *  SIDE EFFECTS:
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
String 
Packit b099d7
Urm__UT_LatestErrorMessage (void)
Packit b099d7
Packit b099d7
{
Packit b099d7
Packit b099d7
  return urm__latest_error_msg ;
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7

Packit b099d7
/*
Packit b099d7
 *++
Packit b099d7
 *
Packit b099d7
 *  PROCEDURE DESCRIPTION:
Packit b099d7
 *
Packit b099d7
 *	This routine returns a static string naming a URM return code.
Packit b099d7
 *
Packit b099d7
 *  FORMAL PARAMETERS:
Packit b099d7
 *
Packit b099d7
 *	cod		A URM return code
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT INPUTS:
Packit b099d7
 *
Packit b099d7
 *  IMPLICIT OUTPUTS:
Packit b099d7
 *
Packit b099d7
 *  FUNCTION VALUE:
Packit b099d7
 *
Packit b099d7
 *  SIDE EFFECTS:
Packit b099d7
 *
Packit b099d7
 *--
Packit b099d7
 */
Packit b099d7
Packit b099d7
String 
Packit b099d7
Urm__UT_UrmCodeString (MrmCode cod)
Packit b099d7
{
Packit b099d7
Packit b099d7
  if ( cod >= MrmFAILURE && cod <= MrmBAD_CLASS_CODE )
Packit b099d7
    return urm_codes_codstg[cod] ;
Packit b099d7
  return urm_codes_invalidcode ;
Packit b099d7
Packit b099d7
}
Packit b099d7