]> 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, 17 Oct 2015 16:30:17 +0000 (17:30 +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.

(cherry picked from commit 0550943b51c538400e31ce18483032e446178120)

config.c
doc/config.but
logging.c

index 3100503f58f3a255fbd08417acc732352fe6ae79..086956fc914bc3218fe7d5c88dfd73a1291196a5 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1474,7 +1474,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 c23f4ddb3784f72d0ccb89ade3ce982e8a59429b..6d35f9c88c697f756c1dc029f47eefae51c9a4d5 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 26634f7738bb5d3beb0ba87306f780fc9e586e7b..b57888fd5169f044bebd0dd31dcb30c4ce04ed3f 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;