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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dcigettext.c

?? 研讀AxCrypt對(duì)加解密的處理方法
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
#include "eval-plural.h"

/* Look up MSGID in the DOMAINNAME message catalog for the current
   CATEGORY locale and, if PLURAL is nonzero, search over string
   depending on the plural form determined by N.  */
char *
DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
	    int plural, unsigned long int n, int category)
{
#ifndef HAVE_ALLOCA
  struct block_list *block_list = NULL;
#endif
  struct loaded_l10nfile *domain;
  struct binding *binding;
  const char *categoryname;
  const char *categoryvalue;
  char *dirname, *xdomainname;
  char *single_locale;
  char *retval;
  size_t retlen;
  int saved_errno;
#if defined HAVE_TSEARCH || defined _LIBC
  struct known_translation_t *search;
  struct known_translation_t **foundp = NULL;
  size_t msgid_len;
#endif
  size_t domainname_len;

  /* If no real MSGID is given return NULL.  */
  if (msgid1 == NULL)
    return NULL;

#ifdef _LIBC
  if (category < 0 || category >= __LC_LAST || category == LC_ALL)
    /* Bogus.  */
    return (plural == 0
	    ? (char *) msgid1
	    /* Use the Germanic plural rule.  */
	    : n == 1 ? (char *) msgid1 : (char *) msgid2);
#endif

  __libc_rwlock_rdlock (_nl_state_lock);

  /* If DOMAINNAME is NULL, we are interested in the default domain.  If
     CATEGORY is not LC_MESSAGES this might not make much sense but the
     definition left this undefined.  */
  if (domainname == NULL)
    domainname = _nl_current_default_domain;

  /* OS/2 specific: backward compatibility with older libintl versions  */
#ifdef LC_MESSAGES_COMPAT
  if (category == LC_MESSAGES_COMPAT)
    category = LC_MESSAGES;
#endif

#if defined HAVE_TSEARCH || defined _LIBC
  msgid_len = strlen (msgid1) + 1;

  /* Try to find the translation among those which we found at
     some time.  */
  search = (struct known_translation_t *)
	   alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
  memcpy (search->msgid, msgid1, msgid_len);
  search->domainname = (char *) domainname;
  search->category = category;

  foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
  freea (search);
  if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
    {
      /* Now deal with plural.  */
      if (plural)
	retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
				(*foundp)->translation_length);
      else
	retval = (char *) (*foundp)->translation;

      __libc_rwlock_unlock (_nl_state_lock);
      return retval;
    }
