home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / driver / util / iff / iffpstrings.c < prev    next >
C/C++ Source or Header  |  1993-02-27  |  4KB  |  185 lines

  1. /* iffpstrings.c
  2.  *
  3.  *  centralized message routine for IFFP modules
  4.  *  If you plan to add international language support to
  5.  *  your iffparse application, all of the iffparse module
  6.  *  strings are here and are accessed via the SI() macro in
  7.  *  iffp/iff.h which calls GetString() 
  8.  *
  9.  *  There is some #ifdef'd out code here which will be useful if you
  10.  *  decide to localize your application when locale.library is released.
  11.  *
  12.  *  37.9 4/92   - fixed IFFerr() error equivalence tests and null string
  13.  *  37.10  7/92 - fixes to localization routine
  14.  *  39.2   9/92 - modify for new CatComp, mroe consistent string ID names
  15.  */
  16.  
  17.  
  18. /*
  19. #define LOCALIZED
  20. */
  21.  
  22. #define INCLUDENAME    "iffpstrings.h"
  23.  
  24. #ifdef LOCALIZED
  25. #define CATALOGNAME    "PasTeX.catalog"
  26. #include <clib/locale_protos.h>
  27. #ifndef NO_SAS_PRAGMAS
  28. #include <pragmas/locale_pragmas.h>
  29. #endif
  30. #endif
  31.  
  32. /* Locale stuff */
  33. #define  IFFP_MODULES
  34. #define  CATCOMP_ARRAY
  35. #include INCLUDENAME
  36.  
  37. #ifdef LOCALIZED
  38. extern struct Library *LocaleBase;
  39. #endif
  40.  
  41. static APTR   catalog = NULL;
  42.  
  43. /* For reference
  44. struct CatCompArrayType
  45. {
  46.     LONG   cca_ID;
  47.     STRPTR cca_Str;
  48. };
  49. */
  50.  
  51. #include "iff.h"
  52. #include <intuition/screens.h>
  53.  
  54. static UBYTE NULLSTRING[] = {""};
  55.  
  56. /* OpenStrings - localizes strings
  57.  * Requires open locale.library to work, but safe to call without
  58.  * You may pass nulls as args if you have no localized application strings
  59.  */
  60.  
  61. #ifdef LOCALIZED
  62. void OpenStrings()
  63.    {
  64.    if((LocaleBase)&&(!catalog))
  65.     {
  66.     catalog = OpenCatalogA(NULL,CATALOGNAME,NULL);
  67.     }
  68.     }
  69. #endif
  70.  
  71. /* CloseStrings - release the localized strings 
  72.  * Make sure all error messages are printed BEFORE calling this function
  73.  */
  74. #ifdef LOCALIZED
  75. void CloseStrings()
  76.     {
  77.     if((LocaleBase)&&(catalog))
  78.     {
  79.         CloseCatalog(catalog);
  80.     }
  81.     }
  82. #endif
  83.  
  84. /*
  85.  * IFFerr
  86.  *
  87.  * Returns pointer to IFF Error string or NULL string (no error)
  88.  */
  89. UBYTE *IFFerr(LONG error)
  90. {
  91.     /*
  92.      * English error messages for possible IFFERR_#? returns from various
  93.      * IFF routines.  To get the index into this array, take your IFFERR
  94.      * code, negate it, and subtract one.
  95.      *  idx = -error - 1;
  96.      *
  97.      * To index localized string, then add MSG_IFFP_STDFIRST
  98.      */
  99.  
  100.     static UBYTE unknown[48];
  101.     UBYTE  *s = NULLSTRING;
  102.  
  103.     if((error < 0)&&(error >= -12))
  104.         {
  105.         s=SI(((-error) - 1) + MSG_IFFP_STDFIRST);
  106.         }
  107.     else if(error == CLIENT_ERROR)
  108.         {
  109.         s=SI(MSG_IFFP_CLIENTERR);
  110.         }
  111.     else if(error == NOFILE)
  112.         {
  113.         s=SI(MSG_IFFP_NOFILE);
  114.         }
  115.     else if(error)
  116.         {
  117.         sprintf(unknown,SI(MSG_IFFP_UNKNOWNERR_D),error);
  118.         s=unknown;
  119.         }
  120.     return(s);
  121. }
  122.  
  123.  
  124. /* OpenScreen error messages
  125.  */
  126. UBYTE *openScreenErr(ULONG errorcode)
  127.    {
  128.    static UBYTE unknown[48];
  129.    UBYTE *s=NULL;
  130.  
  131.         switch ( errorcode )
  132.     {
  133.     case OSERR_NOMEM:
  134.         s=SI(MSG_OSCR_NOMEM);
  135.         break;
  136.     case OSERR_NOCHIPMEM:
  137.         s=SI(MSG_OSCR_NOCHIPMEM);
  138.         break;
  139.     case OSERR_NOMONITOR:
  140.         s=SI(MSG_OSCR_NOMONITOR);
  141.         break;
  142.     case OSERR_NOCHIPS:
  143.         s=SI(MSG_OSCR_NOCHIPS);
  144.         break;
  145.     case OSERR_PUBNOTUNIQUE:
  146.         s=SI(MSG_OSCR_PUBNOTUNIQUE);
  147.         break;
  148.     case OSERR_UNKNOWNMODE:
  149.         s=SI(MSG_OSCR_UNKNOWNMODE);
  150.         break;
  151.     default:
  152.         sprintf(unknown,SI(MSG_OSCR_UNKNOWNERR_D),errorcode);
  153.         s=unknown;
  154.     }
  155.     return(s);
  156.     }
  157.  
  158.  
  159. UBYTE *GetString(ULONG id)
  160.     {
  161.     static const struct CatCompArrayType *cca;
  162.     UBYTE *s = NULLSTRING;
  163.     int k,l;
  164.  
  165.     l = sizeof(CatCompArray) / sizeof(CatCompArray[0]);
  166.     cca = CatCompArray;
  167.  
  168.     for(k=0; k<l; k++, cca++)
  169.     {
  170.     if(cca->cca_ID == id)
  171.         {
  172.         s = cca->cca_Str;
  173.         break;
  174.         }
  175.     }
  176. #ifdef LOCALIZED
  177.     if((LocaleBase)&&(catalog)&&(*s))
  178.     {
  179.     s = GetCatalogStr(catalog,id,s);
  180.     }
  181. #endif
  182.     return(s);
  183.     }
  184.  
  185.