summaryrefslogtreecommitdiff
path: root/package/aboot/src/b2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'package/aboot/src/b2c.c')
-rw-r--r--package/aboot/src/b2c.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/package/aboot/src/b2c.c b/package/aboot/src/b2c.c
new file mode 100644
index 000000000..0b9318540
--- /dev/null
+++ b/package/aboot/src/b2c.c
@@ -0,0 +1,70 @@
+
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+void print_usage(void )
+{
+ printf("Usage: b2c bin_img tar_file.h symname\n");
+ exit(1);
+}
+
+void open_file(char *fn, int *fd, int *sz)
+{
+ struct stat buf;
+
+ *fd = open(fn, O_RDONLY);
+ if (fd < 0) {
+ printf("cannot open %s\n", fn);
+ exit(1);
+ }
+
+ fstat(*fd, &buf);
+
+ if (buf.st_size <= 10*1024) {
+ printf("Is this a right file %s, size = %ld\n", fn, buf.st_size);
+ exit(1);
+ }
+
+ *sz = (int)buf.st_size;
+}
+
+int main(int argc, char **argv)
+{
+ int sfd, ssz, red, i;
+ int buf[1024];
+ char *sfn, *tfn, *symname;
+ FILE *tfd;
+
+ if (argc != 4) {
+ print_usage();
+ }
+
+ sfn = argv[1];
+ tfn = argv[2];
+ symname = argv[3];
+
+ open_file(sfn, &sfd, &ssz);
+
+ tfd = fopen(tfn, "w");
+
+ fprintf(tfd, "int %s[] = {\n", symname);
+
+ while((red=read(sfd, buf, 1024*sizeof(int)))) {
+ for (i=0; i<red/sizeof(int); i++)
+ fprintf(tfd, "0x%x, \n", buf[i]);
+ }
+
+ fprintf(tfd, "};");
+
+ fclose(tfd);
+
+ return 0;
+
+}
+
+
+