On Mon, Jun 18, 2018 at 1:18 PM Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > > On Thu, Jun 14, 2018 at 09:11:22PM -0700, Andrey Smirnov wrote: > > Consolidate code doing '\n' -> '\n\r' compensation in DEBUG_LL and > > CONSOLE_* subsystems. While at it move it from puts_ll() to putc_ll() > > in order to match the semantics of other puts()/putc() > > implementations. > > > > This is done as a macro in order to avoid putting any restrictions on > > the signature of __putc. > > > > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > > --- > > include/debug_ll.h | 38 ++++++++++++++++++++++++++++++++------ > > lib/console.c | 17 +++++++---------- > > 2 files changed, 39 insertions(+), 16 deletions(-) > > > > diff --git a/include/debug_ll.h b/include/debug_ll.h > > index 504751639..4032ced95 100644 > > --- a/include/debug_ll.h > > +++ b/include/debug_ll.h > > @@ -31,9 +31,32 @@ > > #include <mach/debug_ll.h> > > #endif > > > > +/** > > + * __do_putc - Macro implementing '\n'-> '\n\r' substituting putc() > > + * > > + * @__putc: Single argument or a macro that implements plain putc() > > + * @__c: Character to print > > + * > > + * Internal macro used to implement putc_ll() and __console_putc() and > > + * intended to be the only place where '\n' -> '\n\r' substitution is > > + * codified > > + */ > > +#define __do_putc(__putc, ___c) \ > > + ({ \ > > + typeof(___c) __c = (___c); \ > > + int __n = 1; \ > > + \ > > + __putc(__c); \ > > + if (__c == '\n') { \ > > + __putc('\r'); \ > > + __n = 2; \ > > + } \ > > + __n; \ > > + }) > > + > > #if defined (CONFIG_DEBUG_LL) > > > > ... > > > +/* > > + * __do_putc expects a macro or a function of a single argument so we > > + * create this dummy adapter to work around that > > + */ > > +#define __CDEV_PUTC(__c) __cdev_putc(cdev, __c) > > + > > + return __do_putc(__CDEV_PUTC, c); > > } > > Creating a macro for the "\n" -> "\r\n" conversion doesn't look like an > improvement to me, especially when another macro is necessary to make > the first one usable. > OK, will drop this in v2. Thanks, Andrey Smirnov _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox