Merge pull request #50 from oliviertilmans/cleanup_resources
Cleanup resources on exit
This commit is contained in:
commit
81347162d6
1 changed files with 28 additions and 13 deletions
41
src/daemon.c
41
src/daemon.c
|
@ -72,6 +72,31 @@ int delete_pid()
|
||||||
return remove(PROGRAM_PID);
|
return remove(PROGRAM_PID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cleanup_and_exit(int exit_code)
|
||||||
|
{
|
||||||
|
delete_pid();
|
||||||
|
set_fans_auto(fans);
|
||||||
|
|
||||||
|
s_fans *next_fan;
|
||||||
|
while (fans != NULL) {
|
||||||
|
next_fan = fans->next;
|
||||||
|
free(fans->fan_output_path);
|
||||||
|
free(fans->fan_manual_path);
|
||||||
|
free(fans);
|
||||||
|
fans = next_fan;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_sensors *next_sensor;
|
||||||
|
while (sensors != NULL) {
|
||||||
|
next_sensor = sensors->next;
|
||||||
|
free(sensors->path);
|
||||||
|
free(sensors);
|
||||||
|
sensors = next_sensor;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(exit_code);
|
||||||
|
}
|
||||||
|
|
||||||
void signal_handler(int signal)
|
void signal_handler(int signal)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -83,25 +108,15 @@ void signal_handler(int signal)
|
||||||
|
|
||||||
case SIGTERM:
|
case SIGTERM:
|
||||||
syslog(LOG_WARNING, "Received SIGTERM signal.");
|
syslog(LOG_WARNING, "Received SIGTERM signal.");
|
||||||
delete_pid();
|
cleanup_and_exit(EXIT_SUCCESS);
|
||||||
//TODO: free resources
|
|
||||||
set_fans_auto(fans);
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SIGINT:
|
case SIGINT:
|
||||||
syslog(LOG_WARNING, "Received SIGINT signal.");
|
syslog(LOG_WARNING, "Received SIGINT signal.");
|
||||||
delete_pid();
|
cleanup_and_exit(EXIT_SUCCESS);
|
||||||
//TODO: free resources
|
|
||||||
set_fans_auto(fans);
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
|
|
||||||
case SIGSTOP:
|
case SIGSTOP:
|
||||||
syslog(LOG_WARNING, "Received SIGSTOP signal.");
|
syslog(LOG_WARNING, "Received SIGSTOP signal.");
|
||||||
delete_pid();
|
cleanup_and_exit(EXIT_SUCCESS);
|
||||||
//TODO: free resources
|
|
||||||
set_fans_auto(fans);
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
syslog(LOG_WARNING, "Unhandled signal (%d) %s", signal, strsignal(signal));
|
syslog(LOG_WARNING, "Unhandled signal (%d) %s", signal, strsignal(signal));
|
||||||
|
|
Loading…
Reference in a new issue