int test_binop(Shell_t *shp,register int op,const char *left,const char *right) { register double lnum,rnum; if(op&TEST_ARITH) { while(*left=='0') left++; while(*right=='0') right++; lnum = sh_arith(shp,left); rnum = sh_arith(shp,right); } switch(op) { /* op must be one of the following values */ case TEST_AND: case TEST_OR: return(*left!=0); case TEST_PEQ: return(test_strmatch(shp, left, right)); case TEST_PNE: return(!test_strmatch(shp, left, right)); case TEST_SGT: return(strcoll(left, right)>0); case TEST_SLT: return(strcoll(left, right)<0); case TEST_SEQ: return(strcmp(left, right)==0); case TEST_SNE: return(strcmp(left, right)!=0); case TEST_EF: return(test_inode(left,right)); case TEST_NT: return(test_time(left,right)>0); case TEST_OT: return(test_time(left,right)<0); case TEST_EQ: return(lnum==rnum); case TEST_NE: return(lnum!=rnum); case TEST_GT: return(lnum>rnum); case TEST_LT: return(lnum<rnum); case TEST_GE: return(lnum>=rnum); case TEST_LE: return(lnum<=rnum); } /* NOTREACHED */ return(0); }
int main(int argc, char *argv[]) { int retval = 0; int i; for (i = 1; argv[i]; i++) { if (strcmp(argv[i], "-v") == 0) test_flags |= tst_verbatim; else if (strcmp(argv[i], "-a") == 0) test_flags |= tst_abort; else usage(1); } retval |= test_notfound(); fflush(stdout); retval |= test_pattern(); fflush(stdout); retval |= test_strcasestr(); fflush(stdout); retval |= test_casematch(); fflush(stdout); retval |= test_strmatch(); fflush(stdout); retval |= test_strnspn(); fflush(stdout); return retval; }