Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 19 additions & 13 deletions source/frontends/common2/argparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@ namespace
shortOptions.append(shorts.str());
}

std::string canonicalPath(const char *name)
{
// resolve all paths to avoid issues with chdir and relative paths
return std::filesystem::weakly_canonical(name).string();
}

} // namespace

namespace common2
Expand Down Expand Up @@ -277,7 +283,7 @@ namespace common2
}
case 'c':
{
options.configurationFile = optarg;
options.configurationFile = canonicalPath(optarg);
break;
}
case 'l':
Expand All @@ -287,12 +293,12 @@ namespace common2
}
case '1':
{
options.disk1 = optarg;
options.disk1 = canonicalPath(optarg);
break;
}
case '2':
{
options.disk2 = optarg;
options.disk2 = canonicalPath(optarg);
break;
}
case 'r':
Expand Down Expand Up @@ -337,12 +343,12 @@ namespace common2
}
case DISK_H1:
{
options.hardDisk1 = optarg;
options.hardDisk1 = canonicalPath(optarg);
break;
}
case DISK_H2:
{
options.hardDisk2 = optarg;
options.hardDisk2 = canonicalPath(optarg);
break;
}
case MEM_CLEAR:
Expand All @@ -356,17 +362,17 @@ namespace common2
}
case ROM:
{
options.customRom = optarg;
options.customRom = canonicalPath(optarg);
break;
}
case F8ROM:
{
options.customRomF8 = optarg;
options.customRomF8 = canonicalPath(optarg);
break;
}
case VIDEOROM:
{
options.customRomVideo = optarg;
options.customRomVideo = canonicalPath(optarg);
break;
}
case NO_AUDIO:
Expand All @@ -381,12 +387,12 @@ namespace common2
}
case WAV_SPEAKER:
{
options.wavFileSpeaker = optarg;
options.wavFileSpeaker = canonicalPath(optarg);
break;
}
case WAV_MOCKINGBOARD:
{
options.wavFileMockingboard = optarg;
options.wavFileMockingboard = canonicalPath(optarg);
break;
}
case SDL_DRIVER:
Expand Down Expand Up @@ -426,7 +432,7 @@ namespace common2
}
case MAPPING_FILE:
{
options.gameControllerMappingFile = optarg;
options.gameControllerMappingFile = canonicalPath(optarg);
break;
}
case AUDIO_DEVICE:
Expand All @@ -446,13 +452,13 @@ namespace common2
}
case STATE_FILENAME:
{
options.snapshotFilename = optarg;
options.snapshotFilename = canonicalPath(optarg);
options.loadSnapshot = false;
break;
}
case LOAD_STATE:
{
options.snapshotFilename = optarg;
options.snapshotFilename = canonicalPath(optarg);
options.loadSnapshot = true;
break;
}
Expand Down