6 static size_t split(char ***strs, char *s, const char *delim)
9 *strs = malloc((1+i) * sizeof(char *));
11 char *tok = strtok(s, delim);
13 *strs = realloc(*strs, (1+i) * sizeof(char *));
15 tok = strtok(NULL, delim);
21 int main(int argc, char **argv)
23 FILE *fp = fopen("messages.dnet", "r");
26 memset(data, 0, sizeof data);
27 fread(data, sizeof *data, sizeof data, fp);
30 fp = fopen("messages.h", "w");
33 size_t msgs_len = split(&msgs, data, "\n");
36 for (size_t i = 0; i < msgs_len; i++) {
37 if (msgs[i][0] != '\t') {
39 fprintf(fp, "} %s;\n", msg);
42 fprintf(fp, "typedef struct {\n");
45 split(&tokens, msgs[i], " ");
48 if (strcmp(tokens[0], "\ts8") == 0)
49 strcpy(type, "int8_t ");
50 else if (strcmp(tokens[0], "\ts16") == 0)
51 strcpy(type, "int16_t ");
52 else if (strcmp(tokens[0], "\ts32") == 0)
53 strcpy(type, "int32_t ");
54 else if (strcmp(tokens[0], "\ts64") == 0)
55 strcpy(type, "int64_t ");
56 else if (strcmp(tokens[0], "\tu8") == 0)
57 strcpy(type, "uint8_t ");
58 else if (strcmp(tokens[0], "\tu16") == 0)
59 strcpy(type, "uint16_t ");
60 else if (strcmp(tokens[0], "\tu32") == 0)
61 strcpy(type, "uint32_t ");
62 else if (strcmp(tokens[0], "\tu64") == 0)
63 strcpy(type, "uint64_t ");
65 fprintf(fp, "\t%s%s;\n", type, tokens[1]);
70 fprintf(fp, "} %s;\n", msg);