Mercurial > noffle
comparison src/protocol.c @ 282:baa6408d1bbc noffle
[svn] * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting,
check the article for those headers that are specified in section
5 of the IETF draft and ensure they only occur once.
* src/post.c: Clean up a conditional.
author | bears |
---|---|
date | Mon, 06 Jan 2003 18:16:18 +0000 |
parents | 3477050e8d10 |
children | 01755687c565 |
comparison
equal
deleted
inserted
replaced
281:5eece4dfd945 | 282:baa6408d1bbc |
---|---|
1 /* | 1 /* |
2 protocol.c | 2 protocol.c |
3 | 3 |
4 $Id: protocol.c 403 2002-11-10 11:32:17Z bears $ | 4 $Id: protocol.c 414 2003-01-06 18:16:18Z bears $ |
5 */ | 5 */ |
6 | 6 |
7 #if HAVE_CONFIG_H | 7 #if HAVE_CONFIG_H |
8 #include <config.h> | 8 #include <config.h> |
9 #endif | 9 #endif |
178 } | 178 } |
179 return TRUE; | 179 return TRUE; |
180 } | 180 } |
181 | 181 |
182 Bool | 182 Bool |
183 Prt_getField( Str resultField, Str resultValue, const char* line ) | 183 Prt_getField( Str resultField, Str resultValue, |
184 Bool* isContinuation, const char* line ) | |
184 { | 185 { |
185 char *dst; | 186 char *dst; |
186 const char *p; | 187 const char *p; |
187 Str lineLower, t; | 188 Str lineLower, t; |
189 | |
190 ASSERT( isContinuation ); | |
188 | 191 |
192 *isContinuation = FALSE; | |
189 Utl_cpyStr( lineLower, line ); | 193 Utl_cpyStr( lineLower, line ); |
190 Utl_toLower( lineLower ); | 194 Utl_toLower( lineLower ); |
191 p = Utl_stripWhiteSpace( lineLower ); | 195 p = Utl_stripWhiteSpace( lineLower ); |
192 if ( p == lineLower ) | 196 if ( p == lineLower ) |
193 { | 197 { |
202 ++p; | 206 ++p; |
203 strcpy( t, line + ( p - lineLower ) ); | 207 strcpy( t, line + ( p - lineLower ) ); |
204 p = Utl_stripWhiteSpace( t ); | 208 p = Utl_stripWhiteSpace( t ); |
205 strcpy( resultValue, p ); | 209 strcpy( resultValue, p ); |
206 return TRUE; | 210 return TRUE; |
207 } | 211 } else |
208 } | 212 return FALSE; /* Not a header line */ |
209 else /* continued header. */ | 213 } |
210 { | 214 else |
211 strcpy( resultValue, lineLower ); /* include starting whitespace */ | 215 { |
212 return TRUE; | 216 /* |
213 } | 217 * If the line starts with white space, it can be a header |
214 return FALSE; | 218 * continuation. |
219 */ | |
220 if( ! isspace( *line ) ) | |
221 return FALSE; | |
222 | |
223 Utl_cpyStr( resultValue, line ); | |
224 *isContinuation = TRUE; | |
225 return TRUE; | |
226 } | |
227 /* NOTREACHED */ | |
215 } | 228 } |
216 | 229 |
217 Bool | 230 Bool |
218 Prt_searchHeader( const char *artTxt, const char *which, Str result ) | 231 Prt_searchHeader( const char *artTxt, const char *which, Str result ) |
219 { | 232 { |
220 const char *src, *p; | 233 const char *src, *p; |
221 char *dst; | 234 char *dst; |
222 Str line, whichLower, field; | 235 Str line, whichLower, field; |
223 int len; | 236 int len; |
237 Bool continuation; | |
224 | 238 |
225 Utl_cpyStr( whichLower, which ); | 239 Utl_cpyStr( whichLower, which ); |
226 Utl_toLower( whichLower ); | 240 Utl_toLower( whichLower ); |
227 src = artTxt; | 241 src = artTxt; |
228 while ( TRUE ) | 242 while ( TRUE ) |
240 ++src; | 254 ++src; |
241 *dst = '\0'; | 255 *dst = '\0'; |
242 p = Utl_stripWhiteSpace( line ); | 256 p = Utl_stripWhiteSpace( line ); |
243 if ( *p == '\0' ) | 257 if ( *p == '\0' ) |
244 break; | 258 break; |
245 if ( Prt_getField( field, result, line ) | 259 if ( Prt_getField( field, result, &continuation, line ) |
246 && strcmp( field, whichLower ) == 0 ) | 260 && strcmp( field, whichLower ) == 0 ) |
247 return TRUE; | 261 return TRUE; |
248 } | 262 } |
249 return FALSE; | 263 return FALSE; |
250 } | 264 } |