projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(readname, default_index, line_size, readname):
[gnulib.git]
/
lib
/
utime.c
diff --git
a/lib/utime.c
b/lib/utime.c
index
dafa364
..
25657ee
100644
(file)
--- a/
lib/utime.c
+++ b/
lib/utime.c
@@
-1,4
+1,4
@@
-/* Copyright (C) 1998, 200
0
Free Software Foundation, Inc.
+/* Copyright (C) 1998, 200
1, 2002, 2003
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 the
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 the
@@
-27,6
+27,12
@@
# include <utime.h>
#endif
# include <utime.h>
#endif
+#if !HAVE_UTIMES_NULL
+# include <sys/stat.h>
+# include <fcntl.h>
+#endif
+
+#include "full-write.h"
#include "safe-read.h"
/* Some systems (even some that do have <utime.h>) don't declare this
#include "safe-read.h"
/* Some systems (even some that do have <utime.h>) don't declare this
@@
-52,19
+58,19
@@
utime_null (const char *file)
int fd;
char c;
int status = 0;
int fd;
char c;
int status = 0;
- struct stat s
b
;
+ struct stat s
t
;
fd = open (file, O_RDWR);
if (fd < 0
fd = open (file, O_RDWR);
if (fd < 0
- || fstat (fd, &s
b
) < 0
- || safe_read (fd, &c, sizeof
(char)) < 0
+ || fstat (fd, &s
t
) < 0
+ || safe_read (fd, &c, sizeof
c) == SAFE_READ_ERROR
|| lseek (fd, (off_t) 0, SEEK_SET) < 0
|| lseek (fd, (off_t) 0, SEEK_SET) < 0
- || full_write (fd, &c, sizeof
(char)) < 0
- /* Maybe do this -- it's necessary on SunOS4.1.3 with some combination
+ || full_write (fd, &c, sizeof
c) != sizeof c
+ /* Maybe do this -- it's necessary on SunOS
4.1.3 with some combination
of patches, but that system doesn't use this code: it has utimes.
|| fsync (fd) < 0
*/
of patches, but that system doesn't use this code: it has utimes.
|| fsync (fd) < 0
*/
- ||
ftruncate (fd, st.st_size) < 0
+ ||
(st.st_size == 0 && ftruncate (fd, st.st_size) < 0)
|| close (fd) < 0)
status = -1;
return status;
|| close (fd) < 0)
status = -1;
return status;