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

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

?? loadmsgcat.c

?? linux下的串口工具
?? C
?? 第 1 頁 / 共 3 頁
字號:
     struct loaded_domain *domain;{  if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)    free (domain->conv_tab);#ifdef _LIBC  if (domain->conv != (__gconv_t) -1)    __gconv_close (domain->conv);#else# if HAVE_ICONV  if (domain->conv != (iconv_t) -1)    iconv_close (domain->conv);# endif#endif}/* Load the message catalogs specified by FILENAME.  If it is no valid   message catalog do nothing.  */voidinternal_function_nl_load_domain (domain_file, domainbinding)     struct loaded_l10nfile *domain_file;     struct binding *domainbinding;{  int fd;  size_t size;#ifdef _LIBC  struct stat64 st;#else  struct stat st;#endif  struct mo_file_header *data = (struct mo_file_header *) -1;  int use_mmap = 0;  struct loaded_domain *domain;  int revision;  const char *nullentry;  domain_file->decided = 1;  domain_file->data = NULL;  /* Note that it would be useless to store domainbinding in domain_file     because domainbinding might be == NULL now but != NULL later (after     a call to bind_textdomain_codeset).  */  /* If the record does not represent a valid locale the FILENAME     might be NULL.  This can happen when according to the given     specification the locale file name is different for XPG and CEN     syntax.  */  if (domain_file->filename == NULL)    return;  /* Try to open the addressed file.  */  fd = open (domain_file->filename, O_RDONLY | O_BINARY);  if (fd == -1)    return;  /* We must know about the size of the file.  */  if (#ifdef _LIBC      __builtin_expect (fstat64 (fd, &st) != 0, 0)#else      __builtin_expect (fstat (fd, &st) != 0, 0)#endif      || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)      || __builtin_expect (size < sizeof (struct mo_file_header), 0))    {      /* Something went wrong.  */      close (fd);      return;    }#ifdef HAVE_MMAP  /* Now we are ready to load the file.  If mmap() is available we try     this first.  If not available or it failed we try to load it.  */  data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,					 MAP_PRIVATE, fd, 0);  if (__builtin_expect (data != (struct mo_file_header *) -1, 1))    {      /* mmap() call was successful.  */      close (fd);      use_mmap = 1;    }#endif  /* If the data is not yet available (i.e. mmap'ed) we try to load     it manually.  */  if (data == (struct mo_file_header *) -1)    {      size_t to_read;      char *read_ptr;      data = (struct mo_file_header *) malloc (size);      if (data == NULL)	return;      to_read = size;      read_ptr = (char *) data;      do	{	  long int nb = (long int) read (fd, read_ptr, to_read);	  if (nb <= 0)	    {#ifdef EINTR	      if (nb == -1 && errno == EINTR)		continue;#endif	      close (fd);	      return;	    }	  read_ptr += nb;	  to_read -= nb;	}      while (to_read > 0);      close (fd);    }  /* Using the magic number we can test whether it really is a message     catalog file.  */  if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,			0))    {      /* The magic number is wrong: not a message catalog file.  */#ifdef HAVE_MMAP      if (use_mmap)	munmap ((caddr_t) data, size);      else#endif	free (data);      return;    }  domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));  if (domain == NULL)    return;  domain_file->data = domain;  domain->data = (char *) data;  domain->use_mmap = use_mmap;  domain->mmap_size = size;  domain->must_swap = data->magic != _MAGIC;  domain->malloced = NULL;  /* Fill in the information about the available tables.  */  revision = W (domain->must_swap, data->revision);  /* We support only the major revision 0.  */  switch (revision >> 16)    {    case 0:      domain->nstrings = W (domain->must_swap, data->nstrings);      domain->orig_tab = (const struct string_desc *)	((char *) data + W (domain->must_swap, data->orig_tab_offset));      domain->trans_tab = (const struct string_desc *)	((char *) data + W (domain->must_swap, data->trans_tab_offset));      domain->hash_size = W (domain->must_swap, data->hash_tab_size);      domain->hash_tab =	(domain->hash_size > 2	 ? (const nls_uint32 *)	   ((char *) data + W (domain->must_swap, data->hash_tab_offset))	 : NULL);      domain->must_swap_hash_tab = domain->must_swap;      /* Now dispatch on the minor revision.  */      switch (revision & 0xffff)	{	case 0:	  domain->n_sysdep_strings = 0;	  domain->orig_sysdep_tab = NULL;	  domain->trans_sysdep_tab = NULL;	  break;	case 1:	default:	  {	    nls_uint32 n_sysdep_strings;	    if (domain->hash_tab == NULL)	      /* This is invalid.  These minor revisions need a hash table.  */	      goto invalid;	    n_sysdep_strings =	      W (domain->must_swap, data->n_sysdep_strings);	    if (n_sysdep_strings > 0)	      {		nls_uint32 n_sysdep_segments;		const struct sysdep_segment *sysdep_segments;		const char **sysdep_segment_values;		const nls_uint32 *orig_sysdep_tab;		const nls_uint32 *trans_sysdep_tab;		size_t memneed;		char *mem;		struct sysdep_string_desc *inmem_orig_sysdep_tab;		struct sysdep_string_desc *inmem_trans_sysdep_tab;		nls_uint32 *inmem_hash_tab;		unsigned int i;		/* Get the values of the system dependent segments.  */		n_sysdep_segments =		  W (domain->must_swap, data->n_sysdep_segments);		sysdep_segments = (const struct sysdep_segment *)		  ((char *) data		   + W (domain->must_swap, data->sysdep_segments_offset));		sysdep_segment_values =		  alloca (n_sysdep_segments * sizeof (const char *));		for (i = 0; i < n_sysdep_segments; i++)		  {		    const char *name =		      (char *) data		      + W (domain->must_swap, sysdep_segments[i].offset);		    nls_uint32 namelen =		      W (domain->must_swap, sysdep_segments[i].length);		    if (!(namelen > 0 && name[namelen - 1] == '\0'))		      {			freea (sysdep_segment_values);			goto invalid;		      }		    sysdep_segment_values[i] = get_sysdep_segment_value (name);		  }		orig_sysdep_tab = (const nls_uint32 *)		  ((char *) data		   + W (domain->must_swap, data->orig_sysdep_tab_offset));		trans_sysdep_tab = (const nls_uint32 *)		  ((char *) data		   + W (domain->must_swap, data->trans_sysdep_tab_offset));		/* Compute the amount of additional memory needed for the		   system dependent strings and the augmented hash table.  */		memneed = 2 * n_sysdep_strings			  * sizeof (struct sysdep_string_desc)			  + domain->hash_size * sizeof (nls_uint32);		for (i = 0; i < 2 * n_sysdep_strings; i++)		  {		    const struct sysdep_string *sysdep_string =		      (const struct sysdep_string *)		      ((char *) data		       + W (domain->must_swap,			    i < n_sysdep_strings			    ? orig_sysdep_tab[i]			    : trans_sysdep_tab[i - n_sysdep_strings]));		    size_t need = 0;		    const struct segment_pair *p = sysdep_string->segments;		    if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)		      for (p = sysdep_string->segments;; p++)			{			  nls_uint32 sysdepref;			  need += W (domain->must_swap, p->segsize);			  sysdepref = W (domain->must_swap, p->sysdepref);			  if (sysdepref == SEGMENTS_END)			    break;			  if (sysdepref >= n_sysdep_segments)			    {			      /* Invalid.  */			      freea (sysdep_segment_values);			      goto invalid;			    }			  need += strlen (sysdep_segment_values[sysdepref]);			}		    memneed += need;		  }		/* Allocate additional memory.  */		mem = (char *) malloc (memneed);		if (mem == NULL)		  goto invalid;		domain->malloced = mem;		inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;		mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);		inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;		mem += n_sysdep_strings * sizeof (struct sysdep_string_desc);		inmem_hash_tab = (nls_uint32 *) mem;		mem += domain->hash_size * sizeof (nls_uint32);		/* Compute the system dependent strings.  */		for (i = 0; i < 2 * n_sysdep_strings; i++)		  {		    const struct sysdep_string *sysdep_string =		      (const struct sysdep_string *)		      ((char *) data		       + W (domain->must_swap,			    i < n_sysdep_strings			    ? orig_sysdep_tab[i]			    : trans_sysdep_tab[i - n_sysdep_strings]));		    const char *static_segments =		      (char *) data		      + W (domain->must_swap, sysdep_string->offset);		    const struct segment_pair *p = sysdep_string->segments;		    /* Concatenate the segments, and fill		       inmem_orig_sysdep_tab[i] (for i < n_sysdep_strings) and		       inmem_trans_sysdep_tab[i-n_sysdep_strings] (for		       i >= n_sysdep_strings).  */		    if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END)		      {			/* Only one static segment.  */			inmem_orig_sysdep_tab[i].length =			  W (domain->must_swap, p->segsize);			inmem_orig_sysdep_tab[i].pointer = static_segments;		      }		    else		      {			inmem_orig_sysdep_tab[i].pointer = mem;			for (p = sysdep_string->segments;; p++)			  {			    nls_uint32 segsize =			      W (domain->must_swap, p->segsize);			    nls_uint32 sysdepref =			      W (domain->must_swap, p->sysdepref);			    size_t n;			    if (segsize > 0)			      {				memcpy (mem, static_segments, segsize);				mem += segsize;				static_segments += segsize;			      }			    if (sysdepref == SEGMENTS_END)			      break;			    n = strlen (sysdep_segment_values[sysdepref]);			    memcpy (mem, sysdep_segment_values[sysdepref], n);			    mem += n;			  }			inmem_orig_sysdep_tab[i].length =			  mem - inmem_orig_sysdep_tab[i].pointer;		      }		  }		/* Compute the augmented hash table.  */		for (i = 0; i < domain->hash_size; i++)		  inmem_hash_tab[i] =		    W (domain->must_swap_hash_tab, domain->hash_tab[i]);		for (i = 0; i < n_sysdep_strings; i++)		  {		    const char *msgid = inmem_orig_sysdep_tab[i].pointer;		    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));		    for (;;)		      {			if (inmem_hash_tab[idx] == 0)			  {			    /* Hash table entry is empty.  Use it.  */			    inmem_hash_tab[idx] = 1 + domain->nstrings + i;			    break;			  }			if (idx >= domain->hash_size - incr)			  idx -= domain->hash_size - incr;			else			  idx += incr;		      }		  }		freea (sysdep_segment_values);		domain->n_sysdep_strings = n_sysdep_strings;		domain->orig_sysdep_tab = inmem_orig_sysdep_tab;		domain->trans_sysdep_tab = inmem_trans_sysdep_tab;		domain->hash_tab = inmem_hash_tab;		domain->must_swap_hash_tab = 0;	      }	    else	      {		domain->n_sysdep_strings = 0;		domain->orig_sysdep_tab = NULL;		domain->trans_sysdep_tab = NULL;	      }	  }	  break;	}      break;    default:      /* This is an invalid revision.  */    invalid:      /* This is an invalid .mo file.  */      if (domain->malloced)	free (domain->malloced);#ifdef HAVE_MMAP      if (use_mmap)	munmap ((caddr_t) data, size);      else#endif	free (data);      free (domain);      domain_file->data = NULL;      return;    }  /* Now initialize the character set converter from the character set     the file is encoded with (found in the header entry) to the domain's     specified character set or the locale's character set.  */  nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);  /* Also look for a plural specification.  */  EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);}#ifdef _LIBCvoidinternal_function_nl_unload_domain (domain)     struct loaded_domain *domain;{  if (domain->plural != &__gettext_germanic_plural)    __gettext_free_exp (domain->plural);  _nl_free_domain_conv (domain);  if (domain->malloced)    free (domain->malloced);# ifdef _POSIX_MAPPED_FILES  if (domain->use_mmap)    munmap ((caddr_t) domain->data, domain->mmap_size);  else# endif	/* _POSIX_MAPPED_FILES */    free ((void *) domain->data);  free (domain);}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区视频在线观看| 久久久午夜精品| 欧美一级理论片| 中文字幕一区二区日韩精品绯色| 午夜精品久久久久久久99樱桃 | 欧美一区二区三区在线观看视频| 久久久国产精华| 首页国产丝袜综合| 欧美在线观看18| 国产精品视频观看| 国产一区二区三区精品视频| 欧美日韩一区二区三区四区| 亚洲同性gay激情无套| 国产精品18久久久久久久网站| 91麻豆精品久久久久蜜臀| 亚洲乱码中文字幕| 成人精品一区二区三区四区| 欧美变态tickle挠乳网站| 丝袜美腿亚洲综合| 91国产丝袜在线播放| 亚洲三级在线免费| 成人av网站大全| 国产精品久久久久久久岛一牛影视| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩国产系列| 亚欧色一区w666天堂| 欧美日韩日日摸| 亚洲福利一区二区| 欧美色图激情小说| 一区二区三区四区五区视频在线观看| 99国产麻豆精品| 亚洲色图丝袜美腿| 91成人国产精品| 亚洲一区二区三区国产| 欧美三级午夜理伦三级中视频| 一个色妞综合视频在线观看| 欧美最新大片在线看| 亚洲福利国产精品| 91精品免费观看| 美国三级日本三级久久99| 日韩欧美色综合网站| 国内精品写真在线观看| 国产亚洲成av人在线观看导航 | 久久久五月婷婷| 国产乱人伦偷精品视频不卡| 国产午夜久久久久| 91视频观看免费| 性久久久久久久久| 日韩美女视频一区二区在线观看| 狠狠色狠狠色综合系列| 国产欧美一区二区精品性色超碰| 成人高清免费观看| 亚洲影院理伦片| 日韩视频国产视频| 国产一区啦啦啦在线观看| 成年人网站91| 亚洲精品免费看| 欧美色精品在线视频| 日韩vs国产vs欧美| 久久精品男人天堂av| 色综合一区二区| 日韩高清不卡在线| 日本一区二区在线不卡| 91黄色免费版| 国产高清精品网站| 亚洲精品久久7777| 久久综合色婷婷| 色综合一个色综合| 久久国产精品99久久人人澡| 国产精品美女久久久久久| 精品1区2区3区| 美女在线视频一区| 91精品国模一区二区三区| 国产美女在线精品| 艳妇臀荡乳欲伦亚洲一区| 国产欧美日韩视频在线观看| 99精品1区2区| 久久av资源网| 亚洲自拍偷拍av| 久久青草欧美一区二区三区| 日本高清不卡一区| 国产精品亚洲第一区在线暖暖韩国| 亚洲另类春色国产| 国产亚洲女人久久久久毛片| 欧美精品aⅴ在线视频| 国产成人av电影| 蜜臀va亚洲va欧美va天堂| 1000部国产精品成人观看| 精品动漫一区二区三区在线观看| 在线观看网站黄不卡| 成人黄色在线看| 国模大尺度一区二区三区| 午夜精品福利视频网站| 国产精品成人一区二区三区夜夜夜| 91精品国产综合久久福利软件 | 一区二区三区免费在线观看| 26uuuu精品一区二区| 宅男噜噜噜66一区二区66| 日本高清无吗v一区| 99精品国产91久久久久久 | 色综合久久精品| 粗大黑人巨茎大战欧美成人| 捆绑调教一区二区三区| 日日摸夜夜添夜夜添国产精品| 亚洲免费电影在线| 中文字幕中文字幕在线一区 | 黑人巨大精品欧美黑白配亚洲| 亚洲成人午夜电影| 一区二区三区不卡在线观看 | 久久久亚洲综合| 久久综合网色—综合色88| 日韩亚洲欧美在线观看| 91精品国产欧美一区二区成人| 欧美三级日韩三级国产三级| 色综合久久中文综合久久97| 色吧成人激情小说| 91欧美激情一区二区三区成人| 9i在线看片成人免费| 91无套直看片红桃| 91久久一区二区| 欧美三级在线看| 欧美日高清视频| 欧美一区二区三区四区高清| 91精品国产欧美一区二区成人| 91精品国产综合久久香蕉麻豆| 69久久99精品久久久久婷婷| 日韩精品最新网址| 久久久99精品久久| 亚洲欧洲成人av每日更新| 亚洲丝袜另类动漫二区| 亚洲综合激情网| 蜜桃视频在线一区| 国产成人亚洲综合a∨婷婷图片 | 在线亚洲免费视频| 在线成人午夜影院| 2023国产精品视频| 中文字幕一区二区三区av| 亚洲综合精品久久| 韩国精品久久久| aaa国产一区| 欧美日韩免费观看一区三区| 日韩精品在线看片z| 日本一区二区三级电影在线观看| 成人欧美一区二区三区在线播放| 亚洲国产乱码最新视频 | 日韩精品一区二区三区中文不卡 | 国产精品久久久久国产精品日日| 亚洲欧美一区二区不卡| 午夜国产不卡在线观看视频| 国产精品资源站在线| 欧美中文字幕一二三区视频| 日韩一级片在线观看| 欧美国产国产综合| 亚洲国产精品尤物yw在线观看| 国产在线日韩欧美| 欧美午夜精品理论片a级按摩| 欧美成人性福生活免费看| 最近日韩中文字幕| 蜜桃久久久久久| 色妞www精品视频| 精品国产亚洲在线| 亚洲午夜成aⅴ人片| 国产不卡视频一区二区三区| 欧美精品自拍偷拍动漫精品| 国产精品短视频| 秋霞影院一区二区| 一本大道久久精品懂色aⅴ| 日韩精品一区二区三区视频| 一区二区三区免费在线观看| 国产精品中文字幕一区二区三区| 精品污污网站免费看| 国产精品乱人伦| 狠狠色狠狠色综合系列| 欧美人与禽zozo性伦| 亚洲蜜臀av乱码久久精品 | 久久久亚洲高清| 日韩av一区二区三区四区| 91在线播放网址| 国产三区在线成人av| 美国av一区二区| 91精品国产综合久久久蜜臀粉嫩 | 中文av一区二区| 国精产品一区一区三区mba桃花| 欧美性大战久久久久久久蜜臀| 欧美激情一区二区三区| 精品亚洲成a人| 日韩一区二区三区电影| 天天综合日日夜夜精品| 欧美无砖砖区免费| 亚洲黄色免费电影| 91丨九色丨黑人外教| 国产精品久久99| eeuss国产一区二区三区| 国产亲近乱来精品视频| 国产在线一区观看| 26uuu久久综合| 狠狠色丁香婷婷综合久久片| 精品99999| 国产一级精品在线| 欧美国产亚洲另类动漫|