Skip to content
Snippets Groups Projects
string.c 1.08 KiB
Newer Older
#include "types.h"
#include "defs.h"

rsc's avatar
rsc committed
void*
memset(void *dst, int c, uint n)
rtm's avatar
rtm committed
{
rsc's avatar
rsc committed
  char *d;
rtm's avatar
rtm committed

rsc's avatar
rsc committed
  d = (char*)dst;
rtm's avatar
rtm committed
  while(n-- > 0)
    *d++ = c;

  return dst;
}
memcmp(const void *v1, const void *v2, uint n)
rsc's avatar
rsc committed
  const uchar *s1, *s2;
  
  s1 = v1;
  s2 = v2;
rsc's avatar
rsc committed
  while(n-- > 0) {
    if(*s1 != *s2)
rsc's avatar
rsc committed
      return *s1 - *s2;
    s1++, s2++;
  }

  return 0;
}
rsc's avatar
rsc committed
void*
memmove(void *dst, const void *src, uint n)
rsc's avatar
rsc committed
  if(s < d && s + n > d) {
rsc's avatar
rsc committed
    while(n-- > 0)
rsc's avatar
rsc committed
    while(n-- > 0)
kaashoek's avatar
kaashoek committed

int
strncmp(const char *p, const char *q, uint n)
kaashoek's avatar
kaashoek committed
{
rsc's avatar
rsc committed
  while(n > 0 && *p && *p == *q)
    n--, p++, q++;
rsc's avatar
rsc committed
  if(n == 0)
    return 0;
  else
    return (int) ((uchar) *p - (uchar) *q);
kaashoek's avatar
kaashoek committed
}
rsc's avatar
rsc committed

// Like strncpy but guaranteed to NUL-terminate.
char*
safestrcpy(char *s, const char *t, int n)
{
  char *os;
  
  os = s;
  if(n <= 0)
    return os;
  while(--n > 0 && (*s++ = *t++) != 0)
    ;
  *s = 0;
  return os;
}

rsc's avatar
 
rsc committed
int
strlen(const char *s)
{
  int n;

  for(n = 0; s[n]; n++)
    ;
  return n;
}