mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-18 06:30:05 +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>
|
2002-08-26 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* posix/regexec.c (re_search_stub): Return correct match length
|
* 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
|
This function sets the file access and modification times of the file
|
||||||
@var{filename}. The new file access time is specified by
|
@var{filename}. The new file access time is specified by
|
||||||
@code{@var{tvp}[0]}, and the new modification time 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}
|
The return values and error conditions are the same as for the @code{utime}
|
||||||
function.
|
function.
|
||||||
@end deftypefun
|
@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
|
@node File Size
|
||||||
@subsection File Size
|
@subsection File Size
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ routines := brk sbrk sstk ioctl \
|
|||||||
gtty stty \
|
gtty stty \
|
||||||
ptrace \
|
ptrace \
|
||||||
fstab mntent mntent_r \
|
fstab mntent mntent_r \
|
||||||
utimes \
|
utimes lutimes futimes \
|
||||||
truncate ftruncate truncate64 ftruncate64 \
|
truncate ftruncate truncate64 ftruncate64 \
|
||||||
chflags fchflags \
|
chflags fchflags \
|
||||||
insremque getttyent getusershell getpass ttyslot \
|
insremque getttyent getusershell getpass ttyslot \
|
||||||
|
@ -111,6 +111,7 @@ libc {
|
|||||||
GLIBC_2.3 {
|
GLIBC_2.3 {
|
||||||
# f*
|
# f*
|
||||||
fgetxattr; flistxattr; fremovexattr; fsetxattr;
|
fgetxattr; flistxattr; fremovexattr; fsetxattr;
|
||||||
|
futimes;
|
||||||
|
|
||||||
# g*
|
# g*
|
||||||
getxattr;
|
getxattr;
|
||||||
@ -118,6 +119,7 @@ libc {
|
|||||||
# l*
|
# l*
|
||||||
listxattr;
|
listxattr;
|
||||||
lgetxattr; llistxattr; lremovexattr; lsetxattr;
|
lgetxattr; llistxattr; lremovexattr; lsetxattr;
|
||||||
|
lutimes;
|
||||||
|
|
||||||
# r*
|
# r*
|
||||||
removexattr;
|
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
|
static inline void
|
||||||
__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
||||||
{
|
{
|
||||||
struct ifconf ifc;
|
|
||||||
file_t server;
|
file_t server;
|
||||||
|
|
||||||
server = _hurd_socket_server (PF_INET, 0);
|
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);
|
server = _hurd_socket_server (PF_INET, 1);
|
||||||
if (server == MACH_PORT_NULL)
|
if (server == MACH_PORT_NULL)
|
||||||
goto out;
|
goto out;
|
||||||
err = __pfinet_siocgifconf (server, -1, ifreqs, &len);
|
err = __pfinet_siocgifconf (server, -1, (data_t *) ifreqs, &len);
|
||||||
}
|
}
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
@ -70,5 +69,5 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
|||||||
static inline void
|
static inline void
|
||||||
__if_freereq (struct ifreq *ifreqs, int num_ifs)
|
__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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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,
|
__const struct itimerval *__restrict __new,
|
||||||
struct itimerval *__restrict __old) __THROW;
|
struct itimerval *__restrict __old) __THROW;
|
||||||
|
|
||||||
/* Change the access time of FILE to TVP[0] and
|
/* Change the access time of FILE to TVP[0] and the modification time of
|
||||||
the modification time of FILE to TVP[1]. */
|
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])
|
extern int utimes (__const char *__file, __const struct timeval __tvp[2])
|
||||||
__THROW;
|
__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
|
#ifdef __USE_BSD
|
||||||
/* Convenience macros for operations on timevals.
|
/* Convenience macros for operations on timevals.
|
||||||
|
Loading…
Reference in New Issue
Block a user