/*
* fractal
* Written in 2020 by Lucas
* CC0 1.0 Universal/Public domain - No rights reserved
*
* To the extent possible under law, the author(s) have dedicated all
* copyright and related and neighboring rights to this software to the
* public domain worldwide. This software is distributed without any
* warranty. You should have received a copy of the CC0 Public Domain
* Dedication along with this software. If not, see
* .
*/
/* gepopt visibility for GLIBC */
#if !defined(__OpenBSD__)
#define _DEFAULT_SOURCE
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include "util.h"
int palette_main(int, char *[]);
int julia_main(int, char *[]);
static void
usage(void)
{
fprintf(stderr, "Usage: %s [-s seed] [prog_args]\n",
xgetprogname());
exit(1);
}
int
main(int argc, char *argv[])
{
char *end;
intmax_t v;
long seed;
int ch;
seed = time(NULL);
while ((ch = getopt(argc, argv, "s:")) != -1)
switch (ch) {
case 's':
errno = 0;
v = strtoimax(optarg, &end, 0);
if (*end != '\0' || errno != 0 || v > LONG_MAX ||
v < LONG_MIN) {
fprintf(stderr, "-s: Invalid value \"%s\".",
optarg);
exit(1);
}
seed = (long)v;
break;
default:
usage();
}
argc -= optind;
argv += optind;
optind = 1;
if (argc == 0)
usage();
fprintf(stderr, "seed=%ld\n", seed);
xsrand48(seed);
if (strcmp(argv[0], "palette") == 0)
return palette_main(argc, argv);
else if (strcmp(argv[0], "julia") == 0)
return julia_main(argc, argv);
else
usage();
return 1; /* UNREACHABLE */
}