|
|
1.1 root 1: /* this function will open the file and read the appropriate record,
2: * then display it on the window in the approp. positions.
3: */
4:
5: #include <stdio.h>
6: #include <curses.h>
7: #include "contents.h"
8:
9:
10:
11: void display_record (win2, row, col, screen_num)
12: WINDOW *win2;
13: int row, col, screen_num;
14:
15: {
16: WINDOW *win3;
17: char choice;
18: FILE *infp;
19: int x;
20:
21: if ((infp = fopen(workfile,"r")) == NULL)
22: {
23: printf("\007ERROR opening file for input!\n");
24: exit(1);
25: }
26:
27: fseek(infp,REC_FORMULA, 0l);
28: fread(&record, sizeof (struct entry),1,infp);
29: fclose (infp);
30:
31: wstandout(win2);
32:
33: wmove(win2,NAMEHI);
34: waddstr(win2,record.filename);
35:
36: wmove(win2,DESCHI);
37: waddstr(win2,record.description);
38:
39: wmove(win2,DATEHI);
40: waddch(win2,record.date[0]);
41: waddch(win2,record.date[1]);
42: waddch(win2,'/');
43: waddch(win2,record.date[2]);
44: waddch(win2,record.date[3]);
45: waddch(win2,'/');
46: waddch(win2,record.date[0]);
47: waddch(win2,record.date[1]);
48:
49:
50: wmove(win2,SIZEHI);
51: waddstr(win2,record.filesize);
52:
53: if(open_mode != 'd')
54: {
55: wmove(win2,PARTHI);
56: wprintw(win2,"%.2d",record.noparts);
57: }
58:
59: wmove(win2,REQHI);
60: waddstr(win2,record.requires);
61:
62: wmove(win2,NOTEHI);
63: waddstr(win2,record.notes);
64:
65: if(open_mode != 'd')
66: {
67: wmove(win2,PATHHI);
68: waddstr(win2,record.pathname);
69: }
70:
71: wrefresh(win2);
72: wstandend(win2);
73:
74:
75: /* allocate another window as a message area */
76:
77: if ( (win3=newwin(2,40,20,0)) == NULL)
78: {
79: printf("Memory allocation for win3 failed!\n");
80: exit(1);
81: }
82:
83: /* the following tests for 'd' for delete from command line. If the user
84: * used a 'd' on the command line, make sure that he/she really wants to
85: * delete the record, then call the del_reocrd function.
86: */
87: if(open_mode == 'r')
88: {
89: wmove (win3,0,0);
90: waddstr(win3,"Do you wish to delete this record?");
91: wmove(win3,1,0);
92: waddstr(win3, "[y] yes; any other key to abort.");
93: wrefresh(win3);
94:
95: choice = '\0';
96: while (choice == '\0')
97: choice = wgetch(win3);
98:
99: if ((choice == 'y') || (choice == 'Y'))
100: {
101: wclear(win3);
102: wmove(win3,0,0);
103: waddstr(win3,"working... please wait");
104: wrefresh(win3);
105: del_rec(win3, row, col, screen_num);
106: }
107:
108: wclear(win3);
109: wmove(win3,0,0);
110: waddstr(win3,"Press RETURN to continue...");
111: wrefresh(win3);
112: while(13 != wgetch(win3))
113: ;
114: wclear(win3);
115: wrefresh(win3);
116: delwin(win3);
117: }
118:
119: /* we are in download mode, so prompt for the next data screen */
120: else
121: {
122: wclear(win3);
123: wmove(win3,0,0);
124: waddstr(win3,"Press <RETURN> for next screen.");
125: wrefresh(win3);
126: while(13 != wgetch(win3))
127: ;
128: wclear(win2);
129: wmove(win2,1,0);
130: waddstr(win2,"Size of file is: ");
131: wmove(win2,1,40);
132: waddstr(win2,"Number of parts to download: ");
133: wstandout(win2);
134: wmove(win2,1,18);
135: waddstr(win2,record.filesize);
136: wmove(win2,1,69);
137: record.noparts = (record.noparts == 0) ? 1 : record.noparts;
138: wprintw(win2,"%d",record.noparts);
139: wstandend(win2);
140: wmove(win2,3,5);
141: wprintw(win2,"The following commands will be needed to download ");
142: wstandout(win2);
143: waddstr(win2,record.filename);
144: wstandend(win2);
145:
146: /* if there is more than one part to download, call a function to generate
147: * the multiple uucp requests necessary to grab each piece from mwcbbs.
148: */
149:
150: if (record.noparts >1)
151: {
152: build_uucp(record);
153: for (x=0;x<record.noparts;x++)
154: {
155:
156: /* limit ourselves to 10 displayed commands */
157: if (x==10)
158: {
159: wmove(win2,16,0);
160: wprintw(win2,"There are %d more parts to download which do not appear on ths screen.", (record.noparts - x));
161: break;
162: }
163:
164: wmove(win2,5+x,0);
165: waddstr(win2,getfiles[x]);
166: }
167: }
168: else
169: {
170: strcpy(getfiles[0],HOST);
171: strcat(getfiles[0],record.pathname);
172: strcat(getfiles[0],RECEIVER);
173: wmove(win2,5,0);
174: waddstr(win2,getfiles);
175: wrefresh(win2);
176: }
177:
178: wclear(win3);
179: wmove(win3,0,0);
180: waddstr(win3,"Do you wish to download this file?");
181: wmove(win3,1,0);
182: waddstr(win3,"[y] yes or any other key to abort.");
183: wrefresh(win2);
184: wrefresh(win3);
185: choice = '\0';
186: while(choice == '\0')
187: choice = wgetch(win3);
188:
189: wclear(win3);
190: wrefresh(win3);
191:
192: if(choice == 'y' || choice == 'Y')
193: {
194: wclear(win3);
195: wmove(win3,0,0);
196: waddstr(win3,"Processing requests...");
197: wrefresh(win3);
198: for(x = 0; x < record.noparts; x++)
199: system(getfiles[x]);
200: wclear(win3);
201: wmove(win3,0,0);
202: waddstr(win3,"Press <RETURN> to continue.");
203: wrefresh(win3);
204: while(13 != wgetch(win3))
205: ;
206: wclear(win3);
207: wrefresh(win3);
208: }
209: }
210: delwin(win3);
211: }
212:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.