+ }
+
+ if (args && *args == '!' && IsOperSpy(source_p))
+ {
+ args++;
+ report_operspy(source_p, "LIST", args);
+ operspy = 1;
+ }
+
+ /* Single channel. */
+ if (args && IsChannelName(args))
+ {
+ safelist_channel_named(source_p, args, operspy);
+ return;
+ }
+
+ /* Multiple channels, possibly with parameters. */
+ params = rb_malloc(sizeof(struct ListClient));
+
+ params->users_min = ConfigChannel.displayed_usercount;
+ params->users_max = INT_MAX;
+ params->operspy = operspy;
+ params->created_min = params->topic_min =
+ params->created_max = params->topic_max = 0;
+
+ if (args && !EmptyString(args))
+ {
+ /* Cancel out default minimum. */
+ params->users_min = 0;