Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 file-watcher.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/file-watcher.c b/file-watcher.c
index 91f4cfe..9c639ef 100644
--- a/file-watcher.c
+++ b/file-watcher.c
@@ -56,6 +56,26 @@ static void accept_connection(int fd)
        pfd_nr++;
 }
 
+static const char *socket_path;
+static int do_not_clean_up;
+
+static void cleanup(void)
+{
+       struct strbuf sb = STRBUF_INIT;
+       if (do_not_clean_up)
+               return;
+       strbuf_addf(&sb, "%s/socket", socket_path);
+       unlink(sb.buf);
+       strbuf_release(&sb);
+}
+
+static void cleanup_on_signal(int signo)
+{
+       cleanup();
+       sigchain_pop(signo);
+       raise(signo);
+}
+
 static const char permissions_advice[] =
 N_("The permissions on your socket directory are too loose; other\n"
    "processes may be able to read your file listing. Consider running:\n"
@@ -91,7 +111,6 @@ int main(int argc, const char **argv)
 {
        struct strbuf sb = STRBUF_INIT;
        int i, new_nr, fd, quit = 0, nr_common;
-       const char *socket_path = NULL;
        struct option options[] = {
                OPT_END()
        };
@@ -113,6 +132,9 @@ int main(int argc, const char **argv)
                die_errno(_("unable to listen at %s"), sb.buf);
        strbuf_reset(&sb);
 
+       atexit(cleanup);
+       sigchain_push_common(cleanup_on_signal);
+
        nr_common = 1;
        pfd_alloc = pfd_nr = nr_common;
        pfd = xmalloc(sizeof(*pfd) * pfd_alloc);
-- 
1.8.5.2.240.g8478abd

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to