1 #line 2 "@srcdir@/lib/dirs.c.in"
3 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
21 #include "ovs-thread.h"
25 const char *value
; /* Actual value; NULL if not yet determined. */
26 const char *default_value
; /* Default value. */
27 const char *var_name
; /* Environment variable to override default. */
28 struct ovsthread_once once
; /* Ensures 'value' gets initialized once. */
32 get_dir(struct directory
*d
)
34 if (ovsthread_once_start(&d
->once
)) {
35 d
->value
= getenv(d
->var_name
);
36 if (!d
->value
|| !d
->value
[0]) {
37 d
->value
= d
->default_value
;
39 ovsthread_once_done(&d
->once
);
47 static struct directory d
= {
48 NULL
, @sysconfdir@
, "OVS_SYSCONFDIR", OVSTHREAD_ONCE_INITIALIZER
57 static struct directory d
= {
58 NULL
, @pkgdatadir@
, "OVS_PKGDATADIR", OVSTHREAD_ONCE_INITIALIZER
67 static struct directory d
= {
68 NULL
, @RUNDIR@
, "OVS_RUNDIR", OVSTHREAD_ONCE_INITIALIZER
77 static struct directory d
= {
78 NULL
, @LOGDIR@
, "OVS_LOGDIR", OVSTHREAD_ONCE_INITIALIZER
87 static struct ovsthread_once once
= OVSTHREAD_ONCE_INITIALIZER
;
88 static const char *dbdir
;
90 if (ovsthread_once_start(&once
)) {
91 dbdir
= getenv("OVS_DBDIR");
92 if (!dbdir
|| !dbdir
[0]) {
93 char *sysconfdir
= getenv("OVS_SYSCONFDIR");
96 ? xasprintf("%s/openvswitch", sysconfdir
)
99 ovsthread_once_done(&once
);
107 static struct directory d
= {
108 NULL
, @bindir@
, "OVS_BINDIR", OVSTHREAD_ONCE_INITIALIZER