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

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

?? bmutil.c

?? 很好的TCP_IP協議源代碼分析,很適用很好
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 */
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include "global.h"
#include "ftpserv.h"
#include "smtp.h"
#include "proc.h"
#include "usock.h"
#include "socket.h"
#include "telnet.h"
#include "timer.h"
#include "session.h"
#include "files.h"

#define		SETVBUF
#if	defined(UNIX) || defined(MICROSOFT)
#include	<sys/types.h>
#endif
/*
#if	defined(UNIX) || defined(MICROSOFT) || defined(__TURBOC__)
#include	<sys/stat.h>
#endif
#ifdef AZTEC
#include <stat.h>
#endif
*/
#include <fcntl.h>
#include "bm.h"
#include "mailbox.h"

#ifdef SETVBUF
#define		MYBUF	1024
#endif

extern long ftell();
static char Badmsg[] = "Invalid Message number %d\n";
static char Nomail[] = "No messages\n";
static char Noaccess[] = "Unable to access %s\n";
static int readnotes(struct mbx *m,FILE *ifile,int update);
static long isnewmail(struct mbx *m);
static int initnotes(struct mbx *m);
static int lockit(struct mbx *m);
static long fsize(char *name);
static void mfclose(struct mbx *m);
static int tkeywait(char *prompt,int flush);

static int
initnotes(m)
struct mbx *m;
{
	FILE	*tmpfile();
	FILE	*ifile;
	register struct	let *cmsg;
	char buf[256];
	int 	i, ret;

	sprintf(buf,"%s/%s.txt",Mailspool,m->area);
	if ((ifile = fopen(buf,READ_TEXT)) == NULL)
		return 0;
	fseek(ifile,0L,2);	 /* go to end of file */
	m->mboxsize = ftell(ifile);
	rewind(ifile);
	if(!stricmp(m->area,m->name)) /* our private mail area */
		m->mysize = m->mboxsize;
	if ((m->mfile = tmpfile()) == NULL) {
		(void) fclose(ifile);
		return -1;
	}
#ifdef	SETVBUF
	if (m->stdinbuf == NULL)
		m->stdinbuf = mallocw(MYBUF);
	setvbuf(ifile, m->stdinbuf, _IOFBF, MYBUF);
	if (m->stdoutbuf == NULL)
		m->stdoutbuf = mallocw(MYBUF);
	setvbuf(m->mfile, m->stdoutbuf, _IOFBF, MYBUF);
#endif
	m->nmsgs = 0;
	m->current = 0;
	m->change = 0;
	m->newmsgs = 0;
	m->anyread = 0;
	/* Allocate space for reading messages */
	free(m->mbox);
	m->mbox = (struct let *)callocw(Maxlet+1,sizeof(struct let));
	ret = readnotes(m,ifile,0);
	(void) fclose(ifile);
#ifdef SETVBUF
	free(m->stdinbuf);
	m->stdinbuf = NULL;
#endif
	if (ret != 0)
		return -1;
	for (cmsg = &m->mbox[1],i = 1; i <= m->nmsgs; i++, cmsg++)  
		if ((cmsg->status & BM_READ) == 0) {
			m->newmsgs++;
			if (m->current == 0)
				m->current = i;
		}
	/* start at one if no new messages */
	if (m->current == 0)
		m->current++;

	return 0;
}

/* readnotes assumes that ifile is pointing to the first
 * message that needs to be read.  For initial reads of a
 * notesfile, this will be the beginning of the file.  For
 * rereads when new mail arrives, it will be the first new
 * message.
 */
