File:  [ELWIX - Embedded LightWeight unIX -] / libaitsync / inc / aitsync.h
Revision 1.1.1.1.2.2: download - view: text, annotated - select for diffs - revision graph
Tue Jul 13 15:04:43 2010 UTC (14 years, 11 months ago) by misho
Branches: sync1_0
Diff to: branchpoint 1.1.1.1: preferred, unified
added new functions for work with dirs

/*************************************************************************
* (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
*  by Michael Pounov <misho@openbsd-bg.org>
*
* $Author: misho $
* $Id: aitsync.h,v 1.1.1.1.2.2 2010/07/13 15:04:43 misho Exp $
*
*************************************************************************/
#ifndef __AITSYNC_H
#define __AITSYNC_H


#include <sys/types.h>
#include <openssl/md5.h>


#define CHUNK_MAX	2048
#define DLTSYNC_MAGIC	0xD34DC0D3
#define SIGSYNC_MAGIC	0xDEADBEEF

#ifndef STRSIZ
#define STRSIZ		256
#endif


typedef struct tagSyncChunk {
	u_int sc_magic;
	u_long sc_id;
	off_t sc_off;
	size_t sc_len;
	u_int sc_roll;
	u_char sc_cksum[MD5_DIGEST_LENGTH];
} sync_chunk_t;


struct tagDirName {
	u_char	ch;
	u_short tag;
	u_int	hash;
	char	name[MAXPATHLEN];
	char	extra[STRSIZ];
};


// -------------------------------------------------------
// sync_GetErrno() Get error code of last operation
inline int sync_GetErrno();
// sync_GetError() Get error text of last operation
inline const char *sync_GetError();
// -------------------------------------------------------

/*
 * syncSignature() Calculate and create signature for diff
 * @csInput = Input patched file name for calculating check sums
 * @csSig = Output Signature file name
 * @compress = 2 compress signatures output, 0 not compressed
 * return: -1 error, 0 ok
 */
int syncSignature(const char *csInput, const char *csSig, int compress);

/*
 * syncDelta() Create Delta patch file
 * @csInput = Input original source file name for make delta patch file
 * @csSig = Input Signature file name
 * @csDelta = Output Delta patch file name
 * @compress = 3 everything compress, 2 compressed signatures, 1 compress delta output, 0 not compressed
 * return: -1 error, 0 ok, create delta patch, 1 ok, no differences and not create patch
 */
int syncDelta(const char *csInput, const char *csSig, const char *csDelta, int compress);

/*
 * syncPatch() Apply delta patch file to target
 * @csInput = Input target file name for patch
 * @csDelta = Input Delta patch file name
 * @csPatch = After applied patch create new alternate target file, if != NULL
 * @compress = 1 compress delta input, 0 not compressed
 * return: -1 error, 0 ok, create delta patch, 1 ok, no differences and not create patch
 */
int syncPatch(const char *csInput, const char *csDelta, const char *csPatch, int compress);


/*
 * sync_dircmp() Compare directories
 * @csDir1 = Directory 1
 * @csDir2 = Directory 2
 * return: -1 error, 0 is equal or 1 different
 */
int sync_dircmp(const char *csDir1, const char *csDir2);
/*
 * sync_dirCSum() Calculate checksum of directory
 * @csDir = Directory
 * @md = Message digest allocated memory, must be free after use!
 * return: -1 error or !=-1 ok
 */
int sync_dirCSum(const char *csDir, u_char **md);
/*
 * sync_dircmpList() Compare directories or directory and file list
 * @csDir1 = Directory 1
 * @csDir2 = Directory 2 or File list, if "-" get input from console
 * @lm = Long mode options, 1 long output
 * @list = Output diff list, after use must be free!
 * return: -1 error, 0 is equal or >0 count of returned list items
 */
int sync_dircmpList(const char *csDir1, const char *csDir2, int lm, struct tagDirName **list);


#endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>