~ubuntu-branches/ubuntu/quantal/open-vm-tools/quantal-201210021442

« back to all changes in this revision

Viewing changes to lib/conf/conf.c

  • Committer: Bazaar Package Importer
  • Author(s): Serge Hallyn
  • Date: 2011-03-31 14:20:05 UTC
  • mfrom: (1.4.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110331142005-3n9red91p7ogkweo
Tags: 2011.03.28-387002-0ubuntu1
* Merge latest upstream git tag.  This has the unlocked_ioctl change
  needed to fix dkms build failures (LP: #727342)
* Changes in debian/rules:
  - work around a bug in toolbox/Makefile, where install-exec-hook is
    not happening.  This needs to get fixed the right way.
  - don't install 'vmware-user' which seems to no longer exist
  - move /etc/xdg into open-vm-toolbox (which should be done using .install)
* debian/open-vm-tools.init: add 'modprobe [-r] vmblock'. (LP: #332323)
* debian/rules and debian/open-vm-toolbox.lintian-overrides:
  - Make vmware-user-suid-wrapper suid-root (LP: #332323)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*********************************************************
2
 
 * Copyright (C) 2002 VMware, Inc. All rights reserved.
3
 
 *
4
 
 * This program is free software; you can redistribute it and/or modify it
5
 
 * under the terms of the GNU Lesser General Public License as published
6
 
 * by the Free Software Foundation version 2.1 and no later version.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful, but
9
 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10
 
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
11
 
 * License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU Lesser General Public License
14
 
 * along with this program; if not, write to the Free Software Foundation, Inc.,
15
 
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
16
 
 *
17
 
 *********************************************************/
18
 
 
19
 
/*
20
 
 * conf.c --
21
 
 *
22
 
 *    Manage the tools configuration file.
23
 
 *
24
 
 */
25
 
 
26
 
#ifndef VMX86_DEVEL
27
 
 
28
 
#endif
29
 
 
30
 
 
31
 
#include <stdlib.h>
32
 
 
33
 
#include "vm_assert.h"
34
 
#include "guestApp.h"
35
 
#include "util.h"
36
 
#include "str.h"
37
 
#include "conf.h"
38
 
#include "eventManager.h"
39
 
#include "debug.h"
40
 
 
41
 
 
42
 
/*
43
 
 *----------------------------------------------------------------------
44
 
 *
45
 
 * Conf_Load --
46
 
 *
47
 
 *      Set the conf dict's default values then attempt to load the
48
 
 *      conf file into memory.
49
 
 *
50
 
 * Results:
51
 
 *      
52
 
 *      The conf dict.
53
 
 *
54
 
 * Side effects:
55
 
 *
56
 
 *      None.
57
 
 *
58
 
 *----------------------------------------------------------------------
59
 
 */
60
 
 
61
 
GuestApp_Dict *
62
 
Conf_Load(void)
63
 
{
64
 
   GuestApp_Dict *confDict;
65
 
   char *path;
66
 
   char *confPath = GuestApp_GetConfPath();
67
 
   char *installPath = GuestApp_GetInstallPath();
68
 
 
69
 
   /* We really can't proceed without these paths. */
70
 
   ASSERT(confPath);
71
 
   ASSERT(installPath);
72
 
   if (confPath == NULL) {
73
 
      Panic("Could not get path to Tools configuration file.\n");
74
 
   }
75
 
 
76
 
   if (installPath == NULL) {
77
 
      Panic("Could not get path to Tools installation.\n");
78
 
   }
79
 
 
80
 
   path = Str_Asprintf(NULL, "%s%c%s", confPath, DIRSEPC, CONF_FILE);
81
 
   ASSERT_NOT_IMPLEMENTED(path);
82
 
   confDict = GuestApp_ConstructDict(path);
83
 
   // don't free path; it's used by the dict
84
 
   
85
 
   /* Set default conf values */
86
 
   path = Str_Asprintf(NULL, "%s%c%s", installPath, DIRSEPC,
87
 
                       CONFVAL_POWERONSCRIPT_DEFAULT);
88
 
   ASSERT_NOT_IMPLEMENTED(path);
89
 
   GuestApp_SetDictEntryDefault(confDict, CONFNAME_POWERONSCRIPT, path);
90
 
   free(path);
91
 
 
92
 
   path = Str_Asprintf(NULL, "%s%c%s", installPath, DIRSEPC, 
93
 
                       CONFVAL_POWEROFFSCRIPT_DEFAULT);
94
 
   ASSERT_NOT_IMPLEMENTED(path);
95
 
   GuestApp_SetDictEntryDefault(confDict, CONFNAME_POWEROFFSCRIPT, path);
96
 
   free(path);
97
 
 
98
 
   path = Str_Asprintf(NULL, "%s%c%s", installPath, DIRSEPC, 
99
 
                       CONFVAL_RESUMESCRIPT_DEFAULT);
100
 
   ASSERT_NOT_IMPLEMENTED(path);
101
 
   GuestApp_SetDictEntryDefault(confDict, CONFNAME_RESUMESCRIPT, path);
102
 
   free(path);
103
 
 
104
 
   path = Str_Asprintf(NULL, "%s%c%s", installPath, DIRSEPC, 
105
 
                       CONFVAL_SUSPENDSCRIPT_DEFAULT);
106
 
   ASSERT_NOT_IMPLEMENTED(path);
107
 
   GuestApp_SetDictEntryDefault(confDict, CONFNAME_SUSPENDSCRIPT, path);
108
 
   free(path);
109
 
 
110
 
   GuestApp_SetDictEntryDefault(confDict, CONFNAME_MAX_WIPERSIZE,
111
 
                                CONFVAL_MAX_WIPERSIZE_DEFAULT);
112
 
 
113
 
   /* Load the user-configured values from the conf file if it's there */
114
 
   GuestApp_LoadDict(confDict);
115
 
 
116
 
   free(installPath);
117
 
   free(confPath);
118
 
 
119
 
   return confDict;
120
 
}
121
 
 
122
 
 
123
 
/*
124
 
 *----------------------------------------------------------------------
125
 
 *
126
 
 * Conf_ReloadFile --
127
 
 *
128
 
 *      Reload the conf dict if the conf file has changed.
129
 
 *      Callers are expected to add this function to the event loop to 
130
 
 *      periodically read in configuration values.
131
 
 *
132
 
 * Results:
133
 
 *      
134
 
 *      TRUE is file was reloaded, FALSE otherwise.
135
 
 *
136
 
 * Side effects:
137
 
 *
138
 
 *           None.
139
 
 *
140
 
 *----------------------------------------------------------------------
141
 
 */
142
 
 
143
 
Bool
144
 
Conf_ReloadFile(GuestApp_Dict **pConfDict) // IN/OUT
145
 
146
 
   ASSERT(pConfDict);
147
 
   ASSERT(*pConfDict);
148
 
   
149
 
   if (GuestApp_WasDictFileChanged(*pConfDict)) {
150
 
      Debug("Conf file out of date; reloading...\n");
151
 
 
152
 
      GuestApp_FreeDict(*pConfDict);
153
 
      *pConfDict = Conf_Load();
154
 
 
155
 
      return TRUE;
156
 
   }
157
 
   return FALSE;
158
 
}