summaryrefslogtreecommitdiff
path: root/extra/davfs2
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-01-14 03:47:29 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-01-14 03:47:29 +0000
commit271da49386e259723ef574713339f04886630604 (patch)
tree3357a1b3aa15cfd25145095c41b0a94612ce3635 /extra/davfs2
parentbcefa96cbc68f340b2aa11c108353993db074e76 (diff)
Tue Jan 14 03:40:13 UTC 2014
Diffstat (limited to 'extra/davfs2')
-rw-r--r--extra/davfs2/PKGBUILD24
-rw-r--r--extra/davfs2/davfs2-1.4.7-fix-neon-version-check.patch12
-rw-r--r--extra/davfs2/davfs2-1.4.7-system.diff150
3 files changed, 181 insertions, 5 deletions
diff --git a/extra/davfs2/PKGBUILD b/extra/davfs2/PKGBUILD
index 1b2807981..4be38d1f1 100644
--- a/extra/davfs2/PKGBUILD
+++ b/extra/davfs2/PKGBUILD
@@ -1,16 +1,29 @@
-# $Id: PKGBUILD 187054 2013-06-03 11:16:20Z allan $
+# $Id: PKGBUILD 203671 2014-01-13 22:05:39Z thomas $
# Maintainer: Thomas Baechler <thomas@archlinux.org>
pkgname=davfs2
pkgver=1.4.7
-pkgrel=2
+pkgrel=3
pkgdesc="File system driver that allows you to mount a WebDAV folder"
arch=(i686 x86_64)
url="http://savannah.nongnu.org/projects/davfs2"
license=('GPL')
depends=('neon')
backup=(etc/davfs2/davfs2.conf etc/davfs2/secrets)
-source=(http://mirrors.zerg.biz/nongnu/davfs2/${pkgname}-${pkgver}.tar.gz)
-sha256sums=('50c0ee2a12e8d09fc6a852d32bdfebb1f784939433a85f05254bc7ef28cff044')
+source=(http://mirrors.zerg.biz/nongnu/davfs2/${pkgname}-${pkgver}.tar.gz
+ davfs2-1.4.7-system.diff
+ davfs2-1.4.7-fix-neon-version-check.patch)
+sha256sums=('50c0ee2a12e8d09fc6a852d32bdfebb1f784939433a85f05254bc7ef28cff044'
+ '1d7e921da5edf07bddbd2bfbbf5010a690b4d47166a86ab5abaa6de4dc82125e'
+ 'd637ccfcac85bf642083525018ca6799754b3728766483a616de27213318c1a1')
+
+prepare() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}"/davfs2-1.4.7-system.diff
+ # Some autotools files are missing, so autoreconf fails!
+ # Running autoconf may fail here, it does work for now
+ patch -p1 -i "${srcdir}"/davfs2-1.4.7-fix-neon-version-check.patch
+ autoconf
+}
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -22,6 +35,7 @@ package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
- rm -rf ${pkgdir}/sbin
+ # This directory contains worthless symlinks
+ rm -r ${pkgdir}/sbin
rm -f ${pkgdir}/usr/share/davfs2/{BUGS,COPYING,FAQ,NEWS,TODO,ChangeLog,GPL,README,THANKS}
}
diff --git a/extra/davfs2/davfs2-1.4.7-fix-neon-version-check.patch b/extra/davfs2/davfs2-1.4.7-fix-neon-version-check.patch
new file mode 100644
index 000000000..25b5cb6c4
--- /dev/null
+++ b/extra/davfs2/davfs2-1.4.7-fix-neon-version-check.patch
@@ -0,0 +1,12 @@
+diff -Nur davfs2-1.4.7.orig/configure.ac davfs2-1.4.7/configure.ac
+--- davfs2-1.4.7.orig/configure.ac 2012-07-19 13:38:47.000000000 +0200
++++ davfs2-1.4.7/configure.ac 2014-01-13 23:00:15.021471570 +0100
+@@ -36,7 +36,7 @@
+ # Checks for libraries.
+ AM_GNU_GETTEXT_VERSION(0.14.4)
+ AM_GNU_GETTEXT([external])
+-NE_REQUIRE_VERSIONS([0], [25 26 27 28 29])
++NE_REQUIRE_VERSIONS([0], [25 26 27 28 29 30])
+ DAV_CHECK_NEON
+
+ # Checks for header files.
diff --git a/extra/davfs2/davfs2-1.4.7-system.diff b/extra/davfs2/davfs2-1.4.7-system.diff
new file mode 100644
index 000000000..d0d62fc59
--- /dev/null
+++ b/extra/davfs2/davfs2-1.4.7-system.diff
@@ -0,0 +1,150 @@
+diff -ur davfs2-1.4.7/ChangeLog davfs2-1.4.7.new/ChangeLog
+--- davfs2-1.4.7/ChangeLog 2012-07-19 13:37:52.000000000 +0200
++++ davfs2-1.4.7.new/ChangeLog 2013-09-15 10:19:12.000000000 +0200
+@@ -1,6 +1,11 @@
+ ChangeLog for davfs2
+ --------------------
+
++2013-09-08 Werner Baumann (werner.baumann@onlinehome.de)
++ * kernel_interface.c, mount_davfs.c:
++ Don't create /dev/coda and /dev/fuse.
++ Remove insecure calls of system().
++
+ 2012-07-19 Werner Baumann (werner.baumann@onlinehome.de)
+ * Release version 1.4.7.
+
+diff -ur davfs2-1.4.7/src/kernel_interface.c davfs2-1.4.7.new/src/kernel_interface.c
+--- davfs2-1.4.7/src/kernel_interface.c 2012-07-19 12:58:48.000000000 +0200
++++ davfs2-1.4.7.new/src/kernel_interface.c 2013-09-15 10:15:07.000000000 +0200
+@@ -167,29 +167,6 @@
+ ++minor;
+ }
+
+- if (*dev <= 0 && system("/sbin/modprobe coda &>/dev/null") == 0) {
+- minor = 0;
+- while (*dev <= 0 && minor < MAX_CODADEVS) {
+- char *path;
+- if (asprintf(&path, "%s/%s%i",
+- DAV_DEV_DIR, CODA_DEV_NAME, minor) < 0)
+- abort();
+- *dev = open(path, O_RDWR | O_NONBLOCK);
+- if (*dev <= 0) {
+- if (mknod(path, S_IFCHR, makedev(CODA_MAJOR, minor)) == 0) {
+- if (chown(path, 0, 0) == 0
+- && chmod(path, S_IRUSR | S_IWUSR) == 0) {
+- *dev = open(path, O_RDWR | O_NONBLOCK);
+- } else {
+- remove(path);
+- }
+- }
+- }
+- free(path);
+- ++minor;
+- }
+- }
+-
+ if (*dev <= 0) {
+ error(0, 0, _("no free coda device to mount"));
+ return -1;
+@@ -225,20 +202,6 @@
+ abort();
+
+ *dev = open(path, O_RDWR | O_NONBLOCK);
+- if (*dev <= 0 && system("/sbin/modprobe fuse &>/dev/null") == 0) {
+- *dev = open(path, O_RDWR | O_NONBLOCK);
+- }
+- if (*dev <= 0) {
+- if (mknod(path, S_IFCHR, makedev(FUSE_MAJOR, FUSE_MINOR)) == 0) {
+- if (chown(path, 0, 0) == 0
+- && chmod(path, S_IRUSR | S_IWUSR) == 0) {
+- *dev = open(path, O_RDWR | O_NONBLOCK);
+- } else {
+- remove(path);
+- }
+- }
+- }
+-
+ free(path);
+ if (*dev <= 0) {
+ error(0, 0, _("can't open fuse device"));
+diff -ur davfs2-1.4.7/src/mount_davfs.c davfs2-1.4.7.new/src/mount_davfs.c
+--- davfs2-1.4.7/src/mount_davfs.c 2012-07-19 13:35:11.000000000 +0200
++++ davfs2-1.4.7.new/src/mount_davfs.c 2013-09-15 10:15:22.000000000 +0200
+@@ -170,6 +170,9 @@
+ static int
+ arg_to_int(const char *arg, int base, const char *opt);
+
++static void
++cp_file(const char *src, const char *dest);
++
+ static int
+ debug_opts(const char *s);
+
+@@ -530,10 +533,7 @@
+ char *file_name = ne_concat(path, "/", DAV_CONFIG, NULL);
+ if (access(file_name, F_OK) != 0) {
+ char *template = ne_concat(DAV_DATA_DIR, "/", DAV_CONFIG, NULL);
+- char *command = ne_concat("cp ", template, " ", file_name,
+- NULL);
+- if (system(command) != 0);
+- free(command);
++ cp_file(template, file_name);
+ free(template);
+ }
+ free(file_name);
+@@ -542,11 +542,7 @@
+ if (access(file_name, F_OK) != 0) {
+ char *template = ne_concat(DAV_DATA_DIR, "/", DAV_SECRETS,
+ NULL);
+- char *command = ne_concat("cp ", template, " ", file_name,
+- NULL);
+- if (system(command) == 0)
+- chmod(file_name, S_IRUSR | S_IWUSR);
+- free(command);
++ cp_file(template, file_name);
+ free(template);
+ }
+ free(file_name);
+@@ -1304,6 +1300,7 @@
+ opt : name of the option, arg belongs to. Used in the error message.
+ return value: the value of the integer number in arg */
+ static int
++
+ arg_to_int(const char *arg, int base, const char *opt)
+ {
+ char *tail = NULL;
+@@ -1325,6 +1322,34 @@
+ }
+
+
++/* Creates a copy of src with name dest. */
++static void
++cp_file(const char *src, const char *dest)
++{
++ FILE *in = fopen(src, "r");
++ if (!in)
++ error(EXIT_FAILURE, errno, _("can't open file %s"), src);
++
++ FILE *out = fopen(dest, "w");
++ if (!out)
++ error(EXIT_FAILURE, errno, _("can't open file %s"), dest);
++
++ size_t n = 0;
++ char *line = NULL;
++ int length = getline(&line, &n, in);
++ while (length > 0) {
++ if (fputs(line, out) == EOF)
++ error(EXIT_FAILURE, errno, _("error writing to file %s"), dest);
++ length = getline(&line, &n, in);
++ }
++
++ if (line)
++ free(line);
++ fclose(out);
++ fclose(in);
++}
++
++
+ /* Converts a debug option string s into numerical value. If s is not a
+ valid debug option, it returns 0. */
+ static int