* [Buildroot] [PATCH] curlftpfs: new package
@ 2012-07-21 15:27 Richard Braun
2012-07-21 15:31 ` Thomas Petazzoni
0 siblings, 1 reply; 8+ messages in thread
From: Richard Braun @ 2012-07-21 15:27 UTC (permalink / raw)
To: buildroot
Signed-off-by: Richard Braun <rbraun@sceen.net>
---
package/Config.in | 1 +
package/curlftpfs/Config.in | 17 +++++++++++++++++
package/curlftpfs/curlftpfs.mk | 14 ++++++++++++++
3 files changed, 32 insertions(+), 0 deletions(-)
create mode 100644 package/curlftpfs/Config.in
create mode 100644 package/curlftpfs/curlftpfs.mk
diff --git a/package/Config.in b/package/Config.in
index f664b8e..edcf55c 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -169,6 +169,7 @@ menu "Hardware handling"
source "package/acpid/Config.in"
source "package/cdrkit/Config.in"
source "package/cramfs/Config.in"
+source "package/curlftpfs/Config.in"
source "package/dbus/Config.in"
source "package/dbus-glib/Config.in"
source "package/dbus-python/Config.in"
diff --git a/package/curlftpfs/Config.in b/package/curlftpfs/Config.in
new file mode 100644
index 0000000..23c7547
--- /dev/null
+++ b/package/curlftpfs/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_CURLFTPFS
+ bool "curlftpfs (FUSE)"
+ select BR2_PACKAGE_LIBFUSE
+ select BR2_PACKAGE_LIBGLIB2
+ select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_OPENSSL
+ select BR2_PACKAGE_LIBCURL
+ depends on BR2_LARGEFILE
+ depends on BR2_USE_WCHAR # glib2
+ help
+ CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE
+ and libcurl.
+
+comment "curlftpfs requires a toolchain with LARGEFILE and WCHAR support"
+ depends on !BR2_LARGEFILE || !BR2_USE_WCHAR
diff --git a/package/curlftpfs/curlftpfs.mk b/package/curlftpfs/curlftpfs.mk
new file mode 100644
index 0000000..9e77eb0
--- /dev/null
+++ b/package/curlftpfs/curlftpfs.mk
@@ -0,0 +1,14 @@
+#############################################################
+#
+# curlftpfs
+#
+#############################################################
+
+CURLFTPFS_VERSION = 0.9.2
+CURLFTPFS_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/curlftpfs/$(CURLFTPFS_VERSION)
+CURLFTPFS_DEPENDENCIES = \
+ libglib2 libfuse openssl libcurl \
+ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) \
+ $(if $(BR2_ENABLE_LOCALE),,libiconv)
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH] curlftpfs: new package
2012-07-21 15:27 [Buildroot] [PATCH] curlftpfs: new package Richard Braun
@ 2012-07-21 15:31 ` Thomas Petazzoni
2012-07-21 16:11 ` Richard Braun
2012-07-21 19:36 ` [Buildroot] [PATCH] " Gustavo Zacarias
0 siblings, 2 replies; 8+ messages in thread
From: Thomas Petazzoni @ 2012-07-21 15:31 UTC (permalink / raw)
To: buildroot
Le Sat, 21 Jul 2012 17:27:18 +0200,
Richard Braun <rbraun@sceen.net> a ?crit :
> @@ -169,6 +169,7 @@ menu "Hardware handling"
> source "package/acpid/Config.in"
> source "package/cdrkit/Config.in"
> source "package/cramfs/Config.in"
> +source "package/curlftpfs/Config.in"
> source "package/dbus/Config.in"
> source "package/dbus-glib/Config.in"
> source "package/dbus-python/Config.in"
This "Hardware handling" menu is becoming quite crazy. curlftpfs
clearly has nothing to do with Hardware handling (and many other things
in there).
Even "cramfs" for example is not quite Hardware handling related. Maybe
we should put more things in the "System tools" menu, or create a
"Filesystems tools" menu or something. Suggestions welcome.
Otherwise, looks good.
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH] curlftpfs: new package
2012-07-21 15:31 ` Thomas Petazzoni
@ 2012-07-21 16:11 ` Richard Braun
2012-07-24 11:44 ` [Buildroot] [PATCH v2] " Richard Braun
2012-07-21 19:36 ` [Buildroot] [PATCH] " Gustavo Zacarias
1 sibling, 1 reply; 8+ messages in thread
From: Richard Braun @ 2012-07-21 16:11 UTC (permalink / raw)
To: buildroot
On Sat, Jul 21, 2012 at 05:31:44PM +0200, Thomas Petazzoni wrote:
> Even "cramfs" for example is not quite Hardware handling related. Maybe
> we should put more things in the "System tools" menu, or create a
> "Filesystems tools" menu or something. Suggestions welcome.
Replace "or" with "and" and it looks good enough for me.
--
Richard Braun
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH] curlftpfs: new package
2012-07-21 15:31 ` Thomas Petazzoni
2012-07-21 16:11 ` Richard Braun
@ 2012-07-21 19:36 ` Gustavo Zacarias
1 sibling, 0 replies; 8+ messages in thread
From: Gustavo Zacarias @ 2012-07-21 19:36 UTC (permalink / raw)
To: buildroot
On 07/21/12 12:31, Thomas Petazzoni wrote:
> This "Hardware handling" menu is becoming quite crazy. curlftpfs
> clearly has nothing to do with Hardware handling (and many other things
> in there).
>
> Even "cramfs" for example is not quite Hardware handling related. Maybe
> we should put more things in the "System tools" menu, or create a
> "Filesystems tools" menu or something. Suggestions welcome.
>
> Otherwise, looks good.
>
> Thomas
Filesystems++ :)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH v2] curlftpfs: new package
2012-07-21 16:11 ` Richard Braun
@ 2012-07-24 11:44 ` Richard Braun
2012-07-30 14:09 ` [Buildroot] [PATCH v3] " Richard Braun
0 siblings, 1 reply; 8+ messages in thread
From: Richard Braun @ 2012-07-24 11:44 UTC (permalink / raw)
To: buildroot
Signed-off-by: Richard Braun <rbraun@sceen.net>
---
package/Config.in | 1 +
package/curlftpfs/Config.in | 17 +++++++++++++++++
package/curlftpfs/curlftpfs.mk | 14 ++++++++++++++
3 files changed, 32 insertions(+), 0 deletions(-)
create mode 100644 package/curlftpfs/Config.in
create mode 100644 package/curlftpfs/curlftpfs.mk
diff --git a/package/Config.in b/package/Config.in
index f664b8e..8b0188b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -521,6 +521,7 @@ source "package/ctorrent/Config.in"
source "package/cifs-utils/Config.in"
source "package/conntrack-tools/Config.in"
source "package/cups/Config.in"
+source "package/curlftpfs/Config.in"
if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
source "package/dhcp/Config.in"
endif
diff --git a/package/curlftpfs/Config.in b/package/curlftpfs/Config.in
new file mode 100644
index 0000000..23c7547
--- /dev/null
+++ b/package/curlftpfs/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_CURLFTPFS
+ bool "curlftpfs (FUSE)"
+ select BR2_PACKAGE_LIBFUSE
+ select BR2_PACKAGE_LIBGLIB2
+ select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_OPENSSL
+ select BR2_PACKAGE_LIBCURL
+ depends on BR2_LARGEFILE
+ depends on BR2_USE_WCHAR # glib2
+ help
+ CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE
+ and libcurl.
+
+comment "curlftpfs requires a toolchain with LARGEFILE and WCHAR support"
+ depends on !BR2_LARGEFILE || !BR2_USE_WCHAR
diff --git a/package/curlftpfs/curlftpfs.mk b/package/curlftpfs/curlftpfs.mk
new file mode 100644
index 0000000..9e77eb0
--- /dev/null
+++ b/package/curlftpfs/curlftpfs.mk
@@ -0,0 +1,14 @@
+#############################################################
+#
+# curlftpfs
+#
+#############################################################
+
+CURLFTPFS_VERSION = 0.9.2
+CURLFTPFS_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/curlftpfs/$(CURLFTPFS_VERSION)
+CURLFTPFS_DEPENDENCIES = \
+ libglib2 libfuse openssl libcurl \
+ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) \
+ $(if $(BR2_ENABLE_LOCALE),,libiconv)
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH v3] curlftpfs: new package
2012-07-24 11:44 ` [Buildroot] [PATCH v2] " Richard Braun
@ 2012-07-30 14:09 ` Richard Braun
2012-07-30 14:37 ` Thomas Petazzoni
0 siblings, 1 reply; 8+ messages in thread
From: Richard Braun @ 2012-07-30 14:09 UTC (permalink / raw)
To: buildroot
Signed-off-by: Richard Braun <rbraun@sceen.net>
---
package/Config.in | 1 +
package/curlftpfs/Config.in | 17 ++++++
.../curlftpfs-000-fix-CURLOPT_INFILESIZE.patch | 11 ++++
...curlftpfs-001-free_ftpfs_file-memleak-fix.patch | 13 +++++
.../curlftpfs-002-nocache-memleak-fix.patch | 58 ++++++++++++++++++++
package/curlftpfs/curlftpfs.mk | 14 +++++
6 files changed, 114 insertions(+), 0 deletions(-)
create mode 100644 package/curlftpfs/Config.in
create mode 100644 package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
create mode 100644 package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
create mode 100644 package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
create mode 100644 package/curlftpfs/curlftpfs.mk
diff --git a/package/Config.in b/package/Config.in
index f664b8e..8b0188b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -521,6 +521,7 @@ source "package/ctorrent/Config.in"
source "package/cifs-utils/Config.in"
source "package/conntrack-tools/Config.in"
source "package/cups/Config.in"
+source "package/curlftpfs/Config.in"
if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
source "package/dhcp/Config.in"
endif
diff --git a/package/curlftpfs/Config.in b/package/curlftpfs/Config.in
new file mode 100644
index 0000000..23c7547
--- /dev/null
+++ b/package/curlftpfs/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_CURLFTPFS
+ bool "curlftpfs (FUSE)"
+ select BR2_PACKAGE_LIBFUSE
+ select BR2_PACKAGE_LIBGLIB2
+ select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_OPENSSL
+ select BR2_PACKAGE_LIBCURL
+ depends on BR2_LARGEFILE
+ depends on BR2_USE_WCHAR # glib2
+ help
+ CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE
+ and libcurl.
+
+comment "curlftpfs requires a toolchain with LARGEFILE and WCHAR support"
+ depends on !BR2_LARGEFILE || !BR2_USE_WCHAR
diff --git a/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch b/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
new file mode 100644
index 0000000..bd14184
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
@@ -0,0 +1,11 @@
+CURLOPT_INFILESIZE does not support -1 arg. This fix bug #556012.
+--- curlftpfs-0.9.2/ftpfs.c.old 2009-12-13 14:12:25.000000000 +0100
++++ curlftpfs-0.9.2/ftpfs.c 2009-12-13 14:12:32.000000000 +0100
+@@ -503,7 +503,6 @@
+
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1);
+- curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READDATA, fh);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_LOW_SPEED_LIMIT, 1);
diff --git a/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch b/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
new file mode 100644
index 0000000..e341b81
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
@@ -0,0 +1,13 @@
+Fix a memory leak. See Bug #587250.
+
+--- a/ftpfs.c 2008-04-30 01:05:47.000000000 +0200
++++ a/ftpfs.c.slesimple 2010-01-01 22:12:10.000000000 +0100
+@@ -615,6 +615,8 @@ static void free_ftpfs_file(struct ftpfs
+ sem_destroy(&fh->data_need);
+ sem_destroy(&fh->data_written);
+ sem_destroy(&fh->ready);
++ if (fh->buf.size) { buf_free(&fh->buf); }
++ if (fh->stream_buf.size) { buf_free(&fh->stream_buf); }
+ free(fh);
+ }
+
diff --git a/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch b/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
new file mode 100644
index 0000000..2c351a4
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
@@ -0,0 +1,58 @@
+Fix a memory leak when cache is disabled. Closes: #614347.
+
+diff -ur curlftpfs-0.9.2/cache.c curlftpfs-0.9.2-olexat/cache.c
+--- curlftpfs-0.9.2/cache.c 2008-04-30 01:03:09.000000000 +0200
++++ curlftpfs-0.9.2-olexat/cache.c 2011-02-04 16:43:05.000000000 +0100
+@@ -25,7 +25,7 @@
+ time_t last_cleaned;
+ };
+
+-static struct cache cache;
++struct cache cache;
+
+ struct node {
+ struct stat stat;
+diff -ur curlftpfs-0.9.2/ftpfs-ls.c curlftpfs-0.9.2-olexat/ftpfs-ls.c
+--- curlftpfs-0.9.2/ftpfs-ls.c 2008-04-23 12:55:41.000000000 +0200
++++ curlftpfs-0.9.2-olexat/ftpfs-ls.c 2011-02-07 17:23:37.000000000 +0100
+@@ -25,6 +25,13 @@
+ #include "charset_utils.h"
+ #include "ftpfs-ls.h"
+
++struct cache {
++ int on;
++ char incomplete[];
++};
++
++extern struct cache cache;
++
+ static int parse_dir_unix(const char *line,
+ struct stat *sbuf,
+ char *file,
+@@ -243,8 +256,10 @@
+ reallink = g_strdup(link);
+ }
+ int linksize = strlen(reallink);
+- cache_add_link(full_path, reallink, linksize+1);
+- DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ if (cache.on) {
++ cache_add_link(full_path, reallink, linksize+1);
++ DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ }
+ if (linkbuf && linklen) {
+ if (linksize > linklen) linksize = linklen - 1;
+ strncpy(linkbuf, reallink, linksize);
+@@ -257,8 +272,10 @@
+ DEBUG(1, "filler: %s\n", file);
+ filler(h, file, &stat_buf);
+ } else {
+- DEBUG(1, "cache_add_attr: %s\n", full_path);
+- cache_add_attr(full_path, &stat_buf);
++ if (cache.on) {
++ DEBUG(1, "cache_add_attr: %s\n", full_path);
++ cache_add_attr(full_path, &stat_buf);
++ }
+ }
+
+ DEBUG(2, "comparing %s %s\n", name, file);
+
diff --git a/package/curlftpfs/curlftpfs.mk b/package/curlftpfs/curlftpfs.mk
new file mode 100644
index 0000000..9e77eb0
--- /dev/null
+++ b/package/curlftpfs/curlftpfs.mk
@@ -0,0 +1,14 @@
+#############################################################
+#
+# curlftpfs
+#
+#############################################################
+
+CURLFTPFS_VERSION = 0.9.2
+CURLFTPFS_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/curlftpfs/$(CURLFTPFS_VERSION)
+CURLFTPFS_DEPENDENCIES = \
+ libglib2 libfuse openssl libcurl \
+ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) \
+ $(if $(BR2_ENABLE_LOCALE),,libiconv)
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH v3] curlftpfs: new package
2012-07-30 14:09 ` [Buildroot] [PATCH v3] " Richard Braun
@ 2012-07-30 14:37 ` Thomas Petazzoni
2012-07-30 16:12 ` [Buildroot] [PATCH v4] " Richard Braun
0 siblings, 1 reply; 8+ messages in thread
From: Thomas Petazzoni @ 2012-07-30 14:37 UTC (permalink / raw)
To: buildroot
Hello,
Le Mon, 30 Jul 2012 16:09:08 +0200,
Richard Braun <rbraun@sceen.net> a ?crit :
> package/Config.in | 1 +
> package/curlftpfs/Config.in | 17 ++++++
> .../curlftpfs-000-fix-CURLOPT_INFILESIZE.patch | 11 ++++
> ...curlftpfs-001-free_ftpfs_file-memleak-fix.patch | 13 +++++
> .../curlftpfs-002-nocache-memleak-fix.patch | 58 ++++++++++++++++++++
Could you please include a description in each patch + Signed-off-by
line, or if you're not the author, a reference to the original place,
and possibly their upstreamable status?
Thanks,
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH v4] curlftpfs: new package
2012-07-30 14:37 ` Thomas Petazzoni
@ 2012-07-30 16:12 ` Richard Braun
0 siblings, 0 replies; 8+ messages in thread
From: Richard Braun @ 2012-07-30 16:12 UTC (permalink / raw)
To: buildroot
Signed-off-by: Richard Braun <rbraun@sceen.net>
---
package/Config.in | 1 +
package/curlftpfs/Config.in | 17 ++++++
.../curlftpfs-000-fix-CURLOPT_INFILESIZE.patch | 13 ++++
...curlftpfs-001-free_ftpfs_file-memleak-fix.patch | 14 +++++
.../curlftpfs-002-nocache-memleak-fix.patch | 59 ++++++++++++++++++++
package/curlftpfs/curlftpfs.mk | 14 +++++
6 files changed, 118 insertions(+), 0 deletions(-)
create mode 100644 package/curlftpfs/Config.in
create mode 100644 package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
create mode 100644 package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
create mode 100644 package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
create mode 100644 package/curlftpfs/curlftpfs.mk
diff --git a/package/Config.in b/package/Config.in
index f664b8e..8b0188b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -521,6 +521,7 @@ source "package/ctorrent/Config.in"
source "package/cifs-utils/Config.in"
source "package/conntrack-tools/Config.in"
source "package/cups/Config.in"
+source "package/curlftpfs/Config.in"
if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
source "package/dhcp/Config.in"
endif
diff --git a/package/curlftpfs/Config.in b/package/curlftpfs/Config.in
new file mode 100644
index 0000000..23c7547
--- /dev/null
+++ b/package/curlftpfs/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_CURLFTPFS
+ bool "curlftpfs (FUSE)"
+ select BR2_PACKAGE_LIBFUSE
+ select BR2_PACKAGE_LIBGLIB2
+ select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT_IF_LOCALE
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_OPENSSL
+ select BR2_PACKAGE_LIBCURL
+ depends on BR2_LARGEFILE
+ depends on BR2_USE_WCHAR # glib2
+ help
+ CurlFtpFS is a filesystem for accessing FTP hosts based on FUSE
+ and libcurl.
+
+comment "curlftpfs requires a toolchain with LARGEFILE and WCHAR support"
+ depends on !BR2_LARGEFILE || !BR2_USE_WCHAR
diff --git a/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch b/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
new file mode 100644
index 0000000..dc83af0
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-000-fix-CURLOPT_INFILESIZE.patch
@@ -0,0 +1,13 @@
+Borrowed from the curlftpfs_0.9.2-5 Debian package.
+
+CURLOPT_INFILESIZE does not support -1 arg. This fix bug #556012.
+--- curlftpfs-0.9.2/ftpfs.c.old 2009-12-13 14:12:25.000000000 +0100
++++ curlftpfs-0.9.2/ftpfs.c 2009-12-13 14:12:32.000000000 +0100
+@@ -503,7 +503,6 @@
+
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1);
+- curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READDATA, fh);
+ curl_easy_setopt_or_die(fh->write_conn, CURLOPT_LOW_SPEED_LIMIT, 1);
diff --git a/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch b/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
new file mode 100644
index 0000000..4966c9d
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-001-free_ftpfs_file-memleak-fix.patch
@@ -0,0 +1,14 @@
+Borrowed from the curlftpfs_0.9.2-5 Debian package.
+
+Fix a memory leak. See Bug #587250.
+--- a/ftpfs.c 2008-04-30 01:05:47.000000000 +0200
++++ a/ftpfs.c.slesimple 2010-01-01 22:12:10.000000000 +0100
+@@ -615,6 +615,8 @@ static void free_ftpfs_file(struct ftpfs
+ sem_destroy(&fh->data_need);
+ sem_destroy(&fh->data_written);
+ sem_destroy(&fh->ready);
++ if (fh->buf.size) { buf_free(&fh->buf); }
++ if (fh->stream_buf.size) { buf_free(&fh->stream_buf); }
+ free(fh);
+ }
+
diff --git a/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch b/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
new file mode 100644
index 0000000..00a4dd6
--- /dev/null
+++ b/package/curlftpfs/curlftpfs-002-nocache-memleak-fix.patch
@@ -0,0 +1,59 @@
+Borrowed from the curlftpfs_0.9.2-5 Debian package.
+
+Fix a memory leak when cache is disabled. Closes: #614347.
+diff -ur curlftpfs-0.9.2/cache.c curlftpfs-0.9.2-olexat/cache.c
+--- curlftpfs-0.9.2/cache.c 2008-04-30 01:03:09.000000000 +0200
++++ curlftpfs-0.9.2-olexat/cache.c 2011-02-04 16:43:05.000000000 +0100
+@@ -25,7 +25,7 @@
+ time_t last_cleaned;
+ };
+
+-static struct cache cache;
++struct cache cache;
+
+ struct node {
+ struct stat stat;
+diff -ur curlftpfs-0.9.2/ftpfs-ls.c curlftpfs-0.9.2-olexat/ftpfs-ls.c
+--- curlftpfs-0.9.2/ftpfs-ls.c 2008-04-23 12:55:41.000000000 +0200
++++ curlftpfs-0.9.2-olexat/ftpfs-ls.c 2011-02-07 17:23:37.000000000 +0100
+@@ -25,6 +25,13 @@
+ #include "charset_utils.h"
+ #include "ftpfs-ls.h"
+
++struct cache {
++ int on;
++ char incomplete[];
++};
++
++extern struct cache cache;
++
+ static int parse_dir_unix(const char *line,
+ struct stat *sbuf,
+ char *file,
+@@ -243,8 +256,10 @@
+ reallink = g_strdup(link);
+ }
+ int linksize = strlen(reallink);
+- cache_add_link(full_path, reallink, linksize+1);
+- DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ if (cache.on) {
++ cache_add_link(full_path, reallink, linksize+1);
++ DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ }
+ if (linkbuf && linklen) {
+ if (linksize > linklen) linksize = linklen - 1;
+ strncpy(linkbuf, reallink, linksize);
+@@ -257,8 +272,10 @@
+ DEBUG(1, "filler: %s\n", file);
+ filler(h, file, &stat_buf);
+ } else {
+- DEBUG(1, "cache_add_attr: %s\n", full_path);
+- cache_add_attr(full_path, &stat_buf);
++ if (cache.on) {
++ DEBUG(1, "cache_add_attr: %s\n", full_path);
++ cache_add_attr(full_path, &stat_buf);
++ }
+ }
+
+ DEBUG(2, "comparing %s %s\n", name, file);
+
diff --git a/package/curlftpfs/curlftpfs.mk b/package/curlftpfs/curlftpfs.mk
new file mode 100644
index 0000000..9e77eb0
--- /dev/null
+++ b/package/curlftpfs/curlftpfs.mk
@@ -0,0 +1,14 @@
+#############################################################
+#
+# curlftpfs
+#
+#############################################################
+
+CURLFTPFS_VERSION = 0.9.2
+CURLFTPFS_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/curlftpfs/$(CURLFTPFS_VERSION)
+CURLFTPFS_DEPENDENCIES = \
+ libglib2 libfuse openssl libcurl \
+ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl) \
+ $(if $(BR2_ENABLE_LOCALE),,libiconv)
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-07-30 16:12 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-21 15:27 [Buildroot] [PATCH] curlftpfs: new package Richard Braun
2012-07-21 15:31 ` Thomas Petazzoni
2012-07-21 16:11 ` Richard Braun
2012-07-24 11:44 ` [Buildroot] [PATCH v2] " Richard Braun
2012-07-30 14:09 ` [Buildroot] [PATCH v3] " Richard Braun
2012-07-30 14:37 ` Thomas Petazzoni
2012-07-30 16:12 ` [Buildroot] [PATCH v4] " Richard Braun
2012-07-21 19:36 ` [Buildroot] [PATCH] " Gustavo Zacarias
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox