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

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.13    ! frystyk     6: **     @(#) $Id: HTHeader.c,v 2.12 1998/05/04 19:36:41 frystyk 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: HTMIMEParseSet * ParseSet = NULL;
2.1       frystyk    23: PRIVATE HTList * HTGenerators = NULL;
                     24: 
                     25: /* --------------------------------------------------------------------------*/
                     26: 
                     27: /*
                     28: **     Register a Header generator to be called when we make request
                     29: */
                     30: PUBLIC BOOL HTGenerator_add (HTList * gens, HTPostCallback * callback)
                     31: {
                     32:     return callback ? HTList_addObject(gens, (void *) callback) : NO;
                     33: }
                     34: 
                     35: /*
                     36: **     Unregister a Header generator
                     37: */
                     38: PUBLIC BOOL HTGenerator_delete (HTList * gens, HTPostCallback * callback)
                     39: {
                     40:     return callback ? HTList_removeObject(gens, (void *) callback) : NO;
                     41: }
                     42: 
                     43: /*
                     44: **     Delete the list of registered header generators.
                     45: */
                     46: PUBLIC BOOL HTGenerator_deleteAll (HTList * gens)
                     47: {
                     48:     return HTList_delete(gens);
                     49: }
                     50: 
                     51: /* ------------------------------------------------------------------------- */
                     52: /*                  GLOBAL LIST OF PARSERS AND GENERATORS                   */
                     53: /* ------------------------------------------------------------------------- */
                     54: 
                     55: /*
                     56: **     Global List of parsers. list can be NULL
                     57: */
2.10      eric       58: PUBLIC void HTHeader_setMIMEParseSet (HTMIMEParseSet * list)
2.1       frystyk    59: {
2.10      eric       60:     ParseSet = list;
2.1       frystyk    61: }
                     62: 
2.10      eric       63: PUBLIC HTMIMEParseSet * HTHeader_MIMEParseSet (void)
2.1       frystyk    64: {
2.10      eric       65:     return ParseSet;
2.1       frystyk    66: }
                     67: 
2.7       frystyk    68: PUBLIC BOOL HTHeader_addParser (const char * token, BOOL case_sensitive,
2.4       frystyk    69:                                HTParserCallback * callback)
                     70: {
2.10      eric       71:     if (!ParseSet) ParseSet = HTMIMEParseSet_new(MIME_HASH_SIZE);
                     72:     return (HTMIMEParseSet_add(ParseSet, token, case_sensitive, callback) != NULL);
                     73: }
                     74: 
                     75: PUBLIC BOOL HTHeader_addRegexParser (const char * token, BOOL case_sensitive,
                     76:                                     HTParserCallback * callback)
                     77: {
                     78:     if (!ParseSet) ParseSet = HTMIMEParseSet_new(MIME_HASH_SIZE);
                     79:     return (HTMIMEParseSet_addRegex(ParseSet, token, case_sensitive, callback) != NULL);
2.4       frystyk    80: }
                     81: 
2.7       frystyk    82: PUBLIC BOOL HTHeader_deleteParser (const char * token)
2.5       frystyk    83: {
2.11      eric       84:     return HTMIMEParseSet_delete(ParseSet, token);
2.5       frystyk    85: }
                     86: 
2.1       frystyk    87: /*
                     88: **     Global List of header generators. list can be NULL
                     89: */
                     90: PUBLIC void HTHeader_setGenerator (HTList * list)
                     91: {
                     92:     HTGenerators = list;
                     93: }
                     94: 
                     95: PUBLIC HTList * HTHeader_generator (void)
                     96: {
                     97:     return HTGenerators;
2.4       frystyk    98: }
                     99: 
2.5       frystyk   100: PUBLIC BOOL HTHeader_addGenerator (HTPostCallback  * callback)
2.4       frystyk   101: {
                    102:     if (!HTGenerators) HTGenerators = HTList_new();
2.5       frystyk   103:     return HTGenerator_add(HTGenerators, callback);
                    104: }
                    105: 
                    106: PUBLIC BOOL HTHeader_deleteGenerator (HTPostCallback  * callback)
                    107: {
                    108:     if (!HTGenerators) return NO;
                    109:     return HTGenerator_delete(HTGenerators, callback);
2.1       frystyk   110: }
                    111: 
                    112: /*
                    113: **     Convenience function to clean up
                    114: */
                    115: PUBLIC void HTHeader_deleteAll (void)
                    116: {
2.11      eric      117:     HTMIMEParseSet_deleteAll(ParseSet);
2.1       frystyk   118:     if (HTGenerators) {
                    119:        HTGenerator_deleteAll(HTGenerators);
                    120:        HTGenerators = NULL;
                    121:     }
                    122: }

Webmaster