Changeset 1765 in MondoRescue for branches/2.2.5/mindi-busybox/libbb/dump.c


Ignore:
Timestamp:
Nov 4, 2007, 3:16:40 AM (16 years ago)
Author:
Bruno Cornec
Message:

Update to busybox 1.7.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.5/mindi-busybox/libbb/dump.c

    r821 r1765  
     1/* vi: set sw=4 ts=4: */
    12/*
    23 * Support code for the hexdump and od applets,
     
    1213
    1314#include "libbb.h"
    14 #include <string.h>
    15 #include <unistd.h>
    16 #include <ctype.h>      /* for isdigit() */
    1715#include "dump.h"
    1816
     
    2927int bb_dump_length = -1;        /* max bytes to read */
    3028
    31 static const char index_str[] = ".#-+ 0123456789";
    32 
    33 static const char size_conv_str[] =
     29static const char index_str[] ALIGN1 = ".#-+ 0123456789";
     30
     31static const char size_conv_str[] ALIGN1 =
    3432"\x1\x4\x4\x4\x4\x4\x4\x8\x8\x8\x8\010cdiouxXeEfgG";
    3533
    36 static const char lcc[] = "diouxX";
     34static const char lcc[] ALIGN1 = "diouxX";
    3735
    3836int bb_dump_size(FS * fs)
    3937{
    40     register FU *fu;
    41     register int bcnt, cur_size;
    42     register char *fmt;
     38    FU *fu;
     39    int bcnt, cur_size;
     40    char *fmt;
    4341    const char *p;
    4442    int prec;
     
    7775        cur_size += bcnt * fu->reps;
    7876    }
    79     return (cur_size);
     77    return cur_size;
    8078}
    8179
     
    156154                /* Unlike the original, output the remainder of the format string. */
    157155                if (!*byte_count_str) {
    158                     bb_error_msg_and_die("bad byte count for conversion character %s.", p1);
     156                    bb_error_msg_and_die("bad byte count for conversion character %s", p1);
    159157                }
    160158                pr->bcnt = *byte_count_str;
     
    189187                    pr->bcnt = prec;
    190188                } else {    /* NOTOKAY */
    191                     bb_error_msg_and_die("%%s requires a precision or a byte count.");
     189                    bb_error_msg_and_die("%%s requires a precision or a byte count");
    192190                }
    193191            } else if (*p1 == '_') {
     
    223221            } else {
    224222            DO_BAD_CONV_CHAR:
    225                 bb_error_msg_and_die("bad conversion character %%%s.\n", p1);
     223                bb_error_msg_and_die("bad conversion character %%%s", p1);
    226224            }
    227225
     
    232230            savech = *p2;
    233231            p1[1] = '\0';
    234             pr->fmt = bb_xstrdup(fmtp);
     232            pr->fmt = xstrdup(fmtp);
    235233            *p2 = savech;
    236234            pr->cchar = pr->fmt + (p1 - fmtp);
     
    256254            /* only one conversion character if byte count */
    257255            if (!(pr->flags & F_ADDRESS) && fu->bcnt && nconv++) {
    258                 bb_error_msg_and_die("byte count with multiple conversion characters.\n");
     256                bb_error_msg_and_die("byte count with multiple conversion characters");
    259257            }
    260258        }
     
    294292}
    295293
    296 static void do_skip(char *fname, int statok)
     294static void do_skip(const char *fname, int statok)
    297295{
    298296    struct stat sbuf;
     
    320318static int next(char **argv)
    321319{
    322     static int done;
     320    static smallint done;
     321
    323322    int statok;
    324323
    325324    if (argv) {
    326325        _argv = argv;
    327         return (1);
     326        return 1;
    328327    }
    329328    for (;;) {
     
    335334                continue;
    336335            }
    337             statok = done = 1;
     336            done = statok = 1;
    338337        } else {
    339             if (done++)
    340                 return (0);
     338            if (done)
     339                return 0;
     340            done = 1;
    341341            statok = 0;
    342342        }
     
    346346            ++_argv;
    347347        if (!bb_dump_skip)
    348             return (1);
     348            return 1;
    349349    }
    350350    /* NOTREACHED */
     
    353353static unsigned char *get(void)
    354354{
    355     static int ateof = 1;
    356     static unsigned char *curp=NULL, *savp; /*DBU:[dave@cray.com]initialize curp */
    357     register int n;
     355    static smallint ateof = 1;
     356    static unsigned char *curp = NULL, *savp; /*DBU:[dave@cray.com]initialize curp */
     357
     358    int n;
    358359    int need, nread;
    359360    unsigned char *tmpp;
     
    361362    if (!curp) {
    362363        address = (off_t)0; /*DBU:[dave@cray.com] initialize,initialize..*/
    363         curp = (unsigned char *) xmalloc(bb_dump_blocksize);
    364         savp = (unsigned char *) xmalloc(bb_dump_blocksize);
     364        curp = xmalloc(bb_dump_blocksize);
     365        savp = xmalloc(bb_dump_blocksize);
    365366    } else {
    366367        tmpp = curp;
     
    377378        if (!bb_dump_length || (ateof && !next((char **) NULL))) {
    378379            if (need == bb_dump_blocksize) {
    379                 return ((unsigned char *) NULL);
     380                return NULL;
    380381            }
    381382            if (bb_dump_vflag != ALL && !memcmp(curp, savp, nread)) {
    382383                if (bb_dump_vflag != DUP) {
    383                     printf("*\n");
    384                 }
    385                 return ((unsigned char *) NULL);
     384                    puts("*");
     385                }
     386                return NULL;
    386387            }
    387388            memset((char *) curp + nread, 0, need);
    388389            eaddress = address + nread;
    389             return (curp);
     390            return curp;
    390391        }
    391392        n = fread((char *) curp + nread, sizeof(unsigned char),
     
    402403            bb_dump_length -= n;
    403404        }
    404         if (!(need -= n)) {
     405        need -= n;
     406        if (!need) {
    405407            if (bb_dump_vflag == ALL || bb_dump_vflag == FIRST
    406408                || memcmp(curp, savp, bb_dump_blocksize)) {
     
    408410                    bb_dump_vflag = WAIT;
    409411                }
    410                 return (curp);
     412                return curp;
    411413            }
    412414            if (bb_dump_vflag == WAIT) {
    413                 printf("*\n");
     415                puts("*");
    414416            }
    415417            bb_dump_vflag = DUP;
     
    439441}
    440442
    441 static const char conv_str[] =
     443static const char conv_str[] ALIGN1 =
    442444    "\0\\0\0"
    443445    "\007\\a\0"             /* \a */
     
    448450    "\t\\t\0"
    449451    "\v\\v\0"
    450     "\0";
     452    ;
    451453
    452454
     
    478480static void conv_u(PR * pr, unsigned char * p)
    479481{
    480     static const char list[] =
     482    static const char list[] ALIGN1 =
    481483        "nul\0soh\0stx\0etx\0eot\0enq\0ack\0bel\0"
    482484        "bs\0_ht\0_lf\0_vt\0_ff\0_cr\0_so\0_si\0_"
     
    503505{
    504506/*  extern FU *endfu; */
    505     register FS *fs;
    506     register FU *fu;
    507     register PR *pr;
    508     register int cnt;
    509     register unsigned char *bp;
     507    FS *fs;
     508    FU *fu;
     509    PR *pr;
     510    int cnt;
     511    unsigned char *bp;
    510512
    511513    off_t saveaddress;
     
    651653int bb_dump_dump(char **argv)
    652654{
    653     register FS *tfs;
     655    FS *tfs;
    654656
    655657    /* figure out the data block bb_dump_size */
     
    668670    display();
    669671
    670     return (exitval);
     672    return exitval;
    671673}
    672674
     
    727729        /* byte count */
    728730        if (isdigit(*p)) {
    729             for (savep = p; isdigit(*p); ++p);
     731// TODO: use bb_strtou
     732            savep = p;
     733            do p++; while (isdigit(*p));
    730734            if (!isspace(*p)) {
    731735                bb_error_msg_and_die("bad format {%s}", fmt);
Note: See TracChangeset for help on using the changeset viewer.