int
main(int argc, char *argv[argc])
{
    int status = EXIT_FAILURE;

    char *commandArgs[argc];
    int commandArgCount = 0;
    bool needToShowUsage = false;
    bool shouldExit = false;

    status = tutorialCommon_processCommandLineArguments(argc, argv, &commandArgCount, commandArgs, &needToShowUsage, &shouldExit);

    if (needToShowUsage) {
        _displayUsage(argv[0]);
    }

    if (shouldExit) {
        exit(status);
    }

    if (commandArgCount == 2
        && (strncmp(tutorialCommon_CommandFetch, commandArgs[0], strlen(commandArgs[0])) == 0)) {        // "fetch <filename>"
        status = _executeUserCommand(commandArgs[0], commandArgs[1]) ? EXIT_SUCCESS : EXIT_FAILURE;
    } else if (commandArgCount == 1
               && (strncmp(tutorialCommon_CommandList, commandArgs[0], strlen(commandArgs[0])) == 0)) {  // "list"
        status = _executeUserCommand(commandArgs[0], NULL) ? EXIT_SUCCESS : EXIT_FAILURE;
    } else {
        status = EXIT_FAILURE;
        _displayUsage(argv[0]);
    }

    exit(status);
}
int
main(int argc, char *argv[argc])
{
    int status = EXIT_FAILURE;

    char *commandArgs[argc];
    int commandArgCount = 0;
    bool needToShowUsage = false;
    bool shouldExit = false;

    status = tutorialCommon_processCommandLineArguments(argc, argv, &commandArgCount, commandArgs, &needToShowUsage, &shouldExit);

    if (needToShowUsage) {
        _displayUsage(argv[0]);
    }

    if (shouldExit) {
        exit(status);
    }

    if (commandArgCount == 1) {
        status = (_serveDirectory(commandArgs[0]) ? EXIT_SUCCESS : EXIT_FAILURE);
    } else {
        status = EXIT_FAILURE;
        _displayUsage(argv[0]);
    }

    exit(status);
}