summaryrefslogtreecommitdiff
path: root/do/join
diff options
context:
space:
mode:
Diffstat (limited to 'do/join')
-rw-r--r--do/join45
1 files changed, 0 insertions, 45 deletions
diff --git a/do/join b/do/join
deleted file mode 100644
index c5c5220099..0000000000
--- a/do/join
+++ /dev/null
@@ -1,45 +0,0 @@
-void
-do_join(TARG,arglast)
-register STR *TARG;
-int *arglast;
-{
- register STR **st = stack->ary_array;
- int sp = arglast[1];
- register int items = arglast[2] - sp;
- register char *delim = str_get(st[sp]);
- register STRLEN len;
- int delimlen = st[sp]->str_cur;
-
- st += sp + 1;
-
- len = (items > 0 ? (delimlen * (items - 1) ) : 0);
- if (TARG->str_len < len + items) { /* current length is way too short */
- while (items-- > 0) {
- if (*st)
- len += (*st)->str_cur;
- st++;
- }
- STR_GROW(TARG, len + 1); /* so try to pre-extend */
-
- items = arglast[2] - sp;
- st -= items;
- }
-
- if (items-- > 0)
- str_sset(TARG, *st++);
- else
- str_set(TARG,"");
- len = delimlen;
- if (len) {
- for (; items > 0; items--,st++) {
- str_ncat(TARG,delim,len);
- str_scat(TARG,*st);
- }
- }
- else {
- for (; items > 0; items--,st++)
- str_scat(TARG,*st);
- }
- STABSET(TARG);
-}
-