-xbt_replay_reader_t xbt_replay_reader_new(const char *filename)
-{
- xbt_replay_reader_t res = xbt_new0(s_xbt_replay_reader_t,1);
- res->fp = fopen(filename, "r");
- xbt_assert(res->fp != nullptr, "Cannot open %s: %s", filename, strerror(errno));
- res->filename = xbt_strdup(filename);
- return res;
-}
-
-const char **xbt_replay_reader_get(xbt_replay_reader_t reader)
-{
- ssize_t read = xbt_getline(&reader->line, &reader->line_len, reader->fp);
- XBT_DEBUG("got from trace: %s", reader->line);
- reader->linenum++;
- if (read==-1)
- return nullptr; /* end of file */
- char *comment = strchr(reader->line, '#');
- if (comment != nullptr)
- *comment = '\0';
- xbt_str_trim(reader->line, nullptr);
- if (reader->line[0] == '\0')
- return xbt_replay_reader_get(reader); /* Get next line */
-
- xbt_dynar_t d = xbt_str_split_quoted_in_place(reader->line);
- if (xbt_dynar_is_empty(d)) {
- xbt_dynar_free(&d);
- return xbt_replay_reader_get(reader); /* Get next line */
- }
- return (const char**) xbt_dynar_to_array(d);
-}
-
-void xbt_replay_reader_free(xbt_replay_reader_t *reader)
-{
- free((*reader)->filename);
- free((*reader)->position);
- fclose((*reader)->fp);
- free((*reader)->line);
- free(*reader);
- *reader=nullptr;
-}
-