static int
readnotes(m,ifile,update)
struct mbx *m;
FILE *ifile ;
int update;	/* true if this is not the initial read of the notesfile */
{
	char 	tstring[LINELEN];
	long	cpos;
	register struct	let *cmsg;
	register char *line;

	cmsg = (struct let *)NULL;
	line = tstring;
	while(fgets(line,LINELEN,ifile) != NULL) {
		/* scan for begining of a message */
		if(strncmp(line,"From ",5) == 0) {
			kwait(NULL);
			cpos = ftell(m->mfile);
			fputs(line,m->mfile);
			if (m->nmsgs == Maxlet) {
				printf("Mail box full: > %d messages\n",Maxlet);
				mfclose(m);
				return -1;
			}
			m->nmsgs++;
			cmsg = &m->mbox[m->nmsgs];
			cmsg->start = cpos;
			if(!update)
				cmsg->status = 0;
			cmsg->size = strlen(line);
			while (fgets(line,LINELEN,ifile) != NULL) {
				if (*line == '\n') { /* done header part */
					cmsg->size++;
					putc(*line, m->mfile);
					break;
				}
				if (htype(line) == STATUS) {
					if (line[8] == 'R') 
						cmsg->status |= BM_READ;
					continue;
				}
				cmsg->size += strlen(line);
				if (fputs(line,m->mfile) == EOF) {
					printf("tmp file: %s",sys_errlist[errno]);
					mfclose(m);
					return -1;
				}

			}
		} else if (cmsg) {
			cmsg->size += strlen(line);
			fputs(line,m->mfile);
		}
	}
	return 0;
}

/* list headers of a notesfile a message */
int
dolistnotes(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct mbx *m;
	register struct	let *cmsg;
	register char	*cp, *s;
	char	smtp_date[SLINELEN], smtp_from[SLINELEN];
	char	smtp_subject[SLINELEN], tstring[LINELEN], type;
	int	start, stop;
	long	size;
	char	*area;

	m = (struct mbx *) p;
	if (m->mfile == NULL) {
		printf(Nomail);
		return 0;
	}

	area = strdup(m->area);
	while((cp = strchr(area,'/')) != NULL)
		*cp = '.';
	printf("Mail area: %s  %d message%s -  %d new\n\n",area,m->nmsgs,
		m->nmsgs == 1 ? " " : "s ", m->newmsgs);
	free(area);

	stop = m->nmsgs;
	if(m->stype == 'L') {		/* LL (List Latest) command */
	     if(argc > 1)
		  start = stop - atoi(argv[1]) + 1;
	     else
		  start = stop;
	}
	else {
	     if(argc > 1)
		  start = atoi(argv[1]);
	     else
		  start = 1;
	     if(argc > 2)
		  stop = atoi(argv[2]);
	}
	if(stop > m->nmsgs)
		stop = m->nmsgs;
	if(start < 1 || start > stop) {
		printf("Invalid range.\n");
		return 0;
	}
	for (cmsg = &m->mbox[start]; start <= stop; start++, cmsg++) {
		*smtp_date = '\0';
		*smtp_from = '\0';
		*smtp_subject = '\0';
		type = ' ';
		fseek(m->mfile,cmsg->start,0);
		size = cmsg->size;
		while (size > 0 && fgets(tstring,sizeof(tstring),m->mfile)
		       != NULL) {
			if (*tstring == '\n')	/* end of header */
				break;
			size -= strlen(tstring);
			rip(tstring);
			/* handle continuation later */
			if (*tstring == ' '|| *tstring == '\t')
				continue;
			switch(htype(tstring)) {
			case FROM:
				cp = getaddress(tstring,0);
				sprintf(smtp_from,"%.30s",
					cp != NULL ? cp : "");
				break;
			case SUBJECT:
				sprintf(smtp_subject,"%.34s",&tstring[9]);
				break;
			case DATE:
				if ((cp = strchr(tstring,',')) == NULL)
					cp = &tstring[6];
				else
					cp++;
				/* skip spaces */
				while (*cp == ' ') cp++;
				if(strlen(cp) < 17)
					break; 	/* not a valid length */
				s = smtp_date;
				/* copy day */
				if (atoi(cp) < 10 && *cp != '0') {
					*s++ = ' ';
				} else
					*s++ = *cp++;
				*s++ = *cp++;

				*s++ = ' ';
				*s = '\0';
				while (*cp == ' ')
					cp++;
				strncat(s,cp,3);	/* copy month */
				cp += 3;
				while (*cp == ' ')
					cp++;
				/* skip year */
				while (isdigit(*cp))
					cp++;
				/* copy time */
				strncat(s,cp,6); /* space hour : min */
				break;
			case BBSTYPE:
				type = tstring[16];
				break;
			case NOHEADER:
				break;
			}
		}
		if((type == m->stype && m->stype != ' ') || m->stype == ' '
		   || m->stype == 'L')
		     printf("%c%c%c%3d %-27.27s %-12.12s %5ld %.25s\n",
			     (start == m->current ? '>' : ' '),
			     (cmsg->status & BM_DELETE ? 'D' : ' '),
			     (cmsg->status & BM_READ ? 'Y' : 'N'),
			     start, smtp_from, smtp_date,
			     cmsg->size, smtp_subject);
	}
	return 0;
}

