diff --git a/srohtml.c b/srohtml.c index 173a780..79c56c8 100644 --- a/srohtml.c +++ b/srohtml.c @@ -75,7 +75,7 @@ static void cmd_fi(const char *line); static void cmd_h(const char *line); static void cmd_hr(void); static void cmd_i(const char *line); -static void cmd_in(); +static void cmd_in(const char *line); static void cmd_la(const char *line); static void cmd_le(void); static void cmd_ls(void); @@ -115,6 +115,8 @@ string head; size_t heading_position = 0; int imgs_presence = 0; int indentation = 2; +char *index_heading = NULL; +char *index_heading_id = NULL; size_t index_position = 0; char *language = NULL; int licence_container = 0; @@ -225,7 +227,7 @@ cmd(char *line) else if (!strncmp(line, "I", cmdlen)) cmd_i(line); else if (!strncmp(line, "IN", cmdlen)) - cmd_in(); + cmd_in(line); else if (!strncmp(line, "LA", cmdlen)) cmd_la(line); else if (!strncmp(line, "LE", cmdlen)) @@ -407,6 +409,7 @@ cmd_fi(const char *line) string_cat(&body, "\" alt=\"\">"); imgs_presence = 1; + free(ind); free(src); } @@ -462,8 +465,23 @@ cmd_i(const char *line) } void -cmd_in(void) +cmd_in(const char *line) { + /* move past "IN" */ + line += 2; + /* move past arguments, once found them */ + line += stread_param(line, &index_heading); + line += stread_param(line, &index_heading_id); + + if (!strcmp(index_heading, "")) { + free(index_heading); + index_heading = NULL; + } + if (!strcmp(index_heading_id, "")) { + free(index_heading_id); + index_heading_id = NULL; + } + index_position = strlen(body.str); } @@ -1019,8 +1037,20 @@ nav_index(FILE *f) fputs("