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

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

?? msort.c

?? openBSD UNIX sort命令實現完整源代碼
?? C
字號:
/*	$OpenBSD: msort.c,v 1.14 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[] = "@(#)msort.c	8.1 (Berkeley) 6/6/93";#elsestatic char rcsid[] = "$OpenBSD: msort.c,v 1.14 2004/07/20 03:50:27 deraadt Exp $";#endif#endif /* not lint */#include "sort.h"#include "fsort.h"#include <stdlib.h>#include <string.h>#include <unistd.h>/* Subroutines using comparisons: merge sort and check order */#define DELETE (1)#define LALIGN(n) ((n+(sizeof(long)-1)) & ~(sizeof(long)-1))typedef struct mfile {	u_char *end;	short flno;	RECHEADER rec[1];} MFILE;typedef struct tmfile {	u_char *end;	short flno;	TRECHEADER rec[1];} TMFILE;u_char *wts, *wts1 = 0;struct mfile *cfilebuf;static int cmp(RECHEADER *, RECHEADER *);static int insert(struct mfile **, struct mfile **, int, int);voidfmerge(int binno, union f_handle files, int nfiles,    int (*get)(int, union f_handle, int, RECHEADER *, u_char *, struct field *),    FILE *outfp, void (*fput)(RECHEADER *, FILE *), struct field *ftbl){	FILE *tout;	int i, j, last;	void (*put)(RECHEADER *, FILE *);	struct tempfile *l_fstack;	wts = ftbl->weights;	if (!UNIQUE && SINGL_FLD && (ftbl->flags & F))		wts1 = (ftbl->flags & R) ? Rascii : ascii;	if (!cfilebuf) {		cfilebuf = malloc(MAXLLEN + sizeof(TMFILE));		if (cfilebuf == NULL)			errx(2, "cannot allocate memory");	}	i = min(16, nfiles) * LALIGN(MAXLLEN+sizeof(TMFILE));	if (!buffer || i > BUFSIZE) {		buffer = buffer ? realloc(buffer, i) : malloc(i);		if (!buffer)			errx(2, "cannot allocate memory");		if (!SINGL_FLD) {			if ((linebuf = malloc(MAXLLEN)) == NULL)				errx(2, "cannot allocate memory");		}	}	if (binno >= 0)		l_fstack = fstack + files.top;	else		l_fstack = fstack;	while (nfiles) {		put = putrec;		for (j = 0; j < nfiles; j += 16) {			if (nfiles <= 16) {				tout = outfp;				put = fput;			}			else				tout = ftmp();			last = min(16, nfiles - j);			if (binno < 0) {				for (i = 0; i < last; i++)					if (!(l_fstack[i+MAXFCT-1-16].fp =					    fopen(files.names[j + i], "r")))						err(2, "%s", files.names[j+i]);				merge(MAXFCT-1-16, last, get, tout, put, ftbl);			} else {				for (i = 0; i< last; i++)					rewind(l_fstack[i+j].fp);				merge(files.top+j, last, get, tout, put, ftbl);			}			if (nfiles > 16)				l_fstack[j/16].fp = tout;		}		nfiles = (nfiles + 15) / 16;		if (nfiles == 1)			nfiles = 0;		if (binno < 0) {			binno = 0;			get = geteasy;			files.top = 0;		}	}}voidmerge(int infl0, int nfiles,    int (*get)(int, union f_handle, int, RECHEADER *, u_char *, struct field *),    FILE *outfp, void (*put)(RECHEADER *, FILE *), struct field *ftbl){	int c, i, j;	union f_handle dummy = {0};	struct mfile *flist[16], *cfile;	for (i = j = 0; i < nfiles; i++) {		cfile = (MFILE *) (buffer +		    i * LALIGN(MAXLLEN + sizeof(TMFILE)));		cfile->flno = j + infl0;		cfile->end = cfile->rec->data + MAXLLEN;		for (c = 1; c == 1;) {			if (EOF == (c = get(j+infl0, dummy, nfiles,			   cfile->rec, cfile->end, ftbl))) {				i--;				nfiles--;				break;			}			if (i)				c = insert(flist, &cfile, i, !DELETE);			else				flist[0] = cfile;		}		j++;	}	if (nfiles > 0) {		cfile = cfilebuf;		cfile->flno = flist[0]->flno;		cfile->end = cfile->rec->data + MAXLLEN;		while (nfiles) {			for (c = 1; c == 1;) {				if (EOF == (c = get(cfile->flno, dummy, nfiles,				   cfile->rec, cfile->end, ftbl))) {					put(flist[0]->rec, outfp);					memmove(flist, flist + 1,					    sizeof(MFILE *) * (--nfiles));					cfile->flno = flist[0]->flno;					break;				}				if (!(c = insert(flist, &cfile, nfiles, DELETE)))					put(cfile->rec, outfp);			}		}		}	}/* * if delete: inserts *rec in flist, deletes flist[0], and leaves it in *rec; * otherwise just inserts *rec in flist. */static intinsert(struct mfile **flist, struct mfile **rec, int ttop,    int delete)			/* delete = 0 or 1 */{	struct mfile *tmprec;	int top, mid, bot = 0, cmpv = 1;	tmprec = *rec;	top = ttop;	for (mid = top/2; bot +1 != top; mid = (bot+top)/2) {		cmpv = cmp(tmprec->rec, flist[mid]->rec);		if (cmpv < 0)			top = mid;		else if (cmpv > 0)			bot = mid;		else {			if (!UNIQUE)				bot = mid - 1;			break;		}	}	if (delete) {		if (UNIQUE) {			if (!bot && cmpv)				cmpv = cmp(tmprec->rec, flist[0]->rec);			if (!cmpv)				return (1);		}		tmprec = flist[0];		if (bot)			memmove(flist, flist+1, bot * sizeof(MFILE **));		flist[bot] = *rec;		*rec = tmprec;		(*rec)->flno = (*flist)->flno;		return (0);	}	else {		if (!bot && !(UNIQUE && !cmpv)) {			cmpv = cmp(tmprec->rec, flist[0]->rec);			if (cmpv < 0)				bot = -1;		}		if (UNIQUE && !cmpv)			return (1);		bot++;		memmove(flist + bot+1, flist + bot,		    (ttop - bot) * sizeof(MFILE **));		flist[bot] = *rec;		return (0);	}}/* * check order on one file */voidorder(union f_handle infile,    int (*get)(int, union f_handle, int, RECHEADER *, u_char *, struct field *),    struct field *ftbl){	u_char *crec_end, *prec_end, *trec_end;	int c;	RECHEADER *crec, *prec, *trec;	if (!SINGL_FLD) {		if ((linebuf = malloc(MAXLLEN)) == NULL)			errx(2, "cannot allocate memory");	}	buffer = malloc(2 * ALIGN((MAXLLEN + sizeof(TRECHEADER))));	if (buffer == NULL)		errx(2, "cannot allocate memory");	crec = (RECHEADER *) buffer;	crec_end = ((char *)crec) + ALIGN(MAXLLEN + sizeof(TRECHEADER));	prec = (RECHEADER *) crec_end;	prec_end = ((char *)prec) + ALIGN(MAXLLEN + sizeof(TRECHEADER));	wts = ftbl->weights;	if (SINGL_FLD && (ftbl->flags & F))		wts1 = ftbl->flags & R ? Rascii : ascii;	else		wts1 = 0;	if (get(-1, infile, 1, prec, prec_end, ftbl) == 0)		while (get(-1, infile, 1, crec, crec_end, ftbl) == 0) {			if (0 < (c = cmp(prec, crec))) {				crec->data[crec->length-1] = 0;				errx(1, "found disorder: %s",				    crec->data+crec->offset);			}			if (UNIQUE && !c) {				crec->data[crec->length-1] = 0;				errx(1, "found non-uniqueness: %s",				    crec->data+crec->offset);			}			/* Swap pointers so that this record is on place			 * pointed to by prec and new record is read to place			 * pointed to by crec.			 */			trec = prec;			prec = crec;			crec = trec;			trec_end = prec_end;			prec_end = crec_end;			crec_end = trec_end;		}	exit(0);}static intcmp(RECHEADER *rec1, RECHEADER *rec2){	int r;	u_char *pos1, *pos2, *end;	u_char *cwts;	for (cwts = wts; cwts; cwts = (cwts == wts1 ? 0 : wts1)) {		pos1 = rec1->data;		pos2 = rec2->data;		if (!SINGL_FLD && UNIQUE)			end = pos1 + min(rec1->offset, rec2->offset);		else			end = pos1 + min(rec1->length, rec2->length);		for (; pos1 < end; ) {			if ((r = cwts[*pos1++] - cwts[*pos2++]))				return (r);		}	}	return (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精一区二区三区| av亚洲精华国产精华精华| 26uuu另类欧美亚洲曰本| 91年精品国产| voyeur盗摄精品| 国产精品99久久久久久有的能看| 五月天激情小说综合| 亚洲一区免费观看| 亚洲成av人综合在线观看| 国产色产综合产在线视频| 日韩一级二级三级| 欧美日韩一级二级三级| 亚洲三级免费电影| 精品免费国产一区二区三区四区| 欧美精品在线一区二区三区| 欧美色区777第一页| 欧美在线一区二区三区| 欧美日韩一区精品| 欧美在线999| 在线观看视频欧美| 欧美精品一级二级三级| 日韩你懂的在线播放| 精品福利一二区| 亚洲国产经典视频| 一区二区三区四区蜜桃| 亚洲一区二区三区四区五区中文| 亚洲国产视频在线| 精品一区二区日韩| 国产99久久久国产精品潘金网站| 国产电影一区二区三区| 91蜜桃网址入口| 欧美精三区欧美精三区 | 欧美日韩亚洲高清一区二区| 欧美视频精品在线| 日韩精品一区二区三区在线观看| 久久婷婷国产综合精品青草| 亚洲视频中文字幕| 天天影视涩香欲综合网| 日韩av中文在线观看| 国产精品77777竹菊影视小说| 99久久夜色精品国产网站| 欧美日韩免费一区二区三区| 欧美不卡一区二区三区| 国产精品色眯眯| 亚洲成a人片综合在线| 国产精品一品视频| 欧美三级视频在线观看| 久久在线免费观看| 亚洲一区二区三区视频在线| 麻豆freexxxx性91精品| 99久久久国产精品免费蜜臀| 欧美日韩大陆一区二区| 中国色在线观看另类| 亚洲综合男人的天堂| 国产激情一区二区三区| 欧美精品色一区二区三区| 国产精品久久久久一区二区三区| 日日夜夜一区二区| 色94色欧美sute亚洲13| 日韩欧美第一区| 亚洲高清不卡在线| www.日本不卡| 国产亚洲综合色| 偷窥少妇高潮呻吟av久久免费| 国产精品99久久久久久久女警| 色吊一区二区三区| 中文字幕av一区二区三区免费看| 免费在线观看成人| 欧美军同video69gay| 亚洲国产裸拍裸体视频在线观看乱了| 国产一区福利在线| 精品黑人一区二区三区久久| 日日嗨av一区二区三区四区| 91激情在线视频| 国产精品国产三级国产普通话三级| 久久国产欧美日韩精品| 在线电影院国产精品| 亚洲va欧美va国产va天堂影院| 91玉足脚交白嫩脚丫在线播放| 国产精品全国免费观看高清| 国产麻豆精品久久一二三| 亚洲精品在线网站| 蜜桃精品在线观看| 欧美变态tickle挠乳网站| 日本视频中文字幕一区二区三区| 欧美乱妇20p| 五月婷婷另类国产| 欧美一级日韩一级| 毛片av一区二区| 精品对白一区国产伦| 国产乱子轮精品视频| 久久久久国产精品人| 国产jizzjizz一区二区| 国产精品久久久久久久久晋中| jlzzjlzz欧美大全| 一区二区三区在线免费观看| 欧美日精品一区视频| 三级久久三级久久久| 精品国产青草久久久久福利| 国产v日产∨综合v精品视频| 国产精品久久福利| 在线观看欧美日本| 免费成人av资源网| 久久精品一区蜜桃臀影院| 波多野结衣在线一区| 亚洲三级在线免费观看| 欧美日韩国产精选| 久久se这里有精品| 亚洲欧洲精品成人久久奇米网| 色狠狠综合天天综合综合| 日本不卡中文字幕| 日本一区二区三区四区在线视频| 99r国产精品| 全国精品久久少妇| 欧美日韩一区二区三区视频| 免费人成黄页网站在线一区二区 | 亚瑟在线精品视频| 欧美成人一区二区三区在线观看| 国产成人免费视频网站| 亚洲在线视频一区| 欧美精品一区二区三区四区| 91麻豆福利精品推荐| 麻豆一区二区在线| 国产精品乱人伦中文| 5858s免费视频成人| 成人国产精品免费观看| 日日欢夜夜爽一区| 亚洲嫩草精品久久| 日韩精品一区二区三区中文精品| 不卡电影一区二区三区| 日韩二区在线观看| 亚洲欧美日韩中文播放| 精品国产自在久精品国产| 欧洲一区在线观看| 不卡的电影网站| 国产麻豆午夜三级精品| 91免费看`日韩一区二区| 一区二区免费看| 国产女人18水真多18精品一级做| 欧美少妇性性性| 91社区在线播放| 国产精品一区二区在线播放| 麻豆精品一区二区| 亚洲一区二区在线播放相泽| 中文字幕在线观看一区| 久久久一区二区三区捆绑**| 欧美一区二区三区精品| 欧美日韩免费视频| 色婷婷激情一区二区三区| www.欧美.com| 国产91露脸合集magnet| 狠狠色综合日日| 激情五月婷婷综合网| 日韩国产一二三区| 无吗不卡中文字幕| 午夜精品视频一区| 性做久久久久久免费观看| 亚洲一区二区精品3399| 亚洲乱码日产精品bd| 亚洲裸体xxx| 亚洲男女一区二区三区| 亚洲精品精品亚洲| 亚洲精品国产成人久久av盗摄| 亚洲丝袜精品丝袜在线| 亚洲欧美日韩一区二区| 亚洲精品欧美综合四区| 一区二区三区高清在线| 一区二区高清在线| 午夜av一区二区| 蜜桃视频在线一区| 国产一区日韩二区欧美三区| 福利一区二区在线观看| 成人精品一区二区三区四区| 99国产精品久久| 欧美日韩视频专区在线播放| 91精品福利在线一区二区三区| 91精品国产综合久久福利软件 | 欧美日韩三级一区| 欧美日本在线看| 2020国产精品| 中文字幕在线观看一区二区| 亚洲一二三区不卡| 久热成人在线视频| 成人av资源站| 欧美日韩一区二区在线观看视频| 欧美另类高清zo欧美| 久久久99精品免费观看| 亚洲欧洲美洲综合色网| 丝袜美腿亚洲一区二区图片| 国产一区二区三区四区五区入口| av电影在线观看一区| 91精品国产免费久久综合| 国产网红主播福利一区二区| 亚洲一二三专区| 经典一区二区三区| 一本色道久久加勒比精品| 日韩欧美一区二区三区在线| 亚洲视频一区二区在线观看| 免费日韩伦理电影| 97国产一区二区|