#endif

  /* Preserve the `errno' value.  */
  saved_errno = errno;

  /* See whether this is a SUID binary or not.  */
  DETERMINE_SECURE;

  /* First find matching binding.  */
  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
    {
      int compare = strcmp (domainname, binding->domainname);
      if (compare == 0)
	/* We found it!  */
	break;
      if (compare < 0)
	{
	  /* It is not in the list.  */
	  binding = NULL;
	  break;
	}
    }

  if (binding == NULL)
    dirname = (char *) INTUSE(_nl_default_dirname);
  else if (IS_ABSOLUTE_PATH (binding->dirname))
    dirname = binding->dirname;
  else
    {
      /* We have a relative path.  Make it absolute now.  */
      size_t dirname_len = strlen (binding->dirname) + 1;
      size_t path_max;
      char *ret;

      path_max = (unsigned int) PATH_MAX;
      path_max += 2;		/* The getcwd docs say to do this.  */

      for (;;)
	{
	  dirname = (char *) alloca (path_max + dirname_len);
	  ADD_BLOCK (block_list, dirname);

	  __set_errno (0);
	  ret = getcwd (dirname, path_max);
	  if (ret != NULL || errno != ERANGE)
	    break;

	  path_max += path_max / 2;
	  path_max += PATH_INCR;
	}

      if (ret == NULL)
	/* We cannot get the current working directory.  Don't signal an
	   error but simply return the default string.  */
	goto return_untranslated;

      stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
    }

  /* Now determine the symbolic name of CATEGORY and its value.  */
  categoryname = category_to_name (category);
  categoryvalue = guess_category_value (category, categoryname);

  domainname_len = strlen (domainname);
  xdomainname = (char *) alloca (strlen (categoryname)
				 + domainname_len + 5);
  ADD_BLOCK (block_list, xdomainname);

  stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
		  domainname, domainname_len),
	  ".mo");

  /* Creating working area.  */
  single_locale = (char *) alloca (strlen (categoryvalue) + 1);
  ADD_BLOCK (block_list, single_locale);


  /* Search for the given string.  This is a loop because we perhaps
     got an ordered list of languages to consider for the translation.  */
  while (1)
    {
      /* Make CATEGORYVALUE point to the next element of the list.  */
      while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
	++categoryvalue;
      if (categoryvalue[0] == '\0')
	{
	  /* The whole contents of CATEGORYVALUE has been searched but
	     no valid entry has been found.  We solve this situation
	     by implicitly appending a "C" entry, i.e. no translation
	     will take place.  */
	  single_locale[0] = 'C';
	  single_locale[1] = '\0';
	}
      else
	{
	  char *cp = single_locale;
	  while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
	    *cp++ = *categoryvalue++;
	  *cp = '\0';

	  /* When this is a SUID binary we must not allow accessing files
	     outside the dedicated directories.  */
	  if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
	    /* Ingore this entry.  */
	    continue;
	}

      /* If the current locale value is C (or POSIX) we don't load a
	 domain.  Return the MSGID.  */
      if (strcmp (single_locale, "C") == 0
	  || strcmp (single_locale, "POSIX") == 0)
	break;

      /* Find structure describing the message catalog matching the
	 DOMAINNAME and CATEGORY.  */
      domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);

      if (domain != NULL)
	{
	  retval = _nl_find_msg (domain, binding, msgid1, &retlen);

	  if (retval == NULL)
	    {
	      int cnt;

	      for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
		{
		  retval = _nl_find_msg (domain->successor[cnt], binding,
					 msgid1, &retlen);

		  if (retval != NULL)
		    {
		      domain = domain->successor[cnt];
		      break;
		    }
		}
	    }

	  if (retval != NULL)
	    {
	      /* Found the translation of MSGID1 in domain DOMAIN:
		 starting at RETVAL, RETLEN bytes.  */
	      FREE_BLOCKS (block_list);
#if defined HAVE_TSEARCH || defined _LIBC
	      if (foundp == NULL)
		{
		  /* Create a new entry and add it to the search tree.  */
		  struct known_translation_t *newp;

		  newp = (struct known_translation_t *)
		    malloc (offsetof (struct known_translation_t, msgid)
			    + msgid_len + domainname_len + 1);
		  if (newp != NULL)
		    {
		      newp->domainname =
			mempcpy (newp->msgid, msgid1, msgid_len);
		      memcpy (newp->domainname, domainname, domainname_len + 1);
		      newp->category = category;
		      newp->counter = _nl_msg_cat_cntr;
		      newp->domain = domain;
		      newp->translation = retval;
		      newp->translation_length = retlen;

		      /* Insert the entry in the search tree.  */
		      foundp = (struct known_translation_t **)
			tsearch (newp, &root, transcmp);
		      if (foundp == NULL
			  || __builtin_expect (*foundp != newp, 0))
			/* The insert failed.  */
			free (newp);
		    }
		}
	      else
		{
		  /* We can update the existing entry.  */
		  (*foundp)->counter = _nl_msg_cat_cntr;
		  (*foundp)->domain = domain;
		  (*foundp)->translation = retval;
		  (*foundp)->translation_length = retlen;
		}
#endif
	      __set_errno (saved_errno);

	      /* Now deal with plural.  */
	      if (plural)
		retval = plural_lookup (domain, n, retval, retlen);

	      __libc_rwlock_unlock (_nl_state_lock);
	      return retval;
	    }
	}
    }

 return_untranslated:
  /* Return the untranslated MSGID.  */
  FREE_BLOCKS (block_list);
  __libc_rwlock_unlock (_nl_state_lock);
#ifndef _LIBC
  if (!ENABLE_SECURE)
    {
      extern void _nl_log_untranslated (const char *logfilename,
					const char *domainname,
					const char *msgid1, const char *msgid2,
					int plural);
      const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");

      if (logfilename != NULL && logfilename[0] != '\0')
	_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
    }
#endif
  __set_errno (saved_errno);
  return (plural == 0
	  ? (char *) msgid1
	  /* Use the Germanic plural rule.  */
	  : n == 1 ? (char *) msgid1 : (char *) msgid2);
}


