diff --git a/config.c b/config.c index a1eae18f..613d5408 100644 --- a/config.c +++ b/config.c @@ -1478,7 +1478,7 @@ void setup_config_box(struct controlbox *b, int midsession, HELPCTX(logging_filename), conf_filesel_handler, I(CONF_logfilename)); ctrl_text(s, "(Log file name can contain &Y, &M, &D for date," - " &T for time, and &H for host name)", + " &T for time, &H for host name, and &P for port number)", HELPCTX(logging_filename)); ctrl_radiobuttons(s, "What to do if the log file already exists:", 'e', 1, HELPCTX(logging_exists), diff --git a/doc/config.but b/doc/config.but index 05d05e56..8ee0d445 100644 --- a/doc/config.but +++ b/doc/config.but @@ -207,6 +207,9 @@ digits. \b \c{&H} will be replaced by the host name you are connecting to. +\b \c{&P} will be replaced by the port number you are connecting to on +the target host. + For example, if you enter the host name \c{c:\\puttylogs\\log-&h-&y&m&d-&t.dat}, you will end up with files looking like diff --git a/logging.c b/logging.c index 899fa27b..b51c97c8 100644 --- a/logging.c +++ b/logging.c @@ -22,7 +22,8 @@ struct LogContext { int logtype; /* cached out of conf */ }; -static Filename *xlatlognam(Filename *s, char *hostname, struct tm *tm); +static Filename *xlatlognam(Filename *s, char *hostname, int port, + struct tm *tm); /* * Internal wrapper function which must be called for _all_ output @@ -159,7 +160,8 @@ void logfopen(void *handle) filename_free(ctx->currlogfilename); ctx->currlogfilename = xlatlognam(conf_get_filename(ctx->conf, CONF_logfilename), - conf_get_str(ctx->conf, CONF_host), &tm); + conf_get_str(ctx->conf, CONF_host), + conf_get_int(ctx->conf, CONF_port), &tm); ctx->lgfp = f_open(ctx->currlogfilename, "r", FALSE); /* file already present? */ if (ctx->lgfp) { @@ -408,9 +410,10 @@ void log_reconfig(void *handle, Conf *conf) * * "&Y":YYYY "&m":MM "&d":DD "&T":hhmmss "&h": "&&":& */ -static Filename *xlatlognam(Filename *src, char *hostname, struct tm *tm) +static Filename *xlatlognam(Filename *src, char *hostname, int port, + struct tm *tm) { - char buf[10], *bufp; + char buf[32], *bufp; int size; char *buffer; int buflen, bufsize; @@ -446,6 +449,9 @@ static Filename *xlatlognam(Filename *src, char *hostname, struct tm *tm) bufp = hostname; size = strlen(bufp); break; + case 'p': + size = sprintf(buf, "%d", port); + break; default: buf[0] = '&'; size = 1;