=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sudo/Attic/fileops.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- src/usr.bin/sudo/Attic/fileops.c 2003/04/19 21:57:17 1.3 +++ src/usr.bin/sudo/Attic/fileops.c 2004/09/28 15:10:51 1.4 @@ -1,36 +1,18 @@ /* * Copyright (c) 1999, 2001 Todd C. Miller - * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * 4. Products derived from this software may not be called "Sudo" nor - * may "Sudo" appear in their names without specific prior written - * permission from the author. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * * Sponsored in part by the Defense Advanced Research Projects * Agency (DARPA) and Air Force Research Laboratory, Air Force * Materiel Command, USAF, under agreement number F39502-99-1-0512. @@ -40,6 +22,7 @@ #include #include +#include #ifdef HAVE_FLOCK # include #endif /* HAVE_FLOCK */ @@ -49,41 +32,38 @@ #endif /* HAVE_UNISTD_H */ #include #include -#ifdef HAVE_UTIME -# ifdef HAVE_UTIME_H -# include -# endif /* HAVE_UTIME_H */ -#else -# include "emul/utime.h" -#endif /* HAVE_UTIME */ #include "sudo.h" #ifndef lint -static const char rcsid[] = "$Sudo: fileops.c,v 1.4 2003/04/16 00:42:10 millert Exp $"; +static const char rcsid[] = "$Sudo: fileops.c,v 1.9 2004/09/08 15:48:23 millert Exp $"; #endif /* lint */ /* - * Update the access and modify times on a file. + * Update the access and modify times on an fd or file. */ int -touch(path, when) +touch(fd, path, tsp) + int fd; char *path; - time_t when; + struct timespec *tsp; { -#ifdef HAVE_UTIME_POSIX - struct utimbuf ut, *utp; + struct timeval times[2]; - ut.actime = ut.modtime = when; - utp = &ut; -#else - /* BSD <= 4.3 has no struct utimbuf */ - time_t utp[2]; + if (tsp != NULL) { + times[0].tv_sec = times[1].tv_sec = tsp->tv_sec; + times[0].tv_usec = times[1].tv_usec = tsp->tv_nsec / 1000; + } - utp[0] = utp[1] = when; -#endif /* HAVE_UTIME_POSIX */ - - return(utime(path, utp)); +#if defined(HAVE_FUTIME) || defined(HAVE_FUTIMES) + if (fd != -1) + return(futimes(fd, tsp ? times : NULL)); + else +#endif + if (path != NULL) + return(utimes(path, tsp ? times : NULL)); + else + return(-1); } /*