From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/lib/fusion/conf.c | 113 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 Source/DirectFB/lib/fusion/conf.c (limited to 'Source/DirectFB/lib/fusion/conf.c') diff --git a/Source/DirectFB/lib/fusion/conf.c b/Source/DirectFB/lib/fusion/conf.c new file mode 100755 index 0000000..017364f --- /dev/null +++ b/Source/DirectFB/lib/fusion/conf.c @@ -0,0 +1,113 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include + +#include +#include +#include + +#include + + +static FusionConfig config = { + .tmpfs = NULL, + .shmfile_gid = -1, +}; + +FusionConfig *fusion_config = &config; +const char *fusion_config_usage = + "libfusion options:\n" + " force-slave Always enter as a slave, waiting for the master, if not there\n" + " tmpfs= Location of shared memory file\n" + " shmfile-group= Group that owns shared memory files\n" + " [no-]debugshm Enable shared memory allocation tracking\n" + " [no-]madv-remove Enable usage of MADV_REMOVE (default = auto)\n" + "\n"; + +/**********************************************************************************************************************/ + +DirectResult +fusion_config_set( const char *name, const char *value ) +{ + if (strcmp (name, "tmpfs" ) == 0) { + if (value) { + if (fusion_config->tmpfs) + D_FREE( fusion_config->tmpfs ); + fusion_config->tmpfs = D_STRDUP( value ); + } + else { + D_ERROR("Fusion/Config 'tmpfs': No directory specified!\n"); + return DR_INVARG; + } + } else + if (strcmp (name, "shmfile-group" ) == 0) { + if (value) { + struct group *group_info; + + group_info = getgrnam( value ); + if (group_info) + fusion_config->shmfile_gid = group_info->gr_gid; + else + D_PERROR("Fusion/Config 'shmfile-group': Group '%s' not found!\n", value); + } + else { + D_ERROR("Fusion/Config 'shmfile-group': No file group name specified!\n"); + return DR_INVARG; + } + } else + if (strcmp (name, "force-slave" ) == 0) { + fusion_config->force_slave = true; + } else + if (strcmp (name, "no-force-slave" ) == 0) { + fusion_config->force_slave = false; + } else + if (strcmp (name, "debugshm" ) == 0) { + fusion_config->debugshm = true; + } else + if (strcmp (name, "no-debugshm" ) == 0) { + fusion_config->debugshm = false; + } else + if (strcmp (name, "madv-remove" ) == 0) { + fusion_config->madv_remove = true; + fusion_config->madv_remove_force = true; + } else + if (strcmp (name, "no-madv-remove" ) == 0) { + fusion_config->madv_remove = false; + fusion_config->madv_remove_force = true; + } else + if (direct_config_set( name, value )) + return DR_UNSUPPORTED; + + return DR_OK; +} + -- cgit