mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
* time/sys/time.h [__USE_BSD] (lutimes, futimes): Declare them.
* manual/filesys.texi (File Times): Document lutimes and futimes. * misc/Makefile (routines): Add them. * misc/Versions (libc: GLIBC_2.3): Likewise. * sysdeps/generic/lutimes.c: New file. * sysdeps/generic/futimes.c: New file. * sysdeps/mach/hurd/lutimes.c: New file. * sysdeps/mach/hurd/futimes.c: New file. * manual/filesys.texi (File Times): Add explicit note about null pointer argument to utimes. 2002-08-26 Roland McGrath <roland@frob.com> * sysdeps/mach/hurd/ifreq.h (__if_freereq): Add missing semicolon. (__ifreq): Add a cast. Remove an unused variable. * hurd/hurd/threadvar.h (enum __hurd_threadvar_index): Add _HURD_THREADVAR_LOCALE.
This commit is contained in:
parent
d387cc3fff
commit
20acbc2542
22
ChangeLog
22
ChangeLog
@ -1,3 +1,25 @@
|
||||
2002-08-26 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* time/sys/time.h [__USE_BSD] (lutimes, futimes): Declare them.
|
||||
* manual/filesys.texi (File Times): Document lutimes and futimes.
|
||||
* misc/Makefile (routines): Add them.
|
||||
* misc/Versions (libc: GLIBC_2.3): Likewise.
|
||||
* sysdeps/generic/lutimes.c: New file.
|
||||
* sysdeps/generic/futimes.c: New file.
|
||||
* sysdeps/mach/hurd/lutimes.c: New file.
|
||||
* sysdeps/mach/hurd/futimes.c: New file.
|
||||
|
||||
* manual/filesys.texi (File Times): Add explicit note about null
|
||||
pointer argument to utimes.
|
||||
|
||||
2002-08-26 Roland McGrath <roland@frob.com>
|
||||
|
||||
* sysdeps/mach/hurd/ifreq.h (__if_freereq): Add missing semicolon.
|
||||
(__ifreq): Add a cast. Remove an unused variable.
|
||||
|
||||
* hurd/hurd/threadvar.h (enum __hurd_threadvar_index): Add
|
||||
_HURD_THREADVAR_LOCALE.
|
||||
|
||||
2002-08-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* posix/regexec.c (re_search_stub): Return correct match length
|
||||
|
@ -2722,12 +2722,61 @@ in the header file @file{sys/time.h}.
|
||||
This function sets the file access and modification times of the file
|
||||
@var{filename}. The new file access time is specified by
|
||||
@code{@var{tvp}[0]}, and the new modification time by
|
||||
@code{@var{tvp}[1]}. This function comes from BSD.
|
||||
@code{@var{tvp}[1]}. Similar to @code{utime}, if @var{tvp} is a null
|
||||
pointer then the access and modification times of the file are set to
|
||||
the current time. This function comes from BSD.
|
||||
|
||||
The return values and error conditions are the same as for the @code{utime}
|
||||
function.
|
||||
@end deftypefun
|
||||
|
||||
@comment sys/time.h
|
||||
@comment BSD
|
||||
@deftypefun int lutimes (const char *@var{filename}, struct timeval @var{tvp}@t{[2]})
|
||||
This function is like @code{utimes}, except that it does not follow
|
||||
symbolic links. If @var{filename} is the name of a symbolic link,
|
||||
@code{lutimes} sets the file access and modification times of the
|
||||
symbolic link special file itself (as seen by @code{lstat};
|
||||
@pxref{Symbolic Links}) while @code{utimes} sets the file access and
|
||||
modification times of the file the symbolic link refers to. This
|
||||
function comes from FreeBSD, and is not available on all platforms (if
|
||||
not available, it will fail with @code{ENOSYS}).
|
||||
|
||||
The return values and error conditions are the same as for the @code{utime}
|
||||
function.
|
||||
@end deftypefun
|
||||
|
||||
@comment sys/time.h
|
||||
@comment BSD
|
||||
@deftypefun int futimes (int *@var{fd}, struct timeval @var{tvp}@t{[2]})
|
||||
This function is like @code{utimes}, except that it takes an open file
|
||||
descriptor as an argument instead of a file name. @xref{Low-Level
|
||||
I/O}. This function comes from FreeBSD, and is not available on all
|
||||
platforms (if not available, it will fail with @code{ENOSYS}).
|
||||
|
||||
Like @code{utimes}, @code{futimes} returns @code{0} on success and @code{-1}
|
||||
on failure. The following @code{errno} error conditions are defined for
|
||||
@code{futimes}:
|
||||
|
||||
@table @code
|
||||
@item EACCES
|
||||
There is a permission problem in the case where a null pointer was
|
||||
passed as the @var{times} argument. In order to update the time stamp on
|
||||
the file, you must either be the owner of the file, have write
|
||||
permission for the file, or be a privileged user.
|
||||
|
||||
@item EBADF
|
||||
The @var{filedes} argument is not a valid file descriptor.
|
||||
|
||||
@item EPERM
|
||||
If the @var{times} argument is not a null pointer, you must either be
|
||||
the owner of the file or be a privileged user.
|
||||
|
||||
@item EROFS
|
||||
The file lives on a read-only file system.
|
||||
@end table
|
||||
@end deftypefun
|
||||
|
||||
@node File Size
|
||||
@subsection File Size
|
||||
|
||||
|
@ -47,7 +47,7 @@ routines := brk sbrk sstk ioctl \
|
||||
gtty stty \
|
||||
ptrace \
|
||||
fstab mntent mntent_r \
|
||||
utimes \
|
||||
utimes lutimes futimes \
|
||||
truncate ftruncate truncate64 ftruncate64 \
|
||||
chflags fchflags \
|
||||
insremque getttyent getusershell getpass ttyslot \
|
||||
|
@ -111,6 +111,7 @@ libc {
|
||||
GLIBC_2.3 {
|
||||
# f*
|
||||
fgetxattr; flistxattr; fremovexattr; fsetxattr;
|
||||
futimes;
|
||||
|
||||
# g*
|
||||
getxattr;
|
||||
@ -118,6 +119,7 @@ libc {
|
||||
# l*
|
||||
listxattr;
|
||||
lgetxattr; llistxattr; lremovexattr; lsetxattr;
|
||||
lutimes;
|
||||
|
||||
# r*
|
||||
removexattr;
|
||||
|
34
sysdeps/generic/futimes.c
Normal file
34
sysdeps/generic/futimes.c
Normal file
@ -0,0 +1,34 @@
|
||||
/* futimes -- change access and modification times of open file. Stub version.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Change the access time of FILE to TVP[0] and
|
||||
the modification time of FILE to TVP[1], but do not follow symlinks. */
|
||||
int
|
||||
__futimes (int fd, const struct timeval tvp[2])
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
weak_alias (__futimes, futimes)
|
||||
|
||||
stub_warning (futimes)
|
||||
#include <stub-tag.h>
|
35
sysdeps/generic/lutimes.c
Normal file
35
sysdeps/generic/lutimes.c
Normal file
@ -0,0 +1,35 @@
|
||||
/* lutimes -- change access and modification times of a symlink. Stub version.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Change the access time of FILE to TVP[0] and
|
||||
the modification time of FILE to TVP[1], but do not follow symlinks. */
|
||||
int
|
||||
__lutimes (const char *file, const struct timeval tvp[2])
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
weak_alias (__lutimes, lutimes)
|
||||
|
||||
stub_warning (lutimes)
|
||||
#include <stub-tag.h>
|
47
sysdeps/mach/hurd/futimes.c
Normal file
47
sysdeps/mach/hurd/futimes.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* futimes -- change access and modification times of open file. Hurd version.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <hurd.h>
|
||||
#include <hurd/fd.h>
|
||||
|
||||
/* Change the access time of FD to TVP[0] and
|
||||
the modification time of FD to TVP[1]. */
|
||||
int
|
||||
__futimes (int fd, const struct timeval tvp[2])
|
||||
{
|
||||
struct timeval timevals[2];
|
||||
error_t err;
|
||||
|
||||
if (tvp == NULL)
|
||||
{
|
||||
/* Setting the number of microseconds to `-1' tells the
|
||||
underlying filesystems to use the current time. */
|
||||
timevals[1].tv_usec = timevals[0].tv_usec = (time_t)-1;
|
||||
tvp = timevals;
|
||||
}
|
||||
|
||||
err = HURD_DPORT_USE (fd, __file_utimes (port,
|
||||
*(time_value_t *) &tvp[0],
|
||||
*(time_value_t *) &tvp[1]));
|
||||
return err ? __hurd_dfail (fd, err) : 0;
|
||||
}
|
||||
weak_alias (__futimes, futimes)
|
@ -27,7 +27,6 @@
|
||||
static inline void
|
||||
__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
||||
{
|
||||
struct ifconf ifc;
|
||||
file_t server;
|
||||
|
||||
server = _hurd_socket_server (PF_INET, 0);
|
||||
@ -49,7 +48,7 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
||||
server = _hurd_socket_server (PF_INET, 1);
|
||||
if (server == MACH_PORT_NULL)
|
||||
goto out;
|
||||
err = __pfinet_siocgifconf (server, -1, ifreqs, &len);
|
||||
err = __pfinet_siocgifconf (server, -1, (data_t *) ifreqs, &len);
|
||||
}
|
||||
if (err)
|
||||
goto out;
|
||||
@ -70,5 +69,5 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
||||
static inline void
|
||||
__if_freereq (struct ifreq *ifreqs, int num_ifs)
|
||||
{
|
||||
munmap (ifreqs, num_ifs * sizeof (struct ifreq))
|
||||
__munmap (ifreqs, num_ifs * sizeof (struct ifreq));
|
||||
}
|
||||
|
53
sysdeps/mach/hurd/lutimes.c
Normal file
53
sysdeps/mach/hurd/lutimes.c
Normal file
@ -0,0 +1,53 @@
|
||||
/* lutimes -- change access and modification times of a symlink. Hurd version.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <hurd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
/* Change the access time of FILE to TVP[0] and
|
||||
the modification time of FILE to TVP[1]. */
|
||||
int
|
||||
__lutimes (const char *file, const struct timeval tvp[2])
|
||||
{
|
||||
struct timeval timevals[2];
|
||||
error_t err;
|
||||
file_t port;
|
||||
|
||||
if (tvp == NULL)
|
||||
{
|
||||
/* Setting the number of microseconds to `-1' tells the
|
||||
underlying filesystems to use the current time. */
|
||||
timevals[1].tv_usec = timevals[0].tv_usec = (time_t)-1;
|
||||
tvp = timevals;
|
||||
}
|
||||
|
||||
port = __file_name_lookup (file, O_NOLINK, 0);
|
||||
if (port == MACH_PORT_NULL)
|
||||
return -1;
|
||||
err = __file_utimes (port,
|
||||
*(time_value_t *) &tvp[0], *(time_value_t *) &tvp[1]);
|
||||
__mach_port_deallocate (__mach_task_self (), port);
|
||||
if (err)
|
||||
return __hurd_fail (err);
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__lutimes, lutimes)
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991-1994,96,97,98,99,2000,01,02
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -132,11 +133,21 @@ extern int setitimer (__itimer_which_t __which,
|
||||
__const struct itimerval *__restrict __new,
|
||||
struct itimerval *__restrict __old) __THROW;
|
||||
|
||||
/* Change the access time of FILE to TVP[0] and
|
||||
the modification time of FILE to TVP[1]. */
|
||||
/* Change the access time of FILE to TVP[0] and the modification time of
|
||||
FILE to TVP[1]. If TVP is a null pointer, use the current time instead.
|
||||
Returns 0 on success, -1 on errors. */
|
||||
extern int utimes (__const char *__file, __const struct timeval __tvp[2])
|
||||
__THROW;
|
||||
|
||||
#ifdef __USE_BSD
|
||||
/* Same as `utimes', but does not follow symbolic links. */
|
||||
extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
|
||||
__THROW;
|
||||
|
||||
/* Same as `utimes', but takes an open file descriptor instead of a name. */
|
||||
extern int futimes (int fd, __const struct timeval __tvp[2]) __THROW;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __USE_BSD
|
||||
/* Convenience macros for operations on timevals.
|
||||
|
Loading…
Reference in New Issue
Block a user