예제 #1
0
int __GetLCIDFromName(const char* lname, LCID* lcid, char* cp) {
  char lang[MAX_LANG_LEN+1], ctry[MAX_CTRY_LEN+1], page[MAX_CP_LEN+1];
  int result = 0;
  if(lname==NULL || lname[0]==0) {
    *lcid=LOCALE_USER_DEFAULT;
    return 0;
  }

  memset(lang, 0, MAX_LANG_LEN+1);
  memset(ctry, 0, MAX_CTRY_LEN+1);
  memset(page, 0, MAX_CP_LEN+1);
  if(__ParseLocaleString(lname, lang, ctry, page)==-1) return -1;

  if(lang[0] == 0 && ctry[0] == 0)
    *lcid = LOCALE_USER_DEFAULT; // Only code page given.
  else {
    if(ctry[0] == 0)
	    result = __GetLCID(__ConvertName(lang, __rg_language, sizeof(__rg_language)/sizeof(LOCALECONV)), NULL, lcid);
    else
	    result = __GetLCID(__ConvertName(lang, __rg_language, sizeof(__rg_language)/sizeof(LOCALECONV)),
			                   __ConvertName(ctry, __rg_country, sizeof(__rg_country)/sizeof(LOCALECONV)),
			                   lcid);
  }

  if(result==0) {
    // Handling code page
    if(lstrcmpiA(page, "ACP")==0 || page[0]==0)
	    my_ltoa(__intGetACP(*lcid), cp);
    else if(lstrcmpiA(page, "OCP")==0)
	    my_ltoa(__intGetOCP(*lcid), cp);
    else strncpy(cp, page, 5);
  }
  return result;
}
char* fp_itoa(char * buf, s32fp a)
{
   int sign = a < 0?-1:1;
   int32_t nat = (sign * a) >> FRAC_DIGITS;
   uint32_t frac = ((UTOA_FRACDEC * ((sign * a) & FRAC_MASK))) >> FRAC_DIGITS;
   char *p = buf;
   if (sign < 0)
   {
      *p = '-';
      p++;
   }
   p += my_ltoa(p, nat, 10);
   *p = '.';
   p++;
   for (uint32_t dec = UTOA_FRACDEC / 10; dec > 1; dec /= 10)
   {
      if ((frac / dec) == 0)
      {
         *p = '0';
         p++;
      }
   }
   my_ltoa(p, frac, 10);
   return buf;
}
예제 #3
0
 const char* _Locale_common_default(char* buf) {
   char cp[MAX_CP_LEN+1];
   int CodePage=__intGetACP(LOCALE_USER_DEFAULT);
   if(!CodePage) CodePage=__intGetOCP(LOCALE_USER_DEFAULT);
   my_ltoa(CodePage, cp);
   return __GetLocaleName(LOCALE_USER_DEFAULT, cp, buf);
 }
예제 #4
0
 char* _Locale_ctype_name(const void* loc, char* buf)
 {
   char cp_buf[MAX_CP_LEN+1];
   _Locale_ctype_t* ltype=(_Locale_ctype_t*)loc;
   my_ltoa(ltype->cp, cp_buf);
   return __GetLocaleName(ltype->lcid, cp_buf, buf);
 }
예제 #5
0
int check_branch(
    STACK *stack,
    unsigned offset,
    int min,
    int max)
{
    int             s_offset;

    /* Sign-extend */
    if (offset & 0100000)
        s_offset = offset | ~0177777;
    else
        s_offset = offset & 077777;
    if (s_offset > max || s_offset < min) {
        char            temp[16];

        /* printf can't do signed octal. */
        my_ltoa(s_offset, temp, 8);
        report(stack->top, "Branch target out of range (distance=%s)\n", temp);
        return 0;
    }
    return 1;
}