From eb0b01f62a0b1ff0ef6a235a0ff7bd8c7fef978c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 7 Mar 2026 12:47:11 +0100 Subject: [PATCH] core: move functions on command-line arguments to a separate source --- doc/en/weechat_dev.en.adoc | 1 + doc/fr/weechat_dev.fr.adoc | 1 + doc/ja/weechat_dev.ja.adoc | 2 + doc/sr/weechat_dev.sr.adoc | 2 + src/core/CMakeLists.txt | 1 + src/core/core-args.c | 313 +++++++++++++++++++++++++++++++++++++ src/core/core-args.h | 28 ++++ src/core/weechat.c | 279 +-------------------------------- src/core/weechat.h | 4 + 9 files changed, 354 insertions(+), 277 deletions(-) create mode 100644 src/core/core-args.c create mode 100644 src/core/core-args.h diff --git a/doc/en/weechat_dev.en.adoc b/doc/en/weechat_dev.en.adoc index 163071176..c1eef4152 100644 --- a/doc/en/weechat_dev.en.adoc +++ b/doc/en/weechat_dev.en.adoc @@ -128,6 +128,7 @@ WeeChat "core" is located in following directories: |=== | Path/file | Description | core/ | Core functions: entry point, internal structures. +|    core-args.c | Command-line arguments. |    core-arraylist.c | Array lists. |    core-backtrace.c | Display a backtrace after a crash. |    core-calc.c | Calculate result of expressions. diff --git a/doc/fr/weechat_dev.fr.adoc b/doc/fr/weechat_dev.fr.adoc index cad8b80b5..f300e1994 100644 --- a/doc/fr/weechat_dev.fr.adoc +++ b/doc/fr/weechat_dev.fr.adoc @@ -129,6 +129,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants : |=== | Chemin/fichier | Description | core/ | Fonctions du cœur : point d'entrée, structures internes. +|    core-args.c | Paramètres de ligne de commande. |    core-arraylist.c | Listes avec tableau (« arraylists »). |    core-backtrace.c | Afficher une trace après un plantage. |    core-calc.c | Calcul du résultat d'expressions. diff --git a/doc/ja/weechat_dev.ja.adoc b/doc/ja/weechat_dev.ja.adoc index ee37bdff1..242b28b56 100644 --- a/doc/ja/weechat_dev.ja.adoc +++ b/doc/ja/weechat_dev.ja.adoc @@ -140,6 +140,8 @@ WeeChat "core" は以下のディレクトリに配置されています: |=== | パス/ファイル名 | 説明 | core/ | コア関数: エントリポイント、内部構造体 +// TRANSLATION MISSING +|    core-args.c | Command-line arguments. |    core-arraylist.c | 配列リスト |    core-backtrace.c | クラッシュした際にバックトレースを表示 // TRANSLATION MISSING diff --git a/doc/sr/weechat_dev.sr.adoc b/doc/sr/weechat_dev.sr.adoc index 5e8943497..1f404dbf9 100644 --- a/doc/sr/weechat_dev.sr.adoc +++ b/doc/sr/weechat_dev.sr.adoc @@ -128,6 +128,8 @@ WeeChat „језгро” се налази у следећим директо |=== | Путања/фајл | Опис | core/ | Функције језгра: тачка улаза, интерне структуре. +// TRANSLATION MISSING +|    core-args.c | Command-line arguments. |    core-arraylist.c | Листе низова. |    core-backtrace.c | Испис трага након краха. |    core-calc.c | Израчунавање резултата израза. diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ea0ef1225..0176702d3 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -23,6 +23,7 @@ set(LIB_CORE_SRC weechat.c weechat.h + core-args.c core-args.h core-arraylist.c core-arraylist.h core-backtrace.c core-backtrace.h core-calc.c core-calc.h diff --git a/src/core/core-args.c b/src/core/core-args.c new file mode 100644 index 000000000..e1c471315 --- /dev/null +++ b/src/core/core-args.c @@ -0,0 +1,313 @@ +/* + * SPDX-FileCopyrightText: 2003-2026 Sébastien Helleu + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * This file is part of WeeChat, the extensible chat client. + * + * WeeChat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * WeeChat is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 WeeChat. If not, see . + */ + +/* Function for command-line arguments */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "weechat.h" +#include "core-debug.h" +#include "core-list.h" +#include "core-string.h" +#include "core-version.h" +#include "../gui/gui-color.h" +#include "../plugins/plugin.h" + +/* some command line options */ +#define OPTION_DOCGEN 1000 +#define OPTION_NO_DLCLOSE 1001 +#define OPTION_NO_GNUTLS 1002 +#define OPTION_NO_GCRYPT 1003 + + +/* + * Displays WeeChat copyright on standard output. + */ + +void +args_display_copyright (void) +{ + string_fprintf (stdout, "\n"); + string_fprintf ( + stdout, + /* TRANSLATORS: "%s %s" after "compiled on" is date and time */ + _("WeeChat %s Copyright %s, compiled on %s %s\n" + "Developed by Sébastien Helleu " + "- %s"), + version_get_version_with_git (), + WEECHAT_COPYRIGHT_DATE, + version_get_compilation_date (), + version_get_compilation_time (), + WEECHAT_WEBSITE); + string_fprintf (stdout, "\n"); +} + +/* + * Displays WeeChat help on standard output. + */ + +void +args_display_help (void) +{ + args_display_copyright (); + string_fprintf (stdout, "\n"); + string_fprintf (stdout, + _("Usage: %s [option...] [plugin:option...]\n"), + weechat_argv0); + string_fprintf (stdout, "\n"); + string_fprintf ( + stdout, + _(" -a, --no-connect disable auto-connect to servers at " + "startup\n" + " -c, --colors display default colors in terminal " + "and exit\n" + " -d, --dir force a single WeeChat home directory\n" + " or 5 different directories separated " + "by colons (in this order: config, data, state, cache, runtime)\n" + " (environment variable WEECHAT_HOME is " + "read if this option is not given)\n" + " -t, --temp-dir create a temporary WeeChat home " + "directory and delete it on exit\n" + " (incompatible with option \"-d\")\n" + " -h, --help display this help and exit\n" + " -i, --build-info display build information and exit\n" + " -l, --license display WeeChat license and exit\n" + " -p, --no-plugin don't load any plugin at startup\n" + " -P, --plugins load only these plugins at startup\n" + " (see /help weechat.plugin.autoload)\n" + " -r, --run-command run command(s) after startup;\n" + " many commands can be separated by " + "semicolons and are evaluated,\n" + " this option can be given multiple " + "times\n" + " -s, --no-script don't load any script at startup\n" + " --upgrade upgrade WeeChat using session files " + "(see /help upgrade in WeeChat)\n" + " -v, --version display WeeChat version and exit\n" + " plugin:option option for plugin (see man weechat)\n")); + string_fprintf (stdout, "\n"); + + /* extra options in headless mode */ + if (weechat_headless) + { + string_fprintf (stdout, _("Extra options in headless mode:\n")); + string_fprintf ( + stdout, + _(" --doc-gen generate files to build " + "documentation and exit\n")); + string_fprintf ( + stdout, + _(" --daemon run WeeChat as a daemon (fork, " + "new process group, file descriptors closed);\n")); + string_fprintf ( + stdout, + _(" (by default in headless mode " + "WeeChat is blocking and does not run in background)\n")); + string_fprintf ( + stdout, + _(" --stdout display log messages on standard " + "output instead of writing them in log file\n")); + string_fprintf ( + stdout, + _(" (option ignored if option " + "\"--daemon\" is given)\n")); + string_fprintf (stdout, "\n"); + } + + /* debug options */ + string_fprintf ( + stdout, + _("Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n" + " --no-dlclose do not call function dlclose after " + "plugins are unloaded\n" + " --no-gnutls disable init/deinit of gnutls\n" + " --no-gcrypt disable init/deinit of gcrypt\n")); + string_fprintf (stdout, "\n"); +} + +/* + * Parses command line arguments. + * + * Arguments argc and argv come from main() function. + */ + +void +args_parse (int argc, char *argv[]) +{ + int opt; + struct option long_options[] = { + /* standard options */ + { "no-connect", no_argument, NULL, 'a' }, + { "colors", no_argument, NULL, 'c' }, + { "dir", required_argument, NULL, 'd' }, + { "temp-dir", no_argument, NULL, 't' }, + { "help", no_argument, NULL, 'h' }, + { "build-info", no_argument, NULL, 'i' }, + { "license", no_argument, NULL, 'l' }, + { "no-plugin", no_argument, NULL, 'p' }, + { "plugins", required_argument, NULL, 'P' }, + { "run-command", required_argument, NULL, 'r' }, + { "no-script", no_argument, NULL, 's' }, + { "upgrade", no_argument, NULL, 'u' }, + { "doc-gen", required_argument, NULL, OPTION_DOCGEN }, + { "version", no_argument, NULL, 'v' }, + /* debug options */ + { "no-dlclose", no_argument, NULL, OPTION_NO_DLCLOSE }, + { "no-gnutls", no_argument, NULL, OPTION_NO_GNUTLS }, + { "no-gcrypt", no_argument, NULL, OPTION_NO_GCRYPT }, + { NULL, 0, NULL, 0 }, + }; + + weechat_argv0 = (argv[0]) ? strdup (argv[0]) : NULL; + weechat_upgrading = 0; + weechat_home_force = NULL; + weechat_home_temp = 0; + weechat_home_delete_on_exit = 0; + weechat_server_cmd_line = 0; + weechat_force_plugin_autoload = NULL; + weechat_doc_gen = 0; + weechat_plugin_no_dlclose = 0; + + optind = 0; + opterr = 0; + + while ((opt = getopt_long (argc, argv, + ":acd:thilpP:r:sv", + long_options, NULL)) != -1) + { + switch (opt) + { + case 'a': /* -a / --no-connect */ + /* option ignored, it will be used by plugins/scripts */ + break; + case 'c': /* -c / --colors */ + gui_color_display_terminal_colors (); + weechat_shutdown (EXIT_SUCCESS, 0); + break; + case 'd': /* -d / --dir */ + weechat_home_temp = 0; + free (weechat_home_force); + weechat_home_force = strdup (optarg); + break; + case 't': /* -t / --temp-dir */ + weechat_home_temp = 1; + if (weechat_home_force) + { + free (weechat_home_force); + weechat_home_force = NULL; + } + break; + case 'h': /* -h / --help */ + args_display_help (); + weechat_shutdown (EXIT_SUCCESS, 0); + break; + case 'i': /* -i / --build-info */ + debug_build_info (); + weechat_shutdown (EXIT_SUCCESS, 0); + break; + case 'l': /* -l / --license */ + args_display_copyright (); + string_fprintf (stdout, "\n"); + string_fprintf (stdout, "%s%s", WEECHAT_LICENSE_TEXT); + weechat_shutdown (EXIT_SUCCESS, 0); + break; + case 'p': /* -p / --no-plugin */ + free (weechat_force_plugin_autoload); + weechat_force_plugin_autoload = strdup ("!*"); + break; + case 'P': /* -P / --plugins */ + free (weechat_force_plugin_autoload); + weechat_force_plugin_autoload = strdup (optarg); + break; + case 'r': /* -r / --run-command */ + if (!weechat_startup_commands) + weechat_startup_commands = weelist_new (); + weelist_add (weechat_startup_commands, optarg, + WEECHAT_LIST_POS_END, NULL); + break; + case 's': /* -s / --no-script */ + /* option ignored, it will be used by the scripting plugins */ + break; + case 'u': /* --upgrade */ + weechat_upgrading = 1; + break; + case OPTION_DOCGEN: /* --doc-gen */ + if (weechat_headless) + { + weechat_doc_gen = 1; + weechat_doc_gen_path = strdup (optarg); + } + break; + case 'v': /* -v / --version */ + string_fprintf (stdout, version_get_version ()); + fprintf (stdout, "\n"); + weechat_shutdown (EXIT_SUCCESS, 0); + break; + case OPTION_NO_DLCLOSE: /* --no-dlclose */ + /* + * Valgrind works better when dlclose() is not done after + * plugins are unloaded, it can display stack for plugins,* + * otherwise you'll see "???" in stack for functions of + * unloaded plugins. + * This option disables the call to dlclose(), + * it must NOT be used for other purposes! + */ + weechat_plugin_no_dlclose = 1; + break; + case OPTION_NO_GNUTLS: /* --no-gnutls */ + /* + * Electric-fence is not working fine when gnutls loads + * certificates and Valgrind reports many memory errors with + * gnutls. + * This option disables the init/deinit of gnutls, + * it must NOT be used for other purposes! + */ + weechat_no_gnutls = 1; + break; + case OPTION_NO_GCRYPT: /* --no-gcrypt */ + /* + * Valgrind reports many memory errors with gcrypt. + * This option disables the init/deinit of gcrypt, + * it must NOT be used for other purposes! + */ + weechat_no_gcrypt = 1; + break; + case ':': + string_fprintf (stderr, + _("Error: missing argument for \"%s\" option\n"), + argv[optind - 1]); + weechat_shutdown (EXIT_FAILURE, 0); + break; + case '?': + /* ignore any unknown option; plugins can use them */ + break; + default: + /* ignore any other error */ + break; + } + } +} diff --git a/src/core/core-args.h b/src/core/core-args.h new file mode 100644 index 000000000..09d63f900 --- /dev/null +++ b/src/core/core-args.h @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2026 Sébastien Helleu + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * This file is part of WeeChat, the extensible chat client. + * + * WeeChat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * WeeChat is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * 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 WeeChat. If not, see . + */ + +#ifndef WEECHAT_ARGS_H +#define WEECHAT_ARGS_H + +extern void args_display_help (void); +extern void args_parse (int argc, char *argv[]); + +#endif /* WEECHAT_ARGS_H */ diff --git a/src/core/weechat.c b/src/core/weechat.c index 3fa239633..a529e7499 100644 --- a/src/core/weechat.c +++ b/src/core/weechat.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -58,6 +57,7 @@ #endif #include "weechat.h" +#include "core-args.h" #include "core-command.h" #include "core-completion.h" #include "core-config.h" @@ -79,7 +79,6 @@ #include "core-url.h" #include "core-utf8.h" #include "core-util.h" -#include "core-version.h" #include "../gui/gui-chat.h" #include "../gui/gui-color.h" #include "../gui/gui-completion.h" @@ -90,12 +89,6 @@ #include "../plugins/plugin.h" #include "../plugins/plugin-api.h" -/* some command line options */ -#define OPTION_DOCGEN 1000 -#define OPTION_NO_DLCLOSE 1001 -#define OPTION_NO_GNUTLS 1002 -#define OPTION_NO_GCRYPT 1003 - int weechat_headless = 0; /* 1 if running headless (no GUI) */ int weechat_daemon = 0; /* 1 if daemonized (no foreground) */ int weechat_log_stdout = 0; /* 1 to log messages on stdout */ @@ -139,274 +132,6 @@ int weechat_auto_connect = 1; /* auto-connect to servers */ int weechat_auto_load_scripts = 1; /* auto-load scripts */ -/* - * Displays WeeChat copyright on standard output. - */ - -void -weechat_display_copyright (void) -{ - string_fprintf (stdout, "\n"); - string_fprintf ( - stdout, - /* TRANSLATORS: "%s %s" after "compiled on" is date and time */ - _("WeeChat %s Copyright %s, compiled on %s %s\n" - "Developed by Sébastien Helleu " - "- %s"), - version_get_version_with_git (), - WEECHAT_COPYRIGHT_DATE, - version_get_compilation_date (), - version_get_compilation_time (), - WEECHAT_WEBSITE); - string_fprintf (stdout, "\n"); -} - -/* - * Displays WeeChat usage on standard output. - */ - -void -weechat_display_usage (void) -{ - weechat_display_copyright (); - string_fprintf (stdout, "\n"); - string_fprintf (stdout, - _("Usage: %s [option...] [plugin:option...]\n"), - weechat_argv0); - string_fprintf (stdout, "\n"); - string_fprintf ( - stdout, - _(" -a, --no-connect disable auto-connect to servers at " - "startup\n" - " -c, --colors display default colors in terminal " - "and exit\n" - " -d, --dir force a single WeeChat home directory\n" - " or 5 different directories separated " - "by colons (in this order: config, data, state, cache, runtime)\n" - " (environment variable WEECHAT_HOME is " - "read if this option is not given)\n" - " -t, --temp-dir create a temporary WeeChat home " - "directory and delete it on exit\n" - " (incompatible with option \"-d\")\n" - " -h, --help display this help and exit\n" - " -i, --build-info display build information and exit\n" - " -l, --license display WeeChat license and exit\n" - " -p, --no-plugin don't load any plugin at startup\n" - " -P, --plugins load only these plugins at startup\n" - " (see /help weechat.plugin.autoload)\n" - " -r, --run-command run command(s) after startup;\n" - " many commands can be separated by " - "semicolons and are evaluated,\n" - " this option can be given multiple " - "times\n" - " -s, --no-script don't load any script at startup\n" - " --upgrade upgrade WeeChat using session files " - "(see /help upgrade in WeeChat)\n" - " -v, --version display WeeChat version and exit\n" - " plugin:option option for plugin (see man weechat)\n")); - string_fprintf (stdout, "\n"); - - /* extra options in headless mode */ - if (weechat_headless) - { - string_fprintf (stdout, _("Extra options in headless mode:\n")); - string_fprintf ( - stdout, - _(" --doc-gen generate files to build " - "documentation and exit\n")); - string_fprintf ( - stdout, - _(" --daemon run WeeChat as a daemon (fork, " - "new process group, file descriptors closed);\n")); - string_fprintf ( - stdout, - _(" (by default in headless mode " - "WeeChat is blocking and does not run in background)\n")); - string_fprintf ( - stdout, - _(" --stdout display log messages on standard " - "output instead of writing them in log file\n")); - string_fprintf ( - stdout, - _(" (option ignored if option " - "\"--daemon\" is given)\n")); - string_fprintf (stdout, "\n"); - } - - /* debug options */ - string_fprintf ( - stdout, - _("Debug options (for tools like valgrind, DO NOT USE IN PRODUCTION):\n" - " --no-dlclose do not call function dlclose after " - "plugins are unloaded\n" - " --no-gnutls disable init/deinit of gnutls\n" - " --no-gcrypt disable init/deinit of gcrypt\n")); - string_fprintf (stdout, "\n"); -} - -/* - * Parses command line arguments. - * - * Arguments argc and argv come from main() function. - */ - -void -weechat_parse_args (int argc, char *argv[]) -{ - int opt; - struct option long_options[] = { - /* standard options */ - { "no-connect", no_argument, NULL, 'a' }, - { "colors", no_argument, NULL, 'c' }, - { "dir", required_argument, NULL, 'd' }, - { "temp-dir", no_argument, NULL, 't' }, - { "help", no_argument, NULL, 'h' }, - { "build-info", no_argument, NULL, 'i' }, - { "license", no_argument, NULL, 'l' }, - { "no-plugin", no_argument, NULL, 'p' }, - { "plugins", required_argument, NULL, 'P' }, - { "run-command", required_argument, NULL, 'r' }, - { "no-script", no_argument, NULL, 's' }, - { "upgrade", no_argument, NULL, 'u' }, - { "doc-gen", required_argument, NULL, OPTION_DOCGEN }, - { "version", no_argument, NULL, 'v' }, - /* debug options */ - { "no-dlclose", no_argument, NULL, OPTION_NO_DLCLOSE }, - { "no-gnutls", no_argument, NULL, OPTION_NO_GNUTLS }, - { "no-gcrypt", no_argument, NULL, OPTION_NO_GCRYPT }, - { NULL, 0, NULL, 0 }, - }; - - weechat_argv0 = (argv[0]) ? strdup (argv[0]) : NULL; - weechat_upgrading = 0; - weechat_home_force = NULL; - weechat_home_temp = 0; - weechat_home_delete_on_exit = 0; - weechat_server_cmd_line = 0; - weechat_force_plugin_autoload = NULL; - weechat_doc_gen = 0; - weechat_plugin_no_dlclose = 0; - - optind = 0; - opterr = 0; - - while ((opt = getopt_long (argc, argv, - ":acd:thilpP:r:sv", - long_options, NULL)) != -1) - { - switch (opt) - { - case 'a': /* -a / --no-connect */ - /* option ignored, it will be used by plugins/scripts */ - break; - case 'c': /* -c / --colors */ - gui_color_display_terminal_colors (); - weechat_shutdown (EXIT_SUCCESS, 0); - break; - case 'd': /* -d / --dir */ - weechat_home_temp = 0; - free (weechat_home_force); - weechat_home_force = strdup (optarg); - break; - case 't': /* -t / --temp-dir */ - weechat_home_temp = 1; - if (weechat_home_force) - { - free (weechat_home_force); - weechat_home_force = NULL; - } - break; - case 'h': /* -h / --help */ - weechat_display_usage (); - weechat_shutdown (EXIT_SUCCESS, 0); - break; - case 'i': /* -i / --build-info */ - debug_build_info (); - weechat_shutdown (EXIT_SUCCESS, 0); - break; - case 'l': /* -l / --license */ - weechat_display_copyright (); - string_fprintf (stdout, "\n"); - string_fprintf (stdout, "%s%s", WEECHAT_LICENSE_TEXT); - weechat_shutdown (EXIT_SUCCESS, 0); - break; - case 'p': /* -p / --no-plugin */ - free (weechat_force_plugin_autoload); - weechat_force_plugin_autoload = strdup ("!*"); - break; - case 'P': /* -P / --plugins */ - free (weechat_force_plugin_autoload); - weechat_force_plugin_autoload = strdup (optarg); - break; - case 'r': /* -r / --run-command */ - if (!weechat_startup_commands) - weechat_startup_commands = weelist_new (); - weelist_add (weechat_startup_commands, optarg, - WEECHAT_LIST_POS_END, NULL); - break; - case 's': /* -s / --no-script */ - /* option ignored, it will be used by the scripting plugins */ - break; - case 'u': /* --upgrade */ - weechat_upgrading = 1; - break; - case OPTION_DOCGEN: /* --doc-gen */ - if (weechat_headless) - { - weechat_doc_gen = 1; - weechat_doc_gen_path = strdup (optarg); - } - break; - case 'v': /* -v / --version */ - string_fprintf (stdout, version_get_version ()); - fprintf (stdout, "\n"); - weechat_shutdown (EXIT_SUCCESS, 0); - break; - case OPTION_NO_DLCLOSE: /* --no-dlclose */ - /* - * Valgrind works better when dlclose() is not done after - * plugins are unloaded, it can display stack for plugins,* - * otherwise you'll see "???" in stack for functions of - * unloaded plugins. - * This option disables the call to dlclose(), - * it must NOT be used for other purposes! - */ - weechat_plugin_no_dlclose = 1; - break; - case OPTION_NO_GNUTLS: /* --no-gnutls */ - /* - * Electric-fence is not working fine when gnutls loads - * certificates and Valgrind reports many memory errors with - * gnutls. - * This option disables the init/deinit of gnutls, - * it must NOT be used for other purposes! - */ - weechat_no_gnutls = 1; - break; - case OPTION_NO_GCRYPT: /* --no-gcrypt */ - /* - * Valgrind reports many memory errors with gcrypt. - * This option disables the init/deinit of gcrypt, - * it must NOT be used for other purposes! - */ - weechat_no_gcrypt = 1; - break; - case ':': - string_fprintf (stderr, - _("Error: missing argument for \"%s\" option\n"), - argv[optind - 1]); - weechat_shutdown (EXIT_FAILURE, 0); - break; - case '?': - /* ignore any unknown option; plugins can use them */ - break; - default: - /* ignore any other error */ - break; - } - } -} - /* * Displays WeeChat startup message. */ @@ -661,7 +386,7 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void)) weechat_shutdown (EXIT_FAILURE, 0); if (!config_weechat_init ()) /* init WeeChat options (weechat.*) */ weechat_shutdown (EXIT_FAILURE, 0); - weechat_parse_args (argc, argv); /* parse command line args */ + args_parse (argc, argv); /* parse command line args */ dir_create_home_dirs (); /* create WeeChat home directories */ log_init (); /* init log file */ plugin_api_init (); /* create some hooks (info,hdata,..)*/ diff --git a/src/core/weechat.h b/src/core/weechat.h index 3e66f219e..09ba09e68 100644 --- a/src/core/weechat.h +++ b/src/core/weechat.h @@ -122,6 +122,10 @@ extern char *weechat_cache_dir; extern char *weechat_runtime_dir; extern int weechat_locale_ok; extern char *weechat_local_charset; +extern int weechat_server_cmd_line; +extern char *weechat_force_plugin_autoload; +extern int weechat_doc_gen; +extern char *weechat_doc_gen_path; extern int weechat_plugin_no_dlclose; extern int weechat_no_gnutls; extern int weechat_no_gcrypt;