version 1.53, 2008/05/22 07:03:02 |
version 1.54, 2012/07/02 21:56:25 |
|
|
{ |
{ |
RCSNUM *rnp; |
RCSNUM *rnp; |
|
|
rnp = xmalloc(sizeof(*rnp)); |
rnp = xcalloc(1, sizeof(*rnp)); |
rnp->rn_len = 0; |
rnp->rn_len = 0; |
rnp->rn_id = NULL; |
|
|
|
return (rnp); |
return (rnp); |
} |
} |
|
|
void |
void |
rcsnum_free(RCSNUM *rn) |
rcsnum_free(RCSNUM *rn) |
{ |
{ |
if (rn->rn_id != NULL) |
|
xfree(rn->rn_id); |
|
xfree(rn); |
xfree(rn); |
} |
} |
|
|
|
|
strlcat(buf, str, blen) >= blen) |
strlcat(buf, str, blen) >= blen) |
fatal("rcsnum_tostr: truncation"); |
fatal("rcsnum_tostr: truncation"); |
} |
} |
|
|
return (buf); |
return (buf); |
} |
} |
|
|
|
|
len = depth; |
len = depth; |
|
|
rcsnum_setsize(ndst, len); |
rcsnum_setsize(ndst, len); |
/* Overflow checked in rcsnum_setsize(). */ |
memcpy(ndst->rn_id, nsrc->rn_id, len * sizeof(*(nsrc->rn_id))); |
(void)memcpy(ndst->rn_id, nsrc->rn_id, |
|
len * sizeof(*(nsrc->rn_id))); |
|
} |
} |
|
|
/* |
/* |
|
|
const char *sp; |
const char *sp; |
char *s; |
char *s; |
|
|
if (nump->rn_id == NULL) |
|
nump->rn_id = xmalloc(sizeof(*(nump->rn_id))); |
|
|
|
nump->rn_len = 0; |
nump->rn_len = 0; |
nump->rn_id[0] = 0; |
nump->rn_id[0] = 0; |
|
|
|
|
goto rcsnum_aton_failed; |
goto rcsnum_aton_failed; |
|
|
nump->rn_len++; |
nump->rn_len++; |
nump->rn_id = xrealloc(nump->rn_id, |
|
nump->rn_len + 1, sizeof(*(nump->rn_id))); |
|
nump->rn_id[nump->rn_len] = 0; |
nump->rn_id[nump->rn_len] = 0; |
continue; |
continue; |
} |
} |
|
|
/* We can't have a single-digit rcs number. */ |
/* We can't have a single-digit rcs number. */ |
if (nump->rn_len == 0) { |
if (nump->rn_len == 0) { |
nump->rn_len++; |
nump->rn_len++; |
nump->rn_id = xrealloc(nump->rn_id, |
|
nump->rn_len + 1, sizeof(*(nump->rn_id))); |
|
nump->rn_id[nump->rn_len] = 0; |
nump->rn_id[nump->rn_len] = 0; |
} |
} |
|
|
|
|
|
|
rcsnum_aton_failed: |
rcsnum_aton_failed: |
nump->rn_len = 0; |
nump->rn_len = 0; |
xfree(nump->rn_id); |
|
nump->rn_id = NULL; |
|
return (-1); |
return (-1); |
} |
} |
|
|
|
|
static void |
static void |
rcsnum_setsize(RCSNUM *num, u_int len) |
rcsnum_setsize(RCSNUM *num, u_int len) |
{ |
{ |
num->rn_id = xrealloc(num->rn_id, len, sizeof(*(num->rn_id))); |
|
num->rn_len = len; |
num->rn_len = len; |
} |
} |
|
|