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