*** /usr/ports/ftp/proftpd/files/proftpd-1.3.0-iconv.patch 2009-11-05 15:05:14.232763758 +0900
--- /usr/ports/ftp/proftpd/files/extra-patch-mod-codeconv 2009-11-05 15:38:32.060774949 +0900
***************
*** 1,6 ****
! diff -urN proftpd-1.3.0/modules/mod_codeconv.c proftpd-1.3.0-iconv/modules/mod_codeconv.c
! --- proftpd-1.3.0/modules/mod_codeconv.c 1970-01-01 09:00:00.000000000 +0900
! +++ proftpd-1.3.0-iconv/modules/mod_codeconv.c 2006-05-01 21:58:29.000000000 +0900
@@ -0,0 +1,229 @@
+/*
+ * ProFTPD: mod_codeconv -- local <-> remote charset conversion
--- 1,6 ----
! diff -urN modules/mod_codeconv.c modules/mod_codeconv.c
! --- modules/mod_codeconv.c 1970-01-01 09:00:00.000000000 +0900
! +++ modules/mod_codeconv.c 2006-05-01 21:58:29.000000000 +0900
@@ -0,0 +1,229 @@
+/*
+ * ProFTPD: mod_codeconv -- local <-> remote charset conversion
***************
*** 231,239 ****
+ codeconv_sess_init
+
+};
! diff -urN proftpd-1.3.0/modules/mod_df.c proftpd-1.3.0-iconv/modules/mod_df.c
! --- proftpd-1.3.0/modules/mod_df.c 1970-01-01 09:00:00.000000000 +0900
! +++ proftpd-1.3.0-iconv/modules/mod_df.c 2006-05-01 21:58:29.000000000 +0900
@@ -0,0 +1,127 @@
+/*
+ * ProFTPD: mod_df -- ディスク空き容量通知モジュール
--- 231,239 ----
+ codeconv_sess_init
+
+};
! diff -urN modules/mod_df.c modules/mod_df.c
! --- modules/mod_df.c 1970-01-01 09:00:00.000000000 +0900
! +++ modules/mod_df.c 2006-05-01 21:58:29.000000000 +0900
@@ -0,0 +1,127 @@
+/*
+ * ProFTPD: mod_df -- ディスク空き容量通知モジュール
***************
*** 362,387 ****
+ df_sess_init
+
+};
! diff -urN proftpd-1.3.0/modules/mod_ls.c proftpd-1.3.0-iconv/modules/mod_ls.c
! --- proftpd-1.3.0/modules/mod_ls.c 2005-08-25 01:10:30.000000000 +0900
! +++ proftpd-1.3.0-iconv/modules/mod_ls.c 2006-05-01 21:58:29.000000000 +0900
! @@ -234,12 +234,15 @@
return res;
}
+extern char* local2remote(char*);
+
/* sendline() now has an internal buffer, to help speed up LIST output. */
! static int sendline(char *fmt, ...) {
static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
va_list msg;
char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
int res = 0;
+ char* buf2;
! /* A NULL fmt argument is the signal to flush the buffer */
! if (!fmt) {
! @@ -257,6 +260,13 @@
buf[sizeof(buf)-1] = '\0';
--- 362,387 ----
+ df_sess_init
+
+};
! diff -urN modules/mod_ls.c modules/mod_ls.c
! --- modules/mod_ls.c 2009-04-29 03:35:03.000000000 +0900
! +++ modules/mod_ls.c 2009-11-05 15:16:55.289130176 +0900
! @@ -244,12 +244,15 @@
return res;
}
+extern char* local2remote(char*);
+
/* sendline() now has an internal buffer, to help speed up LIST output. */
! static int sendline(int flags, char *fmt, ...) {
static char listbuf[PR_TUNABLE_BUFFER_SIZE] = {'\0'};
va_list msg;
char buf[PR_TUNABLE_BUFFER_SIZE+1] = {'\0'};
int res = 0;
+ char* buf2;
! if (flags & LS_SENDLINE_FL_FLUSH) {
! size_t listbuflen = strlen(listbuf);
! @@ -274,6 +277,13 @@
buf[sizeof(buf)-1] = '\0';
***************
*** 394,404 ****
+
/* If buf won't fit completely into listbuf, flush listbuf */
if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
! if ((res = pr_data_xfer(listbuf, strlen(listbuf))) < 0)
! diff -urN proftpd-1.3.0/src/netio.c proftpd-1.3.0-iconv/src/netio.c
! --- proftpd-1.3.0/src/netio.c 2004-10-10 05:46:22.000000000 +0900
! +++ proftpd-1.3.0-iconv/src/netio.c 2006-05-01 21:58:29.000000000 +0900
! @@ -523,9 +523,12 @@
return -1;
}
--- 394,404 ----
+
/* If buf won't fit completely into listbuf, flush listbuf */
if (strlen(buf) >= (sizeof(listbuf) - strlen(listbuf))) {
! res = pr_data_xfer(listbuf, strlen(listbuf));
! diff -urN src/netio.c src/netio.c
! --- src/netio.c 2008-11-17 10:42:17.000000000 +0900
! +++ src/netio.c 2009-11-05 15:34:36.603090476 +0900
! @@ -621,9 +621,12 @@
return -1;
}
***************
*** 411,417 ****
if (!nstrm) {
errno = EINVAL;
! @@ -537,6 +540,13 @@
va_end(msg);
buf[sizeof(buf)-1] = '\0';
--- 411,417 ----
if (!nstrm) {
errno = EINVAL;
! @@ -635,12 +638,20 @@
va_end(msg);
buf[sizeof(buf)-1] = '\0';
***************
*** 425,427 ****
--- 425,447 ----
return pr_netio_write(nstrm, buf, strlen(buf));
}
+ int pr_netio_printf_async(pr_netio_stream_t *nstrm, char *fmt, ...) {
+ va_list msg;
+ char buf[PR_RESPONSE_BUFFER_SIZE] = {'\0'};
+ + char* p;
+
+ if (!nstrm) {
+ errno = EINVAL;
+ @@ -652,6 +663,13 @@
+ va_end(msg);
+ buf[sizeof(buf)-1] = '\0';
+
+ + if (buf[0]) {
+ + p = local2remote(buf);
+ + if (p) {
+ + strcpy(buf, p); free(p);
+ + }
+ + }
+ +
+ return pr_netio_write_async(nstrm, buf, strlen(buf));
+ }
Post Views: 177