commit 3aa36739fc1841478a8d92ab424879ced36245f0 from: Benjamin Stürz date: Wed Dec 11 14:46:27 2024 UTC make: add :U and :L modifiers commit - 885512285563e8e60de40df14cb7d2ccee8f86d9 commit + 3aa36739fc1841478a8d92ab424879ced36245f0 blob - e84207efe527cecd70ba9dd52797e4f1e678aa3c blob + bafad71d59de5d77ce8b38da1a9e822c539bc920 --- make/make.c +++ make/make.c @@ -898,7 +898,7 @@ struct expand_ctx *ctx; extern expand_macro_into (); extern subst (); struct macro *m; - char *v, *orig = *s; + char *v, *orig = *s, *t; str_t name, old, new; /* parse macro name */ @@ -971,15 +971,34 @@ struct expand_ctx *ctx; replace_all_into (out, v, str_get (&old), str_get (&new)); str_free (&new); - break; + goto ret; + } else if (strcmp (str_get (&old), "U") == 0) { + str_new (&new); + + for (t = v; *t != '\0'; ++t) + str_putc (&new, toupper (*t)); + + free (v); + v = str_release (&new); + } else if (strcmp (str_get (&old), "L") == 0) { + str_new (&new); + + for (t = v; *t != '\0'; ++t) + str_putc (&new, tolower (*t)); + + free (v); + v = str_release (&new); } else { - errx (1, "TODO: modifiers: '${%s'", orig); + errx (1, "%s: invalid modifier: ':%s' in '%s'", sc_path_str (sc), str_get (&old), orig); } } + + str_puts (out, v); +ret: if (**s != '}') goto invalid; - + ++*s; str_free (&old); free (v); return 0;