Skip to content

Commit 3a661db

Browse files
committed
contrib: sync csnippets
Signed-off-by: He Xian <hexian000@outlook.com>
1 parent c76732d commit 3a661db

File tree

10 files changed

+153
-131
lines changed

10 files changed

+153
-131
lines changed

contrib/csnippets/algo/cityhash.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ static inline uint64_t shift_mix(const uint64_t v)
8585

8686
// Hash 128 input bits down to 64 bits of output.
8787
// This is intended to be a reasonably good hash function.
88-
static inline uint64_t Hash128to64(const uint64_t x[2])
88+
static inline uint64_t Hash128to64(const uint64_t x[restrict 2])
8989
{
9090
// Murmur-inspired hashing.
9191
const uint64_t kMul = 0x9ddfea08eb382d69ULL;
@@ -113,7 +113,7 @@ static inline uint64_t HashLen16mul(uint64_t u, uint64_t v, uint64_t mul)
113113
return b;
114114
}
115115

116-
static uint64_t HashLen0to16(const unsigned char *s, size_t len)
116+
static uint64_t HashLen0to16(const unsigned char *restrict s, size_t len)
117117
{
118118
if (len >= 8) {
119119
uint64_t mul = k2 + len * 2;
@@ -142,7 +142,8 @@ static uint64_t HashLen0to16(const unsigned char *s, size_t len)
142142

143143
// This probably works well for 16-byte strings as well, but it may be overkill
144144
// in that case.
145-
static inline uint64_t HashLen17to32(const unsigned char *s, size_t len)
145+
static inline uint64_t
146+
HashLen17to32(const unsigned char *restrict s, size_t len)
146147
{
147148
uint64_t mul = k2 + len * 2;
148149
uint64_t a = read_uint64(s) * k1;
@@ -181,7 +182,8 @@ static inline void WeakHashLen32WithSeedsStr(
181182
}
182183

183184
// Return an 8-byte hash for 33 to 64 bytes.
184-
static inline uint64_t HashLen33to64(const unsigned char *s, size_t len)
185+
static inline uint64_t
186+
HashLen33to64(const unsigned char *restrict s, size_t len)
185187
{
186188
uint64_t mul = k2 + len * 2;
187189
uint64_t a = read_uint64(s) * k2;
@@ -203,7 +205,7 @@ static inline uint64_t HashLen33to64(const unsigned char *s, size_t len)
203205
return b + x;
204206
}
205207

206-
static uint64_t CityHash64(const void *ptr, size_t len)
208+
static uint64_t CityHash64(const void *restrict ptr, size_t len)
207209
{
208210
const unsigned char *s = ptr;
209211
if (len <= 32) {
@@ -248,13 +250,14 @@ static uint64_t CityHash64(const void *ptr, size_t len)
248250
HashLen16(v[1], w[1]) + x);
249251
}
250252

251-
static uint64_t
252-
CityHash64WithSeeds(const void *ptr, size_t len, uint64_t seed0, uint64_t seed1)
253+
static uint64_t CityHash64WithSeeds(
254+
const void *restrict ptr, size_t len, uint64_t seed0, uint64_t seed1)
253255
{
254256
return HashLen16(CityHash64(ptr, len) - seed0, seed1);
255257
}
256258

257-
static uint64_t CityHash64WithSeed(const void *ptr, size_t len, uint64_t seed)
259+
static uint64_t
260+
CityHash64WithSeed(const void *restrict ptr, size_t len, uint64_t seed)
258261
{
259262
return CityHash64WithSeeds(ptr, len, k2, seed);
260263
}
@@ -297,8 +300,8 @@ static void CityMurmur(
297300
}
298301

299302
static void CityHash128WithSeed(
300-
unsigned char hash[16], const void *ptr, size_t len,
301-
const unsigned char seed[16])
303+
unsigned char hash[restrict 16], const void *restrict ptr, size_t len,
304+
const unsigned char seed[restrict 16])
302305
{
303306
const unsigned char *s = ptr;
304307
if (len < 128) {
@@ -385,20 +388,21 @@ static void CityHash128(unsigned char hash[16], const void *ptr, size_t len)
385388
}
386389
*/
387390

388-
uint64_t cityhash64_64(const void *ptr, const size_t len, const uint64_t seed)
391+
uint64_t
392+
cityhash64_64(const void *restrict ptr, const size_t len, const uint64_t seed)
389393
{
390394
return CityHash64WithSeed(ptr, len, seed);
391395
}
392396

393-
uint32_t
394-
cityhash64low_32(const void *ptr, const size_t len, const uint32_t seed)
397+
uint32_t cityhash64low_32(
398+
const void *restrict ptr, const size_t len, const uint32_t seed)
395399
{
396400
return (uint32_t)CityHash64WithSeed(ptr, len, seed);
397401
}
398402

399403
void cityhash128_128(
400-
unsigned char hash[16], const void *ptr, const size_t len,
401-
const unsigned char seed[16])
404+
unsigned char hash[restrict 16], const void *restrict ptr,
405+
const size_t len, const unsigned char seed[restrict 16])
402406
{
403407
CityHash128WithSeed(hash, ptr, len, seed);
404408
}

contrib/csnippets/net/addr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <stddef.h>
88
#include <string.h>
99

10-
bool splithostport(char *str, char **host, char **port)
10+
bool splithostport(char *str, char **restrict host, char **restrict port)
1111
{
1212
char *service = strrchr(str, ':');
1313
if (service == NULL) {

contrib/csnippets/net/http.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static const struct {
6060
"The gateway did not receive a timely response from the upstream server or application." },
6161
};
6262

63-
static char *skip_whitespace(char *s)
63+
static char *skip_whitespace(char *restrict s)
6464
{
6565
while (*s == ' ' || *s == '\t') {
6666
++s;
@@ -124,12 +124,12 @@ char *http_parsehdr(char *buf, char **key, char **value)
124124
return next;
125125
}
126126

127-
size_t http_date(char *buf, const size_t buf_size)
127+
size_t http_date(char *restrict buf, const size_t buf_size)
128128
{
129129
/* RFC 7231: Section 7.1.1.1 */
130130
static const char fmt[] = "%a, %d %b %Y %H:%M:%S GMT";
131131
const time_t now = time(NULL);
132-
const struct tm *gmt = gmtime(&now);
132+
const struct tm *restrict gmt = gmtime(&now);
133133
return strftime(buf, buf_size, fmt, gmt);
134134
}
135135

@@ -143,7 +143,7 @@ const char *http_status(const uint_least16_t code)
143143
return NULL;
144144
}
145145

146-
int http_error(char *buf, size_t buf_size, const uint_least16_t code)
146+
int http_error(char *restrict buf, size_t buf_size, const uint_least16_t code)
147147
{
148148
const char *name = NULL, *info = NULL;
149149
for (size_t i = 0; i < ARRAY_SIZE(http_resp); i++) {

contrib/csnippets/net/url.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#include <stdint.h>
1010
#include <string.h>
1111

12-
static void hex(char *p, uint_fast8_t c)
12+
static void hex(char *restrict p, const uint_fast8_t c)
1313
{
1414
static const char hex[] = "0123456789ABCDEF";
1515
p[1] = hex[c & UINT8_C(0xF)];
@@ -150,15 +150,15 @@ size_t url_escape_path(char *buf, size_t buf_size, const char *path)
150150
return escape(buf, buf_size, path, SIZE_MAX, "-_.~$&+,/:;=@", false);
151151
}
152152

153-
size_t url_escape_query(char *buf, size_t buf_size, const char *restrict query)
153+
size_t url_escape_query(char *buf, size_t buf_size, const char *query)
154154
{
155155
const size_t cap = buf_size;
156156
for (;;) {
157-
const char *restrict next = strchr(query, '&');
157+
const char *next = strchr(query, '&');
158158
if (next == NULL) {
159159
next = query + strlen(query);
160160
}
161-
const char *restrict eq = memchr(query, '=', next - query);
161+
const char *eq = memchr(query, '=', next - query);
162162
if (eq == NULL) {
163163
return 0;
164164
}
@@ -270,9 +270,9 @@ static bool unescape(char *str, const bool space)
270270
return true;
271271
}
272272

273-
static inline char *strlower(char *s)
273+
static inline char *strlower(char *restrict s)
274274
{
275-
for (unsigned char *restrict p = (unsigned char *)s; *p != '\0'; ++p) {
275+
for (unsigned char *p = (unsigned char *)s; *p != '\0'; ++p) {
276276
*p = tolower(*p);
277277
}
278278
return s;
@@ -372,7 +372,7 @@ bool url_parse(char *raw, struct url *restrict url)
372372
return true;
373373
}
374374

375-
bool url_path_segment(char **path, char **segment)
375+
bool url_path_segment(char **restrict path, char **restrict segment)
376376
{
377377
char *s = *path;
378378
while (*s == '/') {
@@ -391,7 +391,8 @@ bool url_path_segment(char **path, char **segment)
391391
return true;
392392
}
393393

394-
bool url_query_component(char **query, struct url_query_component *comp)
394+
bool url_query_component(
395+
char **restrict query, struct url_query_component *restrict comp)
395396
{
396397
char *s = *query;
397398
char *next = strchr(s, '&');
@@ -420,7 +421,8 @@ bool url_query_component(char **query, struct url_query_component *comp)
420421
return true;
421422
}
422423

423-
bool url_unescape_userinfo(char *raw, char **username, char **password)
424+
bool url_unescape_userinfo(
425+
char *raw, char **restrict username, char **restrict password)
424426
{
425427
const char valid_chars[] = "-._:~!$&\'()*+,;=%@'";
426428
char *colon = NULL;

contrib/csnippets/utils/buffer.c

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,22 @@
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

3637
struct 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

8181
struct 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

145150
struct 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
}

contrib/csnippets/utils/buffer.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ struct buffer {
3535

3636
/** @internal */
3737
static inline size_t
38-
buf_append(struct buffer *restrict buf, const void *data, size_t n)
38+
buf_append(struct buffer *restrict buf, const void *restrict data, size_t n)
3939
{
4040
n = MIN(n, buf->cap - buf->len);
4141
if (n == 0) {
4242
return 0;
4343
}
44-
unsigned char *b = buf->data + buf->len;
45-
(void)memcpy(b, data, n);
44+
void *restrict dest = buf->data + buf->len;
45+
(void)memcpy(dest, data, n);
4646
buf->len += n;
4747
return n;
4848
}
@@ -60,16 +60,15 @@ struct vbuffer {
6060
};
6161

6262
/** @internal */
63-
static inline struct vbuffer *
64-
vbuf_alloc(struct vbuffer *restrict vbuf, const size_t cap)
63+
static inline struct vbuffer *vbuf_alloc(struct vbuffer *vbuf, const size_t cap)
6564
{
6665
if (cap == 0) {
6766
free(vbuf);
6867
return NULL;
6968
}
7069
const size_t len = (vbuf != NULL) ? vbuf->len : 0;
7170
/* reserve 1 byte for null terminator */
72-
struct vbuffer *restrict newbuf =
71+
struct vbuffer *newbuf =
7372
realloc(vbuf, sizeof(struct vbuffer) + cap + 1);
7473
if (newbuf == NULL) {
7574
return vbuf;

0 commit comments

Comments
 (0)