]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/openslug-init/openslug-init-0.10/kern_header.c
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / openslug-init / openslug-init-0.10 / kern_header.c
1
2 #include <stdio.h>
3 #include <errno.h> 
4 #include <sys/types.h>
5 #include <sys/stat.h>
6
7
8 int main(int argc, char **argv)
9 {
10         struct stat sbuf;
11         char *devtype;
12         FILE *headerfile;
13         unsigned int header[4];
14
15
16         if (argc != 3) {
17                 fprintf(stderr, "usage: %s NSLU2_kernel_file_name prepend_header_filename\nThis program builds a 16 byte header which can be prepended to a NSLU2 Kernel for reflashing\n", argv[0]);
18                 exit (1);
19         }
20
21         if (stat(argv[1], &sbuf) < 0) {
22                 fprintf(stderr, "%s: stat: %s\n", argv[1], strerror(errno));
23                 exit (1);
24         }
25
26         /* printf ("File %s is %d bytes long\n", argv[1], sbuf.st_size); */
27         if ((headerfile=fopen(argv[2],"wb"))==NULL)
28         {
29                 fprintf(stderr,"Error opening file\n");
30                 exit (1);
31         }
32
33         if ((sbuf.st_size + 16) > 0x100000) {
34                 fprintf(stderr,"Error Kernel + Header is > 1 MB\n");
35                 exit (1);
36         }
37
38         header[0] = (unsigned int)sbuf.st_size + 16;
39         header[1] = 0; 
40         header[2] = 0;
41         header[3] = 0;
42         if (!fwrite(&header, sizeof(unsigned int), 4, headerfile)) 
43                 fprintf(stderr,"Error write to headerfile: %s\n", strerror(errno));
44
45         fclose(headerfile);
46 }
47