From: Garrett C. <yan...@gm...> - 2009-07-21 04:24:19
|
On Mon, Jul 20, 2009 at 7:55 PM, Wang Yong<wan...@cn...> wrote: > This patch also fixed the path which we pass to setup_file(). If > progdir is not a absolute pathname of the working directory, the file > open will fail. > > This patch fixed the problem. > > Signed-off-by: WangYong <wan...@cn...> > > diff -Nurp a/testcases/kernel/syscalls/utimes/utimes01.c b/testcases/kernel/syscalls/utimes/utimes01.c > --- a/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-21 08:51:05.000000000 +0800 > +++ b/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-21 08:55:01.000000000 +0800 > @@ -138,7 +138,6 @@ void setup() { > */ > static int opt_debug; > static char *progname; > -static char *progdir; > > enum test_type { > NORMAL, > @@ -232,7 +231,7 @@ static int do_test(struct test_case *tc) > struct stat st; > uid_t old_uid; > > - TEST(rc = setup_file(progdir, "test.file", fpath)); > + TEST(rc = setup_file(TESTDIR, "test.file", fpath)); > if (rc < 0) > return 1; > > @@ -339,8 +338,6 @@ int main(int ac, char **av) { > progname = strchr(av[0], '/'); > progname = progname ? progname + 1 : av[0]; > > - progdir = strdup(av[0]); > - progdir = dirname(progdir); > > /* parse standard options */ > if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ Wang, Would you please verify this diff in your environment too? It does what your diff did, in addition to fixes a harmless warning with -Wnonnull: 1. Fix the utimes testcase so that it passes with the appropriate non-hardcoded directory, as provided by Wang Yong <wan...@cn...> 2. Fix a compiler warning by using an intermediary const char* variable, as casting alone was still causing compiler warnings in gcc 4.3.2. Signed-off-by: Garrett Cooper <yan...@gm...> Index: testcases/kernel/syscalls/utimes/utimes01.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/syscalls/utimes/utimes01.c,v retrieving revision 1.2 diff -u -r1.2 utimes01.c --- testcases/kernel/syscalls/utimes/utimes01.c 10 Jul 2009 10:14:59 -0000 1 .2 +++ testcases/kernel/syscalls/utimes/utimes01.c 21 Jul 2009 04:20:44 -0000 @@ -138,7 +138,6 @@ */ static int opt_debug; static char *progname; -static char *progdir; enum test_type { NORMAL, @@ -232,7 +231,7 @@ struct stat st; uid_t old_uid; - TEST(rc = setup_file(progdir, "test.file", fpath)); + TEST(rc = setup_file(TESTDIR, "test.file", fpath)); if (rc < 0) return 1; @@ -257,9 +256,19 @@ fpath[len - 1] = '\0'; } errno = 0; - if (tc->ttype == NO_FNAME) - TEST(sys_ret = utimes(NULL, tv)); - else + if (tc->ttype == NO_FNAME) { + /** + * Note (garrcoop): + * + * If you do NULL directly, then gcc [4.3] will complain when + * one specifies -Wnonnull in CPPFLAGS. This is a negative + * test, but let's not allow the compiler to complain about + * something trivial like this. + **/ + const char *dummy = NULL; + TEST(sys_ret = utimes(dummy, tv)); + } + else TEST(sys_ret = utimes(fpath, tv)); sys_errno = errno; if (tc->ttype == FILE_NOT_EXIST) @@ -339,9 +348,6 @@ progname = strchr(av[0], '/'); progname = progname ? progname + 1 : av[0]; - progdir = strdup(av[0]); - progdir = dirname(progdir); - /* parse standard options */ if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL) { tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); |