示例#1
0
文件: alarm.c 项目: bananos/smstools3
void alarm_handler(int severity, char* format, ...)
{
  va_list argp;
  char text[1024];
  char cmdline[PATH_MAX+1024];
  char timestamp[40];

  if (_alarmhandler[0])
  {
    va_start(argp,format);
    vsnprintf(text,sizeof(text),format,argp);
    va_end(argp);
    if (severity<=_alarmlevel)
    {
      make_datetime_string(timestamp, sizeof(timestamp), 0, 0, logtime_format);
      snprintf(cmdline,sizeof(cmdline),"%s ALARM %s %i %s \"%s\"",_alarmhandler,timestamp,severity, process_title, text);
      my_system(cmdline, "alarmhandler");
    }  
  }
}
示例#2
0
void show_progress(int progress , int n)
{
	int i;
	char buf[62];
	char date_and_time[32];

	if (global_param.flag_daemon) return ;
	buf[0] = '|';
	for (i=0; i<50; i++) {
		if (i == progress/2) {
			static int r = 0;
			buf[i+1] = "-\\|/"[r++];
			r %= 4;
		} else {
			buf[i+1] = i*2 < progress ? 'o' : ' ';
		}
	}
	buf[i++] = '|';
	buf[i] = '\0';
	//debug_log_output(buf);
	make_datetime_string(date_and_time);
	fprintf(stdout, "%s %s %5d\r", date_and_time, buf, n);
	fflush(stdout);
}
示例#3
0
文件: wizd_tools.c 项目: birkirb/wizd
//*************************************************
// デバッグ出力用関数。
// printf() と同じフォーマットにて使用する。
//*************************************************
void debug_log_output(char *fmt, ...)
{
	FILE	*fp;
	unsigned char	buf[1024*5+1];
	unsigned char	work_buf[1024*4+1];
	unsigned char	date_and_time[32];
	unsigned char	replase_date_and_time[48];
	va_list 	arg;
	int		len;

	// =========================================
	// デバッグログ 初期化フラグをチェック
	// =========================================
	if (debug_log_initialize_flag != 0 )
		return;


	// =========================================
	// Debug出力文字列生成。
	// 行頭に、date_and_time を挿入しておく
	// =========================================
	memset(buf, '\0', sizeof(buf));
	memset(work_buf, '\0', sizeof(work_buf));

	// 引数で与えられた文字列を展開。
	va_start(arg, fmt);
	vsnprintf(work_buf, sizeof(work_buf), fmt, arg);
	va_end(arg);

	// work_bufの一番最後に'\n'がついていたら削除。
	len = strlen(work_buf);
	if (work_buf[len-1] == '\n')
	{
		work_buf[len-1] = '\0';
	}

	// 挿入用文字列生成( "\ndate_and_time" になる)
	make_datetime_string(date_and_time);
	snprintf(replase_date_and_time, sizeof(replase_date_and_time), "\n%s[%d] ", date_and_time, getpid() );

	// 出力文字列生成開始。
	snprintf(buf, sizeof(buf), "%s[%d] %s", date_and_time, getpid(), work_buf);
	replase_character(buf, sizeof(buf), "\n", replase_date_and_time);	// \nの前にdate_and_timeを挿入

	// 一番最後に'\n'をつける。
	strncat(buf, "\n", sizeof(buf)-strlen(buf) );


	// =====================
	// ログファイル出力
	// =====================

	// ファイルオープン(追記モード)
	if(debug_log_filename[0] == 0) {
		fwrite(buf, 1, strlen(buf), stdout);
	} else {
		fp = fopen(debug_log_filename, "a");
		if ( fp == NULL )
			return;
		// 出力
		fwrite(buf, 1, strlen(buf), fp );	// メッセージ実体を出力

		// ファイルクローズ
		fclose( fp );
	}

	return;
}