projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
firmware-utils/mktplinkfw: add support for TL-WA701N/ND
[openwrt.git]
/
tools
/
firmware-utils
/
src
/
wndr3700.c
diff --git
a/tools/firmware-utils/src/wndr3700.c
b/tools/firmware-utils/src/wndr3700.c
index
51e5352
..
97b5f1d
100644
(file)
--- a/
tools/firmware-utils/src/wndr3700.c
+++ b/
tools/firmware-utils/src/wndr3700.c
@@
-37,7
+37,10
@@
#define BPB 8 /* bits/byte */
#define BPB 8 /* bits/byte */
+#define WNDR3700_MAGIC_LEN 4
+
static uint32_t crc32[1<<BPB];
static uint32_t crc32[1<<BPB];
+static char *magic = "3700";
static void init_crc32()
{
static void init_crc32()
{
@@
-64,7
+67,7
@@
static uint32_t crc32buf(unsigned char *buf, size_t len)
}
struct header {
}
struct header {
- u
int32_t magic
;
+ u
nsigned char magic[WNDR3700_MAGIC_LEN]
;
uint32_t crc;
unsigned char stuff[56];
};
uint32_t crc;
unsigned char stuff[56];
};
@@
-74,7
+77,7
@@
static void usage(const char *) __attribute__ (( __noreturn__ ));
static void usage(const char *mess)
{
fprintf(stderr, "Error: %s\n", mess);
static void usage(const char *mess)
{
fprintf(stderr, "Error: %s\n", mess);
- fprintf(stderr, "Usage: wndr3700 input_file output_file\n");
+ fprintf(stderr, "Usage: wndr3700 input_file output_file
[magic]
\n");
fprintf(stderr, "\n");
exit(1);
}
fprintf(stderr, "\n");
exit(1);
}
@@
-90,9
+93,17
@@
int main(int argc, char **argv)
// verify parameters
// verify parameters
- if (argc
!=
3)
+ if (argc
<
3)
usage("wrong number of arguments");
usage("wrong number of arguments");
+ if (argc > 3)
+ magic = argv[3];
+
+ if (strlen(magic) != WNDR3700_MAGIC_LEN) {
+ fprintf(stderr, "Invalid magic: '%s'\n", magic);
+ exit(1);
+ }
+
// mmap input_file
if ((fd = open(argv[1], O_RDONLY)) < 0
|| (len = lseek(fd, 0, SEEK_END)) < 0
// mmap input_file
if ((fd = open(argv[1], O_RDONLY)) < 0
|| (len = lseek(fd, 0, SEEK_END)) < 0
@@
-110,7
+121,7
@@
int main(int argc, char **argv)
// preload header
memcpy(&header, input_file, sizeof(header));
// preload header
memcpy(&header, input_file, sizeof(header));
- header.magic = htonl(0x33373030); /* 3700 in ascii */
+ memcpy(header.magic, magic, WNDR3700_MAGIC_LEN);
header.crc = 0;
// create a firmware image in memory and copy the input_file to it
header.crc = 0;
// create a firmware image in memory and copy the input_file to it
This page took
0.028656 seconds
and
4
git commands to generate.