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

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

?? l10nflist.c

?? 研讀AxCrypt對加解密的處理方法
?? C
字號:
/* Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.

   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU Library General Public License as published
   by the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
   USA.  */

/* Tell glibc's <string.h> to provide a prototype for stpcpy().
   This must come before <config.h> because <config.h> may include
   <features.h>, and once <features.h> has been included, it's too late.  */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE	1
#endif

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif

#include <string.h>

#if defined _LIBC || defined HAVE_ARGZ_H
# include <argz.h>
#endif
#include <ctype.h>
#include <sys/types.h>
#include <stdlib.h>

#include "loadinfo.h"

/* On some strange systems still no definition of NULL is found.  Sigh!  */
#ifndef NULL
# if defined __STDC__ && __STDC__
#  define NULL ((void *) 0)
# else
#  define NULL 0
# endif
#endif

/* @@ end of prolog @@ */

#ifdef _LIBC
/* Rename the non ANSI C functions.  This is required by the standard
   because some ANSI C functions will require linking with this object
   file and the name space must not be polluted.  */
# ifndef stpcpy
#  define stpcpy(dest, src) __stpcpy(dest, src)
# endif
#else
# ifndef HAVE_STPCPY
static char *stpcpy (char *dest, const char *src);
# endif
#endif

/* Pathname support.
   ISSLASH(C)           tests whether C is a directory separator character.
   IS_ABSOLUTE_PATH(P)  tests whether P is an absolute path.  If it is not,
                        it may be concatenated to a directory pathname.
 */
#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
  /* Win32, Cygwin, OS/2, DOS */
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
# define HAS_DEVICE(P) \
    ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
     && (P)[1] == ':')
# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
#else
  /* Unix */
# define ISSLASH(C) ((C) == '/')
# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
#endif

/* Define function which are usually not available.  */

#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
/* Returns the number of strings in ARGZ.  */
static size_t
argz_count__ (const char *argz, size_t len)
{
  size_t count = 0;
  while (len > 0)
    {
      size_t part_len = strlen (argz);
      argz += part_len + 1;
      len -= part_len + 1;
      count++;
    }
  return count;
}
# undef __argz_count
# define __argz_count(argz, len) argz_count__ (argz, len)
#else
# ifdef _LIBC
#  define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
# endif
#endif	/* !_LIBC && !HAVE___ARGZ_COUNT */

#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
   except the last into the character SEP.  */
static void
argz_stringify__ (char *argz, size_t len, int sep)
{
  while (len > 0)
    {
      size_t part_len = strlen (argz);
      argz += part_len;
      len -= part_len + 1;
      if (len > 0)
	*argz++ = sep;
    }
}
# undef __argz_stringify
# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
#else
# ifdef _LIBC
#  define __argz_stringify(argz, len, sep) \
  INTUSE(__argz_stringify) (argz, len, sep)
# endif
#endif	/* !_LIBC && !HAVE___ARGZ_STRINGIFY */

#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
static char *
argz_next__ (char *argz, size_t argz_len, const char *entry)
{
  if (entry)
    {
      if (entry < argz + argz_len)
        entry = strchr (entry, '\0') + 1;

      return entry >= argz + argz_len ? NULL : (char *) entry;
    }
  else
    if (argz_len > 0)
      return argz;
    else
      return 0;
}
# undef __argz_next
# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
#endif	/* !_LIBC && !HAVE___ARGZ_NEXT */


/* Return number of bits set in X.  */
static inline int
pop (int x)
{
  /* We assume that no more than 16 bits are used.  */
  x = ((x & ~0x5555) >> 1) + (x & 0x5555);
  x = ((x & ~0x3333) >> 2) + (x & 0x3333);
  x = ((x >> 4) + x) & 0x0f0f;
  x = ((x >> 8) + x) & 0xff;

  return x;
}


