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

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

?? files.c

?? openBSD UNIX sort命令實現完整源代碼
?? C
字號:
/*	$OpenBSD: files.c,v 1.11 2004/07/20 03:50:27 deraadt Exp $	*//*- * Copyright (c) 1993 *	The Regents of the University of California.  All rights reserved. * * This code is derived from software contributed to Berkeley by * Peter McIlroy. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#ifndef lint#if 0static char sccsid[] = "@(#)files.c	8.1 (Berkeley) 6/6/93";#elsestatic char rcsid[] = "$OpenBSD: files.c,v 1.11 2004/07/20 03:50:27 deraadt Exp $";#endif#endif /* not lint */#include "sort.h"#include "fsort.h"#include <string.h>static int	seq(FILE *, DBT *, DBT *);/* * this is the subroutine for file management for fsort(). * It keeps the buffers for all temporary files. */intgetnext(int binno, union f_handle infl0, int nfiles, RECHEADER *pos, u_char *end,    struct field *dummy){	int i;	u_char *hp;	static size_t nleft = 0;	static int cnt = 0, flag = -1;	static u_char maxb = 0;	static FILE *fp;	if (nleft == 0) {		if (binno < 0)	/* reset files. */ {			for (i = 0; i < nfiles; i++) {				rewind(fstack[infl0.top + i].fp);				fstack[infl0.top + i].max_o = 0;			}			flag = -1;			nleft = cnt = 0;			return (-1);		}		maxb = fstack[infl0.top].maxb;		for (; nleft == 0; cnt++) {			if (cnt >= nfiles) {				cnt = 0;				return (EOF);			}			fp = fstack[infl0.top + cnt].fp;			fread(&nleft, sizeof(nleft), 1, fp);			if (binno < maxb)				fstack[infl0.top+cnt].max_o					+= sizeof(nleft) + nleft;			else if (binno == maxb) {				if (binno != fstack[infl0.top].lastb) {					fseek(fp, fstack[infl0.top+						cnt].max_o, SEEK_SET);					fread(&nleft, sizeof(nleft), 1, fp);				}				if (nleft == 0)					fclose(fp);			} else if (binno == maxb + 1) {		/* skip a bin */				fseek(fp, nleft, SEEK_CUR);				fread(&nleft, sizeof(nleft), 1, fp);				flag = cnt;			}		}	}	if ((u_char *) pos > end - sizeof(TRECHEADER))		return (BUFFEND);	fread(pos, sizeof(TRECHEADER), 1, fp);	if (end - pos->data < pos->length) {		hp = ((u_char *)pos) + sizeof(TRECHEADER);		for (i = sizeof(TRECHEADER); i ;  i--)			ungetc(*--hp, fp);		return (BUFFEND);	}	fread(pos->data, pos->length, 1, fp);	nleft -= pos->length + sizeof(TRECHEADER);	if (nleft == 0 && binno == fstack[infl0.top].maxb)		fclose(fp);	return (0);}/* * this is called when there is no special key. It's only called * in the first fsort pass. */intmakeline(int flno, union f_handle filelist, int nfiles, RECHEADER *buffer,    u_char *bufend, struct field *dummy2){	static u_char *obufend;	static size_t osz;	char *pos;	static int fileno = 0, overflow = 0;	static FILE *fp = 0;	int c;	pos = (char *) buffer->data;	if (overflow) {		/*		 * Buffer shortage is solved by either of two ways:	 	 * * Flush previous buffered data and start using the 		 *   buffer from start (see fsort())		 * * realloc buffer and bump bufend		 *		 * The former is preferred, realloc is only done when		 * there is exactly one item in buffer which does not fit.		 */		if (bufend == obufend)			memmove(pos, bufend - osz, osz);		pos+=osz;		overflow = 0;	}	for (;;) {		if (flno >= 0 && (fp = fstack[flno].fp) == NULL)			return (EOF);		else if (fp == 0) {			if (fileno  >= nfiles)				return (EOF);			if (!(fp = fopen(filelist.names[fileno], "r")))				err(2, "%s", filelist.names[fileno]);			fileno++;		}		while ((pos < (char *)bufend) && ((c = getc(fp)) != EOF)) {			if ((*pos++ = c) == REC_D) {				buffer->offset = 0;				buffer->length = pos - (char *) buffer->data;				return (0);			}		}		if (pos >= (char *)bufend) {			if (buffer->data < bufend) {				overflow = 1;				obufend = bufend;				osz = (pos - (char *)buffer->data);			}			return (BUFFEND);		} else if (c == EOF) {			if (buffer->data != (u_char *) pos) {				*pos++ = REC_D;				buffer->offset = 0;				buffer->length = pos - (char *) buffer->data;				return (0);			}			FCLOSE(fp);			fp = 0;			if (flno >= 0)				fstack[flno].fp = 0;		} else {			warnx("line too long: ignoring %100s...", buffer->data);						/* Consume the rest of the line from input */			while((c = getc(fp)) != REC_D && c != EOF)				;			buffer->offset = 0;			buffer->length = 0;			return (BUFFEND);		}	}}/* * This generates keys. It's only called in the first fsort pass */intmakekey(int flno, union f_handle filelist, int nfiles, RECHEADER *buffer,    u_char *bufend, struct field *ftbl){	static int fileno = 0;	static FILE *dbdesc = 0;	static DBT dbkey[1], line[1];	static int overflow = 0;	static int c;	if (overflow) {		overflow = enterkey(buffer, line, bufend - (u_char *)buffer,									ftbl);		if (overflow)			return (BUFFEND);		else			return (0);	}	for (;;) {		if (flno >= 0) {			if (!(dbdesc = fstack[flno].fp))				return (EOF);		} else if (!dbdesc) {			if (fileno  >= nfiles)				return (EOF);			dbdesc = fopen(filelist.names[fileno], "r");			if (!dbdesc)				err(2, "%s", filelist.names[fileno]);			fileno++;		}		if (!(c = seq(dbdesc, line, dbkey))) {			if ((signed)line->size > bufend - buffer->data) {				overflow = 1;			} else {				overflow = enterkey(buffer, line,				    bufend - (u_char *) buffer, ftbl);			}			if (overflow)				return (BUFFEND);			else				return (0);		}		if (c == EOF) {			FCLOSE(dbdesc);			dbdesc = 0;			if (flno >= 0)				fstack[flno].fp = 0;		} else {			((char *) line->data)[60] = '\000';			warnx("line too long: ignoring %.100s...",			    (char *)line->data);		}	}}/* * get a key/line pair from fp */static intseq(FILE *fp, DBT *line, DBT *key){	static char *buf, flag = 1;	char *end, *pos;	int c;	if (flag) {		flag = 0;		buf = (char *) linebuf;		end = buf + linebuf_size;		line->data = buf;	}	pos = buf;	while ((c = getc(fp)) != EOF) {		if ((*pos++ = c) == REC_D) {			line->size = pos - buf;			return (0);		}		if (pos == end) {			linebuf_size *= 2;			linebuf = realloc(linebuf, linebuf_size);			if (!linebuf)				err(2, "realloc of linebuf to %lu bytes failed",					(unsigned long)linebuf_size);			end = linebuf + linebuf_size;			pos = linebuf + (pos - buf);			line->data = buf = (char *)linebuf;			continue;		}	}	if (pos != buf) {		*pos++ = REC_D;		line->size = pos - buf;		return (0);	} else		return (EOF);}/* * write a key/line pair to a temporary file */voidputrec(RECHEADER *rec, FILE *fp){	EWRITE(rec, 1, rec->length + sizeof(TRECHEADER), fp);}/* * write a line to output */voidputline(RECHEADER *rec, FILE *fp){	EWRITE(rec->data+rec->offset, 1, rec->length - rec->offset, fp);}/* * get a record from a temporary file. (Used by merge sort.) */intgeteasy(int flno, union f_handle filelist, int nfiles, RECHEADER *rec,    u_char *end, struct field *dummy2){	int i;	FILE *fp;	fp = fstack[flno].fp;	if ((u_char *) rec > end - sizeof(TRECHEADER))		return (BUFFEND);	if (!fread(rec, 1, sizeof(TRECHEADER), fp)) {		fclose(fp);		fstack[flno].fp = 0;		return (EOF);	}	if (end - rec->data < rec->length) {		for (i = sizeof(TRECHEADER) - 1; i >= 0;  i--)			ungetc(*((char *) rec + i), fp);		return (BUFFEND);	}	fread(rec->data, rec->length, 1, fp);	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美欧美欧美欧美| 欧美日本在线看| 精品一区二区在线免费观看| 日韩福利电影在线| 蜜臀av性久久久久蜜臀aⅴ | 欧美日韩国产精品成人| 欧美亚洲国产一区二区三区 | 精品在线观看视频| 久久国产日韩欧美精品| 韩国成人在线视频| 成人黄页在线观看| 色综合天天综合给合国产| 91福利小视频| 日韩一区二区电影| 国产校园另类小说区| 中文字幕一区日韩精品欧美| 亚洲电影一区二区三区| 亚洲在线免费播放| 秋霞午夜av一区二区三区| 激情六月婷婷综合| 色综合色综合色综合色综合色综合| 91麻豆精东视频| 欧美丰满美乳xxx高潮www| 久久综合av免费| 亚洲乱码国产乱码精品精98午夜| 亚洲成人久久影院| 国产精品亚洲一区二区三区在线 | 国产又黄又大久久| 99热这里都是精品| 欧美一区二区三区在线看 | 成人黄色av电影| 精品视频1区2区3区| 久久日一线二线三线suv| 国产精品视频一区二区三区不卡| 亚洲国产视频a| 国产精品99久久久久| 欧美午夜视频网站| 亚洲国产成人一区二区三区| 水野朝阳av一区二区三区| 国产高清不卡二三区| 欧美日韩一卡二卡| 国产欧美精品在线观看| 日本不卡一二三区黄网| www.亚洲在线| 精品国产123| 天天色天天爱天天射综合| 不卡一区二区三区四区| 日韩欧美二区三区| 国产精品主播直播| 欧美日韩一级视频| ...av二区三区久久精品| 精品在线一区二区| 欧美日韩午夜精品| 国产精品传媒视频| 国产黄色精品网站| 91精品国产综合久久久久久| 亚洲美女一区二区三区| 国产成人免费网站| www成人在线观看| 日产精品久久久久久久性色| 欧日韩精品视频| 亚洲免费毛片网站| 91一区二区在线| 国产精品日韩成人| 成人性色生活片| 亚洲国产精品成人综合| 国产自产视频一区二区三区| 日韩一区二区电影在线| 日韩成人dvd| 正在播放一区二区| 日本伊人色综合网| 5566中文字幕一区二区电影| 无吗不卡中文字幕| 欧美高清hd18日本| 视频在线在亚洲| 日韩一区二区在线播放| 日韩av中文字幕一区二区| 欧美美女一区二区三区| 日本女优在线视频一区二区| 91精品国产色综合久久不卡电影| 亚洲成a人v欧美综合天堂| 欧美日韩不卡视频| 成人av电影在线| 国产精品丝袜久久久久久app| 成人污污视频在线观看| 中文字幕制服丝袜成人av| 色哟哟欧美精品| 亚欧色一区w666天堂| 欧美一区二区私人影院日本| 免费xxxx性欧美18vr| 日韩精品一区二区三区视频在线观看| 久久激五月天综合精品| 国产夜色精品一区二区av| av欧美精品.com| 亚洲综合激情小说| 日韩欧美久久久| www.欧美日韩国产在线| 亚洲资源中文字幕| 欧美成人精品二区三区99精品| 国产乱子伦视频一区二区三区 | 国产精品国产精品国产专区不蜜| 成人午夜又粗又硬又大| 自拍av一区二区三区| 欧美日韩高清影院| 久久激情五月激情| 亚洲成人综合在线| 精品欧美乱码久久久久久 | 亚洲色图视频网| 69堂精品视频| 成人午夜私人影院| 午夜国产精品影院在线观看| 久久久久亚洲综合| 在线免费不卡电影| 国产精品自拍一区| 亚洲国产精品视频| 国产精品网站导航| 91精品免费在线观看| 不卡电影一区二区三区| 麻豆91在线播放免费| 亚洲欧美一区二区不卡| 2023国产精品| 欧美日韩免费电影| 91色乱码一区二区三区| 国产一区二区三区久久久 | 欧美精品一区二区三区高清aⅴ| 91丝袜呻吟高潮美腿白嫩在线观看| 青青草原综合久久大伊人精品优势| 国产欧美va欧美不卡在线| 欧美一区二视频| 欧美日韩一区二区三区不卡| 不卡av在线免费观看| 国产精品一区二区果冻传媒| 日本不卡高清视频| 亚洲香肠在线观看| 亚洲麻豆国产自偷在线| 国产精品人妖ts系列视频| 日韩久久精品一区| 日韩一级大片在线| 欧美日韩五月天| 欧美视频自拍偷拍| 99re这里都是精品| 成人av电影在线网| 成人毛片视频在线观看| 国产福利一区在线| 国产精品一二三四| 国产主播一区二区| 国产精品资源在线看| 国产一区二区精品久久91| 精品亚洲成a人| 精品影视av免费| 国产在线麻豆精品观看| 美女视频黄免费的久久 | 91污在线观看| 色哟哟一区二区三区| 日本韩国精品一区二区在线观看| 91色婷婷久久久久合中文| 91首页免费视频| 欧美视频你懂的| 欧美视频精品在线观看| 在线91免费看| 精品久久久久久综合日本欧美| 精品国产污网站| 国产日韩欧美电影| 1000部国产精品成人观看| 亚洲日韩欧美一区二区在线| 一区二区在线电影| 亚洲电影中文字幕在线观看| 婷婷丁香激情综合| 九九九久久久精品| 成人黄色一级视频| 91影视在线播放| 51精品久久久久久久蜜臀| 26uuu亚洲综合色欧美| 国产精品久久二区二区| 一区二区三区美女视频| 男男视频亚洲欧美| 国产精品77777| 欧洲亚洲精品在线| 久久日韩粉嫩一区二区三区| 综合久久国产九一剧情麻豆| 五月激情综合网| 国产电影一区二区三区| 色先锋久久av资源部| 精品国产一区二区三区四区四| 国产精品女主播在线观看| 亚洲综合色噜噜狠狠| 精品亚洲欧美一区| 99re热视频这里只精品| 欧美一卡2卡三卡4卡5免费| 欧美激情一区二区三区蜜桃视频| 亚洲综合男人的天堂| 国产自产高清不卡| 欧美视频在线观看一区二区| 久久精品视频一区二区三区| 亚洲国产一区视频| 国产麻豆成人传媒免费观看| 欧美电影在哪看比较好| 综合色天天鬼久久鬼色| 久久99精品国产.久久久久 | 性久久久久久久久|