Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F4793369
signals.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
signals.c
View Options
#include
"defines.h"
#include
"vars.h"
#include
"prototypes.h"
// FIXME: This needs a rewrite. Should not do all that stuff inside a signal handler, but pass the work to the main loop instead via a single bool.
void
sig_alrm
(
int
notUsed
)
{
alarmed
=
1
;
alarm
(
AIL
);
check_dbtimers
();
/* timers :) */
AIL8
+=
AIL
;
#ifdef ENABLE_QUIZ
if
(
quiz_halt
==
1
)
{
AIL13
++
;
if
(
AIL13
>=
QUIZ_REPEAT_TIMER
)
{
AIL13
=
0
;
quiz_halt
=
0
;
}
}
if
(
quiz_answer
==
1
&&
quiz_halt
==
0
)
{
if
(
quiz_timer
>=
QUIZ_TIMER
)
{
quiz_answer
=
0
;
quiz_timer
=
0
;
quiz_halt
=
1
;
run_quiz_answer
();
}
else
quiz_timer
++
;
}
#endif
if
(
AIL8
>=
SEND_DELAY
)
{
AIL8
=
0
;
Send
();
}
LastInput
+=
AIL
;
if
(
LastInput
>=
500
)
{
LastInput
=
0
;
#ifdef ENABLE_STONED_CHECK
L088
(
BS
);
printf
(
"
\n
No response from %s in 5 mins, reconnecting...
\n
"
,
BS
);
prepare_bot
();
register_bot
();
#endif
}
AIL10
+=
AIL
;
if
(
AIL10
>=
900
)
{
/* 15 mins */
AIL10
=
0
;
if
(
MARK_CHANGE
==
1
)
{
MARK_CHANGE
=
0
;
save_setup
();
/* save settings */
}
}
AIL666
+=
AIL
;
if
(
AIL666
>=
60
)
{
/* 60 sec timer */
AIL666
=
0
;
S
(
"PING :%s
\n
"
,
BS
);
}
AIL9
+=
AIL
;
if
(
AIL9
>=
30
)
{
AIL9
=
0
;
if
(
strcasecmp
(
s_Mynick
,
Mynick
)
!=
0
)
{
S
(
"NICK %s
\n
"
,
s_Mynick
);
strncpy
(
Mynick
,
s_Mynick
,
sizeof
(
Mynick
));
snprintf
(
NICK_COMMA
,
sizeof
(
NICK_COMMA
),
"%s,"
,
Mynick
);
snprintf
(
COLON_NICK
,
sizeof
(
COLON_NICK
),
"%s:"
,
Mynick
);
snprintf
(
BCOLON_NICK
,
sizeof
(
BCOLON_NICK
),
"%s
\2
:
\2
"
,
Mynick
);
}
}
if
(
Sleep_Toggle
==
1
)
{
AIL4
+=
AIL
;
if
(
AIL4
>=
Sleep_Time
)
{
Sleep_Toggle
=
0
;
AIL4
=
0
;
L089
(
sleep_chan
);
}
}
AIL2
+=
AIL
;
AIL3
+=
AIL
;
#ifdef ENABLE_RANDOM
Rand_Idle
++
;
if
(
RAND_IDLE
<=
Rand_Idle
)
{
Rand_Idle
=
0
;
do_random_stuff
();
get_rand_stuff_time
();
}
Rand_Stuff
-=
AIL
;
if
(
Rand_Stuff
<=
0
)
{
if
(
Sleep_Toggle
!=
1
)
do_random_stuff
();
get_rand_stuff_time
();
}
#endif
#ifdef ENABLE_CHANNEL
if
(
AIL3
>=
AUTOTOPIC_TIME
)
{
AIL3
=
0
;
do_autotopics
();
}
#endif
AIL5
+=
AIL
;
if
(
AIL5
>=
600
)
{
if
(
ANTI_IDLE
)
S
(
"PRIVMSG ! :
\2\n
"
);
AIL5
=
0
;
}
if
(
AIL2
>=
300
)
{
AIL2
=
0
;
#ifdef ENABLE_STATUS
S
(
"LUSERS
\n
"
);
#endif
S
(
"MODE %s %s
\n
"
,
Mynick
,
DEFAULT_UMODE
);
S
(
"JOIN %s
\n
"
,
CHAN
);
reset_
();
save_changes
();
if
(
PERFORM_TIMER
)
run_perform
();
}
}
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
();
// FIXME: Not sure about this, maybe we can live without the fork, maybe without the kills.
if
(
fork
()
>
0
)
{
db_log
(
"error.log"
,
"Caught SIGSEGV.. Sent kill -3 and kill -9...
\n
"
);
kill
(
p
,
3
);
/* SIGQUIT - terminate process and dump core. */
kill
(
p
,
9
);
/* SIGKILL */
}
db_sleep
(
1
);
exit
(
0
);
}
void
sig_hup
(
int
notUsed
)
{
char
temp
[
STRING_LONG
];
int
ret
;
S
(
"QUIT :SIGHUP - Restarting %s ...
\n
"
,
dbVersion
);
snprintf
(
temp
,
sizeof
(
temp
),
"sleep 2; %s"
,
DARKBOT_BIN
);
ret
=
system
(
temp
);
db_sleep
(
1
);
exit
(
0
);
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Fri, Feb 28, 21:45 (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2436496
Default Alt Text
signals.c (3 KB)
Attached To
Mode
rDARKBOT Darkbot
Attached
Detach File
Event Timeline
Log In to Comment