aboutsummaryrefslogtreecommitdiffstats
path: root/field.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2014-09-21 15:49:47 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2014-09-21 15:49:47 -0400
commitb4d06df669e1eaf6c98cacb5c5f299bb5324e804 (patch)
tree50fb039c2cf280921e7650230cb42b0669e17f0b /field.c
parent94e3f93395de538d73826e128281a3ea9591a5a9 (diff)
parent8b4e8f702df30b2b2238158504de5d8eb436958d (diff)
downloadegawk-b4d06df669e1eaf6c98cacb5c5f299bb5324e804.tar.gz
egawk-b4d06df669e1eaf6c98cacb5c5f299bb5324e804.tar.bz2
egawk-b4d06df669e1eaf6c98cacb5c5f299bb5324e804.zip
Merge 'master' into select
Diffstat (limited to 'field.c')
-rw-r--r--field.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/field.c b/field.c
index 64ee1f02..4819ea94 100644
--- a/field.c
+++ b/field.c
@@ -40,7 +40,6 @@ typedef void (* Setfunc)(long, char *, long, NODE *);
static long (*parse_field)(long, char **, int, NODE *,
Regexp *, Setfunc, NODE *, NODE *, bool);
-static void rebuild_record(void);
static long re_parse_field(long, char **, int, NODE *,
Regexp *, Setfunc, NODE *, NODE *, bool);
static long def_parse_field(long, char **, int, NODE *,
@@ -140,7 +139,7 @@ set_field(long num,
/* rebuild_record --- Someone assigned a value to $(something).
Fix up $0 to be right */
-static void
+void
rebuild_record()
{
/*
@@ -148,9 +147,7 @@ rebuild_record()
* a size_t isn't big enough.
*/
unsigned long tlen;
- unsigned long ofslen;
NODE *tmp;
- NODE *ofs;
char *ops;
char *cops;
long i;
@@ -158,14 +155,12 @@ rebuild_record()
assert(NF != -1);
tlen = 0;
- ofs = force_string(OFS_node->var_value);
- ofslen = ofs->stlen;
for (i = NF; i > 0; i--) {
tmp = fields_arr[i];
tmp = force_string(tmp);
tlen += tmp->stlen;
}
- tlen += (NF - 1) * ofslen;
+ tlen += (NF - 1) * OFSlen;
if ((long) tlen < 0)
tlen = 0;
emalloc(ops, char *, tlen + 2, "rebuild_record");
@@ -183,11 +178,11 @@ rebuild_record()
}
/* copy OFS */
if (i != NF) {
- if (ofslen == 1)
- *cops++ = ofs->stptr[0];
- else if (ofslen != 0) {
- memcpy(cops, ofs->stptr, ofslen);
- cops += ofslen;
+ if (OFSlen == 1)
+ *cops++ = *OFS;
+ else if (OFSlen != 0) {
+ memcpy(cops, OFS, OFSlen);
+ cops += OFSlen;
}
}
}
@@ -231,7 +226,7 @@ rebuild_record()
fields_arr[i] = n;
assert((n->flags & WSTRCUR) == 0);
}
- cops += fields_arr[i]->stlen + ofslen;
+ cops += fields_arr[i]->stlen + OFSlen;
}
unref(fields_arr[0]);