string.h is ANSI C include file
[unix-history] / usr / src / usr.bin / hexdump / hexdump.c
CommitLineData
a53581a1
KB
1/*
2 * Copyright (c) 1989 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18#ifndef lint
19char copyright[] =
20"@(#) Copyright (c) 1989 The Regents of the University of California.\n\
21 All rights reserved.\n";
22#endif /* not lint */
23
24#ifndef lint
516b864a 25static char sccsid[] = "@(#)hexdump.c 5.4 (Berkeley) %G%";
a53581a1
KB
26#endif /* not lint */
27
28#include <sys/types.h>
29#include <stdio.h>
30#include "hexdump.h"
31
a53581a1 32FS *fshead; /* head of format strings */
a53581a1
KB
33int blocksize; /* data block size */
34int exitval; /* final exit value */
516b864a 35int length = -1; /* max bytes to read */
a53581a1
KB
36
37main(argc, argv)
38 int argc;
39 char **argv;
40{
516b864a 41 extern int errno;
a53581a1 42 register FS *tfs;
a53581a1
KB
43 char *p, *rindex();
44
516b864a
KB
45 if (!(p = rindex(argv[0], 'o')) || strcmp(p, "od"))
46 newsyntax(argc, &argv);
47 else
48 oldsyntax(argc, &argv);
a53581a1
KB
49
50 /* figure out the data block size */
51 for (blocksize = 0, tfs = fshead; tfs; tfs = tfs->nextfs) {
52 tfs->bcnt = size(tfs);
53 if (blocksize < tfs->bcnt)
54 blocksize = tfs->bcnt;
55 }
56 /* rewrite the rules, do syntax checking */
57 for (tfs = fshead; tfs; tfs = tfs->nextfs)
58 rewrite(tfs);
59
60 (void)next(argv);
61 display();
62 exit(exitval);
63}