Mercurial > noffle
comparison src/content.c @ 75:22b3e3dfc8c2 noffle
[svn] Preserve gen info sometimes
author | bears |
---|---|
date | Sat, 13 May 2000 16:38:39 +0100 |
parents | e612b263934f |
children | 988cacc01470 |
comparison
equal
deleted
inserted
replaced
74:c7df2cc65cc1 | 75:22b3e3dfc8c2 |
---|---|
1 /* | 1 /* |
2 content.c | 2 content.c |
3 | 3 |
4 $Id: content.c 65 2000-05-12 16:52:41Z enz $ | 4 $Id: content.c 81 2000-05-13 15:38:39Z 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 |
170 Cont_write( void ) | 170 Cont_write( void ) |
171 { | 171 { |
172 Bool anythingWritten; | 172 Bool anythingWritten; |
173 int i; | 173 int i; |
174 FILE *f; | 174 FILE *f; |
175 const Over *ov; | 175 const Over *ov, *ov_next; |
176 | 176 |
177 /* Save the overview */ | 177 /* Save the overview */ |
178 if ( ! ( f = fopen( cont.file, "w" ) ) ) | 178 if ( ! ( f = fopen( cont.file, "w" ) ) ) |
179 { | 179 { |
180 Log_err( "Could not open %s for writing", cont.file ); | 180 Log_err( "Could not open %s for writing", cont.file ); |
183 Log_dbg( "Writing %s (%lu)", cont.file, cont.size ); | 183 Log_dbg( "Writing %s (%lu)", cont.file, cont.size ); |
184 anythingWritten = FALSE; | 184 anythingWritten = FALSE; |
185 cont.first = -1; | 185 cont.first = -1; |
186 for ( i = 0; i < cont.size; ++i ) | 186 for ( i = 0; i < cont.size; ++i ) |
187 { | 187 { |
188 if ( ( ov = cont.elem[ i ] ) ) | 188 ov = cont.elem[ i ]; |
189 { | 189 if ( ov ) |
190 if ( ! Pseudo_isGeneralInfo( Ov_msgId( ov ) ) ) | 190 { |
191 if ( i + 1 < cont.size ) | |
192 ov_next = cont.elem[ i + 1 ]; | |
193 else | |
194 ov_next = NULL; | |
195 | |
196 /* | |
197 Preserve gen info if it is followed immediately by an | |
198 article with the next number. In practice, this means | |
199 that when in auto-subscribed mode, the gen info will | |
200 remain until the 'group now subscribed' message is | |
201 expired. | |
202 */ | |
203 if ( ! Pseudo_isGeneralInfo( Ov_msgId( ov ) ) | |
204 || ( ov_next != NULL && | |
205 Ov_numb( ov_next ) - Ov_numb( ov ) == 1 ) ) | |
191 { | 206 { |
192 if ( ! Ov_write( ov, f ) ) | 207 if ( ! Ov_write( ov, f ) ) |
193 { | 208 { |
194 Log_err( "Writing of overview line failed" ); | 209 Log_err( "Writing of overview line failed" ); |
195 break; | 210 break; |