summaryrefslogtreecommitdiff
path: root/src/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/io')
-rw-r--r--src/io/CMakeLists.txt1
-rw-r--r--src/io/network.c15
-rw-r--r--src/io/parameters.c33
-rw-r--r--src/io/parameters_types.h1
4 files changed, 49 insertions, 1 deletions
diff --git a/src/io/CMakeLists.txt b/src/io/CMakeLists.txt
index a13154b..c36413a 100644
--- a/src/io/CMakeLists.txt
+++ b/src/io/CMakeLists.txt
@@ -3,6 +3,7 @@ set(
${CMAKE_CURRENT_SOURCE_DIR}/parameters.c
${CMAKE_CURRENT_SOURCE_DIR}/network.c
${CMAKE_CURRENT_SOURCE_DIR}/data_input.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/data_output.c
)
set(SRC_FILES ${SRC_FILES} PARENT_SCOPE)
diff --git a/src/io/network.c b/src/io/network.c
index 45be5fb..0c9cf33 100644
--- a/src/io/network.c
+++ b/src/io/network.c
@@ -436,6 +436,21 @@ READ_NEW_MSG:
if (ZoO_IS_PREFIX("JOIN", (net->in + cmd)))
{
+ for (i = 1; (i < 512) && (net->in[i] != '!'); ++i)
+ {
+ }
+
+ if ((i == 512) || (i == 1))
+ {
+ ZoO_ERROR("Could not find JOIN username: %s", net->in);
+
+ goto READ_NEW_MSG;
+ }
+
+ *msg_offset = 1;
+ *msg_size = (i - 1);
+ net->in[i] = '\0';
+
*type = ZoO_JOIN;
return 0;
diff --git a/src/io/parameters.c b/src/io/parameters.c
index 0f7d05c..77c33aa 100644
--- a/src/io/parameters.c
+++ b/src/io/parameters.c
@@ -14,7 +14,8 @@ static void load_default_parameters
struct ZoO_parameters param [const restrict static 1]
)
{
- param->data_filename = ZoO_DEFAULT_DATA_FILENAME;
+ param->data_filename = ZoO_DEFAULT_DATA_FILENAME;
+ param->new_data_filename = (char *) NULL;
param->irc_server_addr = ZoO_DEFAULT_IRC_SERVER_ADDR;
param->irc_server_port = ZoO_DEFAULT_IRC_SERVER_PORT;
@@ -39,6 +40,9 @@ static void print_help (const char exec [const restrict static 1])
" [--data-filename | -df] FILENAME\n"
" Learn content from FILENAME before connecting.\n"
" Default: %s.\n"
+ " [--new-data-filename | -ndf] FILENAME\n"
+ " Store new data learned in FILENAME.\n"
+ " Default: value of the --data-filename param.\n"
" [--irc-server-addr | -isa] IRC_SERVER_ADDR\n"
" Connect to this server address.\n"
" Default: %s.\n"
@@ -190,6 +194,28 @@ int ZoO_parameters_initialize
}
else if
(
+ (strcmp(argv[i], "--new-data-filename") == 0)
+ || (strcmp(argv[i], "-ndf") == 0)
+ )
+ {
+ i += 1;
+
+ if
+ (
+ parse_string_arg
+ (
+ &(param->new_data_filename),
+ i,
+ argv,
+ argc
+ ) < 0
+ )
+ {
+ return -1;
+ }
+ }
+ else if
+ (
(strcmp(argv[i], "--irc-server-addr") == 0)
|| (strcmp(argv[i], "-isa") == 0)
)
@@ -350,5 +376,10 @@ int ZoO_parameters_initialize
param->aliases_count = (argc - i);
param->aliases = (argv + i);
+ if (param->new_data_filename == (char *) NULL)
+ {
+ param->new_data_filename = param->data_filename;
+ }
+
return 1;
}
diff --git a/src/io/parameters_types.h b/src/io/parameters_types.h
index 6d511d8..92a9e30 100644
--- a/src/io/parameters_types.h
+++ b/src/io/parameters_types.h
@@ -4,6 +4,7 @@
struct ZoO_parameters
{
const char * restrict data_filename;
+ const char * restrict new_data_filename;
const char * restrict irc_server_addr;
const char * restrict irc_server_port;