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 136 137 138 139 140
|
/*********************************************************
* Copyright (C) 2008 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
*********************************************************/
#ifndef _VMTOOLS_H_
#define _VMTOOLS_H_
/**
* @file vmtools.h
*
* Public functions from the VMTools shared library.
*
* @addtogroup vmtools_utils
* @{
*/
#if !defined(G_LOG_DOMAIN)
# define G_LOG_DOMAIN VMTools_GetDefaultLogDomain()
#endif
#define VMTOOLS_GUEST_SERVICE "vmsvc"
#define VMTOOLS_USER_SERVICE "vmusr"
/* Needs to come before glib.h. */
const char *
VMTools_GetDefaultLogDomain(void);
#include <glib.h>
#if defined(G_PLATFORM_WIN32)
# include <windows.h>
#else
# include <signal.h>
# include <sys/time.h>
#endif
/**
* Converts an UTF-8 path to the local (i.e., glib) file name encoding.
* This is a no-op on Windows, since the local encoding is always UTF-8
* in glib. The returned value should not be freed directly; instead,
* use VMTOOLS_FREE_FILENAME.
*
* @param[in] path Path in UTF-8 (should not be NULL).
* @param[out] err Where to store errors (type: GError **; may be NULL).
*
* @return The path in glib's filename encoding, or NULL on error.
*/
#if defined(G_PLATFORM_WIN32)
# define VMTOOLS_GET_FILENAME_LOCAL(path, err) (gchar *) (path)
#else
# define VMTOOLS_GET_FILENAME_LOCAL(path, err) g_filename_from_utf8((path), \
-1, \
NULL, \
NULL, \
(err))
#endif
/**
* Frees a path allocated with VMTOOLS_GET_FILENAME_LOCAL. No-op on Windows.
*
* @param[in] path Path in UTF-8.
*/
#if defined(G_PLATFORM_WIN32)
# define VMTOOLS_RELEASE_FILENAME_LOCAL(path) (void) (path)
#else
# define VMTOOLS_RELEASE_FILENAME_LOCAL(path) g_free(path)
#endif
void
vm_free(void *ptr);
void
VMTools_SetDefaultLogDomain(const gchar *domain);
void
VMTools_ConfigLogging(GKeyFile *cfg);
void
VMTools_EnableLogging(gboolean enable);
gchar *
VMTools_GetToolsConfFile(void);
GKeyFile *
VMTools_LoadConfig(const gchar *path,
GKeyFileFlags flags,
gboolean autoUpgrade);
gboolean
VMTools_ReloadConfig(const gchar *path,
GKeyFileFlags flags,
GKeyFile **config,
time_t *mtime);
gboolean
VMTools_WriteConfig(const gchar *path,
GKeyFile *config,
GError **err);
#if defined(G_PLATFORM_WIN32)
GSource *
VMTools_NewHandleSource(HANDLE h);
#else
/** Type of callback used by the signal event source. */
typedef gboolean (*SignalSourceCb)(const siginfo_t *, gpointer);
GSource *
VMTools_NewSignalSource(int signum);
#endif
GArray *
VMTools_WrapArray(gconstpointer data,
guint elemSize,
guint count);
/** @} */
#endif /* _VMTOOLS_H_ */
|