]> git.pld-linux.org Git - packages/proftpd.git/blobdiff - proftpd-wtmp.patch
- cleaning
[packages/proftpd.git] / proftpd-wtmp.patch
index f654cb2f7939d01da8f082cd773a37cfb1df054d..b97e66b130add234affa7883c79266df9ed6a643 100644 (file)
@@ -1,5 +1,5 @@
---- proftpd-1.3.1rc2.utmpx/acconfig.h~ 2002-12-15 19:05:09.000000000 +0100
-+++ proftpd-1.3.1rc2.utmpx/acconfig.h  2007-08-20 14:13:20.000000000 +0200
+--- proftpd-1.3.1-wtmp/acconfig.h      2002-12-15 20:05:09.000000000 +0200
++++ proftpd-1.3.1/acconfig.h   2008-01-09 00:43:47.043739566 +0200
 @@ -70,7 +70,7 @@
  #undef HAVE_UT_UT_HOST
  
@@ -9,9 +9,9 @@
  
  #define PF_ARGV_NONE          0
  #define PF_ARGV_NEW           1
---- proftpd-1.3.1rc2.utmpx/config.h.in~        2007-08-20 13:25:55.000000000 +0200
-+++ proftpd-1.3.1rc2.utmpx/config.h.in 2007-08-20 14:14:03.000000000 +0200
-@@ -119,7 +119,7 @@
+--- proftpd-1.3.1-wtmp/config.h.in     2008-01-09 00:43:32.506904225 +0200
++++ proftpd-1.3.1/config.h.in  2008-01-09 00:43:47.043739566 +0200
+@@ -122,7 +122,7 @@
  #undef HAVE_UT_UT_HOST
  
  /* Define if your struct utmp uses ut_user and not ut_name */
  
  #define PF_ARGV_NONE          0
  #define PF_ARGV_NEW           1
-diff -ur proftpd-1.3.1rc2/configure.in proftpd-1.3.1rc2.utmpx/configure.in
---- proftpd-1.3.1rc2/configure.in      2007-08-20 14:07:40.000000000 +0200
-+++ proftpd-1.3.1rc2.utmpx/configure.in        2007-08-20 14:07:28.000000000 +0200
-@@ -1056,7 +1056,7 @@
+--- proftpd-1.3.1-wtmp/configure.in    2007-05-22 23:54:09.000000000 +0300
++++ proftpd-1.3.1/configure.in 2008-01-09 00:43:47.043739566 +0200
+@@ -1063,7 +1063,7 @@
  AC_CHECK_HEADERS(sys/stat.h errno.h sys/socket.h sys/termios.h sys/termio.h)
  AC_CHECK_HEADERS(sys/statvfs.h sys/un.h sys/vfs.h sys/select.h)
  AC_CHECK_HEADERS(dirent.h ndir.h sys/ndir.h sys/dir.h vmsdir.h)
@@ -32,7 +31,7 @@ diff -ur proftpd-1.3.1rc2/configure.in proftpd-1.3.1rc2.utmpx/configure.in
  AC_CHECK_HEADERS(regex.h)
  AC_CHECK_HEADER(syslog.h,have_syslog_h="yes",)
  AC_CHECK_HEADERS(curses.h ncurses.h)
