Annotation of coherent/a/usr/bob/test/mwcbbs/print.c, revision 1.1.1.1

1.1       root        1: /* print.c
                      2:  * With any luck, this program will read the Content file format
                      3:  * and print information to a text file which can later be spooled 
                      4:  * for printing by the user.
                      5: */
                      6: 
                      7: #include <stdio.h>
                      8: #include <curses.h>
                      9: #include "contents.h"
                     10: 
                     11: #define PRINTFILE "mwcbbs.print"
                     12: 
                     13: void print(win2)
                     14: WINDOW *win2;
                     15: 
                     16: {
                     17: FILE *infp, *outfp;
                     18: char new_date[3];
                     19: int month, day, year;
                     20: int cmp_month, cmp_day, cmp_year;
                     21: char choice, dummy;
                     22: 
                     23: 
                     24:        /* we will first as if the user wants to specify a date. If
                     25:         * the user responds 'yes', we will get a month and year
                     26:         * only. Later in the read/fprintf loop, we will perform
                     27:         * the comparison before printing a record to the file.
                     28:        */
                     29: 
                     30:        wclear(win2);
                     31:        wmove(win2,0,10);
                     32:        wprintw(win2,"Do you wish to specify a start date for printing only");
                     33:        wmove(win2,1,10);
                     34:        wprintw(win2,"those file  entries NEWER than  the date you specify?");
                     35:        wmove(win2,3,10);
                     36:        wprintw(win2,"[y]es or any other key for no date specification.");
                     37:        wrefresh(win2);
                     38: 
                     39:        choice = 0;
                     40:        while( choice == 0)
                     41:                choice = wgetch(win2);
                     42: 
                     43:        if(choice == 'y')
                     44:        {
                     45: 
                     46:        noraw();
                     47: 
                     48:        /* print our screen to get the user's info */
                     49: 
                     50:        wclear(win2);
                     51: 
                     52:        wmove(win2,0,15);
                     53:        wprintw(win2,"Please specify the month and year  from which to");
                     54:        wmove(win2,1,15);
                     55:        wprintw(win2,"begin  searching new entries.  Only those  files");
                     56:        wmove(win2,2,15);
                     57:        wprintw(win2,"with a month and year greater than the specified");
                     58:        wmove(win2,3,15);
                     59:        wprintw(win2,"date will be printed to the file %s.",PRINTFILE);
                     60:        wmove(win2,5,35);
                     61:        wprintw(win2,"Month: ");
                     62:        wmove(win2,7,35);
                     63:        wprintw(win2,"Year:  ");
                     64:        wstandout(win2);
                     65:        wmove(win2,5,42);
                     66:        wprintw(win2,"  ");
                     67:        wmove(win2,7,42);
                     68:        wprintw(win2,"  ");
                     69:        wstandend(win2);
                     70:        wrefresh(win2);
                     71: 
                     72:        wmove(win2,5,42);
                     73:        wrefresh(win2);
                     74:        cmp_month = 99;
                     75:        while((cmp_month > 12) || (cmp_month < 1))
                     76:                {
                     77:                wscanw(win2,"%d",&cmp_month);
                     78:                wmove(win2,5,42);
                     79:                wrefresh(win2);
                     80:                wstandout(win2);
                     81:                wprintw(win2,"  ");
                     82:                wstandend(win2);
                     83:                wmove(win2,5,44);
                     84:                wprintw(win2,"               ");
                     85:                wmove(win2,5,42);
                     86:                wrefresh(win2);
                     87:                }
                     88:        wmove(win2,5,42);
                     89:        clrtoeol();
                     90:        wstandout(win2);
                     91:        wprintw(win2,"%2d",cmp_month);
                     92:        wstandend(win2);
                     93:        wmove(win2,5,44);
                     94:        wprintw(win2,"              ");
                     95:        wrefresh(win2);
                     96: 
                     97:        wmove(win2,7,42);
                     98:        wrefresh(win2);
                     99:        cmp_year = -1;
                    100:        while((cmp_year > 99) || (cmp_year<0))
                    101:                {
                    102:                wscanw(win2,"%d",&cmp_year);
                    103:                wmove(win2,7,42);
                    104:                wrefresh(win2);
                    105:                wstandout(win2);
                    106:                wprintw(win2,"  ");
                    107:                wstandend(win2);
                    108:                wmove(win2,7,44);
                    109:                wprintw(win2,"               ");
                    110:                wmove(win2,7,42);
                    111:                wrefresh(win2);
                    112:                }
                    113:        wmove(win2,7,42);
                    114:        clrtoeol();
                    115:        wstandout(win2);
                    116:        wprintw(win2,"%2d",cmp_year);
                    117:        wstandend(win2);
                    118:        wmove(win2,7,44);
                    119:        wprintw(win2,"              ");
                    120:        wrefresh(win2);
                    121: 
                    122:        raw();
                    123:        }
                    124: 
                    125:        if ((infp=(fopen(workfile,"r")))==NULL)
                    126:                {
                    127:                noraw();
                    128:                endwin();
                    129:                printf("Could not open file %s for input!\n",workfile);
                    130:                exit(1);
                    131:                }
                    132:        if ((outfp=(fopen(PRINTFILE,"w")))==NULL)
                    133:                {
                    134:                noraw();
                    135:                endwin();
                    136:                printf("Could not open file %s for writing!\n",PRINTFILE);
                    137:                exit(1);
                    138:                }
                    139: 
                    140:        
                    141:        if(choice != 'y')
                    142:                wclear(win2);
                    143:        wmove(win2,12,15);
                    144:        wprintw(win2,"Writing file %s... please wait.",PRINTFILE);
                    145:        wrefresh(win2);
                    146: 
                    147:        fprintf(outfp,"Contents file for: %s      ",workfile);
                    148: 
                    149:        /* if we're doing a date search, then print the date */
                    150:        if(choice == 'y')
                    151:                fprintf(outfp,"Search after: %d/%d\n",cmp_month, cmp_year);
                    152:        else
                    153:                fprintf(outfp,"\n");
                    154: 
                    155:        while ((fread(&record,sizeof(struct entry),1,infp))!=0)
                    156:                {
                    157:                strcpy(new_date,"");
                    158:                strncpy(new_date,record.date,2);
                    159:                month = atoi(new_date);
                    160:                strcpy(new_date,"");
                    161: 
                    162:                new_date[0] = record.date[2];
                    163:                new_date[1] = record.date[3];
                    164:                new_date[2] = '/';
                    165:                day = atoi(new_date);
                    166:                strcpy(new_date,"");
                    167: 
                    168:                new_date[0] = record.date[4];
                    169:                new_date[1] = record.date[5];
                    170:                new_date[2] = '\0';
                    171:                year = atoi(new_date);
                    172: 
                    173: 
                    174: if ((choice != 'y') || ((choice == 'y') && ((month > cmp_month) && (year >= cmp_year) || (year > cmp_year) )))
                    175:                        {
                    176:                        fprintf(outfp,"\nFILE: %15s\t\tDATE: %d/%d/%d\t\tSIZE: %s\n\n",
                    177:                                record.filename, month, day, year ,record.filesize);
                    178:                        fprintf(outfp,"Description:\n");
                    179:                        fprintf(outfp," %s\n",record.description);
                    180:                        fprintf(outfp,"Other notes:\n");
                    181:                        fprintf(outfp," %s\n",record.notes);
                    182:                        fprintf(outfp,"Required files:\n");
                    183:                        fprintf(outfp," %s\n\n",record.requires);
                    184:                        }
                    185:                }
                    186:        fclose(infp);
                    187:        fclose(outfp);
                    188:        wclear(win2);
                    189:        wmove(win2,0,10);
                    190:        wprintw(win2,"Because  we have  just  written  the  file %s,",PRINTFILE);
                    191:        wmove(win2,1,10);
                    192:        wprintw(win2,"the  program  will now  end so  that  you may  view  the");
                    193:        wmove(win2,2,10);
                    194:        wprintw(win2,"file and/or print it.  This is  to prevent  you from the");
                    195:        wmove(win2,3,10);
                    196:        wprintw(win2,"possibility of immediate accidental erasure of the file.");
                    197:        wmove(win2,6,10);
                    198:        wprintw(win2,"File written. Press <RETURN> to exit program.");
                    199:        clrtoeol();
                    200:        wrefresh(win2);
                    201:        while(13 != wgetch(win2)) ;
                    202: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.