/* nfstr.c */

#include <ctype.h>
#include <stdlib.h>
#include <string.h>

#include "nfstr.h"

char *strcpyC(char *s1, const char *s2)
{
  int n;
  for (n=0; s2[n]>31; ++n)
    s1[n] = s2[n];
  s1[n] = 0;
  return s1;
}

char *strncpyC(char *s1, const char *s2, int m)
{
  int n;
  for (n=0; s2[n]>31 && n<m; ++n)
    s1[n] = s2[n];
  if (n < m)
    s1[n] = 0;
  return s1;
}

int strincmp(const char *s1, const char *s2, int n)
{
  char ch1, ch2;

  for( ; n > 0; --n)
  {
    if (*s1 < 32 && *s2 < 32)
      return 0; /* s1 and s2 are equal */
    if (*s1 < 32)
      return -1;
    if (*s2 < 32)
      return 1;

    ch1 = toupper(*s1);
    ch2 = toupper(*s2);

    if (ch1 != ch2)
      return (int) (ch1 - ch2);
    s1++;
    s2++;
  }
  return 0;
}

char *strcpycomma(char *s1, const char *s2)
{
  int n;
  for (n=0; s2[n]>31 && s2[n]!=','; ++n)
    s1[n] = s2[n];
  s1[n] = 0;
  return s1;
}

char *strdupC(const char *s)
{
  char *s2;
  int n;
  for (n = 0; s[n] > 31; ++n);
  s2 = malloc(n + 1);
  if (!s2)
    return NULL;
  memcpy(s2, s, n);
  s2[n] = 0;
  return s2;
}
