# 2.11BSD#431 - /usr/src/new/notes/src/pagein.c

##### Functions

    pagein            X

       1: #include "parms.h"
       2: #include "structs.h"
       3:
       4: #ifdef  RCSIDENT
       5: static char rcsid[] = "$Header: pagein.c,v 1.7 85/01/18 15:33:36 notes Rel $";
       6: #endif	RCSIDENT
       7:
       8: /*
       9:  *	pagein(zfile, where)
      10:  *	FILE *zfile; struct daddr_f *where;
      11:  *
      12:  *	reads in a single 'page' as defined by the notesfile system and
      13:  *	returns the count of characters moved.
      14:  *
      15:  *	Original Coding:	Ray Essick	Long agao
      16:  *		moved out of gtext.c and mult.c and others   4/5/82
      17:  *	Converted for infinite size notes	RBE 5/8/82
      18:  *
      19:  */
      20:
      21: long    pagein (io, zfile, where)
      22: struct io_f *io;
      23: FILE * zfile;
      24: struct daddr_f *where;
      25: {
      26:
      27:     register int    c;
      28:     register int    i;
      29:     register long   nchars;
      30:     register long   ignored;                /* number ignored */
      31:     register int    ignoring;               /* whether ignoring */
      32:     struct daddr_f  nwhere;
      33:     struct txtbuf_f buf;                /* hold text */
      34:
      35:     locknf (io, TXTLOCK);               /* CRITICAL */
      36:     x (lseek (io -> fidtxt, 0L, 0) < 0, "pagein: bad seek 0");
      37:     x (read (io -> fidtxt, where, sizeof *where) < 0, "pagein: read 0");
      38:     x (lseek (io -> fidtxt, where -> addr, 0) < 0,
      39:         "pagein: bad seek 1");
      40:
      41:     where -> textlen = 0;               /* no text yet */
      42:     nchars = 0;
      43:     i = 0;
      44:     ignoring = 0;                   /* save em for now */
      45:     ignored = 0;
      46:     while ((c = getc (zfile)) != EOF)           /* grab input */
      47:     {
      48:     if (!ignoring)
      49:     {
      50:         if (i == BUFSIZE)               /* flush full buffer */
      51:         {
      52:         x (write (io -> fidtxt, buf.txtbuf, BUFSIZE) != BUFSIZE, "pagein: bad text");
      53:         i = 0;                  /* reset buffer */
      54:         }
      55:         buf.txtbuf[i++] = c;
      56:         if (++nchars >= io -> descr.d_longnote) /* count characters */
      57:         {
      58:         ignoring++;             /* don't add any more */
      59:         }
      60:     }
      61:     else                        /* ignoring */
      62:     {
      63:         ignored++;
      64:     }
      65:     }
      66:     if (i != 0)                     /* if we've got some */
      67:     x (write (io -> fidtxt, buf.txtbuf, i) != i, "pagein: bad text");
      68:     if (ignored)                    /* write warning */
      69:     {
      70:     sprintf (buf.txtbuf, "\n\n%s ignored %ld excess bytes\n",
      71:         System, ignored);
      72:     i = strlen (buf.txtbuf);            /* get length */
      73:     x (write (io -> fidtxt, buf.txtbuf, i) != i, "pagein: bad text");
      74:     nchars += i;                    /* count extras */
      75:     }
      76: /*
      77:  *	fix count in the header
      78:  */
      79:     where -> textlen = nchars;              /* fill header */
      80: /*
      81:  *	fix free pointer
      82:  */
      83:     x (lseek (io -> fidtxt, 0l, 0) < 0, "pagein:bad reseek");
      84:     nwhere.addr = where -> addr + nchars;
      85:     if (nwhere.addr & 1)                /* odd?? */
      86:     nwhere.addr++;                  /* round to word boundary */
      87:     x (write (io -> fidtxt, &nwhere, sizeof nwhere) != sizeof nwhere, "pagein: badupdate");
      88:
      89:     unlocknf (io, TXTLOCK);
      90:     return ((long) nchars);
      91: }

#### Defined functions

pagein defined in line 21; used 17 times

- in /usr/src/new/notes/src/archiver.c line 372, 391, 429
- in /usr/src/new/notes/src/compress.c line 134, 162, 186
- in /usr/src/new/notes/src/gtext.c line 106
- in /usr/src/new/notes/src/newsinput.c line 429, 441, 535, 692, 781, 814
- in /usr/src/new/notes/src/nfmail.c line 352, 366
- in /usr/src/new/notes/src/nfpipe.c line 120
- in /usr/src/new/notes/src/structs.h line 419

#### Defined variables

rcsid defined in line 5; never used

Last modified: 1985-01-19 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 812 |