Annotation of embedaddon/hping2/utils/hex2bin.c, revision 1.1

1.1     ! misho       1: /*
        !             2:  * hex2bin - simple hex to bin filter
        !             3:  * antirez@invece.org - under GPL version 2
        !             4:  */
        !             5: 
        !             6: #include <stdio.h>
        !             7: #include <sys/stat.h>
        !             8: #include <sys/types.h>
        !             9: #include <fcntl.h>
        !            10: #include <unistd.h>
        !            11: #include <string.h>
        !            12: 
        !            13: int hex2bin(void)
        !            14: {
        !            15:        char hex[3];
        !            16:        int d = 0;
        !            17:        unsigned char c;
        !            18:        int stdin_fd = fileno(stdin);
        !            19:        int n_read;
        !            20: 
        !            21:        while((n_read = read(stdin_fd, hex, 2)) > 0)
        !            22:        {
        !            23:                if (n_read == 1)
        !            24:                {
        !            25:                        if (hex[0] != '\n')
        !            26:                        {
        !            27:                                fprintf(stderr,
        !            28:                                "input parse error, odd digits in hex file\n");
        !            29:                                exit(1);
        !            30:                        }
        !            31:                        else
        !            32:                                exit(1);
        !            33:                }
        !            34:                hex[2] = '\0';
        !            35:                sscanf(hex, "%x", &d);
        !            36:                c = (unsigned char) d;
        !            37:                printf("%c", c);
        !            38:        }
        !            39:        return 0;
        !            40: }
        !            41: 
        !            42: int bin2hex(void)
        !            43: {
        !            44:        int stdin_fd = fileno(stdin);
        !            45:        int n_read;
        !            46:        unsigned char c;
        !            47: 
        !            48:        while((n_read = read(stdin_fd, &c, 1)) > 0)
        !            49:        {
        !            50:                printf("%.2x", c);
        !            51:        }
        !            52:        return 0;
        !            53: }
        !            54: 
        !            55: int main(int argc, char **argv)
        !            56: {
        !            57:        if (argc >= 2 && strstr(argv[1], "-r"))
        !            58:                bin2hex();
        !            59:        else
        !            60:                hex2bin();
        !            61: 
        !            62:        return 0;
        !            63: }

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