17
17
load_channels (void )
18
18
{
19
19
char path [_POSIX_PATH_MAX ], * name , * slimit , * slevel , * topic , * ptr ;
20
+ char realname [256 ];
20
21
FILE * fp ;
21
22
int limit , level , line = 0 ;
22
23
CHANNEL * chan ;
23
24
LIST * list ;
25
+ int version = 0 ;
24
26
25
27
snprintf (path , sizeof (path ), "%s/channels" , Config_Dir );
26
28
fp = fopen (path , "r" );
@@ -30,13 +32,23 @@ load_channels (void)
30
32
logerr ("load_channels" , path );
31
33
return ;
32
34
}
35
+ if (fgets (Buf ,sizeof (Buf ),fp )== NULL )
36
+ {
37
+ fclose (fp );
38
+ return ;
39
+ }
40
+ if (!strncmp (":version 1" , Buf , 10 ))
41
+ version = 1 ;
42
+ else
43
+ rewind (fp );
44
+
33
45
while (fgets (Buf , sizeof (Buf ), fp ))
34
46
{
35
47
line ++ ;
36
48
ptr = Buf ;
37
49
while (ISSPACE (* ptr ))
38
50
ptr ++ ;
39
- if (* ptr == '#' || * ptr == 0 )
51
+ if (* ptr == 0 || ( version == 0 && * ptr == '#' ) )
40
52
continue ; /* blank or comment line */
41
53
name = next_arg (& ptr );
42
54
slimit = next_arg (& ptr );
@@ -47,6 +59,12 @@ load_channels (void)
47
59
log ("load_channels(): %s:%d: too few parameters" , path , line );
48
60
continue ;
49
61
}
62
+ /*force new channel name restrictions*/
63
+ if (* name != '#' && * name != '&' )
64
+ {
65
+ snprintf (realname ,sizeof (realname ),"#%s" ,name );
66
+ name = realname ;
67
+ }
50
68
if (invalid_channel (name ))
51
69
{
52
70
log ("load_channels(): %s:%d: %s: invalid channel name" , name );
@@ -127,9 +145,7 @@ dump_channels (void)
127
145
logerr ("dump_channels" , path );
128
146
return ;
129
147
}
130
- fprintf (fp ,
131
- "# auto generated by %s %s\r\n# Don't edit this file while %s is running or changes will be lost!\r\n" ,
132
- PACKAGE , VERSION , PACKAGE );
148
+ fputs (":version 1\n" ,fp );
133
149
hash_foreach (Channels , (hash_callback_t ) dump_channel_cb , fp );
134
150
if (fclose (fp ))
135
151
logerr ("dump_channels" , "fclose" );
0 commit comments