예제 #1
0
파일: signals.c 프로젝트: LuizCB/darkbot
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);
}
예제 #2
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);
}
예제 #3
0
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);
}
예제 #4
0
파일: signals.c 프로젝트: LuizCB/darkbot
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);
}
예제 #5
0
파일: helpers.c 프로젝트: LuizCB/darkbot
/**
 * 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");
}
예제 #6
0
파일: helpers.c 프로젝트: LuizCB/darkbot
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);
}