[Git][debian-proftpd-team/proftpd-mod-msg][master] 2 commits: New upstream release 0.5.

Hilmar Preuße gitlab at salsa.debian.org
Tue May 1 20:00:57 BST 2018


Hilmar Preuße pushed to branch master at Debian ProFTPD Team / proftpd-mod-msg


Commits:
d9f36efd by Hilmar Preuße at 2018-04-14T20:44:30+02:00
New upstream release 0.5.

- - - - -
0afd7993 by Francesco Paolo Lovergine at 2018-05-01T12:16:57+02:00
Policy bumped

- - - - -


11 changed files:

- + .gitattributes
- + .travis.yml
- + README.md
- debian/changelog
- debian/control
- + debian/patches/01c862d404df2e6c9c06c6229efc113a6623d215.patch
- debian/patches/series
- debian/proftpd-mod-msg.docs
- debian/rules
- mod_msg.c
- mod_msg.html


Changes:

=====================================
.gitattributes
=====================================
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+*.pl linguist-language=C
+*.pm linguist-language=C


=====================================
.travis.yml
=====================================
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,36 @@
+language: c
+
+compiler:
+  - gcc
+  - clang
+
+install:
+  - sudo apt-get update -qq
+  # for libarchive
+  - sudo apt-get install -y libarchive-dev
+  # for libbz2
+  - sudo apt-get install -y libbz2-dev
+  # for unit tests
+  - sudo apt-get install -y check
+  # for static code analysis
+  - sudo apt-get install -y cppcheck rats
+  # for test code coverage
+  - sudo apt-get install -y lcov
+  - gem install coveralls-lcov
+
+before_script:
+  - cd ${TRAVIS_BUILD_DIR}
+  - lcov --directory . --zerocounters
+
+script:
+  # - find . -type f -name "*.c" -print | grep -v t\/ | xargs cppcheck 2>&1
+  # - find . -type f -name "*.c" -print | grep -v t\/ | xargs rats --language=c
+  - git clone --depth 10 https://github.com/proftpd/proftpd.git
+  - cp mod_msg.c proftpd/contrib/
+  - cd proftpd
+  - ./configure LIBS='-lm -lrt -pthread' --enable-ctrls --enable-devel=coverage --enable-dso --enable-tests --with-shared=mod_msg
+  - make
+  - make clean
+  - ./configure LIBS='-lm -lrt -pthread' --enable-ctrls --enable-devel=coverage --enable-tests --with-modules=mod_msg
+  - make
+  # Run `tidy -e -q mod_msg.html` for doc validation


=====================================
README.md
=====================================
--- /dev/null
+++ b/README.md
@@ -0,0 +1,15 @@
+proftpd-mod_msg
+===============
+
+Status
+------
+[![Build Status](https://travis-ci.org/Castaglia/proftpd-mod_msg.svg?branch=master)](https://travis-ci.org/Castaglia/proftpd-mod_msg)
+[![License](https://img.shields.io/badge/license-GPL-brightgreen.svg)](https://img.shields.io/badge/license-GPL-brightgreen.svg)
+
+
+Synopsis
+--------
+The `mod_msg` module for ProFTPD supports sending messages to connected FTP
+clients.
+
+For further module documentation, see [mod_msg.html](https://htmlpreview.github.io/?https://github.com/Castaglia/proftpd-mod_msg/blob/master/mod_msg.html).


=====================================
debian/changelog
=====================================
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+proftpd-mod-msg (0.5-1) unstable; urgency=medium
+
+  [ Hilmar Preuße ]
+
+  * New upstream release
+  * 01c862d404df2e6c9c06c6229efc113a6623d215.patch: address compiler warnings
+  * Do not install *.la and *.a files.
+
+  [ Francesco Paolo Lovergine ]
+
+  * Updated Vcs-* fields.
+  * Policy bumped to 4.1.4, no changes.
+
+ -- Francesco Paolo Lovergine <frankie at debian.org>  Tue, 01 May 2018 12:16:18 +0200
+
 proftpd-mod-msg (0.4.1-2) unstable; urgency=low
 
   [ Fabrizio Regalli ]


=====================================
debian/control
=====================================
--- a/debian/control
+++ b/debian/control
@@ -3,12 +3,11 @@ Section: net
 Priority: optional
 Maintainer: ProFTPD Maintainance Team <pkg-proftpd-maintainers at lists.alioth.debian.org>
 Uploaders: Francesco Paolo Lovergine <frankie at debian.org>
-Build-Depends: debhelper (>= 9~), proftpd-dev (>= 1.3.6)
-Standards-Version: 4.1.3
+Build-Depends: debhelper (>= 9.20160114), proftpd-dev (>= 1.3.6)
+Standards-Version: 4.1.4
 Homepage: http://www.castaglia.org/proftpd/modules/mod_msg.html
-Vcs-Git: git://git.debian.org/pkg-proftpd/proftpd-mod-msg.git
-Vcs-Browser: http://git.debian.org/?p=pkg-proftpd/proftpd-mod-msg.git;a=summary
-
+Vcs-Browser: https://salsa.debian.org/debian-proftpd-team/proftpd-mod-msg
+Vcs-Git: https://salsa.debian.org/debian-proftpd-team/proftpd-mod-msg.git
 
 Package: proftpd-mod-msg
 Architecture: any


=====================================
debian/patches/01c862d404df2e6c9c06c6229efc113a6623d215.patch
=====================================
--- /dev/null
+++ b/debian/patches/01c862d404df2e6c9c06c6229efc113a6623d215.patch
@@ -0,0 +1,97 @@
+From 01c862d404df2e6c9c06c6229efc113a6623d215 Mon Sep 17 00:00:00 2001
+From: TJ Saunders <tj at castaglia.org>
+Date: Wed, 11 Apr 2018 07:06:41 -0700
+Subject: [PATCH] Address compiler warnings about signedness mismatches.
+
+---
+ mod_msg.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/mod_msg.c b/mod_msg.c
+index 7567253..757a53f 100644
+--- a/mod_msg.c
++++ b/mod_msg.c
+@@ -509,7 +509,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+ 
+   /* Handle 'msg user' requests. */
+   if (strcmp(reqargv[0], "user") == 0) {
+-    register unsigned int i = 0;
++    register int i = 0;
+     pr_scoreboard_entry_t *score = NULL;
+     const char *user, *msgstr = "";
+     size_t msglen;
+@@ -530,9 +530,10 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+      * be a maximum length on this strength, depending on the maximum msg
+      * size allowed for SysV message queues.
+      */
+-    for (i = 2; i < reqargc; i++)
++    for (i = 2; i < reqargc; i++) {
+       msgstr = pstrcat(ctrl->ctrls_tmp_pool, msgstr, *msgstr ? " " : "",
+         reqargv[i], NULL);
++    }
+ 
+     msglen = strlen(msgstr) + 1;
+ 
+@@ -577,7 +578,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+ 
+   /* Handle 'msg host' requests. */
+   } else if (strcmp(reqargv[0], "host") == 0) {
+-    register unsigned int i = 0;
++    register int i = 0;
+     pr_scoreboard_entry_t *score = NULL;
+     const char *addr, *msgstr = "";
+     const pr_netaddr_t *na;
+@@ -596,9 +597,10 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+      * be a maximum length on this strength, depending on the maximum msg
+      * size allowed for SysV message queues.
+      */
+-    for (i = 2; i < reqargc; i++)
++    for (i = 2; i < reqargc; i++) {
+       msgstr = pstrcat(ctrl->ctrls_tmp_pool, msgstr, *msgstr ? " " : "",
+         reqargv[i], NULL);
++    }
+ 
+     if (strlen(msgstr) >= MSGMAX) {
+       pr_ctrls_add_response(ctrl, "message exceeds maximum length (%u). "
+@@ -645,7 +647,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+ 
+   /* Handle 'msg class' requests. */
+   } else if (strcmp(reqargv[0], "class") == 0) {
+-    register unsigned int i = 0;
++    register int i = 0;
+     pr_scoreboard_entry_t *score;
+     const char *class = reqargv[1], *msgstr = "";
+ 
+@@ -663,9 +665,10 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+      * be a maximum length on this strength, depending on the maximum msg
+      * size allowed for SysV message queues.
+      */
+-    for (i = 2; i < reqargc; i++)
++    for (i = 2; i < reqargc; i++) {
+       msgstr = pstrcat(ctrl->ctrls_tmp_pool, msgstr, *msgstr ? " " : "",
+         reqargv[i], NULL);
++    }
+ 
+     if (strlen(msgstr) >= MSGMAX) {
+       pr_ctrls_add_response(ctrl, "message exceeds maximum length (%u). "
+@@ -700,7 +703,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+ 
+   /* Handle 'msg all' requests. */
+   } else if (strcmp(reqargv[0], "all") == 0) {
+-    register unsigned int i = 0;
++    register int i = 0;
+     pr_scoreboard_entry_t *score;
+     const char *msgstr = "";
+ 
+@@ -713,9 +716,10 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+      * be a maximum length on this strength, depending on the maximum msg
+      * size allowed for SysV message queues.
+      */
+-    for (i = 1; i < reqargc; i++)
++    for (i = 1; i < reqargc; i++) {
+       msgstr = pstrcat(ctrl->ctrls_tmp_pool, msgstr, *msgstr ? " " : "",
+         reqargv[i], NULL);
++    }
+ 
+     if (strlen(msgstr) >= MSGMAX) {
+       pr_ctrls_add_response(ctrl, "message exceeds maximum length (%u). "


=====================================
debian/patches/series
=====================================
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
-error-format-security.patch
-proftpd-1.3.6_rc4-msg-refresh-api.patch
+#error-format-security.patch
+#proftpd-1.3.6_rc4-msg-refresh-api.patch
+01c862d404df2e6c9c06c6229efc113a6623d215.patch


=====================================
debian/proftpd-mod-msg.docs
=====================================
--- a/debian/proftpd-mod-msg.docs
+++ b/debian/proftpd-mod-msg.docs
@@ -1 +1,2 @@
 mod_msg.html
+README.md


=====================================
debian/rules
=====================================
--- a/debian/rules
+++ b/debian/rules
@@ -14,6 +14,8 @@ override_dh_auto_build:
 	
 override_dh_auto_install:
 	DESTDIR=$(CURDIR)/debian/$(DEBNAME) prxs -i -c $(MODULE_NAME).c
+	rm -f $(CURDIR)/debian/$(DEBNAME)/usr/lib/proftpd/*.la \
+		$(CURDIR)/debian/$(DEBNAME)/usr/lib/proftpd/*.a
 
 override_dh_gencontrol:
 	cat /usr/share/proftpd/proftpd-substvars >>$(CURDIR)/debian/$(DEBNAME).substvars


=====================================
mod_msg.c
=====================================
--- a/mod_msg.c
+++ b/mod_msg.c
@@ -1,7 +1,6 @@
 /*
  * ProFTPD: mod_msg -- a module for sending messages to connected clients
- *
- * Copyright (c) 2004 TJ Saunders
+ * Copyright (c) 2004-2018 TJ Saunders
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -15,7 +14,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
  *
  * As a special exemption, TJ Saunders and other respective copyright holders
  * give permission to link this program with OpenSSL, and distribute the
@@ -24,8 +23,6 @@
  *
  * This is mod_msg, contrib software for proftpd 1.2 and above.
  * For more information contact TJ Saunders <tj at castaglia.org>.
- *
- * $Id: mod_msg.c,v 1.5 2004/05/26 19:43:18 tj Exp tj $
  */
 
 #include "conf.h"
@@ -39,10 +36,11 @@
 # define MSGMAX 8192
 #endif /* MSGMAX */
 
-#define MOD_MSG_VERSION		"mod_msg/0.4.1"
+#define MOD_MSG_VERSION		"mod_msg/0.5"
 
-#if PROFTPD_VERSION_NUMBER < 0x0001021001
-# error "ProFTPD 1.2.10rc1 or later required"
+/* Make sure the version of proftpd is as necessary. */
+#if PROFTPD_VERSION_NUMBER < 0x0001030604
+# error "ProFTPD 1.3.6 or later required"
 #endif
 
 #define MSG_PROJ_ID		246
@@ -52,9 +50,9 @@ extern pid_t mpid;
 
 module msg_module;
 
-#ifndef USE_CTRLS
+#ifndef PR_USE_CTRLS
 # error "mod_msg requires Controls support (--enable-ctrls)"
-#endif /* USE_CTRLS */
+#endif /* PR_USE_CTRLS */
 
 static ctrls_acttab_t msg_acttab[];
 
@@ -240,26 +238,27 @@ MODRET set_msgctrlsacls(cmd_rec *cmd) {
     CONF_ERROR(cmd, pstrcat(cmd->tmp_pool, ": unknown action: '",
       bad_action, "'", NULL));
 
-  return HANDLED(cmd);
+  return PR_HANDLED(cmd);
 }
 
 /* usage: MessageEngine on|off */
 MODRET set_msgengine(cmd_rec *cmd) {
-  int bool;
+  int engine = -1;
   config_rec *c;
 
   CHECK_ARGS(cmd, 1);
   CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
 
-  bool = get_boolean(cmd, 1);
-  if (bool == -1)
+  engine = get_boolean(cmd, 1);
+  if (engine == -1) {
     CONF_ERROR(cmd, "expected Boolean parameter");
+  }
 
   c = add_config_param(cmd->argv[0], 1, NULL);
-  c->argv[0] = pcalloc(c->pool, sizeof(unsigned char));
-  *((unsigned char *) c->argv[0]) = bool;
+  c->argv[0] = pcalloc(c->pool, sizeof(int));
+  *((int *) c->argv[0]) = engine;
 
-  return HANDLED(cmd);
+  return PR_HANDLED(cmd);
 }
 
 /* usage: MessageLog path */
@@ -267,11 +266,12 @@ MODRET set_msglog(cmd_rec *cmd) {
   CHECK_ARGS(cmd, 1);
   CHECK_CONF(cmd, CONF_ROOT);
 
-  if (pr_fs_valid_path(cmd->argv[1]) < 0)
+  if (pr_fs_valid_path(cmd->argv[1]) < 0) {
     CONF_ERROR(cmd, "must be an absolute path");
+  }
 
   add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
-  return HANDLED(cmd);
+  return PR_HANDLED(cmd);
 }
 
 /* usage: MessageQueue path */
@@ -279,11 +279,12 @@ MODRET set_msgqueue(cmd_rec *cmd) {
   CHECK_ARGS(cmd, 1);
   CHECK_CONF(cmd, CONF_ROOT);
 
-  if (pr_fs_valid_path(cmd->argv[1]) < 0)
+  if (pr_fs_valid_path(cmd->argv[1]) < 0) {
     CONF_ERROR(cmd, "must be an absolute path");
+  }
 
   msg_queue_path = pstrdup(msg_pool, cmd->argv[1]);
-  return HANDLED(cmd);
+  return PR_HANDLED(cmd);
 }
 
 /* Command handlers
@@ -293,64 +294,74 @@ MODRET msg_post_any(cmd_rec *cmd) {
   register unsigned int i = 0;
   char **msgs;
 
-  if (!msg_engine)
-    return DECLINED(cmd);
+  if (msg_engine == FALSE) {
+    return PR_DECLINED(cmd);
+  }
 
   /* If there are no messages pending for this process, be done now. */
-  if (!msg_pending_list || msg_pending_list->nelts == 0)
-    return DECLINED(cmd);
+  if (!msg_pending_list ||
+      msg_pending_list->nelts == 0) {
+    return PR_DECLINED(cmd);
+  }
 
   /* Skip commands whose reply format is strictly proscribed. */
 
   /* XXX there are probably more commands to be skipped here */
   if (strcmp(cmd->argv[0], C_EPSV) == 0 ||
       strcmp(cmd->argv[0], C_PASV) == 0 ||
-      strcmp(cmd->argv[0], C_STOU) == 0)
-    return DECLINED(cmd);
+      strcmp(cmd->argv[0], C_STOU) == 0) {
+    return PR_DECLINED(cmd);
+  }
 
   /* Tack on any messages to this command. */
   msgs = (char **) msg_pending_list->elts;
-  for (i = 0; i < msg_pending_list->nelts; i++)
-    pr_response_add(R_DUP, msgs[i]);
+  for (i = 0; i < msg_pending_list->nelts; i++) {
+    pr_response_add(R_DUP, "%s", msgs[i]);
+  }
 
   /* Clear the pending pool. */
   destroy_pool(msg_pending_pool);
   msg_pending_pool = NULL;
   msg_pending_list = NULL;
 
-  return DECLINED(cmd);
+  return PR_DECLINED(cmd);
 }
 
 MODRET msg_post_err_any(cmd_rec *cmd) {
   register unsigned int i = 0;
   char **msgs;
 
-  if (!msg_engine)
-    return DECLINED(cmd);
+  if (msg_engine == FALSE) {
+    return PR_DECLINED(cmd);
+  }
 
   /* If there are no messages pending for this process, be done now. */
-  if (!msg_pending_list || msg_pending_list->nelts == 0)
-    return DECLINED(cmd);
+  if (!msg_pending_list ||
+      msg_pending_list->nelts == 0) {
+    return PR_DECLINED(cmd);
+  }
 
   /* Skip commands whose reply format is strictly proscribed. */
 
   /* XXX there are probably more commands to be skipped here */
   if (strcmp(cmd->argv[0], C_EPSV) == 0 ||
       strcmp(cmd->argv[0], C_PASV) == 0 ||
-      strcmp(cmd->argv[0], C_STOU) == 0)
-    return DECLINED(cmd);
+      strcmp(cmd->argv[0], C_STOU) == 0) {
+    return PR_DECLINED(cmd);
+  }
 
   /* Tack on any messages to this command. */
   msgs = (char **) msg_pending_list->elts;
-  for (i = 0; i < msg_pending_list->nelts; i++)
-    pr_response_add_err(R_DUP, msgs[i]);
+  for (i = 0; i < msg_pending_list->nelts; i++) {
+    pr_response_add_err(R_DUP, "%s", msgs[i]);
+  }
 
   /* Clear the pending pool. */
   destroy_pool(msg_pending_pool);
   msg_pending_pool = NULL;
   msg_pending_list = NULL;
 
-  return DECLINED(cmd);
+  return PR_DECLINED(cmd);
 }
 
 /* Event handlers
@@ -539,11 +550,14 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
     /* Iterate through the scoreboard, looking for any sessions for the
      * given user.
      */
-    if (pr_rewind_scoreboard() < 0)
+    if (pr_rewind_scoreboard() < 0) {
       (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
         "error rewinding scoreboard: %s", strerror(errno));
+    }
+
+    while ((score = pr_scoreboard_entry_read()) != NULL) {
+      pr_signals_handle();
 
-    while ((score = pr_scoreboard_read_entry()) != NULL) {
       if (strcmp(user, score->sce_user) == 0) {
         msg_know_dst = TRUE;
 
@@ -553,8 +567,9 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
             "error sending message to user '%s' (pid %u): %s", user,
             score->sce_pid, strerror(errno));
 
-        } else
+        } else {
           msg_sent = TRUE;
+        }
       }
     }
 
@@ -565,7 +580,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
     register unsigned int i = 0;
     pr_scoreboard_entry_t *score = NULL;
     const char *addr, *msgstr = "";
-    pr_netaddr_t *na;
+    const pr_netaddr_t *na;
 
     if (reqargc == 1) {
       pr_ctrls_add_response(ctrl, "msg host: missing required host name");
@@ -603,11 +618,14 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
     /* Iterate through the scoreboard, looking for any sessions for the
      * given address.
      */
-    if (pr_rewind_scoreboard() < 0)
+    if (pr_rewind_scoreboard() < 0) {
       (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
         "error rewinding scoreboard: %s", strerror(errno));
+    }
+
+    while ((score = pr_scoreboard_entry_read()) != NULL) {
+      pr_signals_handle();
 
-    while ((score = pr_scoreboard_read_entry()) != NULL) {
       if (strcmp(addr, score->sce_client_addr) == 0) {
         msg_know_dst = TRUE;
 
@@ -617,8 +635,9 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
             "error sending message to host '%s' (pid %u): %s", reqargv[1],
             score->sce_pid, strerror(errno));
 
-        } else
+        } else {
           msg_sent = TRUE;
+        }
       }
     }
 
@@ -654,11 +673,14 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
       return -1;
     }
 
-    if (pr_rewind_scoreboard() < 0)
+    if (pr_rewind_scoreboard() < 0) {
       (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
         "error rewinding scoreboard: %s", strerror(errno));
+    }
+
+    while ((score = pr_scoreboard_entry_read()) != NULL) {
+      pr_signals_handle();
 
-    while ((score = pr_scoreboard_read_entry()) != NULL) {
       if (strcmp(score->sce_class, class) == 0) {
         msg_know_dst = TRUE;
 
@@ -668,8 +690,9 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
             "error sending message to class '%s' (pid %u): %s", reqargv[1],
             score->sce_pid, strerror(errno));
 
-        } else
+        } else {
           msg_sent = TRUE;
+        }
       }
     }
 
@@ -700,20 +723,24 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
       return -1;
     }
 
-    if (pr_rewind_scoreboard() < 0)
+    if (pr_rewind_scoreboard() < 0) {
       (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
         "error rewinding scoreboard: %s", strerror(errno));
+    }
 
     msg_know_dst = TRUE;
-    while ((score = pr_scoreboard_read_entry()) != NULL) {
+    while ((score = pr_scoreboard_entry_read()) != NULL) {
+      pr_signals_handle();
+
       if (msg_send_msg(score->sce_pid, msgstr) < 0) {
         msg_errno = errno;
         (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
-          "error sending message to all (pid %u): %s", reqargv[1],
-          score->sce_pid, strerror(errno));
+          "error sending message to all (pid %lu): %s",
+          (unsigned long) score->sce_pid, strerror(errno));
 
-      } else
+      } else {
         msg_sent = TRUE;
+      }
     }
 
     pr_restore_scoreboard();


=====================================
mod_msg.html
=====================================
--- a/mod_msg.html
+++ b/mod_msg.html
@@ -1,6 +1,4 @@
-<!-- $Id: mod_msg.html,v 1.1 2004/04/10 01:51:39 tj Exp tj $ -->
-<!-- $Source: /home/tj/proftpd/modules/doc/RCS/mod_msg.html,v $ -->
-
+<!DOCTYPE html>
 <html>
 <head>
 <title>ProFTPD module mod_msg</title>
@@ -177,20 +175,12 @@ Example configuration:
 </pre>
 
 <p>
-<hr><br>
-
-Author: <i>$Author: tj $</i><br>
-Last Updated: <i>$Date: 2004/04/10 01:51:39 $</i><br>
-
-<br><hr>
-
+<hr>
 <font size=2><b><i>
-© Copyright 2004 TJ Saunders<br>
+© Copyright 2017 TJ Saunders<br>
  All Rights Reserved<br>
 </i></b></font>
-
-<hr><br>
+<hr>
 
 </body>
 </html>
-



View it on GitLab: https://salsa.debian.org/debian-proftpd-team/proftpd-mod-msg/compare/d707f305e8d57cff324ded0019d408076322a347...0afd79932edd9c3baf201ef1f76ff6a419f1f058

---
View it on GitLab: https://salsa.debian.org/debian-proftpd-team/proftpd-mod-msg/compare/d707f305e8d57cff324ded0019d408076322a347...0afd79932edd9c3baf201ef1f76ff6a419f1f058
You're receiving this email because of your account on salsa.debian.org.


More information about the Pkg-proftpd-maintainers mailing list