mirror of https://github.com/inolen/redream.git
support gdis with track filenames containing single or double quotes
This commit is contained in:
parent
1469f441e0
commit
ba7ebf9b72
|
@ -106,10 +106,27 @@ static int gdi_parse(struct disc *disc, const char *filename) {
|
|||
int num, lba, ctrl, sector_size, file_offset;
|
||||
char filename[PATH_MAX];
|
||||
|
||||
n = fscanf(fp, "%d %d %d %d %s %d", &num, &lba, &ctrl, §or_size,
|
||||
filename, &file_offset);
|
||||
/* parse track information, including filenames which may include single or
|
||||
double quotes */
|
||||
int parse_err = 0;
|
||||
|
||||
if (n != 6) {
|
||||
n = fscanf(fp, "%d %d %d %d", &num, &lba, &ctrl, §or_size);
|
||||
parse_err |= (n != 4);
|
||||
|
||||
n = fscanf(fp, " \"%[^\"]\"", filename);
|
||||
if (n != 1) {
|
||||
n = fscanf(fp, " '%[^']'", filename);
|
||||
if (n != 1) {
|
||||
n = fscanf(fp, " %s", filename);
|
||||
parse_err |= (n != 1);
|
||||
}
|
||||
}
|
||||
|
||||
n = fscanf(fp, " %d", &file_offset);
|
||||
parse_err |= (n != 1);
|
||||
|
||||
if (parse_err) {
|
||||
LOG_WARNING("gdi_parse failed to parse track information");
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
@ -129,8 +146,8 @@ static int gdi_parse(struct disc *disc, const char *filename) {
|
|||
/* sanity check */
|
||||
CHECK_EQ(num, track->num);
|
||||
|
||||
LOG_INFO("gdi_parse_track track=%d fad=%d secsz=%d", track->num, track->fad,
|
||||
track->sector_size);
|
||||
LOG_INFO("gdi_parse track=%d filename='%s' fad=%d secsz=%d", track->num,
|
||||
track->filename, track->fad, track->sector_size);
|
||||
}
|
||||
|
||||
/* gdroms contains two sessions, one for the single density area (tracks 0-1)
|
||||
|
|
|
@ -21,7 +21,8 @@ DEFINE_OPTION_INT(help, 0, "Show help");
|
|||
#define VIDEO_DEFAULT_HEIGHT 480
|
||||
#define INPUT_MAX_CONTROLLERS 4
|
||||
|
||||
#define AUDIO_FRAMES_TO_MS(frames) (int)(((float)frames * 1000.0f) / (float)AUDIO_FREQ)
|
||||
#define AUDIO_FRAMES_TO_MS(frames) \
|
||||
(int)(((float)frames * 1000.0f) / (float)AUDIO_FREQ)
|
||||
#define MS_TO_AUDIO_FRAMES(ms) (int)(((float)(ms) / 1000.0f) * AUDIO_FREQ)
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue