void sig_segv (int notUsed) { long uptime2 = 0, p = 0; uptime2 = time (NULL) - uptime; printf ("ERROR! Aborting program. (SIG_SEGV) Uptime: %d hour%s, %d min%s\n", (int) (uptime2 / 3600), (uptime2 / 3600 == 1) ? "" : "s", (int) ((uptime2 / 60) % 60), ((uptime2 / 60) % 60) == 1 ? "" : "s"); Snow ("QUIT :Caught SIG_SEGV! Aborting connection. Uptime: %d hour%s, %d min%s\n", uptime2 / 3600, uptime2 / 3600 == 1 ? "" : "s", (uptime2 / 60) % 60, (uptime2 / 60) % 60 == 1 ? "" : "s"); db_sleep (2); p = getpid (); if (fork () > 0) { db_log ("error.log", "Caught SIGSEGV.. Sent kill -3 and kill -9...\n"); kill (p, 3); kill (p, 9); } db_sleep (1); exit (0); }
static void close_ticker(struct PgDatabase *db, double sleep_time) { log_debug("%s: close_ticker, %f", db->name, sleep_time); db->state = DB_CLOSED; db_disconnect(db->c_ticker); db_sleep(db->c_ticker, sleep_time); }
static void parse_ticker_result(struct PgDatabase *db, PGresult *res) { if (PQntuples(res) != 1) { log_debug("%s: calling pgq.ticker() failed", db->name); } PQclear(res); db_sleep(db->c_ticker, cf.ticker_period); }
void sig_hup (int notUsed) { char temp[STRING_LONG]; S ("QUIT :SIGHUP - Restarting %s ...\n", dbVersion); snprintf (temp, sizeof (temp), "sleep 2; %s", DARKBOT_BIN); system (temp); db_sleep (1); exit (0); }
/** * Output the helper list to a nickname. * 6/22, Dan: * - Changed helperlist* c to be a pointer to const data * - Changed initialization of DATA, and size to be a * power of 2 * - Added initialization of c * - Changed while loop to for loop * - Changed types of i, x to size_t since they should be * unsigned. * - Added reinitialization of DATA using memset() (changed from * strcpy(DATA,"")) */ void show_helper_list (const char *nick, long level) { char DATA [STRING_SHORT * 7] = { 0 }; char tmp [STRING_SHORT] = { 0 }; size_t i = 0, x = 0; const struct helperlist *c = NULL; for (c = helperhead; c != NULL; c = c->next) { // If we're displaying users at all levels... if ((level == 0) || (level == c->level)) { i++; x++; snprintf (tmp, sizeof(tmp), "%s", DATA); snprintf (DATA, (sizeof(DATA) + sizeof(tmp)), "%s %s[%s:%ld:%d]", tmp, c->uh, c->chan, c->level, c->num_join); memset (tmp, 0, sizeof(tmp)); if (i > 6) { i = 0; S ("NOTICE %s :%s\n", nick, DATA); memset (DATA, 0, sizeof(DATA)); db_sleep(2); } } } /* for() */ if (x != 0) S ("NOTICE %s :%s\n", nick, DATA); S ("NOTICE %s :End of Helper Userlist; %d user%s found.\n", nick, x, (x == 1) ? "" : "s"); }
void load_helpers (void) { FILE *fp; char b[STRING_LONG], *user_host, *greetz, *numb_join, *chan, *w_level, *pass; long num_join = 0, i = 0, level = 0; if ((fp = fopen (HELPER_LIST, "r")) == NULL) { printf ("Unable to open %s! Aborting connection.\n", HELPER_LIST); printf ("Please run ./configure to setup your darkbot.\n"); exit (0); } #ifndef WIN32 printf ("Loading %s file ", HELPER_LIST); #endif while (fgets (b, STRING_LONG, fp)) { if (b == NULL) continue; stripline (b); if (*b == '/') continue; i++; printf ("."); fflush (stdout); chan = strtok (b, " "); if (chan == NULL) continue; user_host = strtok (NULL, " "); if (user_host == NULL) continue; w_level = strtok (NULL, " "); if (w_level == NULL) continue; numb_join = strtok (NULL, " "); if (numb_join == NULL) continue; pass = strtok (NULL, " "); if (pass == NULL) { pass = "******"; /* duh */ } greetz = strtok (NULL, ""); if (greetz == NULL) greetz = "I haven't used \2SETINFO\2 yet!"; if (w_level != NULL) level = atoi (w_level); else level = 1; if (numb_join != NULL) num_join = atoi (numb_join); else num_join = 0; if (strlen (pass) > 25) pass[25] = '\0'; if (DebuG == 1) printf ("loading helperlist: %s %s l:%d j:%d %s\n", chan, user_host, (int) level, (int) num_join, greetz); add_helper (chan, user_host, level, num_join, greetz, pass, 1); } printf ("done(%d), ", (int) i); fclose (fp); save_changes (); if (DebuG == 1) db_sleep (2); }