diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2009-10-14 12:17:42 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2009-10-14 12:17:42 +0000 |
commit | 87a04019fb626d90af690e6a9e985951ed9f4673 (patch) | |
tree | 8ce47ee7f81a5d126c59c3dc3204120a059a5f9b /c/src/lib/libbsp/unix/posix/tools | |
parent | 2009-10-14 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-87a04019fb626d90af690e6a9e985951ed9f4673.tar.bz2 |
Remove (Abandoned).
Diffstat (limited to 'c/src/lib/libbsp/unix/posix/tools')
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/.cvsignore | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/ChangeLog | 118 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/Makefile.am | 45 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/configure.ac | 31 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/looptest.in | 93 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/runtest.in | 255 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/semdump.in | 59 | ||||
-rw-r--r-- | c/src/lib/libbsp/unix/posix/tools/shmdump.in | 134 |
8 files changed, 0 insertions, 747 deletions
diff --git a/c/src/lib/libbsp/unix/posix/tools/.cvsignore b/c/src/lib/libbsp/unix/posix/tools/.cvsignore deleted file mode 100644 index 1421df2837..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/.cvsignore +++ /dev/null @@ -1,12 +0,0 @@ -aclocal.m4 -autom4te*.cache -config.cache -config.log -config.status -configure -looptest -Makefile -Makefile.in -runtest -semdump -shmdump diff --git a/c/src/lib/libbsp/unix/posix/tools/ChangeLog b/c/src/lib/libbsp/unix/posix/tools/ChangeLog deleted file mode 100644 index 28e973e73d..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/ChangeLog +++ /dev/null @@ -1,118 +0,0 @@ -2008-03-11 Joel Sherrill <joel.sherrill@oarcorp.com> - - * runtest.in: Skip all fatal error tests. - -2007-09-04 Joel Sherrill <joel.sherrill@OARcorp.com> - - * runtest.in: Add capture to list of interative tests to skip in batch - mode. - -2007-01-26 Ralf Corsépius <ralf.corsepius@rtems.org> - - * Makefile.am: Use MKDIR_P instead of mkdir_p. - -2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org> - - * configure.ac: New BUG-REPORT address. - -2006-10-17 Ralf Corsépius <ralf.corsepius@rtems.org> - - * configure.ac: Require autoconf-2.60. Require automake-1.10. - -2004-09-24 Ralf Corsepius <ralf_corsepius@rtems.org> - - * configure.ac: Require automake > 1.9. - -2004-01-30 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: Add RTEMS_ENV_RTEMSBSP. - -2004-01-14 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Re-add dirstamps to PRE/TMPINSTALL_FILES. - Add PRE/TMPINSTALL_FILES to CLEANFILES. - -2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Reworked. - -2003-12-12 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: Require automake >= 1.8, autoconf >= 2.59. - -2003-12-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Misc cleanups and fixes. - -2003-10-17 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: Use AC_PATH_PROG(PERL,perl) instead of - RTEMS_PATH_PERL. - -2003-08-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Reflect having moved aclocal/. - -2003-08-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Reflect having moved automake/. - -2003-08-14 Joel Sherrill <joel@OARcorp.com> - - * runtest.in: Add fileio to list of interactive tests. - -2003-08-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: Use rtems-bugs@rtems.com as bug report email address. - -2003-03-06 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: Remove AC_CONFIG_AUX_DIR. - -2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: AM_INIT_AUTOMAKE([1.7.2]). - -2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: AC_PREREQ(2.57). - -2002-10-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * .cvsignore: Reformat. - Add autom4te*cache. - Remove autom4te.cache. - -2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * configure.ac: - AC_INIT(package,_RTEMS_VERSION,_RTEMS_BUGS). - AM_INIT_AUTOMAKE([no-define foreign 1.6]). - * Makefile.am: Remove AUTOMAKE_OPTIONS. - -2001-10-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * .cvsignore: Add autom4te.cache for autoconf > 2.52. - * configure.in: Remove. - * configure.ac: New file, generated from configure.in by autoupdate. - -2001-09-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Use 'TMPINSTALL_FILES ='. - -2000-11-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Use ... instead of RTEMS_TOPdir in ACLOCAL_AMFLAGS. - -2000-11-02 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: Switch to ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal. - -2000-10-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de> - - * Makefile.am: ACLOCAL_AMFLAGS= -I $(RTEMS_TOPdir)/macros. - Switch to GNU canonicalization. - -2000-08-10 Joel Sherrill <joel@OARcorp.com> - - * ChangeLog: New file. diff --git a/c/src/lib/libbsp/unix/posix/tools/Makefile.am b/c/src/lib/libbsp/unix/posix/tools/Makefile.am deleted file mode 100644 index 84ff77aa61..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -## -## $Id$ -## - -ACLOCAL_AMFLAGS = -I ../../../../../aclocal - -transform = -bsptools_bindir = ${exec_prefix}/@RTEMS_BSP@/tests -bsptools_bin_SCRIPTS = runtest looptest - -if PERL -bsptools_bin_SCRIPTS += shmdump semdump -endif - -## HACK: install to build-tree -all-local: $(TMPINSTALL_FILES) - -TMPINSTALL_FILES = - -$(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp): - @$(MKDIR_P) $(PROJECT_ROOT)/@RTEMS_BSP@/tests - @: > $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) -TMPINSTALL_FILES += $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) - -$(PROJECT_ROOT)/@RTEMS_BSP@/tests/runtest: runtest $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) - $(INSTALL_SCRIPT) $< $(PROJECT_ROOT)/@RTEMS_BSP@/tests/runtest -TMPINSTALL_FILES += $(PROJECT_ROOT)/@RTEMS_BSP@/tests/runtest - -$(PROJECT_ROOT)/@RTEMS_BSP@/tests/looptest: looptest $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) - $(INSTALL_SCRIPT) $< $(PROJECT_ROOT)/@RTEMS_BSP@/tests/looptest -TMPINSTALL_FILES += $(PROJECT_ROOT)/@RTEMS_BSP@/tests/looptest - -if PERL -$(PROJECT_ROOT)/@RTEMS_BSP@/tests/shmdump: shmdump $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) - $(INSTALL_SCRIPT) $< $(PROJECT_ROOT)/@RTEMS_BSP@/tests/shmdump -TMPINSTALL_FILES += $(PROJECT_ROOT)/@RTEMS_BSP@/tests/shmdump - -$(PROJECT_ROOT)/@RTEMS_BSP@/tests/semdump: semdump $(PROJECT_ROOT)/@RTEMS_BSP@/tests/$(dirstamp) - $(INSTALL_SCRIPT) $< $(PROJECT_ROOT)/@RTEMS_BSP@/tests/semdump -TMPINSTALL_FILES += $(PROJECT_ROOT)/@RTEMS_BSP@/tests/semdump -endif - -CLEANFILES = $(TMPINSTALL_FILES) - -include $(top_srcdir)/../../../../../automake/host.am diff --git a/c/src/lib/libbsp/unix/posix/tools/configure.ac b/c/src/lib/libbsp/unix/posix/tools/configure.ac deleted file mode 100644 index 44659edd6f..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/configure.ac +++ /dev/null @@ -1,31 +0,0 @@ -## Process this file with autoconf to produce a configure script. -## -## $Id$ - -AC_PREREQ(2.60) -AC_INIT([rtems-c-src-lib-libbsp-unix-posix-tools],[_RTEMS_VERSION],[http://www.rtems.org/bugzilla]) -AC_CONFIG_SRCDIR([runtest.in]) -RTEMS_TOP(../../../../../../..) - -RTEMS_CANONICAL_TARGET_CPU - -AM_INIT_AUTOMAKE([no-define foreign 1.10]) -AM_MAINTAINER_MODE - -RTEMS_ENV_RTEMSBSP - -RTEMS_PATH_KSH -AC_PATH_PROG(PERL,perl) - -AM_CONDITIONAL(PERL,test -n "$PERL") - -RTEMS_PROJECT_ROOT -RTEMS_TOOLPATHS - -# Explicitly list all Makefiles here -AC_CONFIG_FILES([Makefile -runtest -shmdump -looptest -semdump]) -AC_OUTPUT diff --git a/c/src/lib/libbsp/unix/posix/tools/looptest.in b/c/src/lib/libbsp/unix/posix/tools/looptest.in deleted file mode 100644 index 0f6965fe2b..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/looptest.in +++ /dev/null @@ -1,93 +0,0 @@ -#!@KSH@ -p -# -# $Id$ -# - -# progname=`basename $0` -progname=${0##*/} # fast basename hack for ksh, bash - -# must be uppercase hex; dc is feeble minded -clicks_per_tick="1" -# default is 0x3 -hexbump=1 -iterations=10 - -USAGE=\ -"usage: $progname [ -opts ] file [ file ... ] - -o options -- specify options to be passed to runtest - -c clicks -- specify (hex) value for clicks / tick (default $clicks_per_tick) - -n iterations -- num times to loop thru specified tests (default $iterations) - -b hexbump -- increment clicks-per-ticks this much each loop (default $hexbump) - -v -- verbose" - -# log an error to stderr -prerr() -{ - echo "$*" >&2 -} - -fatal() { - [ "$1" ] && prerr $* - prerr "$USAGE" - exit 1 -} - -warn() { - [ "$1" ] && prerr $* -} - -# -# process the options -# -# defaults for getopt vars -# - -verbose="" -extra_options="" - -while getopts vo:c:n:b: OPT -do - case "$OPT" in - v) - verbose="yes";; - o) - extra_options="$OPTARG";; - c) - clicks_per_ticks="$OPTARG";; - n) - iterations="$OPTARG";; - b) - hexbump="$OPTARG";; - *) - fatal;; - esac -done -((shiftcount = $OPTIND - 1)) -shift $shiftcount - -args=$* - -# -# Run the tests -# After each run, rename 'log' to log.$clicks_per_tick -# - -tests="$args" - -while [ $iterations -gt 0 ] -do - ./runtest $extra_options -c $clicks_per_tick $tests - rm -rf log.$clicks_per_tick.OLD - [ -d log.$clicks_per_tick ] && mv log.$clicks_per_tick log.$clicks_per_tick.OLD - mv log log.$clicks_per_tick - - ((iterations = $iterations - 1)) - clicks_per_tick=`echo 16 o 16 i $clicks_per_tick $hexbump + p q | dc` -done - -exit 0 - -# Local Variables: *** -# mode:ksh *** -# End: *** - diff --git a/c/src/lib/libbsp/unix/posix/tools/runtest.in b/c/src/lib/libbsp/unix/posix/tools/runtest.in deleted file mode 100644 index 7a5eefa627..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/runtest.in +++ /dev/null @@ -1,255 +0,0 @@ -#!@KSH@ -p -# -# Run rtems tests on a POSIX-ish UNIX -# -# $Id$ -# - -trap "test_exit 1" 1 2 3 13 14 15 - -trap "test_exit 1" 1 2 3 13 14 15 - -# progname=`basename $0` -progname=${0##*/} # fast basename hack for ksh, bash - -USAGE=\ -"usage: $progname [ -opts ] test [ test ... ] - -c clicks -- specify (hex) value for clicks / tick - -v -- verbose - -l logdir -- specify log directory (default is 'logdir') - - Specify test as 'test' or 'test.exe'. - All multiprocessing tests *must* be specified simply as 'mp01', etc. -" - -# export everything -set -a - -# log an error to stderr -prerr() -{ - echo "$*" >&2 -} - -fatal() { - [ "$1" ] && prerr $* - prerr "$USAGE" - exit 1 -} - -warn() { - [ "$1" ] && prerr $* -} - -# print args, 1 per line -ml_echo() -{ - for l - do - echo "$l" - done -} - -killem() -{ - kill -9 $pid $pid1 $pid2 2> /dev/null -} - - -killem() -{ - kill -9 $pid $pid1 $pid2 2> /dev/null -} - - -test_exit() -{ - exit_code=$1 - - killem - - killem - - rm -f ${logfile}.tmp* - - exit $exit_code -} - -# -# process the options -# -# defaults for getopt vars -# - -verbose="" -extra_options="" -clicks_per_tick="" -logdir=log -# how long can we run; rtems tests might run 300 seconds -max_run_time=400 -run_to_completion="yes" - -while getopts vo:c:l: OPT -do - case "$OPT" in - v) - verbose="yes";; - l) - logdir="$OPTARG";; - o) - extra_options="$OPTARG";; - c) - clicks_per_tick="$OPTARG";; - *) - fatal;; - esac -done - -let $((shiftcount = $OPTIND - 1)) -shift $shiftcount - -args=$* - -# -# Run the tests -# - -tests="$args" -if [ ! "$tests" ] -then - set -- `echo *.exe` - tests="$*" -fi - -[ -d $logdir ] || mkdir $logdir || fatal "could not create log directory ($logdir)" - -for tfile in $tests -do - - tname=`echo $tfile | sed -e 's/\.exe$//'` - tname=`basename $tname` - - TEST_TYPE="single" - - case $tname in - capture* | monitor* | termios* | fileio* | pppd*) - if [ $run_to_completion = "yes" ] - then - warn "Skipping $tname; it is interactive" - continue - fi - ;; - *-node2*) - warn "Skipping $tname; 'runtest' runs both nodes when for *-node1" - continue;; - *-node1*) - tname=`echo $tname | sed 's/-node.*//'` - warn "Running both nodes associated with $tname" - TEST_TYPE="mp" - ;; - stackchk*|*fatal*|malloctest*|termio*) - warn "Skipping $tname; it locks up or takes a VERY long time to run" - continue - ;; - esac - - if [ $TEST_TYPE = "mp" ] - then - logfile1=$logdir/${tname}_1 - infofile1=$logfile1.info - logfile2=$logdir/${tname}_2 - infofile2=$logfile2.info - - rm -f ${logfile1} - rm -f ${logfile2} - - date=`date` - echo "Starting $tname at $date" - - ./${tname}-node1.exe > $logfile1 2>&1 & - pid1=$! - ./${tname}-node2.exe > $logfile2 2>&1 & - pid2=$! - - # Wait for both cpu's to complete, ensuring they don't run forever... - time_run=0 - while [ $time_run -lt $max_run_time ] - do - # sleep 5s at a time waiting for jobs to finish or timer to expire - # if job has exited, then we exit, too. - sleep 5 - kill -0 $pid1 2> /dev/null - running1=$? - kill -0 $pid2 2> /dev/null - running2=$? - if [ $running1 -eq 0 ] && [ $running2 -eq 0 ] # both still running - then - time_run=$((time_run + 5)) - if [ $time_run -ge $max_run_time ] - then - echo "$tname ran too long; killing it" - ran_too_long="yes" - fi - else - ran_too_long="no" - # if one is still running, have to kill them - if [ $running1 -ne $running2 ] - then - sleep 10 # give other node a chance to gracefully die - fi - break - fi - done - - # make sure they are gone - kill -9 $pid1 2> /dev/null - kill -9 $pid2 2> /dev/null - fi - - if [ $TEST_TYPE = "single" ] - then - logfile=$logdir/$tname - infofile=$logfile.info - - rm -f ${logfile} - - date=`date` - echo "Starting $tname.exe at $date" - - ./$tname.exe > $logfile 2>&1 & - pid=$! - - # Make sure it won't run forever... - time_run=0 - while [ $time_run -lt $max_run_time ] - do - # sleep 5s at a time waiting for job to finish or timer to expire - # if job has exited, then we exit, too. - sleep 5 - kill -0 $pid 2> /dev/null - running=$? - if [ $running -eq 0 ] - then - time_run=$((time_run + 5)) - if [ $time_run -ge $max_run_time ] - then - kill -9 $pid 2> /dev/null - ran_too_long="yes" - fi - else - ran_too_long="no" - break - fi - done - fi - - pid="" - -done - -test_exit 0 - -# Local Variables: *** -# mode:ksh *** -# End: *** - diff --git a/c/src/lib/libbsp/unix/posix/tools/semdump.in b/c/src/lib/libbsp/unix/posix/tools/semdump.in deleted file mode 100644 index 53710a629e..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/semdump.in +++ /dev/null @@ -1,59 +0,0 @@ -#!@PERL@ -# -# $Id$ -# -eval "exec @PERL@ -S $0 $*" - if $running_under_some_shell; - -# dump semaphore array values tony@divnc.com - -require 'sys/sem.ph'; -require 'getopts.pl'; -&Getopts("vhi:k:"); # verbose, help, id, key - -if ($opt_h || ($opt_i && $opt_k)) -{ - print STDERR <<NO_MORE_HELP; -semdump - - Dump info about specified semaphore. - -Usage: $0 [-v] { -i semid | -k semkey } - - -v -- possibly more verbose - -i semid -- semaphore id - -k semkey -- semaphore key - -h -- help - - anything else == this help message -NO_MORE_HELP - exit 1; -} - -$verbose = $opt_v; -$id = $opt_i; -$key = $opt_k; - -if ($key) -{ - $key = oct($key) if $key =~ /^0/; - die "Could not convert key to id; $!" unless $id = semget($key, 1, 0); -} - -# I don't know to find out how many sem's are attached to the id -# so just keep reading them until we get an error. - -printf("KEY: 0x%X (%d) ", $key, $key) if $key; -print "ID: $id\n"; - -semlist: -for ($semnum=0; $semnum < 10; $semnum++) -{ - $val = semctl($id, $semnum, &GETVAL, 0); - $val || ($val = -1); - - last semlist if ($val == -1); - - printf " %d: %d\n", $semnum, $val; -} - diff --git a/c/src/lib/libbsp/unix/posix/tools/shmdump.in b/c/src/lib/libbsp/unix/posix/tools/shmdump.in deleted file mode 100644 index fa965702ca..0000000000 --- a/c/src/lib/libbsp/unix/posix/tools/shmdump.in +++ /dev/null @@ -1,134 +0,0 @@ -#!@PERL@ -# -# $Id$ -# -eval "exec @PERL@ -S $0 $*" - if $running_under_some_shell; - -# dump shared memory segment tony@divnc.com - -require 'sys/shm.ph'; -require 'getopts.pl'; -&Getopts("vhi:k:f:l:b:w"); # verbose, help, id, key, first, length, word, base - -if ($opt_h || ($opt_i && $opt_k)) -{ - print STDERR <<NO_MORE_HELP; -shmdump - - Dump contents of specifed shared memory segment. - -Usage: $0 [options] - - -h -- help - -v -- possibly more verbose - -i shmid -- shm id - -k shmkey -- shm key - -f first -- start of partial dump - -l length -- length of partial dump - -w -- dump as 4byte words instead of bytes - -b base -- use 'base' as base address for output - - anything else == this help message -NO_MORE_HELP - exit 1; -} - -$verbose = $opt_v; -$id = $opt_i; -$key = $opt_k; -$offset = $opt_f; -$print_length = $opt_l; -$base = $opt_b; -$word_dump = $opt_w; - -if ($key) -{ - # ensure key is an integer - $key = oct($key) if $key =~ /^0/; - die "Could not convert key to id; $!" unless $id = shmget($key, 1, 0); -} - -# ensure integerhood in case of leading '0x' -$base = oct($base) if $base =~ /^0/; -$offset = oct($offset) if $offset =~ /^0/; -$print_length = oct($print_length) if $print_length =~ /^0/; - -if ( ! shmctl($id, &IPC_STAT, $shmid_ds)) -{ - die "shmctl(2) for id $id failed -- (I was trying to get size): $!"; -} - -# Pick the length out. -# It is at byte offset 0x30 on hpux9 and probably hpux10 -# Also get the key if we don't have it already. Don't need it tho... -$length = unpack("I", substr($shmid_ds, 0x30, 4)); -$key = unpack("I", substr($shmid_ds, 0x14, 4)) if ! $key; - -# poke around looking for length and key -# print "I guess: length: $length, key: $key\n"; -# print "****$shmid_ds****\n"; die ""; - -# make sure offset and print length make sense -$print_length = $length if ! $print_length; -if (($offset + $print_length) > $length) -{ - die "offset ($offset) and length ($print_length) go beyond end of segment ($length bytes)"; -} - -printf("KEY: 0x%X (%d) ", $key, $key) if ($key); -printf "ID: $id\n"; -printf " %d bytes (0x%X), %d words, logical base is 0x%X\n", - $length, $length, $length / 4, $base; -if ($offset || ($print_length != $length)) -{ - printf " printing %X (%d) bytes starting at offset 0x%X (%d)\n", - $print_length, $print_length, $offset, $offset; -} -printf "\n"; - -if ( ! shmread($id, $shm_data, $offset, $print_length)) -{ - die "could not attach and read from shmid $id: $!"; -} - -# the dump code below derived from "Real Perl Programs" example "xdump" -# from Camel book - -$base += $offset; -$offset = 0; -for ($len = $print_length; $len >= 16; ) -{ - $data = substr($shm_data, $offset, 16); - - @array = unpack('N4', $data); - $data =~ tr/\0-\37\177-\377/./; - printf "%8.8lX %8.8lX %8.8lX %8.8lX %8.8lX |%s|\n", - $base, @array, $data; - - $offset += 16; - $base += 16; - $len -= 16; -} - -# Now finish up the end a byte at a time - -if ($len) -{ - $data = substr($shm_data, $offset, $len); - @array = unpack('C*', $data); - for (@array) - { - $_ = sprintf('%2.2X', $_); - } - - push(@array, ' ') while $len++ < 16; - - $data =~ tr/\0-\37\177-\377/./; - $data =~ s/[^ -~]/./g; - - printf "%8.8lX ", $base; - printf "%s%s%s%s %s%s%s%s %s%s%s%s %s%s%s%s |%-16s|\n", - @array, $data; -} - |