⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backup.h

📁 一套客户/服务器模式的备份系统代码,跨平台,支持linux,AIX, IRIX, FreeBSD, Digital Unix (OSF1), Solaris and HP-UX.
💻 H
字号:
/****************** Start of $RCSfile: backup.h,v $  ****************** $Source: /home/alb/afbackup/afbackup-3.3.8.1/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#endifstruct 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_forcedtypedef 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#endifextern	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) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -