text: /***********************************************************************
  // INTERNAT.H
  //
  //      Copyright (c) 1992, 1993 - Microsoft Corp.
  //		All rights reserved.
  //		Microsoft Confidential
  //
  //	Include file for international specific options.
  //
  // Johnhe 03-10-92
  // TABS = 3
  ***********************************************************************/
  
  #ifndef INTERNAT_INC
  #define INTERNAT_INC 1           // INTERNAT.H signature
  
  
  #ifdef DBCS
  	#define	SkipDBCSLeadByte( x )   {if IsDBCLeadByte( szPtr ) szPtr++;}
  #else
  	#define	SkipDBCSLeadByte( x )
  #endif
  
  //**********************************************************************
  // BUGBUG - need to move to resource file
  //**********************************************************************
  
  #define		AM_PM_STRINGS		{ "A", "AM", "P", "PM", NULL }
  #define		PM_CHAR				'P'
  #define		AM_CHAR				'A'
  #define     AMPM_TRAIL_CHAR 	'M'
  
  #define		DATE_DELIMITER_STR "-/."	// Date seperators ('-' is replaced)
  
  //**********************************************************************
  // Command line delimiters
  //**********************************************************************
  
  #define CHAR_COMMA          ','
  #define CHAR_EOL            '\0'
  #define CHAR_PLUS           '+'
  #define CHAR_MINUS          '-'
  #define CHAR_SIMICOLON      ';'
  #define CHAR_SRCHSTR        '"'
  #define CHAR_SWITCH         '/'
  #define CHAR_QUOTE          '"'
  #define CHAR_SPC            ' '
  #define CHAR_TAB            '\t'
  
  #define DOUBLE_SLASH        0x2f2f  	// Double slash chars "//"
  #define UNC_WORD            0x5c5c      // UNC specifier ("\\\\")
  
  #define CUR_DIR_STR         "."
  #define PARENT_DIR_STR      ".."
  
  
  #define PATH_CHAR_STR       "\\"
  #define PATH_CHAR           '\\'
  #define	DRIVE_DELIMITER		':'
  
  #define WILD_NAME_CHAR      '*'     	//  All remaining wildcarc
  #define WILD_CHAR           '?'     	// Single wildcard character
  #define MULTI_WILDCARDS     1       	// Allow multiple wildcards filenames
  
  #define FILE_EXT_CHAR       '.'     	// File extension seperator
  #define CHAR_NOT_ATTRIB     '-'     	// Invert attribute switch
  
  //***********************************************************************
  //***********************************************************************
  
  #define GET_EXTINFO         1           // Fill in extended info structure
  #define GET_CASEMAP         2           // Get ptr to case map table
  #define GET_FNCASEMAP       4           // Get ptr to filename case map table
  #define GET_FNAME_CHARS     5           // Get ptr to filename character table
  #define GET_COLLATE         6           // Get ptr to collate table
  #define GET_DBYTE_SET       7           // Get ptr to double-byte char set
  
  #define	DEFAULT_CODEPAGE	0xffff
  #define DEFAULT_COUNTRY 	0xffff
  
  #define USA_CNTRY_ID        1       	// Default country ID
  #define USA_CODE_PAGE       437     	// Default country code page
  		
  #define ASCII_LEN           256         	// # of ASCII characters
  #define NON_EXT_LEN         (ASCII_LEN / 2)	// # of non-ext ASCII chars
  #define EXT_ASCII_LEN       (ASCII_LEN / 2)	// # of ext ASCII chars
  #define COLLATE_TABLE_LEN   ASCII_LEN
  
  //***********************************************************************
  //	CntryTable_s is a structure which is filled in by DOS function 65xxh
  //***********************************************************************
  
  #ifndef	CntryTable_s
  typedef struct CntryTable_s
  {
      char                IdByte;
      unsigned char far	*fpAddr;
  } CNTRY_TABLE;
  
  #endif
  
  //**********************************************************************
  //	COUNTRY_INFO is the structure of the data returned by DOS function
  //	0x38.
  //**********************************************************************
  
  #ifndef	COUNTRY_DEFINED
  struct COUNTRY_INFO
  {
      char        ccSetCountryInfo;   // SetCountryInfo
      unsigned    ccCountryInfoLen;   // length of country info
      unsigned    ccDosCountry;       // active country code id
      unsigned    ccDosCodePage;      // active code page id
  
      unsigned    ccDFormat;          // date format
      char        ccCurSymbol[ 5 ];   // 5 byte of (currency symbol+0)
      char        cc1000Sep[ 2 ];     // 2 byte of (1000 sep. + 0)
      char        ccDecSep[ 2 ];      // 2 byte of (Decimal sep. + 0)
      char        ccDateSep[ 2 ];     // 2 byte of (date sep. + 0)
      char        ccTimeSep[ 2 ];     // 2 byte of (time sep. + 0)
      char        ccCFormat;          // currency format flags
      char        ccCSigDigits;       // # of digits in currency
      char        ccTFormat;          // time format
      char far    *ccMono_Ptr;        // monocase routine entry point
      char        ccListSep[ 2 ];     // data list separator
      unsigned    ccReserved_area[ 5 ];   // reserved
  };
  #define	COUNTRY_DEFINED	1
  #endif
  
  //**********************************************************************
  //	Global country specific tables.
  //**********************************************************************
  
  extern unsigned char near	CollateTable[ ASCII_LEN ];
  extern unsigned char near	CaseMap[ ASCII_LEN ];
  extern unsigned char near	FnameCharTable[ ASCII_LEN ];
  extern unsigned char near	DBCSLeadByteTable[ ASCII_LEN ];
  extern struct COUNTRY_INFO near Cntry;     // DOS country info structure
  
  //**********************************************************************
  //	Function prototypes.
  //**********************************************************************
  
  extern void     GetCountryInfo  ( struct COUNTRY_INFO *Cntry );
  extern int      GetExtCountryInfo( unsigned InfoType, unsigned CodePage,
                                     unsigned CountryCode,
                                     struct COUNTRY_INFO *pTable );
  extern void		InitCountryInfo	( void );
  
  #ifdef DBCS
  int             IsDBCSLeadByte  ( unsigned char c );
  int             CheckDBCSTailByte( unsigned char *str, unsigned char *point );
  unsigned char   *DBCSstrupr 	( unsigned char *str );
  unsigned char	*DBCSstrchr( unsigned char *str, unsigned char c );
  #endif
  
  
  //***************************************************************************
  //
  //  End of INTERNAT.H
  //
  //***************************************************************************
  
  #endif  // INTERNAT_INC
  