diff options
| author | Jari Aalto <jari.aalto@cante.net> | 2001-04-06 19:14:31 +0000 |
|---|---|---|
| committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:53 +0000 |
| commit | 28ef6c316f1aff914bb95ac09787a3c83c1815fd (patch) | |
| tree | 2812fe7ffc9beec4f99856906ddfcafda54cf16a /test.c | |
| parent | bb70624e964126b7ac4ff085ba163a9c35ffa18f (diff) | |
| download | android_external_bash-28ef6c316f1aff914bb95ac09787a3c83c1815fd.tar.gz android_external_bash-28ef6c316f1aff914bb95ac09787a3c83c1815fd.tar.bz2 android_external_bash-28ef6c316f1aff914bb95ac09787a3c83c1815fd.zip | |
Imported from ../bash-2.05.tar.gz.
Diffstat (limited to 'test.c')
| -rw-r--r-- | test.c | 50 |
1 files changed, 31 insertions, 19 deletions
@@ -68,10 +68,6 @@ extern int errno; # define STREQ(a, b) ((a)[0] == (b)[0] && strcmp (a, b) == 0) #endif /* !STREQ */ -#if !defined (member) -# define member(c, s) (int)((c) ? (char *)strchr ((s), (c)) : 0) -#endif /* !member */ - #if !defined (R_OK) #define R_OK 4 #define W_OK 2 @@ -241,7 +237,7 @@ test_eaccess (path, mode) return (0); } - if (st.st_uid == current_user.euid) /* owner */ + if (st.st_uid == current_user.euid) /* owner */ mode <<= 6; else if (group_member (st.st_gid)) mode <<= 3; @@ -358,7 +354,7 @@ term () advance (1); value = expr (); if (argv[pos] == 0) - test_syntax_error ("`)' expected", (char *)NULL); + test_syntax_error ("`)' expected", (char *)NULL); else if (argv[pos][0] != ')' || argv[pos][1]) test_syntax_error ("`)' expected, found %s", argv[pos]); advance (0); @@ -393,8 +389,19 @@ filecomp (s, t, op) { struct stat st1, st2; - if (test_stat (s, &st1) < 0 || test_stat (t, &st2) < 0) - return (FALSE); + if (test_stat (s, &st1) < 0) + { + st1.st_mtime = 0; + if (op == EF) + return (FALSE); + } + if (test_stat (t, &st2) < 0) + { + st2.st_mtime = 0; + if (op == EF) + return (FALSE); + } + switch (op) { case OT: return (st1.st_mtime < st2.st_mtime); @@ -475,8 +482,8 @@ binary_test (op, arg1, arg2, flags) { switch (op[1]) { - case 'n': return (filecomp (arg1, arg2, NT)); /* -nt */ - case 'o': return (filecomp (arg1, arg2, OT)); /* -ot */ + case 'n': return (filecomp (arg1, arg2, NT)); /* -nt */ + case 'o': return (filecomp (arg1, arg2, OT)); /* -ot */ case 'l': return (arithcomp (arg1, arg2, LT, flags)); /* -lt */ case 'g': return (arithcomp (arg1, arg2, GT, flags)); /* -gt */ } @@ -554,10 +561,15 @@ unary_operator () if (op[1] == 't') { advance (0); - if (pos < argc && legal_number (argv[pos], &r)) + if (pos < argc) { - advance (0); - return (unary_test (op, argv[pos - 1])); + if (legal_number (argv[pos], &r)) + { + advance (0); + return (unary_test (op, argv[pos - 1])); + } + else + return (FALSE); } else return (unary_test (op, "1")); @@ -731,7 +743,7 @@ test_binop (op) return (0); } else - return (0); + return (0); } } @@ -791,9 +803,9 @@ three_arguments () else if (ANDOR (argv[pos+1])) { if (argv[pos+1][1] == 'a') - value = ONE_ARG_TEST(argv[pos]) && ONE_ARG_TEST(argv[pos+2]); + value = ONE_ARG_TEST(argv[pos]) && ONE_ARG_TEST(argv[pos+2]); else - value = ONE_ARG_TEST(argv[pos]) || ONE_ARG_TEST(argv[pos+2]); + value = ONE_ARG_TEST(argv[pos]) || ONE_ARG_TEST(argv[pos+2]); pos = argc; } else if (argv[pos][0] == '!' && argv[pos][1] == '\0') @@ -880,11 +892,11 @@ test_command (margc, margv) { --margc; - if (margc < 2) - test_exit (SHELL_BOOLEAN (FALSE)); - if (margv[margc] && (margv[margc][0] != ']' || margv[margc][1])) test_syntax_error ("missing `]'", (char *)NULL); + + if (margc < 2) + test_exit (SHELL_BOOLEAN (FALSE)); } argc = margc; |
