aboutsummaryrefslogblamecommitdiff
path: root/bin/gms.sh
blob: abbbc0632b5562f1eb15f3f02ef1efbe6c5c8573 (plain) (tree)
1
2
3
4
5
6
7
8
                                                          
 


                                                          
                               
                           
      








                                 
 
                                                     
                    


                                                                  
                                                               
                                                           
                                                   
                                                  
                       
            
        


                                              
# Run getmail(1) over every getmailrc.* file in ~/.getmail

# Trap to remove whatever's set in lockdir if we're killed
lockdir=
cleanup() {
    if [ -n "$lockdir" ] ; then
        rmdir -- "$lockdir"
    fi
    if [ "$1" != EXIT ] ; then
        trap - "$1"
        kill "-$1" "$$"
    fi
}
for sig in EXIT HUP INT TERM ; do
    # shellcheck disable=SC2064
    trap "cleanup $sig" "$sig"
done

# Don't trust the environment $UID, use id(1) instead
uid=$(id -u) || exit

# Iterate through the getmailrc.* files in $GETMAIL if defined, or
# $HOME/.getmail if not
for rcfile in "${GETMAIL:-"$HOME"/.getmail}"/getmailrc.* ; do (
    lockdir=${TMPDIR:-/tmp}/getmail.$uid.${rcfile##*/}.lock
    mkdir -m 0700 -- "$lockdir" 2>/dev/null || exit
    try -n 3 -s 15 getmail --rcfile "$rcfile" "$@"
    rmdir -- "$lockdir"
    lockdir=
) & done

# Wait for all of the enqueued tasks to finish
wait