/* Count arguments. */ \
     size_t count = 1; /* arg */ \
     va_start(ap, arg); \
-    while (va_arg(ap, char const *)) { \
+    while (va_arg(ap, char *)) { \
         count++; \
     } \
     va_end(ap); \
     \
     /* Copy varargs. */ \
     char *args[count + 1 /* terminating NULL */]; \
-    args[0] = (char *)arg; \
+    args[0] = (char *)arg; /* there's no other way around the cast */ \
     \
     size_t i = 1; \
     va_start(ap, arg); \
 
     DLSYM_FUNCTION(real_close, "close");
 
     if (first_call) {
-        char nl = '\n';
+        char const nl = '\n';
         real_write(fd, &nl, 1);
     }
     real_write(fd, buffer, (size_t)written);