Skip to content

Commit a6266be

Browse files
committed
fix #402
1 parent fa3c63a commit a6266be

File tree

1 file changed

+12
-30
lines changed

1 file changed

+12
-30
lines changed

src/vf.c

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -57,39 +57,21 @@ K formKfCS(S s) // 0.0 $ "123\000456\000" is 123 ('\0' char)
5757
R Kf(r); //oom
5858
}
5959

60-
Z S formatBfn(K a,I*n){
61-
//XXX: This was copied from printAtDepth in k.c.
62-
I i,k,m; S s,r=alloc(1),rp=r;
63-
V *v=kW(a),*p;
64-
*n=0;
65-
for(i=0;(p=v[i]);i++)
66-
{ //TODO: mute extraneous :
67-
I q=(L)p;
68-
if(q < DT_SIZE && q >= DT_SPECIAL_VERB_OFFSET)
69-
{ s=DT[q].text;
70-
k=strlen(s);
71-
m=s[k-1]==':' && 1==DT[q].arity;
72-
U(r=realloc(r,1+(*n+=k+m)))
73-
memcpy(rp,s,k);
74-
rp+=k;
75-
if(m)*rp++=':';
76-
}
77-
else if((k=sva(p))){m=k!=2;U(r=realloc(r,1+(*n+=1+m))) *rp++=verbsChar(p);if(m)*rp++=':';}
78-
else if((k=adverbClass(p))) {m=k!=1;U(r=realloc(r,1+(*n+=1+m))) *rp++=adverbsChar(p);if(m)*rp++=':';}
79-
else; //XXX
80-
}
81-
*rp=0;R r;
82-
}
83-
84-
Z K formatFn(K a)
85-
{
60+
Z K formatFn(K a){
61+
V *v=kW(a),p=v[0]; L q=(L)p; I k,m,n; K z;
8662
SW(a->n){
87-
CS(1,{K k;I n;S s=formatBfn(a,&n);U(s) k=newK(-3,n);memcpy(kC(k),s,n+1);R k;})
63+
CS(1,if(q<DT_SIZE && q >= DT_SPECIAL_VERB_OFFSET) {
64+
S s=DT[q].text; n=strlen(s); z=newK(-3,n);
65+
memcpy(kC(z),s,n+1); R z; }
66+
else if(k=sva(p)){
67+
C t[3]; t[1]=t[2]='\0'; t[0]=verbsChar(p);
68+
m=k!=2; if(m)t[1]=':'; n=strlen(t); z=newK(-3,n);
69+
memcpy(kC(z),&t,n+1); R z; }
70+
else if(k=adverbClass(p))R 0;
71+
else R 0; )
8872
CS(2,R 0)
8973
CS(3,{K k;S f=kC(kV(a)[CODE]);I n=strlen(f);k=newK(-3,n+2);kC(k)[0]='{';memcpy(kC(k)+1,f,n);kC(k)[n+1]='}';kC(k)[n+2]=0;R k;})
90-
CD:R 0;
91-
}
92-
}
74+
CD:R 0; } }
9375

9476
Z K formatS(S x)
9577
{ I n=strlen(x);

0 commit comments

Comments
 (0)