-
ilor authoredcd1e0c11
od_unix.c 1.92 KiB
/*
* This file is part of the Poliqarp suite.
*
* Copyright (C) 2004-2009 by Instytut Podstaw Informatyki Polskiej
* Akademii Nauk (IPI PAN; Institute of Computer Science, Polish
* Academy of Sciences; cf. www.ipipan.waw.pl). All rights reserved.
*
* This file may be distributed and/or modified under the terms of the
* GNU General Public License version 2 as published by the Free Software
* Foundation and appearing in the file gpl.txt included in the packaging
* of this file. (See http://www.gnu.org/licenses/translations.html for
* unofficial translations.)
*
* A commercial license is available from IPI PAN (contact
* Michal.Ciesiolka@ipipan.waw.pl or ipi@ipipan.waw.pl for more
* information). Licensees holding a valid commercial license from IPI
* PAN may use this file in accordance with that license.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
* THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE.
*/
#include <poliqarp-config.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <foostring/foostring.h>
#include "osdep.h"
static char *config_dir = NULL;
const char *get_config_dir()
{
if (config_dir == NULL)
{
char* home = getenv("HOME");
if (home == NULL)
return "";
config_dir = string_aformat("%s/.poliqarp/", home);
}
return config_dir;
}
void free_config_dir() {
free(config_dir);
}
void poliqarp_sleep(int seconds)
{
sleep(seconds);
}
void handle_signals()
{
signal(SIGPIPE, SIG_IGN);
signal(SIGINT, SIG_IGN);
}
int console_detach()
{
switch (fork()) {
case -1:
return -1;
case 0:
break;
default:
_exit(0);
}
if (setsid() == -1)
return -1;
return 0;
}
void notify_readiness(unsigned long thread_id)
{
/* Deliberately not implemented. */
}
void print_socket_error(const char *s)
{
perror(s);
}