1
0
mirror of https://github.com/haiwen/ccnet-server.git synced 2025-04-28 18:43:21 +00:00
ccnet-server/lib/string-util.h
2016-08-19 13:54:34 +08:00

60 lines
1.3 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#ifndef CCNET_STRING_H
#define CCNET_STRING_H
#include <stdio.h>
#define END_0(buf,len) (buf[(len)-1] == '\0')
static inline int get_version(char *str)
{
int v;
if (str[0] != 'v')
return 0;
if (sscanf(str+1, "%d", &v) != 1)
return 0;
return v;
}
#define sgoto_next(p) do { \
while (*p != ' ' && *p) ++p; \
if (*p != ' ') \
goto error; \
*p = '\0'; \
++p; \
} while (0)
#define sget_len(val, p) do { \
char *tmp = p; \
sgoto_next(p); \
val = atoi(tmp); \
if (val == 0) \
goto error; \
} while (0)
/* get a string with format "%s " */
#define sget_str(str, p) do { \
str = p; \
sgoto_next(p); \
} while (0)
/* get a string with format "%d %s " */
#define sget_str_with_len(str, p) do { \
int len; \
sget_len(len, p); \
str = p; \
p += len; \
*p = '\0'; \
++p; \
} while (0)
#endif