int main()

in src/apps/filters/h3ToLocalIj.c [50:96]


int main(int argc, char* argv[]) {
    H3Index origin = 0;

    Arg helpArg = ARG_HELP;
    Arg originArg = {
        .names = {"-o", "--origin"},
        .scanFormat = "%" PRIx64,
        .valueName = "origin",
        .value = &origin,
        .required = true,
        .helpText =
            "Origin (anchoring index) for the local coordinate system."};
    DEFINE_INDEX_ARG(index, indexArg);

    Arg* args[] = {&helpArg, &originArg, &indexArg};
    const int numArgs = 3;
    const char* helpText = "Converts H3 indexes to local IJ coordinates";

    if (parseArgs(argc, argv, numArgs, args, &helpArg, helpText)) {
        return helpArg.found ? 0 : 1;
    }

    if (!H3_EXPORT(h3IsValid)(origin)) {
        printHelp(stderr, argv[0], helpText, numArgs, args,
                  "Origin is invalid.", NULL);
        return 1;
    }

    if (indexArg.found) {
        doCell(index, origin);
    } else {
        // process the indexes on stdin
        char buff[BUFF_SIZE];
        while (1) {
            // get an index from stdin
            if (!fgets(buff, BUFF_SIZE, stdin)) {
                if (feof(stdin))
                    break;
                else
                    error("reading H3 index from stdin");
            }

            H3Index h3 = H3_EXPORT(stringToH3)(buff);
            doCell(h3, origin);
        }
    }
}