home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 March / PCWK0397.iso / novell / webserv3 / nws30.exe / DISK1 / WEB / SAMPLES / CGIAPP / CGIAPP.C next >
C/C++ Source or Header  |  1996-09-19  |  3KB  |  88 lines

  1.  
  2. #include "rcgi.h"
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <nwenvrn.h> /* For GetFileServerName() */
  6.  
  7. int process_request();
  8.  
  9. main(int argc, char **argv)
  10. {
  11.  
  12.     /********* Typical calls in the beginning of the main program ****/
  13.     /********* Use rcgi_cleanup() to cleanup RCGI stuff before you exit ***/
  14.  
  15.  
  16.     atexit(rcgi_cleanup);
  17.     AtUnload(rcgi_cleanup);
  18.  
  19.     /****** Process Command line parameters to get the port number ****/
  20.     /****** on which this RCGI server should listen for requests   ****/
  21.  
  22.     if (argc != 1 && argc != 3) 
  23.         wrong_args();
  24.     
  25.     if (argc > 1) { 
  26.         /** So we have some arguments, now check them **/
  27.  
  28.         if (argv[1][0] != '-' && argv[1][0] != '/')
  29.             wrong_args();
  30.         if (argv[1][1] != 'p' && argv[1][1] != 'P')
  31.             wrong_args();
  32.     }
  33.  
  34.     /********** Done with processing command line parameters *******/
  35.     /********** Now lets get down to business                *******/
  36.     /********** Invoke rcgi_main() to get and process requests *****/
  37.     /********** and data from the web server using RCGI      *******/
  38.  
  39.     if (argc == 3)  
  40.         /** We have the port number so pass it to the RCGI processor **/
  41.         rcgi_main(argv[2], process_request);
  42.     else
  43.         /** no port number so the RCGI processor uses the default **/
  44.         rcgi_main(NULL, process_request);
  45.  
  46. }
  47.  
  48. int process_request()
  49. {
  50.     /***** When this function gets invoked, all of the RCGI      ****/
  51.     /***** processing is done. Now all stdin data is stored in   ****/
  52.     /***** the "input" array, all environment data is in the     ****/
  53.     /***** "env" array and all command line parameter data is in ****/
  54.     /***** the "cmd_line" array. Now use this info to do the task****/
  55.     /***** at hand and send the results back using the support fns ***/
  56.  
  57.     char name[3000], *cptr;
  58.     int i=0;
  59.  
  60.     memset(name, 0, 3000);
  61.     cptr = name;
  62.     strcat(cptr, "File Server Name is :");
  63.     cptr += strlen("File Server Name is :");
  64.     GetFileServerName(0, cptr);
  65.     strcat(cptr, "\r\n");
  66.     strcat(cptr, "Environment variables are :");
  67.     strcat(cptr, "\r\n");
  68.     for (i=0;i<env_count;i++){
  69.         strcat(cptr, env[i]);
  70.         strcat(cptr, "\r\n");
  71.     }
  72.  
  73.     /******* Now use the RCGI support function to send a standard header **/
  74.     rcgi_sendheader();
  75.  
  76.     /******* Use the RCGI support function to send your reply **/
  77.     rcgi_sendreply(name);
  78.     return 0;
  79. }
  80.  
  81. /*** Used to print an error message about command line args ***/
  82. wrong_args() 
  83. {
  84.         printf("Wrong Arguments\n");
  85.         printf("Usage : load testcgi.nlm [-p port_num]\n");
  86.         exit(1);
  87. }
  88.