diff --git a/src/main.c b/src/main.c index 5551e7d..926f30e 100644 --- a/src/main.c +++ b/src/main.c @@ -101,6 +101,21 @@ static int parse_moffat_beta(const char *text, double *value) { return errno || *end || *value <= 1.0 ? -1 : 0; } +static int validate_tonemapped_output_path(const char *path) { + const size_t path_length = strlen(path); +#ifdef ENABLE_PNG + if (path_length >= 4 && strcmp(path + path_length - 4, ".png") == 0) + return 0; + fputs("PNG output is enabled; use a .png output path.\n", stderr); +#else + if (path_length >= 4 && strcmp(path + path_length - 4, ".ppm") == 0) + return 0; + fputs("PNG output is unavailable; use a .ppm output path or rebuild with libpng.\n", + stderr); +#endif + return -1; +} + static int parse_args(int argc, char **argv, Settings *s, const char **write_path) { #ifdef ENABLE_PNG @@ -505,6 +520,9 @@ int main(int argc, char **argv) { return 2; } #endif + if (settings.frames_dir == NULL && + validate_tonemapped_output_path(settings.output_path)) + return 2; StarCatalog catalog = {0}; if (settings.all_sky_catalog_path != NULL) { if (catalog_load_all_sky(&catalog, settings.all_sky_catalog_path)) {