blob: fc9124015de5581a1d543e24bbe59ce4ace19460 [file] [log] [blame]
/*
* Routines for handling AIF errors.
*
* Copyright (c) 1996-2002 by Guardsoft Pty Ltd.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif /* HAVE_CONFIG_H */
#include <stdio.h>
#include <string.h>
#include "aif.h"
#include "aifint.h"
#include "aiferr.h"
char * aiferrstr[] =
{
"No error",
"Arguments are different sizes",
"Can't convert arguments",
"Function not supported for this type",
"Bad argument",
"Function not implemented",
"Error opening file: %s",
"Error writing file: %s",
"Error reading file: %s",
"Error seeking file: %s",
"Bad file header",
"Invalid mode for operation",
"Bad descriptor",
"No such field",
"Invalid arithmetic operation",
"Invalid base for conversion",
"Index out of range",
"String too long",
"This error can't happen"
};
static aiferr _aif_errno = AIFERR_NOERR;
static char * _aif_errstr = NULL;
aiferr
AIFError(void)
{
return _aif_errno;
}
char *
AIFErrorStr(void)
{
static char buf[BUFSIZ];
if ( _aif_errno >= AIFERR_CANTHAPPEN )
return "Unknown AIF error";
if ( _aif_errstr != NULL && *_aif_errstr != '\0' )
{
snprintf(buf, BUFSIZ, aiferrstr[_aif_errno], _aif_errstr);
return buf;
}
return aiferrstr[_aif_errno];
}
void
SetAIFError(aiferr errno, char *errstr)
{
_aif_errno = errno;
if ( _aif_errstr != NULL )
{
_aif_free(_aif_errstr);
_aif_errstr = NULL;
}
if ( errstr != NULL )
_aif_errstr = strdup(errstr);
}
void
ResetAIFError(void)
{
_aif_errno = AIFERR_NOERR;
if ( _aif_errstr != NULL )
{
_aif_free(_aif_errstr);
_aif_errstr = NULL;
}
}