/** * @file jlog.c * * * @brief メッセージテキスト出力とエラー終了 * * メッセージ出力用の汎用関数の定義です. * 認識結果の端末出力やネットワークへの出力といった, * Julius の主要な出力はここの関数を使って行われます. * また,出力文字コードの変換もここで行います. * * * * @brief Message text output and error exit functions * * These are generic functions for text message output. * Most of text messages such as recognition results, status, informations * in Julius/Julian will be output to TTY or via network using these functions. * The character set conversion will also be performed here. * * * @author Akinobu LEE * @date Thu Feb 17 16:02:41 2005 * * $Revision: 1.4 $ * */ /* * Copyright (c) 1991-2012 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology * All rights reserved */ #include #include #include static FILE *outdev; static boolean initialized = FALSE; #define MAX_PRINTF_LEN 4096 ///< Maximum string length at one printf call /** * Set file pointer to output the log. Set to NULL to totally disable * the log outputs. * * @param fp [in] file pointer or NULL to disable * */ void jlog_set_output(FILE *fp) { outdev = fp; initialized = TRUE; } /** * Return the current file pointer to output log. * * @return the file pointer. * */ FILE * jlog_get_fp() { if (initialized == FALSE) return stdout; return outdev; } /** * @brief Output a normal message to log * * * @param fmt [in] format string, like printf. * @param ... [in] variable length argument like printf. * */ void jlog(char *fmt, ...) { va_list ap; if (initialized == FALSE) { outdev = stdout; } else if (outdev == NULL) return; va_start(ap,fmt); vfprintf(outdev, fmt, ap); va_end(ap); return; } /** * @brief Flush text message * * The output device can be changed by set_print_func(). * * @return the same as fflush, i.e. 0 on success, other if failed. */ int jlog_flush() { if (initialized == FALSE) { outdev = stdout; } else if (outdev == NULL) return 0; return(fflush(outdev)); }