summaryrefslogtreecommitdiff
path: root/src/chkpar.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/chkpar.c')
-rw-r--r--src/chkpar.c126
1 files changed, 0 insertions, 126 deletions
diff --git a/src/chkpar.c b/src/chkpar.c
deleted file mode 100644
index 081173e..0000000
--- a/src/chkpar.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- Copyright 2022-2023 Gabriel Jensen.
-
- This file is part of agbsum.
-
- agbsum is free software: you can redistribute it
- and/or modify it under the terms of the GNU
- Affero General Public License as published by
- the Free Software Foundation, either version 3
- of the License, or (at your option) any later
- version.
-
- agbsum is distributed in the hope that it will
- be useful, but WITHOUT ANY WARRANTY; without
- even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more
- details.
-
- You should have received a copy of the GNU
- Affero General Public License along with agbsum.
- If not, see <https://www.gnu.org/licenses/>.
-*/
-
-#include <agbsum.h>
-
-#include <inttypes.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-
-noreturn static void
-agb_expparval (char const chrpar)
-{
- fprintf (stderr,"Expected value for character parameter '%c'\n", chrpar);
- agb_exi (agb_cnd_err, NULL);
-}
-
-static bool
-agb_chkchrpar (struct agb_dat* const restrict dat, char const* const restrict par)
-{
- char const chrpar = par[0x0];
- if (chrpar == '\x0') {return true;}
-
- char const* const restrict paramval = &par[0x1];
-
- switch (chrpar) {
- default:
- fprintf (stderr,"Invalid character parameter '%c'\n", chrpar);
- agb_exi (agb_cnd_err, NULL);
- case 'h':
- agb_hlp ();
- agb_exi (agb_cnd_oky, NULL);
- case 'i':
- {
- if (paramval[0x0] == '\x0') {agb_expparval (chrpar);}
- dat->pth = paramval;
- }
- return true;
- case 'p':
- dat->dopat = true;
- return false;
- case 's':
- dat->sil = true;
- return false;
- }
-}
-
-void
-agb_chkpar (struct agb_dat* const restrict dat, int const argc, char const* const* const argv) {
- if (argc < 0x2) {
- agb_hlp ();
- agb_exi (agb_cnd_oky, NULL);
- } else {
- size_t const numpar = argc; // Prettier.
-
- for (ptrdiff_t pos = 0x1u; pos < (ptrdiff_t)numpar; ++pos) {
- // Iterate over the parameters. One hyphen denotes character parameters (-h) whilst two denote long paramters (--help).
-
- char const* const par = argv[pos];
- if (par[0x0] == '-') {
- if (par[0x1] == '-') {
- char const* const lngparam = &par[0x2];
-
- // Check long parameters.
-
- if (lngparam[0x0] == '\x0') {
- fputs ("Missing long parameter after '--' sequence\n", stderr);
- agb_exi (agb_cnd_err, NULL);
- }
-
- if (!strcmp (lngparam,"help")) {
- agb_hlp ();
- agb_exi (agb_cnd_oky, NULL);
- }
-
- if (!strcmp (lngparam,"version")) {
- agb_cpy();
- agb_exi (agb_cnd_oky, NULL);
- }
-
- fprintf (stderr,"Invalid long parameter \"%s\"\n", lngparam);
- agb_exi (agb_cnd_err, NULL);
- }
-
- if (par[0x1] == '\x0') {
- fputs ("Missing character parameter after '-'\n", stderr);
- agb_exi (agb_cnd_err, NULL);
- }
-
- // Check character parameters.
-
- for (char const* chrpos = &par[0x1];; ++chrpos) {if (agb_chkchrpar (dat, chrpos)) {break;}}
-
- continue;
- }
- }
-
- // We did not find the 'i' parameter, so we don't know where the ROM is.
-
- if (dat->pth == NULL) {
- fputs ("ROM not set (missing character parameter 'i')\n", stderr);
- agb_exi (agb_cnd_err, NULL);
- }
- }
-}