1 /*** 2 This file is part of avahi. 3 4 avahi is free software; you can redistribute it and/or modify it 5 under the terms of the GNU Lesser General Public License as 6 published by the Free Software Foundation; either version 2.1 of the 7 License, or (at your option) any later version. 8 9 avahi is distributed in the hope that it will be useful, but WITHOUT 10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General 12 Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with avahi; if not, write to the Free Software 16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 17 USA. 18 ***/ 19 20 #ifdef HAVE_CONFIG_H 21 #include <config.h> 22 #endif 23 24 #include <stdio.h> 25 #include <stdarg.h> 26 27 #include "log.h" 28 29 static AvahiLogFunction log_function = NULL; 30 31 void avahi_set_log_function(AvahiLogFunction function) { 32 log_function = function; 33 } 34 35 #ifdef __BIONIC__ 36 #include <android/log.h> 37 #define LOG_TAG "avahi" 38 #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) 39 #endif 40 41 void avahi_log_ap(AvahiLogLevel level, const char*format, va_list ap) { 42 char txt[256]; 43 44 vsnprintf(txt, sizeof(txt), format, ap); 45 46 if (log_function) 47 log_function(level, txt); 48 else 49 #ifdef __BIONIC__ 50 LOGW("%s", txt); 51 #else 52 fprintf(stderr, "%s\n", txt); 53 #endif 54 } 55 56 void avahi_log(AvahiLogLevel level, const char*format, ...) { 57 va_list ap; 58 va_start(ap, format); 59 avahi_log_ap(level, format, ap); 60 va_end(ap); 61 } 62 63 void avahi_log_error(const char*format, ...) { 64 va_list ap; 65 va_start(ap, format); 66 avahi_log_ap(AVAHI_LOG_ERROR, format, ap); 67 va_end(ap); 68 } 69 70 void avahi_log_warn(const char*format, ...) { 71 va_list ap; 72 va_start(ap, format); 73 avahi_log_ap(AVAHI_LOG_WARN, format, ap); 74 va_end(ap); 75 } 76 77 void avahi_log_notice(const char*format, ...) { 78 va_list ap; 79 va_start(ap, format); 80 avahi_log_ap(AVAHI_LOG_NOTICE, format, ap); 81 va_end(ap); 82 } 83 84 void avahi_log_info(const char*format, ...) { 85 va_list ap; 86 va_start(ap, format); 87 avahi_log_ap(AVAHI_LOG_INFO, format, ap); 88 va_end(ap); 89 } 90 91 void avahi_log_debug(const char*format, ...) { 92 va_list ap; 93 va_start(ap, format); 94 avahi_log_ap(AVAHI_LOG_DEBUG, format, ap); 95 va_end(ap); 96 } 97