--- stack/stack.c 2002/03/21 03:19:32 1.120 +++ stack/stack.c 2002/03/27 19:53:01 1.123 @@ -1109,7 +1109,7 @@ } if(myenv.interactive) { - printf("Stack version $Revision: 1.120 $\n\ + printf("Stack version $Revision: 1.123 $\n\ Copyright (C) 2002 Mats Alritzson and Teddy Hogeborn\n\ Stack comes with ABSOLUTELY NO WARRANTY; for details type 'warranty;'.\n\ This is free software, and you are welcome to redistribute it\n\ @@ -1651,7 +1651,7 @@ iterator= foo; - while(iterator!=NULL) { + while(iterator->type!=empty) { push_val(env, CAR(iterator)); push_val(env, loop); eval(env); if(env->err) return; @@ -1670,7 +1670,9 @@ extern void to(environment *env) { int ending, start, i; - value *iterator, *temp; + value *iterator, *temp, *end; + + end= new_val(env); if(env->head->type==empty || CDR(env->head)->type==empty) { printerr("Too Few Arguments"); @@ -1705,11 +1707,11 @@ if(iterator->type==empty || (CAR(iterator)->type==symb && CAR(iterator)->content.sym->id[0]=='[')) { - temp= NULL; + temp= end; toss(env); } else { /* Search for first delimiter */ - while(CDR(iterator)!=NULL + while(CDR(iterator)->type!=empty && (CAR(CDR(iterator))->type!=symb || CAR(CDR(iterator))->content.sym->id[0]!='[')) iterator= CDR(iterator); @@ -1717,9 +1719,9 @@ /* Extract list */ temp= env->head; env->head= CDR(iterator); - CDR(iterator)= NULL; + CDR(iterator)= end; - if(env->head!=NULL) + if(env->head->type!=empty) toss(env); } @@ -2524,3 +2526,9 @@ swap(env); if(env->err) return; toss(env); } + +extern void sx_646f(environment *env) +{ + swap(env); if(env->err) return; + eval(env); +}