Annotation of researchv10dc/cmd/library/option3.c, revision 1.1

1.1     ! root        1: /*     library:option3.c       1.10    */
        !             2: #include "sccsid.h"
        !             3: VERSION(@(#)library:option3.c  1.10)
        !             4: 
        !             5: /******************  option3.c  *****************************/
        !             6: 
        !             7: /* This routine accepts bulletin subscriptions.
        !             8:  *
        !             9:  */
        !            10: 
        !            11: #include <stdio.h>
        !            12: #include <ctype.h>
        !            13: #include <signal.h>
        !            14: 
        !            15: option3(logfile, argc, argv)
        !            16: FILE *logfile;
        !            17: int argc;
        !            18: char *argv[];
        !            19: {  
        !            20:     int firsttime = 1;  /* initialize to indicate first time through  */
        !            21:     int i, numreq=0;
        !            22:     long day;
        !            23:     char *dateptr, *ctime(), *ptr;
        !            24:     char  instr[512], response[5000], *strchr();
        !            25:     FILE *helpfile, *sendfile, *popen();
        !            26:     extern char *Cmd, *whereto, libcntl[], pan[], req_name[];
        !            27: 
        !            28:     /* get the date - note used only in the log */
        !            29:     time(&day);
        !            30:     dateptr = ctime(&day);
        !            31: 
        !            32:     while (1) {  /* continue until user is done */
        !            33:        if (!argc) {
        !            34:            if (firsttime) {
        !            35:                printf("Enter your subscriptions in the form:\n (un)subscribe to <bulletin name>\n");
        !            36:                firsttime = 0;
        !            37:                }
        !            38:            /* get the subscription */
        !            39:            printf("Enter subscription");
        !            40:            printf(" (exit with a period):");
        !            41:            if (fgets(instr, 512, stdin) == NULL) break;
        !            42:            if (*instr == '.') break;
        !            43:            if ((ptr = strchr(instr, '\n')) != NULL) *ptr = '\0';
        !            44:            }
        !            45:        /* special handling in the case of parameters passed */
        !            46:        else {
        !            47:            *instr = '\0';
        !            48:            for (i=0; i<argc; i++) {
        !            49:                if (*instr) strcat(instr, " ");
        !            50:                strcat(instr, argv[i]);
        !            51:                }
        !            52:            }
        !            53:        uppercase(instr);
        !            54:        /* check for help request */
        !            55:        if ((*instr == '?') || (*instr == 'H')) {
        !            56:            sprintf(instr, "%s/option3.help", WHERE);
        !            57:            if ((helpfile = fopen(instr, "r")) == NULL) {
        !            58:                printf("Sorry. Help statement unavailable!\n");
        !            59:                continue;
        !            60:                }
        !            61:            while (fgets(instr, 250, helpfile) != NULL)
        !            62:                    fputs(instr, stdout);
        !            63:            fclose(helpfile);
        !            64:            if (argc) break;
        !            65:            continue;
        !            66:            }
        !            67:        if (strlen(instr) > 0) {
        !            68:            if ((strncmp(instr, "UNSUB", 5) != 0) && (strncmp(instr, "SUB", 3) != 0) ) {
        !            69:                    printf("Illegal entry - a subscription or unsubscription is required.\n");
        !            70:                    firsttime=1;
        !            71:                    if (argc) break;
        !            72:                    continue;
        !            73:                    }
        !            74:            strcat(response, instr);
        !            75:            strcat(response, "\n");
        !            76:            numreq++;
        !            77:            }
        !            78: 
        !            79:        if (argc) break;
        !            80:        } /* end of subscription getting loop */
        !            81:        
        !            82:     if (!numreq) {
        !            83:            printf("No subscription entered!\n");
        !            84:            return;
        !            85:            }
        !            86:     /* output the record */
        !            87:     signal(SIGINT, SIG_IGN);
        !            88: #ifdef MSDOS
        !            89:     if ((sendfile = fopen("\\pipe.tmp", "w")) == NULL) {
        !            90: #else
        !            91:     sprintf(instr, "%s %s", Cmd, whereto);
        !            92:     if ((sendfile = popen(instr, "w")) == NULL) {
        !            93: #endif
        !            94:        fprintf(stderr, "Couldn't open mail pipe to send requests! No requests sent\n");
        !            95:        exit(1);
        !            96:        }
        !            97:     fprintf(sendfile, "* *#SUB-%s\n%s\n%s\n**-**\n", libcntl, pan, req_name);
        !            98:     fputs(response, sendfile);
        !            99: #ifdef MSDOS
        !           100:     fclose(sendfile);
        !           101:     sprintf(instr, "%s -f \\pipe.tmp -slibRequest %s", Cmd, whereto);
        !           102:     system(instr);
        !           103:     unlink("\\pipe.tmp");
        !           104: #else
        !           105:     pclose(sendfile);
        !           106: #endif
        !           107:     if (logfile != NULL) {
        !           108:        fprintf(logfile, "From %s %sSubject: Subscription request\n",
        !           109:                    req_name, dateptr);
        !           110:        fputs(response, logfile);
        !           111:        fputc('\n', logfile);
        !           112:        fclose(logfile);
        !           113:        }
        !           114:     fprintf(stdout, "Your %d subscription requests have been sent\n", numreq);
        !           115:     return;
        !           116:     }
        !           117: 

unix.superglobalmegacorp.com

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