亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dcigettext.c

?? 研讀AxCrypt對加解密的處理方法
?? C
?? 第 1 頁 / 共 3 頁
字號:
      domain->conv != (__gconv_t) -1
# else
#  if HAVE_ICONV
      domain->conv != (iconv_t) -1
#  endif
# endif
      )
    {
      /* We are supposed to do a conversion.  First allocate an
	 appropriate table with the same structure as the table
	 of translations in the file, where we can put the pointers
	 to the converted strings in.
	 There is a slight complication with plural entries.  They
	 are represented by consecutive NUL terminated strings.  We
	 handle this case by converting RESULTLEN bytes, including
	 NULs.  */

      if (domain->conv_tab == NULL
	  && ((domain->conv_tab =
		 (char **) calloc (nstrings + domain->n_sysdep_strings,
				   sizeof (char *)))
	      == NULL))
	/* Mark that we didn't succeed allocating a table.  */
	domain->conv_tab = (char **) -1;

      if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
	/* Nothing we can do, no more memory.  */
	goto converted;

      if (domain->conv_tab[act] == NULL)
	{
	  /* We haven't used this string so far, so it is not
	     translated yet.  Do this now.  */
	  /* We use a bit more efficient memory handling.
	     We allocate always larger blocks which get used over
	     time.  This is faster than many small allocations.   */
	  __libc_lock_define_initialized (static, lock)
# define INITIAL_BLOCK_SIZE	4080
	  static unsigned char *freemem;
	  static size_t freemem_size;

	  const unsigned char *inbuf;
	  unsigned char *outbuf;
	  int malloc_count;
# ifndef _LIBC
	  transmem_block_t *transmem_list = NULL;
# endif

	  __libc_lock_lock (lock);

	  inbuf = (const unsigned char *) result;
	  outbuf = freemem + sizeof (size_t);

	  malloc_count = 0;
	  while (1)
	    {
	      transmem_block_t *newmem;
# ifdef _LIBC
	      size_t non_reversible;
	      int res;

	      if (freemem_size < sizeof (size_t))
		goto resize_freemem;

	      res = __gconv (domain->conv,
			     &inbuf, inbuf + resultlen,
			     &outbuf,
			     outbuf + freemem_size - sizeof (size_t),
			     &non_reversible);

	      if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
		break;

	      if (res != __GCONV_FULL_OUTPUT)
		{
		  __libc_lock_unlock (lock);
		  goto converted;
		}

	      inbuf = result;
# else
#  if HAVE_ICONV
	      const char *inptr = (const char *) inbuf;
	      size_t inleft = resultlen;
	      char *outptr = (char *) outbuf;
	      size_t outleft;

	      if (freemem_size < sizeof (size_t))
		goto resize_freemem;

	      outleft = freemem_size - sizeof (size_t);
	      if (iconv (domain->conv,
			 (ICONV_CONST char **) &inptr, &inleft,
			 &outptr, &outleft)
		  != (size_t) (-1))
		{
		  outbuf = (unsigned char *) outptr;
		  break;
		}
	      if (errno != E2BIG)
		{
		  __libc_lock_unlock (lock);
		  goto converted;
		}
#  endif
# endif

	    resize_freemem:
	      /* We must allocate a new buffer or resize the old one.  */
	      if (malloc_count > 0)
		{
		  ++malloc_count;
		  freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
		  newmem = (transmem_block_t *) realloc (transmem_list,
							 freemem_size);
# ifdef _LIBC
		  if (newmem != NULL)
		    transmem_list = transmem_list->next;
		  else
		    {
		      struct transmem_list *old = transmem_list;

		      transmem_list = transmem_list->next;
		      free (old);
		    }
# endif
		}
	      else
		{
		  malloc_count = 1;
		  freemem_size = INITIAL_BLOCK_SIZE;
		  newmem = (transmem_block_t *) malloc (freemem_size);
		}
	      if (__builtin_expect (newmem == NULL, 0))
		{
		  freemem = NULL;
		  freemem_size = 0;
		  __libc_lock_unlock (lock);
		  goto converted;
		}

# ifdef _LIBC
	      /* Add the block to the list of blocks we have to free
                 at some point.  */
	      newmem->next = transmem_list;
	      transmem_list = newmem;

	      freemem = newmem->data;
	      freemem_size -= offsetof (struct transmem_list, data);
# else
	      transmem_list = newmem;
	      freemem = newmem;
# endif

	      outbuf = freemem + sizeof (size_t);
	    }

	  /* We have now in our buffer a converted string.  Put this
	     into the table of conversions.  */
	  *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
	  domain->conv_tab[act] = (char *) freemem;
	  /* Shrink freemem, but keep it aligned.  */
	  freemem_size -= outbuf - freemem;
	  freemem = outbuf;
	  freemem += freemem_size & (alignof (size_t) - 1);
	  freemem_size = freemem_size & ~ (alignof (size_t) - 1);

	  __libc_lock_unlock (lock);
	}

      /* Now domain->conv_tab[act] contains the translation of all
	 the plural variants.  */
      result = domain->conv_tab[act] + sizeof (size_t);
      resultlen = *(size_t *) domain->conv_tab[act];
    }

 converted:
  /* The result string is converted.  */

