int DoGraphPost(int sock, char * url, char * pData, char * 
                 rxBuffer)
{
  GraphData gd;
  gd.MaxD=100;
  gd.MinD=-10;
  gd.MaxT=0;
  gd.MinT=-24*3600;
  char buffer[80];
  char * cp;
  char siz;

  /* Extract basic variable */
  ExtractIntPostData("MaxD",pData,gd.MaxD);
  ExtractIntPostData("MinD",pData,gd.MinD);
  ExtractTimePostData("MaxT",pData,gd.MaxT);
  ExtractTimePostData("MinT",pData,gd.MinT);
  ExtractPostData("gSize",pData,buffer,80);
  siz=buffer[0];

  /* Extract button pressed to submit form */
  ExtractPostData("submittv",pData,buffer,80);
  cp=buffer;
  while ((*cp) && (isspace(*cp)))cp++;
  /* Values for buffer are set Show Last Show All */
  if (buffer[1]!='e')
  {
    if (buffer[5]=='L')
    {/* Show Last Hour */
      gd.MaxT=0;
      gd.MinT=-3600;
    }
    else
    {/*Show All */
      gd.MaxT=0;
      if (gNextPosition> gMaxStored) gd.MinT=gMaxStored;
      else
      gd.MinT=gNextPosition;
      gd.MinT*=gSampleInterval/TICKS_PER_SECOND;
      if (gd.MinT <60) gd.MinT=60;
      gd.MinT=gd.MinT*-1;
    }
  }

  /*Send requester back to proper web page */
  sprintf(buffer,"INDEX.HTM?%c%08X%08X%08X%08X",siz,gd.MaxD,gd.MinD,
          gd.MinT,gd.MaxT);
  RedirectResponse(sock,buffer);
}

Listing 5This code processes the variables sent in the POST request from the web browser. It extracts the individual control variables and uses them to generate a new URL that reflects the new settings.