// // aegis - project change supervisor // Copyright (C) 1991-2002, 2004-2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #include #include #include #include #include static int nsecs; static bool nsecs_set; static void slurp(void) { if (nsecs_set) return; nsecs_set = true; const char *cp = getenv("AEGIS_THROTTLE"); if (!cp) { // // If not set, default to zero // nsecs = 0; } else { char *ep = 0; nsecs = strtol(cp, &ep, 10); // // If it isn't a valid number, default to zero. // if (cp == ep || *ep) nsecs = 0; } } void os_throttle(void) { slurp(); if (nsecs > 0) { sync(); #ifdef DEBUG sub_context_ty sc; sc.var_set_long("Number", (long)nsecs); sc.error_intl(i18n("throttling $number seconds")); #endif sleep(nsecs > 5 ? 5 : nsecs); now_clear(); } } bool os_unthrottle(void) { slurp(); return (nsecs < 0); }