#endif /* _LIBC || HAVE_ICONV */

  *lengthp = resultlen;
  return result;
}


/* Look up a plural variant.  */
static char *
internal_function
plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
	       const char *translation, size_t translation_len)
{
  struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
  unsigned long int index;
  const char *p;

  index = plural_eval (domaindata->plural, n);
  if (index >= domaindata->nplurals)
    /* This should never happen.  It means the plural expression and the
       given maximum value do not match.  */
    index = 0;

  /* Skip INDEX strings at TRANSLATION.  */
  p = translation;
  while (index-- > 0)
    {
#ifdef _LIBC
      p = __rawmemchr (p, '\0');
#else
      p = strchr (p, '\0');
#endif
      /* And skip over the NUL byte.  */
      p++;

      if (p >= translation + translation_len)
	/* This should never happen.  It means the plural expression
	   evaluated to a value larger than the number of variants
	   available for MSGID1.  */
	return (char *) translation;
    }
  return (char *) p;
}

#ifndef _LIBC
/* Return string representation of locale CATEGORY.  */
static const char *
internal_function
category_to_name (int category)
{
  const char *retval;

  switch (category)
  {
#ifdef LC_COLLATE
  case LC_COLLATE:
    retval = "LC_COLLATE";
    break;
#endif
#ifdef LC_CTYPE
  case LC_CTYPE:
    retval = "LC_CTYPE";
    break;
#endif
#ifdef LC_MONETARY
  case LC_MONETARY:
    retval = "LC_MONETARY";
    break;
#endif
#ifdef LC_NUMERIC
  case LC_NUMERIC:
    retval = "LC_NUMERIC";
    break;
#endif
#ifdef LC_TIME
  case LC_TIME:
    retval = "LC_TIME";
    break;
#endif
#ifdef LC_MESSAGES
  case LC_MESSAGES:
    retval = "LC_MESSAGES";
    break;
#endif
#ifdef LC_RESPONSE
  case LC_RESPONSE:
    retval = "LC_RESPONSE";
    break;
#endif
#ifdef LC_ALL
  case LC_ALL:
    /* This might not make sense but is perhaps better than any other
       value.  */
    retval = "LC_ALL";
    break;
#endif
  default:
    /* If you have a better idea for a default value let me know.  */
    retval = "LC_XXX";
  }

  return retval;
}
#endif

/* Guess value of current locale from value of the environment variables
   or system-dependent defaults.  */
static const char *
internal_function
guess_category_value (int category, const char *categoryname)
{
  const char *language;
  const char *locale;
#ifndef _LIBC
  const char *language_default;
  int locale_defaulted;
#endif

  /* We use the settings in the following order:
     1. The value of the environment variable 'LANGUAGE'.  This is a GNU
        extension.  Its value can be a colon-separated list of locale names.
     2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'.
        More precisely, the first among these that is set to a non-empty value.
        This is how POSIX specifies it.  The value is a single locale name.
     3. A system-dependent preference list of languages.  Its value can be a
        colon-separated list of locale names.
     4. A system-dependent default locale name.
     This way:
       - System-dependent settings can be overridden by environment variables.
       - If the system provides both a list of languages and a default locale,
         the former is used.  */

  /* Fetch the locale name, through the POSIX method of looking to `LC_ALL',
     `LC_xxx', and `LANG'.  On some systems this can be done by the
     `setlocale' function itself.  */
#ifdef _LIBC
  locale = __current_locale_name (category);
#else
  locale = _nl_locale_name_posix (category, categoryname);
  locale_defaulted = 0;
  if (locale == NULL)
    {
      locale = _nl_locale_name_default ();
      locale_defaulted = 1;
    }
#endif

  /* Ignore LANGUAGE and its system-dependent analogon if the locale is set
     to "C" because
     1. "C" locale usually uses the ASCII encoding, and most international
	messages use non-ASCII characters. These characters get displayed
	as question marks (if using glibc's iconv()) or as invalid 8-bit
	characters (because other iconv()s refuse to convert most non-ASCII
	characters to ASCII). In any case, the output is ugly.
     2. The precise output of some programs in the "C" locale is specified
	by POSIX and should not depend on environment variables like
	"LANGUAGE" or system-dependent information.  We allow such programs
        to use gettext().  */
  if (strcmp (locale, "C") == 0)
    return locale;

  /* The highest priority value is the value of the 'LANGUAGE' environment
     variable.  */
  language = getenv ("LANGUAGE");
  if (language != NULL && language[0] != '\0')
    return language;
#ifndef _LIBC
  /* The next priority value is the locale name, if not defaulted.  */
  if (locale_defaulted)
    {
      /* The next priority value is the default language preferences list. */
      language_default = _nl_language_preferences_default ();
      if (language_default != NULL)
        return language_default;
    }
  /* The least priority value is the locale name, if defaulted.  */
#endif
  return locale;
}

