Return a meaningful return code; whitespace cleanup
authorH. Peter Anvin <hpa@zytor.com>
Sun, 6 Jan 2008 04:38:27 +0000 (20:38 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Sun, 6 Jan 2008 04:38:27 +0000 (20:38 -0800)
elf.c
linux.c
main.c
nbi.c
segment.c

diff --git a/elf.c b/elf.c
index d1caadd..581f312 100644 (file)
--- a/elf.c
+++ b/elf.c
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------- *
- *   
+ *
  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -56,7 +56,7 @@ int output_elf(struct segment *segs, addr_t entry, FILE *out)
        ehdr.e_ident[EI_DATA]    = ELFDATA2LSB;
        ehdr.e_ident[EI_VERSION] = EV_CURRENT;
        ehdr.e_ident[EI_OSABI]   = ELFOSABI_STANDALONE;
-       
+
        wrle16(ET_EXEC, &ehdr.e_type);
        wrle16(EM_386, &ehdr.e_machine);
        wrle32(EV_CURRENT, &ehdr.e_version);
@@ -84,7 +84,7 @@ int output_elf(struct segment *segs, addr_t entry, FILE *out)
 
                filesize = (s->sh_type == SHT_NOBITS) ? 0 : s->length;
                memsize = (s->sh_flags & SHF_ALLOC) ? s->length : 0;
-               
+
                switch (s->sh_type) {
                case SHT_PROGBITS:
                case SHT_NOBITS:
@@ -173,7 +173,7 @@ int output_elf(struct segment *segs, addr_t entry, FILE *out)
        wrle32(SHT_STRTAB, &shdr.sh_type);
        wrle32(data_offset, &shdr.sh_offset);
        wrle32(namebytes, &shdr.sh_size);
-       
+
        fwrite(&shdr, 1, sizeof shdr, out);
 
        return 0;
diff --git a/linux.c b/linux.c
index dbfcf29..e87809c 100644 (file)
--- a/linux.c
+++ b/linux.c
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------- *
- *   
+ *
  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -44,7 +44,7 @@ static const char *find_argument(const char *cmdline, const char *argument)
   int la = strlen(argument);
   const char *p = cmdline;
   int wasspace = 1;
-  
+
   while (*p) {
     if (wasspace && !memcmp(p, argument, la))
       return p+la;
@@ -114,7 +114,7 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
   size_t setup_len;
   size_t initrd_len;
   size_t initrd_addr;
-  int rv = -1;
+  int rv = EX_SOFTWARE;                /* Should never be returned... */
   int ninitrd = 0;
   int i;
   const struct string_list *ip;
@@ -128,11 +128,13 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
   kernel_fd = open(kernel_file, O_RDONLY);
   if (kernel_fd < 0) {
     fprintf(stderr, "%s: %s: %s\n", program, kernel_file, strerror(errno));
+    rv = EX_NOINPUT;
     goto err;
   }
 
   if (fstat(kernel_fd, &st)) {
     fprintf(stderr, "%s: %s: %s\n", program, kernel_file, strerror(errno));
+    rv = EX_DATAERR;
     goto err;
   }
 
@@ -140,6 +142,7 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
 
   if (kernel_len < 1024) {
     fprintf(stderr, "%s: %s: kernel file too small\n", program, kernel_file);
+    rv = EX_NOINPUT;
     errno = EINVAL;
     goto err;
   }
@@ -148,6 +151,7 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
                kernel_fd, 0);
   if (kernel == MAP_FAILED) {
     fprintf(stderr, "%s: %s: %s\n", program, kernel_file, strerror(errno));
+    rv = EX_NOINPUT;
     kernel = NULL;
     goto err;
   }
@@ -209,7 +213,7 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
   }
 
   /* Process the initrd file(s) */
-  
+
   ninitrd = 0;
   for (ip = initrd_list; ip; ip = ip->next)
     ninitrd++;
@@ -222,11 +226,13 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
     ird[i].fd = open(ip->str, O_RDONLY);
     if (ird[i].fd < 0) {
       fprintf(stderr, "%s: %s: %s", program, ip->str, strerror(errno));
+      rv = EX_NOINPUT;
       goto err;
     }
-  
+
     if (fstat(ird[i].fd, &st)) {
       fprintf(stderr, "%s: %s: %s", program, ip->str, strerror(errno));
+      rv = EX_NOINPUT;
       goto err;
     }
 
@@ -235,10 +241,11 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
                           MAP_SHARED, ird[i].fd, 0);
     if (ird[i].seg.data == MAP_FAILED) {
       fprintf(stderr, "%s: %s: %s", program, ip->str, strerror(errno));
+      rv = EX_NOINPUT;
       ird[i].seg.data = NULL;
       goto err;
     }
-    
+
     /* We need to pad the space between initrds to a 4-byte boundary.
        This is safe because an mmap is always padded with zero
        to a page boundary... */
@@ -347,6 +354,6 @@ int wrap_kernel(const char *kernel_file, const char *cmdline,
     munmap(kernel, kernel_len);
   if (kernel_fd >= 0)
     close(kernel_fd);
-  
+
   return rv;
 }
diff --git a/main.c b/main.c
index a5b0609..507e315 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------- *
- *   
+ *
  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -74,8 +74,8 @@ int main(int argc, char *argv[])
     case 'o':
       out = fopen(optarg, "w");
       if (!out) {
-       perror(optarg);
-       exit(EX_CANTCREAT);
+       fprintf(stderr, "%s: %s: %s\n", program, optarg, strerror(errno));
+       return EX_CANTCREAT;
       }
       break;
     case 'E':
@@ -98,7 +98,5 @@ int main(int argc, char *argv[])
   if (!opt.params)
     opt.params = "";
 
-  wrap_kernel(kernel, opt.params, ird, out);
-  return 0;
+  return wrap_kernel(kernel, opt.params, ird, out);
 }
-
diff --git a/nbi.c b/nbi.c
index 1f71526..aab0805 100644 (file)
--- a/nbi.c
+++ b/nbi.c
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------- *
- *   
+ *
  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ int output_nbi(struct segment *segs, addr_t entry, FILE *out)
                ihdr.load_addr = s->address;
                ihdr.filesz = s->length;
                ihdr.memsz  = s->length;
-       
+
                fwrite(&ihdr, 1, sizeof ihdr, out);
                offset += sizeof ihdr;
        }
index 5a163d1..dc8e330 100644 (file)
--- a/segment.c
+++ b/segment.c
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------- *
- *   
+ *
  *   Copyright 2008 H. Peter Anvin - All Rights Reserved
  *
  *   This program is free software; you can redistribute it and/or modify