Mercurial > noffle
comparison src/configfile.c @ 287:01755687c565 noffle
[svn] * src/configfile.c: Change snprintf() to Utl_cpyStr();
* src/configfile.c,src/fetch.c,src/fetchlist.c,src/protocol.c,
src/server.c: Replace strcpy() with Utl_cpyStr() where appropriate.
See Debian bug 168128.
* src/client.c. Replace strcpy() here too.
* src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user
and noffle-group configs.
* src/control.c,src/configfile.c,src/noffle.c: Replace [s]scanf("%s")
with [s]scanf(MAXCHAR_FMT).
author | bears |
---|---|
date | Fri, 10 Jan 2003 23:11:43 +0000 |
parents | 18d6c61ed4e7 |
children | f35a7d45efd5 |
comparison
equal
deleted
inserted
replaced
286:6443163104a8 | 287:01755687c565 |
---|---|
4 The following macros must be set, when compiling this file: | 4 The following macros must be set, when compiling this file: |
5 CONFIGFILE | 5 CONFIGFILE |
6 SPOOLDIR | 6 SPOOLDIR |
7 VERSION | 7 VERSION |
8 | 8 |
9 $Id: configfile.c 405 2002-11-10 15:06:33Z bears $ | 9 $Id: configfile.c 419 2003-01-10 23:11:43Z bears $ |
10 */ | 10 */ |
11 | 11 |
12 #if HAVE_CONFIG_H | 12 #if HAVE_CONFIG_H |
13 #include <config.h> | 13 #include <config.h> |
14 #endif | 14 #endif |
77 Bool autoUnsubscribe; | 77 Bool autoUnsubscribe; |
78 Bool infoAlways; | 78 Bool infoAlways; |
79 Bool replaceMsgId; | 79 Bool replaceMsgId; |
80 Str hostnameMsgId; | 80 Str hostnameMsgId; |
81 Bool postLocal; | 81 Bool postLocal; |
82 Bool clientAuth; | |
82 Str defaultAutoSubscribeMode; | 83 Str defaultAutoSubscribeMode; |
83 Str mailTo; | 84 Str mailTo; |
84 int defaultExpire; | 85 int defaultExpire; |
85 int numServ; | 86 int numServ; |
86 int maxServ; | 87 int maxServ; |
93 int maxAutoSubscribeMode; | 94 int maxAutoSubscribeMode; |
94 AutoSubscribeModeEntry *autoSubscribeMode; | 95 AutoSubscribeModeEntry *autoSubscribeMode; |
95 Str pathHeader; | 96 Str pathHeader; |
96 Str fromDomain; | 97 Str fromDomain; |
97 Str organization; | 98 Str organization; |
99 Str noffleUser; | |
100 Str noffleGroup; | |
98 } config = | 101 } config = |
99 { | 102 { |
100 SPOOLDIR, /* spoolDir */ | 103 SPOOLDIR, /* spoolDir */ |
101 VERSION, /* version */ | 104 VERSION, /* version */ |
102 300, /* maxFetch */ | 105 300, /* maxFetch */ |
107 FALSE, /* autoUnsubscribe */ | 110 FALSE, /* autoUnsubscribe */ |
108 TRUE, /* infoAlways */ | 111 TRUE, /* infoAlways */ |
109 FALSE, /* replaceMsgId */ | 112 FALSE, /* replaceMsgId */ |
110 "", /* hostnameMsgId */ | 113 "", /* hostnameMsgId */ |
111 FALSE, /* postLocal */ | 114 FALSE, /* postLocal */ |
115 FALSE, /* clientAuth */ | |
112 "over", /* defaultAutoSubscribeMode */ | 116 "over", /* defaultAutoSubscribeMode */ |
113 "", /* mailTo */ | 117 "", /* mailTo */ |
114 14, /* defaultExpire */ | 118 14, /* defaultExpire */ |
115 0, /* numServ */ | 119 0, /* numServ */ |
116 0, /* maxServ */ | 120 0, /* maxServ */ |
122 0, /* numAutoSubscribeMode */ | 126 0, /* numAutoSubscribeMode */ |
123 0, /* maxAutoSubscribeMode */ | 127 0, /* maxAutoSubscribeMode */ |
124 NULL, /* autoSubscribeMode */ | 128 NULL, /* autoSubscribeMode */ |
125 "", /* pathHeader */ | 129 "", /* pathHeader */ |
126 "", /* fromDomain */ | 130 "", /* fromDomain */ |
127 "" /* organization */ | 131 "", /* organization */ |
132 "news", /* user Noffle runs as */ | |
133 "news" /* group Noffle runs as */ | |
128 }; | 134 }; |
129 | 135 |
130 const char * Cfg_spoolDir( void ) { return config.spoolDir; } | 136 const char * Cfg_spoolDir( void ) { return config.spoolDir; } |
131 const char * Cfg_version( void ) { return config.version; } | 137 const char * Cfg_version( void ) { return config.version; } |
132 | 138 |
138 Bool Cfg_autoSubscribe( void ) { return config.autoSubscribe; } | 144 Bool Cfg_autoSubscribe( void ) { return config.autoSubscribe; } |
139 Bool Cfg_infoAlways( void ) { return config.infoAlways; } | 145 Bool Cfg_infoAlways( void ) { return config.infoAlways; } |
140 Bool Cfg_replaceMsgId( void ) { return config.replaceMsgId; } | 146 Bool Cfg_replaceMsgId( void ) { return config.replaceMsgId; } |
141 const char * Cfg_hostnameMsgId( void ) { return config.hostnameMsgId; } | 147 const char * Cfg_hostnameMsgId( void ) { return config.hostnameMsgId; } |
142 Bool Cfg_postLocal( void ) { return config.postLocal; } | 148 Bool Cfg_postLocal( void ) { return config.postLocal; } |
149 Bool Cfg_needClientAuth( void ) { return config.clientAuth; } | |
143 const char * Cfg_defaultAutoSubscribeMode( void ) { | 150 const char * Cfg_defaultAutoSubscribeMode( void ) { |
144 return config.defaultAutoSubscribeMode; } | 151 return config.defaultAutoSubscribeMode; } |
145 const char * Cfg_mailTo( void ) { return config.mailTo; } | 152 const char * Cfg_mailTo( void ) { return config.mailTo; } |
146 int Cfg_defaultExpire( void ) { return config.defaultExpire; } | 153 int Cfg_defaultExpire( void ) { return config.defaultExpire; } |
147 const char * Cfg_pathHeader( void ) { return config.pathHeader; } | 154 const char * Cfg_pathHeader( void ) { return config.pathHeader; } |
148 const char * Cfg_fromDomain( void ) { return config.fromDomain; } | 155 const char * Cfg_fromDomain( void ) { return config.fromDomain; } |
149 const char * Cfg_organization( void ) { return config.organization; } | 156 const char * Cfg_organization( void ) { return config.organization; } |
157 const char * Cfg_noffleUser( void ) { return config.noffleUser; } | |
158 const char * Cfg_noffleGroup( void ) { return config.noffleGroup; } | |
150 | 159 |
151 void | 160 void |
152 Cfg_beginServEnum( void ) | 161 Cfg_beginServEnum( void ) |
153 { | 162 { |
154 config.servIdx = 0; | 163 config.servIdx = 0; |
157 Bool | 166 Bool |
158 Cfg_nextServ( Str name ) | 167 Cfg_nextServ( Str name ) |
159 { | 168 { |
160 if ( config.servIdx >= config.numServ ) | 169 if ( config.servIdx >= config.numServ ) |
161 return FALSE; | 170 return FALSE; |
162 strcpy( name, config.serv[ config.servIdx ].name ); | 171 Utl_cpyStr( name, config.serv[ config.servIdx ].name ); |
163 ++config.servIdx; | 172 ++config.servIdx; |
164 return TRUE; | 173 return TRUE; |
165 } | 174 } |
166 | 175 |
167 static Bool | 176 static Bool |
207 { | 216 { |
208 int idx; | 217 int idx; |
209 | 218 |
210 if ( searchServ( name, &idx ) ) | 219 if ( searchServ( name, &idx ) ) |
211 { | 220 { |
212 strcpy( user, config.serv[ idx ].user ); | 221 Utl_cpyStr( user, config.serv[ idx ].user ); |
213 strcpy( pass, config.serv[ idx ].pass ); | 222 Utl_cpyStr( pass, config.serv[ idx ].pass ); |
214 } | 223 } |
215 else | 224 else |
216 { | 225 { |
217 user[ 0 ] = '\0'; | 226 user[ 0 ] = '\0'; |
218 pass[ 0 ] = '\0'; | 227 pass[ 0 ] = '\0'; |
262 GroupEnum *res; | 271 GroupEnum *res; |
263 int servIdx; | 272 int servIdx; |
264 | 273 |
265 res = (GroupEnum *) malloc( sizeof( GroupEnum ) ); | 274 res = (GroupEnum *) malloc( sizeof( GroupEnum ) ); |
266 if ( res == NULL ) | 275 if ( res == NULL ) |
267 { | 276 Log_fatal( "Malloc of GroupEnum failed." ); |
268 Log_err( "Malloc of GroupEnum failed." ); | |
269 exit( EXIT_FAILURE ); | |
270 } | |
271 if ( ! searchServ( name, &servIdx ) ) | 277 if ( ! searchServ( name, &servIdx ) ) |
272 res->groupEntry = NULL; | 278 res->groupEntry = NULL; |
273 else | 279 else |
274 res->groupEntry = &config.serv[ servIdx ].getgroups; | 280 res->groupEntry = &config.serv[ servIdx ].getgroups; |
275 GrEn_first( res ); | 281 GrEn_first( res ); |
282 GroupEnum *res; | 288 GroupEnum *res; |
283 int servIdx; | 289 int servIdx; |
284 | 290 |
285 res = (GroupEnum *) malloc( sizeof( GroupEnum ) ); | 291 res = (GroupEnum *) malloc( sizeof( GroupEnum ) ); |
286 if ( res == NULL ) | 292 if ( res == NULL ) |
287 { | 293 Log_fatal( "Malloc of GroupEnum failed." ); |
288 Log_err( "Malloc of GroupEnum failed." ); | |
289 exit( EXIT_FAILURE ); | |
290 } | |
291 if ( ! searchServ( name, &servIdx ) ) | 294 if ( ! searchServ( name, &servIdx ) ) |
292 res->groupEntry = NULL; | 295 res->groupEntry = NULL; |
293 else | 296 else |
294 res->groupEntry = &config.serv[ servIdx ].omitgroups; | 297 res->groupEntry = &config.serv[ servIdx ].omitgroups; |
295 GrEn_first( res ); | 298 GrEn_first( res ); |
326 static void | 329 static void |
327 getBool( Bool *variable, const char *line ) | 330 getBool( Bool *variable, const char *line ) |
328 { | 331 { |
329 Str value, name, lowerLn; | 332 Str value, name, lowerLn; |
330 | 333 |
331 strcpy( lowerLn, line ); | 334 Utl_cpyStr( lowerLn, line ); |
332 Utl_toLower( lowerLn ); | 335 Utl_toLower( lowerLn ); |
333 if ( sscanf( lowerLn, "%s %s", name, value ) != 2 ) | 336 if ( sscanf( lowerLn, MAXCHAR_FMT " " MAXCHAR_FMT, name, value ) != 2 ) |
334 { | 337 { |
335 logSyntaxErr( line ); | 338 logSyntaxErr( line ); |
336 return; | 339 return; |
337 } | 340 } |
338 | 341 |
348 getInt( int *variable, int min, int max, const char *line ) | 351 getInt( int *variable, int min, int max, const char *line ) |
349 { | 352 { |
350 int value; | 353 int value; |
351 Str name; | 354 Str name; |
352 | 355 |
353 if ( sscanf( line, "%s %d", name, &value ) != 2 ) | 356 if ( sscanf( line, MAXCHAR_FMT " %d", name, &value ) != 2 ) |
354 { | 357 { |
355 logSyntaxErr( line ); | 358 logSyntaxErr( line ); |
356 return; | 359 return; |
357 } | 360 } |
358 if ( value < min || value > max ) | 361 if ( value < min || value > max ) |
366 static void | 369 static void |
367 getStr( char *variable, const char *line ) | 370 getStr( char *variable, const char *line ) |
368 { | 371 { |
369 Str dummy; | 372 Str dummy; |
370 | 373 |
371 if ( sscanf( line, "%s %s", dummy, variable ) != 2 ) | 374 if ( sscanf( line, MAXCHAR_FMT " " MAXCHAR_FMT, dummy, variable ) != 2 ) |
372 { | 375 { |
373 logSyntaxErr( line ); | 376 logSyntaxErr( line ); |
374 return; | 377 return; |
375 } | 378 } |
376 } | 379 } |
392 int r, len; | 395 int r, len; |
393 ServEntry entry; | 396 ServEntry entry; |
394 | 397 |
395 memset( &entry, 0, sizeof( entry ) ); | 398 memset( &entry, 0, sizeof( entry ) ); |
396 user[ 0 ] = pass[ 0 ] = '\0'; | 399 user[ 0 ] = pass[ 0 ] = '\0'; |
397 r = sscanf( line, "%s %s %s %s", | 400 r = sscanf( line, |
401 MAXCHAR_FMT " " MAXCHAR_FMT " " MAXCHAR_FMT " " MAXCHAR_FMT, | |
398 dummy, name, user, pass ); | 402 dummy, name, user, pass ); |
399 if ( r < 2 ) | 403 if ( r < 2 ) |
400 { | 404 { |
401 logSyntaxErr( line ); | 405 logSyntaxErr( line ); |
402 return; | 406 return; |
415 if ( config.maxServ < config.numServ + 1 ) | 419 if ( config.maxServ < config.numServ + 1 ) |
416 { | 420 { |
417 if ( ! ( config.serv = realloc( config.serv, | 421 if ( ! ( config.serv = realloc( config.serv, |
418 ( config.maxServ + 5 ) | 422 ( config.maxServ + 5 ) |
419 * sizeof( ServEntry ) ) ) ) | 423 * sizeof( ServEntry ) ) ) ) |
420 { | 424 Log_fatal( "Could not realloc server list" ); |
421 Log_err( "Could not realloc server list" ); | |
422 exit( EXIT_FAILURE ); | |
423 } | |
424 config.maxServ += 5; | 425 config.maxServ += 5; |
425 } | 426 } |
426 config.serv[ config.numServ++ ] = entry; | 427 config.serv[ config.numServ++ ] = entry; |
427 } | 428 } |
428 | 429 |
431 { | 432 { |
432 Str dummy, pattern; | 433 Str dummy, pattern; |
433 ExpireEntry entry; | 434 ExpireEntry entry; |
434 int days; | 435 int days; |
435 | 436 |
436 if ( sscanf( line, "%s %s %d", dummy, pattern, &days ) != 3 ) | 437 if ( sscanf( line, MAXCHAR_FMT " " MAXCHAR_FMT " %d", |
438 dummy, pattern, &days ) != 3 ) | |
437 { | 439 { |
438 logSyntaxErr( line ); | 440 logSyntaxErr( line ); |
439 return; | 441 return; |
440 } | 442 } |
441 else | 443 else |
454 if ( config.maxExpire < config.numExpire + 1 ) | 456 if ( config.maxExpire < config.numExpire + 1 ) |
455 { | 457 { |
456 if ( ! ( config.expire = realloc( config.expire, | 458 if ( ! ( config.expire = realloc( config.expire, |
457 ( config.maxExpire + 5 ) | 459 ( config.maxExpire + 5 ) |
458 * sizeof( ExpireEntry ) ) ) ) | 460 * sizeof( ExpireEntry ) ) ) ) |
459 { | 461 Log_fatal( "Could not realloc expire list" ); |
460 Log_err( "Could not realloc expire list" ); | |
461 exit( EXIT_FAILURE ); | |
462 } | |
463 config.maxExpire += 5; | 462 config.maxExpire += 5; |
464 } | 463 } |
465 config.expire[ config.numExpire++ ] = entry; | 464 config.expire[ config.numExpire++ ] = entry; |
466 } | 465 } |
467 } | 466 } |
505 if ( g->maxGroup < g->numGroup + 1 ) | 504 if ( g->maxGroup < g->numGroup + 1 ) |
506 { | 505 { |
507 if ( ! ( g->groups = realloc( g->groups, | 506 if ( ! ( g->groups = realloc( g->groups, |
508 ( g->maxGroup + 5 ) | 507 ( g->maxGroup + 5 ) |
509 * sizeof( char * ) ) ) ) | 508 * sizeof( char * ) ) ) ) |
510 { | 509 Log_fatal( "Could not realloc group list" ); |
511 Log_err( "Could not realloc group list" ); | |
512 exit( EXIT_FAILURE ); | |
513 } | |
514 g->maxGroup += 5; | 510 g->maxGroup += 5; |
515 } | 511 } |
516 Utl_allocAndCpy( &g->groups[ g->numGroup++ ], pattern ); | 512 Utl_allocAndCpy( &g->groups[ g->numGroup++ ], pattern ); |
517 } | 513 } |
518 del_Itl( patterns) ; | 514 del_Itl( patterns) ; |
568 mask |= LOG_DBG_PROTOCOL; | 564 mask |= LOG_DBG_PROTOCOL; |
569 else if ( strcmp( maskName, "requests" ) == 0 ) | 565 else if ( strcmp( maskName, "requests" ) == 0 ) |
570 mask |= LOG_DBG_REQUESTS; | 566 mask |= LOG_DBG_REQUESTS; |
571 else if ( strcmp( maskName, "server" ) == 0 ) | 567 else if ( strcmp( maskName, "server" ) == 0 ) |
572 mask |= LOG_DBG_SERVER; | 568 mask |= LOG_DBG_SERVER; |
569 else if ( strcmp( maskName, "auth" ) == 0 ) | |
570 mask |= LOG_DBG_AUTH; | |
573 else | 571 else |
574 logSyntaxErr( line ); | 572 logSyntaxErr( line ); |
575 } | 573 } |
576 del_Itl( maskNames) ; | 574 del_Itl( maskNames) ; |
577 Log_setDbgMask( mask ); | 575 Log_setDbgMask( mask ); |
591 { | 589 { |
592 Str dummy, pattern, mode; | 590 Str dummy, pattern, mode; |
593 AutoSubscribeModeEntry entry; | 591 AutoSubscribeModeEntry entry; |
594 int items; | 592 int items; |
595 | 593 |
596 items = sscanf( line, "%s %s %s", dummy, pattern, mode ); | 594 items = sscanf( line, MAXCHAR_FMT " " MAXCHAR_FMT " " MAXCHAR_FMT, |
595 dummy, pattern, mode ); | |
597 if ( items == 2 ) | 596 if ( items == 2 ) |
598 { | 597 { |
599 /* Backwards compat. default-auto-subscribe-mode */ | 598 /* Backwards compat. default-auto-subscribe-mode */ |
600 Utl_cpyStr( mode, pattern ); | 599 Utl_cpyStr( mode, pattern ); |
601 Utl_toLower( mode ); | 600 Utl_toLower( mode ); |
602 if ( ! isValidAutoSubscribeMode( mode ) ) | 601 if ( ! isValidAutoSubscribeMode( mode ) ) |
603 { | 602 { |
604 logSyntaxErr( line ); | 603 logSyntaxErr( line ); |
605 return; | 604 return; |
606 } | 605 } |
607 strcpy( config.defaultAutoSubscribeMode, mode ); | 606 Utl_cpyStr( config.defaultAutoSubscribeMode, mode ); |
608 return; | 607 return; |
609 } | 608 } |
610 else if ( items != 3 ) | 609 else if ( items != 3 ) |
611 { | 610 { |
612 logSyntaxErr( line ); | 611 logSyntaxErr( line ); |
628 { | 627 { |
629 if ( ! ( config.autoSubscribeMode = | 628 if ( ! ( config.autoSubscribeMode = |
630 realloc( config.autoSubscribeMode, | 629 realloc( config.autoSubscribeMode, |
631 ( config.maxAutoSubscribeMode + 5 ) | 630 ( config.maxAutoSubscribeMode + 5 ) |
632 * sizeof( AutoSubscribeModeEntry ) ) ) ) | 631 * sizeof( AutoSubscribeModeEntry ) ) ) ) |
633 { | 632 Log_fatal( "Could not realloc auto subscribe mode list" ); |
634 Log_err( "Could not realloc auto subscribe mode list" ); | |
635 exit( EXIT_FAILURE ); | |
636 } | |
637 config.maxAutoSubscribeMode += 5; | 633 config.maxAutoSubscribeMode += 5; |
638 } | 634 } |
639 config.autoSubscribeMode[ config.numAutoSubscribeMode++ ] = entry; | 635 config.autoSubscribeMode[ config.numAutoSubscribeMode++ ] = entry; |
640 } | 636 } |
641 | 637 |
917 { | 913 { |
918 char *p; | 914 char *p; |
919 FILE *f; | 915 FILE *f; |
920 Str file, line, lowerLine, name, s; | 916 Str file, line, lowerLine, name, s; |
921 | 917 |
922 snprintf( file, MAXCHAR, CONFIGFILE ); | 918 Utl_cpyStr( file, CONFIGFILE ); |
923 if ( ! ( f = fopen( file, "r" ) ) ) | 919 if ( ! ( f = fopen( file, "r" ) ) ) |
924 { | 920 { |
925 Log_err( "Cannot read %s", file ); | 921 Log_err( "Cannot read %s", file ); |
926 return; | 922 return; |
927 } | 923 } |
932 Utl_cpyStr( lowerLine, p ); | 928 Utl_cpyStr( lowerLine, p ); |
933 Utl_toLower( lowerLine ); | 929 Utl_toLower( lowerLine ); |
934 p = lowerLine; | 930 p = lowerLine; |
935 if ( *p == '\0' ) | 931 if ( *p == '\0' ) |
936 continue; | 932 continue; |
937 if ( sscanf( p, "%s", name ) != 1 ) | 933 if ( sscanf( p, MAXCHAR_FMT, name ) != 1 ) |
938 Log_err( "Syntax error in %s: %s", file, line ); | 934 Log_err( "Syntax error in %s: %s", file, line ); |
939 else if ( strcmp( "max-fetch", name ) == 0 ) | 935 else if ( strcmp( "max-fetch", name ) == 0 ) |
940 getInt( &config.maxFetch, 0, INT_MAX, p ); | 936 getInt( &config.maxFetch, 0, INT_MAX, p ); |
941 else if ( strcmp( "auto-unsubscribe-days", name ) == 0 ) | 937 else if ( strcmp( "auto-unsubscribe-days", name ) == 0 ) |
942 getInt( &config.autoUnsubscribe, -1, INT_MAX, p ); | 938 getInt( &config.autoUnsubscribe, -1, INT_MAX, p ); |
957 else if ( strcmp( "hostname", name ) == 0 ) | 953 else if ( strcmp( "hostname", name ) == 0 ) |
958 /* use line, do not change to lowercase */ | 954 /* use line, do not change to lowercase */ |
959 getStr( config.hostnameMsgId, line ); | 955 getStr( config.hostnameMsgId, line ); |
960 else if ( strcmp( "post-locally", name ) == 0 ) | 956 else if ( strcmp( "post-locally", name ) == 0 ) |
961 getBool( &config.postLocal, p ); | 957 getBool( &config.postLocal, p ); |
958 else if ( strcmp( "authenticate-client", name ) == 0 ) | |
959 getBool( &config.clientAuth, p ); | |
962 else if ( strcmp( "default-auto-subscribe-mode", name ) == 0 ) | 960 else if ( strcmp( "default-auto-subscribe-mode", name ) == 0 ) |
963 { | 961 { |
964 getStr( s, p ); | 962 getStr( s, p ); |
965 if ( ! isValidAutoSubscribeMode( s ) ) | 963 if ( ! isValidAutoSubscribeMode( s ) ) |
966 { | 964 { |
967 logSyntaxErr( line ); | 965 logSyntaxErr( line ); |
968 return; | 966 return; |
969 } | 967 } |
970 else | 968 else |
971 strcpy( config.defaultAutoSubscribeMode, s ); | 969 Utl_cpyStr( config.defaultAutoSubscribeMode, s ); |
972 } | 970 } |
973 else if ( strcmp( "mail-to", name ) == 0 ) | 971 else if ( strcmp( "mail-to", name ) == 0 ) |
974 getStr( config.mailTo, p ); | 972 getStr( config.mailTo, p ); |
975 else if ( strcmp( "expire", name ) == 0 ) | 973 else if ( strcmp( "expire", name ) == 0 ) |
976 getExpire( p ); | 974 getExpire( p ); |
987 else if ( strcmp( "from-domain", name ) == 0 ) | 985 else if ( strcmp( "from-domain", name ) == 0 ) |
988 getStr( config.fromDomain, p ); | 986 getStr( config.fromDomain, p ); |
989 /* The following need line because they may have uppercase data */ | 987 /* The following need line because they may have uppercase data */ |
990 else if ( strcmp( "organization", name ) == 0 ) | 988 else if ( strcmp( "organization", name ) == 0 ) |
991 getText( config.organization, line ); | 989 getText( config.organization, line ); |
990 else if ( strcmp( "noffle-user", name ) == 0 ) | |
991 getText( config.noffleUser, line ); | |
992 else if ( strcmp( "noffle-group", name ) == 0 ) | |
993 getText( config.noffleUser, line ); | |
992 else if ( strcmp( "server", name ) == 0 ) | 994 else if ( strcmp( "server", name ) == 0 ) |
993 getServ( line ); | 995 getServ( line ); |
994 else if ( strcmp( "filter", name ) == 0 ) | 996 else if ( strcmp( "filter", name ) == 0 ) |
995 getFilter( line ); | 997 getFilter( line ); |
996 else | 998 else |
997 Log_err( "Unknown config option: %s", name ); | 999 Log_err( "Unknown config option: %s", name ); |
998 } | 1000 } |
999 fclose( f ); | 1001 fclose( f ); |
1000 if ( ! config.numServ ) | 1002 if ( ! config.numServ ) |
1001 { | 1003 Log_fatal( "Config file contains no server" ); |
1002 Log_err( "Config file contains no server" ); | 1004 } |
1003 exit( EXIT_FAILURE ); | |
1004 } | |
1005 } |