Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/amiga/stand/binpatch KNF
details: https://anonhg.NetBSD.org/src/rev/1c84a4fb94a1
branches: trunk
changeset: 345473:1c84a4fb94a1
user: dholland <dholland%NetBSD.org@localhost>
date: Mon May 30 02:57:32 2016 +0000
description:
KNF
diffstat:
sys/arch/amiga/stand/binpatch/binpatch.c | 373 ++++++++++++++++++------------
1 files changed, 218 insertions(+), 155 deletions(-)
diffs (truncated from 542 to 300 lines):
diff -r 45ce414b941b -r 1c84a4fb94a1 sys/arch/amiga/stand/binpatch/binpatch.c
--- a/sys/arch/amiga/stand/binpatch/binpatch.c Mon May 30 02:41:39 2016 +0000
+++ b/sys/arch/amiga/stand/binpatch/binpatch.c Mon May 30 02:57:32 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: binpatch.c,v 1.13 2016/05/30 02:41:39 dholland Exp $ */
+/* $NetBSD: binpatch.c,v 1.14 2016/05/30 02:57:32 dholland Exp $ */
/* Author: Markus Wild mw%eunet.ch@localhost ??? */
/* Modified: Rob Leland leland%mitre.org@localhost */
@@ -96,13 +96,17 @@
struct exec e;
int c;
u_long addr = 0, offset = 0;
- u_long index = 0;/* Related to offset */
+ /* Related to offset */
+ u_long index = 0;
u_long replace = 0, do_replace = 0;
char *symbol = 0;
- char size = 4; /* default to long */
- char size_opt = 0; /* Flag to say size option was set, used with index */
+ /* default to long */
+ char size = 4;
+ /* Flag to say size option was set, used with index */
+ char size_opt = 0;
char *fname;
- char *pgname = argv[0]; /* Program name */
+ /* Program name */
+ char *pgname = argv[0];
int fd;
int type, off;
u_long lval;
@@ -110,21 +114,23 @@
u_char cval;
- while ((c = getopt (argc, argv, "H:a:bwlr:s:o:")) != -1)
- switch (c)
- {
+ while ((c = getopt (argc, argv, "H:a:bwlr:s:o:")) != -1) {
+ switch (c) {
case 'H':
Usage(argv[0]);
break;
case 'a':
- if (addr || symbol)
+ if (addr || symbol) {
error ("only one address/symbol allowed");
- if (! strncmp (optarg, "0x", 2))
+ }
+ if (!strncmp(optarg, "0x", 2)) {
sscanf (optarg, "%x", &addr);
- else
+ } else {
addr = atoi (optarg);
- if (! addr)
+ }
+ if (!addr) {
error ("invalid address");
+ }
break;
case 'b':
@@ -144,194 +150,228 @@
case 'r':
do_replace = 1;
- if (! strncmp (optarg, "0x", 2))
+ if (!strncmp(optarg, "0x", 2)) {
sscanf (optarg, "%x", &replace);
- else
+ } else {
replace = atoi (optarg);
+ }
break;
case 's':
- if (addr || symbol)
+ if (addr || symbol) {
error ("only one address/symbol allowed");
+ }
symbol = optarg;
break;
case 'o':
- if (offset)
+ if (offset) {
error ("only one offset allowed");
- if (! strncmp (optarg, "0x", 2))
+ }
+ if (! strncmp (optarg, "0x", 2)) {
sscanf (optarg, "%x", &offset);
- else
+ } else {
offset = atoi (optarg);
+ }
break;
- }/* while switch() */
+ }
+ /* end while switch() */
+ }
- if (argc > 1)
- {
- if (addr || symbol)
- {
+ if (argc > 1) {
+ if (addr || symbol) {
argv += optind;
argc -= optind;
- if (argc < 1)
+ if (argc < 1) {
error ("No file to patch.");
+ }
fname = argv[0];
- if ((fd = open (fname, 0)) < 0)
+ if ((fd = open (fname, 0)) < 0) {
error ("Can't open file");
+ }
if (read (fd, &e, sizeof (e)) != sizeof (e)
- || N_BADMAG (e))
+ || N_BADMAG (e)) {
error ("Not a valid executable.");
+ }
/* fake mid, so the N_ macros work on the amiga.. */
e.a_midmag |= 127 << 16;
- if (symbol)
- {
+ if (symbol) {
struct nlist nl[2];
- if (offset == 0)
- {
+
+ if (offset == 0) {
u_long new_do_replace = 0;
- new_do_replace = FindAssign(symbol,&replace);
+ new_do_replace = FindAssign(symbol,
+ &replace);
if (new_do_replace && do_replace)
- error("Cannot use both '=' and '-r' option!");
+ error("Cannot use both '=' "
+ "and '-r' option!");
FindOffset(symbol,&index);
- if (size_opt)
- offset = index*size; /* Treat like an index */
- else
- offset = index; /* Treat index like an offset */
+ if (size_opt) {
+ /* Treat like an index */
+ offset = index*size;
+ } else {
+ /* Treat like an offset */
+ offset = index;
+ }
if (new_do_replace)
do_replace = new_do_replace;
}
nl[0].n_un.n_name = symbol;
nl[1].n_un.n_name = 0;
- if (nlist (fname, nl) != 0)
- {
+ if (nlist (fname, nl) != 0) {
fprintf(stderr,"Symbol is %s ",symbol);
error ("Symbol not found.");
}
addr = nl[0].n_value;
type = nl[0].n_type & N_TYPE;
- }
- else
- {
+ } else {
type = N_UNDF;
- if (addr >= N_TXTADDR(e) && addr < N_DATADDR(e))
+ if (addr >= N_TXTADDR(e) &&
+ addr < N_DATADDR(e)) {
type = N_TEXT;
- else if (addr >= N_DATADDR(e) && addr < N_DATADDR(e) + e.a_data)
+ } else if (addr >= N_DATADDR(e) &&
+ addr < N_DATADDR(e) + e.a_data) {
type = N_DATA;
+ }
}
addr += offset;
- /* if replace-mode, have to reopen the file for writing.
- Can't do that from the beginning, or nlist() will not
- work (at least not under AmigaDOS) */
- if (do_replace)
- {
+ /*
+ * if replace-mode, have to reopen the file
+ * for writing. Can't do that from the
+ * beginning, or nlist() will not work (at
+ * least not under AmigaDOS)
+ */
+ if (do_replace) {
close (fd);
- if ((fd = open (fname, 2)) == -1)
- error ("Can't reopen file for writing.");
+ if ((fd = open (fname, 2)) == -1) {
+ error("Can't reopen file for writing.");
+ }
+ }
+
+ if (type != N_TEXT && type != N_DATA) {
+ error("address/symbol is not in text "
+ "or data section.");
}
- if (type != N_TEXT && type != N_DATA)
- error ("address/symbol is not in text or data section.");
+ if (type == N_TEXT) {
+ off = addr - N_TXTADDR(e) + N_TXTOFF(e);
+ } else {
+ off = addr - N_DATADDR(e) + N_DATOFF(e);
+ }
- if (type == N_TEXT)
- off = addr - N_TXTADDR(e) + N_TXTOFF(e);
- else
- off = addr - N_DATADDR(e) + N_DATOFF(e);
+ if (lseek(fd, off, 0) == -1) {
+ error ("lseek");
+ }
- if (lseek (fd, off, 0) == -1)
- error ("lseek");
-
- /* not beautiful, but works on big and little endian machines */
- switch (size)
- {
+ /*
+ * not beautiful, but works on big and little
+ * endian machines
+ */
+ switch (size) {
case 1:
- if (read (fd, &cval, 1) != 1)
+ if (read(fd, &cval, 1) != 1) {
error ("cread");
+ }
lval = cval;
break;
case 2:
- if (read (fd, &sval, 2) != 2)
+ if (read(fd, &sval, 2) != 2) {
error ("sread");
+ }
lval = sval;
break;
case 4:
- if (read (fd, &lval, 4) != 4)
+ if (read(fd, &lval, 4) != 4) {
error ("lread");
+ }
break;
}/* switch size */
- if (symbol)
- printf ("%s(0x%x): %d (0x%x)\n", symbol, addr, lval, lval);
- else
- printf ("0x%x: %d (0x%x)\n", addr, lval, lval);
+ if (symbol) {
+ printf("%s(0x%x): %d (0x%x)\n", symbol, addr,
+ lval, lval);
+ } else {
+ printf("0x%x: %d (0x%x)\n", addr, lval, lval);
+ }
- if (do_replace)
- {
- if (lseek (fd, off, 0) == -1)
+ if (do_replace) {
+ if (lseek (fd, off, 0) == -1) {
error ("write-lseek");
- switch (size)
- {
+ }
+ switch (size) {
case 1:
cval = replace;
- if (cval != replace)
+ if (cval != replace) {
error ("byte-value overflow.");
- if (write (fd, &cval, 1) != 1)
+ }
+ if (write(fd, &cval, 1) != 1) {
error ("cwrite");
+ }
break;
case 2:
Home |
Main Index |
Thread Index |
Old Index