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

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

?? grub-0.97-patch3-ntfs

?? grub for dos ,people can use it in dos for calling linux
?? 97-PATCH3-NTFS
?? 第 1 頁 / 共 3 頁
字號:
++#ifndef NO_ATTRIBUTE_LIST+static __u32 get_next_attribute_list(MFTR *mftr, int *size) {+    int l, t, mftno;+#ifdef DEBUG_NTFS+    printf("get_next_attribute_list: type=%x\n",mftr->attr_type);+#endif+again:+    while(mftr->attr_list_len>0x14) {+	t = *(__u32 *)(mftr->attr_list + 0);+	l = *(__u16 *)(mftr->attr_list + 4);+#ifdef DEBUG_NTFS+	printf("attr_list type=%x len=%x remain=%x\n", t, l, mftr->attr_list_len);+#endif+	if(l==0 || l>mftr->attr_list_len) return 0;+	mftno = *(__u32 *)(mftr->attr_list + 0x10);+	mftr->attr_list_len -= l;+	mftr->attr_list += l;+	if(t==mftr->attr_type)+	{+#ifdef DEBUG_NTFS+	printf("attr_list mftno=%x\n", mftno);+#endif+	    if(read_mft_record(mftno, mftr->mft2, (mftr==mmft))==0)+		break;+	    if(find_attribute(mftr->mft2, mftr->attr_type, mftr->attr_name,+			&mftr->attr, size, &mftr->attr_len, &mftr->attr_flag))+		return 1;+	}+    }+#ifndef NO_NON_RESIDENT_ATTRIBUTE_LIST+    if(mftr->attr_list_off < mftr->attr_list_size) {+	int len = mftr->attr_list_size - mftr->attr_list_off;+	if(len > BLOCK_SIZE) len = BLOCK_SIZE;++	if(mftr->attr_list_len)+	    memmove(mftr->attr_list_buf, mftr->attr_list, mftr->attr_list_len);+	mftr->attr_list = mftr->attr_list_buf;++	if(read_attribute( NULL, mftr->attr_list_off,+			mftr->attr_list_buf + mftr->attr_list_len,+			len, &mftr->attr_list_runl) != len)+	{+#ifdef DEBUG_NTFS+	    printf("CORRUPT NON-RESIDENT ATTRIBUTE_LIST\n");+#endif+	    /* corrupt */+	    errnum = ERR_FSYS_CORRUPT;+	    mftr->attr_list_size = 0;+	    mftr->attr_len = 0;+	    mftr->attr_list = NULL;+	    return 0;+	}++	mftr->attr_list_len += len;+	mftr->attr_list_off += len;+	goto again;+    }+#endif+    mftr->attr_list = NULL;+    return 0;+}+#endif++static int search_attribute( MFTR *mftr, int type, char *name)+{+#ifdef DEBUG_NTFS+    printf("searching attribute %x <%s>\n", type, name);+#endif ++    mftr->attr_type = type;+    mftr->attr_name = name;+    mftr->attr_list = NULL;+    mftr->attr_list_len = 0;+    mftr->attr_list_size = 0;+    mftr->attr_list_off = 0;+    dcrem = dclen = 0;++#ifndef NO_ATTRIBUTE_LIST+    if(find_attribute(mftr->mft, at_attribute_list, NONAME,+		      &mftr->attr_list, &mftr->attr_list_size,+		      &mftr->attr_list_len, &mftr->attr_list_off)) {+	if(mftr->attr_list_off&ATTR_RESIDENT) {+	    /* resident at_attribute_list */+	    mftr->attr_list_size = 0;+#ifdef DEBUG_NTFS+	    printf("resident attribute_list len=%x\n", mftr->attr_list_len);+#endif+	} else {+#ifdef DEBUG_NTFS+	    printf("non-resident attribute_list len=%x size=%x\n",+		   mftr->attr_list_len, mftr->attr_list_size);+#endif+#ifndef NO_NON_RESIDENT_ATTRIBUTE_LIST+	    init_run_list(mftr->attr_list, mftr->attr_list_len, &mftr->attr_list_runl, NULL);+	    if(get_next_run(&mftr->attr_list_runl)==0 ||+	       mftr->attr_list_runl.cnum==0)+		mftr->attr_list_size = 0;+#endif+	    mftr->attr_list = NULL;+	    mftr->attr_list_len = 0;+	}+    }+#endif++    if(find_attribute(mftr->mft, type, name,+		      &mftr->attr, &mftr->attr_size, &mftr->attr_len,+		      &mftr->attr_flag)+#ifndef NO_ATTRIBUTE_LIST+       || get_next_attribute_list(mftr, &mftr->attr_size)+#endif+       )+    {+#ifndef NO_ATTRIBUTE_LIST+	if(!(mftr->attr_flag&ATTR_RESIDENT)){+	    init_run_list(mftr->attr, mftr->attr_len, &mftr->runl, (__u32 *)&mftr->attr_inited);+	    if(mftr->attr_inited > mftr->attr_size)+	    	mftr->attr_inited = mftr->attr_size;+	    if(get_next_run(&mftr->runl)==0) {+		mftr->attr_flag |= ATTR_RESIDENT;+		mftr->attr_len = 0;+	    }+	} else+	    mftr->attr_inited = mftr->attr_size;+#endif++	return 1;+    }++    mftr->attr_type = 0;+    return 0;+}++static int get_run( RUNL *rl, int vcn, int *clp, int *lenp) {+    if(rl->evcn < vcn)+	return 0;++    if(rl->vcn > vcn) {+    	rewind_run_list(rl);+	get_next_run(rl);+    }++    while(rl->vcn+rl->clen <= vcn)+    {+	if(get_next_run(rl)==0)+	    return 0;+    }++    if(clp) *clp = rl->cnum == 0 ? 0 : rl->cnum + vcn - rl->vcn;+    if(lenp) *lenp = rl->clen - vcn + rl->vcn;+    return 1;+}++static int search_run(MFTR *mftr, int vcn) {++    if( mftr->attr==NULL && !search_attribute(mftr, mftr->attr_type, mftr->attr_name))+	return 0;++    if(mftr->runl.svcn > vcn)+	search_attribute(mftr, mftr->attr_type, mftr->attr_name);++#ifdef NO_ATTRIBUTE_LIST+    if(mftr->runl.evcn < vcn)+	return 0;+#else+    while(mftr->runl.evcn < vcn) {+	if(get_next_attribute_list(mftr, NULL)==0) {+	    mftr->attr = NULL;+	    return 0;+	}+	init_run_list(mftr->attr, mftr->attr_len, &mftr->runl, NULL);+	if(get_next_run(&mftr->runl)==0) {+	    mftr->attr = NULL;+	    return 0;+	}+    }+#endif++    return 1;+}++static int read_attribute(MFTR *mftr, int offset, char *buf, int len, RUNL *from_rl) {+    int vcn;+    int cnum, clen;+    int done = 0;+    int n;+    RUNL *rl;++    if(!from_rl && (mftr->attr_flag & ATTR_RESIDENT)) {+	/* resident attribute */+	if(offset > mftr->attr_len)+	    return 0;+	if(offset+len > mftr->attr_len)+	    len = mftr->attr_len - offset;+	memmove( buf, mftr->attr + offset, len);+	return len;+    }++    vcn = offset / clustersize;+    offset %= clustersize;++    while(len>0) {+	if(from_rl)+	    rl = from_rl;+	else if(search_run(mftr, vcn) == 0)+	    break;+	else+	    rl = &mftr->runl;+	if(get_run(rl, vcn, &cnum, &clen) == 0)+	    break;+	if(cnum==0 && from_rl)+	    break;+	n = clen * clustersize - offset;+	if(n > len) n = len;+	if(cnum==0) {+	    memset( buf, 0, n);+	} else if(!devread(cnum*(clustersize>>9)+(offset>>9), offset&0x1ff, n, buf))+	    break;++	buf += n;+	vcn += (offset+n)/clustersize;+	done += n;+	offset = 0;+	len -= n;+    }+    return done;+}++static int read_mft_record(int mftno, char *mft, int self){+#ifdef DEBUG_NTFS+    printf("Reading MFT record: mftno=%d\n", mftno);+#endif+    if( read_attribute( mmft, mftno * mft_record_size,+	    mft, mft_record_size, self?mft_run:NULL) != mft_record_size)+	return 0;+    if(!fixup_record( mft, "FILE", mft_record_size))+	return 0;+    return 1;+}++#ifndef NO_NTFS_DECOMPRESSION+static int get_16_cluster(MFTR *mftr, int vcn) {+    int n = 0, cnum, clen;+    while(n < 16 && search_run(mftr, vcn) && get_run(&mftr->runl, vcn, &cnum, &clen) && cnum) {+	if(clen > 16 - n)+	    clen = 16 - n;+	vcn += clen;+	while(clen--)+	    cluster16[n++] = cnum++;+    }+    cluster16[n] = 0;+    return n;+}++static inline int compressed_block_size( unsigned char *src ) {+    return 3 + (*(__u16 *)src & 0xfff);+}++static int decompress_block(unsigned char *dest, unsigned char *src) {+    int head;+    int copied=0;+    unsigned char *last;+    int bits;+    int tag=0;++    /* high bit indicates that compression was performed */+    if(!(*(__u16 *)src & 0x8000)) {+	memmove(dest,src+2,0x1000);+	return 0x1000;+    }++    if((head = *(__u16 *)src & 0xFFF)==0)+	/* block is not used */+	return 0;++    src += 2;+    last = src+head;+    bits = 0;++    while(src<=last)+    {+	if(copied>4096)+	{+#ifdef DEBUG_NTFS+	    printf("decompress error 1\n");+#endif+	    errnum = ERR_FSYS_CORRUPT;+	    return 0;+	}+	if(!bits){+	    tag=*(__u8 *)src;+	    bits=8;+	    src++;+	    if(src>last)+		break;+	}+	if(tag & 1){+	    int i,len,delta,code,lmask,dshift;+	    code = *(__u16 *)src;+	    src+=2;+	    if(!copied)+	    {+#ifdef DEBUG_NTFS+		printf("decompress error 2\n");+#endif+		errnum = ERR_FSYS_CORRUPT;+		return 0;+	    }+	    for(i=copied-1,lmask=0xFFF,dshift=12;i>=0x10;i>>=1)+	    {+		lmask >>= 1;+		dshift--;+	    }+	    delta = code >> dshift;+	    len = (code & lmask) + 3;+	    for(i=0; i<len; i++)+	    {+		dest[copied]=dest[copied-delta-1];+		copied++;+	    }+	} else+	    dest[copied++]=*(__u8 *)src++;+	tag>>=1;+	bits--;+    }++    return copied;+}+#endif++int ntfs_read(char *buf, int len){+    int ret;+#ifdef STAGE1_5+/* stage2 can't be resident/compressed/encrypted files,+ * but does sparse flag, cause stage2 never sparsed+ */+    if((cmft->attr_flag&~ATTR_SPARSE) != ATTR_NORMAL)+	return 0;+    disk_read_func = disk_read_hook;+    ret = read_attribute(cmft, filepos, buf, len, 0);+    disk_read_func = NULL;+    filepos += ret;+#else++/*#ifndef NO_NTFS_DECOMPRESSION*/+    //int off;+    //int vcn;+    //int size;+    int len0 = 0;+/*endif*/++    if(len<=0 || filepos >= cmft->attr_size || (cmft->attr_flag&ATTR_ENCRYPTED))+	return 0;++    if(filepos+len > cmft->attr_size)+	len = cmft->attr_size - filepos;+#if 0+    if(filepos >= cmft->attr_inited) {+#ifdef DEBUG_NTFS+printf("reading uninitialized data 1\n");+#endif+    	memset(buf, 0, len);+	return len;+    } else if(filepos+len > cmft->attr_inited) {+    	len0 = len;+	len = cmft->attr_inited - filepos;+	len0 -= len;+    } else+    	len0 = 0;+#endif+#ifdef DEBUG_NTFS+printf("read filepos=%x filemax=%x inited=%x len=%x len0=%x\n",filepos,filemax,cmft->attr_inited,len,len0);+#endif++    if((cmft->attr_flag&(ATTR_COMPRESSED|ATTR_RESIDENT)) != ATTR_COMPRESSED) {+	if(cmft->attr_flag==ATTR_NORMAL)+	    disk_read_func = disk_read_hook;+	ret = read_attribute(cmft, filepos, buf, len, 0);+	if(cmft->attr_flag==ATTR_NORMAL)+	    disk_read_func = NULL;+	filepos += ret;+	if(ret==len && len0) {+		memset(buf+len, 0, len0);+		filepos += len0;+		ret += len0;+	}+	return ret;+    }++    ret = 0;++#ifndef NO_NTFS_DECOMPRESSION+    /* NTFS don't support compression if cluster size > 4k */+    if(clustersize > 4096) {+	errnum = ERR_FSYS_CORRUPT;+	return 0;+    }++    while(len > 0){+#ifdef DEBUG_NTFS+printf("Reading filepos=%x len=%x\n", filepos, len);+#endif+	if(filepos >= dcoff && filepos < (dcoff+dclen)) {+#ifdef DEBUG_NTFS+printf("decompress cache %x+%x\n", dcoff, dclen);+#endif+	    size = dcoff + dclen - filepos;+	    if(size > len) size = len;+	    memmove( buf, dcdbuf + filepos - dcoff, size);+	    filepos += size;+	    len -= size;+	    ret += size;+	    buf += size;+	    if(len==0) {+		if(len0) {+#ifdef DEBUG_NTFS+printf("reading uninitialized data 2\n");+#endif+		    memset(buf, 0, len0);+		    filepos += len0;+		    ret += len0;+		}+		return ret;+	    }+	}++	vcn = filepos / clustersize / 16;+	vcn *= 16;+	off = filepos % (16 * clustersize);+	if( dcvcn != vcn || filepos < dcoff)+	    dcrem = 0;++#ifdef DEBUG_NTFS+printf("vcn %x off %x dcrem %x\n", vcn, off, dcrem);+#endif+	if(dcrem) {+	    int head;++	    /* reading source */+	    if(dcslen < 2 || compressed_block_size(dcsptr) > dcslen) {+		if(cluster16[index16]==0) {+		    errnum = ERR_FSYS_CORRUPT;+		    return ret;+		}+		if(dcslen)+		    memmove(dcsbuf, dcsptr, dcslen);+		dcsptr = dcsbuf;+		while((dcslen+clustersize) < DECOMP_SOURCE_BUFFER_SIZE) {+		    if(cluster16[index16]==0)+			break;+#ifdef DEBUG_NTFS+printf("reading dcslen=%x cluster %x\n", dcslen, cluster16[index16]);+#endif+		    if(!devread(cluster16[index16]*(clustersize>>9), 0, clustersize, dcsbuf+dcslen))+			return ret;+		    dcslen += clustersize;+		    index16++;+		}+	    }+	    /* flush destination */+	    dcoff += dclen;+	    dclen = 0;++	    while(dcrem && dclen < DECOMP_DEST_BUFFER_SIZE &&+		  dcslen >= 2 && (head=compressed_block_size(dcsptr)) <= dcslen) {+		size = decompress_block(dcdbuf+dclen, dcsptr);+		if(dcrem>=0x1000 && size!=0x1000) {+		    errnum = ERR_FSYS_CORRUPT;+		    return ret;+		}+		dcrem -= size;+		dclen += size;+		dcsptr += head;+		dcslen -= head;+	    }+	    continue;+	}+	dclen = dcrem = 0;+#ifdef DEBUG_NTFS+printf("get next 16 clusters\n");+#endif+	switch(get_16_cluster(cmft, vcn)) {+	case 0:+#ifdef DEBUG_NTFS+printf("sparse\n");+#endif+	    /* sparse */+	    size = 16 * clustersize - off;+	    if( len < size )+		size = len;+#ifndef STAGE1_5+	    memset( buf, 0, size);+#endif+	    filepos += size;+	    len -= size;+	    ret += size;+	    buf += size;+	    break;++	case 16:+#ifdef DEBUG_NTFS+printf("uncompressed\n");+#endif+	    /* uncompressed */+	    index16 = off / clustersize;+	    off %= clustersize;+	    while(index16 < 16) {+		size = clustersize - off;+		if( len < size )+		    size = len;+		if(!devread(cluster16[index16]*(clustersize>>9)+(off>>9), off&0x1ff, size, buf))+		    return ret;+		filepos += size;+		len -= size;+		ret += size;+		if(len==0)+		    return ret;+		off = 0;+		buf += size;+		index16++;+	    }+	    break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲精品一区二区乱码| 欧美一区二区三区四区五区 | 日本免费在线视频不卡一不卡二| 久久97超碰色| 欧美特级限制片免费在线观看| 精品日韩一区二区三区| 亚洲综合在线五月| 国产精品99久久久久| 91超碰这里只有精品国产| 国产精品久久久久aaaa| 久久99国产精品成人| 欧美日韩亚洲丝袜制服| 亚洲欧洲制服丝袜| 国v精品久久久网| 精品国偷自产国产一区| 亚洲成人福利片| 色哟哟欧美精品| 中文字幕第一区| 国产高清不卡一区| 精品电影一区二区三区 | 欧美酷刑日本凌虐凌虐| 中文字幕在线观看不卡| 国产成人精品一区二区三区四区 | 成人黄色a**站在线观看| 精品国产乱码久久久久久闺蜜| 亚洲国产精品久久久久婷婷884| 国产99精品视频| 国产三级欧美三级日产三级99 | 精品一区二区三区免费视频| 欧美精品视频www在线观看| 亚洲国产综合91精品麻豆| 91免费视频网址| 亚洲精品乱码久久久久久| 99久久精品国产麻豆演员表| 国产精品美女www爽爽爽| 丁香一区二区三区| 中文字幕一区二区在线观看| 国产98色在线|日韩| 中文字幕在线观看一区| 91视视频在线观看入口直接观看www| 国产精品久久精品日日| 国产91综合网| 亚洲色图色小说| 色呦呦国产精品| 午夜精品一区二区三区免费视频 | 日本女人一区二区三区| 欧美高清视频一二三区| 麻豆精品精品国产自在97香蕉| 777奇米四色成人影色区| 老司机精品视频导航| 亚洲精品一区二区三区在线观看| 国产在线精品视频| 亚洲欧洲国产日本综合| 欧美午夜一区二区三区| 美女视频黄 久久| 久久伊人蜜桃av一区二区| 成人午夜精品一区二区三区| 亚洲日本韩国一区| 欧美精品久久99久久在免费线 | 国产精品一区二区久激情瑜伽| 国产精品午夜春色av| 欧洲av在线精品| 久久精品av麻豆的观看方式| 国产欧美日韩另类视频免费观看| 97se亚洲国产综合在线| 日日噜噜夜夜狠狠视频欧美人| 精品久久人人做人人爰| 91婷婷韩国欧美一区二区| 午夜私人影院久久久久| 久久精品亚洲麻豆av一区二区| 91美女片黄在线观看91美女| 日本不卡中文字幕| 国产精品国产精品国产专区不蜜| 欧美日韩精品欧美日韩精品一| 国产一区在线精品| 一区二区三区日韩| 国产亚洲欧美日韩俺去了| 欧美少妇bbb| 成人性生交大合| 开心九九激情九九欧美日韩精美视频电影| 国产欧美日韩综合精品一区二区| 91豆麻精品91久久久久久| 国产一区二区免费看| 亚洲电影一区二区三区| 中文字幕欧美日本乱码一线二线| 欧美日韩精品欧美日韩精品一综合| 国产91精品久久久久久久网曝门| 亚洲成a人v欧美综合天堂下载| 国产精品毛片a∨一区二区三区| 成人欧美一区二区三区| 亚洲精品在线观| 日韩午夜激情免费电影| 在线亚洲高清视频| 成人午夜免费视频| 国产精品18久久久久久vr| 日韩在线一区二区三区| 一区二区三区中文字幕电影| 欧美激情一区二区三区| 2020日本不卡一区二区视频| 欧美久久久久久蜜桃| 在线视频你懂得一区二区三区| 成人性视频网站| 国产91高潮流白浆在线麻豆| 美女尤物国产一区| 日本一不卡视频| 日本v片在线高清不卡在线观看| 国产精品久99| 国产精品午夜春色av| 国产日韩欧美亚洲| 久久久久久久久99精品| 亚洲精品一区二区三区香蕉| 精品日韩欧美在线| 26uuu亚洲综合色| 精品久久人人做人人爽| ww久久中文字幕| 2023国产一二三区日本精品2022| 日韩欧美亚洲一区二区| 日韩欧美久久久| 欧美成人艳星乳罩| wwwwxxxxx欧美| 欧美激情中文不卡| 自拍偷拍亚洲欧美日韩| 日韩一区欧美小说| 亚洲精品成a人| 午夜欧美一区二区三区在线播放| 亚洲高清免费一级二级三级| 一区二区三区国产豹纹内裤在线| 激情综合色综合久久综合| 美女www一区二区| 国产真实乱对白精彩久久| 韩国av一区二区三区| 懂色一区二区三区免费观看| av动漫一区二区| 欧美影院午夜播放| 欧美一区二区三区小说| 国产三级欧美三级日产三级99| 国产精品理伦片| 亚洲aⅴ怡春院| 精品一二三四区| av福利精品导航| 欧美日韩精品一区二区| 日韩精品一区二区在线| 国产午夜久久久久| 亚洲综合成人在线视频| 蜜桃一区二区三区在线观看| 国产91丝袜在线观看| 欧美色图免费看| 精品三级av在线| 亚洲自拍偷拍九九九| 久久国产精品一区二区| 99国产精品国产精品久久| 88在线观看91蜜桃国自产| 国产精品视频免费| 日韩黄色片在线观看| 高清久久久久久| 777奇米成人网| 成人欧美一区二区三区视频网页| 亚洲成av人片www| 国产成人精品免费视频网站| 欧美视频日韩视频| 欧美高清在线一区二区| 日韩在线一二三区| 色综合一区二区三区| 欧美va天堂va视频va在线| 一区二区三区欧美在线观看| 国产剧情在线观看一区二区| 欧美日韩在线播放三区四区| 国产欧美日韩卡一| 久久99国产精品免费网站| 欧美主播一区二区三区美女| 国产午夜一区二区三区| 日韩精品电影在线| 色琪琪一区二区三区亚洲区| 久久先锋影音av鲁色资源网| 午夜精品一区二区三区免费视频 | 欧美zozozo| 婷婷久久综合九色综合绿巨人 | 热久久一区二区| 欧美中文字幕久久| 国产精品卡一卡二| 欧美精选一区二区| 亚洲图片你懂的| 国产99久久久国产精品| 精品国产自在久精品国产| 天天综合日日夜夜精品| 在线观看亚洲成人| 亚洲丝袜另类动漫二区| 成人午夜视频免费看| 中文字幕巨乱亚洲| 国产成人亚洲精品狼色在线| 欧美成人性福生活免费看| 日韩精品电影一区亚洲| 5566中文字幕一区二区电影| 亚洲精品免费在线播放| 色先锋资源久久综合| 亚洲精品福利视频网站| 色嗨嗨av一区二区三区| 亚洲乱码一区二区三区在线观看| av一二三不卡影片| 亚洲日本丝袜连裤袜办公室|