XtErrorMsgHandler()XtErrorMsgHandler()NameXtErrorMsgHandler - interface definition for high-level error and warn‐
ing handler procedures.
Synopsis
typedef void (*XtErrorMsgHandler)(String, String, String, String,
String *, Cardinal *);
String name;
String type;
String class;
String defaultp;
String *params;
Cardinal *num_params;
Inputs
name Specifies the name that is concatenated with the specified
type to form the resource name of the error message.
type Specifies the type that is concatenated with the name to form
the resource name of the error message.
class Specifies the resource class of the error message.
defaultp Specifies the default message to use if no error database
entry is found.
params Specifies a pointer to a list of values to be substituted in
the message.
num_params
Specifies the number of values in the parameter list.
Description
An XtErrorMsgHandler is registered as a high-level error or warning
handler with XtAppSetErrorMsgHandler() or XtAppSetWarningMsgHandler().
It is invoked by XtAppErrorMsg() or XtAppWarningMsg().
An XtErrorMsgHandler should look up an error message of the specified
name, type, and class in an error database of some sort, and display
the message it finds, or use the supplied default defaultp. Whether a
message is found in a database or the default message is used, the
specified params should be substituted into the message using standard
printf() substitutions before it is displayed.
Usage
A custom high-level error or warning handler may find it useful to use
XtAppGetErrorDatabase() or XtAppGetErrorDatabaseText(). This latter
function looks up an error message in a standard X resource database by
concatenating the name and type arguments into the resource name of the
message and using class as the resource class of the message. See
XtAppGetErrorDatabaseText(1) for more details.
A high-level error or warning handler should generally display the mes‐
sage it builds by calling the corresponding low-level handler with
XtAppError() or XtAppWarning(). This allows customization at two inde‐
pendent levels of abstraction.
Usually, the name argument will describe the general kind of error,
such as invalidParameters or invalidWindow, and the type argument pro‐
vides extra information about the error, such as the name of the func‐
tion in which the error was detected.
Note that application-context-specific error handling is not imple‐
mented in MIT release, though the XtApp version of all the error han‐
dling routines are present. Most implementation will support only a
single set of error handlers for all application contexts, and if a new
handler is registered in one app context, it will take effect in all
contexts.
Example
The example below shows the Intrinsics default error message handler:
void _XtDefaultErrorMsg (name,type,class,defaultp,params,num_params)
String name,type,class,defaultp;
String* params;
Cardinal* num_params;
{
char buffer[1000], message[1000];
XtGetErrorDatabaseText(name,type,class,defaultp, buffer, 1000);
/*need better solution here, perhaps use lower level printf primitives? */
if (params == NULL num_params == NULL *num_params == 0)
XtError(buffer);
else {
int i = *num_params;
String par[10];
if (i > 10) i = 10;
bcopy( (char*)params, (char*)par, i * sizeof(String) );
bzero( &par[i], (10-i) * sizeof(String) );
(void) sprintf(message, buffer, par[0], par[1], par[2], par[3],
par[4], par[5], par[6], par[7], par[8], par[9]);
XtError(message);
if (i != *num_params)
XtWarning( "some arguments in previous message were lost" );
}
}
See AlsoXtAppErrorMsg(1), XtAppSetErrorMsgHandler(1), XtAppSetWarningMsgHan‐
dler(1), XtAppWarningMsg(1),
XtErrorHandler(2).
Xt - Error Handling XtErrorMsgHandler()