#define bool int
+#define xstrncpy(d_,s_,l_) do { char* dst_=d_; dst_[0]='\0'; strncat((dst_),(s_),(l_)-1); } while(0)
+
typedef void Lang_function __P((FILE *));
typedef struct
{
len = strlen (cstack.cname[0]);
linebuffer_setlen (cn, len+1);
- strncpy (cn->buffer, cstack.cname[0],len+1);
+ xstrncpy (cn->buffer, cstack.cname[0],len+1);
}
for (i = 1; i < cstack.nl; i++)
{
fvdef = fvnone;
objdef = omethodtag;
linebuffer_setlen (&token_name, len);
- strncpy (token_name.buffer, str, len);
+ xstrncpy (token_name.buffer, str, len);
token_name.buffer[len] = '\0';
return TRUE;
}
len -= 1;
}
linebuffer_setlen (&token_name, len);
- strncpy (token_name.buffer,
+ xstrncpy (token_name.buffer,
newlb.buffer + off, len);
token_name.buffer[len] = '\0';
if (defun)
else
{
linebuffer_setlen (&token_name, toklen);
- strncpy (token_name.buffer,
+ xstrncpy (token_name.buffer,
newlb.buffer + tokoff, toklen);
token_name.buffer[toklen] = '\0';
/* Name macros and members. */
/* Save all values for later tagging. */
linebuffer_setlen (&tline, lb.len);
- strncpy(tline.buffer, lb.buffer, lb.len-1);
+ xstrncpy(tline.buffer, lb.buffer, lb.len-1);
save_lineno = lineno;
save_lcno = linecharno;
name = tline.buffer + (dbp - lb.buffer);
for (end = dbp; *end != '\0' && intoken (*end); end++)
continue;
linebuffer_setlen (&token_name, end - dbp);
- strncpy (token_name.buffer, dbp, end - dbp);
+ xstrncpy (token_name.buffer, dbp, end - dbp);
token_name.buffer[end - dbp] = '\0';
dbp = end;
else if (len + 1 > allocated)
xrnew (last, len + 1, char);
allocated = len + 1;
- strncpy (last, cp, len);
+ xstrncpy (last, cp, len);
last[len] = '\0';
}
}
else if (len + 1 > allocated)
xrnew (last, len + 1, char);
allocated = len + 1;
- strncpy (last, cp, len);
+ xstrncpy (last, cp, len);
last[len] = '\0';
}
}
{
dig = *out - '0';
diglen = regs->end[dig] - regs->start[dig];
- strncpy (t, in + regs->start[dig], diglen);
+ xstrncpy (t, in + regs->start[dig], diglen);
t += diglen;
}
else
filebuf.size *= 2;
xrnew (filebuf.buffer, filebuf.size, char);
}
- strncpy (filebuf.buffer + filebuf.len, lbp->buffer, lbp->len);
+ xstrncpy (filebuf.buffer + filebuf.len, lbp->buffer, lbp->len);
filebuf.len += lbp->len;
filebuf.buffer[filebuf.len++] = '\n';
filebuf.buffer[filebuf.len] = '\0';
register char *dp;
dp = xnew (len + 1, char);
- strncpy (dp, cp, len);
+ xstrncpy (dp, cp, len);
dp[len] = '\0';
return dp;
}
int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
char *result = xnew (len1 + len2 + len3 + 1, char);
- strncpy(result, s1, len1+1);
- strncpy(result + len1, s2, len2+1);
- strncpy(result + len1 + len2, s3, len3+1);
+ xstrncpy(result, s1, len1+1);
+ xstrncpy(result + len1, s2, len2+1);
+ xstrncpy(result + len1 + len2, s3, len3+1);
result[len1 + len2 + len3] = '\0';
return result;