Module Name: src
Committed By: dholland
Date: Mon May 30 02:57:32 UTC 2016
Modified Files:
src/sys/arch/amiga/stand/binpatch: binpatch.c
Log Message:
KNF
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/amiga/stand/binpatch/binpatch.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amiga/stand/binpatch/binpatch.c
diff -u src/sys/arch/amiga/stand/binpatch/binpatch.c:1.13 src/sys/arch/amiga/stand/binpatch/binpatch.c:1.14
--- src/sys/arch/amiga/stand/binpatch/binpatch.c:1.13 Mon May 30 02:41:39 2016
+++ src/sys/arch/amiga/stand/binpatch/binpatch.c Mon May 30 02:57:32 2016
@@ -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 [email protected] ??? */
/* Modified: Rob Leland [email protected] */
@@ -96,13 +96,17 @@ main(int argc, char *argv[])
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 @@ main(int argc, char *argv[])
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 @@ main(int argc, char *argv[])
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)
+ if (type == N_TEXT) {
off = addr - N_TXTADDR(e) + N_TXTOFF(e);
- else
+ } else {
off = addr - N_DATADDR(e) + N_DATOFF(e);
+ }
- if (lseek (fd, off, 0) == -1)
+ 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 (do_replace)
- {
- if (lseek (fd, off, 0) == -1)
+ 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) {
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:
sval = replace;
- if (sval != replace)
+ if (sval != replace) {
error ("word-value overflow.");
- if (write (fd, &sval, 2) != 2)
+ }
+ if (write(fd, &sval, 2) != 2) {
error ("swrite");
+ }
break;
case 4:
- if (write (fd, &replace, 4) != 4)
+ if (write(fd, &replace, 4) != 4) {
error ("lwrite");
+ }
break;
- }/* switch(size) */
- }/* if (do_replace) */
+ }
+ /* end switch(size) */
+ }
+ /* end if (do_replace) */
close (fd);
- }/* if(addr || symbol ) */
- else
- {
+ } else {
+ /* not (addr || symbol) */
error("Must specify either address or symbol.");
}
- }/* if argc < 1 */
- else
- {
+ } else {
+ /* if argc <= 1 */
Synopsis(pgname);
}
- return(0);
-}/* main () */
+
+ return 0;
+}
+/* end main () */
-void error (char *str)
+void
+error(char *str)
{
fprintf (stderr, "%s\n", str);
exit (1);
}
/* Give user very short help to avoid scrolling screen much */
-static void Synopsis(char *pgname)
+static void
+Synopsis(char *pgname)
{
fprintf(stdout, synusage, pgname, pgname, pgname, pgname, pgname);
}
-static void Usage(char *pgname)
+static void
+Usage(char *pgname)
{
Synopsis(pgname);
fprintf(stdout, desusage);
@@ -339,84 +379,107 @@ static void Usage(char *pgname)
}
-/* FindOffset() - Determine if there is an offset, -or- index
- embedded in the symbol.
- If there is, return it, and truncate symbol to
- exclude the [...].
- Example: If view is declared as short view[10],
- and we want to index the 3rd. element.
- which is offset = (3 -1)*sizeof(short) =4.
- we would use view[4], which becomes view,4.
- The was the code is implemented the [value] is
- treated as a index if-and-only-if a '-b -w -l' option
- was given. Otherwise it is treated like an offset.
- See above documentation in for of help!
-*/
-static void FindOffset(char *symbol,u_long *index)
+/*
+ * FindOffset() - Determine if there is an offset, -or- index
+ * embedded in the symbol.
+ *
+ * If there is, return it, and truncate symbol to exclude the [...].
+ *
+ * Example: If view is declared as short view[10],
+ * and we want to index the 3rd. element.
+ * which is offset = (3 -1)*sizeof(short) =4.
+ * we would use view[4], which becomes view,4.
+ *
+ * The way the code is implemented the [value] is
+ * treated as a index if-and-only-if a '-b -w -l' option
+ * was given. Otherwise it is treated like an offset.
+ * See above documentation in for of help!
+ */
+static void
+FindOffset(char *symbol, u_long *index)
{
- char *sb=strchr(symbol,'['); /* Start of '[', now line must
- contain matching']' */
- char *eb=strchr(symbol,']'); /* End of ']' */
- short sz=strlen(symbol); /* symbol size */
- if (sb)
- {
- if (eb && (eb > sb))
- {
- if ((eb - symbol) == (sz - 1))
- {
- char *sindex; /* Start of index */
+ /* Start of '[', now line must contain matching']' */
+ char *sb = strchr(symbol,'[');
+
+ /* End of ']' */
+ char *eb = strchr(symbol,']');
+
+ /* symbol size */
+ short sz = strlen(symbol);
+
+ if (sb) {
+ if (eb && (eb > sb)) {
+ if ((eb - symbol) == (sz - 1)) {
+ /* Start of index */
+ char *sindex;
u_long newindex = 0;
- /* In the future we could get fancy and parse the
- sindex string for mathmatical expressions like:
- (3 - 1)*2 = 4 from above example,
- ugh forget I mentioned ot :-) !
- */
+
+ /*
+ * In the future we could get fancy
+ * and parse the sindex string for
+ * mathmatical expressions like: (3 -
+ * 1)*2 = 4 from above example, ugh
+ * forget I mentioned ot :-) !
+ */
sindex = sb + 1;
*eb = '\0';
newindex = (u_long)atoi(sindex);
- if (*index == 0)
- {
+ if (*index == 0) {
*index = newindex;
- *sb = '\0'; /* Make _view[3] look like _view */
+ /* Make _view[3] look like _view */
+ *sb = '\0';
+ } else {
+ fprintf(stderr, "Error index can "
+ "only be specified once!\n");
}
- else
- fprintf(stderr,"Error index can only be specified once!\n");
- }
- else
- {
- fprintf(stderr,"Error: Garbage trailing ']'\n");
+ } else {
+ fprintf(stderr, "Error: Garbage "
+ "trailing ']'\n");
}
+ } else {
+ fprintf(stderr, "Error ']' in symbol before '[' !\n");
}
- else
- {
- fprintf(stderr,"Error ']' in symbol before '[' !\n");
- }
- }/* if sb != 0 */
-}/* FindOffset */
+ }
+ /* end if sb != 0 */
+}
+/* end FindOffset */
-/* FindAssign : Scans symbol name for an '=number' strips it off
- of the symbol and proceeds.
-*/
-static u_long FindAssign(char *symbol,u_long *rvalue)
+/*
+ * FindAssign : Scans symbol name for an '=number' strips it off of
+ * the symbol and proceeds.
+ */
+static u_long
+FindAssign(char *symbol, u_long *rvalue)
{
- char *ce = rindex(symbol,'='); /* Assign symbol some number */
- char *cn = ce + 1; /* This should point at some number, no spaces allowed */
- u_long dr = 0; /* flag for do_replace */
-
- if (ce)
- {
- int nscan; /* number of variaables scanned in */
+ /* Assign symbol some number */
+ char *ce = rindex(symbol,'=');
+
+ /* This should point at some number, no spaces allowed */
+ char *cn = ce + 1;
+
+ /* flag for do_replace */
+ u_long dr = 0;
+
+ if (ce) {
+ /* number of variaables scanned in */
+ int nscan;
+
/* get the number to assign to symbol and strip off = */
for (cn=ce + 1; *cn==' '; cn++)
;
- if (! strncmp (cn, "0x", 2))
- nscan = sscanf (cn, "%x",rvalue);
- else
- nscan = sscanf(cn,"%d",rvalue);
- if (nscan != 1)
+ if (!strncmp(cn, "0x", 2)) {
+ nscan = sscanf(cn, "%x", rvalue);
+ } else {
+ nscan = sscanf(cn, "%d", rvalue);
+ }
+ if (nscan != 1) {
error("Invalid value following '='");
+ }
dr = 1;
- *ce = '\0';/* Now were left with just symbol */
- }/* if (ce) */
+ /* Now were left with just symbol */
+ *ce = '\0';
+ }
+ /* end if (ce) */
return(dr);
-}/* FindAssign */
+}
+/* end FindAssign */