1dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes/* config-parser-common.c Common defines and routines for config file parsing 3dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 4dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * Copyright (C) 2007 Red Hat, Inc. 5dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 6dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * Licensed under the Academic Free License version 2.1 7dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 8dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * This program is free software; you can redistribute it and/or modify 9dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * it under the terms of the GNU General Public License as published by 10dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * the Free Software Foundation; either version 2 of the License, or 11dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * (at your option) any later version. 12dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 13dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * This program is distributed in the hope that it will be useful, 14dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * but WITHOUT ANY WARRANTY; without even the implied warranty of 15dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * GNU General Public License for more details. 17dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 18dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * You should have received a copy of the GNU General Public License 19dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * along with this program; if not, write to the Free Software 205baf2f856a9c6625993234855b07680da1c8916fTobias Mueller * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes * 22dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes */ 23dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 24dbecdeabb20e0ce11121819c63373f0afba57c58Marcus Brinkmann#include <config.h> 25dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes#include <dbus/dbus-internals.h> 26dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes#include <string.h> 27dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 28dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes#include "config-parser-common.h" 29dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes#include "utils.h" 30dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 31dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard HughesElementType 32dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughesbus_config_parser_element_name_to_type (const char *name) 33dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes{ 34dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes if (strcmp (name, "none") == 0) 35dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 36dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_NONE; 37dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 38dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "busconfig") == 0) 39dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 40dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_BUSCONFIG; 41dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 42dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "user") == 0) 43dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 44dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_USER; 45dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 46dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "auth") == 0) 47dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 48dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_AUTH; 49dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 50dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "type") == 0) 51dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 52dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_TYPE; 53dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 54dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "fork") == 0) 55dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 56dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_FORK; 57dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 58dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "pidfile") == 0) 59dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 60dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_PIDFILE; 61dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 62dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "listen") == 0) 63dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 64dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_LISTEN; 65dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 66dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "auth") == 0) 67dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 68dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_AUTH; 69dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 70dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "allow") == 0) 71dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 72dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_ALLOW; 73dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 74dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "deny") == 0) 75dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 76dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_DENY; 77dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 78dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "servicehelper") == 0) 79dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 80dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_SERVICEHELPER; 81dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 82dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "includedir") == 0) 83dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 84dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_INCLUDEDIR; 85dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 86dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "standard_session_servicedirs") == 0) 87dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 88dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_STANDARD_SESSION_SERVICEDIRS; 89dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 90dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "standard_system_servicedirs") == 0) 91dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 92dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_STANDARD_SYSTEM_SERVICEDIRS; 93dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 94dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "servicedir") == 0) 95dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 96dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_SERVICEDIR; 97dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 98dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "include") == 0) 99dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 100dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_INCLUDE; 101dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 102dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "policy") == 0) 103dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 104dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_POLICY; 105dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 106dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "limit") == 0) 107dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 108dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_LIMIT; 109dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 110dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "selinux") == 0) 111dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 112dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_SELINUX; 113dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 114dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes else if (strcmp (name, "associate") == 0) 115dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 116dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_ASSOCIATE; 117dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 118bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters else if (strcmp (name, "syslog") == 0) 119bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters { 120bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters return ELEMENT_SYSLOG; 121bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters } 1226663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen else if (strcmp (name, "keep_umask") == 0) 1236663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen { 1246663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen return ELEMENT_KEEP_UMASK; 1256663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen } 12607a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker else if (strcmp (name, "allow_anonymous") == 0) 12707a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker { 12807a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker return ELEMENT_ALLOW_ANONYMOUS; 12907a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker } 130dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return ELEMENT_NONE; 131dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes} 132dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 133dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughesconst char* 134dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughesbus_config_parser_element_type_to_name (ElementType type) 135dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes{ 136dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes switch (type) 137dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes { 138dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_NONE: 139dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return NULL; 140dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_BUSCONFIG: 141dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "busconfig"; 142dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_INCLUDE: 143dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "include"; 144dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_USER: 145dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "user"; 146dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_LISTEN: 147dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "listen"; 148dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_AUTH: 149dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "auth"; 150dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_POLICY: 151dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "policy"; 152dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_LIMIT: 153dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "limit"; 154dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_ALLOW: 155dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "allow"; 156dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_DENY: 157dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "deny"; 158dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_FORK: 159dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "fork"; 160dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_PIDFILE: 161dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "pidfile"; 162dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_STANDARD_SESSION_SERVICEDIRS: 163dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "standard_session_servicedirs"; 164dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_STANDARD_SYSTEM_SERVICEDIRS: 165dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "standard_system_servicedirs"; 166dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_SERVICEDIR: 167dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "servicedir"; 168dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_SERVICEHELPER: 169dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "servicehelper"; 170dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_INCLUDEDIR: 171dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "includedir"; 172dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_TYPE: 173dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "type"; 174dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_SELINUX: 175dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "selinux"; 176dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes case ELEMENT_ASSOCIATE: 177dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return "associate"; 178bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters case ELEMENT_SYSLOG: 179bb2a464067c6843320f367b590b0e4cb00225e50Colin Walters return "syslog"; 1806663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen case ELEMENT_KEEP_UMASK: 1816663d1dd35f94717209cd6fca86045bca853ef79Matt McCutchen return "keep_umask"; 18207a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker case ELEMENT_ALLOW_ANONYMOUS: 18307a4ad4b04702fc384b324e5f902a5b2279b0c25Dennis Kaarsemaker return "allow_anonymous"; 184dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes } 185dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 186dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes _dbus_assert_not_reached ("bad element type"); 187dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 188dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes return NULL; 189dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes} 190dd8f96b8af8e079bc0292375cfd5da9625b7b5ddRichard Hughes 191