[coreboot] New patch to review for coreboot: 5cdbc2b libpayload: avoid excessive casts in printf.c

Mathias Krause (minipli@googlemail.com) gerrit at coreboot.org
Tue Apr 3 21:15:41 CEST 2012


Mathias Krause (minipli at googlemail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/850

-gerrit

commit 5cdbc2b9e1985c6943638011d0d77f02833878cb
Author: Mathias Krause <minipli at googlemail.com>
Date:   Tue Apr 3 21:02:33 2012 +0200

    libpayload: avoid excessive casts in printf.c
    
    struct printf_spec is a purely internal structure. Avoid excessive casts
    when using the write function pointer just to make the compiler happy by
    using the right types in the first place.
    
    Change-Id: Ia4f3c79a5283cb76c8aa5f9d1eee758676303382
    Signed-off-by: Mathias Krause <minipli at googlemail.com>
---
 payloads/libpayload/libc/printf.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/payloads/libpayload/libc/printf.c b/payloads/libpayload/libc/printf.c
index c9a6cca..ccb64fd 100644
--- a/payloads/libpayload/libc/printf.c
+++ b/payloads/libpayload/libc/printf.c
@@ -46,7 +46,7 @@ FILE *stderr = &_stderr;
 /** Structure for specifying output methods for different printf clones. */
 struct printf_spec {
 	/* Output function, returns count of printed characters or EOF. */
-	int (*write) (void *, size_t, void *);
+	int (*write) (const char *, size_t, void *);
 	/* Support data - output stream specification, its state, locks, ... */
 	void *data;
 };
@@ -99,7 +99,7 @@ static const char digits_big[] = "0123456789ABCDEF";
 static int printf_putnchars(const char *buf, size_t count,
 			    struct printf_spec *ps)
 {
-	return ps->write((void *)buf, count, ps->data);
+	return ps->write(buf, count, ps->data);
 }
 
 /**
@@ -123,9 +123,9 @@ static inline int printf_putstr(const char *str, struct printf_spec *ps)
  */
 static int printf_putchar(int c, struct printf_spec *ps)
 {
-	unsigned char ch = c;
+	char ch = c;
 
-	return ps->write((void *)&ch, 1, ps->data);
+	return ps->write(&ch, 1, ps->data);
 }
 
 /**
@@ -752,13 +752,13 @@ struct vsnprintf_data {
  *
  * @param str	Source string to print.
  * @param count	Size of source string.
- * @param data	Structure with destination string, counter of used space
+ * @param _data	Structure with destination string, counter of used space
  *              and total string size.
  * @return Number of characters to print (not characters really printed!).
  */
-static int vsnprintf_write(const char *str, size_t count,
-			   struct vsnprintf_data *data)
+static int vsnprintf_write(const char *str, size_t count, void *_data)
 {
+	struct vsnprintf_data *data = _data;
 	size_t i;
 
 	i = data->size - data->len;
@@ -798,8 +798,7 @@ static int vsnprintf_write(const char *str, size_t count,
 int vsnprintf(char *str, size_t size, const char *fmt, va_list ap)
 {
 	struct vsnprintf_data data = { size, 0, str };
-	struct printf_spec ps =
-	    { (int (*)(void *, size_t, void *))vsnprintf_write, &data };
+	struct printf_spec ps = { vsnprintf_write, &data };
 
 	/* Print 0 at end of string - fix case that nothing will be printed. */
 	if (size > 0)
@@ -838,8 +837,7 @@ static int vprintf_write(const char *str, size_t count, void *unused)
 
 int vprintf(const char *fmt, va_list ap)
 {
-	struct printf_spec ps =
-	    { (int (*)(void *, size_t, void *))vprintf_write, NULL };
+	struct printf_spec ps = { vprintf_write, NULL };
 
 	return printf_core(fmt, &ps, ap);
 }




More information about the coreboot mailing list