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

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

?? bencode.cpp

?? 在嵌入linux-arm上運行的bt下載應用程序
?? CPP
字號:
#include "./def.h"#include <sys/types.h>#include "bencode.h"#ifndef WINDOWS#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <limits.h>#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>static const char* next_key(const char *keylist){  for(;*keylist && *keylist != KEY_SP; keylist++);  if(*keylist) keylist++;  return keylist;}static size_t compare_key(const char *key,size_t keylen,const char *keylist){  for(;keylen && *keylist && *key==*keylist;keylen--,key++,keylist++) ;  if(!keylen) if(*keylist && *keylist!=KEY_SP) return 1;  return keylen;}size_t buf_long(const char *b,size_t len,char beginchar,char endchar,int64_t *pi){  const char *p = b;  const char *psave;  if(2 > len) return 0;	/* buffer too small */  if( beginchar ){     if(*p != beginchar) return 0;     p++; len--;  }  for(psave = p; len && isdigit(*p); p++,len--) ;  if(!len || MAX_INT_SIZ < (p - psave) || *p != endchar) return 0;  if( pi ){    if( beginchar ) *pi = strtoll(b + 1,(char**) 0,10);    else  *pi=strtoll(b,(char**) 0,10);  }  return (size_t)( p - b + 1 );}size_t buf_int(const char *b,size_t len,char beginchar,char endchar,size_t *pi){  size_t r;  if( pi ){    int64_t pl;    r = buf_long(b,len,beginchar,endchar,&pl);    *pi = (size_t) pl;  }else{    r = buf_long(b,len,beginchar,endchar,(int64_t*) 0);  }  return r;}size_t buf_str(const char *b,size_t len,const char **pstr,size_t* slen){  size_t rl,sl;  rl = buf_int(b,len,0,':',&sl);  if( !rl ) return 0;  if(len < rl + sl) return 0;  if(pstr) *pstr = b + rl;  if(slen) *slen = sl;  return( rl + sl );}size_t decode_int(const char *b,size_t len){  return(buf_long(b,len,'i','e',(int64_t*) 0));}size_t decode_str(const char *b,size_t len){  return (buf_str(b,len,(const char**) 0,(size_t*) 0));}size_t decode_dict(const char *b,size_t len,const char *keylist){  size_t rl,dl,nl;  const char *pkey;  dl = 0;  if(2 > len || *b != 'd') return 0;  dl++; len--;  for(;len && *(b + dl) != 'e';){    rl = buf_str(b + dl,len,&pkey,&nl);    if( !rl || KEYNAME_SIZ < nl) return 0;    dl += rl;    len -= rl;    if(keylist && compare_key(pkey,nl,keylist) == 0){      pkey = next_key(keylist);      if(! *pkey ) return dl;      rl = decode_dict(b + dl,len, pkey);      if( !rl ) return 0;      return dl + rl;    }    rl = decode_rev(b + dl,len,(const char*) 0);    if( !rl ) return 0;    dl += rl;len -= rl;  }  if( !len || keylist) return 0;  return dl + 1;	/* add the last char 'e' */}size_t decode_list(const char *b,size_t len,const char *keylist){  size_t ll,rl;  ll = 0;  if(2 > len || *b != 'l') return 0;  len--; ll++;  for(;len && *(b + ll) != 'e';){    rl = decode_rev(b + ll,len,keylist);    if( !rl ) return 0;    ll += rl; len -= rl;  }  if( !len ) return 0;  return ll + 1;  /* add last char 'e' */}size_t decode_rev(const char *b,size_t len,const char *keylist){  if( !b ) return 0;  switch( *b ){  case 'i': return decode_int(b,len);  case 'd': return decode_dict(b,len,keylist);  case 'l': return decode_list(b,len,keylist);  default: return decode_str(b,len);  }}size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int64_t *pl,int method){  size_t pos;  char kl[KEYNAME_LISTSIZ];  strcpy(kl,keylist);  pos = decode_rev(b, len, kl);  if( !pos ) return 0;  switch(method){  case QUERY_STR: return(buf_str(b + pos,len - pos, ps, pi));  case QUERY_INT: return(buf_int(b + pos,len - pos, 'i', 'e', pi));  case QUERY_POS:          if(pi) *pi = decode_rev(b + pos, len - pos, (const char*) 0);          return pos;  case QUERY_LONG: return(buf_long(b + pos,len - pos, 'i', 'e', pl));  default: return 0;  }}size_t bencode_buf(const char *buf,size_t len,FILE *fp){  char slen[MAX_INT_SIZ];  char *b;  if( MAX_INT_SIZ <= snprintf(slen, MAX_INT_SIZ, "%u:", len) ) return 0;  if( fwrite( slen, strlen(slen), 1, fp) != 1) return 0;  b = new char[len + strlen(slen)];#ifndef WINDOWS  if( !b ) return 0;#endif  if( fwrite(buf, len, 1, fp) != 1 ){ delete []b; return 0;}  delete []b;  return 1;}size_t bencode_str(const char *str, FILE *fp){  return bencode_buf(str, strlen(str), fp);}size_t bencode_int(const int integer, FILE *fp){  char buf[MAX_INT_SIZ];  if( EOF == fputc('i', fp)) return 0;  if( MAX_INT_SIZ <= snprintf(buf, MAX_INT_SIZ, "%u", integer) )    return 0;  if( fwrite(buf, strlen(buf), 1, fp) != 1 ) return 0;  return ( EOF == fputc('e', fp)) ? 0: 1;}size_t bencode_begin_dict(FILE *fp){  return (EOF == fputc('d',fp)) ? 0 : 1;}size_t bencode_begin_list(FILE *fp){  return (EOF == fputc('l',fp)) ? 0 : 1;}size_t bencode_end_dict_list(FILE *fp){  return (EOF == fputc('e',fp)) ? 0 : 1;}size_t bencode_path2list(const char *pathname, FILE *fp){  char *pn;  const char *p = pathname;    if( bencode_begin_list(fp) != 1 ) return 0;    for(; *p;){    pn = strchr(p, PATH_SP);    if( pn ){      if( bencode_buf(p, pn - p, fp) != 1) return 0;      p = pn + 1;    }else{      if( bencode_str(p, fp) != 1) return 0;      break;    }  }    return bencode_end_dict_list(fp);}size_t decode_list2path(const char *b, size_t n, char *pathname){  const char *pb = b;  const char *s = (char *) 0;  size_t r,q;  if( 'l' != *pb ) return 0;  pb++;  n--;  if( !n ) return 0;  for(; n;){    if(!(r = buf_str(pb, n, &s, &q)) ) return 0;    memcpy(pathname, s, q);    pathname += q;    pb += r; n -= r;     if( 'e' != *pb ){*pathname = PATH_SP, pathname++;} else break;  }  *pathname = '\0';  return (pb - b + 1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性欧美疯狂xxxxbbbb| 97se亚洲国产综合自在线观| 国产精品亚洲专一区二区三区| 懂色av一区二区三区蜜臀| 欧美探花视频资源| 久久久久久久av麻豆果冻| 美女一区二区在线观看| 成人av影院在线| 日韩一区二区免费在线观看| 国产精品国模大尺度视频| 日本不卡视频在线观看| 一本一道久久a久久精品| 国产午夜精品一区二区三区视频| 日韩精品欧美精品| 色先锋资源久久综合| 中文字幕精品一区二区精品绿巨人 | 国产高清精品久久久久| 欧美视频一二三区| 最近日韩中文字幕| 国产成人精品免费视频网站| 日韩欧美在线123| 亚洲va国产天堂va久久en| 91亚洲精品久久久蜜桃| 国产日产亚洲精品系列| 另类中文字幕网| 日韩你懂的在线观看| 香蕉影视欧美成人| 欧美性猛交xxxx乱大交退制版 | 欧美日韩在线播放| 专区另类欧美日韩| av激情亚洲男人天堂| 国产精品国产成人国产三级| 欧美色精品在线视频| 国产精品久久久久久久午夜片| 国产综合成人久久大片91| 欧美一区二区三区免费| 日韩成人伦理电影在线观看| 欧美日韩精品福利| 视频在线观看国产精品| 欧美日韩你懂得| 一级中文字幕一区二区| 在线精品观看国产| 婷婷久久综合九色综合绿巨人| 欧美三级中文字幕在线观看| 亚洲一区二区三区四区在线免费观看| 日本高清不卡视频| 亚洲第一综合色| 日韩一区二区三区av| 国产一区二区在线观看视频| 久久色在线观看| 成人精品小蝌蚪| 亚洲精品久久久蜜桃| 欧美日韩一区国产| 久久99国产精品尤物| 日本一区二区三区国色天香 | 国产精品二三区| 日本韩国欧美一区| 成人av资源在线| 亚洲日本电影在线| 欧美电影在哪看比较好| 精品一二三四区| 国产精品嫩草影院av蜜臀| 在线观看日韩av先锋影音电影院| 午夜精品久久久久影视| 欧美电影免费观看完整版| 国产成人精品一区二| 亚洲激情一二三区| 欧美电影免费观看高清完整版在 | 亚洲麻豆国产自偷在线| 在线播放一区二区三区| 国产成人av福利| 亚洲黄色免费电影| 精品日韩一区二区三区| www.色精品| 免费成人美女在线观看| 亚洲色欲色欲www| 日韩一区二区三区电影| 色悠悠久久综合| 激情文学综合网| 亚洲国产一区二区三区青草影视| xfplay精品久久| 在线观看日韩av先锋影音电影院| 国产一区二区三区视频在线播放| 综合分类小说区另类春色亚洲小说欧美 | 青青草国产精品亚洲专区无| 国产精品久久精品日日| 日韩精品影音先锋| 日本高清不卡aⅴ免费网站| 国产精品亚洲一区二区三区妖精| 亚洲高清在线精品| 国产精品欧美综合在线| 精品久久人人做人人爰| 欧美日韩精品一二三区| 成人av午夜影院| 国产在线精品视频| 香蕉成人啪国产精品视频综合网| 国产精品区一区二区三区| 日韩欧美国产一二三区| 欧美在线播放高清精品| 成人免费不卡视频| 国产一区二区三区精品视频| 日本在线不卡视频| 亚洲高清久久久| 亚洲精品va在线观看| 国产精品免费人成网站| 2023国产精华国产精品| 日韩午夜小视频| 欧美电影在线免费观看| 欧美性生活一区| 欧美亚男人的天堂| 91麻豆蜜桃一区二区三区| eeuss国产一区二区三区| 国产成人综合网站| 国产精品77777| 国产一区999| 国产成人精品影院| 国产精品自在欧美一区| 国产精品一区专区| 韩国精品免费视频| 国产一区二区免费在线| 国产麻豆视频一区| 国产成人精品1024| 成人国产电影网| thepron国产精品| 91麻豆蜜桃一区二区三区| 91国在线观看| 欧美人xxxx| 精品国精品国产| 国产婷婷色一区二区三区四区| 国产调教视频一区| 中文字幕一区av| 亚洲h在线观看| 久久国产麻豆精品| 福利视频网站一区二区三区| voyeur盗摄精品| 欧美日韩第一区日日骚| 日韩一区二区三区视频| 国产女人18水真多18精品一级做 | 国产在线日韩欧美| 国产东北露脸精品视频| av电影天堂一区二区在线观看| 色综合天天狠狠| 91精品国产入口| 欧美激情一区二区三区全黄 | 精品少妇一区二区三区在线视频| 精品成人免费观看| 国产精品护士白丝一区av| 亚洲国产视频一区二区| 麻豆成人在线观看| 成人午夜视频在线| 欧美日韩国产小视频在线观看| 日韩欧美激情一区| 国产精品久久久99| 日韩成人一区二区| 成人中文字幕合集| 欧美日韩激情一区二区三区| 久久一留热品黄| 一二三四社区欧美黄| 精品一区二区在线观看| 91啪在线观看| 欧美精品一区二区三区蜜桃视频| 亚洲欧洲精品一区二区精品久久久| 亚洲国产你懂的| 国产成人精品一区二区三区网站观看| 欧美综合在线视频| 国产欧美中文在线| 日韩**一区毛片| 91免费小视频| 久久综合色一综合色88| 亚洲成人精品一区| 成人精品视频.| 精品日韩一区二区三区免费视频| 亚洲精品中文字幕在线观看| 国产中文字幕精品| 91麻豆精品国产91久久久| 国产精品国产精品国产专区不蜜 | 国产亚洲欧美日韩日本| 亚洲6080在线| 91亚洲大成网污www| 精品福利一二区| 日韩一区精品字幕| 欧美中文字幕一二三区视频| 国产亚洲精品免费| 久久激情五月婷婷| 色狠狠一区二区三区香蕉| 国产欧美日韩不卡| 国产精品一卡二| 欧美xxxxx牲另类人与| 日韩国产精品91| 欧美色精品在线视频| 亚洲另类在线视频| 91一区在线观看| 国产精品午夜电影| 国产精品99久久久久久宅男| 精品国产一区二区在线观看| 五月婷婷久久综合| 欧美色涩在线第一页| 亚洲一区在线观看免费观看电影高清| 91一区二区在线| 中文字幕一区免费在线观看|