diff options
Diffstat (limited to 'scripts/kconfig/conf.c')
| -rw-r--r-- | scripts/kconfig/conf.c | 48 | 
1 files changed, 39 insertions, 9 deletions
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 006ad817cd5..f208f900ed3 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c @@ -14,11 +14,11 @@  #include <sys/stat.h>  #include <sys/time.h> -#define LKC_DIRECT_LINK  #include "lkc.h"  static void conf(struct menu *menu);  static void check_conf(struct menu *menu); +static void xfgets(char *str, int size, FILE *in);  enum input_mode {  	oldaskconfig, @@ -35,8 +35,6 @@ enum input_mode {  	oldnoconfig,  } input_mode = oldaskconfig; -char *defconfig_file; -  static int indent = 1;  static int valid_stdin = 1;  static int sync_kconfig; @@ -106,6 +104,7 @@ static int conf_askvalue(struct symbol *sym, const char *def)  			return 0;  		}  		check_stdin(); +		/* fall through */  	case oldaskconfig:  		fflush(stdout);  		xfgets(line, 128, stdin); @@ -150,6 +149,7 @@ static int conf_string(struct menu *menu)  				def = NULL;  				break;  			} +			/* fall through */  		default:  			line[strlen(line)-1] = 0;  			def = line; @@ -304,6 +304,7 @@ static int conf_choice(struct menu *menu)  				break;  			}  			check_stdin(); +			/* fall through */  		case oldaskconfig:  			fflush(stdout);  			xfgets(line, 128, stdin); @@ -369,6 +370,7 @@ static void conf(struct menu *menu)  				check_conf(menu);  				return;  			} +			/* fall through */  		case P_COMMENT:  			prompt = menu_get_prompt(menu);  			if (prompt) @@ -456,10 +458,30 @@ static struct option long_opts[] = {  	{NULL, 0, NULL, 0}  }; +static void conf_usage(const char *progname) +{ + +	printf("Usage: %s [option] <kconfig-file>\n", progname); +	printf("[option] is _one_ of the following:\n"); +	printf("  --listnewconfig         List new options\n"); +	printf("  --oldaskconfig          Start a new configuration using a line-oriented program\n"); +	printf("  --oldconfig             Update a configuration using a provided .config as base\n"); +	printf("  --silentoldconfig       Same as oldconfig, but quietly, additionally update deps\n"); +	printf("  --oldnoconfig           Same as silentoldconfig but set new symbols to no\n"); +	printf("  --defconfig <file>      New config with default defined in <file>\n"); +	printf("  --savedefconfig <file>  Save the minimal current configuration to <file>\n"); +	printf("  --allnoconfig           New config where all options are answered with no\n"); +	printf("  --allyesconfig          New config where all options are answered with yes\n"); +	printf("  --allmodconfig          New config where all options are answered with mod\n"); +	printf("  --alldefconfig          New config with all symbols set to default\n"); +	printf("  --randconfig            New config with random answer to all options\n"); +} +  int main(int ac, char **av)  { +	const char *progname = av[0];  	int opt; -	const char *name; +	const char *name, *defconfig_file = NULL /* gcc uninit */;  	struct stat tmpstat;  	setlocale(LC_ALL, ""); @@ -491,14 +513,24 @@ int main(int ac, char **av)  			srand(seed);  			break;  		} +		case oldaskconfig: +		case oldconfig: +		case allnoconfig: +		case allyesconfig: +		case allmodconfig: +		case alldefconfig: +		case listnewconfig: +		case oldnoconfig: +			break;  		case '?': -			fprintf(stderr, _("See README for usage info\n")); +			conf_usage(progname);  			exit(1);  			break;  		}  	}  	if (ac == optind) {  		printf(_("%s: Kconfig file missing\n"), av[0]); +		conf_usage(progname);  		exit(1);  	}  	name = av[optind]; @@ -641,13 +673,11 @@ int main(int ac, char **av)  	}  	return 0;  } +  /*   * Helper function to facilitate fgets() by Jean Sacren.   */ -void xfgets(str, size, in) -	char *str; -	int size; -	FILE *in; +void xfgets(char *str, int size, FILE *in)  {  	if (fgets(str, size, in) == NULL)  		fprintf(stderr, "\nError in reading or end of file.\n");  |