// Copyright (c) 2006 Adrian Henke // ZLIB License 1.2.2 // http://www.gzip.org/zlib/zlib_license.html alias csleep_interval 100 // check timers each $csleep_interval milliseconds alias csleep_times alias csleep_actions alias csleep_started alias l // removes an element from a list // FIXME: too slow // listrm $list $index alias listrm [ alias n (listlen $arg1) if (< $arg2 $n) [ alias tmp "" loop $arg2 [ at $arg1 $i if (> (listlen $tmp) 0) [ concat $tmp $s alias tmp $s ] [ alias tmp $s ] ] loop (- $n (+ $arg2 1)) [ at $arg1 (+ $i (+ $arg2 1)) if (> (listlen $tmp) 0) [ concat $tmp $s alias tmp $s ] [ alias tmp $s ] ] alias l $tmp ] [ alias l $arg1 ] ] alias csleep_start [ alias csleep_times "" alias csleep_actions "" alias csleep_started "" csleep_loop ] // removes a 'sleep' // csleep_remove $index alias csleep_remove [ listrm $csleep_times $arg1 alias csleep_times $l listrm $csleep_actions $arg1 alias csleep_actions $l ] // adds a 'sleep' // csleep_add $time $action alias csleep_add [ if (> (listlen $arg2) 1) [ echo "csleep_add: error, $arg2 must be a single alias" ] [ if (> (listlen $csleep_times) 0) [ concat $csleep_times (+ $arg1 (millis)) alias csleep_times $s concat $csleep_actions $arg2 alias csleep_actions $s ] [ alias csleep_times (+ $arg1 (millis)) alias csleep_actions $arg2 ] ] ] // checks the timers alias csleep_loop [ sleep $csleep_interval csleep_loop alias n (listlen $csleep_times) loop $n [ at $csleep_times $i if (< $s (millis)) [ at $csleep_actions $i $s csleep_remove $i ] [] ] ] alias csleep_test [ csleep_start csleep_add 5000 jump csleep_add 10000 jump // Remember: // csleep_add 6000 "echo hi" // Won't work since the second argument must be a _single_ alias. // So if you need multiple words, put them into a single alias. ]