#include <sys/types.h>
#include <dirent.h>
+#include "../lib/strlfunc.h"
+
#include "hcommands.h"
#include "hcommand.h"
}
else
{
- strcpy(hchan->welcome, ostr);
+ strlcpy(hchan->welcome, ostr, HCHANNEL_WELCOME_LEN);
helpmod_reply(sender, returntype, "Welcome message for channel %s (%s) is now: %s", hchan->real_channel->index->name->content, hchannel_get_state(hchan, H_WELCOME), hchan->welcome);
}
}
+static void helpmod_list_aliases(huser *sender, channel *returntype, char *buf, int *p_i, alias_tree node)
+{
+ if (*p_i > 256)
+ {
+ helpmod_reply(sender, returntype, "%s", buf);
+ *p_i = 0;
+ }
+ if (!node)
+ return;
+ sprintf(buf+*p_i,"%.200s ",node->name->content);
+ *p_i+=(1+strlen(node->name->content));
+ helpmod_list_aliases(sender, returntype, buf, p_i, node->left);
+ helpmod_list_aliases(sender, returntype, buf, p_i, node->right);
+}
+
static void helpmod_cmd_aliases (huser *sender, channel* returntype, char* ostr, int argc, char *argv[])
{
char buf[512];
int i = 0;
- void helpmod_list_aliases(alias_tree node)
- {
- if (i > 256)
- {
- helpmod_reply(sender, returntype, "%s", buf);
- i = 0;
- }
- if (!node)
- return;
- sprintf(buf+i,"%.200s ",node->name->content);
- i+=(1+strlen(node->name->content));
- helpmod_list_aliases(node->left);
- helpmod_list_aliases(node->right);
- }
- helpmod_list_aliases(aliases);
+ helpmod_list_aliases(sender, returntype, buf, &i, aliases);
if (i)
helpmod_reply(sender, returntype, "%s", buf);
}
char *name = argv[1], *description;
SKIP_WORD; SKIP_WORD;
description = ostr;
- htrm = hterm_add(source, name, description);
+ hterm_add(source, name, description);
helpmod_reply(sender, returntype, "Term %s added succesfully", name);
}
}
if (huser_get_level((*hchanuser)->husr) < H_TRIAL)
if (kickmode == HELPMOD_KICKMODE_ALL || (kickmode == HELPMOD_KICKMODE_UNAUTHED && !IsAccount((*hchanuser)->husr->real_user)))
{
- helpmod_kick(hchan, (*hchanuser)->husr, reason);
+ helpmod_kick(hchan, (*hchanuser)->husr, "%s", reason);
continue;
}
hchanuser = &(*hchanuser)->next;
}
for (i=0;i<ntargets;i++)
- helpmod_kick(hchan, targets[i], reason);
+ helpmod_kick(hchan, targets[i], "%s", reason);
}
static void helpmod_cmd_stats (huser *sender, channel* returntype, char* ostr, int argc, char *argv[])
static void helpmod_cmd_chanstats (huser *sender, channel* returntype, char* ostr, int argc, char *argv[])
{
hchannel *hchan;
- hstat_channel *channel_stats;
hstat_channel_entry *stat_entry;
time_t timer = time(NULL);
}
}
- channel_stats = hchan->stats;
-
if (!days && !weeks)
return;
switch (listtype)
{
case 0:
- for (i=0;i < arr.arrlen && arr.array[i].prime_time_spent > H_ACTIVE_LIMIT;i++)
- helpmod_reply(sender, returntype, "#%-2d %-20s %-20s %-20s", i+1,((haccount*)(arr.array[i].owner))->name->content, helpmod_strtime(arr.array[i].prime_time_spent), helpmod_strtime(arr.array[i].time_spent));
+ for (i=0;i < arr.arrlen;i++)
+ if (arr.array[i].prime_time_spent > H_ACTIVE_LIMIT)
+ helpmod_reply(sender, returntype, "#%-2d %-20s %-20s %-20s", i+1,((haccount*)(arr.array[i].owner))->name->content, helpmod_strtime(arr.array[i].prime_time_spent), helpmod_strtime(arr.array[i].time_spent));
break;
case 1:
- for (i=arr.arrlen-1;i >= 0 && arr.array[i].prime_time_spent < H_ACTIVE_LIMIT;i--)
- helpmod_reply(sender, returntype, "#%-2d %-20s %-20s %-20s", (arr.arrlen - i),((haccount*)(arr.array[i].owner))->name->content, helpmod_strtime(arr.array[i].prime_time_spent), helpmod_strtime(arr.array[i].time_spent));
+ for (i=arr.arrlen-1;i >= 0;i--)
+ if (arr.array[i].prime_time_spent < H_ACTIVE_LIMIT)
+ helpmod_reply(sender, returntype, "#%-2d %-20s %-20s %-20s", (arr.arrlen - i),((haccount*)(arr.array[i].owner))->name->content, helpmod_strtime(arr.array[i].prime_time_spent), helpmod_strtime(arr.array[i].time_spent));
break;
}
return;
}
- if (nickbanned(sender->real_user, hchan->real_channel))
+ if (nickbanned(sender->real_user, hchan->real_channel, 0))
{
helpmod_reply(sender, returntype, "Cannot invite: You are banned from channel %s", argv[0]);
return;
/* third pass - find status boundaries */
{
for (;o_limit < nick_count && numeric_array[o_limit] & CUMODE_OP; o_limit++);
- v_limit = o_limit;
for(v_limit = o_limit; (v_limit < nick_count) && numeric_array[v_limit] & CUMODE_VOICE; v_limit++);
}
DIR *dir;
struct dirent *dent;
char buffer[384], **lines, *start;
- int nwritten, bufpos = 0, nlines = 0,i;
+ int bufpos = 0, nlines = 0,i;
dir = opendir(HELPMOD_TEXT_DIR);
assert(dir != NULL);
buffer[bufpos] = ' ';
bufpos++;
}
- sprintf(buffer + bufpos, "%s%n", lines[i], &nwritten);
- bufpos+=nwritten;
+ bufpos+=sprintf(buffer + bufpos, "%s", lines[i]);
if (bufpos > (384 - (HED_FILENAME_LENGTH+1)))
{
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
bufpos = 0;
}
}
if (bufpos)
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
free(start);
free(lines);
if ((in = fopen(fname_buffer, "rt")) != NULL)
{
helpmod_reply(sender, returntype, "Can not add text: Text %s already exists", argv[1]);
+ fclose(in);
return;
}
else
helpmod_reply(sender, returntype, "Weekly statistics for %ss on channel %s", hlevel_name(lvl), hchannel_get_name(hchan));
- for (i=0;i < arr.arrlen && arr.array[i].time_spent > HDEF_m;i++)
+ for (i=0;i < arr.arrlen;i++)
+ if (arr.array[i].time_spent > HDEF_m)
helpmod_reply(sender, returntype, "%-20s %-20s %-20s",((haccount*)(arr.array[i].owner))->name->content, helpmod_strtime(arr.array[i].prime_time_spent), helpmod_strtime(arr.array[i].time_spent));
free(arr.array);