|
|
1.1 root 1:
2: /* this function will print the names of the 50 states and two other options
3: * to a window which is sized the same as a filename listing from a Contents
4: * file. The matching size is for continuity only AND there's too damn many
5: * windows to track at his point anyways.
6: */
7:
8: #include <stdio.h>
9: #include <curses.h>
10: #include "contents.h"
11: #include "maillist.h"
12:
13: void print_states(win1)
14: WINDOW *win1;
15:
16: {
17: int row, col;
18:
19:
20: wclear(win1);
21: for(row = 0;row<11;row++)
22: for(col=1;col<75;col+=15)
23: {
24: wmove(win1,row,col);
25: waddstr(win1,state[(row*5)+(col/15)]);
26: if (((row*5) + (col/15)) == 51)
27: break;
28: }
29: wrefresh(win1);
30:
31: }
32:
33: /* print_mail_states.c
34: *
35: * This will take the 'statename' passed form the calling function,
36: * open the maillist file and print the records that match the statename
37: * to a window in formatted columns, If there are more records that lines
38: * permitted on the window, the user will be prompted to press <return> to
39: * continue on with any following screens of info.
40: */
41:
42: void print_mail_states(win2)
43: WINDOW *win2;
44:
45: {
46: FILE *infp;
47: int x=2;
48: int y=0;
49:
50: if ((infp=fopen(workfile,"r")) == NULL)
51: {
52: noraw();
53: endwin();
54: printf("Error opening %s for input!\n", workfile);
55: exit(1);
56: }
57:
58:
59: /* print column titles */
60:
61: wclear(win2);
62: wmove(win2,0,0);
63: wstandout(win2);
64: waddstr(win2,"Sitename");
65: wmove(win2,0,15);
66: waddstr(win2,"Login:");
67: wmove(win2,0,24);
68: waddstr(win2,"State/Country:");
69:
70: /* if we are looking for a US mailsite, then show a column for
71: * cities
72: */
73:
74: if(strcmp(selection,"NON-US") != 0)
75: {
76: wmove(win2,0,49);
77: waddstr(win2,"City/Other:");
78: }
79: wstandend(win2);
80: wmove(win2,2,0);
81:
82: wrefresh(win2);
83:
84: /* read each record, comparing statename for matches. When a
85: match is found, print the record */
86:
87: while ( fread(&mail_rec,sizeof(struct mail),1,infp) == 1)
88: {
89: if( (strcmp(selection,mail_rec.state)== 0) || ((strcmp(selection,"NON-US")==0) && (strcmp(mail_rec.city,"COUNTRY")==0)))
90:
91: {
92: y++;
93: wmove(win2,x,0);
94: waddstr(win2,mail_rec.site);
95: wmove(win2,x,16);
96: waddstr(win2,mail_rec.login);
97: wmove(win2,x,26);
98: waddstr(win2,mail_rec.state);
99: if(strcmp(selection,"NON-US")!=0)
100: {
101: wmove(win2,x,50);
102: waddstr(win2,mail_rec.city);
103: }
104:
105: /* increment our line counter, if we've filled our screen,
106: * prompt the user to press <return> to continue on reading
107: * any followinf mail entries from the file.
108: */
109: x++;
110: if(x==18)
111: {
112: wmove(win2,x,0);
113: waddstr(win2,"Press <RETURN> for more");
114: wrefresh(win2);
115: while (13 != wgetch(win2));
116: x = 2;
117: wclear(win2);
118:
119: /* reprint the column titles */
120:
121: wmove(win2,0,0);
122: wstandout(win2);
123: waddstr(win2,"Sitename");
124: wmove(win2,0,15);
125: waddstr(win2,"Login:");
126: wmove(win2,0,24);
127: waddstr(win2,"State/Country:");
128:
129: if(strcmp(selection,"NON-US") != 0)
130: {
131: wmove(win2,0,49);
132: waddstr(win2,"City/Other:");
133: }
134: wstandend(win2);
135:
136: wrefresh(win2);
137: }
138: }
139: }
140: fclose(infp);
141:
142: wmove(win2,18,0);
143: wstandout(win2);
144:
145:
146: /* the variable 'y' was used as a counter in the read/print
147: * loop. If y = 0, the no matches were found and an approp.
148: * message to this affect will be printed.
149: */
150:
151: if(y==0)
152: waddstr(win2,"A place not yet heard from!");
153: else
154: waddstr(win2,"That's all folks!");
155:
156: wstandend(win2);
157: wmove(win2,19,0);
158: waddstr(win2,"Press <RETURN> to continue..");
159: wrefresh(win2);
160:
161: while(13 != wgetch(win2));
162: wclear(win2);
163:
164: }
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.