$ svn diff Index: gphoto2/main.c =================================================================== --- gphoto2/main.c (revision 9721) +++ gphoto2/main.c (working copy) @@ -86,7 +86,10 @@ GPParams gp_params; +/* flag for SIGUSR1 handler */ +int capture_now = 0; + /*! \brief Copy string almost like strncpy, converting to lower case. * * This function behaves like strncpy, but @@ -567,6 +570,12 @@ return (GP_OK); } +void +sig_handler_capture_now(int sig_num) +{ + signal(SIGUSR1, sig_handler_capture_now); + capture_now = 1; +} int capture_generic (CameraCaptureType type, const char __unused__ *name) @@ -584,6 +593,8 @@ printf (_("Time-lapse mode enabled (interval: %ds).\n"), glob_interval); } + capture_now = 0; + signal(SIGUSR1, sig_handler_capture_now); while(++frames) { if (!(gp_params.flags & FLAGS_QUIET) && glob_interval) { @@ -700,14 +711,20 @@ if (waittime > 0) { if (!(gp_params.flags & FLAGS_QUIET) && glob_interval) printf (_("Sleeping for %d second(s)...\n"), glob_interval); - sleep (waittime); + int i; + for (i=0; (!capture_now) && (i