static int commands_equal(COMMAND_REC *rec, COMMAND_REC *rec2)
{
+ int i;
+
if (rec->category == NULL && rec2->category != NULL)
return -1;
if (rec2->category == NULL && rec->category != NULL)
return 1;
+ if (rec->category != NULL && rec2->category != NULL) {
+ i = strcmp(rec->category, rec2->category);
+ if (i != 0)
+ return i;
+ }
return strcmp(rec->cmd, rec2->cmd);
}
static int show_help_file(const char *file)
{
const char *helppath;
- char tmpbuf[1024], *str, *path;
+ char tmpbuf[1024], *str, *path, **paths, **tmp;
LINEBUF_REC *buffer = NULL;
int f, ret, recvlen;
helppath = settings_get_str("help_path");
- /* helpdir/command or helpdir/category/command */
- path = g_strdup_printf("%s/%s", helppath, file);
- f = open(path, O_RDONLY);
- g_free(path);
+ paths = g_strsplit(helppath, ":", -1);
+
+ f = -1;
+ for (tmp = paths; *tmp != NULL; tmp++) {
+ /* helpdir/command or helpdir/category/command */
+ path = g_strdup_printf("%s/%s", *tmp, file);
+ f = open(path, O_RDONLY);
+ g_free(path);
+
+ if (f != -1)
+ break;
+
+ }
+
+ g_strfreev(paths);
if (f == -1)
return FALSE;
/* category changed */
if (items > 0) {
if (!header) {
- printtext(NULL, NULL, MSGLEVEL_CLIENTCRAP, "Commands:");
+ printtext(NULL, NULL, MSGLEVEL_CLIENTCRAP, "Irssi commands:");
header = TRUE;
}
if (last->category != NULL) {
/* display the last category */
if (!header) {
printtext(NULL, NULL, MSGLEVEL_CLIENTCRAP,
- "Commands:");
+ "Irssi commands:");
header = TRUE;
}
ptr = cmd+strlen(cmd);
while (ptr[-1] == ' ') ptr--; *ptr = '\0';
+ g_strdown(cmd);
show_help(cmd);
g_free(cmd);
}