struct loaded_l10nfile *
_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
		    const char *dirlist, size_t dirlist_len,
		    int mask, const char *language, const char *territory,
		    const char *codeset, const char *normalized_codeset,
		    const char *modifier, const char *special,
		    const char *sponsor, const char *revision,
		    const char *filename, int do_allocate)
{
  char *abs_filename;
  struct loaded_l10nfile **lastp;
  struct loaded_l10nfile *retval;
  char *cp;
  size_t dirlist_count;
  size_t entries;
  int cnt;

  /* If LANGUAGE contains an absolute directory specification, we ignore
     DIRLIST.  */
  if (IS_ABSOLUTE_PATH (language))
    dirlist_len = 0;

  /* Allocate room for the full file name.  */
  abs_filename = (char *) malloc (dirlist_len
				  + strlen (language)
				  + ((mask & TERRITORY) != 0
				     ? strlen (territory) + 1 : 0)
				  + ((mask & XPG_CODESET) != 0
				     ? strlen (codeset) + 1 : 0)
				  + ((mask & XPG_NORM_CODESET) != 0
				     ? strlen (normalized_codeset) + 1 : 0)
				  + (((mask & XPG_MODIFIER) != 0
				      || (mask & CEN_AUDIENCE) != 0)
				     ? strlen (modifier) + 1 : 0)
				  + ((mask & CEN_SPECIAL) != 0
				     ? strlen (special) + 1 : 0)
				  + (((mask & CEN_SPONSOR) != 0
				      || (mask & CEN_REVISION) != 0)
				     ? (1 + ((mask & CEN_SPONSOR) != 0
					     ? strlen (sponsor) : 0)
					+ ((mask & CEN_REVISION) != 0
					   ? strlen (revision) + 1 : 0)) : 0)
				  + 1 + strlen (filename) + 1);

  if (abs_filename == NULL)
    return NULL;

  /* Construct file name.  */
  cp = abs_filename;
  if (dirlist_len > 0)
    {
      memcpy (cp, dirlist, dirlist_len);
      __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
      cp += dirlist_len;
      cp[-1] = '/';
    }

  cp = stpcpy (cp, language);

  if ((mask & TERRITORY) != 0)
    {
      *cp++ = '_';
      cp = stpcpy (cp, territory);
    }
  if ((mask & XPG_CODESET) != 0)
    {
      *cp++ = '.';
      cp = stpcpy (cp, codeset);
    }
  if ((mask & XPG_NORM_CODESET) != 0)
    {
      *cp++ = '.';
      cp = stpcpy (cp, normalized_codeset);
    }
  if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
    {
      /* This component can be part of both syntaces but has different
	 leading characters.  For CEN we use `+', else `@'.  */
      *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
      cp = stpcpy (cp, modifier);
    }
  if ((mask & CEN_SPECIAL) != 0)
    {
      *cp++ = '+';
      cp = stpcpy (cp, special);
    }
  if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
    {
      *cp++ = ',';
      if ((mask & CEN_SPONSOR) != 0)
	cp = stpcpy (cp, sponsor);
      if ((mask & CEN_REVISION) != 0)
	{
	  *cp++ = '_';
	  cp = stpcpy (cp, revision);
	}
    }

  *cp++ = '/';
  stpcpy (cp, filename);

  /* Look in list of already loaded domains whether it is already
     available.  */
  lastp = l10nfile_list;
  for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
    if (retval->filename != NULL)
      {
	int compare = strcmp (retval->filename, abs_filename);
	if (compare == 0)
	  /* We found it!  */
	  break;
	if (compare < 0)
	  {
	    /* It's not in the list.  */
	    retval = NULL;
	    break;
	  }

	lastp = &retval->next;
      }

  if (retval != NULL || do_allocate == 0)
    {
      free (abs_filename);
      return retval;
    }

  dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);

  /* Allocate a new loaded_l10nfile.  */
  retval =
    (struct loaded_l10nfile *)
    malloc (sizeof (*retval)
	    + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
	       * sizeof (struct loaded_l10nfile *)));
  if (retval == NULL)
    return NULL;

  retval->filename = abs_filename;

  /* We set retval->data to NULL here; it is filled in later.
     Setting retval->decided to 1 here means that retval does not
     correspond to a real file (dirlist_count > 1) or is not worth
     looking up (if an unnormalized codeset was specified).  */
  retval->decided = (dirlist_count > 1
		     || ((mask & XPG_CODESET) != 0
			 && (mask & XPG_NORM_CODESET) != 0));
  retval->data = NULL;

  retval->next = *lastp;
  *lastp = retval;

  entries = 0;
  /* Recurse to fill the inheritance list of RETVAL.
     If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
     entry does not correspond to a real file; retval->filename contains
     colons.  In this case we loop across all elements of DIRLIST and
     across all bit patterns dominated by MASK.
     If the DIRLIST is a single directory or entirely redundant (i.e.
     DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
     MASK, excluding MASK itself.
     In either case, we loop down from MASK to 0.  This has the effect
     that the extra bits in the locale name are dropped in this order:
     first the modifier, then the territory, then the codeset, then the
     normalized_codeset.  */
  for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
    if ((cnt & ~mask) == 0
	&& ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
	&& ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
      {
	if (dirlist_count > 1)
	  {
	    /* Iterate over all elements of the DIRLIST.  */
	    char *dir = NULL;

	    while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
		   != NULL)
	      retval->successor[entries++]
		= _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
				      cnt, language, territory, codeset,
				      normalized_codeset, modifier, special,
				      sponsor, revision, filename, 1);
	  }
	else
	  retval->successor[entries++]
	    = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
				  cnt, language, territory, codeset,
				  normalized_codeset, modifier, special,
				  sponsor, revision, filename, 1);
      }
  retval->successor[entries] = NULL;

  return retval;
}

/* Normalize codeset name.  There is no standard for the codeset
   names.  Normalization allows the user to use any of the common
   names.  The return value is dynamically allocated and has to be
   freed by the caller.  */
const char *
_nl_normalize_codeset (const char *codeset, size_t name_len)
{
  int len = 0;
  int only_digit = 1;
  char *retval;
  char *wp;
  size_t cnt;

  for (cnt = 0; cnt < name_len; ++cnt)
    if (isalnum ((unsigned char) codeset[cnt]))
      {
	++len;

	if (isalpha ((unsigned char) codeset[cnt]))
	  only_digit = 0;
      }

  retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);

  if (retval != NULL)
    {
      if (only_digit)
	wp = stpcpy (retval, "iso");
      else
	wp = retval;

      for (cnt = 0; cnt < name_len; ++cnt)
	if (isalpha ((unsigned char) codeset[cnt]))
	  *wp++ = tolower ((unsigned char) codeset[cnt]);
	else if (isdigit ((unsigned char) codeset[cnt]))
	  *wp++ = codeset[cnt];

      *wp = '\0';
    }

  return (const char *) retval;
}


/* @@ 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线一区二区综合免费视频| 亚洲第一成人在线| 欧美一区二区三区在线电影| 欧美影院一区二区三区| 日本韩国精品在线| 欧美性猛交一区二区三区精品| av电影在线观看一区| 色婷婷久久久综合中文字幕| 欧美性猛交xxxxxx富婆| 欧美电影一区二区三区| 精品久久久久久综合日本欧美| 日韩视频一区二区三区在线播放| 日韩一级完整毛片| 久久久综合激的五月天| 国产精品毛片无遮挡高清| 中文字幕视频一区二区三区久| 亚洲卡通欧美制服中文| 天天操天天色综合| 久久99精品国产麻豆婷婷洗澡| 极品美女销魂一区二区三区| 成人免费看视频| 色国产精品一区在线观看| 欧美日韩一区在线| 久久久久久免费网| 一区二区三区精品| 久久激五月天综合精品| 国产91清纯白嫩初高中在线观看 | 亚洲欧美日韩综合aⅴ视频| 自拍偷拍亚洲激情| 琪琪一区二区三区| 成人白浆超碰人人人人| 欧美肥胖老妇做爰| 日本一区二区三区在线观看| 一级精品视频在线观看宜春院| 偷拍日韩校园综合在线| 国产精品影视网| 日本久久电影网| 日韩精品一区二区三区中文不卡| 国产精品久久看| 日韩成人一级片| 99久久99久久精品国产片果冻| 91精品国产综合久久久久久久 | 菠萝蜜视频在线观看一区| 色婷婷av一区二区三区大白胸| 欧美妇女性影城| 亚洲免费观看高清完整版在线观看| 偷窥少妇高潮呻吟av久久免费| 懂色av一区二区三区免费观看 | 久久奇米777| 亚洲午夜免费视频| 成人免费毛片aaaaa**| 欧美成人免费网站| 亚欧色一区w666天堂| 成人午夜电影久久影院| 日韩亚洲欧美一区二区三区| 樱花草国产18久久久久| 国产精品自产自拍| 欧美va亚洲va在线观看蝴蝶网| 一区二区在线免费观看| 国产69精品久久久久毛片 | 久久久久国产一区二区三区四区 | 国产在线视频一区二区| 欧美揉bbbbb揉bbbbb| 亚洲六月丁香色婷婷综合久久| 韩国欧美国产一区| 日韩精品一区二区三区中文精品| 午夜久久久久久久久久一区二区| 91蜜桃传媒精品久久久一区二区| 国产日韩欧美综合在线| 国产高清精品在线| 国产偷v国产偷v亚洲高清 | 国产色爱av资源综合区| 麻豆成人av在线| 91精品国产全国免费观看| 亚洲gay无套男同| 欧美伦理电影网| 日韩电影一区二区三区| 91精品国产综合久久精品图片| 亚洲午夜久久久久| 欧美性xxxxxx少妇| 日韩电影在线观看电影| 日韩欧美中文字幕一区| 久久国产精品露脸对白| 久久奇米777| 粗大黑人巨茎大战欧美成人| 国产欧美日韩视频一区二区| 国产福利91精品| 亚洲视频一区二区在线观看| 一本高清dvd不卡在线观看| 一卡二卡欧美日韩| 欧美福利视频导航| 国产在线精品一区二区不卡了| 久久久综合网站| 色久优优欧美色久优优| 性感美女久久精品| 亚洲精品一线二线三线| 成人小视频免费在线观看| 亚洲欧洲国产日韩| 欧美日韩国产高清一区二区| 久久国产麻豆精品| 国产精品久久午夜| 欧美精品一级二级三级| 久久se这里有精品| 日韩理论片中文av| 欧美一区二区三区免费视频| 国产一区二区网址| 一区二区三区日韩欧美精品| 日韩三级视频在线观看| www.爱久久.com| 麻豆成人综合网| 亚洲一区二区三区四区的| 日韩一区二区影院| 91美女片黄在线观看91美女| 蜜桃av噜噜一区| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩不卡在线| 北岛玲一区二区三区四区| 奇米色777欧美一区二区| 国产精品污污网站在线观看| 337p亚洲精品色噜噜狠狠| 成人爱爱电影网址| 久久不见久久见免费视频7| 亚洲精品视频自拍| 久久精品网站免费观看| 欧美日韩精品电影| 99精品国产99久久久久久白柏| 午夜欧美2019年伦理| 综合自拍亚洲综合图不卡区| 日韩一区二区三区三四区视频在线观看 | 中文久久乱码一区二区| 欧美久久久久久久久中文字幕| av一二三不卡影片| 国产酒店精品激情| 久久国产三级精品| 日韩影院精彩在线| 亚洲国产视频网站| 一区二区高清免费观看影视大全| 国产蜜臀97一区二区三区| 欧美一区二区三区在线观看视频| 一本到一区二区三区| 成人的网站免费观看| 成人性视频免费网站| 国产乱码精品一区二区三区忘忧草 | 国产精品中文欧美| 精品制服美女丁香| 久久草av在线| 精品综合免费视频观看| 另类调教123区| 免费观看久久久4p| 日本一不卡视频| 日韩1区2区日韩1区2区| 婷婷综合久久一区二区三区| 亚洲成人免费看| 图片区日韩欧美亚洲| 日韩av一区二区在线影视| 日韩影院免费视频| 日韩av中文字幕一区二区| 日本不卡一二三| 久久国产欧美日韩精品| 久久99国产精品成人| 国产精品一区二区视频| 国产69精品一区二区亚洲孕妇| 国产成人鲁色资源国产91色综| 丁香另类激情小说| 97精品国产露脸对白| 色婷婷综合五月| 欧美精品丝袜久久久中文字幕| 91精品欧美综合在线观看最新 | 国产精品毛片久久久久久久| 国产精品美女久久久久aⅴ国产馆| 日本一区二区在线不卡| 亚洲欧美一区二区视频| 亚洲线精品一区二区三区八戒| 日韩在线观看一区二区| 国产在线不卡一区| 91视频在线观看免费| 51久久夜色精品国产麻豆| 久久久久青草大香线综合精品| 中文在线一区二区| 亚洲码国产岛国毛片在线| 亚洲电影在线免费观看| 精品一区二区三区免费| 成人精品gif动图一区| 欧美亚洲免费在线一区| 精品国产污网站| 亚洲男女一区二区三区| 日产国产高清一区二区三区| 精品一区二区在线看| 91影院在线免费观看| 欧美精品一卡二卡| 日本一区二区三区视频视频| 亚洲国产视频一区二区| 国产99久久久国产精品潘金| 欧美日韩美女一区二区| 久久九九久精品国产免费直播| 亚洲另类春色国产| 国产成人aaa| 欧美一区二区三区视频在线| 国产精品国产三级国产a| 看电影不卡的网站|