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

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

?? archive.c

?? 早期freebsd實(shí)現(xiàn)
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
  char armag[SARMAG+1];  if (bfd_read ((PTR)armag, 1, SARMAG, abfd) != SARMAG) {    bfd_error = wrong_format;    return 0;  }#ifdef GNU960  if (strncmp (armag, BFD_GNU960_ARMAG(abfd), SARMAG)) return 0;#else  if (strncmp (armag, ARMAG, SARMAG) &&      strncmp (armag, ARMAGB, SARMAG)) return 0;#endif  /* We are setting bfd_ardata(abfd) here, but since bfd_ardata     involves a cast, we can't do it as the left operand of assignment. */  abfd->tdata.aout_ar_data = (struct artdata *) bfd_zalloc(abfd,sizeof (struct artdata));  if (bfd_ardata (abfd)  == NULL) {    bfd_error = no_memory;    return 0;  }  bfd_ardata (abfd)->first_file_filepos = SARMAG;    if (!BFD_SEND (abfd, _bfd_slurp_armap, (abfd))) {    bfd_release(abfd, bfd_ardata (abfd));    abfd->tdata.aout_ar_data = NULL;    return 0;  }  if (!BFD_SEND (abfd, _bfd_slurp_extended_name_table, (abfd))) {    bfd_release(abfd, bfd_ardata (abfd));    abfd->tdata.aout_ar_data = NULL;    return 0;  }    return abfd->xvec;}/* Returns false on error, true otherwise */booleanbfd_slurp_bsd_armap (abfd)     bfd *abfd;{    struct areltdata *mapdata;    char nextname[17];    unsigned int counter = 0;    int *raw_armap, *rbase;    struct artdata *ardata = bfd_ardata (abfd);    char *stringbase;    /* FIXME, if the read fails, this routine quietly returns "true"!!       It should probably do that if the read gives 0 bytes (empty archive),       but fail for any other size... */    if (bfd_read ((PTR)nextname, 1, 16, abfd) == 16) {	    /* The archive has at least 16 bytes in it */	    bfd_seek (abfd, (file_ptr) -16, SEEK_CUR);	    /* This should be using RANLIBMAG, but at least it can be grepped for	       in this comment.  */	    if (strncmp (nextname, "__.SYMDEF       ", 16)) {		    bfd_has_map (abfd) = false;		    return true;		}	    mapdata = snarf_ar_hdr (abfd);	    if (mapdata == NULL) return false;	    raw_armap = (int *) bfd_zalloc(abfd,mapdata->parsed_size);	    if (raw_armap == NULL) {		    bfd_error = no_memory;		  byebye:		    bfd_release (abfd, (PTR)mapdata);		    return false;		}	    if (bfd_read ((PTR)raw_armap, 1, mapdata->parsed_size, abfd) !=		mapdata->parsed_size) {		    bfd_error = malformed_archive;		  byebyebye:		    bfd_release (abfd, (PTR)raw_armap);		    goto byebye;		}	    ardata->symdef_count = bfd_h_get_32(abfd, (PTR)raw_armap) / sizeof (struct symdef);	    if (ardata->symdef_count * sizeof (struct symdef)		> mapdata->parsed_size - sizeof (*raw_armap)) {	            /* Probably we're using the wrong byte ordering.  */	            bfd_error = wrong_format;		    goto byebyebye;		  }	    ardata->cache = 0;	    rbase = raw_armap+1;	    ardata->symdefs = (carsym *) rbase;	    stringbase = ((char *) (ardata->symdefs + ardata->symdef_count)) + 4;	    for (;counter < ardata->symdef_count; counter++) {		    struct symdef *sym = ((struct symdef *) rbase) + counter;		    sym->s.name = bfd_h_get_32(abfd, (PTR)(&(sym->s.string_offset))) + stringbase;		    sym->file_offset = bfd_h_get_32(abfd, (PTR)( &(sym->file_offset)));		}  	    ardata->first_file_filepos = bfd_tell (abfd);	    /* Pad to an even boundary if you have to */	    ardata->first_file_filepos += (ardata-> first_file_filepos) %2;	    /* FIXME, we should provide some way to free raw_ardata when	       we are done using the strings from it.  For now, it seems	       to be allocated on an obstack anyway... */	    bfd_has_map (abfd) = true;	}    return true;}/* Returns false on error, true otherwise */booleanbfd_slurp_coff_armap (abfd)     bfd *abfd;{  struct areltdata *mapdata;  char nextname;  int *raw_armap, *rawptr;  struct artdata *ardata = bfd_ardata (abfd);  char *stringbase;  unsigned int stringsize;  carsym *carsyms;  int result;  bfd_vma (*swap)();    result = bfd_read ((PTR)&nextname, 1, 1, abfd);  bfd_seek (abfd, (file_ptr) -1, SEEK_CUR);  if (result != 1 || nextname != '/') {    /* Actually I think this is an error for a COFF archive */    bfd_has_map (abfd) = false;    return true;  }  mapdata = snarf_ar_hdr (abfd);  if (mapdata == NULL) return false;  raw_armap = (int *) bfd_alloc(abfd,mapdata->parsed_size);  if (raw_armap == NULL)   {    bfd_error = no_memory;   byebye:    bfd_release (abfd, (PTR)mapdata);    return false;  }  /* read in the raw map */  if (bfd_read ((PTR)raw_armap, 1, mapdata->parsed_size, abfd) !=      mapdata->parsed_size) {    bfd_error = malformed_archive;   oops:    bfd_release (abfd, (PTR)raw_armap);    goto byebye;  }  /* The coff armap must be read sequentially.  So we construct a bsd-style     one in core all at once, for simplicity.           It seems that all numeric information in a coff archive is always     in big endian format, nomatter the host or target. */  stringsize    = mapdata->parsed_size - (4 * (_do_getb32((PTR)raw_armap))) - 4;  /* Except that some archive formats are broken, and it may be our     fault - the i960 little endian coff sometimes has big and sometimes     little, because our tools changed.  Here's a horrible hack to clean     up the crap     */  swap = _do_getb32;    if (stringsize > 0xfffff)   {    /* This looks dangerous, let's do it the other way around */    stringsize = mapdata->parsed_size - (4 *					 (_do_getl32((PTR)raw_armap))) - 4;    swap = _do_getl32;  }   {   unsigned int nsymz = swap( (PTR)raw_armap);   unsigned int carsym_size = (nsymz * sizeof (carsym));   unsigned int ptrsize = (4 * nsymz);   unsigned int i;   ardata->symdefs = (carsym *) bfd_zalloc(abfd,carsym_size + stringsize + 1);   if (ardata->symdefs == NULL) {     bfd_error = no_memory;     goto oops;   }   carsyms = ardata->symdefs;   stringbase = ((char *) ardata->symdefs) + carsym_size;   memcpy (stringbase, (char*)raw_armap + ptrsize + 4,  stringsize);   /* OK, build the carsyms */   for (i = 0; i < nsymz; i++)    {     rawptr = raw_armap + i + 1;     carsyms->file_offset = swap((PTR)rawptr);     carsyms->name = stringbase;     for (; *(stringbase++););     carsyms++;   }   *stringbase = 0; }  ardata->symdef_count = swap((PTR)raw_armap);  ardata->first_file_filepos = bfd_tell (abfd);  /* Pad to an even boundary if you have to */  ardata->first_file_filepos += (ardata->first_file_filepos) %2;  /* We'd like to release these allocations, but we have allocated stuff     since then (using the same obstack, if bfd_release is obstack based).     So they will stick around until the BFD is closed.  */  /*  bfd_release (abfd, (PTR)raw_armap);      bfd_release (abfd, (PTR)mapdata);  */  bfd_has_map (abfd) = true;  return true;}/** Extended name table.  Normally archives support only 14-character filenames.  Intel has extended the format: longer names are stored in a special  element (the first in the archive, or second if there is an armap);  the name in the ar_hdr is replaced by <space><index into filename  element>.  Index is the P.R. of an int (decimal).  Data General have  extended the format by using the prefix // for the special element *//* Returns false on error, true otherwise */boolean_bfd_slurp_extended_name_table (abfd)     bfd *abfd;{  char nextname[17];  struct areltdata *namedata;  /* FIXME:  Formatting sucks here, and in case of failure of BFD_READ,     we probably don't want to return true.  */  if (bfd_read ((PTR)nextname, 1, 16, abfd) == 16) {    bfd_seek (abfd, (file_ptr) -16, SEEK_CUR);    if (strncmp (nextname, "ARFILENAMES/    ", 16) != 0 &&	strncmp (nextname, "//              ", 16) != 0) 	{      bfd_ardata (abfd)->extended_names = NULL;      return true;    }    namedata = snarf_ar_hdr (abfd);    if (namedata == NULL) return false;      bfd_ardata (abfd)->extended_names = bfd_zalloc(abfd,namedata->parsed_size);    if (bfd_ardata (abfd)->extended_names == NULL) {      bfd_error = no_memory;    byebye:      bfd_release (abfd, (PTR)namedata);      return false;    }    if (bfd_read ((PTR)bfd_ardata (abfd)->extended_names, 1,		  namedata->parsed_size, abfd) != namedata->parsed_size) {      bfd_error = malformed_archive;      bfd_release (abfd, (PTR)(bfd_ardata (abfd)->extended_names));      bfd_ardata (abfd)->extended_names = NULL;      goto byebye;    }    /* Since the archive is supposed to be printable if it contains       text, the entries in the list are newline-padded, not null       padded. We'll fix that there..  */      {	char *temp = bfd_ardata (abfd)->extended_names;	for (; *temp != '\0'; ++temp)	  if (*temp == '\n') *temp = '\0';      }      /* Pad to an even boundary if you have to */    bfd_ardata (abfd)->first_file_filepos = bfd_tell (abfd);    bfd_ardata (abfd)->first_file_filepos +=      (bfd_ardata (abfd)->first_file_filepos) %2;    /* FIXME, we can't release namedata here because it was allocated       below extended_names on the obstack... */    /* bfd_release (abfd, namedata); */  }  return true;}#ifdef VMS/* Return a copy of the stuff in the filename between any :]> and a   semicolon */static CONST char *DEFUN(normalize,(file),      CONST char *file){  CONST char *first;  CONST char *last;  char *copy;  first = file + strlen(file)-1;  last = first+1;  while (first != file)   {    if (*first == ';')      last = first;    if (*first == ':' || *first == ']' ||*first == '>')     {       first++;      break;    }    first --;  }    copy = malloc(last - first + 1);  memcpy(copy, first, last-first);  copy[last-first] = 0;  return copy;}#elsestaticCONST char *normalize(file)CONST char *file;{  CONST char *    filename = strrchr(file, '/');  if (filename != (char *)NULL) {      filename ++;    }  else {      filename = file;    }  return filename;}#endif/* Follows archive_head and produces an extended name table if necessary.   Returns (in tabloc) a pointer to an extended name table, and in tablen   the length of the table.  If it makes an entry it clobbers the filename   so that the element may be written without further massage.   Returns true if it ran successfully, false if something went wrong.   A successful return may still involve a zero-length tablen!   */booleanbfd_construct_extended_name_table (abfd, tabloc, tablen)     bfd *abfd;     char **tabloc;     unsigned int *tablen;{  unsigned int maxname = abfd->xvec->ar_max_namelen;  unsigned int total_namelen = 0;  bfd *current;  char *strptr;  *tablen = 0;    /* Figure out how long the table should be */  for (current = abfd->archive_head; current != NULL; current = current->next){    unsigned int thislen = strlen (normalize(current->filename));    if (thislen > maxname) total_namelen += thislen + 1; /* leave room for \n */  }  if (total_namelen == 0) return true;  *tabloc = bfd_zalloc (abfd,total_namelen);  if (*tabloc == NULL) {    bfd_error = no_memory;    return false;  }  *tablen = total_namelen;  strptr = *tabloc;  for (current = abfd->archive_head; current != NULL; current =       current->next) {    CONST char *normal =normalize( current->filename);    unsigned int thislen = strlen (normal);    if (thislen > maxname) {      /* Works for now; may need to be re-engineered if we encounter an oddball	 archive format and want to generalise this hack. */      struct ar_hdr *hdr = arch_hdr(current);      strcpy (strptr, normal);      strptr[thislen] = '\n';      hdr->ar_name[0] = ' ';      /* We know there will always be enough room (one of the few cases	 where you may safely use sprintf). */      sprintf ((hdr->ar_name) + 1, "%-d", (unsigned) (strptr - *tabloc));      /* Kinda Kludgy.   We should just use the returned value of sprintf	 but not all implementations get this right */	{	  char *temp = hdr->ar_name +2; 	  for (; temp < hdr->ar_name + maxname; temp++)	    if (*temp == '\0') *temp = ' ';	}      strptr += thislen + 1;    }  }  return true;}/** A couple of functions for creating ar_hdrs *//* Takes a filename, returns an arelt_data for it, or NULL if it can't make one.   The filename must refer to a filename in the filesystem.   The filename field of the ar_hdr will NOT be initialized*/struct areltdata *DEFUN(bfd_ar_hdr_from_filesystem, (abfd,filename),      bfd* abfd AND      CONST char *filename){  struct stat status;  struct areltdata *ared;  struct ar_hdr *hdr;  char *temp, *temp1;  if (stat (filename, &status) != 0) {    bfd_error = system_call_error;    return NULL;  }  ared = (struct areltdata *) bfd_zalloc(abfd, sizeof (struct ar_hdr) +				      sizeof (struct areltdata));  if (ared == NULL) {    bfd_error = no_memory;    return NULL;  }  hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata));  /* ar headers are space padded, not null padded! */  temp = (char *) hdr;  temp1 = temp + sizeof (struct ar_hdr) - 2;  for (; temp < temp1; *(temp++) = ' ');  strncpy (hdr->ar_fmag, ARFMAG, 2);    /* Goddamned sprintf doesn't permit MAXIMUM field lengths */  sprintf ((hdr->ar_date), "%-12ld", status.st_mtime);  sprintf ((hdr->ar_uid), "%d", status.st_uid);  sprintf ((hdr->ar_gid), "%d", status.st_gid);  sprintf ((hdr->ar_mode), "%-8o", (unsigned) status.st_mode);  sprintf ((hdr->ar_size), "%-10ld", status.st_size);  /* Correct for a lossage in sprintf whereby it null-terminates.  I cannot     understand how these C losers could design such a ramshackle bunch of     IO operations */  temp = (char *) hdr;  temp1 = temp + sizeof (struct ar_hdr) - 2;  for (; temp < temp1; temp++) {    if (*temp == '\0') *temp = ' ';  }  strncpy (hdr->ar_fmag, ARFMAG, 2);  ared->parsed_size = status.st_size;  ared->arch_header = (char *) hdr;  return ared;}/* This is magic required by the "ar" program.  Since it's    undocumented, it's undocumented.   You may think that it would    take a strong stomach to write this, and it does, but it takes    even a stronger stomach to try to code around such a thing!*/struct ar_hdr *DEFUN(bfd_special_undocumented_glue, (abfd, filename),      bfd *abfd AND      char *filename){  struct areltdata *ar_elt = bfd_ar_hdr_from_filesystem (abfd, filename);  if (ar_elt == NULL)      return NULL;  return (struct ar_hdr *) ar_elt->arch_header;}/* Analogous to stat call */intbfd_generic_stat_arch_elt (abfd, buf)     bfd *abfd;     struct stat *buf;{  struct ar_hdr *hdr;  char *aloser;    if (abfd->arelt_data == NULL) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91高清视频在线| 精品国产99国产精品| 成人做爰69片免费看网站| 日本不卡一二三| 亚洲成人动漫在线免费观看| 国产精品久久福利| 91精品国产欧美一区二区18| 欧美三级电影网| 在线观看日韩电影| 色哟哟一区二区| 9l国产精品久久久久麻豆| 国产精品影视在线| 国产福利91精品| 韩国女主播成人在线| 男女男精品视频| 欧美aⅴ一区二区三区视频| 亚洲成av人片一区二区| 亚洲一区二区三区美女| 亚洲一区二区三区在线播放| 亚洲三级在线看| 国产精品国产馆在线真实露脸| 国产精品传媒视频| 男女视频一区二区| 偷拍一区二区三区四区| 欧洲在线/亚洲| 久久国产综合精品| 老司机免费视频一区二区 | 亚洲黄色尤物视频| 自拍偷拍亚洲欧美日韩| 亚洲精品成a人| 一区二区三区成人在线视频| 亚洲女同女同女同女同女同69| 一区二区欧美精品| 亚洲国产毛片aaaaa无费看| 欧美xxxx在线观看| 久久久久久一二三区| 日本一区二区在线不卡| 中文字幕一区二区三区精华液 | 欧美在线视频日韩| 日韩欧美一区二区免费| 精品国产成人在线影院| 国产午夜亚洲精品午夜鲁丝片 | 亚洲女爱视频在线| 亚洲福利一区二区| 亚洲成人av福利| 激情国产一区二区| 99久久久国产精品| 91.com在线观看| 久久亚洲捆绑美女| 欧美激情在线免费观看| 香蕉加勒比综合久久| 激情偷乱视频一区二区三区| 91首页免费视频| 欧美日韩精品高清| 久久色视频免费观看| 亚洲成人自拍一区| 精品一区二区三区欧美| 成人性生交大片免费| 欧美精品 日韩| 国产色一区二区| 五月婷婷久久丁香| 国产精品中文字幕日韩精品| 成人高清免费观看| 日韩一区二区免费高清| 国产精品美女一区二区三区| 婷婷激情综合网| 成人毛片在线观看| 欧美日韩亚洲综合一区 | 亚洲黄色免费电影| 亚洲高清视频在线| 国产成人精品一区二| 欧美色中文字幕| 国产欧美va欧美不卡在线| 日本欧美在线观看| 日韩一卡二卡三卡国产欧美| 国产精品久久网站| 久久av中文字幕片| 日韩视频免费观看高清完整版| 国产欧美日本一区视频| 国产欧美精品一区| 中文字幕 久热精品 视频在线| 国产精品久久久久久久久果冻传媒 | 亚洲精品一区二区三区福利| 亚洲伦理在线精品| 九九**精品视频免费播放| 欧美高清dvd| 亚洲欧洲精品成人久久奇米网| 久久99久久99小草精品免视看| 一本色道久久综合亚洲aⅴ蜜桃| 精品国产免费人成在线观看| 午夜不卡在线视频| 日本高清无吗v一区| 久久亚洲一区二区三区明星换脸 | 蜜臀久久99精品久久久久久9| a级高清视频欧美日韩| 337p亚洲精品色噜噜| 一区二区三区久久| 成人av资源在线观看| 国产三级精品三级| 久久99精品网久久| 欧美精品v国产精品v日韩精品| 亚洲线精品一区二区三区八戒| 成人免费视频免费观看| 日韩欧美在线不卡| 亚洲成在线观看| 色妹子一区二区| 亚洲精品久久7777| 色综合色综合色综合色综合色综合| 精品精品欲导航| 麻豆视频观看网址久久| 欧美日韩三级在线| 日本亚洲一区二区| 欧美精品黑人性xxxx| 亚洲成在人线免费| 欧美一区二区三区视频免费播放| 亚洲一区精品在线| 欧美日韩久久不卡| 亚洲国产日韩a在线播放| 99re视频这里只有精品| 国产精品拍天天在线| 国产ts人妖一区二区| 国产精品白丝在线| av一区二区三区在线| 国产人妖乱国产精品人妖| 激情另类小说区图片区视频区| 日韩一级大片在线观看| 色婷婷精品大在线视频| 国产精品人成在线观看免费| 开心九九激情九九欧美日韩精美视频电影 | 韩国成人在线视频| 精品国产伦理网| 日产国产高清一区二区三区| 欧美人狂配大交3d怪物一区| 亚洲韩国一区二区三区| 日韩三级精品电影久久久 | 国产在线视频不卡二| 国产精品嫩草99a| 99久久综合色| 亚洲免费观看在线视频| 51久久夜色精品国产麻豆| 麻豆freexxxx性91精品| 国产欧美日韩精品在线| 不卡av在线网| 夜夜嗨av一区二区三区中文字幕| 欧美精品久久99| 狠狠色狠狠色合久久伊人| 中文字幕在线视频一区| 欧美性大战久久久| 日韩国产精品91| 中文在线资源观看网站视频免费不卡| 国产不卡一区视频| 亚洲.国产.中文慕字在线| 日韩一区二区三区精品视频| 国产一区二区三区免费观看| 亚洲欧美在线视频观看| 欧美日韩免费视频| 国产凹凸在线观看一区二区| 亚洲精品视频一区二区| 7777精品伊人久久久大香线蕉的| 九色综合狠狠综合久久| 亚洲同性gay激情无套| 欧美一级搡bbbb搡bbbb| 高清成人在线观看| 亚洲一区二区三区小说| 久久久久久夜精品精品免费| 色悠悠久久综合| 国产精品一区二区你懂的| 亚洲乱码日产精品bd| 欧美日韩国产bt| 成人动漫中文字幕| 亚洲成人7777| 亚洲人吸女人奶水| 欧美白人最猛性xxxxx69交| 欧美在线不卡一区| 国产精品夜夜嗨| 一区二区三区四区视频精品免费| 欧美一区二区黄色| 99精品久久免费看蜜臀剧情介绍| 久久成人综合网| 亚洲伦理在线精品| 精品久久久久久综合日本欧美 | 久久亚洲精华国产精华液 | 久久色视频免费观看| 欧美性xxxxx极品少妇| 蜜臀国产一区二区三区在线播放| 国产精品看片你懂得| 日韩欧美一二三| 欧美性大战久久久| 99热精品一区二区| 成人国产在线观看| 久久机这里只有精品| 国产精品拍天天在线| 国产欧美一区二区精品性色超碰| 欧美在线播放高清精品| 91丨九色丨黑人外教| 国产不卡一区视频| 高清不卡在线观看| 精品影院一区二区久久久| 日本vs亚洲vs韩国一区三区| 一区二区在线观看视频在线观看|