summaryrefslogtreecommitdiff
path: root/source4/dynconfig.c
blob: d439243f0f892b191aa34a8dd10c6fc1426e5aa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* 
   Unix SMB/CIFS implementation.
   Copyright (C) 2001 by Martin Pool <mbp@samba.org>
   Copyright (C) Jim McDonough (jmcd@us.ibm.com)  2003.
   Copyright (C) Stefan Metzmacher	2003
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
   
   This program 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 General Public License for more details.
   
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include "includes.h"
#include "version.h"

/**
 * @file dynconfig.c
 *
 * @brief Global configurations, initialized to configured defaults.
 *
 * This file should be the only file that depends on path
 * configuration (--prefix, etc), so that if ./configure is re-run,
 * all programs will be appropriately updated.  Everything else in
 * Samba should import extern variables from here, rather than relying
 * on preprocessor macros.
 *
 * Eventually some of these may become even more variable, so that
 * they can for example consistently be set across the whole of Samba
 * by command-line parameters, config file entries, or environment
 * variables.
 *
 * @todo Perhaps eventually these should be merged into the parameter
 * table?  There's kind of a chicken-and-egg situation there...
 **/

/** Directory with super-user binaries */
_PUBLIC_ const char *dyn_SBINDIR = SBINDIR;

/** Directory with generic binaries */
_PUBLIC_ const char *dyn_BINDIR = BINDIR;

/**< Location of smb.conf file. **/
_PUBLIC_ const char *dyn_CONFIGFILE = CONFIGFILE; 

/** Log file directory. **/
_PUBLIC_ const char *dyn_LOGFILEBASE = LOGFILEBASE; 

/** Directory for local RPC (ncalrpc: transport) */
_PUBLIC_ const char *dyn_NCALRPCDIR = NCALRPCDIR;

/** Statically configured LanMan hosts. **/
_PUBLIC_ const char *dyn_LMHOSTSFILE = LMHOSTSFILE; 

/** Samba library directory. */
_PUBLIC_ const char *dyn_LIBDIR = LIBDIR;

_PUBLIC_ const char *dyn_MODULESDIR = MODULESDIR;

/** Shared library extension */
_PUBLIC_ const char *dyn_SHLIBEXT = SHLIBEXT;

/**
 * @brief Directory holding lock files.
 *
 * Not writable, but used to set a default in the parameter table.
 **/
_PUBLIC_ const char *dyn_LOCKDIR = LOCKDIR;

/** pid file directory */
_PUBLIC_ const char *dyn_PIDDIR  = PIDDIR;

/** Private data directory; holds ldb files and the like */
_PUBLIC_ const char *dyn_PRIVATE_DIR = PRIVATE_DIR;

/** SWAT data file (images, etc) directory */
_PUBLIC_ const char *dyn_SWATDIR = SWATDIR;

/** SETUP files (source files used by the provision) */
_PUBLIC_ const char *dyn_SETUPDIR = SETUPDIR;

/** EJS Javascript library includes */
_PUBLIC_ const char *dyn_JSDIR = JSDIR;

/** Where to find the winbindd socket */

_PUBLIC_ const char *dyn_WINBINDD_SOCKET_DIR = WINBINDD_SOCKET_DIR;

_PUBLIC_ const char *samba_version_string(void)
{
	const char *official_string = SAMBA_VERSION_OFFICIAL_STRING;
#ifdef SAMBA_VERSION_RELEASE_NICKNAME
 	const char *release_nickname = SAMBA_VERSION_RELEASE_NICKNAME;
#else
 	const char *release_nickname = NULL;
#endif
#ifdef SAMBA_VERSION_VENDOR_SUFFIX
 	const char *vendor_suffix = SAMBA_VERSION_VENDOR_SUFFIX;
#else
 	const char *vendor_suffix = NULL;
#endif
#ifdef SAMBA_VERSION_VENDOR_PATCH
 	const char *vendor_patch = SAMBA_VERSION_VENDOR_PATCH;
#else
 	const char *vendor_patch = NULL;
#endif
	static char *samba_version;
	static BOOL init_samba_version;

	if (init_samba_version) {
		return samba_version;
	}

	samba_version = talloc_asprintf(talloc_autofree_context(),
					"%s%s%s%s%s%s%s%s",
					official_string,
					(vendor_suffix?"-":""),
					(vendor_suffix?vendor_suffix:""),
					(vendor_patch?"-":""),
					(vendor_patch?vendor_patch:""),
					(release_nickname?" (":""),
					(release_nickname?release_nickname:""),
					(release_nickname?")":""));

	init_samba_version = True;
	return samba_version;
}