/****************************************************************************
*                                                                          *
*  FILE:           agent.c                                                 *
*                                                                          *
*  PURPOSE:        load different html documents based on agent            *
*                                                                          *
*  AUTHOR:         Russell Berrett                                         *
*                                                                          *
*  DATE:           October 4, 1995                                         *
*                                                                          *
*  LAST UPDATED:   October 19, 1995                                        *
*                                                                          *
*                                                                          *
*  Copyright 1995 SurfUtah.Com.                                            *
*  Permission granted to copy, modify, and otherwise use this code in      *
*  whatever manner you see fit, with no warranty expressed or implied.     *
*  Please retain this notice; this is the only restriction.  If you        *
*  make any changes to the original code, please credit yourself so        *
*  that SurfUtah.Com is not asked to maintain versions of code that        *
*  were not developed by SurfUtah.Com.                                     *
*                                                                          *
*  SURFUTAH.COM GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE SOFTWARE  *
*  AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION, WARRANTY  *
*  OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE.    *
*                                                                          *
****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TRUE 1
#define FALSE 0

  /* add other agents here */
typedef enum {mozilla2_0, mozilla1_1, mozilla1_0, 
              ms_explorer, other_agent} agenttype; 

/*--------------------------------------------------*/
int main(int argc, char *argv[])
{
  agenttype theagent;
  char *cptr = NULL, location[512], agent[512];
  FILE *fptr = NULL;
  int character;


  sprintf(agent, "%s", getenv("HTTP_USER_AGENT"));

    /* check to see which type of agent is making request */
  cptr = strstr(agent, "Mozilla");
  if (cptr) {
    cptr += 8;
    if (strncmp("2.0", cptr, 3) <= 0)
      theagent = mozilla2_0;
    else if (strncmp("1.1", cptr, 3) <= 0)
      theagent = mozilla1_1;
    else
      theagent = mozilla1_0;
  }
  else if (strstr(agent, "Microsoft Internet Explorer")) {
    theagent = ms_explorer;
  }
  else {
    theagent = other_agent;
  }

    /* assign a location based on the agent */
  switch (theagent) {
     case mozilla2_0:
         /* ideally we should have a location that would have
            some kind of HTML source with frames, but I don't so
            I'll just let it run into Mozilla1.1 */
     case mozilla1_1:
       strcpy(location, "/www/htdocs/cgi/library/agent/home.html");
       break;
     case ms_explorer:
         /* Microsoft has some really cool stuff like embedded avi.
            It would be nice if I had something like that, but since
            I don't- I'll just let it run down to the non-enhanced */
     case mozilla1_0: 
         /* no table support in Netscape 1.0 */
     case other_agent:
       strcpy(location, "/www/htdocs/cgi/library/agent/home_ne.html");
       break;
  }

  printf("Content-type: text/html\n\n");

  fptr = fopen(location, "r");
  character = fgetc(fptr);
  while (character != EOF) {
    printf("%c", (char)character);
    character = fgetc(fptr);
  }
  fclose(fptr);

} /* main */

/*----------------------------------------------------------------------*/
/* eof */

