Annotation of coherent/a/usr/bob/test/mwcbbs/print.c, revision 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.