/*  save msg on stream - if noheader set don't output the header */
int
msgtofile(m,msg,tfile,noheader)
struct mbx *m;
int msg;
FILE *tfile;   /* already open for write */
int noheader;
{
	char	tstring[LINELEN];
	long 	size;

	if (m->mfile == NULL) {
		printf(Nomail);
		return -1;
	}
	fseek(m->mfile,m->mbox[msg].start,0);
	size = m->mbox[msg].size;

	if (noheader) {
		/* skip header */
		while (size > 0 && fgets(tstring,sizeof(tstring),m->mfile)
		       != NULL) {
			size -= strlen(tstring);
			if (*tstring == '\n')
				break;
		}
	}
	while (size > 0 && fgets(tstring,sizeof(tstring),m->mfile)
	       != NULL) {
		size -= strlen(tstring);
		fputs(tstring,tfile);
		if (ferror(tfile)) {
			printf("Error writing mail file\n");
			return -1;
		}
	}
	return 0;
}

/*  dodelmsg - delete message in current notesfile */
int
dodelmsg(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	struct mbx *m;
	int msg,i;
	m = (struct mbx *) p;
	if (m->mfile == NULL) {
		printf(Nomail);
		return 0;
	}
	for(i = 1; i < argc; ++i) {
		msg = atoi(argv[i]);
		if(msg < 0 || msg > m->nmsgs) {
			printf(Badmsg,msg);
			continue;
		}
		/* Check if we have permission to delete others mail */
		if(!(m->privs & FTP_WRITE) && stricmp(m->area,m->name)) {
			printf(Noperm);
			return 0;
		}
		m->mbox[msg].status |= BM_DELETE;
		printf("Msg %d Killed.\n", msg);
		m->change = 1;
	}
	return 0;
}
/* close the temp file while coping mail back to the mailbox */
int
closenotes(m)
struct mbx *m;
{
	register struct	let *cmsg;
	register char *line;
	char tstring[LINELEN], buf[256];
	long size;
	int i, nostatus = 0, nodelete;
	FILE	*nfile;

	if (m->mfile == NULL)
		return 0;

	if(!m->change) {		/* no changes were made */
		mfclose(m);
		m->mboxsize = 0;
		return 0;
	}
	/* If this area is a public message area, then we will not add a
	 * Status line to indicate that the message has been read.
	 */
	nostatus = isarea(m->area);

	/* Don't delete messages from public message areas unless you are
	 * a BBS.
	 */
	if(nostatus)
		nodelete = !(m->privs & SYSOP_CMD);
	else
		nodelete = 0;

