home *** CD-ROM | disk | FTP | other *** search
/ CGI How-To / CGI HOW-TO.iso / chap5 / 5_4 / text_c / text.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-15  |  2.5 KB  |  157 lines

  1.  
  2. #include "parsehtm.h"
  3. #include <stdio.h>
  4.  
  5. Dictionary userData;
  6.  
  7. #ifndef strcasecmp
  8.  
  9. int (strcasecmp)(const char *s1,const char *s2)
  10. {
  11.     int returnValue = 1;
  12.     
  13.     if((NULL != s1)&&(NULL != s2))
  14.     {
  15.         char test1,test2;
  16.         
  17.         for(;;++s1,++s2)
  18.         {
  19.             test1 = tolower(*s1);
  20.             test2 = tolower(*s2);
  21.             
  22.             if(test1 != test2)
  23.             {
  24.                 returnValue = 
  25.                     ((test1 < test2) ? -1:+1);
  26.                 break;
  27.             }
  28.             else if(test1 == '\0')
  29.             {
  30.                 returnValue = 0;
  31.                 break;
  32.             }
  33.         }
  34.     }
  35.     else if((NULL == s1)&&(NULL == s2))
  36.     {
  37.         returnValue = 0;
  38.     }
  39.     
  40.     return returnValue;
  41. }
  42.  
  43. #endif
  44.  
  45.  
  46. void textHandler(String ts,String as,String et,Dictionary td)
  47. {
  48.     String value = 0;
  49.     String data = 0;
  50.     String name = 0;
  51.     int len = 0;
  52.     char lenStr[8];
  53.     
  54.     value = dict_valueForKey(td,"TYPE");
  55.     
  56.     if(value && value->string)
  57.     {
  58.         if(!strcasecmp(value->string,"text"))
  59.         {
  60.             name = dict_valueForKey(td,"NAME");
  61.             if(name && name->string)
  62.             {
  63.                 data = dict_valueForKey(userData,name->string);
  64.             }
  65.             
  66.             if(data && value)
  67.             {
  68.                 value = dict_valueForKey(td,"VALUE");
  69.                 
  70.                 if(value)
  71.                 {
  72.                     string_setStringValue(value,data->string);
  73.                 }
  74.                 else
  75.                 {
  76.                     value = string_alloc(8);
  77.                     string_setStringValue(value, data->string);
  78.                     dict_setValueForKey(td,"VALUE",value);
  79.                 }
  80.                 
  81.                 len = strlen(data->string);
  82.                 sprintf(lenStr,"%d",len);
  83.                 
  84.                 value = dict_valueForKey(td,"SIZE");
  85.                 
  86.                 if(value)
  87.                 {
  88.                     string_setStringValue(value, lenStr);
  89.                 }
  90.                 else
  91.                 {
  92.                     value = string_alloc(8);
  93.                     string_setStringValue(value, lenStr);
  94.                     dict_setValueForKey(td,"SIZE",value);
  95.                 }
  96.             }
  97.             else
  98.             {
  99.                 value = dict_valueForKey(td,"VALUE");
  100.                 
  101.                 if(value)
  102.                 {
  103.                     string_empty(value);
  104.                 }
  105.                 else
  106.                 {
  107.                     value = string_alloc(1);
  108.                     dict_setValueForKey(td,"VALUE",value);
  109.                 }
  110.             }
  111.             
  112.             value = stringForTagDict(td);
  113.             
  114.             if(value)
  115.             {
  116.                 string_setStringValue(ts,value->string);
  117.             
  118.                 string_free(value);
  119.             }
  120.         }
  121.     }
  122. }
  123.  
  124. void main(int argc, char *argv[])
  125. {
  126.     String output;
  127.     String value;
  128.     
  129.     userData = dict_alloc();
  130.     
  131.     initializeHtmlParsingLibrary();
  132.     
  133.     dict_setValueForKey(handlerDict,"INPUT",textHandler);
  134.  
  135.     value = string_alloc(8);
  136.     string_setStringValue(value,"Stephen");
  137.     dict_setValueForKey(userData,"name",value);
  138.     
  139.     value = string_alloc(4);
  140.     string_setStringValue(value,"AMEX");
  141.     dict_setValueForKey(userData,"card",value);
  142.     
  143.     output = parseHtml("txt_c.htm");
  144.     
  145.     if(output && output->string)
  146.     {
  147.         printf("Content-type: text/html\n\n");
  148.         fwrite(output->string,sizeof(char),strlen(output->string),stdout);
  149.         printf("\n");
  150.         
  151.         string_free(output);
  152.     }
  153.     
  154.     exit(0);
  155. }
  156.  
  157.