BkFile

typedef struct BkFile
{
    BkFileBase base; /* intended to be accessed using a cast */
    
    unsigned size; /* in bytes, don't need off_t because it's stored 
                   * in a 32bit unsigned int on the iso */
    BkHardLink* location; /* basically a copy of the following variables */
    bool onImage;
    off_t position; /* if on image, in bytes */
    char* pathAndName; /* if on filesystem, full path + filename
                       * is to be freed whenever the File is freed */
    
} BkFile;

size is the exact size of the file, whether it is from an original ISO or to be added from the filesystem.

onImage is true if the file contents are on the original ISO. It's false if the file is to be added from the regular filesystem.

position and pathAndName are unlikely to be interesting to you, but you can read them if you like - they record how exactly to access the file for reading. They are set in the reading or adding function.

location is definitely not interesting to you, it's used internally to work with hard links.