summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-03-27 14:35:29 -0400
committerFreya Murphy <freya@freyacat.org>2025-03-27 14:38:43 -0400
commit6ece4e20acd943b49b05a36f14594ad7413c1897 (patch)
tree44ccdad86bdc4f1dabd5670f5c096046581c38b7 /util
parentmove user to 0x30000, update kernel.ld (diff)
downloadcomus-6ece4e20acd943b49b05a36f14594ad7413c1897.tar.gz
comus-6ece4e20acd943b49b05a36f14594ad7413c1897.tar.bz2
comus-6ece4e20acd943b49b05a36f14594ad7413c1897.zip
remove trailing whitespace
Diffstat (limited to 'util')
-rw-r--r--util/BuildImage.c33
-rw-r--r--util/listblob.c25
-rw-r--r--util/mkblob.c24
3 files changed, 24 insertions, 58 deletions
diff --git a/util/BuildImage.c b/util/BuildImage.c
index 42430ce..f8e35f0 100644
--- a/util/BuildImage.c
+++ b/util/BuildImage.c
@@ -29,7 +29,6 @@
#define DRIVE_USB 0x80
#define SECT_SIZE 512
-
char *progname; /* invocation name of this program */
char *bootstrap_filename; /* path of file holding bootstrap program */
char *output_filename; /* path of disk image file */
@@ -45,9 +44,7 @@ short drive = DRIVE_USB; /* boot drive */
** device) are the only limiting factors on how many program sections
** can be loaded.
*/
-
#define N_INFO (SECT_SIZE / sizeof(short))
-
short info[N_INFO];
int n_info = N_INFO;
@@ -69,6 +66,7 @@ void quit(char *msg, int call_perror)
errno = err_num;
if (call_perror) {
perror(msg);
+
} else {
fprintf(stderr, "%s\n", msg);
}
@@ -77,9 +75,9 @@ void quit(char *msg, int call_perror)
unlink(output_filename);
}
exit(EXIT_FAILURE);
+
// NOTREACHED
}
-
const char usage_error_msg[] =
"\nUsage: %s [ -d drive ] -b bootfile -o outfile { progfile loadpt } "
"...\n\n"
@@ -100,6 +98,7 @@ void usage_error(void)
{
fprintf(stderr, usage_error_msg, progname);
quit(NULL, FALSE);
+
// NOTREACHED
}
@@ -127,7 +126,6 @@ int copy_file(FILE *in)
// pad this sector out to block size
if (n_bytes < sizeof(buf)) {
int i;
-
for (i = n_bytes; i < sizeof(buf); i += 1) {
buf[i] = '\0';
}
@@ -180,25 +178,24 @@ void process_file(char *name, char *addr)
if (strlen(addr) == 9 && cp == addr + 4) {
char *ep1, *ep2;
int a1, a2;
-
segment = strtol(addr, &ep1, 16);
offset = strtol(addr + 5, &ep2, 16);
address = (segment << 4) + offset;
valid_address = *ep1 == '\0' && *ep2 == '\0';
+
} else {
fprintf(stderr, "Bad address format - '%s'\n", addr);
quit(NULL, FALSE);
}
+
} else {
// just a number, possibly hex or octal
char *ep;
-
address = strtol(addr, &ep, 0);
segment = (short)(address >> 4);
offset = (short)(address & 0xf);
valid_address = *ep == '\0' && address <= 0x0009ffff;
}
-
if (!valid_address) {
fprintf(stderr, "%s: Invalid address: %s\n", progname, addr);
quit(NULL, FALSE);
@@ -212,7 +209,6 @@ void process_file(char *name, char *addr)
(unsigned int)address);
quit(NULL, FALSE);
}
-
if (n_info < 3) {
quit("Too many programs!", FALSE);
}
@@ -222,7 +218,6 @@ void process_file(char *name, char *addr)
*/
fprintf(stderr, " %s: %d sectors, loaded at 0x%x\n", name, n_sectors,
(unsigned int)address);
-
info[--n_info] = n_sectors;
info[--n_info] = segment;
info[--n_info] = offset;
@@ -231,7 +226,6 @@ void process_file(char *name, char *addr)
/*
** Global variables set by getopt()
*/
-
extern int optind, optopt;
extern char *optarg;
@@ -244,21 +238,17 @@ extern char *optarg;
void process_args(int ac, char **av)
{
int c;
-
while ((c = getopt(ac, av, ":d:o:b:")) != EOF) {
switch (c) {
case ':': /* missing arg value */
fprintf(stderr, "missing operand after -%c\n", optopt);
- /* FALL THROUGH */
- case '?': /* error */
+ /* FALL THROUGH */ case '?': /* error */
usage_error();
- /* NOTREACHED */
- case 'b': /* -b bootstrap_file */
+ /* NOTREACHED */ case 'b': /* -b bootstrap_file */
bootstrap_filename = optarg;
break;
-
case 'd': /* -d drive */
switch (*optarg) {
case 'f':
@@ -271,21 +261,17 @@ void process_args(int ac, char **av)
usage_error();
}
break;
-
case 'o': /* -o output_file */
output_filename = optarg;
break;
-
default:
usage_error();
}
}
-
if (!bootstrap_filename) {
fprintf(stderr, "%s: no bootstrap file specified\n", progname);
exit(2);
}
-
if (!output_filename) {
fprintf(stderr, "%s: no disk image file specified\n", progname);
exit(2);
@@ -326,6 +312,7 @@ int main(int ac, char **av)
progname = strrchr(av[0], '/');
if (progname != NULL) {
progname++;
+
} else {
progname = av[0];
}
@@ -338,7 +325,6 @@ int main(int ac, char **av)
/*
** Open the output file
*/
-
out = fopen(output_filename, "wb+");
if (out == NULL) {
quit(output_filename, TRUE);
@@ -358,7 +344,6 @@ int main(int ac, char **av)
*/
int n_sectors = copy_file(bootimage);
fclose(bootimage);
-
bootimage_size = n_sectors * SECT_SIZE;
fprintf(stderr, " %s: %d sectors\n", bootstrap_filename, n_sectors);
@@ -414,8 +399,6 @@ int main(int ac, char **av)
*/
fseek(out, 508, SEEK_SET);
fwrite((void *)&drive, sizeof(drive), 1, out);
-
fclose(out);
-
return EXIT_SUCCESS;
}
diff --git a/util/listblob.c b/util/listblob.c
index f756a05..ccae1d0 100644
--- a/util/listblob.c
+++ b/util/listblob.c
@@ -5,6 +5,7 @@
**
** Examine a binary blob of ELF files.
*/
+
#define _DEFAULT_SOURCE
#include <ctype.h>
#include <elf.h>
@@ -39,11 +40,11 @@
** size Size of this ELF file, in bytes
** flags Flags related to this file
*/
-
// blob header: 8 bytes
typedef struct header_s {
char magic[4];
uint32_t num;
+
} header_t;
// The program table entry is 32 bytes long. To accomplish this, the
@@ -72,8 +73,8 @@ typedef struct prog_s {
typedef struct node_s {
prog_t *data;
struct node_s *next;
-} node_t;
+} node_t;
node_t *progs, *last_prog; // list pointers
uint32_t n_progs; // number of files being copied
uint32_t offset; // current file area offset
@@ -128,12 +129,11 @@ void process(uint32_t num, prog_t *prog)
char *slash = strrchr(prog->name, '/');
if (slash == NULL) {
slash = prog->name;
+
} else {
++slash;
}
-
slash[0] = toupper(slash[0]);
-
if (defs) {
// just printing #define statements
printf("#define %-15s %2d\n", prog->name, num);
@@ -144,6 +144,7 @@ void process(uint32_t num, prog_t *prog)
// first one, so print the file header
puts(header);
putchar('\t');
+
} else {
// second or later entry; limit to 8 per line
fputs(((num & 0x7) == 0) ? ",\n\t" : ", ", stdout);
@@ -159,65 +160,56 @@ void process(uint32_t num, prog_t *prog)
prog->size, prog->flags);
}
}
-
void usage(char *name)
{
fprintf(stderr, "usage: %s [-d | -e] blob_name\n", name);
}
-
int main(int argc, char *argv[])
{
if (argc < 2 || argc > 3) {
usage(argv[0]);
exit(1);
}
-
int nameix = 1;
// could use getopt() for this, but this is easy enough
if (argc == 3) {
if (strcmp(argv[1], "-d") == 0) {
defs = true;
+
} else if (strcmp(argv[1], "-e") == 0) {
enums = true;
+
} else {
usage(argv[0]);
exit(1);
}
nameix = 2;
}
-
char *name = argv[nameix];
-
int fd = open(name, O_RDONLY);
if (fd < 0) {
perror(name);
exit(1);
}
-
header_t hdr;
-
int n = read(fd, &hdr, sizeof(header_t));
if (n != sizeof(header_t)) {
fprintf(stderr, "%s: header read returned only %d bytes\n", name, n);
close(fd);
exit(1);
}
-
if (strcmp(hdr.magic, "BLB") != 0) {
fprintf(stderr, "%s: bad magic number\n", name);
close(fd);
exit(1);
}
-
if (hdr.num < 1) {
fprintf(stderr, "%s: no programs in blob?\n", name);
close(fd);
exit(1);
}
-
prog_t progs[hdr.num];
-
n = read(fd, progs, hdr.num * sizeof(prog_t));
if (n != (int)(hdr.num * sizeof(prog_t))) {
fprintf(stderr, "%s: prog table only %d bytes, expected %lu\n", name, n,
@@ -225,16 +217,13 @@ int main(int argc, char *argv[])
close(fd);
exit(1);
}
-
for (uint32_t i = 0; i < hdr.num; ++i) {
process(i, &progs[i]);
}
-
if (enums) {
// print the file trailer
puts(trailer);
}
-
close(fd);
return 0;
}
diff --git a/util/mkblob.c b/util/mkblob.c
index db7bfc4..fdf0680 100644
--- a/util/mkblob.c
+++ b/util/mkblob.c
@@ -5,6 +5,7 @@
**
** Create a binary blob from a collection of ELF files.
*/
+
#define _DEFAULT_SOURCE
#include <elf.h>
@@ -38,11 +39,11 @@
** size Size of this ELF file, in bytes
** flags Flags related to this file
*/
-
// blob header
typedef struct header_s {
char magic[4];
uint32_t num;
+
} header_t;
// length of the file name field
@@ -67,8 +68,8 @@ typedef struct node_s {
prog_t *data;
char *fullname;
struct node_s *next;
-} node_t;
+} node_t;
node_t *progs, *last_prog; // list pointers
uint32_t n_progs; // number of files being copied
uint32_t offset; // current file area offset
@@ -114,12 +115,10 @@ void process(const char *name)
Elf32_Ehdr hdr;
int n = read(fd, &hdr, sizeof(Elf32_Ehdr));
close(fd);
-
if (n != sizeof(Elf32_Ehdr)) {
fprintf(stderr, "%s: header read was short - only %d\n", name, n);
return;
}
-
if (hdr.e_ident[EI_MAG0] != ELFMAG0 || hdr.e_ident[EI_MAG1] != ELFMAG1 ||
hdr.e_ident[EI_MAG2] != ELFMAG2 || hdr.e_ident[EI_MAG3] != ELFMAG3) {
fprintf(stderr, "%s: bad ELF magic number\n", name);
@@ -132,14 +131,12 @@ void process(const char *name)
fprintf(stderr, "%s: calloc prog returned NULL\n", name);
return;
}
-
node_t *node = calloc(1, sizeof(node_t));
if (node == NULL) {
free(new);
fprintf(stderr, "%s: calloc node returned NULL\n", name);
return;
}
-
node->data = new;
node->fullname = strdup(name);
@@ -150,11 +147,11 @@ void process(const char *name)
if (slash == NULL) {
// only the file name
slash = name;
+
} else {
// skip the slash
++slash;
}
-
strncpy(new->name, slash, sizeof(new->name) - 1);
new->offset = offset;
new->size = info.st_size;
@@ -167,6 +164,7 @@ void process(const char *name)
if ((info.st_size & FSIZE_MASK) != 0) {
// nope, so we must round it up when we write it out
new->flags |= FL_ROUNDUP;
+
// increases the offset to the next file
offset += 8 - (info.st_size & FSIZE_MASK);
}
@@ -175,6 +173,7 @@ void process(const char *name)
if (progs == NULL) {
// first entry
progs = node;
+
} else {
// add to the end
if (last_prog == NULL) {
@@ -207,23 +206,24 @@ void copy(FILE *ofd, node_t *node)
perror(node->fullname);
return;
}
-
uint8_t buf[512];
// copy it block-by-block
do {
int n = read(fd, buf, 512);
+
// no bytes --> we're done
if (n < 1) {
break;
}
+
// copy it, and verify the copy count
int k = fwrite(buf, 1, n, ofd);
if (k != n) {
fprintf(stderr, "%s: write of %d returned %d\n", prog->name, n, k);
}
- } while (1);
+ } while (1);
printf("%s: copied %d", prog->name, prog->size);
// do we need to round up?
@@ -249,14 +249,12 @@ void copy(FILE *ofd, node_t *node)
// all done!
close(fd);
}
-
int main(int argc, char *argv[])
{
// construct program list
for (int i = 1; i < argc; ++i) {
process(argv[i]);
}
-
if (n_progs < 1) {
fputs("Nothing to do... exiting.", stderr);
exit(0);
@@ -269,14 +267,12 @@ int main(int argc, char *argv[])
perror("user.img");
exit(1);
}
-
printf("Processing %d ELF files\n", n_progs);
// we need to adjust the offset values so they are relative to the
// start of the blob, not relative to the start of the file area.
// do this by adding the sum of the file header and program entries
// to each offset field.
-
uint32_t hlen = sizeof(header_t) + n_progs * sizeof(prog_t);
node_t *curr = progs;
while (curr != NULL) {
@@ -314,8 +310,6 @@ int main(int argc, char *argv[])
free(tmp->fullname);
free(tmp);
}
-
fclose(ofd);
-
return 0;
}