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 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