--- stack/stack.c 2003/08/11 14:31:48 1.133 +++ stack/stack.c 2003/08/13 06:12:26 1.134 @@ -23,7 +23,7 @@ #include "stack.h" -const char* start_message= "Stack version $Revision: 1.133 $\n\ +const char* start_message= "Stack version $Revision: 1.134 $\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\ @@ -585,13 +585,18 @@ extern void swap(environment *env) { value *temp= env->head; - - if(env->head->type == empty || CDR(env->head)->type == empty) { + + switch(check_args(env, unknown, unknown, empty)) { + case 1: printerr(env, "Too Few Arguments"); - env->err=1; return; + case 2: + printerr(env, "Bad Argument Type"); + return; + default: + break; } - + env->head= CDR(env->head); CDR(temp)= CDR(env->head); CDR(env->head)= temp; @@ -603,16 +608,15 @@ { value *val; - if(env->head->type==empty) { + switch(check_args(env, symb, empty)) { + case 1: printerr(env, "Too Few Arguments"); - env->err= 1; return; - } - - if(CAR(env->head)->type!=symb) { + case 2: printerr(env, "Bad Argument Type"); - env->err= 2; return; + default: + break; } val= CAR(env->head)->content.sym->val; @@ -641,10 +645,15 @@ gc_maybe(env); - if(env->head->type==empty) { + switch(check_args(env, unknown, empty)) { + case 1: printerr(env, "Too Few Arguments"); - env->err= 1; return; + case 2: + printerr(env, "Bad Argument Type"); + return; + default: + break; } switch(CAR(env->head)->type) { @@ -759,7 +768,7 @@ } if(myenv.interactive) - printf(start_message); + puts(start_message); while(1) { if(myenv.in_string==NULL) { @@ -854,19 +863,18 @@ { value *old_head, *new_head, *item; - if(env->head->type==empty) { - printerr(env, "Too Few Arguments"); - env->err= 1; - return; - } - if(CAR(env->head)->type==empty) return; /* Don't reverse an empty list */ - if(CAR(env->head)->type!=tcons) { + switch(check_args(env, tcons, empty)) { + case 1: + printerr(env, "Too Few Arguments"); + return; + case 2: printerr(env, "Bad Argument Type"); - env->err= 2; return; + default: + break; } old_head= CAR(env->head);