str_ends_with() tests if the given token ends with a particular string. Currently, it is used to check file paths without $(srctree). Actually, we have one more place where this helper is useful. Use it to check if CONFIG option ends with _MODULE.
Showing the changes to scripts/basic (1 of 1 file). Show all
Unified · Split
| @@ -219,6 +219,17 @@ static void use_config(const char *m, int slen) · 218 unmodified lines | |||
| 219 | print_config(m, slen); | 219 | print_config(m, slen); |
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | /* test if s ends in sub */ | ||
| 223 | static int str_ends_with(const char *s, int slen, const char *sub) | ||
| 224 | { | ||
| 225 | int sublen = strlen(sub); | ||
| 226 | |||
| 227 | if (sublen > slen) | ||
| 228 | return 0; | ||
| 229 | |||
| 230 | return !memcmp(s + slen - sublen, sub, sublen); | ||
| 231 | } | ||
| 232 | |||
| 222 | static void parse_config_file(const char *p) | 233 | static void parse_config_file(const char *p) |
| 223 | { | 234 | { |
| 224 | const char *q, *r; | 235 | const char *q, *r; |
| @@ -228,7 +239,7 @@ static void parse_config_file(const char *p) · 3 unmodified lines | |||
| 228 | q = p; | 239 | q = p; |
| 229 | while (*q && (isalnum(*q) || *q == '_')) | 240 | while (*q && (isalnum(*q) || *q == '_')) |
| 230 | q++; | 241 | q++; |
| 231 | if (memcmp(q - 7, "_MODULE", 7) == 0) | 242 | if (str_ends_with(p, q - p, "_MODULE")) |
| 232 | r = q - 7; | 243 | r = q - 7; |
| 233 | else | 244 | else |
| 234 | r = q; | 245 | r = q; |
| @@ -238,17 +249,6 @@ static void parse_config_file(const char *p) · 3 unmodified lines | |||
| 238 | } | 249 | } |
| 239 | } | 250 | } |
| 240 | 251 | ||
| 241 | /* test if s ends in sub */ | ||
| 242 | static int str_ends_with(const char *s, int slen, const char *sub) | ||
| 243 | { | ||
| 244 | int sublen = strlen(sub); | ||
| 245 | |||
| 246 | if (sublen > slen) | ||
| 247 | return 0; | ||
| 248 | |||
| 249 | return !memcmp(s + slen - sublen, sub, sublen); | ||
| 250 | } | ||
| 251 | |||
| 252 | static void *read_file(const char *filename) | 252 | static void *read_file(const char *filename) |
| 253 | { | 253 | { |
| 254 | struct stat st; | 254 | struct stat st; |