char *
internal_function
_nl_find_msg (struct loaded_l10nfile *domain_file,
	      struct binding *domainbinding, const char *msgid,
	      size_t *lengthp)
{
  struct loaded_domain *domain;
  nls_uint32 nstrings;
  size_t act;
  char *result;
  size_t resultlen;

  if (domain_file->decided == 0)
    _nl_load_domain (domain_file, domainbinding);

  if (domain_file->data == NULL)
    return NULL;

  domain = (struct loaded_domain *) domain_file->data;

  nstrings = domain->nstrings;

  /* Locate the MSGID and its translation.  */
  if (domain->hash_tab != NULL)
    {
      /* Use the hashing table.  */
      nls_uint32 len = strlen (msgid);
      nls_uint32 hash_val = hash_string (msgid);
      nls_uint32 idx = hash_val % domain->hash_size;
      nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));

      while (1)
	{
	  nls_uint32 nstr =
	    W (domain->must_swap_hash_tab, domain->hash_tab[idx]);

	  if (nstr == 0)
	    /* Hash table entry is empty.  */
	    return NULL;

	  nstr--;

	  /* Compare msgid with the original string at index nstr.
	     We compare the lengths with >=, not ==, because plural entries
	     are represented by strings with an embedded NUL.  */
	  if (nstr < nstrings
	      ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
		&& (strcmp (msgid,
			    domain->data + W (domain->must_swap,
					      domain->orig_tab[nstr].offset))
		    == 0)
	      : domain->orig_sysdep_tab[nstr - nstrings].length > len
		&& (strcmp (msgid,
			    domain->orig_sysdep_tab[nstr - nstrings].pointer)
		    == 0))
	    {
	      act = nstr;
	      goto found;
	    }

	  if (idx >= domain->hash_size - incr)
	    idx -= domain->hash_size - incr;
	  else
	    idx += incr;
	}
      /* NOTREACHED */
    }
  else
    {
      /* Try the default method:  binary search in the sorted array of
	 messages.  */
      size_t top, bottom;

      bottom = 0;
      top = nstrings;
      while (bottom < top)
	{
	  int cmp_val;

	  act = (bottom + top) / 2;
	  cmp_val = strcmp (msgid, (domain->data
				    + W (domain->must_swap,
					 domain->orig_tab[act].offset)));
	  if (cmp_val < 0)
	    top = act;
	  else if (cmp_val > 0)
	    bottom = act + 1;
	  else
	    goto found;
	}
      /* No translation was found.  */
      return NULL;
    }

 found:
  /* The translation was found at index ACT.  If we have to convert the
     string to use a different character set, this is the time.  */
  if (act < nstrings)
    {
      result = (char *)
	(domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
      resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
    }
  else
    {
      result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
      resultlen = domain->trans_sysdep_tab[act - nstrings].length;
    }

#if defined _LIBC || HAVE_ICONV
  if (domain->codeset_cntr
      != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
    {
      /* The domain's codeset has changed through bind_textdomain_codeset()
	 since the message catalog was initialized or last accessed.  We
	 have to reinitialize the converter.  */
      _nl_free_domain_conv (domain);
      _nl_init_domain_conv (domain_file, domain, domainbinding);
    }

  if (
# ifdef _LIBC

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美岛国在线观看| 亚洲精选视频在线| 夜夜爽夜夜爽精品视频| 欧美aaaaaa午夜精品| 91美女在线观看| 亚洲精品在线一区二区| 亚洲1区2区3区视频| 成人污视频在线观看| 欧美一二三在线| 亚洲一区精品在线| 97超碰欧美中文字幕| 91精品国产综合久久福利软件| 国产精品国产三级国产aⅴ原创| 奇米精品一区二区三区四区 | 国产精品视频观看| 毛片基地黄久久久久久天堂| 欧美亚洲一区二区在线观看| √…a在线天堂一区| 国产成a人亚洲精| 久久久久久久av麻豆果冻| 日韩成人午夜电影| 67194成人在线观看| 亚洲成人免费看| 欧美午夜电影网| 一区二区三区产品免费精品久久75| 成人性视频网站| 国产精品午夜春色av| 国产精品综合网| 精品99999| 国产成人av一区二区三区在线观看| 精品av综合导航| 国产精品18久久久久久久网站| 日韩亚洲欧美一区二区三区| 天天综合色天天| 欧美一区二区三区免费在线看| 丝袜美腿亚洲综合| 欧美一级理论片| 国产一区欧美日韩| 国产欧美日韩一区二区三区在线观看| 国产一区在线视频| 欧美—级在线免费片| thepron国产精品| 一区二区三区在线高清| 在线观看日韩毛片| 日韩制服丝袜先锋影音| 欧美不卡123| 丁香六月综合激情| 亚洲免费观看视频| 欧美日韩国产精品自在自线| 另类小说视频一区二区| 国产日韩欧美在线一区| 99精品在线免费| 午夜精品久久久久久久久久久| 欧美一级欧美三级| 国产一区二区三区| 亚洲天堂成人在线观看| 欧美日韩久久不卡| 国产又粗又猛又爽又黄91精品| 亚洲欧美国产三级| 欧美色手机在线观看| 蜜桃视频第一区免费观看| 中文字幕巨乱亚洲| 欧美精品日韩一本| 国产精品一二三四五| 一区二区免费在线播放| 精品美女在线播放| 色av成人天堂桃色av| 另类调教123区| 亚洲视频在线一区观看| 欧美一区日韩一区| 91在线精品秘密一区二区| 日韩国产精品久久久久久亚洲| 国产人成一区二区三区影院| 欧美色综合天天久久综合精品| 国产真实乱对白精彩久久| 亚洲精品写真福利| 久久综合精品国产一区二区三区| 91老师国产黑色丝袜在线| 麻豆精品国产传媒mv男同| 亚洲欧美怡红院| 久久嫩草精品久久久精品| 欧美性色aⅴ视频一区日韩精品| 国产一区在线观看麻豆| 亚洲大片免费看| 亚洲人午夜精品天堂一二香蕉| 精品99一区二区三区| 91麻豆精品国产综合久久久久久| 99re这里只有精品视频首页| 国产老妇另类xxxxx| 免费在线看成人av| 午夜精品一区在线观看| 专区另类欧美日韩| 国产精品美日韩| 久久久亚洲精品一区二区三区 | 亚洲成人av在线电影| 综合激情网...| 国产精品五月天| 日本一区二区三区久久久久久久久不| 欧美福利一区二区| 欧美性色黄大片手机版| 日本黄色一区二区| 99久久婷婷国产综合精品| 国产成人精品免费网站| 国产精品综合视频| 国内不卡的二区三区中文字幕| 免费一级欧美片在线观看| 视频一区二区中文字幕| 亚洲一区二区三区中文字幕在线| 成人免费一区二区三区视频| 中文字幕第一区第二区| 亚洲国产岛国毛片在线| 国产免费成人在线视频| 欧美激情综合在线| 国产精品国产三级国产普通话99 | 成人免费av网站| 国产高清不卡二三区| 国产福利91精品一区| 国产成人综合网站| 成人免费高清视频| 成人激情免费网站| 成人h精品动漫一区二区三区| 欧美亚洲免费在线一区| 91国产丝袜在线播放| 日本精品一区二区三区高清| 91久久人澡人人添人人爽欧美 | 国产aⅴ综合色| proumb性欧美在线观看| 色婷婷av一区二区三区之一色屋| 色88888久久久久久影院野外| 欧美色图一区二区三区| 欧美一区二视频| 国产午夜亚洲精品午夜鲁丝片| 欧美国产日韩在线观看| 亚洲精品五月天| 日本中文字幕一区| 国产一区二区三区在线观看免费 | 91福利社在线观看| 欧美三级中文字幕在线观看| 欧美一区二区人人喊爽| 久久这里只有精品首页| 国产精品沙发午睡系列990531| 亚洲蜜臀av乱码久久精品 | 国产精品456| 99re成人精品视频| 欧美男人的天堂一二区| www久久精品| 最新成人av在线| 日韩国产成人精品| 成人午夜在线免费| 91色|porny| 日韩一区二区免费视频| 国产精品久久综合| 蜜桃视频一区二区| 色综合久久中文综合久久牛| 日韩欧美国产一区二区在线播放| 欧美精彩视频一区二区三区| 午夜视频一区二区三区| 国产a级毛片一区| 91精品国模一区二区三区| 中文一区二区完整视频在线观看| 日韩国产欧美在线播放| 不卡的av在线| 精品国内二区三区| 日一区二区三区| av亚洲精华国产精华精华| 日韩免费观看高清完整版在线观看| 国产精品嫩草影院com| 青青草精品视频| 色欧美88888久久久久久影院| 久久夜色精品一区| 五月天一区二区| 色美美综合视频| 中文字幕成人av| 国产在线精品一区二区夜色| 欧美精品少妇一区二区三区| 亚洲欧美一区二区三区孕妇| 粗大黑人巨茎大战欧美成人| 欧美精品一区二区久久久| 亚洲一区二区在线免费看| 99久久精品免费观看| 欧美精品一区二区三区一线天视频| 丝袜亚洲精品中文字幕一区| 欧美性做爰猛烈叫床潮| 亚洲视频免费在线| jiyouzz国产精品久久| 久久久国产精华| 国内精品国产成人| 久久综合九色综合欧美就去吻| 麻豆精品在线播放| 日韩一区二区不卡| 日韩电影在线免费观看| 777a∨成人精品桃花网| 午夜视频在线观看一区| 欧美日本在线播放| 日韩成人一级大片| 欧美本精品男人aⅴ天堂| 麻豆91小视频| 26uuu亚洲| 国产精品小仙女| 国产精品全国免费观看高清|