Remove libbsd support
This commit is contained in:
parent
46be9fd805
commit
6aa4b6de39
7 changed files with 87 additions and 46 deletions
88
util.c
88
util.c
|
@ -6,32 +6,94 @@
|
|||
* of these functions.
|
||||
*/
|
||||
|
||||
#include <util.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <lua.h>
|
||||
#include <lauxlib.h>
|
||||
|
||||
int lfail(lua_State *L, const char* mesg)
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
lfail(lua_State *L, const char* mesg)
|
||||
{
|
||||
luaL_pushfail(L);
|
||||
lua_pushstring(L, mesg);
|
||||
return LFAIL_RET;
|
||||
}
|
||||
|
||||
void strprepend(char *s, const char *t)
|
||||
#ifndef BSD
|
||||
/*
|
||||
* Appends src to string dst of size dsize (unlike strncat, dsize is the
|
||||
* full size of dst, not space left). At most dsize-1 characters
|
||||
* will be copied. Always NUL terminates (unless dsize <= strlen(dst)).
|
||||
* Returns strlen(src) + MIN(dsize, strlen(initial dst)).
|
||||
* If retval >= dsize, truncation occurred.
|
||||
*/
|
||||
size_t
|
||||
strlcat(char *dst, const char *src, size_t dsize)
|
||||
{
|
||||
const char *odst = dst;
|
||||
const char *osrc = src;
|
||||
size_t n = dsize;
|
||||
size_t dlen;
|
||||
|
||||
/* Find the end of dst and adjust bytes left but don't go past end. */
|
||||
while (n-- != 0 && *dst != '\0')
|
||||
dst++;
|
||||
dlen = dst - odst;
|
||||
n = dsize - dlen;
|
||||
|
||||
if (n-- == 0)
|
||||
return(dlen + strlen(src));
|
||||
while (*src != '\0') {
|
||||
if (n != 0) {
|
||||
*dst++ = *src;
|
||||
n--;
|
||||
}
|
||||
src++;
|
||||
}
|
||||
*dst = '\0';
|
||||
|
||||
return(dlen + (src - osrc)); /* count does not include NUL */
|
||||
}
|
||||
/*
|
||||
* Copy string src to buffer dst of size dsize. At most dsize-1
|
||||
* chars will be copied. Always NUL terminates (unless dsize == 0).
|
||||
* Returns strlen(src); if retval >= dsize, truncation occurred.
|
||||
*/
|
||||
size_t
|
||||
strlcpy(char *dst, const char *src, size_t dsize)
|
||||
{
|
||||
const char *osrc = src;
|
||||
size_t nleft = dsize;
|
||||
|
||||
/* Copy as many bytes as will fit. */
|
||||
if (nleft != 0) {
|
||||
while (--nleft != 0) {
|
||||
if ((*dst++ = *src++) == '\0')
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Not enough room in dst, add NUL and traverse rest of src. */
|
||||
if (nleft == 0) {
|
||||
if (dsize != 0)
|
||||
*dst = '\0'; /* NUL-terminate dst */
|
||||
while (*src++)
|
||||
;
|
||||
}
|
||||
|
||||
return(src - osrc - 1); /* count does not include NUL */
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Prepends t to s.
|
||||
*/
|
||||
void
|
||||
strprepend(char *s, const char *t)
|
||||
{
|
||||
size_t len = strlen(t);
|
||||
memmove(s + len, s, strlen(s) + 1);
|
||||
memcpy(s, t, len);
|
||||
}
|
||||
|
||||
void strslice(const char *s, char *buf, size_t start, size_t end)
|
||||
{
|
||||
size_t j = 0;
|
||||
for (size_t i = start; i <= end; ++i) {
|
||||
buf[j++] = s[i];
|
||||
}
|
||||
buf[j] = 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue