aboutsummaryrefslogtreecommitdiff
path: root/libssh/log.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2008-06-12 20:14:17 +0000
committerAris Adamantiadis <aris@0xbadc0de.be>2008-06-12 20:14:17 +0000
commitfe51f9c7662b7391f80953bedc4fe61b89013913 (patch)
tree66e1390ec6f593ba32b7a881040a303fd2669653 /libssh/log.c
parentb94422ef10bb083dde58e8c8349cc3e004888f9f (diff)
downloadlibssh-fe51f9c7662b7391f80953bedc4fe61b89013913.tar.gz
libssh-fe51f9c7662b7391f80953bedc4fe61b89013913.tar.xz
libssh-fe51f9c7662b7391f80953bedc4fe61b89013913.zip
big changes :
Some documentation, and a new logging system. some work must be done to get rid of the infamous ssh_say() git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@166 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/log.c')
-rw-r--r--libssh/log.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/libssh/log.c b/libssh/log.c
new file mode 100644
index 00000000..fbea05d8
--- /dev/null
+++ b/libssh/log.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2008 Aris Adamantiadis
+ *
+ * This file is part of the SSH Library
+ *
+ * The SSH Library 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; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *
+ * The SSH Library 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 GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the SSH Library; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA. */
+
+
+/** \defgroup ssh_log SSH logging
+ * \brief Logging functions for debugging and problem resolving
+ */
+/** \addtogroup ssh_log
+ * @{ */
+#include "libssh/priv.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+/** \brief logs an event
+ * \param session the SSH session
+ * \param verbosity verbosity of the event
+ * \param format format string of the log entry
+ */
+void ssh_log(SSH_SESSION *session, int verbosity, char *format, ...){
+ char buffer[1024];
+ char buf2[256];
+ int min;
+ va_list va;
+ if(verbosity <= session->log_verbosity){
+ va_start(va,format);
+ vsnprintf(buffer,sizeof(buffer),format,va);
+ va_end(va);
+ if(session->options->log_function)
+ session->options->log_function(buffer,session,verbosity);
+ else if(verbosity==SSH_LOG_FUNCTIONS){
+ if(session->log_indent > 255)
+ min=255;
+ else
+ min=session->log_indent;
+ memset(buf2,' ',min);
+ buf2[min]=0;
+ fprintf(stderr,"[func] %s%s\n",buf2,buffer);
+ } else {
+ fprintf(stderr,"[%d] %s\n",verbosity,buffer);
+ }
+ }
+}
+
+/** @} */