From c153c31fbdf930c3c090438d750a4c19fc011146 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 19 Apr 2020 15:44:02 +0800 Subject: [PATCH] tools/refresh.sh: Save defconfig and exit with 1 only when the difference exist Signed-off-by: Xiang Xiao --- tools/cmpconfig.c | 19 ++++++++++++------- tools/refresh.sh | 33 +++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/tools/cmpconfig.c b/tools/cmpconfig.c index a5a53940179..e4e94da990d 100644 --- a/tools/cmpconfig.c +++ b/tools/cmpconfig.c @@ -63,11 +63,12 @@ static void show_usage(const char *progname) exit(EXIT_FAILURE); } -static void compare_variables(struct variable_s *list1, struct variable_s *list2) +static int compare_variables(struct variable_s *list1, + struct variable_s *list2) { char *varval1; char *varval2; - int result; + int ret = 0; while (list1 || list2) { @@ -94,27 +95,33 @@ static void compare_variables(struct variable_s *list1, struct variable_s *list2 printf("file1:\n"); printf("file2: %s=%s\n\n", list2->var, varval2); list2 = list2->flink; + ret = EXIT_FAILURE; } else if (!list2) { printf("file1: %s=%s\n", list1->var, varval1); printf("file2:\n\n"); list1 = list1->flink; + ret = EXIT_FAILURE; } else { + int result; + result = strcmp(list1->var, list2->var); if (result < 0) { printf("file1: %s=%s\n", list1->var, varval1); printf("file2:\n\n"); list1 = list1->flink; + ret = EXIT_FAILURE; } else if (result > 0) { printf("file1:\n"); printf("file2: %s=%s\n\n", list2->var, varval2); list2 = list2->flink; + ret = EXIT_FAILURE; } else /* if (result == 0) */ { @@ -130,6 +137,8 @@ static void compare_variables(struct variable_s *list1, struct variable_s *list2 } } } + + return ret; } /**************************************************************************** @@ -171,9 +180,5 @@ int main(int argc, char **argv, char **envp) fclose(stream1); fclose(stream2); - printf("Comparing:\n\n"); - printf(" file1 = %s\n", argv[1]); - printf(" file2 = %s\n\n", argv[2]); - compare_variables(list1, list2); - return EXIT_SUCCESS; + return compare_variables(list1, list2); } diff --git a/tools/refresh.sh b/tools/refresh.sh index 9dda1dc6743..0e7e4ea4e6e 100755 --- a/tools/refresh.sh +++ b/tools/refresh.sh @@ -38,6 +38,7 @@ USAGE="USAGE: $0 [options] :+" ADVICE="Try '$0 --help' for more information" unset CONFIGS +diff=0 debug=n defaults=n prompt=y @@ -154,7 +155,7 @@ if [ "X${CONFIGS}" == "Xall" ]; then fi for CONFIG in ${CONFIGS}; do - echo "Refresh ${CONFIG}" + echo " Normalize ${CONFIG}" # Set up the environment @@ -256,28 +257,30 @@ for CONFIG in ${CONFIGS}; do make savedefconfig 1>/dev/null fi - # Save the refreshed configuration + # Show differences - if [ "X${prompt}" == "Xy" ]; then + if ! $CMPCONFIG $DEFCONFIG defconfig; then - # Show differences + # Save the refreshed configuration - $CMPCONFIG $DEFCONFIG defconfig + if [ "X${prompt}" == "Xy" ]; then - read -p "Save the new configuration (y/n)?" -n 1 -r - echo - if [[ $REPLY =~ ^[Yy]$ ]] - then + read -p "Save the new configuration (y/n)?" -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Saving the new configuration file" + mv defconfig $DEFCONFIG || \ + { echo "ERROR: Failed to move defconfig to $DEFCONFIG"; exit 1; } + chmod 644 $DEFCONFIG + fi + else echo "Saving the new configuration file" mv defconfig $DEFCONFIG || \ { echo "ERROR: Failed to move defconfig to $DEFCONFIG"; exit 1; } chmod 644 $DEFCONFIG fi - else - echo "Saving the new configuration file" - mv defconfig $DEFCONFIG || \ - { echo "ERROR: Failed to move defconfig to $DEFCONFIG"; exit 1; } - chmod 644 $DEFCONFIG + + diff=1 fi # Restore any previous .config and Make.defs files @@ -292,3 +295,5 @@ for CONFIG in ${CONFIGS}; do { echo "ERROR: Failed to move SAVEMake.defs to Make.defs"; exit 1; } fi done + +exit $diff