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>