📄 common.c
字号:
/* * common.c Functions common to minicom and runscript programs * * This file is part of the minicom communications package, * Copyright 1991-1995 Miquel van Smoorenburg, * 1997-1998 Jukka Lahtinen. * * This program is free software; you can redistribute it or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * * Functions * char *pfix_home(char *) - prefix filename with home directory * void do_log(const char *) - write a line to the logfile * * moved from config.c to a separate file, so they are easier * to use in both the Minicom main program and runscript. * * 27.10.98 jl converted do_log to use stdarg */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID("$Id: common.c,v 1.7 2005/10/31 12:13:51 al-guest Exp $")#include "port.h"#include "minicom.h"#include <stdarg.h>/* Prefix a non-absolute file with the home directory. */char *pfix_home(char *s){#if defined(FILENAME_MAX) static char buf[FILENAME_MAX];#else static char buf[256];#endif if (s && *s != '/') { snprintf(buf, sizeof(buf),"%s/%s", homedir, s); return buf; } return s;}void do_log(const char *line, ...){#ifdef LOGFILE/* Write a line to the log file. jl 22.06.97 */ FILE *logfile; char *logname = pfix_home(logfname); struct tm *ptr; time_t ttime; va_list ap; if (logfname[0] == 0) return; logfile = fopen(logname,"a"); if (!logfile) return; va_start(ap, line); ttime = time(NULL); ptr = localtime(&ttime); fprintf(logfile,"%04d%02d%02d %02d:%02d:%02d ", (ptr->tm_year)+1900, (ptr->tm_mon)+1, ptr->tm_mday, ptr->tm_hour, ptr->tm_min, ptr->tm_sec); vfprintf(logfile, line, ap); fprintf(logfile, "\n"); fclose(logfile);#else /* dummy, don't do anything */ (void)line;#endif}/* mbtowc (), except that mbtowc (.. , "", ..) == 1, errors are treated as * (wchar_t)*s */size_t one_mbtowc(wchar_t *pwc, const char *s, size_t n){ int len; len = mbtowc(pwc, s, n); if (len == -1) *pwc = *s; if (len <= 0) len = 1; return len;}/* wctomb (), except that mbtowc (.. , 0) == 1, errors are treated as * *s = (char)wchar */size_tone_wctomb(char *s, wchar_t wchar){ int len; len = wctomb(s, wchar); if (len == -1) s[0] = (char)wchar; if (len <= 0) len = 1; return len;}/* Number of characters in S */size_tmbslen(const char *s){ size_t len; len = 0; while (*s != 0) { wchar_t wc; s += one_mbtowc(&wc, s, MB_LEN_MAX); len++; } return len;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -