OLD | NEW |
1 /* futimes -- change access and modification times of open file. Linux version. | 1 /* futimes -- change access and modification times of open file. Linux version. |
2 Copyright (C) 2002,2003,2005,2006,2007 Free Software Foundation, Inc. | 2 Copyright (C) 2002,2003,2005,2006,2007 Free Software Foundation, Inc. |
3 This file is part of the GNU C Library. | 3 This file is part of the GNU C Library. |
4 | 4 |
5 The GNU C Library is free software; you can redistribute it and/or | 5 The GNU C Library is free software; you can redistribute it and/or |
6 modify it under the terms of the GNU Lesser General Public | 6 modify it under the terms of the GNU Lesser General Public |
7 License as published by the Free Software Foundation; either | 7 License as published by the Free Software Foundation; either |
8 version 2.1 of the License, or (at your option) any later version. | 8 version 2.1 of the License, or (at your option) any later version. |
9 | 9 |
10 The GNU C Library is distributed in the hope that it will be useful, | 10 The GNU C Library is distributed in the hope that it will be useful, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 { | 51 { |
52 __set_errno (EINVAL); | 52 __set_errno (EINVAL); |
53 return -1; | 53 return -1; |
54 } | 54 } |
55 | 55 |
56 TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]); | 56 TIMEVAL_TO_TIMESPEC (&tvp[0], &ts[0]); |
57 TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]); | 57 TIMEVAL_TO_TIMESPEC (&tvp[1], &ts[1]); |
58 } | 58 } |
59 | 59 |
60 #ifdef __ASSUME_UTIMENSAT | 60 #ifdef __ASSUME_UTIMENSAT |
61 return INLINE_SYSCALL (utimensat, 4, fd, NULL, tvp ? &ts : NULL, 0); | 61 return INLINE_SYSCALL (utimensat, 4, fd, NULL, tvp ? ts : NULL, 0); |
62 #else | 62 #else |
63 int result; | 63 int result; |
64 # ifdef __NR_utimensat | 64 # ifdef __NR_utimensat |
65 if (!__builtin_expect (miss_utimensat, 0)) | 65 if (!__builtin_expect (miss_utimensat, 0)) |
66 { | 66 { |
67 result = INLINE_SYSCALL (utimensat, 4, fd, NULL, tvp ? &ts : NULL, 0); | 67 result = INLINE_SYSCALL (utimensat, 4, fd, NULL, tvp ? ts : NULL, 0); |
68 if (__builtin_expect (result, 0) != -1 || errno != ENOSYS) | 68 if (__builtin_expect (result, 0) != -1 || errno != ENOSYS) |
69 return result; | 69 return result; |
70 | 70 |
71 miss_utimensat = 1; | 71 miss_utimensat = 1; |
72 } | 72 } |
73 # endif | 73 # endif |
74 | 74 |
75 static const char selffd[] = "/proc/self/fd/"; | 75 static const char selffd[] = "/proc/self/fd/"; |
76 char fname[sizeof (selffd) + 3 * sizeof (int)]; | 76 char fname[sizeof (selffd) + 3 * sizeof (int)]; |
77 fname[sizeof (fname) - 1] = '\0'; | 77 fname[sizeof (fname) - 1] = '\0'; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 # endif | 129 # endif |
130 if (INLINE_SYSCALL (fcntl, 3, fd, F_GETFD, 0) != -1) | 130 if (INLINE_SYSCALL (fcntl, 3, fd, F_GETFD, 0) != -1) |
131 __set_errno (ENOSYS); | 131 __set_errno (ENOSYS); |
132 break; | 132 break; |
133 } | 133 } |
134 | 134 |
135 return result; | 135 return result; |
136 #endif | 136 #endif |
137 } | 137 } |
138 weak_alias (__futimes, futimes) | 138 weak_alias (__futimes, futimes) |
OLD | NEW |