From 46c19b82494c9954fd6dafb955a1a5851e20d44d Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 5 Jul 2009 08:40:29 +0200
Subject: [PATCH] song_print: send song modification time to client

Added the response line "Last-Modified", which sends the modification
time in ISO 8601.  The same was already implemented for playlists.
---
 NEWS             |  2 ++
 src/song_print.c | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/NEWS b/NEWS
index fc702032a..a8828d345 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 ver 0.16 (20??/??/??)
+* protocol:
+  - send song modification time to client
 * decoders:
   - ffmpeg: support multiple tags
 * mixers:
diff --git a/src/song_print.c b/src/song_print.c
index 64ab9f6b1..2efae9b89 100644
--- a/src/song_print.c
+++ b/src/song_print.c
@@ -50,6 +50,23 @@ song_print_info(struct client *client, struct song *song)
 {
 	song_print_url(client, song);
 
+	if (song->mtime > 0) {
+		time_t t = song->mtime;
+#ifndef G_OS_WIN32
+		struct tm tm;
+#endif
+		char timestamp[32];
+
+		strftime(timestamp, sizeof(timestamp), "%FT%TZ",
+#ifdef G_OS_WIN32
+			 gmtime(&t)
+#else
+			 gmtime_r(&t, &tm)
+#endif
+			 );
+		client_printf(client, "Last-Modified: %s\n", timestamp);
+	}
+
 	if (song->tag)
 		tag_print(client, song->tag);