]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
New formatting directive in logfile naming: &P for port number.
authorSimon Tatham <anakin@pobox.com>
Sat, 8 Aug 2015 12:35:44 +0000 (13:35 +0100)
committerSimon Tatham <anakin@pobox.com>
Sat, 8 Aug 2015 12:35:44 +0000 (13:35 +0100)
Users have requested this from time to time, for distinguishing log
file names when there's more than one SSH server running on different
ports of the same host. Since we do take account of that possibility
in other areas (e.g. we cache host keys indexed by (host,port) rather
than just host), it doesn't seem unreasonable to do so here too.

config.c
doc/config.but
logging.c

index a1eae18f02a1b196964d892f966709b08f1c346b..613d5408b5005621393c3003dfdcdd242d5fb9e4 100644 (file)
--- 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),
index 05d05e56c2654172a23d7db7c9cde8ff902ca221..8ee0d4451e700477a20d6984ffa8bea58397d65e 100644 (file)
@@ -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
index 899fa27becc9748dfcdacabc4e0d7071eb4e8fd9..b51c97c81bacf975348a779cebe7b2ed2af598f7 100644 (file)
--- 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":<hostname>   "&&":&
  */
-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;