/* @@ begin of epilog @@ */

/* We don't want libintl.a to depend on any other library.  So we
   avoid the non-standard function stpcpy.  In GNU C Library this
   function is available, though.  Also allow the symbol HAVE_STPCPY
   to be defined.  */
#if !_LIBC && !HAVE_STPCPY
static char *
stpcpy (char *dest, const char *src)
{
  while ((*dest++ = *src++) != '\0')
    /* Do nothing. */ ;
  return dest - 1;
}
#endif

#if !_LIBC && !HAVE_MEMPCPY
static void *
mempcpy (void *dest, const void *src, size_t n)
{
  return (void *) ((char *) memcpy (dest, src, n) + n);
}
#endif


#ifdef _LIBC
/* If we want to free all resources we have to do some work at
   program's end.  */
libc_freeres_fn (free_mem)
{
  void *old;

  while (_nl_domain_bindings != NULL)
    {
      struct binding *oldp = _nl_domain_bindings;
      _nl_domain_bindings = _nl_domain_bindings->next;
      if (oldp->dirname != INTUSE(_nl_default_dirname))
	/* Yes, this is a pointer comparison.  */
	free (oldp->dirname);
      free (oldp->codeset);
      free (oldp);
    }

  if (_nl_current_default_domain != _nl_default_default_domain)
    /* Yes, again a pointer comparison.  */
    free ((char *) _nl_current_default_domain);

  /* Remove the search tree with the known translations.  */
  __tdestroy (root, free);
  root = NULL;

  while (transmem_list != NULL)
    {
      old = transmem_list;
      transmem_list = transmem_list->next;
      free (old);
    }
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美色综合网站| 精品久久人人做人人爽| 精品一区二区三区欧美| 中文字幕综合网| 欧美mv和日韩mv的网站| 色就色 综合激情| 国产成人自拍网| 首页国产欧美久久| 亚洲欧美乱综合| 国产日韩欧美麻豆| 精品国免费一区二区三区| 91伊人久久大香线蕉| 精品一区二区三区在线播放| 亚洲综合成人网| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产自产v一区二区三区c| 一区二区三区加勒比av| 国产欧美日韩精品一区| 日韩欧美一区二区不卡| 欧美日韩免费高清一区色橹橹| gogogo免费视频观看亚洲一| 国产乱人伦偷精品视频不卡| 久久成人久久鬼色| 奇米精品一区二区三区在线观看| 一区二区三区高清在线| 国产精品高潮呻吟| 欧美激情一区二区三区蜜桃视频 | 国产精品久久久久7777按摩| 久久久精品综合| 久久夜色精品国产欧美乱极品| 日韩欧美中文字幕公布| 欧美一级黄色片| 91精品啪在线观看国产60岁| 欧美精品一级二级| 欧美在线色视频| 欧美午夜电影网| 欧美在线制服丝袜| 在线观看国产日韩| 欧美日韩一卡二卡三卡| 欧美主播一区二区三区美女| 欧美伊人久久大香线蕉综合69| 91国模大尺度私拍在线视频| 91久久久免费一区二区| 91一区一区三区| 色嗨嗨av一区二区三区| 欧美天堂亚洲电影院在线播放| 在线观看国产91| 欧美男男青年gay1069videost| 欧美日本一区二区三区四区| 91.麻豆视频| 精品区一区二区| 国产欧美日韩久久| 亚洲特黄一级片| 亚洲国产aⅴ成人精品无吗| 亚洲成人黄色影院| 麻豆专区一区二区三区四区五区| 激情都市一区二区| 成人国产一区二区三区精品| 色天使久久综合网天天| 欧美日韩精品一区二区三区四区| 欧美精品日韩一区| 久久综合国产精品| 日本在线不卡视频| 国产一区二三区| 成人黄色在线看| 欧美日韩在线播放| 久久伊99综合婷婷久久伊| 中文字幕乱码日本亚洲一区二区| 亚洲精品videosex极品| 奇米精品一区二区三区在线观看 | 精品在线亚洲视频| 成人综合婷婷国产精品久久免费| jiyouzz国产精品久久| 91.com视频| 久久综合九色综合97_久久久 | 琪琪一区二区三区| 成人一级视频在线观看| 欧美日韩国产片| 久久久久久久久蜜桃| 一区二区三区高清| 激情偷乱视频一区二区三区| 一本一道波多野结衣一区二区| 91精品视频网| 亚洲视频免费观看| 精品一区二区三区久久| 97aⅴ精品视频一二三区| 日韩一区二区三区四区五区六区 | 亚洲欧美日韩中文播放| 麻豆精品一二三| 色综合久久综合| 久久久久久久综合日本| 天天亚洲美女在线视频| www.欧美亚洲| 精品国产凹凸成av人导航| 亚洲乱码中文字幕| 国产激情视频一区二区在线观看 | 成人深夜福利app| 欧美夫妻性生活| 亚洲蜜臀av乱码久久精品| 国产综合色产在线精品| 欧美浪妇xxxx高跟鞋交| 成人欧美一区二区三区在线播放| 美女视频网站黄色亚洲| 欧美在线你懂的| 日韩一区在线免费观看| 国产精品一区二区视频| 日韩女优电影在线观看| 亚洲成a人片在线观看中文| 99久久伊人网影院| 国产女人18毛片水真多成人如厕| 日韩精品电影一区亚洲| 91麻豆国产精品久久| 国产精品丝袜在线| 国产九色sp调教91| 日韩视频一区二区三区在线播放| 亚洲激情av在线| 99久久精品一区二区| 国产亚洲欧洲997久久综合 | 欧美成人乱码一区二区三区| 亚洲动漫第一页| 色八戒一区二区三区| 亚洲视频狠狠干| 91色porny在线视频| 中日韩免费视频中文字幕| 国产美女精品一区二区三区| 日韩视频中午一区| 久久国产精品99久久久久久老狼 | 综合久久国产九一剧情麻豆| 国产精品1区2区| 久久综合狠狠综合久久激情 | 久久成人精品无人区| 91麻豆精品国产91久久久久久久久 | 欧美精品一区二区三区久久久 | 手机精品视频在线观看| 欧美日韩一区二区在线观看视频| 一区二区日韩av| 在线一区二区观看| 同产精品九九九| 在线成人av网站| 丝袜亚洲精品中文字幕一区| 欧美美女喷水视频| 日本欧美一区二区在线观看| 日韩一区二区三区在线| 久久99日本精品| 国产日韩精品久久久| 99久久精品国产麻豆演员表| 亚洲视频1区2区| 欧美综合天天夜夜久久| 视频一区欧美日韩| 日韩精品一区二区三区在线| 狠狠色综合色综合网络| 久久综合狠狠综合| 国产精品亚洲专一区二区三区| 国产亚洲一区二区三区在线观看 | 久久色.com| 国产91精品入口| 亚洲视频综合在线| 欧美剧情片在线观看| 青青草一区二区三区| 久久久久久久久蜜桃| 91玉足脚交白嫩脚丫在线播放| 亚洲国产精品一区二区久久| 日韩一区二区三免费高清| 精品一区二区三区视频| 亚洲欧洲av色图| 欧美精品一卡二卡| 2017欧美狠狠色| 91丨九色丨蝌蚪富婆spa| 三级亚洲高清视频| 国产视频一区不卡| 欧美午夜片在线观看| 国产自产高清不卡| 亚洲一区二区在线视频| 日韩精品影音先锋| 91污在线观看| 捆绑紧缚一区二区三区视频| 国产精品伦一区| 欧美精品免费视频| 豆国产96在线|亚洲| 偷拍日韩校园综合在线| 国产精品久久久久aaaa| 欧美一区二区在线不卡| 99久久精品免费看| 蜜桃av一区二区三区| 国产精品大尺度| 日韩欧美自拍偷拍| 色猫猫国产区一区二在线视频| 免费观看在线色综合| 亚洲三级在线看| 久久久久88色偷偷免费| 欧美日韩精品一区二区三区| 成人网男人的天堂| 蜜桃一区二区三区四区| 一区二区在线观看视频| 久久精品欧美一区二区三区不卡 | 精品国产乱码久久久久久久久| 色综合 综合色| 国内外成人在线| 天堂精品中文字幕在线| **欧美大码日韩|