Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > by-pkgid > d90d9d7fd893f8089d43570a6d730497 > files > 7

afbackup-debug-3.4-2mdv2008.0.x86_64.rpm

/****************** Start of $RCSfile: backup.h,v $  ****************
*
* $Source: /home/alb/afbackup/afbackup-3.3.9beta4/RCS/backup.h,v $
* $Id: backup.h,v 1.4 2004/07/08 20:34:42 alb Exp alb $
* $Date: 2004/07/08 20:34:42 $
* $Author: alb $
*
*
******* description ***********************************************
*
*
*
*******************************************************************/

#ifndef	BACKUP_H
#define	BACKUP_H	BACKUP_H

#include <stdio.h>
#include <time.h>
#include <signal.h>
#include <sys/types.h>
#ifdef	HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#ifdef	HAVE_LOCALE_H
#include <locale.h>
#else
#ifdef	HAVE_INTL_LOCALE_H
#include <intl/locale.h>
#endif
#endif
#include <x_types.h>
#include <x_errno.h>
#include <crptauth.h>
#include <budefs.h>
#ifndef	O_SYNC
# define O_SYNC O_FSYNC
#endif
/* This is shit, but HP-UX is one big shit, so it fits */
#if defined(HPUX_9) && !defined(RLIMIT_STACK)
#define	RLIMIT_STACK	3
#endif

struct fault_msgs {
  Int32		code;
  char		*msg;
};

#define FAULT_MESSAGES  { \
	{ CLOSE_FAILED,		"device cannot be closed" }, \
	{ OPENRD_FAILED,	"opening the device for reading failed" },\
	{ OPENWR_FAILED,	"opening the device for writing failed" },\
	{ DEVINUSE,		"device is in use" },\
	{ SERVICEINUSE,		"service is in use" },\
	{ DEVNOTOPENRD,		"device has not been opened for reading" },\
	{ DEVNOTOPENWR,		"device has not been opened for writing"},\
	{ DEVNOTREADY,		"device is not ready for use" },\
	{ ENDOFFILEREACHED,	"end of file encountered" },\
	{ ENDOFTAPEREACHED,	"end of tape encountered" },\
	{ PROTOCOL_ERROR,	"protocol error" },\
	{ CHANGECART_FAILED,	"cartridge cannot be changed" },\
	{ REQNEWCART_FAILED,	"no free or reusable cartridge available" },\
	{ SETFILE_FAILED,	"setting the file failed" },\
	{ WRITE_FAILED,		"writing to storage media failed" },\
	{ ERASETAPE_FAILED,	"erasing the tape failed" },\
	{ FATAL_ERROR,		"a fatal error occured on the server"},\
	{ CONFIG_ERROR,		"server configuration error"},\
	{ REOPEN_FAILED,	"reopening the device for writing failed" },\
	{ NO_VALID_CARTRIDGE,	"illegal cartridge number" },\
	{ NO_VALID_FILENUM,	"illegal file number" },\
	{ NO_VALID_CARTSET,	"illegal cartridge set" },\
	{ AUTHENTICATION,	"authentication failure" },\
	{ SUBPROCESS_FAILED,	"subprocess failed" },\
	{ NO_GREETING_MESSAGE,	"no greeting message from server" },\
	{ CLIENT_NOT_UNIQUE,	"duplicate client identification" },\
	{ TOO_MANY_CLIENTS,	"maximum number of clients exceeded" },\
	{ MESSAGE_UNRECOGNIZED,	"message not recognized" },\
	{ NO_VALID_COMMBUFSIZ,	"illegal communication buffer size" },\
	{ CARTSET_EACCESS,	"access to cartridge set denied for client" },\
	{ EOF,			"connection closed" },\
}

#define	read_tape	read_forced
#define	write_tape	write_forced

typedef struct __tape_usage__ {
  Int32		tape_num;
  Real64	bytes_on_tape;
  Int32		files_on_tape;
  Flag		tape_full;
  time_t	last_wrtime;
} TapeUsage;

typedef struct __changerdev__ {
  UChar		*changername;
  Int32		num_slots;
  Int32		num_loadports;
  Int32		num_drives;
} ChangerDevice;

typedef struct __streamerdev__ {
  UChar		*devicename;
  Int32		blocksize;
  ChangerDevice	*changer;
  Int32		pos_in_changer;		/* starts with 0 */
  UChar		*changername_ptr;	/* private, usage deprecated */
} StreamerDevice;

#ifdef	_WIN32
#define	ntohs	htons
#endif

extern	Int32	rewrite_tape_label(UChar *, Int32, UChar *, Int32);
extern	UChar	*fault_string(Int32);

extern	int	connect_afbu_server(UChar *, UChar *, Int32, Int32);

extern	Int32	save_bytes_per_tape(UChar *, Int32, Real64, Int32, Flag, time_t);
extern	Int32	get_bytes_per_tape(UChar *, Int32, Real64 *, Int32 *, Flag *, time_t *);
extern	Int32	get_tape_usages(UChar *, TapeUsage **, Int32 *);
extern	Int32	incr_tape_use_count(UChar *, Int32);
extern	Int32	host_in_list(UChar *, UChar *);
extern	Int32	peer_in_list(int, UChar *);
extern	Int32	get_entry_by_host(UChar *, UChar *, UChar **);
extern	Int32	rename_if_exists(UChar *, UChar *);

extern	Int32	devices_from_confstr(UChar *, StreamerDevice **, Int32 *,
			ChangerDevice **, Int32 *);
extern	Int32	devices_from_confstr_msg(UChar *, StreamerDevice **, Int32 *,
			ChangerDevice **, Int32 *, FILE *);
extern	UChar	*devices_from_confstr_strerr(Int32);
extern	void	free_devices_and_changers(StreamerDevice *, Int32,
			ChangerDevice *, Int32);
extern	UChar	*repl_dev_pats(UChar *, UChar *, UChar *);

#ifdef  DEBUG
#ifdef	DEBUGFILE
#define	DB(fmt, arg1, arg2, arg3)	\
			{	FILE *fp; \
				sigset_t sigs, osigs; \
				sigemptyset(&sigs); \
				sigaddset(&sigs, SIGALRM); \
				sigprocmask(SIG_BLOCK, &sigs, &osigs); \
				fp = fopen(DEBUGFILE, "a"); \
				fprintf(fp, fmt, arg1, arg2, arg3); \
				fflush(fp); \
				fclose(fp); \
				sigprocmask(SIG_SETMASK, &osigs, NULL);}
#else
#define	DB(fmt, arg1, arg2, arg3)	fprintf(stderr, fmt, arg1, arg2, arg3)
#endif	/* ifelse defined(DEBUGFILE) */
#else
#define DB(fmt, arg1, arg2, arg3)   /**/
#endif

#endif	/* !defined(BACKUP_H) */