[srvx-commits] CVS: services/src chanserv.c,1.396,1.397
Brought to you by:
entrope
From: Entrope <en...@us...> - 2003-12-09 03:02:01
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv30919/src Modified Files: chanserv.c Log Message: when writing out a channel with high-ranking users present, set "visited" to "now" (should fix #846449) Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.396 retrieving revision 1.397 diff -C2 -r1.396 -r1.397 *** chanserv.c 9 Dec 2003 02:07:37 -0000 1.396 --- chanserv.c 9 Dec 2003 03:01:56 -0000 1.397 *************** *** 6972,6989 **** } ! static void chanserv_write_users(struct saxdb_context *ctx, struct userData *uData) { saxdb_start_record(ctx, KEY_USERS, 1); for(; uData; uData = uData->next) { saxdb_start_record(ctx, uData->handle->handle, 0); saxdb_write_int(ctx, KEY_LEVEL, levelMap[uData->access]); saxdb_write_int(ctx, KEY_SEEN, uData->seen); ! if(uData->flags) saxdb_write_int(ctx, KEY_FLAGS, uData->flags); ! if(uData->info) saxdb_write_string(ctx, KEY_INFO, uData->info); saxdb_end_record(ctx); } saxdb_end_record(ctx); } --- 6972,6995 ---- } ! static int chanserv_write_users(struct saxdb_context *ctx, struct userData *uData) { + int high_present = 0; saxdb_start_record(ctx, KEY_USERS, 1); for(; uData; uData = uData->next) { + if((uData->access >= ulMaster) && uData->present) + high_present = 1; saxdb_start_record(ctx, uData->handle->handle, 0); saxdb_write_int(ctx, KEY_LEVEL, levelMap[uData->access]); saxdb_write_int(ctx, KEY_SEEN, uData->seen); ! if(uData->flags) ! saxdb_write_int(ctx, KEY_FLAGS, uData->flags); ! if(uData->info) ! saxdb_write_string(ctx, KEY_INFO, uData->info); saxdb_end_record(ctx); } saxdb_end_record(ctx); + return high_present; } *************** *** 7023,7031 **** { char buf[MAXLEN]; saxdb_start_record(ctx, channel->channel->name, 1); saxdb_write_int(ctx, KEY_REGISTERED, channel->registered); - saxdb_write_int(ctx, KEY_VISITED, channel->visited); saxdb_write_int(ctx, KEY_MAX, channel->max); if(channel->topic[0]) saxdb_write_string(ctx, KEY_TOPIC, channel->topic); --- 7029,7037 ---- { char buf[MAXLEN]; + int high_present; saxdb_start_record(ctx, channel->channel->name, 1); saxdb_write_int(ctx, KEY_REGISTERED, channel->registered); saxdb_write_int(ctx, KEY_MAX, channel->max); if(channel->topic[0]) saxdb_write_string(ctx, KEY_TOPIC, channel->topic); *************** *** 7046,7050 **** } ! chanserv_write_users(ctx, channel->users); chanserv_write_bans(ctx, channel->bans); --- 7052,7056 ---- } ! high_present = chanserv_write_users(ctx, channel->users); chanserv_write_bans(ctx, channel->bans); *************** *** 7064,7067 **** --- 7070,7075 ---- saxdb_end_record(ctx); } + + saxdb_write_int(ctx, KEY_VISITED, high_present ? channel->visited : now); saxdb_end_record(ctx); } |