]> git.draconx.ca Git - cdecl99.git/blobdiff - src/explain.c
libcdecl: Rework specifier output logic.
[cdecl99.git] / src / explain.c
index 4deadac2d410baadc53355bc414aac9bf14fef4c..fa340952c96a4a837345180ebfd6e7eeed2bc62b 100644 (file)
 
 static size_t explain_specs(char **dst, size_t *dstlen, struct cdecl_declspec *s, unsigned mask)
 {
-       size_t rc;
+       size_t ret;
 
-       rc = cdecl__explain_specs(*dst, *dstlen, s, mask);
-       return cdecl__advance(dst, dstlen, rc);
+       ret = cdecl__emit_specs(dst, dstlen, s, mask);
+       return ret + cdecl__emit(dst, dstlen, " " + !ret);
 }
 
 static size_t
 explain_specs_post(char **dst, size_t *dstlen, struct cdecl_declspec *s)
 {
-       size_t rc;
-
-       rc = cdecl__explain_specs(*dst, *dstlen, s, POST_SPECS);
-       return cdecl__advance_(dst, dstlen, rc);
+       return cdecl__emit_specs(dst, dstlen, s, POST_SPECS);
 }
 
 /*
@@ -95,7 +92,7 @@ explain_array(char **dst, size_t *dstlen, struct cdecl_array *a)
                ret += rc;
        } else {
                rc = snprintf(*dst, *dstlen, "%.0" PRIuMAX, a->length);
-               ret += cdecl__advance_(dst, dstlen, rc);
+               ret += cdecl__advance(dst, dstlen, rc);
        }
 
        return ret + cdecl__emit(dst, dstlen, " of " + !rc);