From 389cca4b9ed07be8d873b2aae01f3eb0c3474f7c Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sun, 15 Nov 2009 02:28:56 +0100 Subject: [PATCH] some non-gnu compilers can't have non-const struct initializers Signed-off-by: Denys Vlasenko --- archival/bbunzip.c | 8 +++++--- archival/libunarchive/data_extract_all.c | 6 ++++-- coreutils/touch.c | 9 +++++---- libbb/copy_file.c | 6 ++++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/archival/bbunzip.c b/archival/bbunzip.c index f81aab81f..22a0fd189 100644 --- a/archival/bbunzip.c +++ b/archival/bbunzip.c @@ -105,10 +105,12 @@ int FAST_FUNC bbunpack(char **argv, if (status >= 0) { /* TODO: restore other things? */ if (info.mtime) { - struct timeval times = {.tv_sec = info.mtime, - .tv_usec = 0}; + struct timeval times; + + times.tv_sec = info.mtime; + times.tv_usec = 0; /* Note: we closed it first. - * On some systems calling utime + * On some systems calling utimes * then closing resets the mtime * back to current time. */ utimes(new_name, ×); /* ignoring errors */ diff --git a/archival/libunarchive/data_extract_all.c b/archival/libunarchive/data_extract_all.c index 889face10..294024bbb 100644 --- a/archival/libunarchive/data_extract_all.c +++ b/archival/libunarchive/data_extract_all.c @@ -143,8 +143,10 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle) } /* same for utime */ if (archive_handle->ah_flags & ARCHIVE_RESTORE_DATE) { - struct timeval t = {.tv_sec = file_header->mtime, - .tv_usec = 0}; + struct timeval t; + + t.tv_sec = file_header->mtime; + t.tv_usec = 0; utimes(file_header->name, &t); } } diff --git a/coreutils/touch.c b/coreutils/touch.c index 7d1bf0d9e..f670b7f6e 100644 --- a/coreutils/touch.c +++ b/coreutils/touch.c @@ -40,6 +40,9 @@ int touch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int touch_main(int argc UNUSED_PARAM, char **argv) { + int fd; + int status = EXIT_SUCCESS; + int opts; #if ENABLE_DESKTOP # if ENABLE_LONG_OPTS static const char touch_longopts[] ALIGN1 = @@ -49,17 +52,15 @@ int touch_main(int argc UNUSED_PARAM, char **argv) "date\0" Required_argument "d" ; # endif - struct timeval timebuf = {.tv_usec = 0}; char *reference_file = NULL; char *date_str = NULL; + struct timeval timebuf; + timebuf.tv_usec = 0; #else # define reference_file NULL # define date_str NULL # define timebuf (*(struct timeval*)NULL) #endif - int fd; - int status = EXIT_SUCCESS; - int opts; #if ENABLE_DESKTOP && ENABLE_LONG_OPTS applet_long_options = touch_longopts; diff --git a/libbb/copy_file.c b/libbb/copy_file.c index a96691b24..adcfe2111 100644 --- a/libbb/copy_file.c +++ b/libbb/copy_file.c @@ -374,8 +374,10 @@ int FAST_FUNC copy_file(const char *source, const char *dest, int flags) /* Cannot happen: */ /* && !(flags & (FILEUTILS_MAKE_SOFTLINK|FILEUTILS_MAKE_HARDLINK)) */ ) { - struct timeval times = {.tv_sec = source_stat.st_mtime, - .tv_usec = 0}; + struct timeval times; + + times.tv_sec = source_stat.st_mtime; + times.tv_usec = 0; /* BTW, utimes sets usec-precision time - just FYI */ if (utimes(dest, ×) < 0) bb_perror_msg("can't preserve %s of '%s'", "times", dest);