From da69892f56a081cb4cd65eb0a8065783d9473bd3 Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Sun, 26 Aug 2018 19:41:23 -0400 Subject: Refactor. --- src/main.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/main.c (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..6914de0 --- /dev/null +++ b/src/main.c @@ -0,0 +1,61 @@ +#include "config.h" + +#include "random-seed.h" +#include "util.h" + +#include +#include +#include +#include + +static inline void usage() { + puts("usage: random-seed MODE FILE"); + puts("see random-seed(8) for more information."); +} + +static inline void caprlimit(int resource, rlim_t rlimit) { + struct rlimit rlim; + if (getrlimit(resource, &rlim) == -1) { + perror("warning: couldn't get resource limit"); + return; + } + if (rlim.rlim_cur > rlimit) { + rlim.rlim_cur = rlimit; + if (setrlimit(resource, &rlim) == -1) { + perror("warning: couldn't set resource limit"); + return; + } + } +} + +int main(int argc, char *argv[]) { + char *mode, *seed_path; + + switch (argc) { + case 2: + if (streq(argv[1], "-h") || streq(argv[1], "--help")) { + usage(); + exit(0); + } + if (streq(argv[1], "-V") || streq(argv[1], "--version")) { + printf("random-seed %s\n", PACKAGE_VERSION); + exit(0); + } + mode = argv[1]; + seed_path = DEFAULT_SEED_PATH; + break; + case 3: + mode = argv[1]; + seed_path = argv[2]; + break; + default: + fprintf(stderr, "error: invalid arguments\n"); + usage(); + exit(2); + } + + umask(0); + caprlimit(RLIMIT_DATA, 32*1024*1024); + caprlimit(RLIMIT_FSIZE, 1*1024*1024); + run(mode, seed_path); +} -- cgit v1.2.3-54-g00ecf