Hi, * Wu Zhangjin <wuzhangjin@xxxxxxxxx> [2010-06-01 21:11:56+0800]: > > Changes: > > v1 -> v2: > o make it more portable (feedback from Alexander Clouter) > use EXIT_SUCCESS and EXIT_FAILURE as the return value, and use uint64_t > instead of "unsigned long long". > o add a missing return value (feedback from Alexander Clouter) > return EXIT_FAILURE if (n != 1). > > We have calculated VMLINUZ_LOAD_ADDRESS in shell, which is awful. This patch > rewrites it in C. > s/awful/indecipherable/ :) > Signed-off-by: Wu Zhangjin <wuzhangjin@xxxxxxxxx> > --- > arch/mips/boot/.gitignore | 1 + > arch/mips/boot/compressed/Makefile | 22 ++++---- > arch/mips/boot/compressed/calc_vmlinuz_load_addr.c | 55 ++++++++++++++++++++ > 3 files changed, 66 insertions(+), 12 deletions(-) > create mode 100644 arch/mips/boot/compressed/calc_vmlinuz_load_addr.c > > diff --git a/arch/mips/boot/compressed/calc_vmlinuz_load_addr.c b/arch/mips/boot/compressed/calc_vmlinuz_load_addr.c > new file mode 100644 > index 0000000..81176b1 > --- /dev/null > +++ b/arch/mips/boot/compressed/calc_vmlinuz_load_addr.c > @@ -0,0 +1,55 @@ > > [snipped] > > + > + /* Convert hex characters to dec number */ > + errno = 0; > + n = sscanf(argv[2], "%llx", &vmlinux_load_addr); > + if (n != 1) { > you can drop the 'n' with: if (sscanf(argv[2], "%llx", &vmlinux_load_addr) != 1) { > + if (errno != 0) > + perror("sscanf"); > + else > + fprintf(stderr, "No matching characters\n"); > + > + return EXIT_FAILURE; > + } > + > + vmlinux_size = (unsigned long long)sb.st_size; > I'm guessing this should probably be uint64_t also? Other than that, makes me happy :) Cheers -- Alexander Clouter .sigmonster says: And furthermore, my bowling average is unimpeachable!!!