xref: /openbsd/usr.bin/hexdump/hexdump.h (revision 78b63d65)
1 /* *	$OpenBSD: hexdump.h,v 1.3 2001/09/30 07:17:03 pvalchev Exp $*/
2 /*
3  * Copyright (c) 1989 The Regents of the University of California.
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. All advertising materials mentioning features or use of this software
15  *    must display the following acknowledgement:
16  *	This product includes software developed by the University of
17  *	California, Berkeley and its contributors.
18  * 4. Neither the name of the University nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  *	from: @(#)hexdump.h	5.4 (Berkeley) 6/1/90
35  */
36 
37 typedef struct _pr {
38 	struct _pr *nextpr;		/* next print unit */
39 #define	F_ADDRESS	0x001		/* print offset */
40 #define	F_BPAD		0x002		/* blank pad */
41 #define	F_C		0x004		/* %_c */
42 #define	F_CHAR		0x008		/* %c */
43 #define	F_DBL		0x010		/* %[EefGf] */
44 #define	F_INT		0x020		/* %[di] */
45 #define	F_P		0x040		/* %_p */
46 #define	F_STR		0x080		/* %s */
47 #define	F_U		0x100		/* %_u */
48 #define	F_UINT		0x200		/* %[ouXx] */
49 #define	F_TEXT		0x400		/* no conversions */
50 	u_int flags;			/* flag values */
51 	int bcnt;			/* byte count */
52 	char *cchar;			/* conversion character */
53 	char *fmt;			/* printf format */
54 	char *nospace;			/* no whitespace version */
55 } PR;
56 
57 typedef struct _fu {
58 	struct _fu *nextfu;		/* next format unit */
59 	struct _pr *nextpr;		/* next print unit */
60 #define	F_IGNORE	0x01		/* %_A */
61 #define	F_SETREP	0x02		/* rep count set, not default */
62 	u_int flags;			/* flag values */
63 	int reps;			/* repetition count */
64 	int bcnt;			/* byte count */
65 	char *fmt;			/* format string */
66 } FU;
67 
68 typedef struct _fs {			/* format strings */
69 	struct _fs *nextfs;		/* linked list of format strings */
70 	struct _fu *nextfu;		/* linked list of format units */
71 	int bcnt;
72 } FS;
73 
74 extern FS *fshead;			/* head of format strings list */
75 extern int blocksize;			/* data block size */
76 enum _vflag { ALL, DUP, FIRST, WAIT };	/* -v values */
77 char *emalloc();
78 
79 void	bpad __P((PR *));
80 void	conv_c __P((PR *, u_char *));
81 void	conv_u __P((PR *, u_char *));
82 int	next __P((char **));
83 void	doskip __P((char *, int));
84 void	nomem __P((void));
85 void	odoffset __P((int, char ***));
86 void	newsyntax __P((int, char ***));
87 void	oldsyntax __P((int, char ***));
88 int	size __P((FS *));
89 void	rewrite __P((FS *));
90 void	display __P((void));
91 void	badcnt __P((char *));
92 void	add __P((char *));
93 void	addfile __P((char *));
94 void	badcnt __P((char *));
95 void	badconv __P((char *));
96 void	badfmt __P((char *));
97 void	badsfmt __P((void));
98 void	escape __P((char *));
99 void	usage __P((void));
100