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);
}
|