Annotation of embedaddon/ipsec-tools/src/racoon/misc.c, revision 1.1

1.1     ! misho       1: /*     $NetBSD: misc.c,v 1.6 2008/07/15 00:47:09 mgrooms Exp $ */
        !             2: 
        !             3: /*     $KAME: misc.c,v 1.23 2001/08/16 14:37:29 itojun Exp $   */
        !             4: 
        !             5: /*
        !             6:  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
        !             7:  * All rights reserved.
        !             8:  * 
        !             9:  * Redistribution and use in source and binary forms, with or without
        !            10:  * modification, are permitted provided that the following conditions
        !            11:  * are met:
        !            12:  * 1. Redistributions of source code must retain the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer.
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  * 3. Neither the name of the project nor the names of its contributors
        !            18:  *    may be used to endorse or promote products derived from this software
        !            19:  *    without specific prior written permission.
        !            20:  * 
        !            21:  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
        !            22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
        !            25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            31:  * SUCH DAMAGE.
        !            32:  */
        !            33: 
        !            34: #include "config.h"
        !            35: 
        !            36: #include <sys/types.h>
        !            37: #include <sys/param.h>
        !            38: #include <sys/stat.h>
        !            39: #include <sys/time.h>
        !            40: 
        !            41: #include <stdlib.h>
        !            42: #include <stdio.h>
        !            43: #include <string.h>
        !            44: #include <errno.h>
        !            45: #include <syslog.h>
        !            46: #include <ctype.h>
        !            47: #include <fcntl.h>
        !            48: 
        !            49: #include "var.h"
        !            50: #include "misc.h"
        !            51: #include "debug.h"
        !            52: 
        !            53: #if 0
        !            54: static int bindump __P((void *, size_t));
        !            55: 
        !            56: static int
        !            57: bindump(buf0, len)
        !            58:         void *buf0;
        !            59:         size_t len;
        !            60: {
        !            61:        unsigned char *buf = (unsigned char *)buf0;
        !            62:        size_t i;
        !            63: 
        !            64:        for (i = 0; i < len; i++) {
        !            65:                if ((buf[i] & 0x80) || !isprint(buf[i]))
        !            66:                        printf("\\x%x", buf[i]);
        !            67:                else
        !            68:                        printf("%c", buf[i]);
        !            69:        }
        !            70:        printf("\n");
        !            71: 
        !            72:        return 0;
        !            73: }
        !            74: #endif
        !            75: 
        !            76: int
        !            77: racoon_hexdump(buf0, len)
        !            78:        void *buf0;
        !            79:        size_t len;
        !            80: {
        !            81:        caddr_t buf = (caddr_t)buf0;
        !            82:        size_t i;
        !            83: 
        !            84:        for (i = 0; i < len; i++) {
        !            85:                if (i != 0 && i % 32 == 0)
        !            86:                        printf("\n");
        !            87:                if (i % 4 == 0)
        !            88:                        printf(" ");
        !            89:                printf("%02x", (unsigned char)buf[i]);
        !            90:        }
        !            91:        printf("\n");
        !            92: 
        !            93:        return 0;
        !            94: }
        !            95: 
        !            96: char *
        !            97: bit2str(n, bl)
        !            98:        int n, bl;
        !            99: {
        !           100: #define MAXBITLEN 128
        !           101:        static char b[MAXBITLEN + 1];
        !           102:        int i;
        !           103: 
        !           104:        if (bl > MAXBITLEN)
        !           105:                return "Failed to convert.";    /* NG */
        !           106:        memset(b, '0', bl);
        !           107:        b[bl] = '\0';
        !           108: 
        !           109:        for (i = 0; i < bl; i++) {
        !           110:                if (n & (1 << i))
        !           111:                        b[bl - 1 - i] = '1';
        !           112:        }
        !           113: 
        !           114:        return b;
        !           115: }
        !           116: 
        !           117: const char *
        !           118: debug_location(file, line, func)
        !           119:        const char *file;
        !           120:        int line;
        !           121:        const char *func;
        !           122: {
        !           123:        static char buf[1024];
        !           124:        const char *p;
        !           125: 
        !           126:        /* truncate pathname */
        !           127:        p = strrchr(file, '/');
        !           128:        if (p)
        !           129:                p++;
        !           130:        else
        !           131:                p = file;
        !           132: 
        !           133:        if (func)
        !           134:                snprintf(buf, sizeof(buf), "%s:%d:%s()", p, line, func);
        !           135:        else
        !           136:                snprintf(buf, sizeof(buf), "%s:%d", p, line);
        !           137: 
        !           138:        return buf;
        !           139: }
        !           140: 
        !           141: /*
        !           142:  * get file size.
        !           143:  * -1: error occured.
        !           144:  */
        !           145: int
        !           146: getfsize(path)
        !           147:        char *path;
        !           148: {
        !           149:         struct stat st;
        !           150: 
        !           151:         if (stat(path, &st) != 0)
        !           152:                 return -1;
        !           153:         else
        !           154:                 return st.st_size;
        !           155: }
        !           156: 
        !           157: /*
        !           158:  * set the close-on-exec flag for file descriptor fd.
        !           159:  */
        !           160: void
        !           161: close_on_exec(fd)
        !           162:        int fd;
        !           163: {
        !           164:        fcntl(fd, F_SETFD, FD_CLOEXEC);
        !           165: }
        !           166: 
        !           167: /*
        !           168:  * calculate the difference between two times.
        !           169:  * t1: start
        !           170:  * t2: end
        !           171:  */
        !           172: double
        !           173: timedelta(t1, t2)
        !           174:        struct timeval *t1, *t2;
        !           175: {
        !           176:        if (t2->tv_usec >= t1->tv_usec)
        !           177:                return t2->tv_sec - t1->tv_sec +
        !           178:                        (double)(t2->tv_usec - t1->tv_usec) / 1000000;
        !           179: 
        !           180:        return t2->tv_sec - t1->tv_sec - 1 +
        !           181:                (double)(1000000 + t2->tv_usec - t1->tv_usec) / 1000000;
        !           182: }

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