diff options
Diffstat (limited to 'src/application.c')
-rw-r--r-- | src/application.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/application.c b/src/application.c new file mode 100644 index 0000000..78d5a77 --- /dev/null +++ b/src/application.c @@ -0,0 +1,82 @@ +/* + This file is part of GNUnet. + Copyright (C) 2022 GNUnet e.V. + + GNUnet is free software: you can redistribute it and/or modify it + under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. + + GNUnet 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 + Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + SPDX-License-Identifier: AGPL3.0-or-later + */ +/* + * @author Tobias Frisch + * @file application.c + */ + +#include "application.h" + +void +application_init(MESSENGER_Application *app, + int argc, + char **argv) +{ + memset(app, 0, sizeof(*app)); + + app->argc = argc; + app->argv = argv; + + initscr(); + noecho(); + + keypad(stdscr, TRUE); + timeout(100); +} + +static void +run (void *cls, + UNUSED char* const* args, + UNUSED const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + MESSENGER_Application *app = cls; + + chat_start(&(app->chat), app, cfg); +} + +void +application_run(MESSENGER_Application *app) +{ + struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; + + app->status = GNUNET_PROGRAM_run( + app->argc, + app->argv, + "messenger_cli", + gettext_noop("A CLI for the Messenger service of GNUnet."), + options, + &run, + app + ); + + endwin(); +} + +int +application_status(MESSENGER_Application *app) +{ + if (app->status != GNUNET_OK) + return EXIT_FAILURE; + else + return EXIT_SUCCESS; +} |