classifier: Omit all-1-bits mask for VLAN TCI in cls_rule_format().
[sliver-openvswitch.git] / lib / dirs.c.in
1 #line 2 "@srcdir@/lib/dirs.c.in"
2 /*
3  * Copyright (c) 2008, 2009, 2010 Nicira Networks.
4  *
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:
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 #include <config.h>
19 #include "dirs.h"
20 #include <stdlib.h>
21
22 struct directory {
23     const char *value;          /* Actual value; NULL if not yet determined. */
24     const char *default_value;  /* Default value. */
25     const char *var_name;       /* Environment variable to override default. */
26 };
27
28 static const char *
29 get_dir(struct directory *d)
30 {
31     if (!d->value) {
32         d->value = getenv(d->var_name);
33         if (!d->value || !d->value[0]) {
34             d->value = d->default_value;
35         }
36     }
37     return d->value;
38 }
39
40 const char *
41 ovs_pkgdatadir(void)
42 {
43     static struct directory d = { NULL, @pkgdatadir@, "OVS_PKGDATADIR" };
44     return get_dir(&d);
45 }
46
47 const char *
48 ovs_rundir(void)
49 {
50     static struct directory d = { NULL, @RUNDIR@, "OVS_RUNDIR" };
51     return get_dir(&d);
52 }
53
54 const char *
55 ovs_logdir(void)
56 {
57     static struct directory d = { NULL, @LOGDIR@, "OVS_LOGDIR" };
58     return get_dir(&d);
59 }
60
61 const char *
62 ovs_bindir(void)
63 {
64     static struct directory d = { NULL, @bindir@, "OVS_BINDIR" };
65     return get_dir(&d);
66 }