diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-01-14 03:47:29 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-01-14 03:47:29 +0000 |
commit | 271da49386e259723ef574713339f04886630604 (patch) | |
tree | 3357a1b3aa15cfd25145095c41b0a94612ce3635 /extra/davfs2 | |
parent | bcefa96cbc68f340b2aa11c108353993db074e76 (diff) |
Tue Jan 14 03:40:13 UTC 2014
Diffstat (limited to 'extra/davfs2')
-rw-r--r-- | extra/davfs2/PKGBUILD | 24 | ||||
-rw-r--r-- | extra/davfs2/davfs2-1.4.7-fix-neon-version-check.patch | 12 | ||||
-rw-r--r-- | extra/davfs2/davfs2-1.4.7-system.diff | 150 |
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 |