home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
texmf
/
source
/
driver
/
util
/
iff
/
iffpstrings.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-02-27
|
4KB
|
185 lines
/* iffpstrings.c
*
* centralized message routine for IFFP modules
* If you plan to add international language support to
* your iffparse application, all of the iffparse module
* strings are here and are accessed via the SI() macro in
* iffp/iff.h which calls GetString()
*
* There is some #ifdef'd out code here which will be useful if you
* decide to localize your application when locale.library is released.
*
* 37.9 4/92 - fixed IFFerr() error equivalence tests and null string
* 37.10 7/92 - fixes to localization routine
* 39.2 9/92 - modify for new CatComp, mroe consistent string ID names
*/
/*
#define LOCALIZED
*/
#define INCLUDENAME "iffpstrings.h"
#ifdef LOCALIZED
#define CATALOGNAME "PasTeX.catalog"
#include <clib/locale_protos.h>
#ifndef NO_SAS_PRAGMAS
#include <pragmas/locale_pragmas.h>
#endif
#endif
/* Locale stuff */
#define IFFP_MODULES
#define CATCOMP_ARRAY
#include INCLUDENAME
#ifdef LOCALIZED
extern struct Library *LocaleBase;
#endif
static APTR catalog = NULL;
/* For reference
struct CatCompArrayType
{
LONG cca_ID;
STRPTR cca_Str;
};
*/
#include "iff.h"
#include <intuition/screens.h>
static UBYTE NULLSTRING[] = {""};
/* OpenStrings - localizes strings
* Requires open locale.library to work, but safe to call without
* You may pass nulls as args if you have no localized application strings
*/
#ifdef LOCALIZED
void OpenStrings()
{
if((LocaleBase)&&(!catalog))
{
catalog = OpenCatalogA(NULL,CATALOGNAME,NULL);
}
}
#endif
/* CloseStrings - release the localized strings
* Make sure all error messages are printed BEFORE calling this function
*/
#ifdef LOCALIZED
void CloseStrings()
{
if((LocaleBase)&&(catalog))
{
CloseCatalog(catalog);
}
}
#endif
/*
* IFFerr
*
* Returns pointer to IFF Error string or NULL string (no error)
*/
UBYTE *IFFerr(LONG error)
{
/*
* English error messages for possible IFFERR_#? returns from various
* IFF routines. To get the index into this array, take your IFFERR
* code, negate it, and subtract one.
* idx = -error - 1;
*
* To index localized string, then add MSG_IFFP_STDFIRST
*/
static UBYTE unknown[48];
UBYTE *s = NULLSTRING;
if((error < 0)&&(error >= -12))
{
s=SI(((-error) - 1) + MSG_IFFP_STDFIRST);
}
else if(error == CLIENT_ERROR)
{
s=SI(MSG_IFFP_CLIENTERR);
}
else if(error == NOFILE)
{
s=SI(MSG_IFFP_NOFILE);
}
else if(error)
{
sprintf(unknown,SI(MSG_IFFP_UNKNOWNERR_D),error);
s=unknown;
}
return(s);
}
/* OpenScreen error messages
*/
UBYTE *openScreenErr(ULONG errorcode)
{
static UBYTE unknown[48];
UBYTE *s=NULL;
switch ( errorcode )
{
case OSERR_NOMEM:
s=SI(MSG_OSCR_NOMEM);
break;
case OSERR_NOCHIPMEM:
s=SI(MSG_OSCR_NOCHIPMEM);
break;
case OSERR_NOMONITOR:
s=SI(MSG_OSCR_NOMONITOR);
break;
case OSERR_NOCHIPS:
s=SI(MSG_OSCR_NOCHIPS);
break;
case OSERR_PUBNOTUNIQUE:
s=SI(MSG_OSCR_PUBNOTUNIQUE);
break;
case OSERR_UNKNOWNMODE:
s=SI(MSG_OSCR_UNKNOWNMODE);
break;
default:
sprintf(unknown,SI(MSG_OSCR_UNKNOWNERR_D),errorcode);
s=unknown;
}
return(s);
}
UBYTE *GetString(ULONG id)
{
static const struct CatCompArrayType *cca;
UBYTE *s = NULLSTRING;
int k,l;
l = sizeof(CatCompArray) / sizeof(CatCompArray[0]);
cca = CatCompArray;
for(k=0; k<l; k++, cca++)
{
if(cca->cca_ID == id)
{
s = cca->cca_Str;
break;
}
}
#ifdef LOCALIZED
if((LocaleBase)&&(catalog)&&(*s))
{
s = GetCatalogStr(catalog,id,s);
}
#endif
return(s);
}