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

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

?? utils.c

?? GNU Sed GNU Sed GNU Sed
?? C
字號:
/*  Functions from hack's utils library.
    Copyright (C) 1989-1991 Free Software Foundation, Inc.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, or (at your option)
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */

/* These routines were written as part of a library (by hack), but since most
   people don't have the library, here they are.  */

#ifdef __STDC__
#define VOID void
#else
#define VOID char
#endif

#include <stdio.h>
#if defined(USG) || defined(STDC_HEADERS)
#include <string.h>
#define bcopy(src, dst, len) memcpy((dst), (src), (len))
#else
#include <strings.h>
#endif
#if defined(STDC_HEADERS)
#include <stdlib.h>
#else
VOID *malloc();
VOID *realloc();
#endif

VOID *ck_malloc();

char *myname;

#ifdef __STDC__
#include <stdarg.h>

/* Print an error message and exit */
void
panic(char *str, ...)
{
	va_list iggy;

	fprintf(stderr,"%s: ",myname);
	va_start(iggy,str);
#ifdef NO_VFPRINTF
	_doprnt(str,&iggy,stderr);
#else
	vfprintf(stderr,str,iggy);
#endif
	va_end(iggy);
	putc('\n',stderr);
	exit(4);
}

#else
#include <varargs.h>

void
panic(str,va_alist)
char *str;
va_dcl
{
	va_list iggy;

	fprintf(stderr,"%s: ",myname);
	va_start(iggy);
#ifdef NO_VFPRINTF
	_doprnt(str,&iggy,stderr);
#else
	vfprintf(stderr,str,iggy);
#endif
	va_end(iggy);
	putc('\n',stderr);
	exit(4);
}

#endif

/* Store information about files opened with ck_fopen
   so that error messages from ck_fread, etc can print the
   name of the file that had the error */
#define N_FILE 32

struct id {
	FILE *fp;
	char *name;
};

static struct id __id_s[N_FILE];

/* Internal routine to get a filename from __id_s */
char *
__fp_name(fp)
FILE *fp;
{
	int n;

	for(n=0;n<N_FILE;n++) {
		if(__id_s[n].fp==fp)
			return __id_s[n].name;
	}
	return "{Unknown file pointer}";
}

/* Panic on failing fopen */
FILE *
ck_fopen(name,mode)
char *name;
char *mode;
{
	FILE	*ret;
	int	n;

	ret=fopen(name,mode);
	if(ret==(FILE *)0)
		panic("Couldn't open file %s",name);
	for(n=0;n<N_FILE;n++) {
		if(ret==__id_s[n].fp) {
			free((VOID *)__id_s[n].name);
			__id_s[n].name=(char *)ck_malloc(strlen(name)+1);
			strcpy(__id_s[n].name,name);
			break;
		}
	}
	if(n==N_FILE) {
		for(n=0;n<N_FILE;n++)
			if(__id_s[n].fp==(FILE *)0)
				break;
		if(n==N_FILE)
			panic("Internal error: too many files open");
		__id_s[n].fp=ret;
		__id_s[n].name=(char *)ck_malloc(strlen(name)+1);
		strcpy(__id_s[n].name,name);
	}
	return ret;
}

/* Panic on failing fwrite */
void
ck_fwrite(ptr,size,nmemb,stream)
char *ptr;
int size,nmemb;
FILE *stream;
{
	if(fwrite(ptr,size,nmemb,stream)!=nmemb)
		panic("couldn't write %d items to %s",nmemb,__fp_name(stream));
}

/* Panic on failing fclose */
void
ck_fclose(stream)
FILE *stream;
{
	if(fclose(stream)==EOF)
		panic("Couldn't close %s",__fp_name(stream));
}

/* Panic on failing malloc */
VOID *
ck_malloc(size)
int size;
{
	VOID *ret;

	if(!size)
		size++;
	ret=malloc(size);
	if(ret==(VOID *)0)
		panic("Couldn't allocate memory");
	return ret;
}

/* Panic on failing realloc */
VOID *
ck_realloc(ptr,size)
VOID *ptr;
int size;
{
	VOID *ret;

	ret=realloc(ptr,size);
	if(ret==(VOID *)0)
		panic("Couldn't re-allocate memory");
	return ret;
}

/* Return a malloc()'d copy of a string */
char *
ck_strdup(str)
char *str;
{
	char *ret;

	ret=(char *)ck_malloc(strlen(str)+2);
	strcpy(ret,str);
	return ret;
}

#if !defined(USG) && !defined(STDC_HEADERS)
/*
 * memchr - search for a byte
 *
 */

