2007-02-06 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Tue, 6 Feb 2007 22:40:32 +0000 (22:40 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Tue, 6 Feb 2007 22:40:32 +0000 (22:40 +0000)
* configure.in (AC_CHECK_HEADERS): Check for sys/sendfile.h.
* src/file_list.c (file_nlst): Remove unused variable HIDDEN.
* src/ftp_session.c [HAVE_SYS_SENDFILE_H]: Include
<sys/sendfile.h>.
(do_user, do_pass): Remove unused variable addr_port.
(do_eprt): Remove unused variable HOST_PORT.
(do_retr): Remove unused variable host_port.  Adjust format output
parameter for timespec members, cast these to the format type.
[!HAVE_FREEBSD_SENDFILE]: Do not define otherwise unused variable
AMT_SENT.
* src/ftp_listener.c (addr2string) [!INET6]: Do not define
variables ERROR and ADDR to suppress compiler warning.
(addr_to_string): Replace with prototype for addr2string.
* src/oftpd.c: Remove extra argument EXE_NAME in syslog
invocation.
(my_syslog_fd): Remove unused global variable.
* src/daemon_assert.c: Include <stdlib.h>.

ChangeLog
configure.in
src/config.h.in
src/daemon_assert.c
src/file_list.c
src/ftp_listener.c
src/ftp_session.c
src/oftpd.c

index f8d9ff1..edaa6f9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2007-02-06  Marcus Brinkmann  <marcus@g10code.de>
+
+       * configure.in (AC_CHECK_HEADERS): Check for sys/sendfile.h.
+       * src/file_list.c (file_nlst): Remove unused variable HIDDEN.
+       * src/ftp_session.c [HAVE_SYS_SENDFILE_H]: Include
+       <sys/sendfile.h>.
+       (do_user, do_pass): Remove unused variable addr_port.
+       (do_eprt): Remove unused variable HOST_PORT.
+       (do_retr): Remove unused variable host_port.  Adjust format output
+       parameter for timespec members, cast these to the format type.
+       [!HAVE_FREEBSD_SENDFILE]: Do not define otherwise unused variable
+       AMT_SENT.
+       * src/ftp_listener.c (addr2string) [!INET6]: Do not define
+       variables ERROR and ADDR to suppress compiler warning.
+       (addr_to_string): Replace with prototype for addr2string.
+       * src/oftpd.c: Remove extra argument EXE_NAME in syslog
+       invocation.
+       (my_syslog_fd): Remove unused global variable.
+       * src/daemon_assert.c: Include <stdlib.h>.
+
 2006-03-09  Werner Koch  <wk@g10code.de>
 
        * configure.in: Define ERRBUF_SIZE.
 2006-03-09  Werner Koch  <wk@g10code.de>
 
        * configure.in: Define ERRBUF_SIZE.
index 4370e1e..a8fbc44 100644 (file)
@@ -11,7 +11,7 @@ AC_PROG_LN_S
 
 dnl Checks for header files.
 AC_HEADER_STDC
 
 dnl Checks for header files.
 AC_HEADER_STDC
-AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h sys/types.h)
+AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h syslog.h unistd.h sys/types.h sys/sendfile.h)
 
 dnl Check for ss_family
 AC_EGREP_CPP(__ss_family,
 
 dnl Check for ss_family
 AC_EGREP_CPP(__ss_family,
index bb6c04c..43bcaef 100644 (file)
@@ -99,6 +99,9 @@
 /* Define to 1 if you have the <syslog.h> header file. */
 #undef HAVE_SYSLOG_H
 
 /* Define to 1 if you have the <syslog.h> header file. */
 #undef HAVE_SYSLOG_H
 
+/* Define to 1 if you have the <sys/sendfile.h> header file. */
+#undef HAVE_SYS_SENDFILE_H
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
index caa1828..6c14a47 100644 (file)
@@ -3,6 +3,7 @@
 #include <pthread.h>
 #include <syslog.h>
 #include <stdio.h>
 #include <pthread.h>
 #include <syslog.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 #ifndef NDEBUG
 void daemon_assert_fail(const char *assertion,
 
 #ifndef NDEBUG
 void daemon_assert_fail(const char *assertion,
index 54e8dfb..8482b52 100644 (file)
@@ -83,7 +83,6 @@ int file_nlst(int out, const char *cur_dir, const char *filespec)
     glob_t glob_buf;
     int i;
     char *file_name;
     glob_t glob_buf;
     int i;
     char *file_name;
-    int hidden;
 
     daemon_assert(out >= 0);
     daemon_assert(is_valid_dir(cur_dir));
 
     daemon_assert(out >= 0);
     daemon_assert(is_valid_dir(cur_dir));
index a5bab0e..d294df1 100644 (file)
@@ -73,7 +73,7 @@ typedef struct connection_info {
 /* prototypes */
 static int invariant(const ftp_listener_t *f);
 static void *connection_acceptor(ftp_listener_t *f);
 /* prototypes */
 static int invariant(const ftp_listener_t *f);
 static void *connection_acceptor(ftp_listener_t *f);
-static void addr_to_string(const sockaddr_storage_t *s, char *addr);
+static char *addr2string(const sockaddr_storage_t *s);
 static void *connection_handler(connection_info_t *info);
 static void connection_handler_cleanup(connection_info_t *info);
 
 static void *connection_handler(connection_info_t *info);
 static void connection_handler_cleanup(connection_info_t *info);
 
@@ -474,8 +474,10 @@ static void *connection_acceptor(ftp_listener_t *f)
 /* NOT THREADSAFE - wrap with a mutex before calling! */
 static char *addr2string(const sockaddr_storage_t *s)
 {
 /* NOT THREADSAFE - wrap with a mutex before calling! */
 static char *addr2string(const sockaddr_storage_t *s)
 {
+#ifdef INET6
     static char addr[IP_ADDRSTRLEN+1];
     int error;
     static char addr[IP_ADDRSTRLEN+1];
     int error;
+#endif
     char *ret_val;
 
     daemon_assert(s != NULL);
     char *ret_val;
 
     daemon_assert(s != NULL);
index 7622936..3441eee 100644 (file)
 # endif
 #endif
 
 # endif
 #endif
 
+#if HAVE_SYS_SENDFILE_H
+#include <sys/sendfile.h>
+#endif
+
 #include "daemon_assert.h"
 #include "telnet_session.h"
 #include "ftp_command.h"
 #include "daemon_assert.h"
 #include "telnet_session.h"
 #include "ftp_command.h"
@@ -377,7 +381,6 @@ static void reply(ftp_session_t *f, int code, const char *fmt, ...)
 static void do_user(ftp_session_t *f, const ftp_command_t *cmd) 
 {
     const char *user;
 static void do_user(ftp_session_t *f, const ftp_command_t *cmd) 
 {
     const char *user;
-    char addr_port[ADDRPORT_STRLEN];
 
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
 
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
@@ -398,7 +401,6 @@ static void do_user(ftp_session_t *f, const ftp_command_t *cmd)
 static void do_pass(ftp_session_t *f, const ftp_command_t *cmd) 
 {
     const char *password;
 static void do_pass(ftp_session_t *f, const ftp_command_t *cmd) 
 {
     const char *password;
-    char addr_port[ADDRPORT_STRLEN];
 
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
 
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
@@ -706,8 +708,6 @@ static void do_lprt(ftp_session_t *f, const ftp_command_t *cmd)
 /* requests.                                                         */
 static void do_eprt(ftp_session_t *f, const ftp_command_t *cmd)  
 {
 /* requests.                                                         */
 static void do_eprt(ftp_session_t *f, const ftp_command_t *cmd)  
 {
-    const sockaddr_storage_t *host_port;
-
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
     daemon_assert(cmd->num_arg == 1);                                   
     daemon_assert(invariant(f));
     daemon_assert(cmd != NULL);
     daemon_assert(cmd->num_arg == 1);                                   
@@ -719,7 +719,7 @@ static void do_eprt(ftp_session_t *f, const ftp_command_t *cmd)
 
 /* support for the various pasv setting functions */
 /* returns the file descriptor of the bound port, or -1 on error */
 
 /* support for the various pasv setting functions */
 /* returns the file descriptor of the bound port, or -1 on error */
-/* note: the "host_port" parameter will be modified, having its port set */
+/* note: the "bind_addr" parameter will be modified, having its port set */
 static int set_pasv(ftp_session_t *f, sockaddr_storage_t *bind_addr)
 {
     int socket_fd;
 static int set_pasv(ftp_session_t *f, sockaddr_storage_t *bind_addr)
 {
     int socket_fd;
@@ -1084,7 +1084,6 @@ static void do_retr(ftp_session_t *f, const ftp_command_t *cmd)
     char buf[4096];
     char converted_buf[8192];
     int converted_buflen;
     char buf[4096];
     char converted_buf[8192];
     int converted_buflen;
-    char addr_port[ADDRPORT_STRLEN];
     struct timeval start_timestamp;
     struct timeval end_timestamp;
     struct timeval transfer_time;
     struct timeval start_timestamp;
     struct timeval end_timestamp;
     struct timeval transfer_time;
@@ -1092,7 +1091,9 @@ static void do_retr(ftp_session_t *f, const ftp_command_t *cmd)
     off_t offset;
     off_t amt_to_send;
     int sendfile_ret;
     off_t offset;
     off_t amt_to_send;
     int sendfile_ret;
+#ifdef HAVE_FREEBSD_SENDFILE
     off_t amt_sent;
     off_t amt_sent;
+#endif
     char errbuf[ERRBUF_SIZE];
 
     daemon_assert(invariant(f));
     char errbuf[ERRBUF_SIZE];
 
     daemon_assert(invariant(f));
@@ -1270,12 +1271,12 @@ static void do_retr(ftp_session_t *f, const ftp_command_t *cmd)
 
     /* note the transfer */
     syslog(LOG_INFO, 
 
     /* note the transfer */
     syslog(LOG_INFO, 
-      "%s retrieved \"%s\", %ld bytes in %d.%06d seconds", 
+      "%s retrieved \"%s\", %ld bytes in %ld.%06ld seconds", 
       f->client_addr_str, 
       full_path,
       file_size,
       f->client_addr_str, 
       full_path,
       file_size,
-      transfer_time.tv_sec,
-      transfer_time.tv_usec);
+      (long int) transfer_time.tv_sec,
+      (long int) transfer_time.tv_usec);
 
 exit_retr:
     f->file_offset = 0;
 
 exit_retr:
     f->file_offset = 0;
index d5dd2bc..07bfbad 100644 (file)
@@ -28,8 +28,6 @@ static const char *exe_name = "oftpd";
 int pasv_port_low = 1024;
 int pasv_port_high = MAX_PORT;
 
 int pasv_port_low = 1024;
 int pasv_port_high = MAX_PORT;
 
-static int my_syslog_fd = -1;
-
 static void daemonize();
 static void print_usage(const char *error);
 
 static void daemonize();
 static void print_usage(const char *error);
 
@@ -249,7 +247,7 @@ int main(int argc, char *argv[])
 
     /* change to root directory */
     if (chroot(dir_ptr) != 0) {
 
     /* change to root directory */
     if (chroot(dir_ptr) != 0) {
-        syslog(LOG_ERR, "error with root directory; %s\n", exe_name, 
+        syslog(LOG_ERR, "error with root directory; %s\n", 
           strerror_r(errno, errbuf, ERRBUF_SIZE));
         exit(1);
     }
           strerror_r(errno, errbuf, ERRBUF_SIZE));
         exit(1);
     }