Annotation of libaitsync/src/tool.c, revision 1.1
1.1 ! misho 1: /*************************************************************************
! 2: * (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
! 3: * by Michael Pounov <misho@openbsd-bg.org>
! 4: *
! 5: * $Author: misho $
! 6: * $Id: defs.h,v 1.1.1.1 2008/11/05 17:02:55 misho Exp $
! 7: *
! 8: *************************************************************************/
! 9: #include "global.h"
! 10: #include "tool.h"
! 11:
! 12:
! 13: /*
! 14: * sync_mksig() Make signature from chunk
! 15: * @id = chunk id
! 16: * @off = file offset
! 17: * @buf = chunk buffer for calculate signature
! 18: * @buflen = buffer length in bytes
! 19: * @sc = Chunk structure for fill
! 20: */
! 21: inline void sync_mksig(int id, off_t off, u_char * __restrict buf, int buflen, sync_chunk_t * __restrict sc)
! 22: {
! 23: MD5_CTX ctx;
! 24:
! 25: MD5_Init(&ctx);
! 26: memset(sc, 0, sizeof(sync_chunk_t));
! 27: sc->sc_magic = DLTSYNC_MAGIC;
! 28: sc->sc_id = id;
! 29: sc->sc_off = off;
! 30: sc->sc_len = buflen;
! 31: sc->sc_roll = crcAdler(buf, buflen);
! 32: MD5_Update(&ctx, buf, buflen);
! 33: MD5_Final(sc->sc_cksum, &ctx);
! 34: }
! 35:
! 36: /*
! 37: * syncWriteNum() Write to handle converted number to bigendian
! 38: * @f = handle
! 39: * @ulNum = number to convert
! 40: * @nNumLen = length of number to bytes
! 41: * return: -1 error, != -1 writed bytes to handle
! 42: */
! 43: inline int syncWriteNum(int f, u_long ulNum, int nNumLen)
! 44: {
! 45: u_char buf[sizeof ulNum];
! 46: register int i;
! 47:
! 48: if (nNumLen < 1 || nNumLen > ULONG_MAX) {
! 49: syncSetErr(-1, "Illegal number len %d\n", nNumLen);
! 50: return -1;
! 51: }
! 52:
! 53: for (i = nNumLen - 1; i; i--) {
! 54: buf[i] = (u_char) ulNum;
! 55: ulNum >>= 8;
! 56: }
! 57:
! 58: return write(f, buf, nNumLen);
! 59: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>