VOID *
memchr(s, ucharwanted, size)
VOID *s;
int ucharwanted;
int size;
{
	register char *scan;
	register n;
	register uc;

	scan = (char *)s;
	uc = (ucharwanted&0xFF);
	for (n = size; n > 0; n--)
		if (((*scan)&0xFF) == uc)
			return((VOID *)scan);
		else
			scan++;

	return 0;
}
#endif

#if !defined(STDC_HEADERS)
/*
 * memmove - copy bytes, being careful about overlap.
 */

VOID *
memmove(dst, src, size)
VOID *dst;
VOID *src;
int size;
{
	register char *d;
	register char *s;
	register int n;

	if (size <= 0)
		return(dst);

	s = (char *)src;
	d = (char *)dst;
	if (s <= d && s + (size-1) >= d) {
		/* Overlap, must copy right-to-left. */
		s += size-1;
		d += size-1;
		for (n = size; n > 0; n--)
			*d-- = *s--;
	} else
		for (n = size; n > 0; n--)
			*d++ = *s++;

	return(dst);
}
#endif

/* Implement a variable sized buffer of 'stuff'.  We don't know what it is,
   nor do we care, as long as it doesn't mind being aligned by malloc. */

struct buffer {
	int	allocated;
	int	length;
	char	*b;
};

#define MIN_ALLOCATE 50

VOID *
init_buffer()
{
	struct buffer *b;

	b=(struct buffer *)ck_malloc(sizeof(struct buffer));
	b->allocated=MIN_ALLOCATE;
	b->b=(char *)ck_malloc(MIN_ALLOCATE);
	b->length=0;
	return (VOID *)b;
}

void
flush_buffer(bb)
VOID *bb;
{
	struct buffer *b;

	b=(struct buffer *)bb;
	free(b->b);
	b->b=0;
	b->allocated=0;
	b->length=0;
	free(b);
}

int
size_buffer(b)
VOID *b;
{
	struct buffer *bb;

	bb=(struct buffer *)b;
	return bb->length;
}

void
add_buffer(bb,p,n)
VOID *bb;
char *p;
int n;
{
	struct buffer *b;

	b=(struct buffer *)bb;
	if(b->length+n>b->allocated) {
		b->allocated*=2;
		b->b=(char *)ck_realloc(b->b,b->allocated);
	}
	bcopy(p,b->b+b->length,n);
	b->length+=n;
}

void
add1_buffer(bb,ch)
VOID *bb;
int ch;
{
	struct buffer *b;

	b=(struct buffer *)bb;
	if(b->length+1>b->allocated) {
		b->allocated*=2;
		b->b=(char *)ck_realloc(b->b,b->allocated);
	}
	b->b[b->length]=ch;
	b->length++;
}

char *
get_buffer(bb)
VOID *bb;
{
	struct buffer *b;

	b=(struct buffer *)bb;
	return b->b;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久网站| 国产欧美日韩三级| 日韩av网站免费在线| 欧美高清视频在线高清观看mv色露露十八| 一区二区激情小说| 69精品人人人人| 久久99国内精品| 欧美激情自拍偷拍| 91久久精品一区二区二区| 亚洲韩国精品一区| 欧美xxx久久| 成人免费看视频| 亚洲激情五月婷婷| 日韩欧美专区在线| 成人高清视频在线| 午夜成人免费视频| 久久免费视频色| 91欧美激情一区二区三区成人| 亚洲一区视频在线观看视频| 欧美一区二区日韩| www.日韩精品| 蜜臀91精品一区二区三区| 国产拍揄自揄精品视频麻豆| 欧美日韩综合在线| 国产精品影视在线观看| 一区二区三区精品| 精品少妇一区二区三区日产乱码| av一区二区三区| 免费高清不卡av| 1024亚洲合集| 精品国产制服丝袜高跟| 日本丶国产丶欧美色综合| 美腿丝袜亚洲综合| 亚洲欧洲制服丝袜| 久久久久久久久久美女| 欧美精选在线播放| 成人精品在线视频观看| 麻豆精品视频在线观看免费 | 国产电影精品久久禁18| 亚洲精品自拍动漫在线| 精品国产髙清在线看国产毛片| va亚洲va日韩不卡在线观看| 秋霞av亚洲一区二区三| 亚洲黄色av一区| 中文字幕欧美国产| 91精品国产综合久久香蕉的特点 | 亚洲国产精品一区二区www在线| 精品国产一区二区三区久久久蜜月| 99精品国产视频| 国产一区二区电影| 麻豆91在线观看| 亚洲午夜在线观看视频在线| 国产精品美女www爽爽爽| 欧美变态凌虐bdsm| 欧美丰满嫩嫩电影| 在线观看一区日韩| 99国产精品久久久久| 国产凹凸在线观看一区二区| 另类人妖一区二区av| 午夜久久久久久电影| 亚洲三级电影网站| 国产精品美女久久久久久久| 久久午夜国产精品| 精品久久久久一区二区国产| 91精品国产综合久久福利软件| 色婷婷激情一区二区三区| 99re热视频这里只精品| 高清成人在线观看| 丁香啪啪综合成人亚洲小说 | 亚洲第一福利一区| 亚洲一区二区三区不卡国产欧美 | 日本道精品一区二区三区| av激情综合网| 91在线porny国产在线看| 成人综合日日夜夜| 成人黄色综合网站| www.欧美日韩| 91日韩在线专区| 欧洲色大大久久| 欧美偷拍一区二区| 欧美精品久久99| 欧美一区二区三区四区高清| 91精品免费在线| 欧美不卡一区二区| 欧美激情在线观看视频免费| 国产亚洲欧美一区在线观看| 国产亚洲成年网址在线观看| 久久久.com| 成人欧美一区二区三区白人| 亚洲啪啪综合av一区二区三区| 一区二区三区美女视频| 亚洲成av人在线观看| 日本欧洲一区二区| 韩国成人福利片在线播放| 国产成人免费视频网站| av在线综合网| 欧美日韩另类国产亚洲欧美一级| 91麻豆精品国产91久久久久| 精品久久一区二区| 中文字幕永久在线不卡| 亚洲综合清纯丝袜自拍| 蜜臀久久99精品久久久久宅男 | 亚洲欧美视频在线观看| 五月婷婷欧美视频| 国产精品夜夜爽| 91视视频在线观看入口直接观看www| 在线免费观看日韩欧美| 正在播放亚洲一区| 国产三级精品视频| 一区二区三区高清在线| 麻豆国产欧美日韩综合精品二区| 国产宾馆实践打屁股91| 欧美日韩亚洲综合在线| 久久新电视剧免费观看| 亚洲欧美另类图片小说| 免费人成黄页网站在线一区二区 | 久久99日本精品| 成人免费福利片| 欧美一区二区免费| 国产精品久久久久久久久久免费看| 亚洲一区二区三区中文字幕在线| 久久国产人妖系列| 色婷婷av一区二区三区大白胸 | 午夜欧美在线一二页| 成人三级伦理片| 欧美日本不卡视频| 国产精品三级电影| 蜜桃视频一区二区| 欧美性做爰猛烈叫床潮| 欧美激情一区在线| 毛片av一区二区| 欧美影院一区二区| 国产精品动漫网站| 国产精品资源网| 日韩色在线观看| 亚洲综合无码一区二区| 成人三级伦理片| wwwwww.欧美系列| 五月天久久比比资源色| 91美女福利视频| 中文成人av在线| 韩国三级电影一区二区| 欧美日韩dvd在线观看| 亚洲精选一二三| 99国产欧美久久久精品| 国产三级三级三级精品8ⅰ区| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线日韩av片| 亚洲日本在线观看| hitomi一区二区三区精品| 精品久久久久久久久久久久久久久| 亚洲国产综合视频在线观看| 97久久精品人人爽人人爽蜜臀| 久久免费精品国产久精品久久久久| 日韩精品电影在线| 91麻豆精品国产91久久久| 亚洲一区国产视频| 欧美天堂亚洲电影院在线播放| 亚洲欧美日韩成人高清在线一区| 国产成人av影院| 国产欧美在线观看一区| 国产999精品久久久久久| 精品第一国产综合精品aⅴ| 美女网站一区二区| 日韩精品一区在线| 韩日av一区二区| 久久精品综合网| 成人av资源站| 亚洲欧洲一区二区三区| 99re视频这里只有精品| 综合电影一区二区三区| 91在线观看视频| 一区av在线播放| 欧美精品一二三四| 秋霞午夜av一区二区三区| 日韩精品中文字幕在线不卡尤物 | 日本中文一区二区三区| 日韩欧美一级特黄在线播放| 久久精品噜噜噜成人88aⅴ| 精品日韩一区二区三区免费视频| 精品亚洲免费视频| 国产片一区二区| 91免费版在线| 五月激情六月综合| 日韩欧美另类在线| 国产一区二三区| 亚洲日韩欧美一区二区在线| 欧美在线免费观看亚洲| 日韩国产一二三区| 国产区在线观看成人精品| 91污片在线观看| 丝袜美腿亚洲一区二区图片| 精品久久久久99| 成人性生交大合| 亚洲国产精品久久一线不卡| 制服丝袜亚洲播放| 国产成人午夜视频| 一区二区三区高清| 精品国产乱码久久久久久蜜臀| av电影在线观看一区|