Annotation of 43BSDTahoe/new/rn/artio.c, revision 1.1.1.1

1.1       root        1: /* $Header: artio.c,v 4.3 85/05/01 11:35:39 lwall Exp $
                      2:  *
                      3:  * $Log:       artio.c,v $
                      4:  * Revision 4.3  85/05/01  11:35:39  lwall
                      5:  * Baseline for release with 4.3bsd.
                      6:  * 
                      7:  */
                      8: 
                      9: #include "EXTERN.h"
                     10: #include "common.h"
                     11: #include "INTERN.h"
                     12: #include "artio.h"
                     13: 
                     14: void
                     15: artio_init()
                     16: {
                     17:     ;
                     18: }
                     19: 
                     20: /* open an article, unless it's already open */
                     21: 
                     22: FILE *
                     23: artopen(artnum)
                     24: ART_NUM artnum;
                     25: {
                     26:     char artname[8];                   /* filename of current article */
                     27: 
                     28:     if (artnum < 1)
                     29:        return Nullfp;
                     30:     if (openart == artnum) {           /* this article is already open? */
                     31:        fseek(artfp,0L,0);              /* just get to the beginning */
                     32:        return artfp;                   /* and say we succeeded */
                     33:     }
                     34:     if (artfp != Nullfp) {             /* it was somebody else? */
                     35:        fclose(artfp);                  /* put them out of their misery */
                     36:        openart = 0;                    /* and remember them no more */
                     37:     }
                     38:     sprintf(artname,"%ld",(long)artnum);
                     39:                                        /* produce the name of the article */
                     40:     if (artfp = fopen(artname,"r"))    /* if we can open it */
                     41:        openart = artnum;               /* remember what we did here */
                     42: #ifdef LINKART
                     43:     {
                     44:        char tmpbuf[256];
                     45:        char *s;
                     46: 
                     47:        if (fstat(artfp->_file,&filestat))
                     48:            return artfp;
                     49:        if (filestat.st_size < (sizeof tmpbuf)) {
                     50:            fgets(tmpbuf,(sizeof tmpbuf),artfp);
                     51:            if (*tmpbuf == '/') {       /* is a "link" to another article */
                     52:                fclose(artfp);
                     53:                if (s=index(tmpbuf,'\n'))
                     54:                    *s = '\0';
                     55:                if (!(artfp = fopen(tmpbuf,"r")))
                     56:                    openart = 0;
                     57:                else {
                     58:                    if (*linkartname)
                     59:                        free(linkartname);
                     60:                    linkartname = savestr(tmpbuf);
                     61:                }
                     62:            }
                     63:            else
                     64:                fseek(artfp,0L,0);              /* get back to the beginning */
                     65:        }
                     66:     }
                     67: #endif
                     68:     return artfp;                      /* and return either fp or NULL */
                     69: }
                     70: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.