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("