⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 artio.c

📁 早期freebsd实现
💻 C
字号:
/* $Id: artio.c,v 3.0 1992/02/01 03:09:32 davison Trn $ *//* This software is Copyright 1991 by Stan Barber.  * * Permission is hereby granted to copy, reproduce, redistribute or otherwise * use this software as long as: there is no monetary profit gained * specifically from the use or reproduction of this software, it is not * sold, rented, traded or otherwise marketed, and this copyright notice is * included prominently in any copy made.  * * The author make no claims as to the fitness or correctness of this software * for any use whatsoever, and it is provided as is. Any use of this software * is at the user's own risk.  */#include "EXTERN.h"#include "common.h"#include "cache.h"#include "rthread.h"#include "head.h"#include "nntp.h"#include "art.h"#include "bits.h"#include "final.h"#include "INTERN.h"#include "artio.h"voidartio_init(){    ;}/* open an article, unless it's already open */FILE *artopen(artnum)ART_NUM artnum;{#ifndef USE_NNTP    char artname[MAXFILENAME];		/* filename of current article */#endif    ARTICLE *ap = find_article(artnum);    if (!ap || !artnum || (ap->flags & (AF_MISSING|AF_FAKE)) == AF_MISSING) {	errno = ENOENT;	return Nullfp;    }    if (openart == artnum) {		/* this article is already open? */	fseek(artfp,0L,0);		/* just get to the beginning */	return artfp;			/* and say we succeeded */    }    if (artfp != Nullfp) {		/* it was somebody else? */	fclose(artfp);			/* put them out of their misery */	openart = 0;			/* and remember them no more */    }retry_open:#ifdef USE_NNTP    artfp = nntp_body(artnum);#else    sprintf(artname,"%ld",(long)artnum);    artfp = fopen(artname,"r");#endif    if (!artfp) {	if (errno == ETIMEDOUT)	    goto retry_open;	uncache_article(ap,FALSE);    } else {#ifdef LINKART	char tmpbuf[256];	char *s;	if (!fstat(fileno(artfp),&filestat)	 && filestat.st_size < sizeof tmpbuf) {	    fgets(tmpbuf,sizeof tmpbuf,artfp);	    if (*tmpbuf == '/') {	/* is a "link" to another article */		fclose(artfp);		if (s=index(tmpbuf,'\n'))		    *s = '\0';		if (!(artfp = fopen(tmpbuf,"r"))) {		    uncache_article(ap,FALSE);		} else {		    if (*linkartname)			free(linkartname);		    linkartname = savestr(tmpbuf);		}	    } else		fseek(artfp,0L,0);	/* get back to the beginning */	}#endif	openart = artnum;		/* remember what we did here */    }    return artfp;			/* and return either fp or NULL */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -