/*==================================================================*/
/*																	*/
/*					noDesk - Der no|Soft-Desktop 					*/
/*																	*/
/*						    Version 3.0								*/
/*																	*/
/* 						written 1989-1993 by						*/
/*		  Andreas Fahrig   Ralph Mertens    Christian Stamm			*/
/*                                                                  */
/*         (c)1989-92 by DesaSoft GbR, all Rights reserved			*/
/*         (c)1993    by no|Soft GmbH, all Rights reserved			*/
/*                                                                  */
/*==================================================================*/
/*                                                                  */
/*            Dies ist die WARC-Definitions-Datei 	                */
/*                                                                  */
/*==================================================================*/

#ifndef MAXPATHLEN
# define MAXPATHLEN	128
#endif

#define WARC_MAGIC		"noDeskAr"

#if !defined(IN_LSWIND)
# define Obj_Types		void
# define OBJECT			void
#endif


/*
 * 	EXIT - Codes der Treiber
 */
#define DE_OK			0		/* Konvertierung erfolgreich			*/
#define DE_BADFILE		2		/* falscher Datei-Typ					*/
#define DE_TOOMUCH		1		/* zu viele Dateien im Archiv			*/
#define DE_DRERROR		3		/* Fehler im Treiber					*/
#define DE_TXTERROR		4		/* Fehler Text in buf					*/

typedef struct {
	unsigned char		attrib;		/* Datei-Attribute					*/
	unsigned char		level;		/* Ordnertiefe (ROOT = 0)			*/
	int					ref_no;		/* bei level>0 physcnt des Vaters,	*/
									/* sonst 0							*/
	int					physcnt;	/* Laufende Nummer ab 1				*/
	char				fname[14];	/* Dateiname						*/
	Time_Date			t_d;		/* Datei-Datum und -Zeit			*/
	unsigned long		orig_len;	/* Dateigre entpackt				*/
	unsigned long		packed_len;	/* Dateigre gepackt				*/

	/* Alle folgenden Elemente sind nur fr noDesk relevant und sollten	*/
	/* daher von Treibern ignoriert werden								*/
	char				suffix[4];
	bool				sel;
	unsigned			flags;
	OBJECT				*obP;
	Obj_Types			*otP;
} Warc_File;

typedef struct {
	char		magic[8];			/* mu WARC_MAGIC sein			RO	*/
	char		*arc_name;			/* Datei-Name des Archivs		RO	*/
	char		*bin_dirs;			/* Bin-Dir-Liste				RO	*/
	char		*tmp_dir;			/* Tmp-Dir						RO	*/
	int			buf_size;			/* Gre des Puffers in Elems	RW	*/
	Warc_File	*buf;				/* Pointer auf den Puffer		WO	*/
} Warc_Info;

/*
 *	RO:		ReadOnly	Der Treiber darf nur lesend zugreifen
 *	RW:		ReadWrite	Werte, die gendert werden drfen, bzw. mssen
 *	WO:		WriteOnly	Speicherbereiche, in die der Treiber schreiben
 *						kann und die initial keine Werte enthalten
 *
 *	Nheres zu Warc_Info:
 *		bin_dirs	zeigt auf Pfade (durch ';' getrennt), in der,
 *					wenn ntig, das Archivprogram stehen mu
 *		tmp_dir		zeigt auf einen Pfad, welcher bei Verwendung von
 *					Temporrdateien verwendet werden mu
 *		buf_size	enthlt bei Treiberstart die Anzahl an Warc_File
 *					Eintrgen, referenziert ber buf. Bei erfolgreichem
 *					Ende schreibt der Treiber dort die Anzahl an
 *					gefundenen Eintrgen hinein.
 *		buf			ist ein Pointer auf einem Puffer von max.
 *					buf_size Warc_File-Eintrgen.
 */

#if !defined(IN_LSWIND)
# undef Obj_Types
# undef OBJECT
#endif
