Universität Ulm,
SAI,
Übungen zu
Systemnahe Software I
Lösungsbeispiel zu Blatt 9 (Aufgabe 13): sam.h
Gemeinsame Definitionen für SAM (simple archive manager).
/*
* sam.h - Common definitions for SAM (simple archive manager).
*
* Martin Hasch, University of Ulm, January 1997
*/
/*
* SAM archive format: SAM archive member format:
*
* +-----------------------+
* | magic | +-----------------------+
* +-----------------------+ / | header |
* | member #1 | / +-----------------------+
* +-----------------------+ / | trailer |
* | member #2 | +-----------------------+
* +-----------------------+ \ | body |
* | . | \ +-----------------------+
* | . | \ | trailer |
* | . | +-----------------------+
* +-----------------------+
* | member #n |
* +-----------------------+
*
* SAM header format:
*
* +-----------------------+
* | sam_name |
* +-----------------------+
* | sam_size |
* +-----------------------+
* | sam_time |
* +-----------------------+
*/
#ifndef SAM_H
#define SAM_H
#include <time.h>
#define SAM_MAGIC 0xa153414d
#define SAM_TRAILER 0x73616d0a
#define SAM_NAMELEN 31 /* maximum strlen of sam_name */
typedef unsigned long sam_Magic;
typedef char sam_Name[SAM_NAMELEN+1];
typedef struct sam_hdr {
sam_Name sam_name;
size_t sam_size;
time_t sam_time;
} sam_Header;
typedef unsigned long sam_Trailer;
/*
* Exit codes.
*/
#define ECODE_SUCCESS 0 /* successful completion */
#define ECODE_ERROR 1 /* partly successful completion */
#define ECODE_FATAL 2 /* halt on supposedly contextual error */
#define ECODE_PROBLEM 3 /* halt on unexpected problem */
#endif /* SAM_H */
<- Alle Module
Martin Hasch, Februar 1997