#!/usr/bin/perl -w # Copyright (C) 2016-2018 all contributors # License: AGPL-3.0+ use strict; use warnings; use PublicInbox::WatchMaildir; use PublicInbox::Config; my ($config, $watch_md); my $reload = sub { $config = PublicInbox::Config->new; $watch_md->quit if $watch_md; $watch_md = PublicInbox::WatchMaildir->new($config); }; $reload->(); if ($watch_md) { my $scan = sub { $watch_md->trigger_scan('full') if $watch_md }; $SIG{HUP} = $reload; $SIG{USR1} = $scan; $SIG{ALRM} = sub { $SIG{ALRM} = 'DEFAULT'; $scan->() }; $SIG{QUIT} = $SIG{TERM} = $SIG{INT} = sub { $watch_md->quit if $watch_md; $watch_md = undef; }; alarm(1); $watch_md->watch while ($watch_md); }