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, ¬e); /* 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
Defined variables
rcsid
defined in line
5;
never used
Defined macros