X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-lstat.c;h=372e05653d4d4cadf889869820ada99b83ba8c2f;hb=ef99c1d8d3dd44dd2c25b109559af82e571ca786;hp=0d58f6bc5346a361ce961663eddde763ed299cd6;hpb=3ff8a9d0d29f6fe7ce697d9f7824c09a99bc1e1b;p=gnulib.git diff --git a/tests/test-lstat.c b/tests/test-lstat.c index 0d58f6bc5..372e05653 100644 --- a/tests/test-lstat.c +++ b/tests/test-lstat.c @@ -1,5 +1,5 @@ /* Test of lstat() function. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,22 +14,47 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -/* Written by Simon Josefsson, 2008. */ +/* Written by Simon Josefsson, 2008; and Eric Blake, 2009. */ #include #include -int -main (int argc, char **argv) +/* Caution: lstat may be a function-like macro. Although this + signature check must pass, it may be the signature of the real (and + broken) lstat rather than rpl_lstat. Most code should not use the + address of lstat. */ +#include "signature.h" +SIGNATURE_CHECK (lstat, int, (char const *, struct stat *)); + +#include +#include +#include +#include +#include +#include + +#include "same-inode.h" +#include "ignore-value.h" +#include "macros.h" + +#define BASE "test-lstat.t" + +#include "test-lstat.h" + +/* Wrapper around lstat, which works even if lstat is a function-like + macro, where test_lstat_func(lstat) would do the wrong thing. */ +static int +do_lstat (char const *name, struct stat *st) { - struct stat buf; + return lstat (name, st); +} - if (lstat ("/", &buf) != 0) - { - perror ("lstat"); - return 1; - } +int +main (void) +{ + /* Remove any leftovers from a previous partial run. */ + ignore_value (system ("rm -rf " BASE "*")); - return 0; + return test_lstat_func (do_lstat, true); }