home *** CD-ROM | disk | FTP | other *** search
/ The HTML Web Publisher's Construction Kit / HTMLWPCK.ISO / unix / cgi / c_src / feedback.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-27  |  2.1 KB  |  90 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "util.h"
  4. #define MAILER  "/usr/ucb/mail"
  5. #define LOGFILE "/usr/pub/feedback.log"
  6. #define LF      10
  7. #define MAX_ENT 1000                /*  max number of variables
  8.                                       that can be used */
  9.  
  10. #define MY_EMAIL     "downing@nyu.edu" 
  11.  
  12. /* header index. used to index the struct array containing the
  13.   variables passed from mosaic */
  14.  
  15. #define FIRST   0
  16. #define SECOND  1
  17. #define EMAIL   2
  18. #define LIST    3
  19. #define URGENCY 4
  20. #define MENU    5
  21. #define TEXTBOX 6
  22.  
  23. typedef struct {
  24.                char *name;
  25.                char *val;
  26.                } entry;
  27.  
  28. void main(void)
  29. {
  30.  
  31.        entry entries[MAX_ENT];
  32.        int cont_len,index,marker;
  33.        char address[256];
  34.        FILE *mdata, *log;
  35.  
  36.        index=marker=0;
  37.  
  38.  
  39.        cont_len = atoi(getenv("CONTENT_LENGTH"));
  40.     /*separate values and put into entries structure */
  41.  
  42.    for(index=0;cont_len&& (!feof(stdin));index++)
  43.  
  44.    {
  45.  
  46.        entries[index].val = fmakeword(stdin,'&',&cont_len);
  47.  
  48.        if ( index == TEXTBOX)
  49.           plustospace(entries[index].val);
  50.        else
  51.                plusto_(entries[index].val);
  52.        unescape_url(entries[index].val);
  53.    }
  54.  
  55.        printf("Content-type: text/html%c%c",LF,LF);
  56.        /* put together e-mail address */
  57.        sprintf(address,"%s -s %s %s",MAILER,entries[LIST].val,MY_EMAIL);
  58.  
  59.        if (!(mdata=popen(address,"w"))){
  60.                printf("<h1>Unable to open mail pipe</h1>%c",LF);
  61.                exit(-1); }
  62.  
  63.       fprintf(mdata,"New message from %s %s arrived.",
  64.                entries[FIRST].val,entries[SECOND].val);
  65.  
  66. /* return html code to browser */
  67.  
  68.        printf("<h1>Message sent!</h1> %c",LF);
  69.        printf("content follows:<p><hr>%c",LF);
  70.  
  71.    log=fopen(LOGFILE, "a");
  72.    fprintf(log,"----------\n");
  73.    for(index=0; index <= marker; index++)
  74.    {
  75.        printf("%s:  %s<p>",entries[index].name,
  76.               entries[index].val);
  77.        fprintf(log,"%s:  %s\n",entries[index].name,
  78.               entries[index].val);
  79.        }
  80.  
  81.    fprintf(log,"----------end--\n");
  82.  
  83.        pclose(mdata);
  84.        fclose(log);
  85.        exit(0);
  86. }
  87.  
  88.  
  89.  
  90.