+
+ // Use inotify to watch the snack config file
+ #if USE_INOTIFY
+ {
+ int oflags;
+
+ giItem_INotifyFD = inotify_init();
+ inotify_add_watch(giItem_INotifyFD, gsItemListFile, IN_MODIFY);
+
+ // Handle SIGIO
+ signal(SIGIO, &ItemList_Changed);
+
+ // Fire SIGIO when data is ready on the FD
+ fcntl(giItem_INotifyFD, F_SETOWN, getpid());
+ oflags = fcntl(giItem_INotifyFD, F_GETFL);
+ fcntl(giItem_INotifyFD, F_SETFL, oflags | FASYNC);
+ }
+ #endif
+}
+
+#if USE_INOTIFY
+void ItemList_Changed(int signum)
+{
+ char buf[512];
+ read(giItem_INotifyFD, buf, 512);
+ Load_Itemlist();
+
+ signum = 0; // Shut up GCC