summaryrefslogtreecommitdiffstats
path: root/text-utils/parse.c
diff options
context:
space:
mode:
authorSami Kerola2011-02-12 21:55:53 +0100
committerKarel Zak2011-02-21 14:38:23 +0100
commit85bf44b714ab184907eb448eba389218956d6a51 (patch)
treebe829d3b7f32bcc4583712b923d59998e87da8f8 /text-utils/parse.c
parentipcs: really show all resources when -a and -i are combined (diff)
downloadkernel-qcow2-util-linux-85bf44b714ab184907eb448eba389218956d6a51.tar.gz
kernel-qcow2-util-linux-85bf44b714ab184907eb448eba389218956d6a51.tar.xz
kernel-qcow2-util-linux-85bf44b714ab184907eb448eba389218956d6a51.zip
hexdump: new usage(), xalloc and err.h stuff
New usage help screen and print version switch. Also fixes to exit codes, util linux xmalloc replaced emalloc and every error print is using libc error function. [kzak@redhat.com: - minor changes in formatting and coding style] Signed-off-by: Sami Kerola <kerolasa@iki.fi> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'text-utils/parse.c')
-rw-r--r--text-utils/parse.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/text-utils/parse.c b/text-utils/parse.c
index 8164c601c..7168aadb3 100644
--- a/text-utils/parse.c
+++ b/text-utils/parse.c
@@ -43,6 +43,7 @@
#include <string.h>
#include "hexdump.h"
#include "nls.h"
+#include "xalloc.h"
static void escape(char *p1);
static void badcnt(const char *s);
@@ -59,13 +60,11 @@ void addfile(char *name)
int ch;
char buf[2048 + 1];
- if ((fp = fopen(name, "r")) == NULL) {
- (void)fprintf(stderr, _("hexdump: can't read %s.\n"), name);
- exit(1);
- }
+ if ((fp = fopen(name, "r")) == NULL)
+ err(EXIT_FAILURE, _("can't read %s"), name);
while (fgets(buf, sizeof(buf), fp)) {
if ((p = strchr(buf, '\n')) == NULL) {
- (void)fprintf(stderr, _("hexdump: line too long.\n"));
+ warnx(_("line too long"));
while ((ch = getchar()) != '\n' && ch != EOF);
continue;
}
@@ -87,7 +86,7 @@ void add(const char *fmt)
const char *savep;
/* Start new linked list of format units. */
- tfs = emalloc(sizeof(FS));
+ tfs = xmalloc(sizeof(FS));
if (!fshead)
fshead = tfs;
else
@@ -103,7 +102,7 @@ void add(const char *fmt)
break;
/* Allocate a new format unit and link it in. */
- tfu = emalloc(sizeof(FU));
+ tfu = xmalloc(sizeof(FU));
*nextfu = tfu;
nextfu = &tfu->nextfu;
tfu->reps = 1;
@@ -140,8 +139,7 @@ void add(const char *fmt)
for (savep = ++p; *p != '"';)
if (*p++ == 0)
badfmt(fmt);
- if (!(tfu->fmt = malloc(p - savep + 1)))
- nomem();
+ tfu->fmt = xmalloc(p - savep + 1);
(void) strncpy(tfu->fmt, savep, p - savep);
tfu->fmt[p - savep] = '\0';
escape(tfu->fmt);
@@ -221,7 +219,7 @@ void rewrite(FS *fs)
* conversion character gets its own.
*/
for (nconv = 0, fmtp = fu->fmt; *fmtp; nextpr = &pr->nextpr) {
- pr = emalloc(sizeof(PR));
+ pr = xmalloc(sizeof(PR));
if (!fu->nextpr)
fu->nextpr = pr;
else
@@ -388,7 +386,7 @@ isint2: switch(fu->bcnt) {
*/
savech = *p2;
p1[0] = '\0';
- pr->fmt = emalloc(strlen(fmtp) + strlen(cs) + 1);
+ pr->fmt = xmalloc(strlen(fmtp) + strlen(cs) + 1);
(void)strcpy(pr->fmt, fmtp);
(void)strcat(pr->fmt, cs);
*p2 = savech;
@@ -396,11 +394,9 @@ isint2: switch(fu->bcnt) {
fmtp = p2;
/* Only one conversion character if byte count */
- if (!(pr->flags&F_ADDRESS) && fu->bcnt && nconv++) {
- (void)fprintf(stderr,
- _("hexdump: byte count with multiple conversion characters.\n"));
- exit(1);
- }
+ if (!(pr->flags&F_ADDRESS) && fu->bcnt && nconv++)
+ errx(EXIT_FAILURE,
+ _("byte count with multiple conversion characters"));
}
/*
* If format unit byte count not specified, figure it out
@@ -479,26 +475,20 @@ static void escape(char *p1)
static void badcnt(const char *s)
{
- (void)fprintf(stderr,
- _("hexdump: bad byte count for conversion character %s.\n"), s);
- exit(1);
+ errx(EXIT_FAILURE, _("bad byte count for conversion character %s"), s);
}
static void badsfmt(void)
{
- (void)fprintf(stderr,
- _("hexdump: %%s requires a precision or a byte count.\n"));
- exit(1);
+ errx(EXIT_FAILURE, _("%%s requires a precision or a byte count"));
}
static void badfmt(const char *fmt)
{
- (void)fprintf(stderr, _("hexdump: bad format {%s}\n"), fmt);
- exit(1);
+ errx(EXIT_FAILURE, _("bad format {%s}"), fmt);
}
static void badconv(const char *ch)
{
- (void)fprintf(stderr, _("hexdump: bad conversion character %%%s.\n"), ch);
- exit(1);
+ errx(EXIT_FAILURE, _("bad conversion character %%%s"), ch);
}