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

##### Functions

    limindx           X

##### Macros

    INDEXROW          X

       1: #include "parms.h"
       2: #include "structs.h"
       3:
       4: #ifdef  RCSIDENT
       5: static char rcsid[] = "$Header: limindx.c,v 1.7.0.2 85/09/09 18:32:46 notes Rel $";
       6: #endif	RCSIDENT
       7:
       8: /*
       9:  *	limindx(io) struct io_f *io;
      10:  *	runs a limited form of the index and prntind functions.
      11:  *	its purpose is to come up with a note number for forwarding
      12:  *	notes as responses.
      13:  *
      14:  *	Returns the note number picked.
      15:  *		0 means no note.
      16:  *
      17:  *	Original coding:	Ray Essick	January 1982
      18:  *
      19:  */
      20:
      21: limindx (io)
      22: struct io_f *io;
      23: {
      24:     int     firstdis,
      25:             lastdis;
      26:     char    c;
      27:     int     i,
      28:             znote,
      29:             zresp;
      30:     struct note_f   note;
      31:     char    buf[NAMESZ + SYSSZ + 2];            /* for display */
      32:
      33:     firstdis = io -> descr.d_nnote - Nindex + 1;    /* start at the end of the file */
      34:     while (1)
      35:     {
      36:     prntind (io, &firstdis, &lastdis);      /* show the page */
      37:     at (2, 28);
      38:     printf ("---- Limited Index ----");
      39:     at (0, 1);
      40:     c = gchar ();
      41:     printf ("\b \b");
      42:     switch (c)
      43:     {
      44:         case '?':
      45:         case 'h':
      46:         help (LIMHLP);
      47:         break;
      48:
      49:         case '\r':
      50:         case '\n':
      51:         case ' ':
      52:         case '+':                   /* advance 1 page */
      53:         firstdis = lastdis;
      54:         break;
      55:
      56:         case '-':                   /* backwards 1 page */
      57:         case '\b':
      58:         firstdis -= Nindex;
      59:         break;
      60:
      61:         case '=':                   /* back to the start */
      62:         firstdis = 1;
      63:         break;
      64:
      65:         case '*':                   /* last page of index */
      66:         firstdis = io -> descr.d_nnote - Nindex + 1;
      67:         break;
      68:
      69:         case '!':                   /* give him a shell */
      70:         gshell ();
      71:         break;
      72:
      73:         case 'q':                   /* leave, giving up */
      74:         case 'Q':                   /* and others .. */
      75: #ifdef  K_KEY
      76:         case 'k':
      77:         case 'K':
      78: #endif	K_KEY
      79:         return 0;
      80:
      81:         case 'x':                   /* search for title */
      82:         case 'X':
      83:         i = tsearch (io, lastdis, c == 'x');    /* assume lies before here */
      84:         if (i > 0)
      85:             firstdis = i;           /* set him on that page */
      86:         continue;               /* otherwise get another key */
      87:
      88:         case 'a':
      89:         case 'A':                   /* author search from current spot */
      90:         znote = lastdis;
      91:         zresp = 0;              /* start at the correct place */
      92:         do
      93:         {
      94:             i = asearch (io, &znote, &zresp, (c == 'a'));
      95:                             /* look */
      96:             if (i > 0)
      97:             {
      98:             if (zresp != 0)
      99:                 continue;           /* not a 'note' */
     100:             firstdis = znote;       /* go there */
     101:             break;              /* out of this loop */
     102:             }
     103:         }
     104:         while (i > 0);              /* until not found */
     105:         continue;               /* get another command */
     106:
     107:         case '0':                   /* pick a note */
     108:         case '1':
     109:         case '2':
     110:         case '3':
     111:         case '4':
     112:         case '5':
     113:         case '6':
     114:         case '7':
     115:         case '8':
     116:         case '9':
     117:         printf ("  Note number > ");
     118:         znote = getnum (c);
     119:         if (znote <= io -> descr.d_nnote)   /* if range ok */
     120:         {
     121:             /*
     122: 		     * print the index line for this note...
     123: 		     */
     124:             getnrec (io, znote, &note);     /* get descriptor */
     125: #define INDEXROW    -2
     126:             at (INDEXROW, 1);
     127:             printf ("%d/%d/%02d", note.n_rcvd.w_month,
     128:                 note.n_rcvd.w_day, note.n_rcvd.w_year % 100);
     129:             at (INDEXROW, 10);
     130:             printf ("%3d", znote);
     131:             if (note.n_stat & DIRMES)
     132:             printf ("*");
     133:             else
     134:             printf (" ");
     135:             clearerr (stdout);
     136:             fwrite (note.ntitle, 1, strlen (note.ntitle), stdout);
     137:             if (note.n_nresp != 0)
     138:             {
     139:             at (INDEXROW, 10 + 4 + TITLEN + 1);
     140:             printf ("%3d", note.n_nresp);
     141:             }
     142:             at (INDEXROW, 10 + 4 + TITLEN + 1 + 3 + 1);
     143:             if (strcmp (Authsystem, note.n_auth.asystem) != 0 &&
     144:                 strcmp ("Anonymous", note.n_auth.aname) != 0)
     145:             {
     146: #ifdef  USERHOST
     147:             sprintf (buf, "%s@%s", note.n_auth.aname, note.n_auth.asystem);
     148: #else
     149:             sprintf (buf, "%s!%s", note.n_auth.asystem, note.n_auth.aname);
     150: #endif	USERHOST
     151:             }
     152:             else
     153:             sprintf (buf, "%s", note.n_auth.aname);
     154:
     155:             buf[26] = '\0';         /* don't overflow line */
     156:             printf ("%s", buf);
     157:             at (-1, 1);             /* now ask him */
     158:             printf ("Do you really want note %d? ", znote);
     159:             if (askyn (" (y/n) ") == 'y')   /* he wants it */
     160:             return znote;
     161:         }
     162:         else
     163:         {
     164:             at (0, PROMPTMSGX);
     165:             printf ("Note %d doesn't exist");
     166:             continue;
     167:         }
     168:     }
     169:     }
     170: }

#### Defined functions

limindx defined in line 21; used 1 times

- in /usr/src/new/notes/src/readem.c line 655

#### Defined variables

rcsid defined in line 5; never used

#### Defined macros

INDEXROW defined in line 125; used 4 times

- in line 126-129(2), 139-142(2)

Last modified: 1985-09-20 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 617 |