open-vm-tools 2012.03.13
|
00001 /********************************************************* 00002 * Copyright (C) 2008 VMware, Inc. All rights reserved. 00003 * 00004 * This program is free software; you can redistribute it and/or modify it 00005 * under the terms of the GNU Lesser General Public License as published 00006 * by the Free Software Foundation version 2.1 and no later version. 00007 * 00008 * This program is distributed in the hope that it will be useful, but 00009 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 00010 * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public 00011 * License for more details. 00012 * 00013 * You should have received a copy of the GNU Lesser General Public License 00014 * along with this program; if not, write to the Free Software Foundation, Inc., 00015 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 00016 * 00017 *********************************************************/ 00018 00019 #ifndef _VMWARE_TOOLS_UTILS_H_ 00020 #define _VMWARE_TOOLS_UTILS_H_ 00021 00037 #define VMTOOLS_GUEST_SERVICE "vmsvc" 00038 #define VMTOOLS_USER_SERVICE "vmusr" 00039 00040 #if defined(__cplusplus) 00041 # define VMTOOLS_EXTERN_C extern "C" 00042 #else 00043 # define VMTOOLS_EXTERN_C 00044 #endif 00045 00046 #include <glib.h> 00047 #if defined(G_PLATFORM_WIN32) 00048 # include <windows.h> 00049 #else 00050 # include <signal.h> 00051 # include <sys/time.h> 00052 #endif 00053 00054 00055 /* Work around a glib limitation: it doesn't set G_INLINE_FUNC on Win32. */ 00056 #if defined(G_PLATFORM_WIN32) 00057 # if defined(G_INLINE_FUNC) 00058 # undef G_INLINE_FUNC 00059 # endif 00060 # define G_INLINE_FUNC static __inline 00061 #endif 00062 00063 00076 #if defined(G_PLATFORM_WIN32) 00077 # define VMTOOLS_GET_FILENAME_LOCAL(path, err) (gchar *) (path) 00078 #else 00079 # define VMTOOLS_GET_FILENAME_LOCAL(path, err) g_filename_from_utf8((path), \ 00080 -1, \ 00081 NULL, \ 00082 NULL, \ 00083 (err)) 00084 #endif 00085 00092 #if defined(G_PLATFORM_WIN32) 00093 # define VMTOOLS_RELEASE_FILENAME_LOCAL(path) (void) (path) 00094 #else 00095 # define VMTOOLS_RELEASE_FILENAME_LOCAL(path) g_free(path) 00096 #endif 00097 00099 #define VMTOOLS_WRAP_ARRAY(a) VMTools_WrapArray((a), sizeof *(a), G_N_ELEMENTS(a)) 00100 00101 00102 G_BEGIN_DECLS 00103 00104 void 00105 vm_free(void *ptr); 00106 00107 gboolean 00108 VMTools_LoadConfig(const gchar *path, 00109 GKeyFileFlags flags, 00110 GKeyFile **config, 00111 time_t *mtime); 00112 00113 gboolean 00114 VMTools_WriteConfig(const gchar *path, 00115 GKeyFile *config, 00116 GError **err); 00117 00118 #if defined(G_PLATFORM_WIN32) 00119 00120 gboolean 00121 VMTools_AttachConsole(void); 00122 00123 GSource * 00124 VMTools_NewHandleSource(HANDLE h); 00125 00126 #else 00127 00129 typedef gboolean (*SignalSourceCb)(const siginfo_t *, gpointer); 00130 00131 GSource * 00132 VMTools_NewSignalSource(int signum); 00133 00134 #endif 00135 00136 GSource * 00137 VMTools_CreateTimer(gint timeout); 00138 00139 GArray * 00140 VMTools_WrapArray(gconstpointer data, 00141 guint elemSize, 00142 guint count); 00143 00144 G_END_DECLS 00145 00148 #endif /* _VMWARE_TOOLS_UTILS_H_ */ 00149