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

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

?? imager.c

?? busybox最新版本. 嵌入式編程必不可少之工具.
?? C
字號:
/* vi: set sw=4 ts=4: *//* * image.c --- writes out the critical parts of the filesystem as a *	flat file. * * Copyright (C) 2000 Theodore Ts'o. * * Note: this uses the POSIX IO interfaces, unlike most of the other * functions in this library.  So sue me. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */#include <stdio.h>#include <string.h>#if HAVE_UNISTD_H#include <unistd.h>#endif#if HAVE_ERRNO_H#include <errno.h>#endif#include <fcntl.h>#include <time.h>#if HAVE_SYS_STAT_H#include <sys/stat.h>#endif#if HAVE_SYS_TYPES_H#include <sys/types.h>#endif#include "ext2_fs.h"#include "ext2fs.h"#ifndef HAVE_TYPE_SSIZE_Ttypedef int ssize_t;#endif/* * This function returns 1 if the specified block is all zeros */static int check_zero_block(char *buf, int blocksize){	char	*cp = buf;	int	left = blocksize;	while (left > 0) {		if (*cp++)			return 0;		left--;	}	return 1;}/* * Write the inode table out as a single block. */#define BUF_BLOCKS	32errcode_t ext2fs_image_inode_write(ext2_filsys fs, int fd, int flags){	unsigned int	group, left, c, d;	char		*buf, *cp;	blk_t		blk;	ssize_t		actual;	errcode_t	retval;	buf = xmalloc(fs->blocksize * BUF_BLOCKS);	for (group = 0; group < fs->group_desc_count; group++) {		blk = fs->group_desc[(unsigned)group].bg_inode_table;		if (!blk)			return EXT2_ET_MISSING_INODE_TABLE;		left = fs->inode_blocks_per_group;		while (left) {			c = BUF_BLOCKS;			if (c > left)				c = left;			retval = io_channel_read_blk(fs->io, blk, c, buf);			if (retval)				goto errout;			cp = buf;			while (c) {				if (!(flags & IMAGER_FLAG_SPARSEWRITE)) {					d = c;					goto skip_sparse;				}				/* Skip zero blocks */				if (check_zero_block(cp, fs->blocksize)) {					c--;					blk++;					left--;					cp += fs->blocksize;					lseek(fd, fs->blocksize, SEEK_CUR);					continue;				}				/* Find non-zero blocks */				for (d=1; d < c; d++) {					if (check_zero_block(cp + d*fs->blocksize, fs->blocksize))						break;				}			skip_sparse:				actual = write(fd, cp, fs->blocksize * d);				if (actual == -1) {					retval = errno;					goto errout;				}				if (actual != (ssize_t) (fs->blocksize * d)) {					retval = EXT2_ET_SHORT_WRITE;					goto errout;				}				blk += d;				left -= d;				cp += fs->blocksize * d;				c -= d;			}		}	}	retval = 0;errout:	free(buf);	return retval;}/* * Read in the inode table and stuff it into place */errcode_t ext2fs_image_inode_read(ext2_filsys fs, int fd,				  int flags EXT2FS_ATTR((unused))){	unsigned int	group, c, left;	char		*buf;	blk_t		blk;	ssize_t		actual;	errcode_t	retval;	buf = xmalloc(fs->blocksize * BUF_BLOCKS);	for (group = 0; group < fs->group_desc_count; group++) {		blk = fs->group_desc[(unsigned)group].bg_inode_table;		if (!blk) {			retval = EXT2_ET_MISSING_INODE_TABLE;			goto errout;		}		left = fs->inode_blocks_per_group;		while (left) {			c = BUF_BLOCKS;			if (c > left)				c = left;			actual = read(fd, buf, fs->blocksize * c);			if (actual == -1) {				retval = errno;				goto errout;			}			if (actual != (ssize_t) (fs->blocksize * c)) {				retval = EXT2_ET_SHORT_READ;				goto errout;			}			retval = io_channel_write_blk(fs->io, blk, c, buf);			if (retval)				goto errout;			blk += c;			left -= c;		}	}	retval = ext2fs_flush_icache(fs);errout:	free(buf);	return retval;}/* * Write out superblock and group descriptors */errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd,				   int flags EXT2FS_ATTR((unused))){	char		*buf, *cp;	ssize_t		actual;	errcode_t	retval;	buf = xmalloc(fs->blocksize);	/*	 * Write out the superblock	 */	memset(buf, 0, fs->blocksize);	memcpy(buf, fs->super, SUPERBLOCK_SIZE);	actual = write(fd, buf, fs->blocksize);	if (actual == -1) {		retval = errno;		goto errout;	}	if (actual != (ssize_t) fs->blocksize) {		retval = EXT2_ET_SHORT_WRITE;		goto errout;	}	/*	 * Now write out the block group descriptors	 */	cp = (char *) fs->group_desc;	actual = write(fd, cp, fs->blocksize * fs->desc_blocks);	if (actual == -1) {		retval = errno;		goto errout;	}	if (actual != (ssize_t) (fs->blocksize * fs->desc_blocks)) {		retval = EXT2_ET_SHORT_WRITE;		goto errout;	}	retval = 0;errout:	free(buf);	return retval;}/* * Read the superblock and group descriptors and overwrite them. */errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd,				  int flags EXT2FS_ATTR((unused))){	char		*buf;	ssize_t		actual, size;	errcode_t	retval;	size = fs->blocksize * (fs->group_desc_count + 1);	buf = xmalloc(size);	/*	 * Read it all in.	 */	actual = read(fd, buf, size);	if (actual == -1) {		retval = errno;		goto errout;	}	if (actual != size) {		retval = EXT2_ET_SHORT_READ;		goto errout;	}	/*	 * Now copy in the superblock and group descriptors	 */	memcpy(fs->super, buf, SUPERBLOCK_SIZE);	memcpy(fs->group_desc, buf + fs->blocksize,	       fs->blocksize * fs->group_desc_count);	retval = 0;errout:	free(buf);	return retval;}/* * Write the block/inode bitmaps. */errcode_t ext2fs_image_bitmap_write(ext2_filsys fs, int fd, int flags){	char		*ptr;	int		c, size;	char		zero_buf[1024];	ssize_t		actual;	errcode_t	retval;	if (flags & IMAGER_FLAG_INODEMAP) {		if (!fs->inode_map) {			retval = ext2fs_read_inode_bitmap(fs);			if (retval)				return retval;		}		ptr = fs->inode_map->bitmap;		size = (EXT2_INODES_PER_GROUP(fs->super) / 8);	} else {		if (!fs->block_map) {			retval = ext2fs_read_block_bitmap(fs);			if (retval)				return retval;		}		ptr = fs->block_map->bitmap;		size = EXT2_BLOCKS_PER_GROUP(fs->super) / 8;	}	size = size * fs->group_desc_count;	actual = write(fd, ptr, size);	if (actual == -1) {		retval = errno;		goto errout;	}	if (actual != size) {		retval = EXT2_ET_SHORT_WRITE;		goto errout;	}	size = size % fs->blocksize;	memset(zero_buf, 0, sizeof(zero_buf));	if (size) {		size = fs->blocksize - size;		while (size) {			c = size;			if (c > (int) sizeof(zero_buf))				c = sizeof(zero_buf);			actual = write(fd, zero_buf, c);			if (actual == -1) {				retval = errno;				goto errout;			}			if (actual != c) {				retval = EXT2_ET_SHORT_WRITE;				goto errout;			}			size -= c;		}	}	retval = 0;errout:	return retval;}/* * Read the block/inode bitmaps. */errcode_t ext2fs_image_bitmap_read(ext2_filsys fs, int fd, int flags){	char		*ptr, *buf = 0;	int		size;	ssize_t		actual;	errcode_t	retval;	if (flags & IMAGER_FLAG_INODEMAP) {		if (!fs->inode_map) {			retval = ext2fs_read_inode_bitmap(fs);			if (retval)				return retval;		}		ptr = fs->inode_map->bitmap;		size = (EXT2_INODES_PER_GROUP(fs->super) / 8);	} else {		if (!fs->block_map) {			retval = ext2fs_read_block_bitmap(fs);			if (retval)				return retval;		}		ptr = fs->block_map->bitmap;		size = EXT2_BLOCKS_PER_GROUP(fs->super) / 8;	}	size = size * fs->group_desc_count;	buf = xmalloc(size);	actual = read(fd, buf, size);	if (actual == -1) {		retval = errno;		goto errout;	}	if (actual != size) {		retval = EXT2_ET_SHORT_WRITE;		goto errout;	}	memcpy(ptr, buf, size);	retval = 0;errout:	free(buf);	return retval;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费网站| youjizz久久| 亚洲色图.com| 日韩女优毛片在线| 色老头久久综合| 国产老肥熟一区二区三区| 亚洲一区av在线| 国产精品少妇自拍| 日韩精品中午字幕| 欧美日韩一区 二区 三区 久久精品| 国产成人免费高清| 麻豆国产精品777777在线| 亚洲在线成人精品| 亚洲日本在线天堂| 国产精品理论在线观看| 欧美成人女星排行榜| 欧美日韩国产123区| 91浏览器在线视频| 99国产欧美久久久精品| 国产黄色精品视频| 国产一区二区三区四| 久久精品av麻豆的观看方式| 视频在线观看91| 五月天亚洲婷婷| 亚洲国产三级在线| 亚洲制服丝袜在线| 一区二区三区在线视频播放| 亚洲人成亚洲人成在线观看图片 | 成人av中文字幕| 国产一区二区看久久| 狠狠色丁香婷综合久久| 美女久久久精品| 美女在线观看视频一区二区| 爽好多水快深点欧美视频| 午夜精品久久一牛影视| 天堂一区二区在线| 青青草原综合久久大伊人精品| 亚洲国产日韩精品| 亚洲午夜激情av| 天天av天天翘天天综合网色鬼国产 | 精品国产乱码久久久久久夜甘婷婷| 欧美精品一卡两卡| 91.com视频| 日韩精品一区二区三区四区 | 欧美日韩中文精品| 欧美日韩一级片网站| 91精品国产综合久久久久久久| 91精品国产综合久久香蕉的特点 | 国产精品久久午夜| 中文字幕在线观看一区| 一区二区三区在线影院| 亚洲成av人在线观看| 麻豆成人免费电影| 国产自产高清不卡| 成人性生交大合| 91久久香蕉国产日韩欧美9色| 在线观看91视频| 91麻豆精品国产91久久久资源速度 | 久久99久久99小草精品免视看| 国产一区二区在线影院| voyeur盗摄精品| 91久久香蕉国产日韩欧美9色| 欧美日韩国产免费| 精品sm在线观看| 一色桃子久久精品亚洲| 亚洲第四色夜色| 精品亚洲国产成人av制服丝袜| 高潮精品一区videoshd| 在线观看亚洲一区| 精品国产一区二区三区久久久蜜月| 久久午夜色播影院免费高清| 国产精品久久久久精k8| 五月激情综合网| 成人一区二区三区中文字幕| 欧美亚洲免费在线一区| 欧美一区二区三区四区久久| 久久久99精品久久| 亚洲图片自拍偷拍| 国产精品888| 欧美精品高清视频| 国产精品久久久久久一区二区三区| 一区二区三区久久久| 久久精品99国产精品日本| www.在线成人| 欧美不卡视频一区| 亚洲激情自拍视频| 国产一区二区在线视频| 欧美色图天堂网| 欧美国产日韩亚洲一区| 免费在线视频一区| 91免费国产在线观看| 久久婷婷国产综合精品青草| 亚洲影院在线观看| 成人午夜私人影院| 精品日本一线二线三线不卡| 亚洲欧美激情小说另类| 国产资源精品在线观看| 555www色欧美视频| 亚洲影院久久精品| 豆国产96在线|亚洲| 日韩一区二区三区在线| 夜夜嗨av一区二区三区中文字幕| 国产999精品久久久久久| 日韩一级大片在线观看| 亚洲影视在线播放| 91视频精品在这里| 久久久久国产成人精品亚洲午夜| 亚洲成a人v欧美综合天堂 | 欧美日本在线一区| 亚洲欧洲色图综合| 国产成人亚洲综合a∨婷婷| 51精品秘密在线观看| 亚洲国产一区二区三区青草影视 | 欧美伊人精品成人久久综合97| 国产日韩影视精品| 九九视频精品免费| 欧美二区三区的天堂| 亚洲一二三四久久| 91丨porny丨在线| 亚洲欧美日韩一区二区| 91在线云播放| 中文字幕一区在线观看| 99久久久国产精品| 日本一区二区久久| 国产成人在线影院| 国产丝袜美腿一区二区三区| 韩国成人精品a∨在线观看| 日韩色在线观看| 日韩国产一二三区| 欧美一区二区三区啪啪| 日韩在线观看一区二区| 911精品产国品一二三产区| 性做久久久久久免费观看| 欧美在线视频全部完| 亚洲影院久久精品| 5566中文字幕一区二区电影| 日韩av中文在线观看| 日韩欧美国产电影| 国产在线视频不卡二| 久久亚洲精品国产精品紫薇| 精品一区二区av| 中文字幕乱码日本亚洲一区二区| 成人黄色电影在线| 亚洲激情一二三区| 欧美午夜精品久久久久久孕妇| 亚洲成人免费观看| 91精品国产91热久久久做人人 | 91色在线porny| 一级日本不卡的影视| 欧美吻胸吃奶大尺度电影| 午夜精品福利在线| 欧美大片国产精品| 大美女一区二区三区| 1024精品合集| 欧美日精品一区视频| 蜜臀av性久久久久av蜜臀妖精| 久久这里都是精品| 99热精品一区二区| 性做久久久久久免费观看| 日韩一区二区免费高清| 国产91丝袜在线18| 亚洲精品欧美在线| 日韩一区二区在线观看视频 | 久久成人麻豆午夜电影| 国产欧美一二三区| 在线中文字幕不卡| 久久精品国产一区二区| 中文字幕国产精品一区二区| 91福利在线播放| 久久se这里有精品| 亚洲欧美一区二区三区极速播放 | 蜜臀av一区二区在线观看| 国产欧美综合在线观看第十页| 色综合天天视频在线观看 | 亚洲综合激情网| 日韩精品在线一区二区| av一区二区不卡| 日韩经典中文字幕一区| 欧美国产欧美综合| 欧美一区二区在线不卡| 不卡视频一二三| 美女一区二区久久| 亚洲欧美日本在线| 精品欧美一区二区久久| 91亚洲精品一区二区乱码| 久久国产精品免费| 亚洲女同女同女同女同女同69| 精品国产乱码久久久久久牛牛| 色综合久久88色综合天天6| 久久超级碰视频| 亚洲国产精品麻豆| 国产精品福利av| 久久久久久久精| 91精品国产综合久久精品性色| 色综合久久中文综合久久97| 韩国午夜理伦三级不卡影院| 婷婷一区二区三区| 亚洲免费在线视频一区 二区| 久久在线观看免费| 欧美一区二区福利在线|