[PATCH] revert log messages format
Peter Hatina
phatina at redhat.com
Tue Mar 13 03:02:52 PDT 2012
---
SpiceXPI/src/plugin/controller.cpp | 18 +++---
SpiceXPI/src/plugin/debug.h | 75 ++++++++++++++++++++++++
SpiceXPI/src/plugin/plugin.cpp | 112 ++++++++++++++++++++++++++++++------
3 files changed, 176 insertions(+), 29 deletions(-)
create mode 100644 SpiceXPI/src/plugin/debug.h
diff --git a/SpiceXPI/src/plugin/controller.cpp b/SpiceXPI/src/plugin/controller.cpp
index 23c853b..14de666 100644
--- a/SpiceXPI/src/plugin/controller.cpp
+++ b/SpiceXPI/src/plugin/controller.cpp
@@ -54,6 +54,7 @@ extern "C" {
# include <sys/un.h>
}
+#include "debug.h"
#include "rederrorcodes.h"
#include "controller.h"
@@ -70,7 +71,6 @@ SpiceController::SpiceController(const std::string &name):
SpiceController::~SpiceController()
{
- g_debug(G_STRFUNC);
Disconnect();
}
@@ -89,7 +89,7 @@ int SpiceController::Connect()
{
if ((m_client_socket = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
{
- g_critical("controller socket: %s", g_strerror(errno));
+ LOG_CRITICAL("controller socket: " << g_strerror(errno));
return -1;
}
}
@@ -100,13 +100,9 @@ int SpiceController::Connect()
int rc = connect(m_client_socket, (struct sockaddr *) &remote, strlen(remote.sun_path) + sizeof(remote.sun_family));
if (rc == -1)
- {
- g_critical("controller connect: %s", g_strerror(errno));
- }
+ LOG_CRITICAL("controller connect: " << g_strerror(errno));
else
- {
- g_debug("controller connected");
- }
+ LOG_DEBUG("controller connected");
return rc;
}
@@ -136,6 +132,8 @@ void SpiceController::Disconnect()
// delete the temporary file, which is used for the socket
unlink(m_name.c_str());
m_name.clear();
+
+ LOG_DEBUG("disconnecting");
}
uint32_t SpiceController::Write(const void *lpBuffer, uint32_t nBytesToWrite)
@@ -144,8 +142,8 @@ uint32_t SpiceController::Write(const void *lpBuffer, uint32_t nBytesToWrite)
if (len != (ssize_t)nBytesToWrite)
{
- g_warning("incomplete send, bytes to write = %lu, bytes written = %d: %s",
- nBytesToWrite, len, g_strerror(errno));
+ LOG_WARNING("incomplete send, bytes to write = " << nBytesToWrite
+ << ", bytes written = " << len << ": " << g_strerror(errno));
}
return len;
diff --git a/SpiceXPI/src/plugin/debug.h b/SpiceXPI/src/plugin/debug.h
new file mode 100644
index 0000000..97735cf
--- /dev/null
+++ b/SpiceXPI/src/plugin/debug.h
@@ -0,0 +1,75 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Copyright 2012, Red Hat Inc.
+ * Based on mozilla.org's scriptable plugin example
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Peter Hatina
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef DEBUG_H
+#define DEBUG_H
+
+#include <sstream>
+
+#if __GNUC__
+static inline std::string pretty_func_to_func_name(const std::string& f_name)
+{
+ std::string name(f_name);
+ std::string::size_type end_pos = f_name.find('(');
+ if (end_pos == std::string::npos)
+ return f_name;
+
+ std::string::size_type start = f_name.rfind(' ', end_pos);
+ if (start == std::string::npos)
+ return f_name;
+
+ end_pos -= ++start;
+ return name.substr(start, end_pos);
+}
+# define FUNC_NAME pretty_func_to_func_name(__PRETTY_FUNCTION__).c_str()
+#else
+# define FUNC_NAME __FUNCTION__
+#endif
+
+#define LOG(func, msg) \
+ func(dynamic_cast<std::stringstream&>(std::stringstream() \
+ << std::flush << FUNC_NAME << ": " << msg).str().c_str())
+
+#define LOG_DEBUG(msg) LOG(g_debug, msg)
+#define LOG_WARNING(msg) LOG(g_warning, msg)
+#define LOG_CRITICAL(msg) LOG(g_critical, msg)
+#define LOG_MESSAGE(msg) LOG(g_message, msg)
+
+#endif // DEBUG_H
diff --git a/SpiceXPI/src/plugin/plugin.cpp b/SpiceXPI/src/plugin/plugin.cpp
index 39f2e81..d9f20bd 100644
--- a/SpiceXPI/src/plugin/plugin.cpp
+++ b/SpiceXPI/src/plugin/plugin.cpp
@@ -85,6 +85,7 @@ static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
#include "config.h"
#include "controller.h"
+#include "debug.h"
#include "plugin.h"
#include "nsScriptablePeer.h"
@@ -260,199 +261,243 @@ NPBool nsPluginInstance::isInitialized()
/* attribute string hostIP; */
char *nsPluginInstance::GetHostIP() const
{
+ LOG_DEBUG(m_host_ip);
return stringCopy(m_host_ip);
}
void nsPluginInstance::SetHostIP(const char *aHostIP)
{
m_host_ip = aHostIP;
+ LOG_DEBUG(m_host_ip);
}
/* attribute string port; */
char *nsPluginInstance::GetPort() const
{
+ LOG_DEBUG(m_port);
return stringCopy(m_port);
}
void nsPluginInstance::SetPort(const char *aPort)
{
m_port = aPort;
+ LOG_DEBUG(m_port);
}
/* attribute string SecurePort; */
char *nsPluginInstance::GetSecurePort() const
{
+ LOG_DEBUG(m_secure_port);
return stringCopy(m_secure_port);
}
void nsPluginInstance::SetSecurePort(const char *aSecurePort)
{
m_secure_port = aSecurePort;
+ LOG_DEBUG(m_secure_port);
}
/* attribute string Password; */
char *nsPluginInstance::GetPassword() const
{
+ LOG_DEBUG("password requested");
return stringCopy(m_password);
}
void nsPluginInstance::SetPassword(const char *aPassword)
{
m_password = aPassword;
+ LOG_DEBUG("password set");
}
/* attribute string CipherSuite; */
char *nsPluginInstance::GetCipherSuite() const
{
+ LOG_DEBUG(m_cipher_suite);
return stringCopy(m_cipher_suite);
}
void nsPluginInstance::SetCipherSuite(const char *aCipherSuite)
{
m_cipher_suite = aCipherSuite;
+ LOG_DEBUG(m_cipher_suite);
}
/* attribute string SSLChannels; */
char *nsPluginInstance::GetSSLChannels() const
{
+ LOG_DEBUG(m_ssl_channels);
return stringCopy(m_ssl_channels);
}
void nsPluginInstance::SetSSLChannels(const char *aSSLChannels)
{
m_ssl_channels = aSSLChannels;
+ LOG_DEBUG(m_ssl_channels);
}
//* attribute string TrustStore; */
char *nsPluginInstance::GetTrustStore() const
{
+ LOG_DEBUG(m_trust_store);
return stringCopy(m_trust_store);
}
void nsPluginInstance::SetTrustStore(const char *aTrustStore)
{
m_trust_store = aTrustStore;
+ LOG_DEBUG(m_trust_store);
}
/* attribute string HostSubject; */
char *nsPluginInstance::GetHostSubject() const
{
+ LOG_DEBUG(m_host_subject);
return stringCopy(m_host_subject);
}
void nsPluginInstance::SetHostSubject(const char *aHostSubject)
{
m_host_subject = aHostSubject;
+ LOG_DEBUG(m_host_subject);
}
/* attribute boolean fullScreen; */
PRBool nsPluginInstance::GetFullScreen() const
{
+ LOG_DEBUG(m_fullscreen);
return m_fullscreen;
}
void nsPluginInstance::SetFullScreen(PRBool aFullScreen)
{
m_fullscreen = aFullScreen;
+ LOG_DEBUG(m_fullscreen);
}
/* attribute boolean Smartcard; */
PRBool nsPluginInstance::GetSmartcard() const
{
+ LOG_DEBUG(m_smartcard);
return m_smartcard;
}
void nsPluginInstance::SetSmartcard(PRBool aSmartcard)
{
m_smartcard = aSmartcard;
+ LOG_DEBUG(m_smartcard);
}
/* attribute string Title; */
char *nsPluginInstance::GetTitle() const
{
+ std::string title(m_title);
+ size_t found = -2;
+ while ((found = title.find("%", found + 2)) != std::string::npos)
+ title.replace(found, 1, "%%");
+ LOG_DEBUG(title);
return stringCopy(m_title);
}
void nsPluginInstance::SetTitle(const char *aTitle)
{
m_title = aTitle;
+ std::string title(m_title);
+ size_t found = -2;
+ while ((found = title.find("%", found + 2)) != std::string::npos)
+ title.replace(found, 1, "%%");
+ LOG_DEBUG(title);
}
/* attribute string dynamicMenu; */
char *nsPluginInstance::GetDynamicMenu() const
{
+ LOG_DEBUG(m_dynamic_menu);
return stringCopy(m_dynamic_menu);
}
void nsPluginInstance::SetDynamicMenu(const char *aDynamicMenu)
{
m_dynamic_menu = aDynamicMenu;
+ LOG_DEBUG(m_dynamic_menu);
}
/* attribute string NumberOfMonitors; */
char *nsPluginInstance::GetNumberOfMonitors() const
{
+ LOG_DEBUG(m_number_of_monitors);
return stringCopy(m_number_of_monitors);
}
void nsPluginInstance::SetNumberOfMonitors(const char *aNumberOfMonitors)
{
m_number_of_monitors = aNumberOfMonitors;
+ LOG_DEBUG(m_number_of_monitors);
}
/* attribute boolean AdminConsole; */
PRBool nsPluginInstance::GetAdminConsole() const
{
+ LOG_DEBUG(m_admin_console);
return m_admin_console;
}
void nsPluginInstance::SetAdminConsole(PRBool aAdminConsole)
{
m_admin_console = aAdminConsole;
+ LOG_DEBUG(m_admin_console);
}
/* attribute string GuestHostName; */
char *nsPluginInstance::GetGuestHostName() const
{
+ LOG_DEBUG(m_guest_host_name);
return stringCopy(m_guest_host_name);
}
void nsPluginInstance::SetGuestHostName(const char *aGuestHostName)
{
m_guest_host_name = aGuestHostName;
+ LOG_DEBUG(m_guest_host_name);
}
/* attribute string HotKey; */
char *nsPluginInstance::GetHotKeys() const
{
+ LOG_DEBUG(m_hot_keys);
return stringCopy(m_hot_keys);
}
void nsPluginInstance::SetHotKeys(const char *aHotKeys)
{
m_hot_keys = aHotKeys;
+ LOG_DEBUG(m_hot_keys);
}
/* attribute boolean NoTaskMgrExecution; */
PRBool nsPluginInstance::GetNoTaskMgrExecution() const
{
+ LOG_DEBUG(m_no_taskmgr_execution);
return m_no_taskmgr_execution;
}
void nsPluginInstance::SetNoTaskMgrExecution(PRBool aNoTaskMgrExecution)
{
m_no_taskmgr_execution = aNoTaskMgrExecution;
+ LOG_DEBUG(m_no_taskmgr_execution);
}
/* attribute boolean SendCtrlAltDelete; */
PRBool nsPluginInstance::GetSendCtrlAltDelete() const
{
+ LOG_DEBUG(m_send_ctrlaltdel);
return m_send_ctrlaltdel;
}
void nsPluginInstance::SetSendCtrlAltDelete(PRBool aSendCtrlAltDelete)
{
m_send_ctrlaltdel = aSendCtrlAltDelete;
+ LOG_DEBUG(m_send_ctrlaltdel);
}
/* attribute unsigned short UsbListenPort; */
@@ -461,6 +506,7 @@ unsigned short nsPluginInstance::GetUsbListenPort() const
// this method exists due to RHEVM 2.2
// and should be removed some time in future,
// when fixed in RHEVM
+ LOG_WARNING("this should not be called");
return 0;
}
@@ -469,6 +515,7 @@ void nsPluginInstance::SetUsbListenPort(unsigned short aUsbPort)
// this method exists due to RHEVM 2.2
// and should be removed some time in future,
// when fixed in RHEVM
+ LOG_WARNING("this should not be called");
}
/* attribute boolean UsbAutoShare; */
@@ -477,6 +524,7 @@ PRBool nsPluginInstance::GetUsbAutoShare() const
// this method exists due to RHEVM 2.2
// and should be removed some time in future,
// when fixed in RHEVM
+ LOG_WARNING("this should not be called");
return false;
}
@@ -485,6 +533,7 @@ void nsPluginInstance::SetUsbAutoShare(PRBool aUsbAutoShare)
// this method exists due to RHEVM 2.2
// and should be removed some time in future,
// when fixed in RHEVM
+ LOG_WARNING("this should not be called");
}
void nsPluginInstance::WriteToPipe(const void *data, uint32_t size)
@@ -555,7 +604,7 @@ void nsPluginInstance::Connect()
socket_file += "/spice-xpi";
if (setenv("SPICE_XPI_SOCKET", socket_file.c_str(), 1))
{
- g_critical("could not set SPICE_XPI_SOCKET env variable");
+ LOG_CRITICAL("could not set SPICE_XPI_SOCKET env variable");
return;
}
@@ -574,23 +623,43 @@ void nsPluginInstance::Connect()
char c;
if (read(pipe_fds[0], &c, 1) != 0)
- g_critical("Error while reading on pipe: %s", g_strerror(errno));
+ LOG_CRITICAL("Error while reading on pipe: " << g_strerror(errno));
close(pipe_fds[0]);
pipe_fds[0] = -1;
- execl("/usr/libexec/spice-xpi-client", "/usr/libexec/spice-xpi-client", NULL);
- g_message("failed to run spice-xpi-client, running spicec instead");
+ char *spice_xpi_client_args[] = {
+ const_cast<char*>("/usr/libexec/spice-xpi-client"),
+ NULL
+ };
+ std::stringstream ss;
+ int cnt = sizeof(spice_xpi_client_args) / sizeof(spice_xpi_client_args[0]);
+ for (int i = 0; i < cnt; ++i)
+ ss << spice_xpi_client_args[i] << " ";
+ LOG_MESSAGE("Launching " << ss.str());
+ execv(spice_xpi_client_args[0], spice_xpi_client_args);
+ LOG_MESSAGE("failed to run spice-xpi-client, running spicec instead");
// TODO: temporary fallback for backward compatibility
- execl("/usr/bin/spicec", "/usr/bin/spicec", "--controller", NULL);
- g_critical("ERROR failed to run spicec fallback");
+ char *spicec_args[] = {
+ const_cast<char*>("/usr/bin/spicec"),
+ const_cast<char*>("--controller"),
+ NULL
+ };
+ ss.str(std::string());
+ ss.clear();
+ cnt = sizeof(spicec_args) / sizeof(spicec_args[0]);
+ for (int i = 0; i < cnt; ++i)
+ ss << spicec_args[i] << " ";
+ LOG_MESSAGE("Launching " << ss.str());
+ execv(spicec_args[0], spicec_args);
+ LOG_CRITICAL("ERROR failed to run spicec fallback");
exit(EXIT_FAILURE);
}
else
{
- g_debug("child pid: %"G_GUINT64_FORMAT, (guint64)m_pid_controller);
+ LOG_DEBUG("child pid: " << m_pid_controller);
close(pipe_fds[0]);
pipe_fds[0] = -1;
@@ -606,7 +675,7 @@ void nsPluginInstance::Connect()
if (m_external_controller.Connect(10) != 0)
{
- g_critical("could not connect to spice client controller");
+ LOG_CRITICAL("could not connect to spice client controller");
return;
}
@@ -629,7 +698,7 @@ void nsPluginInstance::Connect()
}
else
{
- g_critical("could not open truststore temp file");
+ LOG_CRITICAL("could not open truststore temp file");
close(fd);
unlink(m_trust_store_file.c_str());
m_trust_store_file.clear();
@@ -638,10 +707,11 @@ void nsPluginInstance::Connect()
}
else
{
- g_critical("could not create truststore temp file: %s", g_strerror(errno));
+ LOG_CRITICAL("could not create truststore temp file: " << g_strerror(errno));
return;
}
+ LOG_MESSAGE("Initiating connection with controller");
SendInit();
SendStr(CONTROLLER_HOST, m_host_ip.c_str());
SendValue(CONTROLLER_PORT, atoi(m_port.c_str()));
@@ -683,12 +753,13 @@ void nsPluginInstance::Connect()
void nsPluginInstance::Show()
{
- g_debug("sending show message");
+ LOG_DEBUG("sending show message");
SendMsg(CONTROLLER_SHOW);
}
void nsPluginInstance::Disconnect()
{
+ LOG_MESSAGE("Disconnecting");
kill(m_pid_controller, SIGTERM);
}
@@ -702,8 +773,10 @@ void nsPluginInstance::SetLanguageStrings(const char *aSection, const char *aLan
if (aSection != NULL && aLanguage != NULL)
{
if (strlen(aSection) > 0 && strlen(aLanguage) > 0)
+ {
m_language[aSection] = aLanguage;
-
+ LOG_DEBUG(m_language[aSection]);
+ }
}
}
@@ -712,6 +785,7 @@ void nsPluginInstance::SetUsbFilter(const char *aUsbFilter)
// this method exists due to RHEVM 2.2
// and should be removed some time in future,
// when fixed in RHEVM
+ LOG_WARNING("this should not be called");
}
void nsPluginInstance::CallOnDisconnected(int code)
@@ -719,7 +793,7 @@ void nsPluginInstance::CallOnDisconnected(int code)
NPObject *window = NULL;
if (NPN_GetValue(m_instance, NPNVWindowNPObject, &window) != NPERR_NO_ERROR)
{
- g_critical("could not get browser window, when trying to call OnDisconnected");
+ LOG_CRITICAL("could not get browser window, when trying to call OnDisconnected");
return;
}
@@ -727,20 +801,20 @@ void nsPluginInstance::CallOnDisconnected(int code)
NPIdentifier id_on_disconnected = NPN_GetStringIdentifier("OnDisconnected");
if (!id_on_disconnected)
{
- g_critical("could not find OnDisconnected identifier");
+ LOG_CRITICAL("could not find OnDisconnected identifier");
return;
}
NPVariant var_on_disconnected;
if (!NPN_GetProperty(m_instance, window, id_on_disconnected, &var_on_disconnected))
{
- g_critical("could not get OnDisconnected function");
+ LOG_CRITICAL("could not get OnDisconnected function");
return;
}
if (!NPVARIANT_IS_OBJECT(var_on_disconnected))
{
- g_critical("OnDisconnected is not object");
+ LOG_CRITICAL("OnDisconnected is not object");
return;
}
@@ -753,9 +827,9 @@ void nsPluginInstance::CallOnDisconnected(int code)
NPVariant args[] = { arg };
if (NPN_InvokeDefault(m_instance, call_on_disconnected, args, sizeof(args) / sizeof(args[0]), &void_result))
- g_debug("OnDisconnected successfuly called");
+ LOG_DEBUG("OnDisconnected successfuly called");
else
- g_critical("could not call OnDisconnected");
+ LOG_CRITICAL("could not call OnDisconnected");
// cleanup
NPN_ReleaseObject(window);
@@ -770,7 +844,7 @@ void *nsPluginInstance::ControllerWaitHelper(void *opaque)
int exit_code;
waitpid(fake_this->m_pid_controller, &exit_code, 0);
- g_debug("child finished, pid: %"G_GUINT64_FORMAT, (guint64)exit_code);
+ LOG_DEBUG("child finished, pid: " << exit_code);
fake_this->m_connected_status = fake_this->m_external_controller.TranslateRC(exit_code);
if (!getenv("SPICE_XPI_DEBUG"))
--
1.7.7.6
--------------060907070603080609060505--
More information about the Spice-devel
mailing list