cst_string *cst_implode(const cst_val *sl) { const cst_val *v; int l=0; char *s; for (v=sl; v; v=val_cdr(v)) { if (val_stringp(val_car(v))) l += cst_strlen(val_string(val_car(v))); } s = cst_alloc(cst_string,l+1); for (v=sl; v; v=val_cdr(v)) { if (val_stringp(val_car(v))) cst_sprintf(s,"%s%s",s,val_string(val_car(v))); } return s; }
char *ru_implode(const cst_val *l) { const cst_val *v; size_t n=1; char *s,*p; for(v=l;(v!=NULL);v=val_cdr(v)) { if(val_stringp(val_car(v))) n+=strlen(val_string(val_car(v))); } s=cst_alloc(char,n); p=s; for(v=l;(v!=NULL);v=val_cdr(v)) { if(val_stringp(val_car(v))) { n=strlen(val_string(val_car(v))); memcpy(p,val_string(val_car(v)),n); p+=n; } } *p='\0'; return s; }