summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-08-07 01:17:23 +0200
committerLennart Poettering <lennart@poettering.net>2009-10-17 00:28:29 +0200
commite6c0620aaca439ff80b9fe60dec825bc97f67e4f (patch)
tree34dd171fa35a26a3ecbc8857610da7d60edad6e9
parentdc3f32f00d7c3091d7d44fe1739a8c38ea3fb34f (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.c14
-rw-r--r--dbus/dbus-desktop-file.h3
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 */