- char * f_name = "init_command_db()";
- FILE * file = try_fopen(world.path_commands, "r", f_name);
- uint32_t lines;
- uint32_t linemax = textfile_sizes(file, &lines);
- char line[linemax + 1];
- uint8_t i = 0;
- char * delim = " ";
- while (try_fgets(line, linemax + 1, file, f_name))
- {
- if ('\n' == line[0] || 0 == line[0])
- {
- break;
- }
- struct Command cmd;
- copy_tokenized_string(line, &cmd.dsc_short, delim);
- copy_tokenized_string(NULL, &cmd.server_msg, delim);
- if (!strcmp("0", cmd.server_msg))
- { /* A .server_msg == NULL helps control.c's */
- free(cmd.server_msg); /* try_key() and try_server_command() to */
- cmd.server_msg = NULL; /* differentiate server commands from */
- } /* non-server commands. */
- char * arg_string = strtok(NULL, delim);
- cmd.arg = arg_string[0];
- copy_tokenized_string(NULL, &cmd.dsc_long, "\n");
- uint32_t old_size = i * sizeof(struct Command);
- uint32_t new_size = old_size + sizeof(struct Command);
- struct Command * new_cmds = try_malloc(new_size, f_name);
- memcpy(new_cmds, world.commandDB.cmds, old_size);
- new_cmds[i] = cmd;
- free(world.commandDB.cmds);
- world.commandDB.cmds = new_cmds;
- i++;
- }
- try_fclose(file, f_name);
- world.commandDB.n = i;