+++ /dev/null
-/*****************************************************************************\
-* *
-* Name : dump_bytes *
-* Author : Chris Koeritz *
-* *
-* Purpose: *
-* *
-* Prints the files specified out in terms of their hex bytes. *
-* *
-*******************************************************************************
-* Copyright (c) 1991-$now By Author. This program is free software; you can *
-* redistribute it and/or modify it under the terms of the GNU General Public *
-* License as published by the Free Software Foundation; either version 2 of *
-* the License or (at your option) any later version. This is online at: *
-* http://www.fsf.org/copyleft/gpl.html *
-* Please send any updates to: fred@gruntose.com *
-\*****************************************************************************/
-
-#include <application/hoople_main.h>
-#include <basis/astring.h>
-#include <filesystem/byte_filer.h>
-#include <loggers/console_logger.h>
-#include <structures/static_memory_gremlin.h>
-#include <textual/byte_formatter.h>
-
-using namespace application;
-using namespace basis;
-using namespace loggers;
-using namespace filesystem;
-using namespace structures;
-using namespace textual;
-
-///HOOPLE_STARTUP_CODE;
-
-const int MAXIMUM_BYTEDUMP_BUFFER_SIZE = 32768;
- // this is the size of the chunk we read from the files at a time. it is
- // important to make this a multiple of 16, since that's the size of the line
- // we use in the byte dumping.
-
-#define console program_wide_logger::get()
-
-int print_instructions_and_exit(char *program_name)
-{
- console.log(astring(astring::SPRINTF, "\n\
-Usage:\n\t%s filename [filename]\n\n\
-Prints out (on standard output) a abyte dump of the files specified.\n\n",
- program_name), ALWAYS_PRINT);
- return 12;
-}
-
-int main(int argc, char *argv[])
-{
- SETUP_CONSOLE_LOGGER;
-
- if (argc <= 1) return print_instructions_and_exit(argv[0]);
- else {
- int current_parameter = 0;
-/*
- if (argv[1][0] == '-') {
- if (argv[1][1] == 't') {
- current_parameter++;
- open_file_as_text = true;
- } else if (argv[1][1] == 'b') {
- current_parameter++;
- open_file_as_text = false;
- } else print_instructions_and_exit(argv[0]);
- }
-*/
- bool past_first_file = false;
- while (++current_parameter < argc) {
- if (past_first_file) {
- // we're into the second file so start using some white space.
- console.log(astring::empty_string(), ALWAYS_PRINT);
- console.log(astring::empty_string(), ALWAYS_PRINT);
- }
- past_first_file = true; // set condition for next time.
- astring name = argv[current_parameter];
- byte_filer current(name, "rb");
- if (!current.good()) {
- console.log(astring("Cannot find the file named \"") + name + astring("\"."),
- ALWAYS_PRINT);
- continue;
- }
- abyte buff[MAXIMUM_BYTEDUMP_BUFFER_SIZE + 10];
- // buffer plus some extra room.
- bool printed_header = false;
- int current_label = 0;
- while (true) {
- int bytes_read = current.read(buff, MAXIMUM_BYTEDUMP_BUFFER_SIZE);
- if (bytes_read <= 0) break; // no contents.
-//console.log(astring(astring::SPRINTF, "read %d bytes", bytes_read));
- if (!printed_header) {
- console.log(name + ":", ALWAYS_PRINT);
- console.log(astring::empty_string(), ALWAYS_PRINT); // blank line.
- printed_header = true;
- }
- astring to_log = byte_formatter::text_dump(buff, bytes_read,
- current_label);
- if (to_log[to_log.end()] == '\n')
- to_log.zap(to_log.end(), to_log.end());
- console.log(to_log, ALWAYS_PRINT);
- current_label += bytes_read;
- }
- }
- }
- return 0;
-}
-