diff options
| author | Takashi Iwai <tiwai@suse.de> | 2010-06-02 14:15:10 +0200 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2010-06-02 14:15:10 +0200 |
| commit | e4caa8bab3862a7694ab7c6dfede223227ad7fc5 (patch) | |
| tree | 9fa537a72f00f6b4f86c2da7be2e9554304a8ec4 /scripts/kconfig/expr.c | |
| parent | 9f75c1b12c5ef392ddcea575b13560842c28b1b3 (diff) | |
| parent | edb39935c8b19fcd9a8f619d0bc1e9d04594cd2b (diff) | |
Merge branch 'master' of git.alsa-project.org:alsa-kernel into fix/hda
Diffstat (limited to 'scripts/kconfig/expr.c')
| -rw-r--r-- | scripts/kconfig/expr.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index edd3f39a080a..d83f2322893a 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c @@ -1097,9 +1097,32 @@ void expr_fprint(struct expr *e, FILE *out) static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) { - str_append((struct gstr*)data, str); + struct gstr *gs = (struct gstr*)data; + const char *sym_str = NULL; + + if (sym) + sym_str = sym_get_string_value(sym); + + if (gs->max_width) { + unsigned extra_length = strlen(str); + const char *last_cr = strrchr(gs->s, '\n'); + unsigned last_line_length; + + if (sym_str) + extra_length += 4 + strlen(sym_str); + + if (!last_cr) + last_cr = gs->s; + + last_line_length = strlen(gs->s) - (last_cr - gs->s); + + if ((last_line_length + extra_length) > gs->max_width) + str_append(gs, "\\\n"); + } + + str_append(gs, str); if (sym) - str_printf((struct gstr*)data, " [=%s]", sym_get_string_value(sym)); + str_printf(gs, " [=%s]", sym_str); } void expr_gstr_print(struct expr *e, struct gstr *gs) |
