diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/.gitignore | 3 | ||||
-rw-r--r-- | cmd/Kconfig | 1 | ||||
-rw-r--r-- | cmd/Makefile | 15 | ||||
-rw-r--r-- | cmd/license.c | 31 |
4 files changed, 37 insertions, 13 deletions
diff --git a/cmd/.gitignore b/cmd/.gitignore index 7800586..bab889f 100644 --- a/cmd/.gitignore +++ b/cmd/.gitignore @@ -1,3 +1,6 @@ config_data.gz config_data_gz.h config_data_size.h +license_data.gz +license_data_gz.h +license_data_size.h diff --git a/cmd/Kconfig b/cmd/Kconfig index 57e8e42..25ac895 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -154,6 +154,7 @@ config CMD_CPU config CMD_LICENSE bool "license" + select BUILD_BIN2C help Print GPL license text diff --git a/cmd/Makefile b/cmd/Makefile index 1a04e7e..f13bb8c 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -187,3 +187,18 @@ $(obj)/config_data_gz.h: $(obj)/config_data.gz FORCE targets += config_data_size.h $(obj)/config_data_size.h: $(KCONFIG_CONFIG) FORCE $(call filechk,data_size) + +# "license" command +$(obj)/license.o: $(obj)/license_data_gz.h $(obj)/license_data_size.h + +targets += license_data.gz +$(obj)/license_data.gz: $(srctree)/Licenses/gpl-2.0.txt FORCE + $(call if_changed,gzip) + +targets += license_data_gz.h +$(obj)/license_data_gz.h: $(obj)/license_data.gz FORCE + $(call filechk,data_gz) + +targets += license_data_size.h +$(obj)/license_data_size.h: $(srctree)/Licenses/gpl-2.0.txt FORCE + $(call filechk,data_size) diff --git a/cmd/license.c b/cmd/license.c index 5ee57f8..29fc8aa 100644 --- a/cmd/license.c +++ b/cmd/license.c @@ -6,31 +6,36 @@ */ #include <common.h> - -/* Licenses/gpl-2.0.txt is currently 18092 bytes in size */ -#define LICENSE_MAX 20480 - #include <command.h> #include <malloc.h> -#include <license.h> -int do_license(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +#include "license_data_gz.h" +#include "license_data_size.h" + +static int do_license(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - char *dst = malloc(LICENSE_MAX); - unsigned long len = LICENSE_MAX; + char *dst; + unsigned long len = data_size; + int ret = CMD_RET_SUCCESS; + dst = malloc(data_size + 1); if (!dst) - return -1; + return CMD_RET_FAILURE; - if (gunzip(dst, LICENSE_MAX, license_gzip, &len) != 0) { + ret = gunzip(dst, data_size, (unsigned char *)data_gz, &len); + if (ret) { printf("Error uncompressing license text\n"); - free(dst); - return -1; + ret = CMD_RET_FAILURE; + goto free; } + + dst[data_size] = 0; puts(dst); + +free: free(dst); - return 0; + return ret; } U_BOOT_CMD( |