diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/kconfig/preprocess.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/kconfig/preprocess.c b/scripts/kconfig/preprocess.c index 56aa1f0bad04..5ee58eeb9a7d 100644 --- a/scripts/kconfig/preprocess.c +++ b/scripts/kconfig/preprocess.c | |||
@@ -106,6 +106,21 @@ struct function { | |||
106 | char *(*func)(int argc, char *argv[]); | 106 | char *(*func)(int argc, char *argv[]); |
107 | }; | 107 | }; |
108 | 108 | ||
109 | static char *do_error_if(int argc, char *argv[]) | ||
110 | { | ||
111 | if (!strcmp(argv[0], "y")) | ||
112 | pperror("%s", argv[1]); | ||
113 | |||
114 | return NULL; | ||
115 | } | ||
116 | |||
117 | static char *do_info(int argc, char *argv[]) | ||
118 | { | ||
119 | printf("%s\n", argv[0]); | ||
120 | |||
121 | return xstrdup(""); | ||
122 | } | ||
123 | |||
109 | static char *do_shell(int argc, char *argv[]) | 124 | static char *do_shell(int argc, char *argv[]) |
110 | { | 125 | { |
111 | FILE *p; | 126 | FILE *p; |
@@ -146,9 +161,21 @@ static char *do_shell(int argc, char *argv[]) | |||
146 | return xstrdup(buf); | 161 | return xstrdup(buf); |
147 | } | 162 | } |
148 | 163 | ||
164 | static char *do_warning_if(int argc, char *argv[]) | ||
165 | { | ||
166 | if (!strcmp(argv[0], "y")) | ||
167 | fprintf(stderr, "%s:%d: %s\n", | ||
168 | current_file->name, yylineno, argv[1]); | ||
169 | |||
170 | return xstrdup(""); | ||
171 | } | ||
172 | |||
149 | static const struct function function_table[] = { | 173 | static const struct function function_table[] = { |
150 | /* Name MIN MAX Function */ | 174 | /* Name MIN MAX Function */ |
175 | { "error-if", 2, 2, do_error_if }, | ||
176 | { "info", 1, 1, do_info }, | ||
151 | { "shell", 1, 1, do_shell }, | 177 | { "shell", 1, 1, do_shell }, |
178 | { "warning-if", 2, 2, do_warning_if }, | ||
152 | }; | 179 | }; |
153 | 180 | ||
154 | #define FUNCTION_MAX_ARGS 16 | 181 | #define FUNCTION_MAX_ARGS 16 |