mirror of
https://github.com/scummvm/scummvm-tools.git
synced 2026-05-21 05:40:44 +00:00
130 lines
2.8 KiB
C++
130 lines
2.8 KiB
C++
/* ScummVM Tools
|
|
*
|
|
* ScummVM Tools is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* Additionally this file is based on the ScummVM source code.
|
|
* Copyright information for the ScummVM source code is
|
|
* available in the COPYRIGHT file of the ScummVM source
|
|
* distribution.
|
|
*
|
|
* 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 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#include "common/util.h"
|
|
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
void error(const char *s, ...) {
|
|
char buf[1024];
|
|
va_list va;
|
|
|
|
va_start(va, s);
|
|
vsnprintf(buf, 1024, s, va);
|
|
va_end(va);
|
|
|
|
fprintf(stderr, "ERROR: %s!\n", buf);
|
|
|
|
exit(1);
|
|
}
|
|
|
|
void warning(const char *s, ...) {
|
|
char buf[1024];
|
|
va_list va;
|
|
|
|
va_start(va, s);
|
|
vsnprintf(buf, 1024, s, va);
|
|
va_end(va);
|
|
|
|
fprintf(stderr, "WARNING: %s!\n", buf);
|
|
}
|
|
|
|
void debug(int /*level*/, const char *s, ...) {
|
|
char buf[1024];
|
|
va_list va;
|
|
|
|
va_start(va, s);
|
|
vsnprintf(buf, 1024, s, va);
|
|
va_end(va);
|
|
|
|
fprintf(stderr, "DEBUG: %s!\n", buf);
|
|
}
|
|
|
|
void notice(const char *s, ...) {
|
|
char buf[1024];
|
|
va_list va;
|
|
|
|
va_start(va, s);
|
|
vsnprintf(buf, 1024, s, va);
|
|
va_end(va);
|
|
|
|
fprintf(stdout, "%s\n", buf);
|
|
}
|
|
|
|
//
|
|
// Print hexdump of the data passed in
|
|
//
|
|
void hexdump(const byte *data, int len, int bytesPerLine, int startOffset) {
|
|
assert(1 <= bytesPerLine && bytesPerLine <= 32);
|
|
int i;
|
|
byte c;
|
|
int offset = startOffset;
|
|
while (len >= bytesPerLine) {
|
|
printf("%06x: ", offset);
|
|
for (i = 0; i < bytesPerLine; i++) {
|
|
printf("%02x ", data[i]);
|
|
if (i % 4 == 3)
|
|
printf(" ");
|
|
}
|
|
printf(" |");
|
|
for (i = 0; i < bytesPerLine; i++) {
|
|
c = data[i];
|
|
if (c < 32 || c >= 127)
|
|
c = '.';
|
|
printf("%c", c);
|
|
}
|
|
printf("|\n");
|
|
data += bytesPerLine;
|
|
len -= bytesPerLine;
|
|
offset += bytesPerLine;
|
|
}
|
|
|
|
if (len <= 0)
|
|
return;
|
|
|
|
printf("%06x: ", offset);
|
|
for (i = 0; i < bytesPerLine; i++) {
|
|
if (i < len)
|
|
printf("%02x ", data[i]);
|
|
else
|
|
printf(" ");
|
|
if (i % 4 == 3)
|
|
printf(" ");
|
|
}
|
|
printf(" |");
|
|
for (i = 0; i < len; i++) {
|
|
c = data[i];
|
|
if (c < 32 || c >= 127)
|
|
c = '.';
|
|
printf("%c", c);
|
|
}
|
|
for (; i < bytesPerLine; i++)
|
|
printf(" ");
|
|
printf("|\n");
|
|
}
|