diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-08-07 01:17:23 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-10-17 00:28:29 +0200 |
commit | e6c0620aaca439ff80b9fe60dec825bc97f67e4f (patch) | |
tree | 34dd171fa35a26a3ecbc8857610da7d60edad6e9 | |
parent | dc3f32f00d7c3091d7d44fe1739a8c38ea3fb34f (diff) |
desktop-file: implement _dbus_desktop_file_changed()
_dbus_desktop_file_changed() can be used if the file changed since it
was read. (by comparing the mtime back then and now)
-rw-r--r-- | dbus/dbus-desktop-file.c | 14 | ||||
-rw-r--r-- | dbus/dbus-desktop-file.h | 3 |
2 files changed, 17 insertions, 0 deletions
diff --git a/dbus/dbus-desktop-file.c b/dbus/dbus-desktop-file.c index 6e241364..4f17b93f 100644 --- a/dbus/dbus-desktop-file.c +++ b/dbus/dbus-desktop-file.c @@ -45,6 +45,7 @@ struct DBusDesktopFile int n_sections; DBusDesktopFileSection *sections; int n_allocated_sections; + unsigned long mtime; }; /** @@ -669,6 +670,7 @@ _dbus_desktop_file_load (DBusString *filename, return NULL; } + parser.desktop_file->mtime = sb.mtime; parser.data = str; parser.line_num = 1; parser.pos = 0; @@ -811,3 +813,15 @@ _dbus_desktop_file_get_section (DBusDesktopFile *desktop_file, return desktop_file->sections[i].section_name; } + +dbus_bool_t +_dbus_desktop_file_changed (DBusDesktopFile *desktop_file, + DBusString *filename) +{ + DBusStat sb; + + if (!_dbus_stat (filename, &sb, NULL)) + return TRUE; + + return desktop_file->mtime != sb.mtime; +} diff --git a/dbus/dbus-desktop-file.h b/dbus/dbus-desktop-file.h index 27f5e53c..3c619536 100644 --- a/dbus/dbus-desktop-file.h +++ b/dbus/dbus-desktop-file.h @@ -49,4 +49,7 @@ dbus_bool_t _dbus_desktop_file_get_string (DBusDesktopFile *desktop_file, const char *_dbus_desktop_file_get_section (DBusDesktopFile *desktop_file, unsigned i); +dbus_bool_t _dbus_desktop_file_changed (DBusDesktopFile *desktop_file, + DBusString *filename); + #endif /* BUS_DESKTOP_FILE_H */ |