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 m...@eunet.ch ??? */ /* Modified: Rob Leland lel...@mitre.org */ @@ -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 */