options.c

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.7 kB
6
Indexable
Never
#include "options.h"

/* Initialize option checks */
int file_option = 0;
int create_option = 0;
int list_option = 0;
int extract_option = 0;
int strict_option = 0;
int verbose_option = 0;

/* Parse the options in the command line */
int parse_options(char *options){
    int error, i, option_len;
    int character;

    error = 0;

    /* If options exceed max option space return an error */
    if((option_len = strlen(options)) > 3){
        error++;
        return error;
    }

    /* Parse through options */
    for(i = 0; i < option_len; i++){
        character = options[i];
        switch (character){
        case 'c':
            create_option = 1;

            /* If list or extract mode is set, update error */
            if(list_option == 1 || extract_option == 1){
                error++;
            }

            break;
        case 't':
            list_option = 1;

            /* If create or extract mode is set, update error */
            if(create_option == 1 || extract_option == 1){
                error++;
            }

            break;
         case 'x':
            extract_option = 1;

            /* If list or create mode is set, update error */
            if(list_option == 1 || create_option == 1){
                error++;
            }

            break;
        case 'v':
            verbose_option = 1;
            break;
        case 'S':
            strict_option = 1;
            break;
        case 'f':
            file_option = 1;
            break;
        default:
            error++;
        }
    }

    /* If file option is not set, update error */
    if(file_option != 1 || options[option_len - 1] != 'f'){
        error++;
    }

    return error;
}
Leave a Comment