Annotation of libwww/Library/src/HTHeader.c, revision 2.12

2.1       frystyk     1: /*                                                                  HTHeader.c
                      2: **     EXTRA HEADER MANAGER
                      3: **
                      4: **     (c) COPYRIGHT MIT 1995.
                      5: **     Please first read the full copyright statement in the file COPYRIGH.
2.12    ! frystyk     6: **     @(#) $Id: HTHeader.c,v 2.11 1996/06/07 04:39:58 eric Exp $
2.1       frystyk     7: **
                      8: ** HISTORY:
                      9: **     2 Nov 95 HFN    Written on a rainy night
                     10: */
                     11: 
                     12: /* Library Include files */
2.12    ! frystyk    13: #include "wwwsys.h"
2.1       frystyk    14: #include "HTUtils.h"
                     15: #include "HTString.h"
                     16: #include "HTParse.h"
                     17: #include "HTString.h"
                     18: #include "HTReq.h"
                     19: #include "HTHeader.h"                                   /* Implemented here */
2.10      eric       20: #include "HTMIMPrs.h"
2.1       frystyk    21: 
2.10      eric       22: #define MIME_HASH_SIZE 101
                     23: HTMIMEParseSet * ParseSet = NULL;
2.1       frystyk    24: PRIVATE HTList * HTGenerators = NULL;
                     25: 
                     26: /* --------------------------------------------------------------------------*/
                     27: 
                     28: /*
                     29: **     Register a Header generator to be called when we make request
                     30: */
                     31: PUBLIC BOOL HTGenerator_add (HTList * gens, HTPostCallback * callback)
                     32: {
                     33:     return callback ? HTList_addObject(gens, (void *) callback) : NO;
                     34: }
                     35: 
                     36: /*
                     37: **     Unregister a Header generator
                     38: */
                     39: PUBLIC BOOL HTGenerator_delete (HTList * gens, HTPostCallback * callback)
                     40: {
                     41:     return callback ? HTList_removeObject(gens, (void *) callback) : NO;
                     42: }
                     43: 
                     44: /*
                     45: **     Delete the list of registered header generators.
                     46: */
                     47: PUBLIC BOOL HTGenerator_deleteAll (HTList * gens)
                     48: {
                     49:     return HTList_delete(gens);
                     50: }
                     51: 
                     52: /* ------------------------------------------------------------------------- */
                     53: /*                  GLOBAL LIST OF PARSERS AND GENERATORS                   */
                     54: /* ------------------------------------------------------------------------- */
                     55: 
                     56: /*
                     57: **     Global List of parsers. list can be NULL
                     58: */
2.10      eric       59: PUBLIC void HTHeader_setMIMEParseSet (HTMIMEParseSet * list)
2.1       frystyk    60: {
2.10      eric       61:     ParseSet = list;
2.1       frystyk    62: }
                     63: 
2.10      eric       64: PUBLIC HTMIMEParseSet * HTHeader_MIMEParseSet (void)
2.1       frystyk    65: {
2.10      eric       66:     return ParseSet;
2.1       frystyk    67: }
                     68: 
2.7       frystyk    69: PUBLIC BOOL HTHeader_addParser (const char * token, BOOL case_sensitive,
2.4       frystyk    70:                                HTParserCallback * callback)
                     71: {
2.10      eric       72:     if (!ParseSet) ParseSet = HTMIMEParseSet_new(MIME_HASH_SIZE);
                     73:     return (HTMIMEParseSet_add(ParseSet, token, case_sensitive, callback) != NULL);
                     74: }
                     75: 
                     76: PUBLIC BOOL HTHeader_addRegexParser (const char * token, BOOL case_sensitive,
                     77:                                     HTParserCallback * callback)
                     78: {
                     79:     if (!ParseSet) ParseSet = HTMIMEParseSet_new(MIME_HASH_SIZE);
                     80:     return (HTMIMEParseSet_addRegex(ParseSet, token, case_sensitive, callback) != NULL);
2.4       frystyk    81: }
                     82: 
2.7       frystyk    83: PUBLIC BOOL HTHeader_deleteParser (const char * token)
2.5       frystyk    84: {
2.11      eric       85:     return HTMIMEParseSet_delete(ParseSet, token);
2.5       frystyk    86: }
                     87: 
2.1       frystyk    88: /*
                     89: **     Global List of header generators. list can be NULL
                     90: */
                     91: PUBLIC void HTHeader_setGenerator (HTList * list)
                     92: {
                     93:     HTGenerators = list;
                     94: }
                     95: 
                     96: PUBLIC HTList * HTHeader_generator (void)
                     97: {
                     98:     return HTGenerators;
2.4       frystyk    99: }
                    100: 
2.5       frystyk   101: PUBLIC BOOL HTHeader_addGenerator (HTPostCallback  * callback)
2.4       frystyk   102: {
                    103:     if (!HTGenerators) HTGenerators = HTList_new();
2.5       frystyk   104:     return HTGenerator_add(HTGenerators, callback);
                    105: }
                    106: 
                    107: PUBLIC BOOL HTHeader_deleteGenerator (HTPostCallback  * callback)
                    108: {
                    109:     if (!HTGenerators) return NO;
                    110:     return HTGenerator_delete(HTGenerators, callback);
2.1       frystyk   111: }
                    112: 
                    113: /*
                    114: **     Convenience function to clean up
                    115: */
                    116: PUBLIC void HTHeader_deleteAll (void)
                    117: {
2.11      eric      118:     HTMIMEParseSet_deleteAll(ParseSet);
2.1       frystyk   119:     if (HTGenerators) {
                    120:        HTGenerator_deleteAll(HTGenerators);
                    121:        HTGenerators = NULL;
                    122:     }
                    123: }

Webmaster