mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	The previous commit ("add a new command to show .config contents")
improves the basic infrastructure of "embed a compressed file into
the U-Boot image, and print it by a command".  The same pattern for
the "license" command.
This commit reworks the command to improve the following:
[1] Improve log style
Kbuild style log
  GZIP    cmd/license_data.gz
  CHK     cmd/license_data_gz.h
  UPD     cmd/license_data_gz.h
  CHK     cmd/license_data_size.h
  UPD     cmd/license_data_size.h
instead of the bare Make log:
cat ./Licenses/gpl-2.0.txt | gzip -9 -c | \
		tools/bin2header license_gzip > ./include/license.h
[2] Collect related code into the "cmd" directory
Prior to this commit, the license.h was created by tools/Makefile,
placed under the "include" directory, included from cmd/license.c,
and deleted by the top-level Makefile.  It is not a good idea to
scatter related code.
[3] Drop the fixed-malloc size LICENSE_MAX
Just allocate the minimum required size of buffer because we know
the size of the original gpl-2.0.txt.
[4] Fix more issues
Terminate the buffer with zero to prevent puts() from over-running.
Add "static" to do_license.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
		
	
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			790 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			790 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * (C) Copyright 2007 by OpenMoko, Inc.
 | 
						|
 * Author: Harald Welte <laforge@openmoko.org>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier:	GPL-2.0+
 | 
						|
 */
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <command.h>
 | 
						|
#include <malloc.h>
 | 
						|
 | 
						|
#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;
 | 
						|
	unsigned long len = data_size;
 | 
						|
	int ret = CMD_RET_SUCCESS;
 | 
						|
 | 
						|
	dst = malloc(data_size + 1);
 | 
						|
	if (!dst)
 | 
						|
		return CMD_RET_FAILURE;
 | 
						|
 | 
						|
	ret = gunzip(dst, data_size, (unsigned char *)data_gz, &len);
 | 
						|
	if (ret) {
 | 
						|
		printf("Error uncompressing license text\n");
 | 
						|
		ret = CMD_RET_FAILURE;
 | 
						|
		goto free;
 | 
						|
	}
 | 
						|
 | 
						|
	dst[data_size] = 0;
 | 
						|
	puts(dst);
 | 
						|
 | 
						|
free:
 | 
						|
	free(dst);
 | 
						|
 | 
						|
	return ret;
 | 
						|
}
 | 
						|
 | 
						|
U_BOOT_CMD(
 | 
						|
	license, 1, 1, do_license,
 | 
						|
	"print GPL license text",
 | 
						|
	""
 | 
						|
);
 |