-@@ -1119,10 +1119,10 @@
+@@ -1143,10 +1143,10 @@
  
  if test $have_utmp; then
    AC_CACHE_CHECK(whether your struct utmp has ut_user,
@@ -46,7 +45,7 @@ diff -ur proftpd-1.3.1rc2/configure.in proftpd-1.3.1rc2.utmpx/configure.in
    AC_CACHE_CHECK(whether your struct utmp has ut_host,
                pr_cv_header_ut_host,
        AC_EGREP_HEADER([ *ut_host.*;],utmp.h,
-@@ -1133,8 +1133,8 @@
+@@ -1157,8 +1157,8 @@
        AC_EGREP_HEADER([ *ut_exit.*;],utmp.h,
                        pr_cv_header_ut_exit="yes",
                        pr_cv_header_ut_exit="no"))
@@ -57,7 +56,7 @@ diff -ur proftpd-1.3.1rc2/configure.in proftpd-1.3.1rc2.utmpx/configure.in
    fi
    if test "$pr_cv_header_ut_host" = "yes"; then
      AC_DEFINE(HAVE_UT_UT_HOST, 1, [If struct utmp has ut_host.])
-@@ -1144,6 +1144,28 @@
+@@ -1168,6 +1168,28 @@
    fi
  fi
  
@@ -86,10 +85,9 @@ diff -ur proftpd-1.3.1rc2/configure.in proftpd-1.3.1rc2.utmpx/configure.in
  dnl See if various LOG_ macros are defined
  if test "$have_syslog_h" = "yes"; then
    AC_DEFINE(HAVE_SYSLOG_H)
-diff -ur proftpd-1.3.1rc2/src/log.c proftpd-1.3.1rc2.utmpx/src/log.c
---- proftpd-1.3.1rc2/src/log.c 2006-12-11 20:53:43.000000000 +0100
-+++ proftpd-1.3.1rc2.utmpx/src/log.c   2007-08-20 14:07:30.000000000 +0200
-@@ -59,119 +59,116 @@
+--- proftpd-1.3.1-wtmp/src/log.c       2007-09-11 03:49:44.000000000 +0300
++++ proftpd-1.3.1/src/log.c    2008-01-09 00:43:47.043739566 +0200
+@@ -59,119 +59,124 @@
    int res = 0;
    static int fd = -1;
  
@@ -103,27 +101,32 @@ diff -ur proftpd-1.3.1rc2/src/log.c proftpd-1.3.1rc2.utmpx/src/log.c
 -#else
 -  struct utmpx utx;
 -#endif
--  static int fdx = -1;
 +#if defined(HAVE_UTMPX_H)
++  char *wtmpx_file = NULL;
+   static int fdx = -1;
  
  #if !defined(WTMPX_FILE) && defined(_PATH_WTMPX)
  # define WTMPX_FILE _PATH_WTMPX
  #endif
-+  if (access(WTMPX_FILE, F_OK) == 0) {
++  if (access(WTMPX_FILE, F_OK) == 0)
++    wtmpx_file = strdup(WTMPX_FILE);
++  else if (access(WTMPX_FILE"x", F_OK) == 0)
++    wtmpx_file = strdup(WTMPX_FILE"x");
+-  if (fdx < 0 &&
+-      (fdx = open(WTMPX_FILE, O_WRONLY|O_APPEND, 0)) < 0) {
+-    pr_log_pri(PR_LOG_WARNING, "wtmpx %s: %s", WTMPX_FILE, strerror(errno));
+-    return -1;
+-  }
++  if (fdx >= 0 || wtmpx_file != NULL)
++  {
 +#if defined(__sparcv9) && !defined(__NetBSD__)
 +    struct futmpx utx;
 +#else
 +    struct utmpx utx;
 +    time_t t;
 +#endif
-+    static int fdx = -1;
  
--  if (fdx < 0 &&
--      (fdx = open(WTMPX_FILE, O_WRONLY|O_APPEND, 0)) < 0) {
--    pr_log_pri(PR_LOG_WARNING, "wtmpx %s: %s", WTMPX_FILE, strerror(errno));
--    return -1;
--  }
--
 -  /* Unfortunately, utmp string fields are terminated by '\0' if they are
 -   * shorter than the size of the field, but if they are exactly the size of
 -   * the field they don't have to be terminated at all.  Frankly, this sucks.
@@ -132,8 +135,8 @@ diff -ur proftpd-1.3.1rc2/src/log.c proftpd-1.3.1rc2.utmpx/src/log.c
 -   */
 -  if (fstat(fdx, &buf) == 0) {
 -    memset(&utx, 0, sizeof(utx));
-+    if (fdx < 0 && (fdx = open(WTMPX_FILE, O_WRONLY|O_APPEND, 0)) < 0) {
-+      pr_log_pri(PR_LOG_WARNING, "wtmpx %s: %s", WTMPX_FILE, strerror(errno));
++    if (fdx < 0 && (fdx = open(wtmpx_file, O_WRONLY|O_APPEND, 0)) < 0) {
++      pr_log_pri(PR_LOG_WARNING, "wtmpx %s: %s", wtmpx_file, strerror(errno));
 +      return -1;
 +    }
  
@@ -186,7 +189,7 @@ diff -ur proftpd-1.3.1rc2/src/log.c proftpd-1.3.1rc2.utmpx/src/log.c
 +      utx.ut_exit.e_exit = 0;
  #endif /* HAVE_UT_UT_EXIT */
 -    if (write(fdx, (char *)&utx, sizeof(utx)) != sizeof(utx))
--      ftruncate(fdx, buf.st_size);
+-      (void) ftruncate(fdx, buf.st_size);
  
 -  } else {
 -    pr_log_debug(DEBUG0, "%s fstat(): %s", WTMPX_FILE, strerror(errno));
@@ -214,12 +217,13 @@ diff -ur proftpd-1.3.1rc2/src/log.c proftpd-1.3.1rc2.utmpx/src/log.c
 -  if (fd < 0 &&
 -      (fd = open(WTMP_FILE, O_WRONLY|O_APPEND, 0)) < 0) {
 +      if (write(fdx, (char *)&utx, sizeof(utx)) != sizeof(utx))
-+        ftruncate(fdx, buf.st_size);
++        (void )ftruncate(fdx, buf.st_size);
 +    } else {
-+      pr_log_debug(DEBUG0, "%s fstat(): %s", WTMPX_FILE, strerror(errno));
++      pr_log_debug(DEBUG0, "%s fstat(): %s", wtmpx_file, strerror(errno));
 +      res = -1;
 +    }
 +
++    free(wtmpx_file);
 +    return res;
 +  }
 +#else /* HAVE_UTMPX_H */
This page took 0.035079 seconds and 4 git commands to generate.