diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2014-12-15 22:37:58 +0000 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2014-12-15 22:37:58 +0000 |
commit | d90e2b6c30a2b3075a7f2922ab1775c3d7e07750 (patch) | |
tree | 83bbac6d2d079298d8a2929bacfc74eaa7d0306c /app-misc/mc | |
parent | Drop the doc and hscolour USE flags from hspec-discover-2.1.2, as it fails to... (diff) | |
download | gentoo-2-d90e2b6c30a2b3075a7f2922ab1775c3d7e07750.tar.gz gentoo-2-d90e2b6c30a2b3075a7f2922ab1775c3d7e07750.tar.bz2 gentoo-2-d90e2b6c30a2b3075a7f2922ab1775c3d7e07750.zip |
Add epatch_user and pull prealloc patch (bug #532424 by Ulenrich).
(Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key 611FF3AA)
Diffstat (limited to 'app-misc/mc')
-rw-r--r-- | app-misc/mc/ChangeLog | 8 | ||||
-rw-r--r-- | app-misc/mc/files/mc-4.8.13-3297-prealloc.patch | 120 | ||||
-rw-r--r-- | app-misc/mc/mc-4.8.13-r1.ebuild | 102 |
3 files changed, 229 insertions, 1 deletions
diff --git a/app-misc/mc/ChangeLog b/app-misc/mc/ChangeLog index 128eb9ab52ed..918145693371 100644 --- a/app-misc/mc/ChangeLog +++ b/app-misc/mc/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for app-misc/mc # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-misc/mc/ChangeLog,v 1.312 2014/11/01 15:55:26 slyfox Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-misc/mc/ChangeLog,v 1.313 2014/12/15 22:37:58 slyfox Exp $ + +*mc-4.8.13-r1 (15 Dec 2014) + + 15 Dec 2014; Sergei Trofimovich <slyfox@gentoo.org> + +files/mc-4.8.13-3297-prealloc.patch, +mc-4.8.13-r1.ebuild: + Add epatch_user and pull prealloc patch (bug #532424 by Ulenrich). 01 Nov 2014; Sergei Trofimovich <slyfox@gentoo.org> +files/mc-4.8.13-tinfo.patch, mc-4.8.13.ebuild: diff --git a/app-misc/mc/files/mc-4.8.13-3297-prealloc.patch b/app-misc/mc/files/mc-4.8.13-3297-prealloc.patch new file mode 100644 index 000000000000..d84c3484ceba --- /dev/null +++ b/app-misc/mc/files/mc-4.8.13-3297-prealloc.patch @@ -0,0 +1,120 @@ +commit a3486faac37680e3bcf7d0b3905f745765a823fd +Author: Andrew Borodin <aborodin@vmail.ru> +Date: Mon Nov 10 10:32:34 2014 +0300 + + Ticket #3297: don't lose file in case of preallocate space fail. + + Don't remove the destination file if it was retrieved incompletely + but it was already exist and appended during copy/move operation. + + Signed-off-by: Andrew Borodin <aborodin@vmail.ru> + +diff --git a/src/filemanager/file.c b/src/filemanager/file.c +index 9fbf081..3009ccf 100644 +--- a/src/filemanager/file.c ++++ b/src/filemanager/file.c +@@ -1497,7 +1497,6 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, + int open_flags; + gboolean is_first_time = TRUE; + vfs_path_t *src_vpath = NULL, *dst_vpath = NULL; +- gboolean write_errno_nospace = FALSE; + + /* FIXME: We should not be using global variables! */ + ctx->do_reget = 0; +@@ -1739,28 +1738,39 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, + goto ret; + } + +- while (TRUE) ++ /* try preallocate space; if fail, try copy anyway */ ++ while (vfs_preallocate (dest_desc, file_size, ctx->do_append != 0 ? sb.st_size : 0) != 0) + { +- errno = vfs_preallocate (dest_desc, file_size, (ctx->do_append != 0) ? sb.st_size : 0); +- if (errno == 0) ++ if (ctx->skip_all) ++ { ++ /* cannot allocate, start the file copying anyway */ ++ return_status = FILE_CONT; + break; ++ } + +- if (ctx->skip_all) +- return_status = FILE_SKIPALL; +- else ++ return_status = ++ file_error (_("Cannot preallocate space for target file \"%s\"\n%s"), dst_path); ++ ++ if (return_status == FILE_SKIPALL) ++ ctx->skip_all = TRUE; ++ ++ if (ctx->skip_all || return_status == FILE_SKIP) + { +- return_status = +- file_error (_("Cannot preallocate space for target file \"%s\"\n%s"), dst_path); +- if (return_status == FILE_RETRY) +- continue; +- if (return_status == FILE_SKIPALL) +- ctx->skip_all = TRUE; ++ /* skip the space allocation error, start file copying */ ++ return_status = FILE_CONT; ++ break; + } +- mc_close (dest_desc); +- dest_desc = -1; +- mc_unlink (dst_vpath); +- dst_status = DEST_NONE; +- goto ret; ++ ++ if (return_status == FILE_ABORT) ++ { ++ mc_close (dest_desc); ++ dest_desc = -1; ++ mc_unlink (dst_vpath); ++ dst_status = DEST_NONE; ++ goto ret; ++ } ++ ++ /* return_status == FILE_RETRY -- try allocate space again */ + } + + ctx->eta_secs = 0.0; +@@ -1822,6 +1832,8 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, + /* dst_write */ + while ((n_written = mc_write (dest_desc, t, n_read)) < n_read) + { ++ gboolean write_errno_nospace; ++ + if (n_written > 0) + { + n_read -= n_written; +@@ -1851,10 +1863,6 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, + } + if (return_status != FILE_RETRY) + goto ret; +- +- /* User pressed "Retry". Will the next mc_write() call be successful? +- * Reset error flag to be ready for that. */ +- write_errno_nospace = FALSE; + } + } + +@@ -1933,16 +1941,9 @@ copy_file_file (file_op_total_context_t * tctx, file_op_context_t * ctx, + + if (dst_status == DEST_SHORT) + { +- /* Remove short file */ +- int result = 0; +- +- /* In case of copy/move to full partition, keep source file +- * and remove incomplete destination one */ +- if (!write_errno_nospace) +- result = query_dialog (Q_ ("DialogTitle|Copy"), +- _("Incomplete file was retrieved. Keep it?"), +- D_ERROR, 2, _("&Delete"), _("&Keep")); +- if (result == 0) ++ /* Query to remove short file */ ++ if (query_dialog (Q_ ("DialogTitle|Copy"), _("Incomplete file was retrieved. Keep it?"), ++ D_ERROR, 2, _("&Delete"), _("&Keep")) == 0) + mc_unlink (dst_vpath); + } + else if (dst_status == DEST_FULL) diff --git a/app-misc/mc/mc-4.8.13-r1.ebuild b/app-misc/mc/mc-4.8.13-r1.ebuild new file mode 100644 index 000000000000..d039823015d7 --- /dev/null +++ b/app-misc/mc/mc-4.8.13-r1.ebuild @@ -0,0 +1,102 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-misc/mc/mc-4.8.13-r1.ebuild,v 1.1 2014/12/15 22:37:58 slyfox Exp $ + +EAPI=5 + +inherit autotools eutils flag-o-matic + +MY_P=${P/_/-} + +DESCRIPTION="GNU Midnight Commander is a text based file manager" +HOMEPAGE="http://www.midnight-commander.org" +SRC_URI="http://www.midnight-commander.org/downloads/${MY_P}.tar.xz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-interix ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris" +IUSE="+edit gpm mclib nls samba sftp +slang spell test X +xdg" + +REQUIRED_USE="spell? ( edit )" + +RDEPEND=">=dev-libs/glib-2.8:2 + gpm? ( sys-libs/gpm ) + kernel_linux? ( sys-fs/e2fsprogs ) + samba? ( net-fs/samba ) + sftp? ( net-libs/libssh2 ) + slang? ( >=sys-libs/slang-2 ) + !slang? ( sys-libs/ncurses ) + spell? ( app-text/aspell ) + X? ( x11-libs/libX11 + x11-libs/libICE + x11-libs/libXau + x11-libs/libXdmcp + x11-libs/libSM )" +DEPEND="${RDEPEND} + app-arch/xz-utils + virtual/pkgconfig + nls? ( sys-devel/gettext ) + test? ( dev-libs/check ) + " + +[[ -n ${LIVE_EBUILD} ]] && DEPEND="${DEPEND} dev-vcs/cvs" # needed only for SCM source tree (autopoint uses cvs) + +src_prepare() { + [[ -n ${LIVE_EBUILD} ]] && ./autogen.sh + + epatch "${FILESDIR}"/${P}-tinfo.patch + epatch "${FILESDIR}"/${P}-3297-prealloc.patch + epatch_user + eautoreconf +} + +S=${WORKDIR}/${MY_P} + +src_configure() { + local myscreen=ncurses + use slang && myscreen=slang + [[ ${CHOST} == *-solaris* ]] && append-ldflags "-lnsl -lsocket" + + local homedir=".mc" + use xdg && homedir="XDG" + + econf \ + --disable-silent-rules \ + --disable-dependency-tracking \ + $(use_enable nls) \ + --enable-vfs \ + $(use_enable kernel_linux vfs-undelfs) \ + --enable-charset \ + $(use_with X x) \ + $(use_enable samba vfs-smb) \ + $(use_enable sftp vfs-sftp) \ + $(use_enable spell aspell) \ + $(use_with gpm gpm-mouse) \ + --with-screen=${myscreen} \ + $(use_with edit internal-edit) \ + $(use_enable mclib) \ + $(use_enable test tests) \ + --with-homedir=${homedir} +} + +src_install() { + emake DESTDIR="${D}" install + dodoc AUTHORS README NEWS + + # fix bug #334383 + if use kernel_linux && [[ ${EUID} == 0 ]] ; then + fowners root:tty /usr/libexec/mc/cons.saver + fperms g+s /usr/libexec/mc/cons.saver + fi + + if ! use xdg ; then + sed 's@MC_XDG_OPEN="xdg-open"@MC_XDG_OPEN="/bin/false"@' \ + -i "${ED}"/usr/libexec/mc/ext.d/*.sh || die + fi +} + +pkg_postinst() { + elog "To enable exiting to latest working directory," + elog "put this into your ~/.bashrc:" + elog ". ${EPREFIX}/usr/libexec/mc/mc.sh" +} |