From 7aca4cd194b8ec2546e598800b153a5009b1792d Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Wed, 22 Oct 2008 19:18:39 +0200
Subject: stored_playlist: send timestamps

Send last modification timestamps to the client.  This allows the
client to see when another client modifies a stored playlist.
---
 doc/COMMANDS  | 6 ++++++
 src/command.c | 8 ++++++++
 2 files changed, 14 insertions(+)

diff --git a/doc/COMMANDS b/doc/COMMANDS
index 66b014a03..35373a4d5 100644
--- a/doc/COMMANDS
+++ b/doc/COMMANDS
@@ -191,6 +191,12 @@ repeat <int state>
 listplaylists
 	prints a list of the playlist directory
 
+	After each playlist name, the server sends its last
+	modification time as attribute "Last-Modified" in ISO 8601
+	format.  To avoid problems due to clock differences between
+	clients and the server, clients should not compare this value
+	with their local clock.
+
 rm <string name>
 	removes the playlist <name>.m3u from the playlist directory
 
diff --git a/src/command.c b/src/command.c
index db793350d..4ded86089 100644
--- a/src/command.c
+++ b/src/command.c
@@ -208,8 +208,16 @@ print_spl_list(struct client *client, GPtrArray *list)
 	for (unsigned i = 0; i < list->len; ++i) {
 		struct stored_playlist_info *playlist =
 			g_ptr_array_index(list, i);
+		time_t t;
+		struct tm tm;
+		char timestamp[32];
 
 		client_printf(client, "playlist: %s\n", playlist->name);
+
+		t = playlist->mtime;
+		strftime(timestamp, sizeof(timestamp), "%FT%TZ",
+			 gmtime_r(&t, &tm));
+		client_printf(client, "Last-Modified: %s\n", timestamp);
 	}
 }
 
-- 
cgit v1.2.3