	/* See if any messages have been forwarded, otherwise just close
	 * the file and return since there is nothing to write back.
	 */
	if(nostatus && nodelete) {
		for(i=1; i <= m->nmsgs; ++i)
			if(m->mbox[i].status & BM_FORWARDED)
				break;
		if(i > m->nmsgs) {
			mfclose(m);
			m->mboxsize = 0;
			return 0;
		}
	}
	line = tstring;
	scanmail(m);
	if(lockit(m))
		return -1;
	sprintf(buf,"%s/%s.txt",Mailspool,m->area);
	if ((nfile = fopen(buf,WRITE_TEXT)) == NULL) {
		printf(Noaccess,buf);
		mfclose(m);
		m->mboxsize = 0;
		rmlock(Mailspool,m->area);
		return -1;
	}
	/* copy tmp file back to notes file */
	for (cmsg = &m->mbox[1],i = 1; i <= m->nmsgs; i++, cmsg++) {
		fseek(m->mfile,cmsg->start,0);
		size = cmsg->size;
		/* It is not possible to delete messages if nodelete is set */
		if ((cmsg->status & BM_DELETE) && !nodelete)
			continue;
		/* copy the header */
		while (size > 0 && fgets(line,LINELEN,m->mfile) != NULL) {
			size -= strlen(line);
			if (*line == '\n') {
				if (cmsg->status & BM_FORWARDED)
					fprintf(nfile,"%s%s\n",Hdrs[XFORWARD],
						m->name);
				if ((cmsg->status & BM_READ) != 0 && !nostatus)
					fprintf(nfile,"%sR\n",Hdrs[STATUS]);
				fprintf(nfile,"\n");
				break;
			}
			fputs(line,nfile);
			/* kwait(NULL);  can cause problems if exiting NOS */
		}
		while (size > 0 && fgets(line,LINELEN,m->mfile) != NULL) {
			fputs(line,nfile);
			size -= strlen(line);
			/* kwait(NULL);   dont want no damaged files */
			if (ferror(nfile)) {
				printf("Error writing mail file\n");
				(void) fclose(nfile);
				mfclose(m);
				m->mboxsize = 0;
				rmlock(Mailspool,m->area);
				return -1;
			}
		}
	}
	m->nmsgs = 0;
	if (!stricmp(m->name,m->area))
		m->mysize = ftell(nfile); /* Update the size of our mailbox */
	/* remove a zero length file */
	if (ftell(nfile) == 0L)
		(void) unlink(buf);
	(void) fclose(nfile);
	mfclose(m);
	m->mboxsize = 0;
	rmlock(Mailspool,m->area);
	kwait(NULL);
	return 0;
}

