Universität Ulm, SAI, Übungen zu Systemnahe Software I

Lösungsbeispiel zu Blatt 9 (Aufgabe 13): main.c

Hauptprogramm: Bearbeitung der Kommandozeile.

main.c

/*
 *      main.c  - Main program for SAM:  Command line execution.
 */

#include        <stdio.h>
#include        "sam.h"
#include        "names.h"
#include        "replace.h"
#include        "delete.h"
#include        "extract.h"
#include        "contents.h"

/*
 *      Print usage information and leave.  Point of no return.
 */
static void usage(char *name)
{
        fprintf(stderr, "Usage: %s (-r|-d|-x|-t) archive [files...]\n", name);
        exit(ECODE_FATAL);
}

int main(int argc, char *argv[])
{
        names_List list = NULL;
        char *archive;
        int i;
        int ecode;

        if ( argc < 3 || argv[1][0] != '-' || argv[1][2] != '\0' )
                usage(argv[0]);

        archive = argv[2];
        for ( i=3; i<argc; ++i )
                list = names_add(list, argv[i]);

        switch ( argv[1][1] ) {
        case 'r':
                ecode = replace(archive, list);
                break;
        case 'd':
                ecode = delete(archive, list);
                break;
        case 'x':
                ecode = extract(archive, list);
                break;
        case 't':
                ecode = contents(archive, list);
                break;
        default:
                usage(argv[0]);
        }

        exit(ecode);
}

<- Alle Module
Martin Hasch, Februar 1997