Annotation of researchv10dc/cmd/library/option3.c, revision 1.1.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.