1010#include <stdlib.h>
1111#include <string.h>
1212
13- int buf_vappendf (struct buffer * restrict buf , const char * format , va_list args )
13+ int buf_vappendf (
14+ struct buffer * restrict buf , const char * restrict format , va_list args )
1415{
15- char * b = (char * )(buf -> data + buf -> len );
1616 const size_t maxlen = buf -> cap - buf -> len ;
1717 if (maxlen == 0 ) {
1818 return 0 ;
1919 }
20- const int ret = vsnprintf (b , maxlen , format , args );
20+ char * restrict s = (char * )(buf -> data + buf -> len );
21+ const int ret = vsnprintf (s , maxlen , format , args );
2122 if (ret > 0 ) {
2223 buf -> len += MIN ((size_t )ret , maxlen - 1 );
2324 }
2425 return ret ;
2526}
2627
27- int buf_appendf (struct buffer * restrict buf , const char * format , ...)
28+ int buf_appendf (struct buffer * restrict buf , const char * restrict format , ...)
2829{
2930 va_list args ;
3031 va_start (args , format );
@@ -34,7 +35,7 @@ int buf_appendf(struct buffer *restrict buf, const char *format, ...)
3435}
3536
3637struct vbuffer *
37- vbuf_grow (struct vbuffer * restrict vbuf , const size_t want , const size_t maxcap )
38+ vbuf_grow (struct vbuffer * vbuf , const size_t want , const size_t maxcap )
3839{
3940 size_t cap = 0 , len = 0 ;
4041 if (vbuf != NULL ) {
@@ -63,8 +64,7 @@ vbuf_grow(struct vbuffer *restrict vbuf, const size_t want, const size_t maxcap)
6364 cap += grow ;
6465 } while (cap < want );
6566
66- struct vbuffer * restrict newbuf =
67- realloc (vbuf , sizeof (struct vbuffer ) + cap );
67+ struct vbuffer * newbuf = realloc (vbuf , sizeof (struct vbuffer ) + cap );
6868 if (newbuf == NULL ) {
6969 /* retry with minimal required capacity */
7070 cap = want ;
@@ -79,7 +79,7 @@ vbuf_grow(struct vbuffer *restrict vbuf, const size_t want, const size_t maxcap)
7979}
8080
8181struct vbuffer *
82- vbuf_append (struct vbuffer * restrict vbuf , const void * data , size_t n )
82+ vbuf_append (struct vbuffer * restrict vbuf , const void * restrict data , size_t n )
8383{
8484 if (n == 0 ) {
8585 return vbuf ;
@@ -95,28 +95,33 @@ vbuf_append(struct vbuffer *restrict vbuf, const void *data, size_t n)
9595 if (n > vbuf -> cap - vbuf -> len ) {
9696 n = vbuf -> cap - vbuf -> len ;
9797 }
98- (void )memcpy (vbuf -> data + vbuf -> len , data , n );
98+ unsigned char * restrict b = vbuf -> data + vbuf -> len ;
99+ (void )memcpy (b , data , n );
99100 vbuf -> len += n ;
100101 /* null-byte is reserved by vbuf_alloc() */
101- vbuf -> data [ vbuf -> len ] = '\0' ;
102+ b [ n ] = '\0' ;
102103 return vbuf ;
103104}
104105
105- struct vbuffer *
106- vbuf_vappendf (struct vbuffer * restrict vbuf , const char * format , va_list args )
106+ struct vbuffer * vbuf_vappendf (
107+ struct vbuffer * restrict vbuf , const char * restrict format ,
108+ va_list args )
107109{
108110 if (vbuf -> cap == vbuf -> len ) {
109111 /* allocation failure occurred, skip */
110112 return vbuf ;
111113 }
112- char * b = (char * )(vbuf -> data + vbuf -> len );
113- size_t maxlen = vbuf -> cap - vbuf -> len ;
114114
115- va_list args0 ;
116- va_copy (args0 , args );
117115 /* null-byte is reserved by vbuf_alloc() */
118- int ret = vsnprintf (b , maxlen + 1 , format , args0 );
119- va_end (args0 );
116+ int ret ;
117+ {
118+ char * restrict s = (char * )(vbuf -> data + vbuf -> len );
119+ const size_t maxlen = vbuf -> cap - vbuf -> len ;
120+ va_list args0 ;
121+ va_copy (args0 , args );
122+ ret = vsnprintf (s , maxlen + 1 , format , args0 );
123+ va_end (args0 );
124+ }
120125 if (ret <= 0 ) {
121126 return vbuf ;
122127 }
@@ -129,9 +134,9 @@ vbuf_vappendf(struct vbuffer *restrict vbuf, const char *format, va_list args)
129134 }
130135 vbuf = vbuf_grow (vbuf , want , SIZE_MAX );
131136 /* when failed, append as much as possible */
132- maxlen = vbuf -> cap - vbuf -> len ;
133- b = ( char * )( vbuf -> data + vbuf -> len ) ;
134- ret = vsnprintf (b , maxlen + 1 , format , args );
137+ char * restrict s = ( char * )( vbuf -> data + vbuf -> len ) ;
138+ const size_t maxlen = vbuf -> cap - vbuf -> len ;
139+ ret = vsnprintf (s , maxlen + 1 , format , args );
135140 if (ret > 0 ) {
136141 if ((size_t )ret < maxlen ) {
137142 vbuf -> len += (size_t )ret ;
@@ -143,11 +148,11 @@ vbuf_vappendf(struct vbuffer *restrict vbuf, const char *format, va_list args)
143148}
144149
145150struct vbuffer *
146- vbuf_appendf (struct vbuffer * restrict vbuf , const char * format , ...)
151+ vbuf_appendf (struct vbuffer * restrict vbuf , const char * restrict format , ...)
147152{
148153 va_list args ;
149154 va_start (args , format );
150- struct vbuffer * ret = vbuf_vappendf (vbuf , format , args );
155+ vbuf = vbuf_vappendf (vbuf , format , args );
151156 va_end (args );
152- return ret ;
157+ return vbuf ;
153158}
0 commit comments