diff --git a/src/fe-common/core/autorun.c b/src/fe-common/core/autorun.c index f114ac23..d9b21f54 100644 --- a/src/fe-common/core/autorun.c +++ b/src/fe-common/core/autorun.c @@ -20,37 +20,36 @@ #include "module.h" #include "signals.h" -#include "line-split.h" #include "special-vars.h" #include "fe-windows.h" void autorun_startup(void) { - char tmpbuf[1024], *str, *path; - LINEBUF_REC *buffer = NULL; - int f, ret, recvlen; + char *path; + GIOChannel *handle; + GString *buf; + gsize tpos; /* open ~/.irssi/startup and run all commands in it */ path = g_strdup_printf("%s/startup", get_irssi_dir()); - f = open(path, O_RDONLY); + handle = g_io_channel_new_file(path, "r", NULL); g_free(path); - if (f == -1) { + if (handle == NULL) { /* file not found */ return; } - do { - recvlen = read(f, tmpbuf, sizeof(tmpbuf)); - - ret = line_split(tmpbuf, recvlen, &str, &buffer); - if (ret > 0 && *str != '#') { - eval_special_string(str, "", + buf = g_string_sized_new(512); + while (g_io_channel_read_line_string(handle, buf, &tpos, NULL) == G_IO_STATUS_NORMAL) { + buf->str[tpos] = '\0'; + if (buf->str[0] != '#') { + eval_special_string(buf->str, "", active_win->active_server, active_win->active); } - } while (ret > 0); - line_split_free(buffer); + } + g_string_free(buf, TRUE); - close(f); + g_io_channel_close(handle); } diff --git a/src/fe-common/core/fe-core-commands.c b/src/fe-common/core/fe-core-commands.c index e20254ba..33c9d8aa 100644 --- a/src/fe-common/core/fe-core-commands.c +++ b/src/fe-common/core/fe-core-commands.c @@ -25,7 +25,6 @@ #include "commands.h" #include "levels.h" #include "misc.h" -#include "line-split.h" #include "settings.h" #include "irssi-version.h" #include "servers.h" @@ -114,11 +113,12 @@ static void cmd_version(char *data) /* SYNTAX: CAT */ static void cmd_cat(const char *data) { - LINEBUF_REC *buffer = NULL; char *fname, *fposstr; - char tmpbuf[1024], *str; void *free_arg; - int f, ret, recvlen, fpos; + int fpos; + GIOChannel *handle; + GString *buf; + gsize tpos; if (!cmd_get_params(data, &free_arg, 2, &fname, &fposstr)) return; @@ -127,29 +127,26 @@ static void cmd_cat(const char *data) fpos = atoi(fposstr); cmd_params_free(free_arg); - f = open(fname, O_RDONLY); + handle = g_io_channel_new_file(fname, "r", NULL); g_free(fname); - if (f == -1) { + if (handle == NULL) { /* file not found */ printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "%s", g_strerror(errno)); return; } - lseek(f, fpos, SEEK_SET); - do { - recvlen = read(f, tmpbuf, sizeof(tmpbuf)); - - ret = line_split(tmpbuf, recvlen, &str, &buffer); - if (ret > 0) { + g_io_channel_seek_position(handle, fpos, G_SEEK_SET, NULL); + buf = g_string_sized_new(512); + while (g_io_channel_read_line_string(handle, buf, &tpos, NULL) == G_IO_STATUS_NORMAL) { + buf->str[tpos] = '\0'; printtext(NULL, NULL, MSGLEVEL_CLIENTCRAP | - MSGLEVEL_NEVER, "%s", str); + MSGLEVEL_NEVER, "%s", buf->str); } - } while (ret > 0); - line_split_free(buffer); + g_string_free(buf, TRUE); - close(f); + g_io_channel_close(handle); } /* SYNTAX: BEEP */ diff --git a/src/fe-common/core/fe-help.c b/src/fe-common/core/fe-help.c index be45e77b..178a9d3f 100644 --- a/src/fe-common/core/fe-help.c +++ b/src/fe-common/core/fe-help.c @@ -23,7 +23,6 @@ #include "commands.h" #include "levels.h" #include "misc.h" -#include "line-split.h" #include "settings.h" #include "printtext.h" @@ -117,46 +116,42 @@ static void help_category(GSList *cmdlist, int items) static int show_help_file(const char *file) { const char *helppath; - char tmpbuf[1024], *str, *path, **paths, **tmp; - LINEBUF_REC *buffer = NULL; - int f, ret, recvlen; + char *path, **paths, **tmp; + GIOChannel *handle; + GString *buf; + gsize tpos; helppath = settings_get_str("help_path"); paths = g_strsplit(helppath, ":", -1); - f = -1; + handle = NULL; 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); + handle = g_io_channel_new_file(path, "r", NULL); g_free(path); - if (f != -1) + if (handle != NULL) break; } g_strfreev(paths); - if (f == -1) + if (handle == NULL) return FALSE; + buf = g_string_sized_new(512); /* just print to screen whatever is in the file */ - do { - recvlen = read(f, tmpbuf, sizeof(tmpbuf)); - - ret = line_split(tmpbuf, recvlen, &str, &buffer); - if (ret > 0) { - str = g_strconcat("%|", str, NULL); - printtext_string(NULL, NULL, MSGLEVEL_CLIENTCRAP, str); - g_free(str); + while (g_io_channel_read_line_string(handle, buf, &tpos, NULL) == G_IO_STATUS_NORMAL) { + buf->str[tpos] = '\0'; + g_string_prepend(buf, "%|"); + printtext_string(NULL, NULL, MSGLEVEL_CLIENTCRAP, buf->str); } - } - while (ret > 0); - line_split_free(buffer); + g_string_free(buf, TRUE); - close(f); + g_io_channel_close(handle); return TRUE; }