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

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