From: Rico Tzschichholz Date: Fri, 24 Feb 2017 21:22:21 +0000 (+0100) Subject: codewriter: Update timestamps of generated c-files if needed X-Git-Tag: 0.37.1~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c8489c202692a230914ede35320ced13a9fe05b;p=thirdparty%2Fvala.git codewriter: Update timestamps of generated c-files if needed If a changed source-file produces the same ccode we currently leave existing files untouched. Although it is better to update the modification timestamp of those to at least meet the one of associated source-file. https://bugzilla.gnome.org/show_bug.cgi?id=683286 --- diff --git a/ccode/valaccodewriter.vala b/ccode/valaccodewriter.vala index 281ff6e43..2e58a41b3 100644 --- a/ccode/valaccodewriter.vala +++ b/ccode/valaccodewriter.vala @@ -138,6 +138,14 @@ public class Vala.CCodeWriter { FileUtils.rename (temp_filename, filename); } else { FileUtils.unlink (temp_filename); + if (source_filename != null) { + var stats = Stat (source_filename); + var target_stats = Stat (filename); + if (stats.st_mtime >= target_stats.st_mtime) { + UTimBuf timebuf = { stats.st_atime + 1, stats.st_mtime + 1 }; + FileUtils.utime (filename, timebuf); + } + } } } } diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi index 67b06234e..65233d953 100644 --- a/vapi/glib-2.0.vapi +++ b/vapi/glib-2.0.vapi @@ -3618,6 +3618,9 @@ namespace GLib { [CCode (cname = "struct stat", cheader_filename = "sys/stat.h,glib/gstdio.h")] public struct Stat { + public time_t st_atime; + public time_t st_mtime; + public time_t st_ctime; [CCode (cname = "g_stat", instance_pos = -1)] public Stat (string filename); [Version (since = "2.6")]