/* Returns 1 if name is a public message Area, 0 otherwise */
int
isarea(name)
char *name;
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费视频色| 亚洲第四色夜色| 亚洲一卡二卡三卡四卡五卡| 久久99精品一区二区三区| 91污片在线观看| 久久久天堂av| 天天爽夜夜爽夜夜爽精品视频| 懂色av中文一区二区三区 | 精品福利av导航| 亚洲精品中文字幕乱码三区| 国产裸体歌舞团一区二区| 欧美日韩亚洲综合一区二区三区| 国产欧美中文在线| 日产欧产美韩系列久久99| 在线观看一区二区精品视频| 国产精品国产三级国产普通话99| 国内精品视频666| 欧美精品乱人伦久久久久久| 亚洲精品国产a| 成人黄色在线视频| 国产亚洲成aⅴ人片在线观看 | 一区二区三区加勒比av| 国产成人精品在线看| 精品福利一区二区三区| 免费在线观看成人| 日韩欧美一级二级三级| 日韩高清不卡在线| 欧美日韩三级一区| 亚洲成人免费在线| 欧美性猛交xxxxxxxx| 亚洲精品乱码久久久久久久久| 成人亚洲一区二区一| 日本一区二区免费在线 | 精品一区二区三区的国产在线播放| 欧美色视频一区| 亚洲主播在线播放| 欧美精品vⅰdeose4hd| 亚洲.国产.中文慕字在线| 欧美视频在线播放| 亚洲成av人片在线| 欧美精品日日鲁夜夜添| 婷婷亚洲久悠悠色悠在线播放| 欧美性大战久久久| 日韩精品一级二级| 欧美一区二区三区啪啪| 久久不见久久见中文字幕免费| 精品欧美一区二区三区精品久久| 久久精品久久综合| 国产欧美日韩不卡| 91高清视频在线| 图片区小说区国产精品视频| 欧美一区二区私人影院日本| 免费人成精品欧美精品| 精品国产伦一区二区三区免费| 国产精品一区二区91| 国产精品入口麻豆原神| 色综合咪咪久久| 午夜视频在线观看一区二区三区| 日韩免费高清av| 国产成人福利片| 亚洲国产综合在线| 日韩欧美一区二区视频| 国产成人日日夜夜| 亚洲va韩国va欧美va| 最近中文字幕一区二区三区| 色吊一区二区三区| 麻豆精品在线看| 亚洲图片另类小说| 欧美电视剧免费全集观看| 波多野结衣中文字幕一区| 午夜久久久久久久久久一区二区| 久久夜色精品国产欧美乱极品| 97精品电影院| 九九视频精品免费| 亚洲一区视频在线| 国产人久久人人人人爽| 欧美蜜桃一区二区三区| 成人视屏免费看| 午夜精品久久久久久久久| 久久影院电视剧免费观看| 欧美亚洲愉拍一区二区| 国产精一区二区三区| 午夜视黄欧洲亚洲| 国产精品护士白丝一区av| 日韩精品一区二区三区视频在线观看 | 欧美日本免费一区二区三区| 国产精品中文字幕日韩精品| 午夜精品福利一区二区三区蜜桃| 欧美国产精品v| 日韩欧美专区在线| 欧美中文字幕一区二区三区| 国产精品夜夜爽| 免费看欧美美女黄的网站| 亚洲精品欧美激情| 国产精品久久久久一区| 精品国产1区二区| 欧美精品日日鲁夜夜添| 欧美亚日韩国产aⅴ精品中极品| 丁香婷婷综合色啪| 国产一区二区三区精品视频| 青青草成人在线观看| 亚洲6080在线| 亚洲国产日韩精品| 亚洲精品国产高清久久伦理二区| 亚洲国产精品ⅴa在线观看| 欧美变态tickling挠脚心| 欧美日韩不卡视频| 欧美色精品在线视频| 99久久99久久综合| 成人免费观看视频| 粉嫩在线一区二区三区视频| 裸体一区二区三区| 免费高清成人在线| 日本不卡1234视频| 日韩精品每日更新| 天天射综合影视| 日韩精品一区第一页| 日韩成人午夜电影| 日韩av在线发布| 蜜臀av亚洲一区中文字幕| 免费一区二区视频| 久久精品72免费观看| 久久国产乱子精品免费女| 九九**精品视频免费播放| 另类人妖一区二区av| 精品亚洲成av人在线观看| 久久爱另类一区二区小说| 精品一区二区三区不卡 | 91美女视频网站| av在线不卡观看免费观看| 972aa.com艺术欧美| av电影在线观看不卡| 色系网站成人免费| 欧美日韩免费视频| 91精品国产一区二区三区| 日韩免费福利电影在线观看| 久久久久久久综合| 国产精品成人一区二区三区夜夜夜 | 91丨porny丨最新| 日本久久一区二区| 欧美精品在线观看播放| 欧美xfplay| 亚洲人吸女人奶水| 日本aⅴ亚洲精品中文乱码| 狠狠网亚洲精品| 成人动漫av在线| 精品视频999| 精品卡一卡二卡三卡四在线| 中文在线资源观看网站视频免费不卡| 中文字幕亚洲一区二区av在线| 亚洲精品精品亚洲| 久久99最新地址| 91尤物视频在线观看| 欧美一区二区三区系列电影| 久久久久久久久久久久久女国产乱 | 秋霞电影网一区二区| 国产老女人精品毛片久久| 在线亚洲+欧美+日本专区| 这里只有精品视频在线观看| 久久久精品人体av艺术| 一区二区三区四区亚洲| 六月丁香婷婷久久| 一本色道久久综合亚洲精品按摩| 日韩欧美不卡在线观看视频| 亚洲天堂av一区| 精品一二三四区| 欧美怡红院视频| 久久精品亚洲麻豆av一区二区| 亚洲图片自拍偷拍| 成人福利视频在线看| 欧美一区二区视频观看视频| 最新不卡av在线| 国产一本一道久久香蕉| 欧美美女黄视频| 亚洲免费av高清| 国产·精品毛片| 日韩亚洲欧美一区二区三区| 亚洲免费观看高清完整版在线观看| 韩国精品一区二区| 欧美三区在线视频| 国产精品美女久久久久高潮| 日本不卡在线视频| 在线欧美日韩国产| 国产精品青草久久| 麻豆成人综合网| 91.xcao| 天堂蜜桃91精品| 欧美日韩一区二区三区四区| 一区二区三区四区在线| 一本到一区二区三区| 中文字幕一区二区三区在线不卡| 国产精品一区在线| 久久日韩粉嫩一区二区三区| 精品综合久久久久久8888| 91精品国产综合久久久蜜臀粉嫩| 亚洲最新视频在线播放| 色欧美日韩亚洲| 亚洲精品乱码久久久久久日本蜜臀| 91免费版pro下载短视频| 自拍视频在线观看一区二区|