comparison src/client.c @ 103:f782184db8bc noffle

[svn] 1.0pre6 merge plus variable rename
author bears
date Tue, 13 Jun 2000 07:31:43 +0100
parents 38b0a1532a37
children dd2fbc88601d
comparison
equal deleted inserted replaced
102:38b0a1532a37 103:f782184db8bc
1 /* 1 /*
2 client.c 2 client.c
3 3
4 $Id: client.c 135 2000-06-05 08:57:05Z bears $ 4 $Id: client.c 142 2000-06-13 06:31:43Z 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
36 36
37 /* 37 /*
38 Some newsgroups names are reserved for server-specific or server 38 Some newsgroups names are reserved for server-specific or server
39 pseudo groups. We don't want to fetch them. For example, INN 39 pseudo groups. We don't want to fetch them. For example, INN
40 keeps all its control messages in a 'control' hierarchy, and 40 keeps all its control messages in a 'control' hierarchy, and
41 used the "to." heirarchy for dark and mysterious purposes I think 41 used the "to." hierarchy for dark and mysterious purposes I think
42 are to do with newsfeeds. The recommended restrictions are documented 42 are to do with newsfeeds. The recommended restrictions are documented
43 in C.Lindsay, "News Article Format", <draft-ietf-usefor-article-03.txt>. 43 in C.Lindsay, "News Article Format", <draft-ietf-usefor-article-03.txt>.
44 */ 44 */
45 45
46 struct ForbiddenGroupName 46 struct ForbiddenGroupName
49 Bool match; 49 Bool match;
50 } forbiddenGroupNames[] = 50 } forbiddenGroupNames[] =
51 { 51 {
52 { "*.*", FALSE }, /* Single component */ 52 { "*.*", FALSE }, /* Single component */
53 { "control.*", TRUE }, /* control.* groups */ 53 { "control.*", TRUE }, /* control.* groups */
54 { "to.*", TRUE }, /* control.* groups */ 54 { "to.*", TRUE }, /* to.* groups */
55 { "*.all", TRUE }, /* 'all' as a component */ 55 { "*.all", TRUE }, /* 'all' as a component */
56 { "*.all.*", TRUE }, 56 { "*.all.*", TRUE },
57 { "all.*", TRUE }, 57 { "all.*", TRUE },
58 { "*.ctl", TRUE }, /* 'ctl' as a component */ 58 { "*.ctl", TRUE }, /* 'ctl' as a component */
59 { "*.ctl.*", TRUE }, 59 { "*.ctl.*", TRUE },
980 Str supersedeIds; 980 Str supersedeIds;
981 981
982 if ( Prt_searchHeader( txt, "Supersedes", supersedeIds ) ) 982 if ( Prt_searchHeader( txt, "Supersedes", supersedeIds ) )
983 { 983 {
984 ItemList *ids; 984 ItemList *ids;
985 const char *msgId; 985 const char *supersededMsgId;
986 986
987 ids = new_Itl( supersedeIds, " \n\t" ); 987 ids = new_Itl( supersedeIds, " \n\t" );
988 for ( msgId = Itl_first( ids ); 988 for ( supersededMsgId = Itl_first( ids );
989 msgId != NULL; 989 supersededMsgId != NULL;
990 msgId = Itl_next( ids ) ) 990 supersededMsgId = Itl_next( ids ) )
991 Ctrl_cancel( msgId ); 991 Ctrl_cancel( supersededMsgId );
992 del_Itl( ids ); 992 del_Itl( ids );
993 } 993 }
994 } 994 }
995 } 995 }
996 else 996 else