2 * netsniff-ng - the packet sniffing beast
3 * Copyright 2009, 2010 Daniel Borkmann.
4 * Subject to the GPL, version 2.
15 size_t strlcpy(char *dest
, const char *src
, size_t size
)
17 size_t ret
= strlen(src
);
20 size_t len
= (ret
>= size
) ? size
- 1 : ret
;
22 memcpy(dest
, src
, len
);
29 static inline int vslprintf(char *dst
, size_t size
, const char *fmt
, va_list ap
)
33 ret
= vsnprintf(dst
, size
, fmt
, ap
);
39 int slprintf(char *dst
, size_t size
, const char *fmt
, ...)
45 ret
= vslprintf(dst
, size
, fmt
, ap
);
51 int slprintf_nocheck(char *dst
, size_t size
, const char *fmt
, ...)
57 ret
= vslprintf(dst
, size
, fmt
, ap
);
63 noinline
void *xmemset(void *s
, int c
, size_t n
)
68 for (i
= 0; i
< n
; ++i
)
74 char *strtrim_right(char *p
, char c
)
92 char *argv2str(int startind
, int argc
, char **argv
)
98 for (i
= startind
; i
< argc
; ++i
) {
99 size_t alen
= strlen(argv
[i
]) + 2;
100 size_t slen
= str
? strlen(str
) : 0;
102 str
= xrealloc(str
, slen
+ alen
);
103 ret
= slprintf(str
+ offset
, strlen(argv
[i
]) + 2, "%s ", argv
[i
]);
105 panic("Cannot concatenate string!\n");