#include "pn_cmd.h" #include #include /* for strtol */ #include /* for strchr */ #include struct pn_cmd * pn_cmd_new_from_string(const char *str, size_t len) { struct pn_cmd *cmd; char *param_start; cmd = g_malloc0(sizeof(*cmd)); cmd->base = g_strndup(str, len); param_start = strchr(cmd->base, ' '); if (param_start) { *param_start++ = '\0'; if (param_start[0]) cmd->paramv = g_strsplit(param_start, " ", 0); } if (cmd->paramv && cmd->paramv[0]) { const char *param; int c; for (c = 0; cmd->paramv[c]; c++) ; cmd->paramc = c; param = cmd->paramv[0]; cmd->tr_id = strtol(param, NULL, 10);; } else cmd->tr_id = 0; return cmd; } void pn_cmd_free(struct pn_cmd *cmd) { g_free(cmd->base); g_strfreev(cmd->paramv); g_free(cmd); }