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 | 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 | 233 | static void parse_config_file(const char *p) |
| 223 | 234 | { |
| 224 | 235 | const char *q, *r; |
| @@ -228,7 +239,7 @@ static void parse_config_file(const char *p) · 3 unmodified lines | ||
| 228 | 239 | q = p; |
| 229 | 240 | while (*q && (isalnum(*q) || *q == '_')) |
| 230 | 241 | q++; |
| 231 | − if (memcmp(q - 7, "_MODULE", 7) == 0) | |
| 242 | + if (str_ends_with(p, q - p, "_MODULE")) | |
| 232 | 243 | r = q - 7; |
| 233 | 244 | else |
| 234 | 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 | 252 | static void *read_file(const char *filename) |
| 253 | 253 | { |
| 254 | 254 | struct stat st; |