/********************************************************
 * File: jbstrcpy.c
 * Created at Sun Jan 28 22:10:27 MSK 2001 by raorn // raorn@binec.ru
 * Token manipulation
 * $Id: jbstrcpy.c,v 1.4 2001/03/08 06:08:58 raorn Exp $
 *******************************************************/
#include <machine/defs.h>

#include <stdlib.h>

bool jbstrcpy(uchar * dest, uchar * src, ulong maxlen, ulong * jbc)
{
  ulong d = 0;
  ulong stopchar1, stopchar2;
  ulong jbcpos;

  jbcpos = *jbc;

  while (src[jbcpos] == 32 || src[jbcpos] == 9)
    jbcpos++;

  if (src[jbcpos] == '"') {
    jbcpos++;
    stopchar1 = '"';
    stopchar2 = 0;
  } else {
    stopchar1 = ' ';
    stopchar2 = 9;
  }

  while (src[jbcpos] != stopchar1 && src[jbcpos] != stopchar2 && src[jbcpos] != 10 && src[jbcpos] != 0) {
    if (src[jbcpos] == '\\' && src[jbcpos + 1] != 0 && src[jbcpos + 1] != 10)
      jbcpos++;

    if (d < maxlen - 1)
      dest[d++] = src[jbcpos];

    jbcpos++;
  }

  dest[d] = 0;

  if (src[jbcpos] == 9 || src[jbcpos] == ' ' || src[jbcpos] == '"')
    jbcpos++;

  *jbc = jbcpos;

  if (d != 0 || stopchar1 == '"')
    return (TRUE);

  return (FALSE);
}


syntax highlighted by Code2HTML, v. 0.9.1