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