Messages in this thread | | | Subject | Re: [PATCH 1/2] remove all uses of printf's %n | From | Tetsuo Handa <> | Date | Tue, 17 Sep 2013 22:06:02 +0900 |
| |
Kees Cook wrote: > On Mon, Sep 16, 2013 at 1:09 AM, Geert Uytterhoeven > <geert@linux-m68k.org> wrote: > > On Mon, Sep 16, 2013 at 9:43 AM, Kees Cook <keescook@chromium.org> wrote: > >> All users of %n are calculating padding size when using seq_file, so > >> instead use the new last_len member for discovering the length of the > >> written strings. > > > > Would it make sense to provide a seq_pad(...) function instead, to avoid > > exposing more seq_file internals to its callers? > > We'd still need to track how much to pad.
If we add "size_t pad_until;" to "struct seq_file", we can do
void seq_setwidth(struct seq_file *m, size_t size) { m->pad_until = m->count + size; }
void seq_pad(struct seq_file *m, char c) { int size = m->pad_until - m->count; if (size > 0) seq_printf(m, "%*s", size, ""); if (c) seq_putc(m, c); }
and use like
seq_setwidth(m, 21); seq_printf(m, "%s%d", con->name, con->index); seq_pad(m, '\n');
.
| |