- 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;
- }
- char line_copy[strlen(line) + 1];
- sprintf(line_copy, "%s", line);
- struct Command cmd;
- char * arg_string;
- exit_err(( copy_tokenized_string(line, &cmd.dsc_short, delim)
- || copy_tokenized_string(NULL, &cmd.server_msg, delim)
- || NULL == (arg_string = strtok(NULL, delim))
- || copy_tokenized_string(NULL, &cmd.dsc_long, "\n")),
- init_command_db_err(line_copy, i + 1));
- cmd.arg = arg_string[0];
- 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. */
- array_append(i, sizeof(struct Command), (void *) &cmd,
- (void **) &world.commandDB.cmds);
- i++;
- }
- try_fclose(file, f_name);
- world.commandDB.n = i;