+char scenes_file[256] = "";
+
+static int load_scenes(const char *filename)
+{
+ FILE *fp;
+ struct scenes *scenes, **scenesp = &scenes_start;
+ char buffer[256];
+ int frame = 0;
+ int line = 0;
+
+ fp = fopen(filename, "r");
+ if (!fp) {
+ fprintf(stderr, "Failed to open scenes file '%s'\n", filename);
+ return -EIO;
+ }
+
+ while ((fgets(buffer, sizeof(buffer), fp))) {
+ line++;
+ buffer[sizeof(buffer)-1] = '\0';
+ if (buffer[0]) buffer[strlen(buffer)-1] = '\0';
+ if (buffer[0] == '\0')
+ continue;
+ if (buffer[0] < '0' || buffer[0] > '9') {
+ fprintf(stderr, "Error in scenes file. Expecting frame number in line %d.\n", line);
+ return -EINVAL;
+ }
+ if (atoi(buffer) == 0 && frame == 0)
+ continue;
+ if (atoi(buffer) <= frame) {
+ fprintf(stderr, "Error in scenes file. Expecting ascending frame number in line %d.\n", line);
+ return -EINVAL;
+ }
+ scenes = calloc(sizeof(*scenes), 1);
+ if (!scenes)
+ return -ENOMEM;
+ scenes->frame = atoi(buffer);
+ frame = scenes->frame;
+ *scenesp = scenes;
+ scenesp = &scenes->next;
+ }
+
+ if (!scenes_start) {
+ fprintf(stderr, "Error in scenes file. No frame numbers found.\n");
+ return -EINVAL;
+ }
+
+ scenes = scenes_start;
+ frame = 0;
+ while(scenes) {
+ printf("Scene: %d - %d\n", frame, scenes->frame);
+ frame = scenes->frame;
+ scenes = scenes->next;
+ }
+ printf("Scene: %d - end\n", frame);
+
+ fclose(fp);
+ return 0;
+}