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

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

?? l10nflist.c

?? 電話本和短信的演示程序
?? C
字號:
/* Handle list of needed message catalogs
   Copyright (C) 1995, 1996, 1997 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 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 General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */

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


#if defined HAVE_STRING_H || defined _LIBC
# ifndef _GNU_SOURCE
#  define _GNU_SOURCE	1
# endif
# include <string.h>
#else
# include <strings.h>
# ifndef memcpy
#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
# endif
#endif
#if !HAVE_STRCHR && !defined _LIBC
# ifndef strchr
#  define strchr index
# endif
#endif

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

#if defined STDC_HEADERS || defined _LIBC
# include <stdlib.h>
#endif

#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 PARAMS ((char *dest, const char *src));
# endif
#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__ PARAMS ((const char *argz, size_t len));

static size_t
argz_count__ (argz, len)
     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)
#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__ PARAMS ((char *argz, size_t len, int sep));

static void
argz_stringify__ (argz, len, sep)
     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)
#endif	/* !_LIBC && !HAVE___ARGZ_STRINGIFY */

#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
				  const char *entry));

static char *
argz_next__ (argz, argz_len, entry)
     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 int pop PARAMS ((int x));

static inline int
pop (x)
     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 (l10nfile_list, dirlist, dirlist_len, mask, language,
		    territory, codeset, normalized_codeset, modifier, special,
		    sponsor, revision, filename, do_allocate)
     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 *last = NULL;
  struct loaded_l10nfile *retval;
  char *cp;
  size_t entries;
  int cnt;

  /* 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) + 1 : 0)
					+ ((mask & CEN_REVISION) != 0
					   ? strlen (revision) + 1 : 0)) : 0)
				  + 1 + strlen (filename) + 1);

  if (abs_filename == NULL)
    return NULL;

  retval = NULL;
  last = NULL;

  /* Construct file name.  */
  memcpy (abs_filename, dirlist, dirlist_len);
  __argz_stringify (abs_filename, dirlist_len, ':');
  cp = abs_filename + (dirlist_len - 1);
  *cp++ = '/';
  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.  */
  last = NULL;
  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;
	  }

	last = retval;
      }

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

  retval = (struct loaded_l10nfile *)
    malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
				* (1 << pop (mask))
				* sizeof (struct loaded_l10nfile *)));
  if (retval == NULL)
    return NULL;

  retval->filename = abs_filename;
  retval->decided = (__argz_count (dirlist, dirlist_len) != 1
		     || ((mask & XPG_CODESET) != 0
			 && (mask & XPG_NORM_CODESET) != 0));
  retval->data = NULL;

  if (last == NULL)
    {
      retval->next = *l10nfile_list;
      *l10nfile_list = retval;
    }
  else
    {
      retval->next = last->next;
      last->next = retval;
    }

  entries = 0;
  /* If the DIRLIST is a real list the RETVAL entry corresponds not to
     a real file.  So we have to use the DIRLIST separation mechanism
     of the inner loop.  */
  cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
  for (; cnt >= 0; --cnt)
    if ((cnt & ~mask) == 0
	&& ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
	&& ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
      {
	/* 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);
      }
  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.  */
const char *
_nl_normalize_codeset (codeset, name_len)
     const unsigned 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 (codeset[cnt]))
      {
	++len;

	if (isalpha (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 (codeset[cnt]))
	  *wp++ = tolower (codeset[cnt]);
	else if (isdigit (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 (dest, src)
     char *dest;
     const char *src;
{
  while ((*dest++ = *src++) != '\0')
    /* Do nothing. */ ;
  return dest - 1;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区三区| 91高清视频免费看| 午夜激情久久久| 亚洲欧美日韩国产中文在线| 中文字幕一区二区不卡| 亚洲人成网站影音先锋播放| 国产精品国产a级| 亚洲欧美日韩国产成人精品影院| 综合自拍亚洲综合图不卡区| ...中文天堂在线一区| 一区二区三区.www| 日韩av电影一区| 紧缚奴在线一区二区三区| 国产自产2019最新不卡| 高清成人在线观看| 91在线国产观看| 欧美三电影在线| 精品国产乱码久久久久久久| www久久精品| 亚洲蜜臀av乱码久久精品| 亚洲一区二区不卡免费| 美国精品在线观看| 成人性生交大片免费看中文 | 1000部国产精品成人观看| 亚洲综合一二三区| 久久国产夜色精品鲁鲁99| 国产成人三级在线观看| 在线视频欧美区| 精品国产sm最大网站| 亚洲免费资源在线播放| 日本视频免费一区| 成人高清免费在线播放| 91麻豆精品久久久久蜜臀| 欧美激情在线免费观看| 亚洲va在线va天堂| 大尺度一区二区| 69堂精品视频| 亚洲男人的天堂网| 国产精品影视在线观看| 欧美午夜寂寞影院| 国产精品卡一卡二| 人人爽香蕉精品| 91香蕉视频在线| 亚洲精品在线观看网站| 亚洲一区二区三区免费视频| 国产精品白丝jk白祙喷水网站| 欧美性大战xxxxx久久久| 国产精品卡一卡二卡三| 国产高清无密码一区二区三区| 欧美日韩激情一区| 国产精品日韩精品欧美在线| 麻豆精品在线播放| 在线91免费看| 亚洲韩国精品一区| 99热这里都是精品| 欧美国产欧美综合| 韩日欧美一区二区三区| 日韩美女天天操| 日韩影院在线观看| 欧美人牲a欧美精品| 一区二区理论电影在线观看| 99久久er热在这里只有精品66| 精品成人在线观看| 激情综合色综合久久| 日韩精品一区二区三区在线| 婷婷国产v国产偷v亚洲高清| 欧美日韩亚洲不卡| 亚洲第一精品在线| 精品视频在线免费看| 亚洲国产中文字幕| 欧美日韩夫妻久久| 偷拍亚洲欧洲综合| 欧美一区二区在线播放| 日韩高清国产一区在线| 欧美福利视频一区| 日本女人一区二区三区| 91精品国产综合久久福利软件 | 一区二区三区在线不卡| 一本大道av一区二区在线播放| 中文字幕一区二区不卡| 一本一道综合狠狠老| 亚洲黄色免费电影| 欧美亚洲愉拍一区二区| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩一区成人| 六月丁香婷婷久久| 欧美激情自拍偷拍| 99国产精品久久久| 亚洲国产精品久久人人爱| 91麻豆精品91久久久久久清纯| 五月综合激情日本mⅴ| 日韩欧美国产成人一区二区| 国产一区二区三区免费| 中文字幕亚洲精品在线观看| 在线观看av一区二区| 免费观看久久久4p| 国产欧美综合在线| 在线视频亚洲一区| 韩国中文字幕2020精品| 亚洲色图色小说| 6080国产精品一区二区| 国产精品中文字幕日韩精品 | 国产一区福利在线| 国产精品久久久久一区二区三区| 色天天综合色天天久久| 麻豆精品精品国产自在97香蕉| 久久精品视频一区二区三区| 色综合久久88色综合天天6 | 中文字幕电影一区| 欧美日韩国产高清一区二区三区| 精品午夜久久福利影院| 亚洲精品乱码久久久久| 精品少妇一区二区三区免费观看| 成人免费av在线| 蜜桃精品在线观看| 亚洲精品网站在线观看| 精品国产一区二区三区四区四| 色综合久久88色综合天天6| 精品一区二区久久| 亚洲aaa精品| 亚洲欧美视频在线观看视频| 久久久一区二区三区| 欧美伦理电影网| 色哟哟在线观看一区二区三区| 久久99精品国产麻豆不卡| 亚洲国产wwwccc36天堂| 国产精品天天摸av网| 精品欧美乱码久久久久久| 在线视频国内自拍亚洲视频| 国产69精品久久久久777| 免费精品视频在线| 日本一区中文字幕| 亚洲图片有声小说| 一二三四社区欧美黄| 国产精品免费看片| 精品久久久久久久一区二区蜜臀| 欧美日韩国产片| 欧美在线观看一区| 色综合久久综合中文综合网| 成人午夜大片免费观看| 国产精品综合av一区二区国产馆| 免费人成精品欧美精品| 天天影视网天天综合色在线播放| 亚洲精品乱码久久久久久黑人| 国产精品高潮久久久久无| 国产精品久久久久天堂| 国产精品女主播在线观看| 国产欧美一区二区在线| 国产日韩成人精品| 欧美极品aⅴ影院| 国产情人综合久久777777| 国产欧美一区二区精品性色| 国产亚洲午夜高清国产拍精品| www成人在线观看| 国产午夜精品一区二区三区四区| 久久蜜桃av一区精品变态类天堂| 日韩欧美中文字幕一区| 精品区一区二区| 亚洲国产精品传媒在线观看| 亚洲国产电影在线观看| 中文字幕视频一区| 亚洲午夜久久久久久久久电影网 | 国产成人在线视频播放| 国产成人亚洲精品青草天美| 成人免费精品视频| 欧美性大战久久久| 欧美一区二区三区的| 26uuu亚洲综合色欧美| 国产精品久久久久久久久免费丝袜| 国产丝袜在线精品| 一级精品视频在线观看宜春院| 亚洲成av人片www| 国产在线播放一区三区四| av影院午夜一区| 欧美群妇大交群的观看方式| 欧美tickling网站挠脚心| 中文字幕一区二区在线观看| 亚洲国产综合在线| 国产乱妇无码大片在线观看| 不卡av在线网| 91精品国产综合久久精品| 久久久精品2019中文字幕之3| 成人欧美一区二区三区黑人麻豆| 亚洲国产aⅴ成人精品无吗| 国产永久精品大片wwwapp| 高清不卡在线观看| 日韩一级在线观看| 亚洲欧洲中文日韩久久av乱码| 舔着乳尖日韩一区| 99综合电影在线视频| 欧美一区二区三区小说| 久久精品网站免费观看| 午夜精品福利一区二区蜜股av| 国产超碰在线一区| 在线播放91灌醉迷j高跟美女 | 99精品久久99久久久久| 91精品国产综合久久香蕉的特点| 欧美国产日韩亚洲一区| 免费一区二区视频| 日本久久一区二区|