MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "module.h"
#include "misc.h"
#include "net-disconnect.h"
-#include "net-sendbuffer.h"
#include "signals.h"
#include "settings.h"
#include "session.h"
#include "log.h"
#include "rawlog.h"
#include "ignore.h"
+#include "recode.h"
#include "channels.h"
#include "queries.h"
#ifdef HAVE_SYS_RESOURCE_H
# include <sys/resource.h>
- struct rlimit orig_core_rlimit;
+ static struct rlimit orig_core_rlimit;
#endif
void chat_commands_init(void);
int irssi_gui;
int irssi_init_finished;
int reload_config;
+time_t client_start_time;
static char *irssi_dir, *irssi_config_file;
static GSList *dialog_type_queue, *dialog_text_queue;
g_slist_free(dialog_text_queue);
}
-void core_init_paths(int argc, char *argv[])
+static char *fix_path(const char *str)
{
- static struct poptOption options[] = {
- { "config", 0, POPT_ARG_STRING, NULL, 0, "Configuration file location (~/.irssi/config)", "PATH" },
- { "home", 0, POPT_ARG_STRING, NULL, 0, "Irssi home dir location (~/.irssi)", "PATH" },
- { NULL, '\0', 0, NULL }
+ char *new_str = convert_home(str);
+ if (!g_path_is_absolute(new_str)) {
+ char *tmp_str = new_str;
+ new_str = g_strdup_printf("%s/%s", g_get_current_dir(), tmp_str);
+ g_free(tmp_str);
+ }
+ return new_str;
+}
+
+void core_register_options(void)
+{
+ static GOptionEntry options[] = {
+ { "config", 0, 0, G_OPTION_ARG_STRING, &irssi_config_file, "Configuration file location (~/.irssi/config)", "PATH" },
+ { "home", 0, 0, G_OPTION_ARG_STRING, &irssi_dir, "Irssi home dir location (~/.irssi)", "PATH" },
+ { NULL }
};
+
+ args_register(options);
+ session_register_options();
+}
+
+void core_preinit(const char *path)
+{
+ const char *home;
char *str;
- int n, len;
-
- for (n = 1; n < argc; n++) {
- if (strncmp(argv[n], "--home=", 7) == 0) {
- g_free_not_null(irssi_dir);
- irssi_dir = convert_home(argv[n]+7);
- len = strlen(irssi_dir);
- if (irssi_dir[len-1] == G_DIR_SEPARATOR)
- irssi_dir[len-1] = '\0';
- } else if (strncmp(argv[n], "--config=", 9) == 0) {
- g_free_not_null(irssi_config_file);
- irssi_config_file = convert_home(argv[n]+9);
- }
- }
+ int len;
- if (irssi_dir != NULL && !g_path_is_absolute(irssi_dir)) {
+ if (irssi_dir == NULL) {
+ home = g_get_home_dir();
+ if (home == NULL)
+ home = ".";
+
+ irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, home);
+ } else {
str = irssi_dir;
- irssi_dir = g_strdup_printf("%s/%s", g_get_current_dir(), str);
+ irssi_dir = fix_path(str);
g_free(str);
+ len = strlen(irssi_dir);
+ if (irssi_dir[len-1] == G_DIR_SEPARATOR)
+ irssi_dir[len-1] = '\0';
}
-
- if (irssi_config_file != NULL &&
- !g_path_is_absolute(irssi_config_file)) {
+ if (irssi_config_file == NULL)
+ irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir);
+ else {
str = irssi_config_file;
- irssi_config_file =
- g_strdup_printf("%s/%s", g_get_current_dir(), str);
+ irssi_config_file = fix_path(str);
g_free(str);
}
- args_register(options);
-
- if (irssi_dir == NULL)
- irssi_dir = g_strdup_printf(IRSSI_DIR_FULL, g_get_home_dir());
- if (irssi_config_file == NULL)
- irssi_config_file = g_strdup_printf("%s/"IRSSI_HOME_CONFIG, irssi_dir);
-
- session_set_binary(argv[0]);
+ session_set_binary(path);
}
static void sig_irssi_init_finished(void)
irssi_init_finished = TRUE;
}
-void core_init(int argc, char *argv[])
+void core_init(void)
{
dialog_type_queue = NULL;
dialog_text_queue = NULL;
+ client_start_time = time(NULL);
modules_init();
#ifndef WIN32
#endif
net_disconnect_init();
- net_sendbuffer_init();
signals_init();
signal_add_first("gui dialog", (SIGNAL_FUNC) sig_gui_dialog);
log_init();
log_away_init();
rawlog_init();
+ recode_init();
channels_init();
queries_init();
chat_commands_init();
settings_add_str("misc", "ignore_signals", "");
- settings_add_bool("misc", "override_coredump_limit", TRUE);
+ settings_add_bool("misc", "override_coredump_limit", FALSE);
#ifdef HAVE_SYS_RESOURCE_H
getrlimit(RLIMIT_CORE, &orig_core_rlimit);
queries_deinit();
channels_deinit();
+ recode_deinit();
rawlog_deinit();
log_away_deinit();
log_deinit();
commands_deinit();
settings_deinit();
signals_deinit();
- net_sendbuffer_deinit();
net_disconnect_deinit();
#ifndef WIN32