Then I move the module load call up before the fork so that any errors will be visible and will make zmcontrol.pl die quickly instead of waiting 11 seconds for something that will never happen.
Changing the help text for DIR_EVENTS, DIR_IMAGES, and DIR_SOUNDS to make it more obvious that one should not specify a folder outside the web root and that one should probably not ever change these values from their default.
Fixed this issue:
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 138.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 141.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 144.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 154.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 156.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 195.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 222.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 247.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 275.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 302.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 329.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 356.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 383.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 399.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 414.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 448.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 671.
"my" variable $cmd masks earlier declaration in same scope at FI9821W_Y2k.pm line 690.
zmtrigger.pl should not open serial port #1 by default. There could be situations where other hardware etc. would be attached to the port that is not used by zoneminder.
Better if this can be commented out by default and if a user needs serial access, he can enable it by removing the comment.
This line also gives an permissions error when running on Ubuntu which prevents zmtrigger to start. That error can probably be fixed by adding the zm user permission to the serial port. But the main issue is that if the program does not need access to the port, it should not open it.