[-]
[+]
|
Changed |
_service:tar_git:mc.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -1,9 +1,9 @@
<services>
<service name="tar_git">
<param name="url">https://github.com/sailfishos-chum/mc</param>
- <param name="revision">4.8.27.3</param>
- <param name="branch">master</param>
+ <param name="revision">4.8.29</param>
+ <param name="branch">master</param>
<param name="debian">N</param>
<param name="dumb">N</param>
</service>
-</services>
\ No newline at end of file
+</services>
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/Makefile.am
^
|
@@ -1,11 +0,0 @@
-SUBDIRS = gentoo redhat
-
-
-AUTOMAKE_OPTIONS = 1.5
-
-EXTRA_DIST = pkginfo.in prototype.in
-
-noinst_DATA = pkginfo prototype
-
-ACLOCAL_AMFLAGS = -I m4
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/gentoo/Makefile.am
^
|
@@ -1 +0,0 @@
-noinst_DATA = README
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/gentoo/README
^
|
@@ -1,39 +0,0 @@
-Hi! Currently bleeding-edge mc-9999.ebuild (git)
-hosts on repo.or.cz in overlay format:
-
- git://repo.or.cz/slyfox-gentoo.git
-
-In order to use it you need to perform some steps:
-
-1. fetch overlay somewhere:
- $ cd ~/portage/
- $ git clone git://repo.or.cz/slyfox-gentoo.git
-
-2. add overlay to your PM:
- * portage:
- $ cat /etc/make.conf | grep PORTDIR_OVERLAY
- PORTDIR_OVERLAY="/home/slyfox/portage/slyfox-gentoo"
- * paludis:
- $ cat /etc/paludis/repositories/slyfox-gentoo.conf
- location = ${ROOT}/home/slyfox/portage/slyfox-gentoo
- master_repository = gentoo
- format = ebuild
-
-3. unmask unkeyworded ebuild:
- * portage:
- $ ACCEPT_KEYWORDS="~amd64 **" emerge -pv mc
- or
- $ cat /etc/portage/package.keywords | grep app-misc/mc
- =app-misc/mc-9999 ~amd64 **
- * paludis:
- $ cat /etc/paludis/keywords.conf.d/mc.conf
- =app-misc/mc-9999::slyfox-gentoo ~amd64 *
-
-4. install ebuild the way you usually do it
-
-5. update an overlay time to time:
- $ cd ~/portage/slyfox-gentoo
- $ git pull
-
-Bugs/feature requests/patches are welcome: http://midnight-commander.org/
-Have fun!
\ No newline at end of file
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/pkginfo.in
^
|
@@ -1,9 +0,0 @@
-PKG=GNUmc
-NAME=Midnight Commander visual shell
-DESC=Midnight Commander visual shell
-VENDOR=Free Software Foundation
-VERSION=@VERSION@
-CLASSES=none
-CATEGORY=application
-EMAIL=mc-devel@gnome.org
-PSTAMP=20030205
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/prototype.in
^
|
@@ -1,130 +0,0 @@
-#! /usr/bin/pkgmk -f
-# Sun Solaris prototype file for pkgmk(1)
-#
-!prefix=@prefix@
-!bindir=$prefix/bin
-!libdir=$prefix/lib
-!datadir=$prefix/share
-!mandir=$prefix/man
-!docdir=$prefix/doc
-!search . $bindir $libdir $datadir $datadir/mc
-i pkginfo=pkginfo
-!default 755 root bin
-l none $bindir/mcedit=mc
-f none $bindir/mc
-d none $libdir/mc
-d none $datadir/mc
-d none $datadir/mc/bin
-d none $datadir/mc/extfs
-d none $datadir/mc/syntax
-d none $docdir/mc
-#
-!default 644 root bin
-f none $datadir/mc/cedit.menu
-f none $datadir/mc/edit.indent.rc
-f none $datadir/mc/edit.spell.rc
-f none $datadir/mc/mc.ext
-f none $datadir/mc/mc.hint
-f none $datadir/mc/mc.hint.cs
-f none $datadir/mc/mc.hint.es
-f none $datadir/mc/mc.hint.hu
-f none $datadir/mc/mc.hint.it
-f none $datadir/mc/mc.hint.nl
-f none $datadir/mc/mc.hint.pl
-f none $datadir/mc/mc.hint.ru
-f none $datadir/mc/mc.hint.uk
-f none $datadir/mc/mc.hint.zh
-f none $datadir/mc/mc.hlp
-f none $datadir/mc/mc.hlp.es
-f none $datadir/mc/mc.hlp.hu
-f none $datadir/mc/mc.hlp.it
-f none $datadir/mc/mc.hlp.pl
-f none $datadir/mc/mc.hlp.ru
-f none $datadir/mc/mc.lib
-f none $datadir/mc/mc.menu
-#
-!search $datadir/mc/bin
-#
-f none $datadir/mc/bin/mc.csh
-f none $datadir/mc/bin/mc.sh
-f none $datadir/mc/bin/mc-wrapper.csh
-f none $datadir/mc/bin/mc-wrapper.sh
-#
-!search $datadir/mc/extfs
-#
-f none $datadir/mc/extfs/a
-f none $datadir/mc/extfs/apt
-f none $datadir/mc/extfs/audio
-f none $datadir/mc/extfs/bpp
-f none $datadir/mc/extfs/deb
-f none $datadir/mc/extfs/deba
-f none $datadir/mc/extfs/debd
-f none $datadir/mc/extfs/dpkg
-f none $datadir/mc/extfs/extfs.ini
-f none $datadir/mc/extfs/hp48
-f none $datadir/mc/extfs/lslR
-f none $datadir/mc/extfs/mailfs
-f none $datadir/mc/extfs/patchfs
-f none $datadir/mc/extfs/README
-f none $datadir/mc/extfs/rpm
-f none $datadir/mc/extfs/rpms
-f none $datadir/mc/extfs/sfs.ini
-f none $datadir/mc/extfs/trpm
-f none $datadir/mc/extfs/uar
-f none $datadir/mc/extfs/uarj
-f none $datadir/mc/extfs/uha
-f none $datadir/mc/extfs/ulha
-f none $datadir/mc/extfs/urar
-f none $datadir/mc/extfs/uzip
-f none $datadir/mc/extfs/uzoo
-#
-!search $datadir/mc/syntax
-#
-f none $datadir/mc/syntax/ada95.syntax
-f none $datadir/mc/syntax/changelog.syntax
-f none $datadir/mc/syntax/c.syntax
-f none $datadir/mc/syntax/diff.syntax
-f none $datadir/mc/syntax/dos.syntax
-f none $datadir/mc/syntax/fortran.syntax
-f none $datadir/mc/syntax/html.syntax
-f none $datadir/mc/syntax/java.syntax
-f none $datadir/mc/syntax/js.syntax
-f none $datadir/mc/syntax/latex.syntax
-f none $datadir/mc/syntax/lisp.syntax
-f none $datadir/mc/syntax/lsm.syntax
-f none $datadir/mc/syntax/m4.syntax
-f none $datadir/mc/syntax/mail.syntax
-f none $datadir/mc/syntax/makefile.syntax
-f none $datadir/mc/syntax/ml.syntax
-f none $datadir/mc/syntax/nroff.syntax
-f none $datadir/mc/syntax/octave.syntax
-f none $datadir/mc/syntax/pascal.syntax
-f none $datadir/mc/syntax/perl.syntax
-f none $datadir/mc/syntax/php.syntax
-f none $datadir/mc/syntax/po.syntax
-f none $datadir/mc/syntax/python.syntax
-f none $datadir/mc/syntax/sh.syntax
-f none $datadir/mc/syntax/slang.syntax
-f none $datadir/mc/syntax/smalltalk.syntax
-f none $datadir/mc/syntax/spec.syntax
-f none $datadir/mc/syntax/sql.syntax
-f none $datadir/mc/syntax/swig.syntax
-f none $datadir/mc/syntax/Syntax
-f none $datadir/mc/syntax/syntax.syntax
-f none $datadir/mc/syntax/tcl.syntax
-f none $datadir/mc/syntax/texinfo.syntax
-f none $datadir/mc/syntax/unknown.syntax
-f none $datadir/mc/syntax/xml.syntax
-!search $docdir/mc
-f none $docdir/mc/ABOUT-NLS
-f none $docdir/mc/AUTHORS
-f none $docdir/mc/ChangeLog
-f none $docdir/mc/COPYING
-f none $docdir/mc/FAQ
-f none $docdir/mc/INSTALL
-f none $docdir/mc/INSTALL.FAST
-f none $docdir/mc/MAINTAINERS
-f none $docdir/mc/NEWS
-f none $docdir/mc/README
-f none $docdir/mc/README.PC
-f none $docdir/mc/README.QNX
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/redhat/Makefile.am
^
|
@@ -1,3 +0,0 @@
-EXTRA_DIST = mc.spec.in
-
-noinst_DATA = mc.spec
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/contrib/dist/redhat/mc.spec.in
^
|
@@ -1,357 +0,0 @@
-# Note that this is NOT a relocatable package
-
-%define legacy_rhel 0%{?el4}%{?el3}
-
-%if %{legacy_rhel}
- %define _with_screen --with-screen=ncurses
- %define _with_glib_static --with-glib-static
- %define glib_version 2.12
- %define glib_stepping .3
-%else
- %define _with_screen --with-screen=slang
-%endif
-
-%define mc_version @DISTR_VERSION@
-%define mc_release @DISTR_RELEASE@
-%define mc_tarball @VERSION@
-
-Summary: User-friendly text console file manager and visual shell
-Name: mc
-Version: %{mc_version}
-Release: %{mc_release}%{?dist}
-Epoch: 3
-License: GPL3+
-Group: System Environment/Shells
-Source0: %{name}-%{mc_tarball}.tar.gz
-
-%if %{legacy_rhel}
-Source1: http://ftp.gnome.org/pub/gnome/sources/glib/%{glib_version}/glib-%{glib_version}%{?glib_stepping}.tar.bz2
-Patch0: glib2-CVE-2008-4316.patch
-%endif
-
-URL: http://www.midnight-commander.org/
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: e2fsprogs-devel gpm-devel perl
-
-%if %{legacy_rhel}%{?el5}
-BuildRequires: pcre-devel
-%endif
-
-%if %{legacy_rhel}
-
-BuildRequires: ncurses-devel
-
-# From Glib
-BuildRequires: pkgconfig gettext
-
-%else
-BuildRequires: glib2-devel slang-devel
-%endif
-
-%description
-GNU Midnight Commander is a visual file manager. It's a feature rich
-full-screen text mode application that allows you to copy, move and
-delete files and whole directory trees, search for files and run
-commands in the subshell. Internal viewer and editor are included. Mouse
-is supported on Linux console. VFS (Virtual Filesystem) allows you to
-view archives and files on remote servers (via SAMBA, FTP or SSH).
-
-%prep
-
-%setup -q -n %{name}-%{mc_tarball}
-
-%if %{legacy_rhel}
-
-%setup -q -T -D -a 1 -n %{name}-%{mc_tarball}
-
-cd glib-%{glib_version}%{?glib_stepping}
-%patch0 -p1 -b .CVE-2008-4316
-
-%endif
-
-%build
-
-%if %{legacy_rhel}
-
-pushd glib-%{glib_version}%{?glib_stepping}
-RESULT_DIR=`pwd`/result
-
-./configure \
- --disable-gtk-doc \
- --disable-shared \
- --enable-static \
- --prefix="$RESULT_DIR" \
- --exec-prefix="$RESULT_DIR" \
- --libdir="$RESULT_DIR/usr/%{_lib}"
-
-%{__make} %{?_smp_mflags} CFLAGS="%{optflags} -fno-strict-aliasing" install
-popd
-
-PKG_CONFIG_PATH="$RESULT_DIR/usr/%{_lib}/pkgconfig:$PKG_CONFIG_PATH" ; export PKG_CONFIG_PATH ;
-%endif
-
-%configure \
- %{_with_screen} \
- %{?_with_glib_static} \
- --enable-charset \
- --enable-vfs-smb \
- --without-x \
- --with-gpm-mouse \
- --disable-doxygen-doc
-
-%{__make} %{?_smp_mflags} CFLAGS="%{optflags}"
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-make install DESTDIR="$RPM_BUILD_ROOT"
-
-install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
-install contrib/{mc.sh,mc.csh} $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
-
-%find_lang %{name}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files -f %{name}.lang
-%defattr(-, root, root)
-
-%doc doc/FAQ doc/COPYING doc/NEWS doc/README
-%{_bindir}/mc
-%{_bindir}/mcedit
-%{_bindir}/mcview
-%{_bindir}/mcdiff
-
-%dir %{_libexecdir}/mc
-%dir %{_libexecdir}/mc/extfs.d
-%dir %{_libexecdir}/mc/fish
-%attr(4511, vcsa, tty) %{_libexecdir}/mc/cons.saver
-%{_libexecdir}/mc/mc*sh
-%{_libexecdir}/mc/extfs.d/*
-%{_libexecdir}/mc/fish/*
-
-%{_mandir}/man1/*
-%lang(es) %{_mandir}/es/man1/mc.1*
-%lang(hu) %{_mandir}/hu/man1/mc.1*
-%lang(it) %{_mandir}/it/man1/mc.1*
-%lang(pl) %{_mandir}/pl/man1/mc.1*
-%lang(ru) %{_mandir}/ru/man1/mc.1*
-%lang(sr) %{_mandir}/sr/man1/mc.1*
-
-%{_sysconfdir}/profile.d/*
-
-%config(noreplace) %{_sysconfdir}/mc/filehighlight.ini
-%config(noreplace) %{_sysconfdir}/mc/*edit*
-%config(noreplace) %{_sysconfdir}/mc/mc.ext
-%config(noreplace) %{_sysconfdir}/mc/mc.menu
-%config(noreplace) %{_sysconfdir}/mc/mc.menu.*
-%config(noreplace) %{_sysconfdir}/mc/sfs.ini
-%config(noreplace) %{_sysconfdir}/mc/mc.keymap
-%config(noreplace) %{_sysconfdir}/mc/mc.keymap.*
-
-%dir %{_datadir}/mc
-%{_datadir}/mc/*
-
-%changelog
-
-* Fri Oct 14 2011 Slava Zanko <slavazanko@gmail.com>
-- Changed License version
-
-* Thu Jul 14 2011 Slava Zanko <slavazanko@gmail.com>
-- Added %{_libexecdir}/mc/fish directory to spec file
-
-* Thu Sep 16 2010 Andrew Borodin <aborodin@vmail.ru>
-- Some files are installed now into %%{_datadir}/mc instead of %%{_sysconfdir}/mc.
-
-* Wed Apr 28 2010 Yury V. Zaytsev <yury@shurup.com>
-- Added mcdiff to the list of packaged files.
-
-* Tue Feb 09 2010 Andrew Borodin <aborodin@vmail.ru>
-- Fixed file list because of EXTFS VFS reorganizing.
-
-* Wed Dec 30 2009 Yury V. Zaytsev <yury@shurup.com>
-- Bumped the epoch again and changed the versioning scheme.
-- Thanks to Slava Zanko for all his hard work on m4 vodoo!
-
-* Fri Dec 25 2009 Yury V. Zaytsev <yury@shurup.com>
-- Had to bump the epoch because of the braindead versioning scheme used.
-
-* Fri Nov 27 2009 Yury V. Zaytsev <yury@shurup.com>
-- Fixed debug info generation for legacy distros.
-- Rewritten and simplified static build procedure.
-
-* Mon Oct 26 2009 Andrew Borodin <aborodin@vmail.ru>
-- Added new %%{_sysconfdir}/mc/mc.keymap.* files.
-
-* Fri Sep 04 2009 Slava Zanko <slavazanko@gmail.com>
-- Add new file %%{_sysconfdir}/mc/filehighlight.ini.
-
-* Sat Aug 01 2009 Yury V. Zaytsev <yury@shurup.com>
-- Fixed EL4 (and supposedly EL3) builds.
-- Fixed some of the rpmlint warnings.
-
-* Sat Jul 04 2009 Yury V. Zaytsev <yury@shurup.com>
-- Fix the issue when wrappers were left unpackaged.
-
-* Thu May 21 2009 Slava Zanko <slavazanko@gmail.com>
-- Fix install patches: use %%{_sysconfdir}/mc directory.
-
-* Fri May 8 2009 Slava Zanko <slavazanko@gmail.com>
-- Reviewed spec-file to build on the current distributions.
-- Changed build rules.
-- Fixed install paths.
-
-* Fri Jun 22 2007 Pavel Roskin <proski@gnu.org>
-- Made cons.saver suid vcsa, it's needed for Fedora 7.
-
-* Thu Dec 21 2006 Pavel Roskin <proski@gnu.org>
-- Don't rely on brace expansion, it may be disabled.
-
-* Mon Jan 30 2006 Pavel Roskin <proski@gnu.org>
-- Avoid using %%{_prefix} where more specialized macros are available.
-
-* Tue Aug 02 2005 Pavel Roskin <proski@gnu.org>
-- Replace obsolete "Copyright" with "License".
-
-* Thu Mar 31 2005 Pavel Roskin <proski@gnu.org>
-- Comment out build dependencies - they are too distribution specific.
-
-* Tue Sep 23 2003 Pavel Roskin <proski@gnu.org>
-- Remove term directory, it's obsolete and irrelevant on modern systems.
-- Include translated menu files.
-
-* Sun Feb 16 2003 Pavel Roskin <proski@gnu.org>
-- Remove obsolete dependency on /sbin/chkconfig.
-
-* Tue Dec 24 2002 Pavel Roskin <proski@gnu.org>
-- Work around bug in rpm 4.1 that expands defines in comments.
-- Handle --without-x.
-
-* Mon Nov 04 2002 Andrew V. Samoilov <sav@bcs.zp.ua>
-- Handle --with ext2undel.
-
-* Fri Nov 01 2002 Pavel Roskin <proski@gnu.org>
-- Add wrappers to support setting last directory on exit. Keep all
- scripts in their original directory, just copy them.
-
-* Tue Oct 22 2002 Pavel Roskin <proski@gnu.org>
-- Don't use the included S-Lang, there is a workaround for Red Hat 8.0
- S-Lang, and binary compatibility with Red Hat 7.x doesn't work anyway.
-
-* Tue Oct 08 2002 Pavel Roskin <proski@gnu.org>
-- Use the included S-Lang again, since we include a better version now.
- This should avoid incompatibility with Red Hat 7.x.
-- Add _with_glib2 option.
-
-* Mon Oct 07 2002 Pavel Roskin <proski@gnu.org>
-- Remove installed mc.sh and mc.csh from %%{_prefix}/share/mc/bin to
- suppress a warning about installed but unpackaged files.
-
-* Mon Sep 30 2002 Andrew V. Samoilov <sav@bcs.zp.ua>
-- Don't require slang-devel if _with_ncurses.
-- Handle --with samba.
-
-* Sun Sep 29 2002 Pavel Roskin <proski@gnu.org>
-- Use --with-screen instead of --with-ncurses and --with-included-slang.
-
-* Mon Sep 23 2002 Andrew V. Samoilov <sav@bcs.zp.ua>
-- Restore %%config for %%{_prefix}/share/mc/mc.charsets.
-- Restore %%{_prefix}/share/mc/edit.spell.rc.
-
-* Sat Sep 21 2002 Pavel Roskin <proski@gnu.org>
-- Use FHS-compliant paths.
-- Drop %%config from files under /usr/share - users are not supposed to
- edit them. Local copies under ~/.mc should be used for that.
-
-* Wed Aug 21 2002 Pavel Roskin <proski@gnu.org>
-- Change description, update URLs, allow dash in the version.
-
-* Tue Aug 20 2002 Pavel Roskin <proski@gnu.org>
-- Support conditional builds.
-
-* Tue Aug 20 2002 Andrew V. Samoilov <sav@bcs.zp.ua>
-- Add /usr/lib/mc/mc.charsets.
-- Add %%{_mandir}/*/man1/*.
-
-* Fri Aug 16 2002 Pavel Roskin <proski@gnu.org>
-- Remove mc.global.
-
-* Mon Jan 21 2002 Pavel Roskin <proski@gnu.org>
-- Remove --with-gnome and --with-included-slang from configure options.
-- Add BuildPrereq.
-
-* Fri Aug 24 2001 Pavel Roskin <proski@gnu.org>
-- Remove gmc. Reunite mc and mc-common.
-
-* Sun Aug 05 2001 Pavel Roskin <proski@gnu.org>
-- Set epoch.
-
-* Sun Jul 15 2001 Pavel Roskin <proski@gnu.org>
-- Remove /usr/lib/mc/layout.
-
-* Sat Jun 09 2001 Pavel Roskin <proski@gnu.org>
-- Use %%{_prefix} and %%{_mandir}. Specify --mandir to configure.
-
-* Fri May 25 2001 Pavel Roskin <proski@gnu.org>
-- Change groups. Don't include locale directories. More config files.
-
-* Sun May 20 2001 Pavel Roskin <proski@gnu.org>
-- Don't require stylesheets, since HTML files are now in the tarball.
-
-* Thu Apr 19 2001 Pavel Roskin <proski@gnu.org>
-- Remove package mcserv. Drop dependency on PAM.
-
-* Mon Feb 26 2001 Pavel Roskin <proski@gnu.org>
-- Remove mc-gnome.ext.
-
-* Thu Jan 11 2001 Pavel Roskin <proski@gnu.org>
-- Include mcview.
-
-* Mon Oct 23 2000 Pavel Roskin <proski@gnu.org>
-- Allow mcserv.8 to be gzipped.
-
-* Sat Sep 30 2000 Pavel Roskin <proski@gnu.org>
-- New package mc-common.
-- Use DESTDIR instead of misusing prefix.
-- Don't install old icons - they don't exist
-
-* Sat Sep 23 2000 Pavel Roskin <proski@gnu.org>
-- Include translations with mc, not gmc.
-- chkconfig --del in %%preun, not %%postun.
-- --without-debug not needed.
-- /etc/X11/wmconfig not needed.
-- /etc/pam.d/mcserv shouldn't be executable.
-- New files in %%{prefix}/lib/mc/ - translated hints, editor files.
-
-* Thu Sep 09 1999 Elliot Lee <sopwith@redhat.com>
-- Include .idl files in the package.
-
-* Sat Sep 04 1999 Gregory McLean <gregm@comstar.net>
-- Added a build prereq so that rpms get built with documentation ;)
-
-* Mon Jul 12 1999 Kjartan Maraas <kmaraas@online.no>
-- Added help and locale files to %%files.
-
-* Tue Jun 22 1999 Vladimir Kondratiev <vkondra@iil.intel.com>
-- Added syntax files to %%files.
-
-* Wed May 26 1999 Cody Russell <bratsche@dfw.net>
-- Chmod cons.saver at $RPM_BUILD_ROOT%%{prefix}/lib rather than at
- $RPM_BUILD_ROOT/usr/lib. We can now install to somewhere other than /usr.
-
-* Sun Apr 18 1999 Gregory McLean <gregm@comstar.net>
-- Updated the specfile, removed some kludges.
-
-* Thu Aug 20 1998 Michael Fulbright <msf@redhat.com>
-- Rebuilt against gnome-libs 0.27 and gtk+-1.1.
-
-* Thu Jul 09 1998 Michael Fulbright <msf@redhat.com>
-- Made cons.saver not setuid.
-
-* Sun Apr 19 1998 Marc Ewing <marc@redhat.com>
-- Removed tkmc.
-
-* Wed Apr 8 1998 Marc Ewing <marc@redhat.com>
-- Add /usr/lib/mc/layout to gmc.
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/doc/hints/l10n/mc.hint.de_CH
^
|
@@ -1,87 +0,0 @@
-Hint: Use C-x t to copy tagged file names to the command line.
-
-Hint: Use C-x p to copy the current pathname to the command line.
-
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
-
-Hint: Use M-p and M-n to access the command history.
-
-Hint: Need to quote a character? Use Control-q and the character.
-
-Hint: Tired of these messages? Turn them off from the Options/Layout menu.
-
-Hint: Selecting directories: add a slash to the end of the matching pattern.
-
-Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
-
-Hint: Please send any bug reports to mc-devel@gnome.org
-
-Hint: Tab changes your current panel.
-
-Hint: VFS coolness: tap enter on a tar file to examine its contents.
-
-Hint: We also have a nice manual page.
-
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
-
-Hint: % macros work even on the command line.
-
-Hint: M-! will allow you to execute programs and see the output in the viewer.
-
-Hint: The file listing format can be customized; do "man mc" for details.
-
-Hint: %D/%T expands to the tagged files in the opposite directory.
-
-Hint: Want your plain shell? Press C-o, and get back to MC with C-o again.
-
-Hint: Setting the CDPATH variable can save you keystrokes in cd commands.
-
-Hint: If you want to see your .* files, say so in the Configuration dialog.
-
-Hint: Want to see your *~ backup files? Set it in the Configuration dialog.
-
-Hint: Completion works on all input lines in all dialogs. Just press M-Tab.
-
-Hint: On slow terminals the -s flag may help.
-
-Hint: Find File: you can work on the files found using the Panelize button.
-
-Hint: Want to do complex searches? Use the External Panelize command.
-
-Hint: To change directory halfway through typing a command, use M-c (quick cd).
-
-Note: Shell commands will not work when you are on a non-local file system.
-
-Hint: Bring text back from the dead with C-y.
-
-Hint: Are some of your keys not working? Look at Options/Learn keys.
-
-Hint: To look at the output of a command in the viewer, use M-!
-
-Hint: F13 (or Shift-F3) invokes the viewer in raw mode.
-
-Hint: You may specify the editor for F4 with the shell variable EDITOR.
-
-Hint: You may specify the external viewer with the shell vars VIEWER or PAGER.
-
-Hint: You can disable all requests for confirmation in Options/Confirmation.
-
-Hint: Leap to frequently used directories in a single bound with C-\.
-
-Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu'
-
-Hint: FTP is built in the Midnight Commander, check the File/FTP link menu.
-
-Hint: M-t changes quickly the listing mode.
-
-Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu'
-
-Hint: You can browse RPM files by tapping enter on top of an rpm file.
-
-Hint: To mark directories on the select dialog box, append a slash.
-
-Hint: To use the mouse cut and paste may require holding the shift key
-
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/doc/hints/l10n/mc.hint.fr_CA
^
|
@@ -1,87 +0,0 @@
-Hint: Use C-x t to copy tagged file names to the command line.
-
-Hint: Use C-x p to copy the current pathname to the command line.
-
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
-
-Hint: Use M-p and M-n to access the command history.
-
-Hint: Need to quote a character? Use Control-q and the character.
-
-Hint: Tired of these messages? Turn them off from the Options/Layout menu.
-
-Hint: Selecting directories: add a slash to the end of the matching pattern.
-
-Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
-
-Hint: Please send any bug reports to mc-devel@gnome.org
-
-Hint: Tab changes your current panel.
-
-Hint: VFS coolness: tap enter on a tar file to examine its contents.
-
-Hint: We also have a nice manual page.
-
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
-
-Hint: % macros work even on the command line.
-
-Hint: M-! will allow you to execute programs and see the output in the viewer.
-
-Hint: The file listing format can be customized; do "man mc" for details.
-
-Hint: %D/%T expands to the tagged files in the opposite directory.
-
-Hint: Want your plain shell? Press C-o, and get back to MC with C-o again.
-
-Hint: Setting the CDPATH variable can save you keystrokes in cd commands.
-
-Hint: If you want to see your .* files, say so in the Configuration dialog.
-
-Hint: Want to see your *~ backup files? Set it in the Configuration dialog.
-
-Hint: Completion works on all input lines in all dialogs. Just press M-Tab.
-
-Hint: On slow terminals the -s flag may help.
-
-Hint: Find File: you can work on the files found using the Panelize button.
-
-Hint: Want to do complex searches? Use the External Panelize command.
-
-Hint: To change directory halfway through typing a command, use M-c (quick cd).
-
-Note: Shell commands will not work when you are on a non-local file system.
-
-Hint: Bring text back from the dead with C-y.
-
-Hint: Are some of your keys not working? Look at Options/Learn keys.
-
-Hint: To look at the output of a command in the viewer, use M-!
-
-Hint: F13 (or Shift-F3) invokes the viewer in raw mode.
-
-Hint: You may specify the editor for F4 with the shell variable EDITOR.
-
-Hint: You may specify the external viewer with the shell vars VIEWER or PAGER.
-
-Hint: You can disable all requests for confirmation in Options/Confirmation.
-
-Hint: Leap to frequently used directories in a single bound with C-\.
-
-Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu'
-
-Hint: FTP is built in the Midnight Commander, check the File/FTP link menu.
-
-Hint: M-t changes quickly the listing mode.
-
-Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu'
-
-Hint: You can browse RPM files by tapping enter on top of an rpm file.
-
-Hint: To mark directories on the select dialog box, append a slash.
-
-Hint: To use the mouse cut and paste may require holding the shift key
-
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/doc/hints/l10n/mc.hint.it_IT
^
|
@@ -1,87 +0,0 @@
-Dritta: usa C-x t per copiare i file selezionati sulla linea di comando.
-
-Dritta: usa C-x p per copiare il percorso corrente sulla linea di comando.
-
-Dritta: completamento: usa M-Tab (o Esc+Tab). Due volte per la lista.
-
-Dritta: usa M-p e M-n per accedere alla storia dei comandi.
-
-Dritta: devi inserire un carattere speciale? Usa C-q e il carattere.
-
-Dritta: stanco di questi messaggi? Disattivali dal menu Opzioni/Aspetto.
-
-Dritta: selezione directory: inserisci uno slash alla fine della selezione.
-
-Dritta: se al tuo terminale mancano i tasti funzione usa ESC+numero tasto.
-
-Dritta: la home page del Midnight Commander: http://www.midnight-commander.org/
-
-Dritta: prego spedire i bug report a mc-devel@gnome.org
-
-Dritta: tab cambia il pannello corrente.
-
-Dritta: magico VFS; premi invio su un file tar per esaminarne il contenuto.
-
-Dritta: c'è anche un bel manuale.
-
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
-
-Dritta: le macro % funzionano anche sulla linea di comando!
-
-Dritta: M-! permette di eseguire programmi e vedere il risultato nel viewer.
-
-Dritta: il formato della lista file è impostabile; "man mc" per i dettagli.
-
-Dritta: %D/%T espande i file selezionati nella directory opposta.
-
-Dritta: vuoi la tua shell? Premi C-o e torna nuovamente a MC con C-o.
-
-Dritta: impostare la variabile CDPATH può far risparmiare tasti nei comandi cd.
-
-Dritta: se vuoi vedere i tuoi file .* impostalo nella Configurazione.
-
-Dritta: vuoi vedere i tuoi *~ file di backup? Impostalo nella Configurazione.
-
-Dritta: il completamento funziona su tutti gli input. Basta premere M-Tab.
-
-Dritta: con terminali lenti può aiutare la flag -s.
-
-Dritta: trova file: puoi elaborare i file trovati usando il bottone Pannellizza.
-
-Dritta: vuoi fare ricerche complesse? Usa il comando Pannellizza.
-
-Dritta: per cambiare directory mentre batti un comando, usa M-c (cd rapido).
-
-Nota: i comandi di shell non funzionano se non sei in un file system locale.
-
-Dritta: riesuma il testo nell'editor integrato con C-u.
-
-Dritta: non ti funzionano alcuni tasti? Guarda in Opzioni/Impara tasti.
-
-Dritta: per vedere il risultato di un comando nel visualizzatore, usa M-!
-
-Dritta: F13 (o Shift-F3) invoca il visualizzatore in modo 'raw'.
-
-Dritta: puoi specificare l'editor per F4 con la variabile shell EDITOR.
-
-Dritta: puoi specificare il visualizzatore esterno con la variabile shell PAGER.
-
-Dritta: puoi disabilitare tutte le richieste di conferma in Opzioni/Conferme.
-
-Hint: Leap to frequently used directories in a single bound with C-\.
-
-Dritta: puoi fare FTP anonimo con mc battendo 'cd ftp://macchina.edu'
-
-Dritta: l'FTP è integrato nel Midnight Commander, controlla il menu FTP.
-
-Dritta: M-t cambia velocemente il modo listato.
-
-Dritta: puoi dare il nome utente facendo ftp: 'cd ftp://utente@macchina.edu'
-
-Dritta: puoi navigare attraverso i file RPM battendo invio su di essi.
-
-Dritta: per selezionare directory in Seleziona, aggiungere uno slash in fondo.
-
-Dritta: per usare il taglia incolla del mouse devi tener premuto il tasto shift.
-
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/doc/hints/l10n/mc.hint.sv_SE
^
|
@@ -1,87 +0,0 @@
-Hint: Use C-x t to copy tagged file names to the command line.
-
-Hint: Use C-x p to copy the current pathname to the command line.
-
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
-
-Hint: Use M-p and M-n to access the command history.
-
-Hint: Need to quote a character? Use Control-q and the character.
-
-Hint: Tired of these messages? Turn them off from the Options/Layout menu.
-
-Hint: Selecting directories: add a slash to the end of the matching pattern.
-
-Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
-
-Hint: Please send any bug reports to mc-devel@gnome.org
-
-Hint: Tab changes your current panel.
-
-Hint: VFS coolness: tap enter on a tar file to examine its contents.
-
-Hint: We also have a nice manual page.
-
-Hint: Do you want lynx-style navigation? Set it in the Configuration dialog.
-
-Hint: % macros work even on the command line.
-
-Hint: M-! will allow you to execute programs and see the output in the viewer.
-
-Hint: The file listing format can be customized; do "man mc" for details.
-
-Hint: %D/%T expands to the tagged files in the opposite directory.
-
-Hint: Want your plain shell? Press C-o, and get back to MC with C-o again.
-
-Hint: Setting the CDPATH variable can save you keystrokes in cd commands.
-
-Hint: If you want to see your .* files, say so in the Configuration dialog.
-
-Hint: Want to see your *~ backup files? Set it in the Configuration dialog.
-
-Hint: Completion works on all input lines in all dialogs. Just press M-Tab.
-
-Hint: On slow terminals the -s flag may help.
-
-Hint: Find File: you can work on the files found using the Panelize button.
-
-Hint: Want to do complex searches? Use the External Panelize command.
-
-Hint: To change directory halfway through typing a command, use M-c (quick cd).
-
-Note: Shell commands will not work when you are on a non-local file system.
-
-Hint: Bring text back from the dead with C-y.
-
-Hint: Are some of your keys not working? Look at Options/Learn keys.
-
-Hint: To look at the output of a command in the viewer, use M-!
-
-Hint: F13 (or Shift-F3) invokes the viewer in raw mode.
-
-Hint: You may specify the editor for F4 with the shell variable EDITOR.
-
-Hint: You may specify the external viewer with the shell vars VIEWER or PAGER.
-
-Hint: You can disable all requests for confirmation in Options/Confirmation.
-
-Hint: Leap to frequently used directories in a single bound with C-\.
-
-Hint: You can do anonymous FTP with mc by typing 'cd ftp://machine.edu'
-
-Hint: FTP is built in the Midnight Commander, check the File/FTP link menu.
-
-Hint: M-t changes quickly the listing mode.
-
-Hint: You can specify the username when doing ftps: 'cd ftp://user@machine.edu'
-
-Hint: You can browse RPM files by tapping enter on top of an rpm file.
-
-Hint: To mark directories on the select dialog box, append a slash.
-
-Hint: To use the mouse cut and paste may require holding the shift key
-
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/doc/hints/l10n/mc.hint.zh
^
|
@@ -1,89 +0,0 @@
-提示:使用 C-x t 來複製已選擇的檔案名稱到指令列。
-
-提示:使用 C-x p 來將目前的路徑名稱複製到指令列。
-
-提示:補齊:使用 M-Tab(或 Esc+Tab)。按兩次看整個列表。
-
-提示:使用 M-p 和 M-n 來存取指令使用紀錄。
-
-提示:要使用跳出字元(escape cahracter)?可使用 Control-q 再加上要輸入的字元。
-
-提示:是否對這些訊息厭倦了?可在「選項/配置」選單中關閉它。
-
-提示:選擇目錄:在要找尋的樣式後加入 "/"。
-
-提示:如果你的終端機沒有功能鍵,可以使用 ESC + 數字按鍵。
-
-提示:Midnight Commander URL:http://www.midnight-commander.org/
-
-提示:Midnight Commander 網頁:http://www.midnight-commander.org/
-
-提示:請送出錯誤報告到 mc-devel@gnome.org
-
-提示:Tab 會切換使用中的面板。
-
-提示:VFS 的好處:在 tar 檔案上按 enter 可查看它的內容。
-
-提示:我們有一個不錯的手冊頁。
-
-提示:你是否想使用 lynx 的瀏覽方式?請到設定對話窗中設定。
-
-提示:% 巨集在指令列也可使用。
-
-提示:M-! 可讓你執行指令並在檢視器看到它的輸出。
-
-提示:你可自訂檔案列表的格式;輸入 "man mc" 可獲得更多細節。
-
-提示:%D/%T 會擴展成另一邊面板中已標記的檔案。
-
-提示:想使用平常的命令殼?可按 C-o,再按一次就會返回 MC。
-
-提示:設定 CDPATH 環境變數可以令使用 cd 指令時省卻一點按鍵。
-
-提示:若想看你的 .* 檔案,請到設定對話窗中設定。
-
-提示:想看你的 *~ 備份檔?請到設定對話窗中設定。
-
-提示:補齊可在任何對話窗中的任何輸入欄位中使用。只要按下 M-Tab 就可以了。
-
-提示:在緩慢的終端機裡使用 -s 選項或會有幫助。
-
-提示:搜尋檔案:你可以使用「面板化」選項來處理搜尋到的檔案。
-
-提示:想處理較複雜的檔案搜尋?可使用「外部面板化」指令。
-
-提示:要在輸入指令途早改變目錄,可使用 M-c(快速切換目錄)。
-
-注意:在非本機的檔案系統裡無法使用命令殼指令。
-
-提示:可用 C-y 將已刪除的文字重新顯示出來。
-
-提示:是否有些按鍵無法使用?可看看「選項/認識按鍵」中的按鍵。
-
-提示:要在檢視器裡看到指令的輸出,使用 M-!
-
-提示:F13(或 Shift-F3)會使用原始模式開啟檢視器。
-
-提示:你可以使用環境變數 EDITOR 來指定按下 F4 後開啟的編輯器。
-
-提示:你可以使用環境變數 PAGER 來指定外部的檢視器。
-
-提示:你可以在「選項/確認」裡關閉所有確認的要求。
-
-提示:使用 C-\ 可以即時跳到經常使用的目錄。
-
-提示:你可以在 mc 使用無名氏模式 FTP,方法是輸入 'cd ftp://machine.edu'
-
-提示:FTP 是 Midnight Commander 的內建功能,請檢查「檔案/FTP 連線」選單。
-
-提示:M-t 可快速地切換列表模式。
-
-提示:你可以在使用 ftp 時指定使用者名稱,例如:'cd ftp://user@machine.edu'
-
-提示:你可以在 rpm 檔上按 enter 來瀏覽 rpm 裡的檔案。
-
-提示:在選擇對話盒中選取目錄時,要在後面加一 "/"。
-
-提示:要使用滑鼠剪貼功能需要你按下 shift 鍵
-
-提示:要將常到的網站輸入常用列表裡:鍵入 C-\。
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/m4.include/vfs/mc-vfs-samba.m4
^
|
@@ -1,61 +0,0 @@
-dnl Samba support
-AC_DEFUN([mc_VFS_SMB],
-[
- AC_ARG_ENABLE([vfs-smb],
- AS_HELP_STRING([--enable-vfs-smb], [Support for SMB filesystem @<:@no@:>@]),
- [
- if test "x$enableval" = "xno"; then
- enable_vfs_smb=no
- else
- enable_vfs_smb=yes
- fi
- ],
- [enable_vfs_smb=no])
-
- if test "$enable_vfs" = "yes" -a x"$enable_vfs_smb" != x"no"; then
- enable_vfs_smb="yes"
- mc_VFS_ADDNAME([smb])
- AC_DEFINE([ENABLE_VFS_SMB], [1], [Define to enable VFS over SMB])
- fi
-
- if test "$enable_vfs_smb" = "yes"; then
- AC_CONFIG_SUBDIRS([src/vfs/smbfs/helpers])
-
- AM_CONDITIONAL([ENABLE_VFS_SMB], [test "1" = "1"])
-
- # set configuration directory location
- smbconfigdir="/etc"
- AC_ARG_WITH(smb-configdir,
- [ --with-smb-configdir=DIR Where to put configuration files],
- [ case "$withval" in
- yes|no)
- # Just in case anybody does it
- AC_MSG_WARN([--with-smb-configdir called without argument - will use default])
- ;;
- *)
- smbconfigdir="$withval"
- ;;
- esac])
-
- AC_SUBST(smbconfigdir)
-
- # set codepage directory location
- AC_ARG_WITH(smb-codepagedir,
- [ --with-smb-codepagedir=DIR Where to put codepage files],
- [ case "$withval" in
- yes|no)
- # Just in case anybody does it
- AC_MSG_WARN([--with-smb-codepagedir called without argument - will use default])
- ;;
- *)
- smbcodepagedir="$withval"
- ;;
- esac])
-
- # export variable for child process (configure of samba)
- export SMBCONFIGDIR="$smbconfigdir"
- export SMBCODEPAGEDIR="$smbcodepagedir"
- else
- AM_CONDITIONAL([ENABLE_VFS_SMB], [test "1" = "2"])
- fi
-])
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/README.txt
^
|
@@ -1,29 +0,0 @@
-
-== Pre-requirements ==
-
-=== List of required apps ===
-
-* tx (A transifex client. http://help.transifex.com/features/client/#user-client-08-install)
-* po4a (A tool maintaining translations anywhere. http://alioth.debian.org/projects/po4a/)
-
-
-=== An artifacts configuration ===
-
-Put in the ~/.transifexrc file these lines:
-
-[https://www.transifex.net]
-hostname = https://www.transifex.net
-username = YourTxLogin
-password = YourTxPassword
-token =
-
-== Interact with Transifex via scripts ==
-
-To get all translations from Transifex run:
-
-find ./ -name '*-fromTransifex.*' -exec {} \;
-
-To put source files to Transifex run:
-
-find ./ -name '*-toTransifex.*' -exec {} \;
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/config.d/po/po-ignore.list
^
|
@@ -1 +0,0 @@
-it.po
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/config.d/po/tx.config
^
|
@@ -1,8 +0,0 @@
-[main]
-host = https://www.transifex.com
-
-[mc.mcpot]
-file_filter = <lang>.po
-source_file = mc.pot
-source_lang = en
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/functions
^
|
@@ -1,161 +0,0 @@
-#!/bin/bash
-
-# Midnight Commander - common functions for playing with translations.
-#
-# Copyright (C) 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2013
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-#*** include section (source functions, for example) *******************
-
-#*** file scope functions **********************************************
-# ----------------------------------------------------------------------
-
-## Returns name of working directory.
-##
-## @param sync_file_name file name which will be sync'ed with Transifex
-## @return name of working directory
-
-getSyncDirName() {
- sync_file_name=$1; shift
- echo "${SYNC_TX_CURRENT_DIR}/var.d/${sync_file_name}"
-}
-
-# ----------------------------------------------------------------------
-
-## Returns config file name as full path.
-##
-## @param sync_file_name file name which will be sync'ed with Transifex
-## @param config_file_name config file name
-## @return config file name
-
-getConfigFile() {
- sync_file_name=$1; shift
- config_file_name=$1; shift
-
- echo "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/config.d/${sync_file_name}/${config_file_name}"
-}
-
-# ----------------------------------------------------------------------
-
-
-## Returns name of working directory. Init the directory, if needed.
-##
-## @param sync_file_name file name which will be sync'ed with Transifex
-## @return name of working directory
-
-initSyncDirIfNeeded() {
- sync_file_name=$1; shift
-
- sync_dir_name=$(getSyncDirName "${sync_file_name}")
-
- [ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}/.tx"
- cp \
- "$(getConfigFile ${sync_file_name} 'tx.config')" \
- "${sync_dir_name}/.tx/config"
-
- echo "${sync_dir_name}"
-}
-
-# ----------------------------------------------------------------------
-
-## Convert file from plain text to POT-file format.
-##
-## @param source_file path to plain text file
-## @param destination_file path to po-file
-
-convertFromTextToPo() {
- source_file=$1; shift
- destination_file=$1; shift
-
- po4a-gettextize -f text -m "${source_file}" -p "${destination_file}"
-}
-
-# ----------------------------------------------------------------------
-
-## Send POT-file to Transifex.
-##
-## @param tx_work_dir working directory where placed the POT file and
-## a config-file for tx utility
-
-sendSourceToTransifex() {
- tx_work_dir=$1; shift
-
- tx -r "${tx_work_dir}" push -s
-}
-
-# ----------------------------------------------------------------------
-
-## Reveive translations from Transifex.
-##
-## @param tx_work_dir working directory where placed the POT file and
-## a config-file for tx utility
-
-receiveTranslationsFromTransifex() {
- tx_work_dir=$1; shift
-
- pushd "${tx_work_dir}" >/dev/null
- tx pull --all --force
- popd >/dev/null
-}
-
-# ----------------------------------------------------------------------
-
-## Create po4a.cfg file.
-##
-## @param sync_file_name file name which will be sync'ed with Transifex
-
-createPo4A() {
- sync_file_name=$1; shift
-
- sync_dir_name=$(getSyncDirName "${sync_file_name}")
- [ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}"
-
- pushd $sync_dir_name >/dev/null
- translations=$(ls *.po| sed -e 's/.po//g'| tr '\n' ' ')
- popd >/dev/null
- sed -e 's!@srcdir@!'"${MC_SOURCE_ROOT_DIR}"'!g' \
- -e 's!@translations@!'"${translations}"'!g' \
- "$(getConfigFile ${sync_file_name} 'po4a.cfg')" \
- > "${sync_dir_name}/po4a.cfg"
-}
-
-# ----------------------------------------------------------------------
-
-## Create po4a.cfg file.
-##
-## @param sync_dir_name working directory where placed translations
-## @param sync_file_name file name which will be sync'ed with Transifex
-
-convertFromPoToText() {
- sync_dir_name=$1; shift
- sync_file_name=$1; shift
- pushd "${SYNC_TX_CURRENT_DIR}" >/dev/null
- po4a -k 0 -q \
- -M UTF-8 -L UTF-8 \
- --variable docfile="${sync_file_name}" \
- "${sync_dir_name}/po4a.cfg"
- popd >/dev/null
-}
-
-# ----------------------------------------------------------------------
-#*** main code *********************************************************
-
-SYNC_TX_CURRENT_DIR=${SYNC_TX_CURRENT_DIR:-${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/mc.hint-fromTransifex.sh
^
|
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-# Midnight Commander - fetch doc/hints/mc.hint translations from Transifex
-#
-# Copyright (C) 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2013
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-set -e
-
-MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))}
-
-#*** include section (source functions, for example) *******************
-
-source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions"
-
-#*** file scope functions **********************************************
-
-processHintFiles() {
-
- # Remove extra backslash
- sed -i -e 's/\\-/-/g' ${MC_SOURCE_ROOT_DIR}/doc/hints/l10n/mc.hint.*
-
- # Remove extra line breaks
- for fn in ${MC_SOURCE_ROOT_DIR}/doc/hints/l10n/mc.hint.*; do
- awk '/^$/ { print "\n"; } /./ { printf("%s ", $0); } END { print; }' $fn > $fn.tmp
- sed -e 's/[[:space:]]*$//' < $fn.tmp > $fn
- perl -i -0pe 's/\n+\Z/\n/' $fn
- rm $fn.tmp
- done
-
-}
-
-#*** main code *********************************************************
-
-WORK_DIR=$(initSyncDirIfNeeded "mc.hint")
-
-receiveTranslationsFromTransifex "${WORK_DIR}"
-
-createPo4A "mc.hint"
-
-convertFromPoToText "${WORK_DIR}" "mc.hint"
-
-processHintFiles
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/mc.hint-toTransifex.sh
^
|
@@ -1,43 +0,0 @@
-#!/bin/bash
-
-# Midnight Commander - push doc/hints/mc.hint file to Transifex
-#
-# Copyright (C) 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2013
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-set -e
-
-MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))}
-
-#*** include section (source functions, for example) *******************
-
-source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions"
-
-#*** file scope functions **********************************************
-
-#*** main code *********************************************************
-
-WORK_DIR=$(initSyncDirIfNeeded "mc.hint")
-
-convertFromTextToPo "${MC_SOURCE_ROOT_DIR}/doc/hints/mc.hint" "${WORK_DIR}/mc.doc.pot"
-
-sendSourceToTransifex "${WORK_DIR}"
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/po-fromTransifex.sh
^
|
@@ -1,67 +0,0 @@
-#!/bin/bash
-
-# Midnight Commander - fetch doc/hints/mc.hint translations from Transifex
-#
-# Copyright (C) 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2013
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-set -e
-
-MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))}
-
-#*** include section (source functions, for example) *******************
-
-source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions"
-
-#*** file scope functions **********************************************
-
-stripLocation() {
- work_dir=$1; shift
-
- for i in $(find "${work_dir}" -name '*.po' -print); do
- sed -i '/^#:/d' "${i}"
- done
-}
-
-# ----------------------------------------------------------------------
-
-copyFilesToSourceDir() {
- work_dir=$1; shift
- source_dir=$1; shift
-
- exclude_list_file=$(getConfigFile "po" "po-ignore.list")
-
- for i in $(find "${work_dir}" -name '*.po' -print | sort); do
- [ $(grep -c "^\s*$(basename ${i})" "${exclude_list_file}") -ne 1 ] && {
- cp -f "${i}" "${source_dir}"
- }
- done
-}
-
-#*** main code *********************************************************
-
-WORK_DIR=$(initSyncDirIfNeeded "po")
-
-receiveTranslationsFromTransifex "${WORK_DIR}"
-
-stripLocation "${WORK_DIR}"
-
-copyFilesToSourceDir "${WORK_DIR}" "${MC_SOURCE_ROOT_DIR}/po"
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/sync-transifex/po-toTransifex.sh
^
|
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-# Midnight Commander - push doc/hints/mc.hint file to Transifex
-#
-# Copyright (C) 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2013
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-set -e
-
-MC_SOURCE_ROOT_DIR=${MC_SOURCE_ROOT_DIR:-$(dirname $(dirname $(dirname $(pwd))))}
-
-#*** include section (source functions, for example) *******************
-
-source "${MC_SOURCE_ROOT_DIR}/maint/utils/sync-transifex/functions"
-
-#*** file scope functions **********************************************
-
-copyPotToWorkDir() {
- work_dir=$1; shift
- source_dir=$1; shift
-
- cp -f "${source_dir}/mc.pot" "${work_dir}"
-}
-
-#*** main code *********************************************************
-
-WORK_DIR=$(initSyncDirIfNeeded "po")
-
-copyPotToWorkDir "${WORK_DIR}" "${MC_SOURCE_ROOT_DIR}/po"
-
-sendSourceToTransifex "${WORK_DIR}"
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/maint/utils/version.sh
^
|
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-# Midnight Commander - calculate current version
-#
-# Copyright (C) 2009, 2010, 2013
-# The Free Software Foundation, Inc.
-#
-# Written by:
-# Slava Zanko <slavazanko@gmail.com>, 2009, 2010, 2013
-# Stan. S. Krupoderov <pashelper@gmail.com>, 2009
-# Sergei Trofimovich <slyfox@inbox.ru>, 2009
-# Oswald Buddenhagen <ossi@kde.org>, 2009
-#
-# This file is part of the Midnight Commander.
-#
-# The Midnight Commander is free software: you can redistribute it
-# and/or modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
-#
-# The Midnight Commander is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-#*** include section (source functions, for example) *******************
-
-#*** file scope functions **********************************************
-
-mc_print_version(){
-
- if [ ! -f "${VERSION_FILE}" \
- -o "${PREV_MC_VERSION}" != "${CURR_MC_VERSION}" ]
- then
- cat >"${VERSION_FILE}" <<EOF
-#ifndef MC_CURRENT_VERSION
-/* This is an autogenerated file. Don't edit! */
-#define MC_CURRENT_VERSION "${CURR_MC_VERSION}"
-#endif
-EOF
- fi
- exit
-}
-
-#*** main code *********************************************************
-
-if [ -z "$1" ]
- then
- echo "usage: $0 <toplevel-source-dir>"
- exit 1
-fi
-
-src_top_dir="$1"
-
-VERSION_FILE="${src_top_dir}/version.h"
-PREV_MC_VERSION="unknown"
-CURR_MC_VERSION="${PREV_MC_VERSION}"
-
-if [ -r "${VERSION_FILE}" ]
- then
- PREV_MC_VERSION=`sed -n 's/^#define MC_CURRENT_VERSION "\(.*\)"$/\1/p' "${VERSION_FILE}"`
- CURR_MC_VERSION="${PREV_MC_VERSION}"
-fi
-
-git_head=`git --git-dir "${src_top_dir}/.git" rev-parse --verify HEAD 2>/dev/null`
-[ -z "${git_head}" ] && mc_print_version
-
-# try to store sha1
-CURR_MC_VERSION="${git_head}"
-
-new_version=`git --git-dir "${src_top_dir}/.git" describe --always 2>/dev/null`
-[ -z "${new_version}" ] && mc_print_version
-
-# store pretty tagged version
-CURR_MC_VERSION="${new_version}"
-mc_print_version
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/misc/mc.ext.in
^
|
@@ -1,845 +0,0 @@
-# Midnight Commander 3.0 extension file
-# Warning: Structure of this file has changed completely with version 3.0
-#
-# All lines starting with # or empty lines are thrown away.
-# Lines starting in the first column should have following format:
-#
-# keyword/descNL, i.e. everything after keyword/ until new line is desc
-#
-# keyword can be:
-#
-# shell (desc is, when starting with a dot, any extension (no wildcars),
-# i.e. matches all the files *desc . Example: .tar matches *.tar;
-# if it doesn't start with a dot, it matches only a file of that name)
-#
-# shell/i (desc is, when starting with a dot, any extension (no wildcars),
-# The same as shell but with case insensitive.
-#
-# regex (desc is an extended regular expression)
-# Please note that we are using the GNU regex library and thus
-# \| matches the literal | and | has special meaning (or) and
-# () have special meaning and \( \) stand for literal ( ).
-#
-# regex/i (desc is an extended regular expression)
-# The same as regex but with case insensitive.
-#
-# type (file matches this if `file %f` matches regular expression desc
-# (the filename: part from `file %f` is removed))
-#
-# type/i (file matches this if `file %f` matches regular expression desc)
-# The same as type but with case insensitive.
-#
-# directory (matches any directory matching regular expression desc)
-#
-# include (matches an include directive)
-#
-# default (matches any file no matter what desc is)
-#
-# Other lines should start with a space or tab and should be in the format:
-#
-# keyword=commandNL (with no spaces around =), where keyword should be:
-#
-# Open (if the user presses Enter or doubleclicks it),
-#
-# View (F3), Edit (F4)
-#
-# Include is the keyword used to add any further entries from an include/
-# section
-#
-# command is any one-line shell command, with the following substitutions:
-#
-# %% -> % character
-# %p -> name of the current file (without path, but pwd is its path).
-# Also provided to external application as MC_EXT_BASENAME
-# global variable
-# %f -> name of the current file. Unlike %p, if file is located on a
-# non-local virtual filesystem, i.e. either tarfs or ftpfs,
-# then the file will be temporarily copied into a local directory
-# and %f will be the full path to this local temporal file.
-# If you don't want to get a local copy and want to get the
-# virtual fs path (like /#ftp:ftp.cvut.cz/pub/hungry/xword), then
-# use %d/%p instead of %f.
-# Also provided to external application as MC_EXT_FILENAME
-# global variable
-# %d -> name of the current directory (pwd, without trailing slash)
-# Also provided to external application as MC_EXT_CURRENTDIR
-# global variable
-# %s -> "selected files", i.e. space separated list of tagged files if any
-# or name of the current file.
-# Also provided to external application as MC_EXT_SELECTED
-# global variable
-# %t -> list of tagged files
-# Also provided to external application as MC_EXT_ONLYTAGGED
-# global variable
-# %u -> list of tagged files (they'll be untaged after the command)
-#
-# (If these 6 letters are in uppercase, they refer to the other panel.
-# But you shouldn't have to use it in this file.)
-#
-#
-# %cd -> the rest is a path mc should change into (cd won't work, since it's
-# a child process). %cd handles even vfs names.
-#
-# %view -> the command you type will be piped into mc's internal file viewer
-# if you type only the %view and no command, viewer will load %f file
-# instead (i.e. no piping, so it is different to %view cat %f)
-# %view may be directly followed by {} with a list of any of
-# ascii (Ascii mode), hex (Hex mode), nroff (color highlighting for
-# text using backspace for bold and underscore) and unform
-# (no highlighting for nroff sequences) separated by commas.
-#
-# %var -> You use it like this: %var{VAR:default}. This macro will expand
-# to the value of the VAR variable in the environment if it's set
-# otherwise the value in default will be used. This is similar to
-# the Bourne shell ${VAR-default} construct.
-#
-# Rules are applied from top to bottom, thus the order is important.
-# If some actions are missing, search continues as if this target didn't
-# match (i.e. if a file matches the first and second entry and View action
-# is missing in the first one, then on pressing F3 the View action from
-# the second entry will be used. default should catch all the actions.
-#
-# Any new entries you develop for you are always welcome if they are
-# useful on more than one system. You can post your modifications
-# as tickets at www.midnight-commander.org
-
-
-### Changes ###
-#
-# Reorganization: 2012-03-07 Slava Zanko <slavazanko@gmail.com>
-
-
-### GIT Repo ###
-# gitfs changeset
-regex/^\[git\]
- Open=%cd %p/changesetfs://
- View=%cd %p/patchsetfs://
-
-
-### Archives ###
-
-# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z, .ipk, .gem
-regex/\.t([gp]?z|ar\.g?[zZ])$|\.ipk$|\.gem$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.gz
-
-shell/.tar.bz
- # Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip
-
-regex/\.t(ar\.bz2|bz2?|b2)$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip2
-
-# .tar.lzma, .tlz
-regex/\.t(ar\.lzma|lz)$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzma
-
-# .tar.lz
-shell/.tar.lz
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz
-
-# .tar.lz4, .tlz4
-regex/\.t(ar\.lz4|lz4)$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4
-
-# .tar.xz, .txz
-regex/\.t(ar\.xz|xz)$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.xz
-
-# .tar.zst, .tzst
-regex/\.t(ar\.zst|zst)$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.zst
-
-# .tar.F - used in QNX
-shell/.tar.F
- # Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.F
-
-# .qpr/.qpk - QNX Neutrino package installer files
-regex/\.qp[rk]$
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.qpr
-
-# tar
-shell/i/.tar
- Open=%cd %p/utar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar
-
-# lha
-type/^LHa\ .*archive
- Open=%cd %p/ulha://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha
-
-# PAK
-type/^PAK\ .*archive
- Open=%cd %p/unar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak
-
-# arj
-regex/i/\.a(rj|[0-9][0-9])$
- Open=%cd %p/uarj://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arj
-
-# cab
-shell/i/.cab
- Open=%cd %p/ucab://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cab
-
-# ha
-shell/i/.ha
- Open=%cd %p/uha://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha
-
-# rar
-regex/i/\.r(ar|[0-9][0-9])$
- Open=%cd %p/urar://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar
-
-# ALZip
-shell/i/.alz
- Open=%cd %p/ualz://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view alz
-
-# cpio
-shell/.cpio.Z
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.z
-
-shell/.cpio.lz
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz
-
-shell/.cpio.lz4
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4
-
-shell/.cpio.xz
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.xz
-
-shell/.cpio.zst
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.zst
-
-shell/.cpio.gz
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.gz
-
-shell/i/.cpio
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio
-
-# initrd
-regex/^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$
- Open=%cd %p/ucpio://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio
-
-# 7zip archives (they are not man pages)
-shell/i/.7z
- Open=%cd %p/u7z://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view 7z
-
-# patch
-regex/\.(diff|patch)(\.bz2)$
- Open=%cd %p/patchfs://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
-
-regex/\.(diff|patch)(\.(gz|Z))$
- Open=%cd %p/patchfs://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
-
-regex/\.(diff|patch)(\.xz)$
- Open=%cd %p/patchfs://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
-
-regex/\.(diff|patch)(\.zst)$
- Open=%cd %p/patchfs://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
-
-# ls-lR
-regex/(^|\.)ls-?lR(\.gz|Z|bz2)$
- Open=%cd %p/lslR://
-
-# trpm
-shell/.trpm
- Open=%cd %p/trpm://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view trpm
-
-# RPM packages (SuSE uses *.spm for source packages)
-regex/\.(src\.rpm|spm)$
- Open=%cd %p/rpm://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view src.rpm
-
-shell/.rpm
- Open=%cd %p/rpm://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view rpm
-
-# deb
-regex/\.u?deb$
- Open=%cd %p/deb://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view deb
-
-# dpkg
-shell/.debd
- Open=%cd %p/debd://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view debd
-
-# apt
-shell/.deba
- Open=%cd %p/deba://
- View=%view{ascii} @EXTHELPERSDIR@/package.sh view deba
-
-# ISO9660
-shell/i/.iso
- Open=%cd %p/iso9660://
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view iso9660
-
-
-regex/\.(diff|patch)$
- Open=%cd %p/patchfs://
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view cat
-
-# ar library
-regex/\.s?a$
- Open=%cd %p/uar://
- #Open=%view{ascii} ar tv %f
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view ar
-
-# gplib
-shell/i/.lib
- Open=%cd %p/ulib://
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lib
-
-
-# Mailboxes
-type/^ASCII\ mail\ text
- Open=%cd %p/mailfs://
-
-
-### Sources ###
-
-# C/C++
-regex/i/\.(c|cc|cpp)$
- Include=editor
-
-# C/C++ header
-regex/i/\.(h|hh|hpp)$
- Include=editor
-
-# Fortran
-shell/i/.f
- Include=editor
-
-# Assembler
-regex/i/\.(s|asm)$
- Include=editor
-
-# .so libraries
-regex/\.(so|so\.[0-9\.]*)$
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view so
-
-# Object
-type/^ELF
- #Open=%var{PAGER:more} %f
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view elf
-
-
-### Documentation ###
-
-# Texinfo
-#regex/\.(te?xi|texinfo)$
-
-# GNU Info page
-type/^Info\ text
- Open=@EXTHELPERSDIR@/text.sh open info
-
-shell/.info
- Open=@EXTHELPERSDIR@/text.sh open info
-
-# Exception: .3gp are video files not manual pages
-shell/i/.3gp
- Include=video
-
-# Troff with me macros.
-# Exception - "read.me" is not a nroff file.
-shell/read.me
- Open=
- View=
-
-shell/.me
- Open=@EXTHELPERSDIR@/text.sh open nroff.me %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.me %var{PAGER:more}
-
-# Troff with ms macros.
-shell/.ms
- Open=@EXTHELPERSDIR@/text.sh open nroff.ms %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.ms %var{PAGER:more}
-
-# Manual page - compressed
-type/^(ASCII )?troff.*gzip compressed
- Open=@EXTHELPERSDIR@/text.sh open man.gz %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.gz %var{PAGER:more}
-
-type/^(ASCII )?troff.*bzip compressed
- Open=@EXTHELPERSDIR@/text.sh open man.bz %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz %var{PAGER:more}
-
-type/^(ASCII )?troff.*bzip2 compressed
- Open=@EXTHELPERSDIR@/text.sh open man.bz2 %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz2 %var{PAGER:more}
-
-# Manual page
-type/^(ASCII )?troff
- Open=@EXTHELPERSDIR@/text.sh open man %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man %var{PAGER:more}
-
-# Perl pod page
-shell/.pod
- Open=@EXTHELPERSDIR@/text.sh open pod %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view pod %var{PAGER:more}
-
-regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$
- Open=@EXTHELPERSDIR@/text.sh open man.lz %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz %var{PAGER:more}
-
-regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$
- Open=@EXTHELPERSDIR@/text.sh open man.lz4 %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz4 %var{PAGER:more}
-
-regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$
- Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more}
-
-regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$
- Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.xz %var{PAGER:more}
-
-regex/([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$
- Open=@EXTHELPERSDIR@/text.sh open man.zst %var{PAGER:more}
- View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.zst %var{PAGER:more}
-
-# CHM
-shell/i/.chm
- Open=@EXTHELPERSDIR@/text.sh open chm
-
-
-### Images ###
-
-type/^GIF
- Include=image
-
-type/^JPEG
- View=%view{ascii} @EXTHELPERSDIR@/image.sh view jpeg
- Include=image
-
-type/^PC\ bitmap
- Include=image
-
-type/^PNG
- Include=image
-
-type/^JNG
- Include=image
-
-type/^MNG
- Include=image
-
-type/^TIFF
- Include=image
-
-type/^PBM
- Include=image
-
-type/^PGM
- Include=image
-
-type/^PPM
- Include=image
-
-type/^Netpbm
- Include=image
-
-shell/.xcf
- Open=@EXTHELPERSDIR@/image.sh open xcf
-
-shell/.xbm
- Open=@EXTHELPERSDIR@/image.sh open xbm
-
-shell/.xpm
- Include=image
- View=@EXTHELPERSDIR@/image.sh view xpm %f
-
-shell/.ico
- Include=image
-
-shell/i/.svg
- View=%view{ascii} @EXTHELPERSDIR@/image.sh view svg
- Open=@EXTHELPERSDIR@/image.sh open svg
-
-
-### Sound files ###
-
-regex/i/\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv)$
- Open=@EXTHELPERSDIR@/sound.sh open common
-
-regex/i/\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$
- Open=@EXTHELPERSDIR@/sound.sh open mod
-
-shell/i/.waw22
- Open=@EXTHELPERSDIR@/sound.sh open wav22
-
-shell/i/.mp3
- Open=@EXTHELPERSDIR@/sound.sh open mp3
- View=%view{ascii} @EXTHELPERSDIR@/sound.sh view mp3
-
-regex/i/\.og[gax]$
- Open=@EXTHELPERSDIR@/sound.sh open ogg
- View=%view{ascii} @EXTHELPERSDIR@/sound.sh view ogg
-
-shell/i/.opus
- Open=@EXTHELPERSDIR@/sound.sh open opus
- View=%view{ascii} @EXTHELPERSDIR@/sound.sh view opus
-
-regex/i/\.(spx|flac)$
- Open=@EXTHELPERSDIR@/sound.sh open common
-
-regex/i/\.(midi?|rmid?)$
- Open=@EXTHELPERSDIR@/sound.sh open midi
-
-shell/i/.wma
- Open=@EXTHELPERSDIR@/sound.sh open wma
- View=%view{ascii} @EXTHELPERSDIR@/sound.sh view wma
-
-
-### Play lists ###
-
-regex/i/\.(m3u|pls)$
- Open=@EXTHELPERSDIR@/sound.sh open playlist
-
-
-### Video ###
-
-shell/i/.avi
- Include=video
-
-regex/i/\.as[fx]$
- Include=video
-
-shell/i/.divx
- Include=video
-
-shell/i/.mkv
- Include=video
-
-regex/i/\.(mov|qt)$
- Include=video
-
-regex/i/\.(mp4|m4v|mpe?g)$
- Include=video
-
-# MPEG-2 TS container + H.264 codec
-shell/i/.mts
- Include=video
-
-shell/i/.ts
- Include=video
-
-shell/i/.vob
- Include=video
-
-shell/i/.wmv
- Include=video
-
-regex/i/\.fl[icv]$
- Include=video
-
-shell/i/.ogv
- Include=video
-
-regex/i/\.ra?m$
- Open=@EXTHELPERSDIR@/video.sh open ram
-
-# WebM
-shell/i/.webm
- Include=video
-
-type/WebM
- Include=video
-
-
-### Documents ###
-
-# Postscript
-type/^PostScript
- Open=@EXTHELPERSDIR@/doc.sh open ps
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ps
-
-# PDF
-type/^PDF
- Open=@EXTHELPERSDIR@/doc.sh open pdf
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view pdf
-
-# html
-regex/i/\.html?$
- Open=@EXTHELPERSDIR@/web.sh open html
- View=%view{ascii} @EXTHELPERSDIR@/web.sh view html
-
-# StarOffice 5.2
-shell/.sdw
- Open=@EXTHELPERSDIR@/doc.sh open ooffice
-
-# StarOffice 6 and OpenOffice.org formats
-regex/i/\.(odt|fodt|ott|sxw|stw|ods|fods|ots|sxc|stc|odp|fodp|otp|sxi|sti|odg|fodg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
- Open=@EXTHELPERSDIR@/doc.sh open ooffice
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view odt
-
-# AbiWord
-shell/.abw
- Open=@EXTHELPERSDIR@/doc.sh open abw
-
-# Gnumeric
-shell/i/.gnumeric
- Open=@EXTHELPERSDIR@/doc.sh open gnumeric
-
-# Microsoft Word Document
-regex/i/\.(do[ct]|wri|docx)$
- Open=@EXTHELPERSDIR@/doc.sh open msdoc
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
-type/^Microsoft\ Word
- Open=@EXTHELPERSDIR@/doc.sh open msdoc
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
-
-# RTF document
-shell/i/.rtf
- Open=@EXTHELPERSDIR@/doc.sh open msdoc
-
-# Microsoft Excel Worksheet
-regex/i/\.(xl[sw]|xlsx)$
- Open=@EXTHELPERSDIR@/doc.sh open msxls
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
-type/^Microsoft\ Excel
- Open=@EXTHELPERSDIR@/doc.sh open msxls
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
-
-# Microsoft PowerPoint Presentation
-regex/i/\.(pp[ts]|pptx)$
- Open=@EXTHELPERSDIR@/doc.sh open msppt
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msppt
-
-# Use OpenOffice.org/LibreOffice to open any MS Office documents
-type/^Microsoft\ Office\ Document
- Open=@EXTHELPERSDIR@/doc.sh open ooffice
-type/^Microsoft\ OOXML
- Open=@EXTHELPERSDIR@/doc.sh open ooffice
-
-# Framemaker
-type/^FrameMaker
- Open=@EXTHELPERSDIR@/doc.sh open framemaker
-
-# DVI
-shell/i/.dvi
- Open=@EXTHELPERSDIR@/doc.sh open dvi
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view dvi
-
-# TeX
-shell/i/.tex
- Include=editor
-
-# Markdown
-shell/i/.md
- Include=editor
-
-# DjVu
-regex/i/\.djvu?$
- Open=@EXTHELPERSDIR@/doc.sh open djvu
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view djvu
-
-# Comic Books
-regex/i/\.cb[zr]$
- Open=@EXTHELPERSDIR@/doc.sh open comic
-
-# Epub & mobi
-regex/i/\.(epub|mobi)$
- Open=@EXTHELPERSDIR@/doc.sh open epub
- View=%view{ascii} @EXTHELPERSDIR@/doc.sh view epub
-
-
-### Miscellaneous ###
-
-# Compiled Java classes
-shell/.class
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view javaclass
-
-# Imakefile
-shell/Imakefile
- Open=xmkmf -a
-
-# Makefile.PL (MakeMaker)
-regex/^Makefile\.(PL|pl)$
- Open=%var{PERL:perl} %f
-
-# Makefile
-regex/[Mm]akefile
- Open=make -f %f %{Enter parameters}
-
-# sqlite3.db
-type/^SQLite 3.x database
- Open=@EXTHELPERSDIR@/misc.sh open sqlite
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view sqlite
-
-# dbf
-shell/i/.dbf
- Open=@EXTHELPERSDIR@/misc.sh open dbf
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view dbf
-
-# REXX script
-regex/\.(rexx?|cmd)$
- Open=rexx %f %{Enter parameters};echo "Press ENTER";read y
-
-# Disk images for Commodore computers (VIC20, C64, C128)
-shell/i/.d64
- Open=%cd %p/uc1541://
- View=%view{ascii} c1541 %f -list
- Extract=c1541 %f -extract
-
-# Glade, a user interface designer for GTK+ and GNOME
-shell/i/.glade
- Open=@EXTHELPERSDIR@/misc.sh open glade
-
-# Gettext Catalogs
-regex/\.g?mo$
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view mo
-
-# po
-shell/.po
- Open=@EXTHELPERSDIR@/misc.sh open po
-
-# lyx
-shell/i/.lyx
- Open=@EXTHELPERSDIR@/misc.sh open lyx
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lyx
-
-# torrent
-shell/i/.torrent
- View=%view{ascii} @EXTHELPERSDIR@/misc.sh view torrent
-
-
-### Plain compressed files ###
-
-# ace
-shell/i/.ace
- Open=%cd %p/uace://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace
- Extract=unace x %f
-
-# arc
-shell/i/.arc
- Open=%cd %p/uarc://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arc
- Extract=arc x %f '*'
- Extract (with flags)=I=%{Enter any Arc flags:}; if test -n "$I"; then arc x $I %f; fi
-
-# zip
-shell/i/.zip
- Open=%cd %p/uzip://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
-
-# zip
-type/i/^zip\ archive
- Open=%cd %p/uzip://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
-
-# jar(zip)
-type/i/^Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\)
- Open=%cd %p/uzip://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
-
-# zoo
-shell/i/.zoo
- Open=%cd %p/uzoo://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zoo
-
-# gzip
-type/\(gzip compressed
- Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
-
-# bzip2
-type/\(bzip2 compressed
- Open=@EXTHELPERSDIR@/archive.sh view bzip2 %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
-
-# bzip
-type/\(bzip compressed
- Open=@EXTHELPERSDIR@/archive.sh view bzip %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bzip
-
-# compress
-type/\(compress'd
- Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
-
-# lz
-type/\(lzip compressed
- Open=@EXTHELPERSDIR@/archive.sh view lz %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz
-
-# lz4
-regex/\.lz4$
- Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4
-
-# lzma
-type/\(LZMA compressed
- Open=@EXTHELPERSDIR@/archive.sh view lzma %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzma
-
-# xz
-type/\(XZ compressed
- Open=@EXTHELPERSDIR@/archive.sh view xz %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
-
-# zstd
-type/\(Zstandard compressed
- Open=@EXTHELPERSDIR@/archive.sh view zst %var{PAGER:more}
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
-
-# Parity Archive
-type/^Parity\ Archive\ Volume\ Set
- Open=@EXTHELPERSDIR@/archive.sh open par2
-
-# WIM
-shell/i/\.wim
- Open=%cd %p/uwim://
- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view wim
-
-### Includes
-# includes should be at end of bindings
-
-include/editor
- Open=%var{EDITOR:vi} %f
-
-include/image
- Open=@EXTHELPERSDIR@/image.sh open ALL_FORMATS
- View=%view{ascii} @EXTHELPERSDIR@/image.sh view ALL_FORMATS
-
-include/video
- Open=@EXTHELPERSDIR@/video.sh open ALL_FORMATS
- View=%view{ascii} @EXTHELPERSDIR@/video.sh view ALL_FORMATS
-
-
-### Default ###
-
-# Default target for anything not described above
-default/*
- Open=
- View=
-
-
-### EOF ###
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/editor/choosesyntax.c
^
|
@@ -1,148 +0,0 @@
-/*
- User interface for syntax selection.
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Copyright (C) 2005, 2006
- Leonard den Ottolander <leonard den ottolander nl>
-
- Written by:
- Leonard den Ottolander <leonard den ottolander nl>, 2005, 2006
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \file
- * \brief Source: user %interface for syntax %selection
- * \author Leonard den Ottolander
- * \date 2005, 2006
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <string.h> /* strcmp() */
-
-#include "lib/global.h"
-#include "lib/widget.h" /* Listbox */
-
-#include "edit-impl.h"
-#include "editwidget.h"
-
-/*** global variables ****************************************************************************/
-
-/*** file scope macro definitions ****************************************************************/
-
-#define MAX_ENTRY_LEN 40
-#define LIST_LINES 14
-#define N_DFLT_ENTRIES 2
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-pstrcmp (const void *p1, const void *p2)
-{
- return strcmp (*(char *const *) p1, *(char *const *) p2);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-exec_edit_syntax_dialog (const GPtrArray * names, const char *current_syntax)
-{
- size_t i;
- Listbox *syntaxlist;
-
- syntaxlist = create_listbox_window (LIST_LINES, MAX_ENTRY_LEN,
- _("Choose syntax highlighting"), NULL);
- LISTBOX_APPEND_TEXT (syntaxlist, 'A', _("< Auto >"), NULL, FALSE);
- LISTBOX_APPEND_TEXT (syntaxlist, 'R', _("< Reload Current Syntax >"), NULL, FALSE);
-
- for (i = 0; i < names->len; i++)
- {
- const char *name;
-
- name = g_ptr_array_index (names, i);
- LISTBOX_APPEND_TEXT (syntaxlist, 0, name, NULL, FALSE);
- if (current_syntax != NULL && strcmp (name, current_syntax) == 0)
- listbox_select_entry (syntaxlist->list, i + N_DFLT_ENTRIES);
- }
-
- return run_listbox (syntaxlist);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-void
-edit_syntax_dialog (WEdit * edit)
-{
- GPtrArray *names;
- int syntax;
-
- names = g_ptr_array_new ();
-
- /* We fill the list of syntax files every time the editor is invoked.
- Instead we could save the list to a file and update it once the syntax
- file gets updated (either by testing or by explicit user command). */
- edit_load_syntax (NULL, names, NULL);
- g_ptr_array_sort (names, pstrcmp);
-
- syntax = exec_edit_syntax_dialog (names, edit->syntax_type);
- if (syntax >= 0)
- {
- gboolean force_reload = FALSE;
- char *current_syntax;
- gboolean old_auto_syntax;
-
- current_syntax = g_strdup (edit->syntax_type);
- old_auto_syntax = option_auto_syntax;
-
- switch (syntax)
- {
- case 0: /* auto syntax */
- option_auto_syntax = TRUE;
- break;
- case 1: /* reload current syntax */
- force_reload = TRUE;
- break;
- default:
- option_auto_syntax = FALSE;
- g_free (edit->syntax_type);
- edit->syntax_type = g_strdup (g_ptr_array_index (names, syntax - N_DFLT_ENTRIES));
- }
-
- /* Load or unload syntax rules if the option has changed */
- if (force_reload || (option_auto_syntax && !old_auto_syntax) || old_auto_syntax ||
- (current_syntax != NULL && edit->syntax_type != NULL &&
- strcmp (current_syntax, edit->syntax_type) != 0))
- edit_load_syntax (edit, NULL, edit->syntax_type);
-
- g_free (current_syntax);
- }
-
- g_ptr_array_foreach (names, (GFunc) g_free, NULL);
- g_ptr_array_free (names, TRUE);
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/editor/editcmd_dialogs.c
^
|
@@ -1,512 +0,0 @@
-/*
- Editor dialogs for high level editing commands
-
- Copyright (C) 2009-2020
- Free Software Foundation, Inc.
-
- Written by:
- Slava Zanko <slavazanko@gmail.com>, 2009
- Andrew Borodin, <aborodin@vmail.ru>, 2012, 2013
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-
-#include "lib/global.h"
-#include "lib/tty/tty.h"
-#include "lib/skin.h" /* INPUT_COLOR */
-#include "lib/tty/key.h"
-#include "lib/search.h"
-#include "lib/strutil.h"
-#include "lib/widget.h"
-#ifdef HAVE_CHARSET
-#include "lib/charsets.h"
-#endif
-
-#include "src/history.h"
-
-#include "src/editor/editwidget.h"
-#include "src/editor/etags.h"
-#include "src/editor/editcmd_dialogs.h"
-
-#ifdef HAVE_ASPELL
-#include "src/editor/spell.h"
-#endif
-
-/*** global variables ****************************************************************************/
-
-edit_search_options_t edit_search_options = {
- .type = MC_SEARCH_T_NORMAL,
- .case_sens = FALSE,
- .backwards = FALSE,
- .only_in_selection = FALSE,
- .whole_words = FALSE,
- .all_codepages = FALSE
-};
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-static cb_ret_t
-editcmd_dialog_raw_key_query_cb (Widget * w, Widget * sender, widget_msg_t msg, int parm,
- void *data)
-{
- WDialog *h = DIALOG (w);
-
- switch (msg)
- {
- case MSG_KEY:
- h->ret_value = parm;
- dlg_stop (h);
- return MSG_HANDLED;
- default:
- return dlg_default_callback (w, sender, msg, parm, data);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-gboolean
-editcmd_dialog_search_show (WEdit * edit)
-{
- char *search_text;
- size_t num_of_types = 0;
- gchar **list_of_types;
- int dialog_result;
-
- list_of_types = mc_search_get_types_strings_array (&num_of_types);
-
- {
- quick_widget_t quick_widgets[] = {
- /* *INDENT-OFF* */
- QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, INPUT_LAST_TEXT,
- MC_HISTORY_SHARED_SEARCH, &search_text, NULL, FALSE, FALSE,
- INPUT_COMPLETE_NONE),
- QUICK_SEPARATOR (TRUE),
- QUICK_START_COLUMNS,
- QUICK_RADIO (num_of_types, (const char **) list_of_types,
- (int *) &edit_search_options.type, NULL),
- QUICK_NEXT_COLUMN,
- QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL),
- QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL),
- QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL),
- QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL),
-#ifdef HAVE_CHARSET
- QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL),
-#endif
- QUICK_STOP_COLUMNS,
- QUICK_START_BUTTONS (TRUE, TRUE),
- QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL),
- QUICK_BUTTON (N_("&Find all"), B_USER, NULL, NULL),
- QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL),
- QUICK_END
- /* *INDENT-ON* */
- };
-
- quick_dialog_t qdlg = {
- -1, -1, 58,
- N_("Search"), "[Input Line Keys]",
- quick_widgets, NULL, NULL
- };
-
- dialog_result = quick_dialog (&qdlg);
- }
-
- g_strfreev (list_of_types);
-
- if ((dialog_result == B_CANCEL) || (search_text == NULL) || (search_text[0] == '\0'))
- {
- g_free (search_text);
- return FALSE;
- }
-
- if (dialog_result == B_USER)
- search_create_bookmark = TRUE;
-
-#ifdef HAVE_CHARSET
- {
- GString *tmp;
-
- tmp = str_convert_to_input (search_text);
- g_free (search_text);
- search_text = g_string_free (tmp, FALSE);
- }
-#endif
-
- g_free (edit->last_search_string);
- edit->last_search_string = search_text;
- mc_search_free (edit->search);
-
-#ifdef HAVE_CHARSET
- edit->search = mc_search_new (edit->last_search_string, cp_source);
-#else
- edit->search = mc_search_new (edit->last_search_string, NULL);
-#endif
- if (edit->search != NULL)
- {
- edit->search->search_type = edit_search_options.type;
-#ifdef HAVE_CHARSET
- edit->search->is_all_charsets = edit_search_options.all_codepages;
-#endif
- edit->search->is_case_sensitive = edit_search_options.case_sens;
- edit->search->whole_words = edit_search_options.whole_words;
- edit->search->search_fn = edit_search_cmd_callback;
- edit->search->update_fn = edit_search_update_callback;
- }
-
- return (edit->search != NULL);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-editcmd_dialog_replace_show (WEdit * edit, const char *search_default, const char *replace_default,
- /*@out@ */ char **search_text, /*@out@ */ char **replace_text)
-{
- size_t num_of_types = 0;
- gchar **list_of_types;
-
- if ((search_default == NULL) || (*search_default == '\0'))
- search_default = INPUT_LAST_TEXT;
-
- list_of_types = mc_search_get_types_strings_array (&num_of_types);
-
- {
- quick_widget_t quick_widgets[] = {
- /* *INDENT-OFF* */
- QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, search_default,
- MC_HISTORY_SHARED_SEARCH, search_text, NULL, FALSE, FALSE,
- INPUT_COMPLETE_NONE),
- QUICK_LABELED_INPUT (N_("Enter replacement string:"), input_label_above, replace_default,
- "replace", replace_text, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE),
- QUICK_SEPARATOR (TRUE),
- QUICK_START_COLUMNS,
- QUICK_RADIO (num_of_types, (const char **) list_of_types,
- (int *) &edit_search_options.type, NULL),
- QUICK_NEXT_COLUMN,
- QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL),
- QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL),
- QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL),
- QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL),
-#ifdef HAVE_CHARSET
- QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL),
-#endif
- QUICK_STOP_COLUMNS,
- QUICK_BUTTONS_OK_CANCEL,
- QUICK_END
- /* *INDENT-ON* */
- };
-
- quick_dialog_t qdlg = {
- -1, -1, 58,
- N_("Replace"), "[Input Line Keys]",
- quick_widgets, NULL, NULL
- };
-
- if (quick_dialog (&qdlg) != B_CANCEL)
- edit->replace_mode = 0;
- else
- {
- *replace_text = NULL;
- *search_text = NULL;
- }
- }
-
- g_strfreev (list_of_types);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-int
-editcmd_dialog_replace_prompt_show (WEdit * edit, char *from_text, char *to_text, int xpos,
- int ypos)
-{
- Widget *w = WIDGET (edit);
-
- /* dialog size */
- int dlg_height = 10;
- int dlg_width;
-
- char tmp[BUF_MEDIUM];
- char *repl_from, *repl_to;
- int retval;
-
- if (xpos == -1)
- xpos = w->x + option_line_state_width + 1;
- if (ypos == -1)
- ypos = w->y + w->lines / 2;
- /* Sometimes menu can hide replaced text. I don't like it */
- if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + dlg_height - 1))
- ypos -= dlg_height;
-
- dlg_width = WIDGET (w->owner)->cols - xpos - 1;
-
- g_snprintf (tmp, sizeof (tmp), "\"%s\"", from_text);
- repl_from = g_strdup (str_trunc (tmp, dlg_width - 7));
-
- g_snprintf (tmp, sizeof (tmp), "\"%s\"", to_text);
- repl_to = g_strdup (str_trunc (tmp, dlg_width - 7));
-
- {
- quick_widget_t quick_widgets[] = {
- /* *INDENT-OFF* */
- QUICK_LABEL (repl_from, NULL),
- QUICK_LABEL (N_("Replace with:"), NULL),
- QUICK_LABEL (repl_to, NULL),
- QUICK_START_BUTTONS (TRUE, TRUE),
- QUICK_BUTTON (N_("&Replace"), B_ENTER, NULL, NULL),
- QUICK_BUTTON (N_("A&ll"), B_REPLACE_ALL, NULL, NULL),
- QUICK_BUTTON (N_("&Skip"), B_SKIP_REPLACE, NULL, NULL),
- QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL),
- QUICK_END
- /* *INDENT-ON* */
- };
-
- quick_dialog_t qdlg = {
- ypos, xpos, -1,
- N_("Confirm replace"), NULL,
- quick_widgets, NULL, NULL
- };
-
- retval = quick_dialog (&qdlg);
- }
-
- g_free (repl_from);
- g_free (repl_to);
-
- return retval;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* gets a raw key from the keyboard. Passing cancel = 1 draws
- a cancel button thus allowing c-c etc. Alternatively, cancel = 0
- will return the next key pressed. ctrl-a (=B_CANCEL), ctrl-g, ctrl-c,
- and Esc are cannot returned */
-
-int
-editcmd_dialog_raw_key_query (const char *heading, const char *query, gboolean cancel)
-{
- int w, wq;
- int y = 2;
- WDialog *raw_dlg;
- WGroup *g;
-
- w = str_term_width1 (heading) + 6;
- wq = str_term_width1 (query);
- w = MAX (w, wq + 3 * 2 + 1 + 2);
-
- raw_dlg =
- dlg_create (TRUE, 0, 0, cancel ? 7 : 5, w, WPOS_CENTER | WPOS_TRYUP, FALSE, dialog_colors,
- editcmd_dialog_raw_key_query_cb, NULL, NULL, heading);
- g = GROUP (raw_dlg);
- widget_want_tab (WIDGET (raw_dlg), TRUE);
-
- group_add_widget (g, label_new (y, 3, query));
- group_add_widget (g,
- input_new (y++, 3 + wq + 1, input_colors, w - (6 + wq + 1), "", 0,
- INPUT_COMPLETE_NONE));
- if (cancel)
- {
- group_add_widget (g, hline_new (y++, -1, -1));
- /* Button w/o hotkey to allow use any key as raw or macro one */
- group_add_widget_autopos (g, button_new (y, 1, B_CANCEL, NORMAL_BUTTON, _("Cancel"), NULL),
- WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL);
- }
-
- w = dlg_run (raw_dlg);
- dlg_destroy (raw_dlg);
-
- return (cancel && (w == ESC_CHAR || w == B_CANCEL)) ? 0 : w;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* let the user select its preferred completion */
-
-char *
-editcmd_dialog_completion_show (const WEdit * edit, int max_len, GString ** compl, int num_compl)
-{
- const Widget *we = CONST_WIDGET (edit);
- int start_x, start_y, offset, i;
- char *curr = NULL;
- WDialog *compl_dlg;
- WListbox *compl_list;
- int compl_dlg_h; /* completion dialog height */
- int compl_dlg_w; /* completion dialog width */
-
- /* calculate the dialog metrics */
- compl_dlg_h = num_compl + 2;
- compl_dlg_w = max_len + 4;
- start_x = we->x + edit->curs_col + edit->start_col + EDIT_TEXT_HORIZONTAL_OFFSET +
- (edit->fullscreen ? 0 : 1) + option_line_state_width;
- start_y = we->y + edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1;
-
- if (start_x < 0)
- start_x = 0;
- if (start_x < we->x + 1)
- start_x = we->x + 1 + option_line_state_width;
- if (compl_dlg_w > COLS)
- compl_dlg_w = COLS;
- if (compl_dlg_h > LINES - 2)
- compl_dlg_h = LINES - 2;
-
- offset = start_x + compl_dlg_w - COLS;
- if (offset > 0)
- start_x -= offset;
- offset = start_y + compl_dlg_h - LINES;
- if (offset > 0)
- start_y -= offset;
-
- /* create the dialog */
- compl_dlg =
- dlg_create (TRUE, start_y, start_x, compl_dlg_h, compl_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
- dialog_colors, NULL, NULL, "[Completion]", NULL);
-
- /* create the listbox */
- compl_list = listbox_new (1, 1, compl_dlg_h - 2, compl_dlg_w - 2, FALSE, NULL);
-
- /* add the dialog */
- group_add_widget (GROUP (compl_dlg), compl_list);
-
- /* fill the listbox with the completions */
- for (i = num_compl - 1; i >= 0; i--) /* reverse order */
- listbox_add_item (compl_list, LISTBOX_APPEND_AT_END, 0, (char *) compl[i]->str, NULL,
- FALSE);
-
- /* pop up the dialog and apply the chosen completion */
- if (dlg_run (compl_dlg) == B_ENTER)
- {
- listbox_get_current (compl_list, &curr, NULL);
- curr = g_strdup (curr);
- }
-
- /* destroy dialog before return */
- dlg_destroy (compl_dlg);
-
- return curr;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* let the user select where function definition */
-
-void
-editcmd_dialog_select_definition_show (WEdit * edit, char *match_expr, int max_len, int word_len,
- etags_hash_t * def_hash, int num_lines)
-{
- int start_x, start_y, offset, i;
- char *curr = NULL;
- WDialog *def_dlg;
- WListbox *def_list;
- int def_dlg_h; /* dialog height */
- int def_dlg_w; /* dialog width */
-
- (void) word_len;
- /* calculate the dialog metrics */
- def_dlg_h = num_lines + 2;
- def_dlg_w = max_len + 4;
- start_x = edit->curs_col + edit->start_col - (def_dlg_w / 2) +
- EDIT_TEXT_HORIZONTAL_OFFSET + (edit->fullscreen ? 0 : 1) + option_line_state_width;
- start_y = edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1;
-
- if (start_x < 0)
- start_x = 0;
- if (def_dlg_w > COLS)
- def_dlg_w = COLS;
- if (def_dlg_h > LINES - 2)
- def_dlg_h = LINES - 2;
-
- offset = start_x + def_dlg_w - COLS;
- if (offset > 0)
- start_x -= offset;
- offset = start_y + def_dlg_h - LINES;
- if (offset > 0)
- start_y -= (offset + 1);
-
- def_dlg = dlg_create (TRUE, start_y, start_x, def_dlg_h, def_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
- dialog_colors, NULL, NULL, "[Definitions]", match_expr);
- def_list = listbox_new (1, 1, def_dlg_h - 2, def_dlg_w - 2, FALSE, NULL);
- group_add_widget (GROUP (def_dlg), def_list);
-
- /* fill the listbox with the completions */
- for (i = 0; i < num_lines; i++)
- {
- char *label_def;
-
- label_def =
- g_strdup_printf ("%s -> %s:%ld", def_hash[i].short_define, def_hash[i].filename,
- def_hash[i].line);
- listbox_add_item (def_list, LISTBOX_APPEND_AT_END, 0, label_def, &def_hash[i], FALSE);
- g_free (label_def);
- }
-
- /* pop up the dialog and apply the chosen completion */
- if (dlg_run (def_dlg) == B_ENTER)
- {
- etags_hash_t *curr_def = NULL;
- gboolean do_moveto = FALSE;
-
- listbox_get_current (def_list, &curr, (void **) &curr_def);
-
- if (!edit->modified)
- do_moveto = TRUE;
- else if (!edit_query_dialog2
- (_("Warning"),
- _("Current text was modified without a file save.\n"
- "Continue discards these changes."), _("C&ontinue"), _("&Cancel")))
- {
- edit->force |= REDRAW_COMPLETELY;
- do_moveto = TRUE;
- }
-
- if (curr != NULL && do_moveto && edit_stack_iterator + 1 < MAX_HISTORY_MOVETO)
- {
- vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath);
-
- if (edit->dir_vpath != NULL)
- edit_history_moveto[edit_stack_iterator].filename_vpath =
- vfs_path_append_vpath_new (edit->dir_vpath, edit->filename_vpath, NULL);
- else
- edit_history_moveto[edit_stack_iterator].filename_vpath =
- vfs_path_clone (edit->filename_vpath);
-
- edit_history_moveto[edit_stack_iterator].line = edit->start_line + edit->curs_row + 1;
- edit_stack_iterator++;
- vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath);
- edit_history_moveto[edit_stack_iterator].filename_vpath =
- vfs_path_from_str ((char *) curr_def->fullpath);
- edit_history_moveto[edit_stack_iterator].line = curr_def->line;
- edit_reload_line (edit, edit_history_moveto[edit_stack_iterator].filename_vpath,
- edit_history_moveto[edit_stack_iterator].line);
- }
- }
-
- /* clear definition hash */
- for (i = 0; i < MAX_DEFINITIONS; i++)
- g_free (def_hash[i].filename);
-
- /* destroy dialog before return */
- dlg_destroy (def_dlg);
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/editor/editcmd_dialogs.h
^
|
@@ -1,36 +0,0 @@
-#ifndef MC__EDITCMD_DIALOGS_H
-#define MC__EDITCMD_DIALOGS_H
-
-#include "src/editor/edit.h"
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-struct etags_hash_struct;
-
-#define B_REPLACE_ALL (B_USER+1)
-#define B_REPLACE_ONE (B_USER+2)
-#define B_SKIP_REPLACE (B_USER+3)
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-/*** global variables defined in .c file *********************************************************/
-
-/*** declarations of public functions ************************************************************/
-
-void editcmd_dialog_replace_show (WEdit *, const char *, const char *, char **, char **);
-
-gboolean editcmd_dialog_search_show (WEdit * edit);
-
-int editcmd_dialog_raw_key_query (const char *heading, const char *query, gboolean cancel);
-
-char *editcmd_dialog_completion_show (const WEdit * edit, int max_len, GString ** compl,
- int num_compl);
-
-void editcmd_dialog_select_definition_show (WEdit *, char *, int, int, struct etags_hash_struct *,
- int);
-
-int editcmd_dialog_replace_prompt_show (WEdit *, char *, char *, int, int);
-/*** inline functions ****************************************************************************/
-#endif /* MC__EDITCMD_DIALOGS_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/editor/spell_dialogs.c
^
|
@@ -1,185 +0,0 @@
-/*
- Editor spell checker dialogs
-
- Copyright (C) 2012-2020
- Free Software Foundation, Inc.
-
- Written by:
- Ilia Maslakov <il.smind@gmail.com>, 2012
- Andrew Borodin <aborodin@vmail.ru>, 2013
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-
-#include "lib/global.h"
-#include "lib/strutil.h" /* str_term_width1 */
-#include "lib/widget.h"
-#include "lib/tty/tty.h" /* COLS, LINES */
-
-#include "editwidget.h"
-
-#include "spell.h"
-#include "spell_dialogs.h"
-
-/*** global variables ****************************************************************************/
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Show suggests for the current word.
- *
- * @param edit Editor object
- * @param word Word for spell check
- * @param new_word Word to replace the incorrect word
- * @param suggest Array of suggests for current word
- * @return code of pressed button
- */
-
-int
-spell_dialog_spell_suggest_show (WEdit * edit, const char *word, char **new_word, GArray * suggest)
-{
-
- int sug_dlg_h = 14; /* dialog height */
- int sug_dlg_w = 29; /* dialog width */
- int xpos, ypos;
- char *lang_label;
- char *word_label;
- unsigned int i;
- int res;
- char *curr = NULL;
- WDialog *sug_dlg;
- WGroup *g;
- WListbox *sug_list;
- int max_btn_len = 0;
- int replace_len;
- int skip_len;
- int cancel_len;
- WButton *add_btn;
- WButton *replace_btn;
- WButton *skip_btn;
- WButton *cancel_button;
- int word_label_len;
-
- /* calculate the dialog metrics */
- xpos = (COLS - sug_dlg_w) / 2;
- ypos = (LINES - sug_dlg_h) * 2 / 3;
-
- /* Sometimes menu can hide replaced text. I don't like it */
- if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + sug_dlg_h - 1))
- ypos -= sug_dlg_h;
-
- add_btn = button_new (5, 28, B_ADD_WORD, NORMAL_BUTTON, _("&Add word"), 0);
- replace_btn = button_new (7, 28, B_ENTER, NORMAL_BUTTON, _("&Replace"), 0);
- replace_len = button_get_len (replace_btn);
- skip_btn = button_new (9, 28, B_SKIP_WORD, NORMAL_BUTTON, _("&Skip"), 0);
- skip_len = button_get_len (skip_btn);
- cancel_button = button_new (11, 28, B_CANCEL, NORMAL_BUTTON, _("&Cancel"), 0);
- cancel_len = button_get_len (cancel_button);
-
- max_btn_len = MAX (replace_len, skip_len);
- max_btn_len = MAX (max_btn_len, cancel_len);
-
- lang_label = g_strdup_printf ("%s: %s", _("Language"), aspell_get_lang ());
- word_label = g_strdup_printf ("%s: %s", _("Misspelled"), word);
- word_label_len = str_term_width1 (word_label) + 5;
-
- sug_dlg_w += max_btn_len;
- sug_dlg_w = MAX (sug_dlg_w, word_label_len) + 1;
-
- sug_dlg = dlg_create (TRUE, ypos, xpos, sug_dlg_h, sug_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
- dialog_colors, NULL, NULL, "[ASpell]", _("Check word"));
- g = GROUP (sug_dlg);
-
- group_add_widget (g, label_new (1, 2, lang_label));
- group_add_widget (g, label_new (3, 2, word_label));
-
- group_add_widget (g, groupbox_new (4, 2, sug_dlg_h - 5, 25, _("Suggest")));
-
- sug_list = listbox_new (5, 2, sug_dlg_h - 7, 24, FALSE, NULL);
- for (i = 0; i < suggest->len; i++)
- listbox_add_item (sug_list, LISTBOX_APPEND_AT_END, 0, g_array_index (suggest, char *, i),
- NULL, FALSE);
- group_add_widget (g, sug_list);
-
- group_add_widget (g, add_btn);
- group_add_widget (g, replace_btn);
- group_add_widget (g, skip_btn);
- group_add_widget (g, cancel_button);
-
- res = dlg_run (sug_dlg);
- if (res == B_ENTER)
- {
- char *tmp = NULL;
- listbox_get_current (sug_list, &curr, NULL);
-
- if (curr != NULL)
- tmp = g_strdup (curr);
- *new_word = tmp;
- }
-
- dlg_destroy (sug_dlg);
- g_free (lang_label);
- g_free (word_label);
-
- return res;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Show dialog to select language for spell check.
- *
- * @param languages Array of available languages
- * @return name of choosed language
- */
-
-char *
-spell_dialog_lang_list_show (GArray * languages)
-{
-
- int lang_dlg_h = 12; /* dialog height */
- int lang_dlg_w = 30; /* dialog width */
- char *selected_lang = NULL;
- unsigned int i;
- int res;
- Listbox *lang_list;
-
- /* Create listbox */
- lang_list = create_listbox_window_centered (-1, -1, lang_dlg_h, lang_dlg_w,
- _("Select language"), "[ASpell]");
-
- for (i = 0; i < languages->len; i++)
- LISTBOX_APPEND_TEXT (lang_list, 0, g_array_index (languages, char *, i), NULL, FALSE);
-
- res = run_listbox (lang_list);
- if (res >= 0)
- selected_lang = g_strdup (g_array_index (languages, char *, (unsigned int) res));
-
- return selected_lang;
-
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/editor/spell_dialogs.h
^
|
@@ -1,25 +0,0 @@
-#ifndef MC__EDIT_ASPELL_DIALOGS_H
-#define MC__EDIT_ASPELL_DIALOGS_H
-
-#include "lib/global.h" /* include <glib.h> */
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-#define B_SKIP_WORD (B_USER+3)
-#define B_ADD_WORD (B_USER+4)
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-/*** global variables defined in .c file *********************************************************/
-
-/*** declarations of public functions ************************************************************/
-
-int spell_dialog_spell_suggest_show (WEdit * edit, const char *word, char **new_word,
- GArray * suggest);
-char *spell_dialog_lang_list_show (GArray * languages);
-
-/*** inline functions ****************************************************************************/
-
-#endif /* MC__EDIT_ASPELL_DIALOGS_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/keybind-defaults.c
^
|
@@ -1,669 +0,0 @@
-/*
- Default values for keybinding engine
-
- Copyright (C) 2009-2020
- Free Software Foundation, Inc.
-
- Written by:
- Vitja Makarov, 2005
- Ilia Maslakov <il.smind@gmail.com>, 2009, 2010
- Andrew Borodin <aborodin@vmail.ru>, 2010, 2011
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-
-#include "lib/global.h"
-#include "lib/widget.h" /* dialog_map, input_map, listbox_map, menu_map, radio_map */
-
-#include "keybind-defaults.h"
-
-/*** global variables ****************************************************************************/
-
-GArray *filemanager_keymap = NULL;
-GArray *filemanager_x_keymap = NULL;
-GArray *panel_keymap = NULL;
-GArray *dialog_keymap = NULL;
-GArray *menu_keymap = NULL;
-GArray *input_keymap = NULL;
-GArray *listbox_keymap = NULL;
-GArray *radio_keymap = NULL;
-GArray *tree_keymap = NULL;
-GArray *help_keymap = NULL;
-#ifdef ENABLE_EXT2FS_ATTR
-GArray *chattr_keymap = NULL;
-#endif
-#ifdef USE_INTERNAL_EDIT
-GArray *editor_keymap = NULL;
-GArray *editor_x_keymap = NULL;
-#endif
-GArray *viewer_keymap = NULL;
-GArray *viewer_hex_keymap = NULL;
-#ifdef USE_DIFF_VIEW
-GArray *diff_keymap = NULL;
-#endif
-
-const global_keymap_t *filemanager_map = NULL;
-const global_keymap_t *filemanager_x_map = NULL;
-const global_keymap_t *panel_map = NULL;
-const global_keymap_t *tree_map = NULL;
-const global_keymap_t *help_map = NULL;
-#ifdef ENABLE_EXT2FS_ATTR
-const global_keymap_t *chattr_map = NULL;
-#endif
-#ifdef USE_INTERNAL_EDIT
-const global_keymap_t *editor_map = NULL;
-const global_keymap_t *editor_x_map = NULL;
-#endif
-const global_keymap_t *viewer_map = NULL;
-const global_keymap_t *viewer_hex_map = NULL;
-#ifdef USE_DIFF_VIEW
-const global_keymap_t *diff_map = NULL;
-#endif
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/* default keymaps in ini (key=value) format */
-typedef struct global_keymap_ini_t
-{
- const char *key;
- const char *value;
-} global_keymap_ini_t;
-
-/*** file scope variables ************************************************************************/
-
-/* midnight */
-static const global_keymap_ini_t default_filemanager_keymap[] = {
- {"ChangePanel", "tab; ctrl-i"},
- {"Help", "f1"},
- {"UserMenu", "f2"},
- {"View", "f3"},
- {"Edit", "f4"},
- {"Copy", "f5"},
- {"Move", "f6"},
- {"MakeDir", "f7"},
- {"Delete", "f8"},
- {"Menu", "f9"},
- {"Quit", "f10"},
- {"MenuLastSelected", "f19"},
- {"QuitQuiet", "f20"},
- {"History", "alt-h"},
- {"EditorViewerHistory", "alt-shift-e"},
- {"DirSize", "ctrl-space"},
- /* Copy useful information to the command line */
- {"PutCurrentPath", "alt-a"},
- {"PutOtherPath", "alt-shift-a"},
- {"PutCurrentSelected", "alt-enter; ctrl-enter"},
- {"PutCurrentFullSelected", "ctrl-shift-enter"},
- {"CdQuick", "alt-c"},
- /* To access the directory hotlist */
- {"HotList", "ctrl-backslash"},
- /* Suspend */
- {"Suspend", "ctrl-z"},
- /* The filtered view command */
- {"ViewFiltered", "alt-exclamation"},
- /* Find file */
- {"Find", "alt-question"},
- /* Panel refresh */
- {"Reread", "ctrl-r"},
- /* Switch listing between long, user defined and full formats */
- /* Swap panels */
- {"Swap", "ctrl-u"},
- /* Resize panels */
- {"SplitEqual", "alt-equal"},
- {"SplitMore", "alt-shift-right"},
- {"SplitLess", "alt-shift-left"},
- /* View output */
- {"Shell", "ctrl-o"},
- {"ShowHidden", "alt-dot"},
- {"SplitVertHoriz", "alt-comma"},
- {"ExtendedKeyMap", "ctrl-x"},
- /* Select/unselect group */
- {"Select", "kpplus"},
- {"Unselect", "kpminus"},
- {"SelectInvert", "kpasterisk"},
- /* List of screens */
- {"ScreenList", "alt-prime"},
- {NULL, NULL}
-};
-
-static const global_keymap_ini_t default_filemanager_x_keymap[] = {
- {"CompareDirs", "d"},
-#ifdef USE_DIFF_VIEW
- {"CompareFiles", "ctrl-d"},
-#endif /* USE_DIFF_VIEW */
-#ifdef ENABLE_VFS
- {"VfsList", "a"},
-#endif /* ENABLE_VFS */
- {"PutCurrentPath", "p"},
- {"PutOtherPath", "ctrl-p"},
- {"PutCurrentTagged", "t"},
- {"PutOtherTagged", "ctrl-t"},
- {"ChangeMode", "c"},
- {"ChangeOwn", "o"},
-#ifdef ENABLE_EXT2FS_ATTR
- {"ChangeAttributes", "e"},
-#endif /* ENABLE_EXT2FS_ATTR */
- {"PutCurrentLink", "r"},
- {"PutOtherLink", "ctrl-r"},
- {"Link", "l"},
- {"LinkSymbolic", "s"},
- {"LinkSymbolicRelative", "v"},
- {"LinkSymbolicEdit", "ctrl-s"},
- {"PanelInfo", "i"},
- {"PanelQuickView", "q"},
- {"HotListAdd", "h"},
-#ifdef ENABLE_BACKGROUND
- {"Jobs", "j"},
-#endif /* ENABLE_BACKGROUND */
- {"ExternalPanelize", "!"},
- {NULL, NULL}
-};
-
-/* panel */
-static const global_keymap_ini_t default_panel_keymap[] = {
- {"CycleListingFormat", "alt-t"},
- {"PanelOtherCd", "alt-o"},
- {"PanelOtherCdLink", "alt-l"},
- {"CopySingle", "f15"},
- {"DeleteSingle", "f18"},
- {"Enter", "enter"},
- {"EditNew", "f14"},
- {"MoveSingle", "f16"},
- {"SelectInvert", "alt-asterisk"},
- {"Select", "alt-plus"},
- {"Unselect", "alt-minus"},
- {"ViewRaw", "f13"},
- {"CdChild", "ctrl-pgdn"},
- {"CdParent", "ctrl-pgup"},
- {"History", "alt-shift-h"},
- {"HistoryNext", "alt-u"},
- {"HistoryPrev", "alt-y"},
- {"BottomOnScreen", "alt-j"},
- {"MiddleOnScreen", "alt-r"},
- {"TopOnScreen", "alt-g"},
- {"Mark", "insert; ctrl-t"},
- {"MarkDown", "shift-down"},
- {"MarkUp", "shift-up"},
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"Left", "left"},
- {"Right", "right"},
- {"Top", "alt-lt; home; a1"},
- {"Bottom", "alt-gt; end; c1"},
- {"PageDown", "pgdn; ctrl-v"},
- {"PageUp", "pgup; alt-v"},
-#ifdef HAVE_CHARSET
- {"SelectCodepage", "alt-e"},
-#endif
- {"Search", "ctrl-s; alt-s"},
- {"PanelOtherSync", "alt-i"},
- {NULL, NULL}
-};
-
-/* dialog */
-static const global_keymap_ini_t default_dialog_keymap[] = {
- {"Ok", "enter"},
- {"Cancel", "f10; esc; ctrl-g"},
- {"Up", "up; left"},
- {"Down", "down; right"},
-#if 0
- {"Left", "up; left"},
- {"Right", "down; right"},
-#endif
- {"Help", "f1"},
- {"Suspend", "ctrl-z"},
- {"Refresh", "ctrl-l"},
- {"ScreenList", "alt-prime"},
- {"ScreenNext", "alt-rbrace"},
- {"ScreenPrev", "alt-lbrace"},
- {NULL, NULL}
-};
-
-/* menubar */
-static const global_keymap_ini_t default_menu_keymap[] = {
- {"Help", "f1"},
- {"Left", "left; ctrl-b"},
- {"Right", "right; ctrl-f"},
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"Home", "home; alt-lt; ctrl-a"},
- {"End", "end; alt-gt; ctrl-e"},
- {"Enter", "enter"},
- {"Quit", "f10; ctrl-g; esc"},
- {NULL, NULL}
-};
-
-/* input line */
-static const global_keymap_ini_t default_input_keymap[] = {
- /* Motion */
- {"Home", "ctrl-a; alt-lt; home; a1"},
- {"End", "ctrl-e; alt-gt; end; c1"},
- {"Left", "left; alt-left; ctrl-b"},
- {"Right", "right; alt-right; ctrl-f"},
- {"WordLeft", "ctrl-left; alt-b"},
- {"WordRight", "ctrl-right; alt-f"},
- /* Mark */
- {"MarkLeft", "shift-left"},
- {"MarkRight", "shift-right"},
- {"MarkToWordBegin", "ctrl-shift-left"},
- {"MarkToWordEnd", "ctrl-shift-right"},
- {"MarkToHome", "shift-home"},
- {"MarkToEnd", "shift-end"},
- /* Editing */
- {"Backspace", "backspace; ctrl-h"},
- {"Delete", "delete; ctrl-d"},
- {"DeleteToWordEnd", "alt-d"},
- {"DeleteToWordBegin", "alt-backspace"},
- /* Region manipulation */
- {"Remove", "ctrl-w"},
- {"Store", "alt-w"},
- {"Yank", "ctrl-y"},
- {"DeleteToEnd", "ctrl-k"},
- /* History */
- {"History", "alt-h"},
- {"HistoryPrev", "alt-p; ctrl-down"},
- {"HistoryNext", "alt-n; ctrl-up"},
- /* Completion */
- {"Complete", "alt-tab"},
- {NULL, NULL}
-};
-
-/* listbox */
-static const global_keymap_ini_t default_listbox_keymap[] = {
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"Top", "home; alt-lt; a1"},
- {"Bottom", "end; alt-gt; c1"},
- {"PageUp", "pgup; alt-v"},
- {"PageDown", "pgdn; ctrl-v"},
- {"Delete", "delete; d"},
- {"Clear", "shift-delete; shift-d"},
- {"View", "f3"},
- {"Edit", "f4"},
- {"Enter", "enter"},
- {NULL, NULL}
-};
-
-/* radio */
-static const global_keymap_ini_t default_radio_keymap[] = {
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"Top", "home; alt-lt; a1"},
- {"Bottom", "end; alt-gt; c1"},
- {"Select", "space"},
- {NULL, NULL}
-};
-
-/* tree */
-static const global_keymap_ini_t default_tree_keymap[] = {
- {"Help", "f1"},
- {"Rescan", "f2; ctrl-r"},
- {"Forget", "f3"},
- {"ToggleNavigation", "f4"},
- {"Copy", "f5"},
- {"Move", "f6"},
-#if 0
- {"MakeDir", "f7"},
-#endif
- {"Delete", "f8; delete"},
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"Left", "left"},
- {"Right", "right"},
- {"Top", "home; alt-lt; a1"},
- {"Bottom", "end; alt-gt; c1"},
- {"PageUp", "pgup; alt-v"},
- {"PageDown", "pgdn; ctrl-v"},
- {"Enter", "enter"},
- {"Search", "ctrl-s; alt-s"},
- {NULL, NULL}
-};
-
-/* help */
-static const global_keymap_ini_t default_help_keymap[] = {
- {"Help", "f1"},
- {"Index", "f2; c"},
- {"Back", "f3; left; l"},
- {"Quit", "f10; esc"},
- {"Up", "up; ctrl-p"},
- {"Down", "down; ctrl-n"},
- {"PageDown", "f; space; pgdn; ctrl-v"},
- {"PageUp", "b; pgup; alt-v; backspace"},
- {"HalfPageDown", "d"},
- {"HalfPageUp", "u"},
- {"Top", "home; ctrl-home; ctrl-pgup; a1; alt-lt; g"},
- {"Bottom", "end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
- {"Enter", "right; enter"},
- {"LinkNext", "tab"},
- {"LinkPrev", "alt-tab"},
- {"NodeNext", "n"},
- {"NodePrev", "p"},
- {NULL, NULL}
-};
-
-#ifdef ENABLE_EXT2FS_ATTR
-/* chattr dialog */
-static const global_keymap_ini_t default_chattr_keymap[] = {
- {"Up", "up; left; ctrl-p"},
- {"Down", "down; right; ctrl-n"},
- {"Top", "home; alt-lt; a1"},
- {"Bottom", "end; alt-gt; c1"},
- {"PageUp", "pgup; alt-v"},
- {"PageDown", "pgdn; ctrl-v"},
- {"Mark", "t; shift-t"},
- {"MarkAndDown", "insert"},
- {NULL, NULL}
-};
-#endif /* ENABLE_EXT2FS_ATTR */
-
-#ifdef USE_INTERNAL_EDIT
-static const global_keymap_ini_t default_editor_keymap[] = {
- {"Enter", "enter"},
- {"Return", "shift-enter; ctrl-enter; ctrl-shift-enter"}, /* useful for pasting multiline text */
- {"Tab", "tab; shift-tab; ctrl-tab; ctrl-shift-tab"}, /* ditto */
- {"BackSpace", "backspace; ctrl-h"},
- {"Delete", "delete; ctrl-d"},
- {"Left", "left"},
- {"Right", "right"},
- {"Up", "up"},
- {"Down", "down"},
- {"Home", "home"},
- {"End", "end"},
- {"PageUp", "pgup"},
- {"PageDown", "pgdn"},
- {"WordLeft", "ctrl-left; ctrl-z"},
- {"WordRight", "ctrl-right; ctrl-x"},
- {"InsertOverwrite", "insert"},
- {"Help", "f1"},
- {"Save", "f2"},
- {"Mark", "f3"},
- {"Replace", "f4"},
- {"Copy", "f5"},
- {"Move", "f6"},
- {"Search", "f7"},
- {"Remove", "f8; ctrl-delete"},
- {"Menu", "f9"},
- {"Quit", "f10; esc"},
- {"UserMenu", "f11"},
- {"SaveAs", "f12; ctrl-f2"},
- {"MarkColumn", "f13"},
- {"ReplaceContinue", "f14; ctrl-f4"},
- {"InsertFile", "f15"},
- {"SearchContinue", "f17; ctrl-f7"},
- {"EditNew", "ctrl-n"},
- {"DeleteToWordBegin", "alt-backspace"},
- {"DeleteToWordEnd", "alt-d"},
- {"DeleteLine", "ctrl-y"},
- {"DeleteToEnd", "ctrl-k"},
- {"Undo", "ctrl-u; ctrl-backspace"},
- {"Redo", "alt-r"},
-#ifdef HAVE_CHARSET
- {"SelectCodepage", "alt-e"},
-#endif
- {"Goto", "alt-l; alt-shift-l"},
- {"Refresh", "ctrl-l"},
- {"Shell", "ctrl-o"},
- {"Top", "ctrl-home; ctrl-pgup; alt-lt"},
- {"Bottom", "ctrl-end; ctrl-pgdn; alt-gt"},
- {"TopOnScreen", "ctrl-pgup"},
- {"BottomOnScreen", "ctrl-pgdn"},
- {"ScrollUp", "ctrl-up"},
- {"ScrollDown", "ctrl-down"},
- {"Store", "ctrl-insert"},
- {"Paste", "shift-insert"},
- {"Cut", "shift-delete"},
- {"BlockSave", "ctrl-f"},
- {"MarkLeft", "shift-left"},
- {"MarkRight", "shift-right"},
- {"MarkUp", "shift-up"},
- {"MarkDown", "shift-down"},
- {"MarkPageUp", "shift-pgup"},
- {"MarkPageDown", "shift-pgdn"},
- {"MarkToWordBegin", "ctrl-shift-left"},
- {"MarkToWordEnd", "ctrl-shift-right"},
- {"MarkToHome", "shift-home"},
- {"MarkToEnd", "shift-end"},
- {"MarkToFileBegin", "ctrl-shift-home"},
- {"MarkToFileEnd", "ctrl-shift-end"},
- {"MarkToPageBegin", "ctrl-shift-pgup"},
- {"MarkToPageEnd", "ctrl-shift-pgdn"},
- {"MarkScrollUp", "ctrl-shift-up"},
- {"MarkScrollDown", "ctrl-shift-down"},
- {"MarkColumnLeft", "alt-left"},
- {"MarkColumnRight", "alt-right"},
- {"MarkColumnUp", "alt-up"},
- {"MarkColumnDown", "alt-down"},
- {"MarkColumnPageUp", "alt-pgup"},
- {"MarkColumnPageDown", "alt-pgdn"},
- {"InsertLiteral", "ctrl-q"},
- {"Complete", "alt-tab"},
- {"MatchBracket", "alt-b"},
- {"ParagraphFormat", "alt-p"},
- {"Bookmark", "alt-k"},
- {"BookmarkFlush", "alt-o"},
- {"BookmarkNext", "alt-j"},
- {"BookmarkPrev", "alt-i"},
- {"MacroStartStopRecord", "ctrl-r"},
- {"MacroExecute", "ctrl-a"},
- {"ShowNumbers", "alt-n"},
- {"ShowTabTws", "alt-underline"},
- {"SyntaxOnOff", "ctrl-s"},
- {"Find", "alt-enter"},
- {"FilePrev", "alt-minus"},
- {"FileNext", "alt-plus"},
- {"Sort", "alt-t"},
- {"Mail", "alt-m"},
- {"ExternalCommand", "alt-u"},
-#ifdef HAVE_ASPELL
- {"SpellCheckCurrentWord", "ctrl-p"},
-#endif
- {"ExtendedKeyMap", "ctrl-x"},
- {NULL, NULL}
-};
-
-/* emacs keyboard layout emulation */
-static const global_keymap_ini_t default_editor_x_keymap[] = {
- {NULL, NULL}
-};
-#endif /* USE_INTERNAL_EDIT */
-
-/* viewer */
-static const global_keymap_ini_t default_viewer_keymap[] = {
- {"Help", "f1"},
- {"WrapMode", "f2"},
- {"Quit", "f3; f10; q; esc"},
- {"HexMode", "f4"},
- {"Goto", "f5"},
- {"Search", "f7"},
- {"SearchContinue", "f17; n"},
- {"MagicMode", "f8"},
- {"NroffMode", "f9"},
- {"Home", "ctrl-a"},
- {"End", "ctrl-e"},
- {"Left", "h; left"},
- {"Right", "l; right"},
- {"LeftQuick", "ctrl-left"},
- {"RightQuick", "ctrl-right"},
- {"Up", "k; y; insert; up; ctrl-p"},
- {"Down", "j; e; delete; down; enter; ctrl-n"},
- {"PageDown", "f; space; pgdn; ctrl-v"},
- {"PageUp", "b; pgup; alt-v; backspace"},
- {"HalfPageDown", "d"},
- {"HalfPageUp", "u"},
- {"Top", "home; ctrl-home; ctrl-pgup; a1; alt-lt; g"},
- {"Bottom", "end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
- {"BookmarkGoto", "m"},
- {"Bookmark", "r"},
- {"FileNext", "ctrl-f"},
- {"FilePrev", "ctrl-b"},
-#ifdef HAVE_CHARSET
- {"SelectCodepage", "alt-e"},
-#endif
- {"Shell", "ctrl-o"},
- {"Ruler", "alt-r"},
- {"SearchForward", "slash"},
- {"SearchBackward", "question"},
- {"SearchForwardContinue", "ctrl-s"},
- {"SearchBackwardContinue", "ctrl-r"},
- {"SearchOppositeContinue", "shift-n"},
- {"History", "alt-shift-e"},
- {NULL, NULL}
-};
-
-/* hex viewer */
-static const global_keymap_ini_t default_viewer_hex_keymap[] = {
- {"Help", "f1"},
- {"HexEditMode", "f2"},
- {"Quit", "f3; f10; q; esc"},
- {"HexMode", "f4"},
- {"Goto", "f5"},
- {"Save", "f6"},
- {"Search", "f7"},
- {"SearchContinue", "f17; n"},
- {"MagicMode", "f8"},
- {"NroffMode", "f9"},
- {"ToggleNavigation", "tab"},
- {"Home", "ctrl-a; home"},
- {"End", "ctrl-e; end"},
- {"Left", "b; left"},
- {"Right", "f; right"},
- {"Up", "k; y; up"},
- {"Down", "j; delete; down"},
- {"PageDown", "pgdn; ctrl-v"},
- {"PageUp", "pgup; alt-v"},
- {"Top", "ctrl-home; ctrl-pgup; a1; alt-lt; g"},
- {"Bottom", "ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
-#ifdef HAVE_CHARSET
- {"SelectCodepage", "alt-e"},
-#endif
- {"Shell", "ctrl-o"},
- {"SearchForward", "slash"},
- {"SearchBackward", "question"},
- {"SearchForwardContinue", "ctrl-s"},
- {"SearchBackwardContinue", "ctrl-r"},
- {"SearchOppositeContinue", "shift-n"},
- {"History", "alt-shift-e"},
- {NULL, NULL}
-};
-
-#ifdef USE_DIFF_VIEW
-/* diff viewer */
-static const global_keymap_ini_t default_diff_keymap[] = {
- {"ShowSymbols", "alt-s; s"},
- {"ShowNumbers", "alt-n; l"},
- {"SplitFull", "f"},
- {"SplitEqual", "equal"},
- {"SplitMore", "gt"},
- {"SplitLess", "lt"},
- {"Tab2", "2"},
- {"Tab3", "3"},
- {"Tab4", "4"},
- {"Tab8", "8"},
- {"Swap", "ctrl-u"},
- {"Redo", "ctrl-r"},
- {"HunkNext", "n; enter; space"},
- {"HunkPrev", "p; backspace"},
- {"Goto", "g; shift-g"},
- {"Save", "f2"},
- {"Edit", "f4"},
- {"EditOther", "f14"},
- {"Merge", "f5"},
- {"MergeOther", "f15"},
- {"Search", "f7"},
- {"SearchContinue", "f17"},
- {"Options", "f9"},
- {"Top", "ctrl-home"},
- {"Bottom", "ctrl-end"},
- {"Down", "down"},
- {"Up", "up"},
- {"LeftQuick", "ctrl-left"},
- {"RightQuick", "ctrl-right"},
- {"Left", "left"},
- {"Right", "right"},
- {"PageDown", "pgdn"},
- {"PageUp", "pgup"},
- {"Home", "home"},
- {"End", "end"},
- {"Help", "f1"},
- {"Quit", "f10; q; shift-q; esc"},
-#ifdef HAVE_CHARSET
- {"SelectCodepage", "alt-e"},
-#endif
- {"Shell", "ctrl-o"},
- {NULL, NULL}
-};
-#endif
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-create_default_keymap_section (mc_config_t * keymap, const char *section,
- const global_keymap_ini_t * k)
-{
- size_t i;
-
- for (i = 0; k[i].key != NULL; i++)
- mc_config_set_string_raw (keymap, section, k[i].key, k[i].value);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-mc_config_t *
-create_default_keymap (void)
-{
- mc_config_t *keymap;
-
- keymap = mc_config_init (NULL, TRUE);
-
- create_default_keymap_section (keymap, KEYMAP_SECTION_FILEMANAGER, default_filemanager_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_FILEMANAGER_EXT,
- default_filemanager_x_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_PANEL, default_panel_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_DIALOG, default_dialog_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_MENU, default_menu_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_INPUT, default_input_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_LISTBOX, default_listbox_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_RADIO, default_radio_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_TREE, default_tree_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_HELP, default_help_keymap);
-#ifdef ENABLE_EXT2FS_ATTR
- create_default_keymap_section (keymap, KEYMAP_SECTION_HELP, default_chattr_keymap);
-#endif
-#ifdef USE_INTERNAL_EDIT
- create_default_keymap_section (keymap, KEYMAP_SECTION_EDITOR, default_editor_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_EDITOR_EXT, default_editor_x_keymap);
-#endif
- create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER, default_viewer_keymap);
- create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER_HEX, default_viewer_hex_keymap);
-#ifdef USE_DIFF_VIEW
- create_default_keymap_section (keymap, KEYMAP_SECTION_DIFFVIEWER, default_diff_keymap);
-#endif
-
- return keymap;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/keybind-defaults.h
^
|
@@ -1,63 +0,0 @@
-#ifndef MC__KEYBIND_DEFAULTS_H
-#define MC__KEYBIND_DEFAULTS_H
-
-#include "lib/global.h"
-#include "lib/keybind.h" /* global_keymap_t */
-#include "lib/mcconfig.h" /* mc_config_t */
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-/*** global variables defined in .c file *********************************************************/
-
-extern GArray *filemanager_keymap;
-extern GArray *filemanager_x_keymap;
-extern GArray *panel_keymap;
-extern GArray *dialog_keymap;
-extern GArray *menu_keymap;
-extern GArray *input_keymap;
-extern GArray *listbox_keymap;
-extern GArray *radio_keymap;
-extern GArray *tree_keymap;
-extern GArray *help_keymap;
-#ifdef ENABLE_EXT2FS_ATTR
-extern GArray *chattr_keymap;
-#endif
-#ifdef USE_INTERNAL_EDIT
-extern GArray *editor_keymap;
-extern GArray *editor_x_keymap;
-#endif
-extern GArray *viewer_keymap;
-extern GArray *viewer_hex_keymap;
-#ifdef USE_DIFF_VIEW
-extern GArray *diff_keymap;
-#endif
-
-extern const global_keymap_t *filemanager_map;
-extern const global_keymap_t *filemanager_x_map;
-extern const global_keymap_t *panel_map;
-extern const global_keymap_t *tree_map;
-extern const global_keymap_t *help_map;
-#ifdef ENABLE_EXT2FS_ATTR
-extern const global_keymap_t *chattr_map;
-#endif
-#ifdef USE_INTERNAL_EDIT
-extern const global_keymap_t *editor_map;
-extern const global_keymap_t *editor_x_map;
-#endif
-extern const global_keymap_t *viewer_map;
-extern const global_keymap_t *viewer_hex_map;
-#ifdef USE_DIFF_VIEW
-extern const global_keymap_t *diff_map;
-#endif
-
-/*** declarations of public functions ************************************************************/
-
-mc_config_t *create_default_keymap (void);
-
-/*** inline functions ****************************************************************************/
-
-#endif /* MC__KEYBIND_DEFAULTS_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/sftpfs/init.c
^
|
@@ -1,67 +0,0 @@
-/* Virtual File System: SFTP file system.
- The interface function
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Written by:
- Ilia Maslakov <il.smind@gmail.com>, 2011
- Slava Zanko <slavazanko@gmail.com>, 2011, 2012
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-
-#include "lib/global.h"
-#include "lib/vfs/netutil.h"
-
-#include "init.h"
-#include "internal.h"
-
-/*** global variables ****************************************************************************/
-
-struct vfs_s_subclass sftpfs_subclass;
-struct vfs_class *sftpfs_class = VFS_CLASS (&sftpfs_subclass);
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Initialization of SFTP Virtual File Sysytem.
- */
-
-void
-vfs_init_sftpfs (void)
-{
- tcp_init ();
-
- vfs_init_subclass (&sftpfs_subclass, "sftpfs", VFSF_NOLINKS | VFSF_REMOTE, "sftp");
- sftpfs_init_class ();
- sftpfs_init_subclass ();
- vfs_register_class (sftpfs_class);
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/sftpfs/init.h
^
|
@@ -1,23 +0,0 @@
-/**
- * \file
- * \brief Header: SFTP FS
- */
-
-#ifndef MC__VFS_SFTPFS_INIT_H
-#define MC__VFS_SFTPFS_INIT_H
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-/*** global variables defined in .c file *********************************************************/
-
-/*** declarations of public functions ************************************************************/
-
-void vfs_init_sftpfs (void);
-
-/*** inline functions ****************************************************************************/
-
-#endif /* MC__VFS_SFTPFS_INIT_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/sftpfs/vfs_class.c
^
|
@@ -1,708 +0,0 @@
-/* Virtual File System: SFTP file system.
- The VFS class functions
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Written by:
- Ilia Maslakov <il.smind@gmail.com>, 2011
- Slava Zanko <slavazanko@gmail.com>, 2011, 2012
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-#include <errno.h>
-
-#include "lib/global.h"
-#include "lib/widget.h"
-#include "lib/vfs/gc.h"
-#include "lib/tty/tty.h" /* tty_enable_interrupt_key () */
-
-#include "internal.h"
-
-/*** global variables ****************************************************************************/
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for VFS-class init action.
- *
- * @param me structure of VFS class
- */
-
-static int
-sftpfs_cb_init (struct vfs_class *me)
-{
- (void) me;
-
- if (libssh2_init (0) != 0)
- return 0;
-
- sftpfs_filename_buffer = g_string_new ("");
- sftpfs_init_config_variables_patterns ();
- return 1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for VFS-class deinit action.
- *
- * @param me structure of VFS class
- */
-
-static void
-sftpfs_cb_done (struct vfs_class *me)
-{
- (void) me;
-
- sftpfs_deinit_config_variables_patterns ();
- g_string_free (sftpfs_filename_buffer, TRUE);
- libssh2_exit ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for opening file.
- *
- * @param vpath path to file
- * @param flags flags (see man 2 open)
- * @param mode mode (see man 2 open)
- * @return file data handler if success, NULL otherwise
- */
-
-static void *
-sftpfs_cb_open (const vfs_path_t * vpath, int flags, mode_t mode)
-{
- vfs_file_handler_t *fh;
- const vfs_path_element_t *path_element;
- struct vfs_s_super *super;
- const char *path_super;
- struct vfs_s_inode *path_inode;
- GError *mcerror = NULL;
- gboolean is_changed = FALSE;
-
- path_element = vfs_path_get_by_index (vpath, -1);
-
- path_super = vfs_s_get_path (vpath, &super, 0);
- if (path_super == NULL)
- return NULL;
-
- path_inode = vfs_s_find_inode (path_element->class, super, path_super, LINK_FOLLOW, FL_NONE);
- if (path_inode != NULL && ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)))
- {
- path_element->class->verrno = EEXIST;
- return NULL;
- }
-
- if (path_inode == NULL)
- {
- char *dirname, *name;
- struct vfs_s_entry *ent;
- struct vfs_s_inode *dir;
-
- dirname = g_path_get_dirname (path_super);
- name = g_path_get_basename (path_super);
- dir = vfs_s_find_inode (path_element->class, super, dirname, LINK_FOLLOW, FL_DIR);
- if (dir == NULL)
- {
- g_free (dirname);
- g_free (name);
- return NULL;
- }
- ent = vfs_s_generate_entry (path_element->class, name, dir, 0755);
- path_inode = ent->ino;
- vfs_s_insert_entry (path_element->class, dir, ent);
- g_free (dirname);
- g_free (name);
- is_changed = TRUE;
- }
-
- if (S_ISDIR (path_inode->st.st_mode))
- {
- path_element->class->verrno = EISDIR;
- return NULL;
- }
-
- fh = sftpfs_fh_new (path_inode, is_changed);
-
- if (!sftpfs_open_file (fh, flags, mode, &mcerror))
- {
- mc_error_message (&mcerror, NULL);
- g_free (fh);
- return NULL;
- }
-
- vfs_rmstamp (path_element->class, (vfsid) super);
- super->fd_usage++;
- fh->ino->st.st_nlink++;
- return fh;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for opening directory.
- *
- * @param vpath path to directory
- * @return directory data handler if success, NULL otherwise
- */
-
-static void *
-sftpfs_cb_opendir (const vfs_path_t * vpath)
-{
- GError *mcerror = NULL;
- void *ret_value;
-
- /* reset interrupt flag */
- tty_got_interrupt ();
-
- ret_value = sftpfs_opendir (vpath, &mcerror);
- mc_error_message (&mcerror, NULL);
- return ret_value;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for reading directory entry.
- *
- * @param data directory data handler
- * @return information about direntry if success, NULL otherwise
- */
-
-static struct vfs_dirent *
-sftpfs_cb_readdir (void *data)
-{
- GError *mcerror = NULL;
- struct vfs_dirent *sftpfs_dirent;
-
- if (tty_got_interrupt ())
- {
- tty_disable_interrupt_key ();
- return NULL;
- }
-
- sftpfs_dirent = sftpfs_readdir (data, &mcerror);
- if (!mc_error_message (&mcerror, NULL))
- {
- if (sftpfs_dirent != NULL)
- vfs_print_message (_("sftp: (Ctrl-G break) Listing... %s"), sftpfs_dirent->d_name);
- else
- vfs_print_message ("%s", _("sftp: Listing done."));
- }
-
- return sftpfs_dirent;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for closing directory.
- *
- * @param data directory data handler
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_closedir (void *data)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_closedir (data, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for lstat VFS-function.
- *
- * @param vpath path to file or directory
- * @param buf buffer for store stat-info
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_lstat (const vfs_path_t * vpath, struct stat *buf)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_lstat (vpath, buf, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for stat VFS-function.
- *
- * @param vpath path to file or directory
- * @param buf buffer for store stat-info
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_stat (const vfs_path_t * vpath, struct stat *buf)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_stat (vpath, buf, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for fstat VFS-function.
- *
- * @param data file data handler
- * @param buf buffer for store stat-info
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_fstat (void *data, struct stat *buf)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_fstat (data, buf, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for readlink VFS-function.
- *
- * @param vpath path to file or directory
- * @param buf buffer for store stat-info
- * @param size buffer size
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_readlink (const vfs_path_t * vpath, char *buf, size_t size)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_readlink (vpath, buf, size, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for utime VFS-function.
- *
- * @param vpath path to file or directory
- * @param times access and modification time to set
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_utime (const vfs_path_t * vpath, mc_timesbuf_t * times)
-{
- int rc;
- GError *mcerror = NULL;
-#ifdef HAVE_UTIMENSAT
- time_t atime = (*times)[0].tv_sec;
- time_t mtime = (*times)[1].tv_sec;
-#else
- time_t atime = times->actime;
- time_t mtime = times->modtime;
-#endif
-
- rc = sftpfs_utime (vpath, atime, mtime, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for symlink VFS-function.
- *
- * @param vpath1 path to file or directory
- * @param vpath2 path to symlink
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_symlink (vpath1, vpath2, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for symlink VFS-function.
- *
- * @param vpath unused
- * @param mode unused
- * @param dev unused
- * @return always 0
- */
-
-static int
-sftpfs_cb_mknod (const vfs_path_t * vpath, mode_t mode, dev_t dev)
-{
- (void) vpath;
- (void) mode;
- (void) dev;
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for link VFS-function.
- *
- * @param vpath1 unused
- * @param vpath2 unused
- * @return always 0
- */
-
-static int
-sftpfs_cb_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- (void) vpath1;
- (void) vpath2;
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for chown VFS-function.
- *
- * @param vpath unused
- * @param owner unused
- * @param group unused
- * @return always 0
- */
-
-static int
-sftpfs_cb_chown (const vfs_path_t * vpath, uid_t owner, gid_t group)
-{
- (void) vpath;
- (void) owner;
- (void) group;
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for reading file content.
- *
- * @param data file data handler
- * @param buffer buffer for data
- * @param count data size
- * @return 0 if success, negative value otherwise
- */
-
-static ssize_t
-sftpfs_cb_read (void *data, char *buffer, size_t count)
-{
- int rc;
- GError *mcerror = NULL;
- vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
-
- if (tty_got_interrupt ())
- {
- tty_disable_interrupt_key ();
- return 0;
- }
-
- rc = sftpfs_read_file (fh, buffer, count, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for writing file content.
- *
- * @param data file data handler
- * @param buf buffer for data
- * @param count data size
- * @return 0 if success, negative value otherwise
- */
-
-static ssize_t
-sftpfs_cb_write (void *data, const char *buf, size_t nbyte)
-{
- int rc;
- GError *mcerror = NULL;
- vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
-
- rc = sftpfs_write_file (fh, buf, nbyte, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for close file.
- *
- * @param data file data handler
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_close (void *data)
-{
- int rc;
- GError *mcerror = NULL;
- struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (data);
- vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
-
- super->fd_usage--;
- if (super->fd_usage == 0)
- vfs_stamp_create (sftpfs_class, super);
-
- rc = sftpfs_close_file (fh, &mcerror);
- mc_error_message (&mcerror, NULL);
-
- if (fh->handle != -1)
- close (fh->handle);
-
- vfs_s_free_inode (sftpfs_class, fh->ino);
-
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for chmod VFS-function.
- *
- * @param vpath path to file or directory
- * @param mode mode (see man 2 open)
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_chmod (const vfs_path_t * vpath, mode_t mode)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_chmod (vpath, mode, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for mkdir VFS-function.
- *
- * @param vpath path directory
- * @param mode mode (see man 2 open)
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_mkdir (const vfs_path_t * vpath, mode_t mode)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_mkdir (vpath, mode, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for rmdir VFS-function.
- *
- * @param vpath path directory
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_rmdir (const vfs_path_t * vpath)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_rmdir (vpath, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for lseek VFS-function.
- *
- * @param data file data handler
- * @param offset file offset
- * @param whence method of seek (at begin, at current, at end)
- * @return 0 if success, negative value otherwise
- */
-
-static off_t
-sftpfs_cb_lseek (void *data, off_t offset, int whence)
-{
- off_t ret_offset;
- vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
- GError *mcerror = NULL;
-
- ret_offset = sftpfs_lseek (fh, offset, whence, &mcerror);
- mc_error_message (&mcerror, NULL);
- return ret_offset;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for unlink VFS-function.
- *
- * @param vpath path to file or directory
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_unlink (const vfs_path_t * vpath)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_unlink (vpath, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for rename VFS-function.
- *
- * @param vpath1 path to source file or directory
- * @param vpath2 path to destination file or directory
- * @return 0 if success, negative value otherwise
- */
-
-static int
-sftpfs_cb_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- int rc;
- GError *mcerror = NULL;
-
- rc = sftpfs_rename (vpath1, vpath2, &mcerror);
- mc_error_message (&mcerror, NULL);
- return rc;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for errno VFS-function.
- *
- * @param me unused
- * @return value of errno global variable
- */
-
-static int
-sftpfs_cb_errno (struct vfs_class *me)
-{
- (void) me;
- return errno;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for fill_names VFS function.
- * Add SFTP connections to the 'Active VFS connections' list
- *
- * @param me unused
- * @param func callback function for adding SFTP-connection to list of active connections
- */
-
-static void
-sftpfs_cb_fill_names (struct vfs_class *me, fill_names_f func)
-{
- GList *iter;
-
- (void) me;
-
- for (iter = sftpfs_subclass.supers; iter != NULL; iter = g_list_next (iter))
- {
- const struct vfs_s_super *super = (const struct vfs_s_super *) iter->data;
- char *name;
-
- name = vfs_path_element_build_pretty_path_str (super->path_element);
-
- func (name);
- g_free (name);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Initialization of VFS class structure.
- *
- * @return the VFS class structure.
- */
-
-void
-sftpfs_init_class (void)
-{
- sftpfs_class->init = sftpfs_cb_init;
- sftpfs_class->done = sftpfs_cb_done;
-
- sftpfs_class->fill_names = sftpfs_cb_fill_names;
-
- sftpfs_class->opendir = sftpfs_cb_opendir;
- sftpfs_class->readdir = sftpfs_cb_readdir;
- sftpfs_class->closedir = sftpfs_cb_closedir;
- sftpfs_class->mkdir = sftpfs_cb_mkdir;
- sftpfs_class->rmdir = sftpfs_cb_rmdir;
-
- sftpfs_class->stat = sftpfs_cb_stat;
- sftpfs_class->lstat = sftpfs_cb_lstat;
- sftpfs_class->fstat = sftpfs_cb_fstat;
- sftpfs_class->readlink = sftpfs_cb_readlink;
- sftpfs_class->symlink = sftpfs_cb_symlink;
- sftpfs_class->link = sftpfs_cb_link;
- sftpfs_class->utime = sftpfs_cb_utime;
- sftpfs_class->mknod = sftpfs_cb_mknod;
- sftpfs_class->chown = sftpfs_cb_chown;
- sftpfs_class->chmod = sftpfs_cb_chmod;
-
- sftpfs_class->open = sftpfs_cb_open;
- sftpfs_class->read = sftpfs_cb_read;
- sftpfs_class->write = sftpfs_cb_write;
- sftpfs_class->close = sftpfs_cb_close;
- sftpfs_class->lseek = sftpfs_cb_lseek;
- sftpfs_class->unlink = sftpfs_cb_unlink;
- sftpfs_class->rename = sftpfs_cb_rename;
- sftpfs_class->ferrno = sftpfs_cb_errno;
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/sftpfs/vfs_subclass.c
^
|
@@ -1,201 +0,0 @@
-/* Virtual File System: SFTP file system.
- The VFS subclass functions
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Written by:
- Ilia Maslakov <il.smind@gmail.com>, 2011
- Slava Zanko <slavazanko@gmail.com>, 2011, 2012, 2013
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h> /* memset() */
-
-#include "lib/global.h"
-#include "lib/widget.h"
-#include "lib/vfs/utilvfs.h"
-
-#include "internal.h"
-
-/*** global variables ****************************************************************************/
-
-/*** file scope macro definitions ****************************************************************/
-
-/*** file scope type declarations ****************************************************************/
-
-/*** file scope variables ************************************************************************/
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for checking if connection is equal to existing connection.
- *
- * @param vpath_element path element with connetion data
- * @param super data with exists connection
- * @param vpath unused
- * @param cookie unused
- * @return TRUE if connections is equal, FALSE otherwise
- */
-
-static gboolean
-sftpfs_cb_is_equal_connection (const vfs_path_element_t * vpath_element, struct vfs_s_super *super,
- const vfs_path_t * vpath, void *cookie)
-{
- int result;
- vfs_path_element_t *orig_connect_info;
-
- (void) vpath;
- (void) cookie;
-
- orig_connect_info = SFTP_SUPER (super)->original_connection_info;
-
- result = ((g_strcmp0 (vpath_element->host, orig_connect_info->host) == 0)
- && (g_strcmp0 (vpath_element->user, orig_connect_info->user) == 0)
- && (vpath_element->port == orig_connect_info->port));
-
- return result;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static struct vfs_s_super *
-sftpfs_cb_init_connection (struct vfs_class *me)
-{
- sftpfs_super_t *arch;
-
- arch = g_new0 (sftpfs_super_t, 1);
- arch->base.me = me;
- arch->base.name = g_strdup (PATH_SEP_STR);
- arch->auth_type = NONE;
- arch->config_auth_type = NONE;
- arch->socket_handle = LIBSSH2_INVALID_SOCKET;
-
- return VFS_SUPER (arch);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for opening new connection.
- *
- * @param super connection data
- * @param vpath unused
- * @param vpath_element path element with connetion data
- * @return 0 if success, -1 otherwise
- */
-
-static int
-sftpfs_cb_open_connection (struct vfs_s_super *super,
- const vfs_path_t * vpath, const vfs_path_element_t * vpath_element)
-{
- GError *mcerror = NULL;
- sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
- int ret_value;
-
- (void) vpath;
-
- if (vpath_element->host == NULL || *vpath_element->host == '\0')
- {
- vfs_print_message ("%s", _("sftp: Invalid host name."));
- vpath_element->class->verrno = EPERM;
- return -1;
- }
-
- sftpfs_super->original_connection_info = vfs_path_element_clone (vpath_element);
- super->path_element = vfs_path_element_clone (vpath_element);
-
- sftpfs_fill_connection_data_from_config (super, &mcerror);
- if (mc_error_message (&mcerror, &ret_value))
- {
- vpath_element->class->verrno = ret_value;
- return -1;
- }
-
- super->root =
- vfs_s_new_inode (vpath_element->class, super,
- vfs_s_default_stat (vpath_element->class, S_IFDIR | 0755));
-
- ret_value = sftpfs_open_connection (super, &mcerror);
- mc_error_message (&mcerror, NULL);
- return ret_value;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for closing connection.
- *
- * @param me unused
- * @param super connection data
- */
-
-static void
-sftpfs_cb_close_connection (struct vfs_class *me, struct vfs_s_super *super)
-{
- GError *mcerror = NULL;
-
- (void) me;
- sftpfs_close_connection (super, "Normal Shutdown", &mcerror);
-
- vfs_path_element_free (SFTP_SUPER (super)->original_connection_info);
-
- mc_error_message (&mcerror, NULL);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Callback for getting directory content.
- *
- * @param me unused
- * @param dir unused
- * @param remote_path unused
- * @return always 0
- */
-
-static int
-sftpfs_cb_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path)
-{
- (void) me;
- (void) dir;
- (void) remote_path;
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Initialization of VFS subclass structure.
- *
- * @return VFS subclass structure.
- */
-
-void
-sftpfs_init_subclass (void)
-{
- sftpfs_subclass.archive_same = sftpfs_cb_is_equal_connection;
- sftpfs_subclass.new_archive = sftpfs_cb_init_connection;
- sftpfs_subclass.open_archive = sftpfs_cb_open_connection;
- sftpfs_subclass.free_archive = sftpfs_cb_close_connection;
- sftpfs_subclass.fh_new = sftpfs_fh_new;
- sftpfs_subclass.dir_load = sftpfs_cb_dir_load;
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/Makefile.am
^
|
@@ -1,86 +0,0 @@
-DIST_SUBDIRS =
-
-SUBDIRS = helpers
-
-AM_CPPFLAGS = \
- -DCONFIGDIR=\""@smbconfigdir@"\" \
- $(GLIB_CFLAGS) \
- -I$(top_srcdir)
-
-noinst_LTLIBRARIES = libvfs-smbfs.la
-
-libvfs_smbfs_la_SOURCES = \
- smbfs.c smbfs.h
-
-SAMBA_DIST = \
- Makefile.in \
- aclocal.m4 \
- configure.ac \
- configure \
- internals.doc \
- parsing.doc \
- include/byteorder.h \
- include/charset.h \
- include/client.h \
- include/config.h.in \
- include/includes.h \
- include/kanji.h \
- include/local.h \
- include/nameserv.h \
- include/nterr.h \
- include/proto.h \
- include/smb.h \
- include/stamp-h.in \
- include/trans2.h \
- include/version.h \
- lib/charcnv.c \
- lib/charset.c \
- lib/debug.c \
- lib/interface.c \
- lib/kanji.c \
- lib/md4.c \
- lib/netmask.c \
- lib/slprintf.c \
- lib/system.c \
- lib/time.c \
- lib/username.c \
- lib/util.c \
- lib/util_file.c \
- lib/util_sock.c \
- lib/util_str.c \
- libsmb/clientgen.c \
- libsmb/namequery.c \
- libsmb/nmblib.c \
- libsmb/nterr.c \
- libsmb/pwd_cache.c \
- libsmb/smbdes.c \
- libsmb/smbencrypt.c \
- libsmb/smberr.c \
- param/loadparm.c \
- param/params.c
-
-dist-hook:
- $(mkinstalldirs) $(distdir)/helpers
- $(mkinstalldirs) $(distdir)/helpers/include
- $(mkinstalldirs) $(distdir)/helpers/lib
- $(mkinstalldirs) $(distdir)/helpers/libsmb
- $(mkinstalldirs) $(distdir)/helpers/param
- for I in $(SAMBA_DIST); do \
- cp -p $(srcdir)/helpers/$$I $(distdir)/helpers/$$I || exit 1; \
- done
-
-mostlyclean-local:
- if test -f helpers/Makefile; then \
- (cd helpers && $(MAKE) mostlyclean) \
- else :; fi
-
-clean-local:
- if test -f helpers/Makefile; then \
- (cd helpers && $(MAKE) clean) \
- else :; fi
-
-distclean-local:
- if test -f helpers/Makefile; then \
- (cd helpers && $(MAKE) distclean) \
- else :; fi
-
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/Makefile.in
^
|
@@ -1,171 +0,0 @@
-###########################################################################
-# Makefile.in for Samba - rewritten for autoconf support
-# Copyright Andrew Tridgell 1992-1998
-###########################################################################
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-mandir=@mandir@
-
-CC=@CC@
-CFLAGS=@CFLAGS@
-CPPFLAGS=@CPPFLAGS@
-LDFLAGS=@LDFLAGS@
-AWK=@AWK@
-AR=@AR@
-
-INSTALLCMD=@INSTALL@
-
-VPATH=@srcdir@
-srcdir=@srcdir@
-builddir=@builddir@
-SHELL=@SHELL@
-
-BASEDIR= @prefix@
-LIBDIR = @libdir@
-VARDIR = @localstatedir@
-
-# The permissions to give the executables
-INSTALLPERMS = 0755
-
-# set these to where to find various files
-# These can be overridden by command line switches (see smbd(8))
-# or in smb.conf (see smb.conf(5))
-CONFIGFILE = @configdir@/smb.conf
-LMHOSTSFILE = @configdir@/lmhosts
-DRIVERFILE = $(LIBDIR)/printers.def
-
-# The directory where code page definition files go
-CODEPAGEDIR = @codepagedir@
-
-FLAGS1 = $(CFLAGS) -Iinclude -I$(srcdir)/include $(CPPFLAGS)
-FLAGS2 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\"
-FLAGS3 = -DCODEPAGEDIR=\"$(CODEPAGEDIR)\"
-FLAGS4 = -DDRIVERFILE=\"$(DRIVERFILE)\"
-FLAGS = $(ISA) $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
-
-######################################################################
-# object file lists
-######################################################################
-
-SAMBAFILES= \
- param/loadparm.o \
- param/params.o \
- lib/time.o \
- lib/slprintf.o \
- lib/util.o \
- lib/debug.o \
- lib/system.o \
- lib/util_str.o \
- lib/kanji.o \
- lib/charcnv.o \
- lib/charset.o \
- lib/username.o \
- lib/util_file.o \
- lib/util_sock.o \
- lib/md4.o \
- lib/interface.o \
- lib/netmask.o \
- libsmb/clientgen.o \
- libsmb/pwd_cache.o \
- libsmb/smbencrypt.o \
- libsmb/smbdes.o \
- libsmb/nmblib.o \
- libsmb/namequery.o\
- libsmb/nterr.o \
- libsmb/smberr.o
-
-######################################################################
-# now the rules...
-######################################################################
-
-all : CHECK libsamba.a
-
-.SUFFIXES:
-.SUFFIXES: .c .o
-
-CHECK:
- @echo "Using FLAGS = $(FLAGS)"
-
-MAKEDIR = || exec false; \
- if test -d "$$dir"; then :; else \
- echo mkdir "$$dir"; \
- mkdir -p "$$dir" >/dev/null 2>&1 || \
- test -d "$$dir" || \
- mkdir "$$dir" || \
- exec false; fi || exec false
-
-libsamba.a: $(SAMBAFILES)
- $(AR) cr libsamba.a $(SAMBAFILES)
-
-.c.o:
- @if (: >> $@ || : > $@) >/dev/null 2>&1; then rm -f $@; else \
- dir=`echo $@ | sed 's,/[^/]*$$,,;s,^$$,.,'` $(MAKEDIR); fi
- @echo Compiling $*.c
- @$(CC) -I. -I$(srcdir) $(FLAGS) -c $< \
- -o $@
-@BROKEN_CC@ -mv `echo $@ | sed 's%^.*/%%g'` $@
-
-etags:
- etags `find . -name "*.[ch]"`
-
-ctags:
- ctags `find . -name "*.[ch]"`
-
-mostlyclean:
- rm -f core */*~ *~ */*.o config.log
-
-clean: mostlyclean
- rm -f *.a
-
-distclean: clean
- rm -f config.log
- rm -f include/config.h include/stamp-h Makefile
- rm -f config.status config.cache so_locations
-
-# this target is really just for my use. It only works on a limited
-# range of machines and is used to produce a list of potentially
-# dead (ie. unused) functions in the code. (tridge)
-finddead:
- nm */*.o |grep 'U ' | awk '{print $$2}' | sort -u > nmused.txt
- nm */*.o |grep 'T ' | awk '{print $$3}' | sort -u > nmfns.txt
- comm -13 nmused.txt nmfns.txt
-
-# Rules for maintainers (--enable-maintainer-mode)
-AUTOCONF=@AUTOCONF@
-AUTOHEADER=@AUTOHEADER@
-
-# when configure.ac is updated, reconfigure
-$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/aclocal.m4
- cd $(srcdir) && $(AUTOCONF)
-
-config.status: $(srcdir)/configure
- $(SHELL) ./config.status --recheck
-
-Makefile: $(srcdir)/Makefile.in config.status \
- include/stamp-h # just to ensure that config.h is up-to-date
- CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-# note that nothing depends on config.h, so will probably be rebuilt
-# only when explicitly requested, unless dependency tracking is enabled
-include/config.h: include/stamp-h
- @:
-
-include/stamp-h: $(srcdir)/include/config.h.in config.status
- CONFIG_FILES= CONFIG_HEADERS=include/config.h $(SHELL) ./config.status
- @echo > include/stamp-h
-
-$(srcdir)/include/config.h.in: $(srcdir)/include/stamp-h.in
- @:
-
-$(srcdir)/include/stamp-h.in: @MAINT@ $(srcdir)/configure.ac
- cd $(srcdir) && $(AUTOHEADER)
- @date -u > $@
-
-# Added for compatibility with Automake-generated makefiles
-distdir:
-dvi:
-check:
-install:
-installcheck:
-uninstall:
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/aclocal.m4
^
|
@@ -1,61 +0,0 @@
-dnl AC_VALIDATE_CACHE_SYSTEM_TYPE[(cmd)]
-dnl if the cache file is inconsistent with the current host,
-dnl target and build system types, execute CMD or print a default
-dnl error message.
-AC_DEFUN([AC_VALIDATE_CACHE_SYSTEM_TYPE], [
- AC_REQUIRE([AC_CANONICAL_SYSTEM])
- AC_MSG_CHECKING([config.cache system type])
- if { test x"${ac_cv_host_system_type+set}" = x"set" &&
- test x"$ac_cv_host_system_type" != x"$host"; } ||
- { test x"${ac_cv_build_system_type+set}" = x"set" &&
- test x"$ac_cv_build_system_type" != x"$build"; } ||
- { test x"${ac_cv_target_system_type+set}" = x"set" &&
- test x"$ac_cv_target_system_type" != x"$target"; }; then
- AC_MSG_RESULT([different])
- ifelse($#, 1, [$1],
- [AC_MSG_ERROR([you must remove config.cache and restart configure])])
- else
- AC_MSG_RESULT([same])
- fi
- ac_cv_host_system_type="$host"
- ac_cv_build_system_type="$build"
- ac_cv_target_system_type="$target"
-])
-
-dnl based on Automake's maintainer mode
-AC_DEFUN([SAMBA_MAINTAINER_MODE],[
- AC_ARG_ENABLE(maintainer-mode,
- [ --enable-maintainer-mode enable some make rules for maintainers],
- maint_mode=$enableval, maint_mode=no)
- if test x"$maint_mode" = x"yes"; then MAINT=; else MAINT='#'; fi
- AC_SUBST(MAINT)
- AC_PATH_PROG(AUTOCONF, autoconf, autoconf)
- AC_SUBST(AUTOCONF)
- AC_PATH_PROG(AUTOHEADER, autoheader, autoheader)
- AC_SUBST(AUTOHEADER)
-])
-
-
-dnl AC_PROG_CC_FLAG(flag)
-AC_DEFUN([AC_PROG_CC_FLAG],
-[AC_CACHE_CHECK([whether ${CC-cc} accepts -$1], ac_cv_prog_cc_$1,
-[echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -$1 -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_$1=yes
-else
- ac_cv_prog_cc_$1=no
-fi
-rm -f conftest*
-])])
-
-dnl check for a function in a library, but don't
-dnl keep adding the same library to the LIBS variable.
-dnl AC_LIBTESTFUNC(lib,func)
-AC_DEFUN([AC_LIBTESTFUNC],
-[case "$LIBS" in
- *-l$1*) AC_CHECK_FUNCS($2) ;;
- *) AC_CHECK_LIB($1, $2)
- AC_CHECK_FUNCS($2)
- ;;
- esac
-])
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/configure.ac
^
|
@@ -1,573 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(include/includes.h)
-AC_PREREQ(2.52)
-AC_CONFIG_HEADER(include/config.h)
-AC_CONFIG_AUX_DIR(../../../../config)
-# we want to be compatibe with older versions of Samba
-AC_PREFIX_DEFAULT(/usr/local/samba)
-AC_SYS_LARGEFILE
-
-dnl Unique-to-Samba variables we'll be playing with.
-AC_SUBST(SHELL)
-AC_SUBST(MPROGS)
-AC_SUBST(LDSHFLAGS)
-AC_SUBST(HOST_OS)
-AC_SUBST(WRAP)
-AC_SUBST(WRAP32)
-
-# compile with optimization and without debugging by default
-CFLAGS=${CFLAGS-"-O"}
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_AWK
-AC_CHECK_TOOL(AR, ar, ar)
-
-dnl Check if C compiler understands -c and -o at the same time
-AC_PROG_CC_C_O
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
- BROKEN_CC=
-else
- BROKEN_CC=#
-fi
-AC_SUBST(BROKEN_CC)
-
-AC_CANONICAL_HOST
-AC_VALIDATE_CACHE_SYSTEM_TYPE
-SAMBA_MAINTAINER_MODE
-
-AC_INLINE
-AC_HEADER_DIRENT
-AC_HEADER_TIME
-AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
-AC_CHECK_HEADERS(unistd.h utime.h sys/id.h limits.h memory.h net/if.h)
-AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
-AC_CHECK_HEADERS(sys/param.h ctype.h sys/resource.h sys/ioctl.h sys/mode.h)
-AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h string.h strings.h sys/socket.h)
-AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h)
-AC_CHECK_HEADERS(sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
-AC_CHECK_HEADERS(netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
-AC_CHECK_HEADERS(sys/security.h security/pam_appl.h)
-AC_CHECK_HEADERS(stropts.h poll.h syscall.h sys/syscall.h)
-AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h)
-
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(off_t)
-AC_CHECK_SIZEOF(ino_t)
-
-AC_C_CONST
-AC_C_INLINE
-AC_C_BIGENDIAN
-AC_C_CHAR_UNSIGNED
-
-AC_TYPE_SIGNAL
-AC_TYPE_UID_T
-AC_TYPE_MODE_T
-AC_TYPE_OFF_T
-AC_TYPE_SIZE_T
-AC_TYPE_PID_T
-AC_CHECK_TYPE(ino_t,unsigned)
-AC_CHECK_TYPE(loff_t,off_t)
-AC_CHECK_TYPE(offset_t,off_t)
-AC_CHECK_TYPE(ssize_t, int)
-
-# we need libdl for PAM and the new VFS code
-AC_CHECK_LIB(dl,main)
-
-# stupid glibc has the functions but no declaration. grrrr.
-AC_CACHE_CHECK([for crypt declaration],samba_cv_have_crypt_decl,[
- AC_TRY_COMPILE([#include <unistd.h>],[int i = (int)crypt],
- samba_cv_have_crypt_decl=yes,samba_cv_have_crypt_decl=no)])
-if test x"$samba_cv_have_crypt_decl" = x"yes"; then
- AC_DEFINE(HAVE_CRYPT_DECL, 1, [Define if crypt() is declared])
-fi
-
-AC_FUNC_MEMCMP
-
-###############################################
-# test for where we get crypt() from
-AC_CHECK_FUNCS(crypt)
-if test x"$ac_cv_func_crypt" = x"no"; then
- AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
- AC_DEFINE(HAVE_CRYPT)])
-fi
-
-
-# The following test taken from the cvs sources
-# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
-# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
-# libsocket.so which has a bad implementation of gethostbyname (it
-# only looks in /etc/hosts), so we only look for -lsocket if we need
-# it.
-AC_CHECK_FUNCS(connect)
-if test x"$ac_cv_func_connect" = x"no"; then
- case "$LIBS" in
- *-lnsl*) ;;
- *) AC_CHECK_LIB(nsl_s, printf) ;;
- esac
- case "$LIBS" in
- *-lnsl*) ;;
- *) AC_CHECK_LIB(nsl, printf) ;;
- esac
- case "$LIBS" in
- *-lsocket*) ;;
- *) AC_CHECK_LIB(socket, connect) ;;
- esac
- case "$LIBS" in
- *-linet*) ;;
- *) AC_CHECK_LIB(inet, connect) ;;
- esac
- dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
- dnl has been cached.
- if test x"$ac_cv_lib_socket_connect" = x"yes" ||
- test x"$ac_cv_lib_inet_connect" = x"yes"; then
- # ac_cv_func_connect=yes
- # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
- AC_DEFINE(HAVE_CONNECT)
- fi
-fi
-
-AC_CHECK_FUNCS(waitpid getcwd strtoul chown chmod)
-AC_CHECK_FUNCS(fstat utime utimes getrlimit fsync memset)
-AC_CHECK_FUNCS(memmove vsnprintf snprintf setsid pipe crypt16 getauthuid)
-AC_CHECK_FUNCS(sigprocmask sigblock sigaction innetgr setnetgrent getnetgrent endnetgrent)
-AC_CHECK_FUNCS(initgroups select rdchk getgrnam pathconf)
-AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups mktime rename)
-AC_CHECK_FUNCS(grantpt dup2 yp_get_default_domain getpwanam)
-AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp)
-
-AC_CHECK_FUNCS(getdents)
-AC_CHECK_FUNCS(llseek)
-
-#
-# If no strcasecmp, check for it in some known places
-# It is in -lresolv on ReliantUNIX and UnixWare
-# -lresolve *must* follow -lnsl for name resolution to work properly
-#
-
-if test x$ac_cv_func_strcasecmp = xno ; then
- AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
- AC_DEFINE(HAVE_STRCASECMP))
-fi
-
-#
-# Check for the functions putprpwnam, set_auth_parameters,
-# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
-# Needed for OSF1 and HPUX.
-#
-
-AC_LIBTESTFUNC(security, putprpwnam)
-AC_LIBTESTFUNC(sec, putprpwnam)
-
-AC_LIBTESTFUNC(security, set_auth_parameters)
-AC_LIBTESTFUNC(sec, set_auth_parameters)
-
-AC_LIBTESTFUNC(security, getspnam)
-AC_LIBTESTFUNC(sec, getspnam)
-
-AC_LIBTESTFUNC(security, bigcrypt)
-AC_LIBTESTFUNC(sec, bigcrypt)
-
-AC_LIBTESTFUNC(security, getprpwnam)
-AC_LIBTESTFUNC(sec, getprpwnam)
-
-# this bit needs to be modified for each OS that is suported by
-# smbwrapper. You need to specify how to created a shared library and
-# how to compile C code to produce PIC object files
-
-# these are the defaults, good for lots of systems
-HOST_OS="$host_os"
-LDSHFLAGS="-shared"
-
-# and these are for particular systems
-case "$host_os" in
- *linux*) AC_DEFINE(LINUX, 1, [Define on Linux]);;
- *solaris*) AC_DEFINE(SUNOS5, 1, [Define on SunOS 5 (Solaris)])
- LDSHFLAGS="-G"
- ;;
- *sunos*) AC_DEFINE(SUNOS4, 1, [Define on SunOS 4])
- LDSHFLAGS=""
- ;;
- *bsd*) LDSHFLAGS="-shared -Bshareable"
- ;;
- *irix*) AC_DEFINE(IRIX, 1, [Define on IRIX])
- case "$host_os" in
- *irix6*) AC_DEFINE(IRIX6, 1, [Define on IRIX 6])
- ;;
- esac
- ATTEMPT_WRAP32_BUILD=yes
- ;;
- *aix*) AC_DEFINE(AIX, 1, [Define on AIX]);;
- *hpux*) AC_DEFINE(HPUX, 1, [Define on HP-UX]);;
- *qnx*) AC_DEFINE(QNX, 1, [Define on QNX]);;
- *osf*) AC_DEFINE(OSF1, 1, [Define on OSF1]);;
- *sco*) AC_DEFINE(SCO, 1, [Define on SCO]);;
- *next2*) AC_DEFINE(NEXT2, 1, [Define on NeXT 2]);;
- *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
- *sysv4*)
- case "$host" in
- *-univel-*) if [ test "$GCC" != yes ]; then
- AC_DEFINE(HAVE_MEMSET)
- fi
- LDSHFLAGS="-G"
- ;;
- esac
- ;;
- *sysv5*)
- if [ test "$GCC" != yes ]; then
- AC_DEFINE(HAVE_MEMSET)
- fi
- LDSHFLAGS="-G"
- ;;
-esac
-
-################
-
-AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
-AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
-samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
-if test x"$samba_cv_have_longlong" = x"yes"; then
- AC_DEFINE(HAVE_LONGLONG, 1, [Define if long long is usable])
-fi
-
-AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>],
-[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
-samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
-if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
- AC_DEFINE(HAVE_SOCK_SIN_LEN, 1, [Define if struct sockaddr_in has sin_len field])
-fi
-
-AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
-AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
-samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
-if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
- AC_DEFINE(HAVE_FILE_MACRO, 1, [Define if __FILE__ macro is supported])
-fi
-
-AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
-AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
-samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
-if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
- AC_DEFINE(HAVE_FUNCTION_MACRO, 1, [Define if __FUNCTION__ macro is supported])
-fi
-
-AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
-AC_TRY_RUN([
-#include <sys/time.h>
-#include <unistd.h>
-#include <stdlib.h>
-main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
- samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
-if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
- AC_DEFINE(HAVE_GETTIMEOFDAY_TZ, 1, [Define if gettimeofday takes tz argument])
-fi
-
-
-AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
-AC_TRY_RUN([
-#include <sys/types.h>
-#include <stdlib.h>
-#include <dirent.h>
-main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
-if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
-di->d_name[0] == 0) exit(0); exit(1);} ],
-samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
-if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
- AC_DEFINE(HAVE_BROKEN_READDIR, 1, [Define if readdir() is broken])
-fi
-
-AC_CACHE_CHECK([for kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <fcntl.h>],
-[oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
-samba_cv_HAVE_KERNEL_OPLOCKS=yes,samba_cv_HAVE_KERNEL_OPLOCKS=no)])
-if test x"$samba_cv_HAVE_KERNEL_OPLOCKS" = x"yes"; then
- AC_DEFINE(HAVE_KERNEL_OPLOCKS, 1, [Define to use kernel oplock capabilities])
-fi
-
-#
-# Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
-# This is *really* broken but some systems (DEC OSF1) do this.... JRA.
-#
-
-AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif],
-[int16 testvar;],
-samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
-if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
- AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H, 1, [Define if rpc/rpc.h defines int16])
-fi
-
-AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif],
-[uint16 testvar;],
-samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
-if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
- AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H, 1, [Define if rpc/rpc.h defines uint16])
-fi
-
-AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif],
-[int32 testvar;],
-samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
-if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
- AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H, 1, [Define if rpc/rpc.h defines int32])
-fi
-
-AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif],
-[uint32 testvar;],
-samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
-if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
- AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H, 1, [Define if rpc/rpc.h defines uint32])
-fi
-
-dnl
-dnl Some systems (SCO) have a problem including
-dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
-dnl as a #define in <prot.h> and as part of an enum
-dnl in <rpc/rpc.h>.
-dnl
-
-AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#ifdef HAVE_SYS_SECURITY_H
-#include <sys/security.h>
-#include <prot.h>
-#endif /* HAVE_SYS_SECURITY_H */
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif],
-[int testvar;],
-samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
-if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
- AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT, 1, [Define if rpc/rpc.h defines AUTH_ERROR])
-fi
-
-netmask=no;
-AC_CACHE_CHECK([for netmask ifconf],samba_cv_HAVE_NETMASK_IFCONF,[
-AC_TRY_RUN([
-#define HAVE_NETMASK_IFCONF 1
-#define AUTOCONF 1
-#include "confdefs.h"
-#include "${srcdir-.}/lib/netmask.c"],
- samba_cv_HAVE_NETMASK_IFCONF=yes,samba_cv_HAVE_NETMASK_IFCONF=no,samba_cv_HAVE_NETMASK_IFCONF=cross)])
-if test x"$samba_cv_HAVE_NETMASK_IFCONF" = x"yes"; then
- netmask=yes;AC_DEFINE(HAVE_NETMASK_IFCONF, 1, [Define to use IFCONF style netmask])
-fi
-
-if test $netmask = no; then
-AC_CACHE_CHECK([for netmask ifreq],samba_cv_HAVE_NETMASK_IFREQ,[
-AC_TRY_RUN([
-#define HAVE_NETMASK_IFREQ 1
-#define AUTOCONF 1
-#include "confdefs.h"
-#include "${srcdir-.}/lib/netmask.c"],
- samba_cv_HAVE_NETMASK_IFREQ=yes,samba_cv_HAVE_NETMASK_IFREQ=no,samba_cv_HAVE_NETMASK_IFREQ=cross)])
-if test x"$samba_cv_HAVE_NETMASK_IFREQ" = x"yes"; then
- netmask=yes;AC_DEFINE(HAVE_NETMASK_IFREQ, 1, [Define to use IFREQ style netmask])
-fi
-fi
-
-if test $netmask = no; then
-AC_CACHE_CHECK([for netmask AIX],samba_cv_HAVE_NETMASK_AIX,[
-AC_TRY_RUN([
-#define HAVE_NETMASK_AIX 1
-#define AUTOCONF 1
-#include "confdefs.h"
-#include "${srcdir-.}/lib/netmask.c"],
- samba_cv_HAVE_NETMASK_AIX=yes,samba_cv_HAVE_NETMASK_AIX=no,samba_cv_HAVE_NETMASK_AIX=cross)])
-if test x"$samba_cv_HAVE_NETMASK_AIX" = x"yes"; then
- netmask=yes;AC_DEFINE(HAVE_NETMASK_AIX, 1, [Define to use AIX style netmask])
-fi
-fi
-
-
-AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
-AC_TRY_COMPILE([#include <sys/acl.h>
-#if defined(HAVE_RPCSVC_NIS_H)
-#include <rpcsvc/nis.h>
-#endif],
-[return 0;],
-samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
-if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
- AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES, 1,
- [Define if sys/acl.h and rpcsvc/nis.h cannot be included together])
-fi
-
-
-#################################################
-# check for a LDAP password database
-AC_MSG_CHECKING([whether to use LDAP password database])
-AC_ARG_WITH(ldap,
-[ --with-ldap Include LDAP support
- --without-ldap Don't include LDAP support (default)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_LDAP, 1, [Define to enable LDAP support])
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-#################################################
-# check for a NISPLUS password database
-AC_MSG_CHECKING([whether to use NISPLUS password database])
-AC_ARG_WITH(nisplus,
-[ --with-nisplus Include NISPLUS password database support
- --without-nisplus Don't include NISPLUS password database support (default)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_NISPLUS, 1, [Define to enable NIS+ support])
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-#################################################
-# check for a NISPLUS_HOME support
-AC_MSG_CHECKING([whether to use NISPLUS_HOME])
-AC_ARG_WITH(nisplus-home,
-[ --with-nisplus-home Include NISPLUS_HOME support
- --without-nisplus-home Don't include NISPLUS_HOME support (default)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_NISPLUS_HOME, 1, [Define to support NISPLUS_HOME variable])
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-#################################################
-# check for the secure socket layer
-AC_MSG_CHECKING([whether to use SSL])
-AC_ARG_WITH(ssl,
-[ --with-ssl Include SSL support
- --without-ssl Don't include SSL support (default)
- --with-sslinc=DIR Where the SSL includes are (defaults to /usr/local/ssl)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_SSL, 1, [Define to enable SSL support])
- withval="/usr/local/ssl" # default
-
- if test "${with_sslinc+set}" = set; then
-
- withval="$with_sslinc"
- case "$withval" in
- yes|no)
- AC_MSG_WARN([--with-sslinc called without argument - will use default])
- CFLAGS="-I/usr/local/ssl/include $CFLAGS"
- LIBS="-lssl -lcrypto $LIBS"
- LDFLAGS="=L/usr/local/ssl/lib $LDFLAGS"
- ;;
- * )
- CFLAGS="-I${withval}/include $CFLAGS"
- LIBS="-lssl -l crypto $LIBS"
- LDFLAGS="-L${withval}/lib $LDFLAGS"
- ;;
- esac
-
- else
-
- CFLAGS="-I/usr/local/ssl/include $CFLAGS"
- LIBS="-lssl -lcrypto $LIBS"
- LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
-
- fi
-
- if test ! -d ${withval}; then
- AC_MSG_ERROR([called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config])
- fi
-
- CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS" # Damn, SSLeay defines its own
-
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-####################################################
-# get variables from parent process (main configure)
-# set configuration directory location
-if test -n "$SMBCONFIGDIR"; then
- configdir="$SMBCONFIGDIR"
-else
- configdir="\$(LIBDIR)"
-fi
-# set codepage directory location
-if test -n "$SMBCODEPAGEDIR"; then
- codepagedir="$SMBCODEPAGEDIR"
-elif test -n "$SMBCONFIGDIR"; then
- codepagedir="$SMBCONFIGDIR/codepages"
-else
- codepagedir="\$(LIBDIR)/codepages"
-fi
-####################################################
-
-AC_MSG_CHECKING([configure summary])
-AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-main()
-{
-#if !(defined(HAVE_NETMASK_IFCONF) || defined(HAVE_NETMASK_IFREQ) || defined(HAVE_NETMASK_AIX))
- printf("WARNING: No automated netmask determination - use an interfaces line\n");
-#endif
-
-#if !((defined(HAVE_RANDOM) || defined(HAVE_RAND)) && (defined(HAVE_SRANDOM) || defined(HAVE_SRAND)))
- printf("ERROR: No random or srandom routine!\n");
- exit(1);
-#endif
-
- exit(0);
-}
-],
- AC_MSG_RESULT(OK);,
- AC_MSG_RESULT(failure)
- AC_MSG_ERROR([Aborting config]),:)
-
-builddir=`pwd`
-AC_SUBST(builddir)
-AC_SUBST(configdir)
-AC_SUBST(codepagedir)
-
-AC_OUTPUT([include/stamp-h Makefile])
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/byteorder.h
^
|
@@ -1,211 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB Byte handling
- */
-
-#ifndef _BYTEORDER_H
-#define _BYTEORDER_H
-
-/*
- This file implements macros for machine independent short and
- int manipulation
-
- Here is a description of this file that I emailed to the samba list once:
-
- > I am confused about the way that byteorder.h works in Samba. I have
- > looked at it, and I would have thought that you might make a distinction
- > between LE and BE machines, but you only seem to distinguish between 386
- > and all other architectures.
- >
- > Can you give me a clue?
-
- sure.
-
- The distinction between 386 and other architectures is only there as
- an optimisation. You can take it out completely and it will make no
- difference. The routines (macros) in byteorder.h are totally byteorder
- independent. The 386 optimsation just takes advantage of the fact that
- the x86 processors don't care about alignment, so we don't have to
- align ints on int boundaries etc. If there are other processors out
- there that aren't alignment sensitive then you could also define
- CAREFUL_ALIGNMENT=0 on those processors as well.
-
- Ok, now to the macros themselves. I'll take a simple example, say we
- want to extract a 2 byte integer from a SMB packet and put it into a
- type called uint16 that is in the local machines byte order, and you
- want to do it with only the assumption that uint16 is _at_least_ 16
- bits long (this last condition is very important for architectures
- that don't have any int types that are 2 bytes long)
-
- You do this:
-
- #define CVAL(buf,pos) (((unsigned char *)(buf))[pos])
- #define PVAL(buf,pos) ((unsigned)CVAL(buf,pos))
- #define SVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+1)<<8)
-
- then to extract a uint16 value at offset 25 in a buffer you do this:
-
- char *buffer = foo_bar();
- uint16 xx = SVAL(buffer,25);
-
- We are using the byteoder independence of the ANSI C bitshifts to do
- the work. A good optimising compiler should turn this into efficient
- code, especially if it happens to have the right byteorder :-)
-
- I know these macros can be made a bit tidier by removing some of the
- casts, but you need to look at byteorder.h as a whole to see the
- reasoning behind them. byteorder.h defines the following macros:
-
- SVAL(buf,pos) - extract a 2 byte SMB value
- IVAL(buf,pos) - extract a 4 byte SMB value
- SVALS(buf,pos) signed version of SVAL()
- IVALS(buf,pos) signed version of IVAL()
-
- SSVAL(buf,pos,val) - put a 2 byte SMB value into a buffer
- SIVAL(buf,pos,val) - put a 4 byte SMB value into a buffer
- SSVALS(buf,pos,val) - signed version of SSVAL()
- SIVALS(buf,pos,val) - signed version of SIVAL()
-
- RSVAL(buf,pos) - like SVAL() but for NMB byte ordering
- RSVALS(buf,pos) - like SVALS() but for NMB byte ordering
- RIVAL(buf,pos) - like IVAL() but for NMB byte ordering
- RIVALS(buf,pos) - like IVALS() but for NMB byte ordering
- RSSVAL(buf,pos,val) - like SSVAL() but for NMB ordering
- RSIVAL(buf,pos,val) - like SIVAL() but for NMB ordering
- RSIVALS(buf,pos,val) - like SIVALS() but for NMB ordering
-
- it also defines lots of intermediate macros, just ignore those :-)
-
- */
-
-/* some switch macros that do both store and read to and from SMB buffers */
-
-#define RW_PCVAL(read,inbuf,outbuf,len) \
- { if (read) { PCVAL (inbuf,0,outbuf,len); } \
- else { PSCVAL(inbuf,0,outbuf,len); } }
-
-#define RW_PIVAL(read,big_endian,inbuf,outbuf,len) \
- { if (read) { if (big_endian) { RPIVAL(inbuf,0,outbuf,len); } else { PIVAL(inbuf,0,outbuf,len); } } \
- else { if (big_endian) { RPSIVAL(inbuf,0,outbuf,len); } else { PSIVAL(inbuf,0,outbuf,len); } } }
-
-#define RW_PSVAL(read,big_endian,inbuf,outbuf,len) \
- { if (read) { if (big_endian) { RPSVAL(inbuf,0,outbuf,len); } else { PSVAL(inbuf,0,outbuf,len); } } \
- else { if (big_endian) { RPSSVAL(inbuf,0,outbuf,len); } else { PSSVAL(inbuf,0,outbuf,len); } } }
-
-#define RW_CVAL(read, inbuf, outbuf, offset) \
- { if (read) { (outbuf) = CVAL (inbuf,offset); } \
- else { SCVAL(inbuf,offset,outbuf); } }
-
-#define RW_IVAL(read, big_endian, inbuf, outbuf, offset) \
- { if (read) { (outbuf) = ((big_endian) ? RIVAL(inbuf,offset) : IVAL (inbuf,offset)); } \
- else { if (big_endian) { RSIVAL(inbuf,offset,outbuf); } else { SIVAL(inbuf,offset,outbuf); } } }
-
-#define RW_SVAL(read, big_endian, inbuf, outbuf, offset) \
- { if (read) { (outbuf) = ((big_endian) ? RSVAL(inbuf,offset) : SVAL (inbuf,offset)); } \
- else { if (big_endian) { RSSVAL(inbuf,offset,outbuf); } else { SSVAL(inbuf,offset,outbuf); } } }
-
-#undef CAREFUL_ALIGNMENT
-
-/* we know that the 386 can handle misalignment and has the "right"
- byteorder */
-#ifdef __i386__
-#define CAREFUL_ALIGNMENT 0
-#endif
-
-#ifndef CAREFUL_ALIGNMENT
-#define CAREFUL_ALIGNMENT 1
-#endif
-
-#define CVAL(buf,pos) (((unsigned char *)(buf))[pos])
-#define PVAL(buf,pos) ((unsigned)CVAL(buf,pos))
-#define SCVAL(buf,pos,val) (CVAL(buf,pos) = (val))
-
-
-#if CAREFUL_ALIGNMENT
-
-#define SVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+1)<<8)
-#define IVAL(buf,pos) (SVAL(buf,pos)|SVAL(buf,(pos)+2)<<16)
-#define SSVALX(buf,pos,val) (CVAL(buf,pos)=(val)&0xFF,CVAL(buf,pos+1)=(val)>>8)
-#define SIVALX(buf,pos,val) (SSVALX(buf,pos,val&0xFFFF),SSVALX(buf,pos+2,val>>16))
-#define SVALS(buf,pos) ((int16)SVAL(buf,pos))
-#define IVALS(buf,pos) ((int32)IVAL(buf,pos))
-#define SSVAL(buf,pos,val) SSVALX((buf),(pos),((uint16)(val)))
-#define SIVAL(buf,pos,val) SIVALX((buf),(pos),((uint32)(val)))
-#define SSVALS(buf,pos,val) SSVALX((buf),(pos),((int16)(val)))
-#define SIVALS(buf,pos,val) SIVALX((buf),(pos),((int32)(val)))
-
-#else /* CAREFUL_ALIGNMENT */
-
-/* this handles things for architectures like the 386 that can handle
- alignment errors */
-/*
- WARNING: This section is dependent on the length of int16 and int32
- being correct
- */
-
-/* get single value from an SMB buffer */
-#define SVAL(buf,pos) (*(uint16 *)((char *)(buf) + (pos)))
-#define IVAL(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))
-#define SVALS(buf,pos) (*(int16 *)((char *)(buf) + (pos)))
-#define IVALS(buf,pos) (*(int32 *)((char *)(buf) + (pos)))
-
-/* store single value in an SMB buffer */
-#define SSVAL(buf,pos,val) SVAL(buf,pos)=((uint16)(val))
-#define SIVAL(buf,pos,val) IVAL(buf,pos)=((uint32)(val))
-#define SSVALS(buf,pos,val) SVALS(buf,pos)=((int16)(val))
-#define SIVALS(buf,pos,val) IVALS(buf,pos)=((int32)(val))
-
-#endif /* CAREFUL_ALIGNMENT */
-
-/* macros for reading / writing arrays */
-
-#define SMBMACRO(macro,buf,pos,val,len,size) \
-{ int l; for (l = 0; l < (len); l++) (val)[l] = macro((buf), (pos) + (size)*l); }
-
-#define SSMBMACRO(macro,buf,pos,val,len,size) \
-{ int l; for (l = 0; l < (len); l++) macro((buf), (pos) + (size)*l, (val)[l]); }
-
-/* reads multiple data from an SMB buffer */
-#define PCVAL(buf,pos,val,len) SMBMACRO(CVAL,buf,pos,val,len,1)
-#define PSVAL(buf,pos,val,len) SMBMACRO(SVAL,buf,pos,val,len,2)
-#define PIVAL(buf,pos,val,len) SMBMACRO(IVAL,buf,pos,val,len,4)
-#define PCVALS(buf,pos,val,len) SMBMACRO(CVALS,buf,pos,val,len,1)
-#define PSVALS(buf,pos,val,len) SMBMACRO(SVALS,buf,pos,val,len,2)
-#define PIVALS(buf,pos,val,len) SMBMACRO(IVALS,buf,pos,val,len,4)
-
-/* stores multiple data in an SMB buffer */
-#define PSCVAL(buf,pos,val,len) SSMBMACRO(SCVAL,buf,pos,val,len,1)
-#define PSSVAL(buf,pos,val,len) SSMBMACRO(SSVAL,buf,pos,val,len,2)
-#define PSIVAL(buf,pos,val,len) SSMBMACRO(SIVAL,buf,pos,val,len,4)
-#define PSCVALS(buf,pos,val,len) SSMBMACRO(SCVALS,buf,pos,val,len,1)
-#define PSSVALS(buf,pos,val,len) SSMBMACRO(SSVALS,buf,pos,val,len,2)
-#define PSIVALS(buf,pos,val,len) SSMBMACRO(SIVALS,buf,pos,val,len,4)
-
-
-/* now the reverse routines - these are used in nmb packets (mostly) */
-#define SREV(x) ((((x)&0xFF)<<8) | (((x)>>8)&0xFF))
-#define IREV(x) ((SREV(x)<<16) | (SREV((x)>>16)))
-
-#define RSVAL(buf,pos) SREV(SVAL(buf,pos))
-#define RSVALS(buf,pos) SREV(SVALS(buf,pos))
-#define RIVAL(buf,pos) IREV(IVAL(buf,pos))
-#define RIVALS(buf,pos) IREV(IVALS(buf,pos))
-#define RSSVAL(buf,pos,val) SSVAL(buf,pos,SREV(val))
-#define RSSVALS(buf,pos,val) SSVALS(buf,pos,SREV(val))
-#define RSIVAL(buf,pos,val) SIVAL(buf,pos,IREV(val))
-#define RSIVALS(buf,pos,val) SIVALS(buf,pos,IREV(val))
-
-/* reads multiple data from an SMB buffer (big-endian) */
-#define RPSVAL(buf,pos,val,len) SMBMACRO(RSVAL,buf,pos,val,len,2)
-#define RPIVAL(buf,pos,val,len) SMBMACRO(RIVAL,buf,pos,val,len,4)
-#define RPSVALS(buf,pos,val,len) SMBMACRO(RSVALS,buf,pos,val,len,2)
-#define RPIVALS(buf,pos,val,len) SMBMACRO(RIVALS,buf,pos,val,len,4)
-
-/* stores multiple data in an SMB buffer (big-endian) */
-#define RPSSVAL(buf,pos,val,len) SSMBMACRO(RSSVAL,buf,pos,val,len,2)
-#define RPSIVAL(buf,pos,val,len) SSMBMACRO(RSIVAL,buf,pos,val,len,4)
-#define RPSSVALS(buf,pos,val,len) SSMBMACRO(RSSVALS,buf,pos,val,len,2)
-#define RPSIVALS(buf,pos,val,len) SSMBMACRO(RSIVALS,buf,pos,val,len,4)
-
-#endif /* _BYTEORDER_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/charset.h
^
|
@@ -1,58 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Character set handling
- */
-
-#ifndef CHARSET_C
-
-extern char *dos_char_map;
-extern char *upper_char_map;
-extern char *lower_char_map;
-
-#ifdef toupper
-#undef toupper
-#endif
-
-#ifdef tolower
-#undef tolower
-#endif
-
-#ifdef isupper
-#undef isupper
-#endif
-
-#ifdef islower
-#undef islower
-#endif
-
-#ifdef isdoschar
-#undef isdoschar
-#endif
-
-#ifdef isspace
-#undef isspace
-#endif
-
-#define toupper(c) (upper_char_map[(c&0xff)] & 0xff)
-#define tolower(c) (lower_char_map[(c&0xff)] & 0xff)
-#define isupper(c) ((c&0xff) != tolower(c&0xff))
-#define islower(c) ((c&0xff) != toupper(c&0xff))
-#define isdoschar(c) (dos_char_map[(c&0xff)] != 0)
-#define isspace(c) ((c)==' ' || (c) == '\t')
-
-/* this is used to determine if a character is safe to use in
- something that may be put on a command line */
-#define issafe(c) (isalnum((c&0xff)) || strchr("-._",c))
-#endif /* !CHARSET_C */
-
-/* Dynamic codepage files defines. */
-
-/* Version id for dynamically loadable codepage files. */
-#define CODEPAGE_FILE_VERSION_ID 0x1
-/* Version 1 codepage file header size. */
-#define CODEPAGE_HEADER_SIZE 8
-/* Offsets for codepage file header entries. */
-#define CODEPAGE_VERSION_OFFSET 0
-#define CODEPAGE_CLIENT_CODEPAGE_OFFSET 2
-#define CODEPAGE_LENGTH_OFFSET 4
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/client.h
^
|
@@ -1,127 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB parameters and setup
- */
-
-#ifndef _CLIENT_H
-#define _CLIENT_H
-
-/* the client asks for a smaller buffer to save ram and also to get more
- overlap on the wire. This size gives us a nice read/write size, which
- will be a multiple of the page size on almost any system */
-#define CLI_BUFFER_SIZE (0xFFFF)
-
-/*
- * These definitions depend on smb.h
- */
-
-typedef struct file_info
-{
- SMB_OFF_T size;
- uint16 mode;
- uid_t uid;
- gid_t gid;
- /* these times are normally kept in GMT */
- time_t mtime;
- time_t atime;
- time_t ctime;
- pstring name;
-} file_info;
-
-struct print_job_info
-{
- uint16 id;
- uint16 priority;
- size_t size;
- fstring user;
- fstring name;
- time_t t;
-};
-
-struct pwd_info
-{
- BOOL null_pwd;
- BOOL cleartext;
- BOOL crypted;
-
- fstring password;
-
- uchar smb_lm_pwd[16];
- uchar smb_nt_pwd[16];
-
- uchar smb_lm_owf[24];
- uchar smb_nt_owf[24];
-};
-
-struct cli_state
-{
- int port;
- int fd;
- uint16 cnum;
- uint16 pid;
- uint16 mid;
- uint16 vuid;
- int protocol;
- int sec_mode;
- int rap_error;
- int privileges;
-
- fstring eff_name;
- fstring desthost;
- fstring user_name;
- fstring domain;
-
- /*
- * The following strings are the
- * ones returned by the server if
- * the protocol > NT1.
- */
- fstring server_type;
- fstring server_os;
- fstring server_domain;
-
- fstring share;
- fstring dev;
- struct nmb_name called;
- struct nmb_name calling;
- fstring full_dest_host_name;
- struct in_addr dest_ip;
-
- struct pwd_info pwd;
- unsigned char cryptkey[8];
- uint32 sesskey;
- int serverzone;
- uint32 servertime;
- int readbraw_supported;
- int writebraw_supported;
- int timeout; /* in milliseconds. */
- int max_xmit;
- int max_mux;
- char *outbuf;
- char *inbuf;
- int bufsize;
- int initialised;
- int win95;
- uint32 capabilities;
-
- /*
- * Only used in NT domain calls.
- */
-
- uint32 nt_error; /* NT RPC error code. */
- uint16 nt_pipe_fnum; /* Pipe handle. */
- unsigned char sess_key[16]; /* Current session key. */
- unsigned char ntlmssp_hash[258]; /* ntlmssp data. */
- uint32 ntlmssp_cli_flgs; /* ntlmssp client flags */
- uint32 ntlmssp_srv_flgs; /* ntlmssp server flags */
- uint32 ntlmssp_seq_num; /* ntlmssp sequence number */
- DOM_CRED clnt_cred; /* Client credential. */
- fstring mach_acct; /* MYNAME$. */
- fstring srv_name_slash; /* \\remote server. */
- fstring clnt_name_slash; /* \\local client. */
- uint16 max_xmit_frag;
- uint16 max_recv_frag;
-};
-
-#endif /* _CLIENT_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/includes.h
^
|
@@ -1,574 +0,0 @@
-#ifndef _INCLUDES_H
-#define _INCLUDES_H
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Machine customisation and include handling
- */
-
-#ifndef NO_CONFIG_H /* for some tests */
-#include "config.h"
-#endif
-
-#include "local.h"
-
-#ifdef AIX
-#define DEFAULT_PRINTING PRINT_AIX
-#define PRINTCAP_NAME "/etc/qconfig"
-#endif
-
-#ifdef HPUX
-#define DEFAULT_PRINTING PRINT_HPUX
-#endif
-
-#ifdef QNX
-#define DEFAULT_PRINTING PRINT_QNX
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <sys/wait.h>
-
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#ifdef HAVE_SYS_SYSCALL_H
-#include <sys/syscall.h>
-#elif HAVE_SYSCALL_H
-#include <syscall.h>
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-
-#ifdef MEM_MAN
-#include "../mem_man/mem_man.h"
-#else
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#endif
-
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-
-#ifdef HAVE_SYS_FILIO_H
-#include <sys/filio.h>
-#endif
-
-
-#ifdef HAVE_CTYPE_H
-#include <ctype.h>
-#endif
-#include <grp.h>
-#ifdef HAVE_SYS_ID_H
-#include <sys/id.h>
-#endif
-
-/* AIX 4.1 and previous needs this for setpriv */
-#if defined(HAVE_SETPRIV) && defined(HAVE_SYS_PRIV_H)
-#include <sys/priv.h>
-#endif
-
-#include <errno.h>
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-
-#ifdef HAVE_SYS_MODE_H
-/* apparently AIX needs this for S_ISLNK */
-#ifndef S_ISLNK
-#include <sys/mode.h>
-#endif
-#endif
-
-#ifdef HAVE_GLOB_H
-#include <glob.h>
-#endif
-
-#include <pwd.h>
-
-#ifdef HAVE_STDARG_H
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <syslog.h>
-#include <sys/file.h>
-
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-
-/*
- * The next two defines are needed to the IPTOS_* options
- * on some systems.
- */
-
-#ifdef HAVE_NETINET_IN_SYSTM_H
-#include <netinet/in_systm.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_IP_H
-#include <netinet/ip.h>
-#endif
-
-/* POSIX terminal handling. */
-#include <termios.h>
-
-#include <dirent.h>
-
-#ifdef HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
-
-#ifdef HAVE_SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <sys/sem.h>
-#endif
-
-#ifdef HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-
-
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-
-#ifdef HAVE_SYS_VFS_H
-#include <sys/vfs.h>
-#endif
-
-#ifdef HAVE_SYS_ACL_H
-#include <sys/acl.h>
-#endif
-
-#ifdef HAVE_SYS_FS_S5PARAM_H
-#include <sys/fs/s5param.h>
-#endif
-
-#ifdef HAVE_SYS_FILSYS_H
-#include <sys/filsys.h>
-#endif
-
-#ifdef HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-
-#ifdef HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-
-#ifdef HAVE_SHADOW_H
-#include <shadow.h>
-#endif
-
-#ifdef HAVE_GETPWANAM
-#include <sys/label.h>
-#include <sys/audit.h>
-#include <pwdadj.h>
-#endif
-
-#ifdef HAVE_SYS_SECURITY_H
-#include <sys/security.h>
-#include <prot.h>
-#define PASSWORD_LENGTH 16
-#endif /* HAVE_SYS_SECURITY_H */
-
-#ifdef HAVE_COMPAT_H
-#include <compat.h>
-#endif
-
-#ifdef HAVE_STROPTS_H
-#include <stropts.h>
-#endif
-
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-
-#if defined(HAVE_RPC_RPC_H)
-/*
- * Check for AUTH_ERROR define conflict with rpc/rpc.h in prot.h.
- */
-#if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT)
-#undef AUTH_ERROR
-#endif
-#include <rpc/rpc.h>
-#endif
-
-#if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT)
-#define HAVE_NETGROUP 1
-#endif
-
-#if defined (HAVE_NETGROUP)
-#if defined(HAVE_RPCSVC_YP_PROT_H)
-#include <rpcsvc/yp_prot.h>
-#endif
-#if defined(HAVE_RPCSVC_YPCLNT_H)
-#include <rpcsvc/ypclnt.h>
-#endif
-#endif /* HAVE_NETGROUP */
-
-#ifndef uchar
-#define uchar unsigned char
-#endif
-
-#define schar signed char
-
-/*
- Samba needs type definitions for int16, int32, uint16 and uint32.
-
- Normally these are signed and unsigned 16 and 32 bit integers, but
- they actually only need to be at least 16 and 32 bits
- respectively. Thus if your word size is 8 bytes just defining them
- as signed and unsigned int will work.
- */
-
-#ifndef uint8
-#define uint8 unsigned char
-#endif
-
-#if !defined(int16) && !defined(HAVE_INT16_FROM_RPC_RPC_H)
-#if (SIZEOF_SHORT == 4)
-#define int16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
-#else /* SIZEOF_SHORT != 4 */
-#define int16 short
-#endif /* SIZEOF_SHORT != 4 */
-#endif
-
-/*
- * Note we duplicate the size tests in the unsigned
- * case as int16 may be a typedef from rpc/rpc.h
- */
-
-#if !defined(uint16) && !defined(HAVE_UINT16_FROM_RPC_RPC_H)
-#if (SIZEOF_SHORT == 4)
-#define uint16 __ERROR___CANNOT_DETERMINE_TYPE_FOR_INT16;
-#else /* SIZEOF_SHORT != 4 */
-#define uint16 unsigned short
-#endif /* SIZEOF_SHORT != 4 */
-#endif
-
-#if !defined(int32) && !defined(HAVE_INT32_FROM_RPC_RPC_H)
-#if (SIZEOF_INT == 4)
-#define int32 int
-#elif (SIZEOF_LONG == 4)
-#define int32 long
-#elif (SIZEOF_SHORT == 4)
-#define int32 short
-#endif
-#endif
-
-/*
- * Note we duplicate the size tests in the unsigned
- * case as int32 may be a typedef from rpc/rpc.h
- */
-
-#if !defined(uint32) && !defined(HAVE_UINT32_FROM_RPC_RPC_H)
-#if (SIZEOF_INT == 4)
-#define uint32 unsigned int
-#elif (SIZEOF_LONG == 4)
-#define uint32 unsigned long
-#elif (SIZEOF_SHORT == 4)
-#define uint32 unsigned short
-#endif
-#endif
-
-/*
- * Types for devices, inodes and offsets.
- */
-
-#ifndef SMB_DEV_T
-#define SMB_DEV_T dev_t
-#endif
-
-/*
- * Setup the correctly sized inode type.
- */
-
-#ifndef SMB_INO_T
-#define SMB_INO_T ino_t
-#endif
-
-#ifndef LARGE_SMB_INO_T
-#if defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8)
-#define LARGE_SMB_INO_T 1
-#endif
-#endif
-
-#ifdef LARGE_SMB_INO_T
-#define SINO_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
-#else
-#define SINO_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
-#endif
-
-#ifndef SMB_OFF_T
-#define SMB_OFF_T off_t
-#endif
-
-#define SMB_OFF_T_BITS (sizeof(SMB_OFF_T)*8)
-
-/*
- * Set the define that tells us if we can do 64 bit
- * NT SMB calls.
- */
-
-#ifndef LARGE_SMB_OFF_T
-#if defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)
-#define LARGE_SMB_OFF_T 1
-#endif
-#endif
-
-#ifdef LARGE_SMB_OFF_T
-#define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
-#else
-#define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
-#endif
-
-/*
- * Type for stat structure.
- */
-
-#ifndef SMB_STRUCT_STAT
-#define SMB_STRUCT_STAT struct stat
-#endif
-
-/*
- * Type for dirent structure.
- */
-
-#ifndef SMB_STRUCT_DIRENT
-#define SMB_STRUCT_DIRENT struct dirent
-#endif
-
-/*
- * Defines for 64 bit fcntl locks.
- */
-
-#ifndef SMB_STRUCT_FLOCK
-#define SMB_STRUCT_FLOCK struct flock
-#endif
-
-#ifndef SMB_F_SETLKW
-#define SMB_F_SETLKW F_SETLKW
-#endif
-
-#ifndef SMB_F_SETLK
-#define SMB_F_SETLK F_SETLK
-#endif
-
-#ifndef SMB_F_GETLK
-#define SMB_F_GETLK F_GETLK
-#endif
-
-#if defined(HAVE_LONGLONG)
-#define SMB_BIG_UINT unsigned long long
-#define SMB_BIG_INT long long
-#define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
-#else
-#define SMB_BIG_UINT unsigned long
-#define SMB_BIG_INT long
-#define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
-#endif
-
-#ifndef MIN
-#define MIN(a,b) ((a)<(b)?(a):(b))
-#endif
-
-#ifndef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#endif
-
-#ifdef HAVE_BROKEN_GETGROUPS
-#define GID_T int
-#else
-#define GID_T gid_t
-#endif
-
-
-#include "version.h"
-#include "smb.h"
-#include "nameserv.h"
-
-#include "byteorder.h"
-
-#include "kanji.h"
-#include "charset.h"
-
-#include "nterr.h"
-
-#ifndef MAXCODEPAGELINES
-#define MAXCODEPAGELINES 256
-#endif
-
-/***** automatically generated prototypes *****/
-#include "proto.h"
-
-#ifdef sprintf
-#undef sprintf
-#endif /* sprintf */
-#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
-
-#define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
-#define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
-#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
-#define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
-
-#ifdef __COMPAR_FN_T
-#define QSORT_CAST (__compar_fn_t)
-#endif
-
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif
-
-/* this guess needs to be improved (tridge) */
-#if (defined(STAT_STATVFS) || defined(STAT_STATVFS64)) && !defined(SYSV)
-#define SYSV 1
-#endif
-
-#ifndef DEFAULT_PRINTING
-#ifdef SYSV
-#define DEFAULT_PRINTING PRINT_SYSV
-#define PRINTCAP_NAME "lpstat"
-#else
-#define DEFAULT_PRINTING PRINT_BSD
-#define PRINTCAP_NAME "/etc/printcap"
-#endif
-#endif
-
-#ifndef PRINTCAP_NAME
-#define PRINTCAP_NAME "/etc/printcap"
-#endif
-
-#ifndef SIGCLD
-#define SIGCLD SIGCHLD
-#endif
-
-#if (defined(HAVE_SYSV_IPC) || defined(HAVE_SHARED_MMAP))
-#define FAST_SHARE_MODES 1
-#endif
-
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-
-#if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP))
-#define USE_SMBPASS_DB 1
-#endif
-
-#if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
-#define OSF1_ENH_SEC 1
-#endif
-
-#ifndef ALLOW_CHANGE_PASSWORD
-#if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
-#define ALLOW_CHANGE_PASSWORD 1
-#endif
-#endif
-
-/* what is the longest significant password available on your system?
- Knowing this speeds up password searches a lot */
-#ifndef PASSWORD_LENGTH
-#define PASSWORD_LENGTH 8
-#endif
-
-#ifndef HAVE_PIPE
-#define SYNC_DNS 1
-#endif
-
-#ifndef MAXPATHLEN
-#define MAXPATHLEN 256
-#endif
-
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#endif
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK 0x7f000001
-#endif
-
-#ifndef INADDR_NONE
-#define INADDR_NONE 0xffffffff
-#endif
-
-#ifndef O_ACCMODE
-#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
-#endif
-
-#ifndef HAVE_INITGROUPS
-int initgroups (char *name, gid_t id);
-#endif
-
-#ifndef HAVE_RENAME
-int rename (const char *zfrom, const char *zto);
-#endif
-
-#ifndef HAVE_MKTIME
-time_t mktime (struct tm *t);
-#endif
-
-#ifndef HAVE_STRTOUL
-unsigned long strtoul (const char *nptr, char **endptr, int base);
-#endif
-
-#ifdef REPLACE_GETPASS
-#define getpass(prompt) getsmbpass((prompt))
-#endif
-
-/*
- * Some older systems seem not to have MAXHOSTNAMELEN
- * defined.
- */
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 254
-#endif
-
-/* yuck, I'd like a better way of doing this */
-#define DIRP_SIZE (256 + 32)
-
-#endif /* _INCLUDES_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/kanji.h
^
|
@@ -1,150 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Kanji Extensions
- */
-#ifndef _KANJI_H_
-#define _KANJI_H_
-
-/* FOR SHIFT JIS CODE */
-#define is_shift_jis(c) \
- ((0x81 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0x9f) \
- || (0xe0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xef))
-#define is_shift_jis2(c) \
- (0x40 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfc \
- && ((unsigned char) (c)) != 0x7f)
-#define is_kana(c) ((0xa0 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xdf))
-
-/* case conversion */
-#define is_sj_upper2(c) \
- ((0x60 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x79))
-#define is_sj_lower2(c) \
- ((0x81 <= (unsigned char) (c)) && ((unsigned char) (c) <= 0x9A))
-#define sjis_alph 0x82
-#define is_sj_alph(c) (sjis_alph == (unsigned char) (c))
-#define is_sj_upper(c1, c2) (is_sj_alph (c1) && is_sj_upper2 (c2))
-#define is_sj_lower(c1, c2) (is_sj_alph (c1) && is_sj_lower2 (c2))
-#define sj_toupper2(c) \
- (is_sj_lower2 (c) ? ((int) ((unsigned char) (c) - 0x81 + 0x60)) : \
- ((int) (unsigned char) (c)))
-#define sj_tolower2(c) \
- (is_sj_upper2 (c) ? ((int) ((unsigned char) (c) - 0x60 + 0x81)) : \
- ((int) (unsigned char) (c)))
-
-#ifdef _KANJI_C_
-/* FOR EUC CODE */
-#define euc_kana (0x8e)
-#define is_euc_kana(c) (((unsigned char) (c)) == euc_kana)
-#define is_euc(c) (0xa0 < ((unsigned char) (c)) && ((unsigned char) (c)) < 0xff)
-
-/* FOR JIS CODE */
-/* default jis third shift code, use for output */
-#ifndef JIS_KSO
-#define JIS_KSO 'B'
-#endif
-#ifndef JIS_KSI
-#define JIS_KSI 'J'
-#endif
-/* in: \E$B or \E$@ */
-/* out: \E(J or \E(B or \E(H */
-#define jis_esc (0x1b)
-#define jis_so (0x0e)
-#define jis_so1 ('$')
-#define jis_so2 ('B')
-#define jis_si (0x0f)
-#define jis_si1 ('(')
-#define jis_si2 ('J')
-#define is_esc(c) (((unsigned char) (c)) == jis_esc)
-#define is_so1(c) (((unsigned char) (c)) == jis_so1)
-#define is_so2(c) (((unsigned char) (c)) == jis_so2 || ((unsigned char) (c)) == '@')
-#define is_si1(c) (((unsigned char) (c)) == jis_si1)
-#define is_si2(c) (((unsigned char) (c)) == jis_si2 || ((unsigned char) (c)) == 'B' \
- || ((unsigned char) (c)) == 'H')
-#define is_so(c) (((unsigned char) (c)) == jis_so)
-#define is_si(c) (((unsigned char) (c)) == jis_si)
-#define junet_kana1 ('(')
-#define junet_kana2 ('I')
-#define is_juk1(c) (((unsigned char) (c)) == junet_kana1)
-#define is_juk2(c) (((unsigned char) (c)) == junet_kana2)
-
-#define _KJ_ROMAN (0)
-#define _KJ_KANJI (1)
-#define _KJ_KANA (2)
-
-/* FOR HEX */
-#define HEXTAG ':'
-#define hex2bin(x) \
- ( ((int) '0' <= ((int) (x)) && ((int) (x)) <= (int)'9')? \
- (((int) (x))-(int)'0'): \
- ((int) 'a'<= ((int) (x)) && ((int) (x))<= (int) 'f')? \
- (((int) (x)) - (int)'a'+10): \
- (((int) (x)) - (int)'A'+10) )
-#define bin2hex(x) \
- ( (((int) (x)) >= 10)? (((int) (x))-10 + (int) 'a'): (((int) (x)) + (int) '0') )
-
-/* For Hangul (Korean - code page 949). */
-#define is_hangul(c) ((0x81 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xfd))
-
-/* For traditional Chinese (known as Big5 encoding - code page 950). */
-#define is_big5_c1(c) ((0xa1 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xf9))
-
-/* For simplified Chinese (code page - 936). */
-#define is_simpch_c1(c) ((0xa1 <= ((unsigned char) (c)) && ((unsigned char) (c)) <= 0xf7))
-
-#else /* not _KANJI_C_ */
-
-/*
- * The following is needed for AIX systems that have
- * their own #defines for strchr, strrchr, strstr
- * and strtok.
- */
-
-#ifdef strchr
-#undef strchr
-#endif /* strchr */
-
-#ifdef strrchr
-#undef strrchr
-#endif /* strrchr */
-
-#ifdef strstr
-#undef strstr
-#endif /* strstr */
-
-#ifdef strtok
-#undef strtok
-#endif /* strtok */
-
-/* Ensure we use our definitions in all other files than kanji.c. */
-
-/* Function pointers we will replace. */
-extern char *(*multibyte_strchr) (const char *s, int c);
-extern char *(*multibyte_strrchr) (const char *s, int c);
-extern char *(*multibyte_strstr) (const char *s1, const char *s2);
-extern char *(*multibyte_strtok) (char *s1, const char *s2);
-extern char *(*_dos_to_unix) (char *str, BOOL overwrite);
-extern char *(*_unix_to_dos) (char *str, BOOL overwrite);
-extern BOOL (*is_multibyte_char) (char c);
-extern int (*_skip_multibyte_char) (char c);
-
-#define strchr(s1, c) ((*multibyte_strchr)((s1), (c)))
-#define strrchr(s1, c) ((*multibyte_strrchr)((s1), (c)))
-#define strstr(s1, s2) ((*multibyte_strstr)((s1), (s2)))
-#define strtok(s1, s2) ((*multibyte_strtok)((s1), (s2)))
-#define dos_to_unix(x,y) ((*_dos_to_unix)((x), (y)))
-#define unix_to_dos(x,y) ((*_unix_to_dos)((x), (y)))
-#define skip_multibyte_char(c) ((*_skip_multibyte_char)((c)))
-
-#endif /* _KANJI_C_ */
-
-#define UNKNOWN_CODE (-1)
-#define SJIS_CODE (0)
-#define EUC_CODE (1)
-#define JIS7_CODE (2)
-#define JIS8_CODE (3)
-#define JUNET_CODE (4)
-#define HEX_CODE (5)
-#define CAP_CODE (6)
-#define DOSV_CODE SJIS_CODE
-
-#endif /* _KANJI_H_ */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/local.h
^
|
@@ -1,198 +0,0 @@
-/* Copyright (C) 1995-1998 Samba-Team */
-/* Copyright (C) 1998 John H Terpstra <jht@aquasoft.com.au> */
-
-/* local definitions for file server */
-#ifndef _LOCAL_H
-#define _LOCAL_H
-
-/* The default workgroup - usually overridden in smb.conf */
-#ifndef WORKGROUP
-#define WORKGROUP "WORKGROUP"
-#endif
-
-/* This defines the section name in the configuration file that will contain */
-/* global parameters - that is, parameters relating to the whole server, not */
-/* just services. This name is then reserved, and may not be used as a */
-/* a service name. It will default to "global" if not defined here. */
-#define GLOBAL_NAME "global"
-#define GLOBAL_NAME2 "globals"
-
-/* This defines the section name in the configuration file that will
- refer to the special "homes" service */
-#define HOMES_NAME "homes"
-
-/* This defines the section name in the configuration file that will
- refer to the special "printers" service */
-#define PRINTERS_NAME "printers"
-
-/* Yves Gaige <yvesg@hptnodur.grenoble.hp.com> requested this set this */
-/* to a maximum of 8 if old smb clients break because of long printer names. */
-#define MAXPRINTERLEN 15
-
-/* max number of directories open at once */
-/* note that with the new directory code this no longer requires a
- file handle per directory, but large numbers do use more memory */
-#define MAX_OPEN_DIRECTORIES 256
-
-/* max number of directory handles */
-/* As this now uses the bitmap code this can be
- quite large. */
-#define MAX_DIRECTORY_HANDLES 2048
-
-/* define what facility to use for syslog */
-#ifndef SYSLOG_FACILITY
-#define SYSLOG_FACILITY LOG_DAEMON
-#endif
-
-/* Default size of shared memory used for share mode locking */
-#ifndef SHMEM_SIZE
-#define SHMEM_SIZE (1024*1024)
-#endif
-
-/*
- * Default number of maximum open files per smbd. This is
- * also limited by the maximum available file descriptors
- * per process and can also be set in smb.conf as "max open files"
- * in the [global] section.
- */
-
-#ifndef MAX_OPEN_FILES
-#define MAX_OPEN_FILES 10000
-#endif
-
-/* the max number of simultanous connections to the server by all clients */
-#define MAXSTATUS 100000
-
-#define WORDMAX 0xFFFF
-
-/* the maximum password length before we declare a likely attack */
-#define MAX_PASS_LEN 200
-
-/* separators for lists */
-#define LIST_SEP " \t,;:\n\r"
-
-/* this is where browse lists are kept in the lock dir */
-#define SERVER_LIST "browse.dat"
-
-/* shall guest entries in printer queues get changed to user entries,
- so they can be deleted using the windows print manager? */
-#define LPQ_GUEST_TO_USER
-
-/* shall filenames with illegal chars in them get mangled in long
- filename listings? */
-#define MANGLE_LONG_FILENAMES
-
-/* define this if you want to stop spoofing with .. and soft links
- NOTE: This also slows down the server considerably */
-#define REDUCE_PATHS
-
-/* the size of the directory cache */
-#define DIRCACHESIZE 20
-
-/* what default type of filesystem do we want this to show up as in a
- NT file manager window? */
-#define FSTYPE_STRING "NTFS"
-
-/* the default guest account - normally set in the Makefile or smb.conf */
-#ifndef GUEST_ACCOUNT
-#define GUEST_ACCOUNT "nobody"
-#endif
-
-/* do you want smbd to send a 1 byte packet to nmbd to trigger it to start
- when smbd starts? */
-#ifndef PRIME_NMBD
-#define PRIME_NMBD 1
-#endif
-
-/* the default pager to use for the client "more" command. Users can
- override this with the PAGER environment variable */
-#ifndef PAGER
-#define PAGER "more"
-#endif
-
-/* the size of the uid cache used to reduce valid user checks */
-#define UID_CACHE_SIZE 4
-
-/* if mmap is enabled, then this is the maximum size of file to use
- the mmap code on. We don't want to mmap huge files as virtual
- address spaces are limited */
-#define MAX_MMAP_SIZE (100*0x100000)
-
-/* the following control timings of various actions. Don't change
- them unless you know what you are doing. These are all in seconds */
-#define DEFAULT_SMBD_TIMEOUT (60*60*24*7)
-#define SMBD_RELOAD_CHECK (180)
-#define IDLE_CLOSED_TIMEOUT (60)
-#define DPTR_IDLE_TIMEOUT (120)
-#define SMBD_SELECT_TIMEOUT (60)
-#define SMBD_SELECT_TIMEOUT_WITH_PENDING_LOCKS (10)
-#define NMBD_SELECT_LOOP (10)
-#define BROWSE_INTERVAL (60)
-#define REGISTRATION_INTERVAL (10*60)
-#define NMBD_INETD_TIMEOUT (120)
-#define NMBD_MAX_TTL (24*60*60)
-#define LPQ_LOCK_TIMEOUT (5)
-
-/* the following are in milliseconds */
-#define LOCK_RETRY_TIMEOUT (100)
-
-/* do you want to dump core (carefully!) when an internal error is
- encountered? Samba will be careful to make the core file only
- accessible to root */
-#define DUMP_CORE 1
-
-#define SMB_ALIGNMENT 1
-
-
-/* shall we support browse requests via a FIFO to nmbd? */
-#define ENABLE_FIFO 1
-
-/* how long (in miliseconds) to wait for a socket connect to happen */
-#define LONG_CONNECT_TIMEOUT 30000
-#define SHORT_CONNECT_TIMEOUT 5000
-
-/* default socket options. Dave Miller thinks we should default to TCP_NODELAY
- given the socket IO pattern that Samba uses */
-#ifdef TCP_NODELAY
-#define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
-#else
-#define DEFAULT_SOCKET_OPTIONS ""
-#endif
-
-/* the default netbios keepalive timeout */
-#define DEFAULT_KEEPALIVE 300
-
-/* the directory to sit in when idle */
-/* #define IDLE_DIR "/" */
-
-/* Timout (in seconds) to wait for an oplock break
- message to return from the client. */
-
-#define OPLOCK_BREAK_TIMEOUT 30
-
-/* how many times do we try to resend the oplock break request - useful
- for buggy MS clients */
-#define OPLOCK_BREAK_RESENDS 3
-
-/* Timout (in seconds) to add to the oplock break timeout
- to wait for the smbd to smbd message to return. */
-
-#define OPLOCK_BREAK_TIMEOUT_FUDGEFACTOR 2
-
-/* the read preciction code has been disabled until some problems with
- it are worked out */
-#define USE_READ_PREDICTION 0
-
-/* name of directory that netatalk uses to store macintosh resource forks */
-#define APPLEDOUBLE ".AppleDouble/"
-
-/*
- * Default passwd chat script.
- */
-
-#define DEFAULT_PASSWD_CHAT "*old*password* %o\\n *new*password* %n\\n *new*password* %n\\n *changed*"
-
-/* Minimum length of allowed password when changing UNIX password. */
-#define MINPASSWDLENGTH 5
-
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/nameserv.h
^
|
@@ -1,506 +0,0 @@
-#ifndef _NAMESERV_H_
-#define _NAMESERV_H_
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- NBT netbios header - version 2
- */
-
-#define PERMANENT_TTL 0
-
-/* NTAS uses 2, NT uses 1, WfWg uses 0 */
-#define MAINTAIN_LIST 2
-#define ELECTION_VERSION 1
-
-#define MAX_DGRAM_SIZE (576) /* tcp/ip datagram limit is 576 bytes */
-#define MIN_DGRAM_SIZE 12
-
-/*********************************************************
- Types of reply packet.
-**********************************************************/
-
-enum netbios_reply_type_code
-{ NMB_QUERY, NMB_STATUS, NMB_REG, NMB_REG_REFRESH,
- NMB_REL, NMB_WAIT_ACK, NMB_MULTIHOMED_REG,
- WINS_REG, WINS_QUERY
-};
-
-/* From rfc1002, 4.2.1.2 */
-/* Question types. */
-#define QUESTION_TYPE_NB_QUERY 0x20
-#define QUESTION_TYPE_NB_STATUS 0x21
-
-/* Question class */
-#define QUESTION_CLASS_IN 0x1
-
-/* Opcode definitions */
-#define NMB_NAME_QUERY_OPCODE 0x0
-#define NMB_NAME_REG_OPCODE 0x05 /* see rfc1002.txt 4.2.2,3,5,6,7,8 */
-#define NMB_NAME_RELEASE_OPCODE 0x06 /* see rfc1002.txt 4.2.9,10,11 */
-#define NMB_WACK_OPCODE 0x07 /* see rfc1002.txt 4.2.16 */
-/* Ambiguity in rfc1002 about which of these is correct. */
-/* WinNT uses 8 by default but can be made to use 9. */
-#define NMB_NAME_REFRESH_OPCODE_8 0x08 /* see rfc1002.txt 4.2.4 */
-#define NMB_NAME_REFRESH_OPCODE_9 0x09 /* see rfc1002.txt 4.2.4 */
-#define NMB_NAME_MULTIHOMED_REG_OPCODE 0x0F /* Invented by Microsoft. */
-
-/* XXXX what about all the other types?? 0x1, 0x2, 0x3, 0x4, 0x8? */
-
-/* Resource record types. rfc1002 4.2.1.3 */
-#define RR_TYPE_A 0x1
-#define RR_TYPE_NS 0x2
-#define RR_TYPE_NULL 0xA
-#define RR_TYPE_NB 0x20
-#define RR_TYPE_NBSTAT 0x21
-
-/* Resource record class. */
-#define RR_CLASS_IN 0x1
-
-/* NetBIOS flags */
-#define NB_GROUP 0x80
-#define NB_PERM 0x02
-#define NB_ACTIVE 0x04
-#define NB_CONFL 0x08
-#define NB_DEREG 0x10
-#define NB_BFLAG 0x00 /* Broadcast node type. */
-#define NB_PFLAG 0x20 /* Point-to-point node type. */
-#define NB_MFLAG 0x40 /* Mixed bcast & p-p node type. */
-#define NB_HFLAG 0x60 /* Microsoft 'hybrid' node type. */
-#define NB_NODETYPEMASK 0x60
-/* Mask applied to outgoing NetBIOS flags. */
-#define NB_FLGMSK 0xE0
-
-/* NetBIOS flag identifier. */
-#define NAME_GROUP(p) ((p)->data.nb_flags & NB_GROUP)
-#define NAME_BFLAG(p) (((p)->data.nb_flags & NB_NODETYPEMASK) == NB_BFLAG)
-#define NAME_PFLAG(p) (((p)->data.nb_flags & NB_NODETYPEMASK) == NB_PFLAG)
-#define NAME_MFLAG(p) (((p)->data.nb_flags & NB_NODETYPEMASK) == NB_MFLAG)
-#define NAME_HFLAG(p) (((p)->data.nb_flags & NB_NODETYPEMASK) == NB_HFLAG)
-
-/* Samba name state for a name in a namelist. */
-#define NAME_IS_ACTIVE(p) ((p)->data.nb_flags & NB_ACTIVE)
-#define NAME_IN_CONFLICT(p) ((p)->data.nb_flags & NB_CONFL)
-#define NAME_IS_DEREGISTERING(p) ((p)->data.nb_flags & NB_DEREG)
-
-/* Error codes for NetBIOS requests. */
-#define FMT_ERR 0x1 /* Packet format error. */
-#define SRV_ERR 0x2 /* Internal server error. */
-#define NAM_ERR 0x3 /* Name does not exist. */
-#define IMP_ERR 0x4 /* Request not implemented. */
-#define RFS_ERR 0x5 /* Request refused. */
-#define ACT_ERR 0x6 /* Active error - name owned by another host. */
-#define CFT_ERR 0x7 /* Name in conflict error. */
-
-#define REFRESH_TIME (15*60)
-#define NAME_POLL_REFRESH_TIME (5*60)
-#define NAME_POLL_INTERVAL 15
-
-/* Workgroup state identifiers. */
-#define AM_POTENTIAL_MASTER_BROWSER(work) ((work)->mst_state == MST_POTENTIAL)
-#define AM_LOCAL_MASTER_BROWSER(work) ((work)->mst_state == MST_BROWSER)
-#define AM_DOMAIN_MASTER_BROWSER(work) ((work)->dom_state == DOMAIN_MST)
-#define AM_DOMAIN_MEMBER(work) ((work)->log_state == LOGON_SRV)
-
-/* Microsoft browser NetBIOS name. */
-#define MSBROWSE "\001\002__MSBROWSE__\002"
-
-/* Mail slots. */
-#define BROWSE_MAILSLOT "\\MAILSLOT\\BROWSE"
-#define NET_LOGON_MAILSLOT "\\MAILSLOT\\NET\\NETLOGON"
-#define NT_LOGON_MAILSLOT "\\MAILSLOT\\NET\\NTLOGON"
-#define LANMAN_MAILSLOT "\\MAILSLOT\\LANMAN"
-
-/* Samba definitions for find_name_on_subnet(). */
-#define FIND_ANY_NAME 0
-#define FIND_SELF_NAME 1
-
-/*
- * The different name types that can be in namelists.
- *
- * SELF_NAME should only be on the broadcast and unicast subnets.
- * LMHOSTS_NAME should only be in the remote_broadcast_subnet.
- * REGISTER_NAME, DNS_NAME, DNSFAIL_NAME should only be in the wins_server_subnet.
- * WINS_PROXY_NAME should only be on the broadcast subnets.
- * PERMANENT_NAME can be on all subnets except remote_broadcast_subnet.
- *
- */
-
-enum name_source
-{ LMHOSTS_NAME, REGISTER_NAME, SELF_NAME, DNS_NAME,
- DNSFAIL_NAME, PERMANENT_NAME, WINS_PROXY_NAME
-};
-enum node_type
-{ B_NODE = 0, P_NODE = 1, M_NODE = 2, NBDD_NODE = 3 };
-enum packet_type
-{ NMB_PACKET, DGRAM_PACKET };
-
-enum master_state
-{
- MST_NONE,
- MST_POTENTIAL,
- MST_BACKUP,
- MST_MSB,
- MST_BROWSER,
- MST_UNBECOMING_MASTER
-};
-
-enum domain_state
-{
- DOMAIN_NONE,
- DOMAIN_WAIT,
- DOMAIN_MST
-};
-
-enum logon_state
-{
- LOGON_NONE,
- LOGON_WAIT,
- LOGON_SRV
-};
-
-struct subnet_record;
-
-struct nmb_data
-{
- uint16 nb_flags; /* Netbios flags. */
- int num_ips; /* Number of ip entries. */
- struct in_addr *ip; /* The ip list for this name. */
-
- enum name_source source; /* Where the name came from. */
-
- time_t death_time; /* The time the record must be removed (do not remove if 0). */
- time_t refresh_time; /* The time the record should be refreshed. */
-};
-
-/* This is used to hold the list of servers in my domain, and is
- contained within lists of domains. */
-
-struct server_record
-{
- struct server_record *next;
- struct server_record *prev;
-
- struct subnet_record *subnet;
-
- struct server_info_struct serv;
- time_t death_time;
-};
-
-/* A workgroup structure. It contains a list of servers. */
-struct work_record
-{
- struct work_record *next;
- struct work_record *prev;
-
- struct subnet_record *subnet;
-
- struct server_record *serverlist;
-
- /* Stage of development from non-local-master up to local-master browser. */
- enum master_state mst_state;
-
- /* Stage of development from non-domain-master to domain-master browser. */
- enum domain_state dom_state;
-
- /* Stage of development from non-logon-server to logon server. */
- enum logon_state log_state;
-
- /* Work group info. */
- fstring work_group;
- int token; /* Used when communicating with backup browsers. */
- fstring local_master_browser_name; /* Current local master browser. */
-
- /* Announce info. */
- time_t lastannounce_time;
- int announce_interval;
- BOOL needannounce;
-
- /* Timeout time for this workgroup. 0 means permanent. */
- time_t death_time;
-
- /* Election info */
- BOOL RunningElection;
- BOOL needelection;
- int ElectionCount;
- uint32 ElectionCriterion;
-
- /* Domain master browser info. Used for efficient syncs. */
- struct nmb_name dmb_name;
- struct in_addr dmb_addr;
-};
-
-/* typedefs needed to define copy & free functions for userdata. */
-struct userdata_struct;
-
-typedef struct userdata_struct *(*userdata_copy_fn) (struct userdata_struct *);
-typedef void (*userdata_free_fn) (struct userdata_struct *);
-
-/* Structure to define any userdata passed around. */
-
-struct userdata_struct
-{
- userdata_copy_fn copy_fn;
- userdata_free_fn free_fn;
- unsigned int userdata_len;
- char data[16]; /* 16 is to ensure alignment/padding on all systems */
-};
-
-struct response_record;
-struct packet_struct;
-struct res_rec;
-
-/* typedef to define the function called when this response packet comes in. */
-typedef void (*response_function) (struct subnet_record *, struct response_record *,
- struct packet_struct *);
-
-/* typedef to define the function called when this response record times out. */
-typedef void (*timeout_response_function) (struct subnet_record *, struct response_record *);
-
-/* typedef to define the function called when the request that caused this
- response record to be created is successful. */
-typedef void (*success_function) (struct subnet_record *, struct userdata_struct *, ...);
-
-/* typedef to define the function called when the request that caused this
- response record to be created is unsuccessful. */
-typedef void (*fail_function) (struct subnet_record *, struct response_record *, ...);
-
-/* List of typedefs for success and fail functions of the different query
- types. Used to catch any compile time prototype errors. */
-
-typedef void (*register_name_success_function) (struct subnet_record *,
- struct userdata_struct *,
- struct nmb_name *, uint16, int, struct in_addr);
-typedef void (*register_name_fail_function) (struct subnet_record *,
- struct response_record *, struct nmb_name *);
-
-typedef void (*release_name_success_function) (struct subnet_record *,
- struct userdata_struct *,
- struct nmb_name *, struct in_addr);
-typedef void (*release_name_fail_function) (struct subnet_record *,
- struct response_record *, struct nmb_name *);
-
-typedef void (*refresh_name_success_function) (struct subnet_record *,
- struct userdata_struct *,
- struct nmb_name *, uint16, int, struct in_addr);
-typedef void (*refresh_name_fail_function) (struct subnet_record *,
- struct response_record *, struct nmb_name *);
-
-typedef void (*query_name_success_function) (struct subnet_record *,
- struct userdata_struct *,
- struct nmb_name *,
- struct in_addr, struct res_rec * answers);
-
-typedef void (*query_name_fail_function) (struct subnet_record *,
- struct response_record *, struct nmb_name *, int);
-
-typedef void (*node_status_success_function) (struct subnet_record *,
- struct userdata_struct *,
- struct res_rec *, struct in_addr);
-typedef void (*node_status_fail_function) (struct subnet_record *, struct response_record *);
-
-/* Initiated name queries are recorded in this list to track any responses. */
-
-struct response_record
-{
- struct response_record *next;
- struct response_record *prev;
-
- uint16 response_id;
-
- /* Callbacks for packets received or not. */
- response_function resp_fn;
- timeout_response_function timeout_fn;
-
- /* Callbacks for the request succeeding or not. */
- success_function success_fn;
- fail_function fail_fn;
-
- struct packet_struct *packet;
-
- struct userdata_struct *userdata;
-
- int num_msgs;
-
- time_t repeat_time;
- time_t repeat_interval;
- int repeat_count;
-
- /* Recursion protection. */
- BOOL in_expiration_processing;
-};
-
-/* A subnet structure. It contains a list of workgroups and netbios names. */
-
-/*
- B nodes will have their own, totally separate subnet record, with their
- own netbios name set. These do NOT interact with other subnet records'
- netbios names.
- */
-
-enum subnet_type
-{
- NORMAL_SUBNET = 0, /* Subnet listed in interfaces list. */
- UNICAST_SUBNET = 1, /* Subnet for unicast packets. */
- REMOTE_BROADCAST_SUBNET = 2, /* Subnet for remote broadcasts. */
- WINS_SERVER_SUBNET = 3 /* Only created if we are a WINS server. */
-};
-
-/* A resource record. */
-struct res_rec
-{
- struct nmb_name rr_name;
- int rr_type;
- int rr_class;
- int ttl;
- int rdlength;
- char rdata[MAX_DGRAM_SIZE];
-};
-
-/* An nmb packet. */
-struct nmb_packet
-{
- struct
- {
- int name_trn_id;
- int opcode;
- BOOL response;
- struct
- {
- BOOL bcast;
- BOOL recursion_available;
- BOOL recursion_desired;
- BOOL trunc;
- BOOL authoritative;
- } nm_flags;
- int rcode;
- int qdcount;
- int ancount;
- int nscount;
- int arcount;
- } header;
-
- struct
- {
- struct nmb_name question_name;
- int question_type;
- int question_class;
- } question;
-
- struct res_rec *answers;
- struct res_rec *nsrecs;
- struct res_rec *additional;
-};
-
-
-/* A datagram - this normally contains SMB data in the data[] array. */
-
-struct dgram_packet
-{
- struct
- {
- int msg_type;
- struct
- {
- enum node_type node_type;
- BOOL first;
- BOOL more;
- } flags;
- int dgm_id;
- struct in_addr source_ip;
- int source_port;
- int dgm_length;
- int packet_offset;
- } header;
- struct nmb_name source_name;
- struct nmb_name dest_name;
- int datasize;
- char data[MAX_DGRAM_SIZE];
-};
-
-/* Define a structure used to queue packets. This will be a linked
- list of nmb packets. */
-
-struct packet_struct
-{
- struct packet_struct *next;
- struct packet_struct *prev;
- BOOL locked;
- struct in_addr ip;
- int port;
- int fd;
- time_t timestamp;
- enum packet_type packet_type;
- union
- {
- struct nmb_packet nmb;
- struct dgram_packet dgram;
- } packet;
-};
-
-/* NETLOGON opcodes */
-
-#define QUERYFORPDC 7 /* Query for PDC. */
-#define QUERYFORPDC_R 12 /* Response to Query for PDC. */
-#define SAMLOGON 18
-#define SAMLOGON_R 19
-
-
-/* Ids for netbios packet types. */
-
-#define ANN_HostAnnouncement 1
-#define ANN_AnnouncementRequest 2
-#define ANN_Election 8
-#define ANN_GetBackupListReq 9
-#define ANN_GetBackupListResp 10
-#define ANN_BecomeBackup 11
-#define ANN_DomainAnnouncement 12
-#define ANN_MasterAnnouncement 13
-#define ANN_ResetBrowserState 14
-#define ANN_LocalMasterAnnouncement 15
-
-
-/* Broadcast packet announcement intervals, in minutes. */
-
-/* Attempt to add domain logon and domain master names. */
-#define CHECK_TIME_ADD_DOM_NAMES 5
-
-/* Search for master browsers of workgroups samba knows about,
- except default. */
-#define CHECK_TIME_MST_BROWSE 5
-
-/* Request backup browser announcements from other servers. */
-#define CHECK_TIME_ANNOUNCE_BACKUP 15
-
-/* Request host announcements from other servers: min and max of interval. */
-#define CHECK_TIME_MIN_HOST_ANNCE 3
-#define CHECK_TIME_MAX_HOST_ANNCE 12
-
-/* Announce as master to WINS server and any Primary Domain Controllers. */
-#define CHECK_TIME_MST_ANNOUNCE 15
-
-/* Time between syncs from domain master browser to local master browsers. */
-#define CHECK_TIME_DMB_TO_LMB_SYNC 15
-
-/* Do all remote announcements this often. */
-#define REMOTE_ANNOUNCE_INTERVAL 180
-
-/* what is the maximum period between name refreshes. Note that this only
- affects non-permanent self names (in seconds) */
-#define MAX_REFRESH_TIME (60*20)
-
-/* Macro's to enumerate subnets either with or without
- the UNICAST subnet. */
-
-extern struct subnet_record *subnetlist;
-extern struct subnet_record *unicast_subnet;
-extern struct subnet_record *wins_server_subnet;
-extern struct subnet_record *remote_broadcast_subnet;
-
-#define FIRST_SUBNET subnetlist
-#define NEXT_SUBNET_EXCLUDING_UNICAST(x) ((x)->next)
-#define NEXT_SUBNET_INCLUDING_UNICAST(x) (get_next_subnet_maybe_unicast((x)))
-
-/* To be removed. */
-enum state_type
-{ TEST };
-#endif /* _NAMESERV_H_ */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/nterr.h
^
|
@@ -1,507 +0,0 @@
-/* these are the NT error codes less than 1000. They are here for when
- we start supporting NT error codes in Samba. They were extracted
- using a loop in smbclient then printing a netmon sniff to a file */
-
-#define NT_STATUS_UNSUCCESSFUL (1)
-#define NT_STATUS_NOT_IMPLEMENTED (2)
-#define NT_STATUS_INVALID_INFO_CLASS (3)
-#define NT_STATUS_INFO_LENGTH_MISMATCH (4)
-#define NT_STATUS_ACCESS_VIOLATION (5)
-#define STATUS_BUFFER_OVERFLOW (5)
-#define NT_STATUS_IN_PAGE_ERROR (6)
-#define NT_STATUS_PAGEFILE_QUOTA (7)
-#define NT_STATUS_INVALID_HANDLE (8)
-#define NT_STATUS_BAD_INITIAL_STACK (9)
-#define NT_STATUS_BAD_INITIAL_PC (10)
-#define NT_STATUS_INVALID_CID (11)
-#define NT_STATUS_TIMER_NOT_CANCELED (12)
-#define NT_STATUS_INVALID_PARAMETER (13)
-#define NT_STATUS_NO_SUCH_DEVICE (14)
-#define NT_STATUS_NO_SUCH_FILE (15)
-#define NT_STATUS_INVALID_DEVICE_REQUEST (16)
-#define NT_STATUS_END_OF_FILE (17)
-#define NT_STATUS_WRONG_VOLUME (18)
-#define NT_STATUS_NO_MEDIA_IN_DEVICE (19)
-#define NT_STATUS_UNRECOGNIZED_MEDIA (20)
-#define NT_STATUS_NONEXISTENT_SECTOR (21)
-#define NT_STATUS_MORE_PROCESSING_REQUIRED (22)
-#define NT_STATUS_NO_MEMORY (23)
-#define NT_STATUS_CONFLICTING_ADDRESSES (24)
-#define NT_STATUS_NOT_MAPPED_VIEW (25)
-#define NT_STATUS_UNABLE_TO_FREE_VM (26)
-#define NT_STATUS_UNABLE_TO_DELETE_SECTION (27)
-#define NT_STATUS_INVALID_SYSTEM_SERVICE (28)
-#define NT_STATUS_ILLEGAL_INSTRUCTION (29)
-#define NT_STATUS_INVALID_LOCK_SEQUENCE (30)
-#define NT_STATUS_INVALID_VIEW_SIZE (31)
-#define NT_STATUS_INVALID_FILE_FOR_SECTION (32)
-#define NT_STATUS_ALREADY_COMMITTED (33)
-#define NT_STATUS_ACCESS_DENIED (34)
-#define NT_STATUS_BUFFER_TOO_SMALL (35)
-#define NT_STATUS_OBJECT_TYPE_MISMATCH (36)
-#define NT_STATUS_NONCONTINUABLE_EXCEPTION (37)
-#define NT_STATUS_INVALID_DISPOSITION (38)
-#define NT_STATUS_UNWIND (39)
-#define NT_STATUS_BAD_STACK (40)
-#define NT_STATUS_INVALID_UNWIND_TARGET (41)
-#define NT_STATUS_NOT_LOCKED (42)
-#define NT_STATUS_PARITY_ERROR (43)
-#define NT_STATUS_UNABLE_TO_DECOMMIT_VM (44)
-#define NT_STATUS_NOT_COMMITTED (45)
-#define NT_STATUS_INVALID_PORT_ATTRIBUTES (46)
-#define NT_STATUS_PORT_MESSAGE_TOO_LONG (47)
-#define NT_STATUS_INVALID_PARAMETER_MIX (48)
-#define NT_STATUS_INVALID_QUOTA_LOWER (49)
-#define NT_STATUS_DISK_CORRUPT_ERROR (50)
-#define NT_STATUS_OBJECT_NAME_INVALID (51)
-#define NT_STATUS_OBJECT_NAME_NOT_FOUND (52)
-#define NT_STATUS_OBJECT_NAME_COLLISION (53)
-#define NT_STATUS_HANDLE_NOT_WAITABLE (54)
-#define NT_STATUS_PORT_DISCONNECTED (55)
-#define NT_STATUS_DEVICE_ALREADY_ATTACHED (56)
-#define NT_STATUS_OBJECT_PATH_INVALID (57)
-#define NT_STATUS_OBJECT_PATH_NOT_FOUND (58)
-#define NT_STATUS_OBJECT_PATH_SYNTAX_BAD (59)
-#define NT_STATUS_DATA_OVERRUN (60)
-#define NT_STATUS_DATA_LATE_ERROR (61)
-#define NT_STATUS_DATA_ERROR (62)
-#define NT_STATUS_CRC_ERROR (63)
-#define NT_STATUS_SECTION_TOO_BIG (64)
-#define NT_STATUS_PORT_CONNECTION_REFUSED (65)
-#define NT_STATUS_INVALID_PORT_HANDLE (66)
-#define NT_STATUS_SHARING_VIOLATION (67)
-#define NT_STATUS_QUOTA_EXCEEDED (68)
-#define NT_STATUS_INVALID_PAGE_PROTECTION (69)
-#define NT_STATUS_MUTANT_NOT_OWNED (70)
-#define NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED (71)
-#define NT_STATUS_PORT_ALREADY_SET (72)
-#define NT_STATUS_SECTION_NOT_IMAGE (73)
-#define NT_STATUS_SUSPEND_COUNT_EXCEEDED (74)
-#define NT_STATUS_THREAD_IS_TERMINATING (75)
-#define NT_STATUS_BAD_WORKING_SET_LIMIT (76)
-#define NT_STATUS_INCOMPATIBLE_FILE_MAP (77)
-#define NT_STATUS_SECTION_PROTECTION (78)
-#define NT_STATUS_EAS_NOT_SUPPORTED (79)
-#define NT_STATUS_EA_TOO_LARGE (80)
-#define NT_STATUS_NONEXISTENT_EA_ENTRY (81)
-#define NT_STATUS_NO_EAS_ON_FILE (82)
-#define NT_STATUS_EA_CORRUPT_ERROR (83)
-#define NT_STATUS_FILE_LOCK_CONFLICT (84)
-#define NT_STATUS_LOCK_NOT_GRANTED (85)
-#define NT_STATUS_DELETE_PENDING (86)
-#define NT_STATUS_CTL_FILE_NOT_SUPPORTED (87)
-#define NT_STATUS_UNKNOWN_REVISION (88)
-#define NT_STATUS_REVISION_MISMATCH (89)
-#define NT_STATUS_INVALID_OWNER (90)
-#define NT_STATUS_INVALID_PRIMARY_GROUP (91)
-#define NT_STATUS_NO_IMPERSONATION_TOKEN (92)
-#define NT_STATUS_CANT_DISABLE_MANDATORY (93)
-#define NT_STATUS_NO_LOGON_SERVERS (94)
-#define NT_STATUS_NO_SUCH_LOGON_SESSION (95)
-#define NT_STATUS_NO_SUCH_PRIVILEGE (96)
-#define NT_STATUS_PRIVILEGE_NOT_HELD (97)
-#define NT_STATUS_INVALID_ACCOUNT_NAME (98)
-#define NT_STATUS_USER_EXISTS (99)
-#define NT_STATUS_NO_SUCH_USER (100)
-#define NT_STATUS_GROUP_EXISTS (101)
-#define NT_STATUS_NO_SUCH_GROUP (102)
-#define NT_STATUS_MEMBER_IN_GROUP (103)
-#define NT_STATUS_MEMBER_NOT_IN_GROUP (104)
-#define NT_STATUS_LAST_ADMIN (105)
-#define NT_STATUS_WRONG_PASSWORD (106)
-#define NT_STATUS_ILL_FORMED_PASSWORD (107)
-#define NT_STATUS_PASSWORD_RESTRICTION (108)
-#define NT_STATUS_LOGON_FAILURE (109)
-#define NT_STATUS_ACCOUNT_RESTRICTION (110)
-#define NT_STATUS_INVALID_LOGON_HOURS (111)
-#define NT_STATUS_INVALID_WORKSTATION (112)
-#define NT_STATUS_PASSWORD_EXPIRED (113)
-#define NT_STATUS_ACCOUNT_DISABLED (114)
-#define NT_STATUS_NONE_MAPPED (115)
-#define NT_STATUS_TOO_MANY_LUIDS_REQUESTED (116)
-#define NT_STATUS_LUIDS_EXHAUSTED (117)
-#define NT_STATUS_INVALID_SUB_AUTHORITY (118)
-#define NT_STATUS_INVALID_ACL (119)
-#define NT_STATUS_INVALID_SID (120)
-#define NT_STATUS_INVALID_SECURITY_DESCR (121)
-#define NT_STATUS_PROCEDURE_NOT_FOUND (122)
-#define NT_STATUS_INVALID_IMAGE_FORMAT (123)
-#define NT_STATUS_NO_TOKEN (124)
-#define NT_STATUS_BAD_INHERITANCE_ACL (125)
-#define NT_STATUS_RANGE_NOT_LOCKED (126)
-#define NT_STATUS_DISK_FULL (127)
-#define NT_STATUS_SERVER_DISABLED (128)
-#define NT_STATUS_SERVER_NOT_DISABLED (129)
-#define NT_STATUS_TOO_MANY_GUIDS_REQUESTED (130)
-#define NT_STATUS_GUIDS_EXHAUSTED (131)
-#define NT_STATUS_INVALID_ID_AUTHORITY (132)
-#define NT_STATUS_AGENTS_EXHAUSTED (133)
-#define NT_STATUS_INVALID_VOLUME_LABEL (134)
-#define NT_STATUS_SECTION_NOT_EXTENDED (135)
-#define NT_STATUS_NOT_MAPPED_DATA (136)
-#define NT_STATUS_RESOURCE_DATA_NOT_FOUND (137)
-#define NT_STATUS_RESOURCE_TYPE_NOT_FOUND (138)
-#define NT_STATUS_RESOURCE_NAME_NOT_FOUND (139)
-#define NT_STATUS_ARRAY_BOUNDS_EXCEEDED (140)
-#define NT_STATUS_FLOAT_DENORMAL_OPERAND (141)
-#define NT_STATUS_FLOAT_DIVIDE_BY_ZERO (142)
-#define NT_STATUS_FLOAT_INEXACT_RESULT (143)
-#define NT_STATUS_FLOAT_INVALID_OPERATION (144)
-#define NT_STATUS_FLOAT_OVERFLOW (145)
-#define NT_STATUS_FLOAT_STACK_CHECK (146)
-#define NT_STATUS_FLOAT_UNDERFLOW (147)
-#define NT_STATUS_INTEGER_DIVIDE_BY_ZERO (148)
-#define NT_STATUS_INTEGER_OVERFLOW (149)
-#define NT_STATUS_PRIVILEGED_INSTRUCTION (150)
-#define NT_STATUS_TOO_MANY_PAGING_FILES (151)
-#define NT_STATUS_FILE_INVALID (152)
-#define NT_STATUS_ALLOTTED_SPACE_EXCEEDED (153)
-#define NT_STATUS_INSUFFICIENT_RESOURCES (154)
-#define NT_STATUS_DFS_EXIT_PATH_FOUND (155)
-#define NT_STATUS_DEVICE_DATA_ERROR (156)
-#define NT_STATUS_DEVICE_NOT_CONNECTED (157)
-#define NT_STATUS_DEVICE_POWER_FAILURE (158)
-#define NT_STATUS_FREE_VM_NOT_AT_BASE (159)
-#define NT_STATUS_MEMORY_NOT_ALLOCATED (160)
-#define NT_STATUS_WORKING_SET_QUOTA (161)
-#define NT_STATUS_MEDIA_WRITE_PROTECTED (162)
-#define NT_STATUS_DEVICE_NOT_READY (163)
-#define NT_STATUS_INVALID_GROUP_ATTRIBUTES (164)
-#define NT_STATUS_BAD_IMPERSONATION_LEVEL (165)
-#define NT_STATUS_CANT_OPEN_ANONYMOUS (166)
-#define NT_STATUS_BAD_VALIDATION_CLASS (167)
-#define NT_STATUS_BAD_TOKEN_TYPE (168)
-#define NT_STATUS_BAD_MASTER_BOOT_RECORD (169)
-#define NT_STATUS_INSTRUCTION_MISALIGNMENT (170)
-#define NT_STATUS_INSTANCE_NOT_AVAILABLE (171)
-#define NT_STATUS_PIPE_NOT_AVAILABLE (172)
-#define NT_STATUS_INVALID_PIPE_STATE (173)
-#define NT_STATUS_PIPE_BUSY (174)
-#define NT_STATUS_ILLEGAL_FUNCTION (175)
-#define NT_STATUS_PIPE_DISCONNECTED (176)
-#define NT_STATUS_PIPE_CLOSING (177)
-#define NT_STATUS_PIPE_CONNECTED (178)
-#define NT_STATUS_PIPE_LISTENING (179)
-#define NT_STATUS_INVALID_READ_MODE (180)
-#define NT_STATUS_IO_TIMEOUT (181)
-#define NT_STATUS_FILE_FORCED_CLOSED (182)
-#define NT_STATUS_PROFILING_NOT_STARTED (183)
-#define NT_STATUS_PROFILING_NOT_STOPPED (184)
-#define NT_STATUS_COULD_NOT_INTERPRET (185)
-#define NT_STATUS_FILE_IS_A_DIRECTORY (186)
-#define NT_STATUS_NOT_SUPPORTED (187)
-#define NT_STATUS_REMOTE_NOT_LISTENING (188)
-#define NT_STATUS_DUPLICATE_NAME (189)
-#define NT_STATUS_BAD_NETWORK_PATH (190)
-#define NT_STATUS_NETWORK_BUSY (191)
-#define NT_STATUS_DEVICE_DOES_NOT_EXIST (192)
-#define NT_STATUS_TOO_MANY_COMMANDS (193)
-#define NT_STATUS_ADAPTER_HARDWARE_ERROR (194)
-#define NT_STATUS_INVALID_NETWORK_RESPONSE (195)
-#define NT_STATUS_UNEXPECTED_NETWORK_ERROR (196)
-#define NT_STATUS_BAD_REMOTE_ADAPTER (197)
-#define NT_STATUS_PRINT_QUEUE_FULL (198)
-#define NT_STATUS_NO_SPOOL_SPACE (199)
-#define NT_STATUS_PRINT_CANCELLED (200)
-#define NT_STATUS_NETWORK_NAME_DELETED (201)
-#define NT_STATUS_NETWORK_ACCESS_DENIED (202)
-#define NT_STATUS_BAD_DEVICE_TYPE (203)
-#define NT_STATUS_BAD_NETWORK_NAME (204)
-#define NT_STATUS_TOO_MANY_NAMES (205)
-#define NT_STATUS_TOO_MANY_SESSIONS (206)
-#define NT_STATUS_SHARING_PAUSED (207)
-#define NT_STATUS_REQUEST_NOT_ACCEPTED (208)
-#define NT_STATUS_REDIRECTOR_PAUSED (209)
-#define NT_STATUS_NET_WRITE_FAULT (210)
-#define NT_STATUS_PROFILING_AT_LIMIT (211)
-#define NT_STATUS_NOT_SAME_DEVICE (212)
-#define NT_STATUS_FILE_RENAMED (213)
-#define NT_STATUS_VIRTUAL_CIRCUIT_CLOSED (214)
-#define NT_STATUS_NO_SECURITY_ON_OBJECT (215)
-#define NT_STATUS_CANT_WAIT (216)
-#define NT_STATUS_PIPE_EMPTY (217)
-#define NT_STATUS_CANT_ACCESS_DOMAIN_INFO (218)
-#define NT_STATUS_CANT_TERMINATE_SELF (219)
-#define NT_STATUS_INVALID_SERVER_STATE (220)
-#define NT_STATUS_INVALID_DOMAIN_STATE (221)
-#define NT_STATUS_INVALID_DOMAIN_ROLE (222)
-#define NT_STATUS_NO_SUCH_DOMAIN (223)
-#define NT_STATUS_DOMAIN_EXISTS (224)
-#define NT_STATUS_DOMAIN_LIMIT_EXCEEDED (225)
-#define NT_STATUS_OPLOCK_NOT_GRANTED (226)
-#define NT_STATUS_INVALID_OPLOCK_PROTOCOL (227)
-#define NT_STATUS_INTERNAL_DB_CORRUPTION (228)
-#define NT_STATUS_INTERNAL_ERROR (229)
-#define NT_STATUS_GENERIC_NOT_MAPPED (230)
-#define NT_STATUS_BAD_DESCRIPTOR_FORMAT (231)
-#define NT_STATUS_INVALID_USER_BUFFER (232)
-#define NT_STATUS_UNEXPECTED_IO_ERROR (233)
-#define NT_STATUS_UNEXPECTED_MM_CREATE_ERR (234)
-#define NT_STATUS_UNEXPECTED_MM_MAP_ERROR (235)
-#define NT_STATUS_UNEXPECTED_MM_EXTEND_ERR (236)
-#define NT_STATUS_NOT_LOGON_PROCESS (237)
-#define NT_STATUS_LOGON_SESSION_EXISTS (238)
-#define NT_STATUS_INVALID_PARAMETER_1 (239)
-#define NT_STATUS_INVALID_PARAMETER_2 (240)
-#define NT_STATUS_INVALID_PARAMETER_3 (241)
-#define NT_STATUS_INVALID_PARAMETER_4 (242)
-#define NT_STATUS_INVALID_PARAMETER_5 (243)
-#define NT_STATUS_INVALID_PARAMETER_6 (244)
-#define NT_STATUS_INVALID_PARAMETER_7 (245)
-#define NT_STATUS_INVALID_PARAMETER_8 (246)
-#define NT_STATUS_INVALID_PARAMETER_9 (247)
-#define NT_STATUS_INVALID_PARAMETER_10 (248)
-#define NT_STATUS_INVALID_PARAMETER_11 (249)
-#define NT_STATUS_INVALID_PARAMETER_12 (250)
-#define NT_STATUS_REDIRECTOR_NOT_STARTED (251)
-#define NT_STATUS_REDIRECTOR_STARTED (252)
-#define NT_STATUS_STACK_OVERFLOW (253)
-#define NT_STATUS_NO_SUCH_PACKAGE (254)
-#define NT_STATUS_BAD_FUNCTION_TABLE (255)
-#define NT_STATUS_DIRECTORY_NOT_EMPTY (257)
-#define NT_STATUS_FILE_CORRUPT_ERROR (258)
-#define NT_STATUS_NOT_A_DIRECTORY (259)
-#define NT_STATUS_BAD_LOGON_SESSION_STATE (260)
-#define NT_STATUS_LOGON_SESSION_COLLISION (261)
-#define NT_STATUS_NAME_TOO_LONG (262)
-#define NT_STATUS_FILES_OPEN (263)
-#define NT_STATUS_CONNECTION_IN_USE (264)
-#define NT_STATUS_MESSAGE_NOT_FOUND (265)
-#define NT_STATUS_PROCESS_IS_TERMINATING (266)
-#define NT_STATUS_INVALID_LOGON_TYPE (267)
-#define NT_STATUS_NO_GUID_TRANSLATION (268)
-#define NT_STATUS_CANNOT_IMPERSONATE (269)
-#define NT_STATUS_IMAGE_ALREADY_LOADED (270)
-#define NT_STATUS_ABIOS_NOT_PRESENT (271)
-#define NT_STATUS_ABIOS_LID_NOT_EXIST (272)
-#define NT_STATUS_ABIOS_LID_ALREADY_OWNED (273)
-#define NT_STATUS_ABIOS_NOT_LID_OWNER (274)
-#define NT_STATUS_ABIOS_INVALID_COMMAND (275)
-#define NT_STATUS_ABIOS_INVALID_LID (276)
-#define NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE (277)
-#define NT_STATUS_ABIOS_INVALID_SELECTOR (278)
-#define NT_STATUS_NO_LDT (279)
-#define NT_STATUS_INVALID_LDT_SIZE (280)
-#define NT_STATUS_INVALID_LDT_OFFSET (281)
-#define NT_STATUS_INVALID_LDT_DESCRIPTOR (282)
-#define NT_STATUS_INVALID_IMAGE_NE_FORMAT (283)
-#define NT_STATUS_RXACT_INVALID_STATE (284)
-#define NT_STATUS_RXACT_COMMIT_FAILURE (285)
-#define NT_STATUS_MAPPED_FILE_SIZE_ZERO (286)
-#define NT_STATUS_TOO_MANY_OPENED_FILES (287)
-#define NT_STATUS_CANCELLED (288)
-#define NT_STATUS_CANNOT_DELETE (289)
-#define NT_STATUS_INVALID_COMPUTER_NAME (290)
-#define NT_STATUS_FILE_DELETED (291)
-#define NT_STATUS_SPECIAL_ACCOUNT (292)
-#define NT_STATUS_SPECIAL_GROUP (293)
-#define NT_STATUS_SPECIAL_USER (294)
-#define NT_STATUS_MEMBERS_PRIMARY_GROUP (295)
-#define NT_STATUS_FILE_CLOSED (296)
-#define NT_STATUS_TOO_MANY_THREADS (297)
-#define NT_STATUS_THREAD_NOT_IN_PROCESS (298)
-#define NT_STATUS_TOKEN_ALREADY_IN_USE (299)
-#define NT_STATUS_PAGEFILE_QUOTA_EXCEEDED (300)
-#define NT_STATUS_COMMITMENT_LIMIT (301)
-#define NT_STATUS_INVALID_IMAGE_LE_FORMAT (302)
-#define NT_STATUS_INVALID_IMAGE_NOT_MZ (303)
-#define NT_STATUS_INVALID_IMAGE_PROTECT (304)
-#define NT_STATUS_INVALID_IMAGE_WIN_16 (305)
-#define NT_STATUS_LOGON_SERVER_CONFLICT (306)
-#define NT_STATUS_TIME_DIFFERENCE_AT_DC (307)
-#define NT_STATUS_SYNCHRONIZATION_REQUIRED (308)
-#define NT_STATUS_DLL_NOT_FOUND (309)
-#define NT_STATUS_OPEN_FAILED (310)
-#define NT_STATUS_IO_PRIVILEGE_FAILED (311)
-#define NT_STATUS_ORDINAL_NOT_FOUND (312)
-#define NT_STATUS_ENTRYPOINT_NOT_FOUND (313)
-#define NT_STATUS_CONTROL_C_EXIT (314)
-#define NT_STATUS_LOCAL_DISCONNECT (315)
-#define NT_STATUS_REMOTE_DISCONNECT (316)
-#define NT_STATUS_REMOTE_RESOURCES (317)
-#define NT_STATUS_LINK_FAILED (318)
-#define NT_STATUS_LINK_TIMEOUT (319)
-#define NT_STATUS_INVALID_CONNECTION (320)
-#define NT_STATUS_INVALID_ADDRESS (321)
-#define NT_STATUS_DLL_INIT_FAILED (322)
-#define NT_STATUS_MISSING_SYSTEMFILE (323)
-#define NT_STATUS_UNHANDLED_EXCEPTION (324)
-#define NT_STATUS_APP_INIT_FAILURE (325)
-#define NT_STATUS_PAGEFILE_CREATE_FAILED (326)
-#define NT_STATUS_NO_PAGEFILE (327)
-#define NT_STATUS_INVALID_LEVEL (328)
-#define NT_STATUS_WRONG_PASSWORD_CORE (329)
-#define NT_STATUS_ILLEGAL_FLOAT_CONTEXT (330)
-#define NT_STATUS_PIPE_BROKEN (331)
-#define NT_STATUS_REGISTRY_CORRUPT (332)
-#define NT_STATUS_REGISTRY_IO_FAILED (333)
-#define NT_STATUS_NO_EVENT_PAIR (334)
-#define NT_STATUS_UNRECOGNIZED_VOLUME (335)
-#define NT_STATUS_SERIAL_NO_DEVICE_INITED (336)
-#define NT_STATUS_NO_SUCH_ALIAS (337)
-#define NT_STATUS_MEMBER_NOT_IN_ALIAS (338)
-#define NT_STATUS_MEMBER_IN_ALIAS (339)
-#define NT_STATUS_ALIAS_EXISTS (340)
-#define NT_STATUS_LOGON_NOT_GRANTED (341)
-#define NT_STATUS_TOO_MANY_SECRETS (342)
-#define NT_STATUS_SECRET_TOO_LONG (343)
-#define NT_STATUS_INTERNAL_DB_ERROR (344)
-#define NT_STATUS_FULLSCREEN_MODE (345)
-#define NT_STATUS_TOO_MANY_CONTEXT_IDS (346)
-#define NT_STATUS_LOGON_TYPE_NOT_GRANTED (347)
-#define NT_STATUS_NOT_REGISTRY_FILE (348)
-#define NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED (349)
-#define NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR (350)
-#define NT_STATUS_FT_MISSING_MEMBER (351)
-#define NT_STATUS_ILL_FORMED_SERVICE_ENTRY (352)
-#define NT_STATUS_ILLEGAL_CHARACTER (353)
-#define NT_STATUS_UNMAPPABLE_CHARACTER (354)
-#define NT_STATUS_UNDEFINED_CHARACTER (355)
-#define NT_STATUS_FLOPPY_VOLUME (356)
-#define NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND (357)
-#define NT_STATUS_FLOPPY_WRONG_CYLINDER (358)
-#define NT_STATUS_FLOPPY_UNKNOWN_ERROR (359)
-#define NT_STATUS_FLOPPY_BAD_REGISTERS (360)
-#define NT_STATUS_DISK_RECALIBRATE_FAILED (361)
-#define NT_STATUS_DISK_OPERATION_FAILED (362)
-#define NT_STATUS_DISK_RESET_FAILED (363)
-#define NT_STATUS_SHARED_IRQ_BUSY (364)
-#define NT_STATUS_FT_ORPHANING (365)
-#define NT_STATUS_PARTITION_FAILURE (370)
-#define NT_STATUS_INVALID_BLOCK_LENGTH (371)
-#define NT_STATUS_DEVICE_NOT_PARTITIONED (372)
-#define NT_STATUS_UNABLE_TO_LOCK_MEDIA (373)
-#define NT_STATUS_UNABLE_TO_UNLOAD_MEDIA (374)
-#define NT_STATUS_EOM_OVERFLOW (375)
-#define NT_STATUS_NO_MEDIA (376)
-#define NT_STATUS_NO_SUCH_MEMBER (378)
-#define NT_STATUS_INVALID_MEMBER (379)
-#define NT_STATUS_KEY_DELETED (380)
-#define NT_STATUS_NO_LOG_SPACE (381)
-#define NT_STATUS_TOO_MANY_SIDS (382)
-#define NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED (383)
-#define NT_STATUS_KEY_HAS_CHILDREN (384)
-#define NT_STATUS_CHILD_MUST_BE_VOLATILE (385)
-#define NT_STATUS_DEVICE_CONFIGURATION_ERROR (386)
-#define NT_STATUS_DRIVER_INTERNAL_ERROR (387)
-#define NT_STATUS_INVALID_DEVICE_STATE (388)
-#define NT_STATUS_IO_DEVICE_ERROR (389)
-#define NT_STATUS_DEVICE_PROTOCOL_ERROR (390)
-#define NT_STATUS_BACKUP_CONTROLLER (391)
-#define NT_STATUS_LOG_FILE_FULL (392)
-#define NT_STATUS_TOO_LATE (393)
-#define NT_STATUS_NO_TRUST_LSA_SECRET (394)
-#define NT_STATUS_NO_TRUST_SAM_ACCOUNT (395)
-#define NT_STATUS_TRUSTED_DOMAIN_FAILURE (396)
-#define NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE (397)
-#define NT_STATUS_EVENTLOG_FILE_CORRUPT (398)
-#define NT_STATUS_EVENTLOG_CANT_START (399)
-#define NT_STATUS_TRUST_FAILURE (400)
-#define NT_STATUS_MUTANT_LIMIT_EXCEEDED (401)
-#define NT_STATUS_NETLOGON_NOT_STARTED (402)
-#define NT_STATUS_ACCOUNT_EXPIRED (403)
-#define NT_STATUS_POSSIBLE_DEADLOCK (404)
-#define NT_STATUS_NETWORK_CREDENTIAL_CONFLICT (405)
-#define NT_STATUS_REMOTE_SESSION_LIMIT (406)
-#define NT_STATUS_EVENTLOG_FILE_CHANGED (407)
-#define NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT (408)
-#define NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT (409)
-#define NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT (410)
-#define NT_STATUS_DOMAIN_TRUST_INCONSISTENT (411)
-#define NT_STATUS_FS_DRIVER_REQUIRED (412)
-#define NT_STATUS_NO_USER_SESSION_KEY (514)
-#define NT_STATUS_USER_SESSION_DELETED (515)
-#define NT_STATUS_RESOURCE_LANG_NOT_FOUND (516)
-#define NT_STATUS_INSUFF_SERVER_RESOURCES (517)
-#define NT_STATUS_INVALID_BUFFER_SIZE (518)
-#define NT_STATUS_INVALID_ADDRESS_COMPONENT (519)
-#define NT_STATUS_INVALID_ADDRESS_WILDCARD (520)
-#define NT_STATUS_TOO_MANY_ADDRESSES (521)
-#define NT_STATUS_ADDRESS_ALREADY_EXISTS (522)
-#define NT_STATUS_ADDRESS_CLOSED (523)
-#define NT_STATUS_CONNECTION_DISCONNECTED (524)
-#define NT_STATUS_CONNECTION_RESET (525)
-#define NT_STATUS_TOO_MANY_NODES (526)
-#define NT_STATUS_TRANSACTION_ABORTED (527)
-#define NT_STATUS_TRANSACTION_TIMED_OUT (528)
-#define NT_STATUS_TRANSACTION_NO_RELEASE (529)
-#define NT_STATUS_TRANSACTION_NO_MATCH (530)
-#define NT_STATUS_TRANSACTION_RESPONDED (531)
-#define NT_STATUS_TRANSACTION_INVALID_ID (532)
-#define NT_STATUS_TRANSACTION_INVALID_TYPE (533)
-#define NT_STATUS_NOT_SERVER_SESSION (534)
-#define NT_STATUS_NOT_CLIENT_SESSION (535)
-#define NT_STATUS_CANNOT_LOAD_REGISTRY_FILE (536)
-#define NT_STATUS_DEBUG_ATTACH_FAILED (537)
-#define NT_STATUS_SYSTEM_PROCESS_TERMINATED (538)
-#define NT_STATUS_DATA_NOT_ACCEPTED (539)
-#define NT_STATUS_NO_BROWSER_SERVERS_FOUND (540)
-#define NT_STATUS_VDM_HARD_ERROR (541)
-#define NT_STATUS_DRIVER_CANCEL_TIMEOUT (542)
-#define NT_STATUS_REPLY_MESSAGE_MISMATCH (543)
-#define NT_STATUS_MAPPED_ALIGNMENT (544)
-#define NT_STATUS_IMAGE_CHECKSUM_MISMATCH (545)
-#define NT_STATUS_LOST_WRITEBEHIND_DATA (546)
-#define NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID (547)
-#define NT_STATUS_PASSWORD_MUST_CHANGE (548)
-#define NT_STATUS_NOT_FOUND (549)
-#define NT_STATUS_NOT_TINY_STREAM (550)
-#define NT_STATUS_RECOVERY_FAILURE (551)
-#define NT_STATUS_STACK_OVERFLOW_READ (552)
-#define NT_STATUS_FAIL_CHECK (553)
-#define NT_STATUS_DUPLICATE_OBJECTID (554)
-#define NT_STATUS_OBJECTID_EXISTS (555)
-#define NT_STATUS_CONVERT_TO_LARGE (556)
-#define NT_STATUS_RETRY (557)
-#define NT_STATUS_FOUND_OUT_OF_SCOPE (558)
-#define NT_STATUS_ALLOCATE_BUCKET (559)
-#define NT_STATUS_PROPSET_NOT_FOUND (560)
-#define NT_STATUS_MARSHALL_OVERFLOW (561)
-#define NT_STATUS_INVALID_VARIANT (562)
-#define NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND (563)
-#define NT_STATUS_ACCOUNT_LOCKED_OUT (564)
-#define NT_STATUS_HANDLE_NOT_CLOSABLE (565)
-#define NT_STATUS_CONNECTION_REFUSED (566)
-#define NT_STATUS_GRACEFUL_DISCONNECT (567)
-#define NT_STATUS_ADDRESS_ALREADY_ASSOCIATED (568)
-#define NT_STATUS_ADDRESS_NOT_ASSOCIATED (569)
-#define NT_STATUS_CONNECTION_INVALID (570)
-#define NT_STATUS_CONNECTION_ACTIVE (571)
-#define NT_STATUS_NETWORK_UNREACHABLE (572)
-#define NT_STATUS_HOST_UNREACHABLE (573)
-#define NT_STATUS_PROTOCOL_UNREACHABLE (574)
-#define NT_STATUS_PORT_UNREACHABLE (575)
-#define NT_STATUS_REQUEST_ABORTED (576)
-#define NT_STATUS_CONNECTION_ABORTED (577)
-#define NT_STATUS_BAD_COMPRESSION_BUFFER (578)
-#define NT_STATUS_USER_MAPPED_FILE (579)
-#define NT_STATUS_AUDIT_FAILED (580)
-#define NT_STATUS_TIMER_RESOLUTION_NOT_SET (581)
-#define NT_STATUS_CONNECTION_COUNT_LIMIT (582)
-#define NT_STATUS_LOGIN_TIME_RESTRICTION (583)
-#define NT_STATUS_LOGIN_WKSTA_RESTRICTION (584)
-#define NT_STATUS_IMAGE_MP_UP_MISMATCH (585)
-#define NT_STATUS_INSUFFICIENT_LOGON_INFO (592)
-#define NT_STATUS_BAD_DLL_ENTRYPOINT (593)
-#define NT_STATUS_BAD_SERVICE_ENTRYPOINT (594)
-#define NT_STATUS_LPC_REPLY_LOST (595)
-#define NT_STATUS_IP_ADDRESS_CONFLICT1 (596)
-#define NT_STATUS_IP_ADDRESS_CONFLICT2 (597)
-#define NT_STATUS_REGISTRY_QUOTA_LIMIT (598)
-#define NT_STATUS_PATH_NOT_COVERED (599)
-#define NT_STATUS_NO_CALLBACK_ACTIVE (600)
-#define NT_STATUS_LICENSE_QUOTA_EXCEEDED (601)
-#define NT_STATUS_PWD_TOO_SHORT (602)
-#define NT_STATUS_PWD_TOO_RECENT (603)
-#define NT_STATUS_PWD_HISTORY_CONFLICT (604)
-#define NT_STATUS_PLUGPLAY_NO_DEVICE (606)
-#define NT_STATUS_UNSUPPORTED_COMPRESSION (607)
-#define NT_STATUS_INVALID_HW_PROFILE (608)
-#define NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH (609)
-#define NT_STATUS_DRIVER_ORDINAL_NOT_FOUND (610)
-#define NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND (611)
-#define NT_STATUS_RESOURCE_NOT_OWNED (612)
-#define NT_STATUS_TOO_MANY_LINKS (613)
-#define NT_STATUS_QUOTA_LIST_INCONSISTENT (614)
-#define NT_STATUS_FILE_IS_OFFLINE (615)
-#define NT_STATUS_NOTIFY_ENUM_DIR (0x10C)
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/proto.h
^
|
@@ -1,606 +0,0 @@
-#ifndef _PROTO_H_
-#define _PROTO_H_
-/* This file is automatically generated with "make proto". DO NOT EDIT */
-
-/* The following definitions come from lib/charcnv.c */
-
-char *unix2dos_format (char *str, BOOL overwrite);
-char *dos2unix_format (char *str, BOOL overwrite);
-void interpret_character_set (const char *str);
-
-/* The following definitions come from lib/charset.c */
-
-void charset_initialise (void);
-void codepage_initialise (int client_codepage);
-void add_char_string (const char *s);
-
-/* The following definitions come from lib/debug.c */
-
-void setup_logging (const char *pname, BOOL interactive);
-void dbgflush (void);
-BOOL dbghdr (int level, const char *file, const char *func, int line);
-
-/* The following definitions come from lib/interface.c */
-
-void load_interfaces (void);
-void iface_set_default (char *ip, char *bcast, char *nmask);
-BOOL ismyip (struct in_addr ip);
-BOOL is_local_net (struct in_addr from);
-int iface_count (void);
-BOOL we_are_multihomed (void);
-struct interface *get_interface (int n);
-struct in_addr *iface_n_ip (int n);
-unsigned iface_hash (void);
-struct in_addr *iface_bcast (struct in_addr ip);
-struct in_addr *iface_ip (struct in_addr ip);
-
-/* The following definitions come from lib/kanji.c */
-
-void interpret_coding_system (const char *str);
-BOOL is_multibyte_codepage (void);
-void initialize_multibyte_vectors (int client_codepage);
-
-/* The following definitions come from lib/md4.c */
-
-void mdfour (unsigned char *out, unsigned char *in, int n);
-
-/* The following definitions come from lib/netmask.c */
-
-int get_netmask (struct in_addr *ipaddr, struct in_addr *nmask);
-
-/* The following definitions come from lib/slprintf.c */
-
-int vslprintf (char *str, int n, const char *format, va_list ap);
-
-/* The following definitions come from lib/system.c */
-
-int sys_select (int maxfd, fd_set * fds, struct timeval *tval);
-int sys_stat (const char *fname, SMB_STRUCT_STAT * sbuf);
-int sys_lstat (const char *fname, SMB_STRUCT_STAT * sbuf);
-int sys_fseek (FILE * fp, SMB_OFF_T offset, int whence);
-SMB_OFF_T sys_ftell (FILE * fp);
-int sys_open (const char *path, int oflag, mode_t mode);
-FILE *sys_fopen (const char *path, const char *type);
-SMB_STRUCT_DIRENT *sys_readdir (DIR * dirp);
-char *sys_getwd (char *s);
-int sys_chown (const char *fname, uid_t uid, gid_t gid);
-struct hostent *sys_gethostbyname (const char *name);
-long sys_random (void);
-void sys_srandom (unsigned int seed);
-
-/* The following definitions come from lib/time.c */
-
-void GetTimeOfDay (struct timeval *tval);
-void TimeInit (void);
-int TimeDiff (time_t t);
-struct tm *LocalTime (time_t * t);
-time_t nt_time_to_unix (NTTIME * nt);
-time_t interpret_long_date (char *p);
-void unix_to_nt_time (NTTIME * nt, time_t t);
-void put_long_date (char *p, time_t t);
-BOOL null_mtime (time_t mtime);
-void put_dos_date (char *buf, int offset, time_t unixdate);
-void put_dos_date2 (char *buf, int offset, time_t unixdate);
-void put_dos_date3 (char *buf, int offset, time_t unixdate);
-time_t make_unix_date (void *date_ptr);
-time_t make_unix_date2 (void *date_ptr);
-time_t make_unix_date3 (void *date_ptr);
-char *http_timestring (time_t t);
-char *timestring (void);
-time_t get_create_time (SMB_STRUCT_STAT * st, BOOL fake_dirs);
-
-/* The following definitions come from lib/username.c */
-
-const char *get_home_dir (char *user);
-BOOL map_username (const char *user);
-struct passwd *Get_Pwnam (const char *user);
-BOOL user_in_list (const char *user, char *list);
-
-/* The following definitions come from lib/util.c */
-
-const char *tmpdir (void);
-BOOL in_group (gid_t group, gid_t current_gid, int ngroups, gid_t * groups);
-char *Atoic (char *p, int *n, char *c);
-char *get_numlist (char *p, uint32 ** num, int *count);
-void putip (void *dest, void *src);
-char *dns_to_netbios_name (char *dns_name);
-int name_mangle (char *In, char *Out, char name_type);
-BOOL file_exist (char *fname, SMB_STRUCT_STAT * sbuf);
-time_t file_modtime (char *fname);
-BOOL directory_exist (char *dname, SMB_STRUCT_STAT * st);
-SMB_OFF_T file_size (char *file_name);
-char *attrib_string (uint16 mode);
-void unix_format (char *fname);
-void dos_format (char *fname);
-void show_msg (char *buf);
-int smb_len (char *buf);
-void _smb_setlen (char *buf, int len);
-void smb_setlen (char *buf, int len);
-int set_message (char *buf, int num_words, int num_bytes, BOOL zero);
-int smb_buflen (char *buf);
-char *smb_buf (char *buf);
-int smb_offset (char *p, char *buf);
-void dos_clean_name (char *s);
-void unix_clean_name (char *s);
-BOOL reduce_name (char *s, char *dir, BOOL widelinks);
-void expand_mask (char *Mask, BOOL doext);
-void make_dir_struct (char *buf, char *mask, char *fname, SMB_OFF_T size, int mode, time_t date);
-void close_low_fds (void);
-int set_blocking (int fd, BOOL set);
-int TvalDiff (struct timeval *tvalold, struct timeval *tvalnew);
-SMB_OFF_T transfer_file (int infd, int outfd, SMB_OFF_T n, char *header, int headlen, int align);
-int name_extract (char *buf, int ofs, char *name);
-int name_len (char *s1);
-void msleep (int t);
-BOOL do_match (char *str, char *regexp, int case_sig);
-BOOL mask_match (char *str, char *regexp, int case_sig, BOOL trans2);
-int set_filelen (int fd, SMB_OFF_T len);
-void *Realloc (void *p, size_t size);
-BOOL get_myname (char *my_name, struct in_addr *ip);
-BOOL ip_equal (struct in_addr ip1, struct in_addr ip2);
-int interpret_protocol (char *str, int def);
-uint32 interpret_addr (const char *str);
-struct in_addr *interpret_addr2 (const char *str);
-BOOL zero_ip (struct in_addr ip);
-BOOL matchname (char *remotehost, struct in_addr addr);
-void standard_sub_basic (char *str);
-void standard_sub (connection_struct * conn, char *str);
-BOOL same_net (struct in_addr ip1, struct in_addr ip2, struct in_addr mask);
-struct hostent *Get_Hostbyname (const char *name);
-char *uidtoname (uid_t uid);
-char *gidtoname (gid_t gid);
-uid_t nametouid (const char *name);
-void smb_panic (const char *why);
-char *readdirname (DIR * p);
-BOOL is_in_path (char *name, name_compare_entry * namelist);
-void set_namearray (name_compare_entry ** ppname_array, char *namelist);
-void free_namearray (name_compare_entry * name_array);
-BOOL fcntl_lock (int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
-BOOL is_myname (char *s);
-void set_remote_arch (enum remote_arch_types type);
-enum remote_arch_types get_remote_arch (void);
-char *align2 (char *q, char *base);
-void out_ascii (FILE * f, unsigned char *buf, int len);
-void out_data (FILE * f, char *buf1, int len, int per_line);
-void print_asc (int level, unsigned char *buf, int len);
-void dump_data (int level, char *buf1, int len);
-char *tab_depth (int depth);
-int str_checksum (const char *s);
-void zero_free (void *p, size_t size);
-int set_maxfiles (int requested_max);
-
-/* The following definitions come from lib/util_file.c */
-
-BOOL do_file_lock (int fd, int waitsecs, int type);
-BOOL file_lock (int fd, int type, int secs, int *plock_depth);
-BOOL file_unlock (int fd, int *plock_depth);
-void *startfilepwent (char *pfile, char *s_readbuf, int bufsize, int *file_lock_depth, BOOL update);
-void endfilepwent (void *vp, int *file_lock_depth);
-SMB_BIG_UINT getfilepwpos (void *vp);
-BOOL setfilepwpos (void *vp, SMB_BIG_UINT tok);
-int getfileline (void *vp, char *linebuf, int linebuf_size);
-char *fgets_slash (char *s2, int maxlen, FILE * f);
-
-/* The following definitions come from lib/util_sock.c */
-
-BOOL is_a_socket (int fd);
-void set_socket_options (int fd, char *options);
-void close_sockets (void);
-ssize_t write_socket (int fd, char *buf, size_t len);
-ssize_t read_udp_socket (int fd, char *buf, size_t len);
-ssize_t read_with_timeout (int fd, char *buf, size_t mincnt, size_t maxcnt, unsigned int time_out);
-BOOL send_keepalive (int client);
-ssize_t read_data (int fd, char *buffer, size_t N);
-ssize_t write_data (int fd, char *buffer, size_t N);
-ssize_t read_smb_length (int fd, char *inbuf, unsigned int timeout);
-BOOL receive_smb (int fd, char *buffer, unsigned int timeout);
-BOOL client_receive_smb (int fd, char *buffer, unsigned int timeout);
-BOOL send_null_session_msg (int fd);
-BOOL send_smb (int fd, char *buffer);
-BOOL send_one_packet (char *buf, int len, struct in_addr ip, int port, int type);
-int open_socket_in (int type, int port, int dlevel, uint32 socket_addr, BOOL rebind);
-int open_socket_out (int type, struct in_addr *addr, int port, int timeout);
-char *client_name (int fd);
-char *client_addr (int fd);
-
-/* The following definitions come from lib/util_str.c */
-
-void set_first_token (char *ptr);
-BOOL next_token (char **ptr, char *buff, const char *sep, size_t bufsize);
-char **toktocliplist (int *ctok, char *sep);
-int StrCaseCmp (const char *s, const char *t);
-int StrnCaseCmp (const char *s, const char *t, size_t n);
-BOOL strequal (const char *s1, const char *s2);
-BOOL strnequal (const char *s1, const char *s2, size_t n);
-BOOL strcsequal (const char *s1, const char *s2);
-void strlower (char *s);
-void strupper (char *s);
-void strnorm (char *s);
-BOOL strisnormal (char *s);
-void string_replace (char *s, char oldc, char newc);
-char *skip_string (char *buf, size_t n);
-size_t str_charnum (const char *s);
-BOOL trim_string (char *s, const char *front, const char *back);
-BOOL strhasupper (const char *s);
-BOOL strhaslower (const char *s);
-size_t count_chars (const char *s, char c);
-char *safe_strcpy (char *dest, const char *src, size_t maxlength);
-char *safe_strcat (char *dest, const char *src, size_t maxlength);
-char *StrCpy (char *dest, const char *src);
-char *StrnCpy (char *dest, const char *src, size_t n);
-char *strncpyn (char *dest, const char *src, size_t n, char c);
-size_t strhex_to_str (char *p, size_t len, const char *strhex);
-BOOL in_list (char *s, char *list, BOOL casesensitive);
-BOOL string_init (char **dest, const char *src);
-void string_free (char **s);
-BOOL string_set (char **dest, const char *src);
-void string_sub (char *s, const char *pattern, const char *insert);
-void all_string_sub (char *s, const char *pattern, const char *insert);
-void split_at_last_component (char *path, char *front, char sep, char *back);
-
-/* The following definitions come from libsmb/clientgen.c */
-
-int cli_set_port (struct cli_state *cli, int port);
-char *cli_errstr (struct cli_state *cli);
-BOOL cli_api_pipe (struct cli_state *cli, char *pipe_name, int pipe_name_len,
- uint16 * setup, uint32 setup_count, uint32 max_setup_count,
- char *params, uint32 param_count, uint32 max_param_count,
- char *data, uint32 data_count, uint32 max_data_count,
- char **rparam, uint32 * rparam_count, char **rdata, uint32 * rdata_count);
-BOOL cli_api (struct cli_state *cli,
- char *param, int prcnt, int mprcnt,
- char *data, int drcnt, int mdrcnt,
- char **rparam, int *rprcnt, char **rdata, int *rdrcnt);
-BOOL cli_NetWkstaUserLogon (struct cli_state *cli, char *user, char *workstation);
-int cli_RNetShareEnum (struct cli_state *cli,
- void (*fn) (const char *, uint32, const char *, void *), void *state);
-BOOL cli_NetServerEnum (struct cli_state *cli, char *workgroup, uint32 stype,
- void (*fn) (const char *, uint32, const char *, void *), void *state);
-BOOL cli_session_setup (struct cli_state *cli, char *user, char *pass, int passlen, char *ntpass,
- int ntpasslen, char *workgroup);
-BOOL cli_ulogoff (struct cli_state *cli);
-BOOL cli_send_tconX (struct cli_state *cli,
- const char *share, const char *dev, const char *pass, int passlen);
-BOOL cli_tdis (struct cli_state *cli);
-BOOL cli_rename (struct cli_state *cli, char *fname_src, char *fname_dst);
-BOOL cli_unlink (struct cli_state *cli, char *fname);
-BOOL cli_mkdir (struct cli_state *cli, char *dname);
-BOOL cli_rmdir (struct cli_state *cli, char *dname);
-int cli_nt_create (struct cli_state *cli, char *fname);
-int cli_open (struct cli_state *cli, char *fname, int flags, int share_mode);
-BOOL cli_close (struct cli_state *cli, int fnum);
-BOOL cli_lock (struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
-BOOL cli_unlock (struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
-size_t cli_read (struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size);
-ssize_t cli_write (struct cli_state *cli,
- int fnum, uint16 write_mode, const char *buf, off_t offset, size_t size);
-ssize_t cli_smbwrite (struct cli_state *cli, int fnum, const char *buf, off_t offset, size_t size);
-BOOL cli_getattrE (struct cli_state *cli, int fd,
- uint16 * attr, size_t * size, time_t * c_time, time_t * a_time, time_t * m_time);
-BOOL cli_getatr (struct cli_state *cli, char *fname, uint16 * attr, size_t * size, time_t * t);
-BOOL cli_setatr (struct cli_state *cli, char *fname, uint16 attr, time_t t);
-BOOL cli_qpathinfo (struct cli_state *cli, const char *fname,
- time_t * c_time, time_t * a_time, time_t * m_time,
- size_t * size, uint16 * mode);
-BOOL cli_qpathinfo2 (struct cli_state *cli, const char *fname,
- time_t * c_time, time_t * a_time, time_t * m_time,
- time_t * w_time, size_t * size, uint16 * mode, SMB_INO_T * ino);
-BOOL cli_qfileinfo (struct cli_state *cli, int fnum,
- uint16 * mode, size_t * size,
- time_t * c_time, time_t * a_time, time_t * m_time,
- time_t * w_time, SMB_INO_T * ino);
-int cli_list (struct cli_state *cli, const char *Mask, uint16 attribute,
- void (*fn) (file_info *, const char *, void *), void *state);
-BOOL cli_negprot (struct cli_state *cli);
-BOOL cli_session_request (struct cli_state *cli, struct nmb_name *calling, struct nmb_name *called);
-BOOL cli_connect (struct cli_state *cli, const char *host, struct in_addr *ip);
-struct cli_state *cli_initialise (struct cli_state *cli);
-void cli_shutdown (struct cli_state *cli);
-int cli_error (struct cli_state *cli, uint8 * eclass, uint32 * num, uint32 * nt_rpc_error);
-void cli_sockopt (struct cli_state *cli, char *options);
-uint16 cli_setpid (struct cli_state *cli, uint16 pid);
-BOOL cli_reestablish_connection (struct cli_state *cli);
-BOOL cli_establish_connection (struct cli_state *cli,
- char *dest_host, struct in_addr *dest_ip,
- struct nmb_name *calling, struct nmb_name *called,
- char *service, char *service_type, BOOL do_shutdown, BOOL do_tcon);
-BOOL cli_chkpath (struct cli_state *cli, char *path);
-BOOL cli_message_start (struct cli_state *cli, char *host, char *username, int *grp);
-BOOL cli_message_text (struct cli_state *cli, char *msg, int len, int grp);
-BOOL cli_message_end (struct cli_state *cli, int grp);
-BOOL cli_dskattr (struct cli_state *cli, int *bsize, int *total, int *avail);
-
-/* The following definitions come from libsmb/namequery.c */
-
-struct in_addr *name_query (int fd, const char *name, int name_type, BOOL bcast, BOOL recurse,
- struct in_addr to_ip, int *count, void (*fn) (struct packet_struct *));
-FILE *startlmhosts (const char *fname);
-BOOL getlmhostsent (FILE * fp, pstring name, int *name_type, struct in_addr *ipaddr);
-void endlmhosts (FILE * fp);
-BOOL resolve_name (const char *name, struct in_addr *return_ip, int name_type);
-BOOL find_master_ip (char *group, struct in_addr *master_ip);
-
-/* The following definitions come from libsmb/nmblib.c */
-
-void debug_nmb_packet (struct packet_struct *p);
-char *nmb_namestr (struct nmb_name *n);
-struct packet_struct *copy_packet (struct packet_struct *packet);
-void free_packet (struct packet_struct *packet);
-struct packet_struct *read_packet (int fd, enum packet_type packet_type);
-void make_nmb_name (struct nmb_name *n, const char *name, int type);
-BOOL nmb_name_equal (struct nmb_name *n1, struct nmb_name *n2);
-BOOL send_packet (struct packet_struct *p);
-struct packet_struct *receive_packet (int fd, enum packet_type type, int t);
-void sort_query_replies (char *data, int n, struct in_addr ip);
-
-/* The following definitions come from libsmb/nterr.c */
-
-const char *get_nt_error_msg (uint32 nt_code);
-
-/* The following definitions come from libsmb/pwd_cache.c */
-
-void pwd_init (struct pwd_info *pwd);
-void pwd_obfuscate_key (struct pwd_info *pwd, uint32 int_key, char *str_key);
-void pwd_read (struct pwd_info *pwd, char *passwd_report, BOOL do_encrypt);
-void pwd_set_nullpwd (struct pwd_info *pwd);
-void pwd_set_cleartext (struct pwd_info *pwd, char *clr);
-void pwd_get_cleartext (struct pwd_info *pwd, char *clr);
-void pwd_set_lm_nt_16 (struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
-void pwd_get_lm_nt_16 (struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
-void pwd_make_lm_nt_16 (struct pwd_info *pwd, char *clr);
-void pwd_make_lm_nt_owf (struct pwd_info *pwd, uchar cryptkey[8]);
-void pwd_get_lm_nt_owf (struct pwd_info *pwd, uchar lm_owf[24], uchar nt_owf[24]);
-
-/* The following definitions come from libsmb/smbdes.c */
-
-void E_P16 (unsigned char *p14, unsigned char *p16);
-void E_P24 (unsigned char *p21, unsigned char *c8, unsigned char *p24);
-void D_P16 (unsigned char *p14, unsigned char *in, unsigned char *out);
-void E_old_pw_hash (unsigned char *p14, unsigned char *in, unsigned char *out);
-void cred_hash1 (unsigned char *out, unsigned char *in, unsigned char *key);
-void cred_hash2 (unsigned char *out, unsigned char *in, unsigned char *key);
-void cred_hash3 (unsigned char *out, unsigned char *in, unsigned char *key, int forw);
-void SamOEMhash (unsigned char *data, unsigned char *key, int val);
-
-/* The following definitions come from libsmb/smbencrypt.c */
-
-void SMBencrypt (uchar * passwd, uchar * c8, uchar * p24);
-void E_md4hash (uchar * passwd, uchar * p16);
-void nt_lm_owf_gen (char *pwd, uchar nt_p16[16], uchar p16[16]);
-void SMBOWFencrypt (uchar passwd[16], uchar * c8, uchar p24[24]);
-void NTLMSSPOWFencrypt (uchar passwd[8], uchar * ntlmchalresp, uchar p24[24]);
-void SMBNTencrypt (uchar * passwd, uchar * c8, uchar * p24);
-
-/* The following definitions come from libsmb/smberr.c */
-
-char *smb_errstr (char *inbuf);
-
-/* The following definitions come from param/loadparm.c */
-
-char *lp_logfile (void);
-char *lp_configfile (void);
-char *lp_smb_passwd_file (void);
-char *lp_serverstring (void);
-char *lp_printcapname (void);
-char *lp_lockdir (void);
-char *lp_rootdir (void);
-char *lp_defaultservice (void);
-char *lp_msg_command (void);
-char *lp_hosts_equiv (void);
-char *lp_auto_services (void);
-char *lp_passwd_program (void);
-char *lp_passwd_chat (void);
-char *lp_passwordserver (void);
-char *lp_name_resolve_order (void);
-char *lp_workgroup (void);
-char *lp_username_map (void);
-char *lp_groupname_map (void);
-char *lp_logon_script (void);
-char *lp_logon_path (void);
-char *lp_logon_drive (void);
-char *lp_logon_home (void);
-char *lp_remote_announce (void);
-char *lp_remote_browse_sync (void);
-char *lp_wins_server (void);
-char *lp_interfaces (void);
-char *lp_socket_address (void);
-char *lp_nis_home_map_name (void);
-char *lp_netbios_aliases (void);
-char *lp_driverfile (void);
-char *lp_panic_action (void);
-char *lp_adduser_script (void);
-char *lp_deluser_script (void);
-char *lp_domain_groups (void);
-char *lp_domain_admin_group (void);
-char *lp_domain_guest_group (void);
-char *lp_domain_admin_users (void);
-char *lp_domain_guest_users (void);
-char *lp_ldap_server (void);
-char *lp_ldap_suffix (void);
-char *lp_ldap_filter (void);
-char *lp_ldap_root (void);
-char *lp_ldap_rootpasswd (void);
-int lp_ssl_version (void);
-char *lp_ssl_hosts (void);
-char *lp_ssl_hosts_resign (void);
-char *lp_ssl_cacertdir (void);
-char *lp_ssl_cacertfile (void);
-char *lp_ssl_cert (void);
-char *lp_ssl_privkey (void);
-char *lp_ssl_client_cert (void);
-char *lp_ssl_client_privkey (void);
-char *lp_ssl_ciphers (void);
-BOOL lp_ssl_enabled (void);
-BOOL lp_ssl_reqClientCert (void);
-BOOL lp_ssl_reqServerCert (void);
-BOOL lp_ssl_compatibility (void);
-BOOL lp_dns_proxy (void);
-BOOL lp_wins_support (void);
-BOOL lp_we_are_a_wins_server (void);
-BOOL lp_wins_proxy (void);
-BOOL lp_local_master (void);
-BOOL lp_domain_master (void);
-BOOL lp_domain_logons (void);
-BOOL lp_preferred_master (void);
-BOOL lp_load_printers (void);
-BOOL lp_use_rhosts (void);
-BOOL lp_readprediction (void);
-BOOL lp_readbmpx (void);
-BOOL lp_readraw (void);
-BOOL lp_writeraw (void);
-BOOL lp_null_passwords (void);
-BOOL lp_strip_dot (void);
-BOOL lp_encrypted_passwords (void);
-BOOL lp_update_encrypted (void);
-BOOL lp_syslog_only (void);
-BOOL lp_timestamp_logs (void);
-BOOL lp_browse_list (void);
-BOOL lp_unix_realname (void);
-BOOL lp_nis_home_map (void);
-BOOL lp_bind_interfaces_only (void);
-BOOL lp_unix_password_sync (void);
-BOOL lp_passwd_chat_debug (void);
-BOOL lp_ole_locking_compat (void);
-BOOL lp_nt_smb_support (void);
-BOOL lp_nt_pipe_support (void);
-BOOL lp_nt_acl_support (void);
-BOOL lp_stat_cache (void);
-BOOL lp_allow_trusted_domains (void);
-BOOL lp_restrict_anonymous (void);
-int lp_os_level (void);
-int lp_max_ttl (void);
-int lp_max_wins_ttl (void);
-int lp_min_wins_ttl (void);
-int lp_max_open_files (void);
-int lp_maxxmit (void);
-int lp_maxmux (void);
-int lp_passwordlevel (void);
-int lp_usernamelevel (void);
-int lp_readsize (void);
-int lp_shmem_size (void);
-int lp_deadtime (void);
-int lp_maxprotocol (void);
-int lp_security (void);
-int lp_maxdisksize (void);
-int lp_lpqcachetime (void);
-int lp_syslog (void);
-int lp_client_code_page (void);
-int lp_lm_announce (void);
-int lp_lm_interval (void);
-int lp_machine_password_timeout (void);
-int lp_change_notify_timeout (void);
-int lp_stat_cache_size (void);
-int lp_map_to_guest (void);
-int lp_min_passwd_length (void);
-int lp_oplock_break_wait_time (void);
-int lp_ldap_port (void);
-char *lp_preexec (int);
-char *lp_postexec (int);
-char *lp_rootpreexec (int);
-char *lp_rootpostexec (int);
-char *lp_servicename (int);
-char *lp_pathname (int);
-char *lp_dontdescend (int);
-char *lp_username (int);
-char *lp_guestaccount (int);
-char *lp_invalid_users (int);
-char *lp_valid_users (int);
-char *lp_admin_users (int);
-char *lp_printcommand (int);
-char *lp_lpqcommand (int);
-char *lp_lprmcommand (int);
-char *lp_lppausecommand (int);
-char *lp_lpresumecommand (int);
-char *lp_queuepausecommand (int);
-char *lp_queueresumecommand (int);
-char *lp_printername (int);
-char *lp_printerdriver (int);
-char *lp_hostsallow (int);
-char *lp_hostsdeny (int);
-char *lp_magicscript (int);
-char *lp_magicoutput (int);
-char *lp_comment (int);
-char *lp_force_user (int);
-char *lp_force_group (int);
-char *lp_readlist (int);
-char *lp_writelist (int);
-char *lp_fstype (int);
-char *lp_mangled_map (int);
-char *lp_veto_files (int);
-char *lp_hide_files (int);
-char *lp_veto_oplocks (int);
-char *lp_driverlocation (int);
-BOOL lp_revalidate (int);
-BOOL lp_casesensitive (int);
-BOOL lp_preservecase (int);
-BOOL lp_shortpreservecase (int);
-BOOL lp_casemangle (int);
-BOOL lp_status (int);
-BOOL lp_hide_dot_files (int);
-BOOL lp_browseable (int);
-BOOL lp_readonly (int);
-BOOL lp_no_set_dir (int);
-BOOL lp_guest_ok (int);
-BOOL lp_guest_only (int);
-BOOL lp_print_ok (int);
-BOOL lp_postscript (int);
-BOOL lp_map_hidden (int);
-BOOL lp_map_archive (int);
-BOOL lp_locking (int);
-BOOL lp_strict_locking (int);
-BOOL lp_share_modes (int);
-BOOL lp_oplocks (int);
-BOOL lp_onlyuser (int);
-BOOL lp_manglednames (int);
-BOOL lp_widelinks (int);
-BOOL lp_symlinks (int);
-BOOL lp_syncalways (int);
-BOOL lp_strict_sync (int);
-BOOL lp_map_system (int);
-BOOL lp_delete_readonly (int);
-BOOL lp_fake_oplocks (int);
-BOOL lp_recursive_veto_delete (int);
-BOOL lp_dos_filetimes (int);
-BOOL lp_dos_filetime_resolution (int);
-BOOL lp_fake_dir_create_times (int);
-BOOL lp_blocking_locks (int);
-BOOL lp_mangle_locks (int);
-int lp_create_mode (int);
-int lp_force_create_mode (int);
-int lp_dir_mode (int);
-int lp_force_dir_mode (int);
-int lp_max_connections (int);
-int lp_defaultcase (int);
-int lp_minprintspace (int);
-int lp_printing (int);
-int lp_oplock_contention_limit (int);
-char lp_magicchar (int);
-BOOL lp_add_home (const char *pszHomename, int iDefaultService, const char *pszHomedir);
-int lp_add_service (char *pszService, int iDefaultService);
-BOOL lp_add_printer (char *pszPrintername, int iDefaultService);
-BOOL lp_file_list_changed (void);
-void *lp_local_ptr (int snum, void *ptr);
-BOOL lp_do_parameter (int snum, const char *pszParmName, const char *pszParmValue);
-BOOL lp_is_default (int snum, struct parm_struct *parm);
-struct parm_struct *lp_next_parameter (int snum, int *i, int allparameters);
-BOOL lp_snum_ok (int iService);
-void lp_add_one_printer (char *name, char *comment);
-BOOL lp_loaded (void);
-void lp_killunused (BOOL (*snumused) (int));
-BOOL lp_load (const char *pszFname, BOOL global_only, BOOL save_defaults, BOOL add_ipc);
-void lp_resetnumservices (void);
-int lp_numservices (void);
-int lp_servicenumber (const char *pszServiceName);
-char *volume_label (int snum);
-int lp_default_server_announce (void);
-int lp_major_announce_version (void);
-int lp_minor_announce_version (void);
-void lp_set_name_resolve_order (char *new_order);
-void lp_set_kernel_oplocks (BOOL val);
-BOOL lp_kernel_oplocks (void);
-
-/* The following definitions come from param/params.c */
-
-BOOL pm_process (const char *FileName,
- BOOL (*sfunc) (const char *), BOOL (*pfunc) (const char *, const char *));
-#endif /* _PROTO_H_ */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/smb.h
^
|
@@ -1,1745 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB parameters and setup
- */
-#ifndef _SMB_H
-#define _SMB_H
-
-#define BUFFER_SIZE (0xFFFF)
-#define SAFETY_MARGIN 1024
-
-#define NMB_PORT 137
-#define DGRAM_PORT 138
-#define SMB_PORT 139
-
-#define False (0)
-#define True (1)
-#define BOOLSTR(b) ((b) ? "Yes" : "No")
-#define BITSETB(ptr,bit) ((((char *)ptr)[0] & (1<<(bit)))!=0)
-#define BITSETW(ptr,bit) ((SVAL(ptr,0) & (1<<(bit)))!=0)
-
-#define IS_BITS_SET_ALL(var,bit) (((var)&(bit))==(bit))
-#define IS_BITS_SET_SOME(var,bit) (((var)&(bit))!=0)
-#define IS_BITS_CLR_ALL(var,bit) (((var)&(bit))==0)
-
-#define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2)))
-
-typedef int BOOL;
-
-/* limiting size of ipc replies */
-#define REALLOC(ptr,size) Realloc(ptr,MAX((size),4*1024))
-
-#define SIZEOFWORD 2
-
-#ifndef DEF_CREATE_MASK
-#define DEF_CREATE_MASK (0755)
-#endif
-
-/* how long to wait for secondary SMB packets (milli-seconds) */
-#define SMB_SECONDARY_WAIT (60*1000)
-
-/* -------------------------------------------------------------------------- **
- * Debugging code. See also debug.c
- */
-
-/* mkproto.awk has trouble with ifdef'd function definitions (it ignores
- * the #ifdef directive and will read both definitions, thus creating two
- * diffferent prototype declarations), so we must do these by hand.
- */
-/* I know the __attribute__ stuff is ugly, but it does ensure we get the
- arguments to DEBUG() right. We have got them wrong too often in the
- past */
-#ifdef HAVE_STDARG_H
-int
-Debug1 (const char *, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 1, 2)))
-#endif
- ;
- BOOL dbgtext (const char *, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 1, 2)))
-#endif
- ;
-#else
-int Debug1 ();
-BOOL dbgtext ();
-#endif
-
-/* If we have these macros, we can add additional info to the header. */
-#ifdef HAVE_FILE_MACRO
-#define FILE_MACRO (__FILE__)
-#else
-#define FILE_MACRO ("")
-#endif
-
-#ifdef HAVE_FUNCTION_MACRO
-#define FUNCTION_MACRO (__FUNCTION__)
-#else
-#define FUNCTION_MACRO ("")
-#endif
-
-/* Debugging macros.
- * DEBUGLVL() - If level is <= the system-wide DEBUGLEVEL then generate a
- * header using the default macros for file, line, and
- * function name.
- * Returns True if the debug level was <= DEBUGLEVEL.
- * Example usage:
- * if( DEBUGLVL( 2 ) )
- * dbgtext( "Some text.\n" );
- * DEGUG() - Good old DEBUG(). Each call to DEBUG() will generate a new
- * header *unless* the previous debug output was unterminated
- * (i.e., no '\n'). See debug.c:dbghdr() for more info.
- * Example usage:
- * DEBUG( 2, ("Some text.\n") );
- * DEBUGADD() - If level <= DEBUGLEVEL, then the text is appended to the
- * current message (i.e., no header).
- * Usage:
- * DEBUGADD( 2, ("Some additional text.\n") );
- */
-#define DEBUGLVL( level ) \
- ( (DEBUGLEVEL >= (level)) \
- && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
-
-#if 0
-
-#define DEBUG( level, body ) \
- ( ( DEBUGLEVEL >= (level) \
- && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) ) \
- ? (void)(dbgtext body) : (void)0 )
-
-#define DEBUGADD( level, body ) \
- ( (DEBUGLEVEL >= (level)) ? (void)(dbgtext body) : (void)0 )
-
-#else
-
-#define DEBUG( level, body ) \
- (void)( (DEBUGLEVEL >= (level)) \
- && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
- && (dbgtext body) )
-
-#define DEBUGADD( level, body ) \
- (void)( (DEBUGLEVEL >= (level)) && (dbgtext body) )
-
-#endif
-
-/* End Debugging code section.
- * -------------------------------------------------------------------------- **
- */
-
-/* this defines the error codes that receive_smb can put in smb_read_error */
-#define READ_TIMEOUT 1
-#define READ_EOF 2
-#define READ_ERROR 3
-
-
-#define DIR_STRUCT_SIZE 43
-
-/* these define all the command types recognised by the server - there
- are lots of gaps so probably there are some rare commands that are not
- implemented */
-
-#define pSETDIR '\377'
-
-/* these define the attribute byte as seen by DOS */
-#define aRONLY (1L<<0)
-#define aHIDDEN (1L<<1)
-#define aSYSTEM (1L<<2)
-#define aVOLID (1L<<3)
-#define aDIR (1L<<4)
-#define aARCH (1L<<5)
-
-/* for readability... */
-#define IS_DOS_READONLY(test_mode) (((test_mode) & aRONLY) != 0)
-#define IS_DOS_DIR(test_mode) (((test_mode) & aDIR) != 0)
-#define IS_DOS_ARCHIVE(test_mode) (((test_mode) & aARCH) != 0)
-#define IS_DOS_SYSTEM(test_mode) (((test_mode) & aSYSTEM) != 0)
-#define IS_DOS_HIDDEN(test_mode) (((test_mode) & aHIDDEN) != 0)
-
-/* deny modes */
-#define DENY_DOS 0
-#define DENY_ALL 1
-#define DENY_WRITE 2
-#define DENY_READ 3
-#define DENY_NONE 4
-#define DENY_FCB 7
-
-/* open modes */
-#define DOS_OPEN_RDONLY 0
-#define DOS_OPEN_WRONLY 1
-#define DOS_OPEN_RDWR 2
-#define DOS_OPEN_FCB 0xF
-
-/* define shifts and masks for share and open modes. */
-#define OPEN_MODE_MASK 0xF
-#define SHARE_MODE_SHIFT 4
-#define SHARE_MODE_MASK 0x7
-#define GET_OPEN_MODE(x) ((x) & OPEN_MODE_MASK)
-#define SET_OPEN_MODE(x) ((x) & OPEN_MODE_MASK)
-#define GET_DENY_MODE(x) (((x)>>SHARE_MODE_SHIFT) & SHARE_MODE_MASK)
-#define SET_DENY_MODE(x) ((x)<<SHARE_MODE_SHIFT)
-
-/* Sync on open file (not sure if used anymore... ?) */
-#define FILE_SYNC_OPENMODE (1<<14)
-#define GET_FILE_SYNC_OPENMODE(x) (((x) & FILE_SYNC_OPENMODE) ? True : False)
-
-/* allow delete on open file mode (used by NT SMB's). */
-#define ALLOW_SHARE_DELETE (1<<15)
-#define GET_ALLOW_SHARE_DELETE(x) (((x) & ALLOW_SHARE_DELETE) ? True : False)
-#define SET_ALLOW_SHARE_DELETE(x) ((x) ? ALLOW_SHARE_DELETE : 0)
-
-/* delete on close flag (used by NT SMB's). */
-#define DELETE_ON_CLOSE_FLAG (1<<16)
-#define GET_DELETE_ON_CLOSE_FLAG(x) (((x) & DELETE_ON_CLOSE_FLAG) ? True : False)
-#define SET_DELETE_ON_CLOSE_FLAG(x) ((x) ? DELETE_ON_CLOSE_FLAG : 0)
-
-/* open disposition values */
-#define FILE_EXISTS_FAIL 0
-#define FILE_EXISTS_OPEN 1
-#define FILE_EXISTS_TRUNCATE 2
-
-/* mask for open disposition. */
-#define FILE_OPEN_MASK 0x3
-
-#define GET_FILE_OPEN_DISPOSITION(x) ((x) & FILE_OPEN_MASK)
-#define SET_FILE_OPEN_DISPOSITION(x) ((x) & FILE_OPEN_MASK)
-
-/* The above can be OR'ed with... */
-#define FILE_CREATE_IF_NOT_EXIST 0x10
-#define FILE_FAIL_IF_NOT_EXIST 0
-
-#define GET_FILE_CREATE_DISPOSITION(x) ((x) & (FILE_CREATE_IF_NOT_EXIST|FILE_FAIL_IF_NOT_EXIST))
-
-/* share types */
-#define STYPE_DISKTREE 0 /* Disk drive */
-#define STYPE_PRINTQ 1 /* Spooler queue */
-#define STYPE_DEVICE 2 /* Serial device */
-#define STYPE_IPC 3 /* Interprocess communication (IPC) */
-#define STYPE_HIDDEN 0x80000000 /* share is a hidden one (ends with $) */
-
-/* SMB X/Open error codes for the ERRDOS error class */
-#define ERRbadfunc 1 /* Invalid function (or system call) */
-#define ERRbadfile 2 /* File not found (pathname error) */
-#define ERRbadpath 3 /* Directory not found */
-#define ERRnofids 4 /* Too many open files */
-#define ERRnoaccess 5 /* Access denied */
-#define ERRbadfid 6 /* Invalid fid */
-#define ERRnomem 8 /* Out of memory */
-#define ERRbadmem 9 /* Invalid memory block address */
-#define ERRbadenv 10 /* Invalid environment */
-#define ERRbadaccess 12 /* Invalid open mode */
-#define ERRbaddata 13 /* Invalid data (only from ioctl call) */
-#define ERRres 14 /* reserved */
-#define ERRbaddrive 15 /* Invalid drive */
-#define ERRremcd 16 /* Attempt to delete current directory */
-#define ERRdiffdevice 17 /* rename/move across different filesystems */
-#define ERRnofiles 18 /* no more files found in file search */
-#define ERRbadshare 32 /* Share mode on file conflict with open mode */
-#define ERRlock 33 /* Lock request conflicts with existing lock */
-#define ERRunsup 50 /* Request unsupported, returned by Win 95, RJS 20Jun98 */
-#define ERRfilexists 80 /* File in operation already exists */
-#define ERRcannotopen 110 /* Cannot open the file specified */
-#define ERRunknownlevel 124
-#define ERRrename 183
-#define ERRbadpipe 230 /* Named pipe invalid */
-#define ERRpipebusy 231 /* All instances of pipe are busy */
-#define ERRpipeclosing 232 /* named pipe close in progress */
-#define ERRnotconnected 233 /* No process on other end of named pipe */
-#define ERRmoredata 234 /* More data to be returned */
-#define ERRbaddirectory 267 /* Invalid directory name in a path. */
-#define ERROR_EAS_DIDNT_FIT 275 /* Extended attributes didn't fit */
-#define ERROR_EAS_NOT_SUPPORTED 282 /* Extended attributes not supported */
-#define ERROR_NOTIFY_ENUM_DIR 1022 /* Buffer too small to return change notify. */
-#define ERRunknownipc 2142
-
-
-/* here's a special one from observing NT */
-#define ERRnoipc 66 /* don't support ipc */
-
-/* Error codes for the ERRSRV class */
-
-#define ERRerror 1 /* Non specific error code */
-#define ERRbadpw 2 /* Bad password */
-#define ERRbadtype 3 /* reserved */
-#define ERRaccess 4 /* No permissions to do the requested operation */
-#define ERRinvnid 5 /* tid invalid */
-#define ERRinvnetname 6 /* Invalid servername */
-#define ERRinvdevice 7 /* Invalid device */
-#define ERRqfull 49 /* Print queue full */
-#define ERRqtoobig 50 /* Queued item too big */
-#define ERRinvpfid 52 /* Invalid print file in smb_fid */
-#define ERRsmbcmd 64 /* Unrecognised command */
-#define ERRsrverror 65 /* smb server internal error */
-#define ERRfilespecs 67 /* fid and pathname invalid combination */
-#define ERRbadlink 68 /* reserved */
-#define ERRbadpermits 69 /* Access specified for a file is not valid */
-#define ERRbadpid 70 /* reserved */
-#define ERRsetattrmode 71 /* attribute mode invalid */
-#define ERRpaused 81 /* Message server paused */
-#define ERRmsgoff 82 /* Not receiving messages */
-#define ERRnoroom 83 /* No room for message */
-#define ERRrmuns 87 /* too many remote usernames */
-#define ERRtimeout 88 /* operation timed out */
-#define ERRnoresource 89 /* No resources currently available for request. */
-#define ERRtoomanyuids 90 /* too many userids */
-#define ERRbaduid 91 /* bad userid */
-#define ERRuseMPX 250 /* temporarily unable to use raw mode, use MPX mode */
-#define ERRuseSTD 251 /* temporarily unable to use raw mode, use standard mode */
-#define ERRcontMPX 252 /* resume MPX mode */
-#define ERRbadPW /* reserved */
-#define ERRnosupport 0xFFFF
-#define ERRunknownsmb 22 /* from NT 3.5 response */
-
-
-/* Error codes for the ERRHRD class */
-
-#define ERRnowrite 19 /* read only media */
-#define ERRbadunit 20 /* Unknown device */
-#define ERRnotready 21 /* Drive not ready */
-#define ERRbadcmd 22 /* Unknown command */
-#define ERRdata 23 /* Data (CRC) error */
-#define ERRbadreq 24 /* Bad request structure length */
-#define ERRseek 25
-#define ERRbadmedia 26
-#define ERRbadsector 27
-#define ERRnopaper 28
-#define ERRwrite 29 /* write fault */
-#define ERRread 30 /* read fault */
-#define ERRgeneral 31 /* General hardware failure */
-#define ERRwrongdisk 34
-#define ERRFCBunavail 35
-#define ERRsharebufexc 36 /* share buffer exceeded */
-#define ERRdiskfull 39
-
-
-typedef char pstring[1024];
-typedef char fstring[128];
-
-/* pipe string names */
-#define PIPE_LANMAN "\\PIPE\\LANMAN"
-#define PIPE_SRVSVC "\\PIPE\\srvsvc"
-#define PIPE_SAMR "\\PIPE\\samr"
-#define PIPE_WINREG "\\PIPE\\winreg"
-#define PIPE_WKSSVC "\\PIPE\\wkssvc"
-#define PIPE_NETLOGON "\\PIPE\\NETLOGON"
-#define PIPE_NTLSA "\\PIPE\\ntlsa"
-#define PIPE_NTSVCS "\\PIPE\\ntsvcs"
-#define PIPE_LSASS "\\PIPE\\lsass"
-#define PIPE_LSARPC "\\PIPE\\lsarpc"
-
-
-/* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
-typedef struct nttime_info
-{
- uint32 low;
- uint32 high;
-
-} NTTIME;
-
-/* Allowable account control bits */
-#define ACB_DISABLED 0x0001 /* 1 = User account disabled */
-#define ACB_HOMDIRREQ 0x0002 /* 1 = Home directory required */
-#define ACB_PWNOTREQ 0x0004 /* 1 = User password not required */
-#define ACB_TEMPDUP 0x0008 /* 1 = Temporary duplicate account */
-#define ACB_NORMAL 0x0010 /* 1 = Normal user account */
-#define ACB_MNS 0x0020 /* 1 = MNS logon user account */
-#define ACB_DOMTRUST 0x0040 /* 1 = Interdomain trust account */
-#define ACB_WSTRUST 0x0080 /* 1 = Workstation trust account */
-#define ACB_SVRTRUST 0x0100 /* 1 = Server trust account */
-#define ACB_PWNOEXP 0x0200 /* 1 = User password does not expire */
-#define ACB_AUTOLOCK 0x0400 /* 1 = Account auto locked */
-
-#define MAX_HOURS_LEN 32
-
-struct sam_passwd
-{
- time_t logon_time; /* logon time */
- time_t logoff_time; /* logoff time */
- time_t kickoff_time; /* kickoff time */
- time_t pass_last_set_time; /* password last set time */
- time_t pass_can_change_time; /* password can change time */
- time_t pass_must_change_time; /* password must change time */
-
- char *smb_name; /* username string */
- char *full_name; /* user's full name string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *acct_desc; /* user description string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
-
- uid_t smb_userid; /* this is actually the unix uid_t */
- gid_t smb_grpid; /* this is actually the unix gid_t */
- uint32 user_rid; /* Primary User ID */
- uint32 group_rid; /* Primary Group ID */
-
- unsigned char *smb_passwd; /* Null if no password */
- unsigned char *smb_nt_passwd; /* Null if no password */
-
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- uint32 unknown_3; /* 0x00ff ffff */
-
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 hours[MAX_HOURS_LEN];
-
- uint32 unknown_5; /* 0x0002 0000 */
- uint32 unknown_6; /* 0x0000 04ec */
-};
-
-struct smb_passwd
-{
- uid_t smb_userid; /* this is actually the unix uid_t */
- char *smb_name; /* username string */
-
- unsigned char *smb_passwd; /* Null if no password */
- unsigned char *smb_nt_passwd; /* Null if no password */
-
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- time_t pass_last_set_time; /* password last set time */
-};
-
-
-struct sam_disp_info
-{
- uint32 user_rid; /* Primary User ID */
- char *smb_name; /* username string */
- char *full_name; /* user's full name string */
-};
-
-#define MAXSUBAUTHS 15 /* max sub authorities in a SID */
-
-/* DOM_SID - security id */
-typedef struct sid_info
-{
- uint8 sid_rev_num; /* SID revision number */
- uint8 num_auths; /* number of sub-authorities */
- uint8 id_auth[6]; /* Identifier Authority */
- /*
- * Note that the values in these uint32's are in *native* byteorder,
- * not neccessarily little-endian...... JRA.
- */
- uint32 sub_auths[MAXSUBAUTHS]; /* pointer to sub-authorities. */
-
-} DOM_SID;
-
-
-/*** query a local group, get a list of these: shows who is in that group ***/
-
-/* local group member info */
-typedef struct local_grp_member_info
-{
- DOM_SID sid; /* matches with name */
- uint8 sid_use; /* usr=1 grp=2 dom=3 alias=4 wkng=5 del=6 inv=7 unk=8 */
- fstring name; /* matches with sid: must be of the form "DOMAIN\account" */
-
-} LOCAL_GRP_MEMBER;
-
-/* enumerate these to get list of local groups */
-
-/* local group info */
-typedef struct local_grp_info
-{
- fstring name;
- fstring comment;
-
-} LOCAL_GRP;
-
-/*** enumerate these to get list of domain groups ***/
-
-/* domain group member info */
-typedef struct domain_grp_info
-{
- fstring name;
- fstring comment;
- uint32 rid; /* group rid */
- uint8 attr; /* attributes forced to be set to 0x7: SE_GROUP_xxx */
-
-} DOMAIN_GRP;
-
-/*** query a domain group, get a list of these: shows who is in that group ***/
-
-/* domain group info */
-typedef struct domain_grp_member_info
-{
- fstring name;
- uint8 attr; /* attributes forced to be set to 0x7: SE_GROUP_xxx */
-
-} DOMAIN_GRP_MEMBER;
-
-/* DOM_CHAL - challenge info */
-typedef struct chal_info
-{
- uchar data[8]; /* credentials */
-} DOM_CHAL;
-
-/* 32 bit time (sec) since 01jan1970 - cifs6.txt, section 3.5, page 30 */
-typedef struct time_info
-{
- uint32 time;
-} UTIME;
-
-/* DOM_CREDs - timestamped client or server credentials */
-typedef struct cred_info
-{
- DOM_CHAL challenge; /* credentials */
- UTIME timestamp; /* credential time-stamp */
-} DOM_CRED;
-
-/* Structure used when SMBwritebmpx is active */
-typedef struct
-{
- size_t wr_total_written; /* So we know when to discard this */
- int32 wr_timeout;
- int32 wr_errclass;
- int32 wr_error; /* Cached errors */
- BOOL wr_mode; /* write through mode) */
- BOOL wr_discard; /* discard all further data */
-} write_bmpx_struct;
-
-/*
- * Structure used to indirect fd's from the files_struct.
- * Needed as POSIX locking is based on file and process, not
- * file descriptor and process.
- */
-
-typedef struct file_fd_struct
-{
- struct file_fd_struct *next, *prev;
- uint16 ref_count;
- uint16 uid_cache_count;
- uid_t uid_users_cache[10];
- SMB_DEV_T dev;
- SMB_INO_T inode;
- int fd;
- int fd_readonly;
- int fd_writeonly;
- int real_open_flags;
- BOOL delete_on_close;
-} file_fd_struct;
-
-/*
- * Structure used to keep directory state information around.
- * Used in NT change-notify code.
- */
-
-typedef struct
-{
- time_t modify_time;
- time_t status_time;
-} dir_status_struct;
-
-struct uid_cache
-{
- int entries;
- uid_t list[UID_CACHE_SIZE];
-};
-
-typedef struct
-{
- char *name;
- BOOL is_wild;
-} name_compare_entry;
-
-typedef struct connection_struct
-{
- struct connection_struct *next, *prev;
- unsigned cnum; /* an index passed over the wire */
- int service;
- BOOL force_user;
- struct uid_cache uid_cache;
- void *dirptr;
- BOOL printer;
- BOOL ipc;
- BOOL read_only;
- BOOL admin_user;
- char *dirpath;
- char *connectpath;
- char *origpath;
- char *user; /* name of user who *opened* this connection */
- uid_t uid; /* uid of user who *opened* this connection */
- gid_t gid; /* gid of user who *opened* this connection */
-
- uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
-
- /* following groups stuff added by ih */
-
- /* This groups info is valid for the user that *opened* the connection */
- int ngroups;
- gid_t *groups;
-
- time_t lastused;
- BOOL used;
- int num_files_open;
- name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
- name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
- name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */
-
-} connection_struct;
-
-struct current_user
-{
- connection_struct *conn;
- uint16 vuid;
- uid_t uid;
- gid_t gid;
- int ngroups;
- gid_t *groups;
-};
-
-typedef struct files_struct
-{
- struct files_struct *next, *prev;
- int fnum;
- connection_struct *conn;
- file_fd_struct *fd_ptr;
- SMB_OFF_T pos;
- SMB_OFF_T size;
- mode_t mode;
- uint16 vuid;
- char *mmap_ptr;
- SMB_OFF_T mmap_size;
- write_bmpx_struct *wbmpx_ptr;
- struct timeval open_time;
- int share_mode;
- time_t pending_modtime;
- BOOL open;
- BOOL can_lock;
- BOOL can_read;
- BOOL can_write;
- BOOL print_file;
- BOOL modified;
- BOOL granted_oplock;
- BOOL sent_oplock_break;
- BOOL is_directory;
- BOOL directory_delete_on_close;
- BOOL stat_open;
- char *fsp_name;
-} files_struct;
-
-/* Domain controller authentication protocol info */
-struct dcinfo
-{
- DOM_CHAL clnt_chal; /* Initial challenge received from client */
- DOM_CHAL srv_chal; /* Initial server challenge */
- DOM_CRED clnt_cred; /* Last client credential */
- DOM_CRED srv_cred; /* Last server credential */
-
- uchar sess_key[8]; /* Session key */
- uchar md4pw[16]; /* md4(machine password) */
-};
-
-typedef struct
-{
- uid_t uid; /* uid of a validated user */
- gid_t gid; /* gid of a validated user */
-
- fstring requested_name; /* user name from the client */
- fstring name; /* unix user name of a validated user */
- fstring real_name; /* to store real name from password file - simeon */
- BOOL guest;
-
- /* following groups stuff added by ih */
- /* This groups info is needed for when we become_user() for this uid */
- int n_groups;
- gid_t *groups;
-
- int n_sids;
- int *sids;
-
- /* per-user authentication information on NT RPCs */
- struct dcinfo dc;
-
-} user_struct;
-
-
-enum
-{ LPQ_QUEUED, LPQ_PAUSED, LPQ_SPOOLING, LPQ_PRINTING };
-
-typedef struct
-{
- int job;
- int size;
- int status;
- int priority;
- time_t time;
- char user[30];
- char file[100];
-} print_queue_struct;
-
-enum
-{ LPSTAT_OK, LPSTAT_STOPPED, LPSTAT_ERROR };
-
-typedef struct
-{
- fstring message;
- int status;
-} print_status_struct;
-
-/* used for server information: client, nameserv and ipc */
-struct server_info_struct
-{
- fstring name;
- uint32 type;
- fstring comment;
- fstring domain; /* used ONLY in ipc.c NOT namework.c */
- BOOL server_added; /* used ONLY in ipc.c NOT namework.c */
-};
-
-
-/* used for network interfaces */
-struct interface
-{
- struct interface *next;
- struct in_addr ip;
- struct in_addr bcast;
- struct in_addr nmask;
-};
-
-/* struct returned by get_share_modes */
-typedef struct
-{
- int pid;
- uint16 op_port;
- uint16 op_type;
- int share_mode;
- struct timeval time;
-} share_mode_entry;
-
-
-/* each implementation of the share mode code needs
- to support the following operations */
-struct share_ops
-{
- BOOL (*stop_mgmt) (void);
- BOOL (*lock_entry) (connection_struct *, SMB_DEV_T, SMB_INO_T, int *);
- BOOL (*unlock_entry) (connection_struct *, SMB_DEV_T, SMB_INO_T, int);
- int (*get_entries) (connection_struct *, int, SMB_DEV_T, SMB_INO_T, share_mode_entry **);
- void (*del_entry) (int, files_struct *);
- BOOL (*set_entry) (int, files_struct *, uint16, uint16);
- BOOL (*mod_entry) (int, files_struct *,
- void (*)(share_mode_entry *, SMB_DEV_T, SMB_INO_T, void *), void *);
- int (*forall) (void (*)(share_mode_entry *, char *));
- void (*status) (FILE *);
-};
-
-/* each implementation of the shared memory code needs
- to support the following operations */
-struct shmem_ops
-{
- BOOL (*shm_close) (void);
- int (*shm_alloc) (int);
- BOOL (*shm_free) (int);
- int (*get_userdef_off) (void);
- void *(*offset2addr) (int);
- int (*addr2offset) (void *addr);
- BOOL (*lock_hash_entry) (unsigned int);
- BOOL (*unlock_hash_entry) (unsigned int);
- BOOL (*get_usage) (int *, int *, int *);
- unsigned (*hash_size) (void);
-};
-
-/*
- * Each implementation of the password database code needs
- * to support the following operations.
- */
-
-struct passdb_ops
-{
- /*
- * Password database ops.
- */
- void *(*startsmbpwent) (BOOL);
- void (*endsmbpwent) (void *);
- SMB_BIG_UINT (*getsmbpwpos) (void *);
- BOOL (*setsmbpwpos) (void *, SMB_BIG_UINT);
-
- /*
- * smb password database query functions.
- */
- struct smb_passwd *(*getsmbpwnam) (char *);
- struct smb_passwd *(*getsmbpwuid) (uid_t);
- struct smb_passwd *(*getsmbpwrid) (uint32);
- struct smb_passwd *(*getsmbpwent) (void *);
-
- /*
- * smb password database modification functions.
- */
- BOOL (*add_smbpwd_entry) (struct smb_passwd *);
- BOOL (*mod_smbpwd_entry) (struct smb_passwd *, BOOL);
-
- /*
- * Functions that manipulate a struct sam_passwd.
- */
- struct sam_passwd *(*getsam21pwent) (void *);
-
- /*
- * sam password database query functions.
- */
- struct sam_passwd *(*getsam21pwnam) (char *);
- struct sam_passwd *(*getsam21pwuid) (uid_t);
- struct sam_passwd *(*getsam21pwrid) (uint32);
-
- /*
- * sam password database modification functions.
- */
- BOOL (*add_sam21pwd_entry) (struct sam_passwd *);
- BOOL (*mod_sam21pwd_entry) (struct sam_passwd *, BOOL);
-
- /*
- * sam query display info functions.
- */
- struct sam_disp_info *(*getsamdispnam) (char *);
- struct sam_disp_info *(*getsamdisprid) (uint32);
- struct sam_disp_info *(*getsamdispent) (void *);
-
-#if 0
- /*
- * password checking functions
- */
- struct smb_passwd *(*smb_password_chal) (char *username, char lm_pass[24], char nt_pass[24],
- char chal[8]);
- struct smb_passwd *(*smb_password_check) (char *username, char lm_hash[16], char nt_hash[16]);
- struct passwd *(*unix_password_check) (char *username, char *pass, int pass_len);
-#endif
-};
-
-/* this is used for smbstatus */
-
-struct connect_record
-{
- int magic;
- int pid;
- int cnum;
- uid_t uid;
- gid_t gid;
- char name[24];
- char addr[24];
- char machine[128];
- time_t start;
-};
-
-/* This is used by smbclient to send it to a smbfs mount point */
-struct connection_options
-{
- int protocol;
- /* Connection-Options */
- uint32 max_xmit;
- uint16 server_vuid;
- uint16 tid;
- /* The following are LANMAN 1.0 options */
- uint16 sec_mode;
- uint16 max_mux;
- uint16 max_vcs;
- uint16 rawmode;
- uint32 sesskey;
- /* The following are NT LM 0.12 options */
- uint32 maxraw;
- uint32 capabilities;
- uint16 serverzone;
-};
-
-/* the following are used by loadparm for option lists */
-typedef enum
-{
- P_BOOL, P_BOOLREV, P_CHAR, P_INTEGER, P_OCTAL,
- P_STRING, P_USTRING, P_GSTRING, P_UGSTRING, P_ENUM, P_SEP
-} parm_type;
-
-typedef enum
-{
- P_LOCAL, P_GLOBAL, P_SEPARATOR, P_NONE
-} parm_class;
-
-struct enum_list
-{
- int value;
- const char *name;
-};
-
-struct parm_struct
-{
- const char *label;
- parm_type type;
- parm_class class;
- void *ptr;
- BOOL (*special) (const char *, char **);
- const struct enum_list *enum_list;
- unsigned flags;
- union
- {
- BOOL bvalue;
- int ivalue;
- char *svalue;
- char cvalue;
- } def;
-};
-
-struct bitmap
-{
- uint32 *b;
- int n;
-};
-
-#define FLAG_BASIC 0x01 /* fundamental options */
-#define FLAG_SHARE 0x02 /* file sharing options */
-#define FLAG_PRINT 0x04 /* printing options */
-#define FLAG_GLOBAL 0x08 /* local options that should be globally settable in SWAT */
-#define FLAG_DEPRECATED 0x10 /* options that should no longer be used */
-#define FLAG_HIDE 0x20 /* options that should be hidden in SWAT */
-
-#ifndef LOCKING_VERSION
-#define LOCKING_VERSION 4
-#endif /* LOCKING_VERSION */
-
-/* these are useful macros for checking validity of handles */
-#define OPEN_FSP(fsp) ((fsp) && (fsp)->open && !(fsp)->is_directory)
-#define OPEN_CONN(conn) ((conn) && (conn)->open)
-#define IS_IPC(conn) ((conn) && (conn)->ipc)
-#define IS_PRINT(conn) ((conn) && (conn)->printer)
-#define FNUM_OK(fsp,c) (OPEN_FSP(fsp) && (c)==(fsp)->conn)
-
-#define CHECK_FSP(fsp,conn) if (!FNUM_OK(fsp,conn)) \
- return(ERROR(ERRDOS,ERRbadfid)); \
- else if((fsp)->fd_ptr == NULL) \
- return(ERROR(ERRDOS,ERRbadaccess))
-
-#define CHECK_READ(fsp) if (!(fsp)->can_read) \
- return(ERROR(ERRDOS,ERRbadaccess))
-#define CHECK_WRITE(fsp) if (!(fsp)->can_write) \
- return(ERROR(ERRDOS,ERRbadaccess))
-#define CHECK_ERROR(fsp) if (HAS_CACHED_ERROR(fsp)) \
- return(CACHED_ERROR(fsp))
-
-/* translates a connection number into a service number */
-#define SNUM(conn) ((conn)?(conn)->service:-1)
-
-/* access various service details */
-#define SERVICE(snum) (lp_servicename(snum))
-#define PRINTCAP (lp_printcapname())
-#define PRINTCOMMAND(snum) (lp_printcommand(snum))
-#define PRINTERNAME(snum) (lp_printername(snum))
-#define CAN_WRITE(conn) (!conn->read_only)
-#define VALID_SNUM(snum) (lp_snum_ok(snum))
-#define GUEST_OK(snum) (VALID_SNUM(snum) && lp_guest_ok(snum))
-#define GUEST_ONLY(snum) (VALID_SNUM(snum) && lp_guest_only(snum))
-#define CAN_SETDIR(snum) (!lp_no_set_dir(snum))
-#define CAN_PRINT(conn) ((conn) && lp_print_ok((conn)->service))
-#define MAP_HIDDEN(conn) ((conn) && lp_map_hidden((conn)->service))
-#define MAP_SYSTEM(conn) ((conn) && lp_map_system((conn)->service))
-#define MAP_ARCHIVE(conn) ((conn) && lp_map_archive((conn)->service))
-#define IS_HIDDEN_PATH(conn,path) ((conn) && is_in_path((path),(conn)->hide_list))
-#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list))
-#define IS_VETO_OPLOCK_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_oplock_list))
-
-/*
- * Used by the stat cache code to check if a returned
- * stat structure is valid.
- */
-
-#define VALID_STAT(st) (st.st_nlink != 0)
-#define VALID_STAT_OF_DIR(st) (VALID_STAT(st) && S_ISDIR(st.st_mode))
-
-#define SMBENCRYPT() (lp_encrypted_passwords())
-
-/* the basic packet size, assuming no words or bytes */
-#define smb_size 39
-
-/* offsets into message for common items */
-#define smb_com 8
-#define smb_rcls 9
-#define smb_reh 10
-#define smb_err 11
-#define smb_flg 13
-#define smb_flg2 14
-#define smb_reb 13
-#define smb_tid 28
-#define smb_pid 30
-#define smb_uid 32
-#define smb_mid 34
-#define smb_wct 36
-#define smb_vwv 37
-#define smb_vwv0 37
-#define smb_vwv1 39
-#define smb_vwv2 41
-#define smb_vwv3 43
-#define smb_vwv4 45
-#define smb_vwv5 47
-#define smb_vwv6 49
-#define smb_vwv7 51
-#define smb_vwv8 53
-#define smb_vwv9 55
-#define smb_vwv10 57
-#define smb_vwv11 59
-#define smb_vwv12 61
-#define smb_vwv13 63
-#define smb_vwv14 65
-#define smb_vwv15 67
-#define smb_vwv16 69
-#define smb_vwv17 71
-
-/* flag defines. CIFS spec 3.1.1 */
-#define FLAG_SUPPORT_LOCKREAD 0x01
-#define FLAG_CLIENT_BUF_AVAIL 0x02
-#define FLAG_RESERVED 0x04
-#define FLAG_CASELESS_PATHNAMES 0x08
-#define FLAG_CANONICAL_PATHNAMES 0x10
-#define FLAG_REQUEST_OPLOCK 0x20
-#define FLAG_REQUEST_BATCH_OPLOCK 0x40
-#define FLAG_REPLY 0x80
-
-/* the complete */
-#define SMBmkdir 0x00 /* create directory */
-#define SMBrmdir 0x01 /* delete directory */
-#define SMBopen 0x02 /* open file */
-#define SMBcreate 0x03 /* create file */
-#define SMBclose 0x04 /* close file */
-#define SMBflush 0x05 /* flush file */
-#define SMBunlink 0x06 /* delete file */
-#define SMBmv 0x07 /* rename file */
-#define SMBgetatr 0x08 /* get file attributes */
-#define SMBsetatr 0x09 /* set file attributes */
-#define SMBread 0x0A /* read from file */
-#define SMBwrite 0x0B /* write to file */
-#define SMBlock 0x0C /* lock byte range */
-#define SMBunlock 0x0D /* unlock byte range */
-#define SMBctemp 0x0E /* create temporary file */
-#define SMBmknew 0x0F /* make new file */
-#define SMBchkpth 0x10 /* check directory path */
-#define SMBexit 0x11 /* process exit */
-#define SMBlseek 0x12 /* seek */
-#define SMBtcon 0x70 /* tree connect */
-#define SMBtconX 0x75 /* tree connect and X */
-#define SMBtdis 0x71 /* tree disconnect */
-#define SMBnegprot 0x72 /* negotiate protocol */
-#define SMBdskattr 0x80 /* get disk attributes */
-#define SMBsearch 0x81 /* search directory */
-#define SMBsplopen 0xC0 /* open print spool file */
-#define SMBsplwr 0xC1 /* write to print spool file */
-#define SMBsplclose 0xC2 /* close print spool file */
-#define SMBsplretq 0xC3 /* return print queue */
-#define SMBsends 0xD0 /* send single block message */
-#define SMBsendb 0xD1 /* send broadcast message */
-#define SMBfwdname 0xD2 /* forward user name */
-#define SMBcancelf 0xD3 /* cancel forward */
-#define SMBgetmac 0xD4 /* get machine name */
-#define SMBsendstrt 0xD5 /* send start of multi-block message */
-#define SMBsendend 0xD6 /* send end of multi-block message */
-#define SMBsendtxt 0xD7 /* send text of multi-block message */
-
-/* Core+ protocol */
-#define SMBlockread 0x13 /* Lock a range and read */
-#define SMBwriteunlock 0x14 /* Unlock a range then write */
-#define SMBreadbraw 0x1a /* read a block of data with no smb header */
-#define SMBwritebraw 0x1d /* write a block of data with no smb header */
-#define SMBwritec 0x20 /* secondary write request */
-#define SMBwriteclose 0x2c /* write a file then close it */
-
-/* dos extended protocol */
-#define SMBreadBraw 0x1A /* read block raw */
-#define SMBreadBmpx 0x1B /* read block multiplexed */
-#define SMBreadBs 0x1C /* read block (secondary response) */
-#define SMBwriteBraw 0x1D /* write block raw */
-#define SMBwriteBmpx 0x1E /* write block multiplexed */
-#define SMBwriteBs 0x1F /* write block (secondary request) */
-#define SMBwriteC 0x20 /* write complete response */
-#define SMBsetattrE 0x22 /* set file attributes expanded */
-#define SMBgetattrE 0x23 /* get file attributes expanded */
-#define SMBlockingX 0x24 /* lock/unlock byte ranges and X */
-#define SMBtrans 0x25 /* transaction - name, bytes in/out */
-#define SMBtranss 0x26 /* transaction (secondary request/response) */
-#define SMBioctl 0x27 /* IOCTL */
-#define SMBioctls 0x28 /* IOCTL (secondary request/response) */
-#define SMBcopy 0x29 /* copy */
-#define SMBmove 0x2A /* move */
-#define SMBecho 0x2B /* echo */
-#define SMBopenX 0x2D /* open and X */
-#define SMBreadX 0x2E /* read and X */
-#define SMBwriteX 0x2F /* write and X */
-#define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */
-#define SMBffirst 0x82 /* find first */
-#define SMBfunique 0x83 /* find unique */
-#define SMBfclose 0x84 /* find close */
-#define SMBinvalid 0xFE /* invalid command */
-
-/* Extended 2.0 protocol */
-#define SMBtrans2 0x32 /* TRANS2 protocol set */
-#define SMBtranss2 0x33 /* TRANS2 protocol set, secondary command */
-#define SMBfindclose 0x34 /* Terminate a TRANSACT2_FINDFIRST */
-#define SMBfindnclose 0x35 /* Terminate a TRANSACT2_FINDNOTIFYFIRST */
-#define SMBulogoffX 0x74 /* user logoff */
-
-/* NT SMB extensions. */
-#define SMBnttrans 0xA0 /* NT transact */
-#define SMBnttranss 0xA1 /* NT transact secondary */
-#define SMBntcreateX 0xA2 /* NT create and X */
-#define SMBntcancel 0xA4 /* NT cancel */
-
-/* These are the TRANS2 sub commands */
-#define TRANSACT2_OPEN 0
-#define TRANSACT2_FINDFIRST 1
-#define TRANSACT2_FINDNEXT 2
-#define TRANSACT2_QFSINFO 3
-#define TRANSACT2_SETFSINFO 4
-#define TRANSACT2_QPATHINFO 5
-#define TRANSACT2_SETPATHINFO 6
-#define TRANSACT2_QFILEINFO 7
-#define TRANSACT2_SETFILEINFO 8
-#define TRANSACT2_FSCTL 9
-#define TRANSACT2_IOCTL 0xA
-#define TRANSACT2_FINDNOTIFYFIRST 0xB
-#define TRANSACT2_FINDNOTIFYNEXT 0xC
-#define TRANSACT2_MKDIR 0xD
-#define TRANSACT2_SESSION_SETUP 0xE
-#define TRANSACT2_GET_DFS_REFERRAL 0x10
-#define TRANSACT2_REPORT_DFS_INCONSISTANCY 0x11
-
-/* These are the NT transact sub commands. */
-#define NT_TRANSACT_CREATE 1
-#define NT_TRANSACT_IOCTL 2
-#define NT_TRANSACT_SET_SECURITY_DESC 3
-#define NT_TRANSACT_NOTIFY_CHANGE 4
-#define NT_TRANSACT_RENAME 5
-#define NT_TRANSACT_QUERY_SECURITY_DESC 6
-
-/* these are the trans2 sub fields for primary requests */
-#define smb_tpscnt smb_vwv0
-#define smb_tdscnt smb_vwv1
-#define smb_mprcnt smb_vwv2
-#define smb_mdrcnt smb_vwv3
-#define smb_msrcnt smb_vwv4
-#define smb_flags smb_vwv5
-#define smb_timeout smb_vwv6
-#define smb_pscnt smb_vwv9
-#define smb_psoff smb_vwv10
-#define smb_dscnt smb_vwv11
-#define smb_dsoff smb_vwv12
-#define smb_suwcnt smb_vwv13
-#define smb_setup smb_vwv14
-#define smb_setup0 smb_setup
-#define smb_setup1 (smb_setup+2)
-#define smb_setup2 (smb_setup+4)
-
-/* these are for the secondary requests */
-#define smb_spscnt smb_vwv2
-#define smb_spsoff smb_vwv3
-#define smb_spsdisp smb_vwv4
-#define smb_sdscnt smb_vwv5
-#define smb_sdsoff smb_vwv6
-#define smb_sdsdisp smb_vwv7
-#define smb_sfid smb_vwv8
-
-/* and these for responses */
-#define smb_tprcnt smb_vwv0
-#define smb_tdrcnt smb_vwv1
-#define smb_prcnt smb_vwv3
-#define smb_proff smb_vwv4
-#define smb_prdisp smb_vwv5
-#define smb_drcnt smb_vwv6
-#define smb_droff smb_vwv7
-#define smb_drdisp smb_vwv8
-
-/* these are for the NT trans primary request. */
-#define smb_nt_MaxSetupCount smb_vwv0
-#define smb_nt_Flags (smb_vwv0 + 1)
-#define smb_nt_TotalParameterCount (smb_vwv0 + 3)
-#define smb_nt_TotalDataCount (smb_vwv0 + 7)
-#define smb_nt_MaxParameterCount (smb_vwv0 + 11)
-#define smb_nt_MaxDataCount (smb_vwv0 + 15)
-#define smb_nt_ParameterCount (smb_vwv0 + 19)
-#define smb_nt_ParameterOffset (smb_vwv0 + 23)
-#define smb_nt_DataCount (smb_vwv0 + 27)
-#define smb_nt_DataOffset (smb_vwv0 + 31)
-#define smb_nt_SetupCount (smb_vwv0 + 35)
-#define smb_nt_Function (smb_vwv0 + 36)
-#define smb_nt_SetupStart (smb_vwv0 + 38)
-
-/* these are for the NT trans secondary request. */
-#define smb_nts_TotalParameterCount (smb_vwv0 + 3)
-#define smb_nts_TotalDataCount (smb_vwv0 + 7)
-#define smb_nts_ParameterCount (smb_vwv0 + 11)
-#define smb_nts_ParameterOffset (smb_vwv0 + 15)
-#define smb_nts_ParameterDisplacement (smb_vwv0 + 19)
-#define smb_nts_DataCount (smb_vwv0 + 23)
-#define smb_nts_DataOffset (smb_vwv0 + 27)
-#define smb_nts_DataDisplacement (smb_vwv0 + 31)
-
-/* these are for the NT trans reply. */
-#define smb_ntr_TotalParameterCount (smb_vwv0 + 3)
-#define smb_ntr_TotalDataCount (smb_vwv0 + 7)
-#define smb_ntr_ParameterCount (smb_vwv0 + 11)
-#define smb_ntr_ParameterOffset (smb_vwv0 + 15)
-#define smb_ntr_ParameterDisplacement (smb_vwv0 + 19)
-#define smb_ntr_DataCount (smb_vwv0 + 23)
-#define smb_ntr_DataOffset (smb_vwv0 + 27)
-#define smb_ntr_DataDisplacement (smb_vwv0 + 31)
-
-/* these are for the NT create_and_X */
-#define smb_ntcreate_NameLength (smb_vwv0 + 5)
-#define smb_ntcreate_Flags (smb_vwv0 + 7)
-#define smb_ntcreate_RootDirectoryFid (smb_vwv0 + 11)
-#define smb_ntcreate_DesiredAccess (smb_vwv0 + 15)
-#define smb_ntcreate_AllocationSize (smb_vwv0 + 19)
-#define smb_ntcreate_FileAttributes (smb_vwv0 + 27)
-#define smb_ntcreate_ShareAccess (smb_vwv0 + 31)
-#define smb_ntcreate_CreateDisposition (smb_vwv0 + 35)
-#define smb_ntcreate_CreateOptions (smb_vwv0 + 39)
-#define smb_ntcreate_ImpersonationLevel (smb_vwv0 + 43)
-#define smb_ntcreate_SecurityFlags (smb_vwv0 + 47)
-
-/* this is used on a TConX. I'm not sure the name is very helpful though */
-#define SMB_SUPPORT_SEARCH_BITS 0x0001
-
-/* these are the constants used in the above call. */
-/* DesiredAccess */
-/* File Specific access rights. */
-#define FILE_READ_DATA 0x001
-#define FILE_WRITE_DATA 0x002
-#define FILE_APPEND_DATA 0x004
-#define FILE_READ_EA 0x008
-#define FILE_WRITE_EA 0x010
-#define FILE_EXECUTE 0x020
-#define FILE_DELETE_CHILD 0x040
-#define FILE_READ_ATTRIBUTES 0x080
-#define FILE_WRITE_ATTRIBUTES 0x100
-
-#define FILE_ALL_ATTRIBUTES 0x1FF
-
-/* Generic access masks & rights. */
-#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
-#define STANDARD_RIGHTS_MASK 0xFF0000L
-#define DELETE_ACCESS (1L<<16)
-#define READ_CONTROL_ACCESS (1L<<17)
-#define WRITE_DAC_ACCESS (1L<<18)
-#define WRITE_OWNER_ACCESS (1L<<19)
-#define SYNCHRONIZE_ACCESS (1L<<20)
-
-#define SYSTEM_SECURITY_ACCESS (1L<<24)
-#define GENERIC_ALL_ACCESS (1<<28)
-#define GENERIC_EXECUTE_ACCESS (1<<29)
-#define GENERIC_WRITE_ACCESS (1<<30)
-#define GENERIC_READ_ACCESS (1<<31)
-
-#define FILE_ALL_STANDARD_ACCESS 0x1F0000
-
-/* Mapping of access rights to UNIX perms. */
-#if 0 /* Don't use all here... JRA. */
-#define UNIX_ACCESS_RWX (FILE_ALL_ATTRIBUTES|FILE_ALL_STANDARD_ACCESS)
-#else
-#define UNIX_ACCESS_RWX (UNIX_ACCESS_R|UNIX_ACCESS_W|UNIX_ACCESS_X)
-#endif
-
-#define UNIX_ACCESS_R (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
- FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_READ_DATA)
-#define UNIX_ACCESS_W (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
- FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|\
- FILE_APPEND_DATA|FILE_WRITE_DATA)
-#define UNIX_ACCESS_X (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
- FILE_EXECUTE|FILE_READ_ATTRIBUTES)
-
-#define UNIX_ACCESS_NONE (WRITE_OWNER_ACCESS)
-
-/* Flags field. */
-#define REQUEST_OPLOCK 2
-#define REQUEST_BATCH_OPLOCK 4
-#define OPEN_DIRECTORY 8
-
-/* ShareAccess field. */
-#define FILE_SHARE_NONE 0 /* Cannot be used in bitmask. */
-#define FILE_SHARE_READ 1
-#define FILE_SHARE_WRITE 2
-#define FILE_SHARE_DELETE 4
-
-/* FileAttributesField */
-#define FILE_ATTRIBUTE_READONLY aRONLY
-#define FILE_ATTRIBUTE_HIDDEN aHIDDEN
-#define FILE_ATTRIBUTE_SYSTEM aSYSTEM
-#define FILE_ATTRIBUTE_DIRECTORY aDIR
-#define FILE_ATTRIBUTE_ARCHIVE aARCH
-#define FILE_ATTRIBUTE_NORMAL 0x80L
-#define FILE_ATTRIBUTE_TEMPORARY 0x100L
-#define FILE_ATTRIBUTE_COMPRESSED 0x800L
-#define SAMBA_ATTRIBUTES_MASK 0x7F
-
-/* Flags - combined with attributes. */
-#define FILE_FLAG_WRITE_THROUGH 0x80000000L
-#define FILE_FLAG_NO_BUFFERING 0x20000000L
-#define FILE_FLAG_RANDOM_ACCESS 0x10000000L
-#define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000L
-#define FILE_FLAG_DELETE_ON_CLOSE 0x04000000L
-#define FILE_FLAG_BACKUP_SEMANTICS 0x02000000L
-#define FILE_FLAG_POSIX_SEMANTICS 0x01000000L
-
-/* CreateDisposition field. */
-#define FILE_SUPERSEDE 0
-#define FILE_OPEN 1
-#define FILE_CREATE 2
-#define FILE_OPEN_IF 3
-#define FILE_OVERWRITE 4
-#define FILE_OVERWRITE_IF 5
-
-/* CreateOptions field. */
-#define FILE_DIRECTORY_FILE 0x0001
-#define FILE_WRITE_THROUGH 0x0002
-#define FILE_SEQUENTIAL_ONLY 0x0004
-#define FILE_NON_DIRECTORY_FILE 0x0040
-#define FILE_NO_EA_KNOWLEDGE 0x0200
-#define FILE_EIGHT_DOT_THREE_ONLY 0x0400
-#define FILE_RANDOM_ACCESS 0x0800
-#define FILE_DELETE_ON_CLOSE 0x1000
-
-/* Responses when opening a file. */
-#define FILE_WAS_OPENED 1
-#define FILE_WAS_CREATED 2
-#define FILE_WAS_OVERWRITTEN 3
-
-/* File type flags */
-#define FILE_TYPE_DISK 0
-#define FILE_TYPE_BYTE_MODE_PIPE 1
-#define FILE_TYPE_MESSAGE_MODE_PIPE 2
-#define FILE_TYPE_PRINTER 3
-#define FILE_TYPE_COMM_DEVICE 4
-#define FILE_TYPE_UNKNOWN 0xFFFF
-
-/* Flag for NT transact rename call. */
-#define RENAME_REPLACE_IF_EXISTS 1
-
-/* Filesystem Attributes. */
-#define FILE_CASE_SENSITIVE_SEARCH 0x1
-#define FILE_CASE_PRESERVED_NAMES 0x2
-#define FILE_UNICODE_ON_DISK 0x4
-#define FILE_PERSISTENT_ACLS 0x8
-
-/* ChangeNotify flags. */
-#define FILE_NOTIFY_CHANGE_FILE_NAME 0x001
-#define FILE_NOTIFY_CHANGE_DIR_NAME 0x002
-#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x004
-#define FILE_NOTIFY_CHANGE_SIZE 0x008
-#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x010
-#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x020
-#define FILE_NOTIFY_CHANGE_CREATION 0x040
-#define FILE_NOTIFY_CHANGE_EA 0x080
-#define FILE_NOTIFY_CHANGE_SECURITY 0x100
-
-/* where to find the base of the SMB packet proper */
-#define smb_base(buf) (((char *)(buf))+4)
-
-
-#define SMB_SUCCESS 0 /* The request was successful. */
-#define ERRDOS 0x01 /* Error is from the core DOS operating system set. */
-#define ERRSRV 0x02 /* Error is generated by the server network file manager. */
-#define ERRHRD 0x03 /* Error is an hardware error. */
-#define ERRCMD 0xFF /* Command was not in the "SMB" format. */
-
-#ifdef HAVE_STDARG_H
-int
-slprintf (char *str, int n, const char *format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 3, 4)))
-#endif
- ;
-#else
-int slprintf ();
-#endif
-
-#ifdef WITH_DFS
-void dfs_unlogin (void);
-extern int dcelogin_atmost_once;
-#endif
-
-#ifndef MIN
-#define MIN(a,b) ((a)<(b)?(a):(b))
-#endif
-#ifndef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#endif
-
-#ifndef ABS
-#define ABS(a) ((a)>0?(a):(-(a)))
-#endif
-
-#ifndef SIGNAL_CAST
-#define SIGNAL_CAST (RETSIGTYPE (*)(int))
-#endif
-
-#ifndef SELECT_CAST
-#define SELECT_CAST
-#endif
-
-
-/* Some POSIX definitions for those without */
-
-#ifndef S_IFDIR
-#define S_IFDIR 0x4000
-#endif
-#ifndef S_ISDIR
-#define S_ISDIR(mode) ((mode & 0xF000) == S_IFDIR)
-#endif
-#ifndef S_IRWXU
-#define S_IRWXU 00700 /* read, write, execute: owner */
-#endif
-#ifndef S_IRUSR
-#define S_IRUSR 00400 /* read permission: owner */
-#endif
-#ifndef S_IWUSR
-#define S_IWUSR 00200 /* write permission: owner */
-#endif
-#ifndef S_IXUSR
-#define S_IXUSR 00100 /* execute permission: owner */
-#endif
-#ifndef S_IRWXG
-#define S_IRWXG 00070 /* read, write, execute: group */
-#endif
-#ifndef S_IRGRP
-#define S_IRGRP 00040 /* read permission: group */
-#endif
-#ifndef S_IWGRP
-#define S_IWGRP 00020 /* write permission: group */
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP 00010 /* execute permission: group */
-#endif
-#ifndef S_IRWXO
-#define S_IRWXO 00007 /* read, write, execute: other */
-#endif
-#ifndef S_IROTH
-#define S_IROTH 00004 /* read permission: other */
-#endif
-#ifndef S_IWOTH
-#define S_IWOTH 00002 /* write permission: other */
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH 00001 /* execute permission: other */
-#endif
-
-
-/* these are used in NetServerEnum to choose what to receive */
-#define SV_TYPE_WORKSTATION 0x00000001
-#define SV_TYPE_SERVER 0x00000002
-#define SV_TYPE_SQLSERVER 0x00000004
-#define SV_TYPE_DOMAIN_CTRL 0x00000008
-#define SV_TYPE_DOMAIN_BAKCTRL 0x00000010
-#define SV_TYPE_TIME_SOURCE 0x00000020
-#define SV_TYPE_AFP 0x00000040
-#define SV_TYPE_NOVELL 0x00000080
-#define SV_TYPE_DOMAIN_MEMBER 0x00000100
-#define SV_TYPE_PRINTQ_SERVER 0x00000200
-#define SV_TYPE_DIALIN_SERVER 0x00000400
-#define SV_TYPE_SERVER_UNIX 0x00000800
-#define SV_TYPE_NT 0x00001000
-#define SV_TYPE_WFW 0x00002000
-#define SV_TYPE_SERVER_MFPN 0x00004000
-#define SV_TYPE_SERVER_NT 0x00008000
-#define SV_TYPE_POTENTIAL_BROWSER 0x00010000
-#define SV_TYPE_BACKUP_BROWSER 0x00020000
-#define SV_TYPE_MASTER_BROWSER 0x00040000
-#define SV_TYPE_DOMAIN_MASTER 0x00080000
-#define SV_TYPE_SERVER_OSF 0x00100000
-#define SV_TYPE_SERVER_VMS 0x00200000
-#define SV_TYPE_WIN95_PLUS 0x00400000
-#define SV_TYPE_ALTERNATE_XPORT 0x20000000
-#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000
-#define SV_TYPE_DOMAIN_ENUM 0x80000000
-#define SV_TYPE_ALL 0xFFFFFFFF
-
-/* what server type are we currently - JHT Says we ARE 4.20 */
-/* this was set by JHT in liaison with Jeremy Allison early 1997 */
-/* setting to 4.20 at same time as announcing ourselves as NT Server */
-/* History: */
-/* Version 4.0 - never made public */
-/* Version 4.10 - New to 1.9.16p2, lost in space 1.9.16p3 to 1.9.16p9 */
-/* - Reappeared in 1.9.16p11 with fixed smbd services */
-/* Version 4.20 - To indicate that nmbd and browsing now works better */
-
-#define DEFAULT_MAJOR_VERSION 0x04
-#define DEFAULT_MINOR_VERSION 0x02
-
-/* Browser Election Values */
-#define BROWSER_ELECTION_VERSION 0x010f
-#define BROWSER_CONSTANT 0xaa55
-
-/* NT Flags2 bits - cifs6.txt section 3.1.2 */
-
-#define FLAGS2_LONG_PATH_COMPONENTS 0x0001
-#define FLAGS2_EXTENDED_ATTRIBUTES 0x0002
-#define FLAGS2_DFS_PATHNAMES 0x1000
-#define FLAGS2_READ_PERMIT_NO_EXECUTE 0x2000
-#define FLAGS2_32_BIT_ERROR_CODES 0x4000
-#define FLAGS2_UNICODE_STRINGS 0x8000
-
-/* Capabilities. see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */
-
-#define CAP_RAW_MODE 0x0001
-#define CAP_MPX_MODE 0x0002
-#define CAP_UNICODE 0x0004
-#define CAP_LARGE_FILES 0x0008
-#define CAP_NT_SMBS 0x0010
-#define CAP_RPC_REMOTE_APIS 0x0020
-#define CAP_STATUS32 0x0040
-#define CAP_LEVEL_II_OPLOCKS 0x0080
-#define CAP_LOCK_AND_READ 0x0100
-#define CAP_NT_FIND 0x0200
-#define CAP_DFS 0x1000
-#define CAP_LARGE_READX 0x4000
-
-/* protocol types. It assumes that higher protocols include lower protocols
- as subsets */
-enum protocol_types
-{ PROTOCOL_NONE, PROTOCOL_CORE, PROTOCOL_COREPLUS, PROTOCOL_LANMAN1, PROTOCOL_LANMAN2,
- PROTOCOL_NT1
-};
-
-/* security levels */
-enum security_types
-{ SEC_SHARE, SEC_USER, SEC_SERVER, SEC_DOMAIN };
-
-/* printing types */
-enum printing_types
-{ PRINT_BSD, PRINT_SYSV, PRINT_AIX, PRINT_HPUX,
- PRINT_QNX, PRINT_PLP, PRINT_LPRNG, PRINT_SOFTQ
-};
-
-/* Remote architectures we know about. */
-enum remote_arch_types
-{ RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_SAMBA };
-
-/* case handling */
-enum case_handling
-{ CASE_LOWER, CASE_UPPER };
-
-#ifdef WITH_SSL
-/* SSL version options */
-enum ssl_version_enum
-{ SMB_SSL_V2, SMB_SSL_V3, SMB_SSL_V23, SMB_SSL_TLS1 };
-#endif /* WITH_SSL */
-
-/* Macros to get at offsets within smb_lkrng and smb_unlkrng
- structures. We cannot define these as actual structures
- due to possible differences in structure packing
- on different machines/compilers. */
-
-#define SMB_LPID_OFFSET(indx) (10 * (indx))
-#define SMB_LKOFF_OFFSET(indx) ( 2 + (10 * (indx)))
-#define SMB_LKLEN_OFFSET(indx) ( 6 + (10 * (indx)))
-#define SMB_LARGE_LKOFF_OFFSET_HIGH(indx) (4 + (20 * (indx)))
-#define SMB_LARGE_LKOFF_OFFSET_LOW(indx) (8 + (20 * (indx)))
-#define SMB_LARGE_LKLEN_OFFSET_HIGH(indx) (12 + (20 * (indx)))
-#define SMB_LARGE_LKLEN_OFFSET_LOW(indx) (16 + (20 * (indx)))
-
-/* Macro to cache an error in a write_bmpx_struct */
-#define CACHE_ERROR(w,c,e) ((w)->wr_errclass = (c), (w)->wr_error = (e), \
- w->wr_discard = True, -1)
-/* Macro to test if an error has been cached for this fnum */
-#define HAS_CACHED_ERROR(fsp) ((fsp)->open && (fsp)->wbmpx_ptr && \
- (fsp)->wbmpx_ptr->wr_discard)
-/* Macro to turn the cached error into an error packet */
-#define CACHED_ERROR(fsp) cached_error_packet(inbuf,outbuf,fsp,__LINE__)
-
-/* these are the datagram types */
-#define DGRAM_DIRECT_UNIQUE 0x10
-
-#define ERROR(class,x) error_packet(inbuf,outbuf,class,x,__LINE__)
-
-/* this is how errors are generated */
-#define UNIXERROR(defclass,deferror) unix_error_packet(inbuf,outbuf,defclass,deferror,__LINE__)
-
-#define SMB_ROUNDUP(x,g) (((x)+((g)-1))&~((g)-1))
-
-/*
- * Global value meaing that the smb_uid field should be
- * ingored (in share level security and protocol level == CORE)
- */
-
-#define UID_FIELD_INVALID 0
-#define VUID_OFFSET 100 /* Amount to bias returned vuid numbers */
-
-/* Defines needed for multi-codepage support. */
-#define MSDOS_LATIN_1_CODEPAGE 850
-#define KANJI_CODEPAGE 932
-#define HANGUL_CODEPAGE 949
-#define BIG5_CODEPAGE 950
-#define SIMPLIFIED_CHINESE_CODEPAGE 936
-
-#ifdef KANJI
-/*
- * Default client code page - Japanese
- */
-#define DEFAULT_CLIENT_CODE_PAGE KANJI_CODEPAGE
-#else /* KANJI */
-/*
- * Default client code page - 850 - Western European
- */
-#define DEFAULT_CLIENT_CODE_PAGE MSDOS_LATIN_1_CODEPAGE
-#endif /* KANJI */
-
-/*
- * Size of buffer to use when moving files across filesystems.
- */
-#define COPYBUF_SIZE (8*1024)
-
-/*
- * Integers used to override error codes.
- */
-extern int unix_ERR_class;
-extern int unix_ERR_code;
-
-/*
- * Map the Core and Extended Oplock requesst bits down
- * to common bits (EXCLUSIVE_OPLOCK & BATCH_OPLOCK).
- */
-
-/*
- * Core protocol.
- */
-#define CORE_OPLOCK_REQUEST(inbuf) \
- ((CVAL(inbuf,smb_flg)&(FLAG_REQUEST_OPLOCK|FLAG_REQUEST_BATCH_OPLOCK))>>5)
-
-/*
- * Extended protocol.
- */
-#define EXTENDED_OPLOCK_REQUEST(inbuf) ((SVAL(inbuf,smb_vwv2)&((1<<1)|(1<<2)))>>1)
-
-/* Lock types. */
-#define LOCKING_ANDX_SHARED_LOCK 0x1
-#define LOCKING_ANDX_OPLOCK_RELEASE 0x2
-#define LOCKING_ANDX_CHANGE_LOCKTYPE 0x4
-#define LOCKING_ANDX_CANCEL_LOCK 0x8
-#define LOCKING_ANDX_LARGE_FILES 0x10
-
-/* Oplock levels */
-#define OPLOCKLEVEL_NONE 0
-#define OPLOCKLEVEL_II 1
-
-/*
- * Bits we test with.
- */
-#define EXCLUSIVE_OPLOCK 1
-#define BATCH_OPLOCK 2
-
-#define CORE_OPLOCK_GRANTED (1<<5)
-#define EXTENDED_OPLOCK_GRANTED (1<<15)
-
-/*
- * Loopback command offsets.
- */
-
-#define OPBRK_CMD_LEN_OFFSET 0
-#define OPBRK_CMD_PORT_OFFSET 4
-#define OPBRK_CMD_HEADER_LEN 6
-
-#define OPBRK_MESSAGE_CMD_OFFSET 0
-
-/*
- * Oplock break command code to send over the udp socket.
- *
- * Form of this is :
- *
- * 0 2 6 10 14 14+devsize 14+devsize+inodesize
- * +----+--------+--------+--------+-------+--------+
- * | cmd| pid | sec | usec | dev | inode |
- * +----+--------+--------+--------+-------+--------+
- */
-
-#define OPLOCK_BREAK_CMD 0x1
-#define OPLOCK_BREAK_PID_OFFSET 2
-#define OPLOCK_BREAK_SEC_OFFSET 6
-#define OPLOCK_BREAK_USEC_OFFSET 10
-#define OPLOCK_BREAK_DEV_OFFSET 14
-#define OPLOCK_BREAK_INODE_OFFSET (OPLOCK_BREAK_DEV_OFFSET + sizeof(SMB_DEV_T))
-#define OPLOCK_BREAK_MSG_LEN (OPLOCK_BREAK_INODE_OFFSET + sizeof(SMB_INO_T))
-
-/*
- * Capabilities abstracted for different systems.
- */
-
-#define KERNEL_OPLOCK_CAPABILITY 0x1
-
-#if defined(HAVE_KERNEL_OPLOCKS)
-/*
- * Oplock break command code sent via the kernel interface.
- *
- * Form of this is :
- *
- * 0 2 2+devsize 2+devsize+inodesize
- * +----+--------+--------+
- * | cmd| dev | inode |
- * +----+--------+--------+
- */
-
-#define KERNEL_OPLOCK_BREAK_CMD 0x2
-#define KERNEL_OPLOCK_BREAK_DEV_OFFSET 2
-#define KERNEL_OPLOCK_BREAK_INODE_OFFSET (KERNEL_OPLOCK_BREAK_DEV_OFFSET + sizeof(SMB_DEV_T))
-#define KERNEL_OPLOCK_BREAK_MSG_LEN (KERNEL_OPLOCK_BREAK_INODE_OFFSET + sizeof(SMB_INO_T))
-
-#endif /* HAVE_KERNEL_OPLOCKS */
-
-#define CMD_REPLY 0x8000
-
-/* useful macros */
-
-/* zero a structure */
-#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
-
-/* zero a structure given a pointer to the structure - no zero check */
-#define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x)))
-
-/* zero a structure given a pointer to the structure */
-#define ZERO_STRUCTP(x) { if ((x) != NULL) ZERO_STRUCTPN(x); }
-
-/* zero an array - note that sizeof(array) must work - ie. it must not be a
- pointer */
-#define ZERO_ARRAY(x) memset((char *)(x), 0, sizeof(x))
-
-#define SMB_ASSERT(b) ((b)?(void)0: \
- (DEBUG(0,("PANIC: assert failed at %s(%d)\n", \
- __FILE__, __LINE__)), smb_panic("assert failed")))
-#define SMB_ASSERT_ARRAY(a,n) SMB_ASSERT((sizeof(a)/sizeof((a)[0])) >= (n))
-
-/* A netbios name structure. */
-struct nmb_name
-{
- char name[17];
- char scope[64];
- unsigned int name_type;
-};
-
-#include "client.h"
-
-/*
- * Size of new password account encoding string. DO NOT CHANGE.
- */
-
-#define NEW_PW_FORMAT_SPACE_PADDED_LEN 14
-
-/*
- Do you want session setups at user level security with a invalid
- password to be rejected or allowed in as guest? WinNT rejects them
- but it can be a pain as it means "net view" needs to use a password
-
- You have 3 choices in the setting of map_to_guest:
-
- "NEVER_MAP_TO_GUEST" means session setups with an invalid password
- are rejected. This is the default.
-
- "MAP_TO_GUEST_ON_BAD_USER" means session setups with an invalid password
- are rejected, unless the username does not exist, in which case it
- is treated as a guest login
-
- "MAP_TO_GUEST_ON_BAD_PASSWORD" means session setups with an invalid password
- are treated as a guest login
-
- Note that map_to_guest only has an effect in user or server
- level security.
- */
-
-#define NEVER_MAP_TO_GUEST 0
-#define MAP_TO_GUEST_ON_BAD_USER 1
-#define MAP_TO_GUEST_ON_BAD_PASSWORD 2
-
-#endif /* _SMB_H */
-
-/* _SMB_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/trans2.h
^
|
@@ -1,245 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB transaction2 handling
- */
-
-#ifndef _TRANS2_H_
-#define _TRANS2_H_
-
-/* Define the structures needed for the trans2 calls. */
-
-/*******************************************************
- For DosFindFirst/DosFindNext - level 1
-
-MAXFILENAMELEN = 255;
-FDATE == uint16
-FTIME == uint16
-ULONG == uint32
-USHORT == uint16
-
-typedef struct _FILEFINDBUF {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 FDATE fdateCreation;
-2 FTIME ftimeCreation;
-4 FDATE fdateLastAccess;
-6 FTIME ftimeLastAccess;
-8 FDATE fdateLastWrite;
-10 FTIME ftimeLastWrite;
-12 ULONG cbFile file length in bytes
-16 ULONG cbFileAlloc size of file allocation unit
-20 USHORT attrFile
-22 UCHAR cchName length of name to follow (not including zero)
-23 UCHAR achName[MAXFILENAMELEN]; Null terminated name
-} FILEFINDBUF;
-*********************************************************/
-
-#define l1_fdateCreation 0
-#define l1_fdateLastAccess 4
-#define l1_fdateLastWrite 8
-#define l1_cbFile 12
-#define l1_cbFileAlloc 16
-#define l1_attrFile 20
-#define l1_cchName 22
-#define l1_achName 23
-
-/**********************************************************
-For DosFindFirst/DosFindNext - level 2
-
-typedef struct _FILEFINDBUF2 {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 FDATE fdateCreation;
-2 FTIME ftimeCreation;
-4 FDATE fdateLastAccess;
-6 FTIME ftimeLastAccess;
-8 FDATE fdateLastWrite;
-10 FTIME ftimeLastWrite;
-12 ULONG cbFile file length in bytes
-16 ULONG cbFileAlloc size of file allocation unit
-20 USHORT attrFile
-22 ULONG cbList Extended attribute list (always 0)
-26 UCHAR cchName length of name to follow (not including zero)
-27 UCHAR achName[MAXFILENAMELEN]; Null terminated name
-} FILEFINDBUF2;
-*************************************************************/
-
-#define l2_fdateCreation 0
-#define l2_fdateLastAccess 4
-#define l2_fdateLastWrite 8
-#define l2_cbFile 12
-#define l2_cbFileAlloc 16
-#define l2_attrFile 20
-#define l2_cbList 22
-#define l2_cchName 26
-#define l2_achName 27
-
-
-/**********************************************************
-For DosFindFirst/DosFindNext - level 260
-
-typedef struct _FILEFINDBUF260 {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 ULONG NextEntryOffset;
-4 ULONG FileIndex;
-8 LARGE_INTEGER CreationTime;
-16 LARGE_INTEGER LastAccessTime;
-24 LARGE_INTEGER LastWriteTime;
-32 LARGE_INTEGER ChangeTime;
-40 LARGE_INTEGER EndOfFile;
-48 LARGE_INTEGER AllocationSize;
-56 ULONG FileAttributes;
-60 ULONG FileNameLength;
-64 ULONG EaSize;
-68 CHAR ShortNameLength;
-70 UNICODE ShortName[12];
-94 UNICODE FileName[];
-*************************************************************/
-
-#define l260_achName 94
-
-
-/**********************************************************
-For DosQueryPathInfo/DosQueryFileInfo/DosSetPathInfo/
-DosSetFileInfo - level 1
-
-typedef struct _FILESTATUS {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 FDATE fdateCreation;
-2 FTIME ftimeCreation;
-4 FDATE fdateLastAccess;
-6 FTIME ftimeLastAccess;
-8 FDATE fdateLastWrite;
-10 FTIME ftimeLastWrite;
-12 ULONG cbFile file length in bytes
-16 ULONG cbFileAlloc size of file allocation unit
-20 USHORT attrFile
-} FILESTATUS;
-*************************************************************/
-
-/* Use the l1_ defines from DosFindFirst */
-
-/**********************************************************
-For DosQueryPathInfo/DosQueryFileInfo/DosSetPathInfo/
-DosSetFileInfo - level 2
-
-typedef struct _FILESTATUS2 {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 FDATE fdateCreation;
-2 FTIME ftimeCreation;
-4 FDATE fdateLastAccess;
-6 FTIME ftimeLastAccess;
-8 FDATE fdateLastWrite;
-10 FTIME ftimeLastWrite;
-12 ULONG cbFile file length in bytes
-16 ULONG cbFileAlloc size of file allocation unit
-20 USHORT attrFile
-22 ULONG cbList Length of EA's (0)
-} FILESTATUS2;
-*************************************************************/
-
-/* Use the l2_ #defines from DosFindFirst */
-
-/**********************************************************
-For DosQFSInfo/DosSetFSInfo - level 1
-
-typedef struct _FSALLOCATE {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 ULONG idFileSystem id of file system
-4 ULONG cSectorUnit number of sectors per allocation unit
-8 ULONG cUnit number of allocation units
-12 ULONG cUnitAvail Available allocation units
-16 USHORT cbSector bytes per sector
-} FSALLOCATE;
-*************************************************************/
-
-#define l1_idFileSystem 0
-#define l1_cSectorUnit 4
-#define l1_cUnit 8
-#define l1_cUnitAvail 12
-#define l1_cbSector 16
-
-/**********************************************************
-For DosQFSInfo/DosSetFSInfo - level 2
-
-typedef struct _FSINFO {
-Byte offset Type name description
--------------+-------+-------------------+--------------
-0 FDATE vol_fdateCreation
-2 FTIME vol_ftimeCreation
-4 UCHAR vol_cch length of volume name (excluding NULL)
-5 UCHAR vol_szVolLabel[12] volume name
-} FSINFO;
-*************************************************************/
-
-#define SMB_INFO_STANDARD 1
-#define SMB_INFO_QUERY_EA_SIZE 2
-#define SMB_INFO_QUERY_EAS_FROM_LIST 3
-#define SMB_INFO_QUERY_ALL_EAS 4
-#define SMB_INFO_IS_NAME_VALID 6
-#define SMB_QUERY_FS_LABEL_INFO 0x101
-#define SMB_QUERY_FS_VOLUME_INFO 0x102
-#define SMB_QUERY_FS_SIZE_INFO 0x103
-#define SMB_QUERY_FS_DEVICE_INFO 0x104
-#define SMB_QUERY_FS_ATTRIBUTE_INFO 0x105
-
-
-#define l2_vol_fdateCreation 0
-#define l2_vol_cch 4
-#define l2_vol_szVolLabel 5
-
-
-#define SMB_QUERY_FILE_BASIC_INFO 0x101
-#define SMB_QUERY_FILE_STANDARD_INFO 0x102
-#define SMB_QUERY_FILE_EA_INFO 0x103
-#define SMB_QUERY_FILE_NAME_INFO 0x104
-#define SMB_QUERY_FILE_ALLOCATION_INFO 0x105
-#define SMB_QUERY_FILE_END_OF_FILEINFO 0x106
-#define SMB_QUERY_FILE_ALL_INFO 0x107
-#define SMB_QUERY_FILE_ALT_NAME_INFO 0x108
-#define SMB_QUERY_FILE_STREAM_INFO 0x109
-
-#define SMB_FIND_FILE_DIRECTORY_INFO 0x101
-#define SMB_FIND_FILE_FULL_DIRECTORY_INFO 0x102
-#define SMB_FIND_FILE_NAMES_INFO 0x103
-#define SMB_FIND_FILE_BOTH_DIRECTORY_INFO 0x104
-
-#define SMB_SET_FILE_BASIC_INFO 0x101
-#define SMB_SET_FILE_DISPOSITION_INFO 0x102
-#define SMB_SET_FILE_ALLOCATION_INFO 0x103
-#define SMB_SET_FILE_END_OF_FILE_INFO 0x104
-
-/*
- * Thursby MAC extensions....
- */
-
-#define SMB_MAC_QUERY_FS_INFO 0x301
-
-#define DIRLEN_GUESS (45+MAX(l1_achName,l2_achName))
-
-/*
- * DeviceType and Characteristics returned in a
- * SMB_QUERY_FS_DEVICE_INFO call.
- */
-
-#define DEVICETYPE_CD_ROM 0x2
-#define DEVICETYPE_CD_ROM_FILE_SYSTEM 0x3
-#define DEVICETYPE_DISK 0x7
-#define DEVICETYPE_DISK_FILE_SYSTEM 0x8
-#define DEVICETYPE_FILE_SYSTEM 0x9
-
-/* Characteristics. */
-#define TYPE_REMOVABLE_MEDIA 0x1
-#define TYPE_READ_ONLY_DEVICE 0x2
-#define TYPE_FLOPPY 0x4
-#define TYPE_WORM 0x8
-#define TYPE_REMOTE 0x10
-#define TYPE_MOUNTED 0x20
-#define TYPE_VIRTUAL 0x40
-
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/include/version.h
^
|
@@ -1 +0,0 @@
-#define VERSION "2.0.4a"
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/internals.doc
^
|
@@ -1,212 +0,0 @@
-internals.txt, 8 May 1996
-Written by David Chappell <David.Chappell@mail.trincoll.edu>.
-
-This document describes some of the internal functions which must be
-understood by anyone wishing to add features to Samba.
-
-
-
-
-
-=============================================================================
-This section describes the macros defined in byteorder.h. These macros
-are used extensively in the Samba code.
-
------------------------------------------------------------------------------
-CVAL(buf,pos)
-
-returns the byte at offset pos within buffer buf as an unsigned character.
-
------------------------------------------------------------------------------
-PVAL(buf,pos)
-
-returns the value of CVAL(buf,pos) cast to type unsigned integer.
-
------------------------------------------------------------------------------
-SCVAL(buf,pos,val)
-
-sets the byte at offset pos within buffer buf to value val.
-
------------------------------------------------------------------------------
-SVAL(buf,pos)
-
-returns the value of the unsigned short (16 bit) little-endian integer at
-offset pos within buffer buf. An integer of this type is sometimes
-referred to as "USHORT".
-
------------------------------------------------------------------------------
-IVAL(buf,pos)
-
-returns the value of the unsigned 32 bit little-endian integer at offset
-pos within buffer buf.
-
------------------------------------------------------------------------------
-SVALS(buf,pos)
-
-returns the value of the signed short (16 bit) little-endian integer at
-offset pos within buffer buf.
-
------------------------------------------------------------------------------
-IVALS(buf,pos)
-
-returns the value of the signed 32 bit little-endian integer at offset pos
-within buffer buf.
-
------------------------------------------------------------------------------
-SSVAL(buf,pos,val)
-
-sets the unsigned short (16 bit) little-endian integer at offset pos within
-buffer buf to value val.
-
------------------------------------------------------------------------------
-SIVAL(buf,pos,val)
-
-sets the unsigned 32 bit little-endian integer at offset pos within buffer
-buf to the value val.
-
------------------------------------------------------------------------------
-SSVALS(buf,pos,val)
-
-sets the short (16 bit) signed little-endian integer at offset pos within
-buffer buf to the value val.
-
------------------------------------------------------------------------------
-SIVALS(buf,pos,val)
-
-sets the signed 32 bit little-endian integer at offset pos withing buffer
-buf to the value val.
-
------------------------------------------------------------------------------
-RSVAL(buf,pos)
-
-returns the value of the unsigned short (16 bit) big-endian integer at
-offset pos within buffer buf.
-
------------------------------------------------------------------------------
-RIVAL(buf,pos)
-
-returns the value of the unsigned 32 bit big-endian integer at offset
-pos within buffer buf.
-
------------------------------------------------------------------------------
-RSSVAL(buf,pos,val)
-
-sets the value of the unsigned short (16 bit) big-endian integer at
-offset pos within buffer buf to value val.
-referred to as "USHORT".
-
------------------------------------------------------------------------------
-RSIVAL(buf,pos,val)
-
-sets the value of the unsigned 32 bit big-endian integer at offset
-pos within buffer buf to value val.
-
-
-
-
-
-=============================================================================
-This section describes the functions need to make a LAN Manager RPC call.
-This information had been obtained by examining the Samba code and the LAN
-Manager 2.0 API documentation. It should not be considered entirely
-reliable.
-
------------------------------------------------------------------------------
-call_api(int prcnt, int drcnt, int mprcnt, int mdrcnt,
- char *param, char *data, char **rparam, char **rdata);
-
-This function is defined in client.c. It uses an SMB transaction to call a
-remote api.
-
-The parameters are as follows:
-
-prcnt: the number of bytes of parameters begin sent.
-drcnt: the number of bytes of data begin sent.
-mprcnt: the maximum number of bytes of parameters which should be returned
-mdrcnt: the maximum number of bytes of data which should be returned
-param: a pointer to the parameters to be sent.
-data: a pointer to the data to be sent.
-rparam: a pointer to a pointer which will be set to point to the returned
- parameters. The caller of call_api() must deallocate this memory.
-rdata: a pointer to a pointer which will be set to point to the returned
- data. The caller of call_api() must deallocate this memory.
-
------------------------------------------------------------------------------
-These are the parameters which you ought to send, in the order of their
-appearance in the parameter block:
-
-* An unsigned 16 bit integer API number. You should set this value with
-SSVAL(). I do not know where these numbers are described.
-
-* An ASCIIZ string describing the parameters to the API function as defined
-in the LAN Manager documentation. The first parameter, which is the server
-name, is omitted. This string is based uppon the API function as described
-in the manual, not the data which is actually passed.
-
-* An ASCIIZ string describing the data structure which ought to be returned.
-
-* Any parameters which appear in the function call, as defined in the LAN
-Manager API documentation, after the "Server" and up to and including the
-"uLevel" parameters.
-
-* An unsigned 16 bit integer which gives the size in bytes of the buffer we
-will use to receive the returned array of data structures. Presumably this
-should be the same as mdrcnt. This value should be set with SSVAL().
-
-* An ASCIIZ string describing substructures which should be returned. If no
-substructures apply, this string is of zero length.
-
------------------------------------------------------------------------------
-The code in client.c always calls call_api() with no data. It is unclear
-when a non-zero length data buffer would be sent.
-
------------------------------------------------------------------------------
-The returned parameters (pointed to by rparam), in their order of appearance
-are:
-
-* An unsigned 16 bit integer which contains the API function's return code.
-This value should be read with SVAL().
-
-* An adjustment which tells the amount by which pointers in the returned
-data should be adjusted. This value should be read with SVAL(). Basically,
-the address of the start of the returned data buffer should have the returned
-pointer value added to it and then have this value subtracted from it in
-order to obtain the currect offset into the returned data buffer.
-
-* A count of the number of elements in the array of structures returned.
-It is also possible that this may sometimes be the number of bytes returned.
-
------------------------------------------------------------------------------
-When call_api() returns, rparam points to the returned parameters. The
-first if these is the result code. It will be zero if the API call
-suceeded. This value by be read with "SVAL(rparam,0)".
-
-The second parameter may be read as "SVAL(rparam,2)". It is a 16 bit offset
-which indicates what the base address of the returned data buffer was when
-it was built on the server. It should be used to correct pointer before
-use.
-
-The returned data buffer contains the array of returned data structures.
-Note that all pointers must be adjusted before use. The function
-fix_char_ptr() in client.c can be used for this purpose.
-
-The third parameter (which may be read as "SVAL(rparam,4)") has something to
-do with indicating the amount of data returned or possibly the amount of
-data which can be returned if enough buffer space is allowed.
-
------------------------------------------------------------------------------
-Certain data structures are described by means of ASCIIz strings containing
-code characters. These are the code characters:
-
-W a type byte little-endian unsigned integer
-N a count of substructures which follow
-D a four byte little-endian unsigned integer
-B a byte (with optional count expressed as trailing ASCII digits)
-z a four byte offset to a NULL terminated string
-l a four byte offset to non-string user data
-b an offset to data (with count expressed as trailing ASCII digits)
-r pointer to returned data buffer???
-L length in bytes of returned data buffer???
-h number of bytes of information available???
-
-----------------------------------------------------------------------------
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/charcnv.c
^
|
@@ -1,277 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Character set conversion Extensions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-#define CTRLZ 26
-extern int DEBUGLEVEL;
-
-static char cvtbuf[1024];
-
-static BOOL mapsinited = 0;
-
-static char unix2dos[256];
-static char dos2unix[256];
-
-static void
-initmaps (void)
-{
- int k;
-
- for (k = 0; k < 256; k++)
- unix2dos[k] = k;
- for (k = 0; k < 256; k++)
- dos2unix[k] = k;
-
- mapsinited = True;
-}
-
-static void
-update_map (const char *str)
-{
- const char *p;
-
- for (p = str; *p; p++)
- {
- if (p[1])
- {
- unix2dos[(unsigned char) *p] = p[1];
- dos2unix[(unsigned char) p[1]] = *p;
- p++;
- }
- }
-}
-
-static void
-init_iso8859_1 (void)
-{
-
- int i;
- if (!mapsinited)
- initmaps ();
-
- /* Do not map undefined characters to some accidental code */
- for (i = 128; i < 256; i++)
- {
- unix2dos[i] = CTRLZ;
- dos2unix[i] = CTRLZ;
- }
-
- /* MSDOS Code Page 850 -> ISO-8859 */
- update_map ("\240\377\241\255\242\275\243\234\244\317\245\276\246\335\247\365");
- update_map ("\250\371\251\270\252\246\253\256\254\252\255\360\256\251\257\356");
- update_map ("\260\370\261\361\262\375\263\374\264\357\265\346\266\364\267\372");
- update_map ("\270\367\271\373\272\247\273\257\274\254\275\253\276\363\277\250");
- update_map ("\300\267\301\265\302\266\303\307\304\216\305\217\306\222\307\200");
- update_map ("\310\324\311\220\312\322\313\323\314\336\315\326\316\327\317\330");
- update_map ("\320\321\321\245\322\343\323\340\324\342\325\345\326\231\327\236");
- update_map ("\330\235\331\353\332\351\333\352\334\232\335\355\336\350\337\341");
- update_map ("\340\205\341\240\342\203\343\306\344\204\345\206\346\221\347\207");
- update_map ("\350\212\351\202\352\210\353\211\354\215\355\241\356\214\357\213");
- update_map ("\360\320\361\244\362\225\363\242\364\223\365\344\366\224\367\366");
- update_map ("\370\233\371\227\372\243\373\226\374\201\375\354\376\347\377\230");
-
-}
-
-/* Init for eastern european languages. */
-
-static void
-init_iso8859_2 (void)
-{
-
- int i;
- if (!mapsinited)
- initmaps ();
-
- /* Do not map undefined characters to some accidental code */
- for (i = 128; i < 256; i++)
- {
- unix2dos[i] = CTRLZ;
- dos2unix[i] = CTRLZ;
- }
-
- /*
- * Tranlation table created by Petr Hubeny <psh@capitol.cz>
- * Requires client code page = 852
- * and character set = ISO8859-2 in smb.conf
- */
-
- /* MSDOS Code Page 852 -> ISO-8859-2 */
- update_map ("\241\244\242\364\243\235\244\317\245\225\246\227\247\365");
- update_map ("\250\371\251\346\252\270\253\233\254\215\256\246\257\275");
- update_map ("\261\245\262\362\263\210\264\357\265\226\266\230\267\363");
- update_map ("\270\367\271\347\272\255\273\234\274\253\275\361\276\247\277\276");
- update_map ("\300\350\301\265\302\266\303\306\304\216\305\221\306\217\307\200");
- update_map ("\310\254\311\220\312\250\313\323\314\267\315\326\316\327\317\322");
- update_map ("\320\321\321\343\322\325\323\340\324\342\325\212\326\231\327\236");
- update_map ("\330\374\331\336\332\351\333\353\334\232\335\355\336\335\337\341");
- update_map ("\340\352\341\240\342\203\343\307\344\204\345\222\346\206\347\207");
- update_map ("\350\237\351\202\352\251\353\211\354\330\355\241\356\214\357\324");
- update_map ("\360\320\361\344\362\345\363\242\364\223\365\213\366\224\367\366");
- update_map ("\370\375\371\205\372\243\373\373\374\201\375\354\376\356\377\372");
-}
-
-/* Init for russian language (iso8859-5) */
-
-/* Added by Max Khon <max@iclub.nsu.ru> */
-
-static void
-init_iso8859_5 (void)
-{
- int i;
- if (!mapsinited)
- initmaps ();
-
- /* Do not map undefined characters to some accidental code */
- for (i = 128; i < 256; i++)
- {
- unix2dos[i] = CTRLZ;
- dos2unix[i] = CTRLZ;
- }
-
- /* MSDOS Code Page 866 -> ISO8859-5 */
- update_map ("\260\200\261\201\262\202\263\203\264\204\265\205\266\206\267\207");
- update_map ("\270\210\271\211\272\212\273\213\274\214\275\215\276\216\277\217");
- update_map ("\300\220\301\221\302\222\303\223\304\224\305\225\306\226\307\227");
- update_map ("\310\230\311\231\312\232\313\233\314\234\315\235\316\236\317\237");
- update_map ("\320\240\321\241\322\242\323\243\324\244\325\245\326\246\327\247");
- update_map ("\330\250\331\251\332\252\333\253\334\254\335\255\336\256\337\257");
- update_map ("\340\340\341\341\342\342\343\343\344\344\345\345\346\346\347\347");
- update_map ("\350\350\351\351\352\352\353\353\354\354\355\355\356\356\357\357");
- update_map ("\241\360\361\361\244\362\364\363\247\364\367\365\256\366\376\367");
- update_map ("\360\374\240\377");
-}
-
-/* Init for russian language (koi8) */
-
-static void
-init_koi8_r (void)
-{
- if (!mapsinited)
- initmaps ();
-
- /* There aren't undefined characters between 128 and 255 */
-
- /* MSDOS Code Page 866 -> KOI8-R */
- update_map ("\200\304\201\263\202\332\203\277\204\300\205\331\206\303\207\264");
- update_map ("\210\302\211\301\212\305\213\337\214\334\215\333\216\335\217\336");
- update_map ("\220\260\221\261\222\262\223\364\224\376\225\371\226\373\227\367");
- update_map ("\230\363\231\362\232\377\233\365\234\370\235\375\236\372\237\366");
- update_map ("\240\315\241\272\242\325\243\361\244\326\245\311\246\270\247\267");
- update_map ("\250\273\251\324\252\323\253\310\254\276\255\275\256\274\257\306");
- update_map ("\260\307\261\314\262\265\263\360\264\266\265\271\266\321\267\322");
- update_map ("\270\313\271\317\272\320\273\312\274\330\275\327\276\316\277\374");
- update_map ("\300\356\301\240\302\241\303\346\304\244\305\245\306\344\307\243");
- update_map ("\310\345\311\250\312\251\313\252\314\253\315\254\316\255\317\256");
- update_map ("\320\257\321\357\322\340\323\341\324\342\325\343\326\246\327\242");
- update_map ("\330\354\331\353\332\247\333\350\334\355\335\351\336\347\337\352");
- update_map ("\340\236\341\200\342\201\343\226\344\204\345\205\346\224\347\203");
- update_map ("\350\225\351\210\352\211\353\212\354\213\355\214\356\215\357\216");
- update_map ("\360\217\361\237\362\220\363\221\364\222\365\223\366\206\367\202");
- update_map ("\370\234\371\233\372\207\373\230\374\235\375\231\376\227\377\232");
-}
-
-/*
- * Convert unix to dos
- */
-char *
-unix2dos_format (char *str, BOOL overwrite)
-{
- char *p;
- char *dp;
-
- if (!mapsinited)
- initmaps ();
-
- if (overwrite)
- {
- for (p = str; *p; p++)
- *p = unix2dos[(unsigned char) *p];
- return str;
- }
- else
- {
- for (p = str, dp = cvtbuf; *p && dp < &(cvtbuf[sizeof (cvtbuf) - 1]); p++, dp++)
- *dp = unix2dos[(unsigned char) *p];
- *dp = 0;
- return cvtbuf;
- }
-}
-
-/*
- * Convert dos to unix
- */
-char *
-dos2unix_format (char *str, BOOL overwrite)
-{
- char *p;
- char *dp;
-
- if (!mapsinited)
- initmaps ();
-
- if (overwrite)
- {
- for (p = str; *p; p++)
- *p = dos2unix[(unsigned char) *p];
- return str;
- }
- else
- {
- for (p = str, dp = cvtbuf; *p && dp < &(cvtbuf[sizeof (cvtbuf) - 1]); p++, dp++)
- *dp = dos2unix[(unsigned char) *p];
- *dp = 0;
- return cvtbuf;
- }
-}
-
-
-/*
- * Interpret character set.
- */
-void
-interpret_character_set (const char *str)
-{
- if (strequal (str, "iso8859-1"))
- {
- init_iso8859_1 ();
- }
- else if (strequal (str, "iso8859-2"))
- {
- init_iso8859_2 ();
- }
- else if (strequal (str, "iso8859-5"))
- {
- init_iso8859_5 ();
- }
- else if (strequal (str, "koi8-r"))
- {
- init_koi8_r ();
- }
- else
- {
- DEBUG (0, ("unrecognized character set %s\n", str));
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/charset.c
^
|
@@ -1,409 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Character set handling
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define CHARSET_C
-#include "includes.h"
-
-const char *unix_error_string (int error_num);
-extern int DEBUGLEVEL;
-
-/*
- * Codepage definitions.
- */
-
-#if !defined(KANJI)
-/* lower->upper mapping for IBM Code Page 850 - MS-DOS Latin 1 */
-unsigned char const cp_850[][4] = {
- /* dec col/row oct hex description */
- /* 133 08/05 205 85 a grave */
- /* 183 11/07 267 B7 A grave */ {0x85, 0xB7, 1, 1},
- /* 160 10/00 240 A0 a acute */
- /* 181 11/05 265 B5 A acute */ {0xA0, 0xB5, 1, 1},
- /* 131 08/03 203 83 a circumflex */
- /* 182 11/06 266 B6 A circumflex */ {0x83, 0xB6, 1, 1},
- /* 198 12/06 306 C6 a tilde */
- /* 199 12/07 307 C7 A tilde */ {0xC6, 0xC7, 1, 1},
- /* 132 08/04 204 84 a diaeresis */
- /* 142 08/14 216 8E A diaeresis */ {0x84, 0x8E, 1, 1},
- /* 134 08/06 206 86 a ring */
- /* 143 08/15 217 8F A ring */ {0x86, 0x8F, 1, 1},
- /* 145 09/01 221 91 ae diphthong */
- /* 146 09/02 222 92 AE diphthong */ {0x91, 0x92, 1, 1},
- /* 135 08/07 207 87 c cedilla */
- /* 128 08/00 200 80 C cedilla */ {0x87, 0x80, 1, 1},
- /* 138 08/10 212 8A e grave */
- /* 212 13/04 324 D4 E grave */ {0x8A, 0xD4, 1, 1},
- /* 130 08/02 202 82 e acute */
- /* 144 09/00 220 90 E acute */ {0x82, 0x90, 1, 1},
- /* 136 08/08 210 88 e circumflex */
- /* 210 13/02 322 D2 E circumflex */ {0x88, 0xD2, 1, 1},
- /* 137 08/09 211 89 e diaeresis */
- /* 211 13/03 323 D3 E diaeresis */ {0x89, 0xD3, 1, 1},
- /* 141 08/13 215 8D i grave */
- /* 222 13/14 336 DE I grave */ {0x8D, 0xDE, 1, 1},
- /* 161 10/01 241 A1 i acute */
- /* 214 13/06 326 D6 I acute */ {0xA1, 0xD6, 1, 1},
- /* 140 08/12 214 8C i circumflex */
- /* 215 13/07 327 D7 I circumflex */ {0x8C, 0xD7, 1, 1},
- /* 139 08/11 213 8B i diaeresis */
- /* 216 13/08 330 D8 I diaeresis */ {0x8B, 0xD8, 1, 1},
- /* 208 13/00 320 D0 Icelandic eth */
- /* 209 13/01 321 D1 Icelandic Eth */ {0xD0, 0xD1, 1, 1},
- /* 164 10/04 244 A4 n tilde */
- /* 165 10/05 245 A5 N tilde */ {0xA4, 0xA5, 1, 1},
- /* 149 09/05 225 95 o grave */
- /* 227 14/03 343 E3 O grave */ {0x95, 0xE3, 1, 1},
- /* 162 10/02 242 A2 o acute */
- /* 224 14/00 340 E0 O acute */ {0xA2, 0xE0, 1, 1},
- /* 147 09/03 223 93 o circumflex */
- /* 226 14/02 342 E2 O circumflex */ {0x93, 0xE2, 1, 1},
- /* 228 14/04 344 E4 o tilde */
- /* 229 14/05 345 E5 O tilde */ {0xE4, 0xE5, 1, 1},
- /* 148 09/04 224 94 o diaeresis */
- /* 153 09/09 231 99 O diaeresis */ {0x94, 0x99, 1, 1},
- /* 155 09/11 233 9B o slash */
- /* 157 09/13 235 9D O slash */ {0x9B, 0x9D, 1, 1},
- /* 151 09/07 227 97 u grave */
- /* 235 14/11 353 EB U grave */ {0x97, 0xEB, 1, 1},
- /* 163 10/03 243 A3 u acute */
- /* 233 14/09 351 E9 U acute */ {0xA3, 0xE9, 1, 1},
- /* 150 09/06 226 96 u circumflex */
- /* 234 14/10 352 EA U circumflex */ {0x96, 0xEA, 1, 1},
- /* 129 08/01 201 81 u diaeresis */
- /* 154 09/10 232 9A U diaeresis */ {0x81, 0x9A, 1, 1},
- /* 236 14/12 354 EC y acute */
- /* 237 14/13 355 ED Y acute */ {0xEC, 0xED, 1, 1},
- /* 231 14/07 347 E7 Icelandic thorn */
- /* 232 14/08 350 E8 Icelandic Thorn */ {0xE7, 0xE8, 1, 1},
-
- {0x9C, 0, 0, 0}, /* Pound */
- {0, 0, 0, 0}
-};
-#else /* KANJI */
-/* lower->upper mapping for IBM Code Page 932 - MS-DOS Japanese SJIS */
-unsigned char const cp_932[][4] = {
- {0, 0, 0, 0}
-};
-#endif /* KANJI */
-
-char xx_dos_char_map[256];
-char xx_upper_char_map[256];
-char xx_lower_char_map[256];
-
-char *dos_char_map = xx_dos_char_map;
-char *upper_char_map = xx_upper_char_map;
-char *lower_char_map = xx_lower_char_map;
-
-/*
- * This code has been extended to deal with ascynchronous mappings
- * like MS-DOS Latin US (Code page 437) where things like :
- * a acute are capitalized to 'A', but the reverse mapping
- * must not hold true. This allows the filename case insensitive
- * matching in do_match() to work, as the DOS/Win95/NT client
- * uses 'A' as a mask to match against characters like a acute.
- * This is the meaning behind the parameters that allow a
- * mapping from lower to upper, but not upper to lower.
- */
-
-static void
-add_dos_char (int lower, BOOL map_lower_to_upper, int upper, BOOL map_upper_to_lower)
-{
- lower &= 0xff;
- upper &= 0xff;
- DEBUGADD (6, ("Adding chars 0x%x 0x%x (l->u = %s) (u->l = %s)\n",
- lower, upper,
- map_lower_to_upper ? "True" : "False", map_upper_to_lower ? "True" : "False"));
- if (lower)
- dos_char_map[lower] = 1;
- if (upper)
- dos_char_map[upper] = 1;
- lower_char_map[lower] = (char) lower; /* Define tolower(lower) */
- upper_char_map[upper] = (char) upper; /* Define toupper(upper) */
- if (lower && upper)
- {
- if (map_upper_to_lower)
- lower_char_map[upper] = (char) lower;
- if (map_lower_to_upper)
- upper_char_map[lower] = (char) upper;
- }
-}
-
-/****************************************************************************
-initialise the charset arrays
-****************************************************************************/
-void
-charset_initialise (void)
-{
- int i;
-
-#ifdef LC_ALL
- /* include <locale.h> in includes.h if available for OS */
- /* we take only standard 7-bit ASCII definitions from ctype */
- setlocale (LC_ALL, "C");
-#endif
-
- for (i = 0; i <= 255; i++)
- {
- dos_char_map[i] = 0;
- }
-
- for (i = 0; i <= 127; i++)
- {
- if (isalnum (i) || strchr ("._^$~!#%&-{}()@'`", (char) i))
- add_dos_char (i, False, 0, False);
- }
-
- for (i = 0; i <= 255; i++)
- {
- char c = (char) i;
- upper_char_map[i] = lower_char_map[i] = c;
-
- /* Some systems have buggy isupper/islower for characters
- above 127. Best not to rely on them. */
- if (i < 128)
- {
- if (isupper ((int) c))
- lower_char_map[i] = tolower (c);
- if (islower ((int) c))
- upper_char_map[i] = toupper (c);
- }
- }
-}
-
-/****************************************************************************
-load the client codepage.
-****************************************************************************/
-
-typedef const unsigned char (*codepage_p)[4];
-
-static codepage_p
-load_client_codepage (int client_codepage)
-{
- pstring codepage_file_name;
- unsigned char buf[8];
- FILE *fp = NULL;
- SMB_OFF_T size;
- codepage_p cp_p = NULL;
- SMB_STRUCT_STAT st;
-
- DEBUG (5, ("load_client_codepage: loading codepage %d.\n", client_codepage));
-
- if (strlen (CODEPAGEDIR) + 14 > sizeof (codepage_file_name))
- {
- DEBUG (0, ("load_client_codepage: filename too long to load\n"));
- return NULL;
- }
-
- pstrcpy (codepage_file_name, CODEPAGEDIR);
- pstrcat (codepage_file_name, "/");
- pstrcat (codepage_file_name, "codepage.");
- slprintf (&codepage_file_name[strlen (codepage_file_name)],
- sizeof (pstring) - (strlen (codepage_file_name) + 1), "%03d", client_codepage);
-
- if (sys_stat (codepage_file_name, &st) != 0)
- {
- DEBUG (0, ("load_client_codepage: filename %s does not exist.\n", codepage_file_name));
- return NULL;
- }
-
- /* Check if it is at least big enough to hold the required
- data. Should be 2 byte version, 2 byte codepage, 4 byte length,
- plus zero or more bytes of data. Note that the data cannot be more
- than 4 * MAXCODEPAGELINES bytes.
- */
- size = st.st_size;
-
- if (size < CODEPAGE_HEADER_SIZE || size > (CODEPAGE_HEADER_SIZE + 4 * MAXCODEPAGELINES))
- {
- DEBUG (0, ("load_client_codepage: file %s is an incorrect size for a \
-code page file (size=%d).\n", codepage_file_name, (int) size));
- return NULL;
- }
-
- /* Read the first 8 bytes of the codepage file - check
- the version number and code page number. All the data
- is held in little endian format.
- */
-
- if ((fp = sys_fopen (codepage_file_name, "r")) == NULL)
- {
- DEBUG (0, ("load_client_codepage: cannot open file %s. Error was %s\n",
- codepage_file_name, unix_error_string (errno)));
- return NULL;
- }
-
- if (fread (buf, 1, CODEPAGE_HEADER_SIZE, fp) != CODEPAGE_HEADER_SIZE)
- {
- DEBUG (0, ("load_client_codepage: cannot read header from file %s. Error was %s\n",
- codepage_file_name, unix_error_string (errno)));
- goto clean_and_exit;
- }
-
- /* Check the version value */
- if (SVAL (buf, CODEPAGE_VERSION_OFFSET) != CODEPAGE_FILE_VERSION_ID)
- {
- DEBUG (0, ("load_client_codepage: filename %s has incorrect version id. \
-Needed %hu, got %hu.\n", codepage_file_name, (uint16) CODEPAGE_FILE_VERSION_ID, SVAL (buf, CODEPAGE_VERSION_OFFSET)));
- goto clean_and_exit;
- }
-
- /* Check the codepage matches */
- if (SVAL (buf, CODEPAGE_CLIENT_CODEPAGE_OFFSET) != (uint16) client_codepage)
- {
- DEBUG (0, ("load_client_codepage: filename %s has incorrect codepage. \
-Needed %hu, got %hu.\n", codepage_file_name, (uint16) client_codepage, SVAL (buf, CODEPAGE_CLIENT_CODEPAGE_OFFSET)));
- goto clean_and_exit;
- }
-
- /* Check the length is correct. */
- if (IVAL (buf, CODEPAGE_LENGTH_OFFSET) != (size - CODEPAGE_HEADER_SIZE))
- {
- DEBUG (0, ("load_client_codepage: filename %s has incorrect size headers. \
-Needed %u, got %u.\n", codepage_file_name, (uint32) (size - CODEPAGE_HEADER_SIZE), IVAL (buf, CODEPAGE_LENGTH_OFFSET)));
- goto clean_and_exit;
- }
-
- size -= CODEPAGE_HEADER_SIZE; /* Remove header */
-
- /* Make sure the size is a multiple of 4. */
- if ((size % 4) != 0)
- {
- DEBUG (0, ("load_client_codepage: filename %s has a codepage size not a \
-multiple of 4.\n", codepage_file_name));
- goto clean_and_exit;
- }
-
- /* Allocate space for the code page file and read it all in. */
- if ((cp_p = (codepage_p) malloc (size + 4)) == NULL)
- {
- DEBUG (0, ("load_client_codepage: malloc fail.\n"));
- goto clean_and_exit;
- }
-
- if (fread ((char *) cp_p, 1, size, fp) != size)
- {
- DEBUG (0, ("load_client_codepage: read fail on file %s. Error was %s.\n",
- codepage_file_name, unix_error_string (errno)));
- goto clean_and_exit;
- }
-
- /* Ensure array is correctly terminated. */
- memset (((char *) cp_p) + size, '\0', 4);
-
- fclose (fp);
- return cp_p;
-
- clean_and_exit:
-
- /* pseudo destructor :-) */
-
- if (fp != NULL)
- fclose (fp);
- if (cp_p)
- free ((char *) cp_p);
- return NULL;
-}
-
-/****************************************************************************
-initialise the client codepage.
-****************************************************************************/
-void
-codepage_initialise (int client_codepage)
-{
- int i;
- static codepage_p cp = NULL;
-
- if (cp != NULL)
- {
- DEBUG (6,
- ("codepage_initialise: called twice - ignoring second client code page = %d\n",
- client_codepage));
- return;
- }
-
- DEBUG (6, ("codepage_initialise: client code page = %d\n", client_codepage));
-
- /*
- * Known client codepages - these can be added to.
- */
- cp = load_client_codepage (client_codepage);
-
- if (cp == NULL)
- {
-#ifdef KANJI
- DEBUG (6, ("codepage_initialise: loading dynamic codepage file %s/codepage.%d \
-for code page %d failed. Using default client codepage 932\n", CODEPAGEDIR, client_codepage, client_codepage));
- cp = cp_932;
- client_codepage = KANJI_CODEPAGE;
-#else /* KANJI */
- DEBUG (6, ("codepage_initialise: loading dynamic codepage file %s/codepage.%d \
-for code page %d failed. Using default client codepage 850\n", CODEPAGEDIR, client_codepage, client_codepage));
- cp = cp_850;
- client_codepage = MSDOS_LATIN_1_CODEPAGE;
-#endif /* KANJI */
- }
-
- /*
- * Setup the function pointers for the loaded codepage.
- */
- initialize_multibyte_vectors (client_codepage);
-
- if (cp)
- {
- for (i = 0; !((cp[i][0] == '\0') && (cp[i][1] == '\0')); i++)
- add_dos_char (cp[i][0], (BOOL) cp[i][2], cp[i][1], (BOOL) cp[i][3]);
- }
-}
-
-/*******************************************************************
-add characters depending on a string passed by the user
-********************************************************************/
-void
-add_char_string (const char *s)
-{
- char *extra_chars = (char *) strdup (s);
- char *t;
- if (!extra_chars)
- return;
-
- for (t = strtok (extra_chars, " \t\r\n"); t; t = strtok (NULL, " \t\r\n"))
- {
- char c1 = 0, c2 = 0;
- int i1 = 0, i2 = 0;
- if (isdigit ((unsigned char) *t) || (*t) == '-')
- {
- sscanf (t, "%i:%i", &i1, &i2);
- add_dos_char (i1, True, i2, True);
- }
- else
- {
- sscanf (t, "%c:%c", &c1, &c2);
- add_dos_char ((unsigned char) c1, True, (unsigned char) c2, True);
- }
- }
-
- free (extra_chars);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/debug.c
^
|
@@ -1,398 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Samba utility functions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-/* -------------------------------------------------------------------------- **
- * Defines...
- *
- * FORMAT_BUFR_MAX - Index of the last byte of the format buffer;
- * format_bufr[FORMAT_BUFR_MAX] should always be reserved
- * for a terminating nul byte.
- */
-
-#define FORMAT_BUFR_MAX ( sizeof( format_bufr ) - 1 )
-
-/* -------------------------------------------------------------------------- **
- * This module implements Samba's debugging utility.
- *
- * The syntax of a debugging log file is represented as:
- *
- * <debugfile> :== { <debugmsg> }
- *
- * <debugmsg> :== <debughdr> '\n' <debugtext>
- *
- * <debughdr> :== '[' TIME ',' LEVEL ']' [ [FILENAME ':'] [FUNCTION '()'] ]
- *
- * <debugtext> :== { <debugline> }
- *
- * <debugline> :== TEXT '\n'
- *
- * TEXT is a string of characters excluding the newline character.
- * LEVEL is the DEBUG level of the message (an integer in the range 0..10).
- * TIME is a timestamp.
- * FILENAME is the name of the file from which the debug message was generated.
- * FUNCTION is the function from which the debug message was generated.
- *
- * Basically, what that all means is:
- *
- * - A debugging log file is made up of debug messages.
- *
- * - Each debug message is made up of a header and text. The header is
- * separated from the text by a newline.
- *
- * - The header begins with the timestamp and debug level of the message
- * enclosed in brackets. The filename and function from which the
- * message was generated may follow. The filename is terminated by a
- * colon, and the function name is terminated by parenthesis.
- *
- * - The message text is made up of zero or more lines, each terminated by
- * a newline.
- */
-
-/* -------------------------------------------------------------------------- **
- * External variables.
- *
- * dbf - Global debug file handle.
- * debugf - Debug file name.
- * append_log - If True, then the output file will be opened in append
- * mode.
- * DEBUGLEVEL - System-wide debug message limit. Messages with message-
- * levels higher than DEBUGLEVEL will not be processed.
- */
-
-FILE *dbf = NULL;
-pstring debugf = "";
-BOOL append_log = False;
-int DEBUGLEVEL = 1;
-
-
-/* -------------------------------------------------------------------------- **
- * Internal variables.
- *
- * stdout_logging - Default False, if set to True then dbf will be set to
- * stdout and debug output will go to dbf only, and not
- * to syslog. Set in setup_logging() and read in Debug1().
- *
- * syslog_level - Internal copy of the message debug level. Written by
- * dbghdr() and read by Debug1().
- *
- * format_bufr - Used to format debug messages. The dbgtext() function
- * prints debug messages to a string, and then passes the
- * string to format_debug_text(), which uses format_bufr
- * to build the formatted output.
- *
- * format_pos - Marks the first free byte of the format_bufr.
- */
-
-static BOOL stdout_logging = False;
-static pstring format_bufr = { '\0' };
-
-static size_t format_pos = 0;
-
-
-/* -------------------------------------------------------------------------- **
- * Functions...
- */
-
-/* ************************************************************************** **
- * get ready for syslog stuff
- * ************************************************************************** **
- */
-void
-setup_logging (const char *pname, BOOL interactive)
-{
- (void) pname;
- if (interactive)
- {
- stdout_logging = True;
- dbf = stderr;
- }
-} /* setup_logging */
-
-/* ************************************************************************** **
- * Write an debug message on the debugfile.
- * This is called by dbghdr() and format_debug_text().
- * ************************************************************************** **
- */
-#ifdef HAVE_STDARG_H
-int
-Debug1 (const char *format_str, ...)
-{
-#else
-int
-Debug1 (va_alist)
- va_dcl
-{
- const char *format_str;
-#endif
- va_list ap;
- int old_errno = errno;
-
- if (stdout_logging)
- {
-#ifdef HAVE_STDARG_H
- va_start (ap, format_str);
-#else
- va_start (ap);
- format_str = va_arg (ap, const char *);
-#endif
- (void) vfprintf (dbf, format_str, ap);
- va_end (ap);
- errno = old_errno;
- return (0);
- }
-
- if (!dbf && *debugf)
- {
- mode_t oldumask = umask (022);
-
- if (append_log)
- dbf = sys_fopen (debugf, "a");
- else
- dbf = sys_fopen (debugf, "w");
- (void) umask (oldumask);
- if (dbf)
- {
- setbuf (dbf, NULL);
- }
- else
- {
- errno = old_errno;
- return (0);
- }
- }
-
- if (dbf)
- {
-#ifdef HAVE_STDARG_H
- va_start (ap, format_str);
-#else
- va_start (ap);
- format_str = va_arg (ap, const char *);
-#endif
- (void) vfprintf (dbf, format_str, ap);
- va_end (ap);
- (void) fflush (dbf);
- }
-
- errno = old_errno;
-
- return (0);
-} /* Debug1 */
-
-
-/* ************************************************************************** **
- * Print the buffer content via Debug1(), then reset the buffer.
- *
- * Input: none
- * Output: none
- *
- * ************************************************************************** **
- */
-static void
-bufr_print (void)
-{
- format_bufr[format_pos] = '\0';
- (void) Debug1 ("%s", format_bufr);
- format_pos = 0;
-} /* bufr_print */
-
-/* ************************************************************************** **
- * Format the debug message text.
- *
- * Input: msg - Text to be added to the "current" debug message text.
- *
- * Output: none.
- *
- * Notes: The purpose of this is two-fold. First, each call to syslog()
- * (used by Debug1(), see above) generates a new line of syslog
- * output. This is fixed by storing the partial lines until the
- * newline character is encountered. Second, printing the debug
- * message lines when a newline is encountered allows us to add
- * spaces, thus indenting the body of the message and making it
- * more readable.
- *
- * ************************************************************************** **
- */
-static void
-format_debug_text (char *msg)
-{
- size_t i;
- BOOL timestamp = (!stdout_logging && (lp_timestamp_logs () || !(lp_loaded ())));
-
- for (i = 0; msg[i]; i++)
- {
- /* Indent two spaces at each new line. */
- if (timestamp && 0 == format_pos)
- {
- format_bufr[0] = format_bufr[1] = ' ';
- format_pos = 2;
- }
-
- /* If there's room, copy the character to the format buffer. */
- if (format_pos < FORMAT_BUFR_MAX)
- format_bufr[format_pos++] = msg[i];
-
- /* If a newline is encountered, print & restart. */
- if ('\n' == msg[i])
- bufr_print ();
-
- /* If the buffer is full dump it out, reset it, and put out a line
- * continuation indicator.
- */
- if (format_pos >= FORMAT_BUFR_MAX)
- {
- bufr_print ();
- (void) Debug1 (" +>\n");
- }
- }
-
- /* Just to be safe... */
- format_bufr[format_pos] = '\0';
-} /* format_debug_text */
-
-/* ************************************************************************** **
- * Flush debug output, including the format buffer content.
- *
- * Input: none
- * Output: none
- *
- * ************************************************************************** **
- */
-void
-dbgflush (void)
-{
- bufr_print ();
- (void) fflush (dbf);
-} /* dbgflush */
-
-/* ************************************************************************** **
- * Print a Debug Header.
- *
- * Input: level - Debug level of the message (not the system-wide debug
- * level.
- * file - Pointer to a string containing the name of the file
- * from which this function was called, or an empty string
- * if the __FILE__ macro is not implemented.
- * func - Pointer to a string containing the name of the function
- * from which this function was called, or an empty string
- * if the __FUNCTION__ macro is not implemented.
- * line - line number of the call to dbghdr, assuming __LINE__
- * works.
- *
- * Output: Always True. This makes it easy to fudge a call to dbghdr()
- * in a macro, since the function can be called as part of a test.
- * Eg: ( (level <= DEBUGLEVEL) && (dbghdr(level,"",line)) )
- *
- * Notes: This function takes care of setting syslog_level.
- *
- * ************************************************************************** **
- */
-BOOL
-dbghdr (int level, const char *file, const char *func, int line)
-{
- if (format_pos)
- {
- /* This is a fudge. If there is stuff sitting in the format_bufr, then
- * the *right* thing to do is to call
- * format_debug_text( "\n" );
- * to write the remainder, and then proceed with the new header.
- * Unfortunately, there are several places in the code at which
- * the DEBUG() macro is used to build partial lines. That in mind,
- * we'll work under the assumption that an incomplete line indicates
- * that a new header is *not* desired.
- */
- return (True);
- }
-
- /* Don't print a header if we're logging to stdout. */
- if (stdout_logging)
- return (True);
-
- /* Print the header if timestamps are turned on. If parameters are
- * not yet loaded, then default to timestamps on.
- */
- if (lp_timestamp_logs () || !(lp_loaded ()))
- {
- /* Print it all out at once to prevent split syslog output. */
- (void) Debug1 ("[%s, %d] %s:%s(%d)\n", timestring (), level, file, func, line);
- }
-
- return (True);
-} /* dbghdr */
-
-/* ************************************************************************** **
- * Add text to the body of the "current" debug message via the format buffer.
- *
- * Input: format_str - Format string, as used in printf(), et. al.
- * ... - Variable argument list.
- *
- * ..or.. va_alist - Old style variable parameter list starting point.
- *
- * Output: Always True. See dbghdr() for more info, though this is not
- * likely to be used in the same way.
- *
- * ************************************************************************** **
- */
-#ifdef HAVE_STDARG_H
-BOOL
-dbgtext (const char *format_str, ...)
-{
- va_list ap;
- pstring msgbuf;
-
- va_start (ap, format_str);
- vslprintf (msgbuf, sizeof (msgbuf) - 1, format_str, ap);
- va_end (ap);
-
- format_debug_text (msgbuf);
-
- return (True);
-} /* dbgtext */
-
-#else
-BOOL
-dbgtext (va_alist)
- va_dcl
-{
- char *format_str;
- va_list ap;
- pstring msgbuf;
-
- va_start (ap);
- format_str = va_arg (ap, char *);
- vslprintf (msgbuf, sizeof (msgbuf) - 1, format_str, ap);
- va_end (ap);
-
- format_debug_text (msgbuf);
-
- return (True);
-} /* dbgtext */
-
-#endif
-
-/* ************************************************************************** */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/interface.c
^
|
@@ -1,435 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- multiple interface handling
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-struct in_addr ipzero;
-struct in_addr allones_ip;
-struct in_addr loopback_ip;
-static struct in_addr default_ip;
-static struct in_addr default_bcast;
-static struct in_addr default_nmask;
-static BOOL got_ip = False;
-static BOOL got_bcast = False;
-static BOOL got_nmask = False;
-
-static struct interface *local_interfaces = NULL;
-
-struct interface *last_iface;
-
-#define ALLONES ((uint32)0xFFFFFFFF)
-#define MKBCADDR(_IP, _NM) ((_IP & _NM) | (_NM ^ ALLONES))
-/****************************************************************************
-calculate the default netmask for an address
-****************************************************************************/
-static void
-default_netmask (struct in_addr *inm, struct in_addr *iad)
-{
- /*
- ** Guess a netmask based on the class of the IP address given.
- */
- switch ((ntohl (iad->s_addr) & 0xE0000000))
- {
- case 0x00000000: /* Class A addr */
- case 0x20000000:
- case 0x40000000:
- case 0x60000000:
- inm->s_addr = htonl (0xFF000000);
- break;
-
- case 0x80000000: /* Class B addr */
- case 0xA0000000:
- inm->s_addr = htonl (0xFFFF0000);
- break;
-
- case 0xC0000000: /* Class C addr */
- inm->s_addr = htonl (0xFFFFFF00);
- break;
-
- default: /* ??? */
- inm->s_addr = htonl (0xFFFFFFF0);
- }
-}
-
-
-/****************************************************************************
- get the broadcast address for our address
-(troyer@saifr00.ateng.az.honeywell.com)
-****************************************************************************/
-static void
-get_broadcast (struct in_addr *if_ipaddr, struct in_addr *if_bcast, struct in_addr *if_nmask)
-{
- uint32 nm;
- short onbc;
- short offbc;
-
- /* get a default netmask and broadcast */
- default_netmask (if_nmask, if_ipaddr);
-
- get_netmask (if_ipaddr, if_nmask);
-
- /* sanity check on the netmask */
- nm = ntohl (if_nmask->s_addr);
- onbc = 0;
- offbc = 0;
- while ((onbc + offbc) < 32)
- {
- if (nm & 0x80000000)
- {
- onbc++;
- if (offbc)
- {
- /* already found an off bit, so mask
- is wrong */
- onbc = 34;
- }
- }
- else
- {
- offbc++;
- }
- nm <<= 1;
- }
- if ((onbc < 8) || (onbc == 34))
- {
- DEBUG (0, ("Impossible netmask %s - using defaults\n", inet_ntoa (*if_nmask)));
- default_netmask (if_nmask, if_ipaddr);
- }
-
- /* derive the broadcast assuming a 1's broadcast, as this is what
- all MS operating systems do, we have to comply even if the unix
- box is setup differently */
- if_bcast->s_addr = MKBCADDR (if_ipaddr->s_addr, if_nmask->s_addr);
-
- DEBUG (4, ("Derived broadcast address %s\n", inet_ntoa (*if_bcast)));
-}
-
-
-
-/****************************************************************************
-load a list of network interfaces
-****************************************************************************/
-static void
-interpret_interfaces (char *s, struct interface **interfaces, const char *description)
-{
- char *ptr;
- fstring token;
- struct interface *iface;
- struct in_addr ip;
-
- ptr = s;
- ipzero = *interpret_addr2 ("0.0.0.0");
- allones_ip = *interpret_addr2 ("255.255.255.255");
- loopback_ip = *interpret_addr2 ("127.0.0.1");
-
- while (next_token (&ptr, token, NULL, sizeof (token)))
- {
- /* parse it into an IP address/netmasklength pair */
- char *p = strchr (token, '/');
- if (p)
- *p++ = 0;
-
- ip = *interpret_addr2 (token);
-
- /* maybe we already have it listed */
- {
- struct interface *i;
- for (i = (*interfaces); i; i = i->next)
- if (ip_equal (ip, i->ip))
- break;
- if (i)
- continue;
- }
-
- iface = (struct interface *) malloc (sizeof (*iface));
- if (!iface)
- return;
-
- iface->ip = ip;
-
- if (p)
- {
- if (strlen (p) > 2)
- iface->nmask = *interpret_addr2 (p);
- else
- iface->nmask.s_addr = htonl (((ALLONES >> atoi (p)) ^ ALLONES));
- }
- else
- {
- default_netmask (&iface->nmask, &iface->ip);
- }
- iface->bcast.s_addr = MKBCADDR (iface->ip.s_addr, iface->nmask.s_addr);
- iface->next = NULL;
-
- if (!(*interfaces))
- {
- (*interfaces) = iface;
- }
- else
- {
- last_iface->next = iface;
- }
- last_iface = iface;
- DEBUG (2, ("Added %s ip=%s ", description, inet_ntoa (iface->ip)));
- DEBUG (2, ("bcast=%s ", inet_ntoa (iface->bcast)));
- DEBUG (2, ("nmask=%s\n", inet_ntoa (iface->nmask)));
- }
-
- if (*interfaces)
- return;
-
- /* setup a default interface */
- iface = (struct interface *) malloc (sizeof (*iface));
- if (!iface)
- return;
-
- iface->next = NULL;
-
- if (got_ip)
- {
- iface->ip = default_ip;
- }
- else
- {
- get_myname (NULL, &iface->ip);
- }
-
- if (got_bcast)
- {
- iface->bcast = default_bcast;
- }
- else
- {
- get_broadcast (&iface->ip, &iface->bcast, &iface->nmask);
- }
-
- if (got_nmask)
- {
- iface->nmask = default_nmask;
- iface->bcast.s_addr = MKBCADDR (iface->ip.s_addr, iface->nmask.s_addr);
- }
-
- if (iface->bcast.s_addr != MKBCADDR (iface->ip.s_addr, iface->nmask.s_addr))
- {
- DEBUG (2, ("Warning: inconsistent interface %s\n", inet_ntoa (iface->ip)));
- }
-
- iface->next = NULL;
- (*interfaces) = last_iface = iface;
-
- DEBUG (2, ("Added interface ip=%s ", inet_ntoa (iface->ip)));
- DEBUG (2, ("bcast=%s ", inet_ntoa (iface->bcast)));
- DEBUG (2, ("nmask=%s\n", inet_ntoa (iface->nmask)));
-}
-
-
-/****************************************************************************
-load the remote and local interfaces
-****************************************************************************/
-void
-load_interfaces (void)
-{
- /* add the machine's interfaces to local interface structure */
- interpret_interfaces (lp_interfaces (), &local_interfaces, "interface");
-}
-
-#if 0
-/****************************************************************************
- override the defaults
- **************************************************************************/
-void
-iface_set_default (char *ip, char *bcast, char *nmask)
-{
- if (ip)
- {
- got_ip = True;
- default_ip = *interpret_addr2 (ip);
- }
-
- if (bcast)
- {
- got_bcast = True;
- default_bcast = *interpret_addr2 (bcast);
- }
-
- if (nmask)
- {
- got_nmask = True;
- default_nmask = *interpret_addr2 (nmask);
- }
-}
-#endif /* 0 */
-
-/****************************************************************************
- check if an IP is one of mine
- **************************************************************************/
-BOOL
-ismyip (struct in_addr ip)
-{
- struct interface *i;
- for (i = local_interfaces; i; i = i->next)
- if (ip_equal (i->ip, ip))
- return True;
- return False;
-}
-
-#if 0
-/****************************************************************************
- check if a packet is from a local (known) net
- **************************************************************************/
-BOOL
-is_local_net (struct in_addr from)
-{
- struct interface *i;
- for (i = local_interfaces; i; i = i->next)
- if ((from.s_addr & i->nmask.s_addr) == (i->ip.s_addr & i->nmask.s_addr))
- return True;
- return False;
-}
-#endif /* 0 */
-
-/****************************************************************************
- how many interfaces do we have
- **************************************************************************/
-int
-iface_count (void)
-{
- int ret = 0;
- struct interface *i;
-
- for (i = local_interfaces; i; i = i->next)
- ret++;
- return ret;
-}
-
-#if 0
-/****************************************************************************
- True if we have two or more interfaces.
- **************************************************************************/
-BOOL
-we_are_multihomed (void)
-{
- static int multi = -1;
-
- if (multi == -1)
- multi = (iface_count () > 1 ? True : False);
-
- return multi;
-}
-
-/****************************************************************************
- return the Nth interface
- **************************************************************************/
-struct interface *
-get_interface (int n)
-{
- struct interface *i;
-
- for (i = local_interfaces; i && n; i = i->next)
- n--;
-
- if (i)
- return i;
- return NULL;
-}
-#endif /* 0 */
-/****************************************************************************
- return IP of the Nth interface
- **************************************************************************/
-struct in_addr *
-iface_n_ip (int n)
-{
- struct interface *i;
-
- for (i = local_interfaces; i && n; i = i->next)
- n--;
-
- if (i)
- return &i->ip;
- return NULL;
-}
-
-/****************************************************************************
-Try and find an interface that matches an ip. If we cannot, return NULL
- **************************************************************************/
-static struct interface *
-iface_find (struct in_addr ip)
-{
- struct interface *i;
- if (zero_ip (ip))
- return local_interfaces;
-
- for (i = local_interfaces; i; i = i->next)
- if (same_net (i->ip, ip, i->nmask))
- return i;
-
- return NULL;
-}
-
-#if 0
-/****************************************************************************
-this function provides a simple hash of the configured interfaces. It is
-used to detect a change in interfaces to tell us whether to discard
-the current wins.dat file.
-Note that the result is independent of the order of the interfaces
- **************************************************************************/
-unsigned
-iface_hash (void)
-{
- unsigned ret = 0;
- struct interface *i;
-
- for (i = local_interfaces; i; i = i->next)
- {
- unsigned x1 = (unsigned) str_checksum (inet_ntoa (i->ip));
- unsigned x2 = (unsigned) str_checksum (inet_ntoa (i->nmask));
- ret ^= (x1 ^ x2);
- }
-
- return ret;
-}
-#endif /* 0 */
-
-/* these 3 functions return the ip/bcast/nmask for the interface
- most appropriate for the given ip address. If they can't find
- an appropriate interface they return the requested field of the
- first known interface. */
-
-struct in_addr *
-iface_bcast (struct in_addr ip)
-{
- struct interface *i = iface_find (ip);
- return (i ? &i->bcast : &local_interfaces->bcast);
-}
-
-struct in_addr *
-iface_ip (struct in_addr ip)
-{
- struct interface *i = iface_find (ip);
- return (i ? &i->ip : &local_interfaces->ip);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/kanji.c
^
|
@@ -1,1501 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Kanji Extensions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Adding for Japanese language by <fujita@ainix.isac.co.jp> 1994.9.5
- and extend coding system to EUC/SJIS/JIS/HEX at 1994.10.11
- and add all jis codes sequence type at 1995.8.16
- Notes: Hexadecimal code by <ohki@gssm.otuka.tsukuba.ac.jp>
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define _KANJI_C_
-#include "includes.h"
-
-/*
- * Function pointers that get overridden when multi-byte code pages
- * are loaded.
- */
-
-const char *(*multibyte_strchr) (const char *, int) = (const char *(*)(const char *, int)) strchr;
-const char *(*multibyte_strrchr) (const char *, int) = (const char *(*)(const char *, int)) strrchr;
-const char *(*multibyte_strstr) (const char *, const char *) =
- (const char *(*)(const char *, const char *)) strstr;
-char *(*multibyte_strtok) (char *, const char *) = (char *(*)(char *, const char *)) strtok;
-
-/*
- * Kanji is treated differently here due to historical accident of
- * it being the first non-English codepage added to Samba.
- * The define 'KANJI' is being overloaded to mean 'use kanji codepage
- * by default' and also 'this is the filename-to-disk conversion
- * method to use'. This really should be removed and all control
- * over this left in the smb.conf parameters 'client codepage'
- * and 'coding system'.
- */
-
-#ifndef KANJI
-
-/*
- * Set the default conversion to be the functions in
- * charcnv.c.
- */
-
-static size_t skip_non_multibyte_char (char);
-static BOOL not_multibyte_char_1 (char);
-
-char *(*_dos_to_unix) (char *, BOOL) = dos2unix_format;
-char *(*_unix_to_dos) (char *, BOOL) = unix2dos_format;
-size_t (*_skip_multibyte_char) (char) = skip_non_multibyte_char;
-BOOL (*is_multibyte_char_1) (char) = not_multibyte_char_1;
-
-#else /* KANJI */
-
-/*
- * Set the default conversion to be the function
- * sj_to_sj in this file.
- */
-
-static char *sj_to_sj (char *from, BOOL overwrite);
-static size_t skip_kanji_multibyte_char (char);
-static BOOL is_kanji_multibyte_char_1 (char);
-
-char *(*_dos_to_unix) (char *, BOOL) = sj_to_sj;
-char *(*_unix_to_dos) (char *, BOOL) = sj_to_sj;
-size_t (*_skip_multibyte_char) (char) = skip_kanji_multibyte_char;
-int (*is_multibyte_char_1) (char) = is_kanji_multibyte_char_1;
-
-#endif /* KANJI */
-
-/* jis si/so sequence */
-static char jis_kso = JIS_KSO;
-static char jis_ksi = JIS_KSI;
-static char hex_tag = HEXTAG;
-
-/*******************************************************************
- SHIFT JIS functions
-********************************************************************/
-
-/*******************************************************************
- search token from S1 separated any char of S2
- S1 contains SHIFT JIS chars.
-********************************************************************/
-
-static char *
-sj_strtok (char *s1, const char *s2)
-{
- static char *s = NULL;
- char *q;
- if (!s1)
- {
- if (!s)
- {
- return NULL;
- }
- s1 = s;
- }
- for (q = s1; *s1;)
- {
- if (is_shift_jis (*s1))
- {
- s1 += 2;
- }
- else if (is_kana (*s1))
- {
- s1++;
- }
- else
- {
- char *p = strchr (s2, *s1);
- if (p)
- {
- if (s1 != q)
- {
- s = s1 + 1;
- *s1 = '\0';
- return q;
- }
- q = s1 + 1;
- }
- s1++;
- }
- }
- s = NULL;
- if (*q)
- {
- return q;
- }
- return NULL;
-}
-
-/*******************************************************************
- search string S2 from S1
- S1 contains SHIFT JIS chars.
-********************************************************************/
-
-static const char *
-sj_strstr (const char *s1, const char *s2)
-{
- size_t len = strlen (s2);
- if (!*s2)
- return (const char *) s1;
- for (; *s1;)
- {
- if (*s1 == *s2)
- {
- if (strncmp (s1, s2, len) == 0)
- return (const char *) s1;
- }
- if (is_shift_jis (*s1))
- {
- s1 += 2;
- }
- else
- {
- s1++;
- }
- }
- return NULL;
-}
-
-/*******************************************************************
- Search char C from beginning of S.
- S contains SHIFT JIS chars.
-********************************************************************/
-
-static const char *
-sj_strchr (const char *s, int c)
-{
- for (; *s;)
- {
- if (*s == c)
- return (const char *) s;
- if (is_shift_jis (*s))
- {
- s += 2;
- }
- else
- {
- s++;
- }
- }
- return NULL;
-}
-
-/*******************************************************************
- Search char C end of S.
- S contains SHIFT JIS chars.
-********************************************************************/
-
-static const char *
-sj_strrchr (const char *s, int c)
-{
- const char *q;
-
- for (q = 0; *s;)
- {
- if (*s == c)
- {
- q = (const char *) s;
- }
- if (is_shift_jis (*s))
- {
- s += 2;
- }
- else
- {
- s++;
- }
- }
- return q;
-}
-
-/*******************************************************************
- Kanji multibyte char skip function.
-*******************************************************************/
-
-static size_t
-skip_kanji_multibyte_char (char c)
-{
- if (is_shift_jis (c))
- {
- return 2;
- }
- else if (is_kana (c))
- {
- return 1;
- }
- return 0;
-}
-
-/*******************************************************************
- Kanji multibyte char identification.
-*******************************************************************/
-
-static BOOL
-is_kanji_multibyte_char_1 (char c)
-{
- return is_shift_jis (c);
-}
-
-/*******************************************************************
- The following functions are the only ones needed to do multibyte
- support for Hangul, Big5 and Simplified Chinese. Most of the
- real work for these codepages is done in the generic multibyte
- functions. The only reason these functions are needed at all
- is that the is_xxx(c) calls are really preprocessor macros.
-********************************************************************/
-
-/*******************************************************************
- Hangul (Korean - code page 949) function.
-********************************************************************/
-
-static BOOL
-hangul_is_multibyte_char_1 (char c)
-{
- return is_hangul (c);
-}
-
-/*******************************************************************
- Big5 Traditional Chinese (code page 950) function.
-********************************************************************/
-
-static BOOL
-big5_is_multibyte_char_1 (char c)
-{
- return is_big5_c1 (c);
-}
-
-/*******************************************************************
- Simplified Chinese (code page 936) function.
-********************************************************************/
-
-static BOOL
-simpch_is_multibyte_char_1 (char c)
-{
- return is_simpch_c1 (c);
-}
-
-/*******************************************************************
- Generic multibyte functions - used by Hangul, Big5 and Simplified
- Chinese codepages.
-********************************************************************/
-
-/*******************************************************************
- search token from S1 separated any char of S2
- S1 contains generic multibyte chars.
-********************************************************************/
-
-static char *
-generic_multibyte_strtok (char *s1, const char *s2)
-{
- static char *s = NULL;
- char *q;
- if (!s1)
- {
- if (!s)
- {
- return NULL;
- }
- s1 = s;
- }
- for (q = s1; *s1;)
- {
- if ((*is_multibyte_char_1) (*s1))
- {
- s1 += 2;
- }
- else
- {
- char *p = strchr (s2, *s1);
- if (p)
- {
- if (s1 != q)
- {
- s = s1 + 1;
- *s1 = '\0';
- return q;
- }
- q = s1 + 1;
- }
- s1++;
- }
- }
- s = NULL;
- if (*q)
- {
- return q;
- }
- return NULL;
-}
-
-/*******************************************************************
- search string S2 from S1
- S1 contains generic multibyte chars.
-********************************************************************/
-
-static const char *
-generic_multibyte_strstr (const char *s1, const char *s2)
-{
- size_t len = strlen (s2);
- if (!*s2)
- return (const char *) s1;
- for (; *s1;)
- {
- if (*s1 == *s2)
- {
- if (strncmp (s1, s2, len) == 0)
- return (const char *) s1;
- }
- if ((*is_multibyte_char_1) (*s1))
- {
- s1 += 2;
- }
- else
- {
- s1++;
- }
- }
- return NULL;
-}
-
-/*******************************************************************
- Search char C from beginning of S.
- S contains generic multibyte chars.
-********************************************************************/
-
-static const char *
-generic_multibyte_strchr (const char *s, int c)
-{
- for (; *s;)
- {
- if (*s == c)
- return (const char *) s;
- if ((*is_multibyte_char_1) (*s))
- {
- s += 2;
- }
- else
- {
- s++;
- }
- }
- return NULL;
-}
-
-/*******************************************************************
- Search char C end of S.
- S contains generic multibyte chars.
-********************************************************************/
-
-static const char *
-generic_multibyte_strrchr (const char *s, int c)
-{
- const char *q;
-
- for (q = 0; *s;)
- {
- if (*s == c)
- {
- q = (const char *) s;
- }
- if ((*is_multibyte_char_1) (*s))
- {
- s += 2;
- }
- else
- {
- s++;
- }
- }
- return q;
-}
-
-/*******************************************************************
- Generic multibyte char skip function.
-*******************************************************************/
-
-static size_t
-skip_generic_multibyte_char (char c)
-{
- if ((*is_multibyte_char_1) (c))
- {
- return 2;
- }
- return 0;
-}
-
-/*******************************************************************
- Code conversion
-********************************************************************/
-
-/* convesion buffer */
-static char cvtbuf[1024];
-
-/*******************************************************************
- EUC <-> SJIS
-********************************************************************/
-
-static int
-euc2sjis (int hi, int lo)
-{
- if (hi & 1)
- return ((hi / 2 + (hi < 0xdf ? 0x31 : 0x71)) << 8) | (lo - (lo >= 0xe0 ? 0x60 : 0x61));
- else
- return ((hi / 2 + (hi < 0xdf ? 0x30 : 0x70)) << 8) | (lo - 2);
-}
-
-static int
-sjis2euc (int hi, int lo)
-{
- if (lo >= 0x9f)
- return ((hi * 2 - (hi >= 0xe0 ? 0xe0 : 0x60)) << 8) | (lo + 2);
- else
- return ((hi * 2 - (hi >= 0xe0 ? 0xe1 : 0x61)) << 8) | (lo + (lo >= 0x7f ? 0x60 : 0x61));
-}
-
-/*******************************************************************
- Convert FROM contain SHIFT JIS codes to EUC codes
- return converted buffer
-********************************************************************/
-
-static char *
-sj_to_euc (char *from, BOOL overwrite)
-{
- char *out;
- char *save;
-
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_shift_jis (*from))
- {
- int code = sjis2euc ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- else if (is_kana (*from))
- {
- *out++ = (char) euc_kana;
- *out++ = *from++;
- }
- else
- {
- *out++ = *from++;
- }
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy ((char *) save, (char *) cvtbuf);
- return (char *) save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain EUC codes to SHIFT JIS codes
- return converted buffer
-********************************************************************/
-
-static char *
-euc_to_sj (char *from, BOOL overwrite)
-{
- char *out;
- char *save;
-
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_euc (*from))
- {
- int code = euc2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- else if (is_euc_kana (*from))
- {
- *out++ = from[1];
- from += 2;
- }
- else
- {
- *out++ = *from++;
- }
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- JIS7,JIS8,JUNET <-> SJIS
-********************************************************************/
-
-static int
-sjis2jis (int hi, int lo)
-{
- if (lo >= 0x9f)
- return ((hi * 2 - (hi >= 0xe0 ? 0x160 : 0xe0)) << 8) | (lo - 0x7e);
- else
- return ((hi * 2 - (hi >= 0xe0 ? 0x161 : 0xe1)) << 8) | (lo - (lo >= 0x7f ? 0x20 : 0x1f));
-}
-
-static int
-jis2sjis (int hi, int lo)
-{
- if (hi & 1)
- return ((hi / 2 + (hi < 0x5f ? 0x71 : 0xb1)) << 8) | (lo + (lo >= 0x60 ? 0x20 : 0x1f));
- else
- return ((hi / 2 + (hi < 0x5f ? 0x70 : 0xb0)) << 8) | (lo + 0x7e);
-}
-
-/*******************************************************************
- Convert FROM contain JIS codes to SHIFT JIS codes
- return converted buffer
-********************************************************************/
-
-static char *
-jis8_to_sj (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_esc (*from))
- {
- if (is_so1 (from[1]) && is_so2 (from[2]))
- {
- shifted = _KJ_KANJI;
- from += 3;
- }
- else if (is_si1 (from[1]) && is_si2 (from[2]))
- {
- shifted = _KJ_ROMAN;
- from += 3;
- }
- else
- { /* sequence error */
- goto normal;
- }
- }
- else
- {
- normal:
- switch (shifted)
- {
- default:
- case _KJ_ROMAN:
- *out++ = *from++;
- break;
- case _KJ_KANJI:
- {
- int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- break;
- }
- }
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain SHIFT JIS codes to JIS codes
- return converted buffer
-********************************************************************/
-
-static char *
-sj_to_jis8 (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_shift_jis (*from))
- {
- int code;
- switch (shifted)
- {
- case _KJ_ROMAN: /* to KANJI */
- *out++ = jis_esc;
- *out++ = jis_so1;
- *out++ = jis_kso;
- shifted = _KJ_KANJI;
- break;
- }
- code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- else
- {
- switch (shifted)
- {
- case _KJ_KANJI: /* to ROMAN/KANA */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_ksi;
- shifted = _KJ_ROMAN;
- break;
- }
- *out++ = *from++;
- }
- }
- switch (shifted)
- {
- case _KJ_KANJI: /* to ROMAN/KANA */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_ksi;
- shifted = _KJ_ROMAN;
- break;
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain 7 bits JIS codes to SHIFT JIS codes
- return converted buffer
-********************************************************************/
-static char *
-jis7_to_sj (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_esc (*from))
- {
- if (is_so1 (from[1]) && is_so2 (from[2]))
- {
- shifted = _KJ_KANJI;
- from += 3;
- }
- else if (is_si1 (from[1]) && is_si2 (from[2]))
- {
- shifted = _KJ_ROMAN;
- from += 3;
- }
- else
- { /* sequence error */
- goto normal;
- }
- }
- else if (is_so (*from))
- {
- shifted = _KJ_KANA; /* to KANA */
- from++;
- }
- else if (is_si (*from))
- {
- shifted = _KJ_ROMAN; /* to ROMAN */
- from++;
- }
- else
- {
- normal:
- switch (shifted)
- {
- default:
- case _KJ_ROMAN:
- *out++ = *from++;
- break;
- case _KJ_KANJI:
- {
- int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- break;
- case _KJ_KANA:
- *out++ = ((int) from[0]) + 0x80;
- break;
- }
- }
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain SHIFT JIS codes to 7 bits JIS codes
- return converted buffer
-********************************************************************/
-static char *
-sj_to_jis7 (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_shift_jis (*from))
- {
- int code;
- switch (shifted)
- {
- case _KJ_KANA:
- *out++ = jis_si; /* to ROMAN and through down */
- case _KJ_ROMAN: /* to KANJI */
- *out++ = jis_esc;
- *out++ = jis_so1;
- *out++ = jis_kso;
- shifted = _KJ_KANJI;
- break;
- }
- code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- else if (is_kana (from[0]))
- {
- switch (shifted)
- {
- case _KJ_KANJI: /* to ROMAN */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_ksi;
- case _KJ_ROMAN: /* to KANA */
- *out++ = jis_so;
- shifted = _KJ_KANA;
- break;
- }
- *out++ = ((int) *from++) - 0x80;
- }
- else
- {
- switch (shifted)
- {
- case _KJ_KANA:
- *out++ = jis_si; /* to ROMAN */
- shifted = _KJ_ROMAN;
- break;
- case _KJ_KANJI: /* to ROMAN */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_ksi;
- shifted = _KJ_ROMAN;
- break;
- }
- *out++ = *from++;
- }
- }
- switch (shifted)
- {
- case _KJ_KANA:
- *out++ = jis_si; /* to ROMAN */
- break;
- case _KJ_KANJI: /* to ROMAN */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_ksi;
- break;
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain 7 bits JIS(junet) codes to SHIFT JIS codes
- return converted buffer
-********************************************************************/
-static char *
-junet_to_sj (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_esc (*from))
- {
- if (is_so1 (from[1]) && is_so2 (from[2]))
- {
- shifted = _KJ_KANJI;
- from += 3;
- }
- else if (is_si1 (from[1]) && is_si2 (from[2]))
- {
- shifted = _KJ_ROMAN;
- from += 3;
- }
- else if (is_juk1 (from[1]) && is_juk2 (from[2]))
- {
- shifted = _KJ_KANA;
- from += 3;
- }
- else
- { /* sequence error */
- goto normal;
- }
- }
- else
- {
- normal:
- switch (shifted)
- {
- default:
- case _KJ_ROMAN:
- *out++ = *from++;
- break;
- case _KJ_KANJI:
- {
- int code = jis2sjis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- break;
- case _KJ_KANA:
- *out++ = ((int) from[0]) + 0x80;
- break;
- }
- }
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- Convert FROM contain SHIFT JIS codes to 7 bits JIS(junet) codes
- return converted buffer
-********************************************************************/
-static char *
-sj_to_junet (char *from, BOOL overwrite)
-{
- char *out;
- int shifted;
- char *save;
-
- shifted = _KJ_ROMAN;
- save = (char *) from;
- for (out = cvtbuf; *from;)
- {
- if (is_shift_jis (*from))
- {
- int code;
- switch (shifted)
- {
- case _KJ_KANA:
- case _KJ_ROMAN: /* to KANJI */
- *out++ = jis_esc;
- *out++ = jis_so1;
- *out++ = jis_so2;
- shifted = _KJ_KANJI;
- break;
- }
- code = sjis2jis ((int) from[0] & 0xff, (int) from[1] & 0xff);
- *out++ = (code >> 8) & 0xff;
- *out++ = code;
- from += 2;
- }
- else if (is_kana (from[0]))
- {
- switch (shifted)
- {
- case _KJ_KANJI: /* to ROMAN */
- case _KJ_ROMAN: /* to KANA */
- *out++ = jis_esc;
- *out++ = junet_kana1;
- *out++ = junet_kana2;
- shifted = _KJ_KANA;
- break;
- }
- *out++ = ((int) *from++) - 0x80;
- }
- else
- {
- switch (shifted)
- {
- case _KJ_KANA:
- case _KJ_KANJI: /* to ROMAN */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_si2;
- shifted = _KJ_ROMAN;
- break;
- }
- *out++ = *from++;
- }
- }
- switch (shifted)
- {
- case _KJ_KANA:
- case _KJ_KANJI: /* to ROMAN */
- *out++ = jis_esc;
- *out++ = jis_si1;
- *out++ = jis_si2;
- break;
- }
- *out = 0;
- if (overwrite)
- {
- pstrcpy (save, (char *) cvtbuf);
- return save;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- HEX <-> SJIS
-********************************************************************/
-/* ":xx" -> a byte */
-static char *
-hex_to_sj (char *from, BOOL overwrite)
-{
- char *sp, *dp;
-
- sp = (char *) from;
- dp = cvtbuf;
- while (*sp)
- {
- if (*sp == hex_tag && isxdigit ((int) sp[1]) && isxdigit ((int) sp[2]))
- {
- *dp++ = (hex2bin (sp[1]) << 4) | (hex2bin (sp[2]));
- sp += 3;
- }
- else
- *dp++ = *sp++;
- }
- *dp = '\0';
- if (overwrite)
- {
- pstrcpy ((char *) from, (char *) cvtbuf);
- return (char *) from;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- kanji/kana -> ":xx"
-********************************************************************/
-static char *
-sj_to_hex (char *from, BOOL overwrite)
-{
- unsigned char *sp, *dp;
-
- sp = (unsigned char *) from;
- dp = (unsigned char *) cvtbuf;
- while (*sp)
- {
- if (is_kana (*sp))
- {
- *dp++ = hex_tag;
- *dp++ = bin2hex (((*sp) >> 4) & 0x0f);
- *dp++ = bin2hex ((*sp) & 0x0f);
- sp++;
- }
- else if (is_shift_jis (*sp) && is_shift_jis2 (sp[1]))
- {
- *dp++ = hex_tag;
- *dp++ = bin2hex (((*sp) >> 4) & 0x0f);
- *dp++ = bin2hex ((*sp) & 0x0f);
- sp++;
- *dp++ = hex_tag;
- *dp++ = bin2hex (((*sp) >> 4) & 0x0f);
- *dp++ = bin2hex ((*sp) & 0x0f);
- sp++;
- }
- else
- *dp++ = *sp++;
- }
- *dp = '\0';
- if (overwrite)
- {
- pstrcpy ((char *) from, (char *) cvtbuf);
- return (char *) from;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- CAP <-> SJIS
-********************************************************************/
-/* ":xx" CAP -> a byte */
-static char *
-cap_to_sj (char *from, BOOL overwrite)
-{
- char *sp, *dp;
-
- sp = (char *) from;
- dp = cvtbuf;
- while (*sp)
- {
- /*
- * The only change between this and hex_to_sj is here. sj_to_cap only
- * translates characters greater or equal to 0x80 - make sure that here
- * we only do the reverse (that's why the strchr is used rather than
- * isxdigit. Based on fix from ado@elsie.nci.nih.gov (Arthur David Olson).
- */
- if (*sp == hex_tag && (strchr ("89abcdefABCDEF", sp[1]) != NULL) && isxdigit ((int) sp[2]))
- {
- *dp++ = (hex2bin (sp[1]) << 4) | (hex2bin (sp[2]));
- sp += 3;
- }
- else
- *dp++ = *sp++;
- }
- *dp = '\0';
- if (overwrite)
- {
- pstrcpy ((char *) from, (char *) cvtbuf);
- return (char *) from;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- kanji/kana -> ":xx" - CAP format.
-********************************************************************/
-static char *
-sj_to_cap (char *from, BOOL overwrite)
-{
- unsigned char *sp, *dp;
-
- sp = (unsigned char *) from;
- dp = (unsigned char *) cvtbuf;
- while (*sp)
- {
- if (*sp >= 0x80)
- {
- *dp++ = hex_tag;
- *dp++ = bin2hex (((*sp) >> 4) & 0x0f);
- *dp++ = bin2hex ((*sp) & 0x0f);
- sp++;
- }
- else
- {
- *dp++ = *sp++;
- }
- }
- *dp = '\0';
- if (overwrite)
- {
- pstrcpy ((char *) from, (char *) cvtbuf);
- return (char *) from;
- }
- else
- {
- return cvtbuf;
- }
-}
-
-/*******************************************************************
- sj to sj
-********************************************************************/
-static char *
-sj_to_sj (char *from, BOOL overwrite)
-{
- if (!overwrite)
- {
- pstrcpy (cvtbuf, (char *) from);
- return cvtbuf;
- }
- else
- {
- return (char *) from;
- }
-}
-
-/************************************************************************
- conversion:
- _dos_to_unix _unix_to_dos
-************************************************************************/
-
-static void
-setup_string_function (int codes)
-{
- switch (codes)
- {
- default:
- _dos_to_unix = dos2unix_format;
- _unix_to_dos = unix2dos_format;
- break;
-
- case SJIS_CODE:
- _dos_to_unix = sj_to_sj;
- _unix_to_dos = sj_to_sj;
- break;
-
- case EUC_CODE:
- _dos_to_unix = sj_to_euc;
- _unix_to_dos = euc_to_sj;
- break;
-
- case JIS7_CODE:
- _dos_to_unix = sj_to_jis7;
- _unix_to_dos = jis7_to_sj;
- break;
-
- case JIS8_CODE:
- _dos_to_unix = sj_to_jis8;
- _unix_to_dos = jis8_to_sj;
- break;
-
- case JUNET_CODE:
- _dos_to_unix = sj_to_junet;
- _unix_to_dos = junet_to_sj;
- break;
-
- case HEX_CODE:
- _dos_to_unix = sj_to_hex;
- _unix_to_dos = hex_to_sj;
- break;
-
- case CAP_CODE:
- _dos_to_unix = sj_to_cap;
- _unix_to_dos = cap_to_sj;
- break;
- }
-}
-
-/************************************************************************
- Interpret coding system.
-************************************************************************/
-
-void
-interpret_coding_system (const char *str)
-{
- int codes = UNKNOWN_CODE;
-
- if (strequal (str, "sjis"))
- {
- codes = SJIS_CODE;
- }
- else if (strequal (str, "euc"))
- {
- codes = EUC_CODE;
- }
- else if (strequal (str, "cap"))
- {
- codes = CAP_CODE;
- hex_tag = HEXTAG;
- }
- else if (strequal (str, "hex"))
- {
- codes = HEX_CODE;
- hex_tag = HEXTAG;
- }
- else if (!strncasecmp (str, "hex", 3))
- {
- codes = HEX_CODE;
- hex_tag = (str[3] ? str[3] : HEXTAG);
- }
- else if (strequal (str, "j8bb"))
- {
- codes = JIS8_CODE;
- jis_kso = 'B';
- jis_ksi = 'B';
- }
- else if (strequal (str, "j8bj") || strequal (str, "jis8"))
- {
- codes = JIS8_CODE;
- jis_kso = 'B';
- jis_ksi = 'J';
- }
- else if (strequal (str, "j8bh"))
- {
- codes = JIS8_CODE;
- jis_kso = 'B';
- jis_ksi = 'H';
- }
- else if (strequal (str, "j8@b"))
- {
- codes = JIS8_CODE;
- jis_kso = '@';
- jis_ksi = 'B';
- }
- else if (strequal (str, "j8@j"))
- {
- codes = JIS8_CODE;
- jis_kso = '@';
- jis_ksi = 'J';
- }
- else if (strequal (str, "j8@h"))
- {
- codes = JIS8_CODE;
- jis_kso = '@';
- jis_ksi = 'H';
- }
- else if (strequal (str, "j7bb"))
- {
- codes = JIS7_CODE;
- jis_kso = 'B';
- jis_ksi = 'B';
- }
- else if (strequal (str, "j7bj") || strequal (str, "jis7"))
- {
- codes = JIS7_CODE;
- jis_kso = 'B';
- jis_ksi = 'J';
- }
- else if (strequal (str, "j7bh"))
- {
- codes = JIS7_CODE;
- jis_kso = 'B';
- jis_ksi = 'H';
- }
- else if (strequal (str, "j7@b"))
- {
- codes = JIS7_CODE;
- jis_kso = '@';
- jis_ksi = 'B';
- }
- else if (strequal (str, "j7@j"))
- {
- codes = JIS7_CODE;
- jis_kso = '@';
- jis_ksi = 'J';
- }
- else if (strequal (str, "j7@h"))
- {
- codes = JIS7_CODE;
- jis_kso = '@';
- jis_ksi = 'H';
- }
- else if (strequal (str, "jubb"))
- {
- codes = JUNET_CODE;
- jis_kso = 'B';
- jis_ksi = 'B';
- }
- else if (strequal (str, "jubj") || strequal (str, "junet"))
- {
- codes = JUNET_CODE;
- jis_kso = 'B';
- jis_ksi = 'J';
- }
- else if (strequal (str, "jubh"))
- {
- codes = JUNET_CODE;
- jis_kso = 'B';
- jis_ksi = 'H';
- }
- else if (strequal (str, "ju@b"))
- {
- codes = JUNET_CODE;
- jis_kso = '@';
- jis_ksi = 'B';
- }
- else if (strequal (str, "ju@j"))
- {
- codes = JUNET_CODE;
- jis_kso = '@';
- jis_ksi = 'J';
- }
- else if (strequal (str, "ju@h"))
- {
- codes = JUNET_CODE;
- jis_kso = '@';
- jis_ksi = 'H';
- }
- setup_string_function (codes);
-}
-
-/*******************************************************************
- Non multibyte char function.
-*******************************************************************/
-
-static size_t
-skip_non_multibyte_char (char c)
-{
- (void) c;
- return 0;
-}
-
-/*******************************************************************
- Function that always says a character isn't multibyte.
-*******************************************************************/
-
-static BOOL
-not_multibyte_char_1 (char c)
-{
- (void) c;
- return False;
-}
-
-/*******************************************************************
- Function to determine if we are in a multibyte code page.
-*******************************************************************/
-
-static BOOL is_multibyte_codepage_val = False;
-
-BOOL
-is_multibyte_codepage (void)
-{
- return is_multibyte_codepage_val;
-}
-
-/*******************************************************************
- Setup the function pointers for the functions that are replaced
- when multi-byte codepages are used.
-
- The dos_to_unix and unix_to_dos function pointers are only
- replaced by setup_string_function called by interpret_coding_system
- above.
-*******************************************************************/
-
-void
-initialize_multibyte_vectors (int client_codepage)
-{
- switch (client_codepage)
- {
- case KANJI_CODEPAGE:
- multibyte_strchr = sj_strchr;
- multibyte_strrchr = sj_strrchr;
- multibyte_strstr = sj_strstr;
- multibyte_strtok = sj_strtok;
- _skip_multibyte_char = skip_kanji_multibyte_char;
- is_multibyte_char_1 = is_kanji_multibyte_char_1;
- is_multibyte_codepage_val = True;
- break;
- case HANGUL_CODEPAGE:
- multibyte_strchr = generic_multibyte_strchr;
- multibyte_strrchr = generic_multibyte_strrchr;
- multibyte_strstr = generic_multibyte_strstr;
- multibyte_strtok = generic_multibyte_strtok;
- _skip_multibyte_char = skip_generic_multibyte_char;
- is_multibyte_char_1 = hangul_is_multibyte_char_1;
- is_multibyte_codepage_val = True;
- break;
- case BIG5_CODEPAGE:
- multibyte_strchr = generic_multibyte_strchr;
- multibyte_strrchr = generic_multibyte_strrchr;
- multibyte_strstr = generic_multibyte_strstr;
- multibyte_strtok = generic_multibyte_strtok;
- _skip_multibyte_char = skip_generic_multibyte_char;
- is_multibyte_char_1 = big5_is_multibyte_char_1;
- is_multibyte_codepage_val = True;
- break;
- case SIMPLIFIED_CHINESE_CODEPAGE:
- multibyte_strchr = generic_multibyte_strchr;
- multibyte_strrchr = generic_multibyte_strrchr;
- multibyte_strstr = generic_multibyte_strstr;
- multibyte_strtok = generic_multibyte_strtok;
- _skip_multibyte_char = skip_generic_multibyte_char;
- is_multibyte_char_1 = simpch_is_multibyte_char_1;
- is_multibyte_codepage_val = True;
- break;
- /*
- * Single char size code page.
- */
- default:
- multibyte_strchr = (const char *(*)(const char *, int)) strchr;
- multibyte_strrchr = (const char *(*)(const char *, int)) strrchr;
- multibyte_strstr = (const char *(*)(const char *, const char *)) strstr;
- multibyte_strtok = (char *(*)(char *, const char *)) strtok;
- _skip_multibyte_char = skip_non_multibyte_char;
- is_multibyte_char_1 = not_multibyte_char_1;
- is_multibyte_codepage_val = False;
- break;
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/md4.c
^
|
@@ -1,217 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- a implementation of MD4 designed for use in the SMB authentication protocol
-
- Copyright (C) Andrew Tridgell 1997-1998.
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-/* NOTE: This code makes no attempt to be fast!
-
- It assumes that a int is at least 32 bits long
- */
-
-static uint32 A, B, C, D;
-
-static uint32
-F (uint32 X, uint32 Y, uint32 Z)
-{
- return (X & Y) | ((~X) & Z);
-}
-
-static uint32
-G (uint32 X, uint32 Y, uint32 Z)
-{
- return (X & Y) | (X & Z) | (Y & Z);
-}
-
-static uint32
-H (uint32 X, uint32 Y, uint32 Z)
-{
- return X ^ Y ^ Z;
-}
-
-static uint32
-lshift (uint32 x, int s)
-{
- x &= 0xFFFFFFFF;
- return ((x << s) & 0xFFFFFFFF) | (x >> (32 - s));
-}
-
-#define ROUND1(a,b,c,d,k,s) a = lshift(a + F(b,c,d) + X[k], s)
-#define ROUND2(a,b,c,d,k,s) a = lshift(a + G(b,c,d) + X[k] + (uint32)0x5A827999,s)
-#define ROUND3(a,b,c,d,k,s) a = lshift(a + H(b,c,d) + X[k] + (uint32)0x6ED9EBA1,s)
-
-/* this applies md4 to 64 byte chunks */
-static void
-mdfour64 (uint32 * M)
-{
- int j;
- uint32 AA, BB, CC, DD;
- uint32 X[16];
-
- for (j = 0; j < 16; j++)
- X[j] = M[j];
-
- AA = A;
- BB = B;
- CC = C;
- DD = D;
-
- ROUND1 (A, B, C, D, 0, 3);
- ROUND1 (D, A, B, C, 1, 7);
- ROUND1 (C, D, A, B, 2, 11);
- ROUND1 (B, C, D, A, 3, 19);
- ROUND1 (A, B, C, D, 4, 3);
- ROUND1 (D, A, B, C, 5, 7);
- ROUND1 (C, D, A, B, 6, 11);
- ROUND1 (B, C, D, A, 7, 19);
- ROUND1 (A, B, C, D, 8, 3);
- ROUND1 (D, A, B, C, 9, 7);
- ROUND1 (C, D, A, B, 10, 11);
- ROUND1 (B, C, D, A, 11, 19);
- ROUND1 (A, B, C, D, 12, 3);
- ROUND1 (D, A, B, C, 13, 7);
- ROUND1 (C, D, A, B, 14, 11);
- ROUND1 (B, C, D, A, 15, 19);
-
- ROUND2 (A, B, C, D, 0, 3);
- ROUND2 (D, A, B, C, 4, 5);
- ROUND2 (C, D, A, B, 8, 9);
- ROUND2 (B, C, D, A, 12, 13);
- ROUND2 (A, B, C, D, 1, 3);
- ROUND2 (D, A, B, C, 5, 5);
- ROUND2 (C, D, A, B, 9, 9);
- ROUND2 (B, C, D, A, 13, 13);
- ROUND2 (A, B, C, D, 2, 3);
- ROUND2 (D, A, B, C, 6, 5);
- ROUND2 (C, D, A, B, 10, 9);
- ROUND2 (B, C, D, A, 14, 13);
- ROUND2 (A, B, C, D, 3, 3);
- ROUND2 (D, A, B, C, 7, 5);
- ROUND2 (C, D, A, B, 11, 9);
- ROUND2 (B, C, D, A, 15, 13);
-
- ROUND3 (A, B, C, D, 0, 3);
- ROUND3 (D, A, B, C, 8, 9);
- ROUND3 (C, D, A, B, 4, 11);
- ROUND3 (B, C, D, A, 12, 15);
- ROUND3 (A, B, C, D, 2, 3);
- ROUND3 (D, A, B, C, 10, 9);
- ROUND3 (C, D, A, B, 6, 11);
- ROUND3 (B, C, D, A, 14, 15);
- ROUND3 (A, B, C, D, 1, 3);
- ROUND3 (D, A, B, C, 9, 9);
- ROUND3 (C, D, A, B, 5, 11);
- ROUND3 (B, C, D, A, 13, 15);
- ROUND3 (A, B, C, D, 3, 3);
- ROUND3 (D, A, B, C, 11, 9);
- ROUND3 (C, D, A, B, 7, 11);
- ROUND3 (B, C, D, A, 15, 15);
-
- A += AA;
- B += BB;
- C += CC;
- D += DD;
-
- A &= 0xFFFFFFFF;
- B &= 0xFFFFFFFF;
- C &= 0xFFFFFFFF;
- D &= 0xFFFFFFFF;
-
- for (j = 0; j < 16; j++)
- X[j] = 0;
-}
-
-static void
-copy64 (uint32 * M, unsigned char *in)
-{
- int i;
-
- for (i = 0; i < 16; i++)
- M[i] = (in[i * 4 + 3] << 24) | (in[i * 4 + 2] << 16) |
- (in[i * 4 + 1] << 8) | (in[i * 4 + 0] << 0);
-}
-
-static void
-copy4 (unsigned char *out, uint32 x)
-{
- out[0] = x & 0xFF;
- out[1] = (x >> 8) & 0xFF;
- out[2] = (x >> 16) & 0xFF;
- out[3] = (x >> 24) & 0xFF;
-}
-
-/* produce a md4 message digest from data of length n bytes */
-void
-mdfour (unsigned char *out, unsigned char *in, int n)
-{
- unsigned char buf[128];
- uint32 M[16];
- uint32 b = n * 8;
- int i;
-
- A = 0x67452301;
- B = 0xefcdab89;
- C = 0x98badcfe;
- D = 0x10325476;
-
- while (n > 64)
- {
- copy64 (M, in);
- mdfour64 (M);
- in += 64;
- n -= 64;
- }
-
- for (i = 0; i < 128; i++)
- buf[i] = 0;
- memcpy (buf, in, n);
- buf[n] = 0x80;
-
- if (n <= 55)
- {
- copy4 (buf + 56, b);
- copy64 (M, buf);
- mdfour64 (M);
- }
- else
- {
- copy4 (buf + 120, b);
- copy64 (M, buf);
- mdfour64 (M);
- copy64 (M, buf + 64);
- mdfour64 (M);
- }
-
- for (i = 0; i < 128; i++)
- buf[i] = 0;
- copy64 (M, buf);
-
- copy4 (out, A);
- copy4 (out + 4, B);
- copy4 (out + 8, C);
- copy4 (out + 12, D);
-
- A = B = C = D = 0;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/netmask.c
^
|
@@ -1,395 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- code to query kernel netmask
-
- Copyright (C) Andrew Tridgell 1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-/* working out the netmask for an interface is an incredibly non-portable
- thing. We have several possible implementations below, and autoconf
- tries each of them to see what works
-
- Note that this file does _not_ include includes.h. That is so this code
- can be called directly from the autoconf tests. That also means
- this code cannot use any of the normal Samba debug stuff or defines.
- This is standalone code.
-
- */
-
-#ifndef AUTOCONF
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_NETMASK_IFCONF
-
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#ifndef SIOCGIFCONF
-#include <sys/sockio.h>
-#endif
-
-/*
- * Prototype for gcc in fussy mode.
- */
-
-int get_netmask (struct in_addr *ipaddr, struct in_addr *nmask);
-
-/****************************************************************************
- get the netmask address for a local interface
-****************************************************************************/
-int
-get_netmask (struct in_addr *ipaddr, struct in_addr *nmask)
-{
- struct ifconf ifc;
- char buff[2048];
- int fd, i, n;
- struct ifreq *ifr = NULL;
-
- if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) == -1)
- {
-#ifdef DEBUG
- fprintf (stderr, "socket failed\n");
-#endif
- return -1;
- }
-
- ifc.ifc_len = sizeof (buff);
- ifc.ifc_buf = buff;
- if (ioctl (fd, SIOCGIFCONF, &ifc) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFCONF failed\n");
-#endif
- close (fd);
- return -1;
- }
-
- ifr = ifc.ifc_req;
-
- n = ifc.ifc_len / sizeof (struct ifreq);
-
-#ifdef DEBUG
- fprintf (stderr, "%d interfaces - looking for %s\n", n, inet_ntoa (*ipaddr));
-#endif
-
- /* Loop through interfaces, looking for given IP address */
- for (i = n - 1; i >= 0; i--)
- {
- if (ioctl (fd, SIOCGIFADDR, &ifr[i]) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFADDR failed\n");
-#endif
- continue;
- }
-
-#ifdef DEBUG
- fprintf (stderr, "interface %s\n",
- inet_ntoa ((*(struct sockaddr_in *) &ifr[i].ifr_addr).sin_addr));
-#endif
- if (ipaddr->s_addr != (*(struct sockaddr_in *) &ifr[i].ifr_addr).sin_addr.s_addr)
- {
- continue;
- }
-
- if (ioctl (fd, SIOCGIFNETMASK, &ifr[i]) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFNETMASK failed\n");
-#endif
- close (fd);
- return -1;
- }
- close (fd);
- (*nmask) = ((struct sockaddr_in *) &ifr[i].ifr_addr)->sin_addr;
-#ifdef DEBUG
- fprintf (stderr, "netmask %s\n", inet_ntoa (*nmask));
-#endif
- return 0;
- }
-
-#ifdef DEBUG
- fprintf (stderr, "interface not found\n");
-#endif
-
- close (fd);
- return -1;
-}
-
-#elif defined(HAVE_NETMASK_IFREQ)
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#ifndef SIOCGIFCONF
-#include <sys/sockio.h>
-#endif
-
-#ifndef I_STR
-#include <sys/stropts.h>
-#endif
-
-
-/****************************************************************************
-this should cover most of the rest of systems
-****************************************************************************/
-int
-get_netmask (struct in_addr *ipaddr, struct in_addr *nmask)
-{
- struct ifreq ifreq;
- struct strioctl strioctl;
- struct ifconf *ifc;
- char buff[2048];
- int fd, i, n;
- struct ifreq *ifr = NULL;
-
- if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) == -1)
- {
-#ifdef DEBUG
- fprintf (stderr, "socket failed\n");
-#endif
- return -1;
- }
-
- ifc = (struct ifconf *) buff;
- ifc->ifc_len = BUFSIZ - sizeof (struct ifconf);
- strioctl.ic_cmd = SIOCGIFCONF;
- strioctl.ic_dp = (char *) ifc;
- strioctl.ic_len = sizeof (buff);
- if (ioctl (fd, I_STR, &strioctl) < 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFCONF failed\n");
-#endif
- close (fd);
- return -1;
- }
-
- ifr = (struct ifreq *) ifc->ifc_req;
-
- /* Loop through interfaces, looking for given IP address */
- n = ifc->ifc_len / sizeof (struct ifreq);
-
- for (i = 0; i < n; i++, ifr++)
- {
-#ifdef DEBUG
- fprintf (stderr, "interface %s\n",
- inet_ntoa ((*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr));
-#endif
- if (ipaddr->s_addr == (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr)
- {
- break;
- }
- }
-
-#ifdef DEBUG
- if (i == n)
- {
- fprintf (stderr, "interface not found\n");
- close (fd);
- return -1;
- }
-#endif
-
- ifreq = *ifr;
-
- strioctl.ic_cmd = SIOCGIFNETMASK;
- strioctl.ic_dp = (char *) &ifreq;
- strioctl.ic_len = sizeof (struct ifreq);
- if (ioctl (fd, I_STR, &strioctl) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "Failed SIOCGIFNETMASK\n");
-#endif
- close (fd);
- return -1;
- }
-
- close (fd);
- *nmask = ((struct sockaddr_in *) &ifreq.ifr_addr)->sin_addr;
-#ifdef DEBUG
- fprintf (stderr, "netmask %s\n", inet_ntoa (*nmask));
-#endif
- return 0;
-}
-
-#elif defined(HAVE_NETMASK_AIX)
-
-#include <stdio.h>
-#include <unistd.h> /* close() declaration for gcc in fussy mode */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-#ifndef SIOCGIFCONF
-#include <sys/sockio.h>
-#endif
-
-/*
- * Prototype for gcc in fussy mode.
- */
-
-int get_netmask (struct in_addr *ipaddr, struct in_addr *nmask);
-
-/****************************************************************************
-this one is for AIX
-****************************************************************************/
-
-int
-get_netmask (struct in_addr *ipaddr, struct in_addr *nmask)
-{
- char buff[2048];
- int fd, i;
- struct ifconf ifc;
- struct ifreq *ifr = NULL;
-
- if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) == -1)
- {
-#ifdef DEBUG
- fprintf (stderr, "socket failed\n");
-#endif
- return -1;
- }
-
-
- ifc.ifc_len = sizeof (buff);
- ifc.ifc_buf = buff;
-
- if (ioctl (fd, SIOCGIFCONF, &ifc) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFCONF failed\n");
-#endif
- close (fd);
- return -1;
- }
-
- ifr = ifc.ifc_req;
- /* Loop through interfaces, looking for given IP address */
- i = ifc.ifc_len;
- while (i > 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "interface %s\n",
- inet_ntoa ((*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr));
-#endif
- if (ipaddr->s_addr == (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr)
- {
- break;
- }
- i -= ifr->ifr_addr.sa_len + IFNAMSIZ;
- ifr = (struct ifreq *) ((char *) ifr + ifr->ifr_addr.sa_len + IFNAMSIZ);
- }
-
-
-#ifdef DEBUG
- if (i <= 0)
- {
- fprintf (stderr, "interface not found\n");
- close (fd);
- return -1;
- }
-#endif
-
- if (ioctl (fd, SIOCGIFNETMASK, ifr) != 0)
- {
-#ifdef DEBUG
- fprintf (stderr, "SIOCGIFNETMASK failed\n");
-#endif
- close (fd);
- return -1;
- }
-
- close (fd);
-
- (*nmask) = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr;
-#ifdef DEBUG
- fprintf (stderr, "netmask %s\n", inet_ntoa (*nmask));
-#endif
- return 0;
-}
-
-#else /* a dummy version */
-struct in_addr; /* it may not have been declared before */
-int get_netmask (struct in_addr *ipaddr, struct in_addr *nmask);
-int
-get_netmask (struct in_addr *ipaddr, struct in_addr *nmask)
-{
- return -1;
-}
-#endif
-
-
-#ifdef AUTOCONF
-/* this is the autoconf driver to test get_netmask() */
-
-main ()
-{
- char buf[1024];
- struct hostent *hp;
- struct in_addr ip, nmask;
-
- if (gethostname (buf, sizeof (buf) - 1) != 0)
- {
- fprintf (stderr, "gethostname failed\n");
- exit (1);
- }
-
- hp = gethostbyname (buf);
-
- if (!hp)
- {
- fprintf (stderr, "gethostbyname failed\n");
- exit (1);
- }
-
- memcpy ((char *) &ip, (char *) hp->h_addr, hp->h_length);
-
- if (get_netmask (&ip, &nmask) == 0)
- exit (0);
-
- fprintf (stderr, "get_netmask failed\n");
- exit (1);
-}
-#endif
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/slprintf.c
^
|
@@ -1,75 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- snprintf replacement
-
- Copyright (C) Andrew Tridgell 1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-
-/* this is like vsnprintf but the 'n' limit does not include
- the terminating null. So if you have a 1024 byte buffer then
- pass 1023 for n */
-int
-vslprintf (char *str, int n, const char *format, va_list ap)
-{
- int ret = vsnprintf (str, n, format, ap);
- if (ret > n || ret < 0)
- {
- str[n] = 0;
- return -1;
- }
- str[ret] = 0;
- return ret;
-}
-
-#ifdef HAVE_STDARG_H
-int
-slprintf (char *str, int n, const char *format, ...)
-{
-#else
-int
-slprintf (va_alist)
- va_dcl
-{
- char *str, *format;
- int n;
-#endif
- va_list ap;
- int ret;
-
-#ifdef HAVE_STDARG_H
- va_start (ap, format);
-#else
- va_start (ap);
- str = va_arg (ap, char *);
- n = va_arg (ap, int);
- format = va_arg (ap, char *);
-#endif
-
- ret = vslprintf (str, n, format, ap);
- va_end (ap);
- return ret;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/system.c
^
|
@@ -1,306 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Samba system utilities
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-/*
- The idea is that this file will eventually have wrappers around all
- important system calls in samba. The aims are:
-
- - to enable easier porting by putting OS dependent stuff in here
-
- - to allow for hooks into other "pseudo-filesystems"
-
- - to allow easier integration of things like the japanese extensions
-
- - to support the philosophy of Samba to expose the features of
- the OS within the SMB model. In general whatever file/printer/variable
- expansions/etc make sense to the OS should be acceptable to Samba.
- */
-
-
-/*******************************************************************
-this replaces the normal select() system call
-return if some data has arrived on one of the file descriptors
-return -1 means error
-********************************************************************/
-#ifndef HAVE_SELECT
-static int
-pollfd (int fd)
-{
- int r = 0;
-
-#ifdef HAS_RDCHK
- r = rdchk (fd);
-#elif defined(TCRDCHK)
- (void) ioctl (fd, TCRDCHK, &r);
-#else
- (void) ioctl (fd, FIONREAD, &r);
-#endif
-
- return (r);
-}
-
-int
-sys_select (int maxfd, fd_set * fds, struct timeval *tval)
-{
- fd_set fds2;
- int counter = 0;
- int found = 0;
-
- FD_ZERO (&fds2);
-
- while (1)
- {
- int i;
- for (i = 0; i < maxfd; i++)
- {
- if (FD_ISSET (i, fds) && pollfd (i) > 0)
- {
- found++;
- FD_SET (i, &fds2);
- }
- }
-
- if (found)
- {
- memcpy ((void *) fds, (void *) &fds2, sizeof (fds2));
- return (found);
- }
-
- if (tval && tval->tv_sec < counter)
- return (0);
- sleep (1);
- counter++;
- }
-}
-
-#else /* !NO_SELECT */
-int
-sys_select (int maxfd, fd_set * fds, struct timeval *tval)
-{
-#ifdef USE_POLL
- struct pollfd pfd[256];
- int i;
- int maxpoll;
- int timeout;
- int pollrtn;
-
- maxpoll = 0;
- for (i = 0; i < maxfd; i++)
- {
- if (FD_ISSET (i, fds))
- {
- struct pollfd *pfdp = &pfd[maxpoll++];
- pfdp->fd = i;
- pfdp->events = POLLIN;
- pfdp->revents = 0;
- }
- }
-
- timeout = (tval != NULL) ? (tval->tv_sec * 1000) + (tval->tv_usec / 1000) : -1;
- errno = 0;
- do
- {
- pollrtn = poll (&pfd[0], maxpoll, timeout);
- }
- while (pollrtn < 0 && errno == EINTR);
-
- FD_ZERO (fds);
-
- for (i = 0; i < maxpoll; i++)
- if (pfd[i].revents & POLLIN)
- FD_SET (pfd[i].fd, fds);
-
- return pollrtn;
-#else /* USE_POLL */
-
- struct timeval t2;
- int selrtn;
-
- do
- {
- if (tval)
- memcpy ((void *) &t2, (void *) tval, sizeof (t2));
- errno = 0;
- selrtn = select (maxfd, SELECT_CAST fds, NULL, NULL, tval ? &t2 : NULL);
- }
- while (selrtn < 0 && errno == EINTR);
-
- return (selrtn);
-#endif /* USE_POLL */
-}
-#endif /* NO_SELECT */
-
-/*******************************************************************
-A stat() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-
-int
-sys_stat (const char *fname, SMB_STRUCT_STAT * sbuf)
-{
- return stat (fname, sbuf);
-}
-
-/*******************************************************************
- An lstat() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-#if 0
-int
-sys_lstat (const char *fname, SMB_STRUCT_STAT * sbuf)
-{
- return lstat (fname, sbuf);
-}
-
-/*******************************************************************
- An fseek() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-
-int
-sys_fseek (FILE * fp, SMB_OFF_T offset, int whence)
-{
- return fseek (fp, offset, whence);
-}
-
-/*******************************************************************
- An ftell() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-
-SMB_OFF_T
-sys_ftell (FILE * fp)
-{
- return (SMB_OFF_T) ftell (fp);
-}
-
-/*******************************************************************
- An open() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-
-int
-sys_open (const char *path, int oflag, mode_t mode)
-{
- return open (path, oflag, mode);
-}
-
-/*******************************************************************
- An fopen() wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-#endif /* 0 */
-
-FILE *
-sys_fopen (const char *path, const char *type)
-{
- return fopen (path, type);
-}
-
-#if 0
-/*******************************************************************
- A readdir wrapper that will deal with 64 bit filesizes.
-********************************************************************/
-
-SMB_STRUCT_DIRENT *
-sys_readdir (DIR * dirp)
-{
- return readdir (dirp);
-}
-
-/*******************************************************************
-system wrapper for getwd
-********************************************************************/
-char *
-sys_getwd (char *s)
-{
- char *wd;
-#ifdef HAVE_GETCWD
- wd = (char *) getcwd (s, sizeof (pstring));
-#else
- wd = (char *) getwd (s);
-#endif
- return wd;
-}
-
-/*******************************************************************
-chown isn't used much but OS/2 doesn't have it
-********************************************************************/
-
-int
-sys_chown (const char *fname, uid_t uid, gid_t gid)
-{
-#ifndef HAVE_CHOWN
- static int done;
- if (!done)
- {
- DEBUG (1, ("WARNING: no chown!\n"));
- done = 1;
- }
-#else
- return (chown (fname, uid, gid));
-#endif
-}
-#endif /* 0 */
-/**************************************************************************
-A wrapper for gethostbyname() that tries avoids looking up hostnames
-in the root domain, which can cause dial-on-demand links to come up for no
-apparent reason.
-****************************************************************************/
-struct hostent *
-sys_gethostbyname (const char *name)
-{
-#ifdef REDUCE_ROOT_DNS_LOOKUPS
- char query[256], hostname[256];
- char *domain;
-
- /* Does this name have any dots in it? If so, make no change */
-
- if (strchr (name, '.'))
- return (gethostbyname (name));
-
- /* Get my hostname, which should have domain name
- attached. If not, just do the gethostname on the
- original string.
- */
-
- gethostname (hostname, sizeof (hostname) - 1);
- hostname[sizeof (hostname) - 1] = 0;
- if ((domain = strchr (hostname, '.')) == NULL)
- return (gethostbyname (name));
-
- /* Attach domain name to query and do modified query.
- If names too large, just do gethostname on the
- original string.
- */
-
- if ((strlen (name) + strlen (domain)) >= sizeof (query))
- return (gethostbyname (name));
-
- slprintf (query, sizeof (query) - 1, "%s%s", name, domain);
- return (gethostbyname (query));
-#else /* REDUCE_ROOT_DNS_LOOKUPS */
- return (gethostbyname (name));
-#endif /* REDUCE_ROOT_DNS_LOOKUPS */
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/time.c
^
|
@@ -1,594 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- time handling functions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-/*
- This stuff was largely rewritten by Paul Eggert <eggert@twinsun.com>
- in May 1996
- */
-
-
-int serverzone = 0;
-int extra_time_offset = 0;
-
-extern int DEBUGLEVEL;
-
-#ifndef CHAR_BIT
-#define CHAR_BIT 8
-#endif
-
-#ifndef TIME_T_MIN
-#define TIME_T_MIN ((time_t)0 < (time_t) -1 ? (time_t) 0 \
- : ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1))
-#endif
-#ifndef TIME_T_MAX
-#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
-#endif
-
-
-
-/*******************************************************************
-a gettimeofday wrapper
-********************************************************************/
-void
-GetTimeOfDay (struct timeval *tval)
-{
-#ifdef HAVE_GETTIMEOFDAY_TZ
- gettimeofday (tval, NULL);
-#else
- gettimeofday (tval);
-#endif
-}
-
-#define TM_YEAR_BASE 1900
-
-/*******************************************************************
-yield the difference between *A and *B, in seconds, ignoring leap seconds
-********************************************************************/
-static int
-tm_diff (struct tm *a, struct tm *b)
-{
- int ay = a->tm_year + (TM_YEAR_BASE - 1);
- int by = b->tm_year + (TM_YEAR_BASE - 1);
- int intervening_leap_days = (ay / 4 - by / 4) - (ay / 100 - by / 100) + (ay / 400 - by / 400);
- int years = ay - by;
- int days = 365 * years + intervening_leap_days + (a->tm_yday - b->tm_yday);
- int hours = 24 * days + (a->tm_hour - b->tm_hour);
- int minutes = 60 * hours + (a->tm_min - b->tm_min);
- int seconds = 60 * minutes + (a->tm_sec - b->tm_sec);
-
- return seconds;
-}
-
-/*******************************************************************
- return the UTC offset in seconds west of UTC, or 0 if it cannot be determined
- ******************************************************************/
-static int
-TimeZone (time_t t)
-{
- struct tm *tm = gmtime (&t);
- struct tm tm_utc;
- if (!tm)
- return 0;
- tm_utc = *tm;
- tm = localtime (&t);
- if (!tm)
- return 0;
- return tm_diff (&tm_utc, tm);
-
-}
-
-
-/*******************************************************************
-init the time differences
-********************************************************************/
-void
-TimeInit (void)
-{
- serverzone = TimeZone (time (NULL));
-
- if ((serverzone % 60) != 0)
- {
- DEBUG (1, ("WARNING: Your timezone is not a multiple of 1 minute.\n"));
- }
-
- DEBUG (4, ("Serverzone is %d\n", serverzone));
-}
-
-
-/*******************************************************************
-return the same value as TimeZone, but it should be more efficient.
-
-We keep a table of DST offsets to prevent calling localtime() on each
-call of this function. This saves a LOT of time on many unixes.
-
-Updated by Paul Eggert <eggert@twinsun.com>
-********************************************************************/
-static int
-TimeZoneFaster (time_t t)
-{
- static struct dst_table
- {
- time_t start, end;
- int zone;
- } *dst_table = NULL;
- static int table_size = 0;
- int i;
- int zone = 0;
-
- if (t == 0)
- t = time (NULL);
-
- /* Tunis has a 8 day DST region, we need to be careful ... */
-#define MAX_DST_WIDTH (365*24*60*60)
-#define MAX_DST_SKIP (7*24*60*60)
-
- for (i = 0; i < table_size; i++)
- if (t >= dst_table[i].start && t <= dst_table[i].end)
- break;
-
- if (i < table_size)
- {
- zone = dst_table[i].zone;
- }
- else
- {
- time_t low, high;
-
- zone = TimeZone (t);
- dst_table = (struct dst_table *) Realloc (dst_table, sizeof (dst_table[0]) * (i + 1));
- if (!dst_table)
- {
- table_size = 0;
- }
- else
- {
- table_size++;
-
- dst_table[i].zone = zone;
- dst_table[i].start = dst_table[i].end = t;
-
- /* no entry will cover more than 6 months */
- low = t - MAX_DST_WIDTH / 2;
- if (t < low)
- low = TIME_T_MIN;
-
- high = t + MAX_DST_WIDTH / 2;
- if (high < t)
- high = TIME_T_MAX;
-
- /* widen the new entry using two bisection searches */
- while (low + 60 * 60 < dst_table[i].start)
- {
- if (dst_table[i].start - low > MAX_DST_SKIP * 2)
- t = dst_table[i].start - MAX_DST_SKIP;
- else
- t = low + (dst_table[i].start - low) / 2;
- if (TimeZone (t) == zone)
- dst_table[i].start = t;
- else
- low = t;
- }
-
- while (high - 60 * 60 > dst_table[i].end)
- {
- if (high - dst_table[i].end > MAX_DST_SKIP * 2)
- t = dst_table[i].end + MAX_DST_SKIP;
- else
- t = high - (high - dst_table[i].end) / 2;
- if (TimeZone (t) == zone)
- dst_table[i].end = t;
- else
- high = t;
- }
-#if 0
- DEBUG (1, ("Added DST entry from %s ", asctime (localtime (&dst_table[i].start))));
- DEBUG (1, ("to %s (%d)\n", asctime (localtime (&dst_table[i].end)), dst_table[i].zone));
-#endif
- }
- }
- return zone;
-}
-
-/****************************************************************************
- return the UTC offset in seconds west of UTC, adjusted for extra time offset
- **************************************************************************/
-int
-TimeDiff (time_t t)
-{
- return TimeZoneFaster (t) + 60 * extra_time_offset;
-}
-
-
-/****************************************************************************
- return the UTC offset in seconds west of UTC, adjusted for extra time
- offset, for a local time value. If ut = lt + LocTimeDiff(lt), then
- lt = ut - TimeDiff(ut), but the converse does not necessarily hold near
- daylight savings transitions because some local times are ambiguous.
- LocTimeDiff(t) equals TimeDiff(t) except near daylight savings transitions.
- +**************************************************************************/
-static int
-LocTimeDiff (time_t lte)
-{
- time_t lt = lte - 60 * extra_time_offset;
- int d = TimeZoneFaster (lt);
- time_t t = lt + d;
-
- /* if overflow occurred, ignore all the adjustments so far */
- if (((lte < lt) ^ (extra_time_offset < 0)) | ((t < lt) ^ (d < 0)))
- t = lte;
-
- /* now t should be close enough to the true UTC to yield the right answer */
- return TimeDiff (t);
-}
-
-
-/****************************************************************************
-try to optimise the localtime call, it can be quite expensive on some machines
-****************************************************************************/
-struct tm *
-LocalTime (time_t * t)
-{
- time_t t2 = *t;
-
- t2 -= TimeDiff (t2);
-
- return (gmtime (&t2));
-}
-
-#define TIME_FIXUP_CONSTANT (369.0*365.25*24*60*60-(3.0*24*60*60+6.0*60*60))
-
-/****************************************************************************
-interpret an 8 byte "filetime" structure to a time_t
-It's originally in "100ns units since jan 1st 1601"
-
-It appears to be kludge-GMT (at least for file listings). This means
-its the GMT you get by taking a localtime and adding the
-serverzone. This is NOT the same as GMT in some cases. This routine
-converts this to real GMT.
-****************************************************************************/
-time_t
-nt_time_to_unix (NTTIME * nt)
-{
- double d;
- time_t ret;
- /* The next two lines are a fix needed for the
- broken SCO compiler. JRA. */
- time_t l_time_min = TIME_T_MIN;
- time_t l_time_max = TIME_T_MAX;
-
- if (nt->high == 0)
- return (0);
-
- d = ((double) nt->high) * 4.0 * (double) (1 << 30);
- d += (nt->low & 0xFFF00000);
- d *= 1.0e-7;
-
- /* now adjust by 369 years to make the secs since 1970 */
- d -= TIME_FIXUP_CONSTANT;
-
- if (!(l_time_min <= d && d <= l_time_max))
- return (0);
-
- ret = (time_t) (d + 0.5);
-
- /* this takes us from kludge-GMT to real GMT */
- ret -= serverzone;
- ret += LocTimeDiff (ret);
-
- return (ret);
-}
-
-
-
-/****************************************************************************
-interprets an nt time into a unix time_t
-****************************************************************************/
-time_t
-interpret_long_date (char *p)
-{
- NTTIME nt;
- nt.low = IVAL (p, 0);
- nt.high = IVAL (p, 4);
- return nt_time_to_unix (&nt);
-}
-
-/****************************************************************************
-put a 8 byte filetime from a time_t
-This takes real GMT as input and converts to kludge-GMT
-****************************************************************************/
-void
-unix_to_nt_time (NTTIME * nt, time_t t)
-{
- double d;
-
- if (t == 0)
- {
- nt->low = 0;
- nt->high = 0;
- return;
- }
-
- /* this converts GMT to kludge-GMT */
- t -= LocTimeDiff (t) - serverzone;
-
- d = (double) (t);
- d += TIME_FIXUP_CONSTANT;
- d *= 1.0e7;
-
- nt->high = (uint32) (d * (1.0 / (4.0 * (double) (1 << 30))));
- nt->low = (uint32) (d - ((double) nt->high) * 4.0 * (double) (1 << 30));
-}
-
-
-/****************************************************************************
-take an NTTIME structure, containing high / low time. convert to unix time.
-lkclXXXX this may need 2 SIVALs not a memcpy. we'll see...
-****************************************************************************/
-void
-put_long_date (char *p, time_t t)
-{
- NTTIME nt;
- unix_to_nt_time (&nt, t);
- SIVAL (p, 0, nt.low);
- SIVAL (p, 4, nt.high);
-}
-
-/****************************************************************************
-check if it's a null mtime
-****************************************************************************/
-BOOL
-null_mtime (time_t mtime)
-{
- if (mtime == (time_t) 0 || mtime == (time_t) 0xFFFFFFFF || mtime == (time_t) - 1)
- return (True);
- return (False);
-}
-
-/*******************************************************************
- create a 16 bit dos packed date
-********************************************************************/
-static uint16
-make_dos_date1 (struct tm *t)
-{
- uint16 ret = 0;
- ret = (((unsigned) (t->tm_mon + 1)) >> 3) | ((t->tm_year - 80) << 1);
- ret = ((ret & 0xFF) << 8) | (t->tm_mday | (((t->tm_mon + 1) & 0x7) << 5));
- return (ret);
-}
-
-/*******************************************************************
- create a 16 bit dos packed time
-********************************************************************/
-static uint16
-make_dos_time1 (struct tm *t)
-{
- uint16 ret = 0;
- ret = ((((unsigned) t->tm_min >> 3) & 0x7) | (((unsigned) t->tm_hour) << 3));
- ret = ((ret & 0xFF) << 8) | ((t->tm_sec / 2) | ((t->tm_min & 0x7) << 5));
- return (ret);
-}
-
-/*******************************************************************
- create a 32 bit dos packed date/time from some parameters
- This takes a GMT time and returns a packed localtime structure
-********************************************************************/
-static uint32
-make_dos_date (time_t unixdate)
-{
- struct tm *t;
- uint32 ret = 0;
-
- t = LocalTime (&unixdate);
- if (!t)
- return 0xFFFFFFFF;
-
- ret = make_dos_date1 (t);
- ret = ((ret & 0xFFFF) << 16) | make_dos_time1 (t);
-
- return (ret);
-}
-
-/*******************************************************************
-put a dos date into a buffer (time/date format)
-This takes GMT time and puts local time in the buffer
-********************************************************************/
-void
-put_dos_date (char *buf, int offset, time_t unixdate)
-{
- uint32 x = make_dos_date (unixdate);
- SIVAL (buf, offset, x);
-}
-
-#if 0
-/*******************************************************************
-put a dos date into a buffer (date/time format)
-This takes GMT time and puts local time in the buffer
-********************************************************************/
-void
-put_dos_date2 (char *buf, int offset, time_t unixdate)
-{
- uint32 x = make_dos_date (unixdate);
- x = ((x & 0xFFFF) << 16) | ((x & 0xFFFF0000) >> 16);
- SIVAL (buf, offset, x);
-}
-#endif /* 0 */
-
-/*******************************************************************
-put a dos 32 bit "unix like" date into a buffer. This routine takes
-GMT and converts it to LOCAL time before putting it (most SMBs assume
-localtime for this sort of date)
-********************************************************************/
-void
-put_dos_date3 (char *buf, int offset, time_t unixdate)
-{
- if (!null_mtime (unixdate))
- unixdate -= TimeDiff (unixdate);
- SIVAL (buf, offset, unixdate);
-}
-
-/*******************************************************************
- interpret a 32 bit dos packed date/time to some parameters
-********************************************************************/
-static void
-interpret_dos_date (uint32 date, int *year, int *month, int *day, int *hour, int *minute,
- int *second)
-{
- uint32 p0, p1, p2, p3;
-
- p0 = date & 0xFF;
- p1 = ((date & 0xFF00) >> 8) & 0xFF;
- p2 = ((date & 0xFF0000) >> 16) & 0xFF;
- p3 = ((date & 0xFF000000) >> 24) & 0xFF;
-
- *second = 2 * (p0 & 0x1F);
- *minute = ((p0 >> 5) & 0xFF) + ((p1 & 0x7) << 3);
- *hour = (p1 >> 3) & 0xFF;
- *day = (p2 & 0x1F);
- *month = ((p2 >> 5) & 0xFF) + ((p3 & 0x1) << 3) - 1;
- *year = ((p3 >> 1) & 0xFF) + 80;
-}
-
-/*******************************************************************
- create a unix date (int GMT) from a dos date (which is actually in
- localtime)
-********************************************************************/
-time_t
-make_unix_date (void *date_ptr)
-{
- uint32 dos_date = 0;
- struct tm t;
- time_t ret;
-
- dos_date = IVAL (date_ptr, 0);
-
- if (dos_date == 0)
- return (0);
-
- interpret_dos_date (dos_date, &t.tm_year, &t.tm_mon,
- &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec);
- t.tm_isdst = -1;
-
- /* mktime() also does the local to GMT time conversion for us */
- ret = mktime (&t);
-
- return (ret);
-}
-
-/*******************************************************************
-like make_unix_date() but the words are reversed
-********************************************************************/
-time_t
-make_unix_date2 (void *date_ptr)
-{
- uint32 x, x2;
-
- x = IVAL (date_ptr, 0);
- x2 = ((x & 0xFFFF) << 16) | ((x & 0xFFFF0000) >> 16);
- SIVAL (&x, 0, x2);
-
- return (make_unix_date ((void *) &x));
-}
-
-/*******************************************************************
- create a unix GMT date from a dos date in 32 bit "unix like" format
- these generally arrive as localtimes, with corresponding DST
- ******************************************************************/
-time_t
-make_unix_date3 (void *date_ptr)
-{
- time_t t = (time_t) IVAL (date_ptr, 0);
- if (!null_mtime (t))
- t += LocTimeDiff (t);
- return (t);
-}
-
-#if 0
-/***************************************************************************
-return a HTTP/1.0 time string
- ***************************************************************************/
-char *
-http_timestring (time_t t)
-{
- static fstring buf;
- struct tm *tm = LocalTime (&t);
-
- if (!tm)
- slprintf (buf, sizeof (buf) - 1, "%ld seconds since the Epoch", (long) t);
- else
- strftime (buf, sizeof (buf) - 1, "%a, %d %b %Y %H:%M:%S %Z", tm);
- return buf;
-}
-#endif /*0 */
-
-
-/****************************************************************************
- return the date and time as a string
-****************************************************************************/
-char *
-timestring (void)
-{
- static fstring TimeBuf;
- time_t t = time (NULL);
- struct tm *tm = LocalTime (&t);
-
- if (!tm)
- {
- slprintf (TimeBuf, sizeof (TimeBuf) - 1, "%ld seconds since the Epoch", (long) t);
- }
- else
- {
- strftime (TimeBuf, 100, "%Y/%m/%d %H:%M:%S", tm);
- }
- return (TimeBuf);
-}
-
-/****************************************************************************
- return the best approximation to a 'create time' under UNIX from a stat
- structure.
-****************************************************************************/
-
-time_t
-get_create_time (SMB_STRUCT_STAT * st, BOOL fake_dirs)
-{
- time_t ret, ret1;
-
- if (S_ISDIR (st->st_mode) && fake_dirs)
- return (time_t) 315493200L; /* 1/1/1980 */
-
- ret = MIN (st->st_ctime, st->st_mtime);
- ret1 = MIN (ret, st->st_atime);
-
- if (ret1 != (time_t) 0)
- return ret1;
-
- /*
- * One of ctime, mtime or atime was zero (probably atime).
- * Just return MIN(ctime, mtime).
- */
- return ret;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/username.c
^
|
@@ -1,450 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Username handling
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-/* internal functions */
-static struct passwd *uname_string_combinations (char *s, struct passwd *(*fn) (const char *),
- int N);
-static struct passwd *uname_string_combinations2 (char *s, int offset,
- struct passwd *(*fn) (const char *), int N);
-
-/****************************************************************************
-get a users home directory.
-****************************************************************************/
-const char *
-get_home_dir (char *user)
-{
- struct passwd *pass;
-
- pass = Get_Pwnam (user);
-
- if (!pass)
- return (NULL);
- return (pass->pw_dir);
-}
-
-
-#if 0 /* Fix possible buffer overflow in sscanf(unixname,"%s",user) if uncomment */
-/*******************************************************************
-map a username from a dos name to a unix name by looking in the username
-map. Note that this modifies the name in place.
-This is the main function that should be called *once* on
-any incoming or new username - in order to canonicalize the name.
-This is being done to de-couple the case conversions from the user mapping
-function. Previously, the map_username was being called
-every time Get_Pwnam was called.
-Returns True if username was changed, false otherwise.
-********************************************************************/
-BOOL
-map_username (const char *user)
-{
- static BOOL initialised = False;
- static fstring last_from, last_to;
- FILE *f;
- char *mapfile = lp_username_map ();
- char *s;
- pstring buf;
- BOOL mapped_user = False;
-
- if (!*user)
- return False;
-
- if (!*mapfile)
- return False;
-
- if (!initialised)
- {
- *last_from = *last_to = 0;
- initialised = True;
- }
-
- if (strequal (user, last_to))
- return False;
-
- if (strequal (user, last_from))
- {
- DEBUG (3, ("Mapped user %s to %s\n", user, last_to));
- fstrcpy (user, last_to);
- return True;
- }
-
- f = sys_fopen (mapfile, "r");
- if (!f)
- {
- DEBUG (0, ("can't open username map %s\n", mapfile));
- return False;
- }
-
- DEBUG (4, ("Scanning username map %s\n", mapfile));
-
- while ((s = fgets_slash (buf, sizeof (buf), f)) != NULL)
- {
- char *unixname = s;
- char *dosname = strchr (unixname, '=');
- BOOL return_if_mapped = False;
-
- if (!dosname)
- continue;
-
- *dosname++ = 0;
-
- while (isspace (*unixname))
- unixname++;
- if ('!' == *unixname)
- {
- return_if_mapped = True;
- unixname++;
- while (*unixname && isspace (*unixname))
- unixname++;
- }
-
- if (!*unixname || strchr ("#;", *unixname))
- continue;
-
- {
- int l = strlen (unixname);
- while (l && isspace (unixname[l - 1]))
- {
- unixname[l - 1] = 0;
- l--;
- }
- }
-
- if (strchr (dosname, '*') || user_in_list (user, dosname))
- {
- DEBUG (3, ("Mapped user %s to %s\n", user, unixname));
- mapped_user = True;
- fstrcpy (last_from, user);
- sscanf (unixname, "%s", user);
- fstrcpy (last_to, user);
- if (return_if_mapped)
- {
- fclose (f);
- return True;
- }
- }
- }
-
- fclose (f);
-
- /*
- * Setup the last_from and last_to as an optimization so
- * that we don't scan the file again for the same user.
- */
- fstrcpy (last_from, user);
- fstrcpy (last_to, user);
-
- return mapped_user;
-}
-#endif /* 0 */
-
-/****************************************************************************
-Get_Pwnam wrapper
-****************************************************************************/
-static struct passwd *
-_Get_Pwnam (const char *s)
-{
- struct passwd *ret;
-
- ret = getpwnam (s);
- if (ret)
- {
-#ifdef HAVE_GETPWANAM
- struct passwd_adjunct *pwret;
- pwret = getpwanam (s);
- if (pwret)
- {
- free (ret->pw_passwd);
- ret->pw_passwd = pwret->pwa_passwd;
- }
-#endif
-
- }
-
- return (ret);
-}
-
-
-/****************************************************************************
-a wrapper for getpwnam() that tries with all lower and all upper case
-if the initial name fails. Also tried with first letter capitalised
-****************************************************************************/
-struct passwd *
-Get_Pwnam (const char *a_user)
-{
- fstring user;
- int last_char;
- int usernamelevel = lp_usernamelevel ();
-
- struct passwd *ret;
-
- if (!a_user || !(*a_user))
- return (NULL);
-
- StrnCpy (user, a_user, sizeof (user) - 1);
-
- ret = _Get_Pwnam (user);
- if (ret)
- return (ret);
-
- strlower (user);
- ret = _Get_Pwnam (user);
- if (ret)
- return (ret);
-
- strupper (user);
- ret = _Get_Pwnam (user);
- if (ret)
- return (ret);
-
- /* try with first letter capitalised */
- if (strlen (user) > 1)
- strlower (user + 1);
- ret = _Get_Pwnam (user);
- if (ret)
- return (ret);
-
- /* try with last letter capitalised */
- strlower (user);
- last_char = strlen (user) - 1;
- user[last_char] = toupper (user[last_char]);
- ret = _Get_Pwnam (user);
- if (ret)
- return (ret);
-
- /* try all combinations up to usernamelevel */
- strlower (user);
- ret = uname_string_combinations (user, _Get_Pwnam, usernamelevel);
- if (ret)
- return (ret);
-
- return (NULL);
-}
-
-#if 0
-/****************************************************************************
-check if a user is in a netgroup user list
-****************************************************************************/
-static BOOL
-user_in_netgroup_list (char *user, char *ngname)
-{
-#ifdef HAVE_NETGROUP
- static char *mydomain = NULL;
- if (mydomain == NULL)
- yp_get_default_domain (&mydomain);
-
- if (mydomain == NULL)
- {
- DEBUG (5, ("Unable to get default yp domain\n"));
- }
- else
- {
- DEBUG (5, ("looking for user %s of domain %s in netgroup %s\n", user, mydomain, ngname));
- DEBUG (5, ("innetgr is %s\n", innetgr (ngname, NULL, user, mydomain) ? "TRUE" : "FALSE"));
-
- if (innetgr (ngname, NULL, user, mydomain))
- return (True);
- }
-#endif /* HAVE_NETGROUP */
- return False;
-}
-
-/****************************************************************************
-check if a user is in a UNIX user list
-****************************************************************************/
-static BOOL
-user_in_group_list (char *user, char *gname)
-{
-#ifdef HAVE_GETGRNAM
- struct group *gptr;
- char **member;
- struct passwd *pass = Get_Pwnam (user, False);
-
- if (pass)
- {
- gptr = getgrgid (pass->pw_gid);
- if (gptr && strequal (gptr->gr_name, gname))
- return (True);
- }
-
- gptr = (struct group *) getgrnam (gname);
-
- if (gptr)
- {
- member = gptr->gr_mem;
- while (member && *member)
- {
- if (strequal (*member, user))
- return (True);
- member++;
- }
- }
-#endif /* HAVE_GETGRNAM */
- return False;
-}
-
-/****************************************************************************
-check if a user is in a user list - can check combinations of UNIX
-and netgroup lists.
-****************************************************************************/
-BOOL
-user_in_list (char *user, char *list)
-{
- pstring tok;
- char *p = list;
-
- while (next_token (&p, tok, LIST_SEP, sizeof (tok)))
- {
- /*
- * Check raw username.
- */
- if (strequal (user, tok))
- return (True);
-
- /*
- * Now check to see if any combination
- * of UNIX and netgroups has been specified.
- */
-
- if (*tok == '@')
- {
- /*
- * Old behaviour. Check netgroup list
- * followed by UNIX list.
- */
- if (user_in_netgroup_list (user, &tok[1]))
- return True;
- if (user_in_group_list (user, &tok[1]))
- return True;
- }
- else if (*tok == '+')
- {
- if (tok[1] == '&')
- {
- /*
- * Search UNIX list followed by netgroup.
- */
- if (user_in_group_list (user, &tok[2]))
- return True;
- if (user_in_netgroup_list (user, &tok[2]))
- return True;
- }
- else
- {
- /*
- * Just search UNIX list.
- */
- if (user_in_group_list (user, &tok[1]))
- return True;
- }
- }
- else if (*tok == '&')
- {
- if (tok[1] == '&')
- {
- /*
- * Search netgroup list followed by UNIX list.
- */
- if (user_in_netgroup_list (user, &tok[2]))
- return True;
- if (user_in_group_list (user, &tok[2]))
- return True;
- }
- else
- {
- /*
- * Just search netgroup list.
- */
- if (user_in_netgroup_list (user, &tok[1]))
- return True;
- }
- }
- }
- return (False);
-}
-#endif /* 0 */
-
-/* The functions below have been taken from password.c and slightly modified */
-/****************************************************************************
-apply a function to upper/lower case combinations
-of a string and return true if one of them returns true.
-try all combinations with N uppercase letters.
-offset is the first char to try and change (start with 0)
-it assumes the string starts lowercased
-****************************************************************************/
-static struct passwd *
-uname_string_combinations2 (char *s, int offset, struct passwd *(*fn) (const char *), int N)
-{
- int len = strlen (s);
- int i;
- struct passwd *ret;
-
-#ifdef PASSWORD_LENGTH
- len = MIN (len, PASSWORD_LENGTH);
-#endif
-
- if (N <= 0 || offset >= len)
- return (fn (s));
-
-
- for (i = offset; i < (len - (N - 1)); i++)
-
- {
- char c = s[i];
- if (!islower (c))
- continue;
- s[i] = toupper (c);
- ret = uname_string_combinations2 (s, i + 1, fn, N - 1);
- if (ret)
- return (ret);
- s[i] = c;
- }
- return (NULL);
-}
-
-/****************************************************************************
-apply a function to upper/lower case combinations
-of a string and return true if one of them returns true.
-try all combinations with up to N uppercase letters.
-offset is the first char to try and change (start with 0)
-it assumes the string starts lowercased
-****************************************************************************/
-static struct passwd *
-uname_string_combinations (char *s, struct passwd *(*fn) (const char *), int N)
-{
- int n;
- struct passwd *ret;
-
- for (n = 1; n <= N; n++)
- {
- ret = uname_string_combinations2 (s, 0, fn, n);
- if (ret)
- return (ret);
- }
- return (NULL);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/util.c
^
|
@@ -1,2998 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Samba utility functions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
-#ifdef WITH_NISPLUS_HOME
-#ifdef BROKEN_NISPLUS_INCLUDE_FILES
-/*
- * The following lines are needed due to buggy include files
- * in Solaris 2.6 which define GROUP in both /usr/include/sys/acl.h and
- * also in /usr/include/rpcsvc/nis.h. The definitions conflict. JRA.
- * Also GROUP_OBJ is defined as 0x4 in /usr/include/sys/acl.h and as
- * an enum in /usr/include/rpcsvc/nis.h.
- */
-
-#if defined(GROUP)
-#undef GROUP
-#endif
-
-#if defined(GROUP_OBJ)
-#undef GROUP_OBJ
-#endif
-
-#endif /* BROKEN_NISPLUS_INCLUDE_FILES */
-
-#include <rpcsvc/nis.h>
-
-#else /* !WITH_NISPLUS_HOME */
-
-#include "rpcsvc/ypclnt.h"
-
-#endif /* WITH_NISPLUS_HOME */
-#endif /* HAVE_NETGROUP && WITH_AUTOMOUNT */
-
-#ifdef WITH_SSL
-#include <ssl.h>
-#undef Realloc /* SSLeay defines this and samba has a function of this name */
-#endif /* WITH_SSL */
-
-extern int DEBUGLEVEL;
-#if 0
-int Protocol = PROTOCOL_COREPLUS;
-#endif /*0 */
-
-/* a default finfo structure to ensure all fields are sensible */
-file_info const def_finfo = { -1, 0, 0, 0, 0, 0, 0, "" };
-
-/* the client file descriptor */
-extern int Client;
-
-/* this is used by the chaining code */
-const int chain_size = 0;
-
-/*
- case handling on filenames
- */
-const int case_default = CASE_LOWER;
-
-#if 0
-/* the following control case operations - they are put here so the
- client can link easily */
-BOOL case_sensitive;
-BOOL case_preserve;
-BOOL use_mangled_map = False;
-BOOL short_case_preserve;
-BOOL case_mangle;
-#endif /*0 */
-
-static const char *remote_machine = "";
-static const char *local_machine = "";
-static const char *remote_arch = "UNKNOWN";
-#if 0
-static enum remote_arch_types ra_type = RA_UNKNOWN;
-#endif
-static const char *remote_proto = "UNKNOWN";
-pstring myhostname = "";
-pstring user_socket_options = "";
-
-static const char sesssetup_user[] = "";
-static const char *const samlogon_user = "";
-
-const BOOL sam_logon_in_ssb = False;
-
-pstring global_myname = "";
-#if 0
-char **my_netbios_names;
-#endif /*0 */
-
-
-/****************************************************************************
- find a suitable temporary directory. The result should be copied immediately
- as it may be overwritten by a subsequent call
- ****************************************************************************/
-const char *
-tmpdir (void)
-{
- char *p;
- if ((p = getenv ("MC_TMPDIR")) || (p = getenv ("TMPDIR")))
- {
- return p;
- }
- return "/tmp";
-}
-
-/****************************************************************************
-determine whether we are in the specified group
-****************************************************************************/
-#if 0
-BOOL
-in_group (gid_t group, gid_t current_gid, int ngroups, gid_t * groups)
-{
- int i;
-
- if (group == current_gid)
- return (True);
-
- for (i = 0; i < ngroups; i++)
- if (group == groups[i])
- return (True);
-
- return (False);
-}
-
-
-/****************************************************************************
-like atoi but gets the value up to the separater character
-****************************************************************************/
-char *
-Atoic (char *p, int *n, char *c)
-{
- if (!isdigit ((int) *p))
- {
- DEBUG (5, ("Atoic: malformed number\n"));
- return NULL;
- }
-
- (*n) = atoi (p);
-
- while ((*p) && isdigit ((int) *p))
- {
- p++;
- }
-
- if (strchr (c, *p) == NULL)
- {
- DEBUG (5, ("Atoic: no separator characters (%s) not found\n", c));
- return NULL;
- }
-
- return p;
-}
-
-/*************************************************************************
- reads a list of numbers
- *************************************************************************/
-char *
-get_numlist (char *p, uint32 ** num, int *count)
-{
- int val;
-
- if (num == NULL || count == NULL)
- {
- return NULL;
- }
-
- (*count) = 0;
- (*num) = NULL;
-
- while ((p = Atoic (p, &val, ":,")) != NULL && (*p) != ':')
- {
- (*num) = Realloc ((*num), ((*count) + 1) * sizeof (uint32));
- if ((*num) == NULL)
- {
- return NULL;
- }
- (*num)[(*count)] = val;
- (*count)++;
- p++;
- }
-
- return p;
-}
-#endif /* 0 */
-/*******************************************************************
-copy an IP address from one buffer to another
-********************************************************************/
-void
-putip (void *dest, void *src)
-{
- memcpy (dest, src, 4);
-}
-
-
-#define TRUNCATE_NETBIOS_NAME 1
-#if 0
-/*******************************************************************
- convert, possibly using a stupid microsoft-ism which has destroyed
- the transport independence of netbios (for CIFS vendors that usually
- use the Win95-type methods, not for NT to NT communication, which uses
- DCE/RPC and therefore full-length unicode strings...) a dns name into
- a netbios name.
-
- the netbios name (NOT necessarily null-terminated) is truncated to 15
- characters.
-
- ******************************************************************/
-char *
-dns_to_netbios_name (char *dns_name)
-{
- static char netbios_name[16];
- int i;
- StrnCpy (netbios_name, dns_name, 15);
- netbios_name[15] = 0;
-
-#ifdef TRUNCATE_NETBIOS_NAME
- /* ok. this is because of a stupid microsoft-ism. if the called host
- name contains a '.', microsoft clients expect you to truncate the
- netbios name up to and including the '.' this even applies, by
- mistake, to workgroup (domain) names, which is _really_ daft.
- */
- for (i = 15; i >= 0; i--)
- {
- if (netbios_name[i] == '.')
- {
- netbios_name[i] = 0;
- break;
- }
- }
-#endif /* TRUNCATE_NETBIOS_NAME */
-
- return netbios_name;
-}
-
-
-/****************************************************************************
-interpret the weird netbios "name". Return the name type
-****************************************************************************/
-static int
-name_interpret (char *in, char *out)
-{
- int ret;
- int len = (*in++) / 2;
-
- *out = 0;
-
- if (len > 30 || len < 1)
- return (0);
-
- while (len--)
- {
- if (in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P')
- {
- *out = 0;
- return (0);
- }
- *out = ((in[0] - 'A') << 4) + (in[1] - 'A');
- in += 2;
- out++;
- }
- *out = 0;
- ret = out[-1];
-
-#ifdef NETBIOS_SCOPE
- /* Handle any scope names */
- while (*in)
- {
- *out++ = '.'; /* Scope names are separated by periods */
- len = *(unsigned char *) in++;
- StrnCpy (out, in, len);
- out += len;
- *out = 0;
- in += len;
- }
-#endif
- return (ret);
-}
-#endif /* 0 */
-
-/****************************************************************************
-mangle a name into netbios format
-
- Note: <Out> must be (33 + strlen(scope) + 2) bytes long, at minimum.
-****************************************************************************/
-int
-name_mangle (char *In, char *Out, char name_type)
-{
- int i;
- int c;
- int len;
- char buf[20];
- char *p = Out;
- extern pstring global_scope;
-
- /* Safely copy the input string, In, into buf[]. */
- (void) memset (buf, 0, 20);
- if (strcmp (In, "*") == 0)
- buf[0] = '*';
- else
- (void) slprintf (buf, sizeof (buf) - 1, "%-15.15s%c", In, name_type);
-
- /* Place the length of the first field into the output buffer. */
- p[0] = 32;
- p++;
-
- /* Now convert the name to the rfc1001/1002 format. */
- for (i = 0; i < 16; i++)
- {
- c = toupper (buf[i]);
- p[i * 2] = ((c >> 4) & 0x000F) + 'A';
- p[(i * 2) + 1] = (c & 0x000F) + 'A';
- }
- p += 32;
- p[0] = '\0';
-
- /* Add the scope string. */
- for (i = 0, len = 0;; i++, len++)
- {
- switch (global_scope[i])
- {
- case '\0':
- p[0] = len;
- if (len > 0)
- p[len + 1] = 0;
- return (name_len (Out));
- case '.':
- p[0] = len;
- p += (len + 1);
- len = -1;
- break;
- default:
- p[len + 1] = global_scope[i];
- break;
- }
- }
-
- return (name_len (Out));
-} /* name_mangle */
-
-/*******************************************************************
- check if a file exists
-********************************************************************/
-BOOL
-file_exist (char *fname, SMB_STRUCT_STAT * sbuf)
-{
- SMB_STRUCT_STAT st;
- if (!sbuf)
- sbuf = &st;
-
- if (sys_stat (fname, sbuf) != 0)
- return (False);
-
- return (S_ISREG (sbuf->st_mode));
-}
-
-/*******************************************************************
-check a files mod time
-********************************************************************/
-time_t
-file_modtime (char *fname)
-{
- SMB_STRUCT_STAT st;
-
- if (sys_stat (fname, &st) != 0)
- return (0);
-
- return (st.st_mtime);
-}
-
-#if 0
-/*******************************************************************
- check if a directory exists
-********************************************************************/
-BOOL
-directory_exist (char *dname, SMB_STRUCT_STAT * st)
-{
- SMB_STRUCT_STAT st2;
- BOOL ret;
-
- if (!st)
- st = &st2;
-
- if (sys_stat (dname, st) != 0)
- return (False);
-
- ret = S_ISDIR (st->st_mode);
- if (!ret)
- errno = ENOTDIR;
- return ret;
-}
-
-/*******************************************************************
-returns the size in bytes of the named file
-********************************************************************/
-SMB_OFF_T
-file_size (char *file_name)
-{
- SMB_STRUCT_STAT buf;
- buf.st_size = 0;
- if (sys_stat (file_name, &buf) != 0)
- return (SMB_OFF_T) - 1;
- return (buf.st_size);
-}
-#endif /* 0 */
-
-/*******************************************************************
-return a string representing an attribute for a file
-********************************************************************/
-char *
-attrib_string (uint16 mode)
-{
- static char attrstr[7];
- int i = 0;
-
- attrstr[0] = 0;
-
- if (mode & aVOLID)
- attrstr[i++] = 'V';
- if (mode & aDIR)
- attrstr[i++] = 'D';
- if (mode & aARCH)
- attrstr[i++] = 'A';
- if (mode & aHIDDEN)
- attrstr[i++] = 'H';
- if (mode & aSYSTEM)
- attrstr[i++] = 'S';
- if (mode & aRONLY)
- attrstr[i++] = 'R';
-
- attrstr[i] = 0;
-
- return (attrstr);
-}
-
-#if 0
-/****************************************************************************
- make a file into unix format
-****************************************************************************/
-void
-unix_format (char *fname)
-{
- string_replace (fname, '\\', '/');
-}
-
-/****************************************************************************
- make a file into dos format
-****************************************************************************/
-void
-dos_format (char *fname)
-{
- string_replace (fname, '/', '\\');
-}
-#endif /* 0 */
-/*******************************************************************
- show a smb message structure
-********************************************************************/
-void
-show_msg (char *buf)
-{
- int i;
- int bcc = 0;
-
- if (DEBUGLEVEL < 5)
- return;
-
- DEBUG (5,
- ("size=%d\nsmb_com=0x%x\nsmb_rcls=%d\nsmb_reh=%d\nsmb_err=%d\nsmb_flg=%d\nsmb_flg2=%d\n",
- smb_len (buf), (int) CVAL (buf, smb_com), (int) CVAL (buf, smb_rcls), (int) CVAL (buf,
- smb_reh),
- (int) SVAL (buf, smb_err), (int) CVAL (buf, smb_flg), (int) SVAL (buf, smb_flg2)));
- DEBUG (5,
- ("smb_tid=%d\nsmb_pid=%d\nsmb_uid=%d\nsmb_mid=%d\nsmt_wct=%d\n",
- (int) SVAL (buf, smb_tid), (int) SVAL (buf, smb_pid), (int) SVAL (buf, smb_uid),
- (int) SVAL (buf, smb_mid), (int) CVAL (buf, smb_wct)));
-
- for (i = 0; i < (int) CVAL (buf, smb_wct); i++)
- {
- DEBUG (5, ("smb_vwv[%d]=%d (0x%X)\n", i,
- SVAL (buf, smb_vwv + 2 * i), SVAL (buf, smb_vwv + 2 * i)));
- }
-
- bcc = (int) SVAL (buf, smb_vwv + 2 * (CVAL (buf, smb_wct)));
-
- DEBUG (5, ("smb_bcc=%d\n", bcc));
-
- if (DEBUGLEVEL < 10)
- return;
-
- if (DEBUGLEVEL < 50)
- {
- bcc = MIN (bcc, 512);
- }
-
- dump_data (10, smb_buf (buf), bcc);
-}
-
-/*******************************************************************
- return the length of an smb packet
-********************************************************************/
-int
-smb_len (char *buf)
-{
- return (PVAL (buf, 3) | (PVAL (buf, 2) << 8) | ((PVAL (buf, 1) & 1) << 16));
-}
-
-/*******************************************************************
- set the length of an smb packet
-********************************************************************/
-void
-_smb_setlen (char *buf, int len)
-{
- buf[0] = 0;
- buf[1] = (len & 0x10000) >> 16;
- buf[2] = (len & 0xFF00) >> 8;
- buf[3] = len & 0xFF;
-}
-
-/*******************************************************************
- set the length and marker of an smb packet
-********************************************************************/
-void
-smb_setlen (char *buf, int len)
-{
- _smb_setlen (buf, len);
-
- CVAL (buf, 4) = 0xFF;
- CVAL (buf, 5) = 'S';
- CVAL (buf, 6) = 'M';
- CVAL (buf, 7) = 'B';
-}
-
-/*******************************************************************
- setup the word count and byte count for a smb message
-********************************************************************/
-int
-set_message (char *buf, int num_words, int num_bytes, BOOL zero)
-{
- if (zero)
- memset (buf + smb_size, '\0', num_words * 2 + num_bytes);
- CVAL (buf, smb_wct) = num_words;
- SSVAL (buf, smb_vwv + num_words * SIZEOFWORD, num_bytes);
- smb_setlen (buf, smb_size + num_words * 2 + num_bytes - 4);
- return (smb_size + num_words * 2 + num_bytes);
-}
-
-/*******************************************************************
-return the number of smb words
-********************************************************************/
-static int
-smb_numwords (char *buf)
-{
- return (CVAL (buf, smb_wct));
-}
-
-/*******************************************************************
-return the size of the smb_buf region of a message
-********************************************************************/
-int
-smb_buflen (char *buf)
-{
- return (SVAL (buf, smb_vwv0 + smb_numwords (buf) * 2));
-}
-
-/*******************************************************************
- return a pointer to the smb_buf data area
-********************************************************************/
-static int
-smb_buf_ofs (char *buf)
-{
- return (smb_size + CVAL (buf, smb_wct) * 2);
-}
-
-/*******************************************************************
- return a pointer to the smb_buf data area
-********************************************************************/
-char *
-smb_buf (char *buf)
-{
- return (buf + smb_buf_ofs (buf));
-}
-
-/*******************************************************************
-return the SMB offset into an SMB buffer
-********************************************************************/
-int
-smb_offset (char *p, char *buf)
-{
- return (PTR_DIFF (p, buf + 4) + chain_size);
-}
-
-#if 0
-/*******************************************************************
-reduce a file name, removing .. elements.
-********************************************************************/
-void
-dos_clean_name (char *s)
-{
- char *p = NULL;
-
- DEBUG (3, ("dos_clean_name [%s]\n", s));
-
- /* remove any double slashes */
- string_sub (s, "\\\\", "\\");
-
- while ((p = strstr (s, "\\..\\")) != NULL)
- {
- pstring s1;
-
- *p = 0;
- pstrcpy (s1, p + 3);
-
- if ((p = strrchr (s, '\\')) != NULL)
- *p = 0;
- else
- *s = 0;
- pstrcat (s, s1);
- }
-
- trim_string (s, NULL, "\\..");
-
- string_sub (s, "\\.\\", "\\");
-}
-
-/*******************************************************************
-reduce a file name, removing .. elements.
-********************************************************************/
-void
-unix_clean_name (char *s)
-{
- char *p = NULL;
-
- DEBUG (3, ("unix_clean_name [%s]\n", s));
-
- /* remove any double slashes */
- string_sub (s, "//", "/");
-
- /* Remove leading ./ characters */
- if (strncmp (s, "./", 2) == 0)
- {
- trim_string (s, "./", NULL);
- if (*s == 0)
- pstrcpy (s, "./");
- }
-
- while ((p = strstr (s, "/../")) != NULL)
- {
- pstring s1;
-
- *p = 0;
- pstrcpy (s1, p + 3);
-
- if ((p = strrchr (s, '/')) != NULL)
- *p = 0;
- else
- *s = 0;
- pstrcat (s, s1);
- }
-
- trim_string (s, NULL, "/..");
-}
-
-/*******************************************************************
-reduce a file name, removing .. elements and checking that
-it is below dir in the heirachy. This uses dos_GetWd() and so must be run
-on the system that has the referenced file system.
-
-widelinks are allowed if widelinks is true
-********************************************************************/
-BOOL
-reduce_name (char *s, char *dir, BOOL widelinks)
-{
-#ifndef REDUCE_PATHS
- return True;
-#else
- pstring dir2;
- pstring wd;
- pstring base_name;
- pstring newname;
- char *p = NULL;
- BOOL relative = (*s != '/');
-
- *dir2 = *wd = *base_name = *newname = 0;
-
- if (widelinks)
- {
- unix_clean_name (s);
- /* can't have a leading .. */
- if (strncmp (s, "..", 2) == 0 && (s[2] == 0 || s[2] == '/'))
- {
- DEBUG (3, ("Illegal file name? (%s)\n", s));
- return (False);
- }
-
- if (strlen (s) == 0)
- pstrcpy (s, "./");
-
- return (True);
- }
-
- DEBUG (3, ("reduce_name [%s] [%s]\n", s, dir));
-
- /* remove any double slashes */
- string_sub (s, "//", "/");
-
- pstrcpy (base_name, s);
- p = strrchr (base_name, '/');
-
- if (!p)
- return (True);
-
- if (!dos_GetWd (wd))
- {
- DEBUG (0, ("couldn't getwd for %s %s\n", s, dir));
- return (False);
- }
-
- if (dos_ChDir (dir) != 0)
- {
- DEBUG (0, ("couldn't chdir to %s\n", dir));
- return (False);
- }
-
- if (!dos_GetWd (dir2))
- {
- DEBUG (0, ("couldn't getwd for %s\n", dir));
- dos_ChDir (wd);
- return (False);
- }
-
- if (p && (p != base_name))
- {
- *p = 0;
- if (strcmp (p + 1, ".") == 0)
- p[1] = 0;
- if (strcmp (p + 1, "..") == 0)
- *p = '/';
- }
-
- if (dos_ChDir (base_name) != 0)
- {
- dos_ChDir (wd);
- DEBUG (3, ("couldn't chdir for %s %s basename=%s\n", s, dir, base_name));
- return (False);
- }
-
- if (!dos_GetWd (newname))
- {
- dos_ChDir (wd);
- DEBUG (2, ("couldn't get wd for %s %s\n", s, dir2));
- return (False);
- }
-
- if (p && (p != base_name))
- {
- pstrcat (newname, "/");
- pstrcat (newname, p + 1);
- }
-
- {
- size_t l = strlen (dir2);
- if (dir2[l - 1] == '/')
- l--;
-
- if (strncmp (newname, dir2, l) != 0)
- {
- dos_ChDir (wd);
- DEBUG (2,
- ("Bad access attempt? s=%s dir=%s newname=%s l=%d\n", s, dir2, newname,
- (int) l));
- return (False);
- }
-
- if (relative)
- {
- if (newname[l] == '/')
- pstrcpy (s, newname + l + 1);
- else
- pstrcpy (s, newname + l);
- }
- else
- pstrcpy (s, newname);
- }
-
- dos_ChDir (wd);
-
- if (strlen (s) == 0)
- pstrcpy (s, "./");
-
- DEBUG (3, ("reduced to %s\n", s));
- return (True);
-#endif
-}
-
-
-/****************************************************************************
-expand some *s
-****************************************************************************/
-static void
-expand_one (char *Mask, int len)
-{
- char *p1;
- while ((p1 = strchr (Mask, '*')) != NULL)
- {
- int lfill = (len + 1) - strlen (Mask);
- int l1 = (p1 - Mask);
- pstring tmp;
- pstrcpy (tmp, Mask);
- memset (tmp + l1, '?', lfill);
- pstrcpy (tmp + l1 + lfill, Mask + l1 + 1);
- pstrcpy (Mask, tmp);
- }
-}
-
-/****************************************************************************
-parse out a directory name from a path name. Assumes dos style filenames.
-****************************************************************************/
-static void
-dirname_dos (char *path, char *buf)
-{
- split_at_last_component (path, buf, '\\', NULL);
-}
-
-
-/****************************************************************************
-parse out a filename from a path name. Assumes dos style filenames.
-****************************************************************************/
-static char *
-filename_dos (char *path, char *buf)
-{
- char *p = strrchr (path, '\\');
-
- if (!p)
- pstrcpy (buf, path);
- else
- pstrcpy (buf, p + 1);
-
- return (buf);
-}
-
-/****************************************************************************
-expand a wildcard expression, replacing *s with ?s
-****************************************************************************/
-void
-expand_mask (char *Mask, BOOL doext)
-{
- pstring mbeg, mext;
- pstring dirpart;
- pstring filepart;
- BOOL hasdot = False;
- char *p1;
- BOOL absolute = (*Mask == '\\');
-
- *mbeg = *mext = *dirpart = *filepart = 0;
-
- /* parse the directory and filename */
- if (strchr (Mask, '\\'))
- dirname_dos (Mask, dirpart);
-
- filename_dos (Mask, filepart);
-
- pstrcpy (mbeg, filepart);
- if ((p1 = strchr (mbeg, '.')) != NULL)
- {
- hasdot = True;
- *p1 = 0;
- p1++;
- pstrcpy (mext, p1);
- }
- else
- {
- pstrcpy (mext, "");
- if (strlen (mbeg) > 8)
- {
- pstrcpy (mext, mbeg + 8);
- mbeg[8] = 0;
- }
- }
-
- if (*mbeg == 0)
- pstrcpy (mbeg, "????????");
- if ((*mext == 0) && doext && !hasdot)
- pstrcpy (mext, "???");
-
- if (strequal (mbeg, "*") && *mext == 0)
- pstrcpy (mext, "*");
-
- /* expand *'s */
- expand_one (mbeg, 8);
- if (*mext)
- expand_one (mext, 3);
-
- pstrcpy (Mask, dirpart);
- if (*dirpart || absolute)
- pstrcat (Mask, "\\");
- pstrcat (Mask, mbeg);
- pstrcat (Mask, ".");
- pstrcat (Mask, mext);
-
- DEBUG (6, ("Mask expanded to [%s]\n", Mask));
-}
-
-
-/****************************************************************************
- make a dir struct
-****************************************************************************/
-void
-make_dir_struct (char *buf, char *mask, char *fname, SMB_OFF_T size, int mode, time_t date)
-{
- char *p;
- pstring mask2;
-
- pstrcpy (mask2, mask);
-
- if ((mode & aDIR) != 0)
- size = 0;
-
- memset (buf + 1, ' ', 11);
- if ((p = strchr (mask2, '.')) != NULL)
- {
- *p = 0;
- memcpy (buf + 1, mask2, MIN (strlen (mask2), 8));
- memcpy (buf + 9, p + 1, MIN (strlen (p + 1), 3));
- *p = '.';
- }
- else
- memcpy (buf + 1, mask2, MIN (strlen (mask2), 11));
-
- memset (buf + 21, '\0', DIR_STRUCT_SIZE - 21);
- CVAL (buf, 21) = mode;
- put_dos_date (buf, 22, date);
- SSVAL (buf, 26, size & 0xFFFF);
- SSVAL (buf, 28, (size >> 16) & 0xFFFF);
- StrnCpy (buf + 30, fname, 12);
- if (!case_sensitive)
- strupper (buf + 30);
- DEBUG (8, ("put name [%s] into dir struct\n", buf + 30));
-}
-
-
-/*******************************************************************
-close the low 3 fd's and open dev/null in their place
-********************************************************************/
-void
-close_low_fds (void)
-{
- int fd;
- int i;
- close (0);
- close (1);
- close (2);
- /* try and use up these file descriptors, so silly
- library routines writing to stdout etc won't cause havoc */
- for (i = 0; i < 3; i++)
- {
- fd = sys_open ("/dev/null", O_RDWR, 0);
- if (fd < 0)
- fd = sys_open ("/dev/null", O_WRONLY, 0);
- if (fd < 0)
- {
- DEBUG (0, ("Cannot open /dev/null\n"));
- return;
- }
- if (fd != i)
- {
- DEBUG (0, ("Didn't get file descriptor %d\n", i));
- return;
- }
- }
-}
-#endif /* 0 */
-
-/****************************************************************************
-Set a fd into blocking/nonblocking mode. Uses POSIX O_NONBLOCK if available,
-else
-if SYSV use O_NDELAY
-if BSD use FNDELAY
-****************************************************************************/
-int
-set_blocking (int fd, BOOL set)
-{
- int val;
-#ifdef O_NONBLOCK
-#define FLAG_TO_SET O_NONBLOCK
-#else
-#ifdef SYSV
-#define FLAG_TO_SET O_NDELAY
-#else /* BSD */
-#define FLAG_TO_SET FNDELAY
-#endif
-#endif
-
- if ((val = fcntl (fd, F_GETFL, 0)) == -1)
- return -1;
- if (set) /* Turn blocking on - ie. clear nonblock flag */
- val &= ~FLAG_TO_SET;
- else
- val |= FLAG_TO_SET;
- return fcntl (fd, F_SETFL, val);
-#undef FLAG_TO_SET
-}
-
-
-/*******************************************************************
-find the difference in milliseconds between two struct timeval
-values
-********************************************************************/
-int
-TvalDiff (struct timeval *tvalold, struct timeval *tvalnew)
-{
- return ((tvalnew->tv_sec - tvalold->tv_sec) * 1000 +
- ((int) tvalnew->tv_usec - (int) tvalold->tv_usec) / 1000);
-}
-
-
-#if 0
-/****************************************************************************
-transfer some data between two fd's
-****************************************************************************/
-SMB_OFF_T
-transfer_file (int infd, int outfd, SMB_OFF_T n, char *header, int headlen, int align)
-{
- static char *buf = NULL;
- static int size = 0;
- char *buf1, *abuf;
- SMB_OFF_T total = 0;
-
- DEBUG (4, ("transfer_file n=%.0f (head=%d) called\n", (double) n, headlen));
-
- if (size == 0)
- {
- size = lp_readsize ();
- size = MAX (size, 1024);
- }
-
- while (!buf && size > 0)
- {
- buf = (char *) Realloc (buf, size + 8);
- if (!buf)
- size /= 2;
- }
-
- if (!buf)
- {
- DEBUG (0, ("Cannot allocate transfer buffer!\n"));
- exit (1);
- }
-
- abuf = buf + (align % 8);
-
- if (header)
- n += headlen;
-
- while (n > 0)
- {
- int s = (int) MIN (n, (SMB_OFF_T) size);
- int ret, ret2 = 0;
-
- ret = 0;
-
- if (header && (headlen >= MIN (s, 1024)))
- {
- buf1 = header;
- s = headlen;
- ret = headlen;
- headlen = 0;
- header = NULL;
- }
- else
- {
- buf1 = abuf;
- }
-
- if (header && headlen > 0)
- {
- ret = MIN (headlen, size);
- memcpy (buf1, header, ret);
- headlen -= ret;
- header += ret;
- if (headlen <= 0)
- header = NULL;
- }
-
- if (s > ret)
- ret += read (infd, buf1 + ret, s - ret);
-
- if (ret > 0)
- {
- ret2 = (outfd >= 0 ? write_data (outfd, buf1, ret) : ret);
- if (ret2 > 0)
- total += ret2;
- /* if we can't write then dump excess data */
- if (ret2 != ret)
- transfer_file (infd, -1, n - (ret + headlen), NULL, 0, 0);
- }
- if (ret <= 0 || ret2 != ret)
- return (total);
- n -= ret;
- }
- return (total);
-}
-
-
-/****************************************************************************
-find a pointer to a netbios name
-****************************************************************************/
-static char *
-name_ptr (char *buf, int ofs)
-{
- unsigned char c = *(unsigned char *) (buf + ofs);
-
- if ((c & 0xC0) == 0xC0)
- {
- uint16 l;
- char p[2];
- memcpy (p, buf + ofs, 2);
- p[0] &= ~0xC0;
- l = RSVAL (p, 0);
- DEBUG (5, ("name ptr to pos %d from %d is %s\n", l, ofs, buf + l));
- return (buf + l);
- }
- else
- return (buf + ofs);
-}
-
-/****************************************************************************
-extract a netbios name from a buf
-****************************************************************************/
-int
-name_extract (char *buf, int ofs, char *name)
-{
- char *p = name_ptr (buf, ofs);
- int d = PTR_DIFF (p, buf + ofs);
- pstrcpy (name, "");
- if (d < -50 || d > 50)
- return (0);
- return (name_interpret (p, name));
-}
-#endif /* 0 */
-
-/****************************************************************************
-return the total storage length of a mangled name
-****************************************************************************/
-int
-name_len (char *s1)
-{
- /* NOTE: this argument _must_ be unsigned */
- unsigned char *s = (unsigned char *) s1;
- int len;
-
- /* If the two high bits of the byte are set, return 2. */
- if (0xC0 == (*s & 0xC0))
- return (2);
-
- /* Add up the length bytes. */
- for (len = 1; (*s); s += (*s) + 1)
- {
- len += *s + 1;
- SMB_ASSERT (len < 80);
- }
-
- return (len);
-} /* name_len */
-
-
-/*******************************************************************
-sleep for a specified number of milliseconds
-********************************************************************/
-void
-msleep (int t)
-{
- int tdiff = 0;
- struct timeval tval, t1, t2;
- fd_set fds;
-
- GetTimeOfDay (&t1);
- GetTimeOfDay (&t2);
-
- while (tdiff < t)
- {
- tval.tv_sec = (t - tdiff) / 1000;
- tval.tv_usec = 1000 * ((t - tdiff) % 1000);
-
- FD_ZERO (&fds);
- errno = 0;
- sys_select (0, &fds, &tval);
-
- GetTimeOfDay (&t2);
- tdiff = TvalDiff (&t1, &t2);
- }
-}
-
-#if 0
-/*********************************************************
-* Recursive routine that is called by unix_mask_match.
-* Does the actual matching. This is the 'original code'
-* used by the unix matcher.
-*********************************************************/
-static BOOL
-unix_do_match (char *str, char *regexp, int case_sig)
-{
- char *p;
-
- for (p = regexp; *p && *str;)
- {
- switch (*p)
- {
- case '?':
- str++;
- p++;
- break;
-
- case '*':
- /* Look for a character matching
- the one after the '*' */
- p++;
- if (!*p)
- return True; /* Automatic match */
- while (*str)
- {
- while (*str && (case_sig ? (*p != *str) : (toupper (*p) != toupper (*str))))
- str++;
- if (unix_do_match (str, p, case_sig))
- return True;
- if (!*str)
- return False;
- else
- str++;
- }
- return False;
-
- default:
- if (case_sig)
- {
- if (*str != *p)
- return False;
- }
- else
- {
- if (toupper (*str) != toupper (*p))
- return False;
- }
- str++, p++;
- break;
- }
- }
- if (!*p && !*str)
- return True;
-
- if (!*p && str[0] == '.' && str[1] == 0)
- return (True);
-
- if (!*str && *p == '?')
- {
- while (*p == '?')
- p++;
- return (!*p);
- }
-
- if (!*str && (*p == '*' && p[1] == '\0'))
- return True;
- return False;
-}
-
-
-/*********************************************************
-* Routine to match a given string with a regexp - uses
-* simplified regexp that takes * and ? only. Case can be
-* significant or not.
-* This is the 'original code' used by the unix matcher.
-*********************************************************/
-
-static BOOL
-unix_mask_match (char *str, char *regexp, int case_sig, BOOL trans2)
-{
- char *p;
- pstring p1, p2;
- fstring ebase, eext, sbase, sext;
-
- BOOL matched;
-
- /* Make local copies of str and regexp */
- StrnCpy (p1, regexp, sizeof (pstring) - 1);
- StrnCpy (p2, str, sizeof (pstring) - 1);
-
- if (!strchr (p2, '.'))
- {
- pstrcat (p2, ".");
- }
-
- /* Remove any *? and ** as they are meaningless */
- for (p = p1; *p; p++)
- while (*p == '*' && (p[1] == '?' || p[1] == '*'))
- (void) pstrcpy (&p[1], &p[2]);
-
- if (strequal (p1, "*"))
- return (True);
-
- DEBUG (8, ("unix_mask_match str=<%s> regexp=<%s>, case_sig = %d\n", p2, p1, case_sig));
-
- if (trans2)
- {
- fstrcpy (ebase, p1);
- fstrcpy (sbase, p2);
- }
- else
- {
- if ((p = strrchr (p1, '.')))
- {
- *p = 0;
- fstrcpy (ebase, p1);
- fstrcpy (eext, p + 1);
- }
- else
- {
- fstrcpy (ebase, p1);
- eext[0] = 0;
- }
-
- if (!strequal (p2, ".") && !strequal (p2, "..") && (p = strrchr (p2, '.')))
- {
- *p = 0;
- fstrcpy (sbase, p2);
- fstrcpy (sext, p + 1);
- }
- else
- {
- fstrcpy (sbase, p2);
- fstrcpy (sext, "");
- }
- }
-
- matched = unix_do_match (sbase, ebase, case_sig) &&
- (trans2 || unix_do_match (sext, eext, case_sig));
-
- DEBUG (8, ("unix_mask_match returning %d\n", matched));
-
- return matched;
-}
-
-/*********************************************************
-* Recursive routine that is called by mask_match.
-* Does the actual matching. Returns True if matched,
-* False if failed. This is the 'new' NT style matcher.
-*********************************************************/
-
-BOOL
-do_match (char *str, char *regexp, int case_sig)
-{
- char *p;
-
- for (p = regexp; *p && *str;)
- {
- switch (*p)
- {
- case '?':
- str++;
- p++;
- break;
-
- case '*':
- /* Look for a character matching
- the one after the '*' */
- p++;
- if (!*p)
- return True; /* Automatic match */
- while (*str)
- {
- while (*str && (case_sig ? (*p != *str) : (toupper (*p) != toupper (*str))))
- str++;
- /* Now eat all characters that match, as
- we want the *last* character to match. */
- while (*str && (case_sig ? (*p == *str) : (toupper (*p) == toupper (*str))))
- str++;
- str--; /* We've eaten the match char after the '*' */
- if (do_match (str, p, case_sig))
- {
- return True;
- }
- if (!*str)
- {
- return False;
- }
- else
- {
- str++;
- }
- }
- return False;
-
- default:
- if (case_sig)
- {
- if (*str != *p)
- {
- return False;
- }
- }
- else
- {
- if (toupper (*str) != toupper (*p))
- {
- return False;
- }
- }
- str++, p++;
- break;
- }
- }
-
- if (!*p && !*str)
- return True;
-
- if (!*p && str[0] == '.' && str[1] == 0)
- {
- return (True);
- }
-
- if (!*str && *p == '?')
- {
- while (*p == '?')
- p++;
- return (!*p);
- }
-
- if (!*str && (*p == '*' && p[1] == '\0'))
- {
- return True;
- }
-
- return False;
-}
-
-
-/*********************************************************
-* Routine to match a given string with a regexp - uses
-* simplified regexp that takes * and ? only. Case can be
-* significant or not.
-* The 8.3 handling was rewritten by Ums Harald <Harald.Ums@pro-sieben.de>
-* This is the new 'NT style' matcher.
-*********************************************************/
-
-BOOL
-mask_match (char *str, char *regexp, int case_sig, BOOL trans2)
-{
- char *p;
- pstring t_pattern, t_filename, te_pattern, te_filename;
- fstring ebase, eext, sbase, sext;
-
- BOOL matched = False;
-
- /* Make local copies of str and regexp */
- pstrcpy (t_pattern, regexp);
- pstrcpy (t_filename, str);
-
- if (trans2)
- {
-
- /* a special case for 16 bit apps */
- if (strequal (t_pattern, "????????.???"))
- pstrcpy (t_pattern, "*");
-
-#if 0
- /*
- * Handle broken clients that send us old 8.3 format.
- */
- string_sub (t_pattern, "????????", "*");
- string_sub (t_pattern, ".???", ".*");
-#endif
- }
-
-#if 0
- /*
- * Not sure if this is a good idea. JRA.
- */
- if (trans2 && is_8_3 (t_pattern, False) && is_8_3 (t_filename, False))
- trans2 = False;
-#endif
-
-#if 0
- if (!strchr (t_filename, '.'))
- {
- pstrcat (t_filename, ".");
- }
-#endif
-
- /* Remove any *? and ** as they are meaningless */
- string_sub (t_pattern, "*?", "*");
- string_sub (t_pattern, "**", "*");
-
- if (strequal (t_pattern, "*"))
- return (True);
-
- DEBUG (8,
- ("mask_match str=<%s> regexp=<%s>, case_sig = %d\n", t_filename, t_pattern, case_sig));
-
- if (trans2)
- {
- /*
- * Match each component of the regexp, split up by '.'
- * characters.
- */
- char *fp, *rp, *cp2, *cp1;
- BOOL last_wcard_was_star = False;
- int num_path_components, num_regexp_components;
-
- pstrcpy (te_pattern, t_pattern);
- pstrcpy (te_filename, t_filename);
- /*
- * Remove multiple "*." patterns.
- */
- string_sub (te_pattern, "*.*.", "*.");
- num_regexp_components = count_chars (te_pattern, '.');
- num_path_components = count_chars (te_filename, '.');
-
- /*
- * Check for special 'hack' case of "DIR a*z". - needs to match a.b.c...z
- */
- if (num_regexp_components == 0)
- matched = do_match (te_filename, te_pattern, case_sig);
- else
- {
- for (cp1 = te_pattern, cp2 = te_filename; cp1;)
- {
- fp = strchr (cp2, '.');
- if (fp)
- *fp = '\0';
- rp = strchr (cp1, '.');
- if (rp)
- *rp = '\0';
-
- if (cp1[strlen (cp1) - 1] == '*')
- last_wcard_was_star = True;
- else
- last_wcard_was_star = False;
-
- if (!do_match (cp2, cp1, case_sig))
- break;
-
- cp1 = rp ? rp + 1 : NULL;
- cp2 = fp ? fp + 1 : "";
-
- if (last_wcard_was_star || ((cp1 != NULL) && (*cp1 == '*')))
- {
- /* Eat the extra path components. */
- int i;
-
- for (i = 0; i < num_path_components - num_regexp_components; i++)
- {
- fp = strchr (cp2, '.');
- if (fp)
- *fp = '\0';
-
- if ((cp1 != NULL) && do_match (cp2, cp1, case_sig))
- {
- cp2 = fp ? fp + 1 : "";
- break;
- }
- cp2 = fp ? fp + 1 : "";
- }
- num_path_components -= i;
- }
- }
- if (cp1 == NULL && ((*cp2 == '\0') || last_wcard_was_star))
- matched = True;
- }
- }
- else
- {
-
- /* -------------------------------------------------
- * Behaviour of Win95
- * for 8.3 filenames and 8.3 Wildcards
- * -------------------------------------------------
- */
- if (strequal (t_filename, "."))
- {
- /*
- * Patterns: *.* *. ?. ? ????????.??? are valid.
- *
- */
- if (strequal (t_pattern, "*.*") || strequal (t_pattern, "*.") ||
- strequal (t_pattern, "????????.???") ||
- strequal (t_pattern, "?.") || strequal (t_pattern, "?"))
- matched = True;
- }
- else if (strequal (t_filename, ".."))
- {
- /*
- * Patterns: *.* *. ?. ? *.? ????????.??? are valid.
- *
- */
- if (strequal (t_pattern, "*.*") || strequal (t_pattern, "*.") ||
- strequal (t_pattern, "?.") || strequal (t_pattern, "?") ||
- strequal (t_pattern, "????????.???") ||
- strequal (t_pattern, "*.?") || strequal (t_pattern, "?.*"))
- matched = True;
- }
- else
- {
-
- if ((p = strrchr (t_pattern, '.')))
- {
- /*
- * Wildcard has a suffix.
- */
- *p = 0;
- fstrcpy (ebase, t_pattern);
- if (p[1])
- {
- fstrcpy (eext, p + 1);
- }
- else
- {
- /* pattern ends in DOT: treat as if there is no DOT */
- *eext = 0;
- if (strequal (ebase, "*"))
- return (True);
- }
- }
- else
- {
- /*
- * No suffix for wildcard.
- */
- fstrcpy (ebase, t_pattern);
- eext[0] = 0;
- }
-
- p = strrchr (t_filename, '.');
- if (p && (p[1] == 0))
- {
- /*
- * Filename has an extension of '.' only.
- */
- *p = 0; /* nuke dot at end of string */
- p = 0; /* and treat it as if there is no extension */
- }
-
- if (p)
- {
- /*
- * Filename has an extension.
- */
- *p = 0;
- fstrcpy (sbase, t_filename);
- fstrcpy (sext, p + 1);
- if (*eext)
- {
- matched = do_match (sbase, ebase, case_sig) && do_match (sext, eext, case_sig);
- }
- else
- {
- /* pattern has no extension */
- /* Really: match complete filename with pattern ??? means exactly 3 chars */
- matched = do_match (str, ebase, case_sig);
- }
- }
- else
- {
- /*
- * Filename has no extension.
- */
- fstrcpy (sbase, t_filename);
- fstrcpy (sext, "");
- if (*eext)
- {
- /* pattern has extension */
- matched = do_match (sbase, ebase, case_sig) && do_match (sext, eext, case_sig);
- }
- else
- {
- matched = do_match (sbase, ebase, case_sig);
-#ifdef EMULATE_WEIRD_W95_MATCHING
- /*
- * Even Microsoft has some problems
- * Behaviour Win95 -> local disk
- * is different from Win95 -> smb drive from Nt 4.0
- * This branch would reflect the Win95 local disk behaviour
- */
- if (!matched)
- {
- /* a? matches aa and a in w95 */
- fstrcat (sbase, ".");
- matched = do_match (sbase, ebase, case_sig);
- }
-#endif
- }
- }
- }
- }
-
- DEBUG (8, ("mask_match returning %d\n", matched));
-
- return matched;
-}
-#endif /* 0 */
-
-#if 0
-/****************************************************************************
-set the length of a file from a filedescriptor.
-Returns 0 on success, -1 on failure.
-****************************************************************************/
-
-int
-set_filelen (int fd, SMB_OFF_T len)
-{
- /* According to W. R. Stevens advanced UNIX prog. Pure 4.3 BSD cannot
- extend a file with ftruncate. Provide alternate implementation
- for this */
-
-#ifdef HAVE_FTRUNCATE_EXTEND
- return sys_ftruncate (fd, len);
-#else
- SMB_STRUCT_STAT st;
- char c = 0;
- SMB_OFF_T currpos = sys_lseek (fd, (SMB_OFF_T) 0, SEEK_CUR);
-
- if (currpos == -1)
- return -1;
- /* Do an fstat to see if the file is longer than
- the requested size (call ftruncate),
- or shorter, in which case seek to len - 1 and write 1
- byte of zero */
- if (sys_fstat (fd, &st) < 0)
- return -1;
-
-#ifdef S_ISFIFO
- if (S_ISFIFO (st.st_mode))
- return 0;
-#endif
-
- if (st.st_size == len)
- return 0;
- if (st.st_size > len)
- return sys_ftruncate (fd, len);
-
- if (sys_lseek (fd, len - 1, SEEK_SET) != len - 1)
- return -1;
- if (write (fd, &c, 1) != 1)
- return -1;
- /* Seek to where we were */
- if (sys_lseek (fd, currpos, SEEK_SET) != currpos)
- return -1;
- return 0;
-#endif
-}
-
-
-#ifdef HPUX
-/****************************************************************************
-this is a version of setbuffer() for those machines that only have setvbuf
-****************************************************************************/
-void
-setbuffer (FILE * f, char *buf, int bufsize)
-{
- setvbuf (f, buf, _IOFBF, bufsize);
-}
-#endif
-#endif /* 0 */
-
-
-
-/****************************************************************************
-expand a pointer to be a particular size
-****************************************************************************/
-void *
-Realloc (void *p, size_t size)
-{
- void *ret = NULL;
-
- if (size == 0)
- {
- if (p)
- free (p);
- DEBUG (5, ("Realloc asked for 0 bytes\n"));
- return NULL;
- }
-
- if (!p)
- ret = (void *) malloc (size);
- else
- ret = (void *) realloc (p, size);
-
-#ifdef MEM_MAN
- {
- extern FILE *dbf;
- smb_mem_write_info (ret, dbf);
- }
-#endif
-
- if (!ret)
- DEBUG (0, ("Memory allocation error: failed to expand to %d bytes\n", (int) size));
-
- return (ret);
-}
-
-
-/****************************************************************************
-get my own name and IP
-****************************************************************************/
-BOOL
-get_myname (char *my_name, struct in_addr * ip)
-{
- struct hostent *hp;
- pstring hostname;
-
- /* cppcheck-suppress uninitvar */
- *hostname = 0;
-
- /* get my host name */
- if (gethostname (hostname, sizeof (hostname)) == -1)
- {
- DEBUG (0, ("gethostname failed\n"));
- return False;
- }
-
- /* Ensure null termination. */
- hostname[sizeof (hostname) - 1] = '\0';
-
- /* get host info */
- if ((hp = Get_Hostbyname (hostname)) == 0)
- {
- DEBUG (0, ("Get_Hostbyname: Unknown host %s\n", hostname));
- return False;
- }
-
- if (my_name)
- {
- /* split off any parts after an initial . */
- char *p = strchr (hostname, '.');
- if (p)
- *p = 0;
-
- fstrcpy (my_name, hostname);
- }
-
- if (ip)
- putip ((char *) ip, (char *) hp->h_addr);
-
- return (True);
-}
-
-
-/****************************************************************************
-true if two IP addresses are equal
-****************************************************************************/
-BOOL
-ip_equal (struct in_addr ip1, struct in_addr ip2)
-{
- uint32 a1, a2;
- a1 = ntohl (ip1.s_addr);
- a2 = ntohl (ip2.s_addr);
- return (a1 == a2);
-}
-
-#if 0 /* May be useful one day */
-/****************************************************************************
-interpret a protocol description string, with a default
-****************************************************************************/
-int
-interpret_protocol (char *str, int def)
-{
- if (strequal (str, "NT1"))
- return (PROTOCOL_NT1);
- if (strequal (str, "LANMAN2"))
- return (PROTOCOL_LANMAN2);
- if (strequal (str, "LANMAN1"))
- return (PROTOCOL_LANMAN1);
- if (strequal (str, "CORE"))
- return (PROTOCOL_CORE);
- if (strequal (str, "COREPLUS"))
- return (PROTOCOL_COREPLUS);
- if (strequal (str, "CORE+"))
- return (PROTOCOL_COREPLUS);
-
- DEBUG (0, ("Unrecognised protocol level %s\n", str));
-
- return (def);
-}
-#endif /* 0 */
-
-/****************************************************************************
-interpret an internet address or name into an IP address in 4 byte form
-****************************************************************************/
-uint32
-interpret_addr (const char *str)
-{
- struct hostent *hp;
- uint32 res;
- int i;
- BOOL pure_address = True;
-
- if (strcmp (str, "0.0.0.0") == 0)
- return (0);
- if (strcmp (str, "255.255.255.255") == 0)
- return (0xFFFFFFFF);
-
- for (i = 0; pure_address && str[i]; i++)
- if (!(isdigit ((int) str[i]) || str[i] == '.'))
- pure_address = False;
-
- /* if it's in the form of an IP address then get the lib to interpret it */
- if (pure_address)
- {
- res = inet_addr (str);
- }
- else
- {
- /* otherwise assume it's a network name of some sort and use
- Get_Hostbyname */
- if ((hp = Get_Hostbyname (str)) == 0)
- {
- DEBUG (3, ("Get_Hostbyname: Unknown host. %s\n", str));
- return 0;
- }
- if (hp->h_addr == NULL)
- {
- DEBUG (3, ("Get_Hostbyname: host address is invalid for host %s\n", str));
- return 0;
- }
- putip ((char *) &res, (char *) hp->h_addr);
- }
-
- if (res == (uint32) - 1)
- return (0);
-
- return (res);
-}
-
-/*******************************************************************
- a convenient addition to interpret_addr()
- ******************************************************************/
-struct in_addr *
-interpret_addr2 (const char *str)
-{
- static struct in_addr ret;
- uint32 a = interpret_addr (str);
- ret.s_addr = a;
- return (&ret);
-}
-
-/*******************************************************************
- check if an IP is the 0.0.0.0
- ******************************************************************/
-BOOL
-zero_ip (struct in_addr ip)
-{
- uint32 a;
- putip ((char *) &a, (char *) &ip);
- return (a == 0);
-}
-
-
-/*******************************************************************
- matchname - determine if host name matches IP address
- ******************************************************************/
-BOOL
-matchname (char *remotehost, struct in_addr addr)
-{
- struct hostent *hp;
- int i;
-
- if ((hp = Get_Hostbyname (remotehost)) == 0)
- {
- DEBUG (0, ("Get_Hostbyname(%s): lookup failure.\n", remotehost));
- return False;
- }
-
- /*
- * Make sure that gethostbyname() returns the "correct" host name.
- * Unfortunately, gethostbyname("localhost") sometimes yields
- * "localhost.domain". Since the latter host name comes from the
- * local DNS, we just have to trust it (all bets are off if the local
- * DNS is perverted). We always check the address list, though.
- */
-
- if (strcasecmp (remotehost, hp->h_name) && strcasecmp (remotehost, "localhost"))
- {
- DEBUG (0, ("host name/name mismatch: %s != %s\n", remotehost, hp->h_name));
- return False;
- }
-
- /* Look up the host address in the address list we just got. */
- for (i = 0; hp->h_addr_list[i]; i++)
- {
- if (memcmp (hp->h_addr_list[i], (caddr_t) & addr, sizeof (addr)) == 0)
- return True;
- }
-
- /*
- * The host name does not map to the original host address. Perhaps
- * someone has compromised a name server. More likely someone botched
- * it, but that could be dangerous, too.
- */
-
- DEBUG (0, ("host name/address mismatch: %s != %s\n", inet_ntoa (addr), hp->h_name));
- return False;
-}
-
-
-#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
-/******************************************************************
- Remove any mount options such as -rsize=2048,wsize=2048 etc.
- Based on a fix from <Thomas.Hepper@icem.de>.
-*******************************************************************/
-
-static void
-strip_mount_options (pstring * str)
-{
- if (**str == '-')
- {
- char *p = *str;
- while (*p && !isspace (*p))
- p++;
- while (*p && isspace (*p))
- p++;
- if (*p)
- {
- pstring tmp_str;
-
- pstrcpy (tmp_str, p);
- pstrcpy (*str, tmp_str);
- }
- }
-}
-
-/*******************************************************************
- Patch from jkf@soton.ac.uk
- Split Luke's automount_server into YP lookup and string splitter
- so can easily implement automount_path().
- As we may end up doing both, cache the last YP result.
-*******************************************************************/
-
-#ifdef WITH_NISPLUS_HOME
-static char *
-automount_lookup (char *user_name)
-{
- static fstring last_key = "";
- static pstring last_value = "";
-
- char *nis_map = (char *) lp_nis_home_map_name ();
-
- char buffer[NIS_MAXATTRVAL + 1];
- nis_result *result;
- nis_object *object;
- entry_obj *entry;
-
- DEBUG (5, ("NIS+ Domain: %s\n", (char *) nis_local_directory ()));
-
- if (strcmp (user_name, last_key))
- {
- slprintf (buffer, sizeof (buffer) - 1, "[%s=%s]%s.%s", "key", user_name, nis_map,
- (char *) nis_local_directory ());
- DEBUG (5, ("NIS+ querystring: %s\n", buffer));
-
- if (result = nis_list (buffer, RETURN_RESULT, NULL, NULL))
- {
- if (result->status != NIS_SUCCESS)
- {
- DEBUG (3, ("NIS+ query failed: %s\n", nis_sperrno (result->status)));
- fstrcpy (last_key, "");
- pstrcpy (last_value, "");
- }
- else
- {
- object = result->objects.objects_val;
- if (object->zo_data.zo_type == ENTRY_OBJ)
- {
- entry = &object->zo_data.objdata_u.en_data;
- DEBUG (5, ("NIS+ entry type: %s\n", entry->en_type));
- DEBUG (3,
- ("NIS+ result: %s\n",
- entry->en_cols.en_cols_val[1].ec_value.ec_value_val));
-
- pstrcpy (last_value, entry->en_cols.en_cols_val[1].ec_value.ec_value_val);
- string_sub (last_value, "&", user_name);
- fstrcpy (last_key, user_name);
- }
- }
- }
- nis_freeresult (result);
- }
-
- strip_mount_options (&last_value);
-
- DEBUG (4, ("NIS+ Lookup: %s resulted in %s\n", user_name, last_value));
- return last_value;
-}
-#else /* WITH_NISPLUS_HOME */
-static char *
-automount_lookup (char *user_name)
-{
- static fstring last_key = "";
- static pstring last_value = "";
-
- int nis_error; /* returned by yp all functions */
- char *nis_result; /* yp_match inits this */
- int nis_result_len; /* and set this */
- char *nis_domain; /* yp_get_default_domain inits this */
- char *nis_map = (char *) lp_nis_home_map_name ();
-
- if ((nis_error = yp_get_default_domain (&nis_domain)) != 0)
- {
- DEBUG (3, ("YP Error: %s\n", yperr_string (nis_error)));
- return last_value;
- }
-
- DEBUG (5, ("NIS Domain: %s\n", nis_domain));
-
- if (!strcmp (user_name, last_key))
- {
- nis_result = last_value;
- nis_result_len = strlen (last_value);
- nis_error = 0;
- }
- else
- {
- if ((nis_error = yp_match (nis_domain, nis_map,
- user_name, strlen (user_name),
- &nis_result, &nis_result_len)) != 0)
- {
- DEBUG (3, ("YP Error: \"%s\" while looking up \"%s\" in map \"%s\"\n",
- yperr_string (nis_error), user_name, nis_map));
- }
- if (!nis_error && nis_result_len >= sizeof (pstring))
- {
- nis_result_len = sizeof (pstring) - 1;
- }
- fstrcpy (last_key, user_name);
- strncpy (last_value, nis_result, nis_result_len);
- last_value[nis_result_len] = '\0';
- }
-
- strip_mount_options (&last_value);
-
- DEBUG (4, ("YP Lookup: %s resulted in %s\n", user_name, last_value));
- return last_value;
-}
-#endif /* WITH_NISPLUS_HOME */
-#endif
-
-/*******************************************************************
- Patch from jkf@soton.ac.uk
- This is Luke's original function with the NIS lookup code
- moved out to a separate function.
-*******************************************************************/
-static char *
-automount_server (const char *user_name)
-{
- static pstring server_name;
- (void) user_name;
-
- /* use the local machine name as the default */
- /* this will be the default if WITH_AUTOMOUNT is not used or fails */
- pstrcpy (server_name, local_machine);
-
-#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
-
- if (lp_nis_home_map ())
- {
- int home_server_len;
- char *automount_value = automount_lookup (user_name);
- home_server_len = strcspn (automount_value, ":");
- DEBUG (5, ("NIS lookup succeeded. Home server length: %d\n", home_server_len));
- if (home_server_len > sizeof (pstring))
- {
- home_server_len = sizeof (pstring);
- }
- strncpy (server_name, automount_value, home_server_len);
- server_name[home_server_len] = '\0';
- }
-#endif
-
- DEBUG (4, ("Home server: %s\n", server_name));
-
- return server_name;
-}
-
-/*******************************************************************
- Patch from jkf@soton.ac.uk
- Added this to implement %p (NIS auto-map version of %H)
-*******************************************************************/
-static char *
-automount_path (char *user_name)
-{
- static pstring server_path;
-
- /* use the passwd entry as the default */
- /* this will be the default if WITH_AUTOMOUNT is not used or fails */
- /* pstrcpy() copes with get_home_dir() returning NULL */
- pstrcpy (server_path, get_home_dir (user_name));
-
-#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
-
- if (lp_nis_home_map ())
- {
- char *home_path_start;
- char *automount_value = automount_lookup (user_name);
- home_path_start = strchr (automount_value, ':');
- if (home_path_start != NULL)
- {
- DEBUG (5, ("NIS lookup succeeded. Home path is: %s\n",
- home_path_start ? (home_path_start + 1) : ""));
- pstrcpy (server_path, home_path_start + 1);
- }
- }
-#endif
-
- DEBUG (4, ("Home server path: %s\n", server_path));
-
- return server_path;
-}
-
-
-/*******************************************************************
-sub strings with useful parameters
-Rewritten by Stefaan A Eeckels <Stefaan.Eeckels@ecc.lu> and
-Paul Rippin <pr3245@nopc.eurostat.cec.be>
-********************************************************************/
-void
-standard_sub_basic (char *str)
-{
- char *s, *p;
- char pidstr[10];
- struct passwd *pass;
- const char *username = sam_logon_in_ssb ? samlogon_user : sesssetup_user;
-
- for (s = str; s && *s && (p = strchr (s, '%')); s = p)
- {
- switch (*(p + 1))
- {
- case 'G':
- {
- if ((pass = Get_Pwnam (username)) != NULL)
- {
- string_sub (p, "%G", gidtoname (pass->pw_gid));
- }
- else
- {
- p += 2;
- }
- break;
- }
- case 'N':
- string_sub (p, "%N", automount_server (username));
- break;
- case 'I':
- string_sub (p, "%I", client_addr (Client));
- break;
- case 'L':
- string_sub (p, "%L", local_machine);
- break;
- case 'M':
- string_sub (p, "%M", client_name (Client));
- break;
- case 'R':
- string_sub (p, "%R", remote_proto);
- break;
- case 'T':
- string_sub (p, "%T", timestring ());
- break;
- case 'U':
- string_sub (p, "%U", username);
- break;
- case 'a':
- string_sub (p, "%a", remote_arch);
- break;
- case 'd':
- {
- slprintf (pidstr, sizeof (pidstr) - 1, "%d", (int) getpid ());
- string_sub (p, "%d", pidstr);
- break;
- }
- case 'h':
- string_sub (p, "%h", myhostname);
- break;
- case 'm':
- string_sub (p, "%m", remote_machine);
- break;
- case 'v':
- string_sub (p, "%v", VERSION);
- break;
- case '$': /* Expand environment variables */
- {
- /* Contributed by Branko Cibej <branko.cibej@hermes.si> */
- fstring envname;
- char *envval;
- char *q, *r;
- int copylen;
-
- if (*(p + 2) != '(')
- {
- p += 2;
- break;
- }
- if ((q = strchr (p, ')')) == NULL)
- {
- DEBUG (0, ("standard_sub_basic: Unterminated environment \
- variable [%s]\n", p));
- p += 2;
- break;
- }
-
- r = p + 3;
- copylen = MIN ((size_t) (q - r), (size_t) (sizeof (envname) - 1));
- strncpy (envname, r, copylen);
- envname[copylen] = '\0';
-
- if ((envval = getenv (envname)) == NULL)
- {
- DEBUG (0, ("standard_sub_basic: Environment variable [%s] not set\n", envname));
- p += 2;
- break;
- }
-
- copylen = MIN ((size_t) (q + 1 - p), (size_t) (sizeof (envname) - 1));
- strncpy (envname, p, copylen);
- envname[copylen] = '\0';
- string_sub (p, envname, envval);
- break;
- }
- case '\0':
- p++;
- break; /* don't run off end if last character is % */
- default:
- p += 2;
- break;
- }
- }
- return;
-}
-
-
-/****************************************************************************
-do some standard substitutions in a string
-****************************************************************************/
-void
-standard_sub (connection_struct * conn, char *str)
-{
- char *p, *s;
- const char *home;
-
- for (s = str; (p = strchr (s, '%')); s = p)
- {
- switch (*(p + 1))
- {
- case 'H':
- if ((home = get_home_dir (conn->user)))
- {
- string_sub (p, "%H", home);
- }
- else
- {
- p += 2;
- }
- break;
-
- case 'P':
- string_sub (p, "%P", conn->connectpath);
- break;
-
- case 'S':
- string_sub (p, "%S", lp_servicename (SNUM (conn)));
- break;
-
- case 'g':
- string_sub (p, "%g", gidtoname (conn->gid));
- break;
- case 'u':
- string_sub (p, "%u", conn->user);
- break;
-
- /* Patch from jkf@soton.ac.uk Left the %N (NIS
- * server name) in standard_sub_basic as it is
- * a feature for logon servers, hence uses the
- * username. The %p (NIS server path) code is
- * here as it is used instead of the default
- * "path =" string in [homes] and so needs the
- * service name, not the username. */
- case 'p':
- string_sub (p, "%p", automount_path (lp_servicename (SNUM (conn))));
- break;
- case '\0':
- p++;
- break; /* don't run off the end of the string
- */
-
- default:
- p += 2;
- break;
- }
- }
-
- standard_sub_basic (str);
-}
-
-
-
-/*******************************************************************
-are two IPs on the same subnet?
-********************************************************************/
-BOOL
-same_net (struct in_addr ip1, struct in_addr ip2, struct in_addr mask)
-{
- uint32 net1, net2, nmask;
-
- nmask = ntohl (mask.s_addr);
- net1 = ntohl (ip1.s_addr);
- net2 = ntohl (ip2.s_addr);
-
- return ((net1 & nmask) == (net2 & nmask));
-}
-
-
-/****************************************************************************
-a wrapper for gethostbyname() that tries with all lower and all upper case
-if the initial name fails
-****************************************************************************/
-struct hostent *
-Get_Hostbyname (const char *name)
-{
- char *name2 = strdup (name);
- struct hostent *ret;
-
- if (!name2)
- {
- DEBUG (0, ("Memory allocation error in Get_Hostbyname! panic\n"));
- exit (0);
- }
-
-
- /*
- * This next test is redundent and causes some systems (with
- * broken isalnum() calls) problems.
- * JRA.
- */
-
-#if 0
- if (!isalnum (*name2))
- {
- free (name2);
- return (NULL);
- }
-#endif /* 0 */
-
- ret = sys_gethostbyname (name2);
- if (ret != NULL)
- {
- free (name2);
- return (ret);
- }
-
- /* try with all lowercase */
- strlower (name2);
- ret = sys_gethostbyname (name2);
- if (ret != NULL)
- {
- free (name2);
- return (ret);
- }
-
- /* try with all uppercase */
- strupper (name2);
- ret = sys_gethostbyname (name2);
- if (ret != NULL)
- {
- free (name2);
- return (ret);
- }
-
- /* nothing works :-( */
- free (name2);
- return (NULL);
-}
-
-#if 0
-/*******************************************************************
-turn a uid into a user name
-********************************************************************/
-char *
-uidtoname (uid_t uid)
-{
- static char name[40];
- struct passwd *pass = getpwuid (uid);
- if (pass)
- return (pass->pw_name);
- slprintf (name, sizeof (name) - 1, "%d", (int) uid);
- return (name);
-}
-#endif /* 0 */
-
-/*******************************************************************
-turn a gid into a group name
-********************************************************************/
-
-char *
-gidtoname (gid_t gid)
-{
- static char name[40];
- struct group *grp = getgrgid (gid);
- if (grp)
- return (grp->gr_name);
- slprintf (name, sizeof (name) - 1, "%d", (int) gid);
- return (name);
-}
-
-#if 0
-/*******************************************************************
-turn a user name into a uid
-********************************************************************/
-uid_t
-nametouid (const char *name)
-{
- struct passwd *pass = getpwnam (name);
- if (pass)
- return (pass->pw_uid);
- return (uid_t) - 1;
-}
-#endif /* 0 */
-/*******************************************************************
-something really nasty happened - panic!
-********************************************************************/
-void
-smb_panic (const char *why)
-{
- const char *cmd = lp_panic_action ();
- if (cmd && *cmd)
- {
- if (system (cmd))
- {
- DEBUG (0, ("PANIC: cannot run panic handler command \"%s\"\n", cmd));
- }
- }
- DEBUG (0, ("PANIC: %s\n", why));
- dbgflush ();
- abort ();
-}
-
-#if 0
-/*******************************************************************
-a readdir wrapper which just returns the file name
-********************************************************************/
-char *
-readdirname (DIR * p)
-{
- SMB_STRUCT_DIRENT *ptr;
- char *dname;
-
- if (!p)
- return (NULL);
-
- ptr = (SMB_STRUCT_DIRENT *) sys_readdir (p);
- if (!ptr)
- return (NULL);
-
- dname = ptr->d_name;
-
-#ifdef NEXT2
- if (telldir (p) < 0)
- return (NULL);
-#endif
-
-#ifdef HAVE_BROKEN_READDIR
- /* using /usr/ucb/cc is BAD */
- dname = dname - 2;
-#endif
-
- {
- static pstring buf;
- memcpy (buf, dname, NAMLEN (ptr) + 1);
- dname = buf;
- }
-
- return (dname);
-}
-
-/*******************************************************************
- Utility function used to decide if the last component
- of a path matches a (possibly wildcarded) entry in a namelist.
-********************************************************************/
-
-BOOL
-is_in_path (char *name, name_compare_entry * namelist)
-{
- pstring last_component;
- char *p;
-
- DEBUG (8, ("is_in_path: %s\n", name));
-
- /* if we have no list it's obviously not in the path */
- if ((namelist == NULL) || ((namelist != NULL) && (namelist[0].name == NULL)))
- {
- DEBUG (8, ("is_in_path: no name list.\n"));
- return False;
- }
-
- /* Get the last component of the unix name. */
- p = strrchr (name, '/');
- strncpy (last_component, p ? ++p : name, sizeof (last_component) - 1);
- last_component[sizeof (last_component) - 1] = '\0';
-
- for (; namelist->name != NULL; namelist++)
- {
- if (namelist->is_wild)
- {
- /*
- * Look for a wildcard match. Use the old
- * 'unix style' mask match, rather than the
- * new NT one.
- */
- if (unix_mask_match (last_component, namelist->name, case_sensitive, False))
- {
- DEBUG (8, ("is_in_path: mask match succeeded\n"));
- return True;
- }
- }
- else
- {
- if ((case_sensitive && (strcmp (last_component, namelist->name) == 0)) ||
- (!case_sensitive && (StrCaseCmp (last_component, namelist->name) == 0)))
- {
- DEBUG (8, ("is_in_path: match succeeded\n"));
- return True;
- }
- }
- }
- DEBUG (8, ("is_in_path: match not found\n"));
-
- return False;
-}
-
-/*******************************************************************
- Strip a '/' separated list into an array of
- name_compare_enties structures suitable for
- passing to is_in_path(). We do this for
- speed so we can pre-parse all the names in the list
- and don't do it for each call to is_in_path().
- namelist is modified here and is assumed to be
- a copy owned by the caller.
- We also check if the entry contains a wildcard to
- remove a potentially expensive call to mask_match
- if possible.
-********************************************************************/
-
-void
-set_namearray (name_compare_entry ** ppname_array, char *namelist)
-{
- char *name_end;
- char *nameptr = namelist;
- int num_entries = 0;
- int i;
-
- (*ppname_array) = NULL;
-
- if ((nameptr == NULL) || ((nameptr != NULL) && (*nameptr == '\0')))
- return;
-
- /* We need to make two passes over the string. The
- first to count the number of elements, the second
- to split it.
- */
- while (*nameptr)
- {
- if (*nameptr == '/')
- {
- /* cope with multiple (useless) /s) */
- nameptr++;
- continue;
- }
- /* find the next / */
- name_end = strchr (nameptr, '/');
-
- /* oops - the last check for a / didn't find one. */
- if (name_end == NULL)
- break;
-
- /* next segment please */
- nameptr = name_end + 1;
- num_entries++;
- }
-
- if (num_entries == 0)
- return;
-
- if (((*ppname_array) = (name_compare_entry *) malloc ((num_entries +
- 1) * sizeof (name_compare_entry))) ==
- NULL)
- {
- DEBUG (0, ("set_namearray: malloc fail\n"));
- return;
- }
-
- /* Now copy out the names */
- nameptr = namelist;
- i = 0;
- while (*nameptr)
- {
- if (*nameptr == '/')
- {
- /* cope with multiple (useless) /s) */
- nameptr++;
- continue;
- }
- /* find the next / */
- if ((name_end = strchr (nameptr, '/')) != NULL)
- {
- *name_end = 0;
- }
-
- /* oops - the last check for a / didn't find one. */
- if (name_end == NULL)
- break;
-
- (*ppname_array)[i].is_wild = ((strchr (nameptr, '?') != NULL) ||
- (strchr (nameptr, '*') != NULL));
- if (((*ppname_array)[i].name = strdup (nameptr)) == NULL)
- {
- DEBUG (0, ("set_namearray: malloc fail (1)\n"));
- return;
- }
-
- /* next segment please */
- nameptr = name_end + 1;
- i++;
- }
-
- (*ppname_array)[i].name = NULL;
-
- return;
-}
-
-/****************************************************************************
-routine to free a namearray.
-****************************************************************************/
-
-void
-free_namearray (name_compare_entry * name_array)
-{
- if (name_array == 0)
- return;
-
- if (name_array->name != NULL)
- free (name_array->name);
-
- free ((char *) name_array);
-}
-
-
-/*******************************************************************
-is the name specified one of my netbios names
-returns true is it is equal, false otherwise
-********************************************************************/
-BOOL
-is_myname (char *s)
-{
- int n;
- BOOL ret = False;
-
- for (n = 0; my_netbios_names[n]; n++)
- {
- if (strequal (my_netbios_names[n], s))
- ret = True;
- }
- DEBUG (8, ("is_myname(\"%s\") returns %d\n", s, ret));
- return (ret);
-}
-#endif /* 0 */
-#if 0 /* Can be useful one day */
-/*******************************************************************
-set the horrid remote_arch string based on an enum.
-********************************************************************/
-void
-set_remote_arch (enum remote_arch_types type)
-{
- ra_type = type;
- switch (type)
- {
- case RA_WFWG:
- remote_arch = "WfWg";
- return;
- case RA_OS2:
- remote_arch = "OS2";
- return;
- case RA_WIN95:
- remote_arch = "Win95";
- return;
- case RA_WINNT:
- remote_arch = "WinNT";
- return;
- case RA_SAMBA:
- remote_arch = "Samba";
- return;
- default:
- ra_type = RA_UNKNOWN;
- remote_arch = "UNKNOWN";
- break;
- }
-}
-
-/*******************************************************************
- Get the remote_arch type.
-********************************************************************/
-enum remote_arch_types
-get_remote_arch (void)
-{
- return ra_type;
-}
-#endif /* 0 */
-#if 0
-/*******************************************************************
-align a pointer to a multiple of 2 bytes
-********************************************************************/
-char *
-align2 (char *q, char *base)
-{
- if ((q - base) & 1)
- {
- q++;
- }
- return q;
-}
-
-void
-out_ascii (FILE * f, unsigned char *buf, int len)
-{
- int i;
- for (i = 0; i < len; i++)
- {
- fprintf (f, "%c", isprint (buf[i]) ? buf[i] : '.');
- }
-}
-
-void
-out_data (FILE * f, char *buf1, int len, int per_line)
-{
- unsigned char *buf = (unsigned char *) buf1;
- int i = 0;
- if (len <= 0)
- {
- return;
- }
-
- fprintf (f, "[%03X] ", i);
- for (i = 0; i < len;)
- {
- fprintf (f, "%02X ", (int) buf[i]);
- i++;
- if (i % (per_line / 2) == 0)
- fprintf (f, " ");
- if (i % per_line == 0)
- {
- out_ascii (f, &buf[i - per_line], per_line / 2);
- fprintf (f, " ");
- out_ascii (f, &buf[i - per_line / 2], per_line / 2);
- fprintf (f, "\n");
- if (i < len)
- fprintf (f, "[%03X] ", i);
- }
- }
- if ((i % per_line) != 0)
- {
- int n;
-
- n = per_line - (i % per_line);
- fprintf (f, " ");
- if (n > (per_line / 2))
- fprintf (f, " ");
- while (n--)
- {
- fprintf (f, " ");
- }
- n = MIN (per_line / 2, i % per_line);
- out_ascii (f, &buf[i - (i % per_line)], n);
- fprintf (f, " ");
- n = (i % per_line) - n;
- if (n > 0)
- out_ascii (f, &buf[i - n], n);
- fprintf (f, "\n");
- }
-}
-#endif /* 0 */
-
-void
-print_asc (int level, unsigned char *buf, int len)
-{
- int i;
- for (i = 0; i < len; i++)
- DEBUG (level, ("%c", isprint (buf[i]) ? buf[i] : '.'));
-}
-
-void
-dump_data (int level, char *buf1, int len)
-{
- unsigned char *buf = (unsigned char *) buf1;
- int i = 0;
- if (len <= 0)
- return;
-
- DEBUG (level, ("[%03X] ", i));
- for (i = 0; i < len;)
- {
- DEBUG (level, ("%02X ", (int) buf[i]));
- i++;
- if (i % 8 == 0)
- DEBUG (level, (" "));
- if (i % 16 == 0)
- {
- print_asc (level, &buf[i - 16], 8);
- DEBUG (level, (" "));
- print_asc (level, &buf[i - 8], 8);
- DEBUG (level, ("\n"));
- if (i < len)
- DEBUG (level, ("[%03X] ", i));
- }
- }
- if (i % 16)
- {
- int n;
-
- n = 16 - (i % 16);
- DEBUG (level, (" "));
- if (n > 8)
- DEBUG (level, (" "));
- while (n--)
- DEBUG (level, (" "));
-
- n = MIN (8, i % 16);
- print_asc (level, &buf[i - (i % 16)], n);
- DEBUG (level, (" "));
- n = (i % 16) - n;
- if (n > 0)
- print_asc (level, &buf[i - n], n);
- DEBUG (level, ("\n"));
- }
-}
-
-#if 0
-/*****************************************************************************
- * Provide a checksum on a string
- *
- * Input: s - the null-terminated character string for which the checksum
- * will be calculated.
- *
- * Output: The checksum value calculated for s.
- *
- * ****************************************************************************
- */
-int
-str_checksum (const char *s)
-{
- int res = 0;
- int c;
- int i = 0;
-
- while (*s)
- {
- c = *s;
- res ^= (c << (i % 15)) ^ (c >> (15 - (i % 15)));
- s++;
- i++;
- }
- return (res);
-} /* str_checksum */
-
-
-/*****************************************************************
-zero a memory area then free it. Used to catch bugs faster
-*****************************************************************/
-void
-zero_free (void *p, size_t size)
-{
- memset (p, 0, size);
- free (p);
-}
-#endif /* 0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/util_file.c
^
|
@@ -1,347 +0,0 @@
-/*
- Unix SMB/Netbios implementation. Version 1.9. SMB parameters and setup
-
- Copyright (C) Andrew Tridgell 1992-1998 Modified by Jeremy Allison 1995.
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-#if 0
-static int gotalarm;
-
-/***************************************************************
- Signal function to tell us we timed out.
-****************************************************************/
-
-static void
-gotalarm_sig (void)
-{
- gotalarm = 1;
-}
-
-/***************************************************************
- Lock or unlock a fd for a known lock type. Abandon after waitsecs
- seconds.
-****************************************************************/
-
-BOOL
-do_file_lock (int fd, int waitsecs, int type)
-{
- SMB_STRUCT_FLOCK lock;
- int ret;
-
- gotalarm = 0;
- CatchSignal (SIGALRM, SIGNAL_CAST gotalarm_sig);
-
- lock.l_type = type;
- lock.l_whence = SEEK_SET;
- lock.l_start = 0;
- lock.l_len = 1;
- lock.l_pid = 0;
-
- alarm (waitsecs);
- ret = fcntl (fd, SMB_F_SETLKW, &lock);
- alarm (0);
- CatchSignal (SIGALRM, SIGNAL_CAST SIG_DFL);
-
- if (gotalarm)
- {
- DEBUG (0, ("do_file_lock: failed to %s file.\n", type == F_UNLCK ? "unlock" : "lock"));
- return False;
- }
-
- return (ret == 0);
-}
-
-/***************************************************************
- Lock an fd. Abandon after waitsecs seconds.
-****************************************************************/
-
-BOOL
-file_lock (int fd, int type, int secs, int *plock_depth)
-{
- if (fd < 0)
- return False;
-
- (*plock_depth)++;
-
- if ((*plock_depth) == 0)
- {
- if (!do_file_lock (fd, secs, type))
- {
- DEBUG (10, ("file_lock: locking file failed, error = %s.\n",
- unix_error_string (errno)));
- return False;
- }
- }
-
- return True;
-}
-
-/***************************************************************
- Unlock an fd. Abandon after waitsecs seconds.
-****************************************************************/
-
-BOOL
-file_unlock (int fd, int *plock_depth)
-{
- BOOL ret = True;
-
- if (*plock_depth == 1)
- ret = do_file_lock (fd, 5, F_UNLCK);
-
- (*plock_depth)--;
-
- if (!ret)
- DEBUG (10, ("file_unlock: unlocking file failed, error = %s.\n",
- unix_error_string (errno)));
- return ret;
-}
-
-/***************************************************************
- locks a file for enumeration / modification.
- update to be set = True if modification is required.
-****************************************************************/
-
-void *
-startfilepwent (char *pfile, char *s_readbuf, int bufsize, int *file_lock_depth, BOOL update)
-{
- FILE *fp = NULL;
-
- if (!*pfile)
- {
- DEBUG (0, ("startfilepwent: No file set\n"));
- return (NULL);
- }
- DEBUG (10, ("startfilepwent: opening file %s\n", pfile));
-
- fp = sys_fopen (pfile, update ? "r+b" : "rb");
-
- if (fp == NULL)
- {
- DEBUG (0, ("startfilepwent: unable to open file %s\n", pfile));
- return NULL;
- }
-
- /* Set a buffer to do more efficient reads */
- setvbuf (fp, s_readbuf, _IOFBF, bufsize);
-
- if (!file_lock (fileno (fp), (update ? F_WRLCK : F_RDLCK), 5, file_lock_depth))
- {
- DEBUG (0, ("startfilepwent: unable to lock file %s\n", pfile));
- fclose (fp);
- return NULL;
- }
-
- /* Make sure it is only rw by the owner */
- chmod (pfile, 0600);
-
- /* We have a lock on the file. */
- return (void *) fp;
-}
-
-/***************************************************************
- End enumeration of the file.
-****************************************************************/
-void
-endfilepwent (void *vp, int *file_lock_depth)
-{
- FILE *fp = (FILE *) vp;
-
- file_unlock (fileno (fp), file_lock_depth);
- fclose (fp);
- DEBUG (7, ("endfilepwent: closed file.\n"));
-}
-
-
-/*************************************************************************
- Return the current position in the file list as an SMB_BIG_UINT.
- This must be treated as an opaque token.
-*************************************************************************/
-SMB_BIG_UINT
-getfilepwpos (void *vp)
-{
- return (SMB_BIG_UINT) sys_ftell ((FILE *) vp);
-}
-
-/*************************************************************************
- Set the current position in the file list from an SMB_BIG_UINT.
- This must be treated as an opaque token.
-*************************************************************************/
-BOOL
-setfilepwpos (void *vp, SMB_BIG_UINT tok)
-{
- return !sys_fseek ((FILE *) vp, (SMB_OFF_T) tok, SEEK_SET);
-}
-
-/*************************************************************************
- gets a line out of a file.
- line is of format "xxxx:xxxxxx:xxxxx:".
- lines with "#" at the front are ignored.
-*************************************************************************/
-int
-getfileline (void *vp, char *linebuf, int linebuf_size)
-{
- /* Static buffers we will return. */
- FILE *fp = (FILE *) vp;
- unsigned char c;
- unsigned char *p;
- size_t linebuf_len;
-
- if (fp == NULL)
- {
- DEBUG (0, ("getfileline: Bad file pointer.\n"));
- return -1;
- }
-
- /*
- * Scan the file, a line at a time.
- */
- while (!feof (fp))
- {
- linebuf[0] = '\0';
-
- fgets (linebuf, linebuf_size, fp);
- if (ferror (fp))
- {
- return -1;
- }
-
- /*
- * Check if the string is terminated with a newline - if not
- * then we must keep reading and discard until we get one.
- */
-
- linebuf_len = strlen (linebuf);
- if (linebuf[linebuf_len - 1] != '\n')
- {
- c = '\0';
- while (!ferror (fp) && !feof (fp))
- {
- c = fgetc (fp);
- if (c == '\n')
- {
- break;
- }
- }
- }
- else
- {
- linebuf[linebuf_len - 1] = '\0';
- }
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("getfileline: got line |%s|\n", linebuf));
-#endif
- if ((linebuf[0] == 0) && feof (fp))
- {
- DEBUG (4, ("getfileline: end of file reached\n"));
- return 0;
- }
-
- if (linebuf[0] == '#' || linebuf[0] == '\0')
- {
- DEBUG (6, ("getfileline: skipping comment or blank line\n"));
- continue;
- }
-
- p = (unsigned char *) strchr (linebuf, ':');
- if (p == NULL)
- {
- DEBUG (0, ("getfileline: malformed line entry (no :)\n"));
- continue;
- }
- return linebuf_len;
- }
- return -1;
-}
-#endif /* 0 */
-
-/****************************************************************************
-read a line from a file with possible \ continuation chars.
-Blanks at the start or end of a line are stripped.
-The string will be allocated if s2 is NULL
-****************************************************************************/
-char *
-fgets_slash (char *s2, int maxlen, FILE * f)
-{
- char *s = s2;
- int len = 0;
- int c;
- BOOL start_of_line = True;
-
- if (feof (f))
- return (NULL);
-
- if (!s2)
- {
- maxlen = MIN (maxlen, 8);
- s = (char *) Realloc (s, maxlen);
- }
-
- if (!s || maxlen < 2)
- return (NULL);
-
- *s = 0;
-
- while (len < maxlen - 1)
- {
- c = getc (f);
- switch (c)
- {
- case '\r':
- break;
- case '\n':
- while (len > 0 && s[len - 1] == ' ')
- {
- s[--len] = 0;
- }
- if (len > 0 && s[len - 1] == '\\')
- {
- s[--len] = 0;
- start_of_line = True;
- break;
- }
- return (s);
- case EOF:
- if (len <= 0 && !s2)
- free (s);
- return (len > 0 ? s : NULL);
- case ' ':
- if (start_of_line)
- break;
- default:
- start_of_line = False;
- s[len++] = c;
- s[len] = 0;
- }
- if (!s2 && len > maxlen - 3)
- {
- maxlen *= 2;
- s = (char *) Realloc (s, maxlen);
- if (!s)
- return (NULL);
- }
- }
- return (s);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/util_sock.c
^
|
@@ -1,982 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Samba utility functions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-const char *unix_error_string (int error_num);
-
-#ifdef WITH_SSL
-#include <ssl.h>
-#undef Realloc /* SSLeay defines this and samba has a function of this name */
-extern SSL *ssl;
-extern int sslFd;
-#endif /* WITH_SSL */
-
-extern int DEBUGLEVEL;
-
-BOOL passive = False;
-
-/* the client file descriptor */
-int Client = -1;
-
-/* the last IP received from */
-struct in_addr lastip;
-
-/* the last port received from */
-int lastport = 0;
-
-
-int smb_read_error = 0;
-
-#if 0
-/****************************************************************************
-determine if a file descriptor is in fact a socket
-****************************************************************************/
-BOOL
-is_a_socket (int fd)
-{
- int v;
- unsigned int l;
- l = sizeof (int);
- return (getsockopt (fd, SOL_SOCKET, SO_TYPE, (char *) &v, &l) == 0);
-}
-#endif /* 0 */
-
-enum SOCK_OPT_TYPES
-{ OPT_BOOL, OPT_INT, OPT_ON };
-
-static const struct
-{
- const char *name;
- int level;
- int option;
- int value;
- int opttype;
-} socket_options[] =
-{
- {
- "SO_KEEPALIVE", SOL_SOCKET, SO_KEEPALIVE, 0, OPT_BOOL},
- {
- "SO_REUSEADDR", SOL_SOCKET, SO_REUSEADDR, 0, OPT_BOOL},
- {
- "SO_BROADCAST", SOL_SOCKET, SO_BROADCAST, 0, OPT_BOOL},
-#ifdef TCP_NODELAY
- {
- "TCP_NODELAY", IPPROTO_TCP, TCP_NODELAY, 0, OPT_BOOL},
-#endif
-#ifdef IPTOS_LOWDELAY
- {
- "IPTOS_LOWDELAY", IPPROTO_IP, IP_TOS, IPTOS_LOWDELAY, OPT_ON},
-#endif
-#ifdef IPTOS_THROUGHPUT
- {
- "IPTOS_THROUGHPUT", IPPROTO_IP, IP_TOS, IPTOS_THROUGHPUT, OPT_ON},
-#endif
-#ifdef SO_SNDBUF
- {
- "SO_SNDBUF", SOL_SOCKET, SO_SNDBUF, 0, OPT_INT},
-#endif
-#ifdef SO_RCVBUF
- {
- "SO_RCVBUF", SOL_SOCKET, SO_RCVBUF, 0, OPT_INT},
-#endif
-#ifdef SO_SNDLOWAT
- {
- "SO_SNDLOWAT", SOL_SOCKET, SO_SNDLOWAT, 0, OPT_INT},
-#endif
-#ifdef SO_RCVLOWAT
- {
- "SO_RCVLOWAT", SOL_SOCKET, SO_RCVLOWAT, 0, OPT_INT},
-#endif
-#ifdef SO_SNDTIMEO
- {
- "SO_SNDTIMEO", SOL_SOCKET, SO_SNDTIMEO, 0, OPT_INT},
-#endif
-#ifdef SO_RCVTIMEO
- {
- "SO_RCVTIMEO", SOL_SOCKET, SO_RCVTIMEO, 0, OPT_INT},
-#endif
- {
-NULL, 0, 0, 0, 0}};
-
-
-
-/****************************************************************************
-set user socket options
-****************************************************************************/
-void
-set_socket_options (int fd, char *options)
-{
- fstring tok;
-
- while (next_token (&options, tok, " \t,", sizeof (tok)))
- {
- int ret = 0, i;
- int value = 1;
- char *p;
- BOOL got_value = False;
-
- if ((p = strchr (tok, '=')))
- {
- *p = 0;
- value = atoi (p + 1);
- got_value = True;
- }
-
- for (i = 0; socket_options[i].name; i++)
- if (strequal (socket_options[i].name, tok))
- break;
-
- if (!socket_options[i].name)
- {
- DEBUG (0, ("Unknown socket option %s\n", tok));
- continue;
- }
-
- switch (socket_options[i].opttype)
- {
- case OPT_BOOL:
- case OPT_INT:
- ret = setsockopt (fd, socket_options[i].level,
- socket_options[i].option, (char *) &value, sizeof (int));
- break;
-
- case OPT_ON:
- if (got_value)
- DEBUG (0, ("syntax error - %s does not take a value\n", tok));
-
- {
- int on = socket_options[i].value;
- ret = setsockopt (fd, socket_options[i].level,
- socket_options[i].option, (char *) &on, sizeof (int));
- }
- break;
- }
-
- if (ret != 0)
- DEBUG (0, ("Failed to set socket option %s\n", tok));
- }
-}
-
-
-
-/****************************************************************************
- close the socket communication
-****************************************************************************/
-void
-close_sockets (void)
-{
-#ifdef WITH_SSL
- sslutil_disconnect (Client);
-#endif /* WITH_SSL */
-
- close (Client);
- Client = -1;
-}
-
-
-
-/****************************************************************************
-write to a socket
-****************************************************************************/
-ssize_t
-write_socket (int fd, char *buf, size_t len)
-{
- ssize_t ret = 0;
-
- if (passive)
- return (len);
- DEBUG (6, ("write_socket(%d,%d)\n", fd, (int) len));
- ret = write_data (fd, buf, len);
-
- DEBUG (6, ("write_socket(%d,%d) wrote %d\n", fd, (int) len, (int) ret));
- if (ret <= 0)
- DEBUG (1, ("write_socket: Error writing %d bytes to socket %d: ERRNO = %s\n",
- (int) len, fd, unix_error_string (errno)));
-
- return (ret);
-}
-
-/****************************************************************************
-read from a socket
-****************************************************************************/
-ssize_t
-read_udp_socket (int fd, char *buf, size_t len)
-{
- ssize_t ret;
- struct sockaddr_in sock;
- unsigned int socklen;
-
- socklen = sizeof (sock);
- memset ((char *) &sock, '\0', socklen);
- memset ((char *) &lastip, '\0', sizeof (lastip));
- ret = (ssize_t) recvfrom (fd, buf, len, 0, (struct sockaddr *) &sock, &socklen);
- if (ret <= 0)
- {
- DEBUG (2, ("read socket failed. ERRNO=%s\n", unix_error_string (errno)));
- return (0);
- }
-
- lastip = sock.sin_addr;
- lastport = ntohs (sock.sin_port);
-
- DEBUG (10, ("read_udp_socket: lastip %s lastport %d read: %d\n",
- inet_ntoa (lastip), lastport, (int) ret));
-
- return (ret);
-}
-
-
-/****************************************************************************
-read data from a device with a timout in msec.
-mincount = if timeout, minimum to read before returning
-maxcount = number to be read.
-time_out = timeout in milliseconds
-****************************************************************************/
-
-ssize_t
-read_with_timeout (int fd, char *buf, size_t mincnt, size_t maxcnt, unsigned int time_out)
-{
- fd_set fds;
- int selrtn;
- ssize_t readret;
- size_t nread = 0;
- struct timeval timeout;
-
- /* just checking .... */
- if (maxcnt <= 0)
- return (0);
-
- smb_read_error = 0;
-
- /* Blocking read */
- if (time_out <= 0)
- {
- if (mincnt == 0)
- mincnt = maxcnt;
-
- while (nread < mincnt)
- {
-#ifdef WITH_SSL
- if (fd == sslFd)
- {
- readret = SSL_read (ssl, buf + nread, maxcnt - nread);
- }
- else
- {
- readret = read (fd, buf + nread, maxcnt - nread);
- }
-#else /* WITH_SSL */
- readret = read (fd, buf + nread, maxcnt - nread);
-#endif /* WITH_SSL */
-
- if (readret == 0)
- {
- DEBUG (5, ("read_with_timeout: blocking read. EOF from client.\n"));
- smb_read_error = READ_EOF;
- return -1;
- }
-
- if (readret == -1)
- {
- DEBUG (0, ("read_with_timeout: read error = %s.\n", unix_error_string (errno)));
- smb_read_error = READ_ERROR;
- return -1;
- }
- nread += readret;
- }
- return ((ssize_t) nread);
- }
-
- /* Most difficult - timeout read */
- /* If this is ever called on a disk file and
- mincnt is greater than the filesize then
- system performance will suffer severely as
- select always returns true on disk files */
-
- /* Set initial timeout */
- timeout.tv_sec = (time_t) (time_out / 1000);
- timeout.tv_usec = (long) (1000 * (time_out % 1000));
-
- for (nread = 0; nread < mincnt;)
- {
- FD_ZERO (&fds);
- FD_SET (fd, &fds);
-
- selrtn = sys_select (fd + 1, &fds, &timeout);
-
- /* Check if error */
- if (selrtn == -1)
- {
- /* something is wrong. Maybe the socket is dead? */
- DEBUG (0,
- ("read_with_timeout: timeout read. select error = %s.\n",
- unix_error_string (errno)));
- smb_read_error = READ_ERROR;
- return -1;
- }
-
- /* Did we timeout ? */
- if (selrtn == 0)
- {
- DEBUG (10, ("read_with_timeout: timeout read. select timed out.\n"));
- smb_read_error = READ_TIMEOUT;
- return -1;
- }
-
-#ifdef WITH_SSL
- if (fd == sslFd)
- {
- readret = SSL_read (ssl, buf + nread, maxcnt - nread);
- }
- else
- {
- readret = read (fd, buf + nread, maxcnt - nread);
- }
-#else /* WITH_SSL */
- readret = read (fd, buf + nread, maxcnt - nread);
-#endif /* WITH_SSL */
-
- if (readret == 0)
- {
- /* we got EOF on the file descriptor */
- DEBUG (5, ("read_with_timeout: timeout read. EOF from client.\n"));
- smb_read_error = READ_EOF;
- return -1;
- }
-
- if (readret == -1)
- {
- /* the descriptor is probably dead */
- DEBUG (0,
- ("read_with_timeout: timeout read. read error = %s.\n",
- unix_error_string (errno)));
- smb_read_error = READ_ERROR;
- return -1;
- }
-
- nread += readret;
- }
-
- /* Return the number we got */
- return ((ssize_t) nread);
-}
-
-#if 0
-/****************************************************************************
-send a keepalive packet (rfc1002)
-****************************************************************************/
-BOOL
-send_keepalive (int client)
-{
- unsigned char buf[4];
-
- buf[0] = 0x85;
- buf[1] = buf[2] = buf[3] = 0;
-
- return (write_data (client, (char *) buf, 4) == 4);
-}
-#endif /* 0 */
-
-
-/****************************************************************************
- read data from the client, reading exactly N bytes.
-****************************************************************************/
-ssize_t
-read_data (int fd, char *buffer, size_t N)
-{
- ssize_t ret;
- size_t total = 0;
-
- smb_read_error = 0;
-
- while (total < N)
- {
-#ifdef WITH_SSL
- if (fd == sslFd)
- {
- ret = SSL_read (ssl, buffer + total, N - total);
- }
- else
- {
- ret = read (fd, buffer + total, N - total);
- }
-#else /* WITH_SSL */
- ret = read (fd, buffer + total, N - total);
-#endif /* WITH_SSL */
-
- if (ret == 0)
- {
- DEBUG (10,
- ("read_data: read of %d returned 0. Error = %s\n", (int) (N - total),
- unix_error_string (errno)));
- smb_read_error = READ_EOF;
- return 0;
- }
- if (ret == -1)
- {
- DEBUG (0,
- ("read_data: read failure for %d. Error = %s\n", (int) (N - total),
- unix_error_string (errno)));
- smb_read_error = READ_ERROR;
- return -1;
- }
- total += ret;
- }
- return (ssize_t) total;
-}
-
-
-/****************************************************************************
- write data to a fd
-****************************************************************************/
-ssize_t
-write_data (int fd, char *buffer, size_t N)
-{
- size_t total = 0;
- ssize_t ret;
-
- while (total < N)
- {
-#ifdef WITH_SSL
- if (fd == sslFd)
- {
- ret = SSL_write (ssl, buffer + total, N - total);
- }
- else
- {
- ret = write (fd, buffer + total, N - total);
- }
-#else /* WITH_SSL */
- ret = write (fd, buffer + total, N - total);
-#endif /* WITH_SSL */
-
- if (ret == -1)
- {
- DEBUG (1, ("write_data: write failure. Error = %s\n", unix_error_string (errno)));
- return -1;
- }
- if (ret == 0)
- return total;
-
- total += ret;
- }
- return (ssize_t) total;
-}
-
-
-
-/****************************************************************************
-read 4 bytes of a smb packet and return the smb length of the packet
-store the result in the buffer
-This version of the function will return a length of zero on receiving
-a keepalive packet.
-timeout is in milliseconds.
-****************************************************************************/
-static ssize_t
-read_smb_length_return_keepalive (int fd, char *inbuf, unsigned int timeout)
-{
- ssize_t len = 0;
- int msg_type;
- BOOL ok = False;
-
- while (!ok)
- {
- if (timeout > 0)
- ok = (read_with_timeout (fd, inbuf, 4, 4, timeout) == 4);
- else
- ok = (read_data (fd, inbuf, 4) == 4);
-
- if (!ok)
- return (-1);
-
- len = smb_len (inbuf);
- msg_type = CVAL (inbuf, 0);
-
- if (msg_type == 0x85)
- DEBUG (5, ("Got keepalive packet\n"));
- }
-
- DEBUG (10, ("got smb length of %d\n", (int) len));
-
- return (len);
-}
-
-#if 0
-/****************************************************************************
-read 4 bytes of a smb packet and return the smb length of the packet
-store the result in the buffer. This version of the function will
-never return a session keepalive (length of zero).
-timeout is in milliseconds.
-****************************************************************************/
-ssize_t
-read_smb_length (int fd, char *inbuf, unsigned int timeout)
-{
- ssize_t len;
-
- for (;;)
- {
- len = read_smb_length_return_keepalive (fd, inbuf, timeout);
-
- if (len < 0)
- return len;
-
- /* Ignore session keepalives. */
- if (CVAL (inbuf, 0) != 0x85)
- break;
- }
-
- DEBUG (10, ("read_smb_length: got smb length of %d\n", len));
-
- return len;
-}
-#endif /* 0 */
-/****************************************************************************
- read an smb from a fd. Note that the buffer *MUST* be of size
- BUFFER_SIZE+SAFETY_MARGIN.
- The timeout is in milliseconds.
- This function will return on a
- receipt of a session keepalive packet.
-****************************************************************************/
-BOOL
-receive_smb (int fd, char *buffer, unsigned int timeout)
-{
- ssize_t len, ret;
-
- smb_read_error = 0;
-
- memset (buffer, '\0', smb_size + 100);
-
- len = read_smb_length_return_keepalive (fd, buffer, timeout);
- if (len < 0)
- {
- DEBUG (10, ("receive_smb: length < 0!\n"));
- return (False);
- }
-
- if (len > BUFFER_SIZE)
- {
- DEBUG (0, ("Invalid packet length! (%d bytes).\n", (int) len));
- if (len > BUFFER_SIZE + (SAFETY_MARGIN / 2))
- {
- exit (1);
- }
- }
-
- if (len > 0)
- {
- ret = read_data (fd, buffer + 4, len);
- if (ret != len)
- {
- smb_read_error = READ_ERROR;
- return False;
- }
- }
- return (True);
-}
-
-/****************************************************************************
- read an smb from a fd ignoring all keepalive packets. Note that the buffer
- *MUST* be of size BUFFER_SIZE+SAFETY_MARGIN.
- The timeout is in milliseconds
-
- This is exactly the same as receive_smb except that it never returns
- a session keepalive packet (just as receive_smb used to do).
- receive_smb was changed to return keepalives as the oplock processing means this call
- should never go into a blocking read.
-****************************************************************************/
-
-BOOL
-client_receive_smb (int fd, char *buffer, unsigned int timeout)
-{
- BOOL ret;
-
- for (;;)
- {
- ret = receive_smb (fd, buffer, timeout);
-
- if (!ret)
- {
- DEBUG (10, ("client_receive_smb failed\n"));
- show_msg (buffer);
- return ret;
- }
-
- /* Ignore session keepalive packets. */
- if (CVAL (buffer, 0) != 0x85)
- break;
- }
- show_msg (buffer);
- return ret;
-}
-
-/****************************************************************************
- send an null session message to a fd
-****************************************************************************/
-#if 0
-BOOL
-send_null_session_msg (int fd)
-{
- ssize_t ret;
- uint32 blank = 0;
- size_t len = 4;
- size_t nwritten = 0;
- char *buffer = (char *) ␣
-
- while (nwritten < len)
- {
- ret = write_socket (fd, buffer + nwritten, len - nwritten);
- if (ret <= 0)
- {
- DEBUG (0,
- ("send_null_session_msg: Error writing %d bytes to client. %d. Exiting\n",
- (int) len, (int) ret));
- close_sockets ();
- exit (1);
- }
- nwritten += ret;
- }
-
- DEBUG (10, ("send_null_session_msg: sent 4 null bytes to client.\n"));
- return True;
-}
-
-/****************************************************************************
- send an smb to a fd
-****************************************************************************/
-BOOL
-send_smb (int fd, char *buffer)
-{
- size_t len;
- size_t nwritten = 0;
- ssize_t ret;
- len = smb_len (buffer) + 4;
-
- while (nwritten < len)
- {
- ret = write_socket (fd, buffer + nwritten, len - nwritten);
- if (ret <= 0)
- {
- DEBUG (0, ("Error writing %d bytes to client. %d. Exiting\n", (int) len, (int) ret));
- close_sockets ();
- exit (1);
- }
- nwritten += ret;
- }
-
- return True;
-}
-
-
-
-/****************************************************************************
-send a single packet to a port on another machine
-****************************************************************************/
-BOOL
-send_one_packet (char *buf, int len, struct in_addr ip, int port, int type)
-{
- BOOL ret;
- int out_fd;
- struct sockaddr_in sock_out;
-
- if (passive)
- return (True);
-
- /* create a socket to write to */
- out_fd = socket (AF_INET, type, 0);
- if (out_fd == -1)
- {
- DEBUG (0, ("socket failed"));
- return False;
- }
-
- /* set the address and port */
- memset ((char *) &sock_out, '\0', sizeof (sock_out));
- putip ((char *) &sock_out.sin_addr, (char *) &ip);
- sock_out.sin_port = htons (port);
- sock_out.sin_family = AF_INET;
-
- if (DEBUGLEVEL > 0)
- DEBUG (3, ("sending a packet of len %d to (%s) on port %d of type %s\n",
- len, inet_ntoa (ip), port, type == SOCK_DGRAM ? "DGRAM" : "STREAM"));
-
- /* send it */
- ret = (sendto (out_fd, buf, len, 0, (struct sockaddr *) &sock_out, sizeof (sock_out)) >= 0);
-
- if (!ret)
- DEBUG (0, ("Packet send to %s(%d) failed ERRNO=%s\n",
- inet_ntoa (ip), port, unix_error_string (errno)));
-
- close (out_fd);
- return (ret);
-}
-#endif /* 0 */
-
-/****************************************************************************
-open a socket of the specified type, port and address for incoming data
-****************************************************************************/
-int
-open_socket_in (int type, int port, int dlevel, uint32 socket_addr, BOOL rebind)
-{
- struct hostent *hp;
- struct sockaddr_in sock;
- pstring host_name;
- int res;
-
- /* get my host name */
- if (gethostname (host_name, MAXHOSTNAMELEN) == -1)
- {
- DEBUG (0, ("gethostname failed\n"));
- return -1;
- }
-
- /* get host info */
- if ((hp = Get_Hostbyname (host_name)) == 0)
- {
- DEBUG (0, ("Get_Hostbyname: Unknown host %s\n", host_name));
- return -1;
- }
-
- memset ((char *) &sock, '\0', sizeof (sock));
- memcpy ((char *) &sock.sin_addr, (char *) hp->h_addr, hp->h_length);
-
-#ifdef HAVE_SOCK_SIN_LEN
- sock.sin_len = sizeof (sock);
-#endif
- sock.sin_port = htons (port);
- sock.sin_family = hp->h_addrtype;
- sock.sin_addr.s_addr = socket_addr;
- res = socket (hp->h_addrtype, type, 0);
- if (res == -1)
- {
- DEBUG (0, ("socket failed\n"));
- return -1;
- }
-
- {
- int val = 1;
- if (rebind)
- val = 1;
- else
- val = 0;
- setsockopt (res, SOL_SOCKET, SO_REUSEADDR, (char *) &val, sizeof (val));
- }
-
- /* now we've got a socket - we need to bind it */
- if (bind (res, (struct sockaddr *) &sock, sizeof (sock)) < 0)
- {
- if (port)
- {
- if (port == SMB_PORT || port == NMB_PORT)
- DEBUG (dlevel, ("bind failed on port %d socket_addr=%s (%s)\n",
- port, inet_ntoa (sock.sin_addr), unix_error_string (errno)));
- close (res);
-
- if (dlevel > 0 && port < 1000)
- port = 7999;
-
- if (port >= 1000 && port < 9000)
- return (open_socket_in (type, port + 1, dlevel, socket_addr, rebind));
- }
-
- return (-1);
- }
- DEBUG (3, ("bind succeeded on port %d\n", port));
-
- return res;
-}
-
-
-/****************************************************************************
- create an outgoing socket. timeout is in milliseconds.
- **************************************************************************/
-int
-open_socket_out (int type, struct in_addr *addr, int port, int timeout)
-{
- struct sockaddr_in sock_out;
- int res, ret;
- int connect_loop = 250; /* 250 milliseconds */
- int loops = (timeout) / connect_loop;
-
- /* create a socket to write to */
- res = socket (PF_INET, type, 0);
- if (res == -1)
- {
- DEBUG (0, ("socket error\n"));
- return -1;
- }
-
- if (type != SOCK_STREAM)
- return (res);
-
- memset ((char *) &sock_out, '\0', sizeof (sock_out));
- putip ((char *) &sock_out.sin_addr, (char *) addr);
-
- sock_out.sin_port = htons (port);
- sock_out.sin_family = PF_INET;
-
- /* set it non-blocking */
- set_blocking (res, False);
-
- DEBUG (3, ("Connecting to %s at port %d\n", inet_ntoa (*addr), port));
-
- /* and connect it to the destination */
- connect_again:
- ret = connect (res, (struct sockaddr *) &sock_out, sizeof (sock_out));
-
- /* Some systems return EAGAIN when they mean EINPROGRESS */
- if (ret < 0 && (errno == EINPROGRESS || errno == EALREADY || errno == EAGAIN) && loops--)
- {
- msleep (connect_loop);
- goto connect_again;
- }
-
- if (ret < 0 && (errno == EINPROGRESS || errno == EALREADY || errno == EAGAIN))
- {
- DEBUG (1, ("timeout connecting to %s:%d\n", inet_ntoa (*addr), port));
- close (res);
- return -1;
- }
-
-#ifdef EISCONN
- if (ret < 0 && errno == EISCONN)
- {
- errno = 0;
- ret = 0;
- }
-#endif
-
- if (ret < 0)
- {
- DEBUG (1, ("error connecting to %s:%d (%s)\n",
- inet_ntoa (*addr), port, unix_error_string (errno)));
- close (res);
- return -1;
- }
-
- /* set it blocking again */
- set_blocking (res, True);
-
- return res;
-}
-
-
-/*******************************************************************
- Reset the 'done' variables so after a client process is created
- from a fork call these calls will be re-done. This should be
- expanded if more variables need reseting.
- ******************************************************************/
-
-static BOOL global_client_name_done = False;
-static BOOL global_client_addr_done = False;
-
-/*******************************************************************
- return the DNS name of the client
- ******************************************************************/
-char *
-client_name (int fd)
-{
- struct sockaddr sa;
- struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);
- unsigned int length = sizeof (sa);
- static pstring name_buf;
- struct hostent *hp;
- static int last_fd = -1;
-
- if (global_client_name_done && last_fd == fd)
- return name_buf;
-
- last_fd = fd;
- global_client_name_done = False;
-
- pstrcpy (name_buf, "UNKNOWN");
-
- if (fd == -1)
- {
- return name_buf;
- }
-
- if (getpeername (fd, &sa, &length) < 0)
- {
- DEBUG (0, ("getpeername failed. Error was %s\n", unix_error_string (errno)));
- return name_buf;
- }
-
- /* Look up the remote host name. */
- if ((hp = gethostbyaddr ((char *) &sockin->sin_addr, sizeof (sockin->sin_addr), AF_INET)) == 0)
- {
- DEBUG (1, ("Gethostbyaddr failed for %s\n", client_addr (fd)));
- StrnCpy (name_buf, client_addr (fd), sizeof (name_buf) - 1);
- }
- else
- {
- StrnCpy (name_buf, (char *) hp->h_name, sizeof (name_buf) - 1);
- if (!matchname (name_buf, sockin->sin_addr))
- {
- DEBUG (0, ("Matchname failed on %s %s\n", name_buf, client_addr (fd)));
- pstrcpy (name_buf, "UNKNOWN");
- }
- }
- global_client_name_done = True;
- return name_buf;
-}
-
-/*******************************************************************
- return the IP addr of the client as a string
- ******************************************************************/
-char *
-client_addr (int fd)
-{
- struct sockaddr sa;
- struct sockaddr_in *sockin = (struct sockaddr_in *) (&sa);
- unsigned int length = sizeof (sa);
- static fstring addr_buf;
- static int last_fd = -1;
-
- if (global_client_addr_done && fd == last_fd)
- return addr_buf;
-
- last_fd = fd;
- global_client_addr_done = False;
-
- fstrcpy (addr_buf, "0.0.0.0");
-
- if (fd == -1)
- {
- return addr_buf;
- }
-
- if (getpeername (fd, &sa, &length) < 0)
- {
- DEBUG (0, ("getpeername failed. Error was %s\n", unix_error_string (errno)));
- return addr_buf;
- }
-
- fstrcpy (addr_buf, (char *) inet_ntoa (sockin->sin_addr));
-
- global_client_addr_done = True;
- return addr_buf;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/lib/util_str.c
^
|
@@ -1,1190 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Samba utility functions
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-static char *last_ptr = NULL;
-
-void
-set_first_token (char *ptr)
-{
- last_ptr = ptr;
-}
-
-/****************************************************************************
- Get the next token from a string, return False if none found
- handles double-quotes.
-Based on a routine by GJC@VILLAGE.COM.
-Extensively modified by Andrew.Tridgell@anu.edu.au
-****************************************************************************/
-BOOL
-next_token (char **ptr, char *buff, const char *sep, size_t bufsize)
-{
- char *s;
- BOOL quoted;
- size_t len = 1;
-
- if (!ptr)
- ptr = &last_ptr;
- if (!ptr)
- return (False);
-
- s = *ptr;
-
- /* default to simple separators */
- if (!sep)
- sep = " \t\n\r";
-
- /* find the first non sep char */
- while (*s && strchr (sep, *s))
- s++;
-
- /* nothing left? */
- if (!*s)
- return (False);
-
- /* copy over the token */
- for (quoted = False; len < bufsize && *s && (quoted || !strchr (sep, *s)); s++)
- {
- if (*s == '\"')
- {
- quoted = !quoted;
- }
- else
- {
- len++;
- *buff++ = *s;
- }
- }
-
- *ptr = (*s) ? s + 1 : s;
- *buff = 0;
- last_ptr = *ptr;
-
- return (True);
-}
-
-#if 0
-/****************************************************************************
-Convert list of tokens to array; dependent on above routine.
-Uses last_ptr from above - bit of a hack.
-****************************************************************************/
-char **
-toktocliplist (int *ctok, char *sep)
-{
- char *s = last_ptr;
- int ictok = 0;
- char **ret, **iret;
-
- if (!sep)
- sep = " \t\n\r";
-
- while (*s && strchr (sep, *s))
- s++;
-
- /* nothing left? */
- if (!*s)
- return (NULL);
-
- do
- {
- ictok++;
- while (*s && (!strchr (sep, *s)))
- s++;
- while (*s && strchr (sep, *s))
- *s++ = 0;
- }
- while (*s);
-
- *ctok = ictok;
- s = last_ptr;
-
- if (!(ret = iret = malloc (ictok * sizeof (char *))))
- return NULL;
-
- while (ictok--)
- {
- *iret++ = s;
- while (*s++);
- while (!*s)
- s++;
- }
-
- return ret;
-}
-#endif /*0 */
-
-/*******************************************************************
- case insensitive string compararison
-********************************************************************/
-int
-StrCaseCmp (const char *s, const char *t)
-{
- /* compare until we run out of string, either t or s, or find a difference */
- /* We *must* use toupper rather than tolower here due to the
- asynchronous upper to lower mapping.
- */
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- int diff;
- for (;;)
- {
- if (!*s || !*t)
- return toupper (*s) - toupper (*t);
- else if (is_sj_alph (*s) && is_sj_alph (*t))
- {
- diff = sj_toupper2 (*(s + 1)) - sj_toupper2 (*(t + 1));
- if (diff)
- return diff;
- s += 2;
- t += 2;
- }
- else if (is_shift_jis (*s) && is_shift_jis (*t))
- {
- diff = ((int) (unsigned char) *s) - ((int) (unsigned char) *t);
- if (diff)
- return diff;
- diff = ((int) (unsigned char) *(s + 1)) - ((int) (unsigned char) *(t + 1));
- if (diff)
- return diff;
- s += 2;
- t += 2;
- }
- else if (is_shift_jis (*s))
- return 1;
- else if (is_shift_jis (*t))
- return -1;
- else
- {
- diff = toupper (*s) - toupper (*t);
- if (diff)
- return diff;
- s++;
- t++;
- }
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- while (*s && *t && toupper (*s) == toupper (*t))
- {
- s++;
- t++;
- }
-
- return (toupper (*s) - toupper (*t));
- }
-}
-
-/*******************************************************************
- case insensitive string compararison, length limited
-********************************************************************/
-int
-StrnCaseCmp (const char *s, const char *t, size_t n)
-{
- /* compare until we run out of string, either t or s, or chars */
- /* We *must* use toupper rather than tolower here due to the
- asynchronous upper to lower mapping.
- */
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- int diff;
- for (; n > 0;)
- {
- if (!*s || !*t)
- return toupper (*s) - toupper (*t);
- else if (is_sj_alph (*s) && is_sj_alph (*t))
- {
- diff = sj_toupper2 (*(s + 1)) - sj_toupper2 (*(t + 1));
- if (diff)
- return diff;
- s += 2;
- t += 2;
- n -= 2;
- }
- else if (is_shift_jis (*s) && is_shift_jis (*t))
- {
- diff = ((int) (unsigned char) *s) - ((int) (unsigned char) *t);
- if (diff)
- return diff;
- diff = ((int) (unsigned char) *(s + 1)) - ((int) (unsigned char) *(t + 1));
- if (diff)
- return diff;
- s += 2;
- t += 2;
- n -= 2;
- }
- else if (is_shift_jis (*s))
- return 1;
- else if (is_shift_jis (*t))
- return -1;
- else
- {
- diff = toupper (*s) - toupper (*t);
- if (diff)
- return diff;
- s++;
- t++;
- n--;
- }
- }
- return 0;
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- while (n && *s && *t && toupper (*s) == toupper (*t))
- {
- s++;
- t++;
- n--;
- }
-
- /* not run out of chars - strings are different lengths */
- if (n)
- return (toupper (*s) - toupper (*t));
-
- /* identical up to where we run out of chars,
- and strings are same length */
- return (0);
- }
-}
-
-/*******************************************************************
- compare 2 strings
-********************************************************************/
-BOOL
-strequal (const char *s1, const char *s2)
-{
- if (s1 == s2)
- return (True);
- if (!s1 || !s2)
- return (False);
-
- return (StrCaseCmp (s1, s2) == 0);
-}
-
-/*******************************************************************
- compare 2 strings up to and including the nth char.
- ******************************************************************/
-BOOL
-strnequal (const char *s1, const char *s2, size_t n)
-{
- if (s1 == s2)
- return (True);
- if (!s1 || !s2 || !n)
- return (False);
-
- return (StrnCaseCmp (s1, s2, n) == 0);
-}
-
-/*******************************************************************
- compare 2 strings (case sensitive)
-********************************************************************/
-BOOL
-strcsequal (const char *s1, const char *s2)
-{
- if (s1 == s2)
- return (True);
- if (!s1 || !s2)
- return (False);
-
- return (strcmp (s1, s2) == 0);
-}
-
-
-/*******************************************************************
- convert a string to lower case
-********************************************************************/
-void
-strlower (char *s)
-{
- while (*s)
- {
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- if (is_shift_jis (*s))
- {
- if (is_sj_upper (s[0], s[1]))
- s[1] = sj_tolower2 (s[1]);
- s += 2;
- }
- else if (is_kana (*s))
- {
- s++;
- }
- else
- {
- if (isupper (*s))
- *s = tolower (*s);
- s++;
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- size_t skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (isupper (*s))
- *s = tolower (*s);
- s++;
- }
- }
- }
-}
-
-/*******************************************************************
- convert a string to upper case
-********************************************************************/
-void
-strupper (char *s)
-{
- while (*s)
- {
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- if (is_shift_jis (*s))
- {
- if (is_sj_lower (s[0], s[1]))
- s[1] = sj_toupper2 (s[1]);
- s += 2;
- }
- else if (is_kana (*s))
- {
- s++;
- }
- else
- {
- if (islower (*s))
- *s = toupper (*s);
- s++;
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- size_t skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (islower (*s))
- *s = toupper (*s);
- s++;
- }
- }
- }
-}
-
-#if 0
-/*******************************************************************
- convert a string to "normal" form
-********************************************************************/
-void
-strnorm (char *s)
-{
- extern int case_default;
- if (case_default == CASE_UPPER)
- strupper (s);
- else
- strlower (s);
-}
-
-/*******************************************************************
-check if a string is in "normal" case
-********************************************************************/
-BOOL
-strisnormal (char *s)
-{
- extern int case_default;
- if (case_default == CASE_UPPER)
- return (!strhaslower (s));
-
- return (!strhasupper (s));
-}
-#endif /* 0 */
-
-/****************************************************************************
- string replace
-****************************************************************************/
-void
-string_replace (char *s, char oldc, char newc)
-{
- size_t skip;
- while (*s)
- {
- skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (oldc == *s)
- *s = newc;
- s++;
- }
- }
-}
-
-
-/*******************************************************************
-skip past some strings in a buffer
-********************************************************************/
-char *
-skip_string (char *buf, size_t n)
-{
- while (n--)
- buf += strlen (buf) + 1;
- return (buf);
-}
-
-/*******************************************************************
- Count the number of characters in a string. Normally this will
- be the same as the number of bytes in a string for single byte strings,
- but will be different for multibyte.
- 16.oct.98, jdblair@cobaltnet.com.
-********************************************************************/
-
-size_t
-str_charnum (const char *s)
-{
- size_t len = 0;
-
- while (*s != '\0')
- {
- int skip = skip_multibyte_char (*s);
- s += (skip ? skip : 1);
- len++;
- }
- return len;
-}
-
-/*******************************************************************
-trim the specified elements off the front and back of a string
-********************************************************************/
-
-BOOL
-trim_string (char *s, const char *front, const char *back)
-{
- BOOL ret = False;
- size_t front_len = (front && *front) ? strlen (front) : 0;
- size_t back_len = (back && *back) ? strlen (back) : 0;
- size_t s_len;
-
- while (front_len && strncmp (s, front, front_len) == 0)
- {
- char *p = s;
- ret = True;
- while (1)
- {
- if (!(*p = p[front_len]))
- break;
- p++;
- }
- }
-
- /*
- * We split out the multibyte code page
- * case here for speed purposes. Under a
- * multibyte code page we need to walk the
- * string forwards only and multiple times.
- * Thanks to John Blair for finding this
- * one. JRA.
- */
-
- if (back_len)
- {
- if (!is_multibyte_codepage ())
- {
- s_len = strlen (s);
- while ((s_len >= back_len) && (strncmp (s + s_len - back_len, back, back_len) == 0))
- {
- ret = True;
- s[s_len - back_len] = '\0';
- s_len = strlen (s);
- }
- }
- else
- {
-
- /*
- * Multibyte code page case.
- * Keep going through the string, trying
- * to match the 'back' string with the end
- * of the string. If we get a match, truncate
- * 'back' off the end of the string and
- * go through the string again from the
- * start. Keep doing this until we have
- * gone through the string with no match
- * at the string end.
- */
-
- size_t mb_back_len = str_charnum (back);
- size_t mb_s_len = str_charnum (s);
-
- while (mb_s_len >= mb_back_len)
- {
- size_t charcount = 0;
- char *mbp = s;
-
- while (charcount < (mb_s_len - mb_back_len))
- {
- size_t skip = skip_multibyte_char (*mbp);
- mbp += (skip ? skip : 1);
- charcount++;
- }
-
- /*
- * mbp now points at mb_back_len multibyte
- * characters from the end of s.
- */
-
- if (strcmp (mbp, back) == 0)
- {
- ret = True;
- *mbp = '\0';
- mb_s_len = str_charnum (s);
- mbp = s;
- }
- else
- break;
- } /* end while mb_s_len... */
- } /* end else .. */
- } /* end if back_len .. */
-
- return (ret);
-}
-
-#if 0
-/****************************************************************************
-does a string have any uppercase chars in it?
-****************************************************************************/
-BOOL
-strhasupper (const char *s)
-{
- while (*s)
- {
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- if (is_shift_jis (*s))
- s += 2;
- else if (is_kana (*s))
- s++;
- else
- {
- if (isupper (*s))
- return (True);
- s++;
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- size_t skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (isupper (*s))
- return (True);
- s++;
- }
- }
- }
- return (False);
-}
-
-
-/****************************************************************************
-does a string have any lowercase chars in it?
-****************************************************************************/
-BOOL
-strhaslower (const char *s)
-{
- while (*s)
- {
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- if (is_shift_jis (*s))
- {
- if (is_sj_upper (s[0], s[1]))
- return (True);
- if (is_sj_lower (s[0], s[1]))
- return (True);
- s += 2;
- }
- else if (is_kana (*s))
- {
- s++;
- }
- else
- {
- if (islower (*s))
- return (True);
- s++;
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- size_t skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (islower (*s))
- return (True);
- s++;
- }
- }
- }
- return (False);
-}
-#endif /*0 */
-
-/****************************************************************************
-find the number of chars in a string
-****************************************************************************/
-size_t
-count_chars (const char *s, char c)
-{
- size_t count = 0;
-
-#if !defined(KANJI_WIN95_COMPATIBILITY)
- /*
- * For completeness we should put in equivalent code for code pages
- * 949 (Korean hangul) and 950 (Big5 Traditional Chinese) here - but
- * doubt anyone wants Samba to behave differently from Win95 and WinNT
- * here. They both treat full width ascii characters as case senstive
- * filenames (ie. they don't do the work we do here).
- * JRA.
- */
-
- if (lp_client_code_page () == KANJI_CODEPAGE)
- {
- /* Win95 treats full width ascii characters as case sensitive. */
- while (*s)
- {
- if (is_shift_jis (*s))
- s += 2;
- else
- {
- if (*s == c)
- count++;
- s++;
- }
- }
- }
- else
-#endif /* KANJI_WIN95_COMPATIBILITY */
- {
- while (*s)
- {
- size_t skip = skip_multibyte_char (*s);
- if (skip != 0)
- s += skip;
- else
- {
- if (*s == c)
- count++;
- s++;
- }
- }
- }
- return (count);
-}
-
-
-
-/*******************************************************************
-safe string copy into a known length string. maxlength does not
-include the terminating zero.
-********************************************************************/
-char *
-safe_strcpy (char *dest, const char *src, size_t maxlength)
-{
- size_t len;
-
- if (!dest)
- {
- DEBUG (0, ("ERROR: NULL dest in safe_strcpy\n"));
- return NULL;
- }
-
- if (!src)
- {
- *dest = 0;
- return dest;
- }
-
- len = strlen (src);
-
- if (len > maxlength)
- {
- DEBUG (0, ("ERROR: string overflow by %d in safe_strcpy [%.50s]\n",
- (int) (len - maxlength), src));
- len = maxlength;
- }
-
- memcpy (dest, src, len);
- dest[len] = 0;
- return dest;
-}
-
-/*******************************************************************
-safe string cat into a string. maxlength does not
-include the terminating zero.
-********************************************************************/
-char *
-safe_strcat (char *dest, const char *src, size_t maxlength)
-{
- size_t src_len, dest_len;
-
- if (!dest)
- {
- DEBUG (0, ("ERROR: NULL dest in safe_strcat\n"));
- return NULL;
- }
-
- if (!src)
- {
- return dest;
- }
-
- src_len = strlen (src);
- dest_len = strlen (dest);
-
- if (src_len + dest_len > maxlength)
- {
- DEBUG (0, ("ERROR: string overflow by %d in safe_strcat [%.50s]\n",
- (int) (src_len + dest_len - maxlength), src));
- src_len = maxlength - dest_len;
- }
-
- memcpy (&dest[dest_len], src, src_len);
- dest[dest_len + src_len] = 0;
- return dest;
-}
-
-/****************************************************************************
-this is a safer strcpy(), meant to prevent core dumps when nasty things happen
-****************************************************************************/
-char *
-StrCpy (char *dest, const char *src)
-{
- char *d = dest;
-
- /* I don't want to get lazy with these ... */
- SMB_ASSERT (dest && src);
-
- if (!dest)
- return (NULL);
- if (!src)
- {
- *dest = 0;
- return (dest);
- }
- while ((*d++ = *src++));
- return (dest);
-}
-
-/****************************************************************************
-like strncpy but always null terminates. Make sure there is room!
-****************************************************************************/
-char *
-StrnCpy (char *dest, const char *src, size_t n)
-{
- char *d = dest;
- if (!dest)
- return (NULL);
- if (!src)
- {
- *dest = 0;
- return (dest);
- }
- while (n-- && (*d++ = *src++));
- *d = 0;
- return (dest);
-}
-
-#if 0
-/****************************************************************************
-like strncpy but copies up to the character marker. always null terminates.
-returns a pointer to the character marker in the source string (src).
-****************************************************************************/
-char *
-strncpyn (char *dest, const char *src, size_t n, char c)
-{
- char *p;
- size_t str_len;
-
- p = strchr (src, c);
- if (p == NULL)
- {
- DEBUG (5, ("strncpyn: separator character (%c) not found\n", c));
- return NULL;
- }
-
- str_len = PTR_DIFF (p, src);
- strncpy (dest, src, MIN (n, str_len));
- dest[str_len] = '\0';
-
- return p;
-}
-
-
-/*************************************************************
- Routine to get hex characters and turn them into a 16 byte array.
- the array can be variable length, and any non-hex-numeric
- characters are skipped. "0xnn" or "0Xnn" is specially catered
- for.
-
- valid examples: "0A5D15"; "0x15, 0x49, 0xa2"; "59\ta9\te3\n"
-
-**************************************************************/
-size_t
-strhex_to_str (char *p, size_t len, const char *strhex)
-{
- size_t i;
- size_t num_chars = 0;
- unsigned char lonybble, hinybble;
- char *hexchars = "0123456789ABCDEF";
- char *p1 = NULL, *p2 = NULL;
-
- for (i = 0; i < len && strhex[i] != 0; i++)
- {
- if (strnequal (hexchars, "0x", 2))
- {
- i++; /* skip two chars */
- continue;
- }
-
- if (!(p1 = strchr (hexchars, toupper (strhex[i]))))
- {
- break;
- }
-
- i++; /* next hex digit */
-
- if (!(p2 = strchr (hexchars, toupper (strhex[i]))))
- {
- break;
- }
-
- /* get the two nybbles */
- hinybble = PTR_DIFF (p1, hexchars);
- lonybble = PTR_DIFF (p2, hexchars);
-
- p[num_chars] = (hinybble << 4) | lonybble;
- num_chars++;
-
- p1 = NULL;
- p2 = NULL;
- }
- return num_chars;
-}
-
-/****************************************************************************
-check if a string is part of a list
-****************************************************************************/
-BOOL
-in_list (char *s, char *list, BOOL casesensitive)
-{
- pstring tok;
- char *p = list;
-
- if (!list)
- return (False);
-
- while (next_token (&p, tok, LIST_SEP, sizeof (tok)))
- {
- if (casesensitive)
- {
- if (strcmp (tok, s) == 0)
- return (True);
- }
- else
- {
- if (StrCaseCmp (tok, s) == 0)
- return (True);
- }
- }
- return (False);
-}
-#endif /*0 */
-
-/* this is used to prevent lots of mallocs of size 1 */
-static char *null_string = NULL;
-
-/****************************************************************************
-set a string value, allocing the space for the string
-****************************************************************************/
-BOOL
-string_init (char **dest, const char *src)
-{
- size_t l;
- if (!src)
- src = "";
-
- l = strlen (src);
-
- if (l == 0)
- {
- if (!null_string)
- {
- if ((null_string = (char *) malloc (1)) == NULL)
- {
- DEBUG (0, ("string_init: malloc fail for null_string.\n"));
- return False;
- }
- *null_string = 0;
- }
- *dest = null_string;
- }
- else
- {
- (*dest) = (char *) malloc (l + 1);
- if ((*dest) == NULL)
- {
- DEBUG (0, ("Out of memory in string_init\n"));
- return False;
- }
-
- pstrcpy (*dest, src);
- }
- return (True);
-}
-
-/****************************************************************************
-free a string value
-****************************************************************************/
-void
-string_free (char **s)
-{
- if (!s || !(*s))
- return;
- if (*s == null_string)
- *s = NULL;
- if (*s)
- free (*s);
- *s = NULL;
-}
-
-/****************************************************************************
-set a string value, allocing the space for the string, and deallocating any
-existing space
-****************************************************************************/
-BOOL
-string_set (char **dest, const char *src)
-{
- string_free (dest);
-
- return (string_init (dest, src));
-}
-
-
-/****************************************************************************
-substitute a string for a pattern in another string. Make sure there is
-enough room!
-
-This routine looks for pattern in s and replaces it with
-insert. It may do multiple replacements.
-
-any of " ; ' or ` in the insert string are replaced with _
-****************************************************************************/
-void
-string_sub (char *s, const char *pattern, const char *insert)
-{
- char *p;
- size_t ls, lp, li, i;
-
- if (!insert || !pattern || !s)
- return;
-
- ls = strlen (s);
- lp = strlen (pattern);
- li = strlen (insert);
-
- if (!*pattern)
- return;
-
- while (lp <= ls && (p = strstr (s, pattern)))
- {
- memmove (p + li, p + lp, ls + 1 - (PTR_DIFF (p, s) + lp));
- for (i = 0; i < li; i++)
- {
- switch (insert[i])
- {
- case '`':
- case '"':
- case '\'':
- case ';':
- p[i] = '_';
- break;
- default:
- p[i] = insert[i];
- }
- }
- s = p + li;
- ls += (li - lp);
- }
-}
-
-#if 0
-/****************************************************************************
-similar to string_sub() but allows for any character to be substituted.
-Use with caution!
-****************************************************************************/
-void
-all_string_sub (char *s, const char *pattern, const char *insert)
-{
- char *p;
- size_t ls, lp, li;
-
- if (!insert || !pattern || !s)
- return;
-
- ls = strlen (s);
- lp = strlen (pattern);
- li = strlen (insert);
-
- if (!*pattern)
- return;
-
- while (lp <= ls && (p = strstr (s, pattern)))
- {
- memmove (p + li, p + lp, ls + 1 - (PTR_DIFF (p, s) + lp));
- memcpy (p, insert, li);
- s = p + li;
- ls += (li - lp);
- }
-}
-
-
-/****************************************************************************
- splits out the front and back at a separator.
-****************************************************************************/
-void
-split_at_last_component (char *path, char *front, char sep, char *back)
-{
- char *p = strrchr (path, sep);
-
- if (p != NULL)
- {
- *p = 0;
- }
- if (front != NULL)
- {
- pstrcpy (front, path);
- }
- if (p != NULL)
- {
- if (back != NULL)
- {
- pstrcpy (back, p + 1);
- }
- *p = '\\';
- }
- else
- {
- if (back != NULL)
- {
- back[0] = 0;
- }
- }
-}
-#endif /*0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/clientgen.c
^
|
@@ -1,3092 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB client generic functions
-
- Copyright (C) Andrew Tridgell 1994-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define NO_SYSLOG
-
-#include "includes.h"
-#include "trans2.h"
-
-
-extern int DEBUGLEVEL;
-extern pstring user_socket_options;
-
-/*
- * Change the port number used to call on
- */
-int
-cli_set_port (struct cli_state *cli, int port)
-{
- if (port > 0)
- cli->port = port;
-
- return cli->port;
-}
-
-/****************************************************************************
-recv an smb
-****************************************************************************/
-static BOOL
-cli_receive_smb (struct cli_state *cli)
-{
- return client_receive_smb (cli->fd, cli->inbuf, cli->timeout);
-}
-
-/****************************************************************************
- send an smb to a fd and re-establish if necessary
-****************************************************************************/
-static BOOL
-cli_send_smb (struct cli_state *cli)
-{
- size_t len;
- size_t nwritten = 0;
- ssize_t ret;
- BOOL reestablished = False;
-
- len = smb_len (cli->outbuf) + 4;
-
- while (nwritten < len)
- {
- ret = write_socket (cli->fd, cli->outbuf + nwritten, len - nwritten);
- if (ret <= 0 && errno == EPIPE && !reestablished)
- {
- if (cli_reestablish_connection (cli))
- {
- reestablished = True;
- nwritten = 0;
- continue;
- }
- }
- if (ret <= 0)
- {
- DEBUG (0, ("Error writing %d bytes to client. %d. Exiting\n", (int) len, (int) ret));
- close_sockets ();
- exit (1);
- }
- nwritten += ret;
- }
-
- return True;
-}
-
-/*****************************************************
- RAP error codes - a small start but will be extended.
-*******************************************************/
-
-struct
-{
- int err;
- const char *message;
-} const rap_errmap[] = {
- {5, "User has insufficient privilege"},
- {86, "The specified password is invalid"},
- {2226, "Operation only permitted on a Primary Domain Controller"},
- {2242, "The password of this user has expired."},
- {2243, "The password of this user cannot change."},
- {2244, "This password cannot be used now (password history conflict)."},
- {2245, "The password is shorter than required."},
- {2246, "The password of this user is too recent to change."},
- {0, NULL}
-};
-
-/****************************************************************************
- return a description of an SMB error
-****************************************************************************/
-static char *
-cli_smb_errstr (struct cli_state *cli)
-{
- return smb_errstr (cli->inbuf);
-}
-
-/******************************************************
- Return an error message - either an SMB error or a RAP
- error.
-*******************************************************/
-
-char *
-cli_errstr (struct cli_state *cli)
-{
- static fstring error_message;
- uint8 errclass;
- uint32 errnum;
- uint32 nt_rpc_error;
- int i;
-
- /*
- * Errors are of three kinds - smb errors,
- * dealt with by cli_smb_errstr, NT errors,
- * whose code is in cli.nt_error, and rap
- * errors, whose error code is in cli.rap_error.
- */
-
- cli_error (cli, &errclass, &errnum, &nt_rpc_error);
-
- if (errclass != 0)
- {
- return cli_smb_errstr (cli);
- }
-
- /*
- * Was it an NT error ?
- */
-
- if (nt_rpc_error)
- {
- const char *nt_msg = get_nt_error_msg (nt_rpc_error);
-
- if (nt_msg == NULL)
- {
- slprintf (error_message, sizeof (fstring) - 1, "NT code %d", nt_rpc_error);
- }
- else
- {
- fstrcpy (error_message, nt_msg);
- }
-
- return error_message;
- }
-
- /*
- * Must have been a rap error.
- */
-
- slprintf (error_message, sizeof (error_message) - 1, "code %d", cli->rap_error);
-
- for (i = 0; rap_errmap[i].message != NULL; i++)
- {
- if (rap_errmap[i].err == cli->rap_error)
- {
- fstrcpy (error_message, rap_errmap[i].message);
- break;
- }
- }
-
- return error_message;
-}
-
-/****************************************************************************
-setup basics in a outgoing packet
-****************************************************************************/
-static void
-cli_setup_packet (struct cli_state *cli)
-{
- cli->rap_error = 0;
- cli->nt_error = 0;
- SSVAL (cli->outbuf, smb_pid, cli->pid);
- SSVAL (cli->outbuf, smb_uid, cli->vuid);
- SSVAL (cli->outbuf, smb_mid, cli->mid);
- if (cli->protocol > PROTOCOL_CORE)
- {
- SCVAL (cli->outbuf, smb_flg, 0x8);
- SSVAL (cli->outbuf, smb_flg2, 0x1);
- }
-}
-
-#if 0
-/*****************************************************************************
- Convert a character pointer in a cli_call_api() response to a form we can use.
- This function contains code to prevent core dumps if the server returns
- invalid data.
-*****************************************************************************/
-static char *
-fix_char_ptr (unsigned int datap, unsigned int converter, char *rdata, int rdrcnt)
-{
- if (datap == 0)
- { /* turn NULL pointers into zero length strings */
- return "";
- }
- else
- {
- unsigned int offset = datap - converter;
-
- if (offset >= rdrcnt)
- {
- DEBUG (1, ("bad char ptr: datap=%u, converter=%u rdrcnt=%d>",
- datap, converter, rdrcnt));
- return "<ERROR>";
- }
- else
- {
- return &rdata[offset];
- }
- }
-}
-#endif /* 0 */
-/****************************************************************************
- send a SMB trans or trans2 request
- ****************************************************************************/
-static BOOL
-cli_send_trans (struct cli_state *cli, int trans,
- const char *name, int pipe_name_len,
- int fid, int flags,
- uint16 * setup, int lsetup, int msetup,
- char *param, int lparam, int mparam, char *data, int ldata, int mdata)
-{
- int i;
- int this_ldata, this_lparam;
- int tot_data = 0, tot_param = 0;
- char *outdata, *outparam;
- char *p;
-
- this_lparam = MIN (lparam, cli->max_xmit - (500 + lsetup * 2)); /* hack */
- this_ldata = MIN (ldata, cli->max_xmit - (500 + lsetup * 2 + this_lparam));
-
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 14 + lsetup, 0, True);
- CVAL (cli->outbuf, smb_com) = trans;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- outparam = smb_buf (cli->outbuf) + (trans == SMBtrans ? pipe_name_len + 1 : 3);
- outdata = outparam + this_lparam;
-
- /* primary request */
- SSVAL (cli->outbuf, smb_tpscnt, lparam); /* tpscnt */
- SSVAL (cli->outbuf, smb_tdscnt, ldata); /* tdscnt */
- SSVAL (cli->outbuf, smb_mprcnt, mparam); /* mprcnt */
- SSVAL (cli->outbuf, smb_mdrcnt, mdata); /* mdrcnt */
- SCVAL (cli->outbuf, smb_msrcnt, msetup); /* msrcnt */
- SSVAL (cli->outbuf, smb_flags, flags); /* flags */
- SIVAL (cli->outbuf, smb_timeout, 0); /* timeout */
- SSVAL (cli->outbuf, smb_pscnt, this_lparam); /* pscnt */
- SSVAL (cli->outbuf, smb_psoff, smb_offset (outparam, cli->outbuf)); /* psoff */
- SSVAL (cli->outbuf, smb_dscnt, this_ldata); /* dscnt */
- SSVAL (cli->outbuf, smb_dsoff, smb_offset (outdata, cli->outbuf)); /* dsoff */
- SCVAL (cli->outbuf, smb_suwcnt, lsetup); /* suwcnt */
- for (i = 0; i < lsetup; i++) /* setup[] */
- SSVAL (cli->outbuf, smb_setup + i * 2, setup[i]);
- p = smb_buf (cli->outbuf);
- if (trans == SMBtrans)
- {
- memcpy (p, name, pipe_name_len + 1); /* name[] */
- }
- else
- {
- *p++ = 0; /* put in a null smb_name */
- *p++ = 'D';
- *p++ = ' '; /* observed in OS/2 */
- }
- if (this_lparam) /* param[] */
- memcpy (outparam, param, this_lparam);
- if (this_ldata) /* data[] */
- memcpy (outdata, data, this_ldata);
- set_message (cli->outbuf, 14 + lsetup, /* wcnt, bcc */
- PTR_DIFF (outdata + this_ldata, smb_buf (cli->outbuf)), False);
-
- show_msg (cli->outbuf);
- cli_send_smb (cli);
-
- if (this_ldata < ldata || this_lparam < lparam)
- {
- /* receive interim response */
- if (!cli_receive_smb (cli) || CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return (False);
- }
-
- tot_data = this_ldata;
- tot_param = this_lparam;
-
- while (tot_data < ldata || tot_param < lparam)
- {
- this_lparam = MIN (lparam - tot_param, cli->max_xmit - 500); /* hack */
- this_ldata = MIN (ldata - tot_data, cli->max_xmit - (500 + this_lparam));
-
- set_message (cli->outbuf, trans == SMBtrans ? 8 : 9, 0, True);
- CVAL (cli->outbuf, smb_com) = trans == SMBtrans ? SMBtranss : SMBtranss2;
-
- outparam = smb_buf (cli->outbuf);
- outdata = outparam + this_lparam;
-
- /* secondary request */
- SSVAL (cli->outbuf, smb_tpscnt, lparam); /* tpscnt */
- SSVAL (cli->outbuf, smb_tdscnt, ldata); /* tdscnt */
- SSVAL (cli->outbuf, smb_spscnt, this_lparam); /* pscnt */
- SSVAL (cli->outbuf, smb_spsoff, smb_offset (outparam, cli->outbuf)); /* psoff */
- SSVAL (cli->outbuf, smb_spsdisp, tot_param); /* psdisp */
- SSVAL (cli->outbuf, smb_sdscnt, this_ldata); /* dscnt */
- SSVAL (cli->outbuf, smb_sdsoff, smb_offset (outdata, cli->outbuf)); /* dsoff */
- SSVAL (cli->outbuf, smb_sdsdisp, tot_data); /* dsdisp */
- if (trans == SMBtrans2)
- SSVALS (cli->outbuf, smb_sfid, fid); /* fid */
- if (this_lparam) /* param[] */
- memcpy (outparam, param, this_lparam);
- if (this_ldata) /* data[] */
- memcpy (outdata, data, this_ldata);
- set_message (cli->outbuf, trans == SMBtrans ? 8 : 9, /* wcnt, bcc */
- PTR_DIFF (outdata + this_ldata, smb_buf (cli->outbuf)), False);
-
- show_msg (cli->outbuf);
- cli_send_smb (cli);
-
- tot_data += this_ldata;
- tot_param += this_lparam;
- }
- }
-
- return (True);
-}
-
-
-/****************************************************************************
- receive a SMB trans or trans2 response allocating the necessary memory
- ****************************************************************************/
-static BOOL
-cli_receive_trans (struct cli_state *cli, int trans,
- char **param, int *param_len, char **data, int *data_len)
-{
- int total_data = 0;
- int total_param = 0;
- int this_data, this_param;
- uint8 eclass;
- uint32 ecode;
-
- *data_len = *param_len = 0;
-
- if (!cli_receive_smb (cli))
- return False;
-
- show_msg (cli->inbuf);
-
- /* sanity check */
- if (CVAL (cli->inbuf, smb_com) != trans)
- {
- DEBUG (0, ("Expected %s response, got command 0x%02x\n",
- trans == SMBtrans ? "SMBtrans" : "SMBtrans2", CVAL (cli->inbuf, smb_com)));
- return (False);
- }
-
- /*
- * An NT RPC pipe call can return ERRDOS, ERRmoredata
- * to a trans call. This is not an error and should not
- * be treated as such.
- */
-
- if (cli_error (cli, &eclass, &ecode, NULL))
- {
- if (cli->nt_pipe_fnum == 0 || !(eclass == ERRDOS && ecode == ERRmoredata))
- return (False);
- }
-
- /* parse out the lengths */
- total_data = SVAL (cli->inbuf, smb_tdrcnt);
- total_param = SVAL (cli->inbuf, smb_tprcnt);
-
- /* allocate it */
- *data = Realloc (*data, total_data);
- *param = Realloc (*param, total_param);
-
- while (1)
- {
- this_data = SVAL (cli->inbuf, smb_drcnt);
- this_param = SVAL (cli->inbuf, smb_prcnt);
-
- if (this_data + *data_len > total_data || this_param + *param_len > total_param)
- {
- DEBUG (1, ("Data overflow in cli_receive_trans\n"));
- return False;
- }
-
- if (this_data)
- memcpy (*data + SVAL (cli->inbuf, smb_drdisp),
- smb_base (cli->inbuf) + SVAL (cli->inbuf, smb_droff), this_data);
- if (this_param)
- memcpy (*param + SVAL (cli->inbuf, smb_prdisp),
- smb_base (cli->inbuf) + SVAL (cli->inbuf, smb_proff), this_param);
- *data_len += this_data;
- *param_len += this_param;
-
- /* parse out the total lengths again - they can shrink! */
- total_data = SVAL (cli->inbuf, smb_tdrcnt);
- total_param = SVAL (cli->inbuf, smb_tprcnt);
-
- if (total_data <= *data_len && total_param <= *param_len)
- break;
-
- if (!cli_receive_smb (cli))
- return False;
-
- show_msg (cli->inbuf);
-
- /* sanity check */
- if (CVAL (cli->inbuf, smb_com) != trans)
- {
- DEBUG (0, ("Expected %s response, got command 0x%02x\n",
- trans == SMBtrans ? "SMBtrans" : "SMBtrans2", CVAL (cli->inbuf, smb_com)));
- return (False);
- }
- if (cli_error (cli, &eclass, &ecode, NULL))
- {
- if (cli->nt_pipe_fnum == 0 || !(eclass == ERRDOS && ecode == ERRmoredata))
- return (False);
- }
- }
-
- return (True);
-}
-
-#if 0
-/****************************************************************************
-Call a remote api on an arbitrary pipe. takes param, data and setup buffers.
-****************************************************************************/
-BOOL
-cli_api_pipe (struct cli_state * cli, char *pipe_name, int pipe_name_len,
- uint16 * setup, uint32 setup_count, uint32 max_setup_count,
- char *params, uint32 param_count, uint32 max_param_count,
- char *data, uint32 data_count, uint32 max_data_count,
- char **rparam, uint32 * rparam_count, char **rdata, uint32 * rdata_count)
-{
- if (pipe_name_len == 0)
- pipe_name_len = strlen (pipe_name);
-
- cli_send_trans (cli, SMBtrans, pipe_name, pipe_name_len, 0, 0, /* fid, flags */
- setup, setup_count, max_setup_count,
- params, param_count, max_param_count, data, data_count, max_data_count);
-
- return (cli_receive_trans (cli, SMBtrans,
- rparam, (int *) rparam_count, rdata, (int *) rdata_count));
-}
-#endif /*0 */
-
-/****************************************************************************
-call a remote api
-****************************************************************************/
-BOOL
-cli_api (struct cli_state *cli,
- char *param, int prcnt, int mprcnt,
- char *data, int drcnt, int mdrcnt, char **rparam, int *rprcnt, char **rdata, int *rdrcnt)
-{
- cli_send_trans (cli, SMBtrans, PIPE_LANMAN, strlen (PIPE_LANMAN), /* Name, length */
- 0, 0, /* fid, flags */
- NULL, 0, 0, /* Setup, length, max */
- param, prcnt, mprcnt, /* Params, length, max */
- data, drcnt, mdrcnt /* Data, length, max */
- );
-
- return (cli_receive_trans (cli, SMBtrans, rparam, rprcnt, rdata, rdrcnt));
-}
-
-#if 0
-/****************************************************************************
-perform a NetWkstaUserLogon
-****************************************************************************/
-BOOL
-cli_NetWkstaUserLogon (struct cli_state * cli, char *user, char *workstation)
-{
- char *rparam = NULL;
- char *rdata = NULL;
- char *p;
- int rdrcnt, rprcnt;
- pstring param;
-
- memset (param, 0, sizeof (param));
-
- /* send a SMBtrans command with api NetWkstaUserLogon */
- p = param;
- SSVAL (p, 0, 132); /* api number */
- p += 2;
- pstrcpy (p, "OOWb54WrLh");
- p = skip_string (p, 1);
- pstrcpy (p, "WB21BWDWWDDDDDDDzzzD");
- p = skip_string (p, 1);
- SSVAL (p, 0, 1);
- p += 2;
- pstrcpy (p, user);
- strupper (p);
- p += 21;
- p++;
- p += 15;
- p++;
- pstrcpy (p, workstation);
- strupper (p);
- p += 16;
- SSVAL (p, 0, CLI_BUFFER_SIZE);
- p += 2;
- SSVAL (p, 0, CLI_BUFFER_SIZE);
- p += 2;
-
- if (cli_api (cli, param, PTR_DIFF (p, param), 1024, /* param, length, max */
- NULL, 0, CLI_BUFFER_SIZE, /* data, length, max */
- &rparam, &rprcnt, /* return params, return size */
- &rdata, &rdrcnt /* return data, return size */
- ))
- {
- cli->rap_error = SVAL (rparam, 0);
- p = rdata;
-
- if (cli->rap_error == 0)
- {
- DEBUG (4, ("NetWkstaUserLogon success\n"));
- cli->privileges = SVAL (p, 24);
- fstrcpy (cli->eff_name, p + 2);
- }
- else
- {
- DEBUG (1, ("NetwkstaUserLogon gave error %d\n", cli->rap_error));
- }
- }
-
- if (rparam)
- free (rparam);
- if (rdata)
- free (rdata);
- return (cli->rap_error == 0);
-}
-#endif /*0 */
-
-/****************************************************************************
-call a NetShareEnum - try and browse available connections on a host
-****************************************************************************/
-int
-cli_RNetShareEnum (struct cli_state *cli, void (*fn) (const char *, uint32, const char *, void *),
- void *state)
-{
- char *rparam = NULL;
- char *rdata = NULL;
- char *p;
- int rdrcnt, rprcnt;
- pstring param;
- int count = -1;
-
- /* now send a SMBtrans command with api RNetShareEnum */
- p = param;
- SSVAL (p, 0, 0); /* api number */
- p += 2;
- pstrcpy (p, "WrLeh");
- p = skip_string (p, 1);
- pstrcpy (p, "B13BWz");
- p = skip_string (p, 1);
- SSVAL (p, 0, 1);
- /*
- * Win2k needs a *smaller* buffer than 0xFFFF here -
- * it returns "out of server memory" with 0xFFFF !!! JRA.
- */
- SSVAL (p, 2, 0xFFE0);
- p += 4;
-
- if (cli_api (cli, param, PTR_DIFF (p, param), 1024, /* Param, length, maxlen */
- NULL, 0, 0xFFE0, /* data, length, maxlen - Win2k needs a small buffer here too ! */
- &rparam, &rprcnt, /* return params, length */
- &rdata, &rdrcnt)) /* return data, length */
- {
- int res = SVAL (rparam, 0);
- int converter = SVAL (rparam, 2);
- int i;
-
- if (res == 0 || res == ERRmoredata)
- {
- count = SVAL (rparam, 4);
- p = rdata;
-
- for (i = 0; i < count; i++, p += 20)
- {
- char *sname = p;
- int type = SVAL (p, 14);
- int comment_offset = IVAL (p, 16) & 0xFFFF;
- const char *cmnt = comment_offset ? (rdata + comment_offset - converter) : "";
- fn (sname, type, cmnt, state);
- }
- }
- else
- {
- DEBUG (4, ("NetShareEnum res=%d\n", res));
- }
- }
- else
- {
- DEBUG (4, ("NetShareEnum failed\n"));
- }
-
- if (rparam)
- free (rparam);
- if (rdata)
- free (rdata);
-
- return count;
-}
-
-
-/****************************************************************************
-call a NetServerEnum for the specified workgroup and servertype mask.
-This function then calls the specified callback function for each name returned.
-
-The callback function takes 3 arguments: the machine name, the server type and
-the comment.
-****************************************************************************/
-BOOL
-cli_NetServerEnum (struct cli_state * cli, char *workgroup, uint32 stype,
- void (*fn) (const char *, uint32, const char *, void *), void *state)
-{
- char *rparam = NULL;
- char *rdata = NULL;
- int rdrcnt, rprcnt;
- char *p;
- pstring param;
- int uLevel = 1;
- int count = -1;
-
- /* send a SMBtrans command with api NetServerEnum */
- p = param;
- SSVAL (p, 0, 0x68); /* api number */
- p += 2;
- pstrcpy (p, "WrLehDz");
- p = skip_string (p, 1);
-
- pstrcpy (p, "B16BBDz");
-
- p = skip_string (p, 1);
- SSVAL (p, 0, uLevel);
- SSVAL (p, 2, CLI_BUFFER_SIZE);
- p += 4;
- SIVAL (p, 0, stype);
- p += 4;
-
- pstrcpy (p, workgroup);
- p = skip_string (p, 1);
-
- if (cli_api (cli, param, PTR_DIFF (p, param), 8, /* params, length, max */
- NULL, 0, CLI_BUFFER_SIZE, /* data, length, max */
- &rparam, &rprcnt, /* return params, return size */
- &rdata, &rdrcnt /* return data, return size */
- ))
- {
- int res = SVAL (rparam, 0);
- int converter = SVAL (rparam, 2);
- int i;
-
- if (res == 0 || res == ERRmoredata)
- {
- count = SVAL (rparam, 4);
- p = rdata;
-
- for (i = 0; i < count; i++, p += 26)
- {
- char *sname = p;
- int comment_offset = (IVAL (p, 22) & 0xFFFF) - converter;
- const char *cmnt = comment_offset ? (rdata + comment_offset) : "";
- if (comment_offset < 0 || comment_offset > rdrcnt)
- continue;
-
- stype = IVAL (p, 18) & ~SV_TYPE_LOCAL_LIST_ONLY;
-
- fn (sname, stype, cmnt, state);
- }
- }
- }
-
- if (rparam)
- free (rparam);
- if (rdata)
- free (rdata);
-
- return (count > 0);
-}
-
-
-
-
-static struct
-{
- int prot;
- const char *name;
-}
-const prots[] = {
- {PROTOCOL_CORE, "PC NETWORK PROGRAM 1.0"},
- {PROTOCOL_COREPLUS, "MICROSOFT NETWORKS 1.03"},
- {PROTOCOL_LANMAN1, "MICROSOFT NETWORKS 3.0"},
- {PROTOCOL_LANMAN1, "LANMAN1.0"},
- {PROTOCOL_LANMAN2, "LM1.2X002"},
- {PROTOCOL_LANMAN2, "Samba"},
- {PROTOCOL_NT1, "NT LANMAN 1.0"},
- {PROTOCOL_NT1, "NT LM 0.12"},
- {-1, NULL}
-};
-
-
-/****************************************************************************
-send a session setup
-****************************************************************************/
-BOOL
-cli_session_setup (struct cli_state *cli,
- char *user,
- char *pass, int passlen, char *ntpass, int ntpasslen, char *workgroup)
-{
- char *p;
- fstring pword, ntpword;
-
- if (cli->protocol < PROTOCOL_LANMAN1)
- return True;
-
- if ((size_t) passlen > sizeof (pword) - 1 || (size_t) ntpasslen > sizeof (ntpword) - 1)
- {
- return False;
- }
-
- if (((passlen == 0) || (passlen == 1)) && (pass[0] == '\0'))
- {
- /* Null session connect. */
- pword[0] = '\0';
- ntpword[0] = '\0';
- }
- else
- {
- if ((cli->sec_mode & 2) && passlen != 24)
- {
- passlen = 24;
- ntpasslen = 24;
- SMBencrypt ((uchar *) pass, (uchar *) cli->cryptkey, (uchar *) pword);
- SMBNTencrypt ((uchar *) ntpass, (uchar *) cli->cryptkey, (uchar *) ntpword);
- }
- else
- {
- fstrcpy (pword, pass);
- fstrcpy (ntpword, "");
- ntpasslen = 0;
- }
- }
-
- /* if in share level security then don't send a password now */
- if (!(cli->sec_mode & 1))
- {
- fstrcpy (pword, "");
- passlen = 1;
- fstrcpy (ntpword, "");
- ntpasslen = 1;
- }
-
- /* send a session setup command */
- memset (cli->outbuf, '\0', smb_size);
-
- if (cli->protocol < PROTOCOL_NT1)
- {
- set_message (cli->outbuf, 10, 1 + strlen (user) + passlen, True);
- CVAL (cli->outbuf, smb_com) = SMBsesssetupX;
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, cli->max_xmit);
- SSVAL (cli->outbuf, smb_vwv3, 2);
- SSVAL (cli->outbuf, smb_vwv4, 1);
- SIVAL (cli->outbuf, smb_vwv5, cli->sesskey);
- SSVAL (cli->outbuf, smb_vwv7, passlen);
- p = smb_buf (cli->outbuf);
- memcpy (p, pword, passlen);
- p += passlen;
- pstrcpy (p, user);
- strupper (p);
- unix_to_dos (p, True);
- }
- else
- {
- set_message (cli->outbuf, 13, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBsesssetupX;
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, CLI_BUFFER_SIZE);
- SSVAL (cli->outbuf, smb_vwv3, 2);
- SSVAL (cli->outbuf, smb_vwv4, cli->pid);
- SIVAL (cli->outbuf, smb_vwv5, cli->sesskey);
- SSVAL (cli->outbuf, smb_vwv7, passlen);
- SSVAL (cli->outbuf, smb_vwv8, ntpasslen);
- SSVAL (cli->outbuf, smb_vwv11, 0);
- p = smb_buf (cli->outbuf);
- memcpy (p, pword, passlen);
- p += SVAL (cli->outbuf, smb_vwv7);
- memcpy (p, ntpword, ntpasslen);
- p += SVAL (cli->outbuf, smb_vwv8);
- pstrcpy (p, user);
- strupper (p);
- unix_to_dos (p, True);
- p = skip_string (p, 1);
- pstrcpy (p, workgroup);
- strupper (p);
- p = skip_string (p, 1);
- pstrcpy (p, "Unix");
- p = skip_string (p, 1);
- pstrcpy (p, "Samba");
- p = skip_string (p, 1);
- set_message (cli->outbuf, 13, PTR_DIFF (p, smb_buf (cli->outbuf)), False);
- }
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- return False;
-
- show_msg (cli->inbuf);
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- /* use the returned vuid from now on */
- cli->vuid = SVAL (cli->inbuf, smb_uid);
-
- if (cli->protocol >= PROTOCOL_NT1)
- {
- /*
- * Save off some of the connected server
- * info.
- */
- char *server_domain, *server_os, *server_type;
- server_os = smb_buf (cli->inbuf);
- server_type = skip_string (server_os, 1);
- server_domain = skip_string (server_type, 1);
- fstrcpy (cli->server_os, server_os);
- fstrcpy (cli->server_type, server_type);
- fstrcpy (cli->server_domain, server_domain);
- }
-
- fstrcpy (cli->user_name, user);
-
- return True;
-}
-
-/****************************************************************************
- Send a uloggoff.
-*****************************************************************************/
-#if 0
-BOOL
-cli_ulogoff (struct cli_state * cli)
-{
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 2, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBulogoffX;
- cli_setup_packet (cli);
- SSVAL (cli->outbuf, smb_vwv0, 0xFF);
- SSVAL (cli->outbuf, smb_vwv2, 0); /* no additional info */
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- return False;
-
- return CVAL (cli->inbuf, smb_rcls) == 0;
-}
-#endif /*0 */
-
-/****************************************************************************
-send a tconX
-****************************************************************************/
-BOOL
-cli_send_tconX (struct cli_state * cli,
- const char *share, const char *dev, const char *pass, int passlen)
-{
- fstring fullshare, pword;
- char *p;
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- fstrcpy (cli->share, share);
-
- /* in user level security don't send a password now */
- if (cli->sec_mode & 1)
- {
- passlen = 1;
- pass = "";
- }
-
- if ((cli->sec_mode & 2) && *pass && passlen != 24)
- {
- passlen = 24;
- SMBencrypt ((uchar *) pass, (uchar *) cli->cryptkey, (uchar *) pword);
- }
- else
- {
- memcpy (pword, pass, passlen);
- }
-
- slprintf (fullshare, sizeof (fullshare) - 1, "\\\\%s\\%s", cli->desthost, share);
- unix_to_dos (fullshare, True);
- strupper (fullshare);
-
- set_message (cli->outbuf, 4, 2 + strlen (fullshare) + passlen + strlen (dev), True);
- CVAL (cli->outbuf, smb_com) = SMBtconX;
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, 0xFF);
- SSVAL (cli->outbuf, smb_vwv3, passlen);
-
- p = smb_buf (cli->outbuf);
- memcpy (p, pword, passlen);
- p += passlen;
- fstrcpy (p, fullshare);
- p = skip_string (p, 1);
- pstrcpy (p, dev);
-
- SCVAL (cli->inbuf, smb_rcls, 1);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- return False;
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- fstrcpy (cli->dev, "A:");
-
- if (cli->protocol >= PROTOCOL_NT1)
- {
- fstrcpy (cli->dev, smb_buf (cli->inbuf));
- }
-
- if (strcasecmp (share, "IPC$") == 0)
- {
- fstrcpy (cli->dev, "IPC");
- }
-
- /* only grab the device if we have a recent protocol level */
- if (cli->protocol >= PROTOCOL_NT1 && smb_buflen (cli->inbuf) == 3)
- {
- /* almost certainly win95 - enable bug fixes */
- cli->win95 = True;
- }
-
- cli->cnum = SVAL (cli->inbuf, smb_tid);
- return True;
-}
-
-#if 0
-/****************************************************************************
-send a tree disconnect
-****************************************************************************/
-BOOL
-cli_tdis (struct cli_state * cli)
-{
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 0, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBtdis;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- return False;
-
- return CVAL (cli->inbuf, smb_rcls) == 0;
-}
-#endif /*0 */
-
-/****************************************************************************
-rename a file
-****************************************************************************/
-BOOL
-cli_rename (struct cli_state * cli, char *fname_src, char *fname_dst)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 1, 4 + strlen (fname_src) + strlen (fname_dst), True);
-
- CVAL (cli->outbuf, smb_com) = SMBmv;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, aSYSTEM | aHIDDEN);
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- pstrcpy (p, fname_src);
- p = skip_string (p, 1);
- *p++ = 4;
- pstrcpy (p, fname_dst);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-/****************************************************************************
-delete a file
-****************************************************************************/
-BOOL
-cli_unlink (struct cli_state * cli, char *fname)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 1, 2 + strlen (fname), True);
-
- CVAL (cli->outbuf, smb_com) = SMBunlink;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, aSYSTEM | aHIDDEN);
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- pstrcpy (p, fname);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-/****************************************************************************
-create a directory
-****************************************************************************/
-BOOL
-cli_mkdir (struct cli_state * cli, char *dname)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 0, 2 + strlen (dname), True);
-
- CVAL (cli->outbuf, smb_com) = SMBmkdir;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- pstrcpy (p, dname);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-/****************************************************************************
-remove a directory
-****************************************************************************/
-BOOL
-cli_rmdir (struct cli_state * cli, char *dname)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 0, 2 + strlen (dname), True);
-
- CVAL (cli->outbuf, smb_com) = SMBrmdir;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- pstrcpy (p, dname);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-#if 0
-/****************************************************************************
-open a file
-****************************************************************************/
-int
-cli_nt_create (struct cli_state *cli, char *fname)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 24, 1 + strlen (fname), True);
-
- CVAL (cli->outbuf, smb_com) = SMBntcreateX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, 0xFF);
- SIVAL (cli->outbuf, smb_ntcreate_Flags, 0x06);
- SIVAL (cli->outbuf, smb_ntcreate_RootDirectoryFid, 0x0);
- SIVAL (cli->outbuf, smb_ntcreate_DesiredAccess, 0x2019f);
- SIVAL (cli->outbuf, smb_ntcreate_FileAttributes, 0x0);
- SIVAL (cli->outbuf, smb_ntcreate_ShareAccess, 0x03);
- SIVAL (cli->outbuf, smb_ntcreate_CreateDisposition, 0x01);
- SIVAL (cli->outbuf, smb_ntcreate_CreateOptions, 0x0);
- SIVAL (cli->outbuf, smb_ntcreate_ImpersonationLevel, 0x02);
- SSVAL (cli->outbuf, smb_ntcreate_NameLength, strlen (fname));
-
- p = smb_buf (cli->outbuf);
- pstrcpy (p, fname);
- p = skip_string (p, 1);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return -1;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return -1;
- }
-
- return SVAL (cli->inbuf, smb_vwv2 + 1);
-}
-#endif /*0 */
-
-/****************************************************************************
-open a file
-****************************************************************************/
-int
-cli_open (struct cli_state *cli, char *fname, int flags, int share_mode)
-{
- char *p;
- unsigned openfn = 0;
- unsigned accessmode = 0;
-
- /* you must open for RW not just write - otherwise getattrE doesn't
- work! */
- if ((flags & O_ACCMODE) == O_WRONLY && strncmp (cli->dev, "LPT", 3))
- {
- flags = (flags & ~O_ACCMODE) | O_RDWR;
- }
-
- if (flags & O_CREAT)
- openfn |= (1 << 4);
- if (!(flags & O_EXCL))
- {
- if (flags & O_TRUNC)
- openfn |= (1 << 1);
- else
- openfn |= (1 << 0);
- }
-
- accessmode = (share_mode << 4);
-
- if ((flags & O_ACCMODE) == O_RDWR)
- {
- accessmode |= 2;
- }
- else if ((flags & O_ACCMODE) == O_WRONLY)
- {
- accessmode |= 1;
- }
-
-#if defined(O_SYNC)
- if ((flags & O_SYNC) == O_SYNC)
- {
- accessmode |= (1 << 14);
- }
-#endif /* O_SYNC */
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 15, 1 + strlen (fname), True);
-
- CVAL (cli->outbuf, smb_com) = SMBopenX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, 0xFF);
- SSVAL (cli->outbuf, smb_vwv2, 0); /* no additional info */
- SSVAL (cli->outbuf, smb_vwv3, accessmode);
- SSVAL (cli->outbuf, smb_vwv4, aSYSTEM | aHIDDEN);
- SSVAL (cli->outbuf, smb_vwv5, 0);
- SSVAL (cli->outbuf, smb_vwv8, openfn);
-
- p = smb_buf (cli->outbuf);
- pstrcpy (p, fname);
- p = skip_string (p, 1);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return -1;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return -1;
- }
-
- return SVAL (cli->inbuf, smb_vwv2);
-}
-
-
-
-
-/****************************************************************************
- close a file
-****************************************************************************/
-BOOL
-cli_close (struct cli_state * cli, int fnum)
-{
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 3, 0, True);
-
- CVAL (cli->outbuf, smb_com) = SMBclose;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, fnum);
- SIVALS (cli->outbuf, smb_vwv1, -1);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-#if 0
-/****************************************************************************
- lock a file
-****************************************************************************/
-BOOL
-cli_lock (struct cli_state * cli, int fnum, uint32 offset, uint32 len, int timeout)
-{
- char *p;
- int saved_timeout = cli->timeout;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 8, 10, True);
-
- CVAL (cli->outbuf, smb_com) = SMBlockingX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, fnum);
- CVAL (cli->outbuf, smb_vwv3) = 0;
- SIVALS (cli->outbuf, smb_vwv4, timeout);
- SSVAL (cli->outbuf, smb_vwv6, 0);
- SSVAL (cli->outbuf, smb_vwv7, 1);
-
- p = smb_buf (cli->outbuf);
- SSVAL (p, 0, cli->pid);
- SIVAL (p, 2, offset);
- SIVAL (p, 6, len);
- cli_send_smb (cli);
-
- cli->timeout = (timeout == -1) ? 0x7FFFFFFF : timeout;
-
- if (!cli_receive_smb (cli))
- {
- cli->timeout = saved_timeout;
- return False;
- }
-
- cli->timeout = saved_timeout;
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-/****************************************************************************
- unlock a file
-****************************************************************************/
-BOOL
-cli_unlock (struct cli_state * cli, int fnum, uint32 offset, uint32 len, int timeout)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 8, 10, True);
-
- CVAL (cli->outbuf, smb_com) = SMBlockingX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, fnum);
- CVAL (cli->outbuf, smb_vwv3) = 0;
- SIVALS (cli->outbuf, smb_vwv4, timeout);
- SSVAL (cli->outbuf, smb_vwv6, 1);
- SSVAL (cli->outbuf, smb_vwv7, 0);
-
- p = smb_buf (cli->outbuf);
- SSVAL (p, 0, cli->pid);
- SIVAL (p, 2, offset);
- SIVAL (p, 6, len);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-#endif /*0 */
-
-
-/****************************************************************************
-issue a single SMBread and don't wait for a reply
-****************************************************************************/
-static void
-cli_issue_read (struct cli_state *cli, int fnum, off_t offset, size_t size, int i)
-{
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 10, 0, True);
-
- CVAL (cli->outbuf, smb_com) = SMBreadX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, fnum);
- SIVAL (cli->outbuf, smb_vwv3, offset);
- SSVAL (cli->outbuf, smb_vwv5, size);
- SSVAL (cli->outbuf, smb_vwv6, size);
- SSVAL (cli->outbuf, smb_mid, cli->mid + i);
-
- cli_send_smb (cli);
-}
-
-/****************************************************************************
- read from a file
-****************************************************************************/
-size_t
-cli_read (struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size)
-{
- char *p;
- int total = -1;
- int issued = 0;
- int received = 0;
- int mpx = MAX (cli->max_mux - 1, 1);
- int block = (cli->max_xmit - (smb_size + 32)) & ~1023;
- int mid;
- int blocks = (size + (block - 1)) / block;
-
- if (size == 0)
- return 0;
-
- while (received < blocks)
- {
- int size2;
-
- while (issued - received < mpx && issued < blocks)
- {
- int size1 = MIN (block, (int) size - issued * block);
- cli_issue_read (cli, fnum, offset + issued * block, size1, issued);
- issued++;
- }
-
- if (!cli_receive_smb (cli))
- {
- return total;
- }
-
- received++;
- mid = SVAL (cli->inbuf, smb_mid) - cli->mid;
- size2 = SVAL (cli->inbuf, smb_vwv5);
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- blocks = MIN (blocks, mid - 1);
- continue;
- }
-
- if (size2 <= 0)
- {
- blocks = MIN (blocks, mid - 1);
- /* this distinguishes EOF from an error */
- total = MAX (total, 0);
- continue;
- }
-
- if (size2 > block)
- {
- DEBUG (0, ("server returned more than we wanted!\n"));
- exit (1);
- }
- if (mid >= issued)
- {
- DEBUG (0, ("invalid mid from server!\n"));
- exit (1);
- }
- p = smb_base (cli->inbuf) + SVAL (cli->inbuf, smb_vwv6);
-
- memcpy (buf + mid * block, p, size2);
-
- total = MAX (total, mid * block + size2);
- }
-
- while (received < issued)
- {
- cli_receive_smb (cli);
- received++;
- }
-
- return total;
-}
-
-
-/****************************************************************************
-issue a single SMBwrite and don't wait for a reply
-****************************************************************************/
-static void
-cli_issue_write (struct cli_state *cli, int fnum, off_t offset, uint16 mode, const char *buf,
- size_t size, int i)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 12, size, True);
-
- CVAL (cli->outbuf, smb_com) = SMBwriteX;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- CVAL (cli->outbuf, smb_vwv0) = 0xFF;
- SSVAL (cli->outbuf, smb_vwv2, fnum);
-
- SIVAL (cli->outbuf, smb_vwv3, offset);
- SIVAL (cli->outbuf, smb_vwv5, IS_BITS_SET_ALL (mode, 0x0008) ? 0xFFFFFFFF : 0);
- SSVAL (cli->outbuf, smb_vwv7, mode);
-
- SSVAL (cli->outbuf, smb_vwv8, IS_BITS_SET_ALL (mode, 0x0008) ? size : 0);
- SSVAL (cli->outbuf, smb_vwv10, size);
- SSVAL (cli->outbuf, smb_vwv11, smb_buf (cli->outbuf) - smb_base (cli->outbuf));
-
- p = smb_base (cli->outbuf) + SVAL (cli->outbuf, smb_vwv11);
- memcpy (p, buf, size);
-
- SSVAL (cli->outbuf, smb_mid, cli->mid + i);
-
- show_msg (cli->outbuf);
- cli_send_smb (cli);
-}
-
-/****************************************************************************
- write to a file
- write_mode: 0x0001 disallow write cacheing
- 0x0002 return bytes remaining
- 0x0004 use raw named pipe protocol
- 0x0008 start of message mode named pipe protocol
-****************************************************************************/
-ssize_t
-cli_write (struct cli_state *cli,
- int fnum, uint16 write_mode, const char *buf, off_t offset, size_t size)
-{
- int bwritten = 0;
- int issued = 0;
- int received = 0;
- int mpx = MAX (cli->max_mux - 1, 1);
- int block = (cli->max_xmit - (smb_size + 32)) & ~1023;
- int blocks = (size + (block - 1)) / block;
-
- while (received < blocks)
- {
-
- while ((issued - received < mpx) && (issued < blocks))
- {
- int bsent = issued * block;
- int size1 = MIN (block, (int) size - bsent);
-
- cli_issue_write (cli, fnum, offset + bsent, write_mode, buf + bsent, size1, issued);
- issued++;
- }
-
- if (!cli_receive_smb (cli))
- {
- return bwritten;
- }
-
- received++;
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- break;
- }
-
- bwritten += SVAL (cli->inbuf, smb_vwv2);
- }
-
- while (received < issued && cli_receive_smb (cli))
- {
- received++;
- }
-
- return bwritten;
-}
-
-#if 0
-/****************************************************************************
- write to a file using a SMBwrite and not bypassing 0 byte writes
-****************************************************************************/
-ssize_t
-cli_smbwrite (struct cli_state * cli, int fnum, const char *buf, off_t offset, size_t size)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 5, 3 + size, True);
-
- CVAL (cli->outbuf, smb_com) = SMBwrite;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, fnum);
- SSVAL (cli->outbuf, smb_vwv1, size);
- SIVAL (cli->outbuf, smb_vwv2, offset);
- SSVAL (cli->outbuf, smb_vwv4, 0);
-
- p = smb_buf (cli->outbuf);
- *p++ = 1;
- SSVAL (p, 0, size);
- memcpy (p + 2, buf, size);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return -1;
- }
-
- return SVAL (cli->inbuf, smb_vwv0);
-}
-#endif /*0 */
-
-/****************************************************************************
-do a SMBgetattrE call
-****************************************************************************/
-BOOL
-cli_getattrE (struct cli_state * cli, int fd,
- uint16 * attr, size_t * size, time_t * c_time, time_t * a_time, time_t * m_time)
-{
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 2, 0, True);
-
- CVAL (cli->outbuf, smb_com) = SMBgetattrE;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, fd);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- if (size)
- {
- *size = IVAL (cli->inbuf, smb_vwv6);
- }
-
- if (attr)
- {
- *attr = SVAL (cli->inbuf, smb_vwv10);
- }
-
- if (c_time)
- {
- *c_time = make_unix_date3 (cli->inbuf + smb_vwv0);
- }
-
- if (a_time)
- {
- *a_time = make_unix_date3 (cli->inbuf + smb_vwv2);
- }
-
- if (m_time)
- {
- *m_time = make_unix_date3 (cli->inbuf + smb_vwv4);
- }
-
- return True;
-}
-
-#if 0
-/****************************************************************************
-do a SMBgetatr call
-****************************************************************************/
-BOOL
-cli_getatr (struct cli_state * cli, char *fname, uint16 * attr, size_t * size, time_t * t)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 0, strlen (fname) + 2, True);
-
- CVAL (cli->outbuf, smb_com) = SMBgetatr;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- p = smb_buf (cli->outbuf);
- *p = 4;
- pstrcpy (p + 1, fname);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- if (size)
- {
- *size = IVAL (cli->inbuf, smb_vwv3);
- }
-
- if (t)
- {
- *t = make_unix_date3 (cli->inbuf + smb_vwv1);
- }
-
- if (attr)
- {
- *attr = SVAL (cli->inbuf, smb_vwv0);
- }
-
-
- return True;
-}
-#endif /* 0 */
-
-/****************************************************************************
-do a SMBsetatr call
-****************************************************************************/
-BOOL
-cli_setatr (struct cli_state * cli, char *fname, uint16 attr, time_t t)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- memset (cli->inbuf, '\0', smb_size);
-
- set_message (cli->outbuf, 8, strlen (fname) + 4, True);
-
- CVAL (cli->outbuf, smb_com) = SMBsetatr;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, attr);
- put_dos_date3 (cli->outbuf, smb_vwv1, t);
-
- p = smb_buf (cli->outbuf);
- *p = 4;
- pstrcpy (p + 1, fname);
- p = skip_string (p, 1);
- *p = 4;
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (CVAL (cli->inbuf, smb_rcls) != 0)
- {
- return False;
- }
-
- return True;
-}
-
-#if 0
-/****************************************************************************
-send a qpathinfo call
-****************************************************************************/
-BOOL
-cli_qpathinfo (struct cli_state * cli, const char *fname,
- time_t * c_time, time_t * a_time, time_t * m_time, size_t * size, uint16 * mode)
-{
- int data_len = 0;
- int param_len = 0;
- uint16 setup = TRANSACT2_QPATHINFO;
- pstring param;
- char *rparam = NULL, *rdata = NULL;
- int count = 8;
- BOOL ret;
- time_t (*date_fn) (void *);
-
- param_len = strlen (fname) + 7;
-
- memset (param, 0, param_len);
- SSVAL (param, 0, SMB_INFO_STANDARD);
- pstrcpy (¶m[6], fname);
-
- do
- {
- ret = (cli_send_trans (cli, SMBtrans2, NULL, 0, /* Name, length */
- -1, 0, /* fid, flags */
- &setup, 1, 0, /* setup, length, max */
- param, param_len, 10, /* param, length, max */
- NULL, data_len, cli->max_xmit /* data, length, max */
- ) && cli_receive_trans (cli, SMBtrans2, &rparam, ¶m_len, &rdata, &data_len));
- if (!ret)
- {
- /* we need to work around a Win95 bug - sometimes
- it gives ERRSRV/ERRerror temprarily */
- uint8 eclass;
- uint32 ecode;
- cli_error (cli, &eclass, &ecode, NULL);
- if (eclass != ERRSRV || ecode != ERRerror)
- break;
- msleep (100);
- }
- }
- while (count-- && ret == False);
-
- if (!ret || !rdata || data_len < 22)
- {
- return False;
- }
-
- if (cli->win95)
- {
- date_fn = make_unix_date;
- }
- else
- {
- date_fn = make_unix_date2;
- }
-
- if (c_time)
- {
- *c_time = date_fn (rdata + 0);
- }
- if (a_time)
- {
- *a_time = date_fn (rdata + 4);
- }
- if (m_time)
- {
- *m_time = date_fn (rdata + 8);
- }
- if (size)
- {
- *size = IVAL (rdata, 12);
- }
- if (mode)
- {
- *mode = SVAL (rdata, l1_attrFile);
- }
-
- if (rdata)
- free (rdata);
- if (rparam)
- free (rparam);
- return True;
-}
-
-/****************************************************************************
-send a qpathinfo call with the SMB_QUERY_FILE_ALL_INFO info level
-****************************************************************************/
-BOOL
-cli_qpathinfo2 (struct cli_state * cli, const char *fname,
- time_t * c_time, time_t * a_time, time_t * m_time,
- time_t * w_time, size_t * size, uint16 * mode, SMB_INO_T * ino)
-{
- int data_len = 0;
- int param_len = 0;
- uint16 setup = TRANSACT2_QPATHINFO;
- pstring param;
- char *rparam = NULL, *rdata = NULL;
-
- param_len = strlen (fname) + 7;
-
- memset (param, 0, param_len);
- SSVAL (param, 0, SMB_QUERY_FILE_ALL_INFO);
- pstrcpy (¶m[6], fname);
-
- if (!cli_send_trans (cli, SMBtrans2, NULL, 0, /* name, length */
- -1, 0, /* fid, flags */
- &setup, 1, 0, /* setup, length, max */
- param, param_len, 10, /* param, length, max */
- NULL, data_len, cli->max_xmit /* data, length, max */
- ))
- {
- return False;
- }
-
- if (!cli_receive_trans (cli, SMBtrans2, &rparam, ¶m_len, &rdata, &data_len))
- {
- return False;
- }
-
- if (!rdata || data_len < 22)
- {
- return False;
- }
-
- if (c_time)
- {
- *c_time = interpret_long_date (rdata + 0) - cli->serverzone;
- }
- if (a_time)
- {
- *a_time = interpret_long_date (rdata + 8) - cli->serverzone;
- }
- if (m_time)
- {
- *m_time = interpret_long_date (rdata + 16) - cli->serverzone;
- }
- if (w_time)
- {
- *w_time = interpret_long_date (rdata + 24) - cli->serverzone;
- }
- if (mode)
- {
- *mode = SVAL (rdata, 32);
- }
- if (size)
- {
- *size = IVAL (rdata, 48);
- }
- if (ino)
- {
- *ino = IVAL (rdata, 64);
- }
-
- if (rdata)
- free (rdata);
- if (rparam)
- free (rparam);
- return True;
-}
-#endif /* 0 */
-
-/****************************************************************************
-send a qfileinfo call
-****************************************************************************/
-BOOL
-cli_qfileinfo (struct cli_state * cli, int fnum,
- uint16 * mode, size_t * size,
- time_t * c_time, time_t * a_time, time_t * m_time, time_t * w_time, SMB_INO_T * ino)
-{
- int data_len = 0;
- int param_len = 0;
- uint16 setup = TRANSACT2_QFILEINFO;
- pstring param;
- char *rparam = NULL, *rdata = NULL;
-
- /* if its a win95 server then fail this - win95 totally screws it
- up */
- if (cli->win95)
- return False;
-
- param_len = 4;
-
- memset (param, 0, param_len);
- SSVAL (param, 0, fnum);
- SSVAL (param, 2, SMB_QUERY_FILE_ALL_INFO);
-
- if (!cli_send_trans (cli, SMBtrans2, NULL, 0, /* name, length */
- -1, 0, /* fid, flags */
- &setup, 1, 0, /* setup, length, max */
- param, param_len, 2, /* param, length, max */
- NULL, data_len, cli->max_xmit /* data, length, max */
- ))
- {
- return False;
- }
-
- if (!cli_receive_trans (cli, SMBtrans2, &rparam, ¶m_len, &rdata, &data_len))
- {
- return False;
- }
-
- if (!rdata || data_len < 68)
- {
- return False;
- }
-
- if (c_time)
- {
- *c_time = interpret_long_date (rdata + 0) - cli->serverzone;
- }
- if (a_time)
- {
- *a_time = interpret_long_date (rdata + 8) - cli->serverzone;
- }
- if (m_time)
- {
- *m_time = interpret_long_date (rdata + 16) - cli->serverzone;
- }
- if (w_time)
- {
- *w_time = interpret_long_date (rdata + 24) - cli->serverzone;
- }
- if (mode)
- {
- *mode = SVAL (rdata, 32);
- }
- if (size)
- {
- *size = IVAL (rdata, 48);
- }
- if (ino)
- {
- *ino = IVAL (rdata, 64);
- }
-
- if (rdata)
- free (rdata);
- if (rparam)
- free (rparam);
- return True;
-}
-
-
-/****************************************************************************
-interpret a long filename structure - this is mostly guesses at the moment
-The length of the structure is returned
-The structure of a long filename depends on the info level. 260 is used
-by NT and 2 is used by OS/2
-****************************************************************************/
-static int
-interpret_long_filename (int level, char *p, file_info * finfo)
-{
- extern file_info const def_finfo;
-
- if (finfo)
- memcpy (finfo, &def_finfo, sizeof (*finfo));
-
- switch (level)
- {
- case 1: /* OS/2 understands this */
- if (finfo)
- {
- /* these dates are converted to GMT by make_unix_date */
- finfo->ctime = make_unix_date2 (p + 4);
- finfo->atime = make_unix_date2 (p + 8);
- finfo->mtime = make_unix_date2 (p + 12);
- finfo->size = IVAL (p, 16);
- finfo->mode = CVAL (p, 24);
- pstrcpy (finfo->name, p + 27);
- }
- return (28 + CVAL (p, 26));
-
- case 2: /* this is what OS/2 uses mostly */
- if (finfo)
- {
- /* these dates are converted to GMT by make_unix_date */
- finfo->ctime = make_unix_date2 (p + 4);
- finfo->atime = make_unix_date2 (p + 8);
- finfo->mtime = make_unix_date2 (p + 12);
- finfo->size = IVAL (p, 16);
- finfo->mode = CVAL (p, 24);
- pstrcpy (finfo->name, p + 31);
- }
- return (32 + CVAL (p, 30));
-
- /* levels 3 and 4 are untested */
- case 3:
- if (finfo)
- {
- /* these dates are probably like the other ones */
- finfo->ctime = make_unix_date2 (p + 8);
- finfo->atime = make_unix_date2 (p + 12);
- finfo->mtime = make_unix_date2 (p + 16);
- finfo->size = IVAL (p, 20);
- finfo->mode = CVAL (p, 28);
- pstrcpy (finfo->name, p + 33);
- }
- return (SVAL (p, 4) + 4);
-
- case 4:
- if (finfo)
- {
- /* these dates are probably like the other ones */
- finfo->ctime = make_unix_date2 (p + 8);
- finfo->atime = make_unix_date2 (p + 12);
- finfo->mtime = make_unix_date2 (p + 16);
- finfo->size = IVAL (p, 20);
- finfo->mode = CVAL (p, 28);
- pstrcpy (finfo->name, p + 37);
- }
- return (SVAL (p, 4) + 4);
-
- case 260: /* NT uses this, but also accepts 2 */
- if (finfo)
- {
- int ret = SVAL (p, 0);
- int namelen;
- p += 4; /* next entry offset */
- p += 4; /* fileindex */
-
- /* these dates appear to arrive in a
- weird way. It seems to be localtime
- plus the serverzone given in the
- initial connect. This is GMT when
- DST is not in effect and one hour
- from GMT otherwise. Can this really
- be right??
-
- I suppose this could be called
- kludge-GMT. Is is the GMT you get
- by using the current DST setting on
- a different localtime. It will be
- cheap to calculate, I suppose, as
- no DST tables will be needed */
-
- finfo->ctime = interpret_long_date (p);
- p += 8;
- finfo->atime = interpret_long_date (p);
- p += 8;
- finfo->mtime = interpret_long_date (p);
- p += 8;
- p += 8;
- finfo->size = IVAL (p, 0);
- p += 8;
- p += 8; /* alloc size */
- finfo->mode = CVAL (p, 0);
- p += 4;
- namelen = IVAL (p, 0);
- p += 4;
- p += 4; /* EA size */
- p += 2; /* short name len? */
- p += 24; /* short name? */
- StrnCpy (finfo->name, p, namelen);
- return (ret);
- }
- return (SVAL (p, 0));
- }
-
- DEBUG (1, ("Unknown long filename format %d\n", level));
- return (SVAL (p, 0));
-}
-
-
-/****************************************************************************
- do a directory listing, calling fn on each file found
- ****************************************************************************/
-int
-cli_list (struct cli_state *cli, const char *Mask, uint16 attribute,
- void (*fn) (file_info *, const char *, void *), void *state)
-{
- int max_matches = 512;
- /* NT uses 260, OS/2 uses 2. Both accept 1. */
- int info_level = cli->protocol < PROTOCOL_NT1 ? 1 : 260;
- char *p, *p2;
- pstring mask;
- file_info finfo;
- int i;
- char *dirlist = NULL;
- int dirlist_len = 0;
- int total_received = -1;
- BOOL First = True;
- int ff_resume_key = 0;
- int ff_searchcount = 0;
- int ff_eos = 0;
- int ff_lastname = 0;
- int ff_dir_handle = 0;
- int loop_count = 0;
- char *rparam = NULL, *rdata = NULL;
- int param_len, data_len;
-
- uint16 setup;
- pstring param;
-
- pstrcpy (mask, Mask);
-
- while (ff_eos == 0)
- {
- loop_count++;
- if (loop_count > 200)
- {
- DEBUG (0, ("Error: Looping in FIND_NEXT??\n"));
- break;
- }
-
- param_len = 12 + strlen (mask) + 1;
-
- if (First)
- {
- setup = TRANSACT2_FINDFIRST;
- SSVAL (param, 0, attribute); /* attribute */
- SSVAL (param, 2, max_matches); /* max count */
- SSVAL (param, 4, 8 + 4 + 2); /* resume required + close on end + continue */
- SSVAL (param, 6, info_level);
- SIVAL (param, 8, 0);
- pstrcpy (param + 12, mask);
- }
- else
- {
- setup = TRANSACT2_FINDNEXT;
- SSVAL (param, 0, ff_dir_handle);
- SSVAL (param, 2, max_matches); /* max count */
- SSVAL (param, 4, info_level);
- SIVAL (param, 6, ff_resume_key); /* ff_resume_key */
- SSVAL (param, 10, 8 + 4 + 2); /* resume required + close on end + continue */
- pstrcpy (param + 12, mask);
-
- DEBUG (5, ("hand=0x%X resume=%d ff_lastname=%d mask=%s\n",
- ff_dir_handle, ff_resume_key, ff_lastname, mask));
- }
-
- if (!cli_send_trans (cli, SMBtrans2, NULL, 0, /* Name, length */
- -1, 0, /* fid, flags */
- &setup, 1, 0, /* setup, length, max */
- param, param_len, 10, /* param, length, max */
- NULL, 0, cli->max_xmit /* data, length, max */
- ))
- {
- break;
- }
-
- if (!cli_receive_trans (cli, SMBtrans2, &rparam, ¶m_len, &rdata, &data_len))
- {
- /* we need to work around a Win95 bug - sometimes
- it gives ERRSRV/ERRerror temprarily */
- uint8 eclass;
- uint32 ecode;
- cli_error (cli, &eclass, &ecode, NULL);
- if (eclass != ERRSRV || ecode != ERRerror)
- break;
- msleep (100);
- continue;
- }
-
- if (total_received == -1)
- total_received = 0;
-
- /* parse out some important return info */
- p = rparam;
- if (First)
- {
- ff_dir_handle = SVAL (p, 0);
- ff_searchcount = SVAL (p, 2);
- ff_eos = SVAL (p, 4);
- ff_lastname = SVAL (p, 8);
- }
- else
- {
- ff_searchcount = SVAL (p, 0);
- ff_eos = SVAL (p, 2);
- ff_lastname = SVAL (p, 6);
- }
-
- if (ff_searchcount == 0)
- break;
-
- /* point to the data bytes */
- p = rdata;
-
- /* we might need the lastname for continuations */
- if (ff_lastname > 0)
- {
- switch (info_level)
- {
- case 260:
- ff_resume_key = 0;
- StrnCpy (mask, p + ff_lastname, data_len - ff_lastname);
- break;
- case 1:
- pstrcpy (mask, p + ff_lastname + 1);
- ff_resume_key = 0;
- break;
- }
- }
- else
- {
- pstrcpy (mask, "");
- }
-
- /* and add them to the dirlist pool */
- dirlist = Realloc (dirlist, dirlist_len + data_len);
-
- if (!dirlist)
- {
- DEBUG (0, ("Failed to expand dirlist\n"));
- break;
- }
-
- /* put in a length for the last entry, to ensure we can chain entries
- into the next packet */
- for (p2 = p, i = 0; i < (ff_searchcount - 1); i++)
- p2 += interpret_long_filename (info_level, p2, NULL);
- SSVAL (p2, 0, data_len - PTR_DIFF (p2, p));
-
- /* grab the data for later use */
- memcpy (dirlist + dirlist_len, p, data_len);
- dirlist_len += data_len;
-
- total_received += ff_searchcount;
-
- if (rdata)
- free (rdata);
- rdata = NULL;
- if (rparam)
- free (rparam);
- rparam = NULL;
-
- DEBUG (3, ("received %d entries (eos=%d resume=%d)\n",
- ff_searchcount, ff_eos, ff_resume_key));
-
- First = False;
- }
-
- for (p = dirlist, i = 0; i < total_received; i++)
- {
- p += interpret_long_filename (info_level, p, &finfo);
- fn (&finfo, Mask, state);
- }
-
- /* free up the dirlist buffer */
- if (dirlist)
- free (dirlist);
- return (total_received);
-}
-
-
-/****************************************************************************
-send a negprot command
-****************************************************************************/
-BOOL
-cli_negprot (struct cli_state * cli)
-{
- char *p;
- int numprots;
- int plength;
-
- memset (cli->outbuf, '\0', smb_size);
-
- /* setup the protocol strings */
- for (plength = 0, numprots = 0;
- prots[numprots].name && prots[numprots].prot <= cli->protocol; numprots++)
- plength += strlen (prots[numprots].name) + 2;
-
- set_message (cli->outbuf, 0, plength, True);
-
- p = smb_buf (cli->outbuf);
- for (numprots = 0; prots[numprots].name && prots[numprots].prot <= cli->protocol; numprots++)
- {
- *p++ = 2;
- pstrcpy (p, prots[numprots].name);
- p += strlen (p) + 1;
- }
-
- CVAL (cli->outbuf, smb_com) = SMBnegprot;
- cli_setup_packet (cli);
-
- CVAL (smb_buf (cli->outbuf), 0) = 2;
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- return False;
-
- show_msg (cli->inbuf);
-
- if (CVAL (cli->inbuf, smb_rcls) != 0 || ((int) SVAL (cli->inbuf, smb_vwv0) >= numprots))
- {
- return (False);
- }
-
- cli->protocol = prots[SVAL (cli->inbuf, smb_vwv0)].prot;
-
-
- if (cli->protocol >= PROTOCOL_NT1)
- {
- /* NT protocol */
- cli->sec_mode = CVAL (cli->inbuf, smb_vwv1);
- cli->max_mux = SVAL (cli->inbuf, smb_vwv1 + 1);
- cli->max_xmit = IVAL (cli->inbuf, smb_vwv3 + 1);
- cli->sesskey = IVAL (cli->inbuf, smb_vwv7 + 1);
- cli->serverzone = SVALS (cli->inbuf, smb_vwv15 + 1) * 60;
- /* this time arrives in real GMT */
- cli->servertime = interpret_long_date (cli->inbuf + smb_vwv11 + 1);
- memcpy (cli->cryptkey, smb_buf (cli->inbuf), 8);
- cli->capabilities = IVAL (cli->inbuf, smb_vwv9 + 1);
- if (cli->capabilities & 1)
- {
- cli->readbraw_supported = True;
- cli->writebraw_supported = True;
- }
- }
- else if (cli->protocol >= PROTOCOL_LANMAN1)
- {
- cli->sec_mode = SVAL (cli->inbuf, smb_vwv1);
- cli->max_xmit = SVAL (cli->inbuf, smb_vwv2);
- cli->sesskey = IVAL (cli->inbuf, smb_vwv6);
- cli->serverzone = SVALS (cli->inbuf, smb_vwv10) * 60;
- /* this time is converted to GMT by make_unix_date */
- cli->servertime = make_unix_date (cli->inbuf + smb_vwv8);
- cli->readbraw_supported = ((SVAL (cli->inbuf, smb_vwv5) & 0x1) != 0);
- cli->writebraw_supported = ((SVAL (cli->inbuf, smb_vwv5) & 0x2) != 0);
- memcpy (cli->cryptkey, smb_buf (cli->inbuf), 8);
- }
- else
- {
- /* the old core protocol */
- cli->sec_mode = 0;
- cli->serverzone = TimeDiff (time (NULL));
- }
-
- cli->max_xmit = MIN (cli->max_xmit, CLI_BUFFER_SIZE);
-
- return True;
-}
-
-
-/****************************************************************************
- send a session request. see rfc1002.txt 4.3 and 4.3.2
-****************************************************************************/
-BOOL
-cli_session_request (struct cli_state * cli, struct nmb_name * calling, struct nmb_name * called)
-{
- char *p;
- int len = 4;
- /* send a session request (RFC 1002) */
-
- memcpy (&(cli->calling), calling, sizeof (*calling));
- memcpy (&(cli->called), called, sizeof (*called));
-
- /* put in the destination name */
- p = cli->outbuf + len;
- name_mangle (cli->called.name, p, cli->called.name_type);
- len += name_len (p);
-
- /* and my name */
- p = cli->outbuf + len;
- name_mangle (cli->calling.name, p, cli->calling.name_type);
- len += name_len (p);
-
- /* setup the packet length */
- _smb_setlen (cli->outbuf, len);
- CVAL (cli->outbuf, 0) = 0x81;
-
-#ifdef WITH_SSL
- retry:
-#endif /* WITH_SSL */
-
- cli_send_smb (cli);
- DEBUG (5, ("Sent session request\n"));
-
- if (!cli_receive_smb (cli))
- return False;
-
- if (CVAL (cli->inbuf, 0) == 0x84)
- {
- /* C. Hoch 9/14/95 Start */
- /* For information, here is the response structure.
- * We do the byte-twiddling to for portability.
- struct RetargetResponse{
- unsigned char type;
- unsigned char flags;
- int16 length;
- int32 ip_addr;
- int16 port;
- };
- */
- int port = (CVAL (cli->inbuf, 8) << 8) + CVAL (cli->inbuf, 9);
- /* SESSION RETARGET */
- putip ((char *) &cli->dest_ip, cli->inbuf + 4);
-
- close_sockets ();
- cli->fd = open_socket_out (SOCK_STREAM, &cli->dest_ip, port, LONG_CONNECT_TIMEOUT);
- if (cli->fd == -1)
- return False;
-
- DEBUG (3, ("Retargeted\n"));
-
- set_socket_options (cli->fd, user_socket_options);
-
- /* Try again */
- return cli_session_request (cli, calling, called);
- } /* C. Hoch 9/14/95 End */
-
-#ifdef WITH_SSL
- if (CVAL (cli->inbuf, 0) == 0x83 && CVAL (cli->inbuf, 4) == 0x8e)
- { /* use ssl */
- if (!sslutil_fd_is_ssl (cli->fd))
- {
- if (sslutil_connect (cli->fd) == 0)
- goto retry;
- }
- }
-#endif /* WITH_SSL */
-
- if (CVAL (cli->inbuf, 0) != 0x82)
- {
- /* This is the wrong place to put the error... JRA. */
- cli->rap_error = CVAL (cli->inbuf, 0);
- return False;
- }
- return (True);
-}
-
-
-/****************************************************************************
-open the client sockets
-****************************************************************************/
-BOOL
-cli_connect (struct cli_state * cli, const char *host, struct in_addr * ip)
-{
- extern struct in_addr ipzero;
-
- fstrcpy (cli->desthost, host);
-
- if (!ip || ip_equal (*ip, ipzero))
- {
- if (!resolve_name (cli->desthost, &cli->dest_ip, 0x20))
- {
- return False;
- }
- if (ip)
- *ip = cli->dest_ip;
- }
- else
- {
- cli->dest_ip = *ip;
- }
-
- if (cli->port == 0)
- cli->port = 139; /* Set to default */
-
- cli->fd = open_socket_out (SOCK_STREAM, &cli->dest_ip, cli->port, cli->timeout);
- if (cli->fd == -1)
- return False;
-
- return True;
-}
-
-
-/****************************************************************************
-initialise a client structure
-****************************************************************************/
-struct cli_state *
-cli_initialise (struct cli_state *cli)
-{
- if (!cli)
- {
- cli = (struct cli_state *) malloc (sizeof (*cli));
- if (!cli)
- return NULL;
- ZERO_STRUCTP (cli);
- }
-
- if (cli->initialised)
- {
- cli_shutdown (cli);
- }
-
- ZERO_STRUCTP (cli);
-
- cli->port = 0;
- cli->fd = -1;
- cli->cnum = -1;
- cli->pid = (uint16) getpid ();
- cli->mid = 1;
- cli->vuid = UID_FIELD_INVALID;
- cli->protocol = PROTOCOL_NT1;
- cli->timeout = 20000; /* Timeout is in milliseconds. */
- cli->bufsize = CLI_BUFFER_SIZE + 4;
- cli->max_xmit = cli->bufsize;
- cli->outbuf = (char *) malloc (cli->bufsize);
- cli->inbuf = (char *) malloc (cli->bufsize);
- if (!cli->outbuf || !cli->inbuf)
- {
- return False;
- }
-
- cli->initialised = 1;
-
- return cli;
-}
-
-/****************************************************************************
-shutdown a client structure
-****************************************************************************/
-void
-cli_shutdown (struct cli_state *cli)
-{
- if (cli->outbuf)
- {
- free (cli->outbuf);
- }
- if (cli->inbuf)
- {
- free (cli->inbuf);
- }
-#ifdef WITH_SSL
- if (cli->fd != -1)
- sslutil_disconnect (cli->fd);
-#endif /* WITH_SSL */
- if (cli->fd != -1)
- close (cli->fd);
- memset (cli, 0, sizeof (*cli));
-}
-
-
-/****************************************************************************
- return error codes for the last packet
- returns 0 if there was no error and the best approx of a unix errno
- otherwise
-
- for 32 bit "warnings", a return code of 0 is expected.
-
-****************************************************************************/
-int
-cli_error (struct cli_state *cli, uint8 * eclass, uint32 * num, uint32 * nt_rpc_error)
-{
- int flgs2 = SVAL (cli->inbuf, smb_flg2);
- char rcls;
- int code;
-
- if (eclass)
- *eclass = 0;
- if (num)
- *num = 0;
- if (nt_rpc_error)
- *nt_rpc_error = cli->nt_error;
-
- if (flgs2 & FLAGS2_32_BIT_ERROR_CODES)
- {
- /* 32 bit error codes detected */
- uint32 nt_err = IVAL (cli->inbuf, smb_rcls);
- if (num)
- *num = nt_err;
- DEBUG (10, ("cli_error: 32 bit codes: code=%08x\n", nt_err));
- if (!IS_BITS_SET_ALL (nt_err, 0xc0000000))
- return 0;
-
- switch (nt_err & 0xFFFFFF)
- {
- case NT_STATUS_ACCESS_VIOLATION:
- return EACCES;
- case NT_STATUS_NO_SUCH_FILE:
- return ENOENT;
- case NT_STATUS_NO_SUCH_DEVICE:
- return ENODEV;
- case NT_STATUS_INVALID_HANDLE:
- return EBADF;
- case NT_STATUS_NO_MEMORY:
- return ENOMEM;
- case NT_STATUS_ACCESS_DENIED:
- return EACCES;
- case NT_STATUS_OBJECT_NAME_NOT_FOUND:
- return ENOENT;
- case NT_STATUS_SHARING_VIOLATION:
- return EBUSY;
- case NT_STATUS_OBJECT_PATH_INVALID:
- return ENOTDIR;
- case NT_STATUS_OBJECT_NAME_COLLISION:
- return EEXIST;
- }
-
- /* for all other cases - a default code */
- return EINVAL;
- }
-
- rcls = CVAL (cli->inbuf, smb_rcls);
- code = SVAL (cli->inbuf, smb_err);
- if (rcls == 0)
- return 0;
-
- if (eclass)
- *eclass = rcls;
- if (num)
- *num = code;
-
- if (rcls == ERRDOS)
- {
- switch (code)
- {
- case ERRbadfile:
- return ENOENT;
- case ERRbadpath:
- return ENOTDIR;
- case ERRnoaccess:
- return EACCES;
- case ERRfilexists:
- return EEXIST;
- case ERRrename:
- return EEXIST;
- case ERRbadshare:
- return EBUSY;
- case ERRlock:
- return EBUSY;
- }
- }
- if (rcls == ERRSRV)
- {
- switch (code)
- {
- case ERRbadpw:
- return EPERM;
- case ERRaccess:
- return EACCES;
- case ERRnoresource:
- return ENOMEM;
- case ERRinvdevice:
- return ENODEV;
- case ERRinvnetname:
- return ENODEV;
- }
- }
- /* for other cases */
- return EINVAL;
-}
-
-#if 0
-/****************************************************************************
-set socket options on a open connection
-****************************************************************************/
-void
-cli_sockopt (struct cli_state *cli, char *options)
-{
- set_socket_options (cli->fd, options);
-}
-
-/****************************************************************************
-set the PID to use for smb messages. Return the old pid.
-****************************************************************************/
-uint16
-cli_setpid (struct cli_state *cli, uint16 pid)
-{
- uint16 ret = cli->pid;
- cli->pid = pid;
- return ret;
-}
-#endif /* 0 */
-
-/****************************************************************************
-re-establishes a connection
-****************************************************************************/
-BOOL
-cli_reestablish_connection (struct cli_state * cli)
-{
- struct nmb_name calling;
- struct nmb_name called;
- fstring dest_host;
- fstring share;
- fstring dev;
- BOOL do_tcon = False;
- int oldfd = cli->fd;
-
- if (!cli->initialised || cli->fd == -1)
- {
- DEBUG (3, ("cli_reestablish_connection: not connected\n"));
- return False;
- }
-
- /* copy the parameters necessary to re-establish the connection */
-
- if (cli->cnum != 0)
- {
- fstrcpy (share, cli->share);
- fstrcpy (dev, cli->dev);
- do_tcon = True;
- }
-
- memcpy (&called, &(cli->called), sizeof (called));
- memcpy (&calling, &(cli->calling), sizeof (calling));
- fstrcpy (dest_host, cli->full_dest_host_name);
-
- DEBUG (5, ("cli_reestablish_connection: %s connecting to %s (ip %s) - %s [%s]\n",
- nmb_namestr (&calling), nmb_namestr (&called),
- inet_ntoa (cli->dest_ip), cli->user_name, cli->domain));
-
- cli->fd = -1;
-
- if (cli_establish_connection (cli,
- dest_host, &cli->dest_ip,
- &calling, &called, share, dev, False, do_tcon))
- {
- if (cli->fd != oldfd)
- {
- if (dup2 (cli->fd, oldfd) == oldfd)
- {
- close (cli->fd);
- }
- }
- return True;
- }
- return False;
-}
-
-/****************************************************************************
-establishes a connection right up to doing tconX, reading in a password.
-****************************************************************************/
-BOOL
-cli_establish_connection (struct cli_state * cli,
- char *dest_host, struct in_addr * dest_ip,
- struct nmb_name * calling, struct nmb_name * called,
- char *service, char *service_type, BOOL do_shutdown, BOOL do_tcon)
-{
- DEBUG (5, ("cli_establish_connection: %s connecting to %s (%s) - %s [%s]\n",
- nmb_namestr (calling), nmb_namestr (called), inet_ntoa (*dest_ip),
- cli->user_name, cli->domain));
-
- /* establish connection */
-
- if ((!cli->initialised))
- {
- return False;
- }
-
- if (cli->fd == -1)
- {
- if (!cli_connect (cli, dest_host, dest_ip))
- {
- DEBUG (1, ("cli_establish_connection: failed to connect to %s (%s)\n",
- nmb_namestr (calling), inet_ntoa (*dest_ip)));
- return False;
- }
- }
-
- if (!cli_session_request (cli, calling, called))
- {
- DEBUG (1, ("failed session request\n"));
- if (do_shutdown)
- cli_shutdown (cli);
- return False;
- }
-
- if (!cli_negprot (cli))
- {
- DEBUG (1, ("failed negprot\n"));
- if (do_shutdown)
- cli_shutdown (cli);
- return False;
- }
-
- if (cli->pwd.cleartext || cli->pwd.null_pwd)
- {
- fstring passwd;
- int pass_len;
-
- if (cli->pwd.null_pwd)
- {
- /* attempt null session */
- passwd[0] = 0;
- pass_len = 1;
- }
- else
- {
- /* attempt clear-text session */
- pwd_get_cleartext (&(cli->pwd), passwd);
- pass_len = strlen (passwd);
- }
-
- /* attempt clear-text session */
- if (!cli_session_setup (cli, cli->user_name, passwd, pass_len, NULL, 0, cli->domain))
- {
- DEBUG (1, ("failed session setup\n"));
- if (do_shutdown)
- {
- cli_shutdown (cli);
- }
- return False;
- }
- if (do_tcon)
- {
- if (!cli_send_tconX (cli, service, service_type, (char *) passwd, strlen (passwd)))
- {
- DEBUG (1, ("failed tcon_X\n"));
- if (do_shutdown)
- {
- cli_shutdown (cli);
- }
- return False;
- }
- }
- }
- else
- {
- /* attempt encrypted session */
- unsigned char nt_sess_pwd[24];
- unsigned char lm_sess_pwd[24];
-
- /* creates (storing a copy of) and then obtains a 24 byte password OWF */
- pwd_make_lm_nt_owf (&(cli->pwd), cli->cryptkey);
- pwd_get_lm_nt_owf (&(cli->pwd), lm_sess_pwd, nt_sess_pwd);
-
- /* attempt encrypted session */
- if (!cli_session_setup (cli, cli->user_name,
- (char *) lm_sess_pwd, sizeof (lm_sess_pwd),
- (char *) nt_sess_pwd, sizeof (nt_sess_pwd), cli->domain))
- {
- DEBUG (1, ("failed session setup\n"));
- if (do_shutdown)
- cli_shutdown (cli);
- return False;
- }
-
- if (do_tcon)
- {
- if (!cli_send_tconX (cli, service, service_type,
- (char *) nt_sess_pwd, sizeof (nt_sess_pwd)))
- {
- DEBUG (1, ("failed tcon_X\n"));
- if (do_shutdown)
- cli_shutdown (cli);
- return False;
- }
- }
- }
-
- if (do_shutdown)
- cli_shutdown (cli);
-
- return True;
-}
-
-
-/****************************************************************************
-check for existence of a dir
-****************************************************************************/
-BOOL
-cli_chkpath (struct cli_state * cli, char *path)
-{
- pstring path2;
- char *p;
-
- safe_strcpy (path2, path, sizeof (pstring) - 1);
- trim_string (path2, NULL, "\\");
- if (!*path2)
- *path2 = '\\';
-
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 0, 4 + strlen (path2), True);
- SCVAL (cli->outbuf, smb_com, SMBchkpth);
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- safe_strcpy (p, path2, strlen (path2));
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (cli_error (cli, NULL, NULL, NULL))
- return False;
-
- return True;
-}
-
-#if 0
-/****************************************************************************
-start a message sequence
-****************************************************************************/
-BOOL
-cli_message_start (struct cli_state * cli, char *host, char *username, int *grp)
-{
- char *p;
-
- /* send a SMBsendstrt command */
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 0, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBsendstrt;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- pstrcpy (p, username);
- p = skip_string (p, 1);
- *p++ = 4;
- pstrcpy (p, host);
- p = skip_string (p, 1);
-
- set_message (cli->outbuf, 0, PTR_DIFF (p, smb_buf (cli->outbuf)), False);
-
- cli_send_smb (cli);
-
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (cli_error (cli, NULL, NULL, NULL))
- return False;
-
- *grp = SVAL (cli->inbuf, smb_vwv0);
-
- return True;
-}
-
-
-/****************************************************************************
-send a message
-****************************************************************************/
-BOOL
-cli_message_text (struct cli_state * cli, char *msg, int len, int grp)
-{
- char *p;
-
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 1, len + 3, True);
- CVAL (cli->outbuf, smb_com) = SMBsendtxt;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- SSVAL (cli->outbuf, smb_vwv0, grp);
-
- p = smb_buf (cli->outbuf);
- *p = 1;
- SSVAL (p, 1, len);
- memcpy (p + 3, msg, len);
- cli_send_smb (cli);
-
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (cli_error (cli, NULL, NULL, NULL))
- return False;
-
- return True;
-}
-
-/****************************************************************************
-end a message
-****************************************************************************/
-BOOL
-cli_message_end (struct cli_state * cli, int grp)
-{
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 1, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBsendend;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
-
- SSVAL (cli->outbuf, smb_vwv0, grp);
-
- cli_setup_packet (cli);
-
- cli_send_smb (cli);
-
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- if (cli_error (cli, NULL, NULL, NULL))
- return False;
-
- return True;
-}
-#endif /*0 */
-
-#if 0 /* May be useful one day */
-/****************************************************************************
-query disk space
-****************************************************************************/
-BOOL
-cli_dskattr (struct cli_state * cli, int *bsize, int *total, int *avail)
-{
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 0, 0, True);
- CVAL (cli->outbuf, smb_com) = SMBdskattr;
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
- cli_setup_packet (cli);
-
- cli_send_smb (cli);
- if (!cli_receive_smb (cli))
- {
- return False;
- }
-
- *bsize = SVAL (cli->inbuf, smb_vwv1) * SVAL (cli->inbuf, smb_vwv2);
- *total = SVAL (cli->inbuf, smb_vwv0);
- *avail = SVAL (cli->inbuf, smb_vwv3);
-
- return True;
-}
-#endif /* 0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/namequery.c
^
|
@@ -1,536 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- name query routines
-
- Copyright (C) Andrew Tridgell 1994-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-const char *unix_error_string (int error_num);
-extern pstring scope;
-extern int DEBUGLEVEL;
-
-/* nmbd.c sets this to True. */
-const BOOL global_in_nmbd = False;
-
-/****************************************************************************
- do a netbios name query to find someones IP
- returns an array of IP addresses or NULL if none
- *count will be set to the number of addresses returned
- ****************************************************************************/
-struct in_addr *
-name_query (int fd, const char *name, int name_type, BOOL bcast, BOOL recurse,
- struct in_addr to_ip, int *count, void (*fn) (struct packet_struct *))
-{
- BOOL found = False;
- int i, retries = 3;
- int retry_time = bcast ? 250 : 2000;
- struct timeval tval;
- struct packet_struct p;
- struct packet_struct *p2;
- struct nmb_packet *nmb = &p.packet.nmb;
- static int name_trn_id = 0;
- struct in_addr *ip_list = NULL;
-
- memset ((char *) &p, '\0', sizeof (p));
- (*count) = 0;
-
- if (!name_trn_id)
- name_trn_id = ((unsigned) time (NULL) % (unsigned) 0x7FFF) +
- ((unsigned) getpid () % (unsigned) 100);
- name_trn_id = (name_trn_id + 1) % (unsigned) 0x7FFF;
-
- nmb->header.name_trn_id = name_trn_id;
- nmb->header.opcode = 0;
- nmb->header.response = False;
- nmb->header.nm_flags.bcast = bcast;
- nmb->header.nm_flags.recursion_available = False;
- nmb->header.nm_flags.recursion_desired = recurse;
- nmb->header.nm_flags.trunc = False;
- nmb->header.nm_flags.authoritative = False;
- nmb->header.rcode = 0;
- nmb->header.qdcount = 1;
- nmb->header.ancount = 0;
- nmb->header.nscount = 0;
- nmb->header.arcount = 0;
-
- make_nmb_name (&nmb->question.question_name, name, name_type);
-
- nmb->question.question_type = 0x20;
- nmb->question.question_class = 0x1;
-
- p.ip = to_ip;
- p.port = NMB_PORT;
- p.fd = fd;
- p.timestamp = time (NULL);
- p.packet_type = NMB_PACKET;
-
- GetTimeOfDay (&tval);
-
- if (!send_packet (&p))
- return NULL;
-
- retries--;
-
- while (1)
- {
- struct timeval tval2;
- GetTimeOfDay (&tval2);
- if (TvalDiff (&tval, &tval2) > retry_time)
- {
- if (!retries)
- break;
- if (!found && !send_packet (&p))
- return NULL;
- GetTimeOfDay (&tval);
- retries--;
- }
-
- if ((p2 = receive_packet (fd, NMB_PACKET, 90)))
- {
- struct nmb_packet *nmb2 = &p2->packet.nmb;
- debug_nmb_packet (p2);
-
- if (nmb->header.name_trn_id != nmb2->header.name_trn_id || !nmb2->header.response)
- {
- /*
- * Its not for us - maybe deal with it later
- * (put it on the queue?).
- */
- if (fn)
- fn (p2);
- else
- free_packet (p2);
- continue;
- }
-
- if (nmb2->header.opcode != 0 ||
- nmb2->header.nm_flags.bcast || nmb2->header.rcode || !nmb2->header.ancount)
- {
- /*
- * XXXX what do we do with this? Could be a redirect, but
- * we'll discard it for the moment.
- */
- free_packet (p2);
- continue;
- }
-
- ip_list = (struct in_addr *) Realloc (ip_list, sizeof (ip_list[0]) *
- ((*count) + nmb2->answers->rdlength / 6));
- if (ip_list)
- {
- DEBUG (fn ? 3 : 2, ("Got a positive name query response from %s ( ",
- inet_ntoa (p2->ip)));
- for (i = 0; i < nmb2->answers->rdlength / 6; i++)
- {
- putip ((char *) &ip_list[(*count)], &nmb2->answers->rdata[2 + i * 6]);
- DEBUG (fn ? 3 : 2, ("%s ", inet_ntoa (ip_list[(*count)])));
- (*count)++;
- }
- DEBUG (fn ? 3 : 2, (")\n"));
- }
-
- found = True;
- retries = 0;
- free_packet (p2);
- if (fn)
- break;
-
- /*
- * If we're doing a unicast lookup we only
- * expect one reply. Don't wait the full 2
- * seconds if we got one. JRA.
- */
- if (!bcast && found)
- break;
- }
- }
-
- return ip_list;
-}
-
-/********************************************************
- Start parsing the lmhosts file.
-*********************************************************/
-
-FILE *
-startlmhosts (const char *fname)
-{
- FILE *fp = sys_fopen (fname, "r");
- if (!fp)
- {
- DEBUG (4, ("startlmhosts: Cannot open lmhosts file %s. Error was %s\n",
- fname, unix_error_string (errno)));
- return NULL;
- }
- return fp;
-}
-
-/********************************************************
- Parse the next line in the lmhosts file.
-*********************************************************/
-BOOL
-getlmhostsent (FILE * fp, pstring name, int *name_type, struct in_addr * ipaddr)
-{
- pstring line;
-
- while (!feof (fp) && !ferror (fp))
- {
- pstring ip, flags, extra;
- char *ptr;
- int count = 0;
-
- *name_type = -1;
-
- if (!fgets_slash (line, sizeof (pstring), fp))
- continue;
-
- if (*line == '#')
- continue;
-
- pstrcpy (ip, "");
- pstrcpy (name, "");
- pstrcpy (flags, "");
-
- ptr = line;
-
- if (next_token (&ptr, ip, NULL, sizeof (ip)))
- ++count;
- if (next_token (&ptr, name, NULL, sizeof (pstring)))
- ++count;
- if (next_token (&ptr, flags, NULL, sizeof (flags)))
- ++count;
- if (next_token (&ptr, extra, NULL, sizeof (extra)))
- ++count;
-
- if (count <= 0)
- continue;
-
- if (count > 0 && count < 2)
- {
- DEBUG (0, ("getlmhostsent: Ill formed hosts line [%s]\n", line));
- continue;
- }
-
- if (count >= 4)
- {
- DEBUG (0, ("getlmhostsent: too many columns in lmhosts file (obsolete syntax)\n"));
- continue;
- }
-
- DEBUG (4, ("getlmhostsent: lmhost entry: %s %s %s\n", ip, name, flags));
-
- if (strchr (flags, 'G') || strchr (flags, 'S'))
- {
- DEBUG (0, ("getlmhostsent: group flag in lmhosts ignored (obsolete)\n"));
- continue;
- }
-
- *ipaddr = *interpret_addr2 (ip);
-
- /* Extra feature. If the name ends in '#XX', where XX is a hex number,
- then only add that name type. */
- if ((ptr = strchr (name, '#')) != NULL)
- {
- char *endptr;
-
- ptr++;
- *name_type = (int) strtol (ptr, &endptr, 16);
-
- if (!*ptr || (endptr == ptr))
- {
- DEBUG (0, ("getlmhostsent: invalid name %s containing '#'.\n", name));
- continue;
- }
-
- *(--ptr) = '\0'; /* Truncate at the '#' */
- }
-
- return True;
- }
-
- return False;
-}
-
-/********************************************************
- Finish parsing the lmhosts file.
-*********************************************************/
-
-void
-endlmhosts (FILE * fp)
-{
- fclose (fp);
-}
-
-/********************************************************
-resolve via "bcast" method
-*********************************************************/
-static BOOL
-resolve_bcast (const char *name, struct in_addr *return_ip, int name_type)
-{
- int sock, i;
-
- /*
- * "bcast" means do a broadcast lookup on all the local interfaces.
- */
-
- DEBUG (3, ("resolve_name: Attempting broadcast lookup for name %s<0x%x>\n", name, name_type));
-
- sock = open_socket_in (SOCK_DGRAM, 0, 3, interpret_addr (lp_socket_address ()), True);
-
- if (sock != -1)
- {
- struct in_addr *iplist = NULL;
- int count;
- int num_interfaces = iface_count ();
- set_socket_options (sock, "SO_BROADCAST");
- /*
- * Lookup the name on all the interfaces, return on
- * the first successful match.
- */
- for (i = 0; i < num_interfaces; i++)
- {
- struct in_addr sendto_ip;
- /* Done this way to fix compiler error on IRIX 5.x */
- sendto_ip = *iface_bcast (*iface_n_ip (i));
- iplist = name_query (sock, name, name_type, True, True, sendto_ip, &count, NULL);
- if (iplist != NULL)
- {
- *return_ip = iplist[0];
- free ((char *) iplist);
- close (sock);
- return True;
- }
- }
- close (sock);
- }
-
- return False;
-}
-
-
-
-/********************************************************
-resolve via "wins" method
-*********************************************************/
-static BOOL
-resolve_wins (const char *name, struct in_addr *return_ip, int name_type)
-{
- int sock;
- struct in_addr wins_ip;
- BOOL wins_ismyip;
-
- /*
- * "wins" means do a unicast lookup to the WINS server.
- * Ignore if there is no WINS server specified or if the
- * WINS server is one of our interfaces (if we're being
- * called from within nmbd - we can't do this call as we
- * would then block).
- */
-
- DEBUG (3, ("resolve_name: Attempting wins lookup for name %s<0x%x>\n", name, name_type));
-
- if (!*lp_wins_server ())
- {
- DEBUG (3, ("resolve_name: WINS server resolution selected and no WINS server present.\n"));
- return False;
- }
-
- wins_ip = *interpret_addr2 (lp_wins_server ());
- wins_ismyip = ismyip (wins_ip);
-
- if ((wins_ismyip && !global_in_nmbd) || !wins_ismyip)
- {
- sock = open_socket_in (SOCK_DGRAM, 0, 3, interpret_addr (lp_socket_address ()), True);
-
- if (sock != -1)
- {
- struct in_addr *iplist = NULL;
- int count;
- iplist = name_query (sock, name, name_type, False, True, wins_ip, &count, NULL);
- if (iplist != NULL)
- {
- *return_ip = iplist[0];
- free ((char *) iplist);
- close (sock);
- return True;
- }
- close (sock);
- }
- }
-
- return False;
-}
-
-
-/********************************************************
-resolve via "lmhosts" method
-*********************************************************/
-static BOOL
-resolve_lmhosts (const char *name, struct in_addr *return_ip, int name_type)
-{
- /*
- * "lmhosts" means parse the local lmhosts file.
- */
-
- FILE *fp;
- pstring lmhost_name;
- int name_type2;
-
- DEBUG (3, ("resolve_name: Attempting lmhosts lookup for name %s<0x%x>\n", name, name_type));
-
- fp = startlmhosts (LMHOSTSFILE);
- if (fp)
- {
- while (getlmhostsent (fp, lmhost_name, &name_type2, return_ip))
- {
- if (strequal (name, lmhost_name) && ((name_type2 == -1) || (name_type == name_type2)))
- {
- endlmhosts (fp);
- return True;
- }
- }
- endlmhosts (fp);
- }
- return False;
-}
-
-
-/********************************************************
-resolve via "hosts" method
-*********************************************************/
-static BOOL
-resolve_hosts (const char *name, struct in_addr *return_ip)
-{
- /*
- * "host" means do a localhost, or dns lookup.
- */
- struct hostent *hp;
-
- DEBUG (3, ("resolve_name: Attempting host lookup for name %s<0x20>\n", name));
-
- if (((hp = Get_Hostbyname (name)) != NULL) && (hp->h_addr != NULL))
- {
- putip ((char *) return_ip, (char *) hp->h_addr);
- return True;
- }
- return False;
-}
-
-
-/********************************************************
- Resolve a name into an IP address. Use this function if
- the string is either an IP address, DNS or host name
- or NetBIOS name. This uses the name switch in the
- smb.conf to determine the order of name resolution.
-*********************************************************/
-BOOL
-resolve_name (const char *name, struct in_addr * return_ip, int name_type)
-{
- int i;
- BOOL pure_address = True;
- pstring name_resolve_list;
- fstring tok;
- char *ptr;
-
- if (strcmp (name, "0.0.0.0") == 0)
- {
- return_ip->s_addr = 0;
- return True;
- }
- if (strcmp (name, "255.255.255.255") == 0)
- {
- return_ip->s_addr = 0xFFFFFFFF;
- return True;
- }
-
- for (i = 0; pure_address && name[i]; i++)
- if (!(isdigit ((int) name[i]) || name[i] == '.'))
- pure_address = False;
-
- /* if it's in the form of an IP address then get the lib to interpret it */
- if (pure_address)
- {
- return_ip->s_addr = inet_addr (name);
- return True;
- }
-
- pstrcpy (name_resolve_list, lp_name_resolve_order ());
- if (name_resolve_list == NULL || *name_resolve_list == '\0')
- pstrcpy (name_resolve_list, "host");
- ptr = name_resolve_list;
-
- while (next_token (&ptr, tok, LIST_SEP, sizeof (tok)))
- {
- if ((strequal (tok, "host") || strequal (tok, "hosts")))
- {
- if (name_type == 0x20 && resolve_hosts (name, return_ip))
- {
- return True;
- }
- }
- else if (strequal (tok, "lmhosts"))
- {
- if (resolve_lmhosts (name, return_ip, name_type))
- {
- return True;
- }
- }
- else if (strequal (tok, "wins"))
- {
- /* don't resolve 1D via WINS */
- if (name_type != 0x1D && resolve_wins (name, return_ip, name_type))
- {
- return True;
- }
- }
- else if (strequal (tok, "bcast"))
- {
- if (resolve_bcast (name, return_ip, name_type))
- {
- return True;
- }
- }
- else
- {
- DEBUG (0, ("resolve_name: unknown name switch type %s\n", tok));
- }
- }
-
- return False;
-}
-
-
-#if 0
-/********************************************************
-find the IP address of the master browser or DMB for a workgroup
-*********************************************************/
-BOOL
-find_master_ip (char *group, struct in_addr * master_ip)
-{
- if (resolve_name (group, master_ip, 0x1D))
- return True;
-
- return resolve_name (group, master_ip, 0x1B);
-}
-#endif /* 0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/nmblib.c
^
|
@@ -1,1036 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- NBT netbios library routines
-
- Copyright (C) Andrew Tridgell 1994-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-const char *unix_error_string (int error_num);
-extern int DEBUGLEVEL;
-
-int num_good_sends = 0;
-int num_good_receives = 0;
-
-static struct opcode_names
-{
- const char *nmb_opcode_name;
- int opcode;
-} const nmb_header_opcode_names[] = {
- {"Query", 0},
- {"Registration", 5},
- {"Release", 6},
- {"WACK", 7},
- {"Refresh", 8},
- {"Refresh(altcode)", 9},
- {"Multi-homed Registration", 15},
- {0, -1}
-};
-
-/****************************************************************************
- * Lookup a nmb opcode name.
- ****************************************************************************/
-static const char *
-lookup_opcode_name (int opcode)
-{
- const struct opcode_names *op_namep = nmb_header_opcode_names;
-
- while (op_namep->nmb_opcode_name)
- {
- if (opcode == op_namep->opcode)
- return op_namep->nmb_opcode_name;
- op_namep++;
- }
- return "<unknown opcode>";
-}
-
-/****************************************************************************
- print out a res_rec structure
- ****************************************************************************/
-static void
-debug_nmb_res_rec (struct res_rec *res, const char *hdr)
-{
- int i, j;
-
- DEBUGADD (4, (" %s: nmb_name=%s rr_type=%d rr_class=%d ttl=%d\n",
- hdr, nmb_namestr (&res->rr_name), res->rr_type, res->rr_class, res->ttl));
-
- if (res->rdlength == 0 || res->rdata == NULL)
- return;
-
- for (i = 0; i < res->rdlength; i += 16)
- {
- DEBUGADD (4, (" %s %3x char ", hdr, i));
-
- for (j = 0; j < 16; j++)
- {
- unsigned char x = res->rdata[i + j];
- if (x < 32 || x > 127)
- x = '.';
-
- if (i + j >= res->rdlength)
- break;
- DEBUGADD (4, ("%c", x));
- }
-
- DEBUGADD (4, (" hex "));
-
- for (j = 0; j < 16; j++)
- {
- if (i + j >= res->rdlength)
- break;
- DEBUGADD (4, ("%02X", (unsigned char) res->rdata[i + j]));
- }
-
- DEBUGADD (4, ("\n"));
- }
-}
-
-/****************************************************************************
- process a nmb packet
- ****************************************************************************/
-void
-debug_nmb_packet (struct packet_struct *p)
-{
- struct nmb_packet *nmb = &p->packet.nmb;
-
- if (DEBUGLVL (4))
- {
- dbgtext ("nmb packet from %s(%d) header: id=%d opcode=%s(%d) response=%s\n",
- inet_ntoa (p->ip), p->port,
- nmb->header.name_trn_id,
- lookup_opcode_name (nmb->header.opcode),
- nmb->header.opcode, BOOLSTR (nmb->header.response));
- dbgtext (" header: flags: bcast=%s rec_avail=%s rec_des=%s trunc=%s auth=%s\n",
- BOOLSTR (nmb->header.nm_flags.bcast),
- BOOLSTR (nmb->header.nm_flags.recursion_available),
- BOOLSTR (nmb->header.nm_flags.recursion_desired),
- BOOLSTR (nmb->header.nm_flags.trunc),
- BOOLSTR (nmb->header.nm_flags.authoritative));
- dbgtext (" header: rcode=%d qdcount=%d ancount=%d nscount=%d arcount=%d\n",
- nmb->header.rcode,
- nmb->header.qdcount,
- nmb->header.ancount, nmb->header.nscount, nmb->header.arcount);
- }
-
- if (nmb->header.qdcount)
- {
- DEBUGADD (4, (" question: q_name=%s q_type=%d q_class=%d\n",
- nmb_namestr (&nmb->question.question_name),
- nmb->question.question_type, nmb->question.question_class));
- }
-
- if (nmb->answers && nmb->header.ancount)
- {
- debug_nmb_res_rec (nmb->answers, "answers");
- }
- if (nmb->nsrecs && nmb->header.nscount)
- {
- debug_nmb_res_rec (nmb->nsrecs, "nsrecs");
- }
- if (nmb->additional && nmb->header.arcount)
- {
- debug_nmb_res_rec (nmb->additional, "additional");
- }
-}
-
-/*******************************************************************
- handle "compressed" name pointers
- ******************************************************************/
-static BOOL
-handle_name_ptrs (unsigned char *ubuf, int *offset, int length, BOOL * got_pointer, int *ret)
-{
- int loop_count = 0;
-
- while ((ubuf[*offset] & 0xC0) == 0xC0)
- {
- if (!*got_pointer)
- (*ret) += 2;
- (*got_pointer) = True;
- (*offset) = ((ubuf[*offset] & ~0xC0) << 8) | ubuf[(*offset) + 1];
- if (loop_count++ == 10 || (*offset) < 0 || (*offset) > (length - 2))
- {
- return (False);
- }
- }
- return (True);
-}
-
-/*******************************************************************
- parse a nmb name from "compressed" format to something readable
- return the space taken by the name, or 0 if the name is invalid
- ******************************************************************/
-static int
-parse_nmb_name (char *inbuf, int offset, int length, struct nmb_name *name)
-{
- int m, n = 0;
- unsigned char *ubuf = (unsigned char *) inbuf;
- int ret = 0;
- BOOL got_pointer = False;
-
- if (length - offset < 2)
- return (0);
-
- /* handle initial name pointers */
- if (!handle_name_ptrs (ubuf, &offset, length, &got_pointer, &ret))
- return (0);
-
- m = ubuf[offset];
-
- if (!m)
- return (0);
- if ((m & 0xC0) || offset + m + 2 > length)
- return (0);
-
- memset ((char *) name, '\0', sizeof (*name));
-
- /* the "compressed" part */
- if (!got_pointer)
- ret += m + 2;
- offset++;
- while (m > 0)
- {
- unsigned char c1, c2;
- c1 = ubuf[offset++] - 'A';
- c2 = ubuf[offset++] - 'A';
- if ((c1 & 0xF0) || (c2 & 0xF0) || ((size_t) n > sizeof (name->name) - 1))
- return (0);
- name->name[n++] = (c1 << 4) | c2;
- m -= 2;
- }
- name->name[n] = 0;
-
- if (n == 16)
- {
- /* parse out the name type,
- its always in the 16th byte of the name */
- name->name_type = ((unsigned char) name->name[15]) & 0xff;
-
- /* remove trailing spaces */
- name->name[15] = 0;
- n = 14;
- while (n && name->name[n] == ' ')
- name->name[n--] = 0;
- }
-
- /* now the domain parts (if any) */
- n = 0;
- while (ubuf[offset])
- {
- /* we can have pointers within the domain part as well */
- if (!handle_name_ptrs (ubuf, &offset, length, &got_pointer, &ret))
- return (0);
-
- m = ubuf[offset];
- if (!got_pointer)
- ret += m + 1;
- if (n)
- name->scope[n++] = '.';
- if (m + 2 + offset > length || (size_t) n + m + 1 > sizeof (name->scope))
- return (0);
- offset++;
- while (m--)
- name->scope[n++] = (char) ubuf[offset++];
- }
- name->scope[n++] = 0;
-
- return (ret);
-}
-
-
-/*******************************************************************
- put a compressed nmb name into a buffer. return the length of the
- compressed name
-
- compressed names are really weird. The "compression" doubles the
- size. The idea is that it also means that compressed names conform
- to the doman name system. See RFC1002.
- ******************************************************************/
-static int
-put_nmb_name (char *buf, int offset, struct nmb_name *name)
-{
- int ret, m;
- fstring buf1;
- char *p;
-
- if (strcmp (name->name, "*") == 0)
- {
- /* special case for wildcard name */
- memset (buf1, '\0', 20);
- buf1[0] = '*';
- buf1[15] = name->name_type;
- }
- else
- {
- slprintf (buf1, sizeof (buf1) - 1, "%-15.15s%c", name->name, name->name_type);
- }
-
- buf[offset] = 0x20;
-
- ret = 34;
-
- for (m = 0; m < 16; m++)
- {
- buf[offset + 1 + 2 * m] = 'A' + ((buf1[m] >> 4) & 0xF);
- buf[offset + 2 + 2 * m] = 'A' + (buf1[m] & 0xF);
- }
- offset += 33;
-
- buf[offset] = 0;
-
- if (name->scope[0])
- {
- /* XXXX this scope handling needs testing */
- ret += strlen (name->scope) + 1;
- pstrcpy (&buf[offset + 1], name->scope);
-
- p = &buf[offset + 1];
- while ((p = strchr (p, '.')))
- {
- buf[offset] = PTR_DIFF (p, &buf[offset + 1]);
- offset += (buf[offset] + 1);
- p = &buf[offset + 1];
- }
- buf[offset] = strlen (&buf[offset + 1]);
- }
-
- return (ret);
-}
-
-/*******************************************************************
- useful for debugging messages
- ******************************************************************/
-char *
-nmb_namestr (struct nmb_name *n)
-{
- static int i = 0;
- static fstring ret[4];
- char *p = ret[i];
-
- if (!n->scope[0])
- slprintf (p, sizeof (fstring) - 1, "%s<%02x>", n->name, n->name_type);
- else
- slprintf (p, sizeof (fstring) - 1, "%s<%02x>.%s", n->name, n->name_type, n->scope);
-
- i = (i + 1) % 4;
- return (p);
-}
-
-/*******************************************************************
- allocate and parse some resource records
- ******************************************************************/
-static BOOL
-parse_alloc_res_rec (char *inbuf, int *offset, int length, struct res_rec **recs, int count)
-{
- int i;
- *recs = (struct res_rec *) malloc (sizeof (**recs) * count);
- if (!*recs)
- return (False);
-
- memset ((char *) *recs, '\0', sizeof (**recs) * count);
-
- for (i = 0; i < count; i++)
- {
- int l = parse_nmb_name (inbuf, *offset, length, &(*recs)[i].rr_name);
- (*offset) += l;
- if (!l || (*offset) + 10 > length)
- {
- free (*recs);
- return (False);
- }
- (*recs)[i].rr_type = RSVAL (inbuf, (*offset));
- (*recs)[i].rr_class = RSVAL (inbuf, (*offset) + 2);
- (*recs)[i].ttl = RIVAL (inbuf, (*offset) + 4);
- (*recs)[i].rdlength = RSVAL (inbuf, (*offset) + 8);
- (*offset) += 10;
- if ((size_t) (*recs)[i].rdlength > sizeof ((*recs)[i].rdata) ||
- (*offset) + (*recs)[i].rdlength > length)
- {
- free (*recs);
- return (False);
- }
- memcpy ((*recs)[i].rdata, inbuf + (*offset), (*recs)[i].rdlength);
- (*offset) += (*recs)[i].rdlength;
- }
- return (True);
-}
-
-/*******************************************************************
- put a resource record into a packet
- ******************************************************************/
-static int
-put_res_rec (char *buf, int offset, struct res_rec *recs, int count)
-{
- int ret = 0;
- int i;
-
- for (i = 0; i < count; i++)
- {
- int l = put_nmb_name (buf, offset, &recs[i].rr_name);
- offset += l;
- ret += l;
- RSSVAL (buf, offset, recs[i].rr_type);
- RSSVAL (buf, offset + 2, recs[i].rr_class);
- RSIVAL (buf, offset + 4, recs[i].ttl);
- RSSVAL (buf, offset + 8, recs[i].rdlength);
- memcpy (buf + offset + 10, recs[i].rdata, recs[i].rdlength);
- offset += 10 + recs[i].rdlength;
- ret += 10 + recs[i].rdlength;
- }
-
- return (ret);
-}
-
-/*******************************************************************
- put a compressed name pointer record into a packet
- ******************************************************************/
-static int
-put_compressed_name_ptr (unsigned char *buf, int offset, struct res_rec *rec, int ptr_offset)
-{
- int ret = 0;
- buf[offset] = (0xC0 | ((ptr_offset >> 8) & 0xFF));
- buf[offset + 1] = (ptr_offset & 0xFF);
- offset += 2;
- ret += 2;
- RSSVAL (buf, offset, rec->rr_type);
- RSSVAL (buf, offset + 2, rec->rr_class);
- RSIVAL (buf, offset + 4, rec->ttl);
- RSSVAL (buf, offset + 8, rec->rdlength);
- memcpy (buf + offset + 10, rec->rdata, rec->rdlength);
- offset += 10 + rec->rdlength;
- ret += 10 + rec->rdlength;
-
- return (ret);
-}
-
-/*******************************************************************
- parse a dgram packet. Return False if the packet can't be parsed
- or is invalid for some reason, True otherwise
-
- this is documented in section 4.4.1 of RFC1002
- ******************************************************************/
-static BOOL
-parse_dgram (char *inbuf, int length, struct dgram_packet *dgram)
-{
- int offset;
- int flags;
-
- memset ((char *) dgram, '\0', sizeof (*dgram));
-
- if (length < 14)
- return (False);
-
- dgram->header.msg_type = CVAL (inbuf, 0);
- flags = CVAL (inbuf, 1);
- dgram->header.flags.node_type = (enum node_type) ((flags >> 2) & 3);
- if (flags & 1)
- dgram->header.flags.more = True;
- if (flags & 2)
- dgram->header.flags.first = True;
- dgram->header.dgm_id = RSVAL (inbuf, 2);
- putip ((char *) &dgram->header.source_ip, inbuf + 4);
- dgram->header.source_port = RSVAL (inbuf, 8);
- dgram->header.dgm_length = RSVAL (inbuf, 10);
- dgram->header.packet_offset = RSVAL (inbuf, 12);
-
- offset = 14;
-
- if (dgram->header.msg_type == 0x10 ||
- dgram->header.msg_type == 0x11 || dgram->header.msg_type == 0x12)
- {
- offset += parse_nmb_name (inbuf, offset, length, &dgram->source_name);
- offset += parse_nmb_name (inbuf, offset, length, &dgram->dest_name);
- }
-
- if (offset >= length || ((size_t) length - offset > sizeof (dgram->data)))
- return (False);
-
- dgram->datasize = length - offset;
- memcpy (dgram->data, inbuf + offset, dgram->datasize);
-
- return (True);
-}
-
-
-/*******************************************************************
- parse a nmb packet. Return False if the packet can't be parsed
- or is invalid for some reason, True otherwise
- ******************************************************************/
-static BOOL
-parse_nmb (char *inbuf, int length, struct nmb_packet *nmb)
-{
- int nm_flags, offset;
-
- memset ((char *) nmb, '\0', sizeof (*nmb));
-
- if (length < 12)
- return (False);
-
- /* parse the header */
- nmb->header.name_trn_id = RSVAL (inbuf, 0);
-
- DEBUG (10, ("parse_nmb: packet id = %d\n", nmb->header.name_trn_id));
-
- nmb->header.opcode = (CVAL (inbuf, 2) >> 3) & 0xF;
- nmb->header.response = ((CVAL (inbuf, 2) >> 7) & 1) ? True : False;
- nm_flags = ((CVAL (inbuf, 2) & 0x7) << 4) + (CVAL (inbuf, 3) >> 4);
- nmb->header.nm_flags.bcast = (nm_flags & 1) ? True : False;
- nmb->header.nm_flags.recursion_available = (nm_flags & 8) ? True : False;
- nmb->header.nm_flags.recursion_desired = (nm_flags & 0x10) ? True : False;
- nmb->header.nm_flags.trunc = (nm_flags & 0x20) ? True : False;
- nmb->header.nm_flags.authoritative = (nm_flags & 0x40) ? True : False;
- nmb->header.rcode = CVAL (inbuf, 3) & 0xF;
- nmb->header.qdcount = RSVAL (inbuf, 4);
- nmb->header.ancount = RSVAL (inbuf, 6);
- nmb->header.nscount = RSVAL (inbuf, 8);
- nmb->header.arcount = RSVAL (inbuf, 10);
-
- if (nmb->header.qdcount)
- {
- offset = parse_nmb_name (inbuf, 12, length, &nmb->question.question_name);
- if (!offset)
- return (False);
-
- if (length - (12 + offset) < 4)
- return (False);
- nmb->question.question_type = RSVAL (inbuf, 12 + offset);
- nmb->question.question_class = RSVAL (inbuf, 12 + offset + 2);
-
- offset += 12 + 4;
- }
- else
- {
- offset = 12;
- }
-
- /* and any resource records */
- if (nmb->header.ancount &&
- !parse_alloc_res_rec (inbuf, &offset, length, &nmb->answers, nmb->header.ancount))
- return (False);
-
- if (nmb->header.nscount &&
- !parse_alloc_res_rec (inbuf, &offset, length, &nmb->nsrecs, nmb->header.nscount))
- return (False);
-
- if (nmb->header.arcount &&
- !parse_alloc_res_rec (inbuf, &offset, length, &nmb->additional, nmb->header.arcount))
- return (False);
-
- return (True);
-}
-
-#if 0
-/*******************************************************************
- 'Copy constructor' for an nmb packet
- ******************************************************************/
-static struct packet_struct *
-copy_nmb_packet (struct packet_struct *packet)
-{
- struct nmb_packet *nmb;
- struct nmb_packet *copy_nmb;
- struct packet_struct *pkt_copy;
-
- if ((pkt_copy = (struct packet_struct *) malloc (sizeof (*packet))) == NULL)
- {
- DEBUG (0, ("copy_nmb_packet: malloc fail.\n"));
- return NULL;
- }
-
- /* Structure copy of entire thing. */
-
- *pkt_copy = *packet;
-
- /* Ensure this copy is not locked. */
- pkt_copy->locked = False;
-
- /* Ensure this copy has no resource records. */
- nmb = &packet->packet.nmb;
- copy_nmb = &pkt_copy->packet.nmb;
-
- copy_nmb->answers = NULL;
- copy_nmb->nsrecs = NULL;
- copy_nmb->additional = NULL;
-
- /* Now copy any resource records. */
-
- if (nmb->answers)
- {
- if ((copy_nmb->answers = (struct res_rec *)
- malloc (nmb->header.ancount * sizeof (struct res_rec))) == NULL)
- goto free_and_exit;
- memcpy ((char *) copy_nmb->answers, (char *) nmb->answers,
- nmb->header.ancount * sizeof (struct res_rec));
- }
- if (nmb->nsrecs)
- {
- if ((copy_nmb->nsrecs = (struct res_rec *)
- malloc (nmb->header.nscount * sizeof (struct res_rec))) == NULL)
- goto free_and_exit;
- memcpy ((char *) copy_nmb->nsrecs, (char *) nmb->nsrecs,
- nmb->header.nscount * sizeof (struct res_rec));
- }
- if (nmb->additional)
- {
- if ((copy_nmb->additional = (struct res_rec *)
- malloc (nmb->header.arcount * sizeof (struct res_rec))) == NULL)
- goto free_and_exit;
- memcpy ((char *) copy_nmb->additional, (char *) nmb->additional,
- nmb->header.arcount * sizeof (struct res_rec));
- }
-
- return pkt_copy;
-
- free_and_exit:
-
- if (copy_nmb->answers)
- free ((char *) copy_nmb->answers);
- if (copy_nmb->nsrecs)
- free ((char *) copy_nmb->nsrecs);
- if (copy_nmb->additional)
- free ((char *) copy_nmb->additional);
- free ((char *) pkt_copy);
-
- DEBUG (0, ("copy_nmb_packet: malloc fail in resource records.\n"));
- return NULL;
-}
-
-/*******************************************************************
- 'Copy constructor' for a dgram packet
- ******************************************************************/
-static struct packet_struct *
-copy_dgram_packet (struct packet_struct *packet)
-{
- struct packet_struct *pkt_copy;
-
- if ((pkt_copy = (struct packet_struct *) malloc (sizeof (*packet))) == NULL)
- {
- DEBUG (0, ("copy_dgram_packet: malloc fail.\n"));
- return NULL;
- }
-
- /* Structure copy of entire thing. */
-
- *pkt_copy = *packet;
-
- /* Ensure this copy is not locked. */
- pkt_copy->locked = False;
-
- /* There are no additional pointers in a dgram packet,
- we are finished. */
- return pkt_copy;
-}
-
-/*******************************************************************
- 'Copy constructor' for a generic packet
- ******************************************************************/
-struct packet_struct *
-copy_packet (struct packet_struct *packet)
-{
- if (packet->packet_type == NMB_PACKET)
- return copy_nmb_packet (packet);
- else if (packet->packet_type == DGRAM_PACKET)
- return copy_dgram_packet (packet);
- return NULL;
-}
-#endif /* 0 */
-/*******************************************************************
- free up any resources associated with an nmb packet
- ******************************************************************/
-static void
-free_nmb_packet (struct nmb_packet *nmb)
-{
- if (nmb->answers)
- free (nmb->answers);
- if (nmb->nsrecs)
- free (nmb->nsrecs);
- if (nmb->additional)
- free (nmb->additional);
-}
-
-/*******************************************************************
- free up any resources associated with a dgram packet
- ******************************************************************/
-static void
-free_dgram_packet (struct dgram_packet *nmb)
-{
- /* We have nothing to do for a dgram packet. */
- (void) nmb;
-}
-
-/*******************************************************************
- free up any resources associated with a packet
- ******************************************************************/
-void
-free_packet (struct packet_struct *packet)
-{
- if (packet->locked)
- return;
- if (packet->packet_type == NMB_PACKET)
- free_nmb_packet (&packet->packet.nmb);
- else if (packet->packet_type == DGRAM_PACKET)
- free_dgram_packet (&packet->packet.dgram);
- free (packet);
-}
-
-/*******************************************************************
- read a packet from a socket and parse it, returning a packet ready
- to be used or put on the queue. This assumes a UDP socket
- ******************************************************************/
-struct packet_struct *
-read_packet (int fd, enum packet_type packet_type)
-{
- extern struct in_addr lastip;
- extern int lastport;
- struct packet_struct *packet;
- char buf[MAX_DGRAM_SIZE];
- int length;
- BOOL ok = False;
-
- length = read_udp_socket (fd, buf, sizeof (buf));
- if (length < MIN_DGRAM_SIZE)
- return (NULL);
-
- packet = (struct packet_struct *) malloc (sizeof (*packet));
- if (!packet)
- return (NULL);
-
- packet->next = NULL;
- packet->prev = NULL;
- packet->ip = lastip;
- packet->port = lastport;
- packet->fd = fd;
- packet->locked = False;
- packet->timestamp = time (NULL);
- packet->packet_type = packet_type;
- switch (packet_type)
- {
- case NMB_PACKET:
- ok = parse_nmb (buf, length, &packet->packet.nmb);
- break;
-
- case DGRAM_PACKET:
- ok = parse_dgram (buf, length, &packet->packet.dgram);
- break;
- }
- if (!ok)
- {
- DEBUG (10, ("read_packet: discarding packet id = %d\n",
- packet->packet.nmb.header.name_trn_id));
- free_packet (packet);
- return (NULL);
- }
-
- num_good_receives++;
-
- DEBUG (5, ("Received a packet of len %d from (%s) port %d\n",
- length, inet_ntoa (packet->ip), packet->port));
-
- return (packet);
-}
-
-
-/*******************************************************************
- send a udp packet on a already open socket
- ******************************************************************/
-static BOOL
-send_udp (int fd, char *buf, int len, struct in_addr ip, int port)
-{
- BOOL ret;
- struct sockaddr_in sock_out;
-
- /* set the address and port */
- memset ((char *) &sock_out, '\0', sizeof (sock_out));
- putip ((char *) &sock_out.sin_addr, (char *) &ip);
- sock_out.sin_port = htons (port);
- sock_out.sin_family = AF_INET;
-
- DEBUG (5, ("Sending a packet of len %d to (%s) on port %d\n", len, inet_ntoa (ip), port));
-
- ret = (sendto (fd, buf, len, 0, (struct sockaddr *) &sock_out, sizeof (sock_out)) >= 0);
-
- if (!ret)
- DEBUG (0, ("Packet send failed to %s(%d) ERRNO=%s\n",
- inet_ntoa (ip), port, unix_error_string (errno)));
-
- if (ret)
- num_good_sends++;
-
- return (ret);
-}
-
-/*******************************************************************
- build a dgram packet ready for sending
-
- XXXX This currently doesn't handle packets too big for one
- datagram. It should split them and use the packet_offset, more and
- first flags to handle the fragmentation. Yuck.
- ******************************************************************/
-static int
-build_dgram (char *buf, struct packet_struct *p)
-{
- struct dgram_packet *dgram = &p->packet.dgram;
- unsigned char *ubuf = (unsigned char *) buf;
- int offset = 0;
-
- /* put in the header */
- ubuf[0] = dgram->header.msg_type;
- ubuf[1] = (((int) dgram->header.flags.node_type) << 2);
- if (dgram->header.flags.more)
- ubuf[1] |= 1;
- if (dgram->header.flags.first)
- ubuf[1] |= 2;
- RSSVAL (ubuf, 2, dgram->header.dgm_id);
- putip (ubuf + 4, (char *) &dgram->header.source_ip);
- RSSVAL (ubuf, 8, dgram->header.source_port);
- RSSVAL (ubuf, 12, dgram->header.packet_offset);
-
- offset = 14;
-
- if (dgram->header.msg_type == 0x10 ||
- dgram->header.msg_type == 0x11 || dgram->header.msg_type == 0x12)
- {
- offset += put_nmb_name ((char *) ubuf, offset, &dgram->source_name);
- offset += put_nmb_name ((char *) ubuf, offset, &dgram->dest_name);
- }
-
- memcpy (ubuf + offset, dgram->data, dgram->datasize);
- offset += dgram->datasize;
-
- /* automatically set the dgm_length */
- dgram->header.dgm_length = offset;
- RSSVAL (ubuf, 10, dgram->header.dgm_length);
-
- return (offset);
-}
-
-/*******************************************************************
- build a nmb name
- *******************************************************************/
-void
-make_nmb_name (struct nmb_name *n, const char *name, int type)
-{
- extern pstring global_scope;
- memset ((char *) n, '\0', sizeof (struct nmb_name));
- StrnCpy (n->name, name, 15);
- strupper (n->name);
- n->name_type = (unsigned int) type & 0xFF;
- StrnCpy (n->scope, global_scope, 63);
- strupper (n->scope);
-}
-
-/*******************************************************************
- Compare two nmb names
- ******************************************************************/
-#if 0
-BOOL
-nmb_name_equal (struct nmb_name *n1, struct nmb_name *n2)
-{
- return ((n1->name_type == n2->name_type) &&
- strequal (n1->name, n2->name) && strequal (n1->scope, n2->scope));
-}
-#endif /* 0 */
-/*******************************************************************
- build a nmb packet ready for sending
-
- XXXX this currently relies on not being passed something that expands
- to a packet too big for the buffer. Eventually this should be
- changed to set the trunc bit so the receiver can request the rest
- via tcp (when that becomes supported)
- ******************************************************************/
-static int
-build_nmb (char *buf, struct packet_struct *p)
-{
- struct nmb_packet *nmb = &p->packet.nmb;
- unsigned char *ubuf = (unsigned char *) buf;
- int offset = 0;
-
- /* put in the header */
- RSSVAL (ubuf, offset, nmb->header.name_trn_id);
- ubuf[offset + 2] = (nmb->header.opcode & 0xF) << 3;
- if (nmb->header.response)
- ubuf[offset + 2] |= (1 << 7);
- if (nmb->header.nm_flags.authoritative && nmb->header.response)
- ubuf[offset + 2] |= 0x4;
- if (nmb->header.nm_flags.trunc)
- ubuf[offset + 2] |= 0x2;
- if (nmb->header.nm_flags.recursion_desired)
- ubuf[offset + 2] |= 0x1;
- if (nmb->header.nm_flags.recursion_available && nmb->header.response)
- ubuf[offset + 3] |= 0x80;
- if (nmb->header.nm_flags.bcast)
- ubuf[offset + 3] |= 0x10;
- ubuf[offset + 3] |= (nmb->header.rcode & 0xF);
-
- RSSVAL (ubuf, offset + 4, nmb->header.qdcount);
- RSSVAL (ubuf, offset + 6, nmb->header.ancount);
- RSSVAL (ubuf, offset + 8, nmb->header.nscount);
- RSSVAL (ubuf, offset + 10, nmb->header.arcount);
-
- offset += 12;
- if (nmb->header.qdcount)
- {
- /* XXXX this doesn't handle a qdcount of > 1 */
- offset += put_nmb_name ((char *) ubuf, offset, &nmb->question.question_name);
- RSSVAL (ubuf, offset, nmb->question.question_type);
- RSSVAL (ubuf, offset + 2, nmb->question.question_class);
- offset += 4;
- }
-
- if (nmb->header.ancount)
- offset += put_res_rec ((char *) ubuf, offset, nmb->answers, nmb->header.ancount);
-
- if (nmb->header.nscount)
- offset += put_res_rec ((char *) ubuf, offset, nmb->nsrecs, nmb->header.nscount);
-
- /*
- * The spec says we must put compressed name pointers
- * in the following outgoing packets :
- * NAME_REGISTRATION_REQUEST, NAME_REFRESH_REQUEST,
- * NAME_RELEASE_REQUEST.
- */
-
- if ((nmb->header.response == False) &&
- ((nmb->header.opcode == NMB_NAME_REG_OPCODE) ||
- (nmb->header.opcode == NMB_NAME_RELEASE_OPCODE) ||
- (nmb->header.opcode == NMB_NAME_REFRESH_OPCODE_8) ||
- (nmb->header.opcode == NMB_NAME_REFRESH_OPCODE_9) ||
- (nmb->header.opcode == NMB_NAME_MULTIHOMED_REG_OPCODE)) && (nmb->header.arcount == 1))
- {
-
- offset += put_compressed_name_ptr (ubuf, offset, nmb->additional, 12);
-
- }
- else if (nmb->header.arcount)
- {
- offset += put_res_rec ((char *) ubuf, offset, nmb->additional, nmb->header.arcount);
- }
- return (offset);
-}
-
-
-/*******************************************************************
- send a packet_struct
- ******************************************************************/
-BOOL
-send_packet (struct packet_struct * p)
-{
- char buf[1024];
- int len = 0;
-
- memset (buf, '\0', sizeof (buf));
-
- switch (p->packet_type)
- {
- case NMB_PACKET:
- len = build_nmb (buf, p);
- debug_nmb_packet (p);
- break;
-
- case DGRAM_PACKET:
- len = build_dgram (buf, p);
- break;
- }
-
- if (!len)
- return (False);
-
- return (send_udp (p->fd, buf, len, p->ip, p->port));
-}
-
-/****************************************************************************
- receive a packet with timeout on a open UDP filedescriptor
- The timeout is in milliseconds
- ***************************************************************************/
-struct packet_struct *
-receive_packet (int fd, enum packet_type type, int t)
-{
- fd_set fds;
- struct timeval timeout;
-
- FD_ZERO (&fds);
- FD_SET (fd, &fds);
- timeout.tv_sec = t / 1000;
- timeout.tv_usec = 1000 * (t % 1000);
-
- sys_select (fd + 1, &fds, &timeout);
-
- if (FD_ISSET (fd, &fds))
- return (read_packet (fd, type));
-
- return (NULL);
-}
-
-#if 0
-/****************************************************************************
-return the number of bits that match between two 4 character buffers
- ***************************************************************************/
-static int
-matching_bits (uchar * p1, uchar * p2)
-{
- int i, j, ret = 0;
- for (i = 0; i < 4; i++)
- {
- if (p1[i] != p2[i])
- break;
- ret += 8;
- }
-
- if (i == 4)
- return ret;
-
- for (j = 0; j < 8; j++)
- {
- if ((p1[i] & (1 << (7 - j))) != (p2[i] & (1 << (7 - j))))
- break;
- ret++;
- }
-
- return ret;
-}
-
-static uchar sort_ip[4];
-
-/****************************************************************************
-compare two query reply records
- ***************************************************************************/
-static int
-name_query_comp (uchar * p1, uchar * p2)
-{
- return matching_bits (p2 + 2, sort_ip) - matching_bits (p1 + 2, sort_ip);
-}
-
-/****************************************************************************
-sort a set of 6 byte name query response records so that the IPs that
-have the most leading bits in common with the specified address come first
- ***************************************************************************/
-void
-sort_query_replies (char *data, int n, struct in_addr ip)
-{
- if (n <= 1)
- return;
-
- putip (sort_ip, (char *) &ip);
-
- qsort (data, n, 6, QSORT_CAST name_query_comp);
-}
-#endif /*0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/nterr.c
^
|
@@ -1,557 +0,0 @@
-/* NT error codes. please read nterr.h
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-#include "nterr.h"
-
-typedef struct
-{
- const char *nt_errstr;
- uint32 nt_errcode;
-
-} nt_err_code_struct;
-
-nt_err_code_struct const nt_errs[] = {
- {"NT_STATUS_UNSUCCESSFUL", NT_STATUS_UNSUCCESSFUL},
- {"NT_STATUS_NOT_IMPLEMENTED", NT_STATUS_NOT_IMPLEMENTED},
- {"NT_STATUS_INVALID_INFO_CLASS", NT_STATUS_INVALID_INFO_CLASS},
- {"NT_STATUS_INFO_LENGTH_MISMATCH", NT_STATUS_INFO_LENGTH_MISMATCH},
- {"NT_STATUS_ACCESS_VIOLATION", NT_STATUS_ACCESS_VIOLATION},
- {"STATUS_BUFFER_OVERFLOW", STATUS_BUFFER_OVERFLOW},
- {"NT_STATUS_IN_PAGE_ERROR", NT_STATUS_IN_PAGE_ERROR},
- {"NT_STATUS_PAGEFILE_QUOTA", NT_STATUS_PAGEFILE_QUOTA},
- {"NT_STATUS_INVALID_HANDLE", NT_STATUS_INVALID_HANDLE},
- {"NT_STATUS_BAD_INITIAL_STACK", NT_STATUS_BAD_INITIAL_STACK},
- {"NT_STATUS_BAD_INITIAL_PC", NT_STATUS_BAD_INITIAL_PC},
- {"NT_STATUS_INVALID_CID", NT_STATUS_INVALID_CID},
- {"NT_STATUS_TIMER_NOT_CANCELED", NT_STATUS_TIMER_NOT_CANCELED},
- {"NT_STATUS_INVALID_PARAMETER", NT_STATUS_INVALID_PARAMETER},
- {"NT_STATUS_NO_SUCH_DEVICE", NT_STATUS_NO_SUCH_DEVICE},
- {"NT_STATUS_NO_SUCH_FILE", NT_STATUS_NO_SUCH_FILE},
- {"NT_STATUS_INVALID_DEVICE_REQUEST", NT_STATUS_INVALID_DEVICE_REQUEST},
- {"NT_STATUS_END_OF_FILE", NT_STATUS_END_OF_FILE},
- {"NT_STATUS_WRONG_VOLUME", NT_STATUS_WRONG_VOLUME},
- {"NT_STATUS_NO_MEDIA_IN_DEVICE", NT_STATUS_NO_MEDIA_IN_DEVICE},
- {"NT_STATUS_UNRECOGNIZED_MEDIA", NT_STATUS_UNRECOGNIZED_MEDIA},
- {"NT_STATUS_NONEXISTENT_SECTOR", NT_STATUS_NONEXISTENT_SECTOR},
- {"NT_STATUS_MORE_PROCESSING_REQUIRED", NT_STATUS_MORE_PROCESSING_REQUIRED},
- {"NT_STATUS_NO_MEMORY", NT_STATUS_NO_MEMORY},
- {"NT_STATUS_CONFLICTING_ADDRESSES", NT_STATUS_CONFLICTING_ADDRESSES},
- {"NT_STATUS_NOT_MAPPED_VIEW", NT_STATUS_NOT_MAPPED_VIEW},
- {"NT_STATUS_UNABLE_TO_FREE_VM", NT_STATUS_UNABLE_TO_FREE_VM},
- {"NT_STATUS_UNABLE_TO_DELETE_SECTION", NT_STATUS_UNABLE_TO_DELETE_SECTION},
- {"NT_STATUS_INVALID_SYSTEM_SERVICE", NT_STATUS_INVALID_SYSTEM_SERVICE},
- {"NT_STATUS_ILLEGAL_INSTRUCTION", NT_STATUS_ILLEGAL_INSTRUCTION},
- {"NT_STATUS_INVALID_LOCK_SEQUENCE", NT_STATUS_INVALID_LOCK_SEQUENCE},
- {"NT_STATUS_INVALID_VIEW_SIZE", NT_STATUS_INVALID_VIEW_SIZE},
- {"NT_STATUS_INVALID_FILE_FOR_SECTION", NT_STATUS_INVALID_FILE_FOR_SECTION},
- {"NT_STATUS_ALREADY_COMMITTED", NT_STATUS_ALREADY_COMMITTED},
- {"NT_STATUS_ACCESS_DENIED", NT_STATUS_ACCESS_DENIED},
- {"NT_STATUS_BUFFER_TOO_SMALL", NT_STATUS_BUFFER_TOO_SMALL},
- {"NT_STATUS_OBJECT_TYPE_MISMATCH", NT_STATUS_OBJECT_TYPE_MISMATCH},
- {"NT_STATUS_NONCONTINUABLE_EXCEPTION", NT_STATUS_NONCONTINUABLE_EXCEPTION},
- {"NT_STATUS_INVALID_DISPOSITION", NT_STATUS_INVALID_DISPOSITION},
- {"NT_STATUS_UNWIND", NT_STATUS_UNWIND},
- {"NT_STATUS_BAD_STACK", NT_STATUS_BAD_STACK},
- {"NT_STATUS_INVALID_UNWIND_TARGET", NT_STATUS_INVALID_UNWIND_TARGET},
- {"NT_STATUS_NOT_LOCKED", NT_STATUS_NOT_LOCKED},
- {"NT_STATUS_PARITY_ERROR", NT_STATUS_PARITY_ERROR},
- {"NT_STATUS_UNABLE_TO_DECOMMIT_VM", NT_STATUS_UNABLE_TO_DECOMMIT_VM},
- {"NT_STATUS_NOT_COMMITTED", NT_STATUS_NOT_COMMITTED},
- {"NT_STATUS_INVALID_PORT_ATTRIBUTES", NT_STATUS_INVALID_PORT_ATTRIBUTES},
- {"NT_STATUS_PORT_MESSAGE_TOO_LONG", NT_STATUS_PORT_MESSAGE_TOO_LONG},
- {"NT_STATUS_INVALID_PARAMETER_MIX", NT_STATUS_INVALID_PARAMETER_MIX},
- {"NT_STATUS_INVALID_QUOTA_LOWER", NT_STATUS_INVALID_QUOTA_LOWER},
- {"NT_STATUS_DISK_CORRUPT_ERROR", NT_STATUS_DISK_CORRUPT_ERROR},
- {"NT_STATUS_OBJECT_NAME_INVALID", NT_STATUS_OBJECT_NAME_INVALID},
- {"NT_STATUS_OBJECT_NAME_NOT_FOUND", NT_STATUS_OBJECT_NAME_NOT_FOUND},
- {"NT_STATUS_OBJECT_NAME_COLLISION", NT_STATUS_OBJECT_NAME_COLLISION},
- {"NT_STATUS_HANDLE_NOT_WAITABLE", NT_STATUS_HANDLE_NOT_WAITABLE},
- {"NT_STATUS_PORT_DISCONNECTED", NT_STATUS_PORT_DISCONNECTED},
- {"NT_STATUS_DEVICE_ALREADY_ATTACHED", NT_STATUS_DEVICE_ALREADY_ATTACHED},
- {"NT_STATUS_OBJECT_PATH_INVALID", NT_STATUS_OBJECT_PATH_INVALID},
- {"NT_STATUS_OBJECT_PATH_NOT_FOUND", NT_STATUS_OBJECT_PATH_NOT_FOUND},
- {"NT_STATUS_OBJECT_PATH_SYNTAX_BAD", NT_STATUS_OBJECT_PATH_SYNTAX_BAD},
- {"NT_STATUS_DATA_OVERRUN", NT_STATUS_DATA_OVERRUN},
- {"NT_STATUS_DATA_LATE_ERROR", NT_STATUS_DATA_LATE_ERROR},
- {"NT_STATUS_DATA_ERROR", NT_STATUS_DATA_ERROR},
- {"NT_STATUS_CRC_ERROR", NT_STATUS_CRC_ERROR},
- {"NT_STATUS_SECTION_TOO_BIG", NT_STATUS_SECTION_TOO_BIG},
- {"NT_STATUS_PORT_CONNECTION_REFUSED", NT_STATUS_PORT_CONNECTION_REFUSED},
- {"NT_STATUS_INVALID_PORT_HANDLE", NT_STATUS_INVALID_PORT_HANDLE},
- {"NT_STATUS_SHARING_VIOLATION", NT_STATUS_SHARING_VIOLATION},
- {"NT_STATUS_QUOTA_EXCEEDED", NT_STATUS_QUOTA_EXCEEDED},
- {"NT_STATUS_INVALID_PAGE_PROTECTION", NT_STATUS_INVALID_PAGE_PROTECTION},
- {"NT_STATUS_MUTANT_NOT_OWNED", NT_STATUS_MUTANT_NOT_OWNED},
- {"NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED", NT_STATUS_SEMAPHORE_LIMIT_EXCEEDED},
- {"NT_STATUS_PORT_ALREADY_SET", NT_STATUS_PORT_ALREADY_SET},
- {"NT_STATUS_SECTION_NOT_IMAGE", NT_STATUS_SECTION_NOT_IMAGE},
- {"NT_STATUS_SUSPEND_COUNT_EXCEEDED", NT_STATUS_SUSPEND_COUNT_EXCEEDED},
- {"NT_STATUS_THREAD_IS_TERMINATING", NT_STATUS_THREAD_IS_TERMINATING},
- {"NT_STATUS_BAD_WORKING_SET_LIMIT", NT_STATUS_BAD_WORKING_SET_LIMIT},
- {"NT_STATUS_INCOMPATIBLE_FILE_MAP", NT_STATUS_INCOMPATIBLE_FILE_MAP},
- {"NT_STATUS_SECTION_PROTECTION", NT_STATUS_SECTION_PROTECTION},
- {"NT_STATUS_EAS_NOT_SUPPORTED", NT_STATUS_EAS_NOT_SUPPORTED},
- {"NT_STATUS_EA_TOO_LARGE", NT_STATUS_EA_TOO_LARGE},
- {"NT_STATUS_NONEXISTENT_EA_ENTRY", NT_STATUS_NONEXISTENT_EA_ENTRY},
- {"NT_STATUS_NO_EAS_ON_FILE", NT_STATUS_NO_EAS_ON_FILE},
- {"NT_STATUS_EA_CORRUPT_ERROR", NT_STATUS_EA_CORRUPT_ERROR},
- {"NT_STATUS_FILE_LOCK_CONFLICT", NT_STATUS_FILE_LOCK_CONFLICT},
- {"NT_STATUS_LOCK_NOT_GRANTED", NT_STATUS_LOCK_NOT_GRANTED},
- {"NT_STATUS_DELETE_PENDING", NT_STATUS_DELETE_PENDING},
- {"NT_STATUS_CTL_FILE_NOT_SUPPORTED", NT_STATUS_CTL_FILE_NOT_SUPPORTED},
- {"NT_STATUS_UNKNOWN_REVISION", NT_STATUS_UNKNOWN_REVISION},
- {"NT_STATUS_REVISION_MISMATCH", NT_STATUS_REVISION_MISMATCH},
- {"NT_STATUS_INVALID_OWNER", NT_STATUS_INVALID_OWNER},
- {"NT_STATUS_INVALID_PRIMARY_GROUP", NT_STATUS_INVALID_PRIMARY_GROUP},
- {"NT_STATUS_NO_IMPERSONATION_TOKEN", NT_STATUS_NO_IMPERSONATION_TOKEN},
- {"NT_STATUS_CANT_DISABLE_MANDATORY", NT_STATUS_CANT_DISABLE_MANDATORY},
- {"NT_STATUS_NO_LOGON_SERVERS", NT_STATUS_NO_LOGON_SERVERS},
- {"NT_STATUS_NO_SUCH_LOGON_SESSION", NT_STATUS_NO_SUCH_LOGON_SESSION},
- {"NT_STATUS_NO_SUCH_PRIVILEGE", NT_STATUS_NO_SUCH_PRIVILEGE},
- {"NT_STATUS_PRIVILEGE_NOT_HELD", NT_STATUS_PRIVILEGE_NOT_HELD},
- {"NT_STATUS_INVALID_ACCOUNT_NAME", NT_STATUS_INVALID_ACCOUNT_NAME},
- {"NT_STATUS_USER_EXISTS", NT_STATUS_USER_EXISTS},
- {"NT_STATUS_NO_SUCH_USER", NT_STATUS_NO_SUCH_USER},
- {"NT_STATUS_GROUP_EXISTS", NT_STATUS_GROUP_EXISTS},
- {"NT_STATUS_NO_SUCH_GROUP", NT_STATUS_NO_SUCH_GROUP},
- {"NT_STATUS_MEMBER_IN_GROUP", NT_STATUS_MEMBER_IN_GROUP},
- {"NT_STATUS_MEMBER_NOT_IN_GROUP", NT_STATUS_MEMBER_NOT_IN_GROUP},
- {"NT_STATUS_LAST_ADMIN", NT_STATUS_LAST_ADMIN},
- {"NT_STATUS_WRONG_PASSWORD", NT_STATUS_WRONG_PASSWORD},
- {"NT_STATUS_ILL_FORMED_PASSWORD", NT_STATUS_ILL_FORMED_PASSWORD},
- {"NT_STATUS_PASSWORD_RESTRICTION", NT_STATUS_PASSWORD_RESTRICTION},
- {"NT_STATUS_LOGON_FAILURE", NT_STATUS_LOGON_FAILURE},
- {"NT_STATUS_ACCOUNT_RESTRICTION", NT_STATUS_ACCOUNT_RESTRICTION},
- {"NT_STATUS_INVALID_LOGON_HOURS", NT_STATUS_INVALID_LOGON_HOURS},
- {"NT_STATUS_INVALID_WORKSTATION", NT_STATUS_INVALID_WORKSTATION},
- {"NT_STATUS_PASSWORD_EXPIRED", NT_STATUS_PASSWORD_EXPIRED},
- {"NT_STATUS_ACCOUNT_DISABLED", NT_STATUS_ACCOUNT_DISABLED},
- {"NT_STATUS_NONE_MAPPED", NT_STATUS_NONE_MAPPED},
- {"NT_STATUS_TOO_MANY_LUIDS_REQUESTED", NT_STATUS_TOO_MANY_LUIDS_REQUESTED},
- {"NT_STATUS_LUIDS_EXHAUSTED", NT_STATUS_LUIDS_EXHAUSTED},
- {"NT_STATUS_INVALID_SUB_AUTHORITY", NT_STATUS_INVALID_SUB_AUTHORITY},
- {"NT_STATUS_INVALID_ACL", NT_STATUS_INVALID_ACL},
- {"NT_STATUS_INVALID_SID", NT_STATUS_INVALID_SID},
- {"NT_STATUS_INVALID_SECURITY_DESCR", NT_STATUS_INVALID_SECURITY_DESCR},
- {"NT_STATUS_PROCEDURE_NOT_FOUND", NT_STATUS_PROCEDURE_NOT_FOUND},
- {"NT_STATUS_INVALID_IMAGE_FORMAT", NT_STATUS_INVALID_IMAGE_FORMAT},
- {"NT_STATUS_NO_TOKEN", NT_STATUS_NO_TOKEN},
- {"NT_STATUS_BAD_INHERITANCE_ACL", NT_STATUS_BAD_INHERITANCE_ACL},
- {"NT_STATUS_RANGE_NOT_LOCKED", NT_STATUS_RANGE_NOT_LOCKED},
- {"NT_STATUS_DISK_FULL", NT_STATUS_DISK_FULL},
- {"NT_STATUS_SERVER_DISABLED", NT_STATUS_SERVER_DISABLED},
- {"NT_STATUS_SERVER_NOT_DISABLED", NT_STATUS_SERVER_NOT_DISABLED},
- {"NT_STATUS_TOO_MANY_GUIDS_REQUESTED", NT_STATUS_TOO_MANY_GUIDS_REQUESTED},
- {"NT_STATUS_GUIDS_EXHAUSTED", NT_STATUS_GUIDS_EXHAUSTED},
- {"NT_STATUS_INVALID_ID_AUTHORITY", NT_STATUS_INVALID_ID_AUTHORITY},
- {"NT_STATUS_AGENTS_EXHAUSTED", NT_STATUS_AGENTS_EXHAUSTED},
- {"NT_STATUS_INVALID_VOLUME_LABEL", NT_STATUS_INVALID_VOLUME_LABEL},
- {"NT_STATUS_SECTION_NOT_EXTENDED", NT_STATUS_SECTION_NOT_EXTENDED},
- {"NT_STATUS_NOT_MAPPED_DATA", NT_STATUS_NOT_MAPPED_DATA},
- {"NT_STATUS_RESOURCE_DATA_NOT_FOUND", NT_STATUS_RESOURCE_DATA_NOT_FOUND},
- {"NT_STATUS_RESOURCE_TYPE_NOT_FOUND", NT_STATUS_RESOURCE_TYPE_NOT_FOUND},
- {"NT_STATUS_RESOURCE_NAME_NOT_FOUND", NT_STATUS_RESOURCE_NAME_NOT_FOUND},
- {"NT_STATUS_ARRAY_BOUNDS_EXCEEDED", NT_STATUS_ARRAY_BOUNDS_EXCEEDED},
- {"NT_STATUS_FLOAT_DENORMAL_OPERAND", NT_STATUS_FLOAT_DENORMAL_OPERAND},
- {"NT_STATUS_FLOAT_DIVIDE_BY_ZERO", NT_STATUS_FLOAT_DIVIDE_BY_ZERO},
- {"NT_STATUS_FLOAT_INEXACT_RESULT", NT_STATUS_FLOAT_INEXACT_RESULT},
- {"NT_STATUS_FLOAT_INVALID_OPERATION", NT_STATUS_FLOAT_INVALID_OPERATION},
- {"NT_STATUS_FLOAT_OVERFLOW", NT_STATUS_FLOAT_OVERFLOW},
- {"NT_STATUS_FLOAT_STACK_CHECK", NT_STATUS_FLOAT_STACK_CHECK},
- {"NT_STATUS_FLOAT_UNDERFLOW", NT_STATUS_FLOAT_UNDERFLOW},
- {"NT_STATUS_INTEGER_DIVIDE_BY_ZERO", NT_STATUS_INTEGER_DIVIDE_BY_ZERO},
- {"NT_STATUS_INTEGER_OVERFLOW", NT_STATUS_INTEGER_OVERFLOW},
- {"NT_STATUS_PRIVILEGED_INSTRUCTION", NT_STATUS_PRIVILEGED_INSTRUCTION},
- {"NT_STATUS_TOO_MANY_PAGING_FILES", NT_STATUS_TOO_MANY_PAGING_FILES},
- {"NT_STATUS_FILE_INVALID", NT_STATUS_FILE_INVALID},
- {"NT_STATUS_ALLOTTED_SPACE_EXCEEDED", NT_STATUS_ALLOTTED_SPACE_EXCEEDED},
- {"NT_STATUS_INSUFFICIENT_RESOURCES", NT_STATUS_INSUFFICIENT_RESOURCES},
- {"NT_STATUS_DFS_EXIT_PATH_FOUND", NT_STATUS_DFS_EXIT_PATH_FOUND},
- {"NT_STATUS_DEVICE_DATA_ERROR", NT_STATUS_DEVICE_DATA_ERROR},
- {"NT_STATUS_DEVICE_NOT_CONNECTED", NT_STATUS_DEVICE_NOT_CONNECTED},
- {"NT_STATUS_DEVICE_POWER_FAILURE", NT_STATUS_DEVICE_POWER_FAILURE},
- {"NT_STATUS_FREE_VM_NOT_AT_BASE", NT_STATUS_FREE_VM_NOT_AT_BASE},
- {"NT_STATUS_MEMORY_NOT_ALLOCATED", NT_STATUS_MEMORY_NOT_ALLOCATED},
- {"NT_STATUS_WORKING_SET_QUOTA", NT_STATUS_WORKING_SET_QUOTA},
- {"NT_STATUS_MEDIA_WRITE_PROTECTED", NT_STATUS_MEDIA_WRITE_PROTECTED},
- {"NT_STATUS_DEVICE_NOT_READY", NT_STATUS_DEVICE_NOT_READY},
- {"NT_STATUS_INVALID_GROUP_ATTRIBUTES", NT_STATUS_INVALID_GROUP_ATTRIBUTES},
- {"NT_STATUS_BAD_IMPERSONATION_LEVEL", NT_STATUS_BAD_IMPERSONATION_LEVEL},
- {"NT_STATUS_CANT_OPEN_ANONYMOUS", NT_STATUS_CANT_OPEN_ANONYMOUS},
- {"NT_STATUS_BAD_VALIDATION_CLASS", NT_STATUS_BAD_VALIDATION_CLASS},
- {"NT_STATUS_BAD_TOKEN_TYPE", NT_STATUS_BAD_TOKEN_TYPE},
- {"NT_STATUS_BAD_MASTER_BOOT_RECORD", NT_STATUS_BAD_MASTER_BOOT_RECORD},
- {"NT_STATUS_INSTRUCTION_MISALIGNMENT", NT_STATUS_INSTRUCTION_MISALIGNMENT},
- {"NT_STATUS_INSTANCE_NOT_AVAILABLE", NT_STATUS_INSTANCE_NOT_AVAILABLE},
- {"NT_STATUS_PIPE_NOT_AVAILABLE", NT_STATUS_PIPE_NOT_AVAILABLE},
- {"NT_STATUS_INVALID_PIPE_STATE", NT_STATUS_INVALID_PIPE_STATE},
- {"NT_STATUS_PIPE_BUSY", NT_STATUS_PIPE_BUSY},
- {"NT_STATUS_ILLEGAL_FUNCTION", NT_STATUS_ILLEGAL_FUNCTION},
- {"NT_STATUS_PIPE_DISCONNECTED", NT_STATUS_PIPE_DISCONNECTED},
- {"NT_STATUS_PIPE_CLOSING", NT_STATUS_PIPE_CLOSING},
- {"NT_STATUS_PIPE_CONNECTED", NT_STATUS_PIPE_CONNECTED},
- {"NT_STATUS_PIPE_LISTENING", NT_STATUS_PIPE_LISTENING},
- {"NT_STATUS_INVALID_READ_MODE", NT_STATUS_INVALID_READ_MODE},
- {"NT_STATUS_IO_TIMEOUT", NT_STATUS_IO_TIMEOUT},
- {"NT_STATUS_FILE_FORCED_CLOSED", NT_STATUS_FILE_FORCED_CLOSED},
- {"NT_STATUS_PROFILING_NOT_STARTED", NT_STATUS_PROFILING_NOT_STARTED},
- {"NT_STATUS_PROFILING_NOT_STOPPED", NT_STATUS_PROFILING_NOT_STOPPED},
- {"NT_STATUS_COULD_NOT_INTERPRET", NT_STATUS_COULD_NOT_INTERPRET},
- {"NT_STATUS_FILE_IS_A_DIRECTORY", NT_STATUS_FILE_IS_A_DIRECTORY},
- {"NT_STATUS_NOT_SUPPORTED", NT_STATUS_NOT_SUPPORTED},
- {"NT_STATUS_REMOTE_NOT_LISTENING", NT_STATUS_REMOTE_NOT_LISTENING},
- {"NT_STATUS_DUPLICATE_NAME", NT_STATUS_DUPLICATE_NAME},
- {"NT_STATUS_BAD_NETWORK_PATH", NT_STATUS_BAD_NETWORK_PATH},
- {"NT_STATUS_NETWORK_BUSY", NT_STATUS_NETWORK_BUSY},
- {"NT_STATUS_DEVICE_DOES_NOT_EXIST", NT_STATUS_DEVICE_DOES_NOT_EXIST},
- {"NT_STATUS_TOO_MANY_COMMANDS", NT_STATUS_TOO_MANY_COMMANDS},
- {"NT_STATUS_ADAPTER_HARDWARE_ERROR", NT_STATUS_ADAPTER_HARDWARE_ERROR},
- {"NT_STATUS_INVALID_NETWORK_RESPONSE", NT_STATUS_INVALID_NETWORK_RESPONSE},
- {"NT_STATUS_UNEXPECTED_NETWORK_ERROR", NT_STATUS_UNEXPECTED_NETWORK_ERROR},
- {"NT_STATUS_BAD_REMOTE_ADAPTER", NT_STATUS_BAD_REMOTE_ADAPTER},
- {"NT_STATUS_PRINT_QUEUE_FULL", NT_STATUS_PRINT_QUEUE_FULL},
- {"NT_STATUS_NO_SPOOL_SPACE", NT_STATUS_NO_SPOOL_SPACE},
- {"NT_STATUS_PRINT_CANCELLED", NT_STATUS_PRINT_CANCELLED},
- {"NT_STATUS_NETWORK_NAME_DELETED", NT_STATUS_NETWORK_NAME_DELETED},
- {"NT_STATUS_NETWORK_ACCESS_DENIED", NT_STATUS_NETWORK_ACCESS_DENIED},
- {"NT_STATUS_BAD_DEVICE_TYPE", NT_STATUS_BAD_DEVICE_TYPE},
- {"NT_STATUS_BAD_NETWORK_NAME", NT_STATUS_BAD_NETWORK_NAME},
- {"NT_STATUS_TOO_MANY_NAMES", NT_STATUS_TOO_MANY_NAMES},
- {"NT_STATUS_TOO_MANY_SESSIONS", NT_STATUS_TOO_MANY_SESSIONS},
- {"NT_STATUS_SHARING_PAUSED", NT_STATUS_SHARING_PAUSED},
- {"NT_STATUS_REQUEST_NOT_ACCEPTED", NT_STATUS_REQUEST_NOT_ACCEPTED},
- {"NT_STATUS_REDIRECTOR_PAUSED", NT_STATUS_REDIRECTOR_PAUSED},
- {"NT_STATUS_NET_WRITE_FAULT", NT_STATUS_NET_WRITE_FAULT},
- {"NT_STATUS_PROFILING_AT_LIMIT", NT_STATUS_PROFILING_AT_LIMIT},
- {"NT_STATUS_NOT_SAME_DEVICE", NT_STATUS_NOT_SAME_DEVICE},
- {"NT_STATUS_FILE_RENAMED", NT_STATUS_FILE_RENAMED},
- {"NT_STATUS_VIRTUAL_CIRCUIT_CLOSED", NT_STATUS_VIRTUAL_CIRCUIT_CLOSED},
- {"NT_STATUS_NO_SECURITY_ON_OBJECT", NT_STATUS_NO_SECURITY_ON_OBJECT},
- {"NT_STATUS_CANT_WAIT", NT_STATUS_CANT_WAIT},
- {"NT_STATUS_PIPE_EMPTY", NT_STATUS_PIPE_EMPTY},
- {"NT_STATUS_CANT_ACCESS_DOMAIN_INFO", NT_STATUS_CANT_ACCESS_DOMAIN_INFO},
- {"NT_STATUS_CANT_TERMINATE_SELF", NT_STATUS_CANT_TERMINATE_SELF},
- {"NT_STATUS_INVALID_SERVER_STATE", NT_STATUS_INVALID_SERVER_STATE},
- {"NT_STATUS_INVALID_DOMAIN_STATE", NT_STATUS_INVALID_DOMAIN_STATE},
- {"NT_STATUS_INVALID_DOMAIN_ROLE", NT_STATUS_INVALID_DOMAIN_ROLE},
- {"NT_STATUS_NO_SUCH_DOMAIN", NT_STATUS_NO_SUCH_DOMAIN},
- {"NT_STATUS_DOMAIN_EXISTS", NT_STATUS_DOMAIN_EXISTS},
- {"NT_STATUS_DOMAIN_LIMIT_EXCEEDED", NT_STATUS_DOMAIN_LIMIT_EXCEEDED},
- {"NT_STATUS_OPLOCK_NOT_GRANTED", NT_STATUS_OPLOCK_NOT_GRANTED},
- {"NT_STATUS_INVALID_OPLOCK_PROTOCOL", NT_STATUS_INVALID_OPLOCK_PROTOCOL},
- {"NT_STATUS_INTERNAL_DB_CORRUPTION", NT_STATUS_INTERNAL_DB_CORRUPTION},
- {"NT_STATUS_INTERNAL_ERROR", NT_STATUS_INTERNAL_ERROR},
- {"NT_STATUS_GENERIC_NOT_MAPPED", NT_STATUS_GENERIC_NOT_MAPPED},
- {"NT_STATUS_BAD_DESCRIPTOR_FORMAT", NT_STATUS_BAD_DESCRIPTOR_FORMAT},
- {"NT_STATUS_INVALID_USER_BUFFER", NT_STATUS_INVALID_USER_BUFFER},
- {"NT_STATUS_UNEXPECTED_IO_ERROR", NT_STATUS_UNEXPECTED_IO_ERROR},
- {"NT_STATUS_UNEXPECTED_MM_CREATE_ERR", NT_STATUS_UNEXPECTED_MM_CREATE_ERR},
- {"NT_STATUS_UNEXPECTED_MM_MAP_ERROR", NT_STATUS_UNEXPECTED_MM_MAP_ERROR},
- {"NT_STATUS_UNEXPECTED_MM_EXTEND_ERR", NT_STATUS_UNEXPECTED_MM_EXTEND_ERR},
- {"NT_STATUS_NOT_LOGON_PROCESS", NT_STATUS_NOT_LOGON_PROCESS},
- {"NT_STATUS_LOGON_SESSION_EXISTS", NT_STATUS_LOGON_SESSION_EXISTS},
- {"NT_STATUS_INVALID_PARAMETER_1", NT_STATUS_INVALID_PARAMETER_1},
- {"NT_STATUS_INVALID_PARAMETER_2", NT_STATUS_INVALID_PARAMETER_2},
- {"NT_STATUS_INVALID_PARAMETER_3", NT_STATUS_INVALID_PARAMETER_3},
- {"NT_STATUS_INVALID_PARAMETER_4", NT_STATUS_INVALID_PARAMETER_4},
- {"NT_STATUS_INVALID_PARAMETER_5", NT_STATUS_INVALID_PARAMETER_5},
- {"NT_STATUS_INVALID_PARAMETER_6", NT_STATUS_INVALID_PARAMETER_6},
- {"NT_STATUS_INVALID_PARAMETER_7", NT_STATUS_INVALID_PARAMETER_7},
- {"NT_STATUS_INVALID_PARAMETER_8", NT_STATUS_INVALID_PARAMETER_8},
- {"NT_STATUS_INVALID_PARAMETER_9", NT_STATUS_INVALID_PARAMETER_9},
- {"NT_STATUS_INVALID_PARAMETER_10", NT_STATUS_INVALID_PARAMETER_10},
- {"NT_STATUS_INVALID_PARAMETER_11", NT_STATUS_INVALID_PARAMETER_11},
- {"NT_STATUS_INVALID_PARAMETER_12", NT_STATUS_INVALID_PARAMETER_12},
- {"NT_STATUS_REDIRECTOR_NOT_STARTED", NT_STATUS_REDIRECTOR_NOT_STARTED},
- {"NT_STATUS_REDIRECTOR_STARTED", NT_STATUS_REDIRECTOR_STARTED},
- {"NT_STATUS_STACK_OVERFLOW", NT_STATUS_STACK_OVERFLOW},
- {"NT_STATUS_NO_SUCH_PACKAGE", NT_STATUS_NO_SUCH_PACKAGE},
- {"NT_STATUS_BAD_FUNCTION_TABLE", NT_STATUS_BAD_FUNCTION_TABLE},
- {"NT_STATUS_DIRECTORY_NOT_EMPTY", NT_STATUS_DIRECTORY_NOT_EMPTY},
- {"NT_STATUS_FILE_CORRUPT_ERROR", NT_STATUS_FILE_CORRUPT_ERROR},
- {"NT_STATUS_NOT_A_DIRECTORY", NT_STATUS_NOT_A_DIRECTORY},
- {"NT_STATUS_BAD_LOGON_SESSION_STATE", NT_STATUS_BAD_LOGON_SESSION_STATE},
- {"NT_STATUS_LOGON_SESSION_COLLISION", NT_STATUS_LOGON_SESSION_COLLISION},
- {"NT_STATUS_NAME_TOO_LONG", NT_STATUS_NAME_TOO_LONG},
- {"NT_STATUS_FILES_OPEN", NT_STATUS_FILES_OPEN},
- {"NT_STATUS_CONNECTION_IN_USE", NT_STATUS_CONNECTION_IN_USE},
- {"NT_STATUS_MESSAGE_NOT_FOUND", NT_STATUS_MESSAGE_NOT_FOUND},
- {"NT_STATUS_PROCESS_IS_TERMINATING", NT_STATUS_PROCESS_IS_TERMINATING},
- {"NT_STATUS_INVALID_LOGON_TYPE", NT_STATUS_INVALID_LOGON_TYPE},
- {"NT_STATUS_NO_GUID_TRANSLATION", NT_STATUS_NO_GUID_TRANSLATION},
- {"NT_STATUS_CANNOT_IMPERSONATE", NT_STATUS_CANNOT_IMPERSONATE},
- {"NT_STATUS_IMAGE_ALREADY_LOADED", NT_STATUS_IMAGE_ALREADY_LOADED},
- {"NT_STATUS_ABIOS_NOT_PRESENT", NT_STATUS_ABIOS_NOT_PRESENT},
- {"NT_STATUS_ABIOS_LID_NOT_EXIST", NT_STATUS_ABIOS_LID_NOT_EXIST},
- {"NT_STATUS_ABIOS_LID_ALREADY_OWNED", NT_STATUS_ABIOS_LID_ALREADY_OWNED},
- {"NT_STATUS_ABIOS_NOT_LID_OWNER", NT_STATUS_ABIOS_NOT_LID_OWNER},
- {"NT_STATUS_ABIOS_INVALID_COMMAND", NT_STATUS_ABIOS_INVALID_COMMAND},
- {"NT_STATUS_ABIOS_INVALID_LID", NT_STATUS_ABIOS_INVALID_LID},
- {"NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE", NT_STATUS_ABIOS_SELECTOR_NOT_AVAILABLE},
- {"NT_STATUS_ABIOS_INVALID_SELECTOR", NT_STATUS_ABIOS_INVALID_SELECTOR},
- {"NT_STATUS_NO_LDT", NT_STATUS_NO_LDT},
- {"NT_STATUS_INVALID_LDT_SIZE", NT_STATUS_INVALID_LDT_SIZE},
- {"NT_STATUS_INVALID_LDT_OFFSET", NT_STATUS_INVALID_LDT_OFFSET},
- {"NT_STATUS_INVALID_LDT_DESCRIPTOR", NT_STATUS_INVALID_LDT_DESCRIPTOR},
- {"NT_STATUS_INVALID_IMAGE_NE_FORMAT", NT_STATUS_INVALID_IMAGE_NE_FORMAT},
- {"NT_STATUS_RXACT_INVALID_STATE", NT_STATUS_RXACT_INVALID_STATE},
- {"NT_STATUS_RXACT_COMMIT_FAILURE", NT_STATUS_RXACT_COMMIT_FAILURE},
- {"NT_STATUS_MAPPED_FILE_SIZE_ZERO", NT_STATUS_MAPPED_FILE_SIZE_ZERO},
- {"NT_STATUS_TOO_MANY_OPENED_FILES", NT_STATUS_TOO_MANY_OPENED_FILES},
- {"NT_STATUS_CANCELLED", NT_STATUS_CANCELLED},
- {"NT_STATUS_CANNOT_DELETE", NT_STATUS_CANNOT_DELETE},
- {"NT_STATUS_INVALID_COMPUTER_NAME", NT_STATUS_INVALID_COMPUTER_NAME},
- {"NT_STATUS_FILE_DELETED", NT_STATUS_FILE_DELETED},
- {"NT_STATUS_SPECIAL_ACCOUNT", NT_STATUS_SPECIAL_ACCOUNT},
- {"NT_STATUS_SPECIAL_GROUP", NT_STATUS_SPECIAL_GROUP},
- {"NT_STATUS_SPECIAL_USER", NT_STATUS_SPECIAL_USER},
- {"NT_STATUS_MEMBERS_PRIMARY_GROUP", NT_STATUS_MEMBERS_PRIMARY_GROUP},
- {"NT_STATUS_FILE_CLOSED", NT_STATUS_FILE_CLOSED},
- {"NT_STATUS_TOO_MANY_THREADS", NT_STATUS_TOO_MANY_THREADS},
- {"NT_STATUS_THREAD_NOT_IN_PROCESS", NT_STATUS_THREAD_NOT_IN_PROCESS},
- {"NT_STATUS_TOKEN_ALREADY_IN_USE", NT_STATUS_TOKEN_ALREADY_IN_USE},
- {"NT_STATUS_PAGEFILE_QUOTA_EXCEEDED", NT_STATUS_PAGEFILE_QUOTA_EXCEEDED},
- {"NT_STATUS_COMMITMENT_LIMIT", NT_STATUS_COMMITMENT_LIMIT},
- {"NT_STATUS_INVALID_IMAGE_LE_FORMAT", NT_STATUS_INVALID_IMAGE_LE_FORMAT},
- {"NT_STATUS_INVALID_IMAGE_NOT_MZ", NT_STATUS_INVALID_IMAGE_NOT_MZ},
- {"NT_STATUS_INVALID_IMAGE_PROTECT", NT_STATUS_INVALID_IMAGE_PROTECT},
- {"NT_STATUS_INVALID_IMAGE_WIN_16", NT_STATUS_INVALID_IMAGE_WIN_16},
- {"NT_STATUS_LOGON_SERVER_CONFLICT", NT_STATUS_LOGON_SERVER_CONFLICT},
- {"NT_STATUS_TIME_DIFFERENCE_AT_DC", NT_STATUS_TIME_DIFFERENCE_AT_DC},
- {"NT_STATUS_SYNCHRONIZATION_REQUIRED", NT_STATUS_SYNCHRONIZATION_REQUIRED},
- {"NT_STATUS_DLL_NOT_FOUND", NT_STATUS_DLL_NOT_FOUND},
- {"NT_STATUS_OPEN_FAILED", NT_STATUS_OPEN_FAILED},
- {"NT_STATUS_IO_PRIVILEGE_FAILED", NT_STATUS_IO_PRIVILEGE_FAILED},
- {"NT_STATUS_ORDINAL_NOT_FOUND", NT_STATUS_ORDINAL_NOT_FOUND},
- {"NT_STATUS_ENTRYPOINT_NOT_FOUND", NT_STATUS_ENTRYPOINT_NOT_FOUND},
- {"NT_STATUS_CONTROL_C_EXIT", NT_STATUS_CONTROL_C_EXIT},
- {"NT_STATUS_LOCAL_DISCONNECT", NT_STATUS_LOCAL_DISCONNECT},
- {"NT_STATUS_REMOTE_DISCONNECT", NT_STATUS_REMOTE_DISCONNECT},
- {"NT_STATUS_REMOTE_RESOURCES", NT_STATUS_REMOTE_RESOURCES},
- {"NT_STATUS_LINK_FAILED", NT_STATUS_LINK_FAILED},
- {"NT_STATUS_LINK_TIMEOUT", NT_STATUS_LINK_TIMEOUT},
- {"NT_STATUS_INVALID_CONNECTION", NT_STATUS_INVALID_CONNECTION},
- {"NT_STATUS_INVALID_ADDRESS", NT_STATUS_INVALID_ADDRESS},
- {"NT_STATUS_DLL_INIT_FAILED", NT_STATUS_DLL_INIT_FAILED},
- {"NT_STATUS_MISSING_SYSTEMFILE", NT_STATUS_MISSING_SYSTEMFILE},
- {"NT_STATUS_UNHANDLED_EXCEPTION", NT_STATUS_UNHANDLED_EXCEPTION},
- {"NT_STATUS_APP_INIT_FAILURE", NT_STATUS_APP_INIT_FAILURE},
- {"NT_STATUS_PAGEFILE_CREATE_FAILED", NT_STATUS_PAGEFILE_CREATE_FAILED},
- {"NT_STATUS_NO_PAGEFILE", NT_STATUS_NO_PAGEFILE},
- {"NT_STATUS_INVALID_LEVEL", NT_STATUS_INVALID_LEVEL},
- {"NT_STATUS_WRONG_PASSWORD_CORE", NT_STATUS_WRONG_PASSWORD_CORE},
- {"NT_STATUS_ILLEGAL_FLOAT_CONTEXT", NT_STATUS_ILLEGAL_FLOAT_CONTEXT},
- {"NT_STATUS_PIPE_BROKEN", NT_STATUS_PIPE_BROKEN},
- {"NT_STATUS_REGISTRY_CORRUPT", NT_STATUS_REGISTRY_CORRUPT},
- {"NT_STATUS_REGISTRY_IO_FAILED", NT_STATUS_REGISTRY_IO_FAILED},
- {"NT_STATUS_NO_EVENT_PAIR", NT_STATUS_NO_EVENT_PAIR},
- {"NT_STATUS_UNRECOGNIZED_VOLUME", NT_STATUS_UNRECOGNIZED_VOLUME},
- {"NT_STATUS_SERIAL_NO_DEVICE_INITED", NT_STATUS_SERIAL_NO_DEVICE_INITED},
- {"NT_STATUS_NO_SUCH_ALIAS", NT_STATUS_NO_SUCH_ALIAS},
- {"NT_STATUS_MEMBER_NOT_IN_ALIAS", NT_STATUS_MEMBER_NOT_IN_ALIAS},
- {"NT_STATUS_MEMBER_IN_ALIAS", NT_STATUS_MEMBER_IN_ALIAS},
- {"NT_STATUS_ALIAS_EXISTS", NT_STATUS_ALIAS_EXISTS},
- {"NT_STATUS_LOGON_NOT_GRANTED", NT_STATUS_LOGON_NOT_GRANTED},
- {"NT_STATUS_TOO_MANY_SECRETS", NT_STATUS_TOO_MANY_SECRETS},
- {"NT_STATUS_SECRET_TOO_LONG", NT_STATUS_SECRET_TOO_LONG},
- {"NT_STATUS_INTERNAL_DB_ERROR", NT_STATUS_INTERNAL_DB_ERROR},
- {"NT_STATUS_FULLSCREEN_MODE", NT_STATUS_FULLSCREEN_MODE},
- {"NT_STATUS_TOO_MANY_CONTEXT_IDS", NT_STATUS_TOO_MANY_CONTEXT_IDS},
- {"NT_STATUS_LOGON_TYPE_NOT_GRANTED", NT_STATUS_LOGON_TYPE_NOT_GRANTED},
- {"NT_STATUS_NOT_REGISTRY_FILE", NT_STATUS_NOT_REGISTRY_FILE},
- {"NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED", NT_STATUS_NT_CROSS_ENCRYPTION_REQUIRED},
- {"NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR", NT_STATUS_DOMAIN_CTRLR_CONFIG_ERROR},
- {"NT_STATUS_FT_MISSING_MEMBER", NT_STATUS_FT_MISSING_MEMBER},
- {"NT_STATUS_ILL_FORMED_SERVICE_ENTRY", NT_STATUS_ILL_FORMED_SERVICE_ENTRY},
- {"NT_STATUS_ILLEGAL_CHARACTER", NT_STATUS_ILLEGAL_CHARACTER},
- {"NT_STATUS_UNMAPPABLE_CHARACTER", NT_STATUS_UNMAPPABLE_CHARACTER},
- {"NT_STATUS_UNDEFINED_CHARACTER", NT_STATUS_UNDEFINED_CHARACTER},
- {"NT_STATUS_FLOPPY_VOLUME", NT_STATUS_FLOPPY_VOLUME},
- {"NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND", NT_STATUS_FLOPPY_ID_MARK_NOT_FOUND},
- {"NT_STATUS_FLOPPY_WRONG_CYLINDER", NT_STATUS_FLOPPY_WRONG_CYLINDER},
- {"NT_STATUS_FLOPPY_UNKNOWN_ERROR", NT_STATUS_FLOPPY_UNKNOWN_ERROR},
- {"NT_STATUS_FLOPPY_BAD_REGISTERS", NT_STATUS_FLOPPY_BAD_REGISTERS},
- {"NT_STATUS_DISK_RECALIBRATE_FAILED", NT_STATUS_DISK_RECALIBRATE_FAILED},
- {"NT_STATUS_DISK_OPERATION_FAILED", NT_STATUS_DISK_OPERATION_FAILED},
- {"NT_STATUS_DISK_RESET_FAILED", NT_STATUS_DISK_RESET_FAILED},
- {"NT_STATUS_SHARED_IRQ_BUSY", NT_STATUS_SHARED_IRQ_BUSY},
- {"NT_STATUS_FT_ORPHANING", NT_STATUS_FT_ORPHANING},
- {"NT_STATUS_PARTITION_FAILURE", NT_STATUS_PARTITION_FAILURE},
- {"NT_STATUS_INVALID_BLOCK_LENGTH", NT_STATUS_INVALID_BLOCK_LENGTH},
- {"NT_STATUS_DEVICE_NOT_PARTITIONED", NT_STATUS_DEVICE_NOT_PARTITIONED},
- {"NT_STATUS_UNABLE_TO_LOCK_MEDIA", NT_STATUS_UNABLE_TO_LOCK_MEDIA},
- {"NT_STATUS_UNABLE_TO_UNLOAD_MEDIA", NT_STATUS_UNABLE_TO_UNLOAD_MEDIA},
- {"NT_STATUS_EOM_OVERFLOW", NT_STATUS_EOM_OVERFLOW},
- {"NT_STATUS_NO_MEDIA", NT_STATUS_NO_MEDIA},
- {"NT_STATUS_NO_SUCH_MEMBER", NT_STATUS_NO_SUCH_MEMBER},
- {"NT_STATUS_INVALID_MEMBER", NT_STATUS_INVALID_MEMBER},
- {"NT_STATUS_KEY_DELETED", NT_STATUS_KEY_DELETED},
- {"NT_STATUS_NO_LOG_SPACE", NT_STATUS_NO_LOG_SPACE},
- {"NT_STATUS_TOO_MANY_SIDS", NT_STATUS_TOO_MANY_SIDS},
- {"NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED", NT_STATUS_LM_CROSS_ENCRYPTION_REQUIRED},
- {"NT_STATUS_KEY_HAS_CHILDREN", NT_STATUS_KEY_HAS_CHILDREN},
- {"NT_STATUS_CHILD_MUST_BE_VOLATILE", NT_STATUS_CHILD_MUST_BE_VOLATILE},
- {"NT_STATUS_DEVICE_CONFIGURATION_ERROR", NT_STATUS_DEVICE_CONFIGURATION_ERROR},
- {"NT_STATUS_DRIVER_INTERNAL_ERROR", NT_STATUS_DRIVER_INTERNAL_ERROR},
- {"NT_STATUS_INVALID_DEVICE_STATE", NT_STATUS_INVALID_DEVICE_STATE},
- {"NT_STATUS_IO_DEVICE_ERROR", NT_STATUS_IO_DEVICE_ERROR},
- {"NT_STATUS_DEVICE_PROTOCOL_ERROR", NT_STATUS_DEVICE_PROTOCOL_ERROR},
- {"NT_STATUS_BACKUP_CONTROLLER", NT_STATUS_BACKUP_CONTROLLER},
- {"NT_STATUS_LOG_FILE_FULL", NT_STATUS_LOG_FILE_FULL},
- {"NT_STATUS_TOO_LATE", NT_STATUS_TOO_LATE},
- {"NT_STATUS_NO_TRUST_LSA_SECRET", NT_STATUS_NO_TRUST_LSA_SECRET},
- {"NT_STATUS_NO_TRUST_SAM_ACCOUNT", NT_STATUS_NO_TRUST_SAM_ACCOUNT},
- {"NT_STATUS_TRUSTED_DOMAIN_FAILURE", NT_STATUS_TRUSTED_DOMAIN_FAILURE},
- {"NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE", NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE},
- {"NT_STATUS_EVENTLOG_FILE_CORRUPT", NT_STATUS_EVENTLOG_FILE_CORRUPT},
- {"NT_STATUS_EVENTLOG_CANT_START", NT_STATUS_EVENTLOG_CANT_START},
- {"NT_STATUS_TRUST_FAILURE", NT_STATUS_TRUST_FAILURE},
- {"NT_STATUS_MUTANT_LIMIT_EXCEEDED", NT_STATUS_MUTANT_LIMIT_EXCEEDED},
- {"NT_STATUS_NETLOGON_NOT_STARTED", NT_STATUS_NETLOGON_NOT_STARTED},
- {"NT_STATUS_ACCOUNT_EXPIRED", NT_STATUS_ACCOUNT_EXPIRED},
- {"NT_STATUS_POSSIBLE_DEADLOCK", NT_STATUS_POSSIBLE_DEADLOCK},
- {"NT_STATUS_NETWORK_CREDENTIAL_CONFLICT", NT_STATUS_NETWORK_CREDENTIAL_CONFLICT},
- {"NT_STATUS_REMOTE_SESSION_LIMIT", NT_STATUS_REMOTE_SESSION_LIMIT},
- {"NT_STATUS_EVENTLOG_FILE_CHANGED", NT_STATUS_EVENTLOG_FILE_CHANGED},
- {"NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT", NT_STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT},
- {"NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT", NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT},
- {"NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT", NT_STATUS_NOLOGON_SERVER_TRUST_ACCOUNT},
- {"NT_STATUS_DOMAIN_TRUST_INCONSISTENT", NT_STATUS_DOMAIN_TRUST_INCONSISTENT},
- {"NT_STATUS_FS_DRIVER_REQUIRED", NT_STATUS_FS_DRIVER_REQUIRED},
- {"NT_STATUS_NO_USER_SESSION_KEY", NT_STATUS_NO_USER_SESSION_KEY},
- {"NT_STATUS_USER_SESSION_DELETED", NT_STATUS_USER_SESSION_DELETED},
- {"NT_STATUS_RESOURCE_LANG_NOT_FOUND", NT_STATUS_RESOURCE_LANG_NOT_FOUND},
- {"NT_STATUS_INSUFF_SERVER_RESOURCES", NT_STATUS_INSUFF_SERVER_RESOURCES},
- {"NT_STATUS_INVALID_BUFFER_SIZE", NT_STATUS_INVALID_BUFFER_SIZE},
- {"NT_STATUS_INVALID_ADDRESS_COMPONENT", NT_STATUS_INVALID_ADDRESS_COMPONENT},
- {"NT_STATUS_INVALID_ADDRESS_WILDCARD", NT_STATUS_INVALID_ADDRESS_WILDCARD},
- {"NT_STATUS_TOO_MANY_ADDRESSES", NT_STATUS_TOO_MANY_ADDRESSES},
- {"NT_STATUS_ADDRESS_ALREADY_EXISTS", NT_STATUS_ADDRESS_ALREADY_EXISTS},
- {"NT_STATUS_ADDRESS_CLOSED", NT_STATUS_ADDRESS_CLOSED},
- {"NT_STATUS_CONNECTION_DISCONNECTED", NT_STATUS_CONNECTION_DISCONNECTED},
- {"NT_STATUS_CONNECTION_RESET", NT_STATUS_CONNECTION_RESET},
- {"NT_STATUS_TOO_MANY_NODES", NT_STATUS_TOO_MANY_NODES},
- {"NT_STATUS_TRANSACTION_ABORTED", NT_STATUS_TRANSACTION_ABORTED},
- {"NT_STATUS_TRANSACTION_TIMED_OUT", NT_STATUS_TRANSACTION_TIMED_OUT},
- {"NT_STATUS_TRANSACTION_NO_RELEASE", NT_STATUS_TRANSACTION_NO_RELEASE},
- {"NT_STATUS_TRANSACTION_NO_MATCH", NT_STATUS_TRANSACTION_NO_MATCH},
- {"NT_STATUS_TRANSACTION_RESPONDED", NT_STATUS_TRANSACTION_RESPONDED},
- {"NT_STATUS_TRANSACTION_INVALID_ID", NT_STATUS_TRANSACTION_INVALID_ID},
- {"NT_STATUS_TRANSACTION_INVALID_TYPE", NT_STATUS_TRANSACTION_INVALID_TYPE},
- {"NT_STATUS_NOT_SERVER_SESSION", NT_STATUS_NOT_SERVER_SESSION},
- {"NT_STATUS_NOT_CLIENT_SESSION", NT_STATUS_NOT_CLIENT_SESSION},
- {"NT_STATUS_CANNOT_LOAD_REGISTRY_FILE", NT_STATUS_CANNOT_LOAD_REGISTRY_FILE},
- {"NT_STATUS_DEBUG_ATTACH_FAILED", NT_STATUS_DEBUG_ATTACH_FAILED},
- {"NT_STATUS_SYSTEM_PROCESS_TERMINATED", NT_STATUS_SYSTEM_PROCESS_TERMINATED},
- {"NT_STATUS_DATA_NOT_ACCEPTED", NT_STATUS_DATA_NOT_ACCEPTED},
- {"NT_STATUS_NO_BROWSER_SERVERS_FOUND", NT_STATUS_NO_BROWSER_SERVERS_FOUND},
- {"NT_STATUS_VDM_HARD_ERROR", NT_STATUS_VDM_HARD_ERROR},
- {"NT_STATUS_DRIVER_CANCEL_TIMEOUT", NT_STATUS_DRIVER_CANCEL_TIMEOUT},
- {"NT_STATUS_REPLY_MESSAGE_MISMATCH", NT_STATUS_REPLY_MESSAGE_MISMATCH},
- {"NT_STATUS_MAPPED_ALIGNMENT", NT_STATUS_MAPPED_ALIGNMENT},
- {"NT_STATUS_IMAGE_CHECKSUM_MISMATCH", NT_STATUS_IMAGE_CHECKSUM_MISMATCH},
- {"NT_STATUS_LOST_WRITEBEHIND_DATA", NT_STATUS_LOST_WRITEBEHIND_DATA},
- {"NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID", NT_STATUS_CLIENT_SERVER_PARAMETERS_INVALID},
- {"NT_STATUS_PASSWORD_MUST_CHANGE", NT_STATUS_PASSWORD_MUST_CHANGE},
- {"NT_STATUS_NOT_FOUND", NT_STATUS_NOT_FOUND},
- {"NT_STATUS_NOT_TINY_STREAM", NT_STATUS_NOT_TINY_STREAM},
- {"NT_STATUS_RECOVERY_FAILURE", NT_STATUS_RECOVERY_FAILURE},
- {"NT_STATUS_STACK_OVERFLOW_READ", NT_STATUS_STACK_OVERFLOW_READ},
- {"NT_STATUS_FAIL_CHECK", NT_STATUS_FAIL_CHECK},
- {"NT_STATUS_DUPLICATE_OBJECTID", NT_STATUS_DUPLICATE_OBJECTID},
- {"NT_STATUS_OBJECTID_EXISTS", NT_STATUS_OBJECTID_EXISTS},
- {"NT_STATUS_CONVERT_TO_LARGE", NT_STATUS_CONVERT_TO_LARGE},
- {"NT_STATUS_RETRY", NT_STATUS_RETRY},
- {"NT_STATUS_FOUND_OUT_OF_SCOPE", NT_STATUS_FOUND_OUT_OF_SCOPE},
- {"NT_STATUS_ALLOCATE_BUCKET", NT_STATUS_ALLOCATE_BUCKET},
- {"NT_STATUS_PROPSET_NOT_FOUND", NT_STATUS_PROPSET_NOT_FOUND},
- {"NT_STATUS_MARSHALL_OVERFLOW", NT_STATUS_MARSHALL_OVERFLOW},
- {"NT_STATUS_INVALID_VARIANT", NT_STATUS_INVALID_VARIANT},
- {"NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND", NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND},
- {"NT_STATUS_ACCOUNT_LOCKED_OUT", NT_STATUS_ACCOUNT_LOCKED_OUT},
- {"NT_STATUS_HANDLE_NOT_CLOSABLE", NT_STATUS_HANDLE_NOT_CLOSABLE},
- {"NT_STATUS_CONNECTION_REFUSED", NT_STATUS_CONNECTION_REFUSED},
- {"NT_STATUS_GRACEFUL_DISCONNECT", NT_STATUS_GRACEFUL_DISCONNECT},
- {"NT_STATUS_ADDRESS_ALREADY_ASSOCIATED", NT_STATUS_ADDRESS_ALREADY_ASSOCIATED},
- {"NT_STATUS_ADDRESS_NOT_ASSOCIATED", NT_STATUS_ADDRESS_NOT_ASSOCIATED},
- {"NT_STATUS_CONNECTION_INVALID", NT_STATUS_CONNECTION_INVALID},
- {"NT_STATUS_CONNECTION_ACTIVE", NT_STATUS_CONNECTION_ACTIVE},
- {"NT_STATUS_NETWORK_UNREACHABLE", NT_STATUS_NETWORK_UNREACHABLE},
- {"NT_STATUS_HOST_UNREACHABLE", NT_STATUS_HOST_UNREACHABLE},
- {"NT_STATUS_PROTOCOL_UNREACHABLE", NT_STATUS_PROTOCOL_UNREACHABLE},
- {"NT_STATUS_PORT_UNREACHABLE", NT_STATUS_PORT_UNREACHABLE},
- {"NT_STATUS_REQUEST_ABORTED", NT_STATUS_REQUEST_ABORTED},
- {"NT_STATUS_CONNECTION_ABORTED", NT_STATUS_CONNECTION_ABORTED},
- {"NT_STATUS_BAD_COMPRESSION_BUFFER", NT_STATUS_BAD_COMPRESSION_BUFFER},
- {"NT_STATUS_USER_MAPPED_FILE", NT_STATUS_USER_MAPPED_FILE},
- {"NT_STATUS_AUDIT_FAILED", NT_STATUS_AUDIT_FAILED},
- {"NT_STATUS_TIMER_RESOLUTION_NOT_SET", NT_STATUS_TIMER_RESOLUTION_NOT_SET},
- {"NT_STATUS_CONNECTION_COUNT_LIMIT", NT_STATUS_CONNECTION_COUNT_LIMIT},
- {"NT_STATUS_LOGIN_TIME_RESTRICTION", NT_STATUS_LOGIN_TIME_RESTRICTION},
- {"NT_STATUS_LOGIN_WKSTA_RESTRICTION", NT_STATUS_LOGIN_WKSTA_RESTRICTION},
- {"NT_STATUS_IMAGE_MP_UP_MISMATCH", NT_STATUS_IMAGE_MP_UP_MISMATCH},
- {"NT_STATUS_INSUFFICIENT_LOGON_INFO", NT_STATUS_INSUFFICIENT_LOGON_INFO},
- {"NT_STATUS_BAD_DLL_ENTRYPOINT", NT_STATUS_BAD_DLL_ENTRYPOINT},
- {"NT_STATUS_BAD_SERVICE_ENTRYPOINT", NT_STATUS_BAD_SERVICE_ENTRYPOINT},
- {"NT_STATUS_LPC_REPLY_LOST", NT_STATUS_LPC_REPLY_LOST},
- {"NT_STATUS_IP_ADDRESS_CONFLICT1", NT_STATUS_IP_ADDRESS_CONFLICT1},
- {"NT_STATUS_IP_ADDRESS_CONFLICT2", NT_STATUS_IP_ADDRESS_CONFLICT2},
- {"NT_STATUS_REGISTRY_QUOTA_LIMIT", NT_STATUS_REGISTRY_QUOTA_LIMIT},
- {"NT_STATUS_PATH_NOT_COVERED", NT_STATUS_PATH_NOT_COVERED},
- {"NT_STATUS_NO_CALLBACK_ACTIVE", NT_STATUS_NO_CALLBACK_ACTIVE},
- {"NT_STATUS_LICENSE_QUOTA_EXCEEDED", NT_STATUS_LICENSE_QUOTA_EXCEEDED},
- {"NT_STATUS_PWD_TOO_SHORT", NT_STATUS_PWD_TOO_SHORT},
- {"NT_STATUS_PWD_TOO_RECENT", NT_STATUS_PWD_TOO_RECENT},
- {"NT_STATUS_PWD_HISTORY_CONFLICT", NT_STATUS_PWD_HISTORY_CONFLICT},
- {"NT_STATUS_PLUGPLAY_NO_DEVICE", NT_STATUS_PLUGPLAY_NO_DEVICE},
- {"NT_STATUS_UNSUPPORTED_COMPRESSION", NT_STATUS_UNSUPPORTED_COMPRESSION},
- {"NT_STATUS_INVALID_HW_PROFILE", NT_STATUS_INVALID_HW_PROFILE},
- {"NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH", NT_STATUS_INVALID_PLUGPLAY_DEVICE_PATH},
- {"NT_STATUS_DRIVER_ORDINAL_NOT_FOUND", NT_STATUS_DRIVER_ORDINAL_NOT_FOUND},
- {"NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND", NT_STATUS_DRIVER_ENTRYPOINT_NOT_FOUND},
- {"NT_STATUS_RESOURCE_NOT_OWNED", NT_STATUS_RESOURCE_NOT_OWNED},
- {"NT_STATUS_TOO_MANY_LINKS", NT_STATUS_TOO_MANY_LINKS},
- {"NT_STATUS_QUOTA_LIST_INCONSISTENT", NT_STATUS_QUOTA_LIST_INCONSISTENT},
- {"NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE},
- {NULL, 0}
-};
-
-/*****************************************************************************
- returns an NT error message. not amazingly helpful, but better than a number.
- *****************************************************************************/
-const char *
-get_nt_error_msg (uint32 nt_code)
-{
- int idx = 0;
-
- nt_code &= 0xFFFF;
-
- while (nt_errs[idx].nt_errstr != NULL)
- {
- if (nt_errs[idx].nt_errcode == nt_code)
- {
- return nt_errs[idx].nt_errstr;
- }
- idx++;
- }
- return NULL;
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/pwd_cache.c
^
|
@@ -1,273 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Password cacheing. obfuscation is planned
-
- Copyright (C) Luke Kenneth Casson Leighton 1996-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-
-/****************************************************************************
-initialises a password structure
-****************************************************************************/
-void
-pwd_init (struct pwd_info *pwd)
-{
- memset ((char *) pwd->password, '\0', sizeof (pwd->password));
- memset ((char *) pwd->smb_lm_pwd, '\0', sizeof (pwd->smb_lm_pwd));
- memset ((char *) pwd->smb_nt_pwd, '\0', sizeof (pwd->smb_nt_pwd));
- memset ((char *) pwd->smb_lm_owf, '\0', sizeof (pwd->smb_lm_owf));
- memset ((char *) pwd->smb_nt_owf, '\0', sizeof (pwd->smb_nt_owf));
-
- pwd->null_pwd = True; /* safest option... */
- pwd->cleartext = False;
- pwd->crypted = False;
-}
-
-/****************************************************************************
-de-obfuscates a password
-****************************************************************************/
-static void
-pwd_deobfuscate (struct pwd_info *pwd)
-{
- (void) pwd;
-}
-
-/****************************************************************************
-obfuscates a password
-****************************************************************************/
-static void
-pwd_obfuscate (struct pwd_info *pwd)
-{
- (void) pwd;
-}
-
-/****************************************************************************
-sets the obfuscation key info
-****************************************************************************/
-void
-pwd_obfuscate_key (struct pwd_info *pwd, uint32 int_key, char *str_key)
-{
- (void) pwd;
- (void) int_key;
- (void) str_key;
-}
-
-#if 0
-/****************************************************************************
-reads a password
-****************************************************************************/
-void
-pwd_read (struct pwd_info *pwd, char *passwd_report, BOOL do_encrypt)
-{
- /* grab a password */
- char *user_pass;
-
- pwd_init (pwd);
-
- user_pass = (char *) getpass (passwd_report);
-
- if (user_pass == NULL || user_pass[0] == 0)
- {
- pwd_set_nullpwd (pwd);
- }
- else if (do_encrypt)
- {
- pwd_make_lm_nt_16 (pwd, user_pass);
- }
- else
- {
- pwd_set_cleartext (pwd, user_pass);
- }
-}
-
-
-/****************************************************************************
- stores a cleartext password
- ****************************************************************************/
-void
-pwd_set_nullpwd (struct pwd_info *pwd)
-{
- pwd_init (pwd);
-
- pwd->cleartext = False;
- pwd->null_pwd = True;
- pwd->crypted = False;
-}
-#endif /* 0 */
-
-/****************************************************************************
- stores a cleartext password
- ****************************************************************************/
-void
-pwd_set_cleartext (struct pwd_info *pwd, char *clr)
-{
- pwd_init (pwd);
- fstrcpy (pwd->password, clr);
- pwd->cleartext = True;
- pwd->null_pwd = False;
- pwd->crypted = False;
-
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- gets a cleartext password
- ****************************************************************************/
-void
-pwd_get_cleartext (struct pwd_info *pwd, char *clr)
-{
- pwd_deobfuscate (pwd);
- if (pwd->cleartext)
- {
- fstrcpy (clr, pwd->password);
- }
- else
- {
- clr[0] = 0;
- }
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- stores lm and nt hashed passwords
- ****************************************************************************/
-void
-pwd_set_lm_nt_16 (struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16])
-{
- pwd_init (pwd);
-
- if (lm_pwd)
- {
- memcpy (pwd->smb_lm_pwd, lm_pwd, 16);
- }
- else
- {
- memset ((char *) pwd->smb_lm_pwd, '\0', 16);
- }
-
- if (nt_pwd)
- {
- memcpy (pwd->smb_nt_pwd, nt_pwd, 16);
- }
- else
- {
- memset ((char *) pwd->smb_nt_pwd, '\0', 16);
- }
-
- pwd->null_pwd = False;
- pwd->cleartext = False;
- pwd->crypted = False;
-
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- gets lm and nt hashed passwords
- ****************************************************************************/
-void
-pwd_get_lm_nt_16 (struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16])
-{
- pwd_deobfuscate (pwd);
- if (lm_pwd != NULL)
- {
- memcpy (lm_pwd, pwd->smb_lm_pwd, 16);
- }
- if (nt_pwd != NULL)
- {
- memcpy (nt_pwd, pwd->smb_nt_pwd, 16);
- }
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- makes lm and nt hashed passwords
- ****************************************************************************/
-void
-pwd_make_lm_nt_16 (struct pwd_info *pwd, char *clr)
-{
- pwd_init (pwd);
-
- nt_lm_owf_gen (clr, pwd->smb_nt_pwd, pwd->smb_lm_pwd);
- pwd->null_pwd = False;
- pwd->cleartext = False;
- pwd->crypted = False;
-
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- makes lm and nt OWF crypts
- ****************************************************************************/
-void
-pwd_make_lm_nt_owf (struct pwd_info *pwd, uchar cryptkey[8])
-{
- pwd_deobfuscate (pwd);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("client cryptkey: "));
- dump_data (100, (char *) cryptkey, 8);
-#endif
-
- SMBOWFencrypt (pwd->smb_nt_pwd, cryptkey, pwd->smb_nt_owf);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("nt_owf_passwd: "));
- dump_data (100, (char *) pwd->smb_nt_owf, sizeof (pwd->smb_nt_owf));
- DEBUG (100, ("nt_sess_pwd: "));
- dump_data (100, (char *) pwd->smb_nt_pwd, sizeof (pwd->smb_nt_pwd));
-#endif
-
- SMBOWFencrypt (pwd->smb_lm_pwd, cryptkey, pwd->smb_lm_owf);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("lm_owf_passwd: "));
- dump_data (100, (char *) pwd->smb_lm_owf, sizeof (pwd->smb_lm_owf));
- DEBUG (100, ("lm_sess_pwd: "));
- dump_data (100, (char *) pwd->smb_lm_pwd, sizeof (pwd->smb_lm_pwd));
-#endif
-
- pwd->crypted = True;
-
- pwd_obfuscate (pwd);
-}
-
-/****************************************************************************
- gets lm and nt crypts
- ****************************************************************************/
-void
-pwd_get_lm_nt_owf (struct pwd_info *pwd, uchar lm_owf[24], uchar nt_owf[24])
-{
- pwd_deobfuscate (pwd);
- if (lm_owf != NULL)
- {
- memcpy (lm_owf, pwd->smb_lm_owf, 24);
- }
- if (nt_owf != NULL)
- {
- memcpy (nt_owf, pwd->smb_nt_owf, 24);
- }
- pwd_obfuscate (pwd);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/smbdes.c
^
|
@@ -1,435 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
-
- a partial implementation of DES designed for use in the
- SMB authentication protocol
-
- Copyright (C) Andrew Tridgell 1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-/* NOTES:
-
- This code makes no attempt to be fast! In fact, it is a very
- slow implementation
-
- This code is NOT a complete DES implementation. It implements only
- the minimum necessary for SMB authentication, as used by all SMB
- products (including every copy of Microsoft Windows95 ever sold)
-
- In particular, it can only do a unchained forward DES pass. This
- means it is not possible to use this code for encryption/decryption
- of data, instead it is only useful as a "hash" algorithm.
-
- There is no entry point into this code that allows normal DES operation.
-
- I believe this means that this code does not come under ITAR
- regulations but this is NOT a legal opinion. If you are concerned
- about the applicability of ITAR regulations to this code then you
- should confirm it for yourself (and maybe let me know if you come
- up with a different answer to the one above)
- */
-
-#undef uchar
-#define uchar const unsigned char
-
-static uchar perm1[56] = { 57, 49, 41, 33, 25, 17, 9,
- 1, 58, 50, 42, 34, 26, 18,
- 10, 2, 59, 51, 43, 35, 27,
- 19, 11, 3, 60, 52, 44, 36,
- 63, 55, 47, 39, 31, 23, 15,
- 7, 62, 54, 46, 38, 30, 22,
- 14, 6, 61, 53, 45, 37, 29,
- 21, 13, 5, 28, 20, 12, 4
-};
-
-static uchar perm2[48] = { 14, 17, 11, 24, 1, 5,
- 3, 28, 15, 6, 21, 10,
- 23, 19, 12, 4, 26, 8,
- 16, 7, 27, 20, 13, 2,
- 41, 52, 31, 37, 47, 55,
- 30, 40, 51, 45, 33, 48,
- 44, 49, 39, 56, 34, 53,
- 46, 42, 50, 36, 29, 32
-};
-
-static uchar perm3[64] = { 58, 50, 42, 34, 26, 18, 10, 2,
- 60, 52, 44, 36, 28, 20, 12, 4,
- 62, 54, 46, 38, 30, 22, 14, 6,
- 64, 56, 48, 40, 32, 24, 16, 8,
- 57, 49, 41, 33, 25, 17, 9, 1,
- 59, 51, 43, 35, 27, 19, 11, 3,
- 61, 53, 45, 37, 29, 21, 13, 5,
- 63, 55, 47, 39, 31, 23, 15, 7
-};
-
-static uchar perm4[48] = { 32, 1, 2, 3, 4, 5,
- 4, 5, 6, 7, 8, 9,
- 8, 9, 10, 11, 12, 13,
- 12, 13, 14, 15, 16, 17,
- 16, 17, 18, 19, 20, 21,
- 20, 21, 22, 23, 24, 25,
- 24, 25, 26, 27, 28, 29,
- 28, 29, 30, 31, 32, 1
-};
-
-static uchar perm5[32] = { 16, 7, 20, 21,
- 29, 12, 28, 17,
- 1, 15, 23, 26,
- 5, 18, 31, 10,
- 2, 8, 24, 14,
- 32, 27, 3, 9,
- 19, 13, 30, 6,
- 22, 11, 4, 25
-};
-
-
-static uchar perm6[64] = { 40, 8, 48, 16, 56, 24, 64, 32,
- 39, 7, 47, 15, 55, 23, 63, 31,
- 38, 6, 46, 14, 54, 22, 62, 30,
- 37, 5, 45, 13, 53, 21, 61, 29,
- 36, 4, 44, 12, 52, 20, 60, 28,
- 35, 3, 43, 11, 51, 19, 59, 27,
- 34, 2, 42, 10, 50, 18, 58, 26,
- 33, 1, 41, 9, 49, 17, 57, 25
-};
-
-
-static uchar sc[16] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 };
-
-static uchar sbox[8][4][16] = {
- {{14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7},
- {0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8},
- {4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0},
- {15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}},
-
- {{15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10},
- {3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5},
- {0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15},
- {13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}},
-
- {{10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8},
- {13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1},
- {13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7},
- {1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}},
-
- {{7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15},
- {13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9},
- {10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4},
- {3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14}},
-
- {{2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9},
- {14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6},
- {4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14},
- {11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3}},
-
- {{12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11},
- {10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8},
- {9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6},
- {4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13}},
-
- {{4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1},
- {13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6},
- {1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2},
- {6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12}},
-
- {{13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7},
- {1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2},
- {7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8},
- {2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}}
-};
-
-static void
-permute (char *out, char *in, uchar * p, int n)
-{
- int i;
- for (i = 0; i < n; i++)
- out[i] = in[p[i] - 1];
-}
-
-static void
-lshift (char *d, int count, int n)
-{
- char out[64];
- int i;
- for (i = 0; i < n; i++)
- out[i] = d[(i + count) % n];
- for (i = 0; i < n; i++)
- d[i] = out[i];
-}
-
-static void
-concat (char *out, char *in1, char *in2, int l1, int l2)
-{
- while (l1--)
- *out++ = *in1++;
- while (l2--)
- *out++ = *in2++;
-}
-
-static void
-xor (char *out, char *in1, char *in2, int n)
-{
- int i;
- for (i = 0; i < n; i++)
- out[i] = in1[i] ^ in2[i];
-}
-
-static void
-dohash (char *out, char *in, char *key, int forw)
-{
- int i, j, k;
- char pk1[56];
- char c[28];
- char d[28];
- char cd[56];
- char ki[16][48];
- char pd1[64];
- char l[32], r[32];
- char rl[64];
-
- permute (pk1, key, perm1, 56);
-
- for (i = 0; i < 28; i++)
- c[i] = pk1[i];
- for (i = 0; i < 28; i++)
- d[i] = pk1[i + 28];
-
- for (i = 0; i < 16; i++)
- {
- lshift (c, sc[i], 28);
- lshift (d, sc[i], 28);
-
- concat (cd, c, d, 28, 28);
- permute (ki[i], cd, perm2, 48);
- }
-
- permute (pd1, in, perm3, 64);
-
- for (j = 0; j < 32; j++)
- {
- l[j] = pd1[j];
- r[j] = pd1[j + 32];
- }
-
- for (i = 0; i < 16; i++)
- {
- char er[48];
- char erk[48];
- char b[8][6];
- char cb[32];
- char pcb[32];
- char r2[32];
-
- permute (er, r, perm4, 48);
-
- xor (erk, er, ki[forw ? i : 15 - i], 48);
-
- for (j = 0; j < 8; j++)
- for (k = 0; k < 6; k++)
- b[j][k] = erk[j * 6 + k];
-
- for (j = 0; j < 8; j++)
- {
- int m, n;
- m = (b[j][0] << 1) | b[j][5];
-
- n = (b[j][1] << 3) | (b[j][2] << 2) | (b[j][3] << 1) | b[j][4];
-
- for (k = 0; k < 4; k++)
- b[j][k] = (sbox[j][m][n] & (1 << (3 - k))) ? 1 : 0;
- }
-
- for (j = 0; j < 8; j++)
- for (k = 0; k < 4; k++)
- cb[j * 4 + k] = b[j][k];
- permute (pcb, cb, perm5, 32);
-
- xor (r2, l, pcb, 32);
-
- for (j = 0; j < 32; j++)
- l[j] = r[j];
-
- for (j = 0; j < 32; j++)
- r[j] = r2[j];
- }
-
- concat (rl, r, l, 32, 32);
-
- permute (out, rl, perm6, 64);
-}
-
-static void
-str_to_key (unsigned char *str, unsigned char *key)
-{
- int i;
-
- key[0] = str[0] >> 1;
- key[1] = ((str[0] & 0x01) << 6) | (str[1] >> 2);
- key[2] = ((str[1] & 0x03) << 5) | (str[2] >> 3);
- key[3] = ((str[2] & 0x07) << 4) | (str[3] >> 4);
- key[4] = ((str[3] & 0x0F) << 3) | (str[4] >> 5);
- key[5] = ((str[4] & 0x1F) << 2) | (str[5] >> 6);
- key[6] = ((str[5] & 0x3F) << 1) | (str[6] >> 7);
- key[7] = str[6] & 0x7F;
- for (i = 0; i < 8; i++)
- {
- key[i] = (key[i] << 1);
- }
-}
-
-
-static void
-smbhash (unsigned char *out, unsigned char *in, unsigned char *key, int forw)
-{
- int i;
- char outb[64];
- char inb[64];
- char keyb[64];
- unsigned char key2[8];
-
- str_to_key (key, key2);
-
- for (i = 0; i < 64; i++)
- {
- inb[i] = (in[i / 8] & (1 << (7 - (i % 8)))) ? 1 : 0;
- keyb[i] = (key2[i / 8] & (1 << (7 - (i % 8)))) ? 1 : 0;
- outb[i] = 0;
- }
-
- dohash (outb, inb, keyb, forw);
-
- for (i = 0; i < 8; i++)
- {
- out[i] = 0;
- }
-
- for (i = 0; i < 64; i++)
- {
- if (outb[i])
- out[i / 8] |= (1 << (7 - (i % 8)));
- }
-}
-
-void
-E_P16 (unsigned char *p14, unsigned char *p16)
-{
- unsigned char sp8[8] = { 0x4b, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
- smbhash (p16, sp8, p14, 1);
- smbhash (p16 + 8, sp8, p14 + 7, 1);
-}
-
-void
-E_P24 (unsigned char *p21, unsigned char *c8, unsigned char *p24)
-{
- smbhash (p24, c8, p21, 1);
- smbhash (p24 + 8, c8, p21 + 7, 1);
- smbhash (p24 + 16, c8, p21 + 14, 1);
-}
-
-#if 0
-void
-D_P16 (unsigned char *p14, unsigned char *in, unsigned char *out)
-{
- smbhash (out, in, p14, 0);
- smbhash (out + 8, in + 8, p14 + 7, 0);
-}
-
-void
-E_old_pw_hash (unsigned char *p14, unsigned char *in, unsigned char *out)
-{
- smbhash (out, in, p14, 1);
- smbhash (out + 8, in + 8, p14 + 7, 1);
-}
-
-void
-cred_hash1 (unsigned char *out, unsigned char *in, unsigned char *key)
-{
- unsigned char buf[8];
-
- smbhash (buf, in, key, 1);
- smbhash (out, buf, key + 9, 1);
-}
-
-void
-cred_hash2 (unsigned char *out, unsigned char *in, unsigned char *key)
-{
- unsigned char buf[8];
- static unsigned char key2[8];
-
- smbhash (buf, in, key, 1);
- key2[0] = key[7];
- smbhash (out, buf, key2, 1);
-}
-
-void
-cred_hash3 (unsigned char *out, unsigned char *in, unsigned char *key, int forw)
-{
- static unsigned char key2[8];
-
- smbhash (out, in, key, forw);
- key2[0] = key[7];
- smbhash (out + 8, in + 8, key2, forw);
-}
-
-void
-SamOEMhash (unsigned char *data, unsigned char *key, int val)
-{
- unsigned char s_box[256];
- unsigned char index_i = 0;
- unsigned char index_j = 0;
- unsigned char j = 0;
- int ind;
-
- for (ind = 0; ind < 256; ind++)
- {
- s_box[ind] = (unsigned char) ind;
- }
-
- for (ind = 0; ind < 256; ind++)
- {
- unsigned char tc;
-
- j += (s_box[ind] + key[ind % 16]);
-
- tc = s_box[ind];
- s_box[ind] = s_box[j];
- s_box[j] = tc;
- }
- for (ind = 0; ind < (val ? 516 : 16); ind++)
- {
- unsigned char tc;
- unsigned char t;
-
- index_i++;
- index_j += s_box[index_i];
-
- tc = s_box[index_i];
- s_box[index_i] = s_box[index_j];
- s_box[index_j] = tc;
-
- t = s_box[index_i] + s_box[index_j];
- data[ind] = data[ind] ^ s_box[t];
- }
-}
-#endif /* 0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/smbencrypt.c
^
|
@@ -1,207 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- SMB parameters and setup
-
- Copyright (C) Andrew Tridgell 1992-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Modified by Jeremy Allison 1995.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-#include "byteorder.h"
-
-/*
- This implements the X/Open SMB password encryption
- It takes a password, a 8 byte "crypt key" and puts 24 bytes of
- encrypted password into p24 */
-void
-SMBencrypt (uchar * passwd, uchar * c8, uchar * p24)
-{
- uchar p14[15], p21[21];
-
- memset (p21, '\0', 21);
- memset (p14, '\0', 14);
- StrnCpy ((char *) p14, (char *) passwd, 14);
-
- strupper ((char *) p14);
- E_P16 (p14, p21);
-
- SMBOWFencrypt (p21, c8, p24);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("SMBencrypt: lm#, challenge, response\n"));
- dump_data (100, (char *) p21, 16);
- dump_data (100, (char *) c8, 8);
- dump_data (100, (char *) p24, 24);
-#endif
-}
-
-/* Routines for Windows NT MD4 Hash functions. */
-static int
-_my_wcslen (int16 * str)
-{
- int len = 0;
- while (*str++ != 0)
- len++;
- return len;
-}
-
-/*
- * Convert a string into an NT UNICODE string.
- * Note that regardless of processor type
- * this must be in intel (little-endian)
- * format.
- */
-
-static int
-_my_mbstowcs (int16 * dst, uchar * src, int len)
-{
- int i;
- int16 val;
-
- for (i = 0; i < len; i++)
- {
- val = *src;
- SSVAL (dst, 0, val);
- dst++;
- src++;
- if (val == 0)
- break;
- }
- return i;
-}
-
-/*
- * Creates the MD4 Hash of the users password in NT UNICODE.
- */
-
-void
-E_md4hash (uchar * passwd, uchar * p16)
-{
- int len;
- int16 wpwd[129];
-
- /* Password cannot be longer than 128 characters */
- len = strlen ((char *) passwd);
- if (len > 128)
- len = 128;
- /* Password must be converted to NT unicode */
- _my_mbstowcs (wpwd, passwd, len);
- wpwd[len] = 0; /* Ensure string is null terminated */
- /* Calculate length in bytes */
- len = _my_wcslen (wpwd) * sizeof (int16);
-
- mdfour (p16, (unsigned char *) wpwd, len);
-}
-
-/* Does both the NT and LM owfs of a user's password */
-void
-nt_lm_owf_gen (char *pwd, uchar nt_p16[16], uchar p16[16])
-{
- char passwd[130];
-
- memset (passwd, '\0', 130);
- safe_strcpy (passwd, pwd, sizeof (passwd) - 1);
-
- /* Calculate the MD4 hash (NT compatible) of the password */
- memset (nt_p16, '\0', 16);
- E_md4hash ((uchar *) passwd, nt_p16);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("nt_lm_owf_gen: pwd, nt#\n"));
- dump_data (120, passwd, strlen (passwd));
- dump_data (100, (char *) nt_p16, 16);
-#endif
-
- /* Mangle the passwords into Lanman format */
- passwd[14] = '\0';
- strupper (passwd);
-
- /* Calculate the SMB (lanman) hash functions of the password */
-
- memset (p16, '\0', 16);
- E_P16 ((uchar *) passwd, (uchar *) p16);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("nt_lm_owf_gen: pwd, lm#\n"));
- dump_data (120, passwd, strlen (passwd));
- dump_data (100, (char *) p16, 16);
-#endif
- /* clear out local copy of user's password (just being paranoid). */
- memset (passwd, '\0', sizeof (passwd));
-}
-
-/* Does the des encryption from the NT or LM MD4 hash. */
-void
-SMBOWFencrypt (uchar passwd[16], uchar * c8, uchar p24[24])
-{
- uchar p21[21];
-
- memset (p21, '\0', 21);
-
- memcpy (p21, passwd, 16);
- E_P24 (p21, c8, p24);
-}
-
-#if 0
-/* Does the des encryption from the FIRST 8 BYTES of the NT or LM MD4 hash. */
-void
-NTLMSSPOWFencrypt (uchar passwd[8], uchar * ntlmchalresp, uchar p24[24])
-{
- uchar p21[21];
-
- memset (p21, '\0', 21);
- memcpy (p21, passwd, 8);
- memset (p21 + 8, 0xbd, 8);
-
- E_P24 (p21, ntlmchalresp, p24);
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("NTLMSSPOWFencrypt: p21, c8, p24\n"));
- dump_data (100, (char *) p21, 21);
- dump_data (100, (char *) ntlmchalresp, 8);
- dump_data (100, (char *) p24, 24);
-#endif
-}
-#endif /* 0 */
-
-/* Does the NT MD4 hash then des encryption. */
-
-void
-SMBNTencrypt (uchar * passwd, uchar * c8, uchar * p24)
-{
- uchar p21[21];
-
- memset (p21, '\0', 21);
-
- E_md4hash (passwd, p21);
- SMBOWFencrypt (p21, c8, p24);
-
-#ifdef DEBUG_PASSWORD
- DEBUG (100, ("SMBNTencrypt: nt#, challenge, response\n"));
- dump_data (100, (char *) p21, 16);
- dump_data (100, (char *) c8, 8);
- dump_data (100, (char *) p24, 24);
-#endif
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/libsmb/smberr.c
^
|
@@ -1,203 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
-
- Copyright (C) Andrew Tridgell 1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define NO_SYSLOG
-
-#include "includes.h"
-
-extern int DEBUGLEVEL;
-
-/* error code stuff - put together by Merik Karman
- merik@blackadder.dsh.oz.au */
-
-typedef struct
-{
- const char *name;
- int code;
- const char *message;
-} err_code_struct;
-
-/* Dos Error Messages */
-static err_code_struct const dos_msgs[] = {
- {"ERRbadfunc", 1, "Invalid function."},
- {"ERRbadfile", 2, "File not found."},
- {"ERRbadpath", 3, "Directory invalid."},
- {"ERRnofids", 4, "No file descriptors available"},
- {"ERRnoaccess", 5, "Access denied."},
- {"ERRbadfid", 6, "Invalid file handle."},
- {"ERRbadmcb", 7, "Memory control blocks destroyed."},
- {"ERRnomem", 8, "Insufficient server memory to perform the requested function."},
- {"ERRbadmem", 9, "Invalid memory block address."},
- {"ERRbadenv", 10, "Invalid environment."},
- {"ERRbadformat", 11, "Invalid format."},
- {"ERRbadaccess", 12, "Invalid open mode."},
- {"ERRbaddata", 13, "Invalid data."},
- {"ERR", 14, "reserved."},
- {"ERRbaddrive", 15, "Invalid drive specified."},
- {"ERRremcd", 16,
- "A Delete Directory request attempted to remove the server's current directory."},
- {"ERRdiffdevice", 17, "Not same device."},
- {"ERRnofiles", 18,
- "A File Search command can find no more files matching the specified criteria."},
- {"ERRbadshare", 32,
- "The sharing mode specified for an Open conflicts with existing FIDs on the file."},
- {"ERRlock", 33,
- "A Lock request conflicted with an existing lock or specified an invalid mode, or an Unlock requested attempted to remove a lock held by another process."},
- {"ERRunsup", 50, "The operation is unsupported"},
- {"ERRnosuchshare", 67, "You specified an invalid share name"},
- {"ERRfilexists", 80,
- "The file named in a Create Directory, Make New File or Link request already exists."},
- {"ERRbadpipe", 230, "Pipe invalid."},
- {"ERRpipebusy", 231, "All instances of the requested pipe are busy."},
- {"ERRpipeclosing", 232, "Pipe close in progress."},
- {"ERRnotconnected", 233, "No process on other end of pipe."},
- {"ERRmoredata", 234, "There is more data to be returned."},
- {"ERRinvgroup", 2455, "Invalid workgroup (try the -W option)"},
- {NULL, -1, NULL}
-};
-
-/* Server Error Messages */
-static err_code_struct const server_msgs[] = {
- {"ERRerror", 1, "Non-specific error code."},
- {"ERRbadpw", 2,
- "Bad password - name/password pair in a Tree Connect or Session Setup are invalid."},
- {"ERRbadtype", 3, "reserved."},
- {"ERRaccess", 4,
- "The requester does not have the necessary access rights within the specified context for the requested function. The context is defined by the TID or the UID."},
- {"ERRinvnid", 5, "The tree ID (TID) specified in a command was invalid."},
- {"ERRinvnetname", 6, "Invalid network name in tree connect."},
- {"ERRinvdevice", 7,
- "Invalid device - printer request made to non-printer connection or non-printer request made to printer connection."},
- {"ERRqfull", 49, "Print queue full (files) -- returned by open print file."},
- {"ERRqtoobig", 50, "Print queue full -- no space."},
- {"ERRqeof", 51, "EOF on print queue dump."},
- {"ERRinvpfid", 52, "Invalid print file FID."},
- {"ERRsmbcmd", 64, "The server did not recognize the command received."},
- {"ERRsrverror", 65, "The server encountered an internal error, e.g., system file unavailable."},
- {"ERRfilespecs", 67,
- "The file handle (FID) and pathname parameters contained an invalid combination of values."},
- {"ERRreserved", 68, "reserved."},
- {"ERRbadpermits", 69,
- "The access permissions specified for a file or directory are not a valid combination. The server cannot set the requested attribute."},
- {"ERRreserved", 70, "reserved."},
- {"ERRsetattrmode", 71, "The attribute mode in the Set File Attribute request is invalid."},
- {"ERRpaused", 81, "Server is paused."},
- {"ERRmsgoff", 82, "Not receiving messages."},
- {"ERRnoroom", 83, "No room to buffer message."},
- {"ERRrmuns", 87, "Too many remote user names."},
- {"ERRtimeout", 88, "Operation timed out."},
- {"ERRnoresource", 89, "No resources currently available for request."},
- {"ERRtoomanyuids", 90, "Too many UIDs active on this session."},
- {"ERRbaduid", 91, "The UID is not known as a valid ID on this session."},
- {"ERRusempx", 250, "Temp unable to support Raw, use MPX mode."},
- {"ERRusestd", 251, "Temp unable to support Raw, use standard read/write."},
- {"ERRcontmpx", 252, "Continue in MPX mode."},
- {"ERRreserved", 253, "reserved."},
- {"ERRreserved", 254, "reserved."},
- {"ERRnosupport", 0xFFFF, "Function not supported."},
- {NULL, -1, NULL}
-};
-
-/* Hard Error Messages */
-static err_code_struct const hard_msgs[] = {
- {"ERRnowrite", 19, "Attempt to write on write-protected diskette."},
- {"ERRbadunit", 20, "Unknown unit."},
- {"ERRnotready", 21, "Drive not ready."},
- {"ERRbadcmd", 22, "Unknown command."},
- {"ERRdata", 23, "Data error (CRC)."},
- {"ERRbadreq", 24, "Bad request structure length."},
- {"ERRseek", 25, "Seek error."},
- {"ERRbadmedia", 26, "Unknown media type."},
- {"ERRbadsector", 27, "Sector not found."},
- {"ERRnopaper", 28, "Printer out of paper."},
- {"ERRwrite", 29, "Write fault."},
- {"ERRread", 30, "Read fault."},
- {"ERRgeneral", 31, "General failure."},
- {"ERRbadshare", 32, "An open conflicts with an existing open."},
- {"ERRlock", 33,
- "A Lock request conflicted with an existing lock or specified an invalid mode, or an Unlock requested attempted to remove a lock held by another process."},
- {"ERRwrongdisk", 34, "The wrong disk was found in a drive."},
- {"ERRFCBUnavail", 35, "No FCBs are available to process request."},
- {"ERRsharebufexc", 36, "A sharing buffer has been exceeded."},
- {NULL, -1, NULL}
-};
-
-
-struct
-{
- int code;
- const char *class;
- err_code_struct const *err_msgs;
-} const err_classes[] = {
- {0, "SUCCESS", NULL},
- {0x01, "ERRDOS", dos_msgs},
- {0x02, "ERRSRV", server_msgs},
- {0x03, "ERRHRD", hard_msgs},
- {0x04, "ERRXOS", NULL},
- {0xE1, "ERRRMX1", NULL},
- {0xE2, "ERRRMX2", NULL},
- {0xE3, "ERRRMX3", NULL},
- {0xFF, "ERRCMD", NULL},
- {-1, NULL, NULL}
-};
-
-
-/****************************************************************************
-return a SMB error string from a SMB buffer
-****************************************************************************/
-char *
-smb_errstr (char *inbuf)
-{
- static pstring ret;
- int class = CVAL (inbuf, smb_rcls);
- int num = SVAL (inbuf, smb_err);
- int i, j;
-
- for (i = 0; err_classes[i].class; i++)
- if (err_classes[i].code == class)
- {
- if (err_classes[i].err_msgs)
- {
- const err_code_struct *err = err_classes[i].err_msgs;
- for (j = 0; err[j].name; j++)
- if (num == err[j].code)
- {
- if (DEBUGLEVEL > 0)
- slprintf (ret, sizeof (ret) - 1, "%s - %s (%s)", err_classes[i].class,
- err[j].name, err[j].message);
- else
- slprintf (ret, sizeof (ret) - 1, "%s - %s", err_classes[i].class,
- err[j].name);
- return ret;
- }
- }
-
- slprintf (ret, sizeof (ret) - 1, "%s - %d", err_classes[i].class, num);
- return ret;
- }
-
- slprintf (ret, sizeof (ret) - 1, "Error: Unknown error (%d,%d)", class, num);
- return (ret);
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/param/loadparm.c
^
|
@@ -1,2517 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Parameter loading functions
-
- Copyright (C) Karl Auer 1993-1998
-
- Copyright (C) 2011-2020
- Free Software Foundation, Inc.
-
- Largely re-written by Andrew Tridgell, September 1994
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * Load parameters.
- *
- * This module provides suitable callback functions for the params
- * module. It builds the internal table of service details which is
- * then used by the rest of the server.
- *
- * To add a parameter:
- *
- * 1) add it to the global or service structure definition
- * 2) add it to the parm_table
- * 3) add it to the list of available functions (eg: using FN_GLOBAL_STRING())
- * 4) If it's a global then initialise it in init_globals. If a local
- * (ie. service) parameter then initialise it in the sDefault structure
- *
- *
- * Notes:
- * The configuration file is processed sequentially for speed. It is NOT
- * accessed randomly as happens in 'real' Windows. For this reason, there
- * is a fair bit of sequence-dependent code here - ie., code which assumes
- * that certain things happen before others. In particular, the code which
- * happens at the boundary between sections is delicately poised, so be
- * careful!
- *
- */
-
-#include "includes.h"
-
-/* Set default coding system for KANJI if none specified in Makefile. */
-/*
- * We treat KANJI specially due to historical precedent (it was the
- * first non-english codepage added to Samba). With the new dynamic
- * codepage support this is not needed anymore.
- *
- * The define 'KANJI' is being overloaded to mean 'use kanji codepage
- * by default' and also 'this is the filename-to-disk conversion
- * method to use'. This really should be removed and all control
- * over this left in the smb.conf parameters 'client codepage'
- * and 'coding system'.
- */
-#ifndef KANJI
-#define KANJI "sbcs"
-#endif /* KANJI */
-
-BOOL in_client = False; /* Not in the client by default */
-BOOL bLoaded = False;
-
-extern int DEBUGLEVEL;
-extern pstring user_socket_options;
-extern pstring global_myname;
-pstring global_scope = "";
-
-#ifndef GLOBAL_NAME
-#define GLOBAL_NAME "global"
-#endif
-
-#ifndef PRINTERS_NAME
-#define PRINTERS_NAME "printers"
-#endif
-
-#ifndef HOMES_NAME
-#define HOMES_NAME "homes"
-#endif
-
-/* some helpful bits */
-#define pSERVICE(i) ServicePtrs[i]
-#define iSERVICE(i) (*pSERVICE(i))
-#define LP_SNUM_OK(iService) (((iService) >= 0) && ((iService) < iNumServices) && iSERVICE(iService).valid)
-#define VALID(i) iSERVICE(i).valid
-
-int keepalive = DEFAULT_KEEPALIVE;
-static BOOL use_getwd_cache;
-
-extern int extra_time_offset;
-
-/*
- * This structure describes global (ie., server-wide) parameters.
- */
-typedef struct
-{
- char *szPrintcapname;
- char *szLockDir;
- char *szRootdir;
- char *szDefaultService;
- char *szDfree;
- char *szMsgCommand;
- char *szHostsEquiv;
- char *szServerString;
- char *szAutoServices;
- char *szPasswdProgram;
- char *szPasswdChat;
- char *szLogFile;
- char *szConfigFile;
- char *szSMBPasswdFile;
- char *szPasswordServer;
- char *szSocketOptions;
- char *szValidChars;
- char *szWorkGroup;
- char *szDomainAdminGroup;
- char *szDomainGuestGroup;
- char *szDomainAdminUsers;
- char *szDomainGuestUsers;
- char *szDomainHostsallow;
- char *szDomainHostsdeny;
- char *szUsernameMap;
-#ifdef USING_GROUPNAME_MAP
- char *szGroupnameMap;
-#endif /* USING_GROUPNAME_MAP */
- char *szCharacterSet;
- char *szLogonScript;
- char *szLogonPath;
- char *szLogonDrive;
- char *szLogonHome;
- char *szSmbrun;
- char *szWINSserver;
- char *szCodingSystem;
- char *szInterfaces;
- char *szRemoteAnnounce;
- char *szRemoteBrowseSync;
- char *szSocketAddress;
- char *szNISHomeMapName;
- char *szAnnounceVersion; /* This is initialised in init_globals */
- char *szNetbiosAliases;
- char *szDomainOtherSIDs;
- char *szDomainGroups;
- char *szDriverFile;
- char *szNameResolveOrder;
- char *szLdapServer;
- char *szLdapSuffix;
- char *szLdapFilter;
- char *szLdapRoot;
- char *szLdapRootPassword;
- char *szPanicAction;
- char *szAddUserScript;
- char *szDelUserScript;
- int max_log_size;
- int mangled_stack;
- int max_xmit;
- int max_mux;
- int max_open_files;
- int max_packet;
- int pwordlevel;
- int unamelevel;
- int deadtime;
- int maxprotocol;
- int security;
- int maxdisksize;
- int lpqcachetime;
- int syslog;
- int os_level;
- int max_ttl;
- int max_wins_ttl;
- int min_wins_ttl;
- int ReadSize;
- int lm_announce;
- int lm_interval;
- int shmem_size;
- int client_code_page;
- int announce_as; /* This is initialised in init_globals */
- int machine_password_timeout;
- int change_notify_timeout;
- int stat_cache_size;
- int map_to_guest;
- int min_passwd_length;
- int oplock_break_wait_time;
-#ifdef WITH_LDAP
- int ldap_port;
-#endif /* WITH_LDAP */
-#ifdef WITH_SSL
- int sslVersion;
- char *sslHostsRequire;
- char *sslHostsResign;
- char *sslCaCertDir;
- char *sslCaCertFile;
- char *sslCert;
- char *sslPrivKey;
- char *sslClientCert;
- char *sslClientPrivKey;
- char *sslCiphers;
- BOOL sslEnabled;
- BOOL sslReqClientCert;
- BOOL sslReqServerCert;
- BOOL sslCompatibility;
-#endif /* WITH_SSL */
- BOOL bDNSproxy;
- BOOL bWINSsupport;
- BOOL bWINSproxy;
- BOOL bLocalMaster;
- BOOL bPreferredMaster;
- BOOL bDomainMaster;
- BOOL bDomainLogons;
- BOOL bEncryptPasswords;
- BOOL bUpdateEncrypt;
- BOOL bStripDot;
- BOOL bNullPasswords;
- BOOL bLoadPrinters;
- BOOL bUseRhosts;
- BOOL bReadRaw;
- BOOL bWriteRaw;
- BOOL bReadPrediction;
- BOOL bReadbmpx;
- BOOL bSyslogOnly;
- BOOL bBrowseList;
- BOOL bUnixRealname;
- BOOL bNISHomeMap;
- BOOL bTimeServer;
- BOOL bBindInterfacesOnly;
- BOOL bUnixPasswdSync;
- BOOL bPasswdChatDebug;
- BOOL bOleLockingCompat;
- BOOL bTimestampLogs;
- BOOL bNTSmbSupport;
- BOOL bNTPipeSupport;
- BOOL bNTAclSupport;
- BOOL bStatCache;
- BOOL bKernelOplocks;
- BOOL bAllowTrustedDomains;
- BOOL bRestrictAnonymous;
-} global;
-
-static global Globals;
-
-
-
-/*
- * This structure describes a single service.
- */
-typedef struct
-{
- BOOL valid;
- char *szService;
- char *szPath;
- char *szUsername;
- char *szGuestaccount;
- char *szInvalidUsers;
- char *szValidUsers;
- char *szAdminUsers;
- char *szCopy;
- char *szInclude;
- char *szPreExec;
- char *szPostExec;
- char *szRootPreExec;
- char *szRootPostExec;
- char *szPrintcommand;
- char *szLpqcommand;
- char *szLprmcommand;
- char *szLppausecommand;
- char *szLpresumecommand;
- char *szQueuepausecommand;
- char *szQueueresumecommand;
- char *szPrintername;
- char *szPrinterDriver;
- char *szPrinterDriverLocation;
- char *szDontdescend;
- char *szHostsallow;
- char *szHostsdeny;
- char *szMagicScript;
- char *szMagicOutput;
- char *szMangledMap;
- char *szVetoFiles;
- char *szHideFiles;
- char *szVetoOplockFiles;
- char *comment;
- char *force_user;
- char *force_group;
- char *readlist;
- char *writelist;
- char *volume;
- char *fstype;
- int iMinPrintSpace;
- int iCreate_mask;
- int iCreate_force_mode;
- int iDir_mask;
- int iDir_force_mode;
- int iMaxConnections;
- int iDefaultCase;
- int iPrinting;
- int iOplockContentionLimit;
- BOOL bAlternatePerm;
- BOOL bRevalidate;
- BOOL bCaseSensitive;
- BOOL bCasePreserve;
- BOOL bShortCasePreserve;
- BOOL bCaseMangle;
- BOOL status;
- BOOL bHideDotFiles;
- BOOL bBrowseable;
- BOOL bAvailable;
- BOOL bRead_only;
- BOOL bNo_set_dir;
- BOOL bGuest_only;
- BOOL bGuest_ok;
- BOOL bPrint_ok;
- BOOL bPostscript;
- BOOL bMap_system;
- BOOL bMap_hidden;
- BOOL bMap_archive;
- BOOL bLocking;
- BOOL bStrictLocking;
- BOOL bShareModes;
- BOOL bOpLocks;
- BOOL bOnlyUser;
- BOOL bMangledNames;
- BOOL bWidelinks;
- BOOL bSymlinks;
- BOOL bSyncAlways;
- BOOL bStrictSync;
- char magic_char;
- BOOL *copymap;
- BOOL bDeleteReadonly;
- BOOL bFakeOplocks;
- BOOL bDeleteVetoFiles;
- BOOL bDosFiletimes;
- BOOL bDosFiletimeResolution;
- BOOL bFakeDirCreateTimes;
- BOOL bBlockingLocks;
- BOOL bMangleLocks;
- char dummy[3]; /* for alignment */
-} service;
-
-
-/* This is a default service used to prime a services structure */
-static service sDefault = {
- True, /* valid */
- NULL, /* szService */
- NULL, /* szPath */
- NULL, /* szUsername */
- NULL, /* szGuestAccount - this is set in init_globals() */
- NULL, /* szInvalidUsers */
- NULL, /* szValidUsers */
- NULL, /* szAdminUsers */
- NULL, /* szCopy */
- NULL, /* szInclude */
- NULL, /* szPreExec */
- NULL, /* szPostExec */
- NULL, /* szRootPreExec */
- NULL, /* szRootPostExec */
- NULL, /* szPrintcommand */
- NULL, /* szLpqcommand */
- NULL, /* szLprmcommand */
- NULL, /* szLppausecommand */
- NULL, /* szLpresumecommand */
- NULL, /* szQueuepausecommand */
- NULL, /* szQueueresumecommand */
- NULL, /* szPrintername */
- NULL, /* szPrinterDriver - this is set in init_globals() */
- NULL, /* szPrinterDriverLocation */
- NULL, /* szDontdescend */
- NULL, /* szHostsallow */
- NULL, /* szHostsdeny */
- NULL, /* szMagicScript */
- NULL, /* szMagicOutput */
- NULL, /* szMangledMap */
- NULL, /* szVetoFiles */
- NULL, /* szHideFiles */
- NULL, /* szVetoOplockFiles */
- NULL, /* comment */
- NULL, /* force user */
- NULL, /* force group */
- NULL, /* readlist */
- NULL, /* writelist */
- NULL, /* volume */
- NULL, /* fstype */
- 0, /* iMinPrintSpace */
- 0744, /* iCreate_mask */
- 0000, /* iCreate_force_mode */
- 0755, /* iDir_mask */
- 0000, /* iDir_force_mode */
- 0, /* iMaxConnections */
- CASE_LOWER, /* iDefaultCase */
- DEFAULT_PRINTING, /* iPrinting */
- 2, /* iOplockContentionLimit */
- False, /* bAlternatePerm */
- False, /* revalidate */
- False, /* case sensitive */
- True, /* case preserve */
- True, /* short case preserve */
- False, /* case mangle */
- True, /* status */
- True, /* bHideDotFiles */
- True, /* bBrowseable */
- True, /* bAvailable */
- True, /* bRead_only */
- True, /* bNo_set_dir */
- False, /* bGuest_only */
- False, /* bGuest_ok */
- False, /* bPrint_ok */
- False, /* bPostscript */
- False, /* bMap_system */
- False, /* bMap_hidden */
- True, /* bMap_archive */
- True, /* bLocking */
- False, /* bStrictLocking */
- True, /* bShareModes */
- True, /* bOpLocks */
- False, /* bOnlyUser */
- True, /* bMangledNames */
- True, /* bWidelinks */
- True, /* bSymlinks */
- False, /* bSyncAlways */
- False, /* bStrictSync */
- '~', /* magic char */
- NULL, /* copymap */
- False, /* bDeleteReadonly */
- False, /* bFakeOplocks */
- False, /* bDeleteVetoFiles */
- False, /* bDosFiletimes */
- False, /* bDosFiletimeResolution */
- False, /* bFakeDirCreateTimes */
- True, /* bBlockingLocks */
- True, /* bMangleLocks */
- "" /* dummy */
-};
-
-
-
-/* local variables */
-static service **ServicePtrs = NULL;
-static int iNumServices = 0;
-static int iServiceIndex = 0;
-static BOOL bInGlobalSection = True;
-static BOOL bGlobalOnly = False;
-
-#define NUMPARAMETERS (sizeof(parm_table) / sizeof(struct parm_struct))
-
-/* prototypes for the special type handlers */
-static BOOL handle_valid_chars (const char *pszParmValue, char **ptr);
-static BOOL handle_include (const char *pszParmValue, char **ptr);
-static BOOL handle_copy (const char *pszParmValue, char **ptr);
-static BOOL handle_character_set (const char *pszParmValue, char **ptr);
-static BOOL handle_coding_system (const char *pszParmValue, char **ptr);
-#if 0
-static void set_default_server_announce_type (void);
-#endif /* 0 */
-static struct enum_list const enum_protocol[] =
- { {PROTOCOL_NT1, "NT1"}, {PROTOCOL_LANMAN2, "LANMAN2"},
-{PROTOCOL_LANMAN1, "LANMAN1"}, {PROTOCOL_CORE, "CORE"},
-{PROTOCOL_COREPLUS, "COREPLUS"},
-{PROTOCOL_COREPLUS, "CORE+"}, {-1, NULL}
-};
-
-static struct enum_list const enum_security[] = { {SEC_SHARE, "SHARE"}, {SEC_USER, "USER"},
-{SEC_SERVER, "SERVER"}, {SEC_DOMAIN, "DOMAIN"},
-{-1, NULL}
-};
-
-static struct enum_list const enum_printing[] = { {PRINT_SYSV, "sysv"}, {PRINT_AIX, "aix"},
-{PRINT_HPUX, "hpux"}, {PRINT_BSD, "bsd"},
-{PRINT_QNX, "qnx"}, {PRINT_PLP, "plp"},
-{PRINT_LPRNG, "lprng"}, {PRINT_SOFTQ, "softq"},
-{-1, NULL}
-};
-
-/* Types of machine we can announce as. */
-#define ANNOUNCE_AS_NT_SERVER 1
-#define ANNOUNCE_AS_WIN95 2
-#define ANNOUNCE_AS_WFW 3
-#define ANNOUNCE_AS_NT_WORKSTATION 4
-
-/* *INDENT-OFF* */
-static struct enum_list const enum_announce_as[] =
-{
- {ANNOUNCE_AS_NT_SERVER, "NT"},
- {ANNOUNCE_AS_NT_SERVER, "NT Server"},
- {ANNOUNCE_AS_NT_WORKSTATION, "NT Workstation"},
- {ANNOUNCE_AS_WIN95, "win95"},
- {ANNOUNCE_AS_WFW, "WfW"},
- {-1, NULL}
-};
-/* *INDENT-ON* */
-
-static struct enum_list const enum_case[] =
- { {CASE_LOWER, "lower"}, {CASE_UPPER, "upper"}, {-1, NULL} };
-
-static struct enum_list const enum_lm_announce[] =
- { {0, "False"}, {1, "True"}, {2, "Auto"}, {-1, NULL} };
-
-/*
- Do you want session setups at user level security with a invalid
- password to be rejected or allowed in as guest? WinNT rejects them
- but it can be a pain as it means "net view" needs to use a password
-
- You have 3 choices in the setting of map_to_guest:
-
- "Never" means session setups with an invalid password
- are rejected. This is the default.
-
- "Bad User" means session setups with an invalid password
- are rejected, unless the username does not exist, in which case it
- is treated as a guest login
-
- "Bad Password" means session setups with an invalid password
- are treated as a guest login
-
- Note that map_to_guest only has an effect in user or server
- level security.
- */
-
-/* *INDENT-OFF* */
-static struct enum_list const enum_map_to_guest[] =
-{
- {NEVER_MAP_TO_GUEST, "Never"},
- {MAP_TO_GUEST_ON_BAD_USER, "Bad User"},
- {MAP_TO_GUEST_ON_BAD_PASSWORD, "Bad Password"},
- {-1, NULL}
-};
-/* *INDENT-ON* */
-
-#ifdef WITH_SSL
-static struct enum_list const enum_ssl_version[] = { {SMB_SSL_V2, "ssl2"}, {SMB_SSL_V3, "ssl3"},
-{SMB_SSL_V23, "ssl2or3"}, {SMB_SSL_TLS1, "tls1"}, {-1, NULL}
-};
-#endif
-
-#define PARM_SEPARATOR(label) {label, P_SEP, P_SEPARATOR, NULL, NULL, NULL, 0, {0}}
-/* note that we do not initialise the defaults union - it is not allowed in ANSI C */
-static struct parm_struct const parm_table[] = {
- PARM_SEPARATOR ("Base Options"),
- {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL,
- FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_SHARE | FLAG_PRINT,
- {0}},
- {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, 0, {0}},
- {"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkGroup, NULL, NULL, FLAG_BASIC, {0}},
- {"netbios name", P_UGSTRING, P_GLOBAL, global_myname, NULL, NULL, FLAG_BASIC, {0}},
- {"netbios aliases", P_STRING, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, 0, {0}},
- {"netbios scope", P_UGSTRING, P_GLOBAL, global_scope, NULL, NULL, 0, {0}},
- {"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC, {0}},
- {"interfaces", P_STRING, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC, {0}},
- {"bind interfaces only", P_BOOL, P_GLOBAL, &Globals.bBindInterfacesOnly, NULL, NULL, 0, {0}},
-
- PARM_SEPARATOR ("Security Options"),
- {"security", P_ENUM, P_GLOBAL, &Globals.security, NULL, enum_security, FLAG_BASIC, {0}},
- {"encrypt passwords", P_BOOL, P_GLOBAL, &Globals.bEncryptPasswords, NULL, NULL, FLAG_BASIC,
- {0}},
- {"update encrypted", P_BOOL, P_GLOBAL, &Globals.bUpdateEncrypt, NULL, NULL, FLAG_BASIC, {0}},
- {"allow trusted domains", P_BOOL, P_GLOBAL, &Globals.bAllowTrustedDomains, NULL, NULL, 0, {0}},
- {"alternate permissions", P_BOOL, P_LOCAL, &sDefault.bAlternatePerm, NULL, NULL,
- FLAG_GLOBAL | FLAG_DEPRECATED, {0}},
- {"hosts equiv", P_STRING, P_GLOBAL, &Globals.szHostsEquiv, NULL, NULL, 0, {0}},
- {"min passwd length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, 0, {0}},
- {"min password length", P_INTEGER, P_GLOBAL, &Globals.min_passwd_length, NULL, NULL, 0, {0}},
- {"map to guest", P_ENUM, P_GLOBAL, &Globals.map_to_guest, NULL, enum_map_to_guest, 0, {0}},
- {"null passwords", P_BOOL, P_GLOBAL, &Globals.bNullPasswords, NULL, NULL, 0, {0}},
- {"password server", P_STRING, P_GLOBAL, &Globals.szPasswordServer, NULL, NULL, 0, {0}},
- {"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, 0, {0}},
- {"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0, {0}},
- {"root dir", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0, {0}},
- {"root", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, 0, {0}},
- {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, 0, {0}},
- {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, 0, {0}},
- {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, 0, {0}},
- {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, 0, {0}},
- {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, 0, {0}},
- {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, 0, {0}},
- {"unix password sync", P_BOOL, P_GLOBAL, &Globals.bUnixPasswdSync, NULL, NULL, 0, {0}},
- {"restrict anonymous", P_BOOL, P_GLOBAL, &Globals.bRestrictAnonymous, NULL, NULL, 0, {0}},
- {"revalidate", P_BOOL, P_LOCAL, &sDefault.bRevalidate, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"use rhosts", P_BOOL, P_GLOBAL, &Globals.bUseRhosts, NULL, NULL, 0, {0}},
- {"username", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"user", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, 0, {0}},
- {"users", P_STRING, P_LOCAL, &sDefault.szUsername, NULL, NULL, 0, {0}},
- {"guest account", P_STRING, P_LOCAL, &sDefault.szGuestaccount, NULL, NULL,
- FLAG_BASIC | FLAG_SHARE | FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"invalid users", P_STRING, P_LOCAL, &sDefault.szInvalidUsers, NULL, NULL,
- FLAG_GLOBAL | FLAG_SHARE, {0}},
- {"valid users", P_STRING, P_LOCAL, &sDefault.szValidUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"admin users", P_STRING, P_LOCAL, &sDefault.szAdminUsers, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"read list", P_STRING, P_LOCAL, &sDefault.readlist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE, {0}},
- {"write list", P_STRING, P_LOCAL, &sDefault.writelist, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"force user", P_STRING, P_LOCAL, &sDefault.force_user, NULL, NULL, FLAG_SHARE, {0}},
- {"force group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, FLAG_SHARE, {0}},
- {"group", P_STRING, P_LOCAL, &sDefault.force_group, NULL, NULL, 0, {0}},
- {"read only", P_BOOL, P_LOCAL, &sDefault.bRead_only, NULL, NULL, FLAG_BASIC | FLAG_SHARE, {0}},
- {"write ok", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0, {0}},
- {"writeable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0, {0}},
- {"writable", P_BOOLREV, P_LOCAL, &sDefault.bRead_only, NULL, NULL, 0, {0}},
- {"create mask", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_mask, NULL, NULL, FLAG_GLOBAL, {0}},
- {"force create mode", P_OCTAL, P_LOCAL, &sDefault.iCreate_force_mode, NULL, NULL,
- FLAG_GLOBAL | FLAG_SHARE, {0}},
- {"directory mask", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE,
- {0}},
- {"directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_mask, NULL, NULL, FLAG_GLOBAL, {0}},
- {"force directory mode", P_OCTAL, P_LOCAL, &sDefault.iDir_force_mode, NULL, NULL,
- FLAG_GLOBAL | FLAG_SHARE, {0}},
- {"guest only", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, FLAG_SHARE, {0}},
- {"only guest", P_BOOL, P_LOCAL, &sDefault.bGuest_only, NULL, NULL, 0, {0}},
- {"guest ok", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL,
- FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"public", P_BOOL, P_LOCAL, &sDefault.bGuest_ok, NULL, NULL, 0, {0}},
- {"only user", P_BOOL, P_LOCAL, &sDefault.bOnlyUser, NULL, NULL, FLAG_SHARE, {0}},
- {"hosts allow", P_STRING, P_LOCAL, &sDefault.szHostsallow, NULL, NULL,
- FLAG_GLOBAL | FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"allow hosts", P_STRING, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, 0, {0}},
- {"hosts deny", P_STRING, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL,
- FLAG_GLOBAL | FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"deny hosts", P_STRING, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, 0, {0}},
-
-#ifdef WITH_SSL
- PARM_SEPARATOR ("Secure Socket Layer Options"),
- {"ssl", P_BOOL, P_GLOBAL, &Globals.sslEnabled, NULL, NULL, 0, {0}},
- {"ssl hosts", P_STRING, P_GLOBAL, &Globals.sslHostsRequire, NULL, NULL, 0, {0}},
- {"ssl hosts resign", P_STRING, P_GLOBAL, &Globals.sslHostsResign, NULL, NULL, 0},
- {"ssl CA certDir", P_STRING, P_GLOBAL, &Globals.sslCaCertDir, NULL, NULL, 0, {0}},
- {"ssl CA certFile", P_STRING, P_GLOBAL, &Globals.sslCaCertFile, NULL, NULL, 0, {0}},
- {"ssl server cert", P_STRING, P_GLOBAL, &Globals.sslCert, NULL, NULL, 0, {0}},
- {"ssl server key", P_STRING, P_GLOBAL, &Globals.sslPrivKey, NULL, NULL, 0, {0}},
- {"ssl client cert", P_STRING, P_GLOBAL, &Globals.sslClientCert, NULL, NULL, 0, {0}},
- {"ssl client key", P_STRING, P_GLOBAL, &Globals.sslClientPrivKey, NULL, NULL, 0, {0}},
- {"ssl require clientcert", P_BOOL, P_GLOBAL, &Globals.sslReqClientCert, NULL, NULL, 0, {0}},
- {"ssl require servercert", P_BOOL, P_GLOBAL, &Globals.sslReqServerCert, NULL, NULL, 0, {0}},
- {"ssl ciphers", P_STRING, P_GLOBAL, &Globals.sslCiphers, NULL, NULL, 0, {0}},
- {"ssl version", P_ENUM, P_GLOBAL, &Globals.sslVersion, NULL, enum_ssl_version, 0, {0}},
- {"ssl compatibility", P_BOOL, P_GLOBAL, &Globals.sslCompatibility, NULL, NULL, 0, {0}},
-#endif /* WITH_SSL */
-
- PARM_SEPARATOR ("Logging Options"),
- {"log level", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, FLAG_BASIC, {0}},
- {"debuglevel", P_INTEGER, P_GLOBAL, &DEBUGLEVEL, NULL, NULL, 0, {0}},
- {"syslog", P_INTEGER, P_GLOBAL, &Globals.syslog, NULL, NULL, 0, {0}},
- {"syslog only", P_BOOL, P_GLOBAL, &Globals.bSyslogOnly, NULL, NULL, 0, {0}},
- {"log file", P_STRING, P_GLOBAL, &Globals.szLogFile, NULL, NULL, 0, {0}},
- {"max log size", P_INTEGER, P_GLOBAL, &Globals.max_log_size, NULL, NULL, 0, {0}},
- {"timestamp logs", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, 0, {0}},
- {"debug timestamp", P_BOOL, P_GLOBAL, &Globals.bTimestampLogs, NULL, NULL, 0, {0}},
- {"status", P_BOOL, P_LOCAL, &sDefault.status, NULL, NULL, FLAG_GLOBAL | FLAG_SHARE | FLAG_PRINT,
- {0}},
-
- PARM_SEPARATOR ("Protocol Options"),
- {"protocol", P_ENUM, P_GLOBAL, &Globals.maxprotocol, NULL, enum_protocol, 0, {0}},
- {"read bmpx", P_BOOL, P_GLOBAL, &Globals.bReadbmpx, NULL, NULL, 0, {0}},
- {"read raw", P_BOOL, P_GLOBAL, &Globals.bReadRaw, NULL, NULL, 0, {0}},
- {"write raw", P_BOOL, P_GLOBAL, &Globals.bWriteRaw, NULL, NULL, 0, {0}},
- {"nt smb support", P_BOOL, P_GLOBAL, &Globals.bNTSmbSupport, NULL, NULL, 0, {0}},
- {"nt pipe support", P_BOOL, P_GLOBAL, &Globals.bNTPipeSupport, NULL, NULL, 0, {0}},
- {"nt acl support", P_BOOL, P_GLOBAL, &Globals.bNTAclSupport, NULL, NULL, 0, {0}},
- {"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, 0, {0}},
- {"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, 0, {0}},
- {"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, 0, {0}},
- {"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, 0, {0}},
- {"name resolve order", P_STRING, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, 0, {0}},
- {"max packet", P_INTEGER, P_GLOBAL, &Globals.max_packet, NULL, NULL, 0, {0}},
- {"packet size", P_INTEGER, P_GLOBAL, &Globals.max_packet, NULL, NULL, 0, {0}},
- {"max ttl", P_INTEGER, P_GLOBAL, &Globals.max_ttl, NULL, NULL, 0, {0}},
- {"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, 0, {0}},
- {"min wins ttl", P_INTEGER, P_GLOBAL, &Globals.min_wins_ttl, NULL, NULL, 0, {0}},
- {"time server", P_BOOL, P_GLOBAL, &Globals.bTimeServer, NULL, NULL, 0, {0}},
-
- PARM_SEPARATOR ("Tuning Options"),
- {"change notify timeout", P_INTEGER, P_GLOBAL, &Globals.change_notify_timeout, NULL, NULL, 0,
- {0}},
- {"deadtime", P_INTEGER, P_GLOBAL, &Globals.deadtime, NULL, NULL, 0, {0}},
- {"getwd cache", P_BOOL, P_GLOBAL, &use_getwd_cache, NULL, NULL, 0, {0}},
- {"keepalive", P_INTEGER, P_GLOBAL, &keepalive, NULL, NULL, 0, {0}},
- {"lpq cache time", P_INTEGER, P_GLOBAL, &Globals.lpqcachetime, NULL, NULL, 0, {0}},
- {"max connections", P_INTEGER, P_LOCAL, &sDefault.iMaxConnections, NULL, NULL, FLAG_SHARE, {0}},
- {"max disk size", P_INTEGER, P_GLOBAL, &Globals.maxdisksize, NULL, NULL, 0, {0}},
- {"max open files", P_INTEGER, P_GLOBAL, &Globals.max_open_files, NULL, NULL, 0, {0}},
- {"min print space", P_INTEGER, P_LOCAL, &sDefault.iMinPrintSpace, NULL, NULL, FLAG_PRINT, {0}},
- {"read prediction", P_BOOL, P_GLOBAL, &Globals.bReadPrediction, NULL, NULL, 0, {0}},
- {"read size", P_INTEGER, P_GLOBAL, &Globals.ReadSize, NULL, NULL, 0, {0}},
- {"shared mem size", P_INTEGER, P_GLOBAL, &Globals.shmem_size, NULL, NULL, 0, {0}},
- {"socket options", P_GSTRING, P_GLOBAL, user_socket_options, NULL, NULL, 0, {0}},
- {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, 0, {0}},
- {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE, {0}},
- {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE, {0}},
-
- PARM_SEPARATOR ("Printing Options"),
- {"load printers", P_BOOL, P_GLOBAL, &Globals.bLoadPrinters, NULL, NULL, FLAG_PRINT, {0}},
- {"printcap name", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, FLAG_PRINT, {0}},
- {"printcap", P_STRING, P_GLOBAL, &Globals.szPrintcapname, NULL, NULL, 0, {0}},
- {"printer driver file", P_STRING, P_GLOBAL, &Globals.szDriverFile, NULL, NULL, FLAG_PRINT, {0}},
- {"print ok", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, FLAG_PRINT, {0}},
- {"printable", P_BOOL, P_LOCAL, &sDefault.bPrint_ok, NULL, NULL, 0, {0}},
- {"postscript", P_BOOL, P_LOCAL, &sDefault.bPostscript, NULL, NULL, FLAG_PRINT, {0}},
- {"printing", P_ENUM, P_LOCAL, &sDefault.iPrinting, NULL, enum_printing,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"print command", P_STRING, P_LOCAL, &sDefault.szPrintcommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"lpq command", P_STRING, P_LOCAL, &sDefault.szLpqcommand, NULL, NULL, FLAG_PRINT | FLAG_GLOBAL,
- {0}},
- {"lprm command", P_STRING, P_LOCAL, &sDefault.szLprmcommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"lppause command", P_STRING, P_LOCAL, &sDefault.szLppausecommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"lpresume command", P_STRING, P_LOCAL, &sDefault.szLpresumecommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"queuepause command", P_STRING, P_LOCAL, &sDefault.szQueuepausecommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
- {"queueresume command", P_STRING, P_LOCAL, &sDefault.szQueueresumecommand, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
-
- {"printer name", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, FLAG_PRINT, {0}},
- {"printer", P_STRING, P_LOCAL, &sDefault.szPrintername, NULL, NULL, 0, {0}},
- {"printer driver", P_STRING, P_LOCAL, &sDefault.szPrinterDriver, NULL, NULL, FLAG_PRINT, {0}},
- {"printer driver location", P_STRING, P_LOCAL, &sDefault.szPrinterDriverLocation, NULL, NULL,
- FLAG_PRINT | FLAG_GLOBAL, {0}},
-
-
- PARM_SEPARATOR ("Filename Handling"),
- {"strip dot", P_BOOL, P_GLOBAL, &Globals.bStripDot, NULL, NULL, 0, {0}},
- {"character set", P_STRING, P_GLOBAL, &Globals.szCharacterSet, handle_character_set, NULL, 0,
- {0}},
- {"mangled stack", P_INTEGER, P_GLOBAL, &Globals.mangled_stack, NULL, NULL, 0, {0}},
- {"coding system", P_STRING, P_GLOBAL, &Globals.szCodingSystem, handle_coding_system, NULL, 0,
- {0}},
- {"client code page", P_INTEGER, P_GLOBAL, &Globals.client_code_page, NULL, NULL, 0, {0}},
- {"default case", P_ENUM, P_LOCAL, &sDefault.iDefaultCase, NULL, enum_case, FLAG_SHARE, {0}},
- {"case sensitive", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, 0, {0}},
- {"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"mangle case", P_BOOL, P_LOCAL, &sDefault.bCaseMangle, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"delete veto files", P_BOOL, P_LOCAL, &sDefault.bDeleteVetoFiles, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"veto files", P_STRING, P_LOCAL, &sDefault.szVetoFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"hide files", P_STRING, P_LOCAL, &sDefault.szHideFiles, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"veto oplock files", P_STRING, P_LOCAL, &sDefault.szVetoOplockFiles, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"mangled names", P_BOOL, P_LOCAL, &sDefault.bMangledNames, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"stat cache", P_BOOL, P_GLOBAL, &Globals.bStatCache, NULL, NULL, 0, {0}},
-
- PARM_SEPARATOR ("Domain Options"),
- {"domain groups", P_STRING, P_GLOBAL, &Globals.szDomainGroups, NULL, NULL, 0, {0}},
- {"domain admin group", P_STRING, P_GLOBAL, &Globals.szDomainAdminGroup, NULL, NULL, 0, {0}},
- {"domain guest group", P_STRING, P_GLOBAL, &Globals.szDomainGuestGroup, NULL, NULL, 0, {0}},
- {"domain admin users", P_STRING, P_GLOBAL, &Globals.szDomainAdminUsers, NULL, NULL, 0, {0}},
- {"domain guest users", P_STRING, P_GLOBAL, &Globals.szDomainGuestUsers, NULL, NULL, 0, {0}},
-#ifdef USING_GROUPNAME_MAP
- {"groupname map", P_STRING, P_GLOBAL, &Globals.szGroupnameMap, NULL, NULL, 0, {0}},
-#endif /* USING_GROUPNAME_MAP */
- {"machine password timeout", P_INTEGER, P_GLOBAL, &Globals.machine_password_timeout, NULL, NULL,
- 0, {0}},
-
- PARM_SEPARATOR ("Logon Options"),
- {"add user script", P_STRING, P_GLOBAL, &Globals.szAddUserScript, NULL, NULL, 0, {0}},
- {"delete user script", P_STRING, P_GLOBAL, &Globals.szDelUserScript, NULL, NULL, 0, {0}},
- {"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, 0, {0}},
- {"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, 0, {0}},
- {"logon drive", P_STRING, P_GLOBAL, &Globals.szLogonDrive, NULL, NULL, 0, {0}},
- {"logon home", P_STRING, P_GLOBAL, &Globals.szLogonHome, NULL, NULL, 0, {0}},
- {"domain logons", P_BOOL, P_GLOBAL, &Globals.bDomainLogons, NULL, NULL, 0, {0}},
-
- PARM_SEPARATOR ("Browse Options"),
- {"os level", P_INTEGER, P_GLOBAL, &Globals.os_level, NULL, NULL, FLAG_BASIC, {0}},
- {"lm announce", P_ENUM, P_GLOBAL, &Globals.lm_announce, NULL, enum_lm_announce, 0, {0}},
- {"lm interval", P_INTEGER, P_GLOBAL, &Globals.lm_interval, NULL, NULL, 0, {0}},
- {"preferred master", P_BOOL, P_GLOBAL, &Globals.bPreferredMaster, NULL, NULL, FLAG_BASIC, {0}},
- {"prefered master", P_BOOL, P_GLOBAL, &Globals.bPreferredMaster, NULL, NULL, 0, {0}},
- {"local master", P_BOOL, P_GLOBAL, &Globals.bLocalMaster, NULL, NULL, FLAG_BASIC, {0}},
- {"domain master", P_BOOL, P_GLOBAL, &Globals.bDomainMaster, NULL, NULL, FLAG_BASIC, {0}},
- {"browse list", P_BOOL, P_GLOBAL, &Globals.bBrowseList, NULL, NULL, 0, {0}},
- {"browseable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL,
- FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"browsable", P_BOOL, P_LOCAL, &sDefault.bBrowseable, NULL, NULL, 0, {0}},
-
- PARM_SEPARATOR ("WINS Options"),
- {"dns proxy", P_BOOL, P_GLOBAL, &Globals.bDNSproxy, NULL, NULL, 0, {0}},
- {"wins proxy", P_BOOL, P_GLOBAL, &Globals.bWINSproxy, NULL, NULL, 0, {0}},
- {"wins server", P_STRING, P_GLOBAL, &Globals.szWINSserver, NULL, NULL, FLAG_BASIC, {0}},
- {"wins support", P_BOOL, P_GLOBAL, &Globals.bWINSsupport, NULL, NULL, FLAG_BASIC, {0}},
-
- PARM_SEPARATOR ("Locking Options"),
- {"blocking locks", P_BOOL, P_LOCAL, &sDefault.bBlockingLocks, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"fake oplocks", P_BOOL, P_LOCAL, &sDefault.bFakeOplocks, NULL, NULL, FLAG_SHARE, {0}},
- {"kernel oplocks", P_BOOL, P_GLOBAL, &Globals.bKernelOplocks, NULL, NULL, FLAG_GLOBAL, {0}},
- {"locking", P_BOOL, P_LOCAL, &sDefault.bLocking, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"mangle locks", P_BOOL, P_LOCAL, &sDefault.bMangleLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"ole locking compatibility", P_BOOL, P_GLOBAL, &Globals.bOleLockingCompat, NULL, NULL,
- FLAG_GLOBAL, {0}},
- {"oplocks", P_BOOL, P_LOCAL, &sDefault.bOpLocks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"oplock break wait time", P_INTEGER, P_GLOBAL, &Globals.oplock_break_wait_time, NULL, NULL,
- FLAG_GLOBAL, {0}},
- {"oplock contention limit", P_INTEGER, P_LOCAL, &sDefault.iOplockContentionLimit, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"strict locking", P_BOOL, P_LOCAL, &sDefault.bStrictLocking, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"share modes", P_BOOL, P_LOCAL, &sDefault.bShareModes, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
-
-#ifdef WITH_LDAP
- PARM_SEPARATOR ("Ldap Options"),
- {"ldap server", P_STRING, P_GLOBAL, &Globals.szLdapServer, NULL, NULL, 0, {0}},
- {"ldap port", P_INTEGER, P_GLOBAL, &Globals.ldap_port, NULL, NULL, 0, {0}},
- {"ldap suffix", P_STRING, P_GLOBAL, &Globals.szLdapSuffix, NULL, NULL, 0, {0}},
- {"ldap filter", P_STRING, P_GLOBAL, &Globals.szLdapFilter, NULL, NULL, 0, {0}},
- {"ldap root", P_STRING, P_GLOBAL, &Globals.szLdapRoot, NULL, NULL, 0, {0}},
- {"ldap root passwd", P_STRING, P_GLOBAL, &Globals.szLdapRootPassword, NULL, NULL, 0, {0}},
-#endif /* WITH_LDAP */
-
-
- PARM_SEPARATOR ("Miscellaneous Options"),
- {"smbrun", P_STRING, P_GLOBAL, &Globals.szSmbrun, NULL, NULL, 0, {0}},
- {"config file", P_STRING, P_GLOBAL, &Globals.szConfigFile, NULL, NULL, FLAG_HIDE, {0}},
- {"preload", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, 0, {0}},
- {"auto services", P_STRING, P_GLOBAL, &Globals.szAutoServices, NULL, NULL, 0, {0}},
- {"lock dir", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, 0, {0}},
- {"lock directory", P_STRING, P_GLOBAL, &Globals.szLockDir, NULL, NULL, 0, {0}},
- {"default service", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, 0, {0}},
- {"default", P_STRING, P_GLOBAL, &Globals.szDefaultService, NULL, NULL, 0, {0}},
- {"message command", P_STRING, P_GLOBAL, &Globals.szMsgCommand, NULL, NULL, 0, {0}},
- {"dfree command", P_STRING, P_GLOBAL, &Globals.szDfree, NULL, NULL, 0, {0}},
- {"valid chars", P_STRING, P_GLOBAL, &Globals.szValidChars, handle_valid_chars, NULL, 0, {0}},
- {"remote announce", P_STRING, P_GLOBAL, &Globals.szRemoteAnnounce, NULL, NULL, 0, {0}},
- {"remote browse sync", P_STRING, P_GLOBAL, &Globals.szRemoteBrowseSync, NULL, NULL, 0, {0}},
- {"socket address", P_STRING, P_GLOBAL, &Globals.szSocketAddress, NULL, NULL, 0, {0}},
- {"homedir map", P_STRING, P_GLOBAL, &Globals.szNISHomeMapName, NULL, NULL, 0, {0}},
- {"time offset", P_INTEGER, P_GLOBAL, &extra_time_offset, NULL, NULL, 0, {0}},
- {"unix realname", P_BOOL, P_GLOBAL, &Globals.bUnixRealname, NULL, NULL, 0, {0}},
- {"NIS homedir", P_BOOL, P_GLOBAL, &Globals.bNISHomeMap, NULL, NULL, 0, {0}},
- {"-valid", P_BOOL, P_LOCAL, &sDefault.valid, NULL, NULL, FLAG_HIDE, {0}},
- {"copy", P_STRING, P_LOCAL, &sDefault.szCopy, handle_copy, NULL, FLAG_HIDE, {0}},
- {"include", P_STRING, P_LOCAL, &sDefault.szInclude, handle_include, NULL, FLAG_HIDE, {0}},
- {"exec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT, {0}},
- {"preexec", P_STRING, P_LOCAL, &sDefault.szPreExec, NULL, NULL, 0, {0}},
- {"postexec", P_STRING, P_LOCAL, &sDefault.szPostExec, NULL, NULL, FLAG_SHARE | FLAG_PRINT, {0}},
- {"root preexec", P_STRING, P_LOCAL, &sDefault.szRootPreExec, NULL, NULL,
- FLAG_SHARE | FLAG_PRINT, {0}},
- {"root postexec", P_STRING, P_LOCAL, &sDefault.szRootPostExec, NULL, NULL,
- FLAG_SHARE | FLAG_PRINT, {0}},
- {"available", P_BOOL, P_LOCAL, &sDefault.bAvailable, NULL, NULL,
- FLAG_BASIC | FLAG_SHARE | FLAG_PRINT, {0}},
- {"volume", P_STRING, P_LOCAL, &sDefault.volume, NULL, NULL, FLAG_SHARE, {0}},
- {"fstype", P_STRING, P_LOCAL, &sDefault.fstype, NULL, NULL, FLAG_SHARE, {0}},
- {"set directory", P_BOOLREV, P_LOCAL, &sDefault.bNo_set_dir, NULL, NULL, FLAG_SHARE, {0}},
- {"wide links", P_BOOL, P_LOCAL, &sDefault.bWidelinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"follow symlinks", P_BOOL, P_LOCAL, &sDefault.bSymlinks, NULL, NULL, FLAG_SHARE | FLAG_GLOBAL,
- {0}},
- {"dont descend", P_STRING, P_LOCAL, &sDefault.szDontdescend, NULL, NULL, FLAG_SHARE, {0}},
- {"magic script", P_STRING, P_LOCAL, &sDefault.szMagicScript, NULL, NULL, FLAG_SHARE, {0}},
- {"magic output", P_STRING, P_LOCAL, &sDefault.szMagicOutput, NULL, NULL, FLAG_SHARE, {0}},
- {"delete readonly", P_BOOL, P_LOCAL, &sDefault.bDeleteReadonly, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"dos filetimes", P_BOOL, P_LOCAL, &sDefault.bDosFiletimes, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"dos filetime resolution", P_BOOL, P_LOCAL, &sDefault.bDosFiletimeResolution, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
-
- {"fake directory create times", P_BOOL, P_LOCAL, &sDefault.bFakeDirCreateTimes, NULL, NULL,
- FLAG_SHARE | FLAG_GLOBAL, {0}},
- {"panic action", P_STRING, P_GLOBAL, &Globals.szPanicAction, NULL, NULL, 0, {0}},
-
- {NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0, {0}}
-};
-
-
-
-/***************************************************************************
-Initialise the global parameter structure.
-***************************************************************************/
-static void
-init_globals (void)
-{
- static BOOL done_init = False;
- fstring s;
-
- if (!done_init)
- {
- int i;
- memset ((void *) &Globals, '\0', sizeof (Globals));
-
- for (i = 0; parm_table[i].label; i++)
- if ((parm_table[i].type == P_STRING ||
- parm_table[i].type == P_USTRING) && parm_table[i].ptr)
- string_init (parm_table[i].ptr, "");
-
- string_set (&sDefault.szGuestaccount, GUEST_ACCOUNT);
- string_set (&sDefault.szPrinterDriver, "NULL");
- string_set (&sDefault.fstype, FSTYPE_STRING);
-
- done_init = True;
- }
-
-
- DEBUG (3, ("Initialising global parameters\n"));
-
- string_set (&Globals.szWorkGroup, WORKGROUP);
- string_set (&Globals.szPrintcapname, PRINTCAP_NAME);
- string_set (&Globals.szDriverFile, DRIVERFILE);
- string_set (&Globals.szRootdir, "/");
- string_set (&Globals.szSocketAddress, "0.0.0.0");
- string_set (&Globals.szServerString, "Samba " VERSION);
- slprintf (s, sizeof (s) - 1, "%d.%d", DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION);
- string_set (&Globals.szAnnounceVersion, s);
-
- pstrcpy (user_socket_options, DEFAULT_SOCKET_OPTIONS);
-
- string_set (&Globals.szLogonDrive, "");
- /* %N is the NIS auto.home server if -DAUTOHOME is used, else same as %L */
- string_set (&Globals.szLogonHome, "\\\\%N\\%U");
- string_set (&Globals.szLogonPath, "\\\\%N\\%U\\profile");
-
- string_set (&Globals.szNameResolveOrder, "lmhosts host wins bcast");
-
- Globals.bLoadPrinters = True;
- Globals.bUseRhosts = False;
- Globals.max_packet = 65535;
- Globals.mangled_stack = 50;
- Globals.max_xmit = 65535;
- Globals.max_mux = 50; /* This is *needed* for profile support. */
- Globals.lpqcachetime = 10;
- Globals.pwordlevel = 0;
- Globals.unamelevel = 0;
- Globals.deadtime = 0;
- Globals.max_log_size = 5000;
- Globals.max_open_files = MAX_OPEN_FILES;
- Globals.maxprotocol = PROTOCOL_NT1;
- Globals.security = SEC_USER;
- Globals.bEncryptPasswords = False;
- Globals.bUpdateEncrypt = False;
- Globals.bReadRaw = True;
- Globals.bWriteRaw = True;
- Globals.bReadPrediction = False;
- Globals.bReadbmpx = False;
- Globals.bNullPasswords = False;
- Globals.bStripDot = False;
- Globals.syslog = 1;
- Globals.bSyslogOnly = False;
- Globals.bTimestampLogs = True;
- Globals.os_level = 0;
- Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */
- Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */
- Globals.min_wins_ttl = 60 * 60 * 6; /* 6 hours default. */
- Globals.machine_password_timeout = 60 * 60 * 24 * 7; /* 7 days default. */
- Globals.change_notify_timeout = 60; /* 1 minute default. */
- Globals.ReadSize = 16 * 1024;
- Globals.lm_announce = 2; /* = Auto: send only if LM clients found */
- Globals.lm_interval = 60;
- Globals.shmem_size = SHMEM_SIZE;
- Globals.stat_cache_size = 50; /* Number of stat translations we'll keep */
- Globals.announce_as = ANNOUNCE_AS_NT_SERVER;
- Globals.bUnixRealname = False;
-#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
- Globals.bNISHomeMap = False;
-#ifdef WITH_NISPLUS_HOME
- string_set (&Globals.szNISHomeMapName, "auto_home.org_dir");
-#else
- string_set (&Globals.szNISHomeMapName, "auto.home");
-#endif
-#endif
- Globals.client_code_page = DEFAULT_CLIENT_CODE_PAGE;
- Globals.bTimeServer = False;
- Globals.bBindInterfacesOnly = False;
- Globals.bUnixPasswdSync = False;
- Globals.bPasswdChatDebug = False;
- Globals.bOleLockingCompat = True;
- Globals.bNTSmbSupport = True; /* Do NT SMB's by default. */
- Globals.bNTPipeSupport = True; /* Do NT pipes by default. */
- Globals.bNTAclSupport = True; /* Use NT ACLs by default. */
- Globals.bStatCache = True; /* use stat cache by default */
- Globals.bRestrictAnonymous = False;
- Globals.map_to_guest = 0; /* By Default, "Never" */
- Globals.min_passwd_length = MINPASSWDLENGTH; /* By Default, 5. */
- Globals.oplock_break_wait_time = 10; /* By Default, 10 msecs. */
-
-#ifdef WITH_LDAP
- /* default values for ldap */
- string_set (&Globals.szLdapServer, "localhost");
- Globals.ldap_port = 389;
-#endif /* WITH_LDAP */
-
-#ifdef WITH_SSL
- Globals.sslVersion = SMB_SSL_V23;
- string_set (&Globals.sslHostsRequire, "");
- string_set (&Globals.sslHostsResign, "");
- string_set (&Globals.sslCaCertDir, "");
- string_set (&Globals.sslCaCertFile, "");
- string_set (&Globals.sslCert, "");
- string_set (&Globals.sslPrivKey, "");
- string_set (&Globals.sslClientCert, "");
- string_set (&Globals.sslClientPrivKey, "");
- string_set (&Globals.sslCiphers, "");
- Globals.sslEnabled = False;
- Globals.sslReqClientCert = False;
- Globals.sslReqServerCert = False;
- Globals.sslCompatibility = False;
-#endif /* WITH_SSL */
-
- /* these parameters are set to defaults that are more appropriate
- for the increasing samba install base:
-
- as a member of the workgroup, that will possibly become a
- _local_ master browser (lm = True). this is opposed to a forced
- local master browser startup (pm = True).
-
- doesn't provide WINS server service by default (wsupp = False),
- and doesn't provide domain master browser services by default, either.
-
- */
-
- Globals.bPreferredMaster = False;
- Globals.bLocalMaster = True;
- Globals.bDomainMaster = False;
- Globals.bDomainLogons = False;
- Globals.bBrowseList = True;
- Globals.bWINSsupport = False;
- Globals.bWINSproxy = False;
-
- Globals.bDNSproxy = True;
-
- /*
- * smbd will check at runtime to see if this value
- * will really be used or not.
- */
- Globals.bKernelOplocks = True;
-
- Globals.bAllowTrustedDomains = True;
-
- /*
- * This must be done last as it checks the value in
- * client_code_page.
- */
-
- interpret_coding_system (KANJI);
-}
-
-#if 0
-/***************************************************************************
-check if a string is initialised and if not then initialise it
-***************************************************************************/
-static void
-string_initial (char **s, char *v)
-{
- if (!*s || !**s)
- string_init (s, v);
-}
-
-#else
-#define init_locals()
-#endif /* 0 */
-
-static size_t
-size_max (size_t a, size_t b)
-{
- return (a > b) ? a : b;
-}
-
-/******************************************************************* a
-convenience routine to grab string parameters into a rotating buffer,
-and run standard_sub_basic on them. The buffers can be written to by
-callers without affecting the source string.
-********************************************************************/
-static char *
-lp_string (const char *s)
-{
- static char *bufs[10];
- static int buflen[10];
- static int next = -1;
- char *ret;
- int i;
- int len = s ? strlen (s) : 0;
-
- if (next == -1)
- {
- /* initialisation */
- for (i = 0; i < 10; i++)
- {
- bufs[i] = NULL;
- buflen[i] = 0;
- }
- next = 0;
- }
-
- len = size_max (len + 100, sizeof (pstring)); /* the +100 is for some
- substitution room */
-
- if (buflen[next] != len)
- {
- buflen[next] = len;
- if (bufs[next])
- free (bufs[next]);
- bufs[next] = (char *) malloc (len);
- if (!bufs[next])
- {
- DEBUG (0, ("out of memory in lp_string()"));
- exit (1);
- }
- }
-
- ret = &bufs[next][0];
- next = (next + 1) % 10;
-
- if (!s)
- *ret = 0;
- else
- StrCpy (ret, s);
-
- trim_string (ret, "\"", "\"");
-
- standard_sub_basic (ret);
- return (ret);
-}
-
-
-/*
- In this section all the functions that are used to access the
- parameters from the rest of the program are defined
- */
-
-#define FN_GLOBAL_STRING(fn_name,ptr) \
- char *fn_name(void) {return(lp_string(*(char **)(ptr) ? *(char **)(ptr) : ""));}
-#define FN_GLOBAL_BOOL(fn_name,ptr) \
- BOOL fn_name(void) {return(*(BOOL *)(ptr));}
-#define FN_GLOBAL_CHAR(fn_name,ptr) \
- char fn_name(void) {return(*(char *)(ptr));}
-#define FN_GLOBAL_INTEGER(fn_name,ptr) \
- int fn_name(void) {return(*(int *)(ptr));}
-
-#define FN_LOCAL_STRING(fn_name,val) \
- char *fn_name(int i) {return(lp_string((LP_SNUM_OK(i)&&pSERVICE(i)->val)?pSERVICE(i)->val : sDefault.val));}
-#define FN_LOCAL_BOOL(fn_name,val) \
- BOOL fn_name(int i) {return(LP_SNUM_OK(i)? pSERVICE(i)->val : sDefault.val);}
-#define FN_LOCAL_CHAR(fn_name,val) \
- char fn_name(int i) {return(LP_SNUM_OK(i)? pSERVICE(i)->val : sDefault.val);}
-#define FN_LOCAL_INTEGER(fn_name,val) \
- int fn_name(int i) {return(LP_SNUM_OK(i)? pSERVICE(i)->val : sDefault.val);}
-
-FN_GLOBAL_STRING (lp_logfile, &Globals.szLogFile)
-FN_GLOBAL_STRING (lp_configfile, &Globals.szConfigFile)
-FN_GLOBAL_STRING (lp_serverstring, &Globals.szServerString)
-FN_GLOBAL_STRING (lp_printcapname, &Globals.szPrintcapname)
-FN_GLOBAL_STRING (lp_lockdir, &Globals.szLockDir)
-FN_GLOBAL_STRING (lp_rootdir, &Globals.szRootdir)
-FN_GLOBAL_STRING (lp_defaultservice, &Globals.szDefaultService)
-FN_GLOBAL_STRING (lp_msg_command, &Globals.szMsgCommand)
-FN_GLOBAL_STRING (lp_hosts_equiv, &Globals.szHostsEquiv)
-FN_GLOBAL_STRING (lp_auto_services, &Globals.szAutoServices)
-FN_GLOBAL_STRING (lp_passwordserver, &Globals.szPasswordServer)
-FN_GLOBAL_STRING (lp_name_resolve_order, &Globals.szNameResolveOrder)
-FN_GLOBAL_STRING (lp_workgroup, &Globals.szWorkGroup)
-FN_GLOBAL_STRING (lp_username_map, &Globals.szUsernameMap)
-#ifdef USING_GROUPNAME_MAP
- FN_GLOBAL_STRING (lp_groupname_map, &Globals.szGroupnameMap)
-#endif /* USING_GROUPNAME_MAP */
- FN_GLOBAL_STRING (lp_remote_announce, &Globals.szRemoteAnnounce)
-FN_GLOBAL_STRING (lp_remote_browse_sync, &Globals.szRemoteBrowseSync)
-FN_GLOBAL_STRING (lp_wins_server, &Globals.szWINSserver)
-FN_GLOBAL_STRING (lp_interfaces, &Globals.szInterfaces)
-FN_GLOBAL_STRING (lp_socket_address, &Globals.szSocketAddress)
-FN_GLOBAL_STRING (lp_nis_home_map_name, &Globals.szNISHomeMapName)
-#if 0
- static FN_GLOBAL_STRING (lp_announce_version, &Globals.szAnnounceVersion)
-#endif /* 0 */
-FN_GLOBAL_STRING (lp_netbios_aliases, &Globals.szNetbiosAliases)
-FN_GLOBAL_STRING (lp_driverfile, &Globals.szDriverFile)
-FN_GLOBAL_STRING (lp_panic_action, &Globals.szPanicAction)
-FN_GLOBAL_STRING (lp_domain_groups, &Globals.szDomainGroups)
-FN_GLOBAL_STRING (lp_domain_admin_group, &Globals.szDomainAdminGroup)
-FN_GLOBAL_STRING (lp_domain_guest_group, &Globals.szDomainGuestGroup)
-FN_GLOBAL_STRING (lp_domain_admin_users, &Globals.szDomainAdminUsers)
-FN_GLOBAL_STRING (lp_domain_guest_users, &Globals.szDomainGuestUsers)
-#ifdef WITH_LDAP
-FN_GLOBAL_STRING (lp_ldap_server, &Globals.szLdapServer);
-FN_GLOBAL_STRING (lp_ldap_suffix, &Globals.szLdapSuffix);
-FN_GLOBAL_STRING (lp_ldap_filter, &Globals.szLdapFilter);
-FN_GLOBAL_STRING (lp_ldap_root, &Globals.szLdapRoot);
-FN_GLOBAL_STRING (lp_ldap_rootpasswd, &Globals.szLdapRootPassword);
-#endif /* WITH_LDAP */
-
-#ifdef WITH_SSL
-FN_GLOBAL_INTEGER (lp_ssl_version, &Globals.sslVersion);
-FN_GLOBAL_STRING (lp_ssl_hosts, &Globals.sslHostsRequire);
-FN_GLOBAL_STRING (lp_ssl_hosts_resign, &Globals.sslHostsResign);
-FN_GLOBAL_STRING (lp_ssl_cacertdir, &Globals.sslCaCertDir);
-FN_GLOBAL_STRING (lp_ssl_cacertfile, &Globals.sslCaCertFile);
-FN_GLOBAL_STRING (lp_ssl_cert, &Globals.sslCert);
-FN_GLOBAL_STRING (lp_ssl_privkey, &Globals.sslPrivKey);
-FN_GLOBAL_STRING (lp_ssl_client_cert, &Globals.sslClientCert);
-FN_GLOBAL_STRING (lp_ssl_client_privkey, &Globals.sslClientPrivKey);
-FN_GLOBAL_STRING (lp_ssl_ciphers, &Globals.sslCiphers);
-FN_GLOBAL_BOOL (lp_ssl_enabled, &Globals.sslEnabled);
-FN_GLOBAL_BOOL (lp_ssl_reqClientCert, &Globals.sslReqClientCert);
-FN_GLOBAL_BOOL (lp_ssl_reqServerCert, &Globals.sslReqServerCert);
-FN_GLOBAL_BOOL (lp_ssl_compatibility, &Globals.sslCompatibility);
-#endif /* WITH_SSL */
-
-FN_GLOBAL_BOOL (lp_dns_proxy, &Globals.bDNSproxy)
-FN_GLOBAL_BOOL (lp_wins_support, &Globals.bWINSsupport)
-FN_GLOBAL_BOOL (lp_we_are_a_wins_server, &Globals.bWINSsupport)
-FN_GLOBAL_BOOL (lp_wins_proxy, &Globals.bWINSproxy)
-FN_GLOBAL_BOOL (lp_local_master, &Globals.bLocalMaster)
-FN_GLOBAL_BOOL (lp_domain_master, &Globals.bDomainMaster)
-FN_GLOBAL_BOOL (lp_domain_logons, &Globals.bDomainLogons)
-FN_GLOBAL_BOOL (lp_preferred_master, &Globals.bPreferredMaster)
-FN_GLOBAL_BOOL (lp_use_rhosts, &Globals.bUseRhosts)
-FN_GLOBAL_BOOL (lp_readprediction, &Globals.bReadPrediction)
-FN_GLOBAL_BOOL (lp_readbmpx, &Globals.bReadbmpx)
-FN_GLOBAL_BOOL (lp_readraw, &Globals.bReadRaw)
-FN_GLOBAL_BOOL (lp_writeraw, &Globals.bWriteRaw)
-FN_GLOBAL_BOOL (lp_null_passwords, &Globals.bNullPasswords)
-FN_GLOBAL_BOOL (lp_strip_dot, &Globals.bStripDot)
-FN_GLOBAL_BOOL (lp_encrypted_passwords, &Globals.bEncryptPasswords)
-FN_GLOBAL_BOOL (lp_update_encrypted, &Globals.bUpdateEncrypt)
-FN_GLOBAL_BOOL (lp_syslog_only, &Globals.bSyslogOnly)
-FN_GLOBAL_BOOL (lp_timestamp_logs, &Globals.bTimestampLogs)
-FN_GLOBAL_BOOL (lp_browse_list, &Globals.bBrowseList)
-FN_GLOBAL_BOOL (lp_unix_realname, &Globals.bUnixRealname)
-FN_GLOBAL_BOOL (lp_nis_home_map, &Globals.bNISHomeMap)
-#if 0
- static FN_GLOBAL_BOOL (lp_time_server, &Globals.bTimeServer)
-#endif /* 0 */
-FN_GLOBAL_BOOL (lp_bind_interfaces_only, &Globals.bBindInterfacesOnly)
-FN_GLOBAL_BOOL (lp_passwd_chat_debug, &Globals.bPasswdChatDebug)
-FN_GLOBAL_BOOL (lp_ole_locking_compat, &Globals.bOleLockingCompat)
-FN_GLOBAL_BOOL (lp_nt_smb_support, &Globals.bNTSmbSupport)
-FN_GLOBAL_BOOL (lp_nt_pipe_support, &Globals.bNTPipeSupport)
-FN_GLOBAL_BOOL (lp_nt_acl_support, &Globals.bNTAclSupport)
-FN_GLOBAL_BOOL (lp_stat_cache, &Globals.bStatCache)
-FN_GLOBAL_BOOL (lp_allow_trusted_domains, &Globals.bAllowTrustedDomains)
-FN_GLOBAL_BOOL (lp_restrict_anonymous, &Globals.bRestrictAnonymous)
-FN_GLOBAL_INTEGER (lp_os_level, &Globals.os_level)
-FN_GLOBAL_INTEGER (lp_max_ttl, &Globals.max_ttl)
-FN_GLOBAL_INTEGER (lp_max_wins_ttl, &Globals.max_wins_ttl)
-FN_GLOBAL_INTEGER (lp_min_wins_ttl, &Globals.min_wins_ttl)
-FN_GLOBAL_INTEGER (lp_maxxmit, &Globals.max_xmit)
-FN_GLOBAL_INTEGER (lp_maxmux, &Globals.max_mux)
-FN_GLOBAL_INTEGER (lp_passwordlevel, &Globals.pwordlevel)
-FN_GLOBAL_INTEGER (lp_usernamelevel, &Globals.unamelevel)
-FN_GLOBAL_INTEGER (lp_readsize, &Globals.ReadSize)
-FN_GLOBAL_INTEGER (lp_deadtime, &Globals.deadtime)
-FN_GLOBAL_INTEGER (lp_maxprotocol, &Globals.maxprotocol)
-FN_GLOBAL_INTEGER (lp_security, &Globals.security)
-FN_GLOBAL_INTEGER (lp_maxdisksize, &Globals.maxdisksize)
-FN_GLOBAL_INTEGER (lp_client_code_page, &Globals.client_code_page)
-#if 0
- static FN_GLOBAL_INTEGER (lp_announce_as, &Globals.announce_as)
-#endif
-FN_GLOBAL_INTEGER (lp_lm_announce, &Globals.lm_announce)
-FN_GLOBAL_INTEGER (lp_lm_interval, &Globals.lm_interval)
-FN_GLOBAL_INTEGER (lp_machine_password_timeout, &Globals.machine_password_timeout)
-FN_GLOBAL_INTEGER (lp_change_notify_timeout, &Globals.change_notify_timeout)
-FN_GLOBAL_INTEGER (lp_stat_cache_size, &Globals.stat_cache_size)
-FN_GLOBAL_INTEGER (lp_map_to_guest, &Globals.map_to_guest)
-FN_GLOBAL_INTEGER (lp_min_passwd_length, &Globals.min_passwd_length)
-FN_GLOBAL_INTEGER (lp_oplock_break_wait_time, &Globals.oplock_break_wait_time)
-#ifdef WITH_LDAP
-FN_GLOBAL_INTEGER (lp_ldap_port, &Globals.ldap_port)
-#endif /* WITH_LDAP */
-FN_LOCAL_STRING (lp_preexec, szPreExec)
-FN_LOCAL_STRING (lp_postexec, szPostExec)
-FN_LOCAL_STRING (lp_rootpreexec, szRootPreExec)
-FN_LOCAL_STRING (lp_rootpostexec, szRootPostExec)
-FN_LOCAL_STRING (lp_servicename, szService)
-FN_LOCAL_STRING (lp_pathname, szPath)
-FN_LOCAL_STRING (lp_dontdescend, szDontdescend)
-FN_LOCAL_STRING (lp_username, szUsername)
-FN_LOCAL_STRING (lp_guestaccount, szGuestaccount)
-FN_LOCAL_STRING (lp_invalid_users, szInvalidUsers)
-FN_LOCAL_STRING (lp_valid_users, szValidUsers)
-FN_LOCAL_STRING (lp_admin_users, szAdminUsers)
-#if 0
-FN_LOCAL_STRING (lp_printcommand, szPrintcommand)
-FN_LOCAL_STRING (lp_lpqcommand, szLpqcommand)
-FN_LOCAL_STRING (lp_lprmcommand, szLprmcommand)
-FN_LOCAL_STRING (lp_lppausecommand, szLppausecommand)
-FN_LOCAL_STRING (lp_lpresumecommand, szLpresumecommand)
-FN_LOCAL_STRING (lp_queuepausecommand, szQueuepausecommand)
-FN_LOCAL_STRING (lp_queueresumecommand, szQueueresumecommand)
-FN_LOCAL_STRING (lp_printername, szPrintername)
-FN_LOCAL_STRING (lp_printerdriver, szPrinterDriver)
-#endif /* 0 */
-FN_LOCAL_STRING (lp_hostsallow, szHostsallow)
-FN_LOCAL_STRING (lp_hostsdeny, szHostsdeny)
-FN_LOCAL_STRING (lp_magicscript, szMagicScript)
-FN_LOCAL_STRING (lp_magicoutput, szMagicOutput)
-FN_LOCAL_STRING (lp_comment, comment)
-FN_LOCAL_STRING (lp_force_user, force_user)
-FN_LOCAL_STRING (lp_force_group, force_group)
-FN_LOCAL_STRING (lp_readlist, readlist)
-FN_LOCAL_STRING (lp_writelist, writelist)
-FN_LOCAL_STRING (lp_fstype, fstype)
-#if 0
- static FN_LOCAL_STRING (lp_volume, volume)
-#endif
-FN_LOCAL_STRING (lp_mangled_map, szMangledMap)
-FN_LOCAL_STRING (lp_veto_files, szVetoFiles)
-FN_LOCAL_STRING (lp_hide_files, szHideFiles)
-FN_LOCAL_STRING (lp_veto_oplocks, szVetoOplockFiles)
-FN_LOCAL_BOOL (lp_revalidate, bRevalidate)
-FN_LOCAL_BOOL (lp_casesensitive, bCaseSensitive)
-FN_LOCAL_BOOL (lp_preservecase, bCasePreserve)
-FN_LOCAL_BOOL (lp_shortpreservecase, bShortCasePreserve)
-FN_LOCAL_BOOL (lp_casemangle, bCaseMangle)
-FN_LOCAL_BOOL (lp_status, status)
-FN_LOCAL_BOOL (lp_hide_dot_files, bHideDotFiles)
-FN_LOCAL_BOOL (lp_browseable, bBrowseable)
-FN_LOCAL_BOOL (lp_readonly, bRead_only)
-FN_LOCAL_BOOL (lp_no_set_dir, bNo_set_dir)
-FN_LOCAL_BOOL (lp_guest_ok, bGuest_ok)
-FN_LOCAL_BOOL (lp_guest_only, bGuest_only)
-FN_LOCAL_BOOL (lp_print_ok, bPrint_ok)
-FN_LOCAL_BOOL (lp_postscript, bPostscript)
-FN_LOCAL_BOOL (lp_map_hidden, bMap_hidden)
-FN_LOCAL_BOOL (lp_map_archive, bMap_archive)
-FN_LOCAL_BOOL (lp_locking, bLocking)
-FN_LOCAL_BOOL (lp_strict_locking, bStrictLocking)
-FN_LOCAL_BOOL (lp_share_modes, bShareModes)
-FN_LOCAL_BOOL (lp_oplocks, bOpLocks)
-FN_LOCAL_BOOL (lp_onlyuser, bOnlyUser)
-FN_LOCAL_BOOL (lp_manglednames, bMangledNames)
-FN_LOCAL_BOOL (lp_widelinks, bWidelinks)
-FN_LOCAL_BOOL (lp_symlinks, bSymlinks)
-FN_LOCAL_BOOL (lp_syncalways, bSyncAlways)
-FN_LOCAL_BOOL (lp_strict_sync, bStrictSync)
-FN_LOCAL_BOOL (lp_map_system, bMap_system)
-FN_LOCAL_BOOL (lp_delete_readonly, bDeleteReadonly)
-FN_LOCAL_BOOL (lp_fake_oplocks, bFakeOplocks)
-FN_LOCAL_BOOL (lp_recursive_veto_delete, bDeleteVetoFiles)
-FN_LOCAL_BOOL (lp_dos_filetimes, bDosFiletimes)
-FN_LOCAL_BOOL (lp_dos_filetime_resolution, bDosFiletimeResolution)
-FN_LOCAL_BOOL (lp_fake_dir_create_times, bFakeDirCreateTimes)
-FN_LOCAL_BOOL (lp_blocking_locks, bBlockingLocks)
-FN_LOCAL_BOOL (lp_mangle_locks, bMangleLocks)
-FN_LOCAL_INTEGER (lp_create_mode, iCreate_mask)
-FN_LOCAL_INTEGER (lp_force_create_mode, iCreate_force_mode)
-FN_LOCAL_INTEGER (lp_dir_mode, iDir_mask)
-FN_LOCAL_INTEGER (lp_force_dir_mode, iDir_force_mode)
-FN_LOCAL_INTEGER (lp_max_connections, iMaxConnections)
-FN_LOCAL_INTEGER (lp_defaultcase, iDefaultCase)
-FN_LOCAL_INTEGER (lp_minprintspace, iMinPrintSpace)
-FN_LOCAL_INTEGER (lp_printing, iPrinting)
-FN_LOCAL_INTEGER (lp_oplock_contention_limit, iOplockContentionLimit)
-FN_LOCAL_CHAR (lp_magicchar, magic_char)
-/* local prototypes */
- static int strwicmp (const char *psz1, const char *psz2);
- static int map_parameter (const char *pszParmName);
- static BOOL set_boolean (BOOL * pb, const char *pszParmValue);
- static int getservicebyname (const char *pszServiceName, service * pserviceDest);
- static void copy_service (service * pserviceDest,
- service * pserviceSource, BOOL * pcopymapDest);
- static BOOL service_ok (int iService);
- static BOOL do_parameter (const char *pszParmName, const char *pszParmValue);
- static BOOL do_section (const char *pszSectionName);
- static void init_copymap (service * pservice);
-
-
-/***************************************************************************
-initialise a service to the defaults
-***************************************************************************/
- static void init_service (service * pservice)
-{
- memset ((char *) pservice, '\0', sizeof (service));
- copy_service (pservice, &sDefault, NULL);
-}
-
-
-/***************************************************************************
-free the dynamically allocated parts of a service struct
-***************************************************************************/
-static void
-free_service (service * pservice)
-{
- int i;
- if (!pservice)
- return;
-
- if (pservice->szService)
- DEBUG (5, ("free_service: Freeing service %s\n", pservice->szService));
-
- string_free (&pservice->szService);
- if (pservice->copymap)
- {
- free (pservice->copymap);
- pservice->copymap = NULL;
- }
-
- for (i = 0; parm_table[i].label; i++)
- if ((parm_table[i].type == P_STRING ||
- parm_table[i].type == P_USTRING) && parm_table[i].class == P_LOCAL)
- string_free ((char **) (((char *) pservice) + PTR_DIFF (parm_table[i].ptr, &sDefault)));
-}
-
-/***************************************************************************
-add a new service to the services array initialising it with the given
-service
-***************************************************************************/
-static int
-add_a_service (service * pservice, const char *name)
-{
- int i;
- service tservice;
- int num_to_alloc = iNumServices + 1;
-
- tservice = *pservice;
-
- /* it might already exist */
- if (name)
- {
- i = getservicebyname (name, NULL);
- if (i >= 0)
- return (i);
- }
-
- /* find an invalid one */
- for (i = 0; i < iNumServices; i++)
- if (!pSERVICE (i)->valid)
- break;
-
- /* if not, then create one */
- if (i == iNumServices)
- {
- ServicePtrs = (service **) Realloc (ServicePtrs, sizeof (service *) * num_to_alloc);
- if (ServicePtrs)
- pSERVICE (iNumServices) = (service *) malloc (sizeof (service));
-
- if (!ServicePtrs || !pSERVICE (iNumServices))
- return (-1);
-
- iNumServices++;
- }
- else
- free_service (pSERVICE (i));
-
- pSERVICE (i)->valid = True;
-
- init_service (pSERVICE (i));
- copy_service (pSERVICE (i), &tservice, NULL);
- if (name)
- string_set (&iSERVICE (i).szService, name);
-
- return (i);
-}
-
-/***************************************************************************
-add a new home service, with the specified home directory, defaults coming
-from service ifrom
-***************************************************************************/
-BOOL
-lp_add_home (const char *pszHomename, int iDefaultService, const char *pszHomedir)
-{
- int i = add_a_service (pSERVICE (iDefaultService), pszHomename);
-
- if (i < 0)
- return (False);
-
- if (!(*(iSERVICE (i).szPath)) || strequal (iSERVICE (i).szPath, lp_pathname (-1)))
- string_set (&iSERVICE (i).szPath, pszHomedir);
- if (!(*(iSERVICE (i).comment)))
- {
- pstring comment;
- slprintf (comment, sizeof (comment) - 1, "Home directory of %s", pszHomename);
- string_set (&iSERVICE (i).comment, comment);
- }
- iSERVICE (i).bAvailable = sDefault.bAvailable;
- iSERVICE (i).bBrowseable = sDefault.bBrowseable;
-
- DEBUG (3, ("adding home directory %s at %s\n", pszHomename, pszHomedir));
-
- return (True);
-}
-
-/***************************************************************************
-add a new service, based on an old one
-***************************************************************************/
-int
-lp_add_service (char *pszService, int iDefaultService)
-{
- return (add_a_service (pSERVICE (iDefaultService), pszService));
-}
-
-#if 0
-/***************************************************************************
-add the IPC service
-***************************************************************************/
-static BOOL
-lp_add_ipc (void)
-{
- pstring comment;
- int i = add_a_service (&sDefault, "IPC$");
-
- if (i < 0)
- return (False);
-
- slprintf (comment, sizeof (comment) - 1, "IPC Service (%s)", Globals.szServerString);
-
- string_set (&iSERVICE (i).szPath, tmpdir ());
- string_set (&iSERVICE (i).szUsername, "");
- string_set (&iSERVICE (i).comment, comment);
- string_set (&iSERVICE (i).fstype, "IPC");
- iSERVICE (i).status = False;
- iSERVICE (i).iMaxConnections = 0;
- iSERVICE (i).bAvailable = True;
- iSERVICE (i).bRead_only = True;
- iSERVICE (i).bGuest_only = False;
- iSERVICE (i).bGuest_ok = True;
- iSERVICE (i).bPrint_ok = False;
- iSERVICE (i).bBrowseable = sDefault.bBrowseable;
-
- DEBUG (3, ("adding IPC service\n"));
-
- return (True);
-}
-#endif /* 0 */
-
-/***************************************************************************
-Do a case-insensitive, whitespace-ignoring string compare.
-***************************************************************************/
-static int
-strwicmp (const char *psz1, const char *psz2)
-{
- /* if BOTH strings are NULL, return TRUE, if ONE is NULL return */
- /* appropriate value. */
- if (psz1 == psz2)
- return (0);
- else if (psz1 == NULL)
- return (-1);
- else if (psz2 == NULL)
- return (1);
-
- /* sync the strings on first non-whitespace */
- while (1)
- {
- while (isspace ((unsigned char) *psz1))
- psz1++;
- while (isspace ((unsigned char) *psz2))
- psz2++;
- if (toupper ((unsigned char) *psz1) != toupper ((unsigned char) *psz2) || *psz1 == '\0'
- || *psz2 == '\0')
- break;
- psz1++;
- psz2++;
- }
- return (*psz1 - *psz2);
-}
-
-/***************************************************************************
-Map a parameter's string representation to something we can use.
-Returns False if the parameter string is not recognised, else TRUE.
-***************************************************************************/
-static int
-map_parameter (const char *pszParmName)
-{
- int iIndex;
-
- if (*pszParmName == '-')
- return (-1);
-
- for (iIndex = 0; parm_table[iIndex].label; iIndex++)
- if (strwicmp (parm_table[iIndex].label, pszParmName) == 0)
- return (iIndex);
-
- DEBUG (0, ("Unknown parameter encountered: \"%s\"\n", pszParmName));
- return (-1);
-}
-
-
-/***************************************************************************
-Set a boolean variable from the text value stored in the passed string.
-Returns True in success, False if the passed string does not correctly
-represent a boolean.
-***************************************************************************/
-static BOOL
-set_boolean (BOOL * pb, const char *pszParmValue)
-{
- BOOL bRetval;
-
- bRetval = True;
- if (strwicmp (pszParmValue, "yes") == 0 ||
- strwicmp (pszParmValue, "true") == 0 || strwicmp (pszParmValue, "1") == 0)
- *pb = True;
- else if (strwicmp (pszParmValue, "no") == 0 ||
- strwicmp (pszParmValue, "False") == 0 || strwicmp (pszParmValue, "0") == 0)
- *pb = False;
- else
- {
- DEBUG (0, ("ERROR: Badly formed boolean in configuration file: \"%s\".\n", pszParmValue));
- bRetval = False;
- }
- return (bRetval);
-}
-
-/***************************************************************************
-Find a service by name. Otherwise works like get_service.
-***************************************************************************/
-static int
-getservicebyname (const char *pszServiceName, service * pserviceDest)
-{
- int iService;
-
- for (iService = iNumServices - 1; iService >= 0; iService--)
- if (VALID (iService) && strwicmp (iSERVICE (iService).szService, pszServiceName) == 0)
- {
- if (pserviceDest != NULL)
- copy_service (pserviceDest, pSERVICE (iService), NULL);
- break;
- }
-
- return (iService);
-}
-
-
-
-/***************************************************************************
-Copy a service structure to another
-
-If pcopymapDest is NULL then copy all fields
-***************************************************************************/
-static void
-copy_service (service * pserviceDest, service * pserviceSource, BOOL * pcopymapDest)
-{
- int i;
- BOOL bcopyall = (pcopymapDest == NULL);
-
- for (i = 0; parm_table[i].label; i++)
- if (parm_table[i].ptr && parm_table[i].class == P_LOCAL && (bcopyall || pcopymapDest[i]))
- {
- void *def_ptr = parm_table[i].ptr;
- void *src_ptr = ((char *) pserviceSource) + PTR_DIFF (def_ptr, &sDefault);
- void *dest_ptr = ((char *) pserviceDest) + PTR_DIFF (def_ptr, &sDefault);
-
- switch (parm_table[i].type)
- {
- case P_BOOL:
- case P_BOOLREV:
- *(BOOL *) dest_ptr = *(BOOL *) src_ptr;
- break;
-
- case P_INTEGER:
- case P_ENUM:
- case P_OCTAL:
- *(int *) dest_ptr = *(int *) src_ptr;
- break;
-
- case P_CHAR:
- *(char *) dest_ptr = *(char *) src_ptr;
- break;
-
- case P_STRING:
- string_set (dest_ptr, *(char **) src_ptr);
- break;
-
- case P_USTRING:
- string_set (dest_ptr, *(char **) src_ptr);
- strupper (*(char **) dest_ptr);
- break;
- default:
- break;
- }
- }
-
- if (bcopyall)
- {
- init_copymap (pserviceDest);
- if (pserviceSource->copymap)
- memcpy ((void *) pserviceDest->copymap,
- (void *) pserviceSource->copymap, sizeof (BOOL) * NUMPARAMETERS);
- }
-}
-
-/***************************************************************************
-Check a service for consistency. Return False if the service is in any way
-incomplete or faulty, else True.
-***************************************************************************/
-static BOOL
-service_ok (int iService)
-{
- BOOL bRetval;
-
- bRetval = True;
- if (iSERVICE (iService).szService[0] == '\0')
- {
- DEBUG (0, ("The following message indicates an internal error:\n"));
- DEBUG (0, ("No service name in service entry.\n"));
- bRetval = False;
- }
-
- /* The [printers] entry MUST be printable. I'm all for flexibility, but */
- /* I can't see why you'd want a non-printable printer service... */
- if (strwicmp (iSERVICE (iService).szService, PRINTERS_NAME) == 0)
- if (!iSERVICE (iService).bPrint_ok)
- {
- DEBUG (0, ("WARNING: [%s] service MUST be printable!\n",
- iSERVICE (iService).szService));
- iSERVICE (iService).bPrint_ok = True;
- }
-
- if (iSERVICE (iService).szPath[0] == '\0' &&
- strwicmp (iSERVICE (iService).szService, HOMES_NAME) != 0)
- {
- DEBUG (0, ("No path in service %s - using %s\n", iSERVICE (iService).szService, tmpdir ()));
- string_set (&iSERVICE (iService).szPath, tmpdir ());
- }
-
- /* If a service is flagged unavailable, log the fact at level 0. */
- if (!iSERVICE (iService).bAvailable)
- DEBUG (1, ("NOTE: Service %s is flagged unavailable.\n", iSERVICE (iService).szService));
-
- return (bRetval);
-}
-
-#if 0
-static struct file_lists
-{
- struct file_lists *next;
- char *name;
- time_t modtime;
-} *file_lists = NULL;
-
-/*******************************************************************
-keep a linked list of all config files so we know when one has changed
-it's date and needs to be reloaded
-********************************************************************/
-static void
-add_to_file_list (const char *fname)
-{
- struct file_lists *f = file_lists;
-
- while (f)
- {
- if (f->name && !strcmp (f->name, fname))
- break;
- f = f->next;
- }
-
- if (!f)
- {
- f = (struct file_lists *) malloc (sizeof (file_lists[0]));
- if (!f)
- return;
- f->next = file_lists;
- f->name = strdup (fname);
- if (!f->name)
- {
- free (f);
- return;
- }
- file_lists = f;
- }
-
- {
- pstring n2;
- pstrcpy (n2, fname);
- standard_sub_basic (n2);
- f->modtime = file_modtime (n2);
- }
-
-}
-
-
-/*******************************************************************
-check if a config file has changed date
-********************************************************************/
-BOOL
-lp_file_list_changed (void)
-{
- struct file_lists *f = file_lists;
- DEBUG (6, ("lp_file_list_changed()\n"));
-
- while (f)
- {
- pstring n2;
- time_t mod_time;
-
- pstrcpy (n2, f->name);
- standard_sub_basic (n2);
-
- DEBUGADD (6, ("file %s -> %s last mod_time: %s\n", f->name, n2, ctime (&f->modtime)));
-
- mod_time = file_modtime (n2);
-
- if (f->modtime != mod_time)
- {
- DEBUGADD (6, ("file %s modified: %s\n", n2, ctime (&mod_time)));
- f->modtime = mod_time;
- return (True);
- }
- f = f->next;
- }
- return (False);
-}
-#else
-#define add_to_file_list(x)
-#endif /* 0 */
-
-/***************************************************************************
- handle the interpretation of the coding system parameter
- *************************************************************************/
-static BOOL
-handle_coding_system (const char *pszParmValue, char **ptr)
-{
- string_set (ptr, pszParmValue);
- interpret_coding_system (pszParmValue);
- return (True);
-}
-
-/***************************************************************************
-handle the interpretation of the character set system parameter
-***************************************************************************/
-static BOOL
-handle_character_set (const char *pszParmValue, char **ptr)
-{
- string_set (ptr, pszParmValue);
- interpret_character_set (pszParmValue);
- return (True);
-}
-
-
-/***************************************************************************
-handle the valid chars lines
-***************************************************************************/
-static BOOL
-handle_valid_chars (const char *pszParmValue, char **ptr)
-{
- string_set (ptr, pszParmValue);
-
- /* A dependency here is that the parameter client code page must be
- set before this is called - as calling codepage_initialise()
- would overwrite the valid char lines.
- */
- codepage_initialise (lp_client_code_page ());
-
- add_char_string (pszParmValue);
- return (True);
-}
-
-
-/***************************************************************************
-handle the include operation
-***************************************************************************/
-static BOOL
-handle_include (const char *pszParmValue, char **ptr)
-{
- pstring fname;
- pstrcpy (fname, pszParmValue);
-
- add_to_file_list (fname);
-
- standard_sub_basic (fname);
-
- string_set (ptr, fname);
-
- if (file_exist (fname, NULL))
- return (pm_process (fname, do_section, do_parameter));
-
- DEBUG (2, ("Cannot find include file %s\n", fname));
-
- return (False);
-}
-
-
-/***************************************************************************
-handle the interpretation of the copy parameter
-***************************************************************************/
-static BOOL
-handle_copy (const char *pszParmValue, char **ptr)
-{
- BOOL bRetval;
- int iTemp;
- service serviceTemp;
-
- string_set (ptr, pszParmValue);
-
- init_service (&serviceTemp);
-
- bRetval = False;
-
- DEBUG (3, ("Copying service from service %s\n", pszParmValue));
-
- if ((iTemp = getservicebyname (pszParmValue, &serviceTemp)) >= 0)
- {
- if (iTemp == iServiceIndex)
- {
- DEBUG (0, ("Cannot copy service %s - unable to copy self!\n", pszParmValue));
- }
- else
- {
- copy_service (pSERVICE (iServiceIndex), &serviceTemp, iSERVICE (iServiceIndex).copymap);
- bRetval = True;
- }
- }
- else
- {
- DEBUG (0, ("Unable to copy service - source not found: %s\n", pszParmValue));
- bRetval = False;
- }
-
- free_service (&serviceTemp);
- return (bRetval);
-}
-
-
-/***************************************************************************
-initialise a copymap
-***************************************************************************/
-static void
-init_copymap (service * pservice)
-{
- size_t i;
- if (pservice->copymap)
- free (pservice->copymap);
- pservice->copymap = (BOOL *) malloc (sizeof (BOOL) * NUMPARAMETERS);
- if (!pservice->copymap)
- DEBUG (0, ("Couldn't allocate copymap!! (size %d)\n", (int) NUMPARAMETERS));
- else
- for (i = 0; i < NUMPARAMETERS; i++)
- pservice->copymap[i] = True;
-}
-
-#if 0
-/***************************************************************************
- return the local pointer to a parameter given the service number and the
- pointer into the default structure
-***************************************************************************/
-void *
-lp_local_ptr (int snum, void *ptr)
-{
- return (void *) (((char *) pSERVICE (snum)) + PTR_DIFF (ptr, &sDefault));
-}
-#endif /* 0 */
-
-/***************************************************************************
-Process a parameter for a particular service number. If snum < 0
-then assume we are in the globals
-***************************************************************************/
-BOOL
-lp_do_parameter (int snum, const char *pszParmName, const char *pszParmValue)
-{
- int parmnum, i;
- void *parm_ptr = NULL; /* where we are going to store the result */
- void *def_ptr = NULL;
-
- parmnum = map_parameter (pszParmName);
-
- if (parmnum < 0)
- {
- DEBUG (0, ("Ignoring unknown parameter \"%s\"\n", pszParmName));
- return (True);
- }
-
- if (parm_table[parmnum].flags & FLAG_DEPRECATED)
- {
- DEBUG (1, ("WARNING: The \"%s\"option is deprecated\n", pszParmName));
- }
-
- def_ptr = parm_table[parmnum].ptr;
-
- /* we might point at a service, the default service or a global */
- if (snum < 0)
- {
- parm_ptr = def_ptr;
- }
- else
- {
- if (parm_table[parmnum].class == P_GLOBAL)
- {
- DEBUG (0, ("Global parameter %s found in service section!\n", pszParmName));
- return (True);
- }
- parm_ptr = ((char *) pSERVICE (snum)) + PTR_DIFF (def_ptr, &sDefault);
- }
-
- if (snum >= 0)
- {
- if (!iSERVICE (snum).copymap)
- init_copymap (pSERVICE (snum));
-
- /* this handles the aliases - set the copymap for other entries with
- the same data pointer */
- for (i = 0; parm_table[i].label; i++)
- if (parm_table[i].ptr == parm_table[parmnum].ptr)
- iSERVICE (snum).copymap[i] = False;
- }
-
- /* if it is a special case then go ahead */
- if (parm_table[parmnum].special)
- {
- parm_table[parmnum].special (pszParmValue, (char **) parm_ptr);
- return (True);
- }
-
- /* now switch on the type of variable it is */
- switch (parm_table[parmnum].type)
- {
- case P_BOOL:
- set_boolean (parm_ptr, pszParmValue);
- break;
-
- case P_BOOLREV:
- set_boolean (parm_ptr, pszParmValue);
- *(BOOL *) parm_ptr = !*(BOOL *) parm_ptr;
- break;
-
- case P_INTEGER:
- *(int *) parm_ptr = atoi (pszParmValue);
- break;
-
- case P_CHAR:
- *(char *) parm_ptr = *pszParmValue;
- break;
-
- case P_OCTAL:
- sscanf (pszParmValue, "%o", (int *) parm_ptr);
- break;
-
- case P_STRING:
- string_set (parm_ptr, pszParmValue);
- break;
-
- case P_USTRING:
- string_set (parm_ptr, pszParmValue);
- strupper (*(char **) parm_ptr);
- break;
-
- case P_GSTRING:
- pstrcpy ((char *) parm_ptr, pszParmValue);
- break;
-
- case P_UGSTRING:
- pstrcpy ((char *) parm_ptr, pszParmValue);
- strupper ((char *) parm_ptr);
- break;
-
- case P_ENUM:
- for (i = 0; parm_table[parmnum].enum_list[i].name; i++)
- {
- if (strequal (pszParmValue, parm_table[parmnum].enum_list[i].name))
- {
- *(int *) parm_ptr = parm_table[parmnum].enum_list[i].value;
- break;
- }
- }
- break;
- case P_SEP:
- break;
- }
-
- return (True);
-}
-
-/***************************************************************************
-Process a parameter.
-***************************************************************************/
-static BOOL
-do_parameter (const char *pszParmName, const char *pszParmValue)
-{
- if (!bInGlobalSection && bGlobalOnly)
- return (True);
-
- DEBUGADD (3, ("doing parameter %s = %s\n", pszParmName, pszParmValue));
-
- return (lp_do_parameter (bInGlobalSection ? -2 : iServiceIndex, pszParmName, pszParmValue));
-}
-
-#if 0
-/***************************************************************************
-check if two parameters are equal
-***************************************************************************/
-static BOOL
-equal_parameter (parm_type type, void *ptr1, void *ptr2)
-{
- switch (type)
- {
- case P_BOOL:
- case P_BOOLREV:
- return (*((BOOL *) ptr1) == *((BOOL *) ptr2));
-
- case P_INTEGER:
- case P_ENUM:
- case P_OCTAL:
- return (*((int *) ptr1) == *((int *) ptr2));
-
- case P_CHAR:
- return (*((char *) ptr1) == *((char *) ptr2));
-
- case P_GSTRING:
- case P_UGSTRING:
- {
- char *p1 = (char *) ptr1, *p2 = (char *) ptr2;
- if (p1 && !*p1)
- p1 = NULL;
- if (p2 && !*p2)
- p2 = NULL;
- return (p1 == p2 || strequal (p1, p2));
- }
- case P_STRING:
- case P_USTRING:
- {
- char *p1 = *(char **) ptr1, *p2 = *(char **) ptr2;
- if (p1 && !*p1)
- p1 = NULL;
- if (p2 && !*p2)
- p2 = NULL;
- return (p1 == p2 || strequal (p1, p2));
- }
- case P_SEP:
- break;
- }
- return (False);
-}
-#endif /* 0 */
-
-/***************************************************************************
-Process a new section (service). At this stage all sections are services.
-Later we'll have special sections that permit server parameters to be set.
-Returns True on success, False on failure.
-***************************************************************************/
-static BOOL
-do_section (const char *pszSectionName)
-{
- BOOL bRetval;
- BOOL isglobal = ((strwicmp (pszSectionName, GLOBAL_NAME) == 0) ||
- (strwicmp (pszSectionName, GLOBAL_NAME2) == 0));
- bRetval = False;
-
- /* if we were in a global section then do the local inits */
- if (bInGlobalSection && !isglobal)
- {
- init_locals ();
- }
-
- /* if we've just struck a global section, note the fact. */
- bInGlobalSection = isglobal;
-
- /* check for multiple global sections */
- if (bInGlobalSection)
- {
- DEBUG (3, ("Processing section \"[%s]\"\n", pszSectionName));
- return (True);
- }
-
- if (!bInGlobalSection && bGlobalOnly)
- return (True);
-
- /* if we have a current service, tidy it up before moving on */
- bRetval = True;
-
- if (iServiceIndex >= 0)
- bRetval = service_ok (iServiceIndex);
-
- /* if all is still well, move to the next record in the services array */
- if (bRetval)
- {
- /* We put this here to avoid an odd message order if messages are */
- /* issued by the post-processing of a previous section. */
- DEBUG (2, ("Processing section \"[%s]\"\n", pszSectionName));
-
- if ((iServiceIndex = add_a_service (&sDefault, pszSectionName)) < 0)
- {
- DEBUG (0, ("Failed to add a new service\n"));
- return (False);
- }
- }
-
- return (bRetval);
-}
-
-#if 0
-/***************************************************************************
-return True if a local parameter is currently set to the global default
-***************************************************************************/
-BOOL
-lp_is_default (int snum, struct parm_struct * parm)
-{
- int pdiff = PTR_DIFF (parm->ptr, &sDefault);
-
- return equal_parameter (parm->type,
- ((char *) pSERVICE (snum)) + pdiff, ((char *) &sDefault) + pdiff);
-}
-#endif /* 0 */
-#if 0
-/***************************************************************************
-return info about the next service in a service. snum==-1 gives the globals
-
-return NULL when out of parameters
-***************************************************************************/
-struct parm_struct *
-lp_next_parameter (int snum, int *i, int allparameters)
-{
- if (snum == -1)
- {
- /* do the globals */
- for (; parm_table[*i].label; (*i)++)
- {
- if (parm_table[*i].class == P_SEPARATOR)
- return &parm_table[(*i)++];
-
- if (!parm_table[*i].ptr || (*parm_table[*i].label == '-'))
- continue;
-
- if ((*i) > 0 && (parm_table[*i].ptr == parm_table[(*i) - 1].ptr))
- continue;
-
- return &parm_table[(*i)++];
- }
- }
- else
- {
- service *pService = pSERVICE (snum);
-
- for (; parm_table[*i].label; (*i)++)
- {
- if (parm_table[*i].class == P_SEPARATOR)
- return &parm_table[(*i)++];
-
- if (parm_table[*i].class == P_LOCAL &&
- parm_table[*i].ptr &&
- (*parm_table[*i].label != '-') &&
- ((*i) == 0 || (parm_table[*i].ptr != parm_table[(*i) - 1].ptr)))
- {
- int pdiff = PTR_DIFF (parm_table[*i].ptr, &sDefault);
-
- if (allparameters ||
- !equal_parameter (parm_table[*i].type,
- ((char *) pService) + pdiff, ((char *) &sDefault) + pdiff))
- {
- return &parm_table[(*i)++];
- }
- }
- }
- }
-
- return NULL;
-}
-#endif /* 0 */
-#if 0
-/***************************************************************************
-Return TRUE if the passed service number is within range.
-***************************************************************************/
-BOOL
-lp_snum_ok (int iService)
-{
- return (LP_SNUM_OK (iService) && iSERVICE (iService).bAvailable);
-}
-#endif /* 0 */
-
-/***************************************************************************
-auto-load some home services
-***************************************************************************/
-static void
-lp_add_auto_services (char *str)
-{
- char *s;
- char *p;
- int homes;
-
- if (!str)
- return;
-
- s = strdup (str);
- if (!s)
- return;
-
- homes = lp_servicenumber (HOMES_NAME);
-
- for (p = strtok (s, LIST_SEP); p; p = strtok (NULL, LIST_SEP))
- {
- const char *home = get_home_dir (p);
-
- if (lp_servicenumber (p) >= 0)
- continue;
-
- if (home && homes >= 0)
- {
- lp_add_home (p, homes, home);
- }
- }
- free (s);
-}
-
-
-/***************************************************************************
-have we loaded a services file yet?
-***************************************************************************/
-BOOL
-lp_loaded (void)
-{
- return (bLoaded);
-}
-
-#if 0
-/***************************************************************************
-unload unused services
-***************************************************************************/
-void
-lp_killunused (BOOL (*snumused) (int))
-{
- int i;
- for (i = 0; i < iNumServices; i++)
- if (VALID (i) && (!snumused || !snumused (i)))
- {
- iSERVICE (i).valid = False;
- free_service (pSERVICE (i));
- }
-}
-#endif /* 0 */
-#if 0
-/***************************************************************************
-save the current values of all global and sDefault parameters into the
-defaults union. This allows swat and testparm to show only the
-changed (ie. non-default) parameters.
-***************************************************************************/
-static void
-lp_save_defaults (void)
-{
- static BOOL defaults_saved = False;
- int i;
-
- for (i = 0; parm_table[i].label; i++)
- {
- if (i > 0 && parm_table[i].ptr == parm_table[i - 1].ptr)
- continue;
- switch (parm_table[i].type)
- {
- case P_STRING:
- case P_USTRING:
- parm_table[i].def.svalue = strdup (*(char **) parm_table[i].ptr);
- break;
- case P_GSTRING:
- case P_UGSTRING:
- parm_table[i].def.svalue = strdup ((char *) parm_table[i].ptr);
- break;
- case P_BOOL:
- case P_BOOLREV:
- parm_table[i].def.bvalue = *(BOOL *) parm_table[i].ptr;
- break;
- case P_CHAR:
- parm_table[i].def.cvalue = *(char *) parm_table[i].ptr;
- break;
- case P_INTEGER:
- case P_OCTAL:
- case P_ENUM:
- parm_table[i].def.ivalue = *(int *) parm_table[i].ptr;
- break;
- case P_SEP:
- break;
- }
- }
- defaults_saved = True;
-}
-#endif /* 0 */
-
-/***************************************************************************
-Load the services array from the services file. Return True on success,
-False on failure.
-***************************************************************************/
-BOOL
-lp_load (const char *pszFname, BOOL global_only, BOOL save_defaults, BOOL add_ipc)
-{
- pstring n2;
- BOOL bRetval;
-
- add_to_file_list (pszFname);
-
- bRetval = False;
-
- bInGlobalSection = True;
- bGlobalOnly = global_only;
-
- init_globals ();
-#if 0
- if (save_defaults)
- {
- init_locals ();
- lp_save_defaults ();
- }
-#else
- (void) &save_defaults;
-#endif /* 0 */
- pstrcpy (n2, pszFname);
- standard_sub_basic (n2);
-
- /* We get sections first, so have to start 'behind' to make up */
- iServiceIndex = -1;
- bRetval = pm_process (n2, do_section, do_parameter);
-
- /* finish up the last section */
- DEBUG (3, ("pm_process() returned %s\n", BOOLSTR (bRetval)));
- if (bRetval)
- if (iServiceIndex >= 0)
- bRetval = service_ok (iServiceIndex);
-
- lp_add_auto_services (lp_auto_services ());
-#if 0
- if (add_ipc)
- lp_add_ipc ();
- set_default_server_announce_type ();
-#else
- (void) &add_ipc;
-#endif /* 0 */
-
- bLoaded = True;
-
- /* Now we check bWINSsupport and set szWINSserver to 127.0.0.1 */
- /* if bWINSsupport is true and we are in the client */
-
- if (in_client && Globals.bWINSsupport)
- {
-
- string_set (&Globals.szWINSserver, "127.0.0.1");
-
- }
-
- return (bRetval);
-}
-
-#if 0
-/***************************************************************************
-reset the max number of services
-***************************************************************************/
-void
-lp_resetnumservices (void)
-{
- iNumServices = 0;
-}
-
-
-/***************************************************************************
-return the max number of services
-***************************************************************************/
-int
-lp_numservices (void)
-{
- return (iNumServices);
-}
-#endif /* 0 */
-
-/***************************************************************************
-Return the number of the service with the given name, or -1 if it doesn't
-exist. Note that this is a DIFFERENT ANIMAL from the internal function
-getservicebyname()! This works ONLY if all services have been loaded, and
-does not copy the found service.
-***************************************************************************/
-int
-lp_servicenumber (const char *pszServiceName)
-{
- int iService;
-
- for (iService = iNumServices - 1; iService >= 0; iService--)
- if (VALID (iService) && strequal (lp_servicename (iService), pszServiceName))
- break;
-
- if (iService < 0)
- DEBUG (7, ("lp_servicenumber: couldn't find %s\n", pszServiceName));
-
- return (iService);
-}
-
-#if 0
-/*******************************************************************
- a useful volume label function
- ******************************************************************/
-char *
-volume_label (int snum)
-{
- char *ret = lp_volume (snum);
- if (!*ret)
- return (lp_servicename (snum));
- return (ret);
-}
-
-/***********************************************************
- Set the global name resolution order (used in smbclient).
-************************************************************/
-
-void
-lp_set_name_resolve_order (char *new_order)
-{
- Globals.szNameResolveOrder = new_order;
-}
-#endif /* 0 */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/param/params.c
^
|
@@ -1,580 +0,0 @@
-/* -------------------------------------------------------------------------- **
- * Microsoft Network Services for Unix, AKA., Andrew Tridgell's SAMBA.
- *
- * This module Copyright (C) 1990-1998 Karl Auer
- *
- * Rewritten almost completely by Christopher R. Hertel
- * at the University of Minnesota, September, 1997.
- * This module Copyright (C) 1997-1998 by the University of Minnesota
- * -------------------------------------------------------------------------- **
- *
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- */
-
-/*
- * -------------------------------------------------------------------------- **
- *
- * Module name: params
- *
- * -------------------------------------------------------------------------- **
- *
- * This module performs lexical analysis and initial parsing of a
- * Windows-like parameter file. It recognizes and handles four token
- * types: section-name, parameter-name, parameter-value, and
- * end-of-file. Comments and line continuation are handled
- * internally.
- *
- * The entry point to the module is function pm_process(). This
- * function opens the source file, calls the Parse() function to parse
- * the input, and then closes the file when either the EOF is reached
- * or a fatal error is encountered.
- *
- * A sample parameter file might look like this:
- *
- * [section one]
- * parameter one = value string
- * parameter two = another value
- * [section two]
- * new parameter = some value or t'other
- *
- * The parameter file is divided into sections by section headers:
- * section names enclosed in square brackets (eg. [section one]).
- * Each section contains parameter lines, each of which consist of a
- * parameter name and value delimited by an equal sign. Roughly, the
- * syntax is:
- *
- * <file> :== { <section> } EOF
- *
- * <section> :== <section header> { <parameter line> }
- *
- * <section header> :== '[' NAME ']'
- *
- * <parameter line> :== NAME '=' VALUE '\n'
- *
- * Blank lines and comment lines are ignored. Comment lines are lines
- * beginning with either a semicolon (';') or a pound sign ('#').
- *
- * All whitespace in section names and parameter names is compressed
- * to single spaces. Leading and trailing whitespace is stipped from
- * both names and values.
- *
- * Only the first equals sign in a parameter line is significant.
- * Parameter values may contain equals signs, square brackets and
- * semicolons. Internal whitespace is retained in parameter values,
- * with the exception of the '\r' character, which is stripped for
- * historic reasons. Parameter names may not start with a left square
- * bracket, an equal sign, a pound sign, or a semicolon, because these
- * are used to identify other tokens.
- *
- * -------------------------------------------------------------------------- **
- */
-
-#include "includes.h"
-const char *unix_error_string (int error_num);
-
-/* -------------------------------------------------------------------------- **
- * Constants...
- */
-
-#define BUFR_INC 1024
-
-
-/* -------------------------------------------------------------------------- **
- * Variables...
- *
- * DEBUGLEVEL - The ubiquitous DEBUGLEVEL. This determines which DEBUG()
- * messages will be produced.
- * bufr - pointer to a global buffer. This is probably a kludge,
- * but it was the nicest kludge I could think of (for now).
- * bSize - The size of the global buffer <bufr>.
- */
-
-extern int DEBUGLEVEL;
-
-static char *bufr = NULL;
-static int bSize = 0;
-
-/* -------------------------------------------------------------------------- **
- * Functions...
- */
-
-static int
-EatWhitespace (FILE * InFile)
- /* ------------------------------------------------------------------------ **
- * Scan past whitespace (see ctype(3C)) and return the first non-whitespace
- * character, or newline, or EOF.
- *
- * Input: InFile - Input source.
- *
- * Output: The next non-whitespace character in the input stream.
- *
- * Notes: Because the config files use a line-oriented grammar, we
- * explicitly exclude the newline character from the list of
- * whitespace characters.
- * - Note that both EOF (-1) and the nul character ('\0') are
- * considered end-of-file markers.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int c;
-
- for (c = getc (InFile); isspace (c) && ('\n' != c); c = getc (InFile))
- ;
- return (c);
-} /* EatWhitespace */
-
-static int
-EatComment (FILE * InFile)
- /* ------------------------------------------------------------------------ **
- * Scan to the end of a comment.
- *
- * Input: InFile - Input source.
- *
- * Output: The character that marks the end of the comment. Normally,
- * this will be a newline, but it *might* be an EOF.
- *
- * Notes: Because the config files use a line-oriented grammar, we
- * explicitly exclude the newline character from the list of
- * whitespace characters.
- * - Note that both EOF (-1) and the nul character ('\0') are
- * considered end-of-file markers.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int c;
-
- for (c = getc (InFile); ('\n' != c) && (EOF != c) && (c > 0); c = getc (InFile))
- ;
- return (c);
-} /* EatComment */
-
-static int
-Continuation (char *line, int pos)
- /* ------------------------------------------------------------------------ **
- * Scan backwards within a string to discover if the last non-whitespace
- * character is a line-continuation character ('\\').
- *
- * Input: line - A pointer to a buffer containing the string to be
- * scanned.
- * pos - This is taken to be the offset of the end of the
- * string. This position is *not* scanned.
- *
- * Output: The offset of the '\\' character if it was found, or -1 to
- * indicate that it was not.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- pos--;
- while ((pos >= 0) && isspace (line[pos]))
- pos--;
-
- return (((pos >= 0) && ('\\' == line[pos])) ? pos : -1);
-} /* Continuation */
-
-
-static BOOL
-Section (FILE * InFile, BOOL (*sfunc) (const char *))
- /* ------------------------------------------------------------------------ **
- * Scan a section name, and pass the name to function sfunc().
- *
- * Input: InFile - Input source.
- * sfunc - Pointer to the function to be called if the section
- * name is successfully read.
- *
- * Output: True if the section name was read and True was returned from
- * <sfunc>. False if <sfunc> failed or if a lexical error was
- * encountered.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int c;
- int i;
- int end;
- const char *func = "params.c:Section() -";
-
- i = 0; /* <i> is the offset of the next free byte in bufr[] and */
- end = 0; /* <end> is the current "end of string" offset. In most */
- /* cases these will be the same, but if the last */
- /* character written to bufr[] is a space, then <end> */
- /* will be one less than <i>. */
-
- c = EatWhitespace (InFile); /* We've already got the '['. Scan */
- /* past initial white space. */
-
- while ((EOF != c) && (c > 0))
- {
-
- /* Check that the buffer is big enough for the next character. */
- if (i > (bSize - 2))
- {
- bSize += BUFR_INC;
- bufr = Realloc (bufr, bSize);
- if (NULL == bufr)
- {
- DEBUG (0, ("%s Memory re-allocation failure.", func));
- return (False);
- }
- }
-
- /* Handle a single character. */
- switch (c)
- {
- case ']': /* Found the closing bracket. */
- bufr[end] = '\0';
- if (0 == end) /* Don't allow an empty name. */
- {
- DEBUG (0, ("%s Empty section name in configuration file.\n", func));
- return (False);
- }
- if (!sfunc (bufr)) /* Got a valid name. Deal with it. */
- return (False);
- (void) EatComment (InFile); /* Finish off the line. */
- return (True);
-
- case '\n': /* Got newline before closing ']'. */
- i = Continuation (bufr, i); /* Check for line continuation. */
- if (i < 0)
- {
- bufr[end] = '\0';
- DEBUG (0, ("%s Badly formed line in configuration file: %s\n", func, bufr));
- return (False);
- }
- end = ((i > 0) && (' ' == bufr[i - 1])) ? (i - 1) : (i);
- c = getc (InFile); /* Continue with next line. */
- break;
-
- default: /* All else are a valid name chars. */
- if (isspace (c)) /* One space per whitespace region. */
- {
- bufr[end] = ' ';
- i = end + 1;
- c = EatWhitespace (InFile);
- }
- else /* All others copy verbatim. */
- {
- bufr[i++] = c;
- end = i;
- c = getc (InFile);
- }
- }
- }
-
- /* We arrive here if we've met the EOF before the closing bracket. */
- DEBUG (0, ("%s Unexpected EOF in the configuration file: %s\n", func, bufr));
- return (False);
-} /* Section */
-
-static BOOL
-Parameter (FILE * InFile, BOOL (*pfunc) (const char *, const char *), int c)
- /* ------------------------------------------------------------------------ **
- * Scan a parameter name and value, and pass these two fields to pfunc().
- *
- * Input: InFile - The input source.
- * pfunc - A pointer to the function that will be called to
- * process the parameter, once it has been scanned.
- * c - The first character of the parameter name, which
- * would have been read by Parse(). Unlike a comment
- * line or a section header, there is no lead-in
- * character that can be discarded.
- *
- * Output: True if the parameter name and value were scanned and processed
- * successfully, else False.
- *
- * Notes: This function is in two parts. The first loop scans the
- * parameter name. Internal whitespace is compressed, and an
- * equal sign (=) terminates the token. Leading and trailing
- * whitespace is discarded. The second loop scans the parameter
- * value. When both have been successfully identified, they are
- * passed to pfunc() for processing.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int i = 0; /* Position within bufr. */
- int end = 0; /* bufr[end] is current end-of-string. */
- int vstart = 0; /* Starting position of the parameter value. */
- const char *func = "params.c:Parameter() -";
-
- /* Read the parameter name. */
- while (0 == vstart) /* Loop until we've found the start of the value. */
- {
-
- if (i > (bSize - 2)) /* Ensure there's space for next char. */
- {
- bSize += BUFR_INC;
- bufr = Realloc (bufr, bSize);
- if (NULL == bufr)
- {
- DEBUG (0, ("%s Memory re-allocation failure.", func));
- return (False);
- }
- }
-
- switch (c)
- {
- case '=': /* Equal sign marks end of param name. */
- if (0 == end) /* Don't allow an empty name. */
- {
- DEBUG (0, ("%s Invalid parameter name in config. file.\n", func));
- return (False);
- }
- bufr[end++] = '\0'; /* Mark end of string & advance. */
- i = end; /* New string starts here. */
- vstart = end; /* New string is parameter value. */
- bufr[i] = '\0'; /* New string is nul, for now. */
- break;
-
- case '\n': /* Find continuation char, else error. */
- i = Continuation (bufr, i);
- if (i < 0)
- {
- bufr[end] = '\0';
- DEBUG (1, ("%s Ignoring badly formed line in configuration file: %s\n",
- func, bufr));
- return (True);
- }
- end = ((i > 0) && (' ' == bufr[i - 1])) ? (i - 1) : (i);
- c = getc (InFile); /* Read past eoln. */
- break;
-
- case '\0': /* Shouldn't have EOF within param name. */
- case EOF:
- bufr[i] = '\0';
- DEBUG (1, ("%s Unexpected end-of-file at: %s\n", func, bufr));
- return (True);
-
- default:
- if (isspace (c)) /* One ' ' per whitespace region. */
- {
- bufr[end] = ' ';
- i = end + 1;
- c = EatWhitespace (InFile);
- }
- else /* All others verbatim. */
- {
- bufr[i++] = c;
- end = i;
- c = getc (InFile);
- }
- }
- }
-
- /* Now parse the value. */
- c = EatWhitespace (InFile); /* Again, trim leading whitespace. */
- while ((EOF != c) && (c > 0))
- {
-
- if (i > (bSize - 2)) /* Make sure there's enough room. */
- {
- bSize += BUFR_INC;
- bufr = Realloc (bufr, bSize);
- if (NULL == bufr)
- {
- DEBUG (0, ("%s Memory re-allocation failure.", func));
- return (False);
- }
- }
-
- switch (c)
- {
- case '\r': /* Explicitly remove '\r' because the older */
- c = getc (InFile); /* version called fgets_slash() which also */
- break; /* removes them. */
-
- case '\n': /* Marks end of value unless there's a '\'. */
- i = Continuation (bufr, i);
- if (i < 0)
- c = 0;
- else
- {
- for (end = i; (end >= 0) && isspace (bufr[end]); end--)
- ;
- c = getc (InFile);
- }
- break;
-
- default: /* All others verbatim. Note that spaces do */
- bufr[i++] = c; /* not advance <end>. This allows trimming */
- if (!isspace (c)) /* of whitespace at the end of the line. */
- end = i;
- c = getc (InFile);
- break;
- }
- }
- bufr[end] = '\0'; /* End of value. */
-
- return (pfunc (bufr, &bufr[vstart])); /* Pass name & value to pfunc(). */
-} /* Parameter */
-
-static BOOL
-Parse (FILE * InFile, BOOL (*sfunc) (const char *), BOOL (*pfunc) (const char *, const char *))
- /* ------------------------------------------------------------------------ **
- * Scan & parse the input.
- *
- * Input: InFile - Input source.
- * sfunc - Function to be called when a section name is scanned.
- * See Section().
- * pfunc - Function to be called when a parameter is scanned.
- * See Parameter().
- *
- * Output: True if the file was successfully scanned, else False.
- *
- * Notes: The input can be viewed in terms of 'lines'. There are four
- * types of lines:
- * Blank - May contain whitespace, otherwise empty.
- * Comment - First non-whitespace character is a ';' or '#'.
- * The remainder of the line is ignored.
- * Section - First non-whitespace character is a '['.
- * Parameter - The default case.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int c;
-
- c = EatWhitespace (InFile);
- while ((EOF != c) && (c > 0))
- {
- switch (c)
- {
- case '\n': /* Blank line. */
- c = EatWhitespace (InFile);
- break;
-
- case ';': /* Comment line. */
- case '#':
- c = EatComment (InFile);
- break;
-
- case '[': /* Section Header. */
- if (!Section (InFile, sfunc))
- return (False);
- c = EatWhitespace (InFile);
- break;
-
- case '\\': /* Bogus backslash. */
- c = EatWhitespace (InFile);
- break;
-
- default: /* Parameter line. */
- if (!Parameter (InFile, pfunc, c))
- return (False);
- c = EatWhitespace (InFile);
- break;
- }
- }
- return (True);
-} /* Parse */
-
-static FILE *
-OpenConfFile (const char *FileName)
- /* ------------------------------------------------------------------------ **
- * Open a configuration file.
- *
- * Input: FileName - The pathname of the config file to be opened.
- *
- * Output: A pointer of type (FILE *) to the opened file, or NULL if the
- * file could not be opened.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- FILE *OpenedFile;
- const char *func = "params.c:OpenConfFile() -";
- extern BOOL in_client;
- int lvl = in_client ? 1 : 0;
-
- if (NULL == FileName || 0 == *FileName)
- {
- DEBUG (lvl, ("%s No configuration filename specified.\n", func));
- return (NULL);
- }
-
- OpenedFile = sys_fopen (FileName, "r");
- if (NULL == OpenedFile)
- {
- DEBUG (lvl,
- ("%s Unable to open configuration file \"%s\":\n\t%s\n",
- func, FileName, unix_error_string (errno)));
- }
-
- return (OpenedFile);
-} /* OpenConfFile */
-
-BOOL
-pm_process (const char *FileName,
- BOOL (*sfunc) (const char *), BOOL (*pfunc) (const char *, const char *))
- /* ------------------------------------------------------------------------ **
- * Process the named parameter file.
- *
- * Input: FileName - The pathname of the parameter file to be opened.
- * sfunc - A pointer to a function that will be called when
- * a section name is discovered.
- * pfunc - A pointer to a function that will be called when
- * a parameter name and value are discovered.
- *
- * Output: TRUE if the file was successfully parsed, else FALSE.
- *
- * ------------------------------------------------------------------------ **
- */
-{
- int result;
- FILE *InFile;
- const char *func = "params.c:pm_process() -";
-
- InFile = OpenConfFile (FileName); /* Open the config file. */
- if (NULL == InFile)
- return (False);
-
- DEBUG (3, ("%s Processing configuration file \"%s\"\n", func, FileName));
-
- if (NULL != bufr) /* If we already have a buffer */
- result = Parse (InFile, sfunc, pfunc); /* (recursive call), then just */
- /* use it. */
-
- else /* If we don't have a buffer */
- { /* allocate one, then parse, */
- bSize = BUFR_INC; /* then free. */
- bufr = (char *) malloc (bSize);
- if (NULL == bufr)
- {
- DEBUG (0, ("%s memory allocation failure.\n", func));
- fclose (InFile);
- return (False);
- }
- result = Parse (InFile, sfunc, pfunc);
- free (bufr);
- bufr = NULL;
- bSize = 0;
- }
-
- fclose (InFile);
-
- if (!result) /* Generic failure. */
- {
- DEBUG (0, ("%s Failed. Error returned from params.c:parse().\n", func));
- return (False);
- }
-
- return (True); /* Generic success. */
-} /* pm_process */
-
-/* -------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/helpers/parsing.doc
^
|
@@ -1,363 +0,0 @@
-Chris Hertel, Samba Team
-November 1997
-
-This is a quick overview of the lexical analysis, syntax, and semantics
-of the smb.conf file.
-
-Lexical Analysis:
-
- Basically, the file is processed on a line by line basis. There are
- four types of lines that are recognized by the lexical analyzer
- (params.c):
-
- Blank lines - Lines containing only whitespace.
- Comment lines - Lines beginning with either a semi-colon or a
- pound sign (';' or '#').
- Section header lines - Lines beginning with an open square bracket
- ('[').
- Parameter lines - Lines beginning with any other character.
- (The default line type.)
-
- The first two are handled exclusively by the lexical analyzer, which
- ignores them. The latter two line types are scanned for
-
- - Section names
- - Parameter names
- - Parameter values
-
- These are the only tokens passed to the parameter loader
- (loadparm.c). Parameter names and values are divided from one
- another by an equal sign: '='.
-
-
- Handling of Whitespace:
-
- Whitespace is defined as all characters recognized by the isspace()
- function (see ctype(3C)) except for the newline character ('\n')
- The newline is excluded because it identifies the end of the line.
-
- - The lexical analyzer scans past white space at the beginning of a
- line.
-
- - Section and parameter names may contain internal white space. All
- whitespace within a name is compressed to a single space character.
-
- - Internal whitespace within a parameter value is kept verbatim with
- the exception of carriage return characters ('\r'), all of which
- are removed.
-
- - Leading and trailing whitespace is removed from names and values.
-
-
- Handling of Line Continuation:
-
- Long section header and parameter lines may be extended across
- multiple lines by use of the backslash character ('\\'). Line
- continuation is ignored for blank and comment lines.
-
- If the last (non-whitespace) character within a section header or on
- a parameter line is a backslash, then the next line will be
- (logically) concatonated with the current line by the lexical
- analyzer. For example:
-
- param name = parameter value string \
- with line continuation.
-
- Would be read as
-
- param name = parameter value string with line continuation.
-
- Note that there are five spaces following the word 'string',
- representing the one space between 'string' and '\\' in the top
- line, plus the four preceding the word 'with' in the second line.
- (Yes, I'm counting the indentation.)
-
- Line continuation characters are ignored on blank lines and at the end
- of comments. They are *only* recognized within section and parameter
- lines.
-
-
- Line Continuation Quirks:
-
- Note the following example:
-
- param name = parameter value string \
- \
- with line continuation.
-
- The middle line is *not* parsed as a blank line because it is first
- concatonated with the top line. The result is
-
- param name = parameter value string with line continuation.
-
- The same is true for comment lines.
-
- param name = parameter value string \
- ; comment \
- with a comment.
-
- This becomes:
-
- param name = parameter value string ; comment with a comment.
-
- On a section header line, the closing bracket (']') is considered a
- terminating character, and the rest of the line is ignored. The lines
-
- [ section name ] garbage \
- param name = value
-
- are read as
-
- [section name]
- param name = value
-
-
-
-Syntax:
-
- The syntax of the smb.conf file is as follows:
-
- <file> :== { <section> } EOF
-
- <section> :== <section header> { <parameter line> }
-
- <section header> :== '[' NAME ']'
-
- <parameter line> :== NAME '=' VALUE NL
-
-
- Basically, this means that
-
- - a file is made up of zero or more sections, and is terminated by
- an EOF (we knew that).
-
- - A section is made up of a section header followed by zero or more
- parameter lines.
-
- - A section header is identified by an opening bracket and
- terminated by the closing bracket. The enclosed NAME identifies
- the section.
-
- - A parameter line is divided into a NAME and a VALUE. The *first*
- equal sign on the line separates the NAME from the VALUE. The
- VALUE is terminated by a newline character (NL = '\n').
-
-
-About params.c:
-
- The parsing of the config file is a bit unusual if you are used to
- lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing
- are performed by params.c. Values are loaded via callbacks to
- loadparm.c.
-
---------------------------------------------------------------------------
-
- Samba DEBUG
-
-Chris Hertel, Samba Team
-July, 1998
-
- Here's the scoop on the update to the DEBUG() system.
-
- First, my goals are:
- * Backward compatibility (ie., I don't want to break any Samba code
- that already works).
- * Debug output should be timestamped and easy to read (format-wise).
- * Debug output should be parsable by software.
- * There should be convenient tools for composing debug messages.
-
- NOTE: the Debug functionality has been moved from util.c to the new
- debug.c module.
-
-New Output Syntax
-
- The syntax of a debugging log file is represented as:
- <debugfile> :== { <debugmsg> }
-
- <debugmsg> :== <debughdr> '\n' <debugtext>
-
- <debughdr> :== '[' TIME ',' LEVEL ']' FILE ':' [FUNCTION] '(' LINE ')'
-
- <debugtext> :== { <debugline> }
-
- <debugline> :== TEXT '\n'
-
- TEXT is a string of characters excluding the newline character.
- LEVEL is the DEBUG level of the message (an integer in the range
- 0..10).
- TIME is a timestamp.
- FILE is the name of the file from which the debug message was
- generated.
- FUNCTION is the function from which the debug message was generated.
- LINE is the line number of the debug statement that generated the
- message.
-
- Basically, what that all means is:
- * A debugging log file is made up of debug messages.
- * Each debug message is made up of a header and text. The header is
- separated from the text by a newline.
- * The header begins with the timestamp and debug level of the
- message enclosed in brackets. The filename, function, and line
- number at which the message was generated follow. The filename is
- terminated by a colon, and the function name is terminated by the
- parenthesis which contain the line number. Depending upon the
- compiler, the function name may be missing (it is generated by the
- __FUNCTION__ macro, which is not universally implemented, dangit).
- * The message text is made up of zero or more lines, each terminated
- by a newline.
-
- Here's some example output:
-
- [1998/08/03 12:55:25, 1] nmbd.c:(659)
- Netbios nameserver version 1.9.19-prealpha started.
- Copyright Andrew Tridgell 1994-1997
- [1998/08/03 12:55:25, 3] loadparm.c:(763)
- Initializing global parameters
-
- Note that in the above example the function names are not listed on
- the header line. That's because the example above was generated on an
- SGI Indy, and the SGI compiler doesn't support the __FUNCTION__ macro.
-
-The DEBUG() Macro
-
- Use of the DEBUG() macro is unchanged. DEBUG() takes two parameters.
- The first is the message level, the second is the body of a function
- call to the Debug1() function.
-
- That's confusing.
-
- Here's an example which may help a bit. If you would write
-
- printf( "This is a %s message.\n", "debug" );
-
- to send the output to stdout, then you would write
-
- DEBUG( 0, ( "This is a %s message.\n", "debug" ) );
-
- to send the output to the debug file. All of the normal printf()
- formatting escapes work.
-
- Note that in the above example the DEBUG message level is set to 0.
- Messages at level 0 always print. Basically, if the message level is
- less than or equal to the global value DEBUGLEVEL, then the DEBUG
- statement is processed.
-
- The output of the above example would be something like:
-
- [1998/07/30 16:00:51, 0] file.c:function(128)
- This is a debug message.
-
- Each call to DEBUG() creates a new header *unless* the output produced
- by the previous call to DEBUG() did not end with a '\n'. Output to the
- debug file is passed through a formatting buffer which is flushed
- every time a newline is encountered. If the buffer is not empty when
- DEBUG() is called, the new input is simply appended.
-
- ...but that's really just a Kludge. It was put in place because
- DEBUG() has been used to write partial lines. Here's a simple (dumb)
- example of the kind of thing I'm talking about:
-
- DEBUG( 0, ("The test returned " ) );
- if( test() )
- DEBUG(0, ("True") );
- else
- DEBUG(0, ("False") );
- DEBUG(0, (".\n") );
-
- Without the format buffer, the output (assuming test() returned true)
- would look like this:
-
- [1998/07/30 16:00:51, 0] file.c:function(256)
- The test returned
- [1998/07/30 16:00:51, 0] file.c:function(258)
- True
- [1998/07/30 16:00:51, 0] file.c:function(261)
- .
-
- Which isn't much use. The format buffer kludge fixes this problem.
-
-The DEBUGADD() Macro
-
- In addition to the kludgey solution to the broken line problem
- described above, there is a clean solution. The DEBUGADD() macro never
- generates a header. It will append new text to the current debug
- message even if the format buffer is empty. The syntax of the
- DEBUGADD() macro is the same as that of the DEBUG() macro.
-
- DEBUG( 0, ("This is the first line.\n" ) );
- DEBUGADD( 0, ("This is the second line.\nThis is the third line.\n" ) );
-
- Produces
- [1998/07/30 16:00:51, 0] file.c:function(512)
- This is the first line.
- This is the second line.
- This is the third line.
-
-The DEBUGLVL() Macro
-
- One of the problems with the DEBUG() macro was that DEBUG() lines
- tended to get a bit long. Consider this example from
- nmbd_sendannounce.c:
-
- DEBUG(3,("send_local_master_announcement: type %x for name %s on subnet %s for workgroup %s\n",
- type, global_myname, subrec->subnet_name, work->work_group));
-
- One solution to this is to break it down using DEBUG() and DEBUGADD(),
- as follows:
-
- DEBUG( 3, ( "send_local_master_announcement: " ) );
- DEBUGADD( 3, ( "type %x for name %s ", type, global_myname ) );
- DEBUGADD( 3, ( "on subnet %s ", subrec->subnet_name ) );
- DEBUGADD( 3, ( "for workgroup %s\n", work->work_group ) );
-
- A similar, but arguably nicer approach is to use the DEBUGLVL() macro.
- This macro returns True if the message level is less than or equal to
- the global DEBUGLEVEL value, so:
-
- if( DEBUGLVL( 3 ) )
- {
- dbgtext( "send_local_master_announcement: " );
- dbgtext( "type %x for name %s ", type, global_myname );
- dbgtext( "on subnet %s ", subrec->subnet_name );
- dbgtext( "for workgroup %s\n", work->work_group );
- }
-
- (The dbgtext() function is explained below.)
-
- There are a few advantages to this scheme:
- * The test is performed only once.
- * You can allocate variables off of the stack that will only be used
- within the DEBUGLVL() block.
- * Processing that is only relevant to debug output can be contained
- within the DEBUGLVL() block.
-
-New Functions
-
- dbgtext()
- This function prints debug message text to the debug file (and
- possibly to syslog) via the format buffer. The function uses a
- variable argument list just like printf() or Debug1(). The
- input is printed into a buffer using the vslprintf() function,
- and then passed to format_debug_text().
-
- If you use DEBUGLVL() you will probably print the body of the
- message using dbgtext().
-
- dbghdr()
- This is the function that writes a debug message header.
- Headers are not processed via the format buffer. Also note that
- if the format buffer is not empty, a call to dbghdr() will not
- produce any output. See the comments in dbghdr() for more info.
-
- It is not likely that this function will be called directly. It
- is used by DEBUG() and DEBUGADD().
-
- format_debug_text()
- This is a static function in debug.c. It stores the output text
- for the body of the message in a buffer until it encounters a
- newline. When the newline character is found, the buffer is
- written to the debug file via the Debug1() function, and the
- buffer is reset. This allows us to add the indentation at the
- beginning of each line of the message body, and also ensures
- that the output is written a line at a time (which cleans up
- syslog output).
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/smbfs.c
^
|
@@ -1,2290 +0,0 @@
-/*
- Virtual File System: Midnight Commander file system.
-
- Copyright (C) 1999-2020
- Free Software Foundation, Inc.
-
- Written by:
- Wayne Roberts <wroberts1@home.com>, 1997
- Andrew V. Samoilov <sav@bcs.zp.ua> 2002, 2003
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * \file
- * \brief Source: Virtual File System: smb file system
- * \author Wayne Roberts <wroberts1@home.com>
- * \author Andrew V. Samoilov <sav@bcs.zp.ua>
- * \date 1997, 2002, 2003
- *
- * Namespace: exports init_smbfs, smbfs_set_debug()
- */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <string.h> /* memset() */
-
-#undef USE_NCURSES /* Don't include *curses.h */
-#undef USE_NCURSESW
-
-#include <string.h>
-
-#include "lib/global.h"
-#include "lib/strutil.h"
-#include "lib/util.h"
-#include "lib/widget.h" /* message() */
-
-#undef PACKAGE_BUGREPORT
-#undef PACKAGE_NAME
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-#undef PACKAGE_VERSION
-
-#include "helpers/include/config.h"
-/* don't load crap in "samba/include/includes.h" we don't use and which
- conflicts with definitions in other includes */
-#undef HAVE_LIBREADLINE
-#define NO_CONFIG_H
-#undef VERSION
-
-#include "helpers/include/includes.h"
-
-#include "lib/vfs/vfs.h"
-#include "lib/vfs/xdirentry.h" /* vfs_s_subclass */
-#include "lib/vfs/netutil.h"
-#include "lib/vfs/utilvfs.h"
-
-#include "smbfs.h"
-
-/*** global variables ****************************************************************************/
-
-extern int DEBUGLEVEL;
-extern pstring myhostname;
-extern struct in_addr ipzero;
-extern pstring global_myname;
-extern pstring debugf;
-extern FILE *dbf;
-
-/*** file scope macro definitions ****************************************************************/
-
-#define SMBFS_MAX_CONNECTIONS 16
-
-#define HEADER_LEN 6
-
-#define CNV_LANG(s) dos_to_unix(s,False)
-#define GNAL_VNC(s) unix_to_dos(s,False)
-
-#define smbfs_lstat smbfs_stat /* no symlinks on smb filesystem? */
-
-/*** file scope type declarations ****************************************************************/
-
-typedef struct _smbfs_connection smbfs_connection;
-
-typedef struct
-{
- struct cli_state *cli;
- int fnum;
- off_t nread;
- uint16 attr;
-} smbfs_handle;
-
-typedef struct dir_entry
-{
- char *text;
- struct dir_entry *next;
- struct stat my_stat;
- int merrno;
-} dir_entry;
-
-typedef struct
-{
- gboolean server_list;
- char *dirname;
- char *path; /* the dir originally passed to smbfs_opendir */
- smbfs_connection *conn;
- dir_entry *entries;
- dir_entry *current;
-} opendir_info;
-
-/*** file scope variables ************************************************************************/
-
-static const char *const IPC = "IPC$";
-static const char *const URL_HEADER = "smb" VFS_PATH_URL_DELIMITER;
-
-static int my_errno;
-static uint32 err;
-
-/* stuff that is same with each connection */
-
-static mode_t myumask = 0755;
-static int smbfs_open_connections = 0;
-static gboolean got_user = FALSE;
-static gboolean got_pass = FALSE;
-static pstring password;
-static pstring username;
-
-static struct vfs_s_subclass smbfs_subclass;
-static struct vfs_class *vfs_smbfs_ops = VFS_CLASS (&smbfs_subclass);
-
-static struct _smbfs_connection
-{
- struct cli_state *cli;
- struct in_addr dest_ip;
- BOOL have_ip;
- char *host; /* server name */
- char *service; /* share name */
- char *domain;
- char *user;
- char *home;
- char *password;
- int port;
- int name_type;
- time_t last_use;
-} smbfs_connections[SMBFS_MAX_CONNECTIONS];
-/* unique to each connection */
-
-static smbfs_connection *current_bucket;
-
-static GSList *auth_list;
-
-static opendir_info *previous_info, *current_info, *current_share_info, *current_server_info;
-
-static gboolean first_direntry;
-
-/* stat a single file, smbfs_get_remote_stat callback */
-static dir_entry *single_entry;
-
-/*** file scope functions ************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-/* modifies *share */
-static struct cli_state *smbfs_do_connect (const char *server, char *share);
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_set_debugf (const char *filename)
-{
- if (DEBUGLEVEL > 0)
- {
- FILE *outfile = fopen (filename, "w");
- if (outfile)
- {
- setup_logging ("", True); /* No needs for timestamp for each message */
- dbf = outfile;
- setbuf (dbf, NULL);
- pstrcpy (debugf, filename);
- }
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* this function allows you to write:
- * char *s = g_strdup("hello, world");
- * s = free_after(g_strconcat(s, s, (char *)0), s);
- */
-
-static inline char *
-free_after (char *result, char *string_to_free)
-{
- g_free (string_to_free);
- return result;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_auth_free (struct smb_authinfo const *a)
-{
- g_free (a->host);
- g_free (a->share);
- g_free (a->domain);
- g_free (a->user);
- wipe_password (a->password);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_auth_free_all (void)
-{
- g_clear_slist (&auth_list, (GDestroyNotify) smbfs_auth_free);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gint
-smbfs_auth_cmp_host_and_share (gconstpointer _a, gconstpointer _b)
-{
- struct smb_authinfo const *a = (struct smb_authinfo const *) _a;
- struct smb_authinfo const *b = (struct smb_authinfo const *) _b;
-
- if (!a->host || !a->share || !b->host || !b->share)
- return 1;
- if (strcmp (a->host, b->host) != 0)
- return 1;
- if (strcmp (a->share, b->share) != 0)
- return 1;
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gint
-smbfs_auth_cmp_host (gconstpointer _a, gconstpointer _b)
-{
- struct smb_authinfo const *a = (struct smb_authinfo const *) _a;
- struct smb_authinfo const *b = (struct smb_authinfo const *) _b;
-
- if (!a->host || !b->host)
- return 1;
- if (strcmp (a->host, b->host) != 0)
- return 1;
- if (strcmp (a->share, IPC) != 0)
- return 1;
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_auth_add (const char *host, const char *share, const char *domain,
- const char *user, const char *pass)
-{
- struct smb_authinfo *auth;
-
- auth = vfs_smb_authinfo_new (host, share, domain, user, pass);
-
- if (auth != NULL)
- auth_list = g_slist_prepend (auth_list, auth);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_auth_remove (const char *host, const char *share)
-{
- struct smb_authinfo data;
- struct smb_authinfo *auth;
- GSList *list;
-
- data.host = g_strdup (host);
- data.share = g_strdup (share);
- list = g_slist_find_custom (auth_list, &data, smbfs_auth_cmp_host_and_share);
- g_free (data.host);
- g_free (data.share);
- if (!list)
- return;
- auth = list->data;
- auth_list = g_slist_remove (auth_list, auth);
- smbfs_auth_free (auth);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* Set authentication information in bucket. Return 1 if successful, else 0 */
-/* Information in auth_list overrides user if pass is NULL. */
-/* bucket->host and bucket->service must be valid. */
-
-static int
-smbfs_bucket_set_authinfo (smbfs_connection * bucket,
- const char *domain, const char *user, const char *pass,
- int fallback_to_host)
-{
- struct smb_authinfo data;
- struct smb_authinfo *auth;
- GSList *list;
-
- if (domain && user && pass)
- {
- g_free (bucket->domain);
- g_free (bucket->user);
- g_free (bucket->password);
- bucket->domain = g_strdup (domain);
- bucket->user = g_strdup (user);
- bucket->password = g_strdup (pass);
- smbfs_auth_remove (bucket->host, bucket->service);
- smbfs_auth_add (bucket->host, bucket->service, domain, user, pass);
- return 1;
- }
-
- data.host = bucket->host;
- data.share = bucket->service;
- list = g_slist_find_custom (auth_list, &data, smbfs_auth_cmp_host_and_share);
- if (!list && fallback_to_host)
- list = g_slist_find_custom (auth_list, &data, smbfs_auth_cmp_host);
- if (list)
- {
- auth = list->data;
- bucket->domain = g_strdup (auth->domain);
- bucket->user = g_strdup (auth->user);
- bucket->password = g_strdup (auth->password);
- return 1;
- }
-
- if (got_pass)
- {
- bucket->domain = g_strdup (lp_workgroup ());
- bucket->user = g_strdup (got_user ? username : user);
- bucket->password = g_strdup (password);
- return 1;
- }
-
- auth = vfs_smb_get_authinfo (bucket->host,
- bucket->service, (domain ? domain : lp_workgroup ()), user);
- if (auth)
- {
- g_free (bucket->domain);
- g_free (bucket->user);
- g_free (bucket->password);
- bucket->domain = g_strdup (auth->domain);
- bucket->user = g_strdup (auth->user);
- bucket->password = g_strdup (auth->password);
- smbfs_auth_remove (bucket->host, bucket->service);
- auth_list = g_slist_prepend (auth_list, auth);
- return 1;
- }
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-smbfs_set_debug (int arg)
-{
- DEBUGLEVEL = arg;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/********************** The callbacks ******************************/
-
-static int
-smbfs_init (struct vfs_class *me)
-{
- const char *servicesf = CONFIGDIR PATH_SEP_STR "smb.conf";
-
- /* DEBUGLEVEL = 4; */
-
- TimeInit ();
- charset_initialise ();
-
- DEBUG (3, ("smbfs_init(%s)\n", me->name));
-
- if (!get_myname (myhostname, NULL))
- DEBUG (0, ("Failed to get my hostname.\n"));
-
- if (!lp_load (servicesf, True, False, False))
- DEBUG (0, ("Cannot load %s - run testparm to debug it\n", servicesf));
-
- codepage_initialise (lp_client_code_page ());
-
- load_interfaces ();
-
- myumask = umask (0);
- umask (myumask);
- myumask = ~myumask;
-
- if (getenv ("USER"))
- {
- char *p;
-
- pstrcpy (username, getenv ("USER"));
- got_user = TRUE;
- DEBUG (3, ("smbfs_init(): $USER:%s\n", username));
- if ((p = strchr (username, '%')))
- {
- *p = 0;
- pstrcpy (password, p + 1);
- got_pass = TRUE;
- memset (strchr (getenv ("USER"), '%') + 1, 'X', strlen (password));
- DEBUG (3, ("smbfs_init(): $USER%%pass: %s%%%s\n", username, password));
- }
- strupper (username);
- }
- if (getenv ("PASSWD"))
- {
- pstrcpy (password, getenv ("PASSWD"));
- got_pass = TRUE;
- }
- return 1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_fill_names (struct vfs_class *me, fill_names_f func)
-{
- size_t i;
- char *path;
-
- (void) me;
-
- for (i = 0; i < SMBFS_MAX_CONNECTIONS; i++)
- {
- if (smbfs_connections[i].cli)
- {
- path = g_strconcat (URL_HEADER,
- smbfs_connections[i].user, "@",
- smbfs_connections[i].host,
- "/", smbfs_connections[i].service, (char *) NULL);
- (*func) (path);
- g_free (path);
- }
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* does same as do_get() in client.c */
-/* called from vfs.c:1080, count = buffer size */
-
-static ssize_t
-smbfs_read (void *data, char *buffer, size_t count)
-{
- smbfs_handle *info = (smbfs_handle *) data;
- ssize_t n;
-
- DEBUG (3, ("smbfs_read(fnum:%d, nread:%d, count:%zu)\n", info->fnum, (int) info->nread, count));
- n = cli_read (info->cli, info->fnum, buffer, info->nread, count);
- if (n > 0)
- info->nread += n;
- return n;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static ssize_t
-smbfs_write (void *data, const char *buf, size_t nbyte)
-{
- smbfs_handle *info = (smbfs_handle *) data;
- ssize_t n;
-
- DEBUG (3, ("smbfs_write(fnum:%d, nread:%d, nbyte:%zu)\n",
- info->fnum, (int) info->nread, nbyte));
- n = cli_write (info->cli, info->fnum, 0, buf, info->nread, nbyte);
- if (n > 0)
- info->nread += n;
- return n;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_close (void *data)
-{
- smbfs_handle *info = (smbfs_handle *) data;
- DEBUG (3, ("smbfs_close(fnum:%d)\n", info->fnum));
-
- /* FIXME: Why too different cli have the same outbuf
- * if file is copied to share
- */
- if (info->cli->outbuf == NULL)
- {
- my_errno = EINVAL;
- return -1;
- }
-#if 0
- /* if imlementing archive_level: add rname to smbfs_handle */
- if (archive_level >= 2 && (inf->attr & aARCH))
- {
- cli_setatr (info->cli, rname, info->attr & ~(uint16) aARCH, 0);
- }
-#endif
- return (cli_close (info->cli, info->fnum) == True) ? 0 : -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_errno (struct vfs_class *me)
-{
- (void) me;
-
- DEBUG (3, ("smbfs_errno: %s\n", unix_error_string (my_errno)));
- return my_errno;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static dir_entry *
-smbfs_new_dir_entry (const char *name)
-{
- static int inode_counter;
- dir_entry *new_entry;
- new_entry = g_new0 (dir_entry, 1);
- new_entry->text = dos_to_unix (g_strdup (name), 1);
-
- if (first_direntry)
- {
- current_info->entries = new_entry;
- first_direntry = FALSE;
- }
- else
- {
- current_info->current->next = new_entry;
- }
- current_info->current = new_entry;
- new_entry->my_stat.st_ino = inode_counter++;
-
- return new_entry;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* browse for shares on server */
-
-static void
-smbfs_browsing_helper (const char *name, uint32 type, const char *comment, void *state)
-{
- const char *typestr = "";
- dir_entry *new_entry = smbfs_new_dir_entry (name);
-
- (void) state;
-
- switch (type)
- {
- case STYPE_DISKTREE:
- typestr = "Disk";
- /* show this as dir */
- new_entry->my_stat.st_mode =
- (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH) & myumask;
- break;
- case STYPE_PRINTQ:
- typestr = "Printer";
- break;
- case STYPE_DEVICE:
- typestr = "Device";
- break;
- case STYPE_IPC:
- typestr = "IPC";
- break;
- default:
- break;
- }
- DEBUG (3, ("\t%-15.15s%-10.10s%s\n", name, typestr, comment));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_loaddir_helper (file_info * finfo, const char *mask, void *entry)
-{
- dir_entry *new_entry = (dir_entry *) entry;
- time_t t = finfo->mtime; /* the time is assumed to be passed as GMT */
-
- (void) mask;
-
-#if 0 /* I want to see dot files */
- if (finfo->mode & aHIDDEN)
- return; /* don't bother with hidden files, "~$" screws up mc */
-#endif
- if (!entry)
- new_entry = smbfs_new_dir_entry (finfo->name);
-
- new_entry->my_stat.st_size = finfo->size;
- new_entry->my_stat.st_mtime = finfo->mtime;
- new_entry->my_stat.st_atime = finfo->atime;
- new_entry->my_stat.st_ctime = finfo->ctime;
- new_entry->my_stat.st_uid = finfo->uid;
- new_entry->my_stat.st_gid = finfo->gid;
-
- new_entry->my_stat.st_mode = /* rw-rw-rw */
- S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR | S_IWGRP | S_IWOTH;
-
- /* if (finfo->mode & aVOLID); nothing similar in real world */
- if (finfo->mode & aDIR)
- new_entry->my_stat.st_mode |= /* drwxrwxrwx */
- S_IFDIR | S_IXUSR | S_IXGRP | S_IXOTH;
- else
- new_entry->my_stat.st_mode |= S_IFREG; /* if not dir, regular file? */
- /* if (finfo->mode & aARCH); DOS archive */
- /* if (finfo->mode & aHIDDEN); like a dot file? */
- /* if (finfo->mode & aSYSTEM); like a kernel? */
- if (finfo->mode & aRONLY)
- new_entry->my_stat.st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
- new_entry->my_stat.st_mode &= myumask;
-
- DEBUG (entry ? 3 : 6, (" %-30s%7.7s%8.0f %s",
- CNV_LANG (finfo->name),
- attrib_string (finfo->mode),
- (double) finfo->size, asctime (LocalTime (&t))));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* takes "/foo/bar/file" and gives malloced "\\foo\\bar\\file" */
-
-static char *
-smbfs_convert_path (const char *remote_file, gboolean trailing_asterik)
-{
- const char *p, *my_remote;
- char *result;
-
- my_remote = remote_file;
- if (strncmp (my_remote, URL_HEADER, HEADER_LEN) == 0)
- { /* if passed directly */
- my_remote += HEADER_LEN;
- if (*my_remote == '/') /* from server browsing */
- my_remote++;
- p = strchr (my_remote, '/');
- if (p)
- my_remote = p + 1; /* advance to end of server name */
- }
-
- if (*my_remote == '/')
- my_remote++; /* strip off leading '/' */
- p = strchr (my_remote, '/');
- if (p)
- my_remote = p; /* strip off share/service name */
- /* create remote filename as understood by smb clientgen */
- result = g_strconcat (my_remote, trailing_asterik ? "/*" : "", (char *) NULL);
- unix_to_dos (result, /* inplace = */ 1); /* code page conversion */
- str_replace (result, '/', '\\');
- return result;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_srv_browsing_helper (const char *name, uint32 m, const char *comment, void *state)
-{
- dir_entry *new_entry = smbfs_new_dir_entry (name);
-
- (void) m;
- (void) state;
-
- /* show this as dir */
- new_entry->my_stat.st_mode =
- (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH) & myumask;
-
- DEBUG (3, ("\t%-16.16s %s\n", name, comment));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static BOOL
-smbfs_reconnect (smbfs_connection * conn, int *retries)
-{
- char *host;
- DEBUG (3, ("RECONNECT\n"));
-
- if (*(conn->host) == 0)
- host = g_strdup (conn->cli->desthost); /* server browsing */
- else
- host = g_strdup (conn->host);
-
- cli_shutdown (conn->cli);
-
- if (!(conn->cli = smbfs_do_connect (host, conn->service)))
- {
- message (D_ERROR, MSG_ERROR, _("reconnect to %s failed"), conn->host);
- g_free (host);
- return False;
- }
- g_free (host);
- if (++(*retries) == 2)
- return False;
- return True;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static BOOL
-smbfs_send (struct cli_state *cli)
-{
- size_t len;
- size_t nwritten = 0;
- ssize_t ret;
-
- len = smb_len (cli->outbuf) + 4;
-
- while (nwritten < len)
- {
- ret = write_socket (cli->fd, cli->outbuf + nwritten, len - nwritten);
- if (ret <= 0)
- {
- if (errno == EPIPE)
- return False;
- }
- else
- nwritten += ret;
- }
-
- return True;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/****************************************************************************
-See if server has cut us off by checking for EPIPE when writing.
-Taken from cli_chkpath()
-****************************************************************************/
-
-static BOOL
-smbfs_chkpath (struct cli_state *cli, const char *path, BOOL send_only)
-{
- fstring path2;
- char *p;
-
- fstrcpy (path2, path);
- unix_to_dos (path2, 1);
- trim_string (path2, NULL, "\\");
- if (!*path2)
- *path2 = '\\';
-
- memset (cli->outbuf, '\0', smb_size);
- set_message (cli->outbuf, 0, 4 + strlen (path2), True);
- SCVAL (cli->outbuf, smb_com, SMBchkpth);
- SSVAL (cli->outbuf, smb_tid, cli->cnum);
-
- cli->rap_error = 0;
- cli->nt_error = 0;
- SSVAL (cli->outbuf, smb_pid, cli->pid);
- SSVAL (cli->outbuf, smb_uid, cli->vuid);
- SSVAL (cli->outbuf, smb_mid, cli->mid);
- if (cli->protocol > PROTOCOL_CORE)
- {
- SCVAL (cli->outbuf, smb_flg, 0x8);
- SSVAL (cli->outbuf, smb_flg2, 0x1);
- }
-
- p = smb_buf (cli->outbuf);
- *p++ = 4;
- fstrcpy (p, path2);
-
- if (!smbfs_send (cli))
- {
- DEBUG (3, ("smbfs_chkpath: couldnt send\n"));
- return False;
- }
- if (send_only)
- {
- client_receive_smb (cli->fd, cli->inbuf, cli->timeout);
- DEBUG (3, ("smbfs_chkpath: send only OK\n"));
- return True; /* just testing for EPIPE */
- }
- if (!client_receive_smb (cli->fd, cli->inbuf, cli->timeout))
- {
- DEBUG (3, ("smbfs_chkpath: receive error\n"));
- return False;
- }
- if ((my_errno = cli_error (cli, NULL, NULL, NULL)))
- {
- if (my_errno == 20 || my_errno == 13)
- return True; /* ignore if 'not a directory' error */
- DEBUG (3, ("smbfs_chkpath: cli_error: %s\n", unix_error_string (my_errno)));
- return False;
- }
-
- return True;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#if 1
-static int
-smbfs_fs (const char *text)
-{
- const char *p = text;
- int count = 0;
-
- while ((p = strchr (p, '/')) != NULL)
- {
- count++;
- p++;
- }
- if (count == 1)
- return strlen (text);
- return count;
-}
-#endif
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_loaddir (opendir_info * smbfs_info)
-{
- uint16 attribute = aDIR | aSYSTEM | aHIDDEN;
- int servlen = strlen (smbfs_info->conn->service);
- const char *info_dirname = smbfs_info->dirname;
- char *my_dirname;
-
- DEBUG (3, ("smbfs_loaddir: dirname:%s\n", info_dirname));
- first_direntry = TRUE;
-
- if (current_info)
- {
- DEBUG (3, ("smbfs_loaddir: new:'%s', cached:'%s'\n", info_dirname, current_info->dirname));
- /* if new desired dir is longer than cached in current_info */
- if (smbfs_fs (info_dirname) > smbfs_fs (current_info->dirname))
- {
- DEBUG (3, ("saving to previous_info\n"));
- previous_info = current_info;
- }
- }
-
- current_info = smbfs_info;
-
- if (strcmp (info_dirname, "/") == 0)
- {
- if (!strcmp (smbfs_info->path, URL_HEADER))
- {
- DEBUG (6, ("smbfs_loaddir: browsing %s\n", IPC));
- /* browse for servers */
- if (!cli_NetServerEnum
- (smbfs_info->conn->cli, smbfs_info->conn->domain,
- SV_TYPE_ALL, smbfs_srv_browsing_helper, NULL))
- return 0;
- else
- current_server_info = smbfs_info;
- smbfs_info->server_list = TRUE;
- }
- else
- {
- /* browse for shares */
- if (cli_RNetShareEnum (smbfs_info->conn->cli, smbfs_browsing_helper, NULL) < 1)
- return 0;
- else
- current_share_info = smbfs_info;
- }
- goto done;
- }
-
- /* do regular directory listing */
- if (strncmp (smbfs_info->conn->service, info_dirname + 1, servlen) == 0)
- {
- /* strip share name from dir */
- my_dirname = g_strdup (info_dirname + servlen);
- *my_dirname = '/';
- my_dirname = free_after (smbfs_convert_path (my_dirname, TRUE), my_dirname);
- }
- else
- my_dirname = smbfs_convert_path (info_dirname, TRUE);
-
- DEBUG (6, ("smbfs_loaddir: service: %s\n", smbfs_info->conn->service));
- DEBUG (6, ("smbfs_loaddir: cli->share: %s\n", smbfs_info->conn->cli->share));
- DEBUG (6, ("smbfs_loaddir: calling cli_list with mask %s\n", my_dirname));
- /* do file listing: cli_list returns number of files */
- if (cli_list (smbfs_info->conn->cli, my_dirname, attribute, smbfs_loaddir_helper, NULL) < 0)
- {
- /* cli_list returns -1 if directory empty or cannot read socket */
- my_errno = cli_error (smbfs_info->conn->cli, NULL, &err, NULL);
- g_free (my_dirname);
- return 0;
- }
- if (*(my_dirname) == 0)
- smbfs_info->dirname = smbfs_info->conn->service;
- g_free (my_dirname);
- /* do_dskattr(); */
-
- done:
- /* current_info->parent = smbfs_info->dirname; */
-
- smbfs_info->current = smbfs_info->entries;
- return 1; /* 1 = ok */
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#ifdef SMBFS_FREE_DIR
-static void
-smbfs_free_dir (dir_entry * de)
-{
- if (!de)
- return;
-
- smbfs_free_dir (de->next);
- g_free (de->text);
- g_free (de);
-}
-#endif
-
-/* --------------------------------------------------------------------------------------------- */
-/* The readdir routine loads the complete directory */
-/* It's too slow to ask the server each time */
-/* It now also sends the complete lstat information for each file */
-
-static struct vfs_dirent *
-smbfs_readdir (void *info)
-{
- struct vfs_dirent *dirent;
- opendir_info *smbfs_info = (opendir_info *) info;
-
- DEBUG (4, ("smbfs_readdir(%s)\n", smbfs_info->dirname));
-
- if (!smbfs_info->entries)
- if (!smbfs_loaddir (smbfs_info))
- return NULL;
-
- if (smbfs_info->current == 0)
- { /* reached end of dir entries */
- DEBUG (3, ("smbfs_readdir: smbfs_info->current = 0\n"));
-#ifdef SMBFS_FREE_DIR
- smbfs_free_dir (smbfs_info->entries);
- smbfs_info->entries = 0;
-#endif
- return NULL;
- }
-
- dirent = vfs_dirent_init (NULL, smbfs_info->current->text, 0); /* FIXME: inode */
-
- smbfs_info->current = smbfs_info->current->next;
-
- return dirent;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_closedir (void *info)
-{
- opendir_info *smbfs_info = (opendir_info *) info;
- /* dir_entry *p, *q; */
-
- DEBUG (3, ("smbfs_closedir(%s)\n", smbfs_info->dirname));
- /* CLOSE HERE */
-
- /* for (p = smbfs_info->entries; p;){
- q = p;
- p = p->next;
- g_free (q->text);
- g_free (q);
- }
- g_free (info); */
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_chmod (const vfs_path_t * vpath, mode_t mode)
-{
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_chmod(path:%s, mode:%d)\n", path_element->path, (int) mode));
- /* my_errno = EOPNOTSUPP;
- return -1; *//* cannot chmod on smb filesystem */
- return 0; /* make mc happy */
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_chown (const vfs_path_t * vpath, uid_t owner, gid_t group)
-{
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3,
- ("smbfs_chown(path:%s, owner:%d, group:%d)\n", path_element->path, (int) owner,
- (int) group));
- my_errno = EOPNOTSUPP; /* ready for your labotomy? */
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_utime (const vfs_path_t * vpath, mc_timesbuf_t * times)
-{
- const vfs_path_element_t *path_element;
-
- (void) times;
-
- path_element = vfs_path_get_by_index (vpath, -1);
-#ifdef HAVE_UTIMENSAT
- DEBUG (3, ("smbfs_utimensat(path:%s)\n", path_element->path));
-#else
- DEBUG (3, ("smbfs_utime(path:%s)\n", path_element->path));
-#endif
- my_errno = EOPNOTSUPP;
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_readlink (const vfs_path_t * vpath, char *buf, size_t size)
-{
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_readlink(path:%s, buf:%s, size:%zu)\n", path_element->path, buf, size));
- my_errno = EOPNOTSUPP;
- return -1; /* no symlinks on smb filesystem? */
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- const vfs_path_element_t *path_element1;
- const vfs_path_element_t *path_element2;
-
- path_element1 = vfs_path_get_by_index (vpath1, -1);
- path_element2 = vfs_path_get_by_index (vpath2, -1);
- DEBUG (3, ("smbfs_symlink(n1:%s, n2:%s)\n", path_element1->path, path_element2->path));
- my_errno = EOPNOTSUPP;
- return -1; /* no symlinks on smb filesystem? */
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*****************************************************
- return a connection to a SMB server
- current_bucket needs to be set before calling
-*******************************************************/
-
-static struct cli_state *
-smbfs_do_connect (const char *server, char *share)
-{
- struct cli_state *c;
- struct nmb_name called, calling;
- struct in_addr ip;
-
- DEBUG (3, ("smbfs_do_connect(%s, %s)\n", server, share));
- if (*share == '\\')
- {
- server = share + 2;
- share = strchr (server, '\\');
- if (!share)
- return NULL;
- *share = 0;
- share++;
- }
-
- make_nmb_name (&calling, global_myname, 0x0);
- make_nmb_name (&called, server, current_bucket->name_type);
-
- for (;;)
- {
-
- ip = (current_bucket->have_ip) ? current_bucket->dest_ip : ipzero;
-
- /* have to open a new connection */
- if (!(c = cli_initialise (NULL)))
- {
- my_errno = ENOMEM;
- return NULL;
- }
-
- pwd_init (&(c->pwd)); /* should be moved into cli_initialise()? */
- pwd_set_cleartext (&(c->pwd), current_bucket->password);
-
- if ((cli_set_port (c, current_bucket->port) == 0) || !cli_connect (c, server, &ip))
- {
- DEBUG (1, ("Connection to %s failed\n", server));
- break;
- }
-
- if (!cli_session_request (c, &calling, &called))
- {
- my_errno = cli_error (c, NULL, &err, NULL);
- DEBUG (1, ("session request to %s failed\n", called.name));
- cli_shutdown (c);
- if (strcmp (called.name, "*SMBSERVER"))
- {
- make_nmb_name (&called, "*SMBSERVER", 0x20);
- continue;
- }
- return NULL;
- }
-
- DEBUG (3, (" session request ok\n"));
-
- if (!cli_negprot (c))
- {
- DEBUG (1, ("protocol negotiation failed\n"));
- break;
- }
-
- if (!cli_session_setup (c, current_bucket->user,
- current_bucket->password, strlen (current_bucket->password),
- current_bucket->password, strlen (current_bucket->password),
- current_bucket->domain))
- {
- DEBUG (1, ("session setup failed: %s\n", cli_errstr (c)));
- smbfs_auth_remove (server, share);
- break;
- }
-
- if (*c->server_domain || *c->server_os || *c->server_type)
- DEBUG (5, ("Domain=[%s] OS=[%s] Server=[%s]\n",
- c->server_domain, c->server_os, c->server_type));
-
- DEBUG (3, (" session setup ok\n"));
-
- if (!cli_send_tconX (c, share, "?????",
- current_bucket->password, strlen (current_bucket->password) + 1))
- {
- DEBUG (1, ("%s: tree connect failed: %s\n", share, cli_errstr (c)));
- break;
- }
-
- DEBUG (3, (" tconx ok\n"));
-
- my_errno = 0;
- return c;
- }
-
- my_errno = cli_error (c, NULL, &err, NULL);
- cli_shutdown (c);
- return NULL;
-
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_get_master_browser (char **host)
-{
- static char so_broadcast[] = "SO_BROADCAST";
- int count;
- struct in_addr *ip_list, bcast_addr;
-
- /* does port = 137 for win95 master browser? */
- int fd = open_socket_in (SOCK_DGRAM, 0, 3,
- interpret_addr (lp_socket_address ()), True);
- if (fd == -1)
- return 0;
- set_socket_options (fd, so_broadcast);
- ip_list = iface_bcast (ipzero);
- bcast_addr = *ip_list;
- if ((ip_list = name_query (fd, "\01\02__MSBROWSE__\02", 1, True,
- True, bcast_addr, &count, NULL)))
- {
- if (!count)
- return 0;
- /* just return first master browser */
- *host = g_strdup (inet_ntoa (ip_list[0]));
- return 1;
- }
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_free_bucket (smbfs_connection * bucket)
-{
- g_free (bucket->host);
- g_free (bucket->service);
- g_free (bucket->domain);
- g_free (bucket->user);
- wipe_password (bucket->password);
- g_free (bucket->home);
- memset (bucket, 0, sizeof (smbfs_connection));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static smbfs_connection *
-smbfs_get_free_bucket (void)
-{
- int i;
-
- for (i = 0; i < SMBFS_MAX_CONNECTIONS; i++)
- if (!smbfs_connections[i].cli)
- return &smbfs_connections[i];
-
- { /* search for most dormant connection */
- int oldest = 0; /* index */
- time_t oldest_time = smbfs_connections[0].last_use;
- for (i = 1; i < SMBFS_MAX_CONNECTIONS; i++)
- {
- if (smbfs_connections[i].last_use < oldest_time)
- {
- oldest_time = smbfs_connections[i].last_use;
- oldest = i;
- }
- }
- cli_shutdown (smbfs_connections[oldest].cli);
- smbfs_free_bucket (&smbfs_connections[oldest]);
- return &smbfs_connections[oldest];
- }
-
- /* This can't happend, since we have checked for max connections before */
- vfs_die ("Internal error: smbfs_get_free_bucket");
- return 0; /* shut up, stupid gcc */
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* This routine keeps track of open connections */
-/* Returns a connected socket to host */
-
-static smbfs_connection *
-smbfs_open_link (char *host, char *path, const char *user, int *port, char *this_pass)
-{
- int i;
- smbfs_connection *bucket;
- pstring service;
- struct in_addr *dest_ip = NULL;
-
- DEBUG (3, ("smbfs_open_link(host:%s, path:%s)\n", host, path));
-
- if (strcmp (host, path) == 0) /* if host & path are same: */
- pstrcpy (service, IPC); /* setup for browse */
- else
- { /* get share name from path, path starts with server name */
- char *p;
- if ((p = strchr (path, '/'))) /* get share aka */
- pstrcpy (service, ++p); /* service name from path */
- else
- pstrcpy (service, "");
- /* now check for trailing directory/filenames */
- p = strchr (service, '/');
- if (p)
- *p = 0; /* cut off dir/files: sharename only */
- if (!*service)
- pstrcpy (service, IPC); /* setup for browse */
- DEBUG (6, ("smbfs_open_link: service from path:%s\n", service));
- }
-
- if (got_user)
- user = username; /* global from getenv */
-
- /* Is the link actually open? */
- for (i = 0; i < SMBFS_MAX_CONNECTIONS; i++)
- {
- if (!smbfs_connections[i].cli)
- continue;
- if ((strcmp (host, smbfs_connections[i].host) == 0) &&
- (strcmp (user, smbfs_connections[i].user) == 0) &&
- (strcmp (service, smbfs_connections[i].service) == 0))
- {
- int retries = 0;
- BOOL inshare = (*host != 0 && *path != 0 && strchr (path, '/'));
- /* check if this connection has died */
- while (!smbfs_chkpath (smbfs_connections[i].cli, "\\", !inshare))
- {
- if (!smbfs_reconnect (&smbfs_connections[i], &retries))
- return 0;
- }
- DEBUG (6, ("smbfs_open_link: returning smbfs_connection[%d]\n", i));
- current_bucket = &smbfs_connections[i];
- smbfs_connections[i].last_use = time (NULL);
- return &smbfs_connections[i];
- }
- /* connection not found, find if we have ip for new connection */
- if (strcmp (host, smbfs_connections[i].host) == 0)
- dest_ip = &smbfs_connections[i].cli->dest_ip;
- }
-
- /* make new connection */
- bucket = smbfs_get_free_bucket ();
- bucket->name_type = 0x20;
- bucket->home = 0;
- bucket->port = *port;
- bucket->have_ip = False;
- if (dest_ip)
- {
- bucket->have_ip = True;
- bucket->dest_ip = *dest_ip;
- }
- current_bucket = bucket;
-
- bucket->user = g_strdup (user);
- bucket->service = g_strdup (service);
-
- if (!(*host))
- { /* if blank host name, browse for servers */
- if (!smbfs_get_master_browser (&host)) /* set host to ip of master browser */
- return 0; /* could not find master browser? */
- g_free (host);
- bucket->host = g_strdup (""); /* blank host means master browser */
- }
- else
- bucket->host = g_strdup (host);
-
- if (!smbfs_bucket_set_authinfo (bucket, 0, /* domain currently not used */
- user, this_pass, 1))
- return 0;
-
- /* connect to share */
- while (!(bucket->cli = smbfs_do_connect (host, service)))
- {
-
- if (my_errno != EPERM)
- return 0;
- message (D_ERROR, MSG_ERROR, "%s", _("Authentication failed"));
-
- /* authentication failed, try again */
- smbfs_auth_remove (bucket->host, bucket->service);
- if (!smbfs_bucket_set_authinfo (bucket, bucket->domain, bucket->user, 0, 0))
- return 0;
-
- }
-
- smbfs_open_connections++;
- DEBUG (3, ("smbfs_open_link:smbfs_open_connections: %d\n", smbfs_open_connections));
- return bucket;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static char *
-smbfs_get_path (smbfs_connection ** sc, const vfs_path_t * vpath)
-{
- char *remote_path = NULL;
- vfs_path_element_t *url;
- const vfs_path_element_t *path_element;
- const char *path;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- path = path_element->path;
-
- DEBUG (3, ("smbfs_get_path(%s)\n", path));
-
- if (path_element->class != vfs_smbfs_ops)
- return NULL;
-
- while (*path == '/') /* '/' leading server name */
- path++; /* probably came from server browsing */
-
- url = vfs_url_split (path, SMB_PORT, URL_FLAGS_NONE);
-
- if (url != NULL)
- {
- *sc = smbfs_open_link (url->host, url->path, url->user, &url->port, url->password);
- wipe_password (url->password);
-
- if (*sc != NULL)
- remote_path = g_strdup (url->path);
-
- vfs_path_element_free (url);
- }
-
- if (remote_path == NULL)
- return NULL;
-
- /* NOTE: tildes are deprecated. See ftpfs.c */
- {
- int f = strcmp (remote_path, "/~") ? 0 : 1;
-
- if (f != 0 || strncmp (remote_path, "/~/", 3) == 0)
- {
- char *s;
-
- s = mc_build_filename ((*sc)->home, remote_path + 3 - f, (char *) NULL);
- g_free (remote_path);
- remote_path = s;
- }
- }
-
- return remote_path;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#if 0
-static int
-is_error (int result, int errno_num)
-{
- if (!(result == -1))
- return my_errno = 0;
- else
- my_errno = errno_num;
- return 1;
-}
-#endif
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void *
-smbfs_opendir (const vfs_path_t * vpath)
-{
- opendir_info *smbfs_info;
- smbfs_connection *sc;
- char *remote_dir;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_opendir(dirname:%s)\n", path_element->path));
-
- if (!(remote_dir = smbfs_get_path (&sc, vpath)))
- return NULL;
-
- /* FIXME: where freed? */
- smbfs_info = g_new (opendir_info, 1);
- smbfs_info->server_list = FALSE;
- smbfs_info->path = g_strdup (path_element->path); /* keep original */
- smbfs_info->dirname = remote_dir;
- smbfs_info->conn = sc;
- smbfs_info->entries = 0;
- smbfs_info->current = 0;
-
- return smbfs_info;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_fake_server_stat (const char *server_url, const char *path, struct stat *buf)
-{
- dir_entry *dentry;
- const char *p;
-
- (void) server_url;
-
- if ((p = strrchr (path, '/')))
- path = p + 1; /* advance until last '/' */
-
- if (!current_info->entries)
- {
- if (!smbfs_loaddir (current_info)) /* browse host */
- return -1;
- }
-
- if (current_info->server_list == True)
- {
- dentry = current_info->entries;
- DEBUG (4, ("fake stat for SERVER \"%s\"\n", path));
- while (dentry)
- {
- if (strcmp (dentry->text, path) == 0)
- {
- DEBUG (4, ("smbfs_fake_server_stat: %s:%4o\n",
- dentry->text, (unsigned int) dentry->my_stat.st_mode));
- memcpy (buf, &dentry->my_stat, sizeof (struct stat));
- return 0;
- }
- dentry = dentry->next;
- }
- }
- my_errno = ENOENT;
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_fake_share_stat (const char *server_url, const char *path, struct stat *buf)
-{
- dir_entry *dentry;
- if (strlen (path) < strlen (server_url))
- return -1;
-
- if (!current_share_info)
- { /* Server was not stat()ed */
- /* Make sure there is such share at server */
- smbfs_connection *sc;
- char *p;
- vfs_path_t *vpath;
-
- vpath = vfs_path_from_str (path);
- p = smbfs_get_path (&sc, vpath);
- vfs_path_free (vpath);
-
- if (p != NULL)
- {
- memset (buf, 0, sizeof (*buf));
- /* show this as dir */
- buf->st_mode =
- (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH) & myumask;
- g_free (p);
- return 0;
- }
- return -1;
- }
-
- path += strlen (server_url); /* we only want share name */
- path++;
-
- if (*path == '/') /* '/' leading server name */
- path++; /* probably came from server browsing */
-
- if (!current_share_info->entries)
- {
- if (!smbfs_loaddir (current_share_info)) /* browse host */
- return -1;
- }
- dentry = current_share_info->entries;
- DEBUG (3, ("smbfs_fake_share_stat: %s on %s\n", path, server_url));
- while (dentry)
- {
- if (strcmp (dentry->text, path) == 0)
- {
- DEBUG (6, ("smbfs_fake_share_stat: %s:%4o\n",
- dentry->text, (unsigned int) dentry->my_stat.st_mode));
- memcpy (buf, &dentry->my_stat, sizeof (struct stat));
- return 0;
- }
- dentry = dentry->next;
- }
- my_errno = ENOENT;
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* stat a single file */
-
-static int
-smbfs_get_remote_stat (smbfs_connection * sc, const char *path, struct stat *buf)
-{
- uint16 attribute = aDIR | aSYSTEM | aHIDDEN;
- char *mypath;
-
- DEBUG (3, ("smbfs_get_remote_stat(): mypath:%s\n", path));
-
- mypath = smbfs_convert_path (path, FALSE);
-
-#if 0 /* single_entry is never free()d now. And only my_stat is used */
- single_entry = g_new (dir_entry, 1);
-
- single_entry->text = dos_to_unix (g_strdup (finfo->name), 1);
-
- single_entry->next = 0;
-#endif
- if (!single_entry)
- single_entry = g_new0 (dir_entry, 1);
-
- if (cli_list (sc->cli, mypath, attribute, smbfs_loaddir_helper, single_entry) < 1)
- {
- my_errno = ENOENT;
- g_free (mypath);
- return -1; /* cli_list returns number of files */
- }
-
- memcpy (buf, &single_entry->my_stat, sizeof (struct stat));
-
- /* don't free here, use for smbfs_fstat() */
- /* g_free(single_entry->text);
- g_free(single_entry); */
- g_free (mypath);
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_search_dir_entry (dir_entry * dentry, const char *text, struct stat *buf)
-{
- while (dentry)
- {
- if (strcmp (text, dentry->text) == 0)
- {
- memcpy (buf, &dentry->my_stat, sizeof (struct stat));
- memcpy (&single_entry->my_stat, &dentry->my_stat, sizeof (struct stat));
- return 0;
- }
- dentry = dentry->next;
- }
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_get_stat_info (smbfs_connection * sc, const char *path, struct stat *buf)
-{
- char *p;
-#if 0
- dir_entry *dentry = current_info->entries;
-#endif
- const char *mypath = path;
-
- mypath++; /* cut off leading '/' */
- if ((p = strrchr (mypath, '/')))
- mypath = p + 1; /* advance until last file/dir name */
- DEBUG (3, ("smbfs_get_stat_info: mypath:%s, current_info->dirname:%s\n",
- mypath, current_info->dirname));
-#if 0
- if (!dentry)
- {
- DEBUG (1, ("No dir entries (empty dir) cached:'%s', wanted:'%s'\n",
- current_info->dirname, path));
- return -1;
- }
-#endif
- if (!single_entry) /* when found, this will be written too */
- single_entry = g_new (dir_entry, 1);
- if (smbfs_search_dir_entry (current_info->entries, mypath, buf) == 0)
- {
- return 0;
- }
- /* now try to identify mypath as PARENT dir */
- {
- char *mdp;
- char *mydir;
- mdp = mydir = g_strdup (current_info->dirname);
- if ((p = strrchr (mydir, '/')))
- *p = 0; /* advance util last '/' */
- if ((p = strrchr (mydir, '/')))
- mydir = p + 1; /* advance util last '/' */
- if (strcmp (mydir, mypath) == 0)
- { /* fake a stat for ".." */
- memset (buf, 0, sizeof (struct stat));
- buf->st_mode = (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH) & myumask;
- memcpy (&single_entry->my_stat, buf, sizeof (struct stat));
- g_free (mdp);
- DEBUG (1, (" PARENT:found in %s\n", current_info->dirname));
- return 0;
- }
- g_free (mdp);
- }
- /* now try to identify as CURRENT dir? */
- {
- char *dnp = current_info->dirname;
- DEBUG (6, ("smbfs_get_stat_info: is %s current dir? this dir is: %s\n",
- mypath, current_info->dirname));
- if (*dnp == '/')
- dnp++;
- else
- {
- return -1;
- }
- if (strcmp (mypath, dnp) == 0)
- {
- memset (buf, 0, sizeof (struct stat));
- buf->st_mode = (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH) & myumask;
- memcpy (&single_entry->my_stat, buf, sizeof (struct stat));
- DEBUG (1, (" CURRENT:found in %s\n", current_info->dirname));
- return 0;
- }
- }
- DEBUG (3, ("'%s' not found in current_info '%s'\n", path, current_info->dirname));
- /* try to find this in the PREVIOUS listing */
- if (previous_info)
- {
- if (smbfs_search_dir_entry (previous_info->entries, mypath, buf) == 0)
- return 0;
- DEBUG (3, ("'%s' not found in previous_info '%s'\n", path, previous_info->dirname));
- }
- /* try to find this in the SHARE listing */
- if (current_share_info)
- {
- if (smbfs_search_dir_entry (current_share_info->entries, mypath, buf) == 0)
- return 0;
- DEBUG (3, ("'%s' not found in share_info '%s'\n", path, current_share_info->dirname));
- }
- /* try to find this in the SERVER listing */
- if (current_server_info)
- {
- if (smbfs_search_dir_entry (current_server_info->entries, mypath, buf) == 0)
- return 0;
- DEBUG (3, ("'%s' not found in server_info '%s'\n", path, current_server_info->dirname));
- }
- /* nothing found. get stat file info from server */
- return smbfs_get_remote_stat (sc, path, buf);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_chdir (const vfs_path_t * vpath)
-{
- char *remote_dir;
- smbfs_connection *sc;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_chdir(path:%s)\n", path_element->path));
- if (!(remote_dir = smbfs_get_path (&sc, vpath)))
- return -1;
- g_free (remote_dir);
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_loaddir_by_name (const vfs_path_t * vpath)
-{
- void *info;
- char *mypath, *p;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- mypath = g_strdup (path_element->path);
- p = strrchr (mypath, '/');
-
- if (p > mypath)
- *p = 0;
- DEBUG (6, ("smbfs_loaddir_by_name(%s)\n", mypath));
- smbfs_chdir (vpath);
- info = smbfs_opendir (vpath);
- g_free (mypath);
- if (!info)
- return -1;
- smbfs_readdir (info);
- smbfs_loaddir (info);
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_stat (const vfs_path_t * vpath, struct stat *buf)
-{
- smbfs_connection *sc;
- pstring server_url;
- char *service, *pp, *at;
- const char *p;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_stat(path:%s)\n", path_element->path));
-
- if (!current_info)
- {
- DEBUG (1, ("current_info = NULL: "));
- if (smbfs_loaddir_by_name (vpath) < 0)
- return -1;
- }
-
- /* check if stating server */
- p = path_element->path;
- if (path_element->class != vfs_smbfs_ops)
- return -1;
-
- while (*p == '/') /* '/' leading server name */
- p++; /* probably came from server browsing */
-
- pp = strchr (p, '/'); /* advance past next '/' */
- at = strchr (p, '@');
- pstrcpy (server_url, URL_HEADER);
- if (at && at < pp)
- { /* user@server */
- char *z = &(server_url[sizeof (server_url) - 1]);
- const char *s = p;
-
- at = &(server_url[HEADER_LEN]) + (at - p + 1);
- if (z > at)
- z = at;
- at = &(server_url[HEADER_LEN]);
- while (at < z)
- *at++ = *s++;
- *z = 0;
- }
- pstrcat (server_url, current_bucket->host);
-
- if (!pp)
- {
- if (!current_info->server_list)
- {
- if (smbfs_loaddir_by_name (vpath) < 0)
- return -1;
- }
- return smbfs_fake_server_stat (server_url, path_element->path, buf);
- }
-
- if (!strchr (++pp, '/'))
- {
- return smbfs_fake_share_stat (server_url, path_element->path, buf);
- }
-
- /* stating inside share at this point */
- if (!(service = smbfs_get_path (&sc, vpath))) /* connects if necessary */
- return -1;
- {
- int hostlen = strlen (current_bucket->host);
- char *ppp = service + strlen (service) - hostlen;
- char *sp = server_url + strlen (server_url) - hostlen;
-
- if (strcmp (sp, ppp) == 0)
- {
- /* make server name appear as directory */
- DEBUG (1, ("smbfs_stat: showing server as directory\n"));
- memset (buf, 0, sizeof (struct stat));
- buf->st_mode = (S_IFDIR | S_IRUSR | S_IRGRP | S_IROTH) & myumask;
- g_free (service);
- return 0;
- }
- }
- /* check if current_info is in share requested */
- p = service;
- pp = strchr (p, '/');
- if (pp)
- {
- p = ++pp; /* advance past server name */
- pp = strchr (p, '/');
- }
- if (pp)
- *pp = 0; /* cut off everthing after service name */
- else
- p = IPC; /* browsing for services */
- pp = current_info->dirname;
- if (*pp == '/')
- pp++;
- if (strncmp (p, pp, strlen (p)) != 0)
- {
- DEBUG (6, ("desired '%s' is not loaded, we have '%s'\n", p, pp));
- if (smbfs_loaddir_by_name (vpath) < 0)
- {
- g_free (service);
- return -1;
- }
- DEBUG (6, ("loaded dir: '%s'\n", current_info->dirname));
- }
- g_free (service);
- /* stat dirs & files under shares now */
- return smbfs_get_stat_info (sc, path_element->path, buf);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static off_t
-smbfs_lseek (void *data, off_t offset, int whence)
-{
- smbfs_handle *info = (smbfs_handle *) data;
- size_t size;
-
- DEBUG (3,
- ("smbfs_lseek(info->nread => %d, offset => %d, whence => %d) \n",
- (int) info->nread, (int) offset, whence));
-
- switch (whence)
- {
- case SEEK_SET:
- info->nread = offset;
- break;
- case SEEK_CUR:
- info->nread += offset;
- break;
- case SEEK_END:
- if (!cli_qfileinfo (info->cli, info->fnum,
- NULL, &size, NULL, NULL, NULL,
- NULL, NULL) &&
- !cli_getattrE (info->cli, info->fnum, NULL, &size, NULL, NULL, NULL))
- {
- errno = EINVAL;
- return -1;
- }
- info->nread = size + offset;
- break;
- default:
- break;
- }
-
- return info->nread;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_mknod (const vfs_path_t * vpath, mode_t mode, dev_t dev)
-{
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3,
- ("smbfs_mknod(path:%s, mode:%d, dev:%u)\n", path_element->path, (int) mode,
- (unsigned int) dev));
- my_errno = EOPNOTSUPP;
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_mkdir (const vfs_path_t * vpath, mode_t mode)
-{
- smbfs_connection *sc;
- char *remote_file;
- char *cpath;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_mkdir(path:%s, mode:%d)\n", path_element->path, (int) mode));
- if ((remote_file = smbfs_get_path (&sc, vpath)) == 0)
- return -1;
- g_free (remote_file);
- cpath = smbfs_convert_path (path_element->path, FALSE);
-
- if (!cli_mkdir (sc->cli, cpath))
- {
- my_errno = cli_error (sc->cli, NULL, &err, NULL);
- message (D_ERROR, MSG_ERROR, _("Error %s creating directory %s"),
- cli_errstr (sc->cli), CNV_LANG (cpath));
- g_free (cpath);
- return -1;
- }
- g_free (cpath);
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_rmdir (const vfs_path_t * vpath)
-{
- smbfs_connection *sc;
- char *remote_file;
- char *cpath;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_rmdir(path:%s)\n", path_element->path));
- if ((remote_file = smbfs_get_path (&sc, vpath)) == 0)
- return -1;
- g_free (remote_file);
- cpath = smbfs_convert_path (path_element->path, FALSE);
-
- if (!cli_rmdir (sc->cli, cpath))
- {
- my_errno = cli_error (sc->cli, NULL, &err, NULL);
- message (D_ERROR, MSG_ERROR, _("Error %s removing directory %s"),
- cli_errstr (sc->cli), CNV_LANG (cpath));
- g_free (cpath);
- return -1;
- }
-
- g_free (cpath);
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- const vfs_path_element_t *path_element1;
- const vfs_path_element_t *path_element2;
-
- path_element1 = vfs_path_get_by_index (vpath1, -1);
- path_element2 = vfs_path_get_by_index (vpath2, -1);
- DEBUG (3, ("smbfs_link(p1:%s, p2:%s)\n", path_element1->path, path_element2->path));
- my_errno = EOPNOTSUPP;
- return -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-smbfs_free (vfsid id)
-{
- DEBUG (3, ("smbfs_free(%p)\n", id));
- smbfs_auth_free_all ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* Gives up on a socket and reopens the connection, the child own the socket
- * now
- */
-
-static void
-smbfs_forget (const vfs_path_t * vpath)
-{
- const vfs_path_element_t *path_element;
- vfs_path_element_t *p;
- const char *path;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- if (path_element->class != vfs_smbfs_ops)
- return;
-
- path = path_element->path;
-
- DEBUG (3, ("smbfs_forget(path:%s)\n", path));
-
- while (*path == '/') /* '/' leading server name */
- path++; /* probably came from server browsing */
-
- p = vfs_url_split (path, SMB_PORT, URL_FLAGS_NONE);
- if (p != NULL)
- {
- size_t i;
-
- for (i = 0; i < SMBFS_MAX_CONNECTIONS; i++)
- {
- if (smbfs_connections[i].cli
- && (strcmp (p->host, smbfs_connections[i].host) == 0)
- && (strcmp (p->user, smbfs_connections[i].user) == 0)
- && (p->port == smbfs_connections[i].port))
- {
-
- /* close socket: the child owns it now */
- cli_shutdown (smbfs_connections[i].cli);
-
- /* reopen the connection */
- smbfs_connections[i].cli = smbfs_do_connect (p->host, smbfs_connections[i].service);
- }
- }
-
- vfs_path_element_free (p);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_setctl (const vfs_path_t * vpath, int ctlop, void *arg)
-{
- const vfs_path_element_t *path_element;
-
- (void) arg;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_setctl(path:%s, ctlop:%d)\n", path_element->path, ctlop));
- switch (ctlop)
- {
- case VFS_SETCTL_FORGET:
- smbfs_forget (vpath);
- break;
- case VFS_SETCTL_LOGFILE:
- smbfs_set_debugf ((const char *) arg);
- break;
- default:
- break;
- }
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static smbfs_handle *
-smbfs_open_readwrite (smbfs_handle * remote_handle, char *rname, int flags, mode_t mode)
-{
- size_t size;
-
- (void) mode;
-
- if (flags & O_TRUNC) /* if it exists truncate to zero */
- DEBUG (3, ("smbfs_open: O_TRUNC\n"));
-
- remote_handle->fnum =
-#if 1 /* Don't play with flags, it is cli_open() headache */
- cli_open (remote_handle->cli, rname, flags, DENY_NONE);
-#else /* What's a reasons to has this code ? */
- cli_open (remote_handle->cli, rname, ((flags & O_CREAT)
- || (flags ==
- (O_WRONLY | O_APPEND))) ?
- flags : O_RDONLY, DENY_NONE);
-#endif
- if (remote_handle->fnum == -1)
- {
- message (D_ERROR, MSG_ERROR, _("%s opening remote file %s"),
- cli_errstr (remote_handle->cli), CNV_LANG (rname));
- DEBUG (1, ("smbfs_open(rname:%s) error:%s\n", rname, cli_errstr (remote_handle->cli)));
- my_errno = cli_error (remote_handle->cli, NULL, &err, NULL);
- return NULL;
- }
-
- if (flags & O_CREAT)
- return remote_handle;
-
- if (!cli_qfileinfo (remote_handle->cli, remote_handle->fnum,
- &remote_handle->attr, &size, NULL, NULL, NULL, NULL,
- NULL)
- && !cli_getattrE (remote_handle->cli, remote_handle->fnum,
- &remote_handle->attr, &size, NULL, NULL, NULL))
- {
- message (D_ERROR, MSG_ERROR, "getattrib: %s", cli_errstr (remote_handle->cli));
- DEBUG (1, ("smbfs_open(rname:%s) getattrib:%s\n", rname, cli_errstr (remote_handle->cli)));
- my_errno = cli_error (remote_handle->cli, NULL, &err, NULL);
- cli_close (remote_handle->cli, remote_handle->fnum);
- return NULL;
- }
-
- if ((flags == (O_WRONLY | O_APPEND)) /* file.c:copy_file_file() -> do_append */
- && smbfs_lseek (remote_handle, 0, SEEK_END) == -1)
- {
- cli_close (remote_handle->cli, remote_handle->fnum);
- return NULL;
- }
-
- return remote_handle;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void *
-smbfs_open (const vfs_path_t * vpath, int flags, mode_t mode)
-{
- char *remote_file;
- void *ret;
- smbfs_connection *sc;
- smbfs_handle *remote_handle;
- const vfs_path_element_t *path_element;
-
- path_element = vfs_path_get_by_index (vpath, -1);
- DEBUG (3, ("smbfs_open(file:%s, flags:%d, mode:%o)\n", path_element->path, flags, mode));
-
- if (!(remote_file = smbfs_get_path (&sc, vpath)))
- return 0;
-
- remote_file = free_after (smbfs_convert_path (remote_file, FALSE), remote_file);
-
- remote_handle = g_new (smbfs_handle, 2);
- remote_handle->cli = sc->cli;
- remote_handle->nread = 0;
-
- ret = smbfs_open_readwrite (remote_handle, remote_file, flags, mode);
-
- g_free (remote_file);
- if (!ret)
- g_free (remote_handle);
-
- return ret;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_unlink (const vfs_path_t * vpath)
-{
- smbfs_connection *sc;
- char *remote_file;
-
- if ((remote_file = smbfs_get_path (&sc, vpath)) == 0)
- return -1;
-
- remote_file = free_after (smbfs_convert_path (remote_file, FALSE), remote_file);
-
- if (!cli_unlink (sc->cli, remote_file))
- {
- message (D_ERROR, MSG_ERROR, _("%s removing remote file %s"),
- cli_errstr (sc->cli), CNV_LANG (remote_file));
- g_free (remote_file);
- return -1;
- }
- g_free (remote_file);
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
-{
- smbfs_connection *sc;
- char *ra, *rb;
- int retval;
-
- if ((ra = smbfs_get_path (&sc, vpath1)) == 0)
- return -1;
-
- if ((rb = smbfs_get_path (&sc, vpath2)) == 0)
- {
- g_free (ra);
- return -1;
- }
-
- ra = free_after (smbfs_convert_path (ra, FALSE), ra);
- rb = free_after (smbfs_convert_path (rb, FALSE), rb);
-
- retval = cli_rename (sc->cli, ra, rb);
-
- g_free (ra);
- g_free (rb);
-
- if (!retval)
- {
- message (D_ERROR, MSG_ERROR, _("%s renaming files\n"), cli_errstr (sc->cli));
- return -1;
- }
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static int
-smbfs_fstat (void *data, struct stat *buf)
-{
- smbfs_handle *remote_handle = (smbfs_handle *) data;
-
- DEBUG (3, ("smbfs_fstat(fnum:%d)\n", remote_handle->fnum));
-
- /* use left over from previous smbfs_get_remote_stat, if available */
- if (single_entry)
- memcpy (buf, &single_entry->my_stat, sizeof (struct stat));
- else
- { /* single_entry not set up: bug */
- my_errno = EFAULT;
- return -EFAULT;
- }
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gboolean
-smbfs_nothingisopen (vfsid id)
-{
- /* FIXME */
- (void) id;
-
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-
-smb_authinfo *
-vfs_smb_authinfo_new (const char *host, const char *share, const char *domain,
- const char *user, const char *pass)
-{
- smb_authinfo *auth;
-
- auth = g_try_new (struct smb_authinfo, 1);
-
- if (auth != NULL)
- {
- auth->host = g_strdup (host);
- auth->share = g_strdup (share);
- auth->domain = g_strdup (domain);
- auth->user = g_strdup (user);
- auth->password = g_strdup (pass);
- }
-
- return auth;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-vfs_init_smbfs (void)
-{
- tcp_init ();
-
- /* NULLize vfs_s_subclass members */
- memset (&smbfs_subclass, 0, sizeof (smbfs_subclass));
-
- vfs_init_class (vfs_smbfs_ops, "smbfs", VFSF_NOLINKS, "smb");
- vfs_smbfs_ops->init = smbfs_init;
- vfs_smbfs_ops->fill_names = smbfs_fill_names;
- vfs_smbfs_ops->open = smbfs_open;
- vfs_smbfs_ops->close = smbfs_close;
- vfs_smbfs_ops->read = smbfs_read;
- vfs_smbfs_ops->write = smbfs_write;
- vfs_smbfs_ops->opendir = smbfs_opendir;
- vfs_smbfs_ops->readdir = smbfs_readdir;
- vfs_smbfs_ops->closedir = smbfs_closedir;
- vfs_smbfs_ops->stat = smbfs_stat;
- vfs_smbfs_ops->lstat = smbfs_lstat;
- vfs_smbfs_ops->fstat = smbfs_fstat;
- vfs_smbfs_ops->chmod = smbfs_chmod;
- vfs_smbfs_ops->chown = smbfs_chown;
- vfs_smbfs_ops->utime = smbfs_utime;
- vfs_smbfs_ops->readlink = smbfs_readlink;
- vfs_smbfs_ops->symlink = smbfs_symlink;
- vfs_smbfs_ops->link = smbfs_link;
- vfs_smbfs_ops->unlink = smbfs_unlink;
- vfs_smbfs_ops->rename = smbfs_rename;
- vfs_smbfs_ops->chdir = smbfs_chdir;
- vfs_smbfs_ops->ferrno = smbfs_errno;
- vfs_smbfs_ops->lseek = smbfs_lseek;
- vfs_smbfs_ops->mknod = smbfs_mknod;
- vfs_smbfs_ops->free = smbfs_free;
- vfs_smbfs_ops->mkdir = smbfs_mkdir;
- vfs_smbfs_ops->rmdir = smbfs_rmdir;
- vfs_smbfs_ops->setctl = smbfs_setctl;
- vfs_smbfs_ops->nothingisopen = smbfs_nothingisopen;
- vfs_register_class (vfs_smbfs_ops);
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/vfs/smbfs/smbfs.h
^
|
@@ -1,42 +0,0 @@
-
-/**
- * \file
- * \brief Header: Virtual File System: smb file system
- */
-
-#ifndef MC__VFS_SMBFS_H
-#define MC__VFS_SMBFS_H
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-typedef struct smb_authinfo
-{
- char *host;
- char *share;
- char *domain;
- char *user;
- char *password;
-} smb_authinfo;
-
-
-/*** global variables defined in .c file *********************************************************/
-
-/*** declarations of public functions ************************************************************/
-
-void vfs_init_smbfs (void);
-void smbfs_set_debug (int arg);
-
-smb_authinfo *vfs_smb_authinfo_new (const char *host,
- const char *share,
- const char *domain, const char *user, const char *pass);
-
-/* src/boxes.c */
-smb_authinfo *vfs_smb_get_authinfo (const char *host,
- const char *share, const char *domain, const char *user);
-
-/*** inline functions ****************************************************************************/
-#endif /* MC_VFS_SMBFS_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/src/viewer/inlines.h
^
|
@@ -1,172 +0,0 @@
-#ifndef MC__VIEWER_INLINES_H
-#define MC__VIEWER_INLINES_H
-
-#include <limits.h> /* CHAR_BIT */
-
-/*** typedefs(not structures) and defined constants **********************************************/
-
-#define OFF_T_BITWIDTH ((unsigned int) (sizeof (off_t) * CHAR_BIT - 1))
-#define OFFSETTYPE_MAX (((off_t) 1 << (OFF_T_BITWIDTH - 1)) - 1)
-
-/*** enums ***************************************************************************************/
-
-/*** structures declarations (and typedefs of structures)*****************************************/
-
-/*** global variables defined in .c file *********************************************************/
-
-/*** declarations of public functions ************************************************************/
-
-/*** inline functions ****************************************************************************/
-
-/* difference or zero */
-static inline off_t
-mcview_offset_doz (off_t a, off_t b)
-{
- return (a >= b) ? a - b : 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline off_t
-mcview_offset_rounddown (off_t a, off_t b)
-{
- g_assert (b != 0);
- return a - a % b;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* difference or zero */
-static inline screen_dimen
-mcview_dimen_doz (screen_dimen a, screen_dimen b)
-{
- return (a >= b) ? a - b : 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* {{{ Simple Primitive Functions for WView }}} */
-static inline gboolean
-mcview_is_in_panel (WView * view)
-{
- return (view->dpy_frame_size != 0);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline gboolean
-mcview_may_still_grow (WView * view)
-{
- return (view->growbuf_in_use && !view->growbuf_finished);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* returns TRUE if the idx lies in the half-open interval
- * [offset; offset + size), FALSE otherwise.
- */
-static inline gboolean
-mcview_already_loaded (off_t offset, off_t idx, size_t size)
-{
- return (offset <= idx && idx - offset < (off_t) size);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline gboolean
-mcview_get_byte_file (WView * view, off_t byte_index, int *retval)
-{
- g_assert (view->datasource == DS_FILE);
-
- mcview_file_load_data (view, byte_index);
- if (mcview_already_loaded (view->ds_file_offset, byte_index, view->ds_file_datalen))
- {
- if (retval)
- *retval = view->ds_file_data[byte_index - view->ds_file_offset];
- return TRUE;
- }
- if (retval)
- *retval = -1;
- return FALSE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline gboolean
-mcview_get_byte (WView * view, off_t offset, int *retval)
-{
- switch (view->datasource)
- {
- case DS_STDIO_PIPE:
- case DS_VFS_PIPE:
- return mcview_get_byte_growing_buffer (view, offset, retval);
- case DS_FILE:
- return mcview_get_byte_file (view, offset, retval);
- case DS_STRING:
- return mcview_get_byte_string (view, offset, retval);
- case DS_NONE:
- return mcview_get_byte_none (view, offset, retval);
- default:
- return FALSE;
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline gboolean
-mcview_get_byte_indexed (WView * view, off_t base, off_t ofs, int *retval)
-{
- if (base <= OFFSETTYPE_MAX - ofs)
- {
- return mcview_get_byte (view, base + ofs, retval);
- }
- if (retval)
- *retval = -1;
- return FALSE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline int
-mcview_count_backspaces (WView * view, off_t offset)
-{
- int backspaces = 0;
- int c;
- while (offset >= 2 * backspaces && mcview_get_byte (view, offset - 2 * backspaces, &c)
- && c == '\b')
- backspaces++;
- return backspaces;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline gboolean
-mcview_is_nroff_sequence (WView * view, off_t offset)
-{
- int c0, c1, c2;
-
- /* The following commands are ordered to speed up the calculation. */
-
- if (!mcview_get_byte_indexed (view, offset, 1, &c1) || c1 != '\b')
- return FALSE;
-
- if (!mcview_get_byte_indexed (view, offset, 0, &c0) || !g_ascii_isprint (c0))
- return FALSE;
-
- if (!mcview_get_byte_indexed (view, offset, 2, &c2) || !g_ascii_isprint (c2))
- return FALSE;
-
- return (c0 == c2 || c0 == '_' || (c0 == '+' && c2 == 'o'));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static inline void
-mcview_growbuf_read_all_data (WView * view)
-{
- mcview_growbuf_read_until (view, OFFSETTYPE_MAX);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#endif /* MC__VIEWER_INLINES_H */
|
[-]
[+]
|
Deleted |
_service:tar_git:mc-4.8.27.3.tar.gz/mc/tests/src/editor/editcmd__edit_complete_word_cmd.c
^
|
@@ -1,397 +0,0 @@
-/*
- src/editor - tests for edit_complete_word_cmd() function
-
- Copyright (C) 2013-2020
- Free Software Foundation, Inc.
-
- Written by:
- Slava Zanko <slavazanko@gmail.com>, 2013
-
- This file is part of the Midnight Commander.
-
- The Midnight Commander is free software: you can redistribute it
- and/or modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the License,
- or (at your option) any later version.
-
- The Midnight Commander is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#define TEST_SUITE_NAME "/src/editor"
-
-#include "tests/mctest.h"
-
-#include <ctype.h>
-
-#ifdef HAVE_CHARSET
-#include "lib/charsets.h"
-#endif
-#include "lib/strutil.h"
-
-#include "src/vfs/local/local.c"
-#ifdef HAVE_CHARSET
-#include "src/selcodepage.h"
-#endif
-#include "src/editor/editwidget.h"
-#include "src/editor/editcmd_dialogs.h"
-
-
-static WEdit *test_edit;
-
-/* --------------------------------------------------------------------------------------------- */
-/* @Mock */
-void
-mc_refresh (void)
-{
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/* @Mock */
-void
-edit_load_syntax (WEdit * _edit, GPtrArray * _pnames, const char *_type)
-{
- (void) _edit;
- (void) _pnames;
- (void) _type;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @Mock */
-int
-edit_get_syntax_color (WEdit * _edit, off_t _byte_index)
-{
- (void) _edit;
- (void) _byte_index;
-
- return 0;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @Mock */
-gboolean
-edit_load_macro_cmd (WEdit * _edit)
-{
- (void) _edit;
-
- return FALSE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @CapturedValue */
-static const WEdit *editcmd_dialog_completion_show__edit;
-/* @CapturedValue */
-static int editcmd_dialog_completion_show__max_len;
-/* @CapturedValue */
-static GString **editcmd_dialog_completion_show__compl;
-/* @CapturedValue */
-static int editcmd_dialog_completion_show__num_compl;
-
-/* @ThenReturnValue */
-static char *editcmd_dialog_completion_show__return_value;
-
-/* @Mock */
-char *
-editcmd_dialog_completion_show (const WEdit * edit, int max_len, GString ** compl, int num_compl)
-{
-
- editcmd_dialog_completion_show__edit = edit;
- editcmd_dialog_completion_show__max_len = max_len;
- editcmd_dialog_completion_show__num_compl = num_compl;
-
- {
- int iterator;
-
- editcmd_dialog_completion_show__compl = g_new0 (GString *, num_compl);
-
- for (iterator = 0; iterator < editcmd_dialog_completion_show__num_compl; iterator++)
- editcmd_dialog_completion_show__compl[iterator] =
- g_string_new_len (compl[iterator]->str, compl[iterator]->len);
- }
-
- return editcmd_dialog_completion_show__return_value;
-}
-
-static void
-editcmd_dialog_completion_show__init (void)
-{
- editcmd_dialog_completion_show__edit = NULL;
- editcmd_dialog_completion_show__max_len = 0;
- editcmd_dialog_completion_show__compl = NULL;
- editcmd_dialog_completion_show__num_compl = 0;
- editcmd_dialog_completion_show__return_value = NULL;
-}
-
-static void
-editcmd_dialog_completion_show__deinit (void)
-{
- if (editcmd_dialog_completion_show__compl != NULL)
- {
- int iterator;
-
- for (iterator = 0; iterator < editcmd_dialog_completion_show__num_compl; iterator++)
- g_string_free (editcmd_dialog_completion_show__compl[iterator], TRUE);
-
- g_free (editcmd_dialog_completion_show__compl);
- }
-}
-
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @Before */
-static void
-my_setup (void)
-{
- str_init_strings (NULL);
-
- vfs_init ();
- vfs_init_localfs ();
- vfs_setup_work_dir ();
-
-#ifdef HAVE_CHARSET
- mc_global.sysconfig_dir = (char *) TEST_SHARE_DIR;
- load_codepages_list ();
-#endif /* HAVE_CHARSET */
-
- option_filesize_threshold = (char *) "64M";
-
- test_edit = edit_init (NULL, 0, 0, 24, 80, vfs_path_from_str ("test-data.txt"), 1);
- editcmd_dialog_completion_show__init ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @After */
-static void
-my_teardown (void)
-{
- editcmd_dialog_completion_show__deinit ();
- edit_clean (test_edit);
- g_free (test_edit);
-
-#ifdef HAVE_CHARSET
- free_codepages_list ();
-#endif /* HAVE_CHARSET */
-
- vfs_shut ();
-
- str_uninit_strings ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#ifdef HAVE_CHARSET
-/* @DataSource("test_autocomplete_ds") */
-/* *INDENT-OFF* */
-static const struct test_autocomplete_ds
-{
- off_t input_position;
- const char *input_system_code_page;
- int input_source_codepage_id;
- const char *input_editor_code_page;
- int input_display_codepage_id;
- const char *input_completed_word;
-
- int expected_max_len;
- int expected_compl_word_count;
- int input_completed_word_start_pos;
- const char *expected_completed_word;
-} test_autocomplete_ds[] =
-{
- { /* 0. */
- 111,
- "KOI8-R",
- 0,
- "UTF-8",
- 1,
- "ÑÑйÑÑкен",
-
- 16,
- 2,
- 107,
- "ÑÑйÑÑкен"
- },
- { /* 1. */
- 147,
- "UTF-8",
- 1,
- "KOI8-R",
- 0,
- "ÜßÊÃÕËÅÎ",
-
- 8,
- 2,
- 145,
- "ÜßÊÃÕËÅÎ"
- },
-};
-/* *INDENT-ON* */
-
-/* @Test(dataSource = "test_autocomplete_ds") */
-/* *INDENT-OFF* */
-START_PARAMETRIZED_TEST (test_autocomplete, test_autocomplete_ds)
-/* *INDENT-ON* */
-{
- /* given */
- editcmd_dialog_completion_show__return_value = g_strdup (data->input_completed_word);
-
-
- mc_global.source_codepage = data->input_source_codepage_id;
- mc_global.display_codepage = data->input_display_codepage_id;
- cp_source = data->input_editor_code_page;
- cp_display = data->input_system_code_page;
-
- do_set_codepage (0);
- edit_set_codeset (test_edit);
-
- /* when */
- edit_cursor_move (test_edit, data->input_position);
- edit_complete_word_cmd (test_edit);
-
- /* then */
- mctest_assert_ptr_eq (editcmd_dialog_completion_show__edit, test_edit);
- mctest_assert_int_eq (editcmd_dialog_completion_show__num_compl,
- data->expected_compl_word_count);
- mctest_assert_int_eq (editcmd_dialog_completion_show__max_len, data->expected_max_len);
-
- {
- off_t i = 0;
- GString *actual_completed_str;
-
- actual_completed_str = g_string_new ("");
-
- while (TRUE)
- {
- int chr;
-
- chr =
- edit_buffer_get_byte (&test_edit->buffer,
- data->input_completed_word_start_pos + i++);
- if (isspace (chr))
- break;
- g_string_append_c (actual_completed_str, chr);
- }
- mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word);
- g_string_free (actual_completed_str, TRUE);
- }
-}
-/* *INDENT-OFF* */
-END_PARAMETRIZED_TEST
-/* *INDENT-ON* */
-
-/* --------------------------------------------------------------------------------------------- */
-
-/* @DataSource("test_autocomplete_single_ds") */
-/* *INDENT-OFF* */
-static const struct test_autocomplete_single_ds
-{
- off_t input_position;
- const char *input_system_code_page;
- int input_source_codepage_id;
- const char *input_editor_code_page;
- int input_display_codepage_id;
-
- int input_completed_word_start_pos;
-
- const char *expected_completed_word;
-} test_autocomplete_single_ds[] =
-{
- { /* 0. */
- 155,
- "UTF-8",
- 1,
- "KOI8-R",
- 0,
-
- 154,
- "ÆÙ×Á"
- },
-};
-/* *INDENT-ON* */
-
-/* @Test(dataSource = "test_autocomplete_single_ds") */
-/* *INDENT-OFF* */
-START_PARAMETRIZED_TEST (test_autocomplete_single, test_autocomplete_single_ds)
-/* *INDENT-ON* */
-{
- /* given */
- mc_global.source_codepage = data->input_source_codepage_id;
- mc_global.display_codepage = data->input_display_codepage_id;
- cp_source = data->input_editor_code_page;
- cp_display = data->input_system_code_page;
-
- do_set_codepage (0);
- edit_set_codeset (test_edit);
-
- /* when */
- edit_cursor_move (test_edit, data->input_position);
- edit_complete_word_cmd (test_edit);
-
- /* then */
- {
- off_t i = 0;
- GString *actual_completed_str;
-
- actual_completed_str = g_string_new ("");
-
- while (TRUE)
- {
- int chr;
-
- chr =
- edit_buffer_get_byte (&test_edit->buffer,
- data->input_completed_word_start_pos + i++);
- if (isspace (chr))
- break;
- g_string_append_c (actual_completed_str, chr);
- }
- mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word);
- g_string_free (actual_completed_str, TRUE);
- }
-}
-/* *INDENT-OFF* */
-END_PARAMETRIZED_TEST
-/* *INDENT-ON* */
-
-
-#endif /* HAVE_CHARSET */
-
-/* --------------------------------------------------------------------------------------------- */
-
-int
-main (void)
-{
- int number_failed;
-
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
-
- tcase_add_checked_fixture (tc_core, my_setup, my_teardown);
-
- /* Add new tests here: *************** */
-#ifdef HAVE_CHARSET
- mctest_add_parameterized_test (tc_core, test_autocomplete, test_autocomplete_ds);
- mctest_add_parameterized_test (tc_core, test_autocomplete_single, test_autocomplete_single_ds);
-#endif /* HAVE_CHARSET */
- /* *********************************** */
-
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "edit_complete_word_cmd.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/.github/workflows/transifex.yml
^
|
@@ -0,0 +1,32 @@
+name: Transifex
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ transifex-upload:
+
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install gettext & po4a
+ run: sudo apt-get install -y gettext po4a
+
+ - name: Install modern Transifex client
+ run: |
+ mkdir -p $HOME/.local/bin && cd $HOME/.local/bin
+ curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
+ echo "${HOME}/.local/bin" >> $GITHUB_PATH
+
+ - run: ./maint/utils/sync-transifex/po-to-transifex.py
+ env:
+ TX_TOKEN: ${{ secrets.TX_TOKEN }}
+
+ - run: ./maint/utils/sync-transifex/hints-to-transifex.py
+ env:
+ TX_TOKEN: ${{ secrets.TX_TOKEN }}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/.gitignore
^
|
@@ -47,3 +47,4 @@
make.tcc
tests/src/editor/test-data.txt
tests/src/vfs/extfs/helpers-list/data/config.sh
+mc-version.h
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/AUTHORS
^
|
@@ -132,7 +132,4 @@
Walery Studennikov <despair@sama.ru>
Charset conversion support.
-Wayne Roberts <wroberts1@home.com>
- SMBfs support.
-
Wim Osterholt <wim@djo.wtm.tudelft.nl>
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/Makefile.am
^
|
@@ -1,5 +1,5 @@
## Process this file with automake to create Makefile.in.
-AUTOMAKE_OPTIONS = 1.5
+AUTOMAKE_OPTIONS = 1.12
SUBDIRS = po lib src doc contrib misc
@@ -9,13 +9,15 @@
EXTRA_DIST =
-dist_noinst_SCRIPTS = build-glib2.sh
+dist_noinst_SCRIPTS = \
+ build-glib2.sh \
+ version.sh
-dist_noinst_HEADERS = $(top_srcdir)/version.h
+dist_noinst_HEADERS = $(top_srcdir)/mc-version.h
ACLOCAL_AMFLAGS = -I m4
-CONFIG_STATUS_DEPENDENCIES = $(top_srcdir)/version.h
+CONFIG_STATUS_DEPENDENCIES = $(top_srcdir)/mc-version.h
.PHONY: update-version \
cppcheck \
@@ -29,16 +31,16 @@
update-version:
- @if test -x $(top_srcdir)/maint/utils/version.sh; then \
- $(top_srcdir)/maint/utils/version.sh "$(top_srcdir)" 2>&1 >/dev/null; \
+ @if test -x $(top_srcdir)/version.sh; then \
+ $(top_srcdir)/version.sh "$(top_srcdir)" 2>&1 >/dev/null; \
else \
- if test ! -e $(top_srcdir)/version.h; then \
- echo "File not found: $(top_srcdir)/maint/utils/version.sh"; \
+ if test ! -e $(top_srcdir)/mc-version.h; then \
+ echo "File not found: $(top_srcdir)/version.sh"; \
exit 1; \
fi; \
fi
-$(top_srcdir)/version.h: update-version
+$(top_srcdir)/mc-version.h: update-version
CPPCHECK_CMD = cppcheck \
--inline-suppr \
@@ -58,7 +60,6 @@
CPPCHECK_OUT_EXT = log.txt
CPPCHECK_SED_FILTER = \
- -e '/\/src\/vfs\/smbfs\//d' \
-e '/is reassigned a value before the old one has been used./d' \
-e '/ Unmatched suppression: /d' \
-e "/Skipping configuration '.*' since the value of '.*' is unknown./d"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/acinclude.m4
^
|
@@ -7,6 +7,10 @@
m4_include([m4.include/gnulib/sys_types_h.m4])
m4_include([m4.include/ax_path_lib_pcre.m4])
m4_include([m4.include/dx_doxygen.m4])
+m4_include([m4.include/ax_require_defined.m4])
+m4_include([m4.include/ax_check_compile_flag.m4])
+m4_include([m4.include/ax_append_flag.m4])
+m4_include([m4.include/ax_append_compile_flags.m4])
m4_include([m4.include/mc-cflags.m4])
m4_include([m4.include/ax_gcc_func_attribute.m4])
m4_include([m4.include/mc-check-search-type.m4])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/autogen.sh
^
|
@@ -17,10 +17,7 @@
/g;s/ //g;p;}' | \
grep -v '^$' | sort | uniq >po/POTFILES.in
-cd src/vfs/smbfs/helpers
-date -u >include/stamp-h.in
-
-$srcdir/maint/utils/version.sh "$srcdir"
+$srcdir/version.sh "$srcdir"
if test -x $srcdir/configure.mc; then
$srcdir/configure.mc "$@"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/configure.ac
^
|
@@ -2,18 +2,29 @@
dnl Configure.in file for the Midnight Commander
dnl
-AC_PREREQ(2.60)
-AC_INIT([GNU Midnight Commander], [], [mc-devel@gnome.org])
+dnl 2.64 is required at least for m4_esyscmd_s()
+AC_PREREQ(2.64)
+
+AC_INIT([GNU Midnight Commander], m4_esyscmd_s([./version.sh .]),
+ [https://www.midnight-commander.org/wiki/NewTicket], [mc],
+ [https://www.midnight-commander.org/])
+
m4_pattern_forbid(MC_)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_SRCDIR(src/main.c)
AC_CONFIG_HEADERS(config.h)
-mc_VERSION
-AM_INIT_AUTOMAKE(mc, ${VERSION} )
+
+dnl Apply "no-define" to avoid defining the VERSION macro in config.h
+AM_INIT_AUTOMAKE([no-define])
+dnl PACKAGE macro isn't defined if "no-define" is applied
+AC_DEFINE([PACKAGE], ["mc"], [Name of package])
+
dnl Enable silent rules by default (if yes)
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+mc_VERSION
+
AM_MAINTAINER_MODE
AC_CANONICAL_HOST
@@ -25,7 +36,7 @@
dnl Check for compiler
dnl ############################################################################
-AC_PROG_CC_STDC
+AC_PROG_CC
AM_PROG_CC_C_O
mc_CHECK_CFLAGS
@@ -42,7 +53,7 @@
AC_ARG_ENABLE([werror],
AS_HELP_STRING([--enable-werror], [Handle all compiler warnings as errors]))
if test "x$enable_werror" = xyes; then
- mc_CHECK_ONE_CFLAG([-Werror])
+ AX_APPEND_COMPILE_FLAGS([-Werror], [mc_configured_cflags])
fi
dnl Compiler can generate warnings for unrecognized flags added to CFLAGS
@@ -115,23 +126,80 @@
AC_SUBST(MANDOC)
AC_SUBST(MAN_FLAGS)
-dnl Check for -L option to file
+dnl Check for -z, -b, -L, and -S options to file
AC_CHECK_PROG(HAVE_FILECMD, file, true, false)
if $HAVE_FILECMD; then
- AC_MSG_CHECKING([for -L option to file command])
- AC_CACHE_VAL(mc_cv_filel, [
- file -L . > /dev/null 2>&1
- if test $? = 0; then
- mc_cv_filel=yes
+ dnl Don't use the file command if it doesn't accept the -z option
+ AC_MSG_CHECKING([for -z option to file command])
+ AC_CACHE_VAL(mc_cv_file_z, [
+ file -z . > /dev/null 2>&1
+ if test $? = 0; then
+ mc_cv_file_z=yes
+ else
+ mc_cv_file_z=no
+ fi
+ ])
+ AC_MSG_RESULT([$mc_cv_file_z])
+
+ if test x$mc_cv_file_z = xyes; then
+ AC_DEFINE(USE_FILE_CMD, 1, [Define if the file command accepts the -z option])
else
- mc_cv_filel=no
+ AC_MSG_WARN([The file command doesn't accept the -z option and will not be used])
fi
- ])
- if test x$mc_cv_filel = xyes; then
- AC_DEFINE(FILE_L, 1, [Define if the file command accepts the -L option])
+
+ if test x$mc_cv_file_z = xyes; then
+ dnl file is used; check -b, -L and -S options
+
+ AC_MSG_CHECKING([for -b option to file command])
+ AC_CACHE_VAL(mc_cv_file_b, [
+ file -b . > /dev/null 2>&1
+ if test $? = 0; then
+ mc_cv_file_b=yes
+ else
+ mc_cv_file_b=no
+ fi
+ ])
+ AC_MSG_RESULT([$mc_cv_file_b])
+
+ if test x$mc_cv_file_b = xyes; then
+ AC_DEFINE(FILE_B, "-b ", [Define if the file command accepts the -b option])
+ fi
+
+ AC_MSG_CHECKING([for -L option to file command])
+ AC_CACHE_VAL(mc_cv_file_L, [
+ file -L . > /dev/null 2>&1
+ if test $? = 0; then
+ mc_cv_file_L=yes
+ else
+ mc_cv_file_L=no
+ fi
+ ])
+ AC_MSG_RESULT([$mc_cv_file_L])
+
+ if test x$mc_cv_file_L = xyes; then
+ AC_DEFINE(FILE_L, "-L ", [Define if the file command accepts the -L option])
+ else
+ AC_DEFINE(FILE_L, "", [Define if the file command accepts the -L option])
+ fi
+
+ dnl The file command accepts the -S option since 5.33
+ AC_MSG_CHECKING([for -S option to file command])
+ AC_CACHE_VAL(mc_cv_file_S, [
+ file -S . > /dev/null 2>&1
+ if test $? = 0; then
+ mc_cv_file_S=yes
+ else
+ mc_cv_file_S=no
+ fi
+ ])
+ AC_MSG_RESULT([$mc_cv_file_S])
+
+ if test x$mc_cv_file_S = xyes; then
+ AC_DEFINE(FILE_S, "-S ", [Define if file command accepts the -S option])
+ else
+ AC_DEFINE(FILE_S, "", [Define if file command accepts the -S option])
+ fi
fi
- filel=$mc_cv_filel
- AC_MSG_RESULT([$filel])
fi
dnl Only list browsers here that can be run in background (i.e. with `&')
@@ -258,13 +326,6 @@
fi
fi
-dnl Sequent wants getprocessstats
-AC_CHECK_LIB(seq, get_process_stats, [
- LIBS="$LIBS -lseq"
- AC_DEFINE(HAVE_GET_PROCESS_STATS, 1,
- [Define if you have function `get_process_stats' and
-have to use that instead of gettimeofday])])
-
mc_GET_FS_INFO
@@ -275,7 +336,7 @@
AC_CHECK_FUNCS([setlocale])
AM_GNU_GETTEXT([external], [need-ngettext])
-AM_GNU_GETTEXT_VERSION([0.18.1])
+AM_GNU_GETTEXT_VERSION([0.18.2])
mc_I18N
@@ -286,11 +347,13 @@
case $host_os in
*os400)
AC_PATH_PROG([PERL], [perl], [/QOpenSys/pkgs/bin/perl])
+ AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/QOpenSys/pkgs/bin/perl])
AC_PATH_PROG([PYTHON], [python], [/QOpenSys/pkgs/bin/python2])
AC_PATH_PROG([RUBY], [ruby], [/QOpenSys/pkgs/bin/ruby])
;;
*)
AC_PATH_PROG([PERL], [perl], [/usr/bin/perl])
+ AC_PATH_PROG([PERL_FOR_BUILD], [perl], [/usr/bin/perl])
AC_PATH_PROG([PYTHON], [python], [/usr/bin/python])
AC_PATH_PROG([RUBY], [ruby], [/usr/bin/ruby])
esac
@@ -400,43 +463,6 @@
dnl ############################################################################
-dnl Where config files should be placed
-dnl ############################################################################
-
-AC_ARG_WITH([homedir],
- AS_HELP_STRING([--with-homedir],
- [Choose any place of user settings relative to home dir, or XDG for respect XDG standards @<:@XDG@:>@]),
- [
- dnl Unfortunately, there is no way to tell AC_ARG_WITH that the
- dnl argument value is required, so we can't differentiate
- dnl between `--with-homedir` and `--with-homedir=yes`, because
- dnl `with_homedir` is set to `yes` in both cases.
- dnl
- dnl We opt to set `with_homedir` to `.mc` if the value is `yes`
- dnl in order to avoid the surprise for users using
- dnl `--with-homedir` w/o any value and then getting mc to store
- dnl settings in the `yes` directory.
-
- if test "x$withval" = "xXDG"; then
- with_homedir=XDG
- elif test "x$withval" = "xyes"; then
- with_homedir=.mc
- else
- with_homedir=$withval
- fi
- ],
- [with_homedir=XDG])
-
-
-if test x$with_homedir = xXDG; then
- AC_DEFINE(MC_HOMEDIR_XDG, 1, [Define to enable XDG standard support])
-else
- AC_DEFINE(MC_HOMEDIR_XDG, 0, [Define to disable XDG standard support])
- AC_DEFINE_UNQUOTED([MC_USERCONF_DIR], ["$with_homedir"], [Where configs will be placed relative to $HOME])
-fi
-
-
-dnl ############################################################################
dnl MC options
dnl ############################################################################
@@ -548,7 +574,7 @@
test x"$textmode_x11_support" = x"yes" -o x"$enable_aspell" = x"yes"])
AC_ARG_ENABLE([configure-args],
- AS_HELP_STRING([--enable-configure-args], [Handle all compiler warnings as errors]))
+ AS_HELP_STRING([--enable-configure-args], [Embed ./configure arguments into binaries]))
if test "x$enable_configure_args" != xno; then
AC_DEFINE([ENABLE_CONFIGURE_ARGS], 1, [Define to enable showing configure arguments in help])
AC_DEFINE_UNQUOTED([MC_CONFIGURE_ARGS], ["$ac_configure_args"], [MC configure arguments])
@@ -567,12 +593,6 @@
Makefile
contrib/Makefile
-contrib/dist/Makefile
-contrib/dist/gentoo/Makefile
-contrib/dist/redhat/Makefile
-contrib/dist/redhat/mc.spec
-contrib/dist/pkginfo
-contrib/dist/prototype
misc/Makefile
misc/mc.charsets
@@ -585,7 +605,7 @@
misc/ext.d/text.sh
misc/ext.d/web.sh
misc/macros.d/Makefile
-misc/mc.ext
+misc/mc.ext.ini
src/Makefile
src/consaver/Makefile
@@ -642,8 +662,6 @@
src/vfs/sfs/Makefile
-src/vfs/smbfs/Makefile
-
src/vfs/tar/Makefile
src/vfs/undelfs/Makefile
@@ -662,7 +680,6 @@
lib/widget/Makefile
misc/syntax/Makefile
-misc/syntax/Syntax
doc/Makefile
@@ -688,6 +705,11 @@
po/Makefile.in
])
+dnl https://stackoverflow.com/questions/30897170/ac-subst-does-not-expand-variable/30932102#30932102
+AC_CONFIG_FILES(
+[misc/syntax/Syntax], [sed -i -e "s%\${prefix}%$PREFIX%" misc/syntax/Syntax], [export PREFIX=$prefix]
+)
+
AC_CONFIG_FILES([
tests/Makefile
tests/lib/Makefile
@@ -705,6 +727,7 @@
tests/src/vfs/extfs/helpers-list/Makefile
tests/src/vfs/extfs/helpers-list/data/config.sh
tests/src/vfs/extfs/helpers-list/misc/Makefile
+tests/src/vfs/ftpfs/Makefile
])
AC_OUTPUT
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/contrib/Makefile.am
^
|
@@ -1,6 +1,3 @@
-## Process this file with automake to create Makefile.in.
-
-SUBDIRS = dist
noinst_DATA = README.xterm
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/contrib/README.xterm
^
|
@@ -102,7 +102,7 @@
Please, if you find any problems or errors in this stuff, let me know by
e-mail to
-mc-devel@gnome.org.
+mc-devel@lists.midnight-commander.org.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/FAQ
^
|
@@ -2,7 +2,7 @@
Frequently Asked Questions
The newest version of this document is available at
- http://www.midnight-commander.org/browser/doc/FAQ
+ https://www.midnight-commander.org/browser/doc/FAQ
* 1 Getting started
+ 1.1 What is Midnight Commander?
@@ -177,7 +177,7 @@
1.6 Where can I get GNU Midnight Commander?
- The main site is http://www.midnight-commander.org
+ The main site is https://www.midnight-commander.org
1.7 I cannot compile MC. What should I do?
@@ -723,15 +723,6 @@
9.2 When I start Midnight Commander, nothing happens!
- When MC is compiled with Samba support, have a look at the
- "interfaces = ..." line in your smb.conf file. MC uses pretty old
- Samba code that only expects IP addresses and host names there,
- but not network interface names (like eth0). MC interprets these
- names as host names and tries to resolve them using a DNS server.
- To fix this, ask your system administrator to change the interface
- names to their assigned IP addresses, or (untried) add the interface
- names and their IP addresses to the /etc/hosts file.
-
First, invoke MC without subshell support: "mc -u". If this helps
check the shell you are using. Subshell support works best with
bash, although tcsh and zsh are also supported. You might want to
@@ -793,16 +784,16 @@
* Adam Tla/lka
Current list of active developers can be found here:
- http://www.midnight-commander.org/wiki/McDevelopers
+ https://www.midnight-commander.org/wiki/McDevelopers
This page lists everbody who has provided a patch or
has written code for the Midnight Commander in the past:
- http://www.midnight-commander.org/wiki/McContributors
+ https://www.midnight-commander.org/wiki/McContributors
10.2 Do I dare to use a development version?
Yes, of course. Feel free to test:
- http://www.midnight-commander.org/wiki#Download
+ https://www.midnight-commander.org/wiki#Download
As we do our development in git, please do a git checkout
of the master branch and build it
@@ -817,10 +808,10 @@
the bug is fixed or the feature is added already.
If this is not the case, feel free to add a ticket in our ticket system,
- which is located here: http://www.midnight-commander.org/newticket
+ which is located here: https://www.midnight-commander.org/newticket
- If you want to send an email instead write your report to mc-devel@gnome.org
- or mc@gnome.org.
+ If you want to send an email instead write your report to
+ mc-devel@lists.midnight-commander.org or mc@lists.midnight-commander.org.
These mailing lists are the most certain way to contact the
developers. Remember to mention if you are not on the mailing list
@@ -850,7 +841,7 @@
10.4 How can I join the development?
To join the development just code the feature you want to add and
- send your patch for inclusion. Email address is mc-devel@gnome.org.
+ send your patch for inclusion. Email address is mc-devel@lists.midnight-commander.org.
Before you start coding check the latest development version. It
might be that your feature has already been implemented.
@@ -872,21 +863,21 @@
fixed in the new versions.
If you still can't find an answer, post your question to the Midnight
- Commander mailing list. Its address is mc@gnome.org.
+ Commander mailing list. Its address is mc@lists.midnight-commander.org.
11.2 What mailing lists are there for Midnight Commander?
Following mailing lists discuss about Midnight Commander:
- mc@gnome.org
+ mc@lists.midnight-commander.org
General discussion of GNU Midnight Commander
To subscribe visit
- http://mail.gnome.org/mailman/listinfo/mc/
+ https://lists.midnight-commander.org/mailman/listinfo/mc/
- mc-devel@gnome.org
+ mc-devel@lists.midnight-commander.org
Technical development discussion
To subscribe visit
- http://mail.gnome.org/mailman/listinfo/mc-devel/
+ https://lists.midnight-commander.org/mailman/listinfo/mc-devel/
mc-commits@googlegroups.com
mailing list only for applyed commits into master/stable branches
@@ -902,7 +893,7 @@
There is a WWW page for Midnight Commander. The URL is:
- http://www.midnight-commander.org/
+ https://www.midnight-commander.org/
11.4 Are the mailing lists archived anywhere?
@@ -921,7 +912,7 @@
12.2 Feedback is invited
Send your comments about this document and GNU Midnight Commander to
- mc@gnome.org
+ mc@lists.midnight-commander.org
12.3 Disclaimer and copyright
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/HACKING
^
|
@@ -16,13 +16,13 @@
To compile GNU Midnight commander from GIT, the following software is
required:
-Autoconf 2.52 and above (latest is recommended)
-Automake 1.5 and above (latest is recommended)
-Gettext 0.11.5 and above
+Autoconf 2.64 and above (latest is recommended)
+Automake 1.12 and above (latest is recommended)
+Gettext 0.18.2 and above
Glib 2.30 and above
Full list of requirements you can see at:
-http://www.midnight-commander.org/wiki/doc/buildAndInstall/req
+https://www.midnight-commander.org/wiki/doc/buildAndInstall/req
It is recommended that all those tools are installed with the same
prefix. Make sure that the tools with the right version are first in
@@ -41,7 +41,7 @@
Note that the version of gettext doesn't affect the snapshot because the
distributed files are installed by gettext from archives for the version
-used in the AM_GNU_GETTEXT_VERSION macro, which is 0.11.5.
+used in the AM_GNU_GETTEXT_VERSION macro, which is 0.18.2.
@@ -274,7 +274,7 @@
The official place for bug reports is:
- http://www.midnight-commander.org/
+ https://www.midnight-commander.org/
There are various unofficial sources where bug reports and patches can
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/INSTALL
^
|
@@ -12,13 +12,13 @@
- glibc
- gcc
- make
-- autoconf
-- automake
+- autoconf >= 2.64
+- automake >= 1.12
- libtool
- glib2 >= 2.30
- slang2 or ncurses
-- gettext >= 0.18.1
-- libssh2 >= 1.2.5 is required only for sftp vfs (1.2.7 if you need ssh-agent support)
+- gettext >= 0.18.2
+- libssh2 >= 1.2.8 is required only for sftp vfs
- libaspell to support spell checking in the internal editor
- ext2fs >= 1.42.4 to support ext{2,3,4}fs extended attributes
@@ -194,15 +194,6 @@
libext2fs library available, this option adds support for
recovering deleted files (the undel virtual file system).
-`--enable-vfs-smb'
- (off by default)
- This option enables remote VFS over the SMB protocol. A stripped
- down version of samba distributed with the sources is compiled and
- linked with the mc executable. It is recommended that you install
- Samba client, since mc uses some files from Samba under certain
- conditions. Please visit http://www.samba.org/ to learn more.
-
-
Screen library:
- - - - - - - -
@@ -219,14 +210,6 @@
`ncurses' means ncurses library already installed on the system.
The S-Lang library is used by default if found.
-`--with-slang-includes=[DIR]'
- Set path to SLANG includes [default=/usr/include]; make sense
- only if --with-screen=slang is used.
-
-`--with-slang-libs=[DIR]'
- Set path to SLANG library [default=/usr/lib]; mke sense only
- if --with-screen=slang is used.
-
`--with-ncurses-includes=[DIR]'
Set path to ncurses includes [default=/usr/include]; make
sense only if --with-screen=ncurses is used;
@@ -305,13 +288,13 @@
There are two mailing lists for the program:
-mc@gnome.org: Discussion on GNU Midnight Commander file manager.
-mc-devel@gnome.org: Discussion between the developers of the program.
+mc@lists.midnight-commander.org: Discussion on GNU Midnight Commander file manager.
+mc-devel@lists.midnight-commander.org: Discussion between the developers of the program.
To subscribe to the mailing lists, visit their respective pages:
-http://mail.gnome.org/mailman/listinfo/mc/
-http://mail.gnome.org/mailman/listinfo/mc-devel/
+https://lists.midnight-commander.org/mailman/listinfo/mc/
+https://lists.midnight-commander.org/mailman/listinfo/mc-devel/
Notes about GNU Midnight Commander installation
@@ -368,9 +351,9 @@
Right Direction we will be glad to hear from you.
If you happen to find a feature that doesn't do what you expect, please
-write to mc@gnome.org telling as much as you can about the problem
-you're experiencing. Please don't send personal messages to the
-maintainers.
+write to mc@lists.midnight-commander.org telling as much as you can
+about the problem you're experiencing. Please don't send personal
+messages to the maintainers.
Obtaining related software
@@ -468,6 +451,4 @@
./configure \
--prefix=/usr/local \
- --with-screen=slang \
- --with-slang-includes=/usr/local/include \
- --with-slang-libs=/usr/local/lib
+ --with-screen=slang
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/MAINTAINERS
^
|
@@ -1 +1 @@
-Email: mc-devel@gnome.org
+Email: mc-devel@lists.midnight-commander.org
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/NEWS
^
|
@@ -1,45 +1,212 @@
+Version 4.8.29
+
+- Core
+
+ * Add more options for panel filter (#1373):
+ * "Files only" (#4209)
+ * "Case sensitive" (#4334)
+ * "Using shell patterns"
+ * Continue copy after interrupt (#4409)
+ * Restore menu accelerator for "Sort order": back to "S"; change menu accelerator for "SFTP link" to "N" (#4373)
+ * Add support for cross-compilation with PERL path different between --build and --host (#4399)
+ * Bootstrap with autotools providing direct support for Apple M1
+ * Port mc.ext to INI format and rename to mc.ext.ini (#4141, #3742, #3191)
+ * Implement compound (AND) conditions (Type/Shell and Type/Regex pairs) to disambiguate overloaded extensions
+ * There is no fallback to previous mc.ext format
+
+- Editor
+
+ * Change location of all user's syntax related stuff to ~/.local/share/mc/syntax/ directory (#4413)
+ * syntax/Syntax: document location of syntax files (#4320)
+ * Improvements of syntax highlighting:
+ * YAML: improve multiline blocks highliting (#4059)
+ * New syntax highlighting:
+ * Privoxy (https://www.privoxy.org) actions files (#4384)
+ * TOML (Tom's Obvious Minimal Language) (#4412)
+
+- Misc
+
+ * Code cleanup (#4357, #4397, #4425)
+ * sqlite3 view: use 'immutable=1' URI parameter to prevent leaving wal/shm files after viewing sqlite database (#4369)
+ * Support of contour terminal emulator (https://github.com/contour-terminal/contour) (#4396)
+ * mc.ext.ini: clarify regex for makefiles (#4419)
+ * Remove empty hints translations by setting 5% threshold (#3608)
+
+- Fixes
+
+ * Fail to build with only SFTP network VFS is enabled (#4420)
+ * Crash on quick view of archives (#4398)
+ * Wrong description of --enable-configure-args option (#4400)
+ * Wrong version sort (#4374)
+ * No subshell if subshell is initializing more than 1 second (#3121)
+ * Filter keyboard shortcut only affects left panel (#4383)
+ * File type check does not work with special character in filename (#4377)
+ * Select files keeping the right mouse button pressed doesn't select all files (#4381)
+ * Cannot scroll panel listing upwards using mouse (#4119)
+ * "Directory Compare" doesn't correct work with panelization (#3220)
+ * Wrong decompressing of zip files in quick view panel (#4404)
+ * mc.ext: 'include' keyword (for command class def) have no effect if it was defined before 'Include' keyword (for command def) (#2773)
+ * mcedit: infinite loop when deleting a macro (#4391)
+ * mcviewer: segfault when switching from raw to parsed mode and back (#4401)
+ * Broken handling of zip archives (#4368)
+ * FISH subshell: commands don't work after window resize (#4372)
+ * FTP VFS: doesn't reconnect to server after timeout (#3670)
+ * FISH VFS: cannot remove non-empty directory (#4364)
+ * EXTFS VFS: segfault if archive contains file(s) in the parent directory (#4422, #4427)
+ * Tests: variable redeclaration in filevercmp_test5 (#4358)
+
+
+Version 4.8.28
+
+- VFS
+
+ * Remove SMB support (#1)
+
+- Editor
+
+ * Add syntax highlighting:
+ * Ngspice/SPICE (http://ngspice.sourceforge.net/) (#4316, #4319)
+ * DOT/Graphviz (https://graphviz.org/doc/info/lang.html) (#4322)
+
+- Viewer
+
+ * Support file/dir macros from mc.ect for standalone viewer (#4150)
+
+- Misc
+
+ * Minimal version of "check" utility is 0.9.10.
+ * Code cleanup (#4270, #4330)
+ * Support Shift+Fn keys for KiTTY (#4325)
+ * Filehighlight:
+ * graphical formats: avif, jp2, jxl, heic, heif, psb, psd (#4328)
+ * Markdown (#4351)
+
+- Fixes
+
+ * FTBFS with ncurses build with --disable-widec (#4200)
+ * There is no exit on Ubuntu PPC64 big endian (#3887)
+ * Segfault on change panel mode (#4323)
+ * Accelerator conflict in Left/Right menu (#4284)
+ * move a lot of files across filesystems is slow (#4287)
+ * mc.ext: wrong order of rules: general matches are made before more specific ones (#4273)
+ * mc.ext: compressed man pages are shown unformatted (#4272)
+ * ext.d/misc.sh: invoking /bin/cat on systems that have no /bin/cat (like NixOS) (#4298)
+ * mcedit: errors in syntax definitions (#4286)
+ * VFS: FISH: when uploading a symbolic link, it creates both the link and its target (#4281)
+ * VFS: SFTP: timestamps are not preserved for uploaded symlink (#4285)
+ * VFS: EXTFS: incorrect test of isoinfo (#4326)
+ * Typo in skin files (#3146)
+
+
+Version 4.8.27
+
+- Core
+
+ * Minimal version of Autoconf is 2.64 (#3603)
+ * Minimal version of Automake is 1.12 (#3986)
+ * Minimal version of Gettext is 0.18.2 (#3603)
+ * Minimal version of libssh2 is 1.2.8 (#4259)
+ * Reimplement version detection (#3603, #4249)
+ * Significantly reduce rebuilt time after version change (#2252, #4266)
+ * Drop automatic migration of configuration from ~/.mc to XDG-based directories (#3682)
+ * zsh: support custom configuration file: ~/.local/share/mc/.zshrc (#4203)
+ * Widgets: implement WST_VISIBLE state to show/hide widgets (#2919)
+ * "Find File": add "Follow symlinks" option (#2020)
+
+- VFS
+
+ * extfs: support unrar-6 (#4154)
+ * extfs: support official 7z binary (7zz) (#4239)
+ * ftpfs: apply file list parser from lftp project (#2841, #3174)
+
+- Editor
+
+ * Word completion: get candidates from all open files (#4160)
+ * etags: get rid of hardcoded list length and window width (#4132)
+ * Update syntax files:
+ - Python (#4140)
+ * Add syntax highlighting:
+ - Verilog and SystemVerilog header files (#4215)
+ - JSON (#4250)
+ - openrc-run scripts (#4246)
+
+- Misc
+
+ * Code clean up (#4179, #4173, #4269)
+ * Filehighlight of c++ and h++ files as sources (#4194)
+ * Filehighlight of JSON files as documents (#4250)
+ * Support of alacritty terminal emulator (https://github.com/alacritty/alacritty) (#4248)
+ * Support of foot terminal emulator (https://codeberg.org/dnkl/foot) (#4251)
+ * Support of (alt+)shift+arrow keys in st terminal emulator (st.suckless.org) (#4267)
+ * Mouse support in screen: don't check $DISPLAY variable (#4233)
+ * mc.ext: support fb2 e-books (#4167)
+ * ext.d: use mediainfo to view info about various media files (#4167)
+ * Remove OS/distro-specific package-related stuff from source tree (#4217)
+
+- Fixes
+
+ * FTBFS against NCurses on OS X 10.9.5 (#4181)
+ * Segfault on dialog before panels get visible (#4244)
+ * Crash if shadow is out of screen (build against NCurses) (#4192)
+ * Crash in search (#4222)
+ * Crash on startup with enabled subshell in FreeBSD (workaround) (#4213)
+ * Hang on start randomly with zsh as subshell (#4198)
+ * If command line is invisible it's partially displayed (#4182)
+ * Broken handling of zip archives (#4180, #4183)
+ * Broken handling of jar files as zip archives (#4223)
+ * Timestamps of symlinks, sockets, fifos, etc are not preserved after copy/move (#3985)
+ * %view action in the user menu doesn't work on no-exec filesystem (#4242)
+ * Hardlinks are not colored by file type or extension (#3375)
+ * mcedit: silent macro makes terminal disrupted (#4171)
+ * mcedit: disrupting of TAGS file path (#4207)
+ * vfs: unable to browse compressed tar archives (#4191)
+ * sftpfs vfs: CVE-2021-36370: server fingerprint isn't verified (discovered by AUT-milCERT during an audit of open source software) (#4259)
+ * ftpfs vfs: month of file is always January (#4260)
+ * Tests: log files are written by libcheck and automake simultaneously (#3986)
+
+
Version 4.8.26
- Core
- * Support file names of any length (#4145)
- * Implement persistent command line buffer for subshell (bash >= 4, zsh and fish are supported) (#4114, #4124, #4126)
- * Implement shadows of dialog windows and menus (#4102)
- * Allow running clipboard commands if DISPLAY is not set (#4133)
- * Add support of "alacritty", "tmux", and "tmux-256color" terminals (#4149)
+ * Support file names of any length (#4145)
+ * Implement persistent command line buffer for subshell (bash >= 4, zsh and fish are supported) (#4114, #4124, #4126)
+ * Implement shadows of dialog windows and menus (#4102)
+ * Allow running clipboard commands if DISPLAY is not set (#4133)
+ * Add support of "alacritty", "tmux", and "tmux-256color" terminals (#4149)
- VFS
- * Support wim archive format (using wimtools (https://wimlib.net/)) (#4100)
- * Support pak archive format (using unar (https://theunarchiver.com/)) (#4130)
+ * Support wim archive format (using wimtools (https://wimlib.net/)) (#4100)
+ * Support pak archive format (using unar (https://theunarchiver.com/)) (#4130)
- Editor
- * Add Swift syntax highlighting (MidnightCommander/mc#159)
+ * Add Swift syntax highlighting (MidnightCommander/mc#159)
- Misc
- * Code cleanup (#4103, #4127, #4131)
- * ext.d/sound.sh: replace xmms with audacious (part of #4127)
- * mc.ext: improve handling of compressed content (#4128, #2117)
- * mc.ext: add support for OpenDocument flax xml formats: fodt, fods, fodp, fodg (#4157)
- * Filehighlight fodg, fodp, fods, fodt, odg files as documents
- * modarcon16 skin: make consistent with whitespaces (#4158)
+ * Code cleanup (#4103, #4127, #4131)
+ * ext.d/sound.sh: replace xmms with audacious (part of #4127)
+ * mc.ext: improve handling of compressed content (#4128, #2117)
+ * mc.ext: add support for OpenDocument flax xml formats: fodt, fods, fodp, fodg (#4157)
+ * Filehighlight fodg, fodp, fods, fodt, odg files as documents
+ * modarcon16 skin: make consistent with whitespaces (#4158)
- Fixes
- * 0000 permissions are not preserved on copy/move file (#4155)
- * Chattr dialog doesn't work with mouse (#4104)
- * Wrong copy ETA displaying if "Follow links" option is set (#4101)
- * C-i ("change panel" shortcut) has no effect (#4107)
- * C-l ("refresh screen") and A-` ("switch screens") shortcuts have no effect (#4142, #4153)
- * Cancel of history or completion window marks input lines as modified (#4152)
- * Unexpected subshell execution at panel switch (#2110)
- * Lock up after pressing Tab in subshell (#2269)
- * tcsh: error: "The Commander can't change to the directory" (#4120)
- * vfs: extfs: cannot handle files with name started with dash or space (#4077)
- * vfs: hang on accessing files within a nested VFS for first 60 seconds (#4147)
- * vfs: lose content of the current directory on a mounted CIFS share (on Linux >= 5.1) (#3987)
+ * 0000 permissions are not preserved on copy/move file (#4155)
+ * Chattr dialog doesn't work with mouse (#4104)
+ * Wrong copy ETA displaying if "Follow links" option is set (#4101)
+ * C-i ("change panel" shortcut) has no effect (#4107)
+ * C-l ("refresh screen") and A-` ("switch screens") shortcuts have no effect (#4142, #4153)
+ * Cancel of history or completion window marks input lines as modified (#4152)
+ * Unexpected subshell execution at panel switch (#2110)
+ * Lock up after pressing Tab in subshell (#2269)
+ * tcsh: error: "The Commander can't change to the directory" (#4120)
+ * vfs: extfs: cannot handle files with name started with dash or space (#4077)
+ * vfs: hang on accessing files within a nested VFS for first 60 seconds (#4147)
+ * vfs: lose content of the current directory on a mounted CIFS share (on Linux >= 5.1) (#3987)
Version 4.8.25
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/README
^
|
@@ -16,8 +16,8 @@
text-mode full-screen interface. It can be run on the OS console,
in xterm and other terminal emulators.
-GNU Midnight Commander allows you to manage files while making most of
-you screen and giving you a clear representation of the filesystem, yet
+GNU Midnight Commander allows you to manage files while making the most of
+your screen and giving you a clear representation of the filesystem, yet
it's simple enough to be run over a telnet or ssh session.
GNU Midnight Commander is released under the GNU General Public
@@ -45,7 +45,7 @@
The features include:
* Built in Virtual File System: manipulate remote file systems
- through the FTP and SMB protocols or over secure shell, browse
+ through the FTP and SFTP protocols or over secure shell, browse
contents of tar, ar, rpm, zip, cpio, lha and rar archives just
like local files.
@@ -160,9 +160,13 @@
Also you can use mc mailing lists to discuss problems.
-There are two mailing lists, mc@gnome.org and mc-devel@gnome.org. Use
-mc-devel@gnome.org if you are prepared for a more technical discussion
-with the developers of the package, otherwise use mc@gnome.org.
+There are two mailing lists:
+
+ - mc@lists.midnight-commander.org
+ - mc-devel@lists.midnight-commander.org
+
+Use mc-devel@ if you are prepared for a more technical discussion
+with the developers of the package, otherwise use mc@.
Please don't sent HTML e-mail to either of those mailing lists.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/README.txt
^
|
@@ -1,4 +1,4 @@
ATTENTION! Don't edit hint-files in this directory!
Remember that all these files is a TARGET for files originally placed on Transifex:
-https://www.transifex.com/projects/p/mc/resource/mc_hint/
+https://www.transifex.com/mc/mc/mc-hint--master/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.be
^
|
@@ -14,9 +14,9 @@
Намінка. Калі тэрмінал ня мае функцыянальных клявішаў, ужывайце «ESC+лічба».
-Намінка. Бачына «Міднайт Камандэра» — http://www.midnight-commander.org/.
+Намінка. Бачына «Міднайт Камандэра» — https://www.midnight-commander.org.
-Намінка. Пра хібы паведамляйце на mc-devel@gnome.org.
+Намінка. Пра хібы паведамляйце на mc-devel@lists.midnight-commander.org.
Намінка. «Tab» зьмяняе дзейную панэль.
@@ -24,7 +24,7 @@
Намінка. У нас ёсьць добрае правадніцтва.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Намінка. Хочаце перасоўвацца, як у «Lynx»? Вызначце гэта ў «Настаўленьнях».
Намінка. Макрасы «%» працуюць нават у загадным радку.
@@ -52,7 +52,7 @@
Намінка. Каб хутка зьмяніць каталёґ, калі набіраеце загад, цісьніце «M-c».
-Уважце: загады абалонкі могуць не працаваць на немясцовых файлавых сыстэмах.
+Намінка: загады абалонкі могуць не працаваць на немясцовых файлавых сыстэмах.
Намінка. «C-y» вяртае страчаны тэкст.
@@ -68,7 +68,7 @@
Намінка. Забараніць пытацца пацьвярджаць можна ў «Наладах» → «Пацьвярджаць».
-Hint: Leap to frequently used directories in a single bound with C-\.
+Намінка. Да каталёґаў, якія часта ўжываюцца, можна перайсьці па «C-\».
Намінка. Можна ўвайсьці FTP безыменным, набраўшы «cd ftp://machine.edu»
@@ -84,4 +84,4 @@
Намінка. Каб выразаць і ўстаўляць мышкаю, можа спатрэбіцца трымаць «Shift».
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Намінка. Захавайце сайты FTP, якія часта наведваеце: націсьніце «C-\».
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.bg
^
|
@@ -1,87 +1,87 @@
-Подсказка: Използвайте C-x за копиране на файлови имена с тагове на командния ред.
+Подсказка: Използвайте C-x за копиране на имената на избраните файлове на командния ред.
-Подсказка: Използвайте C-x p за копиране на сегашния път на командния ред.
+Подсказка: Използвайте C-x за копиране на имената на избраните файлове на командния ред.
-Подсказка: Довършване: използвайте M-Tab (или Esc+Tab). Натиснете го повторно за получаване на списък.
+Подсказка: Дописване: използвайте M-Tab (или Esc+Tab). Натиснете го повторно за списък.
-Подсказка: Използвайте M-p и M-n за достъп до командната история.
+Подсказка: Използвайте M-p и M-n за достъп до историята на командите.
-Подсказка: Нуждаете се да използвате символ буквално? Използвайте Control-q и символа.
+Подсказка: Ако искате да ползвате знак буквално, ползвайте Control-q и знака.
-Подсказка: Уморените сте от тези съобщения? Изключете ги от меню Настройки/Подредба.
+Подсказка: Ако не искате тези съобщения, ги изключете от Настройки → Разположение.
-Подсказка: Избиране на директории: добавете наклонена черта на края на поредицата от метасимволи.
+Подсказка: Изберете директории като добавите наклонена черта на края на поредицата от метасимволи.
-Подсказка: Ако вашия терминал няма ф-ве, използвайте последователността ESC+число.
+Подсказка: Ако терминалът няма функционални клавиши, използвайте последователността ESC+число.
-Подсказка: Главната страница на GNU Midnight Commander: http://www.midnight-commander.org/
+Подсказка: Главната страница на GNU Midnight Commander е https://www.midnight-commander.org
-Подсказка: Моля изпращайте всякакви доклади за бъгове на mc-devel@gnome.org
+Подсказка: Молим, изпращайте всякакви доклади за грешки на mc-devel@lists.midnight-commander.org
-Подсказка: Tab-а променя сегашния ви панел.
+Подсказка: Tab преминава към другия панел.
-Подсказка: ВФС якост: настинете enter на tar файл, за да разгледате съдържанието му.
+Подсказка: Удобства при виртуалните ФС: настинете ENTER върху архив tar, за да разгледате съдържанието му.
-Подсказка: Също така имаме приятно ръководство на потребителя.
+Подсказка: Страницата на MC в ръководството на потребителя е много полезна, вижте я.
-Подсказка: Искате ли навигация в стил lynx? Задайте я в Конфигурационния диалог.
+Подсказка: Ако искате навигация като в Lynx, задайте това в Настройки….
-Подсказка: % макроси работят дори и на командния ред.
+Подсказка: Макросите с % работят дори и на командния ред.
-Подсказка: M-! ще ви позволи да изпълните програми и да видите изходната информация във визуализатора.
+Подсказка: M-! позволява да изпълните команда и да видите изхода във визуализатора.
-Подсказка: Формата за показване на файлове може да се променя; изпълнете "man mc" за детайли.
+Подсказка: Форматът за показване на файлове може да се настрои. За подробности: „man mc“.
-Подсказка: %D/%T се заменя с файлове с тагове в обратната директория.
+Подсказка: %D/%T се заменя с избраните файлове от отсрещната директория.
-Подсказка: Искате чиста shell? Натиснете C-o, и се отново върнете обратно в MC с C-o .
+Подсказка: За да работите с обвивка, натиснете C-o, и се отново върнете обратно в Midnight Commander пак с C-o .
-Подсказка: Задаването на променливата CDPATH може да ви спести клавишни натискания при cd командите.
+Подсказка: Задаването на променливата CDPATH спестява време при командите за смяна на директория.
-Подсказка: Ако искате да виждате вашите .* файлове, кажете така в Конфигурационния диалог.
+Подсказка: Ако искате да виждате скритите (.*) файлове в панела, задайте това в Настройки на панел….
-Подсказка: Искате да виждате вашите *~ резервни файлове? Задайте ги в Конфигурационния диалог.
+Подсказка: Ако искате да виждате резервните (*~) файлове в панела, задайте това в Настройки на панел….
-Подсказка: Довършването работи върху всички входящи файлове във всички диалози. Просто натиснете
+Подсказка: Дописването работи с всички входни полета във всички диалози. Просто натиснете M-Tab.
-Подсказка: На бавни терминали флага -s може да помогне.
+Подсказка: На бавни терминали опцията -s може да помогне.
-Подсказка: Намиране на файл: можете да работите върху намерените файлове, използвайки бутона Панелизация.
+Подсказка: Търсене на файл: може да оперирате върху намерените файлове с командата за Външен панел.
-Подсказка: Искате сложни търсения? Използвайте командата за Външна Панелизация.
+Подсказка: Искате сложни търсения? Използвайте командата за Външен панел.
-Подсказка: За промяна на директория по време на писане чрез команда, използвайте M-c (бързо търсене).
+Подсказка: За промяна на директория по време на писане на команда, ползвайте M-c (Бърза смяна — cd).
-Забележка: Командите на shell-а няма да работят, когато сте на не-локална файлова система.
+Подсказка: Командите на обвивката не работят, когато не сте в локална файлова система.
-Подсказка: Съживете текст с C-y.
+Подсказка: Може да възстановите текст с C-y.
-Подсказка: Не работят ли някои от клавишите ви? Погледнете в Настройки/Изучаване на клавиши.
+Подсказка: Ако някои от клавишите не работят, погледнете в Настройки → Задаване на клавиши….
-Подсказка: За да разглеждате изходната информация на команда във визуализатор, използвайте M-!
+Подсказка: За да разглеждате изходната информация на команда във визуализатора, използвайте M-!.
-Подсказка: F13 (или Shift-F3) отваря визуализатора в raw режим.
+Подсказка: F13 (или Shift-F3) отваря визуализатора в режим без обработка.
-Подсказка: Можете да зададете редактор чрез F4 със специалната променлива на shell-а EDITOR.
+Подсказка: Може да зададете редактор чрез F4 с променливата на обвивката EDITOR.
-Подсказка: Можете да зададете външен визуализатор с променливите на shell-а VIEWER и PAGER.
+Подсказка: Може да зададете външен визуализатор с променливите на обвивката VIEWER и PAGER.
-Подсказка: Можете да деактивирате всички запитвания за потвърждение чрез Настройки/Потвърждаване.
+Подсказка: Може да изключите всички запитвания за потвърждение чрез Настройки → Потвърждения….
Подсказка: Преминавайте в често използваните директории с C-\.
-Подсказка: Можете да извършвате анонимно FTP с mc чрез написването на 'cd ftp://machine.edu'
+Подсказка: За да установите връзка по FTP, ползвайте адрес като: „cd ftp://machine.edu“.
-Подсказка: FTP е вграден в Midnight Commander-а, проверете менюто Файл/FTP връзка.
+Подсказка: FTP (и др.) са вграден в Midnight Commander, погледнете менюто Вляво/Вдясно → FTP.
-Подсказка: M-t променя бързо режима на показване на списъка.
+Подсказка: M-t променя режима на показване на списъка с файлове.
-Подсказка: Можете да зададете потребителското име, когато направите ftps: 'cd ftp://user@machine.edu'
+Подсказка: За да укажете потребителско име при връзка по FTP, ползвайте адрес като: „cd ftp://ПОТРЕБИТЕЛ@machine.edu“.
-Подсказка: Можете на разглеждате RPM файлове чрез натискане на enter върху rpm файл.
+Подсказка: Разглеждайте съдържанието на файлове във формат RPM като натиснете ENTER върху тях.
-Подсказка: Може да маркирате директории на диалога за селекция, добавете наклонена черта.
+Подсказка: За да изберете директории в диалога за избор, добавете наклонена черта.
-Подсказка: За използването мишката за отрежи и постави може да е нужно да задържите клавиша shift.
+Подсказка: За изрязване и поставяне с мишката трябва да задържите клавиша SHIFT.
-Подсказка: Клавиш за често използваните ftp сайтове в горещия списък: натиснете C-\.
+Подсказка: Клавиш за често използваните ftp сайтове: натиснете C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ca
^
|
@@ -14,9 +14,9 @@
Consell: Si no funcionen les tecles de funció, empreu la seqüència «ESC+número».
-Consell: La pàgina inicial del Midnight Commander de GNU és http://www.midnight-commander.org/
+Consell: La pàgina inicial del Midnight Commander de GNU és https://www.midnight-commander.org
-Consell: Si us plau, envieu qualsevol informe d'error a «mc-devel@gnome.org».
+Consell: Si us plau, envieu qualsevol informe d'error a «mc-devel@lists.midnight-commander.org».
Consell: El tabulador canvia de plafó.
@@ -52,7 +52,7 @@
Consell: Canvieu a meitat de camí del directori escrivint una ordre, empreu «M-c» («cd» ràpid).
-Nota: Les ordres de l'intèrpret d'ordres no funcionaran quan s'està en un sistema de fitxers no local.
+Сonsell: Les ordres de l'intèrpret d'ordres no funcionaran quan s'està en un sistema de fitxers no local.
Consell: Recupereu el text esborrat amb «Ctrl-y».
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.cs
^
|
@@ -14,9 +14,9 @@
Tip: Pokud váš terminál nezná nebo nemá funkční (F1-12) klávesy, použijte Esc+číslo.
-Tip: Domovská stránka GNU Midnight Commander je: http://www.midnight-commander.org/
+Tip: Domovská stránka GNU Midnight Commander je: https://www.midnight-commander.org
-Tip: Chyby hlaste na mc-devel@gnome.org (v angličtině).
+Tip: Chyby hlaste na mc-devel@lists.midnight-commander.org (v angličtině).
Tip: Pomocí klávesy Tab přejdete na další panel.
@@ -24,7 +24,7 @@
Tip: Existuje také manuálová stránka [mc(1)].
-Tip: Přejete si klávesy stejně jako v prohlížeči lynx? Přepněte si to v Nastavení.
+Tip: Přejete si klávesy stejně jako v prohlížeči Lynx? Přepněte si to v Nastavení.
Tip: Makra uvozená % fungují i na příkazovém řádku.
@@ -38,7 +38,7 @@
Tip: Nastavením proměnné CDPATH si můžete ušetřit psaní na klávesnici.
-Tip: Pokud chcete vidět soubory začínající tečkou, vyjádřete to v Nastavení.
+Tip: Pokud chcete vidět soubory začínající tečkou, povolte to v Nastavení.
Tip: Chcete vidět zálohy svých souborů (končí ~)? Použijte Nastavení.
@@ -52,7 +52,7 @@
Tip: Pokud chcete změnit složku při práci na příkazovém řádku, zkuste Meta-c.
-Pozn.: Příkazy shellu nefungují, pokud nepracujete na lokálním systému souborů.
+Tip: Příkazy shellu nefungují, pokud nepracujete na lokálním systému souborů.
Tip: Smazaný text obnovíte Ctrl-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.da
^
|
@@ -14,9 +14,9 @@
Fif: Hvis din terminal mangler funktionstaster, så rug ESC+talsekvensen.
-Fif: Hjemmesiden for GNU Midnight Commander: http://www.midnight-commander.org/
+Fif: Hjemmesiden for GNU Midnight Commander: https://www.midnight-commander.org
-Fif: Send venligst eventuelle fejlrappporter til mc-devel@gnome.org
+Fif: Send venligst eventuelle fejlrappporter til mc-devel@lists.midnight-commander.org
Fif: Tabulator skifter dit nuværende panel.
@@ -24,7 +24,7 @@
Fif: Vi har også en fin manualside.
-Fif: Vil du have navigation i lynx-stil? Sæt det i konfigurationsdialogen.
+Fif: Vil du have navigation i Lynx-stil? Sæt det i konfigurationsdialogen.
Fif: %-makroer virker også på kommandolinjen.
@@ -44,7 +44,7 @@
Fif: Fuldførelse virker på alle inputlinjer i alle dialoger. Tryk blot på M-Tab.
-Hint: På langsomme maskiner kan flaget -s hjælpe.
+Fif: På langsomme maskiner kan flaget -s hjælpe.
Fif: Find fil: du kan arbejde på de fundne filer med Panelisér-knappen.
@@ -52,7 +52,7 @@
Fif: Brug M-c (hurtig cd), til at skifte mappe halvvejs gennem indtastningen af en kommando.
-Bemærk: Skalkommandoer virker ikke når du er på et ikke-lokalt filsystem.
+Fif: Skalkommandoer virker ikke når du er på et ikke-lokalt filsystem.
Fif: Bring tekst tilbage fra de døde med C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.de
^
|
@@ -14,9 +14,9 @@
Hinweis: Wenn dein Terminal keine Funktionstasten unterstützt, benutze die Kombination Esc+Nummer.
-Hinweis: Die Homepage von GNU Midnight Commander: http://www.midnight-commander.org/
+Hinweis: Die Homepage von GNU Midnight Commander: https://www.midnight-commander.org
-Hinweis: Bitte sende alle Fehlerberichte an mc-devel@gnome.org
+Hinweis: Bitte sende alle Fehlerberichte an mc-devel@lists.midnight-commander.org
Hinweis: Tabulator wechselt das aktuelle Panel.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.el
^
|
@@ -14,9 +14,9 @@
Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-Συμβουλή: Η ιστοσελίδα του GNU Midnight Commander: http://www.midnight-commander.org/
+Συμβουλή: Η ιστοσελίδα του GNU Midnight Commander: https://www.midnight-commander.org
-Συμβουλή: Παρακαλούμε στείλτε μας αναφορές σφαλμάτων στο mc-devel@gnome.org
+Συμβουλή: Παρακαλούμε στείλτε μας αναφορές σφαλμάτων στο mc-devel@lists.midnight-commander.org
Hint: Tab changes your current panel.
@@ -24,7 +24,7 @@
Hint: We also have a nice manual page.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Συμβουλή: Θέλετε περιήγηση στο στυλ του Lynx; Ρυθμίστε το στο διάλογο Ρυθμίσεις.
Hint: % macros work even on the command line.
@@ -52,7 +52,7 @@
Συμβουλή: Για να αλλάξετε κατάλογο ενώ έχετε ήδη ξεκινήσει να πληκτρολογείτε μία εντολή, χρησιμοποιήστε το M-c (γρήγορο cd).
-Σημείωση: Οι εντολές κελύφους δε θα λειτουργήσουν όταν βρίσκεστε σε ένα μη τοπικό σύστημα αρχείων.
+Συμβουλή: Οι εντολές κελύφους δε θα λειτουργήσουν όταν βρίσκεστε σε ένα μη τοπικό σύστημα αρχείων.
Hint: Bring text back from the dead with C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.en_GB
^
|
@@ -2,7 +2,7 @@
Hint: Use C-x p to copy the current pathname to the command line.
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
+Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
Hint: Use M-p and M-n to access the command history.
@@ -14,9 +14,9 @@
Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
+Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org
-Hint: Please send any bug reports to mc-devel@gnome.org
+Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org
Hint: Tab changes your current panel.
@@ -52,7 +52,7 @@
Hint: To change directory halfway through typing a command, use M-c (quick cd).
-Note: Shell commands will not work when you are on a non-local file system.
+Hint: Shell commands will not work when you are on a non-local file system.
Hint: Bring text back from the dead with C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.eo
^
|
@@ -2,9 +2,9 @@
Konsilo: Stir-x p por kopii la nunan vojnomon al la komandlinio.
-Konsilo: Alt-Tabo (aŭ Esk-Tabo) por finigi tajpatan frazon. Dufoje por listo.
+Konsilo: Reg-Tabo (aŭ Esk-Tabo) por finigi tajpatan frazon. Dufoje por listo.
-Konsilo: Alt-p kaj Alt-n por atingi la komandan historion.
+Konsilo: Reg-p kaj Reg-n por atingi la komandan historion.
Konsilo: Stir-q por citi signon.
@@ -14,9 +14,9 @@
Konsilo: Se via terminalo malhavas funkciajn klavojn, uzu la kombinon Esk+numero.
-Konsilo: La ĉefpaĝo de Midnight Commander: http://www.midnight-commander.org/
+Konsilo: La ĉefpaĝo de Midnight Commander: https://www.midnight-commander.org
-Konsilo: Sendi raportojn pri eraroj (anglalingve) al mc-devel@gnome.org
+Konsilo: Sendi raportojn pri eraroj (anglalingve) al mc-devel@lists.midnight-commander.org
Konsilo: Tabo ŝanĝas la nunan flankon.
@@ -28,7 +28,7 @@
Konsilo: makrooj kun % funkcias eĉ ĉe la komandlinio.
-Konsilo: Alt-! por plenumigi programon kaj vidi la eligon en la dokumento-legilo.
+Konsilo: Reg-! por plenumigi programon kaj vidi la eligon en la dokumento-legilo.
Konsilo: La aranĝon en la dosiera listo agordeblas.
@@ -42,7 +42,7 @@
Konsilo: Deklari en la agorda dialogujo tian, se vi volas vidi provizorajn dosierojn.
-Konsilo: Finigo funkcias ĉe tekstaj kampoj en ĉiuj dialogujoj. Premu: Alt-Tabo.
+Konsilo: Kompletigo funkcias ĉe tekstaj kampoj en ĉiuj dialogujoj. Premu: Reg-Tabo.
Konsilo: La komandlinia parametro -s eble estus helpa por malrapidaj terminaloj.
@@ -50,17 +50,17 @@
Konsilo: Ĉu vi volas fari malsimplajn serĉojn? "Eksterigi Flankojn" uzeblas.
-Konsilo: Alt-c por ŝanĝi dosierujon dum tajpi komandon.
+Konsilo: Reg-c por ŝanĝi dosierujon dum tajpi komandon.
-Noto: Ŝelaj komandoj ne funkcias ĉe foraj dosiersistemoj.
+Konsilo: Ŝelaj komandoj ne funkcias ĉe foraj dosiersistemoj.
Konsilo: Stir-y por revivigi tekston.
Konsilo: Agordu/Lernu klavojn por certigi, ke ĉiuj klavoj funkcias.
-Konsilo: Alt-! por rigardi la eligon de komando en la dokumento-legilo.
+Konsilo: Reg-! por rigardi la eligon de komando en la dokumento-legilo.
-Konsilo: F13 (aŭ Reg-F3) por la dokumento-legilo en nuda reĝimo.
+Konsilo: F13 (aŭ Reg-F3) por la dokumento-legilo en kruda reĝimo.
Konsilo: Specifi la tekstoredaktilon por F4 per la medivariablo EDITOR.
@@ -72,9 +72,9 @@
Konsilo: 'cd ftp://machine.edu' por sennoma FTP-konekto al machine.org
-Konsilo: Dosiero/FTP por apriora FTP-kliento
+Konsilo: Dosiero/FTP por apriora FTP-kliento.
-Konsilo: Alt-t por rapide ŝanĝi la listan reĝimon
+Konsilo: Reg-t por rapide ŝanĝi la listan reĝimon.
Konsilo: Specifi la salutnomon ĉe FTP-servilo per 'cd ftp://salutnomo@machine.edu'
@@ -82,6 +82,6 @@
Konsilo: Por marki dosierujojn ĉe elektiloj almetu oblikvon.
-Konsilo: Eble vi devas premadi la registrumon por kopii kaj alglui per la muso.
+Konsilo: Eble vi devas premadi la registrumon por kopii kaj alglui per la muso
-Konsileto: Stir-\ por la plej ofte vizitaj FTP-serviloj.
+Konsilo: Stir-\ por memori oftajn FTP-servilojn.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.es
^
|
@@ -14,9 +14,9 @@
Consejo: Si no funcionan las teclas de función, ESC+número sirve.
-Consejo: El sitio oficial del Midnight Commander es http://www.midnight-commander.org/
+Consejo: El sitio oficial del Midnight Commander es https://www.midnight-commander.org
-Consejo: Comunique cualquier defecto a mc-devel@gnome.org
+Consejo: Comunique cualquier defecto a mc-devel@lists.midnight-commander.org
Consejo: El tabulador cambia de panel.
@@ -52,7 +52,7 @@
Consejo: Con M-c cambiar de directorio es un poco más cómodo.
-Nota: Las instrucciones de la Shell no funcionan fuera del sistema local.
+Consejo: Las instrucciones de la Shell no funcionan fuera del sistema local.
Consejo: Con C-y puede recuperar texto eliminado.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.et
^
|
@@ -2,7 +2,7 @@
Vihje: Kasuta C-x p, et kopeerida aktiivne otsingurada käsureale.
-Vihje: Lõpetamiseks kasuta M-Tab (või Esc-Tab). Topeltsisestus kuvab listi.
+Vihje: Lõpetamiseks kasuta M-Tab (või Esc-Tab). Topeltsisestus kuvab listi.
Vihje: Käskude ajaloo kasutamiseks kasuta M-p ja M-n.
@@ -14,9 +14,9 @@
Vihje: Kui terminalil puuduvad funktsiooniklahvid, siis kasuta ESC+number jadasid.
-Vihje: GNU Midnight Commanderi koduleht: http://www.midnight-commander.org/
+Vihje: GNU Midnight Commanderi koduleht: https://www.midnight-commander.org
-Vihje: Palun saada vearaportid aadressile mc-devel@gnome.org
+Vihje: Palun saada vearaportid aadressile mc-devel@lists.midnight-commander.org
Vihje: TAB vahetab aktiivset paneeli.
@@ -24,7 +24,7 @@
Vihje: Olemas on ka meeldiv manuaal.
-Vihje: Soovid lynxi stiilis navigeerimist? Luba see konfiguratsiooni dialoogist.
+Vihje: Soovid Lynxi stiilis navigeerimist? Luba see konfiguratsiooni dialoogist.
Vihje: %-makrod töötavad ka käsureal.
@@ -52,7 +52,7 @@
Vihje: Kataloogi kiirvahetuseks käsu sisestamise ajal kasuta M-c (quick cd).
-NB! Kesta käsud töötavad ainult kohalikus failisüsteemis.
+Vihje: Kesta käsud töötavad ainult kohalikus failisüsteemis.
Vihje: C-y taastab kustutatud teksti.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.eu
^
|
@@ -14,9 +14,9 @@
Aholkua: Zure terminalari funtzio teklak falta bazaizkio, erabili Ihes+zenbakia sekuentzia.
-Aholkua: GNU Midnight Commander-ren atariko orria: http://www.midnight-commander.org/
+Aholkua: GNU Midnight Commander-ren atariko orria: https://www.midnight-commander.org
-Aholkua: Mesedez bidali akats txosten oro hona: mc-devel@gnome.org
+Aholkua: Mesedez bidali akats txosten oro hona: mc-devel@lists.midnight-commander.org
Aholkua: Tab teklak zure uneko panela aldatzen du.
@@ -52,7 +52,7 @@
Aholkua: Direktorioz aldatzeko komando bat tekleatzen erdibidean zaudela, erabili M-c (cd azkarra).
-Oharra: Shell komandoak ez dira ibiliko bertakoa ez den fitxategi-sisteman zaudenean.
+Aholkua: Shell komandoak ez dira ibiliko bertakoa ez den fitxategi-sisteman zaudenean.
Aholkua: Ekarri atzera testua heriotzatik Ktrl-y erabilita.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.fa
^
|
@@ -14,9 +14,9 @@
راهنمایی: اگر ترمینال شما از کلیدهای فانکشن پشتیبانی نمیکند، از Esc+عدد استفاده کنید.
-راهنمایی: نشانی وبگاه فرماندار نیمهشب: http://www.midnight-commander.org/
+راهنمایی: نشانی وبگاه فرماندار نیمهشب: https://www.midnight-commander.org
-راهنمایی: لطفا هرگونه باگ را به mc-devel@gnome.org گزارش دهید.
+راهنمایی: لطفا هرگونه باگ را به mc-devel@lists.midnight-commander.org گزارش دهید.
راهنمایی: Tab قاب فعلی را عوض میکند.
@@ -52,7 +52,7 @@
راهنمایی: اگر خواستید در حین تایپ یک دستور پوشه را عوض کنید از ترکیب M-c استفاده کنید (quick cd).
-راهنمایی: زمانی که در یک فایل سیستم غیر محلی باشید دستورات شل کار نمیکنند.
+Hint: Shell commands will not work when you are on a non-local file system.
Hint: Bring text back from the dead with C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.fr
^
|
@@ -14,9 +14,9 @@
Astuce: Si votre clavier n'a pas de touche de fonction, utilisez la combinaison ESC+nombre.
-Astuce: Site officiel de GNU Midnight Commander: http://www.midnight-commander.org/
+Astuce: Site officiel de GNU Midnight Commander: https://www.midnight-commander.org
-Astuce: Envoyez vos rapports de bogues à l'adresse mc-devel@gnome.org
+Astuce: Envoyez vos rapports de bogues à l'adresse mc-devel@lists.midnight-commander.org
Astuce: La touche Tab permute le panneau courant.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ga
^
|
@@ -14,9 +14,9 @@
Leid: Má níl do críochfort eochracha feidhmeanna, bain úsáid as an ESC + seicheamh uimhir
-Leid: Leathanach baile GNU Midnight Commander: http://www.midnight-commander.org/
+Leid: Leathanach baile GNU Midnight Commander: https://www.midnight-commander.org
-Leid: Seol tuairiscí ar bith chuig mc-devel@gnome.org
+Leid: Seol tuairiscí ar bith chuig mc-devel@lists.midnight-commander.org
Leid: Athraíonn an tábla do phainéal reatha.
@@ -24,7 +24,7 @@
Leid: Tá leathanach láimhe deas againn freisin.
-Leid: An bhfuil tú ag iarraidh loingseoireacht stíl lynx? Socraigh é sa dialóg Cumraíochta.
+Leid: An bhfuil tú ag iarraidh loingseoireacht stíl Lynx? Socraigh é sa dialóg Cumraíochta.
Leid: % Macraí ag obair fiú ar na n-orduithe.
@@ -52,7 +52,7 @@
Leid: A athrú leathbhealach eolaire trí clóscríobh a dtoil, a úsáid M-c (cd tapaidh).
-Nóta: Ní oibreoidh orduithe Shell nuair a bhíonn tú ar chóras comhaid neamh-áitiúil.
+Leid: Ní oibreoidh orduithe Shell nuair a bhíonn tú ar chóras comhaid neamh-áitiúil.
Leid: Cuir téacs ar ais ó na marbh le C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.gl
^
|
@@ -2,7 +2,7 @@
Consello: C-x p copia a ruta actual na liña de ordes.
-Consello: M-Tab (ou ESC+Tab) completa ordes/nomes Dúas veces devolve unha lista.
+Consello: M-Tab (ou ESC+Tab) completa ordes/nomes Dúas veces devolve unha lista.
Consello: Use M-p e M-n para acceder ao historial de ordes.
@@ -14,15 +14,15 @@
Consello: se o seu terminal non ten teclas de función, use ESC+número.
-Consello: a páxina principal de GNU Midnight Commander é: http://www.midnight-commander.org/
+Consello: a páxina principal de GNU Midnight Commander é: https://www.midnight-commander.org
-Consello: informe de calquera erro a mc-devel@gnome.org
+Consello: informe de calquera erro a mc-devel@lists.midnight-commander.org
Consello: a tecla Tab cambia o seu panel actual.
Consello: o mellor VFS! Prema Intro nun arquivo «tar» para examinar o seu contido.
-Suxestión: temos tamén unha páxina de manual: «man mc»
+Consello: temos tamén unha páxina de manual: «man mc»
Consello: quere navegar ao estilo «Lynx» coas frechas? axústeo no cadro de diálogo de configuración.
@@ -52,7 +52,7 @@
Consello: escribindo M-c cambiar de directorio é un chisco máis doado.
-Nota: as ordes da consola non funcionan fora do sistema local.
+Consello: as ordes da consola non funcionan fora do sistema local.
Consello: Con C-y pode recuperar texto eliminado.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.hu
^
|
@@ -6,17 +6,17 @@
Tipp: Korábbi parancsok előhozása: M-p illetve M-n
-Tipp: Speciális karakter beírásához használja ezt: Control-q <karakter>
+Tipp: Speciális karakter beírásához használja ezt: Control-q E<lt>karakterE<gt>
Tipp: Az itt megjelenő üzenetek kikapcsolhatók a "Beállítások/Megjelenés"-nél.
Tipp: Könyvtárak kijelölése a minta végére / jelet írva lehetséges.
-Tipp: Ha a terminálon nincsenek funkcióbillentyűk, használja ezt: Esc <szám>
+Tipp: Ha a terminálon nincsenek funkcióbillentyűk, használja ezt: Esc E<lt>számE<gt>
-Tipp: A Midnight Commander honlapja: http://www.midnight-commander.org/
+Tipp: A Midnight Commander honlapja: https://www.midnight-commander.org
-Tipp: Hibabejelentéseket a következő címre lehet küldeni: mc-devel@gnome.org
+Tipp: Hibabejelentéseket a következő címre lehet küldeni: mc-devel@lists.midnight-commander.org
Tipp: A Tab billentyűvel lehet panelt váltani.
@@ -52,7 +52,7 @@
Tipp: Könyvtárváltás egy parancs begépelése közben: M-c (gyors könyvtárváltás).
-Megjegyzés: A shell-parancsok távoli fájlrendszereken nem használhatók.
+Tipp: A shell-parancsok távoli fájlrendszereken nem használhatók.
Tipp: A pufferben levő (például "C-k"-val oda tett) szöveg visszahozása: C-y
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.id
^
|
@@ -14,9 +14,9 @@
Petunjuk: Bila terminal Anda tak punya tombol fungsi, gunakan urutan ESC+angka.
-Petunjuk: Laman web GNU Midnight Commander: http://www.midnight-commander.org/
+Petunjuk: Laman web GNU Midnight Commander: https://www.midnight-commander.org
-Petunjuk: Harap kirim laporan bug ke mc-devel@gnome.org
+Petunjuk: Harap kirim laporan bug ke mc-devel@lists.midnight-commander.org
Petunjuk: Tab mengubah panel Anda saat ini.
@@ -24,7 +24,7 @@
Petunjuk: Kami juga memiliki halaman manual yang bagus.
-Petunjuk: Apakah Anda ingin navigasi gaya lynx? Atur itu dalam dialog Konfigurasi.
+Petunjuk: Apakah Anda ingin navigasi gaya Lynx? Atur itu dalam dialog Konfigurasi.
Petunjuk: makro bekerja bahkan pada command line.
@@ -38,7 +38,7 @@
Petunjuk: Menata variabel CDPATH dapat menghemat ketukan tombol dalam perintah cd.
-Petunjtuk: Bila Anda ingin melihat file .*, nyatakan saja dalam dialog Konfigurasi.
+Petunjuk: Bila Anda ingin melihat file .*, nyatakan saja dalam dialog Konfigurasi.
Petunjuk: Ingin melihat file cadangan *~? Atur itu dalam dialog Konfigurasi.
@@ -50,9 +50,9 @@
Petunjuk: Ingin melakukan pencarian rumit? Pakai perintah Panelkan Eksternal.
-Petunjul: Untuk pindah direktori saat tengah mengetikkan suatu perintah, gunakan M-c (cd cepat).
+Petunjuk: Untuk pindah direktori saat tengah mengetikkan suatu perintah, gunakan M-c (cd cepat).
-Catatan: Perintah shell tak akan bekerja bila Anda berada pada sistem file bukan lokal.
+Petunjuk: Perintah shell tak akan bekerja bila Anda berada pada sistem file bukan lokal.
Petunjuk: Panggil kembali teks dari kematian dengan C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.it
^
|
@@ -14,9 +14,9 @@
Suggerimento: Se nel terminale mancano i tasti di funzione, utilizzare la sequenza ESC+numero.
-Suggerimento: La pagina principale su Internet di GNU Midnight Commander é: http://www.midnight-commander.org/
+Suggerimento: La pagina principale su Internet di GNU Midnight Commander é: https://www.midnight-commander.org
-Suggerimento: Inviare i rapporti d'errore a mc-devel@gnome.org
+Suggerimento: Inviare i rapporti d'errore a mc-devel@lists.midnight-commander.org
Suggerimento: Tab modifica il pannello corrente.
@@ -52,7 +52,7 @@
Suggerimento: Per cambiare la cartella attuale mentre si sta componendo un comando: M-c (cd rapido).
-Nota: I comandi della shell non sono disponibili in un file-system non locale.
+Suggerimento: I comandi della shell non sono disponibili in un file-system non locale.
Suggerimento: Riprendere del testo con Ctrl-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ja
^
|
@@ -2,7 +2,7 @@
ヒント:C-x p で、現在のパス名をコマンドラインにコピーできます。
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
+Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
Hint: Use M-p and M-n to access the command history.
@@ -14,9 +14,9 @@
Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
+Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org
-Hint: Please send any bug reports to mc-devel@gnome.org
+Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org
Hint: Tab changes your current panel.
@@ -52,7 +52,7 @@
Hint: To change directory halfway through typing a command, use M-c (quick cd).
-Note: Shell commands will not work when you are on a non-local file system.
+Hint: Shell commands will not work when you are on a non-local file system.
Hint: Bring text back from the dead with C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ko
^
|
@@ -2,21 +2,21 @@
힌트: C-x p를 사용하여 현재 경로 이름을 명령줄에 복사합니다.
-힌트: 완료: M-Tab(또는 Esc+Tab)을 사용합니다. 목록을 가져오려면 이 항목을 두 번 입력합니다.
+힌트: 완성: M-Tab(또는 Esc+Tab)을 사용합니다. 목록을 가져오려면 이 항목을 두 번 입력합니다.
힌트: M-p 및 M-n을 사용하여 명령 기록에 액세스합니다.
-힌트: 문자를 인용해야 합니까? Control-q와 문자를 사용합니다.
+힌트: 문자를 인용해야 합니까? Control-q와 문자를 사용합니다.
힌트: 이 메시지들에 지쳤나요? Options/Layout 메뉴에서 해당 기능을 끕니다.
-힌트: 디렉토리 선택: 일치하는 패턴의 끝에 슬래시를 추가합니다.
+힌트: 디렉터리 선택: 일치하는 패턴의 끝에 슬래시를 추가합니다.
힌트: 터미널에 기능 키가 없는 경우 ESC+숫자 시퀀스를 사용합니다.
-힌트: GNU 미드나잇 커맨더 홈페이지: http://www.midnight-commander.org/
+힌트: GNU 미드나잇 커맨더 홈페이지: https://www.midnight-commander.org
-힌트: mc-devel@gnome.org으로 버그 보고서를 보내십시오.
+힌트: mc-devel@lists.midnight-commander.org 으로 버그 보고서를 보내주십시오.
힌트: 탭이 현재 패널을 변경합니다.
@@ -24,7 +24,7 @@
힌트 : 우리는 또한 멋진 매뉴얼 페이지를 가지고 있습니다.
-힌트 : lynx 스타일 탐색을 원하십니까? 구성 대화 상자에서 설정하십시오.
+힌트 : Lynx 스타일 탐색을 원하십니까? 구성 대화 상자에서 설정하십시오.
힌트: % 매크로는 명령줄에서도 작동합니다.
@@ -32,7 +32,7 @@
힌트: 파일 목록 형식을 사용자 지정할 수 있습니다. 자세한 내용은 "man mc"를 참조하십시오.
-힌트: %D/%T는 반대편 디렉토리의 태그가 지정된 파일로 확장됩니다.
+힌트: %D/%T는 반대편 디렉터리의 태그가 지정된 파일로 확장됩니다.
힌트 : 평범한 쉘을 원하십니까? C-o를 누르고 C-o를 사용하여 MC로 다시 돌아갑니다.
@@ -42,7 +42,7 @@
힌트: *~ 백업 파일을 보고 싶습니까? 환경설정 대화 상자에서 설정합니다.
-힌트: 모든 대화상자의 모든 입력 라인에 대해 완료가 작동합니다. 그냥 M-Tab을 누르세요.
+힌트: 완성은 모든 대화 상자의 모든 입력 라인에서 작동합니다. M-Tab을 누르면 됩니다.
힌트: 느린 터미널에서 -s 플래그가 도움이 될 수 있습니다.
@@ -52,7 +52,7 @@
힌트: 명령 입력을 중간에 수행하려면 M-c(빠른 cd)를 사용합니다.
-참고: 로컬이 아닌 파일 시스템에 있는 경우 셸 명령이 작동하지 않습니다.
+힌트: 로컬이 아닌 파일 시스템에 있는 경우 셸 명령이 작동하지 않습니다.
힌트: C-y와 함께 죽은 것들로부터 문자를 가져옵니다.
@@ -76,12 +76,12 @@
힌트: M-t는 목록 모드를 빠르게 변경합니다.
-힌트: 'cd ftp://user@machine.edu'를 수행할 때 사용자 이름을 지정할 수 있습니다.
+힌트: ftps를 실행할 때 사용자 이름을 지정할 수 있습니다: 'cd ftp://user@machine.edu'
힌트 : rpm 파일의 맨 위에서 Enter를 눌러 RPM 파일을 탐색 할 수 있습니다.
-힌트: 선택 대화 상자에 디렉토리를 표시하려면 슬래시를 추가합니다.
+힌트: 선택 대화상자에서 디렉터리를 표시하려면 슬래시를 추가합니다
-힌트: 마우스 커트 및 붙여넣기를 사용하려면 Shift 키를 누르고 있어야 할 수 있습니다.
+힌트: 마우스 잘라내기 및 붙여넣기를 사용하려면 Shift 키를 누르고 있어야 할 수 있습니다.
힌트: 단축목록에서 자주 방문하는 ftp 사이트 키: C-\ 를 입력하세요.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.lt
^
|
@@ -2,7 +2,7 @@
Hint: Use C-x p to copy the current pathname to the command line.
-Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
+Hint: Completion: use M-Tab (or Esc+Tab). Type it twice to get a list.
Hint: Use M-p and M-n to access the command history.
@@ -14,9 +14,9 @@
Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-Patarimas: GNU Midnight Commander internetinė svetainė: http://www.midnight-commander.org/
+Patarimas: GNU Midnight Commander internetinė svetainė: https://www.midnight-commander.org
-Hint: Please send any bug reports to mc-devel@gnome.org
+Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org
Patarimas: Tab klavišas pakeičia esamą panelę.
@@ -52,7 +52,7 @@
Hint: To change directory halfway through typing a command, use M-c (quick cd).
-Note: Shell commands will not work when you are on a non-local file system.
+Hint: Shell commands will not work when you are on a non-local file system.
Hint: Bring text back from the dead with C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.nb
^
|
@@ -14,9 +14,9 @@
Hint: Hvis terminalen mangler funksjonstaster så kan du bruke ESC + tallet.
-Hint: Hjemmesiden til GNU Midnight Commander er http://www.midnight-commander.org/
+Hint: Hjemmesiden til GNU Midnight Commander er https://www.midnight-commander.org
-Hint: Du kan sende feilrapporter til mc-devel@gnome.org
+Hint: Du kan sende feilrapporter til mc-devel@lists.midnight-commander.org
Hint: Tabulatoren endrer det aktive panelet.
@@ -52,7 +52,7 @@
Hint: Du kan skifte mappe mens du holder på å skrive en kommando med hurtigtasten M-c
-Merk: Skallkommandoer vil ikke virke i eksterne filsystemer.
+Hint: Skallkommandoer vil ikke virke i eksterne filsystemer.
Hint: Du kan hente tilbake tekst med C-y.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.nl
^
|
@@ -6,17 +6,17 @@
Hint: Gebruik M-p en M-n voor de commando lijn historie.
-Hint: Een character quoten? Gebruik Control-q en dan het character.
+Hint: Een character quoten? Gebruik Control-q en dan het character.
-Hint: Moe van deze hints? Zet ze uit in Opties/Vormgeving.
+Hint: Moe van deze hints? Zet ze uit in Opties/Vormgeving.
Hint: Directories selecteren: zet een slash aan het eind van het zoekpatroon.
Hint: Als je terminal geen functietoetsen ondersteunt, gebruik dan ESC+nummer.
-Hint: Midnight Commander home page: http://www.midnight-commander.org/
+Hint: Midnight Commander home page: https://www.midnight-commander.org
-Hint: Stuur bug rapporten naar mc-devel@gnome.org
+Hint: Stuur bug rapporten naar mc-devel@lists.midnight-commander.org
Hint: Tab verandert focus huidig paneel (links/rechts).
@@ -24,7 +24,7 @@
Hint: We hebben ook een aardige handleiding.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Hint: Wil je Lynx-achtige navigatie? Stel het in bij Configuratie.
Hint: % macros werken zelf op de commando lijn.
@@ -52,7 +52,7 @@
Hint: M-c (snelle cd) is om middenin een commando van directorie te wisselen.
-NB: Shell-commandos werken niet in niet-locale bestandssystemen.
+Hint: Shell-commandos werken niet in niet-locale bestandssystemen.
Hint: Laat tekst herleven met C-y.
@@ -68,7 +68,7 @@
Hint: Je kunt alle aanvragen voor bevestiging instellen in Opties/Bevestiging.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Hint: Spring naar veel gebruikte directories in een keer met C-\.
Hint: Je kunt anonieme FTP draaien met mc door middel van 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
Hint: Voor de normale cut-and-paste muisfuncties moet je de shift key inhouden.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Hint: Voer frequent bezochte ftp-sites toe aan je hotlist: type C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.pl
^
|
@@ -4,19 +4,19 @@
Porada: uzupełnianie: M-Tab (lub Esc+Tab). Dwukrotne naciśnięcie wywołuje listę.
-Porada: M-p i M-n udostępni historię poleceń.
+Porada: M-p i M-n udostępni historię poleceń.
-Porada: cytowanie znaku można uzyskać przez Ctrl-q i odpowiedni znak.
+Porada: cytowanie znaku można uzyskać przez Ctrl-q i odpowiedni znak.
-Porada: te komunikaty można wyłączyć w menu Opcje/Układ.
+Porada: te komunikaty można wyłączyć w menu Opcje/Układ.
Porada: zaznaczanie katalogów: należy dodać ukośnik na końcu wzorca dopasowania.
-Porada: jeśli w terminalu nie ma klawiszy funkcyjnych, można użyć Esc+numer.
+Porada: jeśli w terminalu nie ma klawiszy funkcyjnych, można użyć Esc+numer.
-Porada: witryna programu GNU Midnight Commander: http://www.midnight-commander.org
+Porada: witryna programu GNU Midnight Commander: https://www.midnight-commander.org
-Porada: raporty błędów (w języku angielskim) proszę wysłać na mc-devel@gnome.org
+Porada: raporty błędów (w języku angielskim) proszę wysłać na mc-devel@lists.midnight-commander.org
Porada: klawisz Tab zmienia bieżący panel.
@@ -24,23 +24,23 @@
Porada: warto zajrzeć także na stronę podręcznika.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Porada: nawigację w stylu programu Lynx można ustawić w oknie konfiguracji.
-Porada: makra % działają także w wierszu poleceń.
+Porada: makra % działają także w wierszu poleceń.
-Porada: M-! umożliwia wyświetlenie wyjścia wykonywanych programów w podglądzie.
+Porada: M-! umożliwia wyświetlenie wyjścia wykonywanych programów w podglądzie.
-Porada: format wyświetlania listy plików można dostosować (więcej w „man mc”).
+Porada: format wyświetlania listy plików można dostosować (więcej w „man mc”).
-Porada: %D/%T oznacza zaznaczone pliki w drugim panelu.
+Porada: %D/%T oznacza zaznaczone pliki w drugim panelu.
-Porada: dostęp do zwykłej powłoki można uzyskać przez C-o, a powrót tak samo.
+Porada: dostęp do zwykłej powłoki można uzyskać przez C-o, a powrót tak samo.
Porada: ustawienie zmiennej CDPATH może zaoszczędzić pisania przy cd.
-Porada: wyświetlanie plików .* można wybrać w oknie konfiguracji.
+Porada: wyświetlanie plików .* można wybrać w oknie konfiguracji.
-Porada: wyświetlanie plików zapasowych *~ można ustawić w oknie konfiguracji.
+Porada: wyświetlanie plików zapasowych *~ można ustawić w oknie konfiguracji.
Porada: uzupełnianie działa wszędzie. Wystarczy nacisnąć M-Tab.
@@ -50,29 +50,29 @@
Porada: złożone wyszukiwanie można wykonać za pomocą polecenia Filtr zewnętrzny.
-Porada: można zmienić katalog w połowie podawania polecenia za pomocą M-c.
+Porada: można zmienić katalog w połowie podawania polecenia za pomocą M-c.
-Uwaga: polecenia powłoki działają tylko na lokalnych systemach plików.
+Porada: polecenia powłoki działają tylko na lokalnych systemach plików.
Porada: można przywrócić usunięty tekst za pomocą C-y.
Porada: jeśli jakiś klawisz nie działa, należy zobaczyć Opcje/Określ klawisze.
-Porada: aby zobaczyć wyjście polecenia w podglądzie, należy użyć M-!.
+Porada: aby zobaczyć wyjście polecenia w podglądzie, należy użyć M-!.
-Porada: F13 (lub Shift-F3) wywołuje podgląd w trybie oryginalnym.
+Porada: F13 (lub Shift-F3) wywołuje podgląd w trybie oryginalnym.
Porada: można określić edytor dla klawisza F4 za pomocą zmiennej powłoki EDITOR.
Porada: można określić zewnętrzny podgląd za pomocą zmiennych VIEWER lub PAGER.
-Porada: można wyłączyć wszystkie żądania potwierdzenia w Opcje/Potwierdzenia.
+Porada: można wyłączyć wszystkie żądania potwierdzenia w Opcje/Potwierdzenia.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Porada: do listy często używanych katalogów można przejść za pomocą C-\.
-Porada: można połączyć się z anonimowym FTP wpisując „cd ftp://komputer.edu”.
+Porada: można połączyć się z anonimowym FTP wpisując „cd ftp://komputer.edu”.
-Porada: FTP jest wbudowane w mc, proszę zobaczyć menu Plik/Połączenie FTP.
+Porada: FTP jest wbudowane w mc, proszę zobaczyć menu Plik/Połączenie FTP.
Porada: M-t szybko zmienia tryb wyświetlania.
@@ -80,8 +80,8 @@
Porada: można przeglądać pakiety RPM naciskając na nich klawisz Enter.
-Porada: aby zaznaczyć katalogi w oknie zaznaczania, należy dodać ukośnik.
+Porada: aby zaznaczyć katalogi w oknie zaznaczania, należy dodać ukośnik.
-Porada: użycie wycinania i wklejania za pomocą myszy wymaga klawisza Shift.
+Porada: użycie wycinania i wklejania za pomocą myszy wymaga klawisza Shift.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Porada: wpisując C-\ można dodać często używane zasoby FTP do listy podręcznej.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.pt
^
|
@@ -2,7 +2,7 @@
Dica: Use C-x p para copiar o caminho atual para a linha de comandos.
-Dica: Preenchimento: use M-Tab (ou Esc+Tab). Duas vezes para obter a lista.
+Dica: Preenchimento: use M-Tab (ou Esc+Tab). Duas vezes para obter a lista.
Dica: Use M-p e M-n para aceder ao histórico de comandos.
@@ -14,9 +14,9 @@
Dica: Se o seu terminal não tem algumas teclas de função, use a sequência ESC+número.
-Dica: A página do GNU Midnight Commander: http://www.midnight-commander.org/
+Dica: A página do GNU Midnight Commander: https://www.midnight-commander.org
-Dica: Por favor envie relatórios de bugs para mc-devel@gnome.org
+Dica: Por favor envie relatórios de bugs para mc-devel@lists.midnight-commander.org
Dica: O tab altera o painel atual.
@@ -24,7 +24,7 @@
Dica: Também temos uma página manual interessante.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Dica: Deseja navegação tipo Lynx? Ative-a no diálogo de Configuração.
Dica: % macros funcionam mesmo na linha de comandos.
@@ -52,7 +52,7 @@
Dica: Para mudar de diretório a meio de um comando, use M-c (cd rápido).
-Note: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local.
+Dica: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local.
Dica: Traga de volta o texto dos mortos com C-y.
@@ -68,7 +68,7 @@
Dica: Pode desabilitar todos os pedidos de confirmação em Opções/Confirmação.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Dica: Salte para diretórios frequentemente usados de uma só vez através de C-\.
Dica: Pode efetuar FTP anónimo com o mc digitando 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
Dica: Para usar o rato cortar e colar pode ser necessário prender a tecla shift
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Dica: Sites ftp chave frequentemente visitados na hotlist: digite C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.pt_BR
^
|
@@ -1,87 +1,87 @@
-Dica: Use C-x para copiar nome de arquivos marcados para linha de comando.
+Dica: Pressione a tecla Ctrl junto com a tecla X, em seguida, pressione a tecla T para copiar o nome dos arquivos marcados para a linha de comando.
-Dica: Use C-x para copiar o nome de caminho atual para a linha de comando.
+Dica: Pressione a tecla Ctrl junto com a tecla X, em seguida, pressione a tecla P para copiar o nome do caminho atual para a linha de comando.
-Dica: Completion: use M-Tab (ou Esc+Tab). Pressione duas vezes para ter uma lista.
+Dica: Para concluir: Pressione a tecla M junto com a tecla Tab (ou a tecla Esc junto com a tecla Tab). Pressione duas vezes para obter uma lista.
-Dica: Use M-p e M-n para acessar o histórico de comandos.
+Dica: Pressione a tecla M junto com a tecla P ou a tecla M junto com a tecla N para acessar o histórico de comandos.
-Dica: Para inserir um caractere especial, use Control-q e o caractere,
+Dica: Para inserir um caractere especial, pressione a tecla Ctrl junto com a tecla Q e o caractere desejado.
-Dica: Cansado dessas mensagens? Desabilite-as no menu Opções/Layout.
+Dica: Para não exibir as mensagens das dicas de ferramentas, desative-as no menu Opções, Leiaute.
-Dica: Selecionando diretórios: adicione uma barra ao final do padrão correspondente.
+Dica: Selecionando diretórios: Adicione uma barra ao final do padrão correspondente.
-Dica: Se seu terminal falha teclas de função, use sequências com ESC+número.
+Dica: Se o seu terminal não for compatível com as teclas de função, utilize a sequência com a tecla Esc junto com a tecla do número.
-Dica: A página web do GNU Midnight Commander: http://www.midnight-commander.org/
+Dica: A página eletrônica do Midnight Commander do GNU é https://www.midnight-commander.org
-Dica: Favor enviar quaisquer relatórios de bug para mc-devel@gnome.org
+Dica: Por favor, envie os relatórios de erros ou falhas para o endereço mc-devel@lists.midnight-commander.org
-Dica: Tab altera seu painel atual.
+Dica: A tecla Tab altera o seu painel atual.
-Dica: Coisas legais do VFS: pressione enter em um arquivo tar para examinar seu conteúdo.
+Dica: Coisas legais do VFS: Pressione a tecla Enter em um arquivo com a extensão .tar para examinar o seu conteúdo.
-Dica: Nós também temos uma ótima página man.
+Dica: Nós também temos um ótimo manual na página do Midnight Commander.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Dica: Você deseja uma navegação do tipo Lynx? Ative-a na caixa de diálogo das Configurações.
-Dica: macros % funcionam mesmo na linha de comando.
+Dica: Os macros % funcionam mesmo na linha de comando.
-Dica: M-! vai permitir que você execute programas e veja a saída no visualizador.
+Dica: Pressione a tecla M junto com a tecla ! para executar os programas aplicativos e exibir a saída no visualizador.
-Dica: O formato de listagem de arquivos pode ser personalizada; execute "man mc" para mais detalhes.
+Dica: O formato da listagem de arquivos pode ser personalizada; execute o comando "man mc" para obter mais informações.
Dica: %D/%T expande para os arquivos marcados no diretório oposto.
-Dica: Quer sua shell básica? Pressione C-o e volte para o MC com C-o novamente.
+Dica: Para ter o Shell básico, pressione a tecla Ctrl junto com a tecla O e volte novamente para o Midnight Commander pressionando a tecla C junto com a tecla O.
-Dica: Ao definir a variável CDPATH você economizará digitações nos comandos cd.
+Dica: Ao definir a variável CDPATH, você economizará digitações dos comandos cd.
-Dica: Se você quer ver seus .* arquivos, avise isso no diálogo de Configurações.
+Dica: Para exibir os seus arquivos .*, defina esta opção na caixa de diálogo das Configurações.
-Dica: Quer ver seus arquivos backup *~ ? Defina isso no diálogo de Configuração.
+Dica: Para exibir os seus arquivos de cópia de segurança (backup) *~, defina esta opção na caixa de diálogo nas Configurações.
-Dica: Completion funciona em todas as linhas de entrada em todos diálogos. Basta pressionar M-Tab.
+Dica: A conclusão funciona em todas as linhas de entrada em todas as caixas de diálogos, pressione as teclas M+Tab.
-Dica: Em terminais lentos a opção -s pode ajudar.
+Dica: Em emuladores de terminais lentos, a opção -s pode ajudar.
-Dica: Encontrar Arquivo: você pode trabalhar em arquivos encontrados usando o botão de Painelização.
+Dica: Encontrar um Arquivo: você pode trabalhar em arquivos encontrados utilizando o botão de Painelização.
-Dica: Você faz pesquisas complexas? Use o comando de Panelização Externa.
+Dica: Para fazer pesquisas complexas, pressione o comando de Painelização Externo.
-Dica: Para alterar o diretório por meio de um comando, use M-c (cd rápido).
+Dica: Para alterar o diretório por meio de um comando, pressione a tecla M junto com a tecla C (equivale ao preenchimento rápido do comando cd).
-Nota: Comandos de shell não vão funcionar quando você está em um sistema de arquivos não-local.
+Dica: Comandos shell não funcionarão quando estiver num sistema de ficheiros não local.
-Dica: Traga texto de volta dos mortos com C-y
+Dica: Para recuperar o texto de volta, pressione a tecla Ctrl junto com a tecla Y.
-Dica: Algumas de suas teclas não estão funcionando? Dê uma olhada em Opções/Aprender teclas.
+Dica: Se algumas das suas teclas não estão funcionando, verifique no menu Opções, Aprender as Teclas.
-Dica: Para ver a saída de um comando no visualizador, use M-!
+Dica: Para exibir a saída de um comando no visualizador, pressione a tecla M junto com a tecla !.
-Dica: F13 (ou Shift-F3) chama o visualizador no modo crú.
+Dica: Pressione a tecla F13 (ou Shift junto com F3) para invocar o visualizador no modo bruto.
-Dica: você pode especificar o editor para F4 com a variável shell EDITOR.
+Dica: Para especificar o editor, pressione com a tecla F4 com a variável EDITOR do Shell.
-Dica: Você pode especificar o visualizador externo com as variáveis shell VIEWER ou PAGER.
+Dica: Para especificar o visualizador externo, utilize as variáveis VIEWER ou PAGER do Shell.
-Dica: você pode disabilitar todas requisições por confirmação em Opções/Confirmação.
+Dica: Para desativar todas as solicitações de confirmação, defina esta opção no menu Opções, Confirmações.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Dica: Para pular para os diretórios utilizados com mais frequência, pressione a tecla Ctrl junto com a tecla \.
-Dica: Você pode usar FTP anonimamente com mc digitando 'cd ftp://maquina.edu'
+Dica: Para utilizar o FTP anonimamente com o Midnight Commander, insira o endereço 'cd ftp://maquina.edu'.
-Dica: FTP está embutido no Midight Commander, verifique o menu Arquivo/FTP
+Dica: O FTP está embutido no Midnight Commander, verifique o menu Arquivo, FTP.
-Dica: M-t altera rapidamente o modo de listagem.
+Dica: Para alterar rapidamente para o modo de listagem ou de lista, pressione a tecla M junto com a tecla T.
-Dica: Você pode especificar o nome de usuário quando utilizando ftps: 'cd ftp://usuario@maquina.edu'
+Dica: Para especificar o nome de usuário quando for utilizar o ftps: 'cd ftp://user@machine.edu'.
-Dica: Você pode acessar arquivos RPM digitando enter em cima de um arquivo rpm.
+Dica: Para acessar os arquivos com a extensão .RPM, pressione a tecla Enter após selecionar um arquivo .rpm.
-Dica: Para marcar diretórios na caixa de diálogo selecionada, adicione ao final uma barra.
+Dica: Para marcar diretórios na caixa de diálogo selecionada, adicione ao final uma barra.
-Dica: Para usar o recortar e colar com mouse, pode ser necessário estar segurando a tecla shift
+Dica: Para utilizar os comandos "recortar" e "colar" com o cursor, pode ser necessário segurar a tecla Shift.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Dica: Para definir a tecla de atalho para os endereços de FTP que são visitados com mais frequência no 'hotlist', pressione a tecla Ctrl junto com a tecla \.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ro
^
|
@@ -14,9 +14,9 @@
Sfat: Dacă terminalul nu dispune de taste funcționale, folosiți ESC+ numărul de ordine.
-Sfat: Pagină de start pentru GNU Midnight Commander: http://www.midnight-commander.org/
+Sfat: Pagină de start pentru GNU Midnight Commander: https://www.midnight-commander.org
-Sfat: Vă rugăm semnalați orice bug la adresa mc-devel@gnome.org
+Sfat: Vă rugăm semnalați orice bug la adresa mc-devel@lists.midnight-commander.org
Sfat: Tasta Tab schimbă panoul curent.
@@ -24,7 +24,7 @@
Sfat: Avem de asemenea și o pagină de manual.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Sfat: Dorești navigare în stilul Lynx? Poți seta în dialogul Configurare.
Sfat: macro-urile funcționează și în linia de comandă.
@@ -52,7 +52,7 @@
Sfat: Pentru a schimba dosarul curent în timpul tastării unei comenzi, folosiți M-c (cd rapid).
-Nota: Comenzile shell nu funcționează în sisteme de fișiere care nu sunt locale.
+Sfat: Comenzile shell nu funcționează în sisteme de fișiere care nu sunt locale.
Sfat: Puteți recupera textul șters cu C-y.
@@ -68,7 +68,7 @@
Sfat: Puteți dezactiva toate cererile de confirmare în meniul Opțiuni/Confirmări.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Sfat: Săriți la dosarele utilizate frecvent într-un singur pas cu C-\.
Sfat: Puteți să vă conectați la FTP în mod anonim din MC tastând 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
Sfat: Pentru a folosi mouse-ul pentru a decupa și insera, trebuie să țineți tasta Shift apăsată.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Sfat: Pentru a păstra în lista rapida site-urile ftp vizitate frecvent: tastați C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.ru
^
|
@@ -14,9 +14,9 @@
Совет: Если ваш терминал без функц. клавиш, вам поможет ESC+цифра.
-Совет: Домашняя страница Midnight Commander: http://www.midnight-commander.org/
+Совет: Домашняя страница Midnight Commander: https://www.midnight-commander.org
-Совет: Пожалуйста, шлите любые сообщения об ошибках на mc-devel@gnome.org
+Совет: Пожалуйста, шлите любые сообщения об ошибках на mc-devel@lists.midnight-commander.org
Совет: Tab меняет текущую панель.
@@ -24,7 +24,7 @@
Совет: У нас также имеется толковая страница руководства.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Совет: Вы хотите навигацию в стиле Lynx? Установите это в диалоге Конфигурация.
Совет: Макросы % работают даже в командной строке.
@@ -32,7 +32,7 @@
Совет: Формат списка файлов может быть изменен; наберите "man mc" для деталей.
-Подсказка: %D/%T распространяется на отмеченные файлы в противоположном каталоге.
+Совет: %D/%T распространяется на отмеченные файлы в противоположном каталоге.
Совет: Хотите простую оболочку? Нажмите C-o, и снова C-o для возврата в МС.
@@ -52,7 +52,7 @@
Совет: Для смены каталога во время набора команды нажмите M-c (быстрая смена).
-Заметка: Команды оболочки не выполняются, если вы не в локальной файл. системе.
+Совет: Команды оболочки не выполняются, если вы не в локальной файл. системе.
Совет: Удаленный текст можно вернуть с помощью C-y.
@@ -68,7 +68,7 @@
Совет: Вы можете отменить запросы на подтверждение в Настройки/Подтверждение.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Совет: Переходите к часто используемым каталогам из справочника, набрав C-\.
Совет: Вы можете использовать анонимный FTP с mc, набрав 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
Совет: Вырезание и вставка с помощью мыши может требовать удержания клавиши Shift.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Совет: Храните список часто посещаемых FTP в справочнике каталогов: нажмите C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.sk
^
|
@@ -2,7 +2,7 @@
Tip: Pomocou C-x p skopírujete aktuálnu cestu do príkazového riadka.
-Rada: Dopĺňanie pomocou M-Tab (alebo Esc+Tab). Ak ho napíšete dvakrát, zobrazí sa zoznam.
+Tip: Dopĺňanie pomocou M-Tab (alebo Esc+Tab). Ak ho napíšete dvakrát, zobrazí sa zoznam.
Tip: Pomocou M-p a M-n zobrazíte históriu príkazov.
@@ -14,9 +14,9 @@
Tip: Ak váš terminál nemá funkčné klávesy, použite ESC+číselnú postupnosť.
-Tip: Domovská stránka GNU Midnight Commander: http://www.midnight-commander.org/
+Tip: Domovská stránka GNU Midnight Commander: https://www.midnight-commander.org
-Tip: Hlásenia chýb posielajte na mc-devel@gnome.org
+Tip: Hlásenia chýb posielajte na mc-devel@lists.midnight-commander.org
Tip: Tabulátor mení váš aktuálny panel.
@@ -24,7 +24,7 @@
Tip: Máme aj peknú manuálovú stránku.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Tip: Chcete navigáciu v štýle Lynx? Nastavte si ju v dialógu Konfigurácia.
Tip: Makrá % fungujú aj na príkazovom riadku.
@@ -68,7 +68,7 @@
Tip: Môžete zakázať všetky žiadosti o potvrdenie pomocou Možnosti/Konfigurácia.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Tip: Do často používaných adresárov môžete skákať pomocou C-\.
Tip: Prístup k anonymnému FTP z mc získate napísaním „cd ftp://machine.edu“
@@ -84,4 +84,4 @@
Tip: Na kopírovanie a vkladanie pomocou myši môže byť potrebné podržať Shift.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Tip: Uložte si často navštevované servery FTP do hotlistu: C-\
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.sr
^
|
@@ -2,7 +2,7 @@
Савет: Користите „C-x p“ да умножите назив текуће путање у линији наредби.
-Савет: Довршавање: користите „M-Tab“ (или „Esc+Tab“). Укуцајте га два пута да добавите списак.
+Савет: Довршавање: користите „M-Tab“ (или „Esc+Tab“). Укуцајте га два пута да добавите списак.
Савет: Користите „M-p“ и „M-n“ да приступите историјату наредби.
@@ -14,9 +14,9 @@
Савет: Ако вашем терминалу недостају функцијски тастери, користите низ „ЕСЦ+број“.
-Савет: Матична страница Гнуовог Поноћног наредника: http://www.midnight-commander.org/
+Савет: Матична страница Гнуовог Поноћног наредника: https://www.midnight-commander.org
-Савет: Све извештаје о грешкама пошаљите на „mc-devel@gnome.org“
+Савет: Све извештаје о грешкама пошаљите на „mc-devel@lists.midnight-commander.org“
Савет: Табулатор мења ваш текући панел.
@@ -24,7 +24,7 @@
Савет: Такође имамо и лепу страницу упутства.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Савет: Да ли желите кретање у стилу Lynx? Поставите га у прозорчету подешавања.
Савет: % макрои раде чак и на линији наредби.
@@ -52,7 +52,7 @@
Савет: Да промените директоријум на пола пута куцајући наредбу, користите „M-c“ (брза промена директоријума).
-Напомена: Наредбе љуске неће радити када нисте на месном систему датотека.
+Савет: Наредбе љуске неће радити када нисте на месном систему датотека.
Савет: Вратите текст у живот са „C-y“.
@@ -68,7 +68,7 @@
Савет: Можете да искључите све захтеве за потврђивањем у изборнику „Опције/Потврђивање“.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Савет: Скокните до често коришћених директоријума користећи „C-\“.
Савет: Можете да одрадите безимени протокол преноса датотека са „cd ftp://machine.edu“
@@ -84,4 +84,4 @@
Савет: Исецање и убацивање мишем може да захтева држање тастера помака
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Савет: За често посећиване фтп странице у врућем списку: укуцајте „C-\“.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.sv
^
|
@@ -8,15 +8,15 @@
Tips: Behöver du skriva ett kontrolltecken? Använd Control-q och tecknet.
-Är du trött på dessa meddelanden? Stäng av dem från Alternativ/Layout-menyn.
+Tips: Är du trött på dessa meddelanden? Stäng av dem från Alternativ/Layout-menyn.
Tips: Välja kataloger: Lägg till snedstreck i slutet av det matchande mönstret.
Tips: Om din terminal saknar funktionstangenter, använd ESC+siffersekvens.
-Tips: Hemsidan för GNU Midnight Commander: http://www.midnight-commander.org/
+Tips: Hemsidan för GNU Midnight Commander: https://www.midnight-commander.org
-Tips: Skicka felrapporter till mc-devel@gnome.org
+Tips: Skicka felrapporter till mc-devel@lists.midnight-commander.org
Tips: Tab ändrar din nuvarande panel.
@@ -24,13 +24,13 @@
Tips: Vi har också en trevlig manualsida.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Tips: Vill du ha navigation i Lynx-stil? Ställ in det i konfigurationsdialogen.
Tips: %-makron fungerar även på kommandoraden.
Tips: M-! tillåter dig att exekvera program och se utskriften i filvisaren.
-Fillistningsformatet kan anpassas; kör "man mc" för detaljer.
+Tips: Fillistningsformatet kan anpassas; kör "man mc" för detaljer.
Tips: %D/%T expanderar till de markerade filerna i katalogen mitt emot.
@@ -52,7 +52,7 @@
Tips: För att ändra katalog under kommandoinmatning, använd M-c (snabb-cd).
-Notera: Skalkommandon funkar inte när du är på ett icke-lokalt filsystem.
+Tips: Skalkommandon funkar inte när du är på ett icke-lokalt filsystem.
Tips: Ta tillbaks text från de döda med C-y.
@@ -68,7 +68,7 @@
Tips: Du kan slå av alla är-du-säker-frågor i Alternativ/Konfirmation.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Tips: Hoppa till ofta använda kataloger i ett steg med C-\.
Tips: Du kan använda anonym FTP i mc genom att skriva 'cd ftp://dator.se'
@@ -84,4 +84,4 @@
Tips: Skift kan behöva hållas ned för att använda klipp och klistra med musen.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Tips: Mata in ofta använda ftp-sajter i favoriter: tryck C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.tr
^
|
@@ -14,9 +14,9 @@
İpucu: Eğer klavyenizde fonksiyon tuşları yoksa, ESC+numara kombinasyonunu kullanabilirsiniz.
-İpucu: GNU Midnight Commander web adresi: http://www.midnight-commander.org/
+İpucu: GNU Midnight Commander web adresi: https://www.midnight-commander.org
-İpucu: Tüm hata raporlarını mc-devel@gnome.org adresine gönderebilirsiniz.
+İpucu: Tüm hata raporlarını mc-devel@lists.midnight-commander.org adresine gönderebilirsiniz.
İpucu: Tab aktif paneli değiştirir.
@@ -24,7 +24,7 @@
İpucu: Aynı zamanda güzel bir kullanım kılavuzumuz da var.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+İpucu: Lynx-tarzı dolaşım ister misiniz? Yapılandırma diyaloğundan ayarlayabilirsiniz.
İpucu: % makroları komut satırında bile çalışır.
@@ -52,7 +52,7 @@
İpucu: Komut yazarken arada klasör değiştirmek için M-c (çabuk cd) kullanın.
-Not: Yerel olmayan bir dosya sistemindeyseniz, kabuk komutları çalışmayacaktır.
+İpucu: Yerel olmayan bir dosya sistemindeyseniz, kabuk komutları çalışmayacaktır.
İpucu: C-y ile metni kurtarabilirsiniz.
@@ -68,7 +68,7 @@
İpucu: Seçenekler/Onaylar menüsünden tüm onay isteklerini devre dışı bırakabilirsiniz.
-Hint: Leap to frequently used directories in a single bound with C-\.
+İpucu: Sık kullanılan dizinlere tek hareketle geçmek için C-\ kullanabilirsiniz.
İpucu: mc ile anonim FTP bağlantısı kurabilirsiniz. Örn: 'cd ftp://sunucu.edu.tr'
@@ -84,4 +84,4 @@
İpucu: Fare ile kopyalamak/yapıştırmak için Shift tuşunu basılı tutmanız gerekebilir.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+İpucu: Sıklıklar ziyaret edilen FTP sitelerini kısayollara eklemek için C-\ kullanın.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.uk
^
|
@@ -14,9 +14,9 @@
Підказка. Якщо термінал не має функціональних клавіш, використовуйте комбінацію клавіш Esc+цифра.
-Підказка. Домашня сторінка Midnight Commander: http://www.midnight-commander.org/
+Підказка. Домашня сторінка Midnight Commander: https://www.midnight-commander.org
-Підказка. Надсилайте повідомлення про помилки на адресу mc-devel@gnome.org
+Підказка. Надсилайте повідомлення про помилки на адресу mc-devel@lists.midnight-commander.org
Підказка. Клавіша Tab змінює поточну панель.
@@ -24,7 +24,7 @@
Підказка. Можна прочитати непогану сторінку посібника.
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+Підказка. Щоб увімкнути навігацію у стилі Lynx, виберіть параметр у вікні Параметри|Конфігурація.
Підказка. Макроси % працюють навіть у командному рядку.
@@ -68,7 +68,7 @@
Підказка. Можна вимкнути запити на підтвердження дій у вікні Параметри|Підтвердження.
-Hint: Leap to frequently used directories in a single bound with C-\.
+Підказка. Щоб перейти до часто використовуваних каталогів, натисніть C-\.
Підказка. Щоб відкрити анонімний FTP, введіть команду «cd ftp://machine.edu».
@@ -84,4 +84,4 @@
Підказка. Щоб вирізати або вставити за допомогою мишки, утримуйте клавішу Shift.
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+Підказка. Щоб зберегти часто відвідувані FTP у списку каталогів, натисніть C-\.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.zh_CN
^
|
@@ -14,9 +14,9 @@
提示:如果你的终端机没有功能键,可以使用 ESC + 数字按键。
-提示:Midnight Commander 网页:http://www.midnight-commander.org/
+提示:Midnight Commander 网页:https://www.midnight-commander.org
-提示:请发送错误报告到 mc-devel@gnome.org
+提示:请发送错误报告到 mc-devel@lists.midnight-commander.org
提示:Tab 会切换使用中的面板。
@@ -24,7 +24,7 @@
提示:我们有一个不错的手册页。
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+提示:你是否想使用 Lynx 的浏览方式?请到设置对话窗中设置。
提示:% 宏在命令行也可使用。
@@ -52,7 +52,7 @@
提示:要在输入命令时改变目录,可使用 M-c(快速切换目录)。
-注意:在非本机的文件系统里无法使用 Shell 指令。
+提示:在非本机的文件系统里无法使用 Shell 指令。
提示:可用 C-y 将已删除的文本重新显示出来。
@@ -68,7 +68,7 @@
提示:你可以在「选项/确认」里关闭所有确认的要求。
-Hint: Leap to frequently used directories in a single bound with C-\.
+提示:使用 C-\ 可以即时跳到经常使用的目录。
提示:你可以在 mc 使用匿名模式的 FTP,方法是输入 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
提示:要使用鼠标剪贴功能需要你按下 shift 键
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+提示:要将常到的网站输入常用列表里:键入 C-\。
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/l10n/mc.hint.zh_TW
^
|
@@ -14,9 +14,9 @@
提示: 若您的終端機沒有功能鍵,可使用【ESC+數字鍵】來代替。
-提示: GNU Midnight Commander 的網頁: http://www.midnight-commander.org/
+提示:Midnight Commander 网页:https://www.midnight-commander.org
-提示: 任何錯誤報告請傳送至 mc-devel@gnome.org
+提示:请发送错误报告到 mc-devel@lists.midnight-commander.org
提示: Tab 可切換使用中的面板。
@@ -24,7 +24,7 @@
提示: 我們有一個很棒的手冊頁。
-Hint: Do you want Lynx-style navigation? Set it in the Configuration dialog.
+提示:你是否想使用 Lynx 的浏览方式?请到设置对话窗中设置。
提示: % 巨集也可在命令列中使用。
@@ -52,7 +52,7 @@
提示: 要在輸入指令時中途改變目錄,可使用 M-c 指令 (快速的 cd)
-注意: 無法在非本地端的檔案系統中使用 Shell 指令。
+提示:在非本机的文件系统里无法使用 Shell 指令。
提示: 可使用 C-y 將已刪除的文字重新顯示出來。
@@ -68,7 +68,7 @@
提示: 您可以在【選項/確認】中關閉所有的確認請求。
-Hint: Leap to frequently used directories in a single bound with C-\.
+提示: 可使用 C-\ 跳轉到常用的目錄。
提示: 您可以在 mc 中使用匿名模式的 FTP,方法是輸入 'cd ftp://machine.edu'
@@ -84,4 +84,4 @@
提示: 要使用滑鼠來剪下和貼上需同時按住 Shift 鍵。
-Hint: Key frequently visited ftp sites in the hotlist: type C-\.
+提示: 若要將常用的 ftp 站點加入至常用列表中請按 C-\
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/hints/mc.hint
^
|
@@ -14,9 +14,9 @@
Hint: If your terminal lacks functions keys, use the ESC+number sequence.
-Hint: The homepage of GNU Midnight Commander: http://www.midnight-commander.org/
+Hint: The homepage of GNU Midnight Commander: https://www.midnight-commander.org
-Hint: Please send any bug reports to mc-devel@gnome.org
+Hint: Please send any bug reports to mc-devel@lists.midnight-commander.org
Hint: Tab changes your current panel.
@@ -52,7 +52,7 @@
Hint: To change directory halfway through typing a command, use M-c (quick cd).
-Note: Shell commands will not work when you are on a non-local file system.
+Hint: Shell commands will not work when you are on a non-local file system.
Hint: Bring text back from the dead with C-y.
@@ -85,4 +85,3 @@
Hint: To use the mouse cut and paste may require holding the shift key
Hint: Key frequently visited ftp sites in the hotlist: type C-\.
-
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/date-of-man-include.am
^
|
@@ -1,12 +1,13 @@
SED_PARAMETERS = \
-e "s/%DATE_OF_MAN_PAGE%/$${MAN_DATE}/g" \
- -e "s/%DISTR_VERSION%/@DISTR_VERSION@/g" \
- -e "s{%prefix%{@prefix@{g" \
+ -e "s/%MAN_VERSION%/@MAN_VERSION@/g" \
-e "s{%sysconfdir%{@sysconfdir@{g" \
- -e "s{%libexecdir%{@libexecdir@{g"
+ -e "s{%libexecdir%{@libexecdir@{g" \
+ -e "s{%pkglibexecdir%{$(libexecdir)/@PACKAGE@{g" \
+ -e "s{%pkgdatadir%{$(datadir)/@PACKAGE@{g"
MAN_DATE_CMD = \
- LC_ALL=$(DATE_LANG) @PERL@ -CS -MPOSIX -e '\
+ LC_ALL=$(DATE_LANG) @PERL_FOR_BUILD@ -CS -MPOSIX -e '\
@fi=lstat("'$${MAN_FILE}'"); \
print POSIX::strftime("$(DATE_FORMAT)", localtime($$fi[9]));' 2>/dev/null
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/es/mc.1.in
^
|
@@ -6,7 +6,7 @@
.\" David H. Martín Alonso <david.martin@telefonica.net>
.\"
.\"TOPICS "Índice de Contenidos:"
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Versión %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Versión %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH "NOMBRE"
mc \- entorno visual para sistemas tipo Unix.
@@ -54,10 +54,6 @@
.I \-d, \-\-nomouse
Deshabilita el soporte de ratón.
.TP
-.I \-D N, \-\-debuglevel=N
-Establece el nivel de depuración para el sistema de archivos virtual SMB.
-N puede estar en el rango 0\-10.
-.TP
.I \-e [arch], \-\-edit[=arch]
Iniciar el editor interno. Si se indica un archivo, editarlo. Véase la
página de manual de
@@ -95,9 +91,9 @@
usada directamente, sino desde un guión de shell adecuado, para dejar
como directorio activo el directorio que estaba en uso dentro de
Midnight Commander. Consúltese en los archivos
-.B %libexecdir%/mc/mc.sh
+.B %pkglibexecdir%/mc.sh
(usuarios de bash y zsh) y
-.B %libexecdir%/mc/mc.csh
+.B %pkglibexecdir%/mc.csh
(usuarios de tcsh) la manera de definir
.B mc
como un alias para el correspondiente guión de shell.
@@ -351,7 +347,7 @@
almacenado en un archivo externo. Inicialmente el programa asigna esas funciones
según el mapa definido en el código fuente. Posteriormente se cargan siempre
los archivos
-.B %prefix%/share/mc/mc.keymap
+.B %pkgdatadir%/mc.keymap
y
.BR %sysconfdir%/mc/mc.keymap ,
reasignando en el orden marcado las definiciones anteriores. Se cargan después
@@ -390,7 +386,7 @@
.B %sysconfdir%/mc/
.br
3)
-.B %prefix%/share/mc/
+.B %pkgdatadir%/
.\"NODE " Miscellaneous Keys"
.SH " Otras Teclas"
Se incluyen aquí las teclas que no encajan en ninguna categoría concreta:
@@ -1513,80 +1509,15 @@
.\"NODE " Edit Extension File"
.SH " Editar el Archivo de Extensiones"
Abre el archivo
-.I ~/.config/mc/mc.ext
-en nuestro editor. El administrador puede optar por editar, en su lugar,
-el archivo de extensiones del sistema
-.IR %prefix%/share/mc/mc.ext .
-El formato del archivo es como sigue:
-.PP
-Todas las líneas que empiecen con # o estén vacías serán ignoradas.
-.PP
-Las líneas que comiencen en la primera columna deberán tener el siguiente formato:
-.PP
-.IR PalabraClave/descripción ,
-i. e. todo lo que vaya tras la «/» hasta el fin de línea será la
-.IR descripción .
-.PP
-Las palabras clave son:
-.TP
-.I shell
-\-
-.I Descripción
-será una extensión (sin comodines). Un archivo coincide si su nombre acaba en
-.IR Descripción .
-Por ejemplo:
-.I shell/.tar
-corresponde a
-.IR *.tar .
-.TP
-.I regex
-\-
-.I Descripción
-es una expresión regular. Un archivo coincide si la salida de
-.I file %f
-encaja con la expresión regular
-.I Descripción
-(quitando la parte inicial «nombre de archivo:»)
-.TP
-.I default
-\- Coincide para cualquier archivo. Se ignora la
-.IR descripción .
-.TP
-.I include
-\- Incorpora una sección común.
-.I Descripción
-es el nombre de la sección.
-.PP
-El resto de líneas deben comenzar con un espacio o tabulador y usar el
-siguiente formato:
-.I PalabraClave=comando
-(sin espacios alrededor de «=»), donde
-.I PalabraClave
-debe ser:
-.I Open
-(si el usuario pulsa
-.I Intro
-o dos veces el ratón),
-.I View
-(F3),
-.I Edit
-(F4) o
-.I Include
-(para agregar reglas de la sección común).
-.I Comando
-es cualquier comando en línea del shell, con
-.\"LINK2"
-sustitución de macro
-.\"Macro Substitution"
-simple.
-.PP
-Las reglas se aplican en estricto orden. Aunque se produzca una
-coincidencia, si la acción solicitada no está disponible, se ignora y la
-búsqueda continúa (por ejemplo, si un archivo encaja con dos entradas,
-pero la acción Ver no está definida en la primera, al pulsar F3, se
-ejecuta la acción Ver de la segunda). Por eso, como último recurso
-.I default
-sí debe incluir todas las acciones.
+.I ~/.config/mc/mc.ext.ini
+en nuestro editor.
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
.\"NODE " Background jobs"
.SH " Trabajos en Segundo Plano"
Nos permite controlar el estado de cualquier proceso de Midnight Commander
@@ -1601,7 +1532,7 @@
usuario o del superusuario y no es modificable por todos.
Si no se encuentra allí el archivo, se intenta de la misma manera con ~/.config/mc/menu,
y si no, mc utiliza el menú por defecto para todo el sistema
-%prefix%/share/mc/mc.menu.
+%pkgdatadir%/mc.menu.
.PP
El formato del menú de archivo es muy simple. Todas las líneas, salvo
las que empiezan con espacio o tabulación, son consideradas entradas
@@ -2001,7 +1932,7 @@
.I selected.
Si se activa el resaltado de tipos de archivos, los nombres aparecerán
coloreados según las reglas almacenadas en el archivo
-.IR %prefix%/share/mc/filehighlight.ini .
+.IR %pkgdatadir%/filehighlight.ini .
Para más información, véase la
sección sobre
.\"LINK2"
@@ -2246,7 +2177,7 @@
.I Usar siempre proxy
está puesta, el programa asume que cualquier nombre de máquina
sin puntos es accesible directamente y también consulta el archivo
-%prefix%/share/mc.no_proxy en busca de nombres de máquinas locales (o
+%sysconfdir%/mc/mc.no_proxy en busca de nombres de máquinas locales (o
dominios completos si el nombre empieza con un punto). En todos los
demás casos se usará siempre el proxy de FTP indicado arriba.
.PP
@@ -2271,7 +2202,7 @@
.IR ~/.config/mc/ini .
Si este no existe, se cargará la información del
archivo de configuración genérico del sistema,
-.IR %prefix%/share/mc/mc.ini .
+.IR %pkgdatadir%/mc.ini .
Si el archivo de configuración genérico del sistema no existe, MC utiliza
la configuración por defecto.
.PP
@@ -2904,7 +2835,7 @@
.PP
.B F8
Intercambia entre el modo crudo y procesado: esto mostrará el archivo como se encuentra en disco
-o si se ha especificado un filtro de visualización en el archivo mc.ext, entonces
+o si se ha especificado un filtro de visualización en el archivo mc.ext.ini, entonces
la salida filtrada. El modo actual es siempre el contrario al mostrado
en la etiqueta del botón, en tanto que el botón muestra el modo en el que entraremos
con la pulsación de esa tecla.
@@ -3021,7 +2952,7 @@
o
.B C++
u otro). Esto está controlado por el archivo
-.B %prefix%/share/mc/edit.indent.rc
+.B %pkgdatadir%/edit.indent.rc
que se copia la primera vez que se usa en
.B ~/.local/share/mc/mcedit/edit.indent.rc
en el directorio personal.
@@ -3108,10 +3039,7 @@
.PP
Dependiendo de la forma en que fue compilado, puede disponer también de:
.I sftpfs
-para manipular archivos en sistemas remotos a través de SFTP;
-.I SMBfs
-para manipular archivos en sistemas remotos empleando el protocolo
-SMB (CIFS).
+para manipular archivos en sistemas remotos a través de SFTP.
.PP
Se facilita también un sistema de archivos genérico
.I extfs
@@ -3129,7 +3057,7 @@
.PP
.I /archivo.tar/utar://[directorio\-dentro\-tar]
.PP
-El archivo mc.ext también ofrece un atajo para los archivos tar, esto quiere decir
+El archivo mc.ext.ini también ofrece un atajo para los archivos tar, esto quiere decir
que normalmente basta con apuntar a un archivo tar y pulsar Intro para entrar en el
archivo tar. Véase la sección
.\"LINK2"
@@ -3268,37 +3196,6 @@
sftp://pepe@maquina.ssh.edu:2222/privado
.fi
-.\"NODE " SMB File System"
-.SH " Sistema de archivos SMB"
-El SMBfs permite manipular archivos en máquinas remotas con el protocolo
-denominado SMB (o CIFS). Esto incluye Windows Trabajo en Grupo, Windows
-9x/ME/XP, Windows NT, Windows 2000 y Samba. Para comenzar a usarlo,
-se puede emplear la "Conexión por SMB..." (accesible desde la barra de
-menús) o bien cambiar de directorio a un directorio virtual cuyo nombre
-sea de la forma:
-.PP
-.I smb://[usuario@]maquina[/recurso][/directorio\-remoto]
-.PP
-Los elementos
-.IR usuario ,
-.I recurso
-y
-.I directorio\-remoto
-son opcionales. El
-.IR usuario ,
-.I dominio
-y
-.I contraseña
-se pueden especificar en un cuadro de diálogo.
-.PP
-Ejemplos:
-.PP
-.nf
- smb://maquina/Compartido
- smb://otramaquina
- smb://invitado@maquina/publico/leyes
-.fi
-
.\"NODE " Undelete File System"
.SH " Sistema de archivos de Recuperación"
En sistemas Linux, si el programa de configuración nos preguntó si queríamos usar
@@ -3607,7 +3504,7 @@
.BR %sysconfdir%/mc/skins/default.ini .
.br
5) El archivo
-.BR %prefix%/share/mc/skins/default.ini .
+.BR %pkgdatadir%/skins/default.ini .
.PP
En línea de órdenes, en la variable de entorno o el parámetro de la
@@ -3622,7 +3519,7 @@
.BR %sysconfdir%/mc/skins/ .
.br
3)
-.BR %prefix%/share/mc/skins/ .
+.BR %pkgdatadir%/skins/ .
.br
.PP
@@ -3926,7 +3823,7 @@
.\"Skins"
.PP
Las reglas de resaltado de nombres en el archivo se encuentran en
-.IR %prefix%/share/mc/filehighlight.ini .
+.IR %pkgdatadir%/filehighlight.ini .
Los nombres de sección en este archivo tienen que ser iguales a los nombres
empleados en la sección [filehighlight] del archivo de skin en uso.
PP.
@@ -4047,7 +3944,7 @@
Si esta variable está activada (por defecto lo está) se recurrirá al
comando «file» para reconocer los tipos de archivo referidos en el archivo
.\"LINK2"
-mc.ext\&.
+mc.ext.ini\&.
.\"Edit Extension File"
.TP
.I xtree_mode
@@ -4096,7 +3993,7 @@
externos. Midnight Commander busca la sección
.I [External editor or viewer parameters]
en el archivo de inicialización del sistema
-.B %prefix%/share/mc/mc.lib
+.B %pkgdatadir%/mc.lib
o en el del usuario
.BR ~/.config/mc/ini .
El nombre de la opción debe coincidir con el nombre (ruta completa) del editor
@@ -4132,7 +4029,7 @@
Midnight Commander permite hacer ajustes a la base de datos de terminales
del sistema sin necesidad de privilegios de superusuario. El programa
busca definiciones de teclas en el archivo de inicialización del sistema
-.B %prefix%/share/mc/mc.lib
+.B %pkgdatadir%/mc.lib
o en el del usuario
.BR ~/.config/mc/ini ,
en la sección "terminal:nuestro\-terminal" y si no en "terminal:general".
@@ -4195,28 +4092,28 @@
instalación a otra. También se pueden modificar con la variable de
entorno
.BR MC_DATADIR ,
-que de estar definida se emplearía en vez de %prefix%/share/mc.
+que de estar definida se emplearía en vez de %pkgdatadir%.
.PP
-.I %prefix%/share/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
Archivo de ayuda.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
Archivo de extensiones por defecto del sistema.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
Archivo de usuario de extensiones y configuración de visor y editor. Si
está presente prevalece sobre el contenido de los archivos del sistema.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
Archivo de configuración del sistema para Midnight Commander, solo si
el usuario no dispone de su propio
.IR ~/.config/mc/ini .
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Opciones globales de Midnight Commander. Se aplican siempre a todos los
usuarios, tengan
@@ -4232,12 +4129,12 @@
se cargará la configuración desde aquí en lugar de desde el archivo de
configuración del sistema.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
Este archivo contiene los mensajes cortos de ayuda mostrados por el
programa.
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
Este archivo contiene el menú de aplicaciones por defecto para el sistema.
.PP
@@ -4280,7 +4177,7 @@
.PP
.nf
La página web de Midnight Commander está en:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.PP
La presente documentación recoge información relativa a la versión 4.8
@@ -4301,7 +4198,7 @@
Véase el archivo "TODO" en la distribución para saber qué falta por hacer.
.PP
Para informar de problemas con el programa, introducir una nueva incidencia
-en http://www.midnight\-commander.org/.
+en https://www.midnight\-commander.org/.
.PP
Se debe proporcionar una descripción detallada del problema, la
versión del programa (que se obtiene con
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/hu/mc.1.in
^
|
@@ -1,6 +1,6 @@
.\" -*- mode: troff; coding: UTF-8 -*-
.\"TOPICS "Tartalomjegyzék"
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH "NÉV"
mc \- Fájlkezelő Unix típusú rendszerekhez
@@ -60,9 +60,9 @@
átváltást (köszönet a funkcióért és a funkcióhoz szükséges kódért Torben
Fjerdingstad\-nek és Sergey\-nek közreműködésükért). Kérlek, ne csinálj
szó szerinti másolatot a funkció beállításairól. A fájlok forrása a
-.I %libexecdir%/mc/mc.sh
+.I %pkglibexecdir%/mc.sh
(bash és zsh felhasználóknak), illetőleg a
-.I %libexecdir%/mc/mc.csh
+.I %pkglibexecdir%/mc.csh
(tcsh felhasználóknak) fájl. Ilyenkor, amikor a funkció beállításokat
változtatod, a profil értékeket nem szükséges megváltoztatnod, csak
arról gondoskodj, hogy az MC\-t ne fordítsd eltérő beállításokkal.
@@ -1299,66 +1299,16 @@
leírásánál.
.\"NODE " Edit Extension File"
.SH " Társítások"
-Ez az ~/.config/mc/mc.ext szerkesztéséhez segítségül fogja hívni a
-szövegszerkesztődet. A fájl formátuma a következő (a formátum a 3.0\-ás
-verzióval megváltozott):
-.PP
-Minden # jellel kezdődő sor, vagy üres sor kommentárnak tekinthető.
-.PP
-A sorok az első rovatban látható formátumnak megfelelően kezdődnek:
-.PP
-.IR kulcsszó/desc ,
-pl. akármi a
-.I kulcsszó/
-után úgy, hogy a sor vége karakter előtt a
-.I desc
-áll kulcsszó lehet:
-.PP
-.I shell
-.IP
-bármely kiterjesztés esetén, amely ponttal kezdődik (nem szükséges a
-helyettesítő karaktert beírni, például: .tar az *.tar párja)
-.PP
-.I regex
-.IP
-(szabványos kifejezés; regular expression esetén)
-.PP
-.I type
-.IP
-(azokra a fájlokra illeszkedik, amelyek tartalmazzák a `file %f`
-szöveget. A fájlnév a `file %f` résztől törlődik)
-.PP
-.I default
-.IP
-(illeszkedik bármely fájlra, kiterjesztésétől függetlenül)
-.PP
-A többi sor kezdődhet szóközzel, vagy tabulátorral, a formátumuk pedig a
-következő:
-.PP
-.I keyword=command
-(szóközt nem szabad az egyenlőségjel mellé írni), ahol a
-.I kulcsszó
-lehet:
-.PP
-.I Open
-(ha a felhasználó lenyomja az Enter\-t, vagy duplán kattint),
-.I View
-(F3) és
-.I Edit
-(F4).
-.PP
-.I command
-ez bármely egysoros shell parancs lehet, az egyszerű
-.\"LINK2"
-Macro Helyettesítővel\&.
-.\"Macro Substitution"
-.PP
-A feladatokatokat fentről lefelé értékeljük ki (tehát a sorrend nagyon
-fontos). Ha néhány műveletet keresünk, a keresés úgy folytatódik,
-mintha ez a cél nem létezne (pl. ha a fájl tartalmazza az első és a
-második bejegyzést és a Nézet művelet hiányzik az elsőből, akkor az F3
-lenyomására a Nézet művelet a második bejegyzést fogja használni.
-Alapértelmezésben végrehajt minden műveletet.
+Ez az
+.I ~/.config/mc/mc.ext.ini
+szerkesztéséhez segítségül fogja hívni a szövegszerkesztődet.
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
.\"NODE " Background jobs"
.SH " Háttérmunkák"
Ezzel szabályozhatod néhány Commander háttérfolyamat állapotát (csak a
@@ -1374,7 +1324,7 @@
.I ~/.config/mc/menu
keresése a következő lépés, egyébként pedig az mc az alapértelmezett
rendszerszintű menüt használja, pl.:
-.IR %prefix%/share/mc/mc.menu ,
+.IR %pkgdatadir%/mc.menu ,
esetleg %sysconfdir%/mc/mc.menu.
.PP
A menü fájl formátuma nagyon egyszerű. A sorok, amelyek bármivel
@@ -1882,7 +1832,7 @@
.I ~/.config/mc/ini
fájlból. Ha ez a fájl nem létezik, ezeket az információkat a
rendszerszintű konfigurációs fájlból fogja beolvasni, amelyek a
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
fájlban találhatóak meg. Ha ez a rendszerszintű konfigurációs fájl sem
létezik, a MC az alapértelmezett beállításokat használja.
.PP
@@ -2393,7 +2343,7 @@
.PP
.B F8
Vált a Nyers és Feldolgozott mód között: ez a fájlt, úgy mutatja meg,
-ahogy megtalálta, vagy, ha folyamatszűrő meg van adva az mc.ext fájlban,
+ahogy megtalálta, vagy, ha folyamatszűrő meg van adva az mc.ext.ini fájlban,
akkor a szűrő kimenetét. A Jelenlegi mód mindig a másik, mit amit a gomb
felirata mutat.
.PP
@@ -2632,7 +2582,7 @@
.I ftp proxy\-n keresztül
opció. Ez beállítja a program számára azt, hogy mindig használja a proxy
host\-ot. Ha ez a változó be van állítva, akkor a program két dolgot
-csinál: konzultál a %prefix%/share/mc.no_proxy fájl soraival, hogy azok
+csinál: konzultál a %sysconfdir%/mc/mc.no_proxy fájl soraival, hogy azok
tartalmazzák\-e a host nevet, mint helyi eszközt (ha a host neve ponttal
kezdődik, akkor ezt domainként tartja számon), és feltételezi azt, hogy
a pont nélküli hostnevek közvetlenül felodhatók.
@@ -2663,7 +2613,7 @@
.PP
.I /filename.tar:utar/[dir\-inside\-tar]
.PP
-Az mc.ext fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért
+Az mc.ext.ini fájl már tartalmaz gyorsbillentyűket a tar fájlokhoz, ezért
csak rá kell mutatnod a tar fájlra és le kell nyomnod az entert ahhoz,
hogy beléphess a tar fájlba, ehhez nézd meg a
.\"LINK2"
@@ -2745,36 +2695,6 @@
.PP
Persze várakozni kell, amíg az undelfs a szükséges információkat
beolvassa, a fájl böngészés megkezdése előtt.
-.SH " SMB File System"
-The smbfs allows you to manipulate files on remote machines with SMB
-(or CIFS) protocol. These include Windows for Workgroups,
-Windows 9x/ME/XP, Windows NT, Windows 2000 and Samba.
-To actually use it, you may try to use the panel command "SMB link..."
-(accessible from the menubar) or you may directly change your current
-directory to it using the cd command to a path name that looks like this:
-.PP
-.I smb://[user@]machine[/service][/remote\-dir]
-.PP
-The
-.IR user ,
-.I service
-and
-.I remote\-dir
-elements are optional.
-The
-.IR user ,
-.I domain
-and
-.I password
-can be specified in an input dialog.
-.PP
-Examples:
-.PP
-.nf
- smb://machine/Share
- smb://other_machine
- smb://guest@machine/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " EXTernal File System"
.B extfs
@@ -3179,26 +3099,26 @@
környezeti változóban tárol. Ha ezt a változót nem állítottuk be, akkor
ez vissza fog állítódni a /usr könyvtárra.
.PP
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
A program súgó fájlja.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
Az alapértelmezett rendszerszintű kiterjesztés fájl.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
A felhasználó saját kiterjesztései, nézet beállítások és szerkesztési
beállítások. Ezek felülbírálják a rendszerszintű fájl bejegyzéseit, ha
van ilyen.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
Az alapértelmezett rendszerszintű Midnight Commander beállítás, amelyet
csak akkor használ, ha a felhasználónak nincs saját ~/.config/mc/ini fájlja.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
A Midnight Commander globális beállításai. Az ebben a fájlban elvégzett
beállítások minden felhasználó Midnight Commander\-jére vonatkoznak, ez
@@ -3210,12 +3130,12 @@
beállítások ebből a fájlból olvasódnak be a rendszerszintű indító fájl
helyett.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
Ez a fájl tartalmazza a program által megjelenített útmutattásokat
(cookie\-kat).
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
Ez a fájl azonos a rendszerszintű alkalmazás menüvel.
.PP
@@ -3260,7 +3180,7 @@
.nf
A Midnight Commander World Wide Web oldalának címe a
következő:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.\"NODE "AUTHORS"
.SH "Szerzők"
@@ -3298,7 +3218,7 @@
vannak még vissza.
.PP
Ha a programmal kapcsolatos problémád van, akkor azt küld el az alábbi
-levélcímre: mc\-devel@gnome.org.
+levélcímre: mc\-devel@lists.midnight-commander.org.
.PP
Gondoskodj arról, hogy tartalmazza a hiba minél pontosabb
meghatározását, a futtatott program verziószámát (az mc \-V parancs meg
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/it/mc.1.in
^
|
@@ -21,7 +21,7 @@
.\" Prego mantenere la linea di traduzione generale (per quanto possibile).
.\"
.\"TOPICS "Indice degli argomenti:"
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH "NOME"
mc \- interfaccia visuale per sistemi tipo Unix.
@@ -81,9 +81,9 @@
utilizzata da una speciale funzione shell che imposti automaticamente
l'ultima directory corrente della shell come l'ultima directory in cui
stava il Midnight Commander. Prelevate i file
-.B %libexecdir%/mc/mc.sh
+.B %pkglibexecdir%/mc.sh
(utenti bash e zsh) o rispettivamente
-.B %libexecdir%/mc/mc.csh
+.B %pkglibexecdir%/mc.csh
(utenti tcsh) per definire
.B mc
come un alias allo script di shell appropriato.
@@ -1314,60 +1314,14 @@
.\"NODE " Edit Extension File"
.SH " Modifica file estensioni"
Questo comando invocherà l'editor sul file
-.IR ~/.config/mc/mc.ext .
-Il fomato di questo file è il seguente (il formato è cambiato dalla
-versione 3.0):
-.PP
-Tutte le righe che iniziano per # vengono ignorate.
-.PP
-Le righe che cominciano dalla prima colonna devono avere il seguente formato:
-.PP
-.IR parolachiave/descrizione ,
-i.e. qualsiasi cosa dopo
-.I parolachiave/
-fino al fine riga è
-.I descrizione
-.PP
-parolachiave può essere:
-.TP
-.I shell
-(allora descrizione è qualsiasi estensione (no caratteri jolly),
-cioè corrisponde a tutti i file *descrizione. Esempio: .tar corrisponde a *.tar)
-.TP
-.I regex
-(descrizione è un'espressione regolare)
-.TP
-.I type
-(file corrisponde se `file %f` corrisponde all'espressione regolare descrizione
-(nome del file: a partire da `file %f` viene rimosso))
-.TP
-.I default
-(corrisponde a qualsiasi file indipendentemente dalla descrizione)
-.PP
-Le altre linee devono cominciare con uno spazio o una tabulazione e devono essere nel formato:
-.I parolachiave=comando
-(senza spazi intorno a =), dove
-.I parolachiave
-deve essere:
-.I Open
-(se l'utente preme Invio o fa doppio clic),
-.I View
-(F3),
-.I Edit
-(F4).
-.I command
-è qualsiasi comando shell di una riga, con la semplice
-.\"LINK2"
-sostituzione macro\&.
-.\"Macro Substitution"
-.PP
-Gli obiettivi sono valutati dalla cima al fondo, perciò l'ordine è
-importante. Se alcune azioni mancano, la ricerca continua come se
-la regola non corrispondesse, cioè se un file corrisponde alla prima e
-alla seconda voce e manca la voce View in cima, allora premendo F3 verrà
-usata l'azione View della seconda voce.
-.I Normalmente
-dovrebbero corrispondere tutte le azioni.
+.IR ~/.config/mc/mc.ext.ini .
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
.\"NODE " Background jobs"
.SH " Processi in background"
Questo comando permette di controllare lo stato di ogni processo
@@ -1382,7 +1336,7 @@
ma solo se è di proprietà dell'utente o di root e se non è scrivibile
a tutti. Se tale file non viene trovato, mc alla stessa maniera
prova con ~/.config/mc/menu altrimenti usa il menu di sistema
-%prefix%/share/mc/mc.menu.
+%pkgdatadir%/mc.menu.
.PP
Il formato del file menu è molto semplice. Le righe che cominciano
con qualsiasi cosa che non sia uno spazio o una tabulazione sono
@@ -1894,7 +1848,7 @@
per gli esempi.
.PP
Se quest'opzione è impostata, il programma farà due cose: consulterà
-il file %prefix%/lib/mc/mc.no_proxy per le righe contenenti nomi host
+il file %sysconfdir%/mc/mc.no_proxy per le righe contenenti nomi host
locali (se il nome host comincia con un punto, è considerato un
dominio) e assumendo che ogni nome host senza punti nel nome sia
direttamente accessibile. Tutti gli altri host verranno contattati
@@ -1916,7 +1870,7 @@
Alla partenza il Midnight Commander prova a caricare le informazioni di
inizializzazione dal file ~/.config/mc/ini. Se questo file non esiste,
caricherà le informazioni dal file di configurazione di sistema
-posizionato in %prefix%/share/mc/mc.ini. Se il file di configurazione di
+posizionato in %pkgdatadir%/mc.ini. Se il file di configurazione di
sistema non esiste, MC userà le impostazioni predefinite.
.PP
Il comando
@@ -2425,7 +2379,7 @@
.PP
.B F8
Cambia tra modalità Normale/Filtrata: questo mostrerà il file come si
-trova su disco o se è stato specificato un filtro nel file mc.ext, come
+trova su disco o se è stato specificato un filtro nel file mc.ext.ini, come
esce dal filtro. La modalità corrente è sempre quella diversa da quella
mostrata dall'etichetta del tasto, dato che il bottone rappresenta la
modalità nella quale si entra premendolo.
@@ -2537,7 +2491,7 @@
o
.B C++
o altro). Questo comportamento viene controllato dal file
-.B %prefix%/share/mc/edit.indent.rc
+.B %pkgdatadir%/edit.indent.rc
che viene copiato nel
.B ~/.local/share/mc/mcedit/edit.indent.rc
nella propria directory home la prima volta che lo si usa.
@@ -2610,9 +2564,7 @@
su file system di tipo ext2 (il file system predefinito per sistemi
Unix), fish (per manipolare file su connessioni shell come rsh e ssh) e
per ultimo l'mcfs (file system del Midnight Commander), un file system
-basato sulla rete. Se il codice è stato compilato con il supporto smbfs,
-è possibile manipolare file su file system remoti con il protocollo SMB
-(CIFS).
+basato sulla rete.
.PP
Il codice di commutazione di file system interpreta tutti i nomi di
percorso utilizzati e li dirige al file system corretto; il formato
@@ -2674,7 +2626,7 @@
.PP
.I /nomefile.tar/utar://[dir\-dentro\-tar]
.PP
-Il file mc.ext già fornisce un collegamento per il file tar; ciò
+Il file mc.ext.ini già fornisce un collegamento per il file tar; ciò
significa che normalmente basta selezionare un file tar e premere invio
per entrare nel file tar, vedere la sezione
.\"LINK2"
@@ -2751,36 +2703,6 @@
.PP
Il recupero può metterci un po' di tempo per caricare le informazioni
necessarie per poter cominciare a navigare attraverso i file.
-.\"NODE " SMB File System"
-.SH " File system SMB"
-Il file system smb permette di gestire file su macchine remote con
-protocollo SMB (o CIFS). Queste includono Windows for Workgroups,
-Windows 9x/ME, Windows NT/2000/XP, OS/2 e Samba.
-Per usarlo, si può provare il comando dal pannello
-"Connessione SMB..." (accessibile dalla barra dei menu) o si può
-direttamente cambiare directory corrente usando il comando cd verso
-un percorso simile a questo:
-.PP
-.I smb://[utente@]macchina[/servizio][/dir\-remota]
-.PP
-L'elemento
-.I utente, servizio
-e
-.I dir\-remota
-sono opzionali.
-Il
-.I nome utente, dominio
-e la
-.I password
-possono essere specificati nella finestra di dialogo di ingresso.
-.PP
-Esempi:
-.PP
-.nf
- smb://macchina/Condivisione
- smb://altra_macchina
- smb://guest@macchina/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " EXTernal File System"
.B extfs
@@ -3114,7 +3036,7 @@
Se questa variabile è abilitata (valore predefinito) userà il comando
file per trovare delle corrispondenze sui tipi di file elencati nel
.\"LINK2"
-file mc.ext\&.
+file mc.ext.ini\&.
.\"Edit Extension File"
.TP
.I xtree_mode
@@ -3172,28 +3094,28 @@
Il programma recupera tutte le informazioni relative al proprio funzionamento
dalla variabile ambiente
.BR MC_DATADIR ,
-e se la variabile non è impostata, passerà alla directory %prefix%/share/mc .
+e se la variabile non è impostata, passerà alla directory %pkgdatadir% .
.PP
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
Il file di aiuto per il programma.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
Il file delle estensioni di sistema predefinito.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
Le estensioni dell'utente, la configurazione del visualizzatore e
dell'editor di file. Se presenti, questi file si sovrappongono ai file di
sistema.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
La configurazione di sistema predefinita per il Midnight Commander, usata solo
se l'utente non possiede il proprio file ~/.config/mc/ini.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Le impostazioni globali per il Midnight Commander. La modifica di questo
file influisce su tutti gli utenti, che abbiano o no il file ~/.config/mc/ini .
@@ -3208,11 +3130,11 @@
La configurazione dell'utente. Se questo file è presente, la configurazione
viene caricata da qui invece che dal file di sistema.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
Questo file contiene i suggerimenti (dritte) mostrate dal programma.
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
Questo file contiene il menu di sistema per le applicazioni.
.PP
@@ -3251,7 +3173,7 @@
.PP
.nf
La pagina Web del Midnight Commander:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.\"NODE "AUTHORS"
.SH "AUTORI"
@@ -3292,7 +3214,8 @@
quello che rimane ancora da fare.
.PP
Se si vuole fare un rapporto di un problema nel programma, si prega di
-spedire un messaggio di posta a questo indirizzo: mc\-devel@gnome.org.
+spedire un messaggio di posta a questo indirizzo:
+mc\-devel@lists.midnight-commander.org.
.PP
Nel rapporto è necessario fornire una descrizione dettagliata del baco,
la versione del programma (mc \-v mostra quest'informazione), il sistema
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/mc.1.in
^
|
@@ -1,6 +1,6 @@
.\" -*- mode: troff; coding: UTF-8 -*-
.\"TOPICS "Topics:"
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH "NAME"
mc \- Visual shell for Unix\-like systems.
@@ -43,9 +43,6 @@
.I \-d, \-\-nomouse
Disable mouse support.
.TP
-.I \-D N, \-\-debuglevel=N
-Save the debug level for SMB VFS. N is in 0\-10 range.
-.TP
.I \-e [file], \-\-edit[=file]
Start the internal editor. If the file is specified, open it on
startup. See also
@@ -80,7 +77,7 @@
not meant to be used directly. Instead, it's used from a special shell
script that automatically changes the current directory of the shell to
the last directory Midnight Commander was in. Source the file
-.B %libexecdir%/mc/mc.sh
+.B %pkglibexecdir%/mc.sh
(bash and zsh users) or
.B %libexecdir%/mc.csh
(tcsh users) respectively to define
@@ -297,7 +294,7 @@
Hotkey bindings may be read from external file (keymap\-file).
Initially, Midnight Commander creates key bindings using keymap defined
in the source code. Then, two files
-.B %prefix%/share/mc/mc.keymap
+.B %pkgdatadir%/mc.keymap
and
.B %sysconfdir%/mc/mc.keymap
are loaded always, sequentially reassigned key bindings defined earlier.
@@ -334,7 +331,7 @@
.B %sysconfdir%/mc/
.br
3)
-.B %prefix%/share/mc/
+.B %pkgdatadir%/
.\"NODE " Miscellaneous Keys"
.SH " Miscellaneous Keys"
@@ -948,9 +945,27 @@
.SH " Filter..."
The filter command allows you to specify a shell pattern (for example
.BR "*.tar.gz" )
-which the files must match to be shown. Regardless
-of the filter pattern, the directories and the links to directories
-are always shown in the directory panel.
+which the files and directories must match to be shown.
+The
+.\"LINK2"
+input line
+.\"Input Line Keys"
+allow enter the pattern of file/directory names that will be shown
+in the panel.
+.PP
+When
+.I Files only
+checkbox is on, only files will be matched to the filter, and all
+directories will be shown. Otherwise, as files as directories will
+be filtered. When
+.I Shell Patterns
+checkbox is on, the regular expression is much like the filename globbing
+in the shell (* standing for zero or more characters and ? standing
+for one character). Otherwise, the matching of files/directoris is done
+with normal regular expressions (see ed(1)). When
+.I Case sensitive
+checkbox is on, the filtering will be case sensitive characters. Otherwise,
+the case will be ignored.
.\"NODE " Reread"
.SH " Reread"
The reread command reload the list of files in the directory. It is
@@ -1468,87 +1483,14 @@
.\"NODE " Edit Extension File"
.SH " Edit Extension File"
This will invoke your editor on the file
-.IR ~/.config/mc/mc.ext .
-The format of this file following:
-.PP
-All lines starting with # or empty lines are thrown away.
-.PP
-Lines starting in the first column should have following format:
-.PP
-.IR keyword/expr ,
-i.e. everything after the slash until new line is
-.IR expr .
-.PP
-.I keyword
-can be:
-.TP
-.I shell
-\-
-.I expr
-is an extension (no wildcards). File matches it its name ends
-with
-.IR expr .
-Example:
-.I shell/.tar
-matches
-.IR *.tar .
-.TP
-.I regex
-\-
-.I expr
-is a regular expression. File matches if its name matches the regular
-expression.
-.TP
-.I directory
-\-
-.I expr
-is a regular expression. File matches if it is a directory and its name
-matches the regular expression.
-.TP
-.I type
-\-
-.I expr
-is a regular expression. File matches if the output of
-.I file %f
-without the initial "filename:" part matches regular expression
-.IR expr .
-.TP
-.I default
-\- matches any file.
-.I expr
-is ignored.
-.TP
-.I include
-\- denotes a common section.
-.I expr
-is the name of the section.
-.PP
-Other lines should start with a space or tab and should be of the format:
-.I keyword=command
-(with no spaces around =), where
-.I keyword
-should be:
-.I Open
-(invoked on Enter or double click),
-.I View
-(F3),
-.I Edit
-(F4) or
-.I Include
-(to add rules from the common section).
-.I command
-is any one\-line shell command, with the simple
-.\"LINK2"
-macro substitution\&.
-.\"Macro Substitution"
-.PP
-Rules are matched from top to bottom, thus the order is important. If
-the appropriate action is missing, search continues as if this rule
-didn't match (i.e. if a file matches the first and second entry and View
-action is missing in the first one, then on pressing F3 the View action
-from the second entry will be used).
-.I default
-should match all the actions.
+.IR ~/.config/mc/mc.ext.ini .
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
.\"NODE " Background jobs"
.SH " Background Jobs"
This lets you control the state of any background Midnight Commander
@@ -1563,7 +1505,7 @@
but only if it is owned by user or root and is not world\-writable.
If no such file found, ~/.config/mc/menu is tried in the same way,
and otherwise mc uses the default system\-wide menu
-%prefix%/share/mc/mc.menu.
+%pkgdatadir%/mc.menu.
.PP
The format of the menu file is very simple. Lines that start with
anything but space or tab are considered entries for the menu (in
@@ -2230,7 +2172,7 @@
for examples.
.PP
If this option is set, the program will do two things: consult the
-%prefix%/lib/mc/mc.no_proxy file for lines containing host names that
+%sysconfdir%/mc/mc.no_proxy file for lines containing host names that
are local (if the host name starts with a dot, it is assumed to be a
domain) and to assume that any hostnames without dots in their names are
directly accessible. All other hosts will be accessed through the
@@ -2254,7 +2196,7 @@
If this file doesn't exist, the system\-wide file
.B %sysconfdir%/mc/mc.ini
is used. If this file doesn't exist, the system\-wide file
-.B %prefix%/share/mc/mc.ini
+.B %pkgdatadir%/mc.ini
is used. If this file doesn't exist, MC uses the default settings.
.PP
The
@@ -2465,7 +2407,10 @@
.B ash/dash
users (BusyBox or Debian) may specify startup commands in ~/.local/share/mc/ashrc (fallback ~/.profile).
.PP
-.B tcsh, zsh, fish
+.B zsh
+users may specify startup commands in ~/.local/share/mc/.zshrc (fallback ~/.zshrc).
+.PP
+.B tcsh, fish
users cannot specify mc-specific startup commands at present. They have to rely on
shell-specific startup files.
.PP
@@ -2957,7 +2902,7 @@
.TP
.B F8
Toggle Raw/Parsed mode: This will show the file as found on disk or if
-a processing filter has been specified in the mc.ext file, then the
+a processing filter has been specified in the mc.ext.ini file, then the
output from the filter. Current mode is always the other than written
on the button label, since on the button is the mode which you enter
by that key.
@@ -3083,7 +3028,7 @@
will format the currently highlighted block (plain text or C or C++
code or another). This is controlled by the
file
-.B %prefix%/share/mc/edit.indent.rc
+.B %pkgdatadir%/edit.indent.rc
which is copied to
.B ~/.local/share/mc/mcedit/edit.indent.rc
in your home directory the first time you use it.
@@ -3198,10 +3143,6 @@
If the code was compiled with
.I sftpfs
(for manipulating files over SFTP connections).
-If the code was compiled with
-.I smbfs
-support, you can manipulate files on remote systems with the SMB (CIFS)
-protocol.
.PP
A generic
.I extfs
@@ -3266,7 +3207,7 @@
.PP
.I /filename.tar/utar://[dir\-inside\-tar]
.PP
-The mc.ext file already provides a shortcut for tar files, this means
+The mc.ext.ini file already provides a shortcut for tar files, this means
that usually you just point to a tar file and press return to enter
into the tar file, see the
.\"LINK2"
@@ -3361,6 +3302,21 @@
sftp://joe@noncompressed.ssh.edu/private
sftp://joe@somehost.ssh.edu:2222/private
.fi
+.PP
+When establishing the connection, server key fingerprint is verified using
+the ~/.ssh/known_hosts file. If the host/key pair is not found or the host is found,
+but the key doesn't match, an appropriate message is shown.
+There are three buttons in the message dialog:
+.PP
+.B [Yes]
+add new host/key pair to the ~/.ssh/known_hosts file and continue.
+.PP
+.B [Ignore]
+do not add new host/key pair to the ~/.ssh/known_hosts file, but continue
+nevertheless (at you own risk).
+.PP
+.B [No]
+abort connection.
.\"NODE " Undelete File System"
.SH " Undelete File System"
On Linux systems, if you asked configure to use the ext2fs undelete
@@ -3383,37 +3339,6 @@
.PP
It may take a while for the undelfs to load the required information
before you start browsing files there.
-.\"NODE " SMB File System"
-.SH " SMB File System"
-The smbfs allows you to manipulate files on remote machines with SMB
-(or CIFS) protocol. These include Windows for Workgroups,
-Windows 9x/ME/XP, Windows NT, Windows 2000 and Samba.
-To actually use it, you may try to use the panel command "SMB link..."
-(accessible from the menubar) or you may directly change your current
-directory to it using the cd command to a path name that looks like this:
-.PP
-.I smb://[user@]machine[/service][/remote\-dir]
-.PP
-The
-.IR user ,
-.I service
-and
-.I remote\-dir
-elements are optional.
-The
-.IR user ,
-.I domain
-and
-.I password
-can be specified in an input dialog.
-.PP
-Examples:
-.PP
-.nf
- smb://machine/Share
- smb://other_machine
- smb://guest@machine/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " EXTernal File System"
.B extfs
@@ -3698,7 +3623,7 @@
.B %sysconfdir%/mc/skins/default.ini
.br
5) File
-.B %prefix%/share/mc/skins/default.ini
+.B %pkgdatadir%/skins/default.ini
.PP
Command line option, environment variable and parameter in config file may
@@ -3712,7 +3637,7 @@
.B %sysconfdir%/mc/skins/
.br
3)
-.B %prefix%/share/mc/skins/
+.B %pkgdatadir%/skins/
.br
.PP
@@ -4036,7 +3961,7 @@
.\"Skins"
section.
.PP
-Rules of filenames highlight are placed in %prefix%/share/mc/filehighlight.ini file
+Rules of filenames highlight are placed in %pkgdatadir%/filehighlight.ini file
(~/.config/mc/filehighlight.ini).
Name of section in this file must be equal to parameters names in
[filehighlight] section (in current skin\-file).
@@ -4162,7 +4087,7 @@
If this variable is on (the default) it will spawn the file command to
match the file types listed on the
.\"LINK2"
-mc.ext file\&.
+mc.ext.ini file\&.
.\"Edit Extension File"
.TP
.I xtree_mode
@@ -4304,31 +4229,31 @@
by the
.B MC_DATADIR
environment variable. If it's set, its value is used instead of
-%prefix%/share/mc in the paths below.
+%pkgdatadir% in the paths below.
.PP
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
The help file for the program.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
The default system\-wide extensions file.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
User's own extension, view configuration and edit configuration
file. They override the contents of the system wide files if present.
.PP
.I %sysconfdir%/mc/mc.ini
.RE
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
System\-wide setup files for Midnight Commander, used only if the user
doesn't have his own
.B ~/.config/mc/ini
-file. If %sysconfdir%/mc/mc.ini exists, %prefix%/share/mc/mc.ini isn't used.
+file. If %sysconfdir%/mc/mc.ini exists, %pkgdatadir%/mc.ini isn't used.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Global settings for Midnight Commander. Settings in this file
affect all users, whether they have ~/.config/mc/ini or not. Currently, only
@@ -4342,11 +4267,11 @@
User's own setup. If this file is present then the setup is loaded
from here instead of the system\-wide startup file.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
This file contains the hints displayed by the program.
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
This file contains the default system\-wide applications menu.
.PP
@@ -4385,7 +4310,7 @@
.PP
.nf
Midnight Commander's page on the World Wide Web:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.\"NODE "AUTHORS"
.SH "AUTHORS"
@@ -4397,7 +4322,7 @@
be done.
.PP
If you want to report a problem with the program, please create bugreport
-at http://www.midnight\-commander.org/.
+at https://www.midnight\-commander.org/.
.PP
Provide a detailed description of the bug, the version of the program
you are running
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/mcedit.1.in
^
|
@@ -1,4 +1,4 @@
-.TH MCEDIT 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MCEDIT 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.SH NAME
mcedit \- Internal file editor of GNU Midnight Commander.
.SH SYNOPSIS
@@ -237,12 +237,12 @@
supports syntax highlighting. This means that keywords and contexts
(like C comments, string constants, etc) are highlighted in different
colors. The following section explains the format of the file
-.BR ~/.config/mc/mcedit/Syntax .
+.BR ~/.local/share/mc/syntax/Syntax .
If this file is missing, system\-wide
-.B %prefix%/share/mc/syntax/Syntax
+.B %pkgdatadir%/syntax/Syntax
is used.
The file
-.B ~/.config/mc/mcedit/Syntax
+.B ~/.local/share/mc/syntax/Syntax
is rescanned on opening of every new editor file. The file contains
rules for highlighting, each of which is given on a separate line, and
define which keywords will be highlighted with what color.
@@ -586,6 +586,10 @@
Search autocomplete candidates in entire file (1) or just from
beginning of file to cursor position (0).
.TP
+.I editor_wordcompletion_collect_all_files
+Search autocomplete candidates from all loaded files (1, default), not only from
+the currently edited one (0).
+.TP
.I spell_language
Spelling language (en, en\-variant_0, ru, etc) installed with aspell
package (a full list can be obtained using 'aspell' utility).
@@ -610,24 +614,26 @@
to 7 bits in Midnight Commander's options menu to keep the spacing
clean.
.SH FILES
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
The help file for the program.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
The default system\-wide setup for GNU Midnight Commander, used only if
the user's own ~/.config/mc/ini file is missing.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Global settings for Midnight Commander. Settings in this file
affect all users, whether they have ~/.config/mc/ini or not.
.PP
-.I %prefix%/share/mc/syntax/*
+.I %pkgdatadir%/syntax/*
.IP
The default system\-wide syntax files for mcedit, used only if
-the corresponding user's own ~/.local/share/mc/mcedit/ file is missing.
+the corresponding user's own file in
+.B ~/.local/share/mc/syntax/
+is missing.
.PP
.I ~/.config/mc/ini
.IP
@@ -652,4 +658,4 @@
Paul Sheer (psheer@obsidian.co.za) is the original author of
Midnight Commander's internal editor.
.SH BUGS
-Bugs should be reported to http://www.midnight\-commander.org/.
+Bugs should be reported to https://www.midnight\-commander.org/.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/mcview.1.in
^
|
@@ -1,4 +1,4 @@
-.TH MCVIEW 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MCVIEW 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.SH NAME
mcview \- Internal file viewer of GNU Midnight Commander.
.SH SYNOPSIS
@@ -61,16 +61,16 @@
.fi
.PP
.SH FILES
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
The help file for the program.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
The default system\-wide setup for GNU Midnight Commander, used only if
the user's own ~/.config/mc/ini file is missing.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Global settings for Midnight Commander. Settings in this file
affect all users, whether they have ~/.config/mc/ini or not.
@@ -92,4 +92,4 @@
mc(1), mcedit(1)
.PP
.SH BUGS
-Bugs should be reported to http://www.midnight\-commander.org/.
+Bugs should be reported to https://www.midnight\-commander.org/.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/pl/mc.1.in
^
|
@@ -1,6 +1,6 @@
.\" -*- mode: troff; coding: UTF-8 -*-
.\"Przetłumaczone przez by Macieja Wojciechowskiego wojciech@staszic.waw.pl
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH NAZWA
mc \- wizualny interpetator poleceń dla systemów Unixopodobnych
@@ -62,14 +62,14 @@
mc ()
{
MC=$HOME/tmp/mc$$\-"$RANDOM"
- %prefix%/bin/mc \-P "$@" > "$MC"
+ %bindir%/mc \-P "$@" > "$MC"
cd "`cat $MC`"
rm "$MC"
unset MC;
}
użytkownicy tcsh:
-alias mc 'setenv MC `%prefix%/bin/mc \-P \!*`; cd $MC; unsetenv MC'
+alias mc 'setenv MC `%bindir%/mc \-P \!*`; cd $MC; unsetenv MC'
.fi
Wiem, że ta funkcja mogłaby być krótsza dla basha i zsh, ale małe cudzysłowy
nie zaakceptowały by zawieszenia programu kombinacją
@@ -1095,65 +1095,16 @@
.PP
.\"NODE " Edit Extension File"
.SH " Edycja rozszerzeń pliów (Edit Extension File)"
-Ta komenda wywoła twój edytor na plik ~/.config/mc/mc.ext. Format tego pliku jest
-następujący (zmienił się on począwszy od wersji 3.0):
-.PP
-Wszystkie linie zaczynające się od #, lub puste, nie są brane pod uwagę.
-.PP
-Linie zaczynające się od pierwszej kolumny powinny mieć następujący format:
-.PP
-.IR "słowo kluczowe/wzorzec" ,
-tj. wszystko po
-.I słowie kluczowym/
-dopóki nową linią nie jest
-.I wzorzec
-.PP
-słowami kluczowymi mogą być:
-.PP
-.I shell
-.IP
-(wzorzec jest wtedy wyrażeniem (bez jokerów), tj. pasują wszystkie pliki
-*wzorzec. Np.: .tar znaczy *.tar)
-.PP
-.I regex
-.IP
-(wzorzec jest normalnym wyrażeniem)
-.PP
-.I type
-.IP
-(plik spełnia wymagania jeśli `file %f` zgadza się z wyrażeniem wzorca
-(nazwa: część z `file %f` jest usuwana))
-.PP
-.I default
-.IP
-(wszystkie pliki spełniają, nie ważne jaki jest wzorzec)
-.PP
-Inne linie powinny zaczynać się od spacji lub tabulacji i powinny
-mieć one następujący format:
-.PP
-.I słowo kluczowe=komenda
-(bez spacji przy znaku =), gdzie
-.I słowem kluczowym
-powinno być:
-.PP
-.I Open (Otwórz)
-(jeśli użytkownik naciśnie Enter lub kliknie dwukrotnie),
-.I View (Podgląd)
-(F3),
-.I Edit (Edytuj)
-(F4).
-.PP
-.I command
-jest jakąkolwiek jedną linią powłoki, z zastosowaniem
-prostego makra.
-.PP
-Cele są przeliczane od góry do dołu (porządek jest tu istotny). Jeśli
-jakiejś akcji brakuje, poszukiwanie kontynuuje się tak jakby wcześniej
-nie nastąpiła żadna zgodność (tj. jeśli zgadza się z wzorcem pierwszym
-i trzecim i brakuje w pierwszym akcji View, to naciskając F3 użyta będzie
-akcja z trzeciego wzorca). Opcja default powinna wychwycić wszystkie możliwe
-akcje.
-.PP
+Ta komenda wywoła twój edytor na plik
+.IR ~/.config/mc/mc.ext.ini .
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
+PP
.\"NODE " Background Jobs"
.SH " Prace w tle (Background jobs)"
Pozwalają ci one kontrolować status jakichkolwiek procesów wykonywanych
@@ -1170,7 +1121,7 @@
tylko wtedy kiedy jest on w posiadaniu użytkownika lub roota i mamy do niego
prawa zapisu. Jeśli takiego nie ma próbuje się z plikiem ~/.config/mc/menu z tymi
samymi założeniami, jeśli jego też nie ma \- używa się standardowego pliku
-systemowego, który znajduje się w %prefix%/share/mc/mc.menu.
+systemowego, który znajduje się w %pkgdatadir%/mc.menu.
.PP
Format pliku z menu użytkownika jest bardzo prosty. Linie zaczynające się
od czegokolwiek innego niż spacja lub tabulacja, są traktowane jako
@@ -1608,7 +1559,7 @@
.SH " Zapisz ustawienia (Save Setup)"
Na starcie Midnight Commander będzie próbował odczytać opcje startowe
z pliku ~/.config/mc/ini. Jeśli on nie istnieje, odczyta on konfiguracje z
-ogólnodostępnego pliku %prefix%/share/mc/mc.ini. Jeśli on też nie istnieje MC
+ogólnodostępnego pliku %pkgdatadir%/mc.ini. Jeśli on też nie istnieje MC
użyje swoich domyślnych ustawień.
.PP
Komenda
@@ -2052,7 +2003,7 @@
.B F8
Przełącza tryby Raw i Parsed. Pokaże to plik w postaci takiej w jakiej
został znaleziony na dysku, lub jeśli został wybrany jakiś filtr, bądź
-też plik spełnia wymagania w pliku mc.ext, wyświetlane jest to co
+też plik spełnia wymagania w pliku mc.ext.ini, wyświetlane jest to co
przekazuje filtr. Aktualne ustawienie jest zawsze przeciwne niż to napisane
na przycisku, przycisk wskazuje zawsze to co się stanie po jego
naciśnięciu.
@@ -2273,7 +2224,7 @@
w oknie konfiguracyjnym wirtualnego systemu plików. Skonfiguruje
to program tak, aby zawsze
używał serwera proxy. Jeśli ta zmienna jest ustawiona, program będzie robił
-dwie rzeczy: konsultował plik %prefix%/share/mc.no_proxy w celu znalezienia linii
+dwie rzeczy: konsultował plik %sysconfdir%/mc/mc.no_proxy w celu znalezienia linii
zawierających nazwy serwerów, które są lokalne (jeśli nazwa hosta zaczyna
się od kropki, uznaje się, że jest to domena) i sprawdza czy jakieś hosty
bez kropek w nazwie są widoczne bezpośrednio.
@@ -2300,7 +2251,7 @@
.PP
.I /nazwa_pliku.tar:utar/[katalogu\-wewnątrza\-archiwum]
.PP
-Plik mc.ext pozwala już na tworzenie skrótów do plików tar, oznacza to, że
+Plik mc.ext.ini pozwala już na tworzenie skrótów do plików tar, oznacza to, że
możesz wybrać jakiś plik tar i nacisnąć enter aby do niego wejść, zobacz
sekcję Edycja pliku rozszerzeń po więcej szczegółów na temat tego jak
zostało to pomyślane.
@@ -2372,38 +2323,6 @@
.PP
Może to chwilkę potrwać zanim pliki zostaną pokazane i będziesz mógł je
normalnie oglądać.
-.PP
-.\"NODE " SMB File System"
-.SH " SMB File System"
-The smbfs allows you to manipulate files on remote machines with SMB
-(or CIFS) protocol. These include Windows for Workgroups,
-Windows 9x/ME/XP, Windows NT, Windows 2000 and Samba.
-To actually use it, you may try to use the panel command "SMB link..."
-(accessible from the menubar) or you may directly change your current
-directory to it using the cd command to a path name that looks like this:
-.PP
-.I smb://[user@]machine[/service][/remote\-dir]
-.PP
-The
-.IR user ,
-.I service
-and
-.I remote\-dir
-elements are optional.
-The
-.IR user ,
-.I domain
-and
-.I password
-can be specified in an input dialog.
-.PP
-Examples:
-.PP
-.nf
- smb://machine/Share
- smb://other_machine
- smb://guest@machine/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " EXTernal File System"
.B extfs
@@ -2823,7 +2742,7 @@
.I use_file_to_guess_type
.IP
Jeśli ta zmienna jest ustawiona (standardowo) próbuje się dostosować
-rozszerzenie pliku do tego wybranego w pliku mc.ext.
+rozszerzenie pliku do tego wybranego w pliku mc.ext.ini.
.PP
.I xtree_mode
.IP
@@ -2882,25 +2801,25 @@
.BR MC_DATADIR ,
jeśli jest ona nie ustawiona to znowu przetwarzany jest katalog /usr.
.PP
-%prefix%/share/mc.hlp
+%pkgdatadir%/help/mc.hlp
.IP
Plik pomocy dla programu.
.PP
-%prefix%/share/mc/mc.ext
+%pkgdatadir%/mc.ext.ini
.IP
Standardowy plik rozszerzeń plików.
.PP
-~/.config/mc/mc.ext
+~/.config/mc/mc.ext.ini
.IP
Własny plik użytkownika, konfiguruje podgląd i edycje plików. Ma wyższy
priorytet niż plik systemowy.
.PP
-%prefix%/share/mc/mc.ini
+%pkgdatadir%/mc.ini
.IP
Standardowy plik setupu do Midnight Commandera, używany tylko wówczas,
kiedy użytkownik nie ma swojego własnego pliku ~/.config/mc/ini.
.PP
-%prefix%/share/mc/mc.lib
+%pkgdatadir%/mc.lib
.IP
Globalne ustawienia Midnight Commandera. Ustawienia w tym pliku są
uwzględniane przez wszystkie sesje Midnight Commandera, użyteczne do
@@ -2911,11 +2830,11 @@
Własny setup użytkownika. Jeśli ten plik jest dostępny, jest ładowany
zamiast pliku globalnego.
.PP
-%prefix%/share/mc/hints/mc.hint
+%pkgdatadir%/hints/mc.hint
.IP
Plik zawierający podpowiedzi (hints) wyświetlane przez program.
.PP
-%prefix%/share/mc/mc.menu
+%pkgdatadir%/mc.menu
.IP
Ten plik zawiera informacje o ogólnosystemowych aplikacjach w menu.
.PP
@@ -2960,7 +2879,7 @@
.PP
.nf
Strona Midnight Commander w sieci World Wide Web:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.PP
.\"NODE "AUTHORS"
@@ -3004,7 +2923,8 @@
pozostało jeszcze do zrobienia.
.PP
Jeśli chcesz zgłosić kłopoty z programem [błędy w nim],
-wyślij e\-mail [po angielsku], na adres mc\-devel@gnome.org.
+wyślij e\-mail [po angielsku], na adres
+mc\-devel@lists.midnight-commander.org.
.PP
Do zgłoszenia błędu dołącz opis problemu, versję programu, którego używasz
(wyświetla ją mc \-V), system operacyjny, na którym pracujesz i jeśli program
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/ru/mc.1.in
^
|
@@ -1,7 +1,7 @@
.\" -*- mode: troff; coding: UTF-8 -*-
.\"TOPICS "Разделы помощи:"
.\" TODO: Перевести раздел EXTernal File System
-.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %DISTR_VERSION%" "GNU Midnight Commander"
+.TH MC 1 "%DATE_OF_MAN_PAGE%" "MC Version %MAN_VERSION%" "GNU Midnight Commander"
.\"SKIP_SECTION"
.SH "НАИМЕНОВАНИЕ"
mc \- Визуальная оболочка для Unix\-подобных систем.
@@ -47,13 +47,6 @@
.I \-d, \-\-nomouse
Отключает поддержку мыши.
.TP
-.I \-D N, \-\-debuglevel=N
-Используется только если код был скомпилирован с поддержкой
-.\"LINK2"
-виртуальной файловой системы smbfs
-.\"SMB File System"
-для установки уровня отладочных сообщений smbfs в N (0\-10).
-.TP
.I \-e [файл]
Запустить встроенный редактор. Если параметр "файл" задан, этот файл
будет открыт при запуске. Смотрите также
@@ -82,8 +75,7 @@
комбинаций к действиям.
.TP
.I \-l файл, \-\-ftplog=файл
-Сохранить диалог с ftp\-сервером, а также отладочную информацию smbfs в
-файл file.
+Сохранить диалог с ftp\-сервером в файл file.
.TP
.I \-\-nokeymap
Не загружать клавиатурные комбинации из файла, использовать определённые
@@ -97,9 +89,9 @@
Commander.
.IP
Для того чтобы эта функция была определена, используйте файл
-.B %libexecdir%/mc/mc.sh
+.B %pkglibexecdir%/mc.sh
для оболочек bash и zsh, а для оболочки tcsh соответственно файл
-.B %libexecdir%/mc/mc.csh
+.B %pkglibexecdir%/mc.csh
.TP
.I \-s, \-\-slow
Включает медленный режим терминала, в котором программа выводит меньше
@@ -169,7 +161,7 @@
Третье поле экрана, расположенное в нижней части экрана, содержит
командную строку текущей оболочки. В этом же поле (самая нижняя строка
экрана) содержится подсказка по использованию функциональных клавиш
-.BR F1 \- F10 .
+.BR "F1 \- F10" .
Самая верхняя строка экрана содержит строку
.\"LINK2"
горизонтального меню\&.
@@ -346,7 +338,7 @@
определённого в исходном коде. Затем всегда загружаются два файла
.B %sysconfdir%/mc/mc.keymap
и
-.BR %prefix%/share/mc/mc.keymap ,
+.BR %pkgdatadir%/mc.keymap ,
последовательно переопределяя ранее загруженные команды.
Поиск файла клавиатурных команд, определённого пользователем, производится
по следующему алгоритму (до первого нахождения файла):
@@ -383,7 +375,7 @@
.B %sysconfdir%/mc/
.br
3)
-.B %prefix%/share/mc/
+.B %pkgdatadir%/
.\"NODE " Miscellaneous Keys"
.SH " Разные команды"
@@ -548,7 +540,7 @@
выключена, то пометка файлов производится по правилам обработки
нормальных регулярных выражений (смотрите ed (1)). Если включена опция
.I "С учётом регистра"
-то пометка файлов и каталогов будет производиться с учетом регистра символов имён.
+то пометка файлов и каталогов будет производиться с учётом регистра символов имён.
Если опция
.I "С учётом регистра"
выключена, то регистр символов учитываться не будет.
@@ -1024,10 +1016,27 @@
.\"NODE " Filter..."
.SH " Фильтр..."
Пункт меню "Фильтр" позволяет задать шаблон, которому должны
-соответствовать имена файлов, отображаемых в панели (например,
+соответствовать имена файлов и каталогов, отображаемых в панели
+(например,
.BR "*.tar.gz" ).
-Имена каталогов и ссылки на каталоги отображаются всегда, независимо от
-шаблона.
+.PP
+Строка ввода
+.\"Input Line Keys"
+предназначена для ввода регулярного выражения (маски) для выбора файлов.
+Если включена опция
+.IR "Только файлы" ,
+то фильтроваться будут только файлы, а все каталоги будут отбражаться
+независимо от того, соответствуют они фильтру или нет. В противном случае
+фильтроваться будут как файлы, так и каталоги. Если включена опция
+.IR "Образцы в стиле shell" ,
+регулярные выражение строятся по тем же правилам, которые действуют в
+оболочке shell ('*' означает ноль или большее число любых символов, а '?'
+заменяет один произвольный символ). В противном случае соответствие
+файлов/каталогов фильтру определяется по правилам обработки нормальных
+регулярных выражений (смотрите ed(1)). Если включена опция
+.I "С учётом регистра" ,
+то фильтрация файлов и каталогов будет производиться с учётом регистра
+символов имён. В противном случае регистр символов учитываться не будет.
.\"NODE " Reread"
.SH " Перечитать"
Команда "Перечитать" обновляет список, отображаемый на панели. Это
@@ -1039,9 +1048,9 @@
.B F1 \- F10
как "горячие" клавиши для команд, включенных в меню "Файл".
Escape\-последовательности, генерируемые клавишами
-.BR F1 \- F10 ,
+.BR "F1 \- F10" ,
соответствуют функциям terminfo
-.IR kf1 \- kf10 .
+.IR "kf1 \- kf10" .
На терминалах без поддержки функциональных клавиш можно достичь аналогичного
эффекта, нажав клавишу
.BR Esc ,
@@ -1258,7 +1267,7 @@
выключена, то пометка файлов производится по правилам обработки
нормальных регулярных выражений (смотрите ed (1)). Если включена опция
.I "С учётом регистра"
-то пометка файлов и каталогов будет производиться с учетом регистра символов имён.
+то пометка файлов и каталогов будет производиться с учётом регистра символов имён.
Если опция
.I "С учётом регистра"
выключена, то регистр символов учитываться не будет.
@@ -1403,7 +1412,7 @@
.PP
После выбора пункта меню
.\"LINK2"
-.I "Файл расширений"
+.I "Редактировать файл расширений"
.\"Edit Extension File"
вы можете связать с определённым расширением файла (окончанием имени
после последней точки) программу, которая будет запускаться для
@@ -1661,86 +1670,17 @@
встроенной команды cd\&.
.\"The cd internal command"
.\"NODE " Edit Extension File"
-.SH " Файл расширений"
+.SH " Редактировать файл расширений"
Этот пункт меню "Команда" служит для вызова редактора и редактирования
файла
-.BR ~/.config/mc/mc.ext .
-Этот файл имеет следующий формат (формат был изменен в версии 3.0):
-.PP
-Все строки, начинающиеся с #, или пустые строки игнорируются.
-.PP
-Строки, начинающиеся с первой колонки (будем говорить, что с таких строк
-начинаются секции файла расширений), должны иметь следующий формат:
-.PP
-.IR keyword/desc ,
-то есть всё, что стоит после
-.I keyword/
-и до конца строки, интерпретируется как
-.IR desc .
-.PP
-В качестве keyword может стоять одно из следующих слов:
-.TP
-.I shell
-если desc начинается с точки (мета\-символы не допускаются), то desc \-
-это расширение имени файла, то есть шаблону соответствуют все файлы,
-оканчивающиеся на desc. Пример: .tar будет означать *.tar. Если desc
-не начинается с точки, то desc трактуется как полное имя файла.
-.TP
-.I regex
-desc \- регулярное выражение. Обратите внимание на то, что используется
-библиотека GNU regex, в силу чего "\\|" соответствует просто символу
-"|", а "|" имеет специальное значение (логическое ИЛИ). Аналогично,
-вместо скобок "(" и ")" надо использовать "\\(" и "\\)".
-.TP
-.I directory
-Файл является каталогом, и его имя соответствует регулярному выражению desc.
-.TP
-.I type
-в этом случае выбираются такие файлы, для которых `file %f`
-соответствует регулярному выражению desc (часть filename: из `file %f`
-удалена).
-.TP
-.I default
-подходит любой файл, независимо от того, какое значение принимает desc.
-.TP
-.I include
-\- означает общую секцию.
-.PP
-Все строки в секции, кроме первой, должны начинаться с пробела или
-символа табуляции и иметь следующий формат:
-.PP
-.I keyword=command
-(без пробелов возле "="), где
-.I keyword
-должно быть:
-.PP
-.I Open
-(строка задаёт действия, выполняемые в том случае, когда пользователь
-нажимает Enter или дважды щёлкает мышкой по имени файла),
-.I View
-(F3),
-.I Edit
-(F4) или
-.I Include
-(для добавления правил из общей секции).
-.PP
-.I command
-\- любая однострочная команда оболочки, в которой допускаются простые
-.\"LINK2"
-макроподстановки\&.
-.\"Macro Substitution"
-.PP
-Действие вычисляется сверху вниз (таким образом порядок следования
-важен). Если некоторое действие пропущено, поиск продолжается как в
-случае, если это действие не соответствует условию. Другими словами если
-файл соответствует первой и второй секции, но действие View пропущено в
-первой секции, то при нажатии клавиши
-.B F3
-будет использовано действие
-.I View
-из второй секции.
-.B default
-должно описывать все действия.
+.BR ~/.config/mc/mc.ext.ini .
+Если этот файл не существует и вы не root, этот файл будет скопирован с
+.IR %sysconfdir%/mc/mc.ext.ini .
+Если вы root, вы можете выбрать, какой из файлов редактировать: пользовательский
+.I ~/.config/mc/mc.ext.ini
+или системный
+.IR %sysconfdir%/mc/mc.ext.ini .
+Формат этого файла подробно описан в нём самом.
.\"NODE " Background Jobs"
.SH " Фоновые задания"
Этот пункт меню позволяет вам управлять фоновыми заданиями, запущенными
@@ -1764,7 +1704,7 @@
образом ищется файл
.BR ~/.config/mc/menu ,
и в последнюю очередь mc использует общесистемное меню
-.BR %prefix%/share/mc/mc.menu .
+.BR %pkgdatadir%/mc.menu .
.PP
Формат всех трёх файлов меню одинаков и очень прост. Строки комментариев
начинаются с '#'. Дополнительные комментарии должны начинаться с '#',
@@ -1989,16 +1929,14 @@
.PP
.B Параметры операций с файлами
.PP
-.I Детали операций\/\c
-\&.
+.IR "Детали операций" .
Этот переключатель определяет, будет ли при выполнении операций
копирования, перемещения и удаления выводится дополнительное окно,
отображающее ход выполнения операции. Если у вас медленный терминал, вы
можете отключить этот вывод. Он отключается автоматически, если скорость
вашего терминала меньше 9600 bps.
.PP
-.I Подсчитывать общий размер\/\c
-\&.
+.IR "Подсчитывать общий размер" .
Если эта опция включена, Midnight Commander перед выполнением операций
копирования, перемещения и удаления подсчитывает общее число
обрабатываемых файлов и их суммарный размер и показывает ход выполнения
@@ -2007,21 +1945,18 @@
опция
.IR "Детали операций" .
.PP
-.I Обычный индикатор прогресса\/\c
-\&.
+.IR "Обычный индикатор прогресса" .
Если эта опция включена, индикатор прогресса файловых операций (копирование,
перемещение, удаление) всегда увеличивается слева направо. Если опция
выключена, направление увеличения индикатора прогресса совпадает с направлением
файловой операции: с левой панели на правую или наоборот. По умолчанию включено.
.PP
-.I Автоимя каталога\/\c
-\&.
+.IR "Автоимя каталога" .
При создании нового каталога по F7 в поле ввода имени нового каталога
будет автоматически подставляться имя файла или каталога, находящегося
под курсором. По умолчанию выключено.
.PP
-.I Выделять место\/\c
-\&.
+.IR "Выделять место" .
Если возможно, предварительно выделять место под весь копируемый файл.
По умолчанию выключено.
.PP
@@ -2034,8 +1969,7 @@
Поэтому вы должны нажимать Esc дважды, чтобы закрыть диалог. Но существует
возможность использовать однократное нажатие Esc для этого действия.
.PP
-.I Однократное нажатие\/\c
-\&.
+.IR "Однократное нажатие" .
По умолчанию эта опция выключена. Если вы её включите, то программа будет
ожидать нажатия второй клавиши только в течение некоторого временного
интервала (см. ниже опцию
@@ -2062,19 +1996,17 @@
FreeBSD или при использовании xterm вы можете просмотреть этот вывод,
нажав C\-o.
.PP
-.I На "тупых" терминалах\/\c
-\&.
+.IR "На \(lqтупых\(rq терминалах" .
Пауза будет создаваться на терминалах, которые не способны обеспечить
показ вывода последней из выполнявшихся команд (это любые терминалы,
-отличные от xterm или Linux\-консоли).
+отличные от xterm или консоли Linux).
.PP
.IR Всегда .
Программа обеспечит паузу после выполнения любой команды.
.PP
.B Прочие настройки
.PP
-.I Встроенный редактор\/\c
-\&.
+.IR "Встроенный редактор" .
Если эта опция включена, то для редактирования файлов вызывается
встроенный редактор. Если опция выключена, то будет использоваться
редактор, указанный в переменной окружения
@@ -2086,8 +2018,7 @@
Встроенный редактор файлов\&.
.\"Internal File Editor"
.PP
-.I Встроенный просмотр\/\c
-\&.
+.IR "Встроенный просмотр" .
Если эта опция включена, для просмотра файлов вызывается встроенная
программа просмотра. Если опция выключена, вызывается программа,
указанная в переменной окружения
@@ -2099,20 +2030,17 @@
Встроенная программа просмотра файлов\&.
.\"Internal File Viewer"
.PP
-.I Автоматические меню\/\c
-\&.
+.IR "Автоматические меню" .
Если эта опция включена, пользовательское меню будет автоматически
вызываться на экран при запуске программы. Это бывает полезно, если на
компьютере работают неопытные пользователи (операторы), которые должны
выполнять только стандартные операции.
.PP
-.I Спрашивать имя нового файла\/\c
-\&.
+.IR "Спрашивать имя нового файла" .
Если эта опция включена, то перед открытием нового файла в редакторе
будет запрошено его имя.
.PP
-.I Выпадение меню при вызове\/\c
-\&.
+.IR "Выпадение меню при вызове" .
Если эта опция включена, то при вызове главного меню нажатием клавиши
.B F9
будет сразу отображаться перечень пунктов меню (выпадающее меню).
@@ -2122,8 +2050,7 @@
либо выбрать нужный пункт по "горячей" клавише и только после этого
получите возможность выбрать пункт выпадающего меню.
.PP
-.I Образцы в стиле shell\/\c
-\&.
+.IR "Образцы в стиле shell" .
По умолчанию команды Select, Unselect и Filter используют регулярные
выражения, которые строятся по правилам, действующим в оболочке (shell\-
like regular expressions). Для того чтобы достичь такого эффекта,
@@ -2132,8 +2059,7 @@
заменяется на обычную точку. Если опция выключена, то регулярные
выражения должны строиться так, как описано в ed(1).
.PP
-.I Дополнение: показывать всё\/\c
-\&.
+.IR "Дополнение: показывать всё" .
В процессе ввода команд Midnight Commander может выполнять
.\"LINK2"
Завершение ввода
@@ -2152,14 +2078,12 @@
.BR Alt\-Tab ,
включите эту опцию.
.PP
-.I Вращающийся индикатор\/\c
-\&.
+.IR "Вращающийся индикатор" .
Если эта опция включена, Midnight Commander отображает в верхнем правом
углу вращающуюся черточку как индикатор того, что выполняется какое\-то
задание (операция).
.PP
-.I Смена каталога по ссылкам\/\c
-\&.
+.IR "Смена каталога по ссылкам" .
Установка этой опции приводит к тому, что Midnight Commander будет
следовать логической цепочке подкаталогов при выполнении команд смены
каталога как в панели, так и по команде
@@ -2173,8 +2097,7 @@
вы окажетесь в его родительском каталоге, а не в том каталоге, где
расположена ссылка.
.PP
-.I Безопасное удаление\/\c
-\&.
+.IR "Безопасное удаление" .
Если эта опция включена, непреднамеренно удалить файл будет сложнее. В
диалоговых окнах подтверждения удаления предлагаемая по умолчанию кнопка
изменяется с
@@ -2183,8 +2106,7 @@
.BR [Нет] .
По умолчанию эта опция выключена.
.PP
-.I Безопасная перезапись\/\c
-\&.
+.IR "Безопасная перезапись" .
Если эта опция включена, непреднамеренно перезаписать файл будет сложнее. В
диалоговом окне подтверждения перезаписи предлагаемая по умолчанию кнопка
изменяется с
@@ -2193,8 +2115,7 @@
.BR [Нет] .
По умолчанию эта опция выключена.
.PP
-.I Автосохранение настроек\/\c
-\&.
+.IR "Автосохранение настроек" .
Если эта опция включена, то при выходе из программы Midnight Commander
значения всех настраиваемых параметров сохраняются в файле
.BR ~/.config/mc/ini .
@@ -2215,12 +2136,10 @@
Изменить расположение панелей можно также с помощью клавиатурного сочетания
Alt\-, (Alt\-запятая).
.PP
-.I Равные размеры\/\c
-\&.
+.IR "Равные размеры" .
По умолчанию панели имеют равные разменры. Эта опция позволяет изменить их.
.PP
-.B Консольный вывод\c
-\&.
+.BR "Консольный вывод" .
.PP
Эта опция доступна, если Midnight Commander запущен на консоли Linux или
FreeBSD. Она устанавливает число строк, которые будут оставлены для отображения
@@ -2228,74 +2147,62 @@
.PP
.B Прочие настройки
.PP
-.I Линейка меню\/\c
-\&.
+.IR "Линейка меню" .
Если включено, основное меню программы будет отображаться постоянно вверху
экрана. По умолчанию включено.
.PP
-.I Командная строка\/\c
-\&.
+.IR "Командная строка" .
Если включено, в нижней части экрана будет доступна командная строка.
По умолчанию включено.
.PP
-.I Метки клавиш\/\c
-\&.
+.IR "Метки клавиш" .
Если включено, внизу экрана будут отображаться 10 меток, соответствующих
функциональным клавишам
-.BR F1 \- F10 .
+.BR "F1 \- F10" .
По умолчанию включено.
.PP
-.I Строка подсказки\/\c
-\&.
+.IR "Строка подсказки".
Если включено, ниже панелей будут отображаться однострочные подсказки
по приёмам работы в Midnight Commander. По умолчанию включено.
.PP
-.I Заголовок xterm\/\c
-\&.
+.IR "Заголовок xterm" .
При исполнении в эмуляторе терминала системы X11 Midnight Commander
отображает в заголовке xterm текущий каталог и изменяет этот заголовок
при необходимости. Если ваш эмулятор терминала неисправен и вы видите
неверный заголовок при старте или изменении каталога, выключите эту опцию.
По умолчанию включено.
.PP
-.I Свободное место\/\c
-\&.
+.IR "Свободное место" .
Если включено, на нижней рамке панели будет показано свободное место и общий
размер текущей файловой системы. По умолчанию включено.
.\"NODE " Panel options"
.SH " Настройки панелей"
.B Основные настройки панелей
.PP
-.I Показывать мини\-статус\/\c
-\&.
+.IR "Показывать мини\-статус" .
Если включено, в нижней части каждой панели выводится строка информации
о выделенном подсветкой файле или каталоге каждой панели. По умолчанию включено.
.PP
-.I Размеры в единицах СИ\/\c
-\&.
+.IR "Размеры в единицах СИ" .
Если эта опция включена, то Midnight Commander отображает размеры файлов
и каталогов с префиксами СИ (по основанию 10). По умолчанию опция выключена.
В этом случае Midnight Commander отображает размеры с префиксами МЭК (по
основанию 2).
.PP
-.I Смешивать файлы/каталоги\/\c
-\&.
+.IR "Смешивать файлы/каталоги" .
Если эта опция включена, имена файлов и каталогов отображаются вперемежку.
Если опция выключена, каталоги (и ссылки на каталоги) показываются в начале
списка, а имена файлов \- после имен всех каталогов. По умолчанию выключено.
.PP
-.I Показывать резервные (Backup) файлы\/\c
-\&.
+.IR "Показывать резервные (Backup) файлы" .
Если эта опция выключена, Midnight Commander не показывает файлы, имена которых
заканчиваются на '~' (подобно ключу \-B команды ls в GNU). По умолчанию включено.
.PP
-.I Показывать скрытые файлы\/\c
-\&.
+.IR "Показывать скрытые файлы" .
Если эта опция включена, Midnight Commander показывает все файлы, имена которых
начинаются точкой (как ls \-a). По умолчанию включено.
.PP
-.I Быстрая загрузка каталога\/\c
-\&.
+.IR "Быстрая загрузка каталога" .
По умолчанию эта опция выключена. Если вы активизируете её, Midnight
Commander будет использовать для вывода содержимого каталога следующий трюк:
содержимое каталога перечитывается только в том случае, если изменилась
@@ -2305,37 +2212,32 @@
не обновляется. В этом случае (если опция включена) вы должны обновлять список
файлов вручную (используя клавиатурное сочетание C\-r).
.PP
-.I Отметка перемещает курсор\/\c
-\&.
+.IR "Отметка перемещает курсор" .
Когда вы отмечаете файл (клавишей
.BR Insert ),
то по умолчанию подсветка на имени файла смещается на одну строку вниз.
.PP
-.I Инвертировать только файлы\/\c
-\&.
+.IR "Инвертировать только файлы" .
Если опция включена (по умолчанию она включена), инвертирование
выбора применяется только к файлам, но не к каталогам. Выбор каталогов
не изменяется. Если не установлена, производится инвертирование как файлов,
так и каталогов. Все невыбранные объекты становятся выбранными и наоборот.
.PP
-.I Простая перестановка\/\c
-\&.
+.IR "Простая перестановка" .
Если обе панели содержат списки файлов и каталогов, простая перестановка
представляет собой изменение расположения панелей на экране: правая панель
становится левой и наоборот. Если эта опция выключена, панели со списками файлов
обмениваются соим содержимым, сохраняя формат списка и параметры сортировки.
По умолчанию выключено.
.PP
-.I Автосохранение настроек панелей\/\c
-\&.
+.IR "Автосохранение настроек панелей" .
Если опция включена (по умолчанию она выключена), то при выходе из
Midnight Commander'а текущие настройки панелей соханяются в файле
~/.config/mc/panels.ini.
.PP
.B Навигация
.PP
-.I Навигация в стиле lynx\/\c
-\&.
+.IR "Навигация в стиле lynx" .
Если эта опция включена, вы имеете возможность использовать клавиши
.B Rigth
для перехода в подсвеченный в данный момент каталог и
@@ -2343,8 +2245,7 @@
для перехода в родительский по отношению к текущему каталог (при условии,
что командная строка пуста). По умолчанию опция выключена.
.PP
-.I Страничное листание\/\c
-\&.
+.IR "Страничное листание" .
Если опция установлена (по умолчанию она установлена), то когда курсор
(подсветка) достигает конца или начала списка файлов, отображаемого на
панели, будет производиться смещение на половину этого списка (то есть
@@ -2352,14 +2253,12 @@
заменяясь следующими пунктами общего списка). Если опция не установлена,
происходит смещение только на одну строку.
.PP
-.I Страничное листание мышью\/\c
-\&.
+.IR "Страничное листание мышью" .
Определяет, будет ли прокрутка информации (scrolling) в панелях,
осуществляемая с помощью мышки, производиться страницами или на одну
строку.
.PP
-.I Центрированное листание\/\c
-\&.
+.IR "Центрированное листание" .
Если эта опция включена, содержимое панели будет пролистываться, а курсор
будет находиться в середине колонки списка файлов. Эта опция не применяется
к страничному листанию \- в этом случае позиция курсора изменится.
@@ -2437,9 +2336,9 @@
Распознавание клавиш (Learn keys)
.\"Learn keys"
вызывает диалоговое окно, в котором вы можете протестировать работу
-некоторых клавиш (\c
-.B F1 \- F20, Home, End\c
-), которые работают не на всех типах терминалов.
+некоторых клавиш (
+.BR "F1 \- F20, Home, End" ),
+которые работают не на всех типах терминалов.
.PP
В диалоговом окне появляется таблица с названиями клавиш, которые могут
тестироваться. Вы можете перемещать подсветку по названиям, используя
@@ -2801,6 +2700,11 @@
.B ~/.local/share/mc/bashrc
и специальную карту раскладки клавиатуры в файле
.BR ~/.local/share/mc/inputrc .
+Если вы используете
+.BR zsh ,
+можно указать команды, которые будут выполняться при запуске
+subshell, в файле
+.B ~/.local/share/mc/.zshrc .
Пользователи
.B tcsh
могут задать выполняемые при запуске команды в файле
@@ -2900,7 +2804,7 @@
помеченных), причём установка производится так же, как по кнопке
\fB[Отметить всё]\fR.
.TP
-.BR [Прервать]
+.B [Прервать]
отказаться от выполнения команды Chmod.
.\"NODE "Chown"
.SH "Владелец/группа"
@@ -2990,7 +2894,7 @@
помеченных), причём установка производится так же, как по кнопке
\fB[Отметить всё]\fR.
.TP
-.BR [Прервать]
+.B [Прервать]
отказаться от выполнения команды Chattr.
.\"NODE "File Operations"
.SH "Операции с файлами"
@@ -3071,7 +2975,7 @@
в нижней части окна запроса. Выбор экранной кнопки производится
.B клавишами\-стрелками
или клавишей
-.BR Tab.
+.BR Tab .
.PP
Окно запроса на рекурсивное удаление появляется в том случае, если вы
пытаетесь удалить непустой каталог. По кнопке
@@ -3241,7 +3145,7 @@
выключена, то пометка файлов производится по правилам обработки
нормальных регулярных выражений (смотрите ed(1)). Если включена опция
.I "С учётом регистра"
-то пометка файлов и каталогов будет производиться с учетом регистра символов имён.
+то пометка файлов и каталогов будет производиться с учётом регистра символов имён.
Если опция
.I "С учётом регистра"
выключена, то регистр символов учитываться не будет.
@@ -3421,7 +3325,7 @@
.B F8
Переключение между режимами Raw/Parsed: файл отображается либо в том
виде, как он записан на диске, либо пропущенным через фильтр, который
-задан для этого типа файлов в mc.ext. Текущий режим отображения всегда
+задан для этого типа файлов в mc.ext.ini. Текущий режим отображения всегда
обратный по отношению к тому, который указан на экранной кнопке
.BR F8 ,
поскольку на кнопке указывается режим, к которому осуществляется переход
@@ -3553,7 +3457,7 @@
.BR F9 ,
или переназначить клавишу) будет осуществляться форматирование выделенного
блока кода на языке C, C++ или других. Форматирование управляется файлом
-.B %prefix%/share/mc/edit.indent.rc
+.B %pkgdatadir%/edit.indent.rc
который при первом вызове копируется в
.B ~/.local/share/mc/mcedit/edit.indent.rc
в вашем домашнем каталоге.
@@ -3600,7 +3504,7 @@
переходк к предыдущему экрану в списке клавиатурной комбинацией
.BR Alt\-{ ,
вызов дилогового окна со списком экранов клавиатурной комбинацией
-.BR Alt\-`
+.B Alt\-`
или с помощью пункта меню.
Все эти комбинации клавиш одинаковы во всех экранах.
@@ -3688,10 +3592,6 @@
оболочкой через такие программы как rsh и ssh);
.br
\- и, наконец, сетевой файловой системы nfs.
-.br
-MC может быть собран с поддержкой файловой системы smbfs, используемой
-для манипулирования файлами на удалённых компьютерах по протоколу SMB
-(CIFS).
.PP
Подпрограммы работы с виртуальными файловыми системами интерпретируют
все встречающиеся имена путей и формируют корректные обращения к
@@ -3699,7 +3599,7 @@
файловых систем описаны в отдельных разделах по каждой ВФС:
.IP
.\"LINK2"
-Файловая система ftpfs (FTP File System)
+Файловая система ftpfs
.\"FTP File System"
.br
.\"LINK2"
@@ -3717,11 +3617,7 @@
.\"LINK2"
Файловая система UFS (Undelete File System)
.\"Undelete File System"
-.br
-.\"LINK2"
-Файловая система smbfs
-.\"SMB File System"
-.\"NODE " FTP File System"
+.\"NODE "FTP File System"
.SH "Файловая система ftpfs"
Файловая система ftpfs позволяет работать с файлами на удалённых
компьютерах. Для этого можно использовать команду "FTP\-соединение"
@@ -3733,7 +3629,8 @@
.PP
Элементы
.IR user ,
-.IR port и
+.I port
+и
.I remote\-dir
не обязательны. Если элемент
.I user
@@ -3774,7 +3671,7 @@
меню "Настройки". В таком случае программа всегда будет использовать
указанный прокси\-сервер. При этом (если опция установлена) программа
делает следующее: считывает из файла
-.B %prefix%/share/mc/mc.no_proxy
+.B %sysconfdir%/mc/mc.no_proxy
имена локальных машин (если имя начинается с точки, оно считается именем
домена), и, если заданное при установлении FTP\-соединения имя машины
совпадает с одним из имен, указанных в файле
@@ -3811,7 +3708,7 @@
.PP
.I cd ./filename.tar/utar://[dir\-inside\-tar]
.PP
-Файл mc.ext по умолчанию содержит команды для просмотра
+Файл mc.ext.ini по умолчанию содержит команды для просмотра
tar\-файлов, то есть обычно для получения списка файлов tar\-архива
достаточно просто переместить указатель на имя tar\-файла и нажать
.BR Enter .
@@ -3843,7 +3740,8 @@
.PP
Элементы
.IR user ,
-.IR options и
+.I options
+и
.I remote\-dir
не обязательны. Если задан элемент
.IR user ,
@@ -3886,7 +3784,8 @@
.PP
Элементы
.IR user ,
-.IR port и
+.I port
+и
.I remote\-dir
не обязательны. Если задан элемент
.IR user ,
@@ -3907,6 +3806,20 @@
sftp://joe@noncompressed.ssh.edu/private
sftp://joe@somehost.ssh.edu:2222/private
.fi
+При установлении соединения происходит проверка ключа сервера с использованием
+файла ~/.ssh/known_hosts file. Если пара сервер/ключ в этом файле не найдена
+или сервер найден, но ключ не соответствует, пользователю показывается
+окно с соответствующим сообщением, содержащее три кнопки:
+.PP
+.B [Да]
+добавить новую пару сервер/ключ в файл ~/.ssh/known_hosts и продолжить соединение.
+.PP
+.B [Игнорировать]
+не добавлять новую пару сервер/ключ в файл ~/.ssh/known_hosts и всё равно
+продолжить соединение (на свой страх и риск).
+.PP
+.B [Нет]
+прервать соединение.
.\"NODE " Undelete File System"
.SH " Файловая система UFS (Undelete File System)"
В ОС Linux можно сконфигурировать файловую систему ext2fs, используемую
@@ -3934,34 +3847,6 @@
будут цифровыми, так что поиск нужного придётся проводить либо по дате,
либо последовательным просмотром содержимого (в общем, я вам не
завидую!).
-.\"NODE " SMB File System"
-.SH " Файловая система smbfs"
-Файловая система smbfs позволяет работать с файлами на удалённых
-компьютерах по протоколу SMB (CIFS) (Windows for Workgroups, Windows
-9x/ME/XP, Windows NT, Windows 2000 и Samba). Для этого можно
-использовать пункт "SMB\-соединение..." (доступный из меню левой и правой
-панелей) или же непосредственно сменить текущий каталог командой cd,
-задав путь к каталогу следующим образом:
-.PP
-.I smb://[username@]machine[/service][/remote\-dir]
-.PP
-Элементы
-.IR username ,
-.IR service и
-.I remote\-dir
-необязательны.
-.IR username ,
-.IR domain и
-.I password
-могут быть указаны в окне диалога.
-.PP
-Примеры:
-.PP
-.nf
- smb://machine/Share
- smb://other_machine
- smb://guest@machine/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " Внешняя файловая система (EXTernal File System)"
.B extfs
@@ -4127,7 +4012,7 @@
selected, disabled, marked, markselect, errors, input, inputmark, inputunchanged,
commandlinemark, reverse, gauge, header, inputhistory, commandhistory.
Цвета строки "горячих" клавиш
-.BR F1 \- F10 :
+.BR "F1 \- F10" :
bbarhotkey, bbarbutton.
Цвет строки статуса редактора и программ просмотра и сравнения файлов: statusbar.
Цвета пунктов меню: menunormal, menusel, menuhot, menuhotsel, menuinactive.
@@ -4260,7 +4145,7 @@
.B %sysconfdir%/mc/skins/default.ini
.br
5) файл
-.B %prefix%/share/mc/skins/default.ini
+.B %pkgdatadir%/skins/default.ini
.PP
Параметры в трёх первых случаях могут содержать абсолютный путь к скин\-файлу
либо просто название скина (с расширением \.ini либо без него). В данном
@@ -4275,7 +4160,7 @@
.B %sysconfdir%/mc/skins/
.br
3)
-.B %prefix%/share/mc/skins/
+.B %pkgdatadir%/skins/
.br
.PP
Для получения расширенной информации, обратитесь к подразделам:
@@ -4734,7 +4619,7 @@
.B file
для определения типа файла в соответствии с типами файлов, указанными в файле
.\"LINK2"
-mc.ext\&.
+mc.ext.ini\&.
.\"Edit Extension File"
.PP
.I xtree_mode
@@ -4808,7 +4693,7 @@
Если внешняя программа редактирования или просмотра запускается по клавишам
.B F4
или
-.BR F3,
+.BR F3 ,
MC надеется, что она имеет собственную функцию открытия файла в том же самом месте,
где он был закрыт в предыдущий раз. Такую функцию имеет, например, редактор "joe"
и многие другие. MC не препятствует внешней программе редактирования или просмотра
@@ -4879,30 +4764,30 @@
узнать имя этого каталога, дайте команду
.BR "mc \-f" .
.PP
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
Файл подсказки для программы.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
Используемый по умолчанию общесистемный файл расширений.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
Файл расширений пользователя. Если этот файл существует, он используется
вместо общесистемного файла расширений.
.PP
.I %sysconfdir%/mc/mc.ini
.RE
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
Общесистемные файлы установок для Midnight Commander; используются только
в тех случаях, когда пользователь не имеет своего файла
.BR ~/.config/mc/ini .
-Если файл %sysconfdir%/mc/mc.ini существует, то %prefix%/share/mc/mc.ini
+Если файл %sysconfdir%/mc/mc.ini существует, то %pkgdatadir%/mc.ini
не используется.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Глобальные установки для Midnight Commander. Установки из этого файла
действительны для всех пользователей, независимо от того, имеют ли они
@@ -4918,12 +4803,12 @@
установки загружаются из него, а не из общесистемного инициализационного
файла программы.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
Этот файл содержит подсказки (hints или cookies), циклически
отображаемые программой.
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
Этот файл содержит общесистемное меню приложений.
.PP
@@ -4979,7 +4864,7 @@
.PP
.nf
Страница, посвященная Midnight Commander, в World Wide Web:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.PP
Данная страница оперативного руководства содержит информацию, актуальную
@@ -5032,7 +4917,7 @@
.PP
Если вы обнаружили в программе какие\-то недостатки или недоработки,
оформите, пожалуйста, ваши замечания по адресу
-.IR http://www.midnight\-commander.org/ .
+.IR https://www.midnight\-commander.org/ .
.PP
Дайте подробное описание обнаруженных недостатков (и/или ваших
предложений по усовершенствованию программы), сообщите версию программы
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/doc/man/sr/mc.1.in
^
|
@@ -1,6 +1,6 @@
.\" -*- mode: troff; coding: UTF-8 -*-
.\"TOPICS "Теме:"
-.TH ПН 1 "%DATE_OF_MAN_PAGE%" "ПН верзија %DISTR_VERSION%" "ГНУ\-ов поноћни наредник"
+.TH ПН 1 "%DATE_OF_MAN_PAGE%" "ПН верзија %MAN_VERSION%" "ГНУ\-ов поноћни наредник"
.\"SKIP_SECTION"
.SH "НАЗИВ"
mc \- Визуална љуска за Униксолике системе.
@@ -61,9 +61,9 @@
посебног списа љуске који аутоматски поставља текући директоријум
љуске на последњи директоријум у коме се налазио Поноћни наредник.
Учитајте датотеку
-.B %libexecdir%/mc/mc.sh
+.B %pkglibexecdir%/mc.sh
(за кориснике љуски bash и zsh) или
-.B %libexecdir%/mc/mc.csh
+.B %pkglibexecdir%/mc.csh
(за кориснике љуске tcsh), тим редом, да бисте задали
.B mc
као надимак за одговарајући спис љуске.
@@ -1282,84 +1282,14 @@
.\"NODE " Edit Extension File"
.SH " Уреди датотеку врста"
Ово покреће ваш уређивач над датотеком
-.IR ~/.config/mc/mc.ext .
-Формат ове датотеке је следећи:
-.PP
-Сви редови који почињу на # или празни редови се одбацују.
-.PP
-Редови који почињу у првој колони би требало да су у следећем формату:
-.PP
-.IR кључна_реч/израз ,
-тј. све од косе црте до знака за нови ред је
-.IR израз .
-.PP
-.I кључна_реч
-може да буде:
-.TP
-.I shell
-\-
-.I израз
-је врста (без џокерских знакова). Датотека задовољава услов ако се
-њено име завршава на
-.IR израз .
-На пример, израз:
-.I shell/.tar
-задовољава
-.IR *.tar .
-.TP
-.I regex
-\-
-.I израз
-је регуларни израз. Датотека задовољава услов ако њен назив задовољава
-регуларни израз.
-.TP
-.I type
-\-
-.I израз
-је регуларни израз. Датотека задовољава услов ако излаз наредбе
-.I file %f
-без почетног дела `назив_датотеке:' задовољава регуларни израз
-.IR израз .
-.TP
-.I default
-\- (подразумевано) задовољава било која датотека.
-.I израз
-се занемарује.
-.TP
-.I include
-\- означава општи одељак.
-.I израз
-је назив одељка.
-.PP
-Други редови би требало да почињу размаком или табулатором и требало
-би да су у формату:
-.I кључна_реч=наредба
-(без размака око знака =), где би
-.I кључна_реч
-требало да буде:
-.I Open
-(покретање при притиску на тастер `Enter' или двоструком притиску
-дугмета миша),
-.I View
-(преглед са F3),
-.I Edit
-(уређивање са F4) или
-.I Include
-(за додавање правила из општег одељка).
-.I наредба
-је било која наредба љуске од једног реда, уз једноставну
-.\"LINK2"
-замену макроа\&.
-.\"Macro Substitution"
-.PP
-Правила се задовољавају од врха до дна, па је стога редослед битан.
-Ако одговарајућа радња не постоји, претрага се наставља, као да
-правило није ни постојало (нпр. ако датотека задовољава први и други
-унос а радња под `View' (Преглед) недостаје у првом уносу, онда ће се
-при притиску на F3 користити радња под `View' из другог уноса).
-Правило
-.I default
-(подразумевано) би требало да задовољи све радње.
+.IR ~/.config/mc/mc.ext.ini .
+If this file does not exist and you are not root, it will be copied from
+.IR %sysconfdir%/mc/mc.ext.ini .
+If you are root, you can choose the file to edit: user's
+.I ~/.config/mc/mc.ext.ini
+or system\-wide
+.IR %sysconfdir%/mc/mc.ext.ini .
+The format of this file is described in detail in it.
.\"NODE " Background jobs"
.SH " Позадински послови"
Ово вам омогућава да управљате стањем било ког позадинског процеса
@@ -1375,7 +1305,7 @@
дозвољен упис у њу од стране других (света). Ако таква датотека није
нађена, на исти начин се покушава са датотеком ~/.config/mc/menu, а иначе ПН
користи подразумевану датотеку менија за цео систем
-%prefix%/share/mc/mc.menu.
+%pkgdatadir%/mc.menu.
.PP
Формат датотеке менија је веома једноставан. Редови који почињу било
чим осим размака или табулатора се узимају за ставке менија (да би се
@@ -1883,7 +1813,7 @@
за примере.
.PP
Ако је овај избор укључен, програм ће или: гледати датотеку
-%prefix%/lib/mc/mc.no_proxy и тражити редове који садрже називе
+%sysconfdir%/mc/mc.no_proxy и тражити редове који садрже називе
домаћина који су локални (ако назив домаћина почиње тачком,
претпоставља се да се ради о домену) и претпоставиће да су називи
домаћина без тачака непосредно приступачни. Свим другим домаћинима ће
@@ -2416,7 +2346,7 @@
.PP
.B F8
Смењује сирови/рашчлањени режим: ово ће приказати датотеку онако каква
-је она на диску или, у случају да је у датотеци mc.ext задан филтар за
+је она на диску или, у случају да је у датотеци mc.ext.ini задан филтар за
обраду, као излаз филтра. Текући режим је увек онај други од оног
који стоји на натпису дугмета, пошто се на дугмету налази режим који
укључујете тим тастером.
@@ -2529,7 +2459,7 @@
или
.B Це++
или другом). Овим се управља преко датотеке
-.B %prefix%/share/mc/edit.indent.rc
+.B %pkgdatadir%/edit.indent.rc
која ће бити копирана у
.B ~/.local/share/mc/mcedit/edit.indent.rc
у вашем домаћем директоријуму први пут када је будете користили.
@@ -2610,13 +2540,7 @@
`ext2' (подразумевани систем датотека за систем ГНУ),
.I fish
(за рад са датотекама преко повезивања љуске, као што су `rsh' и
-`ssh') и, коначно,
-.I mcfs
-(систем датотека Поноћног наредника), систем датотека који је заснован
-на мрежи. Уколико је код преведен са подршком за
-.IR smbfs ,
-моћи ћете да радите са датотекама на удаљеним системима преко
-протокола SMB (CIFS).
+`ssh').
.PP
Обезбеђен је и општи систем
.I extfs
@@ -2683,7 +2607,7 @@
.PP
.I /datoteka.tar/utar://[дир\-унутар\-дат]
.PP
-Датотека `mc.ext' већ садржи пречицу за датотеке врсте `tar', што
+Датотека `mc.ext.ini' већ садржи пречицу за датотеке врсте `tar', што
значи да можете само показати на датотеку врсте `tar' и притиснути
`Return' или `Enter' да бисте ушли у њу; погледајте одељак
.\"LINK2"
@@ -2760,38 +2684,6 @@
.PP
Учитавање тражених података пре него што можете да почнете разгледање
датотека може потрајати.
-.\"NODE " SMB File System"
-.SH " Систем датотека SMB"
-`smbfs' вам омогућава да радите са датотекама на удаљеним машинама
-преко протокола `SMB' (или `CIFS'). Ово укључује Виндовс за радне
-групе, Виндовс 9x/МЕ/ИксПе, Виндовс НТ, Виндовс 2000 и Самбу. Да бисте
-га користили, можете да покушате са наредбом окна `Повезивање
-SMB\-ом...' (која је доступна преко реда менија), а можете и непосредно
-да промените ваш текући директоријум користећи наредбу `cd' (промена
-текућег директоријума) да бисте текући директоријум поставили на
-путању сличну овој:
-.PP
-.I smb://[корисник@]машина[/сервис][/удаљени\-дир]
-.PP
-Елементи
-.IR корисник ,
-.I сервис
-и
-.I удаљени\-дир
-су необавезни.
-.IR корисник ,
-.I домен
-и
-.I лозинка
-се могу задати преко дијалога за унос.
-.PP
-Примери:
-.PP
-.nf
- smb://masina/Deljeno
- smb://druga_masina
- smb://guest@masina/Public/Irlex
-.fi
.\"NODE " EXTernal File System"
.SH " Спољашњи системи датотека (EXTFS)"
.B extfs
@@ -3127,7 +3019,7 @@
Уколико је ова променљива укључена (подразумевано), ПН ће покренути
наредбу `file' за одређивање врсте датотека које су задане у
.\"LINK2"
-датотеци `mc.ext'\&.
+датотеци `mc.ext.ini'\&.
.\"Edit Extension File"
.TP
.I xtree_mode
@@ -3183,27 +3075,27 @@
Програм ће добавити све своје податке у односу на променљиву окружења
.BR MC_DATADIR .
Ако ова променљива није постављена, биће употребљен директоријум
-%prefix%/share/mc.
+%pkgdatadir%.
.PP
-.I %prefix%/share/mc/help/mc.hlp
+.I %pkgdatadir%/help/mc.hlp
.IP
Датотека помоћи за програм.
.PP
-.I %prefix%/share/mc/mc.ext
+.I %pkgdatadir%/mc.ext.ini
.IP
Подразумевана системска датотека врста.
.PP
-.I ~/.config/mc/mc.ext
+.I ~/.config/mc/mc.ext.ini
.IP
Корисничке датотеке врста, подешавања прегледача и уређивача. Уколико
постоје, оне заобилазе системске датотеке.
.PP
-.I %prefix%/share/mc/mc.ini
+.I %pkgdatadir%/mc.ini
.IP
Подразумевана системска подешавања Поноћног наредника; користе се само
у случају да корисник нема сопствену датотеку ~/.config/mc/ini.
.PP
-.I %prefix%/share/mc/mc.lib
+.I %pkgdatadir%/mc.lib
.IP
Глобалне поставке Поноћног наредника. Поставке из ове датотеке се
односе на све кориснике без обзира на то да ли они имају своје
@@ -3218,11 +3110,11 @@
Корисничка подешавања. Ако је ова датотека присутна, подешавања се
учитавају из ње уместо из системске почетне датотеке.
.PP
-.I %prefix%/share/mc/hints/mc.hint
+.I %pkgdatadir%/hints/mc.hint
.IP
Ова датотека садржи савете (колачиће) који се приказују у програму.
.PP
-.I %prefix%/share/mc/mc.menu
+.I %pkgdatadir%/mc.menu
.IP
Ова датотека садржи подразумевани мени програма за цео систем.
.PP
@@ -3256,7 +3148,7 @@
.PP
.nf
Страница Поноћног наредника на Међународној мрежи:
- http://www.midnight\-commander.org/
+ https://www.midnight\-commander.org/
.fi
.\"NODE "AUTHORS"
.SH "АУТОРИ"
@@ -3268,7 +3160,7 @@
остаје да се уради.
.PP
Ако желите да пријавите проблем у вези са програмом, молим да пошаљете
-еписмо на следећу адресу: mc\-devel@gnome.org.
+еписмо на следећу адресу: mc\-devel@lists.midnight-commander.org.
.PP
Доставите детаљан опис грешке, верзију програма коју користите
.RI ( "mc \-V"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/charsets.c
^
|
@@ -1,7 +1,7 @@
/*
Text conversion from one charset to another.
- Copyright (C) 2001-2020
+ Copyright (C) 2001-2022
Free Software Foundation, Inc.
Written by:
@@ -351,14 +351,6 @@
/* --------------------------------------------------------------------------------------------- */
GString *
-str_convert_to_display (const char *str)
-{
- return str_nconvert_to_display (str, -1);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-GString *
str_nconvert_to_display (const char *str, int len)
{
GString *buff;
@@ -389,14 +381,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-GString *
-str_convert_to_input (const char *str)
-{
- return str_nconvert_to_input (str, -1);
-}
-
-/* --------------------------------------------------------------------------------------------- */
GString *
str_nconvert_to_input (const char *str, int len)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/charsets.h
^
|
@@ -66,13 +66,12 @@
*/
int convert_from_8bit_to_utf_c2 (char input_char);
-GString *str_convert_to_input (const char *str);
GString *str_nconvert_to_input (const char *str, int len);
-
-GString *str_convert_to_display (const char *str);
GString *str_nconvert_to_display (const char *str, int len);
+/* --------------------------------------------------------------------------------------------- */
/*** inline functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
/* Convert single characters */
static inline int
@@ -83,6 +82,8 @@
return (int) conv_displ[c];
}
+/* --------------------------------------------------------------------------------------------- */
+
static inline int
convert_from_input_c (int c)
{
@@ -91,4 +92,22 @@
return (int) conv_input[c];
}
+/* --------------------------------------------------------------------------------------------- */
+
+static inline GString *
+str_convert_to_input (const char *str)
+{
+ return str_nconvert_to_input (str, -1);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline GString *
+str_convert_to_display (const char *str)
+{
+ return str_nconvert_to_display (str, -1);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
#endif /* MC__CHARSETS_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/event.h
^
|
@@ -24,17 +24,20 @@
/*** declarations of public functions ************************************************************/
/* event.c: */
-gboolean mc_event_init (GError **);
-gboolean mc_event_deinit (GError **);
+gboolean mc_event_init (GError ** mcerror);
+gboolean mc_event_deinit (GError ** mcerror);
/* manage.c: */
-gboolean mc_event_add (const gchar *, const gchar *, mc_event_callback_func_t, gpointer, GError **);
-void mc_event_del (const gchar *, const gchar *, mc_event_callback_func_t, gpointer);
-void mc_event_destroy (const gchar *, const gchar *);
-void mc_event_group_del (const gchar *);
-gboolean mc_event_present (const gchar *, const gchar *);
-gboolean mc_event_mass_add (const event_init_t *, GError **);
+gboolean mc_event_add (const gchar * event_group_name, const gchar * event_name,
+ mc_event_callback_func_t event_callback, gpointer event_init_data,
+ GError ** mcerror);
+void mc_event_del (const gchar * event_group_name, const gchar * event_name,
+ mc_event_callback_func_t event_callback, gpointer event_init_data);
+void mc_event_destroy (const gchar * event_group_name, const gchar * event_name);
+void mc_event_group_del (const gchar * event_group_name);
+gboolean mc_event_present (const gchar * event_group_name, const gchar * event_name);
+gboolean mc_event_mass_add (const event_init_t * events, GError ** mcerror);
/* raise.c: */
gboolean mc_event_raise (const gchar *, const gchar *, gpointer);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/event/event.c
^
|
@@ -2,7 +2,7 @@
Handle events in application.
Interface functions: init/deinit; start/stop
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/event/manage.c
^
|
@@ -2,7 +2,7 @@
Handle any events in application.
Manage events: add, delete, destroy, search
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/event/raise.c
^
|
@@ -2,7 +2,7 @@
Handle any events in application.
Raise events.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/filehighlight.h
^
|
@@ -20,14 +20,14 @@
/*** declarations of public functions ************************************************************/
-mc_fhl_t *mc_fhl_new (gboolean);
-void mc_fhl_free (mc_fhl_t **);
+mc_fhl_t *mc_fhl_new (gboolean need_auto_fill);
+void mc_fhl_free (mc_fhl_t ** fhl);
-int mc_fhl_get_color (mc_fhl_t *, file_entry_t *);
+int mc_fhl_get_color (const mc_fhl_t * fhl, const file_entry_t * fe);
-gboolean mc_fhl_read_ini_file (mc_fhl_t *, const gchar *);
-gboolean mc_fhl_parse_ini_file (mc_fhl_t *);
-void mc_fhl_clear (mc_fhl_t *);
+gboolean mc_fhl_read_ini_file (mc_fhl_t * fhl, const gchar * filename);
+gboolean mc_fhl_parse_ini_file (mc_fhl_t * fhl);
+void mc_fhl_clear (mc_fhl_t * fhl);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/filehighlight/common.c
^
|
@@ -2,7 +2,7 @@
File highlight plugin.
Interface functions
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/filehighlight/get-color.c
^
|
@@ -2,7 +2,7 @@
File highlight plugin.
Interface functions. get color pair index for highlighted file.
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -47,7 +47,7 @@
/*inline functions */
inline static gboolean
-mc_fhl_is_file (file_entry_t * fe)
+mc_fhl_is_file (const file_entry_t * fe)
{
#if HAVE_S_ISREG == 0
(void) fe;
@@ -56,13 +56,13 @@
}
inline static gboolean
-mc_fhl_is_file_exec (file_entry_t * fe)
+mc_fhl_is_file_exec (const file_entry_t * fe)
{
return is_exe (fe->st.st_mode);
}
inline static gboolean
-mc_fhl_is_dir (file_entry_t * fe)
+mc_fhl_is_dir (const file_entry_t * fe)
{
#if HAVE_S_ISDIR == 0
(void) fe;
@@ -71,7 +71,7 @@
}
inline static gboolean
-mc_fhl_is_link (file_entry_t * fe)
+mc_fhl_is_link (const file_entry_t * fe)
{
#if HAVE_S_ISLNK == 0
(void) fe;
@@ -80,25 +80,25 @@
}
inline static gboolean
-mc_fhl_is_hlink (file_entry_t * fe)
+mc_fhl_is_hlink (const file_entry_t * fe)
{
return (fe->st.st_nlink > 1);
}
inline static gboolean
-mc_fhl_is_link_to_dir (file_entry_t * fe)
+mc_fhl_is_link_to_dir (const file_entry_t * fe)
{
- return mc_fhl_is_link (fe) && (fe->f.link_to_dir);
+ return mc_fhl_is_link (fe) && fe->f.link_to_dir;
}
inline static gboolean
-mc_fhl_is_stale_link (file_entry_t * fe)
+mc_fhl_is_stale_link (const file_entry_t * fe)
{
return mc_fhl_is_link (fe) ? fe->f.stale_link : !mc_fhl_is_file (fe);
}
inline static gboolean
-mc_fhl_is_device_char (file_entry_t * fe)
+mc_fhl_is_device_char (const file_entry_t * fe)
{
#if HAVE_S_ISCHR == 0
(void) fe;
@@ -107,7 +107,7 @@
}
inline static gboolean
-mc_fhl_is_device_block (file_entry_t * fe)
+mc_fhl_is_device_block (const file_entry_t * fe)
{
#if HAVE_S_ISBLK == 0
(void) fe;
@@ -116,7 +116,7 @@
}
inline static gboolean
-mc_fhl_is_special_socket (file_entry_t * fe)
+mc_fhl_is_special_socket (const file_entry_t * fe)
{
#if HAVE_S_ISSOCK == 0
(void) fe;
@@ -125,7 +125,7 @@
}
inline static gboolean
-mc_fhl_is_special_fifo (file_entry_t * fe)
+mc_fhl_is_special_fifo (const file_entry_t * fe)
{
#if HAVE_S_ISFIFO == 0
(void) fe;
@@ -134,31 +134,30 @@
}
inline static gboolean
-mc_fhl_is_special_door (file_entry_t * fe)
+mc_fhl_is_special_door (const file_entry_t * fe)
{
#if HAVE_S_ISDOOR == 0
(void) fe;
#endif
-
return S_ISDOOR (fe->st.st_mode);
}
-
inline static gboolean
-mc_fhl_is_special (file_entry_t * fe)
+mc_fhl_is_special (const file_entry_t * fe)
{
return
(mc_fhl_is_special_socket (fe) || mc_fhl_is_special_fifo (fe)
|| mc_fhl_is_special_door (fe));
}
-
/* --------------------------------------------------------------------------------------------- */
static int
-mc_fhl_get_color_filetype (mc_fhl_filter_t * mc_filter, mc_fhl_t * fhl, file_entry_t * fe)
+mc_fhl_get_color_filetype (const mc_fhl_filter_t * mc_filter, const mc_fhl_t * fhl,
+ const file_entry_t * fe)
{
gboolean my_color = FALSE;
+
(void) fhl;
switch (mc_filter->file_type)
@@ -168,7 +167,7 @@
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_FILE_EXE:
- if ((mc_fhl_is_file (fe)) && (mc_fhl_is_file_exec (fe)))
+ if (mc_fhl_is_file (fe) && mc_fhl_is_file_exec (fe))
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_DIR:
@@ -180,7 +179,7 @@
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_LINK:
- if ((mc_fhl_is_link (fe)) || (mc_fhl_is_hlink (fe)))
+ if (mc_fhl_is_link (fe) || mc_fhl_is_hlink (fe))
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_HARDLINK:
@@ -196,7 +195,7 @@
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_DEVICE:
- if ((mc_fhl_is_device_char (fe)) || (mc_fhl_is_device_block (fe)))
+ if (mc_fhl_is_device_char (fe) || mc_fhl_is_device_block (fe))
my_color = TRUE;
break;
case MC_FLHGH_FTYPE_T_DEVICE_BLOCK:
@@ -227,19 +226,21 @@
break;
}
- return (my_color) ? mc_filter->color_pair_index : -1;
+ return my_color ? mc_filter->color_pair_index : -1;
}
/* --------------------------------------------------------------------------------------------- */
static int
-mc_fhl_get_color_regexp (mc_fhl_filter_t * mc_filter, mc_fhl_t * fhl, file_entry_t * fe)
+mc_fhl_get_color_regexp (const mc_fhl_filter_t * mc_filter, const mc_fhl_t * fhl,
+ const file_entry_t * fe)
{
(void) fhl;
+
if (mc_filter->search_condition == NULL)
return -1;
- if (mc_search_run (mc_filter->search_condition, fe->fname, 0, strlen (fe->fname), NULL))
+ if (mc_search_run (mc_filter->search_condition, fe->fname->str, 0, fe->fname->len, NULL))
return mc_filter->color_pair_index;
return -1;
@@ -252,7 +253,7 @@
/* --------------------------------------------------------------------------------------------- */
int
-mc_fhl_get_color (mc_fhl_t * fhl, file_entry_t * fe)
+mc_fhl_get_color (const mc_fhl_t * fhl, const file_entry_t * fe)
{
guint i;
int ret;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/filehighlight/ini-file-read.c
^
|
@@ -2,7 +2,7 @@
File highlight plugin.
Reading and parse rules from ini-files
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/filehighlight/internal.h
^
|
@@ -51,9 +51,9 @@
/*** declarations of public functions ************************************************************/
-void mc_fhl_array_free (mc_fhl_t *);
+void mc_fhl_array_free (mc_fhl_t * fhl);
-gboolean mc_fhl_init_from_standard_files (mc_fhl_t *);
+gboolean mc_fhl_init_from_standard_files (mc_fhl_t * fhl);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/fileloc.h
^
|
@@ -28,7 +28,6 @@
#define MC_HELP "help" PATH_SEP_STR "mc.hlp"
#define GLOBAL_KEYMAP_FILE "mc.keymap"
#define CHARSETS_LIST "mc.charsets"
-#define MC_LIB_EXT "mc.ext"
#define MC_MACRO_FILE "mc.macros"
#define FISH_PREFIX "fish"
@@ -52,8 +51,12 @@
#define MC_EXTFS_DIR "extfs.d"
#define MC_BASHRC_FILE "bashrc"
+#define MC_ZSHRC_FILE ".zshrc"
+#define MC_ASHRC_FILE "ashrc"
+#define MC_INPUTRC_FILE "inputrc"
#define MC_CONFIG_FILE "ini"
-#define MC_FILEBIND_FILE "mc.ext"
+#define MC_EXT_FILE "mc.ext.ini"
+#define MC_EXT_OLD_FILE "mc.ext"
#define MC_FILEPOS_FILE "filepos"
#define MC_HISTORY_FILE "history"
#define MC_HOTLIST_FILE "hotlist"
@@ -69,10 +72,11 @@
/* file names */
#define EDIT_HOME_MACRO_FILE EDIT_HOME_DIR PATH_SEP_STR "macros.d" PATH_SEP_STR "macro"
-#define EDIT_HOME_SYNTAX_FILE EDIT_HOME_DIR PATH_SEP_STR "Syntax"
#define EDIT_HOME_CLIP_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.clip"
#define EDIT_HOME_BLOCK_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.block"
#define EDIT_HOME_TEMP_FILE EDIT_HOME_DIR PATH_SEP_STR "mcedit.temp"
+#define EDIT_SYNTAX_DIR "syntax"
+#define EDIT_SYNTAX_FILE EDIT_SYNTAX_DIR PATH_SEP_STR "Syntax"
#define EDIT_GLOBAL_MENU "mcedit.menu"
#define EDIT_LOCAL_MENU ".cedit.menu"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/glibcompat.c
^
|
@@ -1,7 +1,7 @@
/*
GLIB - Library of useful routines for C programming
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -186,3 +186,25 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * mc_g_string_dup:
+ * @s: (nullable): the source #GString
+ * @return: @copy of @s
+ *
+ * Copies the bytes from one #GString to another.
+ *
+ * There is no such API in GLib2.
+ */
+GString *
+mc_g_string_dup (const GString * s)
+{
+ GString *ret = NULL;
+
+ if (s != NULL)
+ ret = g_string_new_len (s->str, s->len);
+
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/glibcompat.h
^
|
@@ -3,6 +3,11 @@
/*** typedefs(not structures) and defined constants **********************************************/
+#ifndef G_OPTION_ENTRY_NULL
+#define G_OPTION_ENTRY_NULL \
+ { NULL, '\0', 0, 0, NULL, NULL, NULL }
+#endif /* G_OPTION_ENTRY_NULL */
+
/*** enums ***************************************************************************************/
/*** structures declarations (and typedefs of structures)*****************************************/
@@ -27,6 +32,9 @@
/* There is no such API in GLib2 */
GString *mc_g_string_copy (GString * dest, const GString * src);
+/* There is no such API in GLib2 */
+GString *mc_g_string_dup (const GString * s);
+
/*** inline functions ****************************************************************************/
#endif /* MC_GLIBCOMPAT_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/global.c
^
|
@@ -1,7 +1,7 @@
/*
Global structure for some library-related variables
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -30,6 +30,8 @@
#include <config.h>
+#include "mc-version.h"
+
#include "global.h"
/* *INDENT-OFF* */
@@ -47,7 +49,10 @@
/*** global variables ****************************************************************************/
/* *INDENT-OFF* */
-mc_global_t mc_global = {
+mc_global_t mc_global =
+{
+ .mc_version = MC_CURRENT_VERSION,
+
.mc_run_mode = MC_RUN_FULL,
.run_from_parent_mc = FALSE,
.midnight_shutdown = FALSE,
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/global.h
^
|
@@ -66,11 +66,6 @@
#include <glib.h>
#include "glibcompat.h"
-/* For SMB VFS only */
-#ifndef __GNUC__
-#define __attribute__(x)
-#endif
-
/* Solaris9 doesn't have PRIXMAX */
#ifndef PRIXMAX
#define PRIXMAX PRIxMAX
@@ -163,6 +158,8 @@
typedef struct
{
+ const char *mc_version;
+
mc_run_mode_t mc_run_mode;
gboolean run_from_parent_mc;
/* Used so that widgets know if they are being destroyed or shut down */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/hook.c
^
|
@@ -4,7 +4,7 @@
Slavaz: Warning! this file is deprecated and should be replaced
by mcevents functional.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/keybind.c
^
|
@@ -1,7 +1,7 @@
/*
Definitions of key bindings.
- Copyright (C) 2005-2020
+ Copyright (C) 2005-2022
Free Software Foundation, Inc.
Written by:
@@ -45,6 +45,12 @@
/*** file scope type declarations ****************************************************************/
+typedef struct name_keymap_t
+{
+ const char *name;
+ long val;
+} name_keymap_t;
+
/*** file scope variables ************************************************************************/
static name_keymap_t command_names[] = {
@@ -175,9 +181,6 @@
#ifdef ENABLE_VFS_SFTP
ADD_KEYMAP_NAME (ConnectSftp),
#endif
-#ifdef ENABLE_VFS_SMB
- ADD_KEYMAP_NAME (ConnectSmb),
-#endif
ADD_KEYMAP_NAME (PanelInfo),
#ifdef ENABLE_BACKGROUND
ADD_KEYMAP_NAME (Jobs),
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/keybind.h
^
|
@@ -1,9 +1,6 @@
#ifndef MC__KEYBIND_H
#define MC__KEYBIND_H
-#include <sys/types.h>
-#include <sys/time.h> /* time_t */
-
#include "lib/global.h"
/*** typedefs(not structures) and defined constants **********************************************/
@@ -157,7 +154,6 @@
CK_ConnectFish,
CK_ConnectFtp,
CK_ConnectSftp,
- CK_ConnectSmb,
CK_PanelInfo,
CK_Jobs,
CK_OptionsLayout,
@@ -348,20 +344,6 @@
/*** structures declarations (and typedefs of structures)*****************************************/
-typedef struct name_keymap_t
-{
- const char *name;
- long val;
-} name_keymap_t;
-
-typedef struct key_config_t
-{
- time_t mtime; /* mtime at the moment we read config file */
- GArray *keymap;
- GArray *ext_keymap;
- gchar *labels[10];
-} key_config_t;
-
/* The global keymaps are of this type */
typedef struct global_keymap_t
{
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/lock.c
^
|
@@ -1,7 +1,7 @@
/*
File locking
- Copyright (C) 2003-2020
+ Copyright (C) 2003-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/logging.c
^
|
@@ -1,7 +1,7 @@
/*
Provides a log file to ease tracing the program.
- Copyright (C) 2006-2020
+ Copyright (C) 2006-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig.h
^
|
@@ -101,8 +101,6 @@
char *mc_config_get_full_path (const char *config_name);
vfs_path_t *mc_config_get_full_vpath (const char *config_name);
-gboolean mc_config_migrate_from_old_place (GError ** mcerror, char **msg);
-
/* mcconfig/history.h */
/* read history to the mc_config, but don't save config to file */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig/common.c
^
|
@@ -1,7 +1,7 @@
/*
Configure module for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -69,7 +69,7 @@
ini_vpath = vfs_path_from_str (ini_path);
fd = mc_open (ini_vpath, O_WRONLY | O_TRUNC, 0);
- vfs_path_free (ini_vpath);
+ vfs_path_free (ini_vpath, TRUE);
if (fd == -1)
{
@@ -136,7 +136,7 @@
/* file exists and not empty */
g_key_file_load_from_file (mc_config->handle, ini_path, flags, NULL);
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
mc_config->ini_path = g_strdup (ini_path);
@@ -161,10 +161,16 @@
gboolean
mc_config_has_param (const mc_config_t * mc_config, const char *group, const gchar * param)
{
- if (mc_config == NULL || group == NULL || param == NULL)
- return FALSE;
+ char *value;
+ gboolean ret;
+
+ g_return_val_if_fail (mc_config != NULL, FALSE);
+
+ value = g_key_file_get_value (mc_config->handle, group, param, NULL);
+ ret = value != NULL;
+ g_free (value);
- return g_key_file_has_key (mc_config->handle, group, param, NULL);
+ return ret;
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig/get.c
^
|
@@ -1,7 +1,7 @@
/*
Configure module for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -94,19 +94,7 @@
gchar *ret;
estr_t conv_res;
- if (mc_config == NULL || group == NULL || param == NULL)
- return g_strdup (def);
-
- if (!mc_config_has_param (mc_config, group, param))
- {
- if (def != NULL)
- mc_config_set_string (mc_config, group, param, def);
- return g_strdup (def);
- }
-
- ret = g_key_file_get_string (mc_config->handle, group, param, NULL);
- if (ret == NULL)
- ret = g_strdup (def);
+ ret = mc_config_get_string_raw (mc_config, group, param, def);
if (mc_global.utf8_display)
return ret;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig/history.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig/paths.c
^
|
@@ -1,7 +1,7 @@
/*
paths to configuration files
- Copyright (C) 2010-2020
+ Copyright (C) 2010-2022
Free Software Foundation, Inc.
Written by:
@@ -40,8 +40,6 @@
/*** file scope macro definitions ****************************************************************/
-#define MC_OLD_USERCONF_DIR ".mc"
-
/*** file scope type declarations ****************************************************************/
/*** file scope variables ************************************************************************/
@@ -55,72 +53,47 @@
static const struct
{
- const char *old_filename;
-
- char **new_basedir;
- const char *new_filename;
+ char **basedir;
+ const char *filename;
} mc_config_files_reference[] =
{
/* *INDENT-OFF* */
/* config */
- { "ini", &mc_config_str, MC_CONFIG_FILE },
- { "filehighlight.ini", &mc_config_str, MC_FHL_INI_FILE },
- { "hotlist", &mc_config_str, MC_HOTLIST_FILE },
- { "mc.keymap", &mc_config_str, GLOBAL_KEYMAP_FILE },
- { "menu", &mc_config_str, MC_USERMENU_FILE },
- { "cedit" PATH_SEP_STR "Syntax", &mc_config_str, EDIT_HOME_SYNTAX_FILE },
- { "cedit" PATH_SEP_STR "menu", &mc_config_str, EDIT_HOME_MENU },
- { "panels.ini", &mc_config_str, MC_PANELS_FILE },
+ { &mc_config_str, MC_CONFIG_FILE },
+ { &mc_config_str, MC_FHL_INI_FILE },
+ { &mc_config_str, MC_HOTLIST_FILE },
+ { &mc_config_str, GLOBAL_KEYMAP_FILE },
+ { &mc_config_str, MC_USERMENU_FILE },
+ { &mc_config_str, EDIT_HOME_MENU },
+ { &mc_config_str, MC_PANELS_FILE },
/* User should move this file with applying some changes in file */
- { "", &mc_config_str, MC_FILEBIND_FILE },
+ { &mc_config_str, MC_EXT_FILE },
+ { &mc_config_str, MC_EXT_OLD_FILE },
/* data */
- { "skins", &mc_data_str, MC_SKINS_DIR },
- { "fish", &mc_data_str, FISH_PREFIX },
- { "ashrc", &mc_data_str, "ashrc" },
- { "bashrc", &mc_data_str, "bashrc" },
- { "inputrc", &mc_data_str, "inputrc" },
- { "extfs.d", &mc_data_str, MC_EXTFS_DIR },
- { "history", &mc_data_str, MC_HISTORY_FILE },
- { "filepos", &mc_data_str, MC_FILEPOS_FILE },
- { "cedit" PATH_SEP_STR "cooledit.clip", &mc_data_str, EDIT_HOME_CLIP_FILE },
- { "", &mc_data_str, MC_MACRO_FILE },
+ { &mc_data_str, MC_SKINS_DIR },
+ { &mc_data_str, FISH_PREFIX },
+ { &mc_data_str, MC_ASHRC_FILE },
+ { &mc_data_str, MC_BASHRC_FILE },
+ { &mc_data_str, MC_INPUTRC_FILE },
+ { &mc_data_str, MC_ZSHRC_FILE },
+ { &mc_data_str, MC_EXTFS_DIR },
+ { &mc_data_str, MC_HISTORY_FILE },
+ { &mc_data_str, MC_FILEPOS_FILE },
+ { &mc_data_str, EDIT_SYNTAX_FILE },
+ { &mc_data_str, EDIT_HOME_CLIP_FILE },
+ { &mc_data_str, MC_MACRO_FILE },
/* cache */
- { "log", &mc_cache_str, "mc.log" },
- { "Tree", &mc_cache_str, MC_TREESTORE_FILE },
- { "cedit" PATH_SEP_STR "cooledit.temp", &mc_cache_str, EDIT_HOME_TEMP_FILE },
- { "cedit" PATH_SEP_STR "cooledit.block", &mc_cache_str, EDIT_HOME_BLOCK_FILE },
-
- {NULL, NULL, NULL}
- /* *INDENT-ON* */
-};
-
-#if MC_HOMEDIR_XDG
-static const struct
-{
- char **old_basedir;
- const char *filename;
-
- char **new_basedir;
-} mc_config_migrate_rules_fix[] =
-{
- /* *INDENT-OFF* */
- { &mc_data_str, MC_USERMENU_FILE, &mc_config_str },
- { &mc_data_str, MC_FILEBIND_FILE, &mc_config_str },
- { &mc_data_str, EDIT_HOME_SYNTAX_FILE, &mc_config_str },
- { &mc_data_str, EDIT_HOME_MENU, &mc_config_str },
-
- { &mc_cache_str, MC_PANELS_FILE, &mc_config_str },
- { &mc_cache_str, MC_HISTORY_FILE, &mc_data_str },
- { &mc_cache_str, MC_FILEPOS_FILE, &mc_data_str },
- { &mc_cache_str, EDIT_HOME_CLIP_FILE, &mc_data_str },
+ { &mc_cache_str, "mc.log" },
+ { &mc_cache_str, MC_TREESTORE_FILE },
+ { &mc_cache_str, EDIT_HOME_TEMP_FILE },
+ { &mc_cache_str, EDIT_HOME_BLOCK_FILE },
- { NULL, NULL, NULL }
+ { NULL, NULL }
/* *INDENT-ON* */
};
-#endif /* MC_HOMEDIR_XDG */
/* --------------------------------------------------------------------------------------------- */
/*** file scope functions *********************************************************************** */
@@ -166,111 +139,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-static char *
-mc_config_get_deprecated_path (void)
-{
- return g_build_filename (mc_config_get_home_dir (), MC_OLD_USERCONF_DIR, (char *) NULL);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-mc_config_copy (const char *old_name, const char *new_name, GError ** mcerror)
-{
- mc_return_if_error (mcerror);
-
- if (g_file_test (old_name, G_FILE_TEST_IS_REGULAR))
- {
- char *contents = NULL;
- size_t length;
-
- if (g_file_get_contents (old_name, &contents, &length, mcerror))
- g_file_set_contents (new_name, contents, length, mcerror);
-
- g_free (contents);
- return;
- }
-
- if (g_file_test (old_name, G_FILE_TEST_IS_DIR))
- {
- GDir *dir;
- const char *dir_name;
-
- dir = g_dir_open (old_name, 0, mcerror);
- if (dir == NULL)
- return;
-
- if (g_mkdir_with_parents (new_name, 0700) == -1)
- {
- g_dir_close (dir);
- mc_propagate_error (mcerror, 0,
- _("An error occurred while migrating user settings: %s"),
- unix_error_string (errno));
- return;
- }
-
- while ((dir_name = g_dir_read_name (dir)) != NULL)
- {
- char *old_name2, *new_name2;
-
- old_name2 = g_build_filename (old_name, dir_name, (char *) NULL);
- new_name2 = g_build_filename (new_name, dir_name, (char *) NULL);
- mc_config_copy (old_name2, new_name2, mcerror);
- g_free (new_name2);
- g_free (old_name2);
- }
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#if MC_HOMEDIR_XDG
-static void
-mc_config_fix_migrated_rules (void)
-{
- size_t rule_index;
-
- for (rule_index = 0; mc_config_migrate_rules_fix[rule_index].old_basedir != NULL; rule_index++)
- {
- char *old_name;
-
- old_name =
- g_build_filename (*mc_config_migrate_rules_fix[rule_index].old_basedir,
- mc_config_migrate_rules_fix[rule_index].filename, (char *) NULL);
-
- if (g_file_test (old_name, G_FILE_TEST_EXISTS))
- {
- char *new_name;
- const char *basedir = *mc_config_migrate_rules_fix[rule_index].new_basedir;
- const char *filename = mc_config_migrate_rules_fix[rule_index].filename;
-
- new_name = g_build_filename (basedir, filename, (char *) NULL);
- rename (old_name, new_name);
- g_free (new_name);
- }
-
- g_free (old_name);
- }
-}
-#endif /* MC_HOMEDIR_XDG */
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gboolean
-mc_config_deprecated_dir_present (void)
-{
- char *old_dir;
- gboolean is_present;
-
- old_dir = mc_config_get_deprecated_path ();
- is_present = g_file_test (old_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
- g_free (old_dir);
-
- return is_present && !config_dir_present;
-}
-
-/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -279,9 +147,6 @@
{
const char *profile_root;
char *dir;
-#if MC_HOMEDIR_XDG == 0
- char *defined_userconf_dir;
-#endif
mc_return_if_error (mcerror);
@@ -290,7 +155,6 @@
profile_root = mc_get_profile_root ();
-#if MC_HOMEDIR_XDG
if (strcmp (profile_root, mc_config_get_home_dir ()) != 0)
{
/*
@@ -322,22 +186,6 @@
mc_config_init_one_config_path (g_get_user_data_dir (), MC_USERCONF_DIR, mcerror);
}
- mc_config_fix_migrated_rules ();
-#else /* MC_HOMEDIR_XDG */
- defined_userconf_dir = tilde_expand (MC_USERCONF_DIR);
- if (g_path_is_absolute (defined_userconf_dir))
- dir = defined_userconf_dir;
- else
- {
- g_free (defined_userconf_dir);
- dir = g_build_filename (profile_root, MC_USERCONF_DIR, (char *) NULL);
- }
-
- mc_data_str = mc_cache_str = mc_config_str = mc_config_init_one_config_path (dir, "", mcerror);
-
- g_free (dir);
-#endif /* MC_HOMEDIR_XDG */
-
xdg_vars_initialized = TRUE;
}
@@ -350,10 +198,8 @@
return;
g_free (mc_config_str);
-#if MC_HOMEDIR_XDG
g_free (mc_cache_str);
g_free (mc_data_str);
-#endif /* MC_HOMEDIR_XDG */
g_free (mc_global.share_data_dir);
g_free (mc_global.sysconfig_dir);
@@ -416,70 +262,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-gboolean
-mc_config_migrate_from_old_place (GError ** mcerror, char **msg)
-{
- char *old_dir;
- size_t rule_index;
-
- mc_return_val_if_error (mcerror, FALSE);
-
- if (!mc_config_deprecated_dir_present ())
- return FALSE;
-
- old_dir = mc_config_get_deprecated_path ();
-
- g_free (mc_config_init_one_config_path (mc_config_str, EDIT_HOME_DIR, mcerror));
-#if MC_HOMEDIR_XDG
- g_free (mc_config_init_one_config_path (mc_cache_str, EDIT_HOME_DIR, mcerror));
- g_free (mc_config_init_one_config_path (mc_data_str, EDIT_HOME_DIR, mcerror));
-#endif /* MC_HOMEDIR_XDG */
-
- mc_return_val_if_error (mcerror, FALSE);
-
- for (rule_index = 0; mc_config_files_reference[rule_index].old_filename != NULL; rule_index++)
- {
- char *old_name;
-
- if (*mc_config_files_reference[rule_index].old_filename == '\0')
- continue;
-
- old_name =
- g_build_filename (old_dir, mc_config_files_reference[rule_index].old_filename,
- (char *) NULL);
-
- if (g_file_test (old_name, G_FILE_TEST_EXISTS))
- {
- char *new_name;
- const char *basedir = *mc_config_files_reference[rule_index].new_basedir;
- const char *filename = mc_config_files_reference[rule_index].new_filename;
-
- new_name = g_build_filename (basedir, filename, (char *) NULL);
- mc_config_copy (old_name, new_name, mcerror);
- g_free (new_name);
- }
-
- g_free (old_name);
- }
-
-#if MC_HOMEDIR_XDG
- *msg = g_strdup_printf (_("Your old settings were migrated from %s\n"
- "to Freedesktop recommended dirs.\n"
- "To get more info, please visit\n"
- "http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"),
- old_dir);
-#else /* MC_HOMEDIR_XDG */
- *msg = g_strdup_printf (_("Your old settings were migrated from %s\n"
- "to %s\n"), old_dir, mc_config_str);
-#endif /* MC_HOMEDIR_XDG */
-
- g_free (old_dir);
-
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
/**
* Get full path to config file by short name.
*
@@ -498,11 +280,10 @@
if (!xdg_vars_initialized)
mc_config_init_config_paths (NULL);
- for (rule_index = 0; mc_config_files_reference[rule_index].old_filename != NULL; rule_index++)
- if (strcmp (config_name, mc_config_files_reference[rule_index].new_filename) == 0)
- return g_build_filename (*mc_config_files_reference[rule_index].new_basedir,
- mc_config_files_reference[rule_index].new_filename,
- (char *) NULL);
+ for (rule_index = 0; mc_config_files_reference[rule_index].filename != NULL; rule_index++)
+ if (strcmp (config_name, mc_config_files_reference[rule_index].filename) == 0)
+ return g_build_filename (*mc_config_files_reference[rule_index].basedir,
+ mc_config_files_reference[rule_index].filename, (char *) NULL);
return NULL;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/mcconfig/set.c
^
|
@@ -1,7 +1,7 @@
/*
Configure module for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search.h
^
|
@@ -107,15 +107,20 @@
/* private data */
- /* prepared conditions */
- GPtrArray *conditions;
+ struct
+ {
+ GPtrArray *conditions;
+ gboolean result;
+ } prepared;
/* original search string */
- gchar *original;
- gsize original_len;
+ struct
+ {
+ GString *str;
#ifdef HAVE_CHARSET
- gchar *original_charset;
+ gchar *charset;
#endif
+ } original;
/* error code after search */
mc_search_error_t error;
@@ -150,26 +155,26 @@
gboolean mc_search_run (mc_search_t * mc_search, const void *user_data, gsize start_search,
gsize end_search, gsize * found_len);
-gboolean mc_search_is_type_avail (mc_search_type_t);
+gboolean mc_search_is_type_avail (mc_search_type_t search_type);
const mc_search_type_str_t *mc_search_types_list_get (size_t * num);
GString *mc_search_prepare_replace_str (mc_search_t * mc_search, GString * replace_str);
char *mc_search_prepare_replace_str2 (mc_search_t * lc_mc_search, const char *replace_str);
-gboolean mc_search_is_fixed_search_str (mc_search_t *);
+gboolean mc_search_is_fixed_search_str (const mc_search_t * lc_mc_search);
gchar **mc_search_get_types_strings_array (size_t * num);
gboolean mc_search (const gchar * pattern, const gchar * pattern_charset, const gchar * str,
mc_search_type_t type);
-int mc_search_getstart_result_by_num (mc_search_t *, int);
-int mc_search_getend_result_by_num (mc_search_t *, int);
+int mc_search_getstart_result_by_num (mc_search_t * lc_mc_search, int lc_index);
+int mc_search_getend_result_by_num (mc_search_t * lc_mc_search, int lc_index);
/* *INDENT-OFF* */
void mc_search_set_error (mc_search_t * lc_mc_search, mc_search_error_t code, const gchar * format, ...)
G_GNUC_PRINTF (3, 4);
/* *INDENT-ON* */
-#endif
+#endif /* MC__SEARCH_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/glob.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
Glob-style pattern matching
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -191,9 +191,12 @@
GString *
mc_search_glob_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{
- GString *repl = mc_search__translate_replace_glob_to_regex (replace_str->str);
- GString *res = mc_search_regex_prepare_replace_str (lc_mc_search, repl);
+ GString *repl, *res;
+
+ repl = mc_search__translate_replace_glob_to_regex (replace_str->str);
+ res = mc_search_regex_prepare_replace_str (lc_mc_search, repl);
g_string_free (repl, TRUE);
+
return res;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/hex.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
HEX-style pattern matching
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -222,7 +222,8 @@
mc_search_hex_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{
(void) lc_mc_search;
- return g_string_new_len (replace_str->str, replace_str->len);
+
+ return mc_g_string_dup (replace_str);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/internal.h
^
|
@@ -38,46 +38,45 @@
/* search/lib.c : */
-gchar *mc_search__recode_str (const char *, gsize, const char *, const char *, gsize *);
-
-gchar *mc_search__get_one_symbol (const char *, const char *, gsize, gboolean *);
-
-GString *mc_search__tolower_case_str (const char *, const char *, gsize);
-
-GString *mc_search__toupper_case_str (const char *, const char *, gsize);
+GString *mc_search__recode_str (const char *str, gsize str_len, const char *charset_from,
+ const char *charset_to);
+GString *mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len,
+ gboolean * just_letters);
+GString *mc_search__tolower_case_str (const char *charset, const GString * str);
+GString *mc_search__toupper_case_str (const char *charset, const GString * str);
/* search/regex.c : */
-void mc_search__cond_struct_new_init_regex (const char *, mc_search_t *, mc_search_cond_t *);
-
-gboolean mc_search__run_regex (mc_search_t *, const void *, gsize, gsize, gsize *);
-
-GString *mc_search_regex_prepare_replace_str (mc_search_t *, GString *);
+void mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_search,
+ mc_search_cond_t * mc_search_cond);
+gboolean mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data,
+ gsize start_search, gsize end_search, gsize * found_len);
+GString *mc_search_regex_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str);
/* search/normal.c : */
-void mc_search__cond_struct_new_init_normal (const char *, mc_search_t *, mc_search_cond_t *);
-
-gboolean mc_search__run_normal (mc_search_t *, const void *, gsize, gsize, gsize *);
-
-GString *mc_search_normal_prepare_replace_str (mc_search_t *, GString *);
+void mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search,
+ mc_search_cond_t * mc_search_cond);
+gboolean mc_search__run_normal (mc_search_t * lc_mc_search, const void *user_data,
+ gsize start_search, gsize end_search, gsize * found_len);
+GString *mc_search_normal_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str);
/* search/glob.c : */
-void mc_search__cond_struct_new_init_glob (const char *, mc_search_t *, mc_search_cond_t *);
-
-gboolean mc_search__run_glob (mc_search_t *, const void *, gsize, gsize, gsize *);
-
-GString *mc_search_glob_prepare_replace_str (mc_search_t *, GString *);
+void mc_search__cond_struct_new_init_glob (const char *charset, mc_search_t * lc_mc_search,
+ mc_search_cond_t * mc_search_cond);
+gboolean mc_search__run_glob (mc_search_t * lc_mc_search, const void *user_data,
+ gsize start_search, gsize end_search, gsize * found_len);
+GString *mc_search_glob_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str);
/* search/hex.c : */
-void mc_search__cond_struct_new_init_hex (const char *, mc_search_t *, mc_search_cond_t *);
-
-gboolean mc_search__run_hex (mc_search_t *, const void *, gsize, gsize, gsize *);
-
-GString *mc_search_hex_prepare_replace_str (mc_search_t *, GString *);
+void mc_search__cond_struct_new_init_hex (const char *charset, mc_search_t * lc_mc_search,
+ mc_search_cond_t * mc_search_cond);
+gboolean mc_search__run_hex (mc_search_t * lc_mc_search, const void *user_data,
+ gsize start_search, gsize end_search, gsize * found_len);
+GString *mc_search_hex_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str);
/*** inline functions ****************************************************************************/
-#endif
+#endif /* MC__SEARCH_INTERNAL_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/lib.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
Common share code for module.
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -51,17 +51,69 @@
/*** file scope type declarations ****************************************************************/
+typedef gboolean (*case_conv_fn) (const char *ch, char **out, size_t * remain);
+
/*** file scope variables ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static GString *
+mc_search__change_case_str (const char *charset, const GString * str, case_conv_fn case_conv)
+{
+ GString *ret;
+ const char *src_ptr;
+ gchar *dst_str;
+ gchar *dst_ptr;
+ gsize dst_len;
+#ifdef HAVE_CHARSET
+ GString *converted_str;
+
+ if (charset == NULL)
+ charset = cp_source;
+
+ converted_str = mc_search__recode_str (str->str, str->len, charset, cp_display);
+
+ dst_len = converted_str->len + 1; /* +1 is required for str_toupper/str_tolower */
+ dst_str = g_malloc (dst_len);
+
+ for (src_ptr = converted_str->str, dst_ptr = dst_str;
+ case_conv (src_ptr, &dst_ptr, &dst_len); src_ptr += str_length_char (src_ptr))
+ ;
+ *dst_ptr = '\0';
+
+ dst_len = converted_str->len;
+ g_string_free (converted_str, TRUE);
+
+ ret = mc_search__recode_str (dst_str, dst_len, cp_display, charset);
+ g_free (dst_str);
+#else
+ (void) charset;
+
+ dst_len = str->len + 1; /* +1 is required for str_toupper/str_tolower */
+ dst_str = g_malloc (dst_len);
+
+ for (src_ptr = str->str, dst_ptr = dst_str;
+ case_conv (src_ptr, &dst_ptr, &dst_len); src_ptr += str_length_char (src_ptr))
+ ;
+ *dst_ptr = '\0';
+ ret = g_string_new_len (dst_str, dst_len);
+ g_free (dst_str);
+#endif
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
-gchar *
-mc_search__recode_str (const char *str, gsize str_len,
- const char *charset_from, const char *charset_to, gsize * bytes_written)
+GString *
+mc_search__recode_str (const char *str, gsize str_len, const char *charset_from,
+ const char *charset_to)
{
- gchar *ret = NULL;
+ GString *ret = NULL;
if (charset_from != NULL && charset_to != NULL
&& g_ascii_strcasecmp (charset_to, charset_from) != 0)
@@ -71,60 +123,61 @@
conv = g_iconv_open (charset_to, charset_from);
if (conv != INVALID_CONV)
{
- gsize bytes_read;
+ gchar *val;
+ gsize bytes_read = 0;
+ gsize bytes_written = 0;
+
+ val = g_convert_with_iconv (str, str_len, conv, &bytes_read, &bytes_written, NULL);
- ret = g_convert_with_iconv (str, str_len, conv, &bytes_read, bytes_written, NULL);
g_iconv_close (conv);
+
+ if (val != NULL)
+ {
+ ret = g_string_new_len (val, bytes_written);
+ g_free (val);
+ }
}
}
if (ret == NULL)
- {
- *bytes_written = str_len;
- ret = g_strndup (str, str_len);
- }
+ ret = g_string_new_len (str, str_len);
return ret;
}
/* --------------------------------------------------------------------------------------------- */
-gchar *
+GString *
mc_search__get_one_symbol (const char *charset, const char *str, gsize str_len,
gboolean * just_letters)
{
- gchar *converted_str;
+ GString *converted_str;
const gchar *next_char;
- gsize tmp_len;
#ifdef HAVE_CHARSET
- gsize converted_str_len;
- gchar *converted_str2;
+ GString *converted_str2;
if (charset == NULL)
charset = cp_source;
- converted_str = mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len);
+ converted_str = mc_search__recode_str (str, str_len, charset, cp_display);
#else
(void) charset;
- converted_str = g_strndup (str, str_len);
+ converted_str = g_string_new_len (str, str_len);
#endif
- next_char = str_cget_next_char (converted_str);
-
- tmp_len = next_char - converted_str;
-
- converted_str[tmp_len] = '\0';
+ next_char = str_cget_next_char (converted_str->str);
+ g_string_set_size (converted_str, (gsize) (next_char - converted_str->str));
#ifdef HAVE_CHARSET
converted_str2 =
- mc_search__recode_str (converted_str, tmp_len, cp_display, charset, &converted_str_len);
+ mc_search__recode_str (converted_str->str, converted_str->len, cp_display, charset);
#endif
if (just_letters != NULL)
- *just_letters = str_isalnum (converted_str) && !str_isdigit (converted_str);
+ *just_letters = str_isalnum (converted_str->str) && !str_isdigit (converted_str->str);
#ifdef HAVE_CHARSET
- g_free (converted_str);
+ g_string_free (converted_str, TRUE);
return converted_str2;
#else
return converted_str;
@@ -134,103 +187,17 @@
/* --------------------------------------------------------------------------------------------- */
GString *
-mc_search__tolower_case_str (const char *charset, const char *str, gsize str_len)
+mc_search__tolower_case_str (const char *charset, const GString * str)
{
- GString *ret;
-#ifdef HAVE_CHARSET
- gchar *converted_str, *tmp_str1, *tmp_str2, *tmp_str3;
- gsize converted_str_len;
- gsize tmp_len;
-
- if (charset == NULL)
- charset = cp_source;
-
- tmp_str2 = converted_str =
- mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len);
-
- tmp_len = converted_str_len + 1;
-
- tmp_str3 = tmp_str1 = g_strdup (converted_str);
-
- while (str_tolower (tmp_str1, &tmp_str2, &tmp_len))
- tmp_str1 += str_length_char (tmp_str1);
-
- g_free (tmp_str3);
- tmp_str2 =
- mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len);
- g_free (converted_str);
-
- ret = g_string_new_len (tmp_str2, tmp_len);
- g_free (tmp_str2);
- return ret;
-#else
- const gchar *tmp_str1 = str;
- gchar *converted_str, *tmp_str2;
- gsize converted_str_len = str_len + 1;
-
- (void) charset;
-
- tmp_str2 = converted_str = g_strndup (str, str_len);
-
- while (str_tolower (tmp_str1, &tmp_str2, &converted_str_len))
- tmp_str1 += str_length_char (tmp_str1);
-
- ret = g_string_new_len (converted_str, str_len);
- g_free (converted_str);
- return ret;
-#endif
+ return mc_search__change_case_str (charset, str, str_tolower);
}
/* --------------------------------------------------------------------------------------------- */
GString *
-mc_search__toupper_case_str (const char *charset, const char *str, gsize str_len)
+mc_search__toupper_case_str (const char *charset, const GString * str)
{
- GString *ret;
-#ifdef HAVE_CHARSET
- gchar *converted_str, *tmp_str1, *tmp_str2, *tmp_str3;
- gsize converted_str_len;
- gsize tmp_len;
-
- if (charset == NULL)
- charset = cp_source;
-
- tmp_str2 = converted_str =
- mc_search__recode_str (str, str_len, charset, cp_display, &converted_str_len);
-
- tmp_len = converted_str_len + 1;
-
- tmp_str3 = tmp_str1 = g_strdup (converted_str);
-
- while (str_toupper (tmp_str1, &tmp_str2, &tmp_len))
- tmp_str1 += str_length_char (tmp_str1);
-
- g_free (tmp_str3);
-
- tmp_str2 =
- mc_search__recode_str (converted_str, converted_str_len, cp_display, charset, &tmp_len);
- g_free (converted_str);
-
- ret = g_string_new_len (tmp_str2, tmp_len);
- g_free (tmp_str2);
- return ret;
-#else
-
- const gchar *tmp_str1 = str;
- gchar *converted_str, *tmp_str2;
- gsize converted_str_len = str_len + 1;
-
- (void) charset;
-
- tmp_str2 = converted_str = g_strndup (str, str_len);
-
- while (str_toupper (tmp_str1, &tmp_str2, &converted_str_len))
- tmp_str1 += str_length_char (tmp_str1);
-
- ret = g_string_new_len (converted_str, str_len);
- g_free (converted_str);
- return ret;
-#endif
+ return mc_search__change_case_str (charset, str, str_toupper);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/normal.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
Plain search
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -40,19 +40,17 @@
/*** file scope variables ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
-static GString *
-mc_search__normal_translate_to_regex (const GString * astr)
+static void
+mc_search__normal_translate_to_regex (GString * str)
{
- const char *str = astr->str;
- GString *buff;
gsize loop;
- buff = g_string_sized_new (32);
-
- for (loop = 0; loop < astr->len; loop++)
- switch (str[loop])
+ for (loop = 0; loop < str->len; loop++)
+ switch (str->str[loop])
{
case '*':
case '?':
@@ -70,28 +68,22 @@
case '^':
case '-':
case '|':
- g_string_append_c (buff, '\\');
- MC_FALLTHROUGH;
+ g_string_insert_c (str, loop, '\\');
+ loop++;
default:
- g_string_append_c (buff, str[loop]);
break;
}
-
- return buff;
}
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
void
mc_search__cond_struct_new_init_normal (const char *charset, mc_search_t * lc_mc_search,
mc_search_cond_t * mc_search_cond)
{
- GString *tmp;
-
- tmp = mc_search__normal_translate_to_regex (mc_search_cond->str);
- g_string_free (mc_search_cond->str, TRUE);
-
- mc_search_cond->str = tmp;
+ mc_search__normal_translate_to_regex (mc_search_cond->str);
mc_search__cond_struct_new_init_regex (charset, lc_mc_search, mc_search_cond);
}
@@ -109,5 +101,6 @@
mc_search_normal_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{
(void) lc_mc_search;
- return g_string_new_len (replace_str->str, replace_str->len);
+
+ return mc_g_string_dup (replace_str);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/regex.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
Regex search
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -122,13 +122,13 @@
static void
mc_search__cond_struct_new_regex_hex_add (const char *charset, GString * str_to,
- const char *one_char, gsize str_len)
+ const GString * one_char)
{
GString *upp, *low;
gsize loop;
- upp = mc_search__toupper_case_str (charset, one_char, str_len);
- low = mc_search__tolower_case_str (charset, one_char, str_len);
+ upp = mc_search__toupper_case_str (charset, one_char);
+ low = mc_search__tolower_case_str (charset, one_char);
for (loop = 0; loop < upp->len; loop++)
{
@@ -163,29 +163,26 @@
while (loop < str_from->len)
{
- gchar *one_char;
- gsize one_char_len;
+ GString *one_char;
gboolean just_letters;
one_char =
- mc_search__get_one_symbol (charset, &(str_from->str[loop]),
+ mc_search__get_one_symbol (charset, str_from->str + loop,
MIN (str_from->len - loop, 6), &just_letters);
- one_char_len = strlen (one_char);
- if (one_char_len == 0)
+ if (one_char->len == 0)
loop++;
else
{
- loop += one_char_len;
+ loop += one_char->len;
if (just_letters)
- mc_search__cond_struct_new_regex_hex_add (charset, recoded_part, one_char,
- one_char_len);
+ mc_search__cond_struct_new_regex_hex_add (charset, recoded_part, one_char);
else
- g_string_append_len (recoded_part, one_char, one_char_len);
+ g_string_append_len (recoded_part, one_char->str, one_char->len);
}
- g_free (one_char);
+ g_string_free (one_char, TRUE);
}
g_string_append_len (str_to, recoded_part->str, recoded_part->len);
@@ -219,7 +216,7 @@
spec_char = g_string_sized_new (64);
loop = 0;
- while (loop <= astr->len)
+ while (loop < astr->len)
{
if (mc_search__regex_str_append_if_special (spec_char, astr, &loop))
{
@@ -288,8 +285,9 @@
}
/* Correctly handle embedded NULs while copying */
- p = string_safe = g_malloc (string_len);
+ p = string_safe = g_malloc (string_len + 1);
memcpy (string_safe, string, string_len);
+ string_safe[string_len] = '\0';
end = p + string_len;
while (p < end)
@@ -363,12 +361,13 @@
{
gsize loop1;
- for (loop1 = 0; loop1 < lc_mc_search->conditions->len; loop1++)
+ for (loop1 = 0; loop1 < lc_mc_search->prepared.conditions->len; loop1++)
{
mc_search_cond_t *mc_search_cond;
mc_search__found_cond_t ret;
- mc_search_cond = (mc_search_cond_t *) g_ptr_array_index (lc_mc_search->conditions, loop1);
+ mc_search_cond =
+ (mc_search_cond_t *) g_ptr_array_index (lc_mc_search->prepared.conditions, loop1);
if (!mc_search_cond->regex_handle)
continue;
@@ -642,39 +641,37 @@
for (loop = 0; loop < len; loop += char_len)
{
GString *tmp_string = NULL;
- char *tmp_str;
+ GString *s;
- tmp_str = mc_search__get_one_symbol (NULL, from + loop, len - loop, NULL);
- char_len = strlen (tmp_str);
+ s = mc_search__get_one_symbol (NULL, from + loop, len - loop, NULL);
+ char_len = s->len;
if ((*replace_flags & REPLACE_T_UPP_TRANSFORM_CHAR) != 0)
{
*replace_flags &= ~REPLACE_T_UPP_TRANSFORM_CHAR;
- tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len);
+ tmp_string = mc_search__toupper_case_str (NULL, s);
g_string_append_len (dest_str, tmp_string->str, tmp_string->len);
- g_string_free (tmp_string, TRUE);
}
else if ((*replace_flags & REPLACE_T_LOW_TRANSFORM_CHAR) != 0)
{
*replace_flags &= ~REPLACE_T_LOW_TRANSFORM_CHAR;
- tmp_string = mc_search__tolower_case_str (NULL, tmp_str, char_len);
+ tmp_string = mc_search__tolower_case_str (NULL, s);
g_string_append_len (dest_str, tmp_string->str, tmp_string->len);
- g_string_free (tmp_string, TRUE);
}
else if ((*replace_flags & REPLACE_T_UPP_TRANSFORM) != 0)
{
- tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len);
+ tmp_string = mc_search__toupper_case_str (NULL, s);
g_string_append_len (dest_str, tmp_string->str, tmp_string->len);
- g_string_free (tmp_string, TRUE);
}
else if ((*replace_flags & REPLACE_T_LOW_TRANSFORM) != 0)
{
- tmp_string = mc_search__tolower_case_str (NULL, tmp_str, char_len);
+ tmp_string = mc_search__tolower_case_str (NULL, s);
g_string_append_len (dest_str, tmp_string->str, tmp_string->len);
- g_string_free (tmp_string, TRUE);
}
- g_free (tmp_str);
+ g_string_free (s, TRUE);
+ if (tmp_string != NULL)
+ g_string_free (tmp_string, TRUE);
}
}
@@ -819,7 +816,6 @@
tmp = mc_search_cond->str;
mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp);
g_string_free (tmp, TRUE);
-
}
}
@@ -846,16 +842,13 @@
if (!lc_mc_search->is_case_sensitive)
pcre_options |= PCRE_CASELESS;
}
- else
+ else if (!lc_mc_search->is_case_sensitive)
{
- if (!lc_mc_search->is_case_sensitive)
- {
- GString *tmp;
+ GString *tmp;
- tmp = mc_search_cond->str;
- mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp);
- g_string_free (tmp, TRUE);
- }
+ tmp = mc_search_cond->str;
+ mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp);
+ g_string_free (tmp, TRUE);
}
mc_search_cond->regex_handle =
@@ -1006,7 +999,7 @@
mc_search_regex__get_max_num_of_replace_tokens (replace_str->str, replace_str->len);
if (lc_mc_search->num_results < 0)
- return g_string_new_len (replace_str->str, replace_str->len);
+ return mc_g_string_dup (replace_str);
if (num_replace_tokens > lc_mc_search->num_results - 1
|| num_replace_tokens > MC_SEARCH__NUM_REPLACE_ARGS)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/search/search.c
^
|
@@ -2,7 +2,7 @@
Search text engine.
Interface functions
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -60,13 +60,12 @@
/*** file scope functions ************************************************************************/
static mc_search_cond_t *
-mc_search__cond_struct_new (mc_search_t * lc_mc_search, const char *str,
- gsize str_len, const char *charset)
+mc_search__cond_struct_new (mc_search_t * lc_mc_search, const GString * str, const char *charset)
{
mc_search_cond_t *mc_search_cond;
mc_search_cond = g_malloc0 (sizeof (mc_search_cond_t));
- mc_search_cond->str = g_string_new_len (str, str_len);
+ mc_search_cond->str = mc_g_string_dup (str);
mc_search_cond->charset = g_strdup (charset);
switch (lc_mc_search->search_type)
@@ -94,17 +93,17 @@
static void
mc_search__cond_struct_free (mc_search_cond_t * mc_search_cond)
{
- if (mc_search_cond->upper)
+ if (mc_search_cond->upper != NULL)
g_string_free (mc_search_cond->upper, TRUE);
- if (mc_search_cond->lower)
+ if (mc_search_cond->lower != NULL)
g_string_free (mc_search_cond->lower, TRUE);
g_string_free (mc_search_cond->str, TRUE);
g_free (mc_search_cond->charset);
#ifdef SEARCH_TYPE_GLIB
- if (mc_search_cond->regex_handle)
+ if (mc_search_cond->regex_handle != NULL)
g_regex_unref (mc_search_cond->regex_handle);
#else /* SEARCH_TYPE_GLIB */
g_free (mc_search_cond->regex_handle);
@@ -161,10 +160,9 @@
return NULL;
lc_mc_search = g_new0 (mc_search_t, 1);
- lc_mc_search->original = g_strndup (original, original_len);
- lc_mc_search->original_len = original_len;
+ lc_mc_search->original.str = g_string_new_len (original, original_len);
#ifdef HAVE_CHARSET
- lc_mc_search->original_charset =
+ lc_mc_search->original.charset =
g_strdup (original_charset != NULL
&& *original_charset != '\0' ? original_charset : cp_display);
#else
@@ -182,14 +180,14 @@
if (lc_mc_search == NULL)
return;
- g_free (lc_mc_search->original);
+ g_string_free (lc_mc_search->original.str, TRUE);
#ifdef HAVE_CHARSET
- g_free (lc_mc_search->original_charset);
+ g_free (lc_mc_search->original.charset);
#endif
g_free (lc_mc_search->error_str);
- if (lc_mc_search->conditions != NULL)
- mc_search__conditions_free (lc_mc_search->conditions);
+ if (lc_mc_search->prepared.conditions != NULL)
+ mc_search__conditions_free (lc_mc_search->prepared.conditions);
#ifdef SEARCH_TYPE_GLIB
if (lc_mc_search->regex_match_info != NULL)
@@ -211,54 +209,51 @@
{
GPtrArray *ret;
+ if (lc_mc_search->prepared.conditions != NULL)
+ return lc_mc_search->prepared.result;
+
ret = g_ptr_array_new ();
#ifdef HAVE_CHARSET
- if (lc_mc_search->is_all_charsets)
+ if (!lc_mc_search->is_all_charsets)
+ g_ptr_array_add (ret,
+ mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original.str,
+ lc_mc_search->original.charset));
+ else
{
gsize loop1;
for (loop1 = 0; loop1 < codepages->len; loop1++)
{
const char *id;
- gsize recoded_str_len;
- gchar *buffer;
id = ((codepage_desc *) g_ptr_array_index (codepages, loop1))->id;
- if (g_ascii_strcasecmp (id, lc_mc_search->original_charset) == 0)
- {
+ if (g_ascii_strcasecmp (id, lc_mc_search->original.charset) == 0)
g_ptr_array_add (ret,
- mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original,
- lc_mc_search->original_len,
- lc_mc_search->original_charset));
- continue;
- }
+ mc_search__cond_struct_new (lc_mc_search,
+ lc_mc_search->original.str,
+ lc_mc_search->original.charset));
+ else
+ {
+ GString *buffer;
- buffer =
- mc_search__recode_str (lc_mc_search->original, lc_mc_search->original_len,
- lc_mc_search->original_charset, id, &recoded_str_len);
-
- g_ptr_array_add (ret,
- mc_search__cond_struct_new (lc_mc_search, buffer,
- recoded_str_len, id));
- g_free (buffer);
+ buffer =
+ mc_search__recode_str (lc_mc_search->original.str->str,
+ lc_mc_search->original.str->len,
+ lc_mc_search->original.charset, id);
+ g_ptr_array_add (ret, mc_search__cond_struct_new (lc_mc_search, buffer, id));
+ g_string_free (buffer, TRUE);
+ }
}
}
- else
- {
- g_ptr_array_add (ret,
- mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original,
- lc_mc_search->original_len,
- lc_mc_search->original_charset));
- }
#else
g_ptr_array_add (ret,
- mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original,
- lc_mc_search->original_len,
+ mc_search__cond_struct_new (lc_mc_search, lc_mc_search->original.str,
str_detect_termencoding ()));
#endif
- lc_mc_search->conditions = ret;
+ lc_mc_search->prepared.conditions = ret;
+ lc_mc_search->prepared.result = (lc_mc_search->error == MC_SEARCH_E_OK);
- return (lc_mc_search->error == MC_SEARCH_E_OK);
+ return lc_mc_search->prepared.result;
}
/* --------------------------------------------------------------------------------------------- */
@@ -299,7 +294,7 @@
mc_search_set_error (lc_mc_search, MC_SEARCH_E_OK, NULL);
- if ((lc_mc_search->conditions == NULL) && !mc_search_prepare (lc_mc_search))
+ if (!mc_search_prepare (lc_mc_search))
return FALSE;
switch (lc_mc_search->search_type)
@@ -363,7 +358,7 @@
return g_string_new ("");
if (lc_mc_search == NULL)
- return g_string_new_len (replace_str->str, replace_str->len);
+ return mc_g_string_dup (replace_str);
switch (lc_mc_search->search_type)
{
@@ -380,7 +375,7 @@
ret = mc_search_hex_prepare_replace_str (lc_mc_search, replace_str);
break;
default:
- ret = g_string_new_len (replace_str->str, replace_str->len);
+ ret = mc_g_string_dup (replace_str);
break;
}
return ret;
@@ -403,7 +398,7 @@
/* --------------------------------------------------------------------------------------------- */
gboolean
-mc_search_is_fixed_search_str (mc_search_t * lc_mc_search)
+mc_search_is_fixed_search_str (const mc_search_t * lc_mc_search)
{
if (lc_mc_search == NULL)
return FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/serialize.c
^
|
@@ -1,7 +1,7 @@
/*
Provides a serialize/unserialize functionality for INI-like formats.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -251,6 +251,9 @@
g_strfreev (params);
}
+
+ g_strfreev (groups);
+
return g_string_free (buffer, FALSE);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/shell.c
^
|
@@ -1,7 +1,7 @@
/*
Provides a functions for working with shell.
- Copyright (C) 2006-2020
+ Copyright (C) 2006-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin.h
^
|
@@ -134,11 +134,11 @@
gboolean mc_skin_init (const gchar * skin_override, GError ** error);
void mc_skin_deinit (void);
-int mc_skin_color_get (const gchar *, const gchar *);
+int mc_skin_color_get (const gchar * group, const gchar * name);
-void mc_skin_lines_parse_ini_file (mc_skin_t *);
+void mc_skin_lines_parse_ini_file (mc_skin_t * mc_skin);
-gchar *mc_skin_get (const gchar *, const gchar *, const gchar *);
+gchar *mc_skin_get (const gchar * group, const gchar * key, const gchar * default_value);
GPtrArray *mc_skin_list (void);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/colors-old.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Work with colors - backward compatibility
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/colors.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Work with colors
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -356,6 +356,7 @@
gboolean
mc_skin_color_parse_ini_file (mc_skin_t * mc_skin)
{
+ gboolean ret = FALSE;
gsize items_count;
gchar **groups, **orig_groups;
mc_skin_color_t *mc_skin_color;
@@ -364,16 +365,13 @@
orig_groups = mc_config_get_groups (mc_skin->config, &items_count);
if (*orig_groups == NULL)
- {
- g_strfreev (orig_groups);
- return FALSE;
- }
+ goto ret;
/* as first, need to set up default colors */
mc_skin_color_set_default_for_terminal (mc_skin);
mc_skin_color = mc_skin_color_get_from_ini_file (mc_skin, "core", "_default_");
if (mc_skin_color == NULL)
- return FALSE;
+ goto ret;
tty_color_set_defaults (mc_skin_color->fgcolor, mc_skin_color->bgcolor, mc_skin_color->attrs);
mc_skin_color_add_to_hash (mc_skin, "core", "_default_", mc_skin_color);
@@ -395,10 +393,14 @@
}
g_strfreev (orig_keys);
}
- g_strfreev (orig_groups);
mc_skin_color_cache_init ();
- return TRUE;
+
+ ret = TRUE;
+
+ ret:
+ g_strfreev (orig_groups);
+ return ret;
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/common.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Interface functions
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -159,7 +159,7 @@
(void) mc_skin_ini_file_parse (&mc_skin__default);
is_good_init = FALSE;
}
- if (is_good_init && mc_skin__default.have_256_colors && !tty_use_256colors ())
+ if (is_good_init && mc_skin__default.have_256_colors && !tty_use_256colors (&error))
{
mc_propagate_error (mcerror, 0,
_
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/hc-skins.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Set of hardcoded skins
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/ini-file.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Reading and parse ini-files
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/internal.h
^
|
@@ -22,18 +22,18 @@
/*** declarations of public functions ************************************************************/
-gboolean mc_skin_ini_file_load (mc_skin_t *);
-gboolean mc_skin_ini_file_parse (mc_skin_t *);
-void mc_skin_set_hardcoded_skin (mc_skin_t *);
-
-gboolean mc_skin_ini_file_parse_colors (mc_skin_t *);
-gboolean mc_skin_color_parse_ini_file (mc_skin_t *);
-
-void mc_skin_hardcoded_ugly_lines (mc_skin_t *);
-void mc_skin_hardcoded_space_lines (mc_skin_t *);
-void mc_skin_hardcoded_blackwhite_colors (mc_skin_t *);
+gboolean mc_skin_ini_file_load (mc_skin_t * mc_skin);
+gboolean mc_skin_ini_file_parse (mc_skin_t * mc_skin);
+void mc_skin_set_hardcoded_skin (mc_skin_t * mc_skin);
+
+gboolean mc_skin_ini_file_parse_colors (mc_skin_t * mc_skin);
+gboolean mc_skin_color_parse_ini_file (mc_skin_t * mc_skin);
+
+void mc_skin_hardcoded_ugly_lines (mc_skin_t * mc_skin);
+void mc_skin_hardcoded_space_lines (mc_skin_t * mc_skin);
+void mc_skin_hardcoded_blackwhite_colors (mc_skin_t * mc_skin);
-void mc_skin_colors_old_configure (mc_skin_t *);
+void mc_skin_colors_old_configure (mc_skin_t * mc_skin);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/skin/lines.c
^
|
@@ -2,7 +2,7 @@
Skins engine.
Work with line draving chars.
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strescape.h
^
|
@@ -15,18 +15,19 @@
/*** declarations of public functions ************************************************************/
-char *strutils_escape (const char *, gsize, const char *, gboolean);
-char *strutils_unescape (const char *, gsize, const char *, gboolean);
+char *strutils_escape (const char *src, gsize src_len, const char *escaped_chars,
+ gboolean escape_non_printable);
+char *strutils_unescape (const char *src, gsize src_len, const char *unescaped_chars,
+ gboolean unescape_non_printable);
+char *strutils_shell_unescape (const char *text);
+char *strutils_shell_escape (const char *text);
+
+char *strutils_glob_escape (const char *text);
+char *strutils_glob_unescape (const char *text);
-char *strutils_shell_unescape (const char *);
-char *strutils_shell_escape (const char *);
+char *strutils_regex_escape (const char *text);
+char *strutils_regex_unescape (const char *text);
-char *strutils_glob_escape (const char *);
-char *strutils_glob_unescape (const char *);
+gboolean strutils_is_char_escaped (const char *start, const char *current);
-char *strutils_regex_escape (const char *);
-char *strutils_regex_unescape (const char *);
-
-gboolean strutils_is_char_escaped (const char *, const char *);
-
-#endif
+#endif /* MC__STRUTILS_ESCAPE_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil.h
^
|
@@ -107,46 +107,46 @@
gchar *(*conv_gerror_message) (GError * error, const char *def_msg);
/*I*/ estr_t (*vfs_convert_to) (GIConv coder, const char *string, int size, GString * buffer);
/*I*/ void (*insert_replace_char) (GString * buffer);
- gboolean (*is_valid_string) (const char *);
- /*I*/ int (*is_valid_char) (const char *, size_t);
- /*I*/ void (*cnext_char) (const char **);
- void (*cprev_char) (const char **);
- void (*cnext_char_safe) (const char **);
- /*I*/ void (*cprev_char_safe) (const char **);
+ gboolean (*is_valid_string) (const char *text);
+ /*I*/ int (*is_valid_char) (const char *ch, size_t size);
+ /*I*/ void (*cnext_char) (const char **text);
+ void (*cprev_char) (const char **text);
+ void (*cnext_char_safe) (const char **text);
+ /*I*/ void (*cprev_char_safe) (const char **text);
/*I*/ int (*cnext_noncomb_char) (const char **text);
/*I*/ int (*cprev_noncomb_char) (const char **text, const char *begin);
- /*I*/ gboolean (*char_isspace) (const char *);
- /*I*/ gboolean (*char_ispunct) (const char *);
- /*I*/ gboolean (*char_isalnum) (const char *);
- /*I*/ gboolean (*char_isdigit) (const char *);
- /*I*/ gboolean (*char_isprint) (const char *);
- /*I*/ gboolean (*char_iscombiningmark) (const char *);
- /*I*/ int (*length) (const char *);
- /*I*/ int (*length2) (const char *, int);
- /*I*/ int (*length_noncomb) (const char *);
- /*I*/ gboolean (*char_toupper) (const char *, char **, size_t *);
- gboolean (*char_tolower) (const char *, char **, size_t *);
- void (*fix_string) (char *);
- /*I*/ const char *(*term_form) (const char *);
- /*I*/ const char *(*fit_to_term) (const char *, int, align_crt_t);
+ /*I*/ gboolean (*char_isspace) (const char *ch);
+ /*I*/ gboolean (*char_ispunct) (const char *ch);
+ /*I*/ gboolean (*char_isalnum) (const char *ch);
+ /*I*/ gboolean (*char_isdigit) (const char *ch);
+ /*I*/ gboolean (*char_isprint) (const char *ch);
+ /*I*/ gboolean (*char_iscombiningmark) (const char *ch);
+ /*I*/ int (*length) (const char *text);
+ /*I*/ int (*length2) (const char *text, int size);
+ /*I*/ int (*length_noncomb) (const char *text);
+ /*I*/ gboolean (*char_toupper) (const char *ch, char **out, size_t * remain);
+ gboolean (*char_tolower) (const char *ch, char **out, size_t * remain);
+ void (*fix_string) (char *text);
+ /*I*/ const char *(*term_form) (const char *text);
+ /*I*/ const char *(*fit_to_term) (const char *text, int width, align_crt_t just_mode);
/*I*/ const char *(*term_trim) (const char *text, int width);
- /*I*/ const char *(*term_substring) (const char *, int, int);
- /*I*/ int (*term_width1) (const char *);
- /*I*/ int (*term_width2) (const char *, size_t);
- /*I*/ int (*term_char_width) (const char *);
- /*I*/ const char *(*trunc) (const char *, int);
- /*I*/ int (*offset_to_pos) (const char *, size_t);
- /*I*/ int (*column_to_pos) (const char *, size_t);
- /*I*/ char *(*create_search_needle) (const char *, gboolean);
- void (*release_search_needle) (char *, gboolean);
- const char *(*search_first) (const char *, const char *, gboolean);
- const char *(*search_last) (const char *, const char *, gboolean);
- int (*compare) (const char *, const char *);
- /*I*/ int (*ncompare) (const char *, const char *);
- /*I*/ int (*casecmp) (const char *, const char *);
- /*I*/ int (*ncasecmp) (const char *, const char *);
- /*I*/ int (*prefix) (const char *, const char *);
- /*I*/ int (*caseprefix) (const char *, const char *);
+ /*I*/ const char *(*term_substring) (const char *text, int start, int width);
+ /*I*/ int (*term_width1) (const char *text);
+ /*I*/ int (*term_width2) (const char *text, size_t length);
+ /*I*/ int (*term_char_width) (const char *length);
+ /*I*/ const char *(*trunc) (const char *length, int width);
+ /*I*/ int (*offset_to_pos) (const char *text, size_t length);
+ /*I*/ int (*column_to_pos) (const char *text, size_t pos);
+ /*I*/ char *(*create_search_needle) (const char *needle, gboolean case_sen);
+ void (*release_search_needle) (char *needle, gboolean case_sen);
+ const char *(*search_first) (const char *text, const char *needle, gboolean case_sen);
+ const char *(*search_last) (const char *text, const char *needle, gboolean case_sen);
+ int (*compare) (const char *t1, const char *t2);
+ /*I*/ int (*ncompare) (const char *t1, const char *t2);
+ /*I*/ int (*casecmp) (const char *t1, const char *t2);
+ /*I*/ int (*ncasecmp) (const char *t1, const char *t2);
+ /*I*/ int (*prefix) (const char *text, const char *prefix);
+ /*I*/ int (*caseprefix) (const char *text, const char *prefix);
/*I*/ char *(*create_key) (const char *text, gboolean case_sen);
/*I*/ char *(*create_key_for_filename) (const char *text, gboolean case_sen);
/*I*/ int (*key_collate) (const char *t1, const char *t2, gboolean case_sen);
@@ -171,17 +171,17 @@
/* create convertor from "from_enc" to terminal encoding
* if "from_enc" is not supported return INVALID_CONV
*/
-GIConv str_crt_conv_from (const char *);
+GIConv str_crt_conv_from (const char *from_enc);
/* create convertor from terminal encoding to "to_enc"
* if "to_enc" is not supported return INVALID_CONV
*/
-GIConv str_crt_conv_to (const char *);
+GIConv str_crt_conv_to (const char *to_enc);
/* close convertor, do not close str_cnv_to_term, str_cnv_from_term,
* str_cnv_not_convert
*/
-void str_close_conv (GIConv);
+void str_close_conv (GIConv conv);
/* return on of not used buffers (.used == 0) or create new
* returned buffer has set .used to 1
@@ -191,8 +191,8 @@
* return ESTR_SUCCESS if there was no problem.
* otherwise return ESTR_PROBLEM or ESTR_FAILURE
*/
-estr_t str_convert (GIConv, const char *, GString *);
-estr_t str_nconvert (GIConv, const char *, int, GString *);
+estr_t str_convert (GIConv coder, const char *string, GString * buffer);
+estr_t str_nconvert (GIConv coder, const char *string, int size, GString * buffer);
/* convert GError message (which in UTF-8) to terminal charset
* def_char is used if result of error->str conversion if ESTR_FAILURE
@@ -206,13 +206,13 @@
* if coder is str_cnv_from_term or str_cnv_not_convert, string is only copied,
* so is possible to show file, that is not valid in terminal encoding
*/
-estr_t str_vfs_convert_from (GIConv, const char *, GString *);
+estr_t str_vfs_convert_from (GIConv coder, const char *string, GString * buffer);
/* if coder is str_cnv_to_term or str_cnv_not_convert, string is only copied,
* does replace with questionmark
* I
*/
-estr_t str_vfs_convert_to (GIConv, const char *, int, GString *);
+estr_t str_vfs_convert_to (GIConv coder, const char *string, int size, GString * buffer);
/* printf function for str_buffer, append result of printf at the end of buffer
*/
@@ -222,7 +222,7 @@
/* add standard replacement character in terminal encoding
*/
-void str_insert_replace_char (GString *);
+void str_insert_replace_char (GString * buffer);
/* init strings and set terminal encoding,
* if is termenc NULL, detect terminal encoding
@@ -377,7 +377,7 @@
/* return length of one char
* I
*/
-int str_length_char (const char *);
+int str_length_char (const char *text);
/* return length of text in characters, count only noncombining characters
* I
@@ -540,24 +540,53 @@
/* Compare version strings:
- This function compares strings s1 and s2:
- 1) By PREFIX in the same way as strcmp.
- 2) Then by VERSION (most similarly to version compare of Debian's dpkg).
- Leading zeros in version numbers are ignored.
- 3) If both (PREFIX and VERSION) are equal, strcmp function is used for
- comparison. So this function can return 0 if (and only if) strings s1
- and s2 are identical.
-
- It returns number > 0 for s1 > s2, 0 for s1 == s2 and number < 0 for s1 < s2.
-
- This function compares strings, in a way that if VER1 and VER2 are version
- numbers and PREFIX and SUFFIX (SUFFIX defined as (\.[A-Za-z~][A-Za-z0-9~]*)*)
- are strings then VER1 < VER2 implies filevercmp (PREFIX VER1 SUFFIX,
- PREFIX VER2 SUFFIX) < 0.
+ Compare strings a and b as file names containing version numbers, and return an integer
+ that is negative, zero, or positive depending on whether a compares less than, equal to,
+ or greater than b.
- This function is intended to be a replacement for strverscmp.
+ Use the following version sort algorithm:
+
+ 1. Compare the strings' maximal-length non-digit prefixes lexically.
+ If there is a difference return that difference.
+ Otherwise discard the prefixes and continue with the next step.
+
+ 2. Compare the strings' maximal-length digit prefixes, using numeric comparison
+ of the numbers represented by each prefix. (Treat an empty prefix as zero; this can
+ happen only at string end.)
+ If there is a difference, return that difference.
+ Otherwise discard the prefixes and continue with the next step.
+
+ 3. If both strings are empty, return 0. Otherwise continue with step 1.
+
+ In version sort, lexical comparison is left to right, byte by byte, using the byte's numeric
+ value (0-255), except that:
+
+ 1. ASCII letters sort before other bytes.
+ 2. A tilde sorts before anything, even an empty string.
+
+ In addition to the version sort rules, the following strings have special priority and sort
+ before all other strings (listed in order):
+
+ 1. The empty string.
+ 2. ".".
+ 3. "..".
+ 4. Strings starting with "." sort before other strings.
+
+ Before comparing two strings where both begin with non-".", or where both begin with "."
+ but neither is "." or "..", suffixes matching the C-locale extended regular expression
+ (\.[A-Za-z~][A-Za-z0-9~]*)*$ are removed and the strings compared without them, using version sort
+ without special priority; if they do not compare equal, this comparison result is used and
+ the suffixes are effectively ignored. Otherwise, the entire strings are compared using version sort.
+ When removing a suffix from a nonempty string, remove the maximal-length suffix such that
+ the remaining string is nonempty.
+ */
+int filevercmp (const char *a, const char *b);
+
+/* Like filevercmp, except compare the byte arrays a (of length alen) and b (of length blen)
+ so that a and b can contain '\0', which sorts just before '\1'. But if alen is -1 treat
+ a as a string terminated by '\0', and similarly for blen.
*/
-int filevercmp (const char *s1, const char *s2);
+int filenvercmp (char const *a, ssize_t alen, char const *b, ssize_t blen);
/* return how many lines and columns will text occupy on terminal
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/filevercmp.c
^
|
@@ -1,27 +1,25 @@
/*
Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>
Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au>
- Copyright (C) 2008-2018 Free Software Foundation, Inc.
+ Copyright (C) 2008-2022 Free Software Foundation, Inc.
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
+ This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ GNU Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <config.h>
-#include <sys/types.h>
#include <stdlib.h>
-#include <string.h>
#include <limits.h>
#include "lib/strutil.h"
@@ -38,53 +36,74 @@
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
-/* Match a file suffix defined by this regular expression: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/
+/* Return the length of a prefix of @s that corresponds to the suffix defined by this extended
+ * regular expression in the C locale: (\.[A-Za-z~][A-Za-z0-9~]*)*$
*
- * @str pointer to string to scan.
+ * Use the longest suffix matching this regular expression, except do not use all of s as a suffix
+ * if s is nonempty.
*
- * @return pointer to the matching suffix, or NULL if not found.
- * Upon return, @str points to terminating NUL.
+ * If *len is -1, s is a string; set *lem to s's length.
+ * Otherwise, *len should be nonnegative, s is a char array, and *len does not change.
*/
-static const char *
-match_suffix (const char **str)
+static ssize_t
+file_prefixlen (const char *s, ssize_t * len)
{
- const char *match = NULL;
- gboolean read_alpha = FALSE;
+ size_t n = (size_t) (*len); /* SIZE_MAX if N == -1 */
+ size_t i = 0;
+ size_t prefixlen = 0;
- while (**str != '\0')
+ while (TRUE)
{
- if (read_alpha)
- {
- read_alpha = FALSE;
- if (!g_ascii_isalpha (**str) && **str != '~')
- match = NULL;
- }
- else if (**str == '.')
+ gboolean done;
+
+ if (*len < 0)
+ done = s[i] == '\0';
+ else
+ done = i == n;
+
+ if (done)
{
- read_alpha = TRUE;
- if (match == NULL)
- match = *str;
+ *len = (ssize_t) i;
+ return (ssize_t) prefixlen;
}
- else if (!g_ascii_isalnum (**str) && **str != '~')
- match = NULL;
- (*str)++;
- }
- return match;
+ i++;
+ prefixlen = i;
+
+ while (i + 1 < n && s[i] == '.' && (g_ascii_isalpha (s[i + 1]) || s[i + 1] == '~'))
+ for (i += 2; i < n && (g_ascii_isalnum (s[i]) || s[i] == '~'); i++)
+ ;
+ }
}
/* --------------------------------------------------------------------------------------------- */
-/* verrevcmp helper function */
+/* Return a version sort comparison value for @s's byte at position @pos.
+ *
+ * @param s a string
+ * @param pos a position in @s
+ * @param len a length of @s. If @pos == @len, sort before all non-'~' bytes.
+ */
+
static int
-order (unsigned char c)
+order (const char *s, size_t pos, size_t len)
{
+ unsigned char c;
+
+ if (pos == len)
+ return (-1);
+
+ c = s[pos];
+
if (g_ascii_isdigit (c))
return 0;
if (g_ascii_isalpha (c))
return c;
if (c == '~')
- return -1;
+ return (-2);
+
+ g_assert (UCHAR_MAX <= (INT_MAX - 1 - 2) / 2);
+
return (int) c + UCHAR_MAX + 1;
}
@@ -99,18 +118,18 @@
* implements that from s5.6.12 of Debian Policy v3.8.0.1
* https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
*
- * @s1 first string to compare
- * @s1_len length of @s1
- * @s2 second string to compare
- * @s2_len length of @s2
+ * @param s1 first char array to compare
+ * @param s1_len length of @s1
+ * @param s2 second char array to compare
+ * @param s2_len length of @s2
*
* @return an integer less than, equal to, or greater than zero, if @s1 is <, == or > than @s2.
*/
static int
-verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)
+verrevcmp (const char *s1, ssize_t s1_len, const char *s2, ssize_t s2_len)
{
- size_t s1_pos = 0;
- size_t s2_pos = 0;
+ ssize_t s1_pos = 0;
+ ssize_t s2_pos = 0;
while (s1_pos < s1_len || s2_pos < s2_len)
{
@@ -119,13 +138,10 @@
while ((s1_pos < s1_len && !g_ascii_isdigit (s1[s1_pos]))
|| (s2_pos < s2_len && !g_ascii_isdigit (s2[s2_pos])))
{
- int s1_c = 0;
- int s2_c = 0;
+ int s1_c, s2_c;
- if (s1_pos != s1_len)
- s1_c = order (s1[s1_pos]);
- if (s2_pos != s2_len)
- s2_c = order (s2[s2_pos]);
+ s1_c = order (s1, s1_pos, s1_len);
+ s2_c = order (s2, s2_pos, s2_len);
if (s1_c != s2_c)
return (s1_c - s2_c);
@@ -134,12 +150,13 @@
s2_pos++;
}
- while (s1[s1_pos] == '0')
+ while (s1_pos < s1_len && s1[s1_pos] == '0')
s1_pos++;
- while (s2[s2_pos] == '0')
+ while (s2_pos < s2_len && s2[s2_pos] == '0')
s2_pos++;
- while (g_ascii_isdigit (s1[s1_pos]) && g_ascii_isdigit (s2[s2_pos]))
+ while (s1_pos < s1_len && s2_pos < s2_len
+ && g_ascii_isdigit (s1[s1_pos]) && g_ascii_isdigit (s2[s2_pos]))
{
if (first_diff == 0)
first_diff = s1[s1_pos] - s2[s2_pos];
@@ -148,10 +165,10 @@
s2_pos++;
}
- if (g_ascii_isdigit (s1[s1_pos]))
+ if (s1_pos < s1_len && g_ascii_isdigit (s1[s1_pos]))
return 1;
- if (g_ascii_isdigit (s2[s2_pos]))
- return -1;
+ if (s2_pos < s2_len && g_ascii_isdigit (s2[s2_pos]))
+ return (-1);
if (first_diff != 0)
return first_diff;
}
@@ -165,68 +182,84 @@
/* Compare version strings.
*
- * @s1 first string to compare
- * @s2 second string to compare
+ * @param s1 first string to compare
+ * @param s2 second string to compare
*
* @return an integer less than, equal to, or greater than zero, if @s1 is <, == or > than @s2.
*/
int
filevercmp (const char *s1, const char *s2)
{
- const char *s1_pos, *s2_pos;
- const char *s1_suffix, *s2_suffix;
- size_t s1_len, s2_len;
- int simple_cmp, result;
-
- /* easy comparison to see if strings are identical */
- simple_cmp = strcmp (s1, s2);
- if (simple_cmp == 0)
- return 0;
+ return filenvercmp (s1, -1, s2, -1);
+}
- /* special handle for "", "." and ".." */
- if (*s1 == '\0')
- return -1;
- if (*s2 == '\0')
- return 1;
- if (DIR_IS_DOT (s1))
- return -1;
- if (DIR_IS_DOT (s2))
- return 1;
- if (DIR_IS_DOTDOT (s1))
- return -1;
- if (DIR_IS_DOTDOT (s2))
+/* --------------------------------------------------------------------------------------------- */
+/* Compare version strings.
+ *
+ * @param a first string to compare
+ * @param alen length of @a or (-1)
+ * @param b second string to compare
+ * @param blen length of @b or (-1)
+ *
+ * @return an integer less than, equal to, or greater than zero, if @s1 is <, == or > than @s2.
+ */
+int
+filenvercmp (const char *a, ssize_t alen, const char *b, ssize_t blen)
+{
+ gboolean aempty, bempty;
+ ssize_t aprefixlen, bprefixlen;
+ gboolean one_pass_only;
+ int result;
+
+ /* Special case for empty versions. */
+ aempty = alen < 0 ? a[0] == '\0' : alen == 0;
+ bempty = blen < 0 ? b[0] == '\0' : blen == 0;
+
+ if (aempty)
+ return (bempty ? 0 : -1);
+ if (bempty)
return 1;
- /* special handle for other hidden files */
- if (*s1 == '.' && *s2 != '.')
- return -1;
- if (*s1 != '.' && *s2 == '.')
- return 1;
- if (*s1 == '.' && *s2 == '.')
+ /* Special cases for leading ".": "." sorts first, then "..", then other names with leading ".",
+ then other names. */
+ if (a[0] == '.')
{
- s1++;
- s2++;
- }
+ gboolean adot, bdot;
+ gboolean adotdot, bdotdot;
- /* "cut" file suffixes */
- s1_pos = s1;
- s2_pos = s2;
- s1_suffix = match_suffix (&s1_pos);
- s2_suffix = match_suffix (&s2_pos);
- s1_len = (s1_suffix != NULL ? s1_suffix : s1_pos) - s1;
- s2_len = (s2_suffix != NULL ? s2_suffix : s2_pos) - s2;
-
- /* restore file suffixes if strings are identical after "cut" */
- if ((s1_suffix != NULL || s2_suffix != NULL) && (s1_len == s2_len)
- && strncmp (s1, s2, s1_len) == 0)
- {
- s1_len = s1_pos - s1;
- s2_len = s2_pos - s2;
- }
+ if (b[0] != '.')
+ return (-1);
- result = verrevcmp (s1, s1_len, s2, s2_len);
+ adot = alen < 0 ? a[1] == '\0' : alen == 1;
+ bdot = blen < 0 ? b[1] == '\0' : blen == 1;
+
+ if (adot)
+ return (bdot ? 0 : -1);
+ if (bdot)
+ return 1;
+
+ adotdot = a[1] == '.' && (alen < 0 ? a[2] == '\0' : alen == 2);
+ bdotdot = b[1] == '.' && (blen < 0 ? b[2] == '\0' : blen == 2);
+ if (adotdot)
+ return (bdotdot ? 0 : -1);
+ if (bdotdot)
+ return 1;
+ }
+ else if (b[0] == '.')
+ return 1;
- return result == 0 ? simple_cmp : result;
+ /* Cut file suffixes. */
+ aprefixlen = file_prefixlen (a, &alen);
+ bprefixlen = file_prefixlen (b, &blen);
+
+ /* If both suffixes are empty, a second pass would return the same thing. */
+ one_pass_only = aprefixlen == alen && bprefixlen == blen;
+
+ result = verrevcmp (a, aprefixlen, b, bprefixlen);
+
+ /* Return the initial result if nonzero, or if no second pass is needed.
+ Otherwise, restore the suffixes and try again. */
+ return (result != 0 || one_pass_only ? result : verrevcmp (a, alen, b, blen));
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/replace.c
^
|
@@ -1,7 +1,7 @@
/*
Functions for replacing substrings in strings.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -41,7 +41,7 @@
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
-static char *
+static GString *
str_ptr_array_join (const GPtrArray * str_splints)
{
GString *return_str;
@@ -51,7 +51,7 @@
for (i = 0; i < str_splints->len; i++)
g_string_append (return_str, g_ptr_array_index (str_splints, i));
- return g_string_free (return_str, FALSE);
+ return return_str;
}
/* --------------------------------------------------------------------------------------------- */
@@ -73,11 +73,11 @@
{
size_t needle_len;
GPtrArray *str_splints;
- char *return_str;
+ GString *return_str;
needle_len = strlen (needle);
- str_splints = g_ptr_array_new ();
+ str_splints = g_ptr_array_new_with_free_func (g_free);
while (TRUE)
{
@@ -109,10 +109,9 @@
}
return_str = str_ptr_array_join (str_splints);
- g_ptr_array_foreach (str_splints, (GFunc) g_free, NULL);
g_ptr_array_free (str_splints, TRUE);
- return return_str;
+ return g_string_free (return_str, FALSE);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strescape.c
^
|
@@ -1,7 +1,7 @@
/*
Functions for escaping and unescaping strings
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -38,7 +38,7 @@
/*** file scope variables ************************************************************************/
static const char ESCAPE_SHELL_CHARS[] = " !#$%()&{}[]`?|<>;*\\\"'";
-static const char ESCAPE_REGEX_CHARS[] = "^!#$%()&{}[]`?|<>;*.\\";
+static const char ESCAPE_REGEX_CHARS[] = "^!#$%()&{}[]`?|<>;*+.\\";
static const char ESCAPE_GLOB_CHARS[] = "$*\\?";
/*** file scope functions ************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strutil.c
^
|
@@ -1,7 +1,7 @@
/*
Common strings utilities
- Copyright (C) 2007-2020
+ Copyright (C) 2007-2022
Free Software Foundation, Inc.
Written by:
@@ -150,6 +150,7 @@
{
case G_CONVERT_ERROR_NO_CONVERSION:
/* Conversion between the requested character sets is not supported. */
+ g_free (tmp_buff);
tmp_buff = g_strnfill (strlen (string), '?');
g_string_append (buffer, tmp_buff);
g_free (tmp_buff);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strutil8bit.c
^
|
@@ -1,7 +1,7 @@
/*
8bit strings utilities
- Copyright (C) 2007-2020
+ Copyright (C) 2007-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strutilascii.c
^
|
@@ -1,7 +1,7 @@
/*
ASCII strings utilities
- Copyright (C) 2007-2020
+ Copyright (C) 2007-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strutilutf8.c
^
|
@@ -1,7 +1,7 @@
/*
UTF-8 strings utilities
- Copyright (C) 2007-2020
+ Copyright (C) 2007-2022
Free Software Foundation, Inc.
Written by:
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <langinfo.h>
+#include <limits.h> /* MB_LEN_MAX */
#include <string.h>
#include "lib/global.h"
@@ -51,7 +52,7 @@
struct term_form
{
- char text[BUF_MEDIUM * 6];
+ char text[BUF_MEDIUM * MB_LEN_MAX];
size_t width;
gboolean compose;
};
@@ -512,7 +513,7 @@
static const char *
str_utf8_term_form (const char *text)
{
- static char result[BUF_MEDIUM * 6];
+ static char result[BUF_MEDIUM * MB_LEN_MAX];
const struct term_form *pre_form;
pre_form = str_utf8_make_make_term_form (text, (size_t) (-1));
@@ -677,7 +678,7 @@
static const char *
str_utf8_fit_to_term (const char *text, int width, align_crt_t just_mode)
{
- static char result[BUF_MEDIUM * 6];
+ static char result[BUF_MEDIUM * MB_LEN_MAX];
const struct term_form *pre_form;
struct utf8_tool tool;
@@ -750,7 +751,7 @@
static const char *
str_utf8_term_trim (const char *text, int width)
{
- static char result[BUF_MEDIUM * 6];
+ static char result[BUF_MEDIUM * MB_LEN_MAX];
const struct term_form *pre_form;
struct utf8_tool tool;
@@ -827,7 +828,7 @@
static const char *
str_utf8_term_substring (const char *text, int start, int width)
{
- static char result[BUF_MEDIUM * 6];
+ static char result[BUF_MEDIUM * MB_LEN_MAX];
const struct term_form *pre_form;
struct utf8_tool tool;
@@ -858,7 +859,7 @@
static const char *
str_utf8_trunc (const char *text, int width)
{
- static char result[MC_MAXPATHLEN * 6 * 2];
+ static char result[MC_MAXPATHLEN * MB_LEN_MAX * 2];
const struct term_form *pre_form;
struct utf8_tool tool;
@@ -920,7 +921,7 @@
{
gunichar uni;
- uni = g_utf8_get_char_validated (text, 6);
+ uni = g_utf8_get_char_validated (text, MB_LEN_MAX);
if ((uni != (gunichar) (-1)) && (uni != (gunichar) (-2)))
{
if (g_unichar_isprint (uni))
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/strverscmp.c
^
|
@@ -1,7 +1,7 @@
/*
Compare strings while treating digits characters numerically.
- Copyright (C) 1997-2020
+ Copyright (C) 1997-2022
Free Software Foundation, Inc.
This file is part of the GNU C Library.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/strutil/xstrtol.c
^
|
@@ -1,6 +1,6 @@
/* A more useful interface to strtol.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/timefmt.c
^
|
@@ -1,7 +1,7 @@
/*
Time formatting functions
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/timefmt.h
^
|
@@ -52,7 +52,7 @@
/*** declarations of public functions ************************************************************/
size_t i18n_checktimelength (void);
-const char *file_date (time_t);
+const char *file_date (time_t when);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color-internal.c
^
|
@@ -1,7 +1,7 @@
/*
Internal stuff of color setup
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -136,25 +136,26 @@
if (color_name[0] == '#')
{
int len;
- int h[6];
color_name++;
len = (int) strlen (color_name);
- if (len != 3 && len != 6)
- return -1;
-
- for (i = 0; i < len; i++)
+ if (len == 3 || len == 6)
{
- h[i] = parse_hex_digit (color_name[i]);
- if (h[i] == -1)
- return -1;
- }
+ int h[6];
- if (i == 3)
- i = (h[0] << 20) | (h[0] << 16) | (h[1] << 12) | (h[1] << 8) | (h[2] << 4) | h[2];
- else
- i = (h[0] << 20) | (h[1] << 16) | (h[2] << 12) | (h[3] << 8) | (h[4] << 4) | h[5];
- return (1 << 24) | i;
+ for (i = 0; i < len; i++)
+ {
+ h[i] = parse_hex_digit (color_name[i]);
+ if (h[i] == -1)
+ return -1;
+ }
+
+ if (i == 3)
+ i = (h[0] << 20) | (h[0] << 16) | (h[1] << 12) | (h[1] << 8) | (h[2] << 4) | h[2];
+ else
+ i = (h[0] << 20) | (h[1] << 16) | (h[2] << 12) | (h[3] << 8) | (h[4] << 4) | h[5];
+ return (1 << 24) | i;
+ }
}
return -1;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color-internal.h
^
|
@@ -47,14 +47,15 @@
/*** declarations of public functions ************************************************************/
-const char *tty_color_get_name_by_index (int);
-int tty_color_get_index_by_name (const char *);
-int tty_attr_get_bits (const char *);
+const char *tty_color_get_name_by_index (int idx);
+int tty_color_get_index_by_name (const char *color_name);
+int tty_attr_get_bits (const char *attrs);
-void tty_color_init_lib (gboolean, gboolean);
+void tty_color_init_lib (gboolean disable, gboolean force);
void tty_color_deinit_lib (void);
-void tty_color_try_alloc_pair_lib (tty_color_pair_t *);
+void tty_color_try_alloc_pair_lib (tty_color_pair_t * mc_color_pair);
/*** inline functions ****************************************************************************/
-#endif /* MC_COLOR_INTERNAL_H */
+
+#endif /* MC__COLOR_INTERNAL_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color-ncurses.c
^
|
@@ -1,7 +1,7 @@
/*
Color setup for NCurses screen library
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -181,7 +181,7 @@
attr = mc_color_pair->attr;
/* In legacy color mode, change bright colors into bold */
- if (!tty_use_256colors () && !tty_use_truecolors (NULL))
+ if (!tty_use_256colors (NULL) && !tty_use_truecolors (NULL))
{
if (ifg >= 8 && ifg < 16)
{
@@ -228,8 +228,10 @@
/* --------------------------------------------------------------------------------------------- */
gboolean
-tty_use_256colors (void)
+tty_use_256colors (GError ** error)
{
+ (void) error;
+
return (COLORS == 256);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color-slang.c
^
|
@@ -1,7 +1,7 @@
/*
Color setup for S_Lang screen library
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -210,9 +210,17 @@
/* --------------------------------------------------------------------------------------------- */
gboolean
-tty_use_256colors (void)
+tty_use_256colors (GError ** error)
{
- return (SLtt_Use_Ansi_Colors && SLtt_tgetnum ((char *) "Co") == 256);
+ gboolean ret;
+
+ ret = (SLtt_Use_Ansi_Colors && SLtt_tgetnum ((char *) "Co") == 256);
+
+ if (!ret)
+ g_set_error (error, MC_ERROR, -1,
+ _("Your terminal doesn't even seem to support 256 colors."));
+
+ return ret;
}
/* --------------------------------------------------------------------------------------------- */
@@ -232,14 +240,6 @@
return FALSE;
}
- /* Sanity check that at least 256 colors are supported. */
- if (!tty_use_256colors ())
- {
- g_set_error (error, MC_ERROR, -1,
- _("Your terminal doesn't even seem to support 256 colors."));
- return FALSE;
- }
-
/* Duplicate slang's check so that we can pop up an error message
rather than silently use wrong colors. */
colorterm = getenv ("COLORTERM");
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color.c
^
|
@@ -2,7 +2,7 @@
Color setup.
Interface functions.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/color.h
^
|
@@ -35,8 +35,9 @@
void tty_colors_done (void);
gboolean tty_use_colors (void);
-int tty_try_alloc_color_pair (const char *, const char *, const char *);
-int tty_try_alloc_color_pair2 (const char *, const char *, const char *, gboolean);
+int tty_try_alloc_color_pair (const char *fg, const char *bg, const char *attrs);
+int tty_try_alloc_color_pair2 (const char *fg, const char *bg, const char *attrs,
+ gboolean is_temp_color);
void tty_color_free_all_tmp (void);
void tty_color_free_all_non_tmp (void);
@@ -45,10 +46,11 @@
void tty_lowlevel_setcolor (int color);
void tty_set_normal_attrs (void);
-void tty_color_set_defaults (const char *, const char *, const char *);
+void tty_color_set_defaults (const char *fgcolor, const char *bgcolor, const char *attrs);
-extern gboolean tty_use_256colors (void);
-extern gboolean tty_use_truecolors (GError **);
+extern gboolean tty_use_256colors (GError ** error);
+extern gboolean tty_use_truecolors (GError ** error);
/*** inline functions ****************************************************************************/
-#endif /* MC_COLOR_H */
+
+#endif /* MC__COLOR_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/key.c
^
|
@@ -1,7 +1,7 @@
/*
Keyboard support routines.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -89,11 +89,11 @@
/*** global variables ****************************************************************************/
-int mou_auto_repeat = 100;
-int double_click_speed = 250;
+int mou_auto_repeat = 100; /* ms */
+int double_click_speed = 250; /* ms */
gboolean old_esc_mode = TRUE;
/* timeout for old_esc_mode in usec */
-int old_esc_mode_timeout = 1000000; /* settable via env */
+int old_esc_mode_timeout = G_USEC_PER_SEC; /* us, settable via env */
gboolean use_8th_bit_as_meta = FALSE;
gboolean bracketed_pasting_in_progress = FALSE;
@@ -220,8 +220,7 @@
/*** file scope macro definitions ****************************************************************/
-#define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *) NULL))
-#define DIF_TIME(t1, t2) ((t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec)/1000)
+#define MC_USEC_PER_MSEC 1000
/* The maximum sequence length (32 + null terminator) */
#define SEQ_BUFFER_LEN 33
@@ -382,6 +381,11 @@
{KEY_M_CTRL | KEY_M_ALT | KEY_HOME, ESC_STR "OH", MCKEY_NOACTION},
{KEY_M_CTRL | KEY_M_ALT | KEY_END, ESC_STR "OF", MCKEY_NOACTION},
+ {KEY_M_SHIFT | KEY_M_ALT | KEY_UP, ESC_STR "[1;4A", MCKEY_NOACTION},
+ {KEY_M_SHIFT | KEY_M_ALT | KEY_DOWN, ESC_STR "[1;4B", MCKEY_NOACTION},
+ {KEY_M_SHIFT | KEY_M_ALT | KEY_RIGHT, ESC_STR "[1;4C", MCKEY_NOACTION},
+ {KEY_M_SHIFT | KEY_M_ALT | KEY_LEFT, ESC_STR "[1;4D", MCKEY_NOACTION},
+
/* rxvt keys with modifiers */
{KEY_M_SHIFT | KEY_UP, ESC_STR "[a", MCKEY_NOACTION},
{KEY_M_SHIFT | KEY_DOWN, ESC_STR "[b", MCKEY_NOACTION},
@@ -640,7 +644,7 @@
if (set_timeout)
{
time_out.tv_sec = 0;
- time_out.tv_usec = 100000;
+ time_out.tv_usec = 100 * MC_USEC_PER_MSEC;
timeptr = &time_out;
}
@@ -741,8 +745,7 @@
static void
xmouse_get_event (Gpm_Event * ev, gboolean extended)
{
- static struct timeval tv1 = { 0, 0 }; /* Force first click as single */
- static struct timeval tv2;
+ static gint64 tv1 = 0; /* Force first click as single */
static int clicks = 0;
static int last_btn = 0;
int btn;
@@ -811,13 +814,12 @@
/* don't generate GPM_UP after mouse wheel */
/* need for menu event handling */
ev->type = 0;
- tv1.tv_sec = 0;
- tv1.tv_usec = 0;
+ tv1 = 0;
}
else
{
ev->type = GPM_UP | (GPM_SINGLE << clicks);
- GET_TIME (tv1);
+ tv1 = g_get_monotonic_time ();
}
ev->buttons = 0;
last_btn = 0;
@@ -831,6 +833,8 @@
}
else
{
+ gint64 tv2;
+
if (btn >= 32 && btn <= 34)
{
btn -= 32;
@@ -839,8 +843,8 @@
else
ev->type = GPM_DOWN;
- GET_TIME (tv2);
- if (tv1.tv_sec != 0 && DIF_TIME (tv1, tv2) < double_click_speed)
+ tv2 = g_get_monotonic_time ();
+ if (tv1 != 0 && tv2 - tv1 < (gint64) double_click_speed * MC_USEC_PER_MSEC)
{
clicks++;
clicks %= 3;
@@ -1153,8 +1157,8 @@
int c;
struct timeval time_out;
- time_out.tv_sec = delay_us / 1000000u;
- time_out.tv_usec = delay_us % 1000000u;
+ time_out.tv_sec = delay_us / G_USEC_PER_SEC;
+ time_out.tv_usec = delay_us % G_USEC_PER_SEC;
tty_nodelay (TRUE);
FD_ZERO (&Read_FD_Set);
FD_SET (input_fd, &Read_FD_Set);
@@ -1731,7 +1735,7 @@
{
int c;
static key_def *this = NULL, *parent;
- static struct timeval esctime = { -1, -1 };
+ static gint64 esc_time = -1;
static int lastnodelay = -1;
if (no_delay != lastnodelay)
@@ -1790,22 +1794,8 @@
tty_nodelay (FALSE);
if (c == -1)
{
- struct timeval current, time_out;
-
if (this == NULL || parent == NULL || parent->action != MCKEY_ESCAPE || !old_esc_mode ||
- esctime.tv_sec == -1)
- return -1;
-
- GET_TIME (current);
- time_out.tv_sec = old_esc_mode_timeout / 1000000 + esctime.tv_sec;
- time_out.tv_usec = old_esc_mode_timeout % 1000000 + esctime.tv_usec;
- if (time_out.tv_usec > 1000000)
- {
- time_out.tv_usec -= 1000000;
- time_out.tv_sec++;
- }
- if (current.tv_sec < time_out.tv_sec ||
- (current.tv_sec == time_out.tv_sec && current.tv_usec < time_out.tv_usec))
+ esc_time == -1 || g_get_monotonic_time () < esc_time + old_esc_mode_timeout)
return -1;
this = NULL;
@@ -1869,11 +1859,11 @@
{
if (no_delay != 0)
{
- GET_TIME (esctime);
+ esc_time = g_get_monotonic_time ();
goto nodelay_try_again;
}
- esctime.tv_sec = -1;
+ esc_time = -1;
c = getch_with_timeout (old_esc_mode_timeout);
if (c != -1)
continue;
@@ -2000,7 +1990,7 @@
if (redo_event)
{
- time_out.tv_usec = mou_auto_repeat * 1000;
+ time_out.tv_usec = mou_auto_repeat * MC_USEC_PER_MSEC;
time_out.tv_sec = 0;
time_addr = &time_out;
@@ -2165,12 +2155,11 @@
char *
learn_key (void)
{
- /* LEARN_TIMEOUT in usec */
-#define LEARN_TIMEOUT 200000
+ /* LEARN_TIMEOUT in ms */
+#define LEARN_TIMEOUT 200
fd_set Read_FD_Set;
- struct timeval endtime;
- struct timeval time_out;
+ gint64 end_time;
int c;
char buffer[256];
char *p = buffer;
@@ -2181,32 +2170,25 @@
c = tty_lowlevel_getch (); /* Sanity check, should be unnecessary */
learn_store_key (buffer, &p, c);
- GET_TIME (endtime);
- endtime.tv_usec += LEARN_TIMEOUT;
- if (endtime.tv_usec > 1000000)
- {
- endtime.tv_usec -= 1000000;
- endtime.tv_sec++;
- }
+ end_time = g_get_monotonic_time () + LEARN_TIMEOUT * MC_USEC_PER_MSEC;
tty_nodelay (TRUE);
while (TRUE)
{
while ((c = tty_lowlevel_getch ()) == -1)
{
- GET_TIME (time_out);
- time_out.tv_usec = endtime.tv_usec - time_out.tv_usec;
- if (time_out.tv_usec < 0)
- time_out.tv_sec++;
- time_out.tv_sec = endtime.tv_sec - time_out.tv_sec;
- if (time_out.tv_sec >= 0 && time_out.tv_usec > 0)
- {
- FD_ZERO (&Read_FD_Set);
- FD_SET (input_fd, &Read_FD_Set);
- select (input_fd + 1, &Read_FD_Set, NULL, NULL, &time_out);
- }
- else
+ gint64 time_out;
+ struct timeval tv;
+
+ time_out = end_time - g_get_monotonic_time ();
+ if (time_out <= 0)
break;
+
+ tv.tv_sec = time_out / G_USEC_PER_SEC;
+ tv.tv_usec = time_out % G_USEC_PER_SEC;
+ FD_ZERO (&Read_FD_Set);
+ FD_SET (input_fd, &Read_FD_Set);
+ select (input_fd + 1, &Read_FD_Set, NULL, NULL, &tv);
}
if (c == -1)
break;
@@ -2215,7 +2197,7 @@
tty_keypad (TRUE);
tty_nodelay (FALSE);
*p = '\0';
- return g_strdup (buffer);
+ return (buffer[0] != '\0' ? g_strdup (buffer) : NULL);
#undef LEARN_TIMEOUT
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/keyxdef.c
^
|
@@ -3,7 +3,7 @@
/*
Additional keyboard support routines.
- Copyright (C) 1998-2020
+ Copyright (C) 1998-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/mouse.c
^
|
@@ -1,7 +1,7 @@
/*
Mouse managing
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-internal.c
^
|
@@ -1,7 +1,7 @@
/*
Internal stuff of the terminal controlling library.
- Copyright (C) 2019-2020
+ Copyright (C) 2019-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-internal.h
^
|
@@ -38,7 +38,7 @@
void tty_create_winch_pipe (void);
void tty_destroy_winch_pipe (void);
-char *mc_tty_normalize_from_utf8 (const char *);
+char *mc_tty_normalize_from_utf8 (const char *str);
void tty_init_xterm_support (gboolean is_xterm);
int tty_lowlevel_getch (void);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-ncurses.c
^
|
@@ -2,7 +2,7 @@
Interface to the terminal controlling library.
Ncurses wrapper.
- Copyright (C) 2005-2020
+ Copyright (C) 2005-2022
Free Software Foundation, Inc.
Written by:
@@ -152,9 +152,16 @@
if (*y + *rows > LINES)
*rows = LINES - *y;
+
+ if (*rows <= 0)
+ return FALSE;
+
if (*x + *cols > COLS)
*cols = COLS - *x;
+ if (*cols <= 0)
+ return FALSE;
+
return TRUE;
}
@@ -553,6 +560,7 @@
void
tty_colorize_area (int y, int x, int rows, int cols, int color)
{
+#ifdef ENABLE_SHADOWS
cchar_t *ctext;
wchar_t wch[10]; /* TODO not sure if the length is correct */
attr_t attrs;
@@ -578,6 +586,13 @@
}
g_free (ctext);
+#else
+ (void) y;
+ (void) x;
+ (void) rows;
+ (void) cols;
+ (void) color;
+#endif /* ENABLE_SHADOWS */
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-ncurses.h
^
|
@@ -2,6 +2,11 @@
#ifndef MC__TTY_NCURSES_H
#define MC__TTY_NCURSES_H
+/* for cchar_t, getcchar(), setcchar() */
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED
+#endif
+
#ifdef USE_NCURSES
#ifdef HAVE_NCURSES_CURSES_H
#include <ncurses/curses.h>
@@ -25,6 +30,11 @@
#define NCURSES_CONST const
#endif
+/* do not draw shadows if NCurses is built with --disable-widec */
+#if defined(NCURSES_WIDECHAR) && NCURSES_WIDECHAR
+#define ENABLE_SHADOWS 1
+#endif
+
/*** typedefs(not structures) and defined constants **********************************************/
/*** enums ***************************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-slang.c
^
|
@@ -2,7 +2,7 @@
Interface to the terminal controlling library.
Slang wrapper.
- Copyright (C) 2005-2020
+ Copyright (C) 2005-2022
Free Software Foundation, Inc.
Written by:
@@ -310,7 +310,7 @@
tty_reset_prog_mode ();
load_terminfo_keys ();
- SLtt_Blink_Mode = (tty_use_256colors () || tty_use_truecolors (NULL)) ? 1 : 0;
+ SLtt_Blink_Mode = (tty_use_256colors (NULL) || tty_use_truecolors (NULL)) ? 1 : 0;
tty_start_interrupt_key ();
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty-slang.h
^
|
@@ -2,11 +2,7 @@
#ifndef MC__TTY_SLANG_H
#define MC__TTY_SLANG_H
-#ifdef HAVE_SLANG_SLANG_H
-#include <slang/slang.h>
-#else
#include <slang.h>
-#endif /* HAVE_SLANG_SLANG_H */
/*** typedefs(not structures) and defined constants **********************************************/
@@ -27,6 +23,8 @@
#define COLS SLtt_Screen_Cols
#define LINES SLtt_Screen_Rows
+#define ENABLE_SHADOWS 1
+
/*** enums ***************************************************************************************/
enum
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty.c
^
|
@@ -1,7 +1,7 @@
/*
Interface to the terminal controlling library.
- Copyright (C) 2005-2020
+ Copyright (C) 2005-2022
Free Software Foundation, Inc.
Written by:
@@ -91,14 +91,22 @@
*
* @param force_xterm Set forced the XTerm type
*
- * @return true if @param force_xterm is true or value of $TERM is one of term*, konsole*
- * rxvt*, Eterm or dtterm
+ * @return true if @param force_xterm is true or value of $TERM is one of following:
+ * term*
+ * konsole*
+ * rxvt*
+ * Eterm
+ * dtterm
+ * alacritty*
+ * foot*
+ * screen*
+ * tmux*
+ * contour*
*/
gboolean
tty_check_term (gboolean force_xterm)
{
const char *termvalue;
- const char *xdisplay;
termvalue = getenv ("TERM");
if (termvalue == NULL || *termvalue == '\0')
@@ -107,16 +115,19 @@
exit (EXIT_FAILURE);
}
- xdisplay = getenv ("DISPLAY");
- if (xdisplay != NULL && *xdisplay == '\0')
- xdisplay = NULL;
-
- return force_xterm || strncmp (termvalue, "xterm", 5) == 0
+ /* *INDENT-OFF* */
+ return force_xterm
+ || strncmp (termvalue, "xterm", 5) == 0
|| strncmp (termvalue, "konsole", 7) == 0
|| strncmp (termvalue, "rxvt", 4) == 0
|| strcmp (termvalue, "Eterm") == 0
|| strcmp (termvalue, "dtterm") == 0
- || (strncmp (termvalue, "screen", 6) == 0 && xdisplay != NULL);
+ || strncmp (termvalue, "alacritty", 9) == 0
+ || strncmp (termvalue, "foot", 4) == 0
+ || strncmp (termvalue, "screen", 6) == 0
+ || strncmp (termvalue, "tmux", 4) == 0
+ || strncmp (termvalue, "contour", 7) == 0;
+ /* *INDENT-ON* */
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/tty.h
^
|
@@ -136,10 +136,11 @@
/* Clear screen */
extern void tty_clear_screen (void);
-extern int mc_tty_normalize_lines_char (const char *);
+extern int mc_tty_normalize_lines_char (const char *str);
extern void tty_enter_ca_mode (void);
extern void tty_exit_ca_mode (void);
/*** inline functions ****************************************************************************/
-#endif /* MC_TTY_H */
+
+#endif /* MC__TTY_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/win.c
^
|
@@ -1,7 +1,7 @@
/*
Terminal management xterm and rxvt support
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/x11conn.c
^
|
@@ -1,7 +1,7 @@
/*
X11 support for the Midnight Commander.
- Copyright (C) 2005-2020
+ Copyright (C) 2005-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/tty/x11conn.h
^
|
@@ -28,11 +28,13 @@
/*** declarations of public functions ************************************************************/
-extern Display *mc_XOpenDisplay (const char *);
-extern int mc_XCloseDisplay (Display *);
+extern Display *mc_XOpenDisplay (const char *displayname);
+extern int mc_XCloseDisplay (Display * display);
-extern Bool mc_XQueryPointer (Display *, Window, Window *, Window *,
- int *, int *, int *, int *, unsigned int *);
+extern Bool mc_XQueryPointer (Display * display, Window win, Window * root_return,
+ Window * child_return, int *root_x_return, int *root_y_return,
+ int *win_x_return, int *win_y_return, unsigned int *mask_return);
/*** inline functions ****************************************************************************/
-#endif
+
+#endif /* MC__X11CONN_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/util.c
^
|
@@ -1,7 +1,7 @@
/*
Various utilities
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -35,12 +35,12 @@
#include <config.h>
#include <ctype.h>
+#include <stddef.h> /* ptrdiff_t */
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -331,7 +331,7 @@
vpath = vfs_path_from_str (path);
secure_path = vfs_path_to_str_flags (vpath, 0, VPF_STRIP_PASSWORD);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
ret = str_trunc (secure_path, trunc_len);
g_free (secure_path);
@@ -829,27 +829,25 @@
return COMPRESSION_NONE;
/* GZIP_MAGIC and OLD_GZIP_MAGIC */
- if (magic[0] == 037 && (magic[1] == 0213 || magic[1] == 0236))
+ if (magic[0] == 0x1F && (magic[1] == 0x8B || magic[1] == 0x9E))
return COMPRESSION_GZIP;
/* PKZIP_MAGIC */
- if (magic[0] == 0120 && magic[1] == 0113 && magic[2] == 003 && magic[3] == 004)
+ if (magic[0] == 'P' && magic[1] == 'K' && magic[2] == 0x03 && magic[3] == 0x04)
{
/* Read compression type */
mc_lseek (fd, 8, SEEK_SET);
if (mc_read (fd, (char *) magic, 2) != 2)
return COMPRESSION_NONE;
- /* Gzip can handle only deflated (8) or stored (0) files */
if ((magic[0] != 8 && magic[0] != 0) || magic[1] != 0)
return COMPRESSION_NONE;
- /* Compatible with gzip */
- return COMPRESSION_GZIP;
+ return COMPRESSION_ZIP;
}
/* PACK_MAGIC and LZH_MAGIC and compress magic */
- if (magic[0] == 037 && (magic[1] == 036 || magic[1] == 0240 || magic[1] == 0235))
+ if (magic[0] == 0x1F && (magic[1] == 0x1E || magic[1] == 0xA0 || magic[1] == 0x9D))
/* Compatible with gzip */
return COMPRESSION_GZIP;
@@ -910,6 +908,8 @@
{
switch (type)
{
+ case COMPRESSION_ZIP:
+ return "/uz" VFS_PATH_URL_DELIMITER;
case COMPRESSION_GZIP:
return "/ugz" VFS_PATH_URL_DELIMITER;
case COMPRESSION_BZIP:
@@ -1384,7 +1384,7 @@
vpath = vfs_path_from_str (backup_path);
mc_unlink (vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
g_free (backup_path);
@@ -1522,7 +1522,7 @@
{
gint64 now;
- now = g_get_real_time ();
+ now = g_get_monotonic_time ();
if (now >= *timestamp && now < *timestamp + delay)
return FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/util.h
^
|
@@ -54,22 +54,30 @@
*/
#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2)))
+/* Difference or zero */
+#define DOZ(a, b) ((a) > (b) ? (a) - (b) : 0)
+
/*** enums ***************************************************************************************/
/* Pathname canonicalization */
+/* *INDENT-OFF* */
typedef enum
{
- CANON_PATH_JOINSLASHES = 1L << 0, /* Multiple '/'s are collapsed to a single '/'. */
- CANON_PATH_REMSLASHDOTS = 1L << 1, /* Leading './'s, '/'s and trailing '/.'s are removed. */
- CANON_PATH_REMDOUBLEDOTS = 1L << 3, /* Non-leading '../'s and trailing '..'s are handled by removing */
- CANON_PATH_GUARDUNC = 1L << 4, /* Detect and preserve UNC paths: //server/... */
- CANON_PATH_ALL = CANON_PATH_JOINSLASHES
- | CANON_PATH_REMSLASHDOTS | CANON_PATH_REMDOUBLEDOTS | CANON_PATH_GUARDUNC
-} CANON_PATH_FLAGS;
+ CANON_PATH_NOCHANGE = 0,
+ CANON_PATH_JOINSLASHES = 1L << 0, /**< Multiple '/'s are collapsed to a single '/' */
+ CANON_PATH_REMSLASHDOTS = 1L << 1, /**< Leading './'s, '/'s and trailing '/.'s are removed */
+ CANON_PATH_REMDOUBLEDOTS = 1L << 3, /**< Non-leading '../'s and trailing '..'s are handled by removing
+ portions of the path */
+ CANON_PATH_GUARDUNC = 1L << 4, /**< Detect and preserve UNC paths: //server/... */
+ CANON_PATH_ALL = CANON_PATH_JOINSLASHES | CANON_PATH_REMSLASHDOTS
+ | CANON_PATH_REMDOUBLEDOTS | CANON_PATH_GUARDUNC /**< All flags */
+} canon_path_flags_t;
+/* *INDENT-ON* */
enum compression_type
{
COMPRESSION_NONE,
+ COMPRESSION_ZIP,
COMPRESSION_GZIP,
COMPRESSION_BZIP,
COMPRESSION_BZIP2,
@@ -87,11 +95,12 @@
int fd;
/* data read from fd */
char buf[MC_PIPE_BUFSIZE];
- /* positive: length of data in buf as before read as after;
- * zero or negative before read: do not read drom fd;
- * MC_PIPE_STREAM_EOF after read: EOF of fd;
- * MC_PIPE_STREAM_UNREAD after read: there was not read from fd;
- * MC_PIPE_ERROR_READ after read: reading error from fd.
+ /* current position in @buf (used by mc_pstream_get_string()) */
+ size_t pos;
+ /* positive: length of data in buf;
+ * MC_PIPE_STREAM_EOF: EOF of fd;
+ * MC_PIPE_STREAM_UNREAD: there was not read from fd;
+ * MC_PIPE_ERROR_READ: reading error from fd.
*/
ssize_t len;
/* whether buf is null-terminated or not */
@@ -117,8 +126,7 @@
typedef struct
{
/* File attributes */
- size_t fnamelen;
- char *fname;
+ GString *fname;
struct stat st;
/* key used for comparing names */
char *sort_key;
@@ -207,35 +215,32 @@
/* Returns a copy of *s until a \n is found and is below top */
const char *extract_line (const char *s, const char *top);
-/* Error pipes */
-void open_error_pipe (void);
-void check_error_pipe (void);
-int close_error_pipe (int error, const char *text);
-
/* Process spawning */
int my_system (int flags, const char *shell, const char *command);
int my_systeml (int flags, const char *shell, ...);
int my_systemv (const char *command, char *const argv[]);
int my_systemv_flags (int flags, const char *command, char *const argv[]);
-mc_pipe_t *mc_popen (const char *command, GError ** error);
+mc_pipe_t *mc_popen (const char *command, gboolean read_out, gboolean read_err, GError ** error);
void mc_pread (mc_pipe_t * p, GError ** error);
void mc_pclose (mc_pipe_t * p, GError ** error);
+GString *mc_pstream_get_string (mc_pipe_stream_t * ps);
+
void my_exit (int status);
void save_stop_handler (void);
/* Tilde expansion */
-char *tilde_expand (const char *);
+char *tilde_expand (const char *directory);
-void custom_canonicalize_pathname (char *, CANON_PATH_FLAGS);
-void canonicalize_pathname (char *);
+void canonicalize_pathname_custom (char *path, canon_path_flags_t flags);
+void canonicalize_pathname (char *path);
char *mc_realpath (const char *path, char *resolved_path);
/* Looks for "magic" bytes at the start of the VFS file to guess the
* compression type. Side effect: modifies the file position. */
-enum compression_type get_compression_type (int fd, const char *);
+enum compression_type get_compression_type (int fd, const char *name);
const char *decompress_extension (int type);
GList *list_append_unique (GList * list, char *text);
@@ -256,9 +261,9 @@
#undef Q_
const char *Q_ (const char *s);
-gboolean mc_util_make_backup_if_possible (const char *, const char *);
-gboolean mc_util_restore_from_backup_if_possible (const char *, const char *);
-gboolean mc_util_unlink_backup_if_possible (const char *, const char *);
+gboolean mc_util_make_backup_if_possible (const char *file_name, const char *backup_suffix);
+gboolean mc_util_restore_from_backup_if_possible (const char *file_name, const char *backup_suffix);
+gboolean mc_util_unlink_backup_if_possible (const char *file_name, const char *backup_suffix);
char *guess_message_value (void);
@@ -285,7 +290,7 @@
static inline gboolean
is_exe (mode_t mode)
{
- return (gboolean) ((S_IXUSR & mode) || (S_IXGRP & mode) || (S_IXOTH & mode));
+ return ((mode & (S_IXUSR | S_IXGRP | S_IXOTH)) != 0);
}
#endif /* MC_UTIL_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/utilunix.c
^
|
@@ -1,7 +1,7 @@
/*
Various utilities - Unix variants
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -10,6 +10,7 @@
Dugan Porter, 1994, 1995, 1996
Jakub Jelinek, 1994, 1995, 1996
Mauricio Plaza, 1994, 1995, 1996
+ Andrew Borodin <aborodin@vmail.ru> 2010-2022
The mc_realpath routine is mostly from uClibc package, written
by Rick Sladkey <jrs@world.std.com>
@@ -53,12 +54,6 @@
#include <sys/select.h>
#endif
#include <sys/wait.h>
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef HAVE_GET_PROCESS_STATS
-#include <sys/procstats.h>
-#endif
#include <pwd.h>
#include <grp.h>
@@ -86,10 +81,6 @@
#define UID_CACHE_SIZE 200
#define GID_CACHE_SIZE 30
-/* Pipes are guaranteed to be able to hold at least 4096 bytes */
-/* More than that would be unportable */
-#define MAX_PIPE_SIZE 4096
-
/*** file scope type declarations ****************************************************************/
typedef struct
@@ -117,9 +108,6 @@
static int_cache uid_cache[UID_CACHE_SIZE];
static int_cache gid_cache[GID_CACHE_SIZE];
-static int error_pipe[2]; /* File descriptors of error pipe */
-static int old_error; /* File descriptor of old standard error */
-
/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -277,6 +265,8 @@
if (ps->null_term)
ps->buf[(size_t) ps->len] = '\0';
}
+
+ ps->pos = 0;
}
/* --------------------------------------------------------------------------------------------- */
@@ -503,13 +493,15 @@
* Create pipe and run child process.
*
* @parameter command command line of child process
+ * @parameter read_out do or don't read the stdout of child process
+ * @parameter read_err do or don't read the stderr of child process
* @paremeter error contains pointer to object to handle error code and message
*
* @return newly created object of mc_pipe_t class in success, NULL otherwise
*/
mc_pipe_t *
-mc_popen (const char *command, GError ** error)
+mc_popen (const char *command, gboolean read_out, gboolean read_err, GError ** error)
{
mc_pipe_t *p;
const char *const argv[] = { "/bin/sh", "sh", "-c", command, NULL };
@@ -522,9 +514,13 @@
goto ret_err;
}
+ p->out.fd = -1;
+ p->err.fd = -1;
+
if (!g_spawn_async_with_pipes
- (NULL, (gchar **) argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_FILE_AND_ARGV_ZERO,
- NULL, NULL, &p->child_pid, NULL, &p->out.fd, &p->err.fd, error))
+ (NULL, (gchar **) argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_FILE_AND_ARGV_ZERO, NULL,
+ NULL, &p->child_pid, NULL, read_out ? &p->out.fd : NULL, read_err ? &p->err.fd : NULL,
+ error))
{
mc_replace_error (error, MC_PIPE_ERROR_CREATE_PIPE_STREAM, "%s",
_("Cannot create pipe streams"));
@@ -553,9 +549,9 @@
* @parameter p pipe descriptor
*
* The lengths of read data contain in p->out.len and p->err.len.
- * Before read, p->xxx.len is an input:
- * p->xxx.len > 0: do read stream p->xxx and store data in p->xxx.buf;
- * p->xxx.len <= 0: do not read stream p->xxx.
+ *
+ * Before read, p->xxx.len is an input. It defines the number of data to read.
+ * Should not be greater than MC_PIPE_BUFSIZE.
*
* After read, p->xxx.len is an output and contains the following:
* p->xxx.len > 0: an actual length of read data stored in p->xxx.buf;
@@ -577,8 +573,8 @@
if (error != NULL)
*error = NULL;
- read_out = p->out.fd >= 0 && p->out.len > 0;
- read_err = p->err.fd >= 0 && p->err.len > 0;
+ read_out = p->out.fd >= 0;
+ read_err = p->err.fd >= 0;
if (!read_out && !read_err)
{
@@ -624,6 +620,50 @@
/* --------------------------------------------------------------------------------------------- */
/**
+ * Reads a line from @stream. Reading stops after an EOL or a newline. If a newline is read,
+ * it is appended to the line.
+ *
+ * @stream mc_pipe_stream_t object
+ *
+ * @return newly created GString or NULL in case of EOL;
+ */
+
+GString *
+mc_pstream_get_string (mc_pipe_stream_t * ps)
+{
+ char *s;
+ size_t size, i;
+ gboolean escape = FALSE;
+
+ g_return_val_if_fail (ps != NULL, NULL);
+
+ if (ps->len < 0)
+ return NULL;
+
+ size = ps->len - ps->pos;
+
+ if (size == 0)
+ return NULL;
+
+ s = ps->buf + ps->pos;
+
+ if (s[0] == '\0')
+ return NULL;
+
+ /* find '\0' or unescaped '\n' */
+ for (i = 0; i < size && !(s[i] == '\0' || (s[i] == '\n' && !escape)); i++)
+ escape = s[i] == '\\' ? !escape : FALSE;
+
+ if (i != size && s[i] == '\n')
+ i++;
+
+ ps->pos += i;
+
+ return g_string_new_len (s, i);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
* Close pipe and destroy pipe descriptor.
*
* @paremeter p pipe descriptor
@@ -635,6 +675,13 @@
{
int res;
+ if (p == NULL)
+ {
+ mc_replace_error (error, MC_PIPE_ERROR_READ, "%s",
+ _("Cannot close pipe descriptor (p == NULL)"));
+ return;
+ }
+
if (p->out.fd >= 0)
res = close (p->out.fd);
if (p->err.fd >= 0)
@@ -707,133 +754,19 @@
/* --------------------------------------------------------------------------------------------- */
/**
- * Creates a pipe to hold standard error for a later analysis.
- * The pipe can hold 4096 bytes. Make sure no more is written
- * or a deadlock might occur.
- */
-
-void
-open_error_pipe (void)
-{
- int error_fd = -1;
-
- if (pipe (error_pipe) < 0)
- message (D_NORMAL, _("Warning"), _("Pipe failed"));
-
- old_error = dup (STDERR_FILENO);
- if (old_error < 0 || close (STDERR_FILENO) != 0
- || (error_fd = dup (error_pipe[1])) != STDERR_FILENO)
- {
- message (D_NORMAL, _("Warning"), _("Dup failed"));
-
- close (error_pipe[0]);
- error_pipe[0] = -1;
- }
- else
- {
- /*
- * Settng stderr in nonblocking mode as we close it earlier, than
- * program stops. We try to read some error at program startup,
- * but we should not block on it.
- *
- * TODO: make piped stdin/stderr poll()/select()able to get rid
- * of following hack.
- */
- int fd_flags;
-
- fd_flags = fcntl (error_pipe[0], F_GETFL, NULL);
- if (fd_flags != -1)
- {
- fd_flags |= O_NONBLOCK;
-
- if (fcntl (error_pipe[0], F_SETFL, fd_flags) == -1)
- {
- /* TODO: handle it somehow */
- }
- }
- }
- if (error_fd >= 0)
- close (error_fd);
- /* we never write there */
- close (error_pipe[1]);
- error_pipe[1] = -1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Close a pipe
+ * Canonicalize path.
*
- * @param error '-1' - ignore errors, '0' - display warning, '1' - display error
- * @param text is prepended to the error message from the pipe
+ * @param path path to file
+ * @param flags canonicalization flags
*
- * @return not 0 if an error was displayed
- */
-
-int
-close_error_pipe (int error, const char *text)
-{
- const char *title;
- char msg[MAX_PIPE_SIZE];
- int len = 0;
-
- /* already closed */
- if (error_pipe[0] == -1)
- return 0;
-
- if (error < 0 || (error > 0 && (error & D_ERROR) != 0))
- title = MSG_ERROR;
- else
- title = _("Warning");
- if (old_error >= 0)
- {
- if (dup2 (old_error, STDERR_FILENO) == -1)
- {
- if (error < 0)
- error = D_ERROR;
-
- message (error, MSG_ERROR, _("Error dup'ing old error pipe"));
- return 1;
- }
- close (old_error);
- len = read (error_pipe[0], msg, sizeof (msg) - 1);
-
- if (len >= 0)
- msg[len] = 0;
- close (error_pipe[0]);
- error_pipe[0] = -1;
- }
- if (error < 0)
- return 0; /* Just ignore error message */
- if (text == NULL)
- {
- if (len <= 0)
- return 0; /* Nothing to show */
-
- /* Show message from pipe */
- message (error, title, "%s", msg);
- }
- else
- {
- /* Show given text and possible message from pipe */
- message (error, title, "%s\n%s", text, msg);
- }
- return 1;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Canonicalize path, and return a new path. Do everything in place.
- * The new path differs from path in:
- * Multiple '/'s are collapsed to a single '/'.
- * Leading './'s and trailing '/.'s are removed.
- * Trailing '/'s are removed.
- * Non-leading '../'s and trailing '..'s are handled by removing
- * portions of the path.
+ * @return a new path
+ *
+ * All modifications of @path are made in place.
* Well formed UNC paths are modified only in the local part.
*/
void
-custom_canonicalize_pathname (char *path, CANON_PATH_FLAGS flags)
+canonicalize_pathname_custom (char *path, canon_path_flags_t flags)
{
char *p, *s;
char *lpath = path; /* path without leading UNC part */
@@ -1054,24 +987,23 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * Canonicalize path with CANON_PATH_ALL.
+ *
+ * @param path path to file
+ * @param flags canonicalization flags
+ *
+ * @return a new path
+ *
+ * All modifications of @path are made in place.
+ * Well formed UNC paths are modified only in the local part.
+ */
void
canonicalize_pathname (char *path)
{
- custom_canonicalize_pathname (path, CANON_PATH_ALL);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#ifdef HAVE_GET_PROCESS_STATS
-int
-gettimeofday (struct timeval *tp, void *tzp)
-{
- (void) tzp;
-
- return get_process_stats (tp, PS_SELF, 0, 0);
+ canonicalize_pathname_custom (path, CANON_PATH_ALL);
}
-#endif /* HAVE_GET_PROCESS_STATS */
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/HACKING
^
|
@@ -27,7 +27,7 @@
===========================
VFS code it to a certain extent object oriented. The code dealing with
-a certain type of data (e.g. tar archives of SMB shares) can be thought
+a certain type of data (e.g. tar archives) can be thought
of as a class in the terms of object oriented programming. They may
reuse some code from their parent classes. For instance, tar and cpio
archives have a common parent class direntry, which contains some common
@@ -63,7 +63,6 @@
|
|---- extfs ---- extfs archives
|---- localfs ---- sfs ---- sfs archives
- |---- smbfs
|---- undelfs
@@ -80,7 +79,6 @@
extfs no no yes yes
localfs no no N/A N/A
sfs no yes yes N/A
-smbfs no yes no no
undelfs no yes no yes
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/direntry.c
^
|
@@ -1,12 +1,13 @@
/*
Directory cache support
- Copyright (C) 1998-2020
+ Copyright (C) 1998-2022
Free Software Foundation, Inc.
Written by:
Pavel Machek <pavel@ucw.cz>, 1998
- Slava Zanko <slavazanko@gmail.com>, 2013
+ Slava Zanko <slavazanko@gmail.com>, 2010-2013
+ Andrew Borodin <aborodin@vmail.ru> 2010-2022
This file is part of the Midnight Commander.
@@ -69,7 +70,7 @@
#include "lib/global.h"
#include "lib/tty/tty.h" /* enable/disable interrupt key */
-#include "lib/util.h" /* custom_canonicalize_pathname() */
+#include "lib/util.h" /* canonicalize_pathname_custom() */
#if 0
#include "lib/widget.h" /* message() */
#endif
@@ -181,7 +182,7 @@
char *path = pathref;
/* canonicalize as well, but don't remove '../' from path */
- custom_canonicalize_pathname (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS));
+ canonicalize_pathname_custom (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS));
while (root != NULL)
{
@@ -245,7 +246,7 @@
vfs_die ("We have to use _real_ root. Always. Sorry.");
/* canonicalize as well, but don't remove '../' from path */
- custom_canonicalize_pathname (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS));
+ canonicalize_pathname_custom (path, CANON_PATH_ALL & (~CANON_PATH_REMDOUBLEDOTS));
if ((flags & FL_DIR) == 0)
{
@@ -870,7 +871,7 @@
return 0;
}
- tim = g_get_real_time ();
+ tim = g_get_monotonic_time ();
return (tim < ino->timestamp);
}
@@ -1154,7 +1155,7 @@
}
ret:
- vfs_path_free (vpath_archive);
+ vfs_path_free (vpath_archive, TRUE);
return super;
}
@@ -1205,7 +1206,7 @@
vfs_path_remove_element_by_index (vpath_archive, -1);
result = subclass->open_archive (super, vpath_archive, path_element);
- vfs_path_free (vpath_archive);
+ vfs_path_free (vpath_archive, TRUE);
}
if (result == -1)
{
@@ -1326,15 +1327,12 @@
return NULL;
dirname = g_path_get_dirname (q);
- name = g_path_get_basename (q);
dir = vfs_s_find_inode (path_element->class, super, dirname, LINK_FOLLOW, FL_DIR);
+ g_free (dirname);
if (dir == NULL)
- {
- g_free (dirname);
- g_free (name);
return NULL;
- }
+ name = g_path_get_basename (q);
ent = vfs_s_generate_entry (path_element->class, name, dir, 0755);
ino = ent->ino;
vfs_s_insert_entry (path_element->class, dir, ent);
@@ -1344,18 +1342,16 @@
vfs_path_t *tmp_vpath;
tmp_handle = vfs_mkstemps (&tmp_vpath, path_element->class->name, name);
- ino->localname = g_strdup (vfs_path_as_str (tmp_vpath));
- vfs_path_free (tmp_vpath);
+ ino->localname = vfs_path_free (tmp_vpath, FALSE);
if (tmp_handle == -1)
{
- g_free (dirname);
g_free (name);
return NULL;
}
close (tmp_handle);
}
- g_free (dirname);
+
g_free (name);
was_changed = TRUE;
}
@@ -1447,8 +1443,7 @@
return (-1);
handle = vfs_mkstemps (&tmp_vpath, me->name, ino->ent->name);
- ino->localname = g_strdup (vfs_path_as_str (tmp_vpath));
- vfs_path_free (tmp_vpath);
+ ino->localname = vfs_path_free (tmp_vpath, FALSE);
if (handle == -1)
{
me->verrno = errno;
@@ -1725,18 +1720,18 @@
{
struct vfs_s_entry *entry = VFS_ENTRY (iter->data);
- if ((size_t) entry->ino->data_offset > final_num_spaces)
+ if ((size_t) entry->leading_spaces > final_num_spaces)
{
char *source_name, *spacer;
source_name = entry->name;
- spacer = g_strnfill (entry->ino->data_offset - final_num_spaces, ' ');
+ spacer = g_strnfill ((size_t) entry->leading_spaces - final_num_spaces, ' ');
entry->name = g_strconcat (spacer, source_name, (char *) NULL);
g_free (spacer);
g_free (source_name);
}
- entry->ino->data_offset = -1;
+ entry->leading_spaces = -1;
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/gc.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System garbage collection code
- Copyright (C) 2003-2020
+ Copyright (C) 2003-2022
Free Software Foundation, Inc.
Written by:
@@ -129,7 +129,7 @@
stamp = g_new (struct vfs_stamping, 1);
stamp->v = v;
stamp->id = id;
- stamp->time = g_get_real_time ();
+ stamp->time = g_get_monotonic_time ();
stamps = g_slist_append (stamps, stamp);
}
@@ -152,7 +152,7 @@
stamp = g_slist_find_custom (stamps, &what, vfs_stamp_compare);
if (stamp != NULL && stamp->data != NULL)
{
- VFS_STAMPING (stamp->data)->time = g_get_real_time ();
+ VFS_STAMPING (stamp->data)->time = g_get_monotonic_time ();
ret = TRUE;
}
@@ -247,7 +247,7 @@
return;
locked = TRUE;
- curr_time = g_get_real_time ();
+ curr_time = g_get_monotonic_time ();
exp_time = curr_time - vfs_timeout * G_USEC_PER_SEC;
if (now)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/interface.c
^
|
@@ -1,11 +1,12 @@
/*
Virtual File System: interface functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2011, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2011-2022
This file is part of the Midnight Commander.
@@ -115,7 +116,7 @@
return tmp_vpath;
fail:
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
if (fdout != -1)
close (fdout);
if (fdin != -1)
@@ -219,7 +220,7 @@
result = vfs_new_handle (path_element->class, info);
}
else
- errno = -EOPNOTSUPP;
+ errno = ENOTSUP;
return result;
}
@@ -243,7 +244,7 @@
\
result = path_element->class->name != NULL ? path_element->class->name callarg : -1; \
if (result == -1) \
- errno = path_element->class->name != NULL ? vfs_ferrno (path_element->class) : E_NOTSUPP; \
+ errno = path_element->class->name != NULL ? vfs_ferrno (path_element->class) : ENOTSUP; \
return result; \
}
@@ -279,7 +280,7 @@
if (result == -1)
errno =
path_element->class->symlink != NULL ?
- vfs_ferrno (path_element->class) : E_NOTSUPP;
+ vfs_ferrno (path_element->class) : ENOTSUP;
}
}
return result;
@@ -305,7 +306,7 @@
\
result = vfs->name != NULL ? vfs->name (fsinfo, buf, count) : -1; \
if (result == -1) \
- errno = vfs->name != NULL ? vfs_ferrno (vfs) : E_NOTSUPP; \
+ errno = vfs->name != NULL ? vfs_ferrno (vfs) : ENOTSUP; \
return result; \
}
@@ -341,7 +342,7 @@
result = path_element1->class->name != NULL \
? path_element1->class->name (vpath1, vpath2) : -1; \
if (result == -1) \
- errno = path_element1->class->name != NULL ? vfs_ferrno (path_element1->class) : E_NOTSUPP; \
+ errno = path_element1->class->name != NULL ? vfs_ferrno (path_element1->class) : ENOTSUP; \
return result; \
}
@@ -427,14 +428,14 @@
path_element = (vfs_path_element_t *) vfs_path_get_by_index (vpath, -1);
if (!vfs_path_element_valid (path_element))
{
- errno = E_NOTSUPP;
+ errno = ENOTSUP;
return NULL;
}
info = path_element->class->opendir ? path_element->class->opendir (vpath) : NULL;
if (info == NULL)
{
- errno = path_element->class->opendir ? vfs_ferrno (path_element->class) : E_NOTSUPP;
+ errno = path_element->class->opendir ? vfs_ferrno (path_element->class) : ENOTSUP;
return NULL;
}
@@ -494,7 +495,7 @@
vfs_dirent_free (entry);
}
if (entry == NULL)
- errno = vfs->readdir ? vfs_ferrno (vfs) : E_NOTSUPP;
+ errno = vfs->readdir ? vfs_ferrno (vfs) : ENOTSUP;
return (entry != NULL) ? mc_readdir_result : NULL;
}
@@ -550,7 +551,7 @@
{
result = path_element->class->stat ? path_element->class->stat (vpath, buf) : -1;
if (result == -1)
- errno = path_element->class->name ? vfs_ferrno (path_element->class) : E_NOTSUPP;
+ errno = path_element->class->name ? vfs_ferrno (path_element->class) : ENOTSUP;
}
return result;
@@ -572,7 +573,7 @@
{
result = path_element->class->lstat ? path_element->class->lstat (vpath, buf) : -1;
if (result == -1)
- errno = path_element->class->name ? vfs_ferrno (path_element->class) : E_NOTSUPP;
+ errno = path_element->class->name ? vfs_ferrno (path_element->class) : ENOTSUP;
}
return result;
@@ -596,7 +597,7 @@
result = vfs->fstat ? vfs->fstat (fsinfo, buf) : -1;
if (result == -1)
- errno = vfs->fstat ? vfs_ferrno (vfs) : E_NOTSUPP;
+ errno = vfs->fstat ? vfs_ferrno (vfs) : ENOTSUP;
return result;
}
@@ -648,7 +649,8 @@
/**
* VFS chdir.
*
- * @param vpath VFS-path
+ * @param vpath VFS path.
+ * May be NULL. In this case NULL is returned and errno set to 0.
*
* @return 0 on success, -1 on failure.
*/
@@ -663,7 +665,10 @@
vfs_path_t *cd_vpath;
if (vpath == NULL)
+ {
+ errno = 0;
return (-1);
+ }
if (vpath->relative)
cd_vpath = vfs_path_to_absolute (vpath);
@@ -671,9 +676,17 @@
cd_vpath = vfs_path_clone (vpath);
path_element = vfs_path_get_by_index (cd_vpath, -1);
- if (!vfs_path_element_valid (path_element) || path_element->class->chdir == NULL)
+ if (!vfs_path_element_valid (path_element))
+ {
+ errno = EINVAL;
goto error_end;
+ }
+ if (path_element->class->chdir == NULL)
+ {
+ errno = ENOTSUP;
+ goto error_end;
+ }
result = path_element->class->chdir (cd_vpath);
if (result == -1)
@@ -723,7 +736,7 @@
return 0;
error_end:
- vfs_path_free (cd_vpath);
+ vfs_path_free (cd_vpath, TRUE);
return (-1);
}
@@ -745,7 +758,7 @@
result = vfs->lseek ? vfs->lseek (fsinfo, offset, whence) : -1;
if (result == -1)
- errno = vfs->lseek ? vfs_ferrno (vfs) : E_NOTSUPP;
+ errno = vfs->lseek ? vfs_ferrno (vfs) : ENOTSUP;
return result;
}
@@ -818,9 +831,13 @@
st.st_uid == getuid () && (st.st_mode & 0777) == 0700)
return tmpdir;
- sys_tmp = getenv ("TMPDIR");
+ sys_tmp = getenv ("MC_TMPDIR");
if (sys_tmp == NULL || !IS_PATH_SEP (sys_tmp[0]))
- sys_tmp = TMPDIR_DEFAULT;
+ {
+ sys_tmp = getenv ("TMPDIR");
+ if (sys_tmp == NULL || !IS_PATH_SEP (sys_tmp[0]))
+ sys_tmp = TMPDIR_DEFAULT;
+ }
pwd = getpwuid (getuid ());
if (pwd != NULL)
@@ -890,7 +907,7 @@
g_snprintf (buffer, sizeof (buffer), "%s", "/dev/null/");
}
- vfs_path_free (test_vpath);
+ vfs_path_free (test_vpath, TRUE);
fprintf (stderr, "%s\n", _("Press any key to continue..."));
getc (stdin);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/netutil.c
^
|
@@ -1,7 +1,7 @@
/*
Network utilities for the Midnight Commander Virtual File System.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/parse_ls_vga.c
^
|
@@ -1,7 +1,7 @@
/*
Routines for parsing output from the 'ls' command.
- Copyright (C) 1988-2020
+ Copyright (C) 1988-2022
Free Software Foundation, Inc.
Copyright (C) 1995, 1996 Miguel de Icaza
@@ -115,27 +115,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-static gboolean
-is_month (const char *str, struct tm *tim)
-{
- static const char *month = "JanFebMarAprMayJunJulAugSepOctNovDec";
- const char *pos;
-
- if (str == NULL)
- return FALSE;
-
- pos = strstr (month, str);
- if (pos == NULL)
- return FALSE;
-
- if (tim != NULL)
- tim->tm_mon = (pos - month) / 3;
-
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
/**
* Check for possible locale's abbreviated month name (Jan..Dec).
* Any 3 bytes long string without digit, control and punctuation characters.
@@ -282,8 +261,9 @@
}
*ret_type = type;
- *ret_skipped = 1;
+ if (ret_skipped != NULL)
+ *ret_skipped = 1;
return TRUE;
}
@@ -419,7 +399,8 @@
/* ACLs on Solaris, HP-UX and others */
p++;
- *ret_skipped = p - s;
+ if (ret_skipped != NULL)
+ *ret_skipped = p - s;
*ret_perms = perms;
return TRUE;
@@ -510,6 +491,27 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+gboolean
+vfs_parse_month (const char *str, struct tm * tim)
+{
+ static const char *month = "JanFebMarAprMayJunJulAugSepOctNovDec";
+ const char *pos;
+
+ if (str == NULL)
+ return FALSE;
+
+ pos = strstr (month, str);
+ if (pos == NULL)
+ return FALSE;
+
+ if (tim != NULL)
+ tim->tm_mon = (pos - month) / 3;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
/** This function parses from idx in the columns[] array */
int
@@ -568,7 +570,7 @@
*/
/* Month name */
- if (is_month (p, &tim))
+ if (vfs_parse_month (p, &tim))
{
/* And we expect, it followed by day number */
if (!is_num (idx))
@@ -732,7 +734,7 @@
/* Mhm, the ls -lg did not produce a group field */
for (idx = 3; idx <= 5; idx++)
- if (is_month (columns[idx], NULL) || is_week (columns[idx], NULL)
+ if (vfs_parse_month (columns[idx], NULL) || is_week (columns[idx], NULL)
|| is_dos_date (columns[idx]) || is_localized_month (columns[idx]))
break;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/path.c
^
|
@@ -1,12 +1,12 @@
/*
Virtual File System path handlers
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2011, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -34,6 +34,8 @@
#include <config.h>
+#include <errno.h>
+
#include "lib/global.h"
#include "lib/strutil.h"
#include "lib/util.h" /* mc_build_filename() */
@@ -815,23 +817,36 @@
/*
* Get one path element by index.
*
- * @param vpath pointer to vfs_path_t object
- * @param element_index element index. May have negative value (in this case count was started at the end of list).
+ * @param vpath pointer to vfs_path_t object.
+ * May be NULL. In this case NULL is returned and errno set to 0.
+ * @param element_index element index. May have negative value (in this case count was started at
+ * the end of list). If @element_index is out of range, NULL is returned and
+ * errno set to EINVAL.
*
- * @return path element.
+ * @return path element
*/
const vfs_path_element_t *
vfs_path_get_by_index (const vfs_path_t * vpath, int element_index)
{
+ int n;
+
if (vpath == NULL)
+ {
+ errno = 0;
return NULL;
+ }
- if (element_index < 0)
- element_index += vfs_path_elements_count (vpath);
+ n = vfs_path_elements_count (vpath);
if (element_index < 0)
- vfs_die ("vfs_path_get_by_index: incorrect index!");
+ element_index += n;
+
+ if (element_index < 0 || element_index > n)
+ {
+ errno = EINVAL;
+ return NULL;
+ }
return g_array_index (vpath->path, vfs_path_element_t *, element_index);
}
@@ -939,16 +954,19 @@
* Free vfs_path_t object.
*
* @param vpath pointer to vfs_path_t object
+ * @param free_str if TRUE the string representation of vpath is freed as well
*
+ * @return the string representation of vpath (i.e. NULL if free_str is TRUE)
*/
-void
-vfs_path_free (vfs_path_t * vpath)
+char *
+vfs_path_free (vfs_path_t * vpath, gboolean free_str)
{
int vpath_element_index;
+ char *ret;
if (vpath == NULL)
- return;
+ return NULL;
for (vpath_element_index = 0; vpath_element_index < vfs_path_elements_count (vpath);
vpath_element_index++)
@@ -960,8 +978,18 @@
}
g_array_free (vpath->path, TRUE);
- g_free (vpath->str);
+
+ if (!free_str)
+ ret = vpath->str;
+ else
+ {
+ g_free (vpath->str);
+ ret = NULL;
+ }
+
g_free (vpath);
+
+ return ret;
}
/* --------------------------------------------------------------------------------------------- */
@@ -1167,7 +1195,7 @@
eclass = vfs_get_class_by_name (cfg_value);
if (eclass == NULL)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
g_set_error (mcerror, MC_ERROR, 0, "Unable to find VFS class by name '%s'", cfg_value);
g_free (cfg_value);
mc_config_deinit (cpath);
@@ -1198,7 +1226,7 @@
mc_config_deinit (cpath);
if (vfs_path_elements_count (vpath) == 0)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
g_set_error (mcerror, MC_ERROR, 0, "No any path elements found");
return NULL;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/path.h
^
|
@@ -60,7 +60,7 @@
vfs_path_t *vfs_path_new (void);
vfs_path_t *vfs_path_clone (const vfs_path_t * vpath);
void vfs_path_remove_element_by_index (vfs_path_t * vpath, int element_index);
-void vfs_path_free (vfs_path_t * path);
+char *vfs_path_free (vfs_path_t * path, gboolean free_str);
int vfs_path_elements_count (const vfs_path_t * path);
char *vfs_path_to_str_elements_count (const vfs_path_t * path, int elements_count);
@@ -70,7 +70,7 @@
vfs_path_t *vfs_path_build_filename (const char *first_element, ...);
vfs_path_t *vfs_path_append_new (const vfs_path_t * vpath, const char *first_element, ...);
vfs_path_t *vfs_path_append_vpath_new (const vfs_path_t * first_vpath, ...);
-size_t vfs_path_tokens_count (const vfs_path_t *);
+size_t vfs_path_tokens_count (const vfs_path_t * vpath);
char *vfs_path_tokens_get (const vfs_path_t * vpath, ssize_t start_position, ssize_t length);
vfs_path_t *vfs_path_vtokens_get (const vfs_path_t * vpath, ssize_t start_position, ssize_t length);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/utilvfs.c
^
|
@@ -1,7 +1,7 @@
/*
Utilities for VFS modules.
- Copyright (C) 1988-2020
+ Copyright (C) 1988-2022
Free Software Foundation, Inc.
Copyright (C) 1995, 1996 Miguel de Icaza
@@ -108,8 +108,12 @@
static int saveuid = GUID_DEFAULT_CONST;
static char saveuname[TUNMLEN] = "\0";
+ size_t uname_len;
+
+ uname_len = strlen (uname);
+
if (uname[0] != saveuname[0] /* Quick test w/o proc call */
- || 0 != strncmp (uname, saveuname, TUNMLEN))
+ || strncmp (uname, saveuname, MIN (uname_len, TUNMLEN - 1)) != 0)
{
struct passwd *pw;
@@ -140,13 +144,16 @@
static int savegid = GUID_DEFAULT_CONST;
static char savegname[TGNMLEN] = "\0";
+ size_t gname_len;
+
+ gname_len = strlen (gname);
if (gname[0] != savegname[0] /* Quick test w/o proc call */
- || 0 != strncmp (gname, savegname, TUNMLEN))
+ || strncmp (gname, savegname, MIN (gname_len, TGNMLEN - 1)) != 0)
{
struct group *gr;
- g_strlcpy (savegname, gname, TUNMLEN);
+ g_strlcpy (savegname, gname, TGNMLEN);
gr = getgrnam (gname);
if (gr)
{
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/utilvfs.h
^
|
@@ -57,6 +57,7 @@
gboolean vfs_parse_ls_lga (const char *p, struct stat *s, char **filename, char **linkname,
size_t * filename_pos);
size_t vfs_parse_ls_lga_get_final_spaces (void);
+gboolean vfs_parse_month (const char *str, struct tm *tim);
int vfs_parse_filedate (int idx, time_t * t);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/vfs.c
^
|
@@ -1,13 +1,14 @@
/*
Virtual File System switch code
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by: 1995 Miguel de Icaza
Jakub Jelinek, 1995
Pavel Machek, 1998
- Slava Zanko <slavazanko@gmail.com>, 2013
+ Slava Zanko <slavazanko@gmail.com>, 2011-2013
+ Andrew Borodin <aborodin@vmail.ru>, 2011-2022
This file is part of the Midnight Commander.
@@ -429,7 +430,7 @@
void
vfs_set_raw_current_dir (const vfs_path_t * vpath)
{
- vfs_path_free (current_path);
+ vfs_path_free (current_path, TRUE);
current_path = (vfs_path_t *) vpath;
}
@@ -653,7 +654,7 @@
if (vfs_test_current_dir (tmp_vpath))
vfs_set_raw_current_dir (tmp_vpath);
else
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
}
@@ -673,7 +674,7 @@
if (!vfs_test_current_dir (tmp_vpath))
vfs_set_raw_current_dir (tmp_vpath);
else
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
}
}
@@ -746,7 +747,7 @@
dest_class = vfs_class_find_by_handle (dest_vfs_fd, &dest_fd);
if ((dest_class->flags & VFSF_LOCAL) == 0)
{
- errno = EOPNOTSUPP;
+ errno = ENOTSUP;
return (-1);
}
if (dest_fd == NULL)
@@ -758,7 +759,7 @@
src_class = vfs_class_find_by_handle (src_vfs_fd, &src_fd);
if ((src_class->flags & VFSF_LOCAL) == 0)
{
- errno = EOPNOTSUPP;
+ errno = ENOTSUP;
return (-1);
}
if (src_fd == NULL)
@@ -771,7 +772,7 @@
#else
(void) dest_vfs_fd;
(void) src_vfs_fd;
- errno = EOPNOTSUPP;
+ errno = ENOTSUP;
return (-1);
#endif
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/vfs.h
^
|
@@ -27,10 +27,6 @@
#define VFS_CLASS(a) ((struct vfs_class *) (a))
-#if defined (ENABLE_VFS_FTP) || defined (ENABLE_VFS_FISH) || defined (ENABLE_VFS_SMB)
-#define ENABLE_VFS_NET 1
-#endif
-
/**
* This is the type of callback function passed to vfs_fill_names.
* It gets the name of the virtual file system as its first argument.
@@ -72,12 +68,6 @@
/* And now some defines for our errors. */
-#ifdef ENOSYS
-#define E_NOTSUPP ENOSYS /* for use in vfs when module does not provide function */
-#else
-#define E_NOTSUPP EFAULT /* Does this happen? */
-#endif
-
#ifdef ENOMSG
#define E_UNKNOWN ENOMSG /* if we do not know what error happened */
#else
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/vfs/xdirentry.h
^
|
@@ -37,6 +37,7 @@
#define VFS_SUBCLASS(a) ((struct vfs_s_subclass *) (a))
#define VFS_SUPER(a) ((struct vfs_s_super *) (a))
+#define CONST_VFS_SUPER(a) ((const struct vfs_s_super *) (a))
#define VFS_ENTRY(a) ((struct vfs_s_entry *) (a))
#define VFS_INODE(a) ((struct vfs_s_inode *) (a))
@@ -78,6 +79,7 @@
struct vfs_s_inode *dir; /* Directory we are in, i.e. our parent */
char *name; /* Name of this entry */
struct vfs_s_inode *ino; /* ... and its inode */
+ ssize_t leading_spaces; /* number of leading spases in the file name */
};
/* Single virtual file - inode */
@@ -138,7 +140,7 @@
struct vfs_s_entry *(*find_entry) (struct vfs_class * me,
struct vfs_s_inode * root,
const char *path, int follow, int flags);
- int (*dir_load) (struct vfs_class * me, struct vfs_s_inode * ino, char *path);
+ int (*dir_load) (struct vfs_class * me, struct vfs_s_inode * ino, const char *path);
gboolean (*dir_uptodate) (struct vfs_class * me, struct vfs_s_inode * ino);
int (*file_store) (struct vfs_class * me, vfs_file_handler_t * fh, char *path, char *localname);
@@ -196,7 +198,7 @@
static inline void
vfs_s_store_filename_leading_spaces (struct vfs_s_entry *entry, size_t position)
{
- entry->ino->data_offset = (off_t) position;
+ entry->leading_spaces = (ssize_t) position;
}
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/background.c
^
|
@@ -1,11 +1,11 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Authors:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -60,13 +60,8 @@
background_adjust (WBackground * b)
{
Widget *w = WIDGET (b);
- Widget *wo = WIDGET (w->owner);
-
- w->y = wo->y;
- w->x = wo->x;
- w->lines = wo->lines;
- w->cols = wo->cols;
+ w->rect = WIDGET (w->owner)->rect;
w->pos_flags |= WPOS_KEEP_ALL;
}
@@ -78,7 +73,7 @@
const Widget *w = CONST_WIDGET (b);
tty_setcolor (b->color);
- tty_fill_region (w->y, w->x, w->lines, w->cols, b->pattern);
+ tty_fill_region (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, b->pattern);
}
/* --------------------------------------------------------------------------------------------- */
@@ -111,12 +106,13 @@
background_new (int y, int x, int lines, int cols, int color, unsigned char pattern,
widget_cb_fn callback)
{
+ WRect r = { y, x, lines, cols };
WBackground *b;
Widget *w;
b = g_new (WBackground, 1);
w = WIDGET (b);
- widget_init (w, y, x, lines, cols, callback != NULL ? callback : background_callback, NULL);
+ widget_init (w, &r, callback != NULL ? callback : background_callback, NULL);
w->get_colors = background_get_colors;
b->color = color;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/button.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -206,6 +206,7 @@
WButton *
button_new (int y, int x, int action, button_flags_t flags, const char *text, bcback_fn callback)
{
+ WRect r = { y, x, 1, 1 };
WButton *b;
Widget *w;
@@ -215,8 +216,8 @@
b->action = action;
b->flags = flags;
b->text = hotkey_new (text);
- widget_init (w, y, x, 1, button_get_len (b), button_default_callback,
- button_mouse_default_callback);
+ r.cols = button_get_len (b);
+ widget_init (w, &r, button_default_callback, button_mouse_default_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY;
b->callback = callback;
b->hotpos = (b->text.hotkey != NULL) ? str_term_width1 (b->text.start) : -1;
@@ -250,7 +251,7 @@
hotkey_free (b->text);
b->text = hk;
b->hotpos = (b->text.hotkey != NULL) ? str_term_width1 (b->text.start) : -1;
- w->cols = button_get_len (b);
+ w->rect.cols = button_get_len (b);
widget_draw (w);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/buttonbar.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -173,12 +173,12 @@
return MSG_NOT_HANDLED;
case MSG_DRAW:
- if (bb->visible)
+ if (widget_get_state (w, WST_VISIBLE))
{
buttonbar_init_button_positions (bb);
widget_gotoyx (w, 0, 0);
tty_setcolor (DEFAULT_COLOR);
- tty_printf ("%-*s", w->cols, "");
+ tty_printf ("%-*s", w->rect.cols, "");
widget_gotoyx (w, 0, 0);
for (i = 0; i < BUTTONBAR_LABELS_NUM; i++)
@@ -238,17 +238,17 @@
/* --------------------------------------------------------------------------------------------- */
WButtonBar *
-buttonbar_new (gboolean visible)
+buttonbar_new (void)
{
+ WRect r = { LINES - 1, 0, 1, COLS };
WButtonBar *bb;
Widget *w;
bb = g_new0 (WButtonBar, 1);
w = WIDGET (bb);
- widget_init (w, LINES - 1, 0, 1, COLS, buttonbar_callback, buttonbar_mouse_callback);
+ widget_init (w, &r, buttonbar_callback, buttonbar_mouse_callback);
w->pos_flags = WPOS_KEEP_HORZ | WPOS_KEEP_BOTTOM;
- bb->visible = visible;
widget_want_hotkey (w, TRUE);
return bb;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/buttonbar.h
^
|
@@ -22,7 +22,7 @@
typedef struct WButtonBar
{
Widget widget;
- gboolean visible; /* Is it visible? */
+
struct
{
char *text;
@@ -36,17 +36,11 @@
/*** declarations of public functions ************************************************************/
-WButtonBar *buttonbar_new (gboolean visible);
+WButtonBar *buttonbar_new (void);
void buttonbar_set_label (WButtonBar * bb, int idx, const char *text,
const global_keymap_t * keymap, Widget * receiver);
WButtonBar *find_buttonbar (const WDialog * h);
/*** inline functions ****************************************************************************/
-static inline void
-buttonbar_set_visible (WButtonBar * bb, gboolean visible)
-{
- bb->visible = visible;
-}
-
#endif /* MC__WIDGET_BUTTONBAR_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/check.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -133,6 +133,7 @@
WCheck *
check_new (int y, int x, gboolean state, const char *text)
{
+ WRect r = { y, x, 1, 1 };
WCheck *c;
Widget *w;
@@ -140,7 +141,8 @@
w = WIDGET (c);
c->text = hotkey_new (text);
/* 4 is width of "[X] " */
- widget_init (w, y, x, 1, 4 + hotkey_width (c->text), check_callback, check_mouse_callback);
+ r.cols = 4 + hotkey_width (c->text);
+ widget_init (w, &r, check_callback, check_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY;
c->state = state;
@@ -166,9 +168,9 @@
check->text = hk;
if (check->text.start[0] == '\0' && check->text.hotkey == NULL && check->text.end == NULL)
- w->cols = 3; /* "[ ]" */
+ w->rect.cols = 3; /* "[ ]" */
else
- w->cols = 4 + hotkey_width (check->text); /* "[ ] text" */
+ w->rect.cols = 4 + hotkey_width (check->text); /* "[ ] text" */
widget_draw (w);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/dialog-switch.c
^
|
@@ -3,12 +3,12 @@
Original idea and code: Oleg "Olegarch" Konovalov <olegarch@linuxinside.com>
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
Daniel Borca <dborca@yahoo.com>, 2007
- Andrew Borodin <aborodin@vmail.ru>, 2010, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2022
This file is part of the Midnight Commander.
@@ -40,7 +40,7 @@
/*** global variables ****************************************************************************/
-WDialog *midnight_dlg = NULL;
+WDialog *filemanager = NULL;
/*** file scope macro definitions ****************************************************************/
@@ -86,7 +86,7 @@
mc_current = dlg;
- if (old == midnight_dlg)
+ if (old == filemanager)
{
/* switch from panels to another dialog (editor, viewer, etc) */
dialog_switch_pending = TRUE;
@@ -97,14 +97,14 @@
/* switch from editor, viewer, etc to another dialog */
widget_set_state (WIDGET (old), WST_SUSPENDED, TRUE);
- if (DIALOG (dlg->data) != midnight_dlg)
+ if (DIALOG (dlg->data) != filemanager)
/* switch to another editor, viewer, etc */
/* return to panels before run the required dialog */
dialog_switch_pending = TRUE;
else
{
/* switch to panels */
- widget_set_state (WIDGET (midnight_dlg), WST_ACTIVE, TRUE);
+ widget_set_state (WIDGET (filemanager), WST_ACTIVE, TRUE);
do_refresh ();
}
}
@@ -237,7 +237,7 @@
char *title;
if (dlg->get_title != NULL)
- title = dlg->get_title (dlg, WIDGET (listbox->list)->cols - 2);
+ title = dlg->get_title (dlg, WIDGET (listbox->list)->rect.cols - 2);
else
title = g_strdup ("");
@@ -268,12 +268,12 @@
ret = dlg_run (h);
if (widget_get_state (wh, WST_CLOSED))
{
- dlg_destroy (h);
+ widget_destroy (wh);
/* return to panels */
if (mc_global.mc_run_mode == MC_RUN_FULL)
{
- mc_current = g_list_find (mc_dialogs, midnight_dlg);
+ mc_current = g_list_find (mc_dialogs, filemanager);
mc_event_raise (MCEVENT_GROUP_FILEMANAGER, "update_panels", NULL);
}
}
@@ -306,7 +306,7 @@
WDialog *dlg = DIALOG (mc_dialogs->data);
dlg_run (dlg);
- dlg_destroy (dlg);
+ widget_destroy (WIDGET (dlg));
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/dialog-switch.h
^
|
@@ -12,7 +12,7 @@
/*** global variables defined in .c file *********************************************************/
-extern WDialog *midnight_dlg;
+extern WDialog *filemanager;
/*** declarations of public functions ************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/dialog.c
^
|
@@ -1,7 +1,7 @@
/*
Dialog box features module for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -325,6 +325,23 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static void
+dlg_default_destroy (Widget * w)
+{
+ WDialog *h = DIALOG (w);
+
+ /* if some widgets have history, save all histories at one moment here */
+ dlg_save_history (h);
+ group_default_callback (w, NULL, MSG_DESTROY, 0, NULL);
+ mc_event_group_del (h->event_group);
+ g_free (h->event_group);
+ g_free (h);
+
+ do_refresh ();
+}
+
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
/** Default dialog callback */
@@ -334,11 +351,19 @@
{
switch (msg)
{
+ case MSG_INIT:
+ /* nothing to init in dialog itself */
+ return MSG_HANDLED;
+
case MSG_IDLE:
/* we don't want endless loop */
widget_idle (w, FALSE);
return MSG_HANDLED;
+ case MSG_DESTROY:
+ /* nothing to deinit in dialog itself */
+ return MSG_HANDLED;
+
default:
return group_default_callback (w, sender, msg, parm, data);
}
@@ -352,7 +377,7 @@
switch (msg)
{
case MSG_MOUSE_CLICK:
- if (event->y < 0 || event->y >= w->lines || event->x < 0 || event->x >= w->cols)
+ if (event->y < 0 || event->y >= w->rect.lines || event->x < 0 || event->x >= w->rect.cols)
{
DIALOG (w)->ret_value = B_CANCEL;
dlg_stop (DIALOG (w));
@@ -373,6 +398,7 @@
gboolean compact, const int *colors, widget_cb_fn callback,
widget_mouse_cb_fn mouse_callback, const char *help_ctx, const char *title)
{
+ WRect r = { y1, x1, lines, cols };
WDialog *new_d;
Widget *w;
WGroup *g;
@@ -380,8 +406,8 @@
new_d = g_new0 (WDialog, 1);
w = WIDGET (new_d);
g = GROUP (new_d);
- widget_adjust_position (pos_flags, &y1, &x1, &lines, &cols);
- group_init (g, y1, x1, lines, cols, callback != NULL ? callback : dlg_default_callback,
+ widget_adjust_position (pos_flags, &r);
+ group_init (g, &r, callback != NULL ? callback : dlg_default_callback,
mouse_callback != NULL ? mouse_callback : dlg_default_mouse_callback);
w->pos_flags = pos_flags;
@@ -395,6 +421,7 @@
w->mouse_handler = dlg_handle_mouse_event;
w->mouse.forced_capture = mouse_close_dialog && (w->pos_flags & WPOS_FULLSCREEN) == 0;
+ w->destroy = dlg_default_destroy;
w->get_colors = dlg_default_get_colors;
new_d->colors = colors;
@@ -406,7 +433,8 @@
{
w->state |= WST_MODAL;
- new_d->bg = WIDGET (frame_new (0, 0, w->lines, w->cols, title, FALSE, new_d->compact));
+ new_d->bg =
+ WIDGET (frame_new (0, 0, w->rect.lines, w->rect.cols, title, FALSE, new_d->compact));
group_add_widget (g, new_d->bg);
frame_set_title (FRAME (new_d->bg), title);
}
@@ -506,8 +534,7 @@
}
/* Select the first widget that takes focus */
- while (g->current != NULL && !widget_get_options (WIDGET (g->current->data), WOP_SELECTABLE)
- && !widget_get_state (WIDGET (g->current->data), WST_DISABLED))
+ while (g->current != NULL && !widget_is_focusable (g->current->data))
group_set_current_widget_next (g);
widget_set_state (wh, WST_ACTIVE, TRUE);
@@ -578,21 +605,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-void
-dlg_destroy (WDialog * h)
-{
- /* if some widgets have history, save all history at one moment here */
- dlg_save_history (h);
- group_default_callback (WIDGET (h), NULL, MSG_DESTROY, 0, NULL);
- mc_event_group_del (h->event_group);
- g_free (h->event_group);
- g_free (h);
-
- do_refresh ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
/**
* Write history to the ${XDG_CACHE_HOME}/mc/history file
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/dialog.h
^
|
@@ -106,7 +106,6 @@
void dlg_init (WDialog * h);
int dlg_run (WDialog * d);
-void dlg_destroy (WDialog * h);
void dlg_run_done (WDialog * h);
void dlg_save_history (WDialog * h);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/frame.c
^
|
@@ -1,11 +1,11 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Authors:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -55,13 +55,8 @@
frame_adjust (WFrame * f)
{
Widget *w = WIDGET (f);
- Widget *wo = WIDGET (w->owner);
-
- w->y = wo->y;
- w->x = wo->x;
- w->lines = wo->lines;
- w->cols = wo->cols;
+ w->rect = WIDGET (w->owner)->rect;
w->pos_flags |= WPOS_KEEP_ALL;
}
@@ -70,11 +65,12 @@
static void
frame_draw (const WFrame * f)
{
- const Widget *w = CONST_WIDGET (f);
+ const Widget *wf = CONST_WIDGET (f);
+ const WRect *w = &wf->rect;
int d = f->compact ? 0 : 1;
const int *colors;
- colors = widget_get_colors (w);
+ colors = widget_get_colors (wf);
if (mc_global.tty.shadows)
tty_draw_box_shadow (w->y, w->x, w->lines, w->cols, SHADOW_COLOR);
@@ -87,7 +83,7 @@
{
/* TODO: truncate long title */
tty_setcolor (colors[FRAME_COLOR_TITLE]);
- widget_gotoyx (w, d, (w->cols - str_term_width1 (f->title)) / 2);
+ widget_gotoyx (f, d, (w->cols - str_term_width1 (f->title)) / 2);
tty_print_string (f->title);
}
}
@@ -99,12 +95,13 @@
WFrame *
frame_new (int y, int x, int lines, int cols, const char *title, gboolean single, gboolean compact)
{
+ WRect r = { y, x, lines, cols };
WFrame *f;
Widget *w;
f = g_new (WFrame, 1);
w = WIDGET (f);
- widget_init (w, y, x, lines, cols, frame_callback, NULL);
+ widget_init (w, &r, frame_callback, NULL);
f->single = single;
f->compact = compact;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/gauge.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -68,7 +68,7 @@
if (!g->shown)
{
tty_setcolor (colors[DLG_COLOR_NORMAL]);
- tty_printf ("%*s", w->cols, "");
+ tty_printf ("%*s", w->rect.cols, "");
}
else
{
@@ -90,7 +90,7 @@
done /= 256;
}
- gauge_len = w->cols - 7; /* 7 positions for percentage */
+ gauge_len = w->rect.cols - 7; /* 7 positions for percentage */
percentage = (200 * done / total + 1) / 2;
columns = (2 * gauge_len * done / total + 1) / 2;
@@ -126,12 +126,13 @@
WGauge *
gauge_new (int y, int x, int cols, gboolean shown, int max, int current)
{
+ WRect r = { y, x, 1, cols };
WGauge *g;
Widget *w;
g = g_new (WGauge, 1);
w = WIDGET (g);
- widget_init (w, y, x, 1, cols, gauge_callback, NULL);
+ widget_init (w, &r, gauge_callback, NULL);
g->shown = shown;
if (max == 0)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/group.c
^
|
@@ -1,11 +1,11 @@
/*
Widget group features module for the Midnight Commander
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -113,15 +113,12 @@
if (g->widgets != NULL && g->current != NULL)
{
GList *l = g->current;
- Widget *w;
do
{
l = group_get_next_or_prev_of (l, next);
- w = WIDGET (l->data);
}
- while ((widget_get_state (w, WST_DISABLED) || !widget_get_options (w, WOP_SELECTABLE))
- && l != g->current);
+ while (!widget_is_focusable (l->data) && l != g->current);
widget_select (l->data);
}
@@ -170,7 +167,9 @@
p = group_get_next_or_prev_of (p, !reverse);
if (options == WOP_DEFAULT || (options & w->options) != 0)
- send_message (w, NULL, msg, 0, NULL);
+ /* special case: don't draw invisible widgets */
+ if (msg != MSG_DRAW || widget_get_state (w, WST_VISIBLE))
+ send_message (w, NULL, msg, 0, NULL);
}
while (first != p);
}
@@ -178,6 +177,78 @@
/* --------------------------------------------------------------------------------------------- */
/**
+ * Default group callback to convert group coordinates from local (relative to owner) to global
+ * (relative to screen).
+ *
+ * @param w widget
+ */
+
+static void
+group_default_make_global (Widget * w, const WRect * delta)
+{
+ GList *iter;
+
+ if (delta != NULL)
+ {
+ /* change own coordinates */
+ widget_default_make_global (w, delta);
+ /* change child widget coordinates */
+ for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ WIDGET (iter->data)->make_global (WIDGET (iter->data), delta);
+ }
+ else if (w->owner != NULL)
+ {
+ WRect r = WIDGET (w->owner)->rect;
+
+ r.lines = 0;
+ r.cols = 0;
+ /* change own coordinates */
+ widget_default_make_global (w, &r);
+ /* change child widget coordinates */
+ for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ WIDGET (iter->data)->make_global (WIDGET (iter->data), &r);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Default group callback to convert group coordinates from global (relative to screen) to local
+ * (relative to owner).
+ *
+ * @param w widget
+ */
+
+static void
+group_default_make_local (Widget * w, const WRect * delta)
+{
+ GList *iter;
+
+ if (delta != NULL)
+ {
+ /* change own coordinates */
+ widget_default_make_local (w, delta);
+ /* change child widget coordinates */
+ for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ WIDGET (iter->data)->make_local (WIDGET (iter->data), delta);
+ }
+ else if (w->owner != NULL)
+ {
+ WRect r = WIDGET (w->owner)->rect;
+
+ r.lines = 0;
+ r.cols = 0;
+ /* change own coordinates */
+ widget_default_make_local (w, &r);
+ /* change child widget coordinates */
+ for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ WIDGET (iter->data)->make_local (WIDGET (iter->data), &r);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
* Default group callback function to find widget in the group.
*
* @param w WGroup object
@@ -196,7 +267,7 @@
{
GList *iter;
- for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ for (iter = CONST_GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
{
w0 = widget_find (WIDGET (iter->data), what);
if (w0 != NULL)
@@ -228,7 +299,7 @@
{
GList *iter;
- for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ for (iter = CONST_GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
{
w0 = widget_find_by_type (WIDGET (iter->data), cb);
if (w0 != NULL)
@@ -260,7 +331,7 @@
{
GList *iter;
- for (iter = GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
+ for (iter = CONST_GROUP (w)->widgets; iter != NULL; iter = g_list_next (iter))
{
w0 = widget_find_by_id (WIDGET (iter->data), id);
if (w0 != NULL)
@@ -290,8 +361,11 @@
{
Widget *w = WIDGET (p->data);
- if (widget_get_options (w, WOP_WANT_CURSOR) && !widget_get_state (w, WST_DISABLED)
- && widget_update_cursor (WIDGET (p->data)))
+ /* Don't use widget_is_selectable() here.
+ If WOP_SELECTABLE option is not set, widget can handle mouse events.
+ For example, commandl line in file manager */
+ if (widget_get_options (w, WOP_WANT_CURSOR) && widget_get_state (w, WST_VISIBLE)
+ && !widget_get_state (w, WST_DISABLED) && widget_update_cursor (WIDGET (p->data)))
return MSG_HANDLED;
p = group_get_widget_next_of (p);
@@ -312,12 +386,12 @@
*/
Widget *c = WIDGET (data);
- Widget *g = WIDGET (c->owner);
+ const WRect *g = &CONST_WIDGET (c->owner)->rect;
const widget_shift_scale_t *wss = (const widget_shift_scale_t *) user_data;
- WRect r = { c->y, c->x, c->lines, c->cols };
+ WRect r = c->rect;
if ((c->pos_flags & WPOS_CENTER_HORZ) != 0)
- r.x = g->x + (g->cols - c->cols) / 2;
+ r.x = g->x + (g->cols - c->rect.cols) / 2;
else if ((c->pos_flags & WPOS_KEEP_LEFT) != 0 && (c->pos_flags & WPOS_KEEP_RIGHT) != 0)
{
r.x += wss->shift_x;
@@ -329,7 +403,7 @@
r.x += wss->shift_x + wss->scale_x;
if ((c->pos_flags & WPOS_CENTER_VERT) != 0)
- r.y = g->y + (g->lines - c->lines) / 2;
+ r.y = g->y + (g->lines - c->rect.lines) / 2;
else if ((c->pos_flags & WPOS_KEEP_TOP) != 0 && (c->pos_flags & WPOS_KEEP_BOTTOM) != 0)
{
r.y += wss->shift_y;
@@ -348,15 +422,12 @@
static void
group_set_position (WGroup * g, const WRect * r)
{
- Widget *w = WIDGET (g);
+ WRect *w = &WIDGET (g)->rect;
widget_shift_scale_t wss;
/* save old positions, will be used to reposition childs */
- WRect or = { w->y, w->x, w->lines, w->cols };
+ WRect or = *w;
- w->x = r->x;
- w->y = r->y;
- w->lines = r->lines;
- w->cols = r->cols;
+ *w = *r;
/* dialog is empty */
if (g->widgets == NULL)
@@ -389,12 +460,8 @@
Widget *w = WIDGET (g);
WRect r0;
- if (r == NULL)
- rect_init (&r0, w->y, w->x, w->lines, w->cols);
- else
- r0 = *r;
-
- widget_adjust_position (w->pos_flags, &r0.y, &r0.x, &r0.lines, &r0.cols);
+ r0 = r != NULL ? *r : w->rect;
+ widget_adjust_position (w->pos_flags, &r0);
group_set_position (g, &r0);
}
@@ -462,7 +529,7 @@
w = WIDGET (g->current->data);
- if (widget_get_state (w, WST_DISABLED))
+ if (!widget_get_state (w, WST_VISIBLE) || widget_get_state (w, WST_DISABLED))
return MSG_NOT_HANDLED;
/* Explanation: we don't send letter hotkeys to other widgets
@@ -527,16 +594,17 @@
*/
void
-group_init (WGroup * g, int y1, int x1, int lines, int cols, widget_cb_fn callback,
- widget_mouse_cb_fn mouse_callback)
+group_init (WGroup * g, const WRect * r, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback)
{
Widget *w = WIDGET (g);
- widget_init (w, y1, x1, lines, cols, callback != NULL ? callback : group_default_callback,
- mouse_callback);
+ widget_init (w, r, callback != NULL ? callback : group_default_callback, mouse_callback);
w->mouse_handler = group_handle_mouse_event;
+ w->make_global = group_default_make_global;
+ w->make_local = group_default_make_local;
+
w->find = group_default_find;
w->find_by_type = group_default_find_by_type;
w->find_by_id = group_default_find_by_id;
@@ -579,6 +647,7 @@
case MSG_DESTROY:
g_list_foreach (g->widgets, (GFunc) widget_destroy, NULL);
g_list_free (g->widgets);
+ g->widgets = NULL;
return MSG_HANDLED;
default:
@@ -654,7 +723,10 @@
{
Widget *wp = WIDGET (p->data);
- if (!widget_get_state (wp, WST_DISABLED))
+ /* Don't use widget_is_selectable() here.
+ If WOP_SELECTABLE option is not set, widget can handle mouse events.
+ For example, commandl line in file manager */
+ if (widget_get_state (w, WST_VISIBLE) && !widget_get_state (wp, WST_DISABLED))
{
/* put global cursor position to the widget */
int ret;
@@ -697,15 +769,14 @@
assert (ww != NULL);
if ((pos_flags & WPOS_CENTER_HORZ) != 0)
- ww->x = (wg->cols - ww->cols) / 2;
- ww->x += wg->x;
+ ww->rect.x = (wg->rect.cols - ww->rect.cols) / 2;
if ((pos_flags & WPOS_CENTER_VERT) != 0)
- ww->y = (wg->lines - ww->lines) / 2;
- ww->y += wg->y;
+ ww->rect.y = (wg->rect.lines - ww->rect.lines) / 2;
ww->owner = g;
ww->pos_flags = pos_flags;
+ widget_make_global (ww);
if (g->widgets == NULL || before == NULL)
{
@@ -751,15 +822,16 @@
void
group_remove_widget (void *w)
{
+ Widget *ww = WIDGET (w);
WGroup *g;
GList *d;
/* Don't accept NULL widget. This shouldn't happen */
assert (w != NULL);
- g = WIDGET (w)->owner;
+ g = ww->owner;
- d = g_list_find (g->widgets, w);
+ d = g_list_find (g->widgets, ww);
if (d == g->current)
group_set_current_widget_next (g);
@@ -774,7 +846,8 @@
group_select_current_widget (g);
}
- WIDGET (w)->owner = NULL;
+ widget_make_local (ww);
+ ww->owner = NULL;
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/group.h
^
|
@@ -38,7 +38,7 @@
/*** declarations of public functions ************************************************************/
-void group_init (WGroup * g, int y1, int x1, int lines, int cols, widget_cb_fn callback,
+void group_init (WGroup * g, const WRect * r, widget_cb_fn callback,
widget_mouse_cb_fn mouse_callback);
/* Default callback for groups */
cb_ret_t group_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm,
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/groupbox.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -68,7 +68,7 @@
disabled = widget_get_state (w, WST_DISABLED);
tty_setcolor (disabled ? DISABLED_COLOR : colors[DLG_COLOR_NORMAL]);
- tty_draw_box (w->y, w->x, w->lines, w->cols, TRUE);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, TRUE);
if (g->title != NULL)
{
@@ -95,12 +95,13 @@
WGroupbox *
groupbox_new (int y, int x, int height, int width, const char *title)
{
+ WRect r = { y, x, height, width };
WGroupbox *g;
Widget *w;
g = g_new (WGroupbox, 1);
w = WIDGET (g);
- widget_init (w, y, x, height, width, groupbox_callback, NULL);
+ widget_init (w, &r, groupbox_callback, NULL);
g->title = NULL;
groupbox_set_title (g, title);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/history.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009-2019
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -240,7 +240,7 @@
center of it, and let dialog function resize it to needed size. */
send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL);
- if (WIDGET (query_dlg)->y < hd->y)
+ if (WIDGET (query_dlg)->rect.y < hd->y)
{
/* history is above base widget -- revert order to place recent item at bottom */
/* revert history direction */
@@ -285,10 +285,10 @@
z = g_list_prepend (z, hd->release (hd, LENTRY (hi->data)));
/* restore history direction */
- if (WIDGET (query_dlg)->y < hd->y)
+ if (WIDGET (query_dlg)->rect.y < hd->y)
z = g_list_reverse (z);
- dlg_destroy (query_dlg);
+ widget_destroy (WIDGET (query_dlg));
hd->list = g_list_first (hd->list);
g_list_free_full (hd->list, hd->free);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/hline.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -61,10 +61,12 @@
{
if (l->auto_adjust_cols)
{
- Widget *w = WIDGET (l);
- Widget *wo = WIDGET (w->owner);
+ Widget *wl = WIDGET (l);
+ const Widget *o = CONST_WIDGET (wl->owner);
+ WRect *w = &wl->rect;
+ const WRect *wo = &o->rect;
- if (DIALOG (wo)->compact)
+ if (CONST_DIALOG (o)->compact)
{
w->x = wo->x;
w->cols = wo->cols;
@@ -92,7 +94,7 @@
case MSG_RESIZE:
hline_adjust_cols (l);
- w->y = RECT (data)->y;
+ w->rect.y = RECT (data)->y;
return MSG_HANDLED;
case MSG_DRAW:
@@ -106,13 +108,13 @@
tty_setcolor (colors[DLG_COLOR_NORMAL]);
}
- tty_draw_hline (w->y, w->x + 1, ACS_HLINE, w->cols - 2);
+ tty_draw_hline (w->rect.y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2);
if (l->auto_adjust_cols)
{
widget_gotoyx (w, 0, 0);
tty_print_alt_char (ACS_LTEE, FALSE);
- widget_gotoyx (w, 0, w->cols - 1);
+ widget_gotoyx (w, 0, w->rect.cols - 1);
tty_print_alt_char (ACS_RTEE, FALSE);
}
@@ -121,7 +123,7 @@
int text_width;
text_width = str_term_width1 (l->text);
- widget_gotoyx (w, 0, (w->cols - text_width) / 2);
+ widget_gotoyx (w, 0, (w->rect.cols - text_width) / 2);
tty_print_string (l->text);
}
return MSG_HANDLED;
@@ -142,13 +144,14 @@
WHLine *
hline_new (int y, int x, int width)
{
+ WRect r = { y, x, 1, width };
WHLine *l;
Widget *w;
- int lines = 1;
l = g_new (WHLine, 1);
w = WIDGET (l);
- widget_init (w, y, x, lines, width < 0 ? 1 : width, hline_callback, NULL);
+ r.cols = width < 0 ? 1 : width;
+ widget_init (w, &r, hline_callback, NULL);
l->text = NULL;
l->auto_adjust_cols = (width < 0);
l->transparent = FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/input.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009-2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -70,7 +70,7 @@
#endif
#define should_show_history_button(in) \
- (in->history.list != NULL && WIDGET (in)->cols > HISTORY_BUTTON_WIDTH * 2 + 1 \
+ (in->history.list != NULL && WIDGET (in)->rect.cols > HISTORY_BUTTON_WIDTH * 2 + 1 \
&& WIDGET (in)->owner != NULL)
/*** file scope type declarations ****************************************************************/
@@ -85,11 +85,11 @@
/* --------------------------------------------------------------------------------------------- */
static size_t
-get_history_length (const GList * history)
+get_history_length (GList * history)
{
size_t len = 0;
- for (; history != NULL; history = (const GList *) g_list_previous (history))
+ for (; history != NULL; history = g_list_previous (history))
len++;
return len;
@@ -110,13 +110,13 @@
else
c = '|';
- widget_gotoyx (in, 0, WIDGET (in)->cols - HISTORY_BUTTON_WIDTH);
+ widget_gotoyx (in, 0, WIDGET (in)->rect.cols - HISTORY_BUTTON_WIDTH);
disabled = widget_get_state (WIDGET (in), WST_DISABLED);
tty_setcolor (disabled ? DISABLED_COLOR : in->color[WINPUTC_HISTORY]);
#ifdef LARGE_HISTORY_BUTTON
tty_print_string ("[ ]");
- widget_gotoyx (in, 0, WIDGET (in)->cols - HISTORY_BUTTON_WIDTH + 1);
+ widget_gotoyx (in, 0, WIDGET (in)->rect.cols - HISTORY_BUTTON_WIDTH + 1);
#endif
tty_print_char (c);
@@ -149,23 +149,6 @@
/* --------------------------------------------------------------------------------------------- */
static void
-delete_region (WInput * in, int x_first, int x_last)
-{
- int first = MIN (x_first, x_last);
- int last = MAX (x_first, x_last);
-
- input_mark_cmd (in, FALSE);
- in->point = first;
- last = str_offset_to_pos (in->buffer, last);
- first = str_offset_to_pos (in->buffer, first);
- str_move (in->buffer + first, in->buffer + last);
- in->charpoint = 0;
- in->need_push = TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
do_show_hist (WInput * in)
{
size_t len;
@@ -173,7 +156,7 @@
len = get_history_length (in->history.list);
- history_descriptor_init (&hd, WIDGET (in)->y, WIDGET (in)->x, in->history.list,
+ history_descriptor_init (&hd, WIDGET (in)->rect.y, WIDGET (in)->rect.x, in->history.list,
g_list_position (in->history.list, in->history.list));
history_show (&hd);
@@ -232,31 +215,31 @@
/* --------------------------------------------------------------------------------------------- */
static void
-push_history (WInput * in, const char *text)
+input_push_history (WInput * in)
{
char *t;
gboolean empty;
- if (text == NULL)
- return;
-
- t = g_strstrip (g_strdup (text));
+ t = g_strstrip (input_get_text (in));
empty = *t == '\0';
- g_free (t);
- t = g_strdup (empty ? "" : text);
-
- if (!empty && in->history.name != NULL && in->strip_password)
+ if (!empty)
{
- /*
- We got string user:pass@host without any VFS prefixes
- and vfs_path_to_str_flags (t, VPF_STRIP_PASSWORD) doesn't work.
- Therefore we want to strip password in separate algorithm
- */
- char *url_with_stripped_password;
-
- url_with_stripped_password = input_history_strip_password (t);
g_free (t);
- t = url_with_stripped_password;
+ t = input_get_text (in);
+
+ if (in->history.name != NULL && in->strip_password)
+ {
+ /*
+ We got string user:pass@host without any VFS prefixes
+ and vfs_path_to_str_flags (t, VPF_STRIP_PASSWORD) doesn't work.
+ Therefore we want to strip password in separate algorithm
+ */
+ char *url_with_stripped_password;
+
+ url_with_stripped_password = input_history_strip_password (t);
+ g_free (t);
+ t = url_with_stripped_password;
+ }
}
if (in->history.list == NULL || in->history.list->data == NULL
@@ -277,81 +260,15 @@
static void
move_buffer_backward (WInput * in, int start, int end)
{
- int i, pos, len;
int str_len;
- str_len = str_length (in->buffer);
+ str_len = str_length (in->buffer->str);
if (start >= str_len || end > str_len + 1)
return;
- pos = str_offset_to_pos (in->buffer, start);
- len = str_offset_to_pos (in->buffer, end) - pos;
-
- for (i = pos; in->buffer[i + len - 1]; i++)
- in->buffer[i] = in->buffer[i + len];
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static cb_ret_t
-insert_char (WInput * in, int c_code)
-{
- int res;
- long m1, m2;
-
- if (input_eval_marks (in, &m1, &m2))
- delete_region (in, m1, m2);
-
- if (c_code == -1)
- return MSG_NOT_HANDLED;
-
- if (in->charpoint >= MB_LEN_MAX)
- return MSG_HANDLED;
-
- in->charbuf[in->charpoint] = c_code;
- in->charpoint++;
-
- res = str_is_valid_char (in->charbuf, in->charpoint);
- if (res < 0)
- {
- if (res != -2)
- in->charpoint = 0; /* broken multibyte char, skip */
- return MSG_HANDLED;
- }
-
- in->need_push = TRUE;
- if (strlen (in->buffer) + 1 + in->charpoint >= in->current_max_size)
- {
- /* Expand the buffer */
- size_t new_length;
- char *narea;
-
- new_length = in->current_max_size + WIDGET (in)->cols + in->charpoint;
- narea = g_try_renew (char, in->buffer, new_length);
- if (narea != NULL)
- {
- in->buffer = narea;
- in->current_max_size = new_length;
- }
- }
-
- if (strlen (in->buffer) + in->charpoint < in->current_max_size)
- {
- size_t i;
- /* bytes from begin */
- size_t ins_point = str_offset_to_pos (in->buffer, in->point);
- /* move chars */
- size_t rest_bytes = strlen (in->buffer + ins_point);
-
- for (i = rest_bytes + 1; i > 0; i--)
- in->buffer[ins_point + i + in->charpoint - 1] = in->buffer[ins_point + i - 1];
-
- memcpy (in->buffer + ins_point, in->charbuf, in->charpoint);
- in->point++;
- }
-
- in->charpoint = 0;
- return MSG_HANDLED;
+ start = str_offset_to_pos (in->buffer->str, start);
+ end = str_offset_to_pos (in->buffer->str, end);
+ g_string_erase (in->buffer, start, end - start);
}
/* --------------------------------------------------------------------------------------------- */
@@ -368,7 +285,7 @@
static void
end_of_line (WInput * in)
{
- in->point = str_length (in->buffer);
+ in->point = str_length (in->buffer->str);
in->charpoint = 0;
}
@@ -377,11 +294,14 @@
static void
backward_char (WInput * in)
{
- const char *act;
-
- act = in->buffer + str_offset_to_pos (in->buffer, in->point);
if (in->point > 0)
- in->point -= str_cprev_noncomb_char (&act, in->buffer);
+ {
+ const char *act;
+
+ act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
+ in->point -= str_cprev_noncomb_char (&act, in->buffer->str);
+ }
+
in->charpoint = 0;
}
@@ -392,7 +312,7 @@
{
const char *act;
- act = in->buffer + str_offset_to_pos (in->buffer, in->point);
+ act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
if (act[0] != '\0')
in->point += str_cnext_noncomb_char (&act);
in->charpoint = 0;
@@ -405,17 +325,13 @@
{
const char *p;
- p = in->buffer + str_offset_to_pos (in->buffer, in->point);
- while (p[0] != '\0' && (str_isspace (p) || str_ispunct (p)))
- {
+ p = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
+
+ for (; p[0] != '\0' && (str_isspace (p) || str_ispunct (p)); in->point++)
str_cnext_char (&p);
- in->point++;
- }
- while (p[0] != '\0' && !str_isspace (p) && !str_ispunct (p))
- {
+
+ for (; p[0] != '\0' && !str_isspace (p) && !str_ispunct (p); in->point++)
str_cnext_char (&p);
- in->point++;
- }
}
/* --------------------------------------------------------------------------------------------- */
@@ -425,9 +341,9 @@
{
const char *p;
- p = in->buffer + str_offset_to_pos (in->buffer, in->point);
+ p = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
- while (p != in->buffer)
+ for (; p != in->buffer->str; in->point--)
{
const char *p_tmp;
@@ -438,15 +354,13 @@
p = p_tmp;
break;
}
- in->point--;
}
- while (p != in->buffer)
+
+ for (; p != in->buffer->str; in->point--)
{
str_cprev_char (&p);
if (str_isspace (p) || str_ispunct (p))
break;
-
- in->point--;
}
}
@@ -455,13 +369,14 @@
static void
backward_delete (WInput * in)
{
- const char *act = in->buffer + str_offset_to_pos (in->buffer, in->point);
+ const char *act;
int start;
if (in->point == 0)
return;
- start = in->point - str_cprev_noncomb_char (&act, in->buffer);
+ act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
+ start = in->point - str_cprev_noncomb_char (&act, in->buffer->str);
move_buffer_backward (in, start, in->point);
in->charpoint = 0;
in->need_push = TRUE;
@@ -471,26 +386,10 @@
/* --------------------------------------------------------------------------------------------- */
static void
-delete_char (WInput * in)
+copy_region (WInput * in, int start, int end)
{
- const char *act;
- int end = in->point;
-
- act = in->buffer + str_offset_to_pos (in->buffer, in->point);
- end += str_cnext_noncomb_char (&act);
-
- move_buffer_backward (in, in->point, end);
- in->charpoint = 0;
- in->need_push = TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-copy_region (WInput * in, int x_first, int x_last)
-{
- int first = MIN (x_first, x_last);
- int last = MAX (x_first, x_last);
+ int first = MIN (start, end);
+ int last = MAX (start, end);
if (last == first)
{
@@ -503,10 +402,10 @@
g_free (kill_buffer);
- first = str_offset_to_pos (in->buffer, first);
- last = str_offset_to_pos (in->buffer, last);
+ first = str_offset_to_pos (in->buffer->str, first);
+ last = str_offset_to_pos (in->buffer->str, last);
- kill_buffer = g_strndup (in->buffer + first, last - first);
+ kill_buffer = g_strndup (in->buffer->str + first, last - first);
mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_text_to_file", kill_buffer);
/* try use external clipboard utility */
@@ -516,6 +415,74 @@
/* --------------------------------------------------------------------------------------------- */
static void
+delete_region (WInput * in, int start, int end)
+{
+ int first = MIN (start, end);
+ int last = MAX (start, end);
+
+ input_mark_cmd (in, FALSE);
+ in->point = first;
+ move_buffer_backward (in, first, last);
+ in->charpoint = 0;
+ in->need_push = TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static cb_ret_t
+insert_char (WInput * in, int c_code)
+{
+ int res;
+ long m1, m2;
+ size_t ins_point;
+
+ if (input_eval_marks (in, &m1, &m2))
+ delete_region (in, m1, m2);
+
+ if (c_code == -1)
+ return MSG_NOT_HANDLED;
+
+ if (in->charpoint >= MB_LEN_MAX)
+ return MSG_HANDLED;
+
+ in->charbuf[in->charpoint] = c_code;
+ in->charpoint++;
+
+ res = str_is_valid_char (in->charbuf, in->charpoint);
+ if (res < 0)
+ {
+ if (res != -2)
+ in->charpoint = 0; /* broken multibyte char, skip */
+ return MSG_HANDLED;
+ }
+
+ in->need_push = TRUE;
+ ins_point = str_offset_to_pos (in->buffer->str, in->point);
+ g_string_insert_len (in->buffer, ins_point, in->charbuf, in->charpoint);
+ in->point++;
+ in->charpoint = 0;
+
+ return MSG_HANDLED;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+delete_char (WInput * in)
+{
+ const char *act;
+ int end;
+
+ act = in->buffer->str + str_offset_to_pos (in->buffer->str, in->point);
+ end = in->point + str_cnext_noncomb_char (&act);
+ move_buffer_backward (in, in->point, end);
+ in->charpoint = 0;
+ in->need_push = TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
kill_word (WInput * in)
{
int old_point = in->point;
@@ -569,10 +536,10 @@
{
int chp;
- chp = str_offset_to_pos (in->buffer, in->point);
+ chp = str_offset_to_pos (in->buffer->str, in->point);
g_free (kill_buffer);
- kill_buffer = g_strdup (&in->buffer[chp]);
- in->buffer[chp] = '\0';
+ kill_buffer = g_strndup (in->buffer->str + chp, in->buffer->len - chp);
+ g_string_set_size (in->buffer, chp);
in->charpoint = 0;
}
@@ -582,7 +549,7 @@
clear_line (WInput * in)
{
in->need_push = TRUE;
- in->buffer[0] = '\0';
+ g_string_set_size (in->buffer, 0);
in->point = 0;
in->mark = -1;
in->charpoint = 0;
@@ -594,7 +561,7 @@
ins_from_clip (WInput * in)
{
char *p = NULL;
- ev_clipboard_text_from_file_t event_data;
+ ev_clipboard_text_from_file_t event_data = { NULL, FALSE };
/* try use external clipboard utility */
mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_file_from_ext_clip", NULL);
@@ -623,7 +590,7 @@
return;
if (in->need_push)
- push_history (in, in->buffer);
+ input_push_history (in);
prev = g_list_previous (in->history.current);
if (prev != NULL)
@@ -644,7 +611,7 @@
if (in->need_push)
{
- push_history (in, in->buffer);
+ input_push_history (in);
input_assign_text (in, "");
return;
}
@@ -672,7 +639,7 @@
static void
port_region_marked_for_delete (WInput * in)
{
- in->buffer[0] = '\0';
+ g_string_set_size (in->buffer, 0);
in->point = 0;
in->first = FALSE;
in->charpoint = 0;
@@ -875,7 +842,7 @@
{
ev_history_load_save_t *ev = (ev_history_load_save_t *) data;
- push_history (in, in->buffer);
+ input_push_history (in);
if (in->history.changed)
mc_config_history_save (ev->cfg, in->history.name, in->history.list);
in->history.changed = FALSE;
@@ -889,12 +856,6 @@
static void
input_destroy (WInput * in)
{
- if (in == NULL)
- {
- fprintf (stderr, "Internal error: null Input *\n");
- exit (EXIT_FAILURE);
- }
-
input_complete_free (in);
/* clean history */
@@ -905,7 +866,7 @@
g_list_free_full (in->history.list, g_free);
}
g_free (in->history.name);
- g_free (in->buffer);
+ g_string_free (in->buffer, TRUE);
MC_PTR_FREE (kill_buffer);
}
@@ -922,10 +883,10 @@
if (x < 0)
return 0;
- if (x < str_term_width1 (in->buffer))
- return str_column_to_pos (in->buffer, x);
+ if (x < str_term_width1 (in->buffer->str))
+ return str_column_to_pos (in->buffer->str, x);
- return str_length (in->buffer);
+ return str_length (in->buffer->str);
}
/* --------------------------------------------------------------------------------------------- */
@@ -942,7 +903,7 @@
case MSG_MOUSE_DOWN:
widget_select (w);
- if (event->x >= w->cols - HISTORY_BUTTON_WIDTH && should_show_history_button (in))
+ if (event->x >= w->rect.cols - HISTORY_BUTTON_WIDTH && should_show_history_button (in))
do_show_hist (in);
else
{
@@ -988,12 +949,13 @@
input_new (int y, int x, const int *colors, int width, const char *def_text,
const char *histname, input_complete_t completion_flags)
{
+ WRect r = { y, x, 1, width };
WInput *in;
Widget *w;
in = g_new (WInput, 1);
w = WIDGET (in);
- widget_init (w, y, x, 1, width, input_callback, input_mouse_callback);
+ widget_init (w, &r, input_callback, input_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_IS_INPUT | WOP_WANT_CURSOR;
w->keymap = input_map;
@@ -1006,8 +968,7 @@
in->strip_password = FALSE;
/* in->buffer will be corrected in "history_load" event handler */
- in->current_max_size = width + 1;
- in->buffer = g_new0 (char, in->current_max_size);
+ in->buffer = g_string_sized_new (width);
/* init completions before input_assign_text() call */
in->completions = NULL;
@@ -1093,7 +1054,7 @@
return MSG_HANDLED;
case MSG_CURSOR:
- widget_gotoyx (in, 0, str_term_width2 (in->buffer, in->point) - in->term_first_shown);
+ widget_gotoyx (in, 0, str_term_width2 (in->buffer->str, in->point) - in->term_first_shown);
return MSG_HANDLED;
case MSG_DESTROY:
@@ -1170,9 +1131,6 @@
void
input_assign_text (WInput * in, const char *text)
{
- Widget *w = WIDGET (in);
- size_t text_len, buffer_len;
-
if (text == NULL)
text = "";
@@ -1180,27 +1138,13 @@
in->mark = -1;
in->need_push = TRUE;
in->charpoint = 0;
-
- text_len = strlen (text);
- buffer_len = 1 + MAX ((size_t) w->cols, text_len);
- in->current_max_size = buffer_len;
- if (buffer_len > (size_t) w->cols)
- in->buffer = g_realloc (in->buffer, buffer_len);
- memmove (in->buffer, text, text_len + 1);
- in->point = str_length (in->buffer);
+ g_string_assign (in->buffer, text);
+ in->point = str_length (in->buffer->str);
input_update (in, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
-gboolean
-input_is_empty (const WInput * in)
-{
- return (in == NULL || in->buffer == NULL || in->buffer[0] == '\0');
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
/* Inserts text in input line */
void
input_insert (WInput * in, const char *text, gboolean insert_extra_space)
@@ -1221,7 +1165,7 @@
{
int max_pos;
- max_pos = str_length (in->buffer);
+ max_pos = str_length (in->buffer->str);
pos = MIN (pos, max_pos);
if (pos != in->point)
input_complete_free (in);
@@ -1235,7 +1179,8 @@
void
input_update (WInput * in, gboolean clear_first)
{
- Widget *w = WIDGET (in);
+ Widget *wi = WIDGET (in);
+ const WRect *w = &wi->rect;
int has_history = 0;
int buf_len;
const char *cp;
@@ -1245,7 +1190,7 @@
return;
/* don't draw widget not put into dialog */
- if (w->owner == NULL || !widget_get_state (WIDGET (w->owner), WST_ACTIVE))
+ if (wi->owner == NULL || !widget_get_state (WIDGET (wi->owner), WST_ACTIVE))
return;
if (clear_first)
@@ -1254,12 +1199,12 @@
if (should_show_history_button (in))
has_history = HISTORY_BUTTON_WIDTH;
- buf_len = str_length (in->buffer);
+ buf_len = str_length (in->buffer->str);
/* Adjust the mark */
in->mark = MIN (in->mark, buf_len);
- pw = str_term_width2 (in->buffer, in->point);
+ pw = str_term_width2 (in->buffer->str, in->point);
/* Make the point visible */
if ((pw < in->term_first_shown) || (pw >= in->term_first_shown + w->cols - has_history))
@@ -1272,7 +1217,7 @@
if (has_history != 0)
draw_history_button (in);
- if (widget_get_state (w, WST_DISABLED))
+ if (widget_get_state (wi, WST_DISABLED))
tty_setcolor (DISABLED_COLOR);
else if (in->first)
tty_setcolor (in->color[WINPUTC_UNCHANGED]);
@@ -1284,7 +1229,7 @@
if (!in->is_password)
{
if (in->mark < 0)
- tty_print_string (str_term_substring (in->buffer, in->term_first_shown,
+ tty_print_string (str_term_substring (in->buffer->str, in->term_first_shown,
w->cols - has_history));
else
{
@@ -1293,26 +1238,27 @@
if (input_eval_marks (in, &m1, &m2))
{
tty_setcolor (in->color[WINPUTC_MAIN]);
- cp = str_term_substring (in->buffer, in->term_first_shown, w->cols - has_history);
+ cp = str_term_substring (in->buffer->str, in->term_first_shown,
+ w->cols - has_history);
tty_print_string (cp);
tty_setcolor (in->color[WINPUTC_MARK]);
if (m1 < in->term_first_shown)
{
widget_gotoyx (in, 0, 0);
- tty_print_string (str_term_substring
- (in->buffer, in->term_first_shown,
- m2 - in->term_first_shown));
+ m1 = in->term_first_shown;
+ m2 -= m1;
}
else
{
- int sel_width, buf_width;
+ int buf_width;
widget_gotoyx (in, 0, m1 - in->term_first_shown);
- buf_width = str_term_width2 (in->buffer, m1);
- sel_width =
- MIN (m2 - m1, (w->cols - has_history) - (buf_width - in->term_first_shown));
- tty_print_string (str_term_substring (in->buffer, m1, sel_width));
+ buf_width = str_term_width2 (in->buffer->str, m1);
+ m2 = MIN (m2 - m1,
+ (w->cols - has_history) - (buf_width - in->term_first_shown));
}
+
+ tty_print_string (str_term_substring (in->buffer->str, m1, m2));
}
}
}
@@ -1320,7 +1266,7 @@
{
int i;
- cp = str_term_substring (in->buffer, in->term_first_shown, w->cols - has_history);
+ cp = str_term_substring (in->buffer->str, in->term_first_shown, w->cols - has_history);
tty_setcolor (in->color[WINPUTC_MAIN]);
for (i = 0; i < w->cols - has_history; i++)
{
@@ -1361,9 +1307,9 @@
void
input_clean (WInput * in)
{
- push_history (in, in->buffer);
+ input_push_history (in);
in->need_push = TRUE;
- in->buffer[0] = '\0';
+ g_string_set_size (in->buffer, 0);
in->point = 0;
in->charpoint = 0;
in->mark = -1;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/input.h
^
|
@@ -46,16 +46,16 @@
typedef struct
{
Widget widget;
+
+ GString *buffer;
const int *color;
int point; /* cursor position in the input line in characters */
int mark; /* the mark position in characters; negative value means no marked text */
int term_first_shown; /* column of the first shown character */
- size_t current_max_size; /* maximum length of input line (bytes) */
gboolean first; /* is first keystroke? */
int disable_update; /* do we want to skip updates? */
gboolean is_password; /* is this a password input line? */
gboolean init_from_history; /* init text will be get from history */
- char *buffer; /* pointer to editing buffer */
gboolean need_push; /* need to push the current Input on hist? */
gboolean strip_password; /* need to strip password before placing string to history */
char **completions; /* possible completions array */
@@ -86,12 +86,11 @@
WInput *input_new (int y, int x, const int *colors,
int len, const char *text, const char *histname,
input_complete_t completion_flags);
-/* callbac is public; needed for command line */
+/* callback is public; needed for command line */
cb_ret_t input_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data);
void input_set_default_colors (void);
cb_ret_t input_handle_char (WInput * in, int key);
void input_assign_text (WInput * in, const char *text);
-gboolean input_is_empty (const WInput * in);
void input_insert (WInput * in, const char *text, gboolean insert_extra_space);
void input_set_point (WInput * in, int pos);
void input_update (WInput * in, gboolean clear_first);
@@ -103,6 +102,54 @@
void input_complete (WInput * in);
void input_complete_free (WInput * in);
+/* --------------------------------------------------------------------------------------------- */
/*** inline functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Get text of input line.
+ *
+ * @param in input line
+ *
+ * @return newly allocated string that contains a copy of @in's text.
+ */
+static inline char *
+input_get_text (const WInput * in)
+{
+ return g_strndup (in->buffer->str, in->buffer->len);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Get pointer to input line buffer.
+ *
+ * @param in input line
+ *
+ * @return pointer to @in->buffer->str.
+ */
+static inline const char *
+input_get_ctext (const WInput * in)
+{
+ return in->buffer->str;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Is input line empty or not.
+ *
+ * @param in input line
+ *
+ * @return TRUE if buffer of @in is empty, FALSE othewise.
+ */
+static inline gboolean
+input_is_empty (const WInput * in)
+{
+ return (in->buffer->len == 0);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
#endif /* MC__WIDGET_INPUT_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/input_complete.c
^
|
@@ -2,13 +2,13 @@
Input line filename/username/hostname/variable/command completion.
(Let mc type for you...)
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
Jakub Jelinek, 1995
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -168,7 +168,7 @@
g_free (dirname);
g_free (filename);
g_free (users_dirname);
- vfs_path_free (dirname_vpath);
+ vfs_path_free (dirname_vpath, TRUE);
if ((*text != '\0') && (temp = strrchr (text, PATH_SEP)) != NULL)
{
@@ -255,7 +255,7 @@
/* stat failed, strange. not a dir in any case */
isdir = FALSE;
}
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
if ((flags & INPUT_COMPLETE_COMMANDS) != 0 && (isexec || isdir))
@@ -274,7 +274,7 @@
directory = NULL;
}
MC_PTR_FREE (dirname);
- vfs_path_free (dirname_vpath);
+ vfs_path_free (dirname_vpath, TRUE);
dirname_vpath = NULL;
MC_PTR_FREE (filename);
MC_PTR_FREE (users_dirname);
@@ -980,34 +980,47 @@
{
size_t text_len;
int buff_len;
+ ssize_t new_size;
text_len = strlen (text);
- buff_len = str_length (in->buffer);
- size = MIN (size, (ssize_t) text_len) + start - end;
- if (strlen (in->buffer) + size >= (size_t) in->current_max_size)
+ buff_len = str_length (in->buffer->str);
+ if (size < 0)
+ size = (ssize_t) text_len;
+ else
+ size = MIN (size, (ssize_t) text_len);
+
+ new_size = size + start - end;
+ if (new_size != 0)
{
- /* Expand the buffer */
- char *narea;
- Widget *w = WIDGET (in);
+ /* make a hole within buffer */
+
+ size_t tail_len;
- narea = g_try_realloc (in->buffer, in->current_max_size + size + w->cols);
- if (narea != NULL)
+ tail_len = in->buffer->len - end;
+ if (tail_len != 0)
{
- in->buffer = narea;
- in->current_max_size += size + w->cols;
+ char *tail;
+ size_t hole_end;
+
+ tail = g_strndup (in->buffer->str + end, tail_len);
+
+ hole_end = end + new_size;
+ if (in->buffer->len < hole_end)
+ g_string_set_size (in->buffer, hole_end + tail_len);
+
+ g_string_overwrite_len (in->buffer, hole_end, tail, tail_len);
+
+ g_free (tail);
}
}
- if (strlen (in->buffer) + 1 < (size_t) in->current_max_size)
- {
- if (size != 0)
- memmove (in->buffer + end + size, in->buffer + end, strlen (&in->buffer[end]) + 1);
- memmove (in->buffer + start, text, size - (start - end));
- in->point += str_length (in->buffer) - buff_len;
- input_update (in, TRUE);
- end += size;
- }
- return size != 0;
+ g_string_overwrite_len (in->buffer, start, text, size);
+
+ in->point += str_length (in->buffer->str) - buff_len;
+ input_update (in, TRUE);
+ end += new_size;
+
+ return new_size != 0;
}
/* --------------------------------------------------------------------------------------------- */
@@ -1043,7 +1056,7 @@
/* Refill the list box and start again */
else if (end == min_end)
{
- end = str_get_prev_char (&input->buffer[end]) - input->buffer;
+ end = str_get_prev_char (input->buffer->str + end) - input->buffer->str;
input_handle_char (input, parm);
h->ret_value = B_USER;
dlg_stop (h);
@@ -1054,14 +1067,14 @@
int i;
GList *e;
- new_end = str_get_prev_char (&input->buffer[end]) - input->buffer;
+ new_end = str_get_prev_char (input->buffer->str + end) - input->buffer->str;
for (i = 0, e = listbox_get_first_link (LISTBOX (g->current->data));
e != NULL; i++, e = g_list_next (e))
{
WLEntry *le = LENTRY (e->data);
- if (strncmp (input->buffer + start, le->text, new_end - start) == 0)
+ if (strncmp (input->buffer->str + start, le->text, new_end - start) == 0)
{
listbox_select_entry (LISTBOX (g->current->data), i);
end = new_end;
@@ -1115,8 +1128,8 @@
{
WLEntry *le = LENTRY (e->data);
- if (strncmp (input->buffer + start, le->text, end - start) == 0
- && strncmp (&le->text[end - start], buff, bl) == 0)
+ if (strncmp (input->buffer->str + start, le->text, end - start) == 0
+ && strncmp (le->text + end - start, buff, bl) == 0)
{
if (need_redraw == 0)
{
@@ -1195,7 +1208,7 @@
static gboolean
complete_engine (WInput * in, int what_to_do)
{
- if (in->completions != NULL && str_offset_to_pos (in->buffer, in->point) != end)
+ if (in->completions != NULL && str_offset_to_pos (in->buffer->str, in->point) != end)
input_complete_free (in);
if (in->completions == NULL)
@@ -1210,7 +1223,7 @@
{
char *lc_complete = in->completions[0];
- if (!insert_text (in, lc_complete, strlen (lc_complete)) || in->completions[1] != NULL)
+ if (!insert_text (in, lc_complete, -1) || in->completions[1] != NULL)
tty_beep ();
else
input_complete_free (in);
@@ -1232,8 +1245,8 @@
maxlen = i;
}
- start_x = WIDGET (in)->x;
- start_y = WIDGET (in)->y;
+ start_x = WIDGET (in)->rect.x;
+ start_y = WIDGET (in)->rect.y;
if (start_y - 2 >= count)
{
y = start_y - 2 - count;
@@ -1278,11 +1291,11 @@
{
listbox_get_current (complete_list, &q, NULL);
if (q != NULL)
- insert_text (in, q, strlen (q));
+ insert_text (in, q, -1);
}
if (q != NULL || end != min_end)
input_complete_free (in);
- dlg_destroy (complete_dlg);
+ widget_destroy (WIDGET (complete_dlg));
/* B_USER if user wants to start over again */
return (i == B_USER);
@@ -1404,9 +1417,9 @@
word_separators = (in->completion_flags & INPUT_COMPLETE_SHELL_ESC) ? " \t;|<>" : "\t;|<>";
- end = str_offset_to_pos (in->buffer, in->point);
+ end = str_offset_to_pos (in->buffer->str, in->point);
- s = in->buffer;
+ s = in->buffer->str;
if (in->point != 0)
{
/* get symbol before in->point */
@@ -1416,20 +1429,20 @@
str_next_char (&s);
}
- for (; s >= in->buffer; str_prev_char (&s))
+ for (; s >= in->buffer->str; str_prev_char (&s))
{
- start = s - in->buffer;
- if (strchr (word_separators, *s) != NULL && !strutils_is_char_escaped (in->buffer, s))
+ start = s - in->buffer->str;
+ if (strchr (word_separators, *s) != NULL && !strutils_is_char_escaped (in->buffer->str, s))
break;
}
if (start < end)
{
str_next_char (&s);
- start = s - in->buffer;
+ start = s - in->buffer->str;
}
- in->completions = try_complete (in->buffer, &start, &end, in->completion_flags);
+ in->completions = try_complete (in->buffer->str, &start, &end, in->completion_flags);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1440,7 +1453,7 @@
{
int engine_flags;
- if (!str_is_valid_string (in->buffer))
+ if (!str_is_valid_string (in->buffer->str))
return;
if (in->completions != NULL)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/label.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -101,7 +101,7 @@
}
widget_gotoyx (w, y, 0);
- tty_print_string (str_fit_to_term (p, w->cols, align));
+ tty_print_string (str_fit_to_term (p, w->rect.cols, align));
if (q == NULL)
break;
@@ -129,17 +129,16 @@
WLabel *
label_new (int y, int x, const char *text)
{
+ WRect r = { y, x, 1, 1 };
WLabel *l;
Widget *w;
- int cols = 1;
- int lines = 1;
if (text != NULL)
- str_msg_term_size (text, &lines, &cols);
+ str_msg_term_size (text, &r.lines, &r.cols);
l = g_new (WLabel, 1);
w = WIDGET (l);
- widget_init (w, y, x, lines, cols, label_callback, NULL);
+ widget_init (w, &r, label_callback, NULL);
l->text = g_strdup (text);
l->auto_adjust_cols = TRUE;
@@ -154,7 +153,7 @@
label_set_text (WLabel * label, const char *text)
{
Widget *w = WIDGET (label);
- int newcols = w->cols;
+ int newcols = w->rect.cols;
int newlines;
if (label->text != NULL && text != NULL && strcmp (label->text, text) == 0)
@@ -170,17 +169,14 @@
if (label->auto_adjust_cols)
{
str_msg_term_size (text, &newlines, &newcols);
- if (newcols > w->cols)
- w->cols = newcols;
- if (newlines > w->lines)
- w->lines = newlines;
+ w->rect.cols = MAX (newcols, w->rect.cols);
+ w->rect.lines = MAX (newlines, w->rect.lines);
}
}
widget_draw (w);
- if (newcols < w->cols)
- w->cols = newcols;
+ w->rect.cols = MIN (newcols, w->rect.cols);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/listbox-window.c
^
|
@@ -1,7 +1,7 @@
/*
Widget based utility functions.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -132,7 +132,7 @@
if (dlg_run (l->dlg) != B_CANCEL)
val = l->list->pos;
- dlg_destroy (l->dlg);
+ widget_destroy (WIDGET (l->dlg));
g_free (l);
return val;
}
@@ -167,7 +167,7 @@
}
}
- dlg_destroy (l->dlg);
+ widget_destroy (WIDGET (l->dlg));
g_free (l);
return val;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/listbox.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -86,16 +86,16 @@
/* --------------------------------------------------------------------------------------------- */
static void
-listbox_drawscroll (WListbox * l)
+listbox_drawscroll (const WListbox * l)
{
- Widget *w = WIDGET (l);
+ const WRect *w = &CONST_WIDGET (l)->rect;
int max_line = w->lines - 1;
int line = 0;
int i;
int length;
/* Are we at the top? */
- widget_gotoyx (w, 0, w->cols);
+ widget_gotoyx (l, 0, w->cols);
if (l->top == 0)
tty_print_one_vline (TRUE);
else
@@ -116,7 +116,7 @@
for (i = 1; i < max_line; i++)
{
- widget_gotoyx (w, i, w->cols);
+ widget_gotoyx (l, i, w->cols);
if (i != line)
tty_print_one_vline (TRUE);
else
@@ -129,7 +129,8 @@
static void
listbox_draw (WListbox * l, gboolean focused)
{
- Widget *w = WIDGET (l);
+ Widget *wl = WIDGET (l);
+ const WRect *w = &CONST_WIDGET (l)->rect;
const int *colors;
gboolean disabled;
int normalc, selc;
@@ -139,9 +140,9 @@
int i;
int sel_line = -1;
- colors = widget_get_colors (w);
+ colors = widget_get_colors (wl);
- disabled = widget_get_state (w, WST_DISABLED);
+ disabled = widget_get_state (wl, WST_DISABLED);
normalc = disabled ? DISABLED_COLOR : colors[DLG_COLOR_NORMAL];
selc = disabled ? DISABLED_COLOR : colors[focused ? DLG_COLOR_HOT_FOCUS : DLG_COLOR_FOCUS];
@@ -271,7 +272,7 @@
listbox_execute_cmd (WListbox * l, long command)
{
cb_ret_t ret = MSG_HANDLED;
- Widget *w = WIDGET (l);
+ const WRect *w = &CONST_WIDGET (l)->rect;
if (l->list == NULL || g_queue_is_empty (l->list))
return MSG_NOT_HANDLED;
@@ -547,15 +548,14 @@
WListbox *
listbox_new (int y, int x, int height, int width, gboolean deletable, lcback_fn callback)
{
+ WRect r = { y, x, 1, width };
WListbox *l;
Widget *w;
- if (height <= 0)
- height = 1;
-
l = g_new (WListbox, 1);
w = WIDGET (l);
- widget_init (w, y, x, height, width, listbox_callback, listbox_mouse_callback);
+ r.lines = height > 0 ? height : 1;
+ widget_init (w, &r, listbox_callback, listbox_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_HOTKEY;
w->keymap = listbox_map;
@@ -634,13 +634,13 @@
void
listbox_select_last (WListbox * l)
{
- int lines = WIDGET (l)->lines;
+ int lines = WIDGET (l)->rect.lines;
int length;
length = listbox_get_length (l);
- l->pos = length > 0 ? length - 1 : 0;
- l->top = length > lines ? length - lines : 0;
+ l->pos = DOZ (length, 1);
+ l->top = DOZ (length, lines);
}
/* --------------------------------------------------------------------------------------------- */
@@ -668,7 +668,7 @@
l->top = l->pos;
else
{
- int lines = WIDGET (l)->lines;
+ int lines = WIDGET (l)->rect.lines;
if (l->pos - l->top >= lines)
l->top = l->pos - lines + 1;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/mouse.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 2016-2020
+ Copyright (C) 2016-2022
Free Software Foundation, Inc.
Authors:
@@ -61,8 +61,8 @@
const Widget * w)
{
event->msg = msg;
- event->x = global_gpm->x - w->x - 1; /* '-1' because Gpm_Event is 1-based. */
- event->y = global_gpm->y - w->y - 1;
+ event->x = global_gpm->x - w->rect.x - 1; /* '-1' because Gpm_Event is 1-based. */
+ event->y = global_gpm->y - w->rect.y - 1;
event->count = global_gpm->type & (GPM_SINGLE | GPM_DOUBLE | GPM_TRIPLE);
event->buttons = global_gpm->buttons;
event->result.abort = FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/quick.c
^
|
@@ -1,7 +1,7 @@
/*
Widget based utility functions.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -9,7 +9,7 @@
Radek Doulik, 1994, 1995
Jakub Jelinek, 1995
Andrej Borsenkow, 1995
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2011, 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -98,25 +98,25 @@
{
case input_label_above:
label.widget = WIDGET (label_new (*y, x, I18N (quick_widget->u.input.label_text)));
- *y += label.widget->lines - 1;
+ *y += label.widget->rect.lines - 1;
g_array_append_val (widgets, label);
in.widget = WIDGET (quick_create_input (++(*y), x, quick_widget));
in.quick_widget = quick_widget;
g_array_append_val (widgets, in);
- *width = MAX (label.widget->cols, in.widget->cols);
+ *width = MAX (label.widget->rect.cols, in.widget->rect.cols);
break;
case input_label_left:
label.widget = WIDGET (label_new (*y, x, I18N (quick_widget->u.input.label_text)));
g_array_append_val (widgets, label);
- in.widget = WIDGET (quick_create_input (*y, x + label.widget->cols + 1, quick_widget));
+ in.widget = WIDGET (quick_create_input (*y, x + label.widget->rect.cols + 1, quick_widget));
in.quick_widget = quick_widget;
g_array_append_val (widgets, in);
- *width = label.widget->cols + in.widget->cols + 1;
+ *width = label.widget->rect.cols + in.widget->rect.cols + 1;
break;
case input_label_right:
@@ -126,10 +126,10 @@
label.widget =
WIDGET (label_new
- (*y, x + in.widget->cols + 1, I18N (quick_widget->u.input.label_text)));
+ (*y, x + in.widget->rect.cols + 1, I18N (quick_widget->u.input.label_text)));
g_array_append_val (widgets, label);
- *width = label.widget->cols + in.widget->cols + 1;
+ *width = label.widget->rect.cols + in.widget->rect.cols + 1;
break;
case input_label_below:
@@ -138,10 +138,10 @@
g_array_append_val (widgets, in);
label.widget = WIDGET (label_new (++(*y), x, I18N (quick_widget->u.input.label_text)));
- *y += label.widget->lines - 1;
+ *y += label.widget->rect.lines - 1;
g_array_append_val (widgets, label);
- *width = MAX (label.widget->cols, in.widget->cols);
+ *width = MAX (label.widget->rect.cols, in.widget->rect.cols);
break;
default:
@@ -186,7 +186,7 @@
int return_val;
len = str_term_width1 (I18N (quick_dlg->title)) + 6;
- quick_dlg->cols = MAX (quick_dlg->cols, len);
+ quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, len);
y = 1;
x = x1;
@@ -207,7 +207,7 @@
(++y, x, *quick_widget->u.checkbox.state,
I18N (quick_widget->u.checkbox.text)));
g_array_append_val (widgets, item);
- width = item.widget->cols;
+ width = item.widget->rect.cols;
if (g != NULL)
width += 2;
if (two_columns)
@@ -224,7 +224,7 @@
I18N (quick_widget->u.button.text),
quick_widget->u.button.callback));
g_array_append_val (widgets, item);
- width = item.widget->cols;
+ width = item.widget->rect.cols;
if (g != NULL)
width += 2;
if (two_columns)
@@ -245,7 +245,7 @@
{
item.widget = WIDGET (quick_create_input (y, x, quick_widget));
g_array_append_val (widgets, item);
- width = item.widget->cols;
+ width = item.widget->rect.cols;
}
if (g != NULL)
width += 2;
@@ -258,8 +258,8 @@
case quick_label:
item.widget = WIDGET (label_new (++y, x, I18N (quick_widget->u.label.text)));
g_array_append_val (widgets, item);
- y += item.widget->lines - 1;
- width = item.widget->cols;
+ y += item.widget->rect.lines - 1;
+ width = item.widget->rect.cols;
if (g != NULL)
width += 2;
if (two_columns)
@@ -284,8 +284,8 @@
g_strfreev (items);
item.widget = WIDGET (r);
g_array_append_val (widgets, item);
- y += item.widget->lines - 1;
- width = item.widget->cols;
+ y += item.widget->rect.lines - 1;
+ width = item.widget->rect.cols;
if (g != NULL)
width += 2;
if (two_columns)
@@ -310,7 +310,7 @@
Widget *w = WIDGET (g);
y++;
- w->lines = y + 1 - w->y;
+ w->rect.lines = y + 1 - w->rect.y;
g = NULL;
g_array_append_val (widgets, item);
@@ -369,7 +369,7 @@
quick_widget->u.button.callback));
item.quick_widget = quick_widget;
g_array_append_val (widgets, item);
- blen += item.widget->cols + 1;
+ blen += item.widget->rect.cols + 1;
}
/* stop dialog build here */
@@ -384,7 +384,7 @@
}
/* adjust dialog width */
- quick_dlg->cols = MAX (quick_dlg->cols, blen + 6);
+ quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, blen + 6);
if (have_groupbox)
{
if (width1 != 0)
@@ -401,16 +401,16 @@
len = MAX (len, width1 + 6);
}
- quick_dlg->cols = MAX (quick_dlg->cols, len);
- width1 = quick_dlg->cols - 6;
- width2 = (quick_dlg->cols - 7) / 2;
+ quick_dlg->rect.cols = MAX (quick_dlg->rect.cols, len);
+ width1 = quick_dlg->rect.cols - 6;
+ width2 = (quick_dlg->rect.cols - 7) / 2;
- if (quick_dlg->x == -1 || quick_dlg->y == -1)
- dd = dlg_create (TRUE, 0, 0, y + 3, quick_dlg->cols, WPOS_CENTER | WPOS_TRYUP, FALSE,
+ if (quick_dlg->rect.x == -1 || quick_dlg->rect.y == -1)
+ dd = dlg_create (TRUE, 0, 0, y + 3, quick_dlg->rect.cols, WPOS_CENTER | WPOS_TRYUP, FALSE,
dialog_colors, quick_dlg->callback, quick_dlg->mouse_callback,
quick_dlg->help, quick_dlg->title);
else
- dd = dlg_create (TRUE, quick_dlg->y, quick_dlg->x, y + 3, quick_dlg->cols,
+ dd = dlg_create (TRUE, quick_dlg->rect.y, quick_dlg->rect.x, y + 3, quick_dlg->rect.cols,
WPOS_KEEP_DEFAULT, FALSE, dialog_colors, quick_dlg->callback,
quick_dlg->mouse_callback, quick_dlg->help, quick_dlg->title);
@@ -418,14 +418,16 @@
x2 = x1 + width2 + 1;
g = NULL;
two_columns = FALSE;
- x = (WIDGET (dd)->cols - blen) / 2;
+ x = (WIDGET (dd)->rect.cols - blen) / 2;
for (i = 0; i < widgets->len; i++)
{
quick_widget_item_t *item;
int column_width;
+ WRect *r;
item = &g_array_index (widgets, quick_widget_item_t, i);
+ r = &item->widget->rect;
column_width = two_columns ? width2 : width1;
/* adjust widget width and x position */
@@ -444,24 +446,24 @@
MC_FALLTHROUGH;
case quick_checkbox:
case quick_radio:
- if (item->widget->x != x1)
- item->widget->x = x2;
+ if (r->x != x1)
+ r->x = x2;
if (g != NULL)
- item->widget->x += 2;
+ r->x += 2;
break;
case quick_button:
if (!put_buttons)
{
- if (item->widget->x != x1)
- item->widget->x = x2;
+ if (r->x != x1)
+ r->x = x2;
if (g != NULL)
- item->widget->x += 2;
+ r->x += 2;
}
else
{
- item->widget->x = x;
- x += item->widget->cols + 1;
+ r->x = x;
+ x += r->cols + 1;
}
break;
@@ -477,39 +479,39 @@
{
case input_label_left:
/* label was adjusted before; adjust input line */
- item->widget->x = label->x + label->cols + 1 - WIDGET (label->owner)->x;
- item->widget->cols = width - label->cols - 1;
+ r->x = label->rect.x + label->rect.cols + 1 - WIDGET (label->owner)->rect.x;
+ r->cols = width - label->rect.cols - 1;
break;
case input_label_right:
- if (item->widget->x != x1)
- item->widget->x = x2;
+ if (r->x != x1)
+ r->x = x2;
if (g != NULL)
- item->widget->x += 2;
- item->widget->cols = width - label->cols - 1;
- label->x = item->widget->x + item->widget->cols + 1;
+ r->x += 2;
+ r->cols = width - label->rect.cols - 1;
+ label->rect.x = r->x + r->cols + 1;
break;
default:
- if (item->widget->x != x1)
- item->widget->x = x2;
+ if (r->x != x1)
+ r->x = x2;
if (g != NULL)
- item->widget->x += 2;
- item->widget->cols = width;
+ r->x += 2;
+ r->cols = width;
break;
}
- /* forced update internal variables of inpuit line */
- widget_set_size (item->widget, item->widget->y, item->widget->x, 1,
- item->widget->cols);
+ /* forced update internal variables of input line */
+ r->lines = 1;
+ widget_set_size_rect (item->widget, r);
}
break;
case quick_start_groupbox:
g = GROUPBOX (item->widget);
- if (item->widget->x != x1)
- item->widget->x = x2;
- item->widget->cols = column_width;
+ if (r->x != x1)
+ r->x = x2;
+ r->cols = column_width;
break;
case quick_stop_groupbox:
@@ -524,16 +526,16 @@
Widget *wg = WIDGET (g);
HLINE (item->widget)->auto_adjust_cols = FALSE;
- item->widget->x = wg->x + 1 - WIDGET (wg->owner)->x;
- item->widget->cols = wg->cols;
+ r->x = wg->rect.x + 1 - WIDGET (wg->owner)->rect.x;
+ r->cols = wg->rect.cols;
}
else if (two_columns)
{
HLINE (item->widget)->auto_adjust_cols = FALSE;
- if (item->widget->x != x1)
- item->widget->x = x2;
- item->widget->x--;
- item->widget->cols = column_width + 2;
+ if (r->x != x1)
+ r->x = x2;
+ r->x--;
+ r->cols = column_width + 2;
}
else
HLINE (item->widget)->auto_adjust_cols = TRUE;
@@ -597,9 +599,9 @@
case quick_input:
if ((item->quick_widget->u.input.completion_flags & INPUT_COMPLETE_CD) != 0)
*item->quick_widget->u.input.result =
- tilde_expand (INPUT (item->widget)->buffer);
+ tilde_expand (input_get_ctext (INPUT (item->widget)));
else
- *item->quick_widget->u.input.result = g_strdup (INPUT (item->widget)->buffer);
+ *item->quick_widget->u.input.result = input_get_text (INPUT (item->widget));
break;
case quick_radio:
@@ -611,7 +613,7 @@
}
}
- dlg_destroy (dd);
+ widget_destroy (WIDGET (dd));
g_list_free_full (input_labels, g_free); /* destroy input labels created before */
g_array_free (widgets, TRUE);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/quick.h
^
|
@@ -330,8 +330,8 @@
typedef struct
{
- int y, x; /* if -1, then center the dialog */
- int cols; /* heigth is calculated automatically */
+ WRect rect; /* if rect.x == -1 or rect.y == -1, then dialog is ceneterd;
+ * rect.lines is unused and ignored */
const char *title;
const char *help;
quick_widget_t *widgets;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/radio.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -164,7 +164,7 @@
{
widget_selectcolor (w, i == r->pos && focused, FALSE);
widget_gotoyx (w, i, 0);
- tty_draw_hline (w->y + i, w->x, ' ', w->cols);
+ tty_draw_hline (w->rect.y + i, w->rect.x, ' ', w->rect.cols);
tty_print_string ((r->sel == i) ? "(*) " : "( ) ");
hotkey_draw (w, r->texts[i], i == r->pos && focused);
}
@@ -213,6 +213,7 @@
WRadio *
radio_new (int y, int x, int count, const char **texts)
{
+ WRect r0 = { y, x, count, 1 };
WRadio *r;
Widget *w;
int i, wmax = 0;
@@ -233,7 +234,8 @@
}
/* 4 is width of "(*) " */
- widget_init (w, y, x, count, 4 + wmax, radio_callback, radio_mouse_callback);
+ r0.cols = 4 + wmax;
+ widget_init (w, &r0, radio_callback, radio_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR | WOP_WANT_HOTKEY;
w->keymap = radio_map;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/rect.c
^
|
@@ -1,10 +1,10 @@
/* Rectangular class for Midnight Commander widgets
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -109,7 +109,7 @@
/* --------------------------------------------------------------------------------------------- */
/**
- * Change size of rectangle area.
+ * Change size of rectangle area keeping it's position.
*
* @param r WRect object
* @param dl change size value of heigth
@@ -124,6 +124,28 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * Change size of rectangle area keeping it's center.
+ *
+ * @param r WRect object
+ * @param dl change size value of y-coordinate and heigth
+ * Positive value means move up and increase heigth.
+ * Negative value means move down and decrease heigth.
+ * @param dc change size value of x-coordinate and width
+ * Positive value means move left and increase width.
+ * Negative value means move right and decrease width.
+ */
+
+void
+rect_grow (WRect * r, int dl, int dc)
+{
+ r->y -= dl;
+ r->x -= dc;
+ r->lines += dl * 2;
+ r->cols += dc * 2;
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* Calculates the intersection of two rectangle areas.
* The resulting rectangle is the largest rectangle which contains intersection of rectangle areas.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/rect.h
^
|
@@ -34,6 +34,7 @@
void rect_init (WRect * r, int y, int x, int lines, int cols);
void rect_move (WRect * r, int dy, int dx);
void rect_resize (WRect * r, int dl, int dc);
+void rect_grow (WRect * r, int dl, int dc);
void rect_intersect (WRect * r, const WRect * r1);
void rect_union (WRect * r, const WRect * r1);
gboolean rects_are_overlapped (const WRect * r1, const WRect * r2);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/widget-common.c
^
|
@@ -1,7 +1,7 @@
/*
Widgets for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -10,7 +10,7 @@
Jakub Jelinek, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2011, 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -85,10 +85,7 @@
if (r == NULL)
return MSG_NOT_HANDLED;
- w->y = r->y;
- w->x = r->x;
- w->lines = r->lines;
- w->cols = r->cols;
+ w->rect = *r;
return MSG_HANDLED;
}
@@ -98,7 +95,7 @@
static void
widget_do_focus (Widget * w, gboolean enable)
{
- if (w != NULL && widget_get_state (WIDGET (w->owner), WST_FOCUSED))
+ if (w != NULL && widget_get_state (WIDGET (w->owner), WST_VISIBLE | WST_FOCUSED))
widget_set_state (w, WST_FOCUSED, enable);
}
@@ -308,14 +305,10 @@
/* --------------------------------------------------------------------------------------------- */
void
-widget_init (Widget * w, int y, int x, int lines, int cols,
- widget_cb_fn callback, widget_mouse_cb_fn mouse_callback)
+widget_init (Widget * w, const WRect * r, widget_cb_fn callback, widget_mouse_cb_fn mouse_callback)
{
w->id = widget_set_id ();
- w->x = x;
- w->y = y;
- w->cols = cols;
- w->lines = lines;
+ w->rect = *r;
w->pos_flags = WPOS_KEEP_DEFAULT;
w->callback = callback;
@@ -332,27 +325,25 @@
w->mouse.last_buttons_down = 0;
w->options = WOP_DEFAULT;
- w->state = WST_CONSTRUCT;
+ w->state = WST_CONSTRUCT | WST_VISIBLE;
+
+ w->make_global = widget_default_make_global;
+ w->make_local = widget_default_make_local;
+
+ w->make_global = widget_default_make_global;
+ w->make_local = widget_default_make_local;
w->find = widget_default_find;
w->find_by_type = widget_default_find_by_type;
w->find_by_id = widget_default_find_by_id;
w->set_state = widget_default_set_state;
+ w->destroy = widget_default_destroy;
w->get_colors = widget_default_get_colors;
}
/* --------------------------------------------------------------------------------------------- */
-void
-widget_destroy (Widget * w)
-{
- send_message (w, NULL, MSG_DESTROY, 0, NULL);
- g_free (w);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
/* Default callback for widgets */
cb_ret_t
widget_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
@@ -402,29 +393,29 @@
/* --------------------------------------------------------------------------------------------- */
void
-widget_adjust_position (widget_pos_flags_t pos_flags, int *y, int *x, int *lines, int *cols)
+widget_adjust_position (widget_pos_flags_t pos_flags, WRect * r)
{
if ((pos_flags & WPOS_FULLSCREEN) != 0)
{
- *y = 0;
- *x = 0;
- *lines = LINES;
- *cols = COLS;
+ r->y = 0;
+ r->x = 0;
+ r->lines = LINES;
+ r->cols = COLS;
}
else
{
if ((pos_flags & WPOS_CENTER_HORZ) != 0)
- *x = (COLS - *cols) / 2;
+ r->x = (COLS - r->cols) / 2;
if ((pos_flags & WPOS_CENTER_VERT) != 0)
- *y = (LINES - *lines) / 2;
+ r->y = (LINES - r->lines) / 2;
if ((pos_flags & WPOS_TRYUP) != 0)
{
- if (*y > 3)
- *y -= 2;
- else if (*y == 3)
- *y = 2;
+ if (r->y > 3)
+ r->y -= 2;
+ else if (r->y == 3)
+ r->y = 2;
}
}
}
@@ -446,9 +437,22 @@
WRect r = { y, x, lines, cols };
send_message (w, NULL, MSG_RESIZE, 0, &r);
+ widget_draw (w);
+}
- if (w->owner != NULL && widget_get_state (WIDGET (w->owner), WST_ACTIVE))
- widget_draw (w);
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Change widget position and size.
+ *
+ * @param w widget
+ * @param r WRect obgect that holds position and size
+ */
+
+void
+widget_set_size_rect (Widget * w, WRect * r)
+{
+ send_message (w, NULL, MSG_RESIZE, 0, r);
+ widget_draw (w);
}
/* --------------------------------------------------------------------------------------------- */
@@ -477,7 +481,16 @@
widget_erase (Widget * w)
{
if (w != NULL)
- tty_fill_region (w->y, w->x, w->lines, w->cols, ' ');
+ tty_fill_region (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, ' ');
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+widget_set_visibility (Widget * w, gboolean make_visible)
+{
+ if (widget_get_state (w, WST_VISIBLE) != make_visible)
+ widget_set_state (w, WST_VISIBLE, make_visible);
}
/* --------------------------------------------------------------------------------------------- */
@@ -518,7 +531,7 @@
{
cb_ret_t ret = MSG_NOT_HANDLED;
- if (w != NULL)
+ if (w != NULL && widget_get_state (w, WST_VISIBLE))
{
WGroup *g = w->owner;
@@ -569,8 +582,7 @@
GList *l;
for (l = group_get_widget_next_of (holder);
- !widget_get_options (WIDGET (l->data), WOP_SELECTABLE)
- && !widget_get_state (WIDGET (l->data), WST_DISABLED);
+ !widget_is_focusable (WIDGET (l->data)) && l != holder;
l = group_get_widget_next_of (l))
;
@@ -592,6 +604,15 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+gboolean
+widget_is_focusable (const Widget * w)
+{
+ return (widget_get_options (w, WOP_SELECTABLE) && widget_get_state (w, WST_VISIBLE) &&
+ !widget_get_state (w, WST_DISABLED));
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* Select specified widget in it's owner.
*
@@ -637,22 +658,6 @@
/* --------------------------------------------------------------------------------------------- */
/**
- * Check whether two widgets are overlapped or not.
- * @param a 1st widget
- * @param b 2nd widget
- *
- * @return TRUE if widgets are overlapped, FALSE otherwise.
- */
-
-gboolean
-widget_overlapped (const Widget * a, const Widget * b)
-{
- return !((b->x >= a->x + a->cols)
- || (a->x >= b->x + b->cols) || (b->y >= a->y + a->lines) || (a->y >= b->y + b->lines));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
* Look up key event of widget and translate it to command ID.
* @param w widget
* @param key key event
@@ -673,6 +678,44 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Default widget callback to convert widget coordinates from local (relative to owner) to global
+ * (relative to screen).
+ *
+ * @param w widget
+ * @delta offset for top-left corner coordinates. Used for child widgets of WGroup
+ */
+
+void
+widget_default_make_global (Widget * w, const WRect * delta)
+{
+ if (delta != NULL)
+ rect_move (&w->rect, delta->y, delta->x);
+ else if (w->owner != NULL)
+ rect_move (&w->rect, WIDGET (w->owner)->rect.y, WIDGET (w->owner)->rect.x);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Default widget callback to convert widget coordinates from global (relative to screen) to local
+ * (relative to owner).
+ *
+ * @param w widget
+ * @delta offset for top-left corner coordinates. Used for child widgets of WGroup
+ */
+
+void
+widget_default_make_local (Widget * w, const WRect * delta)
+{
+ if (delta != NULL)
+ rect_move (&w->rect, -delta->y, -delta->x);
+ else if (w->owner != NULL)
+ rect_move (&w->rect, -WIDGET (w->owner)->rect.y, -WIDGET (w->owner)->rect.x);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* Default callback function to find widget.
*
@@ -738,6 +781,7 @@
widget_default_set_state (Widget * w, widget_state_t state, gboolean enable)
{
gboolean ret = MSG_HANDLED;
+ Widget *owner = WIDGET (GROUP (w->owner));
if (enable)
w->state |= state;
@@ -757,14 +801,32 @@
w->state &= ~(WST_CONSTRUCT | WST_ACTIVE | WST_SUSPENDED);
}
- if (w->owner == NULL)
+ if (owner == NULL)
return MSG_NOT_HANDLED;
switch (state)
{
+ case WST_VISIBLE:
+ if (widget_get_state (owner, WST_ACTIVE))
+ {
+ /* redraw owner to show/hide widget */
+ widget_draw (owner);
+
+ if (!enable)
+ {
+ /* try select another widget if current one got hidden */
+ if (w == GROUP (owner)->current->data)
+ group_select_next_widget (GROUP (owner));
+
+ widget_update_cursor (owner); /* FIXME: unneeded? */
+ }
+ }
+ break;
+
+
case WST_DISABLED:
ret = send_message (w, NULL, enable ? MSG_DISABLE : MSG_ENABLE, 0, NULL);
- if (ret == MSG_HANDLED && widget_get_state (WIDGET (w->owner), WST_ACTIVE))
+ if (ret == MSG_HANDLED && widget_get_state (owner, WST_ACTIVE))
ret = widget_draw (w);
break;
@@ -774,11 +836,11 @@
msg = enable ? MSG_FOCUS : MSG_UNFOCUS;
ret = send_message (w, NULL, msg, 0, NULL);
- if (ret == MSG_HANDLED && widget_get_state (WIDGET (w->owner), WST_ACTIVE))
+ if (ret == MSG_HANDLED && widget_get_state (owner, WST_ACTIVE))
{
widget_draw (w);
/* Notify owner that focus was moved from one widget to another */
- send_message (w->owner, w, MSG_CHANGED_FOCUS, 0, NULL);
+ send_message (owner, w, MSG_CHANGED_FOCUS, 0, NULL);
}
}
break;
@@ -791,6 +853,20 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * Default callback function to destroy widget.
+ *
+ * @param w widget
+ */
+
+void
+widget_default_destroy (Widget * w)
+{
+ send_message (w, NULL, MSG_DESTROY, 0, NULL);
+ g_free (w);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/* get mouse pointer location within widget */
Gpm_Event
@@ -801,8 +877,8 @@
memset (&local, 0, sizeof (local));
local.buttons = global->buttons;
- local.x = global->x - w->x;
- local.y = global->y - w->y;
+ local.x = global->x - w->rect.x;
+ local.y = global->y - w->rect.y;
local.type = global->type;
return local;
@@ -813,8 +889,10 @@
gboolean
mouse_global_in_widget (const Gpm_Event * event, const Widget * w)
{
- return (event->x > w->x) && (event->y > w->y) && (event->x <= w->x + w->cols)
- && (event->y <= w->y + w->lines);
+ const WRect *r = &w->rect;
+
+ return (event->x > r->x) && (event->y > r->y) && (event->x <= r->x + r->cols)
+ && (event->y <= r->y + r->lines);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/widget-common.h
^
|
@@ -15,7 +15,7 @@
#define WIDGET(x) ((Widget *)(x))
#define CONST_WIDGET(x) ((const Widget *)(x))
-#define widget_gotoyx(w, _y, _x) tty_gotoyx (CONST_WIDGET(w)->y + (_y), CONST_WIDGET(w)->x + (_x))
+#define widget_gotoyx(w, _y, _x) tty_gotoyx (CONST_WIDGET(w)->rect.y + (_y), CONST_WIDGET(w)->rect.x + (_x))
/* Sets/clear the specified flag in the options field */
#define widget_want_cursor(w,i) widget_set_options(w, WOP_WANT_CURSOR, i)
#define widget_want_hotkey(w,i) widget_set_options(w, WOP_WANT_HOTKEY, i)
@@ -80,10 +80,11 @@
typedef enum
{
WST_DEFAULT = (0 << 0),
- WST_DISABLED = (1 << 0), /* Widget cannot be selected */
- WST_IDLE = (1 << 1),
- WST_MODAL = (1 << 2), /* Widget (dialog) is modal */
- WST_FOCUSED = (1 << 3),
+ WST_VISIBLE = (1 << 0), /* Widget is visible */
+ WST_DISABLED = (1 << 1), /* Widget cannot be selected */
+ WST_IDLE = (1 << 2),
+ WST_MODAL = (1 << 3), /* Widget (dialog) is modal */
+ WST_FOCUSED = (1 << 4),
WST_CONSTRUCT = (1 << 15), /* Widget has been constructed but not run yet */
WST_ACTIVE = (1 << 16), /* Dialog is visible and active */
@@ -129,8 +130,9 @@
/* Every Widget must have this as its first element */
struct Widget
{
- int x, y;
- int cols, lines;
+ WRect rect; /* position and size */
+ /* ATTENTION! For groups, don't change @rect members directly to avoid
+ incorrect reposion and resize of group members. */
widget_pos_flags_t pos_flags; /* repositioning flags */
widget_options_t options;
widget_state_t state;
@@ -157,6 +159,9 @@
int last_buttons_down;
} mouse;
+ void (*make_global) (Widget * w, const WRect * delta);
+ void (*make_local) (Widget * w, const WRect * delta);
+
GList *(*find) (const Widget * w, const Widget * what);
Widget *(*find_by_type) (const Widget * w, widget_cb_fn cb);
Widget *(*find_by_id) (const Widget * w, unsigned long id);
@@ -164,6 +169,7 @@
/* *INDENT-OFF* */
cb_ret_t (*set_state) (Widget * w, widget_state_t state, gboolean enable);
/* *INDENT-ON* */
+ void (*destroy) (Widget * w);
const int *(*get_colors) (const Widget * w);
};
@@ -197,33 +203,39 @@
char *hotkey_get_text (const hotkey_t hotkey);
/* widget initialization */
-void widget_init (Widget * w, int y, int x, int lines, int cols,
- widget_cb_fn callback, widget_mouse_cb_fn mouse_callback);
-void widget_destroy (Widget * w);
+void widget_init (Widget * w, const WRect * r, widget_cb_fn callback,
+ widget_mouse_cb_fn mouse_callback);
/* Default callback for widgets */
cb_ret_t widget_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm,
void *data);
void widget_set_options (Widget * w, widget_options_t options, gboolean enable);
-void widget_adjust_position (widget_pos_flags_t pos_flags, int *y, int *x, int *lines, int *cols);
+void widget_adjust_position (widget_pos_flags_t pos_flags, WRect * r);
void widget_set_size (Widget * w, int y, int x, int lines, int cols);
+void widget_set_size_rect (Widget * w, WRect * r);
/* select color for widget in dependance of state */
void widget_selectcolor (Widget * w, gboolean focused, gboolean hotkey);
cb_ret_t widget_draw (Widget * w);
void widget_erase (Widget * w);
+void widget_set_visibility (Widget * w, gboolean make_visible);
gboolean widget_is_active (const void *w);
-gboolean widget_overlapped (const Widget * a, const Widget * b);
void widget_replace (Widget * old, Widget * new);
+gboolean widget_is_focusable (const Widget * w);
void widget_select (Widget * w);
void widget_set_bottom (Widget * w);
long widget_lookup_key (Widget * w, int key);
+void widget_default_make_global (Widget * w, const WRect * delta);
+void widget_default_make_local (Widget * w, const WRect * delta);
+
GList *widget_default_find (const Widget * w, const Widget * what);
Widget *widget_default_find_by_type (const Widget * w, widget_cb_fn cb);
Widget *widget_default_find_by_id (const Widget * w, unsigned long id);
cb_ret_t widget_default_set_state (Widget * w, widget_state_t state, gboolean enable);
+void widget_default_destroy (Widget * w);
+
/* get mouse pointer location within widget */
Gpm_Event mouse_get_local (const Gpm_Event * global, const Widget * w);
gboolean mouse_global_in_widget (const Gpm_Event * event, const Widget * w);
@@ -279,6 +291,34 @@
/* --------------------------------------------------------------------------------------------- */
/**
+ * Convert widget coordinates from local (relative to owner) to global (relative to screen).
+ *
+ * @param w widget
+ */
+
+static inline void
+widget_make_global (Widget * w)
+{
+ w->make_global (w, NULL);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Convert widget coordinates from global (relative to screen) to local (relative to owner).
+ *
+ * @param w widget
+ */
+
+static inline void
+widget_make_local (Widget * w)
+{
+ w->make_local (w, NULL);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
* Find widget.
*
* @param w widget
@@ -344,6 +384,19 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * Destroy widget.
+ *
+ * @param w widget
+ */
+
+static inline void
+widget_destroy (Widget * w)
+{
+ w->destroy (w);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* Get color colors of widget.
@@ -375,9 +428,33 @@
/* --------------------------------------------------------------------------------------------- */
static inline void
-widget_set_size_rect (Widget * w, const WRect * r)
+widget_show (Widget * w)
+{
+ widget_set_visibility (w, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline void
+widget_hide (Widget * w)
+{
+ widget_set_visibility (w, FALSE);
+}
+
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Check whether two widgets are overlapped or not.
+ * @param a 1st widget
+ * @param b 2nd widget
+ *
+ * @return TRUE if widgets are overlapped, FALSE otherwise.
+ */
+
+static inline gboolean
+widget_overlapped (const Widget * a, const Widget * b)
{
- widget_set_size (w, r->y, r->x, r->lines, r->cols);
+ return rects_are_overlapped (&a->rect, &b->rect);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/lib/widget/wtools.c
^
|
@@ -1,7 +1,7 @@
/*
Widget based utility functions.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Authors:
@@ -9,7 +9,7 @@
Radek Doulik, 1994, 1995
Jakub Jelinek, 1995
Andrej Borsenkow, 1995
- Andrew Borodin <aborodin@vmail.ru>, 2009-2014
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -95,14 +95,18 @@
/* if previous dialog is not fullscreen'd -- overlap it */
if (prev_dlg == NULL || (WIDGET (prev_dlg)->pos_flags & WPOS_FULLSCREEN) != 0)
- ypos = LINES / 3 - (w->lines - 3) / 2;
+ ypos = LINES / 3 - (w->rect.lines - 3) / 2;
else
- ypos = WIDGET (prev_dlg)->y + 2;
+ ypos = WIDGET (prev_dlg)->rect.y + 2;
- xpos = COLS / 2 - w->cols / 2;
+ /* if dialog is too high, place it centered */
+ if (ypos + w->rect.lines < LINES / 2)
+ w->pos_flags |= WPOS_CENTER;
+
+ xpos = COLS / 2 - w->rect.cols / 2;
/* set position */
- rect_init (&r, ypos, xpos, w->lines, w->cols);
+ rect_init (&r, ypos, xpos, w->rect.lines, w->rect.cols);
return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
}
@@ -150,10 +154,9 @@
d = do_create_message (flags, title, text);
tty_getch ();
dlg_run_done (d);
- dlg_destroy (d);
+ widget_destroy (WIDGET (d));
}
-
/* --------------------------------------------------------------------------------------------- */
/** Show message box from background */
@@ -218,9 +221,11 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, COLS / 2 };
+
quick_dialog_t qdlg = {
- -1, -1, COLS / 2, header,
- help, quick_widgets, NULL, NULL
+ r, header, help,
+ quick_widgets, NULL, NULL
};
ret = quick_dialog (&qdlg);
@@ -356,7 +361,7 @@
}
/* free used memory */
- dlg_destroy (query_dlg);
+ widget_destroy (WIDGET (query_dlg));
}
else
{
@@ -380,7 +385,7 @@
/* --------------------------------------------------------------------------------------------- */
/**
* Create message dialog. The caller must call dlg_run_done() and
- * dlg_destroy() to dismiss it. Not safe to call from background.
+ * widget_destroy() to dismiss it. Not safe to call from background.
*/
WDialog *
@@ -588,7 +593,7 @@
/* repaint screen to remove previous finished dialog */
mc_refresh ();
- start = g_get_real_time ();
+ start = g_get_monotonic_time ();
sm->dlg = dlg_create (TRUE, 0, 0, 7, MIN (MAX (40, COLS / 2), COLS), WPOS_CENTER, FALSE,
dialog_colors, NULL, NULL, NULL, title);
@@ -628,7 +633,7 @@
/* close and destroy dialog */
dlg_run_done (sm->dlg);
- dlg_destroy (sm->dlg);
+ widget_destroy (WIDGET (sm->dlg));
}
/* --------------------------------------------------------------------------------------------- */
@@ -692,6 +697,7 @@
simple_status_msg_t *ssm = SIMPLE_STATUS_MSG (sm);
Widget *wd = WIDGET (sm->dlg);
WGroup *wg = GROUP (sm->dlg);
+ WRect r;
const char *b_name = N_("&Abort");
int b_width;
@@ -703,7 +709,7 @@
#endif
b_width = str_term_width1 (b_name) + 4;
- wd_width = MAX (wd->cols, b_width + 6);
+ wd_width = MAX (wd->rect.cols, b_width + 6);
y = 2;
ssm->label = label_new (y++, 3, "");
@@ -712,7 +718,10 @@
b = WIDGET (button_new (y++, 3, B_CANCEL, NORMAL_BUTTON, b_name, NULL));
group_add_widget_autopos (wg, b, WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL);
- widget_set_size (wd, wd->y, wd->x, y + 2, wd_width);
+ r = wd->rect;
+ r.lines = y + 2;
+ r.cols = wd_width;
+ widget_set_size_rect (wd, &r);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/ax_append_compile_flags.m4
^
|
@@ -0,0 +1,46 @@
+# ============================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# For every FLAG1, FLAG2 it is checked whether the compiler works with the
+# flag. If it does, the flag is added FLAGS-VARIABLE
+#
+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+# CFLAGS) is used. During the check the flag is always added to the
+# current language's flags.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+# NOTE: This macro depends on the AX_APPEND_FLAG and
+# AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
+# AX_APPEND_LINK_FLAGS.
+#
+# LICENSE
+#
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 7
+
+AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+ AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
+done
+])dnl AX_APPEND_COMPILE_FLAGS
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/ax_append_flag.m4
^
|
@@ -0,0 +1,50 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+# added in between.
+#
+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
+# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+# FLAG.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 8
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+ AS_CASE([" AS_VAR_GET(FLAGS) "],
+ [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+ [
+ AS_VAR_APPEND(FLAGS,[" $1"])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+ ],
+ [
+ AS_VAR_SET(FLAGS,[$1])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/ax_check_compile_flag.m4
^
|
@@ -0,0 +1,53 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 6
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/ax_require_defined.m4
^
|
@@ -0,0 +1,37 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+# been defined and thus are available for use. This avoids random issues
+# where a macro isn't expanded. Instead the configure script emits a
+# non-fatal:
+#
+# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+# It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+# Here's an example:
+#
+# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 2
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/gnulib/mountlist.m4
^
|
@@ -1,5 +1,5 @@
-# serial 14
-dnl Copyright (C) 2002-2006, 2009-2019 Free Software Foundation, Inc.
+# serial 15
+dnl Copyright (C) 2002-2006, 2009-2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -331,8 +331,8 @@
# nowadays.
AC_DEFUN([AC_FUNC_GETMNTENT],
[
- # getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
- # -lgen on Unixware.
- AC_SEARCH_LIBS([getmntent], [sun gen])
+ # getmntent is in the standard C library on most systems, but in -lgen on
+ # Unixware.
+ AC_SEARCH_LIBS([getmntent], [gen])
AC_CHECK_FUNCS([getmntent])
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/gnulib/sys_types_h.m4
^
|
@@ -1,15 +1,16 @@
-# sys_types_h.m4 serial 9
-dnl Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# sys_types_h.m4 serial 12
+dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN_ONCE([gl_SYS_TYPES_H],
[
+ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+
dnl Use sane struct stat types in OpenVMS 8.2 and later.
AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
- AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
gl_NEXT_HEADERS([sys/types.h])
dnl Ensure the type pid_t gets defined.
@@ -30,31 +31,37 @@
AC_SUBST([WINDOWS_STAT_INODES])
])
+AC_DEFUN([gl_SYS_TYPES_H_REQUIRE_DEFAULTS],
+[
+ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS], [
+ ])
+ m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS])
+ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+])
+
AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
[
])
# This works around a buggy version in autoconf <= 2.69.
# See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
+# The 2.70 version isn't quoted properly, so override it too.
-m4_version_prereq([2.70], [], [
-
-# This is taken from the following Autoconf patch:
-# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e987d7ee695fb4294a82d987ec3dc9b974
+m4_version_prereq([2.70.1], [], [
m4_undefine([AC_HEADER_MAJOR])
AC_DEFUN([AC_HEADER_MAJOR],
[AC_CHECK_HEADERS_ONCE([sys/types.h])
AC_CHECK_HEADER([sys/mkdev.h],
- [AC_DEFINE([MAJOR_IN_MKDEV], [1],
- [Define to 1 if `major', `minor', and `makedev' are declared in
- <mkdev.h>.])])
+ [AC_DEFINE([MAJOR_IN_MKDEV], [1],
+ [Define to 1 if `major', `minor', and `makedev' are
+ declared in <mkdev.h>.])])
if test $ac_cv_header_sys_mkdev_h = no; then
AC_CHECK_HEADER([sys/sysmacros.h],
- [AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
- [Define to 1 if `major', `minor', and `makedev' are declared in
- <sysmacros.h>.])])
+ [AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
+ [Define to 1 if `major', `minor', and `makedev'
+ are declared in <sysmacros.h>.])])
fi
-])
+])# AC_HEADER_MAJOR
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-cflags.m4
^
|
@@ -3,104 +3,88 @@
dnl Check flags supported by C compiler
dnl
dnl @author Slava Zanko <slavazanko@gmail.com>
-dnl @version 2013-01-16
+dnl @modified by Andrew Borodin <aborodin@vmail.ru>
+dnl @version 2021-09-19
dnl @license GPL
dnl @copyright Free Software Foundation, Inc.
-AC_DEFUN([mc_CHECK_ONE_CFLAG],[
+AC_DEFUN([mc_CHECK_CFLAGS],[
+ AC_LANG_PUSH(C)
- AC_MSG_CHECKING([whether ${CC} accepts $1])
+ mc_configured_cflags=""
- safe_CFLAGS=$CFLAGS
+dnl AC_MSG_CHECKING([CC is $CC])
- case "$CC" in
+ dnl https://stackoverflow.com/questions/52557417/how-to-check-support-compile-flag-in-autoconf-for-clang
+ case "$CC" in
clang*)
- CFLAGS="-Werror $1"
- ;;
+ EXTRA_OPTION="-Werror"
+ ;;
*)
- CFLAGS="$1"
- ;;
- esac
-
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([], [[return 0;]])],
- [mc_check_one_cflag=yes],
- [mc_check_one_cflag=no])
-
- CFLAGS=$safe_CFLAGS
- AC_MSG_RESULT([$mc_check_one_cflag])
-
- if test x$mc_check_one_cflag = xyes; then
- mc_configured_cflags="$mc_configured_cflags $1"
- fi
-])
-
-AC_DEFUN([mc_CHECK_CFLAGS],[
- AC_LANG_PUSH(C)
-
- mc_configured_cflags=""
+ EXTRA_OPTION=""
+ ;;
+ esac
+
+ dnl Sorted -f options:
+ case "$CC" in
+ gcc*)
+ AX_APPEND_COMPILE_FLAGS([-fdiagnostics-show-option], [mc_configured_cflags])
+dnl AX_APPEND_COMPILE_FLAGS([-fno-stack-protector], [mc_configured_cflags])
+ ;;
+ *)
+ ;;
+ esac
-dnl Sorted -f options:
-dnl AC_MSG_CHECKING([CC is $CC])
-case "$CC" in
- gcc*)
- mc_CHECK_ONE_CFLAG([-fdiagnostics-show-option])
-dnl mc_CHECK_ONE_CFLAG([-fno-stack-protector])
- ;;
- *)
- ;;
-esac
-
-dnl Sorted -W options:
- mc_CHECK_ONE_CFLAG([-Wassign-enum])
- mc_CHECK_ONE_CFLAG([-Wbad-function-cast])
- mc_CHECK_ONE_CFLAG([-Wcomment])
- mc_CHECK_ONE_CFLAG([-Wconditional-uninitialized])
- mc_CHECK_ONE_CFLAG([-Wdeclaration-after-statement])
- mc_CHECK_ONE_CFLAG([-Wfloat-conversion])
- mc_CHECK_ONE_CFLAG([-Wfloat-equal])
- mc_CHECK_ONE_CFLAG([-Wformat])
- mc_CHECK_ONE_CFLAG([-Wformat-security])
- mc_CHECK_ONE_CFLAG([-Wformat-signedness])
- mc_CHECK_ONE_CFLAG([-Wimplicit])
- mc_CHECK_ONE_CFLAG([-Wimplicit-fallthrough])
- mc_CHECK_ONE_CFLAG([-Wignored-qualifiers])
- mc_CHECK_ONE_CFLAG([-Wlogical-not-parentheses])
- mc_CHECK_ONE_CFLAG([-Wmaybe-uninitialized])
- mc_CHECK_ONE_CFLAG([-Wmissing-braces])
- mc_CHECK_ONE_CFLAG([-Wmissing-declarations])
- mc_CHECK_ONE_CFLAG([-Wmissing-field-initializers])
- mc_CHECK_ONE_CFLAG([-Wmissing-format-attribute])
- mc_CHECK_ONE_CFLAG([-Wmissing-parameter-type])
- mc_CHECK_ONE_CFLAG([-Wmissing-prototypes])
- mc_CHECK_ONE_CFLAG([-Wmissing-variable-declarations])
- mc_CHECK_ONE_CFLAG([-Wnested-externs])
- mc_CHECK_ONE_CFLAG([-Wno-long-long])
- mc_CHECK_ONE_CFLAG([-Wno-unreachable-code])
- mc_CHECK_ONE_CFLAG([-Wparentheses])
- mc_CHECK_ONE_CFLAG([-Wpointer-arith])
- mc_CHECK_ONE_CFLAG([-Wpointer-sign])
- mc_CHECK_ONE_CFLAG([-Wredundant-decls])
- mc_CHECK_ONE_CFLAG([-Wreturn-type])
- mc_CHECK_ONE_CFLAG([-Wsequence-point])
- mc_CHECK_ONE_CFLAG([-Wshadow])
- mc_CHECK_ONE_CFLAG([-Wsign-compare])
-dnl mc_CHECK_ONE_CFLAG([-Wstrict-aliasing])
- mc_CHECK_ONE_CFLAG([-Wstrict-prototypes])
- mc_CHECK_ONE_CFLAG([-Wswitch])
- mc_CHECK_ONE_CFLAG([-Wswitch-default])
- mc_CHECK_ONE_CFLAG([-Wtype-limits])
- mc_CHECK_ONE_CFLAG([-Wundef])
- mc_CHECK_ONE_CFLAG([-Wuninitialized])
- mc_CHECK_ONE_CFLAG([-Wunreachable-code])
- mc_CHECK_ONE_CFLAG([-Wunused-but-set-variable])
- mc_CHECK_ONE_CFLAG([-Wunused-function])
- mc_CHECK_ONE_CFLAG([-Wunused-label])
- mc_CHECK_ONE_CFLAG([-Wunused-parameter])
- mc_CHECK_ONE_CFLAG([-Wunused-result])
- mc_CHECK_ONE_CFLAG([-Wunused-value])
- mc_CHECK_ONE_CFLAG([-Wunused-variable])
- mc_CHECK_ONE_CFLAG([-Wwrite-strings])
+ dnl Sorted -W options:
+ AX_APPEND_COMPILE_FLAGS([-Wassign-enum], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wcomment], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wconditional-uninitialized], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wdeclaration-after-statement], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wfloat-conversion], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wfloat-equal], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wformat], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wformat-security], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wformat-signedness], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wimplicit], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wimplicit-fallthrough], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wignored-qualifiers], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wlogical-not-parentheses], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmaybe-uninitialized], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-braces], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-declarations], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-field-initializers], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-format-attribute], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-parameter-type], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-prototypes], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wmissing-variable-declarations], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wnested-externs], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wno-long-long], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wno-unreachable-code], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wparentheses], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wpointer-arith], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wpointer-sign], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wredundant-decls], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wreturn-type], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wsequence-point], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wshadow], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wsign-compare], [mc_configured_cflags], [$EXTRA_OPTION])
+dnl AX_APPEND_COMPILE_FLAGS([-Wstrict-aliasing], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wstrict-prototypes], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wswitch], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wswitch-default], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wtype-limits], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wundef], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wuninitialized], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunreachable-code], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-but-set-variable], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-function], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-label], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-parameter], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-result], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-value], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wunused-variable], [mc_configured_cflags], [$EXTRA_OPTION])
+ AX_APPEND_COMPILE_FLAGS([-Wwrite-strings], [mc_configured_cflags], [$EXTRA_OPTION])
AC_LANG_POP()
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-subshell.m4
^
|
@@ -8,20 +8,25 @@
[ --with-subshell Compile in concurrent subshell @<:@yes@:>@
--with-subshell=optional Don't run concurrent shell by default @<:@no@:>@],
[
- result=no
- if test x$withval = xoptional; then
- AC_DEFINE(SUBSHELL_OPTIONAL, 1, [Define to make subshell support optional])
- result="optional"
- fi
- if test x$withval = xyes; then
- result="yes"
- fi
+ case "x$withval" in
+ xyes)
+ result="yes"
+ ;;
+ xoptional)
+ result="optional"
+ ;;
+ *)
+ result="no"
+ ;;
+ esac
],
[
dnl Default: enable the subshell support
result="yes"
])
+ AC_MSG_RESULT([$result])
+
if test "x$result" != xno; then
AC_DEFINE(ENABLE_SUBSHELL, 1, [Define to enable subshell support])
@@ -33,9 +38,12 @@
LIBS="$LIBS -lutil"]
)
)
+
+ if test "x$result" = xoptional; then
+ AC_DEFINE(SUBSHELL_OPTIONAL, 1, [Define to make subshell support optional])
+ fi
fi
- AC_MSG_RESULT([$result])
subshell="$result"
AM_CONDITIONAL(ENABLE_SUBSHELL, [test "x$result" != xno])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-tests.m4
^
|
@@ -22,7 +22,7 @@
else
PKG_CHECK_MODULES(
CHECK,
- [check >= 0.9.8],
+ [check >= 0.9.10],
[
have_check=yes
tests_msg="yes"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-use-termcap.m4
^
|
@@ -18,15 +18,11 @@
ac_save_LIBS="$LIBS"
LIBS="$LIBS -lslang"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_SLANG_SLANG_H
-#include <slang/slang.h>
-#else
#include <slang.h>
-#endif
- ]],
- [[SLtt_get_terminfo(); SLtt_tgetflag((char*)"");]])],
- [mc_cv_slang_termcap=no],
- [mc_cv_slang_termcap=yes])
+ ]],
+ [[SLtt_get_terminfo(); SLtt_tgetflag((char*)"");]])],
+ [mc_cv_slang_termcap=no], [mc_cv_slang_termcap=yes])
+
LIBS="$ac_save_LIBS"
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-version.m4
^
|
@@ -3,36 +3,19 @@
dnl Get current version of Midnight Commander from git tags
dnl
dnl @author Slava Zanko <slavazanko@gmail.com>
-dnl @version 2009-12-30
+dnl @version 2021-04-04
dnl @license GPL
dnl @copyright Free Software Foundation, Inc.
+dnl @modified Andrew Borodin <aborodin@vmail.ru>
AC_DEFUN([mc_VERSION],[
- if test ! -f ${srcdir}/version.h; then
- ${srcdir}/maint/utils/version.sh ${srcdir}
- fi
- if test -f ${srcdir}/version.h; then
- VERSION=$(grep '^#define MC_CURRENT_VERSION' ${srcdir}/version.h | sed 's/.*"\(.*\)"$/\1/')
+ if test -f ${srcdir}/mc-version.h; then
+ VERSION=$(grep '^#define MC_CURRENT_VERSION' ${srcdir}/mc-version.h | sed 's/.*"\(.*\)"$/\1/')
else
VERSION="unknown"
fi
- AC_SUBST(VERSION)
-
- dnl Version and Release without dashes for the distro packages
- DISTR_VERSION=`echo $VERSION | sed 's/^\([[^\-]]*\).*/\1/'`
- DISTR_RELEASE=`echo $VERSION | sed 's/^[[^\-]]*\-\(.*\)/\1/' | sed 's/-/./g'`
-
- if test `echo $VERSION | grep -c '\-pre'` -ne 0; then
- DISTR_RELEASE="0.$DISTR_RELEASE"
- else
- if test `echo $VERSION | grep -c '\-'` -eq 0; then
- DISTR_RELEASE=1
- else
- DISTR_RELEASE="2.$DISTR_RELEASE"
- fi
- fi
-
- AC_SUBST(DISTR_VERSION)
- AC_SUBST(DISTR_RELEASE)
+ dnl Version without dashes for the man page
+ MAN_VERSION=`echo $VERSION | sed 's/^\([[^\-]]*\).*/\1/'`
+ AC_SUBST(MAN_VERSION)
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-vfs.m4
^
|
@@ -17,7 +17,6 @@
m4_include([m4.include/vfs/mc-vfs-undelfs.m4])
m4_include([m4.include/vfs/mc-vfs-tarfs.m4])
m4_include([m4.include/vfs/mc-vfs-cpiofs.m4])
-m4_include([m4.include/vfs/mc-vfs-samba.m4])
dnl mc_VFS_CHECKS
dnl Check for various functions needed by libvfs.
@@ -45,6 +44,7 @@
AC_CHECK_RPC
enable_vfs_net=yes
+ AC_DEFINE(ENABLE_VFS_NET, [1], [Define to enable network VFSes support])
fi
])
@@ -75,13 +75,12 @@
mc_VFS_FTP
mc_VFS_SFS
mc_VFS_SFTP
- mc_VFS_SMB
mc_VFS_TARFS
mc_VFS_UNDELFS
AM_CONDITIONAL(ENABLE_VFS, [test x"$enable_vfs" = x"yes"])
- if test x"$enable_vfs_ftp" = x"yes" -o x"$enable_vfs_fish" = x"yes" -o x"$enable_vfs_smb" = x"yes"; then
+ if test x"$enable_vfs_ftp" = x"yes" -o x"$enable_vfs_fish" = x"yes" -o x"$enable_vfs_sftp" = x"yes"; then
mc_ENABLE_VFS_NET
fi
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/mc-with-screen-slang.m4
^
|
@@ -1,211 +1,28 @@
-dnl Check the header
-AC_DEFUN([mc_CHECK_SLANG_HEADER], [
- AC_MSG_CHECKING([for slang/slang.h])
- AC_PREPROC_IFELSE(
- [
- AC_LANG_PROGRAM([#include <slang/slang.h>], [return 0;])
- ],
- [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SLANG_SLANG_H, 1, [Define to use slang.h])
- found_slang=yes
- ],
- [
- AC_MSG_RESULT(no)
- ]
- )
-])
-
dnl
-dnl Check if the system S-Lang library can be used.
-dnl If not, and $1 is "strict", exit.
+dnl Use the slang library.
dnl
-AC_DEFUN([mc_CHECK_SLANG_BY_PATH], [
-
- param_slang_inc_path=[$1]
- param_slang_lib_path=[$2]
-
- if test x"$param_slang_inc_path" != x; then
- ac_slang_inc_path="-I"$param_slang_inc_path
- fi
-
- if test x"$param_slang_lib_path" != x; then
- ac_slang_lib_path="-L"$param_slang_lib_path
+AC_DEFUN([mc_WITH_SLANG], [
+ with_screen=slang
+ found_slang=no
+ PKG_CHECK_MODULES(SLANG, [slang >= 2.0], [found_slang=yes], [:])
+ if test x"$found_slang" = xno; then
+ AC_MSG_ERROR([S-Lang >= 2.0.0 library not found])
fi
- saved_CPPFLAGS="$CPPFLAGS"
- saved_LDFLAGS="$LDFLAGS"
+ MCLIBS="$SLANG_LIBS $MCLIBS"
+ CPPFLAGS="$SLANG_CFLAGS $CPPFLAGS"
- CPPFLAGS="$saved_CPPFLAGS $ac_slang_inc_path"
- LDFLAGS="$saved_LDFLAGS $ac_slang_lib_path"
-
- AC_MSG_CHECKING([for slang.h])
- AC_PREPROC_IFELSE(
- [
- AC_LANG_PROGRAM([#include <slang.h>], [return 0;])
- ],
- [
- AC_MSG_RESULT(yes)
- if test x"$ac_slang_inc_path" = x; then
- ac_slang_inc_path="-I/usr/include"
- fi
- if test x"$ac_slang_lib_path" = x; then
- ac_slang_lib_path="-L/usr/lib"
- fi
- found_slang=yes
- AC_DEFINE(HAVE_SLANG_H, 1, [Define to use slang.h])
-
- ],
- [
- AC_MSG_RESULT(no)
-
- mc_CHECK_SLANG_HEADER
- if test x"$found_slang" = xno; then
- error_msg_slang="S-Lang header not found"
- else
- if test x"$ac_slang_inc_path" = x; then
- ac_slang_inc_path="-I/usr/include"
- fi
- if test x"$ac_slang_lib_path" = x; then
- ac_slang_lib_path="-L/usr/lib"
- fi
- CPPFLAGS="-DHAVE_SLANG_SLANG_H $CPPFLAGS"
- fi
- ],
- )
- dnl check if S-Lang have version 2.0 or newer
- if test x"$found_slang" = x"yes"; then
- AC_MSG_CHECKING([for S-Lang version 2.0 or newer])
- AC_RUN_IFELSE([AC_LANG_SOURCE([
-#ifdef HAVE_SLANG_SLANG_H
-#include <slang/slang.h>
-#else
-#include <slang.h>
-#endif
-int main (void)
-{
-#if SLANG_VERSION >= 20000
- return 0;
-#else
- return 1;
-#endif
-}
-])],
- [mc_slang_is_valid_version=yes],
- [mc_slang_is_valid_version=no],
- [
- if test -f "$param_slang_inc_path/slang/slang.h" ; then
- hdr_file="$param_slang_inc_path/slang/slang.h"
- else
- hdr_file="$param_slang_inc_path/slang.h"
- fi
- mc_slang_is_valid_version=`grep '^#define SLANG_VERSION[[:space:]]' "$hdr_file"| sed s'/^#define SLANG_VERSION[[:space:]]*//'`
- if test "$mc_slang_is_valid_version" -ge "20000"; then
- mc_slang_is_valid_version=yes
- else
- mc_slang_is_valid_version=no
- fi
- ]
- )
- if test x$mc_slang_is_valid_version = xno; then
- found_slang=no
- error_msg_slang="S-Lang library version 2.0 or newer not found"
- fi
- AC_MSG_RESULT($mc_slang_is_valid_version)
- fi
dnl Check if termcap is needed.
- dnl This check must be done before anything is linked against S-Lang.
if test x"$found_slang" = x"yes"; then
mc_SLANG_TERMCAP
if test x"$mc_cv_slang_termcap" = x"yes"; then
- saved_CPPFLAGS="$saved_CPPFLAGS "
- saved_LDFLAGS="-ltermcap $saved_LDFLAGS"
- fi
-
- dnl Check the library
- unset ac_cv_lib_slang_SLang_init_tty
- AC_CHECK_LIB(
- [slang],
- [SLang_init_tty],
- [:],
- [
- found_slang=no
- error_msg_slang="S-Lang library not found"
- ]
- )
- fi
-
- if test x"$found_slang" = x"yes"; then
- MCLIBS="$ac_slang_lib_path -lslang $MCLIBS"
- dnl do not reset CPPFLAGS
- dnl if CPPFLAGS are reset then cpp does not find the specified header
- CPPFLAGS="$ac_slang_inc_path $saved_CPPFLAGS"
- LDFLAGS="$saved_LDFLAGS"
- else
- CPPFLAGS="$saved_CPPFLAGS"
- LDFLAGS="$saved_LDFLAGS"
- fi
-])
-
-dnl
-dnl Use the slang library.
-dnl
-AC_DEFUN([mc_WITH_SLANG], [
- with_screen=slang
- found_slang=yes
- error_msg_slang=""
-
- AC_ARG_WITH([slang-includes],
- AS_HELP_STRING([--with-slang-includes=@<:@DIR@:>@],
- [set path to S-Lang includes @<:@default=/usr/include@:>@; make sense only if --with-screen=slang]
- ),
- [ac_slang_inc_path="$withval"],
- [ac_slang_inc_path=""]
- )
-
- AC_ARG_WITH([slang-libs],
- AS_HELP_STRING([--with-slang-libs=@<:@DIR@:>@],
- [set path to S-Lang library @<:@default=/usr/lib@:>@; make sense only if --with-screen=slang]
- ),
- [ac_slang_lib_path="$withval"],
- [ac_slang_lib_path=""]
- )
- if test x"$ac_slang_lib_path" != x -o x"$ac_slang_inc_path" != x; then
- echo 'checking S-Lang headers in specified place ...'
- mc_CHECK_SLANG_BY_PATH([$ac_slang_inc_path],[$ac_slang_lib_path])
- else
- found_slang=no
- PKG_CHECK_MODULES(SLANG, [slang >= 2.0], [found_slang=yes], [:])
- if test x"$found_slang" = "xyes"; then
- MCLIBS="$pkg_cv_SLANG_LIBS $MCLIBS"
- CPPFLAGS="$pkg_cv_SLANG_CFLAGS $CPPFLAGS"
- fi
- fi
-
- if test x"$found_slang" = "xno"; then
- found_slang=yes
- ac_slang_inc_path="/usr/include"
- ac_slang_lib_path="/usr/lib"
-
- echo 'checking S-Lang headers in /usr ...'
- mc_CHECK_SLANG_BY_PATH([$ac_slang_inc_path],[$ac_slang_lib_path])
- if test x"$found_slang" = "xno"; then
- found_slang=yes
- ac_slang_inc_path="/usr/local/include"
- ac_slang_lib_path="/usr/local/lib"
-
- echo 'checking S-Lang headers in /usr/local ...'
- mc_CHECK_SLANG_BY_PATH( $ac_slang_inc_path , $ac_slang_lib_path )
- if test x"$found_slang" = "xno"; then
- AC_MSG_ERROR([$error_msg_slang])
- fi
+ MCLIBS="$MCLIBS -ltermcap"
fi
fi
screen_type=slang
screen_msg="S-Lang"
- AC_DEFINE(HAVE_SLANG, 1, [Define to use S-Lang library for screen management])
- mc_CHECK_SLANG_HEADER
+ AC_DEFINE(HAVE_SLANG, 1, [Define to use S-Lang library for screen management])
])
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/vfs/mc-vfs-sftp.m4
^
|
@@ -4,7 +4,7 @@
AC_ARG_ENABLE([vfs-sftp],
AS_HELP_STRING([--enable-vfs-sftp], [Support for SFTP filesystem [auto]]))
if test "$enable_vfs" != "no" -a x"$enable_vfs_sftp" != x"no"; then
- PKG_CHECK_MODULES(LIBSSH, [libssh2 >= 1.2.5], [found_libssh=yes], [:])
+ PKG_CHECK_MODULES(LIBSSH, [libssh2 >= 1.2.8], [found_libssh=yes], [:])
if test x"$found_libssh" = "xyes"; then
mc_VFS_ADDNAME([sftp])
AC_DEFINE([ENABLE_VFS_SFTP], [1], [Support for SFTP filesystem])
@@ -13,7 +13,7 @@
else
if test x"$enable_vfs_sftp" = x"yes"; then
dnl user explicitly requested feature
- AC_MSG_ERROR([libssh2 >= 1.2.5 library not found])
+ AC_MSG_ERROR([libssh2 >= 1.2.8 library not found])
fi
enable_vfs_sftp="no"
fi
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/m4.include/vfs/mc-vfs-undelfs.m4
^
|
@@ -5,41 +5,21 @@
dnl Will set EXT2FS_UNDEL_LIBS to required libraries.
AC_DEFUN([mc_UNDELFS_CHECKS], [
- ext2fs_undel=no
- EXT2FS_UNDEL_LIBS=
- AC_CHECK_HEADERS([ext2fs/ext2_fs.h linux/ext2_fs.h], [ext2_fs_h=yes; break])
- if test x"$ext2_fs_h" = xyes; then
- AC_CHECK_HEADERS([ext2fs/ext2fs.h], [ext2fs_ext2fs_h=yes], ,
- [
-#include <stdio.h>
-#ifdef HAVE_EXT2FS_EXT2_FS_H
-#include <ext2fs/ext2_fs.h>
-#else
-#undef umode_t
-#include <linux/ext2_fs.h>
-#endif
- ])
- if test x"$ext2fs_ext2fs_h" = xyes; then
- ext2fs_undel=yes
- EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err"
- AC_CHECK_TYPE([ext2_ino_t], ,
- [AC_DEFINE_UNQUOTED([ext2_ino_t], [ino_t],
- [Define to ino_t if undefined.])],
- [
-#include <errno.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#ifdef HAVE_EXT2FS_EXT2_FS_H
-#include <ext2fs/ext2_fs.h>
-#else
-#undef umode_t
-#include <linux/ext2_fs.h>
-#endif
-#include <ext2fs/ext2fs.h>
- ])
+ ext2fs_undel=no
+ EXT2FS_UNDEL_LIBS=
+
+ dnl Use result of mc_EXT2FS_ATTR that was called earlier
+ if test "x$ext2fs_attr_msg" = "xyes"; then
+ com_err=no
+
+ PKG_CHECK_MODULES(COM_ERR, [com_err >= 1.42.4], [com_err=yes], [:])
+
+ if test x"$com_err" = "xyes"; then
+ EXT2FS_UNDEL_LIBS="$EXT2FS_LIBS $COM_ERR_LIBS"
+ ext2fs_undel=yes
+ fi
fi
- fi
+
])
dnl
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/docs/RELEASE_PROCEDURE
^
|
@@ -48,7 +48,7 @@
When I Want To: complete the release
-Then I Should: upload source packages and checksums to http://www.midnight-commander.org/downloads
+Then I Should: upload source packages and checksums to https://www.midnight-commander.org/downloads
and update Wiki start page with ${next_version} release number
and write an announcement in mc-dev and mc-users mailists: list user visible changes (bugs and features)
and close milestone with '${last_version}' version
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/find-dup-includes/exclude-list.cfg
^
|
@@ -1,3 +1,2 @@
src/filemanager/mountlist.c
-src/vfs/smbfs/helpers/lib/netmask.c
lib/tty/key.c
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/README.md
^
|
@@ -0,0 +1,42 @@
+# Translations maintenance
+
+## Requirements
+
+* tx
+ - Transifex client
+ - https://developers.transifex.com/docs/cli
+* po4a
+ - Tool for converting translations between PO and other formats
+ - https://po4a.org
+
+## Configuration
+
+First time you run `tx` command it will ask you for your API token and create `~/.transifexrc`.
+
+## Maintenance
+
+Check the `*-from-transifex.py` (run by hand) and `*-to-transifex.py` (used in CI) scripts.
+
+Wrapper for modern Transifex client:
+
+```shell
+#!/bin/sh
+
+touch ~/.transifexrc
+
+export XUID=$(id -u)
+export XGID=$(id -g)
+
+docker run \
+ --rm -i \
+ --user $XUID:$XGID \
+ --volume="/etc/group:/etc/group:ro" \
+ --volume="/etc/passwd:/etc/passwd:ro" \
+ --volume="/etc/shadow:/etc/shadow:ro" \
+ --volume $(pwd):/app \
+ --volume ~/.transifexrc:/.transifexrc \
+ --volume /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt \
+ transifex/txcli \
+ --root-config /.transifexrc \
+ "$@"
+```
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/config.d/mc.hint/po4a.cfg
^
|
@@ -1,4 +1,5 @@
-[po4a_langs] @translations@
-[po4a_paths] var.d/$master/mc.doc.pot $lang:var.d/$master/$lang.po
+[po4a_paths] var.d/$master/mc.hint.pot @translations@
-[type:man] @srcdir@/doc/hints/$(docfile) $lang:@srcdir@/doc/hints/l10n/$(docfile).$lang
+[options] --master-charset UTF-8 --localized-charset UTF-8 --keep 5 --wrap-po no
+
+[type:asciidoc] @srcdir@/doc/hints/mc.hint @resources@
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/config.d/mc.hint/tx.config
^
|
@@ -1,8 +1,7 @@
[main]
host = https://www.transifex.com
-[mc.mc_hint]
+[o:mc:p:mc:r:mc-hint--master]
file_filter = <lang>.po
-source_file = mc.doc.pot
+source_file = mc.hint.pot
source_lang = en
-
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/config.d/mc.pot/tx.config
^
|
@@ -0,0 +1,8 @@
+[main]
+host = https://www.transifex.com
+
+[o:mc:p:mc:r:mc-pot--master]
+file_filter = <lang>.po
+source_file = mc.pot
+source_lang = en
+
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/hints-from-transifex.py
^
|
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+
+import glob
+import subprocess
+from pathlib import Path
+from textwrap import wrap
+
+from translation_utils import create_po4a_config, init_sync_dir
+
+RESOURCE_NAME = "mc.hint"
+
+SCRIPT_DIR = Path(__file__).parent
+SOURCE_DIR = SCRIPT_DIR.parent.parent.parent
+
+
+def unwrap_paragraphs():
+ hint_files = glob.glob(str(SOURCE_DIR / "doc" / "hints" / "l10n" / "mc.hint.*"))
+ for hint_file in map(Path, hint_files):
+ lines = hint_file.read_text().split("\n\n")
+ hint_file.write_text("\n\n".join("".join(wrap(line, width=1024)) for line in lines) + "\n")
+
+
+sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME)
+
+subprocess.run(("tx", "pull", "--all", "--force"), cwd=sync_dir, check=True)
+
+po4a_config = create_po4a_config(sync_dir, SCRIPT_DIR, SOURCE_DIR, RESOURCE_NAME)
+
+subprocess.run(("po4a", str(po4a_config)), cwd=SCRIPT_DIR, check=True)
+
+unwrap_paragraphs()
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/hints-to-transifex.py
^
|
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+
+import subprocess
+from pathlib import Path
+
+from translation_utils import create_po4a_config, init_sync_dir
+
+RESOURCE_NAME = "mc.hint"
+
+SCRIPT_DIR = Path(__file__).parent
+SOURCE_DIR = SCRIPT_DIR.parent.parent.parent
+
+sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME)
+
+po4a_config = create_po4a_config(sync_dir, SCRIPT_DIR, SOURCE_DIR, RESOURCE_NAME)
+
+subprocess.run(("po4a", str(po4a_config)), cwd=SCRIPT_DIR, check=True)
+
+subprocess.run(("tx", "push", "--source"), cwd=sync_dir, check=True)
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/po-from-transifex.py
^
|
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import glob
+import subprocess
+from pathlib import Path
+
+from translation_utils import get_translations, init_sync_dir
+
+RESOURCE_NAME = "mc.pot"
+
+SCRIPT_DIR = Path(__file__).parent
+SOURCE_DIR = SCRIPT_DIR.parent.parent.parent
+PO_DIR = SOURCE_DIR / "po"
+
+
+def strip_message_locations(work_dir: Path):
+ for po_file in (work_dir / filename for filename in glob.glob("*.po", root_dir=work_dir)):
+ po_file.write_text(
+ "".join(line for line in po_file.read_text().splitlines(keepends=True) if not line.startswith("#:"))
+ )
+
+
+def copy_translations_to_source_dir(source_dir: Path, target_dir: Path):
+ for po_file in (source_dir / filename for filename in glob.glob("*.po", root_dir=source_dir)):
+ (target_dir / po_file.name).write_text(po_file.read_text())
+
+
+def update_linguas(po_dir: Path):
+ translations = get_translations(po_dir)
+ (po_dir / "LINGUAS").write_text("# List of available translations\n" + "\n".join(translations) + "\n")
+
+
+sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME)
+
+subprocess.run(("tx", "pull", "--all", "--force"), cwd=sync_dir, check=True)
+
+strip_message_locations(sync_dir)
+
+copy_translations_to_source_dir(sync_dir, PO_DIR)
+
+update_linguas(PO_DIR)
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/po-to-transifex.py
^
|
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import subprocess
+from pathlib import Path
+
+from translation_utils import init_sync_dir
+
+RESOURCE_NAME = "mc.pot"
+
+SCRIPT_DIR = Path(__file__).parent
+SOURCE_DIR = SCRIPT_DIR.parent.parent.parent
+
+sync_dir = init_sync_dir(SCRIPT_DIR, RESOURCE_NAME)
+
+# Copy mc.pot to the working directory
+(sync_dir / RESOURCE_NAME).write_text((SOURCE_DIR / "po" / RESOURCE_NAME).read_text())
+
+subprocess.run(("tx", "push", "--source"), cwd=sync_dir, check=True)
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/sync-transifex/translation_utils.py
^
|
@@ -0,0 +1,33 @@
+import glob
+from pathlib import Path
+
+
+def get_config_file(root_dir: Path, resource: str, name: str) -> Path:
+ return root_dir / "config.d" / resource / name
+
+
+def init_sync_dir(root_dir: Path, resource: str) -> Path:
+ tx_dir = root_dir / "var.d" / resource / ".tx"
+ tx_dir.mkdir(parents=True, exist_ok=True)
+ (tx_dir / "config").write_text(get_config_file(root_dir, resource, "tx.config").read_text())
+ return tx_dir.parent
+
+
+def create_po4a_config(sync_dir: Path, script_dir: Path, source_dir: Path, resource: str) -> Path:
+ langs = get_translations(sync_dir)
+
+ config = get_config_file(script_dir, resource, "po4a.cfg").read_text()
+
+ config = config.replace("@translations@", " ".join(f"{lang}:var.d/$master/{lang}.po" for lang in langs))
+ config = config.replace("@resources@", " ".join(f"{lang}:@srcdir@/doc/hints/l10n/mc.hint.{lang}" for lang in langs))
+
+ config = config.replace("@srcdir@", str(source_dir))
+
+ config_path = sync_dir / "po4a.cfg"
+ config_path.write_text(config)
+
+ return config_path
+
+
+def get_translations(root_dir: Path) -> list[str]:
+ return sorted(Path(filename).name.removesuffix(".po") for filename in glob.glob("*.po", root_dir=root_dir))
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/maint/utils/update-years.sh
^
|
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+YEAR=`date +%Y`
+
+SOURCES="`find lib src tests -name '*.c'`"
+
+LINE="Copyright (C)"
+
+for i in "$SOURCES"; do
+ # replace year: XXXX-YYYY -> XXXX-ZZZZ
+ # add year: XXXX -> XXXX-ZZZZ
+ sed -i -e "
+ 1,20 {
+ /$LINE/s/-[0-9]\{4\}$/-$YEAR/
+ };
+ 1,20 {
+ /$LINE/s/ [0-9]\{4\}$/&-$YEAR/
+ }" $i
+done
+
+# special case
+sed -i -e "/$LINE/s/-[0-9]\{4\} the/-$YEAR the/" src/editor/editwidget.c
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/Makefile.am
^
|
@@ -2,7 +2,7 @@
SUBDIRS = ext.d macros.d skins syntax
-LIBFILES_OUT = mc.ext
+LIBFILES_OUT = mc.ext.ini
noinst_DATA = xterm.ad
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/ext.d/doc.sh.in
^
|
@@ -87,7 +87,7 @@
djvu)
djvused -e print-pure-txt "${MC_EXT_FILENAME}"
;;
- epub)
+ ebook)
einfo -v "${MC_EXT_FILENAME}"
;;
*)
@@ -197,7 +197,7 @@
comic)
cbrpager "${MC_EXT_FILENAME}" &
;;
- epub)
+ ebook)
lucidor "${MC_EXT_FILENAME}" >/dev/null &
;;
*)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/ext.d/misc.sh.in
^
|
@@ -20,7 +20,7 @@
fi
;;
cat)
- /bin/cat "${MC_EXT_FILENAME}" 2>/dev/null
+ cat "${MC_EXT_FILENAME}" 2>/dev/null
;;
ar)
file "${MC_EXT_FILENAME}" && nm -C "${MC_EXT_FILENAME}"
@@ -39,7 +39,7 @@
dbview -b "${MC_EXT_FILENAME}"
;;
sqlite)
- sqlite3 "${MC_EXT_FILENAME}" .dump
+ sqlite3 "file:${MC_EXT_FILENAME}?immutable=1" .dump
;;
mo)
msgunfmt "${MC_EXT_FILENAME}" || \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/ext.d/sound.sh
^
|
@@ -12,6 +12,10 @@
filetype=$1
case "${filetype}" in
+ common)
+ mediainfo "${MC_EXT_FILENAME}"
+ ;;
+
mp3)
mpg123 -vtn1 "${MC_EXT_FILENAME}" 2>&1 | \
sed -n '/^Title/,/^Comment/p;/^MPEG/,/^Audio/p'
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/filehighlight.ini
^
|
@@ -16,9 +16,6 @@
[symlink]
type=SYMLINK
-[hardlink]
- type=HARDLINK
-
[core]
regexp=^core\\.*\\d*$
extensions_case=true
@@ -31,16 +28,20 @@
extensions=7z;Z;ace;apk;arc;arj;ark;bz2;cab;cpio;deb;gz;lha;lz;lz4;lzh;lzma;rar;rpm;tar;tbz;tbz2;tgz;tlz;txz;tzst;xz;zip;zoo;zst
[doc]
- extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;letter;lsm;mail;man;me;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt
+ extensions=chm;css;ctl;diz;doc;docm;docx;dtd;fodg;fodp;fods;fodt;htm;html;json;letter;lsm;mail;man;markdown;md;me;mkd;msg;nroff;odg;odp;ods;odt;pdf;po;ppt;pptm;pptx;ps;rtf;sgml;shtml;tex;text;txt;xls;xlsm;xlsx;xml;xsd;xslt
[source]
- extensions=ada;asm;awk;bash;c;caml;cc;cgi;cpp;cxx;diff;erl;go;h;hh;hi;hpp;hs;inc;jasm;jav;java;js;m4;mak;mjs;ml;mli;mll;mlp;mly;pas;patch;php;phps;pl;pm;prg;py;rb;s;sas;sh;sl;st;swift;tcl;tk;xq
+ extensions=ada;asm;awk;bash;c;c++;caml;cc;cgi;cpp;cxx;diff;erl;go;h;h++;hh;hi;hpp;hs;inc;jasm;jav;java;js;m4;mak;mjs;ml;mli;mll;mlp;mly;pas;patch;php;phps;pl;pm;prg;py;rb;s;sas;sh;sl;st;swift;tcl;tk;tsx;xq
[media]
extensions=3gp;aac;ac3;ape;asf;avi;dts;flac;flv;it;m3u;m4a;m4v;med;mid;midi;mkv;mod;mol;mov;mp2;mp3;mp4;mpeg;mpg;mpl;ogg;ogv;opus;s3m;ts;umx;vob;wav;webm;wma;wmv;xm
[graph]
- extensions=ai;bmp;cdr;eps;gif;ico;jpeg;jpg;omf;pcx;pic;png;rle;svg;tif;tiff;webp;wmf;xbm;xcf;xpm
+ extensions=ai;avif;bmp;cdr;eps;gif;ico;jp2;jpeg;jpg;jxl;heic;heif;omf;pcx;pic;png;psb;psd;rle;svg;tif;tiff;webp;wmf;xbm;xcf;xpm
[database]
extensions=cdx;dat;db;dbf;dbi;dbx;fox;mdb;mdn;mdx;msql;mssql;pgsql;sql;ssql
+
+# Hardlinks have lowest precenence to make it colored by file type or extension
+[hardlink]
+ type=HARDLINK
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/mc.default.keymap
^
|
@@ -52,7 +52,6 @@
# Filter =
# ConnectFish =
# ConnectFtp =
-# ConnectSmb =
# Undelete =
EditorViewerHistory = alt-shift-e
ExtendedKeyMap = ctrl-x
@@ -128,6 +127,7 @@
# SortByExt =
# SortBySize =
# SortByMTime =
+# Filter =
# ScrollLeft =
# ScrollRight =
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/mc.emacs.keymap
^
|
@@ -52,7 +52,6 @@
# Filter =
# ConnectFish =
# ConnectFtp =
-# ConnectSmb =
# Undelete =
EditorViewerHistory = alt-shift-e
ExtendedKeyMap = ctrl-x
@@ -128,6 +127,7 @@
# SortByExt =
# SortBySize =
# SortByMTime =
+# Filter =
# ScrollLeft =
# ScrollRight =
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/mc.ext.ini.in
^
|
@@ -0,0 +1,1126 @@
+# Midnight Commander 4.0 extension file
+#
+# Warning: The structure of this file has been completely changed with the version 4.0!
+#
+# All lines starting with # or empty lines are ignoted.
+#
+# IMPORTANT: mc scans this file only upon first use or after editing it using the
+# mc "Edit extension file" command (F9-c-e). If you edit this file in any other way
+# while mc is running, you will need to press F9-c-e and exit the editor for your
+# changes to take effect, or exit mc and start it again.
+#
+# Section name can be anything with following exceptions:
+# there are two reserved section names:
+# mc.ext.ini
+# Default
+# special name pattern:
+# Include/xxxxx
+# See below for more details.
+#
+# Section [mc.ext.ini] is mandatory. It contains file metadata.
+# "Version" parameter is mandatory. It contains the file format version.
+#
+# Section [Default] is optional. It is applied only if no other match was found.
+#
+# Sections like [Include/xxxx] can be referenced as "Include=xxxx" from other sections.
+# Section [Include/xxxx] can be located as before as after sections that point to it.
+#
+# Sections are processed from top to bottom, thus the order is important.
+# If there are more than one sections with the same name in this file, the first
+# section will be used.
+#
+# [Default] should be a catch-all action and come last.
+#
+# A section describing a file can contain following keys:
+#
+# File descriptions:
+#
+# Directory
+# Matches any directory matching regular expression.
+# Always case sensitive.
+# This key has the highest priority over other keys. If this key is in a section,
+# other keys are ignored.
+#
+# Type
+# Matches files if `file %f` matches regular expression
+# (the "filename:" part is removed from `file %f` output).
+# Ignored if the "file" utility isn't used (not found during the configure step
+# or disabled in the ini-file).
+#
+# TypeIgnoreCase [true|false]
+# Defines whether the Type value is case sensitive or not.
+# If absent, Type is case sensitive.
+#
+# Regex
+# An extended regular expression
+# Please note that we are using the PCRE library and thus \| matches
+# the literal | and | has a special meaning (or), and () have a special meaning
+# and \( \) stand for literal ( ).
+#
+# Example:
+# Regex=\.t(ar\.lzma|lz)$
+# matches *.tar.lzma or *.tlz.
+#
+# RegexIgnoreCase [true|false]
+# Defines whether the Regex value is case sensitive or not.
+# If absent, Regex is case sensitive.
+#
+# Shell
+# Describes an extension when starting with a dot (no wildcards).
+#
+# Example:
+# Shell=.tar
+# matches *.tar.
+#
+# If it doesn't start with a dot, it matches only a file of that name.
+#
+# If both keys Regex and Shell are in the same section, Regex is used
+# and Shell is ignored.
+#
+# ShellIgnoreCase [true|false]
+# Defines whether the Shell value is case sensitive or not.
+# If absent, Shell is case sensitive.
+#
+# Include
+# Reference to another section.
+#
+# Example:
+# Include=video
+# points to the [Include/video] section.
+#
+# Commands:
+#
+# Open
+# Execute the command if the user presses Enter or doubleclicks it.
+#
+# View
+# Execute the command if the user presses F3.
+#
+# Edit
+# Execute the command if the user presses F4.
+#
+# All commands are ignored if the section contains the Include key.
+#
+# Command is any one-line shell command, with the following substitutions:
+#
+# %%
+# The % character
+#
+# %p
+# Name of the current file without the path.
+# Also provided to the external application as MC_EXT_BASENAME environment variable.
+#
+# %f
+# Name of the current file. Unlike %p, if the file is located on a non-local
+# virtual filesystem, that is either tarfs or ftpfs, then the file will be
+# temporarily copied into a local directory and %f will be the full path
+# to this local temporary file.
+# If you don't want to get a local copy and want to get the virtual fs path
+# (like /ftp://ftp.cvut.cz/pub/hungry/xword), then use %d/%p instead of %f.
+# Also provided to the external application as MC_EXT_FILENAME environment variable.
+#
+# %d
+# Name of the current directory without the trailing slash (`pwd`).
+# Also provided to the external application as MC_EXT_CURRENTDIR environment variable.
+#
+# %s
+# "Selected files", that is space separated list of tagged files if any or the name
+# of the current file.
+# Also provided to the external application as MC_EXT_SELECTED environment variable.
+#
+# %t
+# List of the tagged files.
+# Also provided to the external application as MC_EXT_ONLYTAGGED environment variable.
+#
+# %u
+# List of the tagged files (they will be untaged after the command is executed).
+#
+# (If the letter following the % is uppercase, then it refers to the opposite panel.
+# But you shouldn't have to use it in this file.)
+#
+# %cd
+# The rest is a path mc should change into (cd won't work, since it's a child process).
+# %cd handles even vfs names.
+#
+# %view
+# The command output will be piped into mc's internal file viewer. If you use
+# only %view and no command, the viewer will load %f file instead (that is no piping,
+# which is the difference to %view cat %f).
+#
+# %view may be directly followed by {} with one or more of the following
+# separated by commas:
+# ascii (ascii mode)
+# hex (hex mode),
+# nroff (color highlighting for text using escape sequences),
+# unform (no highlighting for nroff sequences)
+#
+# %var{VAR:default}
+# This macro will expand to the value of the VAR variable in the environment if it's
+# set, otherwise the default value will be used. This is similar to the Bourne shell
+# ${VAR-default} construct.
+#
+# Section can contain both Type and Regex or Type and Shell keys. In this case
+# they are handled as an AND condition.
+#
+# Example:
+# Shell=.3gp
+# Type=^ISO Media.*3GPP
+#
+# matches *.3gp files for which `file` output is a line starting with "ISO Media"
+# and containing "3GPP".
+#
+# If there are more than one keys with the same name in a section, the last key will be used.
+#
+#
+# Any new entries you want to add are always welcome if they are useful on more than one
+# system. You can post your modifications as tickets at www.midnight-commander.org.
+
+
+### Changes ###
+#
+# Reorganization: 2012-03-07 Slava Zanko <slavazanko@gmail.com>
+# 2021-03-28 Andrew Borodin <aborodin@vmail.ru>
+# 2021-08-24 Tomas Szepe <szepe@pinerecords.com>
+# 2022-09-11 Andrew Borodin <aborodin@vmail.ru>: port to INI format.
+
+[mc.ext.ini]
+Version=4.0
+
+### GIT Repo ###
+[gitfs changeset]
+Regex=^\[git\]
+Open=%cd %p/changesetfs://
+View=%cd %p/patchsetfs://
+
+### Archives ###
+# Since we use "file -z", we should use Regex and Shell first, then Type.
+
+
+######### Files by name (Regex and Shell) #########
+
+# .tgz, .tpz, .tar.gz, .tar.z, .tar.Z
+[tar.gzip]
+Regex=\.t([gp]?z|ar\.g?[zZ])$
+Include=tar.gz
+
+[ipk]
+Shell=.ipk
+Include=tar.gz
+
+[gem]
+Shell=.gem
+Include=tar.gz
+
+[tar.bzip]
+Shell=.tar.bz
+# Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip
+
+[tar.bzip2]
+Regex=\.t(ar\.bz2|bz2?|b2)$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.bzip2
+
+# .tar.lzma, .tlz
+[tar.lzma]
+Regex=\.t(ar\.lzma|lz)$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lzma
+
+[tar.lz]
+Shell=.tar.lz
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz
+
+# .tar.lz4, .tlz4
+[tar.lz4]
+Regex=\.t(ar\.lz4|lz4)$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.lz4
+
+# .tar.xz, .txz
+[tar.xz]
+Regex=\.t(ar\.xz|xz)$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.xz
+
+# .tar.zst, .tzst
+[tar.zst]
+Regex=\.t(ar\.zst|zst)$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.zst
+
+# .tar.F - used on QNX
+[tar.F]
+Shell=.tar.F
+# Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.F
+
+# .qpr/.qpk - QNX Neutrino package installer files
+[tar.qpr]
+Regex=\.qp[rk]$
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.qpr
+
+[tar]
+Shell=.tar
+ShellIgnoreCase=true
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar
+
+[arj]
+Regex=\.a(rj|[0-9][0-9])$
+RegexIgnoreCase=true
+Open=%cd %p/uarj://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arj
+
+[cab]
+Shell=.cab
+ShellIgnoreCase=true
+Open=%cd %p/ucab://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cab
+
+[ha]
+Shell=.ha
+ShellIgnoreCase=true
+Open=%cd %p/uha://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha
+
+[rar]
+Regex=\.r(ar|[0-9][0-9])$
+RegexIgnoreCase=true
+Open=%cd %p/urar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar
+
+# ALZip
+[alz]
+Shell=.alz
+ShellIgnoreCase=true
+Open=%cd %p/ualz://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view alz
+
+[cpio.Z]
+Shell=.cpio.Z
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.z
+
+[cpio.lz]
+Shell=.cpio.lz
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz
+
+[cpio.lz4]
+Shell=.cpio.lz4
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.lz4
+
+[cpio.xz]
+Shell=.cpio.xz
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.xz
+
+[cpio.zst]
+Shell=.cpio.zst
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.zst
+
+[cpio.gz]
+Shell=.cpio.gz
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio.gz
+
+[cpio]
+Shell=.cpio
+ShellIgnoreCase=true
+Include=cpio
+
+[initrd]
+Regex=^(initramfs.*\.img|initrd(-.+)?\.img(-.+)?)$
+Include=cpio
+
+[7zip]
+Shell=.7z
+ShellIgnoreCase=true
+Open=%cd %p/u7z://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view 7z
+
+[patch]
+Regex=\.(diff|patch)$
+Open=%cd %p/patchfs://
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view cat
+
+[patch.gz]
+Regex=\.(diff|patch)\.(gz|Z)$
+Open=%cd %p/patchfs://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
+
+[patch.bz2]
+Regex=\.(diff|patch)\.bz2$
+Open=%cd %p/patchfs://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
+
+[patch.xz]
+Regex=\.(diff|patch)\.xz$
+Open=%cd %p/patchfs://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
+
+[patch.zst]
+Regex=\.(diff|patch)\.zst$
+Open=%cd %p/patchfs://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
+
+[ls-lR]
+Regex=(^|\.)ls-?lR(\.gz|Z|bz2)$
+Open=%cd %p/lslR://
+
+[trpm]
+Shell=.trpm
+Open=%cd %p/trpm://
+View=%view{ascii} @EXTHELPERSDIR@/package.sh view trpm
+
+# RPM packages (SuSE uses *.spm for source packages)
+[src.rpm]
+Regex=\.(src\.rpm|spm)$
+Open=%cd %p/rpm://
+View=%view{ascii} @EXTHELPERSDIR@/package.sh view src.rpm
+
+[rpm]
+Shell=.rpm
+Open=%cd %p/rpm://
+View=%view{ascii} @EXTHELPERSDIR@/package.sh view rpm
+
+[deb]
+Regex=\.u?deb$
+Open=%cd %p/deb://
+View=%view{ascii} @EXTHELPERSDIR@/package.sh view deb
+
+[dpkg]
+Shell=.debd
+Open=%cd %p/debd://
+View=%view{ascii} @EXTHELPERSDIR@/package.sh view debd
+
+[apt]
+Shell=.deba
+Open=%cd %p/deba://
+Ciew=%view{ascii} @EXTHELPERSDIR@/package.sh view deba
+
+[ISO9660]
+Shell=.iso
+ShellIgnoreCase=true
+Open=%cd %p/iso9660://
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view iso9660
+
+[ar]
+Regex=\.s?a$
+Open=%cd %p/uar://
+#Open=%view{ascii} ar tv %f
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view ar
+
+[gplib]
+Shell=.lib
+ShellIgnoreCase=true
+Open=%cd %p/ulib://
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lib
+
+### Sources ###
+
+[C/C++]
+Regex=\.(c|cc|cpp|cxx|c\+\+)$
+RegexIgnoreCase=true
+Include=editor
+
+[C/C++ header]
+Regex=\.(h|hh|hpp|hxx|h\+\+)$
+RegexIgnoreCase=true
+Include=editor
+
+[Fortran]
+Shell=.f
+ShellIgnoreCase=true
+Include=editor
+
+[Assembler]
+Regex=\.(s|asm)$
+RegexIgnoreCase=true
+Include=editor
+
+[Typescript]
+Shell=.ts
+ShellIgnoreCase=true
+Type=^Java source
+Include=editor
+
+# .so libraries
+[so]
+Regex=\.(so|so\.[0-9\.]*)$
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view so
+
+
+### Documentation ###
+
+#[Texinfo]
+#Regex=\.(te?xi|texinfo)$
+
+[info-by-shell]
+Shell=.info
+Open=@EXTHELPERSDIR@/text.sh open info
+
+# Exception: .3gp are video files, not manual pages
+[3gp]
+Shell=.3gp
+ShellIgnoreCase=true
+Type=^ISO Media.*3GPP
+Include=video
+
+# Troff with me macros.
+# Exception - "read.me" is not a nroff file.
+[read.me]
+Shell=read.me
+Open=
+View=
+
+[troff]
+Shell=.me
+Open=@EXTHELPERSDIR@/text.sh open nroff.me %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.me %var{PAGER:more}
+
+[roff with ms macros]
+Shell=.ms
+Open=@EXTHELPERSDIR@/text.sh open nroff.ms %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view nroff.ms %var{PAGER:more}
+
+# Manual page
+
+[man.lz]
+Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz$
+Open=@EXTHELPERSDIR@/text.sh open man.lz %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz %var{PAGER:more}
+
+[man.lz4]
+Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lz4$
+Open=@EXTHELPERSDIR@/text.sh open man.lz4 %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lz4 %var{PAGER:more}
+
+[man.lzma]
+Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.lzma$
+Open=@EXTHELPERSDIR@/text.sh open man.lzma %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.lzma %var{PAGER:more}
+
+[man.xz]
+Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.xz$
+Open=@EXTHELPERSDIR@/text.sh open man.xz %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.xz %var{PAGER:more}
+
+[man.zst]
+Regex=([^0-9]|^[^\.]*)\.([1-9][A-Za-z]*|[ln])\.zst$
+Open=@EXTHELPERSDIR@/text.sh open man.zst %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.zst %var{PAGER:more}
+
+# Perl pod page
+[pod]
+Shell=.pod
+Open=@EXTHELPERSDIR@/text.sh open pod %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view pod %var{PAGER:more}
+
+[chm]
+Shell=.chm
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/text.sh open chm
+
+### Images ###
+
+[xcf]
+Shell=.xcf
+Open=@EXTHELPERSDIR@/image.sh open xcf
+
+[xbm]
+Shell=.xbm
+Open=@EXTHELPERSDIR@/image.sh open xbm
+
+[xpm]
+Shell=.xpm
+Include=image
+
+[ico]
+Shell=.ico
+Include=image
+
+[svg]
+Shell=.svg
+ShellIgnoreCase=true
+View=%view{ascii} @EXTHELPERSDIR@/image.sh view svg
+Open=@EXTHELPERSDIR@/image.sh open svg
+
+
+### Sound files ###
+
+[sound]
+Regex=\.(wav|snd|voc|au|smp|aiff|snd|m4a|ape|aac|wv|spx|flac)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open common
+View=%view{ascii} @EXTHELPERSDIR@/sound.sh view common
+
+[mod]
+Regex=\.(mod|s3m|xm|it|mtm|669|stm|ult|far)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open mod
+
+[wav22]
+Shell=.waw22
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open wav22
+
+[mp3]
+Shell=.mp3
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open mp3
+View=%view{ascii} @EXTHELPERSDIR@/sound.sh view mp3
+
+[ogg]
+Regex=\.og[gax]$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open ogg
+View=%view{ascii} @EXTHELPERSDIR@/sound.sh view ogg
+
+[opus]
+Shell=.opus
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open opus
+View=%view{ascii} @EXTHELPERSDIR@/sound.sh view opus
+
+[midi]
+Regex=\.(midi?|rmid?)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open midi
+
+[wma]
+Shell=.wma
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open wma
+View=%view{ascii} @EXTHELPERSDIR@/sound.sh view wma
+
+# Play list
+[playlist]
+Regex=\.(m3u|pls)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/sound.sh open playlist
+
+
+### Video ###
+
+[avi]
+Shell=.avi
+ShellIgnoreCase=true
+Include=video
+
+[asf]
+Regex=\.as[fx]$
+RegexIgnoreCase=true
+Include=video
+
+[divx]
+Shell=.divx
+ShellIgnoreCase=true
+Include=video
+
+[mkv]
+Shell=.mkv
+ShellIgnoreCase=true
+Include=video
+
+[mov]
+Regex=\.(mov|qt)$
+RegexIgnoreCase=true
+Include=video
+
+[mp4]
+Regex=\.(mp4|m4v|mpe?g)$
+RegexIgnoreCase=true
+Include=video
+
+# MPEG-2 TS container + H.264 codec
+[mts]
+Shell=.mts
+ShellIgnoreCase=true
+Include=video
+
+[ts]
+Shell=.ts
+ShellIgnoreCase=true
+Include=video
+
+[bob]
+Shell=.vob
+ShellIgnoreCase=true
+Include=video
+
+[wmv]
+Shell=.wmv
+ShellIgnoreCase=true
+Include=video
+
+[fli]
+Regex=\.fl[icv]$
+RegexIgnoreCase=true
+Include=video
+
+[ogv]
+Shell=.ogv
+ShellIgnoreCase=true
+Include=video
+
+[realaudio]
+Regex=\.ra?m$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/video.sh open ram
+
+[webm-by-shell]
+Shell=.webm
+ShellIgnoreCase=true
+Include=video
+
+
+### Documents ###
+
+[html]
+Regex=\.html?$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/web.sh open html
+View=%view{ascii} @EXTHELPERSDIR@/web.sh view html
+
+[StarOffice-5.2]
+Shell=.sdw
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open ooffice
+
+# StarOffice 6 and OpenOffice.org formats
+[OpenOffice.org]
+Regex=\.(odt|fodt|ott|sxw|stw|ods|fods|ots|sxc|stc|odp|fodp|otp|sxi|sti|odg|fodg|otg|sxd|std|odb|odf|sxm|odm|sxg)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open ooffice
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view odt
+
+[AbiWord]
+Shell=.abw
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open abw
+
+[Gnumeric]
+Shell=.gnumeric
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open gnumeric
+
+[rtf]
+Shell=.rtf
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open msdoc
+
+# Microsoft Word Document
+[msdoc-by-shell]
+Regex=\.(do[ct]|wri|docx)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open msdoc
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
+
+# Microsoft Excel Worksheet
+[msxls-by-shell]
+Regex=\.(xl[sw]|xlsx)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open msxls
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
+
+# Microsoft PowerPoint Presentation
+[msppt]
+Regex=\.(pp[ts]|pptx)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open msppt
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msppt
+
+[dvi]
+Shell=.dvi
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open dvi
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view dvi
+
+[tex]
+Shell=.tex
+ShellIgnoreCase=true
+Include=editor
+
+[markdown]
+Regex=\.(md|mkd)$
+ShellIgnoreCase=true
+Include=editor
+
+[djvu]
+Regex=\.djvu?$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open djvu
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view djvu
+
+# Comic Books
+[cbr]
+Regex=\.cb[zr]$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open comic
+
+# Epup, mobi, fb2
+[ebook]
+Regex=\.(epub|mobi|fb2)$
+RegexIgnoreCase=true
+Open=@EXTHELPERSDIR@/doc.sh open ebook
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ebook
+
+
+### Miscellaneous ###
+
+# Compiled Java classes
+[javaclass]
+Shell=.class
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view javaclass
+
+[Imakefile]
+Shell=Imakefile
+Open=xmkmf -a
+
+# Makefile.PL (MakeMaker)
+[Makefile.pl]
+Regex=^Makefile\.(PL|pl)$
+Open=%var{PERL:perl} %f
+
+[Makefile]
+Regex=^[Mm]akefile
+Open=make -f %f %{Enter parameters}
+
+[dbf]
+Shell=.dbf
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/misc.sh open dbf
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view dbf
+
+# REXX script
+[rexx]
+Regex=\.(rexx?|cmd)$
+Open=rexx %f %{Enter parameters};echo "Press ENTER";read y
+
+# Disk images for Commodore computers (VIC20, C64, C128)
+[d64]
+Shell=.d64
+ShellIgnoreCase=true
+Open=%cd %p/uc1541://
+View=%view{ascii} c1541 %f -list
+
+# Glade, a user interface designer for GTK+ and GNOME
+[glade]
+Shell=.glade
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/misc.sh open glade
+
+# Gettext Catalogs
+[mo]
+Regex=.g?mo$
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view mo
+
+[po]
+Shell=.po
+Open=@EXTHELPERSDIR@/misc.sh open po
+
+[lyx]
+Shell=.lyx
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/misc.sh open lyx
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view lyx
+
+[torrent]
+Shell=.torrent
+ShellIgnoreCase=true
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view torrent
+
+
+### Plain compressed files ###
+
+[ace]
+Shell=.ace
+ShellIgnoreCase=true
+Open=%cd %p/uace://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace
+
+[arc]
+Shell=.arc
+ShellIgnoreCase=true
+Open=%cd %p/uarc://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view arc
+
+[zip-by-shell]
+Shell=.zip
+ShellIgnoreCase=true
+Open=%cd %p/uzip://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
+
+[zoo]
+Shell=.zoo
+ShellIgnoreCase=true
+Open=%cd %p/uzoo://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zoo
+
+[lz4]
+Shell=.lz4
+ShellIgnoreCase=true
+Open=@EXTHELPERSDIR@/archive.sh view lz4 %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz4
+
+[wim]
+Shell=.wim
+ShellIgnoreCase=true
+Open=%cd %p/uwim://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view wim
+
+
+######### Files by Type #########
+
+### Archives ###
+
+[mailbox]
+Type=^ASCII\ mail\ text
+Open=%cd %p/mailfs://
+
+
+### Sources ###
+
+# Object
+[elf]
+Type=^ELF
+#Open=%var{PAGER:more} %f
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view elf
+
+
+### Documentation ###
+
+# GNU Info page
+[info-by-type]
+Type=^Info\ text
+Open=@EXTHELPERSDIR@/text.sh open info
+
+# Manual page - compressed
+[troff.gz]
+Type=troff.*gzip compressed
+Open=@EXTHELPERSDIR@/text.sh open man.gz %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.gz %var{PAGER:more}
+
+[troff.bzip]
+Type=troff.*bzip compressed
+Open=@EXTHELPERSDIR@/text.sh open man.bz %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz %var{PAGER:more}
+
+[troff.bzip2]
+Type=troff.*bzip2 compressed
+Open=@EXTHELPERSDIR@/text.sh open man.bz2 %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man.bz2 %var{PAGER:more}
+
+# Manual page
+[man]
+Type=troff or preprocessor input
+Open=@EXTHELPERSDIR@/text.sh open man %var{PAGER:more}
+View=%view{ascii,nroff} @EXTHELPERSDIR@/text.sh view man %var{PAGER:more}
+
+
+### Images ###
+
+[gif]
+Type=^GIF
+Include=image
+
+[jpeg]
+Type=^JPEG
+Include=image
+
+[bitmap]
+Type=^PC\ bitmap
+Include=image
+
+[png]
+Type=^PNG
+Include=image
+
+[jng]
+Type=^JNG
+Include=image
+
+[mng]
+Type=^MNG
+Include=image
+
+[tiff]
+Type=^TIFF
+Include=image
+
+[rbm]
+Type=^PBM
+Include=image
+
+[pgm]
+Type=^PGM
+Include=image
+
+[ppm]
+Type=^PPM
+Include=image
+
+[netpbm]
+Type=^Netpbm
+Include=image
+
+
+### Video ###
+
+[webm-by-type]
+Type=WebM
+Include=video
+
+
+### Documents ###
+
+[postscript]
+Type=^PostScript
+Open=@EXTHELPERSDIR@/doc.sh open ps
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view ps
+
+[pdf]
+Type=^PDF
+Open=@EXTHELPERSDIR@/doc.sh open pdf
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view pdf
+
+# Microsoft Word Document
+[msdoc-by-type]
+Type=^Microsoft\ Word
+Open=@EXTHELPERSDIR@/doc.sh open msdoc
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msdoc
+
+# Microsoft Excel Worksheet
+[msxls-by-type]
+Type=^Microsoft\ Excel
+Open=@EXTHELPERSDIR@/doc.sh open msxls
+View=%view{ascii} @EXTHELPERSDIR@/doc.sh view msxls
+
+# Use OpenOffice.org/LibreOffice to open any MS Office documents
+[mso-doc-1]
+Type=^Microsoft\ Office\ Document
+Open=@EXTHELPERSDIR@/doc.sh open ooffice
+
+[mso-doc-2]
+Type=^Microsoft\ OOXML
+Open=@EXTHELPERSDIR@/doc.sh open ooffice
+
+[framemaker]
+Type=^FrameMaker
+Open=@EXTHELPERSDIR@/doc.sh open framemaker
+
+
+### Miscellaneous ###
+
+[sqlite3.db]
+Type=^SQLite 3.x database
+Open=@EXTHELPERSDIR@/misc.sh open sqlite
+View=%view{ascii} @EXTHELPERSDIR@/misc.sh view sqlite
+
+
+### Plain compressed files ###
+
+[gzip]
+Type=\(gzip compressed
+Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
+
+[bzip]
+Type=\(bzip compressed
+Open=@EXTHELPERSDIR@/archive.sh view bzip %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bzip
+
+[bzip2]
+Type=\(bzip2 compressed
+Open=@EXTHELPERSDIR@/archive.sh view bzip2 %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view bz2
+
+[compress]
+Type=\(compress'd
+Open=@EXTHELPERSDIR@/archive.sh view gz %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view gz
+
+[lz]
+Type=\(lzip compressed
+Open=@EXTHELPERSDIR@/archive.sh view lz %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lz
+
+[lzma]
+Type=\(LZMA compressed
+Open=@EXTHELPERSDIR@/archive.sh view lzma %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lzma
+
+[xz]
+Type=\(XZ compressed
+Open=@EXTHELPERSDIR@/archive.sh view xz %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view xz
+
+[zstd]
+Type=\(Zstandard compressed
+Open=@EXTHELPERSDIR@/archive.sh view zst %var{PAGER:more}
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zst
+
+[zip-by-type]
+Type=\(Zip archive
+Open=%cd %p/uzip://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
+
+[jar]
+Type=\(Java\ (Jar\ file|archive)\ data\ \((zip|JAR)\)
+TypeIgnoreCase=true
+Open=%cd %p/uzip://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view zip
+
+[lha]
+Type=^LHa\ .*archive
+Open=%cd %p/ulha://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view lha
+
+[pak]
+Type=^PAK\ .*archive
+Open=%cd %p/unar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view pak
+
+# Parity Archive
+[par2]
+Type=^Parity\ Archive\ Volume\ Set
+Open=@EXTHELPERSDIR@/archive.sh open par2
+
+
+######### Includes #########
+# Includes should be at end of the bindings
+
+[Include/tar.gz]
+Open=%cd %p/utar://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view tar.gz
+
+[Include/cpio]
+Open=%cd %p/ucpio://
+View=%view{ascii} @EXTHELPERSDIR@/archive.sh view cpio
+
+[Include/editor]
+Open=%var{EDITOR:vi} %f
+
+[Include/image]
+Open=@EXTHELPERSDIR@/image.sh open ALL_FORMATS
+View=%view{ascii} @EXTHELPERSDIR@/image.sh view ALL_FORMATS
+
+[Include/video]
+Open=@EXTHELPERSDIR@/video.sh open ALL_FORMATS
+View=%view{ascii} @EXTHELPERSDIR@/video.sh view ALL_FORMATS
+
+
+######### Default #########
+
+# Default target for anything not described above
+[Default]
+Open=
+View=
+
+### EOF ###
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/mc.lib
^
|
@@ -10,7 +10,7 @@
mcedit=%filename:%lineno
[Special dirs]
-list=/afs;/coda;/:;/...;/net;/#smb
+list=/afs;/coda;/:;/...;/net
[terminal:console]
insert=\\e[2~
@@ -42,33 +42,7 @@
kpnumlock=\\eOP
[terminal:linux]
-insert=\\e[2~
-f11=\\e[23~
-f12=\\e[24~
-f13=\\e[25~
-f14=\\e[26~
-f15=\\e[28~
-f16=\\e[29~
-f17=\\e[31~
-f18=\\e[32~
-f19=\\e[33~
-f20=\\e[34~
-kpleft=\\eOt
-kpright=\\eOv
-kpup=\\eOx
-kpdown=\\eOr
-kphome=\\eOw
-kpend=\\eOq
-kpnpage=\\eOs
-kpppage=\\eOy
-kpplus=\\eOl
-kpminus=\\eOS
-kpasterisk=\\eOR
-kpinsert=\\eOp
-kpdelete=\\eOn
-kpenter=\\eOM
-kpslash=\\eOQ
-kpnumlock=\\eOP
+copy=console
[terminal:xterm]
insert=\\e[2~
@@ -110,12 +84,6 @@
left=\\e[D
left=\\eOD
-# arrows with modifiers
-alt-shift-right=\\e[1\;4C
-alt-shift-left=\\e[1\;4D
-alt-shift-up=\\e[1\;4A
-alt-shift-down=\\e[1\;4B
-
[terminal:alacritty]
copy=xterm
@@ -174,3 +142,22 @@
f18=\\e[f
f19=\\e[g
f20=\\e[h
+
+[terminal:st]
+shift-right=\\e[1\;2C
+shift-left=\\e[1\;2D
+shift-up=\\e[1\;2A
+shift-down=\\e[1\;2B
+alt-shift-right=\\e[1\;4C
+alt-shift-left=\\e[1\;4D
+alt-shift-up=\\e[1\;4A
+alt-shift-down=\\e[1\;4B
+
+[terminal:st-256color]
+copy=st
+
+[terminal:st-git-256color]
+copy=st
+
+[terminal:xterm-kitty]
+copy=xterm
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/dark.ini
^
|
@@ -138,7 +138,7 @@
filename-scroll-left-char = «
filename-scroll-right-char = »
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/darkfar.ini
^
|
@@ -138,7 +138,7 @@
filename-scroll-left-char = «
filename-scroll-right-char = »
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/gray-green-purple256.ini
^
|
@@ -147,7 +147,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/gray-orange-blue256.ini
^
|
@@ -147,7 +147,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/julia256.ini
^
|
@@ -143,7 +143,7 @@
filename-scroll-left-char = «
filename-scroll-right-char = »
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarcon16-defbg.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarcon16.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarcon16root-defbg.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarcon16root.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarin256-defbg.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarin256.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarin256root-defbg.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/modarin256root.ini
^
|
@@ -174,7 +174,7 @@
history-next-item-char = »
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/sand256.ini
^
|
@@ -196,7 +196,7 @@
filename-scroll-left-char = «
filename-scroll-right-char = »
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/seasons-autumn16M.ini
^
|
@@ -7,7 +7,7 @@
# 4) A 64-bit operating system. (Future S-Lang version 3 will support
# true colors on 32-bit OSes too. Until then, you can install a patched
# S-Lang and compile MC against it by following the instructions at
-# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
+# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
# 5) A terminal emulator that supports true colors, such as e.g.
# GNOME Terminal and other VTE derivatives, KDE's Konsole,
# iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a
@@ -204,7 +204,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/seasons-spring16M.ini
^
|
@@ -7,7 +7,7 @@
# 4) A 64-bit operating system. (Future S-Lang version 3 will support
# true colors on 32-bit OSes too. Until then, you can install a patched
# S-Lang and compile MC against it by following the instructions at
-# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
+# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
# 5) A terminal emulator that supports true colors, such as e.g.
# GNOME Terminal and other VTE derivatives, KDE's Konsole,
# iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a
@@ -204,7 +204,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/seasons-summer16M.ini
^
|
@@ -7,7 +7,7 @@
# 4) A 64-bit operating system. (Future S-Lang version 3 will support
# true colors on 32-bit OSes too. Until then, you can install a patched
# S-Lang and compile MC against it by following the instructions at
-# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
+# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
# 5) A terminal emulator that supports true colors, such as e.g.
# GNOME Terminal and other VTE derivatives, KDE's Konsole,
# iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a
@@ -204,7 +204,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/seasons-winter16M.ini
^
|
@@ -7,7 +7,7 @@
# 4) A 64-bit operating system. (Future S-Lang version 3 will support
# true colors on 32-bit OSes too. Until then, you can install a patched
# S-Lang and compile MC against it by following the instructions at
-# http://midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
+# https://www.midnight-commander.org/wiki/doc-devel/slang-16Mcolors-32bits.)
# 5) A terminal emulator that supports true colors, such as e.g.
# GNOME Terminal and other VTE derivatives, KDE's Konsole,
# iTerm2 for macOS. See https://gist.github.com/XVilka/8346728 for a
@@ -204,7 +204,7 @@
filename-scroll-left-char = ◂
filename-scroll-right-char = ▸
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ▴
last-vert-char = ▾
first-horiz-char = ◂
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/xoria256.ini
^
|
@@ -181,7 +181,7 @@
filename-scroll-left-char = «
filename-scroll-right-char = »
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = «
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/yadt256-defbg.ini
^
|
@@ -141,7 +141,7 @@
history-next-item-char = >
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = <
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/skins/yadt256.ini
^
|
@@ -140,7 +140,7 @@
history-next-item-char = >
history-show-list-char = ^
-[widget-scollbar]
+[widget-scrollbar]
first-vert-char = ↑
last-vert-char = ↓
first-horiz-char = <
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/Makefile.am
^
|
@@ -27,6 +27,7 @@
diff.syntax \
dlink.syntax \
dos.syntax \
+ dot.syntax \
ebuild.syntax \
eiffel.syntax \
erlang.syntax \
@@ -44,6 +45,7 @@
jal.syntax \
java.syntax \
js.syntax \
+ json.syntax \
kotlin.syntax \
latex.syntax \
lisp.syntax \
@@ -67,6 +69,7 @@
php.syntax \
po.syntax \
povray.syntax \
+ privoxy.syntax \
procmail.syntax \
properties.syntax \
protobuf.syntax \
@@ -79,6 +82,7 @@
slang.syntax \
smalltalk.syntax \
spec.syntax \
+ spice.syntax \
sql.syntax \
strace.syntax \
swift.syntax \
@@ -86,6 +90,7 @@
syntax.syntax \
tcl.syntax \
texinfo.syntax \
+ toml.syntax \
ts.syntax \
tt.syntax \
unknown.syntax \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/Syntax.in
^
|
@@ -1,6 +1,20 @@
# This file describes which highlighting scheme is applied to a particular
# file in mcedit.
#
+#
+# System-wide files (this and syntax definitions) are located in
+# @datarootdir@/@PACKAGE@/syntax/ directory.
+#
+# User's files (this and syntax definitions) are located in
+# ~/.local/share/@PACKAGE@/syntax directory.
+#
+# If user's file is missing, system-wide one is used.
+#
+#
+# This file is rescanned on opening of every new editor file.
+#
+# Format of this file is following.
+#
# Each entry consists of two lines: a "file" specification and the
# corresponding highlighting definition ("include"). A file specification
# can have two or three fields, each separated by white-space characters.
@@ -40,6 +54,12 @@
file .\*(bash(_completion|rc)|profile|\\.(sh|bash(rc|_(completion|profile|log(in|out)|aliases|exports|history))|profile|zlog(in|out)|zprofile|zsh(env|rc)))$ Shell\sScript ^#!\s\*/(.\*/|usr/bin/env\s)([a-z]?|ba|pdk)sh
include sh.syntax
+# Since openrc scripts have no extension "by definition", use an empty pattern
+# that doesn't match any file name, and therefore only the shebang is used to detect
+# syntax highlighting rules (see tickets #4246 and #4252 for details).
+file ^$ OpenRC\sRunscript\sFile ^#!\s\*/sbin/openrc-run
+include sh.syntax
+
file ..\*\\.((?i:ini)|desktop|busname|(auto)?mount|net(dev|work)|link|path|service|slice|socket|swap|target|timer)$ INI-based\sFile
include ini.syntax
@@ -64,6 +84,9 @@
file ..\*\\.((?i:xml|xsd|xslt?|dtd)|qpg|qpg\\.in)$ XML\sdocument (\\?xml\sversion|!DOCTYPE\s)
include xml.syntax
+file ..\*\\.cir$ Spice\scircuit
+include spice.syntax
+
file ..\*\\.(?i:tt)$ Template::Toolkit\sFile
include tt.syntax
@@ -94,10 +117,13 @@
file ..\*\\.(?i:texi|texinfo)$ Texinfo\sDocument
include texinfo.syntax
+file ..\*\\.(dot|gv)$ DOT/Graphviz\sgraph
+include dot.syntax
+
file ..\*\\.c$ C\sProgram
include c.syntax
-file ..\*\\.([hC]|(?i:cxx|cc|cpp|hpp|hxx|hh|ino)|[Hh]\\.in)$ C/C\+\+\sProgram
+file ..\*\\.([hC]|(?i:cxx|cc|cpp|c\\\+\\\+|hxx|hh|hpp|h\\\+\\\+|ino)|[Hh]\\.in)$ C/C\+\+\sProgram
include cxx.syntax
file ..\*\\.d$ D\sProgram
@@ -136,6 +162,9 @@
file ..\*\\.(?i:m?js)$ JavaScript\sProgram ^#!.\*[\s/](node|nodejs)\\b
include js.syntax
+file ..\*\\.(?i:json)$ JSON\sFile
+include json.syntax
+
file ..\*\\.(?i:ts)$ TypeScript\sProgram
include ts.syntax
@@ -235,7 +264,7 @@
file ..\*\\.(?i:n)$ Nemerle\sProgram
include nemerle.syntax
-file ..\*\\.(?i:(v|sv))$ Verilog/SystemVerilog\sDevice\sDescription
+file ..\*\\.(?i:(v|sv|vh|svh))$ Verilog/SystemVerilog\sDevice\sDescription
include verilog.syntax
file ..\*\\.(?i:hdl|vhdl?)$ VHDL\sDevice\sDescription
@@ -310,5 +339,11 @@
file ..\*\\.swift$ Swift\sProgram
include swift.syntax
+file ..\*\\.action$ Privoxy\sFile
+include privoxy.syntax
+
+file .\*\\.toml$ TOML\sFile
+include toml.syntax
+
file .\* unknown
include unknown.syntax
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/css.syntax
^
|
@@ -418,7 +418,7 @@
keyword whole lightcoral brightgreen
keyword whole lightcyan brightgreen
keyword whole lightgoldenrodyellow brightgreen
- keyword whole lightgrey brightgreen
+ keyword whole lightgray brightgreen
keyword whole lightgreen brightgreen
keyword whole lightpink brightgreen
keyword whole lightsalmon brightgreen
@@ -504,8 +504,8 @@
keyword whole arial brightgreen
keyword whole Narrow brightgreen
keyword whole narrow brightgreen
- keyword whole Trebuchet MS brightgreen
- keyword whole trebuchet ms brightgreen
+ keyword whole Trebuchet\sMS brightgreen
+ keyword whole trebuchet\sms brightgreen
keyword whole verdana brightgreen
keyword whole Verdana brightgreen
keyword whole sans-serif brightgreen
@@ -547,4 +547,4 @@
context exclusive counter( ) magenta
context exclusive counters( ) magenta
context exclusive rgb( ) magenta
-context exclusive url( ) magenta
\ No newline at end of file
+context exclusive url( ) magenta
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/dot.syntax
^
|
@@ -0,0 +1,227 @@
+# DOT/Graphviz graphs
+context default
+ keyword whole strict brightred
+ keyword whole graph brightred
+ keyword whole digraph brightred
+ keyword whole subgraph brightred
+
+ keyword whole node yellow
+ keyword whole edge yellow
+
+ keyword wholeleft cluster_ yellow
+
+ keyword whole -> brightred
+ keyword whole -- brightred
+
+ keyword whole _background white
+ keyword whole area white
+ keyword whole arrowhead white
+ keyword whole arrowsize white
+ keyword whole arrowtail white
+ keyword whole bb white
+ keyword whole bgcolor white
+ keyword whole center white
+ keyword whole charset white
+ keyword whole class white
+ keyword whole clusterrank white
+ keyword whole color white
+ keyword whole colorscheme white
+ keyword whole comment white
+ keyword whole compound white
+ keyword whole concentrate white
+ keyword whole constraint white
+ keyword whole Damping white
+ keyword whole decorate white
+ keyword whole defaultdist white
+ keyword whole dim white
+ keyword whole dimen white
+ keyword whole dir white
+ keyword whole diredgeconstraints white
+ keyword whole distortion white
+ keyword whole dpi white
+ keyword whole edgehref white
+ keyword whole edgetarget white
+ keyword whole edgetooltip white
+ keyword whole edgeURL white
+ keyword whole epsilon white
+ keyword whole esep white
+ keyword whole fillcolor white
+ keyword whole fixedsize white
+ keyword whole fontcolor white
+ keyword whole fontname white
+ keyword whole fontnames white
+ keyword whole fontpath white
+ keyword whole fontsize white
+ keyword whole forcelabels white
+ keyword whole gradientangle white
+ keyword whole group white
+ keyword whole head_lp white
+ keyword whole headclip white
+ keyword whole headhref white
+ keyword whole headlabel white
+ keyword whole headport white
+ keyword whole headtarget white
+ keyword whole headtooltip white
+ keyword whole headURL white
+ keyword whole height white
+ keyword whole href white
+ keyword whole id white
+ keyword whole image white
+ keyword whole imagepath white
+ keyword whole imagepos white
+ keyword whole imagescale white
+ keyword whole inputscale white
+ keyword whole K white
+ keyword whole label white
+ keyword whole label_scheme white
+ keyword whole labelangle white
+ keyword whole labeldistance white
+ keyword whole labelfloat white
+ keyword whole labelfontcolor white
+ keyword whole labelfontname white
+ keyword whole labelfontsize white
+ keyword whole labelhref white
+ keyword whole labeljust white
+ keyword whole labelloc white
+ keyword whole labeltarget white
+ keyword whole labeltooltip white
+ keyword whole labelURL white
+ keyword whole landscape white
+ keyword whole layer white
+ keyword whole layerlistsep white
+ keyword whole layers white
+ keyword whole layerselect white
+ keyword whole layersep white
+ keyword whole layout white
+ keyword whole len white
+ keyword whole levels white
+ keyword whole levelsgap white
+ keyword whole lhead white
+ keyword whole lheight white
+ keyword whole lp white
+ keyword whole ltail white
+ keyword whole lwidth white
+ keyword whole margin white
+ keyword whole maxiter white
+ keyword whole mclimit white
+ keyword whole mindist white
+ keyword whole minlen white
+ keyword whole mode white
+ keyword whole model white
+ keyword whole mosek white
+ keyword whole newrank white
+ keyword whole nodesep white
+ keyword whole nojustify white
+ keyword whole normalize white
+ keyword whole notranslate white
+ keyword whole nslimit white
+ keyword whole nslimit1 white
+ keyword whole ordering white
+ keyword whole orientation white
+ keyword whole outputorder white
+ keyword whole overlap white
+ keyword whole overlap_scaling white
+ keyword whole overlap_shrink white
+ keyword whole pack white
+ keyword whole packmode white
+ keyword whole pad white
+ keyword whole page white
+ keyword whole pagedir white
+ keyword whole pencolor white
+ keyword whole penwidth white
+ keyword whole peripheries white
+ keyword whole pin white
+ keyword whole pos white
+ keyword whole quadtree white
+ keyword whole quantum white
+ keyword whole rank white
+ keyword whole rankdir white
+ keyword whole ranksep white
+ keyword whole ratio white
+ keyword whole rects white
+ keyword whole regular white
+ keyword whole remincross white
+ keyword whole repulsiveforce white
+ keyword whole resolution white
+ keyword whole root white
+ keyword whole rotate white
+ keyword whole rotation white
+ keyword whole samehead white
+ keyword whole sametail white
+ keyword whole samplepoints white
+ keyword whole scale white
+ keyword whole searchsize white
+ keyword whole sep white
+ keyword whole shape white
+ keyword whole shapefile white
+ keyword whole showboxes white
+ keyword whole sides white
+ keyword whole size white
+ keyword whole skew white
+ keyword whole smoothing white
+ keyword whole sortv white
+ keyword whole splines white
+ keyword whole start white
+ keyword whole style white
+ keyword whole stylesheet white
+ keyword whole tail_lp white
+ keyword whole tailclip white
+ keyword whole tailhref white
+ keyword whole taillabel white
+ keyword whole tailport white
+ keyword whole tailtarget white
+ keyword whole tailtooltip white
+ keyword whole tailURL white
+ keyword whole target white
+ keyword whole tooltip white
+ keyword whole truecolor white
+ keyword whole URL white
+ keyword whole vertices white
+ keyword whole viewport white
+ keyword whole voro_margin white
+ keyword whole weight white
+ keyword whole width white
+ keyword whole xdotversion white
+ keyword whole xlabel white
+ keyword whole xlp white
+ keyword whole z white
+
+ keyword /\* brown
+ keyword \*/ brown
+ keyword // brown
+
+ keyword \+ red
+ keyword , brightcyan
+ keyword : brightcyan
+ keyword ; brightmagenta
+ keyword < green
+ keyword = yellow
+ keyword > green
+ keyword [ brightcyan
+ keyword ] brightcyan
+ keyword { brightcyan
+ keyword } brightcyan
+
+context exclusive /\* \*/ brown
+ spellcheck
+
+context exclusive // \n brown
+ spellcheck
+
+context linestart # \n brightred
+ keyword \\\n yellow
+ keyword /\**\*/ brown
+ keyword //*\n brown
+ keyword "+" red
+ keyword <+> red
+
+context exclusive < > green
+ spellcheck
+
+ keyword <*> cyan
+
+context " " green
+ spellcheck
+ keyword \\\n yellow
+ keyword \\" brightgreen
+ keyword \\\{abtnvfr\} brightgreen
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/glsl.syntax
^
|
@@ -215,7 +215,7 @@
keyword whole cast yellow
keyword whole namespace yellow
keyword whole using yellow
- keyword whole row major yellow
+ keyword whole row_major yellow
keyword whole early_fragment_tests yellow
# Deprecated
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/json.syntax
^
|
@@ -0,0 +1,39 @@
+#
+# JSON syntax highlighting
+# for MC Editor/CoolEdit
+#
+# Author: Sergii Pylypenko <x.pelya.x@gmail.com>
+#
+
+context default
+
+ #=========================
+ # Constants
+ keyword whole true brightgreen
+ keyword whole false brightgreen
+ keyword whole null brightgreen
+
+ #=========================
+ # Numbers
+ keyword whole \[-\]\{0123456789\}\[0123456789\] brightgreen
+ keyword whole \[-\]\{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\] brightgreen
+ keyword whole \[-\]\{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
+ keyword whole \[-\]\{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen
+ keyword whole \[-\]\{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
+ keyword whole \[-\]\{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen
+
+ #=========================
+ # Separators
+ keyword { brightcyan
+ keyword } brightcyan
+ keyword [ brightcyan
+ keyword ] brightcyan
+ keyword , brightcyan
+ keyword : brightcyan
+
+#=============================
+# Strings
+context " " green
+ spellcheck
+ keyword \\\{"\\/bfnrt\} brightgreen
+ keyword \\u\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\} brightgreen
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/privoxy.syntax
^
|
@@ -0,0 +1,155 @@
+# Privoxy action file syntax highlighting
+# Version: 2022-07-02
+# Author: Bogdan Pylypenko <bogdan.pylypenko107@gmail.com>
+# This definition is under the GNU GPL version 3.0.
+
+context default
+
+context { }\n magenta
+ keyword \\ brown
+
+ keyword \+add-header yellow
+ keyword \+block yellow
+ keyword \+change-x-forwarded-for yellow
+ keyword \+client-header-filter yellow
+ keyword \+client-body-filter yellow
+ keyword \+client-header-tagger yellow
+ keyword \+content-type-overwrite yellow
+ keyword \+crunch-client-header yellow
+ keyword \+crunch-if-none-match yellow
+ keyword \+crunch-incoming-cookies yellow
+ keyword \+crunch-server-header yellow
+ keyword \+crunch-outgoing-cookies yellow
+ keyword \+deanimate-gifs yellow
+ keyword \+delay-response yellow
+ keyword \+downgrade-http-version yellow
+ keyword \+external-filter yellow
+ keyword \+fast-redirects yellow
+ keyword \+filter yellow
+ keyword \+force-text-mode yellow
+ keyword \+forward-override yellow
+ keyword \+handle-as-empty-document yellow
+ keyword \+handle-as-image yellow
+ keyword \+hide-accept-language yellow
+ keyword \+hide-content-disposition yellow
+ keyword \+hide-if-modified-since yellow
+ keyword \+hide-from-header yellow
+ keyword \+hide-referrer yellow
+ keyword \+hide-user-agent yellow
+ keyword \+https-inspection yellow
+ keyword \+ignore-certificate-errors yellow
+ keyword \+limit-connect yellow
+ keyword \+limit-cookie-lifetime yellow
+ keyword \+prevent-compression yellow
+ keyword \+overwrite-last-modified yellow
+ keyword \+redirect yellow
+ keyword \+server-header-filter yellow
+ keyword \+server-header-tagger yellow
+ keyword \+suppress-tag yellow
+ keyword \+session-cookies-only yellow
+ keyword \+set-image-blocker yellow
+
+ keyword \-add-header green
+ keyword \-block green
+ keyword \-change-x-forwarded-for green
+ keyword \-client-header-filter green
+ keyword \-client-body-filter green
+ keyword \-client-header-tagger green
+ keyword \-content-type-overwrite green
+ keyword \-crunch-client-header green
+ keyword \-crunch-if-none-match green
+ keyword \-crunch-incoming-cookies green
+ keyword \-crunch-server-header green
+ keyword \-crunch-outgoing-cookies green
+ keyword \-deanimate-gifs green
+ keyword \-delay-response green
+ keyword \-downgrade-http-version green
+ keyword \-external-filter green
+ keyword \-fast-redirects green
+ keyword \-filter green
+ keyword \-force-text-mode green
+ keyword \-forward-override green
+ keyword \-handle-as-empty-document green
+ keyword \-handle-as-image green
+ keyword \-hide-accept-language green
+ keyword \-hide-content-disposition green
+ keyword \-hide-if-modified-since green
+ keyword \-hide-from-header green
+ keyword \-hide-referrer green
+ keyword \-hide-user-agent green
+ keyword \-https-inspection green
+ keyword \-ignore-certificate-errors green
+ keyword \-limit-connect green
+ keyword \-limit-cookie-lifetime green
+ keyword \-prevent-compression green
+ keyword \-overwrite-last-modified green
+ keyword \-redirect green
+ keyword \-server-header-filter green
+ keyword \-server-header-tagger green
+ keyword \-suppress-tag green
+ keyword \-session-cookies-only green
+ keyword \-set-image-blocker green
+
+ keyword block cyan
+ keyword add cyan
+ keyword last cyan
+ keyword first cyan
+ keyword simple-check cyan
+ keyword check-decoded-url cyan
+ keyword block cyan
+ keyword forward-socks4a cyan
+ keyword forward-socks5 cyan
+ keyword forward-webserver cyan
+ keyword forward cyan
+ keyword conditional-block cyan
+ keyword conditional-forge cyan
+ keyword forge cyan
+ keyword reset-to-request-time cyan
+ keyword randomize cyan
+
+ # 8.5.18 + 9.2
+ keyword js-annoyances cyan
+ keyword js-events cyan
+ keyword html-annoyances cyan
+ keyword content-cookies cyan
+ keyword refresh-tags cyan
+ keyword unsolicited-popups cyan
+ keyword all-popups cyan
+ keyword img-reorder cyan
+ keyword banners-by-size cyan
+ keyword banners-by-link cyan
+ keyword webbugs cyan
+ keyword tiny-textforms cyan
+ keyword jumping-windows cyan
+ keyword frameset-borders cyan
+ keyword iframes cyan
+ keyword demoronizer cyan
+ keyword shockwave-flash cyan
+ keyword quicktime-kioskmode cyan
+ keyword fun cyan
+ keyword crude-parental cyan
+ keyword ie-exploits cyan
+ keyword site-specifics cyan
+ keyword no-ping cyan
+ keyword github cyan
+ keyword google cyan
+ keyword imdb cyan
+ keyword yahoo cyan
+ keyword msn cyan
+ keyword blogspot cyan
+ keyword sourceforge cyan
+ keyword xml-to-html cyan
+ keyword html-to-xml cyan
+ keyword no-ping cyan
+ keyword hide-tor-exit-notation cyan
+
+# Lines, which ignored by Privoxy, if it starts with "- ":
+context linestart -\s \n gray
+
+# Comments:
+context linestart # \n brown
+ spellcheck
+context linestart \s\[\s\]# \n brown
+ spellcheck
+context linestart /\s \n brown
+ spellcheck
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/procmail.syntax
^
|
@@ -191,7 +191,7 @@
context " " green
keyword ${*} brightgreen
-context exclusive ` ` lightgrey black
+context exclusive ` ` lightgray black
keyword '*' green
keyword " green
keyword \\` brightred
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/python.syntax
^
|
@@ -23,6 +23,8 @@
keyword whole and yellow
keyword whole as yellow
keyword whole assert yellow
+ keyword whole async yellow
+ keyword whole await yellow
keyword whole break yellow
keyword whole class yellow
keyword whole continue yellow
@@ -41,6 +43,7 @@
keyword whole in yellow
keyword whole is yellow
keyword whole lambda yellow
+ keyword whole nonlocal yellow
keyword whole not yellow
keyword whole or yellow
keyword whole pass yellow
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/r.syntax
^
|
@@ -5,9 +5,9 @@
context default
- keyword ->> brightred grey
- keyword <<- brightred grey
- keyword -> brightred grey
+ keyword ->> brightred gray
+ keyword <<- brightred gray
+ keyword -> brightred gray
keyword <- brightred
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/spice.syntax
^
|
@@ -0,0 +1,420 @@
+caseinsensitive
+
+context default
+ keyword linestart \**\n brown
+ keyword $*\n brown
+ keyword ;*\n brown
+ keyword //*\n brown
+ keyword linestart \+ red
+
+ # dot commands
+ keyword whole .ac brightmagenta
+ keyword whole .control brightmagenta
+ keyword whole .csparam brightmagenta
+ keyword whole .dc brightmagenta
+ keyword whole .disto brightmagenta
+ keyword whole .else brightmagenta
+ keyword whole .elseif brightmagenta
+ keyword whole .end brightmagenta
+ keyword whole .endc brightmagenta
+ keyword whole .endif brightmagenta
+ keyword whole .ends brightmagenta
+ keyword whole .four brightmagenta
+ keyword whole .func brightmagenta
+ keyword whole .global brightmagenta
+ keyword whole .ic brightmagenta
+ keyword whole .if brightmagenta
+ keyword whole .include brightmagenta
+ keyword whole .lib brightmagenta
+ keyword whole .meas brightmagenta
+ keyword whole .model brightmagenta
+ keyword whole .nodeset brightmagenta
+ keyword whole .noise brightmagenta
+ keyword whole .op brightmagenta
+ keyword whole .options brightmagenta
+ keyword whole .param brightmagenta
+ keyword whole .plot brightmagenta
+ keyword whole .print brightmagenta
+ keyword whole .probe brightmagenta
+ keyword whole .pss brightmagenta
+ keyword whole .pz brightmagenta
+ keyword whole .save brightmagenta
+ keyword whole .sens brightmagenta
+ keyword whole .subckt brightmagenta
+ keyword whole .temp brightmagenta
+ keyword whole .tf brightmagenta
+ keyword whole .title brightmagenta
+ keyword whole .tran brightmagenta
+ keyword whole .width brightmagenta
+
+ # circuit elements
+ keyword wholeleft linestart A*\s brightcyan
+ keyword wholeleft linestart A*\t brightcyan
+ keyword wholeleft linestart B*\s brightcyan
+ keyword wholeleft linestart B*\t brightcyan
+ keyword wholeleft linestart C*\s brightcyan
+ keyword wholeleft linestart C*\t brightcyan
+ keyword wholeleft linestart D*\s brightcyan
+ keyword wholeleft linestart D*\t brightcyan
+ keyword wholeleft linestart E*\s brightcyan
+ keyword wholeleft linestart E*\t brightcyan
+ keyword wholeleft linestart F*\s brightcyan
+ keyword wholeleft linestart F*\t brightcyan
+ keyword wholeleft linestart G*\s brightcyan
+ keyword wholeleft linestart G*\t brightcyan
+ keyword wholeleft linestart H*\s brightcyan
+ keyword wholeleft linestart H*\t brightcyan
+ keyword wholeleft linestart I*\s brightcyan
+ keyword wholeleft linestart I*\t brightcyan
+ keyword wholeleft linestart J*\s brightcyan
+ keyword wholeleft linestart J*\t brightcyan
+ keyword wholeleft linestart K*\s brightcyan
+ keyword wholeleft linestart K*\t brightcyan
+ keyword wholeleft linestart L*\s brightcyan
+ keyword wholeleft linestart L*\t brightcyan
+ keyword wholeleft linestart M*\s brightcyan
+ keyword wholeleft linestart M*\t brightcyan
+ keyword wholeleft linestart N*\s brightcyan
+ keyword wholeleft linestart N*\t brightcyan
+ keyword wholeleft linestart O*\s brightcyan
+ keyword wholeleft linestart O*\t brightcyan
+ keyword wholeleft linestart P*\s brightcyan
+ keyword wholeleft linestart P*\t brightcyan
+ keyword wholeleft linestart Q*\s brightcyan
+ keyword wholeleft linestart Q*\t brightcyan
+ keyword wholeleft linestart R*\s brightcyan
+ keyword wholeleft linestart R*\t brightcyan
+ keyword wholeleft linestart S*\s brightcyan
+ keyword wholeleft linestart S*\t brightcyan
+ keyword wholeleft linestart T*\s brightcyan
+ keyword wholeleft linestart T*\t brightcyan
+ keyword wholeleft linestart U*\s brightcyan
+ keyword wholeleft linestart U*\t brightcyan
+ keyword wholeleft linestart V*\s brightcyan
+ keyword wholeleft linestart V*\t brightcyan
+ keyword wholeleft linestart W*\s brightcyan
+ keyword wholeleft linestart W*\t brightcyan
+ keyword wholeleft linestart X*\s brightcyan
+ keyword wholeleft linestart X*\t brightcyan
+ keyword wholeleft linestart Y*\s brightcyan
+ keyword wholeleft linestart Y*\t brightcyan
+ keyword wholeleft linestart Z*\s brightcyan
+ keyword wholeleft linestart Z*\t brightcyan
+
+ # model types
+ keyword whole R white
+ keyword whole C white
+ keyword whole L white
+ keyword whole SW white
+ keyword whole CSW white
+ keyword whole URC white
+ keyword whole LTRA white
+ keyword whole D white
+ keyword whole NPN white
+ keyword whole PNP white
+ keyword whole NJF white
+ keyword whole PJF white
+ keyword whole NMOS white
+ keyword whole PMOS white
+ keyword whole NMF white
+ keyword whole PMF white
+ keyword whole VDMOS white
+
+ # XSPICE models
+ keyword whole gain white
+ keyword whole summer white
+ keyword whole mult white
+ keyword whole divide white
+ keyword whole limit white
+ keyword whole climit white
+ keyword whole pwl white
+ keyword whole filesource white
+ keyword whole multi_input_pwl white
+ keyword whole aswitch white
+ keyword whole pswitch white
+ keyword whole zener white
+ keyword whole ilimit white
+ keyword whole hyst white
+ keyword whole d_dt white
+ keyword whole int white
+ keyword whole s_xfer white
+ keyword whole slew white
+ keyword whole lcouple white
+ keyword whole core white
+ keyword whole sine white
+ keyword whole triangle white
+ keyword whole square white
+ keyword whole oneshot white
+ keyword whole cmeter white
+ keyword whole lmeter white
+ keyword whole memristor white
+ keyword whole table2D white
+ keyword whole table3D white
+ keyword whole sidiode white
+ keyword whole dac_bridge white
+ keyword whole adc_bridge white
+ keyword whole d_osc white
+ keyword whole d_to_real white
+ keyword whole real_delay white
+ keyword whole real_gain white
+ keyword whole real_to_v white
+ keyword whole d_buffer white
+ keyword whole d_inverter white
+ keyword whole d_and white
+ keyword whole d_nand white
+ keyword whole d_or white
+ keyword whole d_nor white
+ keyword whole d_xor white
+ keyword whole d_xnor white
+ keyword whole d_tristate white
+ keyword whole d_pullup white
+ keyword whole d_pulldown white
+ keyword whole d_dff white
+ keyword whole d_jkff white
+ keyword whole d_tff white
+ keyword whole d_srff white
+ keyword whole d_dlatch white
+ keyword whole d_srlatch white
+ keyword whole d_state white
+ keyword whole d_fdiv white
+ keyword whole d_ram white
+ keyword whole d_source white
+ keyword whole d_lut white
+ keyword whole d_genlut white
+ keyword whole xfer white
+
+ # common model parameters
+ keyword whole m white
+
+context " " green
+
+context exclusive .control .endc
+ keyword linestart \**\n brown
+ keyword $*\n brown
+ keyword ;*\n brown
+ keyword //*\n brown
+ keyword linestart \+ red
+
+ # commands
+ keyword whole ac yellow
+ keyword whole alias yellow
+ keyword whole alter yellow
+ keyword whole altermod yellow
+ keyword whole alterparam yellow
+ keyword whole asciiplot yellow
+ keyword whole aspice yellow
+ keyword whole bug yellow
+ keyword whole cd yellow
+ keyword whole cdump yellow
+ keyword whole circbyline yellow
+ keyword whole codemodel yellow
+ keyword whole compose yellow
+ keyword whole cutout yellow
+ keyword whole dc yellow
+ keyword whole define yellow
+ keyword whole deftype yellow
+ keyword whole delete yellow
+ keyword whole destroy yellow
+ keyword whole devhelp yellow
+ keyword whole diff yellow
+ keyword whole display yellow
+ keyword whole echo yellow
+ keyword whole edit yellow
+ keyword whole edisplay yellow
+ keyword whole eprint yellow
+ keyword whole eprvcd yellow
+ keyword whole fft yellow
+ keyword whole fourier yellow
+ keyword whole getcwd yellow
+ keyword whole gnuplot yellow
+ keyword whole hardcopy yellow
+ keyword whole help yellow
+ keyword whole history yellow
+ keyword whole inventory yellow
+ keyword whole iplot yellow
+ keyword whole jobs yellow
+ keyword whole let yellow
+ keyword whole linearize yellow
+ keyword whole listing yellow
+ keyword whole load yellow
+ keyword whole mc_source yellow
+ keyword whole meas yellow
+ keyword whole mdump yellow
+ keyword whole mrdump yellow
+ keyword whole noise yellow
+ keyword whole op yellow
+ keyword whole option yellow
+ keyword whole plot yellow
+ # FIXME: other pre_* keywords?
+ keyword whole pre_codemodel yellow
+ keyword whole pre_set yellow
+ keyword whole pre_unset yellow
+ keyword whole print yellow
+ keyword whole psd yellow
+ keyword whole quit yellow
+ keyword whole rehash yellow
+ keyword whole remcirc yellow
+ keyword whole remzerovec yellow
+ keyword whole reset yellow
+ keyword whole reshape yellow
+ keyword whole resume yellow
+ keyword whole rspice yellow
+ keyword whole run yellow
+ keyword whole rusage yellow
+ keyword whole save yellow
+ keyword whole sens yellow
+ keyword whole set yellow
+ keyword whole setcs yellow
+ keyword whole setcirc yellow
+ keyword whole setplot yellow
+ keyword whole setscale yellow
+ keyword whole setseed yellow
+ keyword whole settype yellow
+ keyword whole shell yellow
+ keyword whole shift yellow
+ keyword whole show yellow
+ keyword whole showmod yellow
+ keyword whole snload yellow
+ keyword whole snsave yellow
+ keyword whole source yellow
+ keyword whole spec yellow
+ keyword whole status yellow
+ keyword whole step yellow
+ keyword whole stop yellow
+ keyword whole strcmp yellow
+ keyword whole sysinfo yellow
+ keyword whole tf yellow
+ keyword whole trace yellow
+ keyword whole tran yellow
+ keyword whole transpose yellow
+ keyword whole unalias yellow
+ keyword whole undefine yellow
+ keyword whole unlet yellow
+ keyword whole unset yellow
+ keyword whole version yellow
+ keyword whole where yellow
+ keyword whole wrdata yellow
+ keyword whole write yellow
+ keyword whole wrs2p yellow
+
+ # control structures
+ keyword whole break brightred
+ keyword whole continue brightred
+ keyword whole dowhile brightred
+ keyword whole else brightred
+ keyword whole end brightred
+ keyword whole foreach brightred
+ keyword whole goto brightred
+ keyword whole if brightred
+ keyword whole label brightred
+ keyword whole repeat brightred
+ keyword whole then brightred
+ keyword whole while brightred
+
+ # internally predefined variables
+ keyword whole appendwrite white
+ keyword whole askquit white
+ keyword whole batchmode white
+ # FIXME: N between 0 and 22
+ keyword wholeleft color*\s white
+ keyword wholeleft color*\t white
+ keyword whole controlswait white
+ keyword whole cpdebug white
+ keyword whole curplot white
+ keyword whole curplotdate white
+ keyword whole curplotname white
+ keyword whole curplottitle white
+ keyword whole debug white
+ keyword whole device white
+ keyword whole diff_abstol white
+ keyword whole diff_reltol white
+ keyword whole diff_vntol white
+ keyword whole echo white
+ keyword whole editor white
+ keyword whole filetype white
+ keyword whole fourgridsize white
+ keyword whole gridsize white
+ keyword whole gridstyle white
+ keyword whole hcopydev white
+ keyword whole hcopyfont white
+ keyword whole hcopyfontsize white
+ keyword whole hcopydevtype white
+ keyword whole hcopyscale white
+ keyword whole hcopywidth white
+ keyword whole hcopyheight white
+ keyword whole hcopypscolor white
+ keyword whole hcopypstxcolor white
+ keyword whole height white
+ keyword whole history white
+ keyword whole inputdir white
+ keyword whole interactive white
+ keyword whole lprplot5 white
+ keyword whole lprps white
+ keyword whole modelcard white
+ keyword whole moremode white
+ keyword whole nfreqs white
+ keyword whole ngbehavior white
+ keyword whole ngdebug white
+ keyword whole ng_nomodcheck white
+ keyword whole no_auto_gnd white
+ keyword whole nobjthack white
+ keyword whole nobreak white
+ keyword whole noasciiplotvalue white
+ keyword whole noclobber white
+ keyword whole noglob white
+ keyword whole nolegend white
+ keyword whole nonomatch white
+ keyword whole noparse white
+ keyword whole noprintscale white
+ keyword whole nosavecurrents white
+ keyword whole nosort white
+ keyword whole nostepsizelimit white
+ keyword whole nosubckt white
+ keyword whole notrnoise white
+ keyword whole nounits white
+ keyword whole numdgt white
+ keyword whole num_threads white
+ keyword whole oscompiled white
+ keyword whole plainlet white
+ keyword whole plainplot white
+ keyword whole plainwrite white
+ keyword whole plainstyle white
+ keyword whole pointchars white
+ keyword whole polydegree white
+ keyword whole polysteps white
+ keyword whole program white
+ keyword whole prompt white
+ keyword whole rawfile white
+ keyword whole remote_shell white
+ keyword whole renumber white
+ keyword whole rndseed white
+ keyword whole rhost white
+ keyword whole rprogram white
+ keyword whole sharedmode white
+ keyword whole sim_status white
+ keyword whole sourcepath white
+ keyword whole specwindow white
+ keyword whole specwindoworder white
+ keyword whole spicepath white
+ keyword whole sqrnoise white
+ keyword whole strict_errorhandling white
+ keyword whole subend white
+ keyword whole subinvoke white
+ keyword whole substart white
+ keyword whole term white
+ keyword whole ticchar white
+ keyword whole ticmarks white
+ keyword whole ticlist white
+ keyword whole units white
+ keyword whole unixcom white
+ keyword whole wfont white
+ keyword whole wfont_size white
+ keyword whole width white
+ keyword whole win_console white
+ keyword whole wr_singlescale white
+ keyword whole wr_vecnames white
+ keyword whole x11lineararcs white
+ keyword whole xbrushwidth white
+ keyword whole xgridwidth white
+ keyword whole xfont white
+ keyword whole xtrtol white
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/swift.syntax
^
|
@@ -134,7 +134,7 @@
keyword ^ operators
keyword ~ operators
keyword ! operators
- keyword whole _ operatots
+ keyword whole _ operators
keyword { brackets
keyword } brackets
keyword ( brackets
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/toml.syntax
^
|
@@ -0,0 +1,22 @@
+# TOML: Tom's Obvious Minimal Language
+
+context default white
+
+# groups
+context [ \n brown
+ keyword [ yellow
+ keyword ] yellow
+
+# assignment
+context exclusive = \n write
+ keyword "*" brightgreen
+ keyword whole false brightcyan
+ keyword whole true brightcyan
+ keyword \{0123456789\} brightcyan
+
+# comments
+context # \n brown
+ spellcheck
+
+# other strings
+context " " brightgreen
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/yabasic.syntax
^
|
@@ -79,7 +79,7 @@
keyword whole let white
keyword whole line white
keyword whole local white
- keyword whole lo gwhite
+ keyword whole lo white
keyword whole loop white
keyword whole lower white
keyword whole ltrim white
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/misc/syntax/yaml.syntax
^
|
@@ -36,5 +36,6 @@
spellcheck
keyword {{*}} brightred
-context exclusive |\[123456789\+\-\s\t\]\n \n- brown
-context exclusive >\[123456789\+\-\s\t\]\n \n- brown
+# The last word below may be: "\n*:\{\s\n\}", but used strict version suitable for more cases
+context exclusive |\[123456789\+\-\s\t\]\n \n\n\[\s-\]\[-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]:\{\s\n\} brown
+context exclusive >\[123456789\+\-\s\t\]\n \n\n\[\s-\]\[-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]:\{\s\n\} brown
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/LINGUAS
^
|
@@ -1,7 +1,10 @@
# List of available translations
+af
+ar
az
be
bg
+br
ca
cs
da
@@ -17,21 +20,26 @@
fi
fr
fr_CA
+ga
gl
+he
hr
hu
ia
id
+ie
it
ja
ka
kk
ko
+kw
lt
lv
mn
nb
nl
+nl_BE
pl
pt
pt_BR
@@ -46,6 +54,7 @@
te
tr
uk
+uz
vi
wa
zh_CN
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/Makevars
^
|
@@ -34,7 +34,7 @@
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
-MSGID_BUGS_ADDRESS = http://www.midnight-commander.org/
+MSGID_BUGS_ADDRESS = https://www.midnight-commander.org/
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/af.po
^
|
@@ -1,20 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans (http://www.transifex.com/mc/mc/language/af/)\n"
+"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
@@ -71,24 +71,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +145,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +500,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +634,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +923,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +955,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1011,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1041,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1075,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1126,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1177,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1495,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1659,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1990,8 +1960,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2089,19 +2058,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2261,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2364,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2398,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2425,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2661,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2682,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2788,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2816,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2883,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3140,6 +3097,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3262,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3507,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3537,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3783,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3924,13 +3898,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4028,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4098,6 +4094,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4129,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4143,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ar.po
^
|
@@ -1,21 +1,22 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (http://www.transifex.com/mc/mc/language/ar/)\n"
+"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -71,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1990,8 +1961,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3144,6 +3102,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3310,7 +3271,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3563,6 +3524,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3590,10 +3554,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3829,6 +3800,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3940,13 +3915,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4063,6 +4045,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4114,6 +4111,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4143,6 +4146,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4154,62 +4160,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/az.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Azerbaijani (http://www.transifex.com/mc/mc/language/az/)\n"
"Language: az\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -521,24 +503,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Xəbərdarlıq"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "%s üçün qovluq kaşesinin vaxtı dolub"
@@ -664,12 +637,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Ftp dialoqlarını bildirilən fayla qeyd edər"
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Faylda göstərici proqramı başladar"
@@ -959,15 +926,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1000,6 +958,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Xəbərdarlıq"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1008,14 +969,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "%s Axtarılır"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1061,9 +1014,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1094,27 +1044,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1149,13 +1078,6 @@
msgid "&Local"
msgstr "Yer&li"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1207,7 +1129,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1258,34 +1180,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Ləğv Et"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Dəyişdir"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "A&ll"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Keç"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Ləğv Et"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1576,12 +1498,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Dəyişdir"
+
+msgid "A&ll"
+msgstr "A&ll"
+
+msgid "&Skip"
+msgstr "&Keç"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "%s Axtarılır"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1701,6 +1662,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2091,19 +2061,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s üçün parol"
-
-msgid "Domain:"
-msgstr "Verici : "
-
-msgid "Username:"
-msgstr "İstifadəçi adı: "
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2307,12 +2264,6 @@
msgid "Cannot change directory"
msgstr "Qovluq dəyişdirilə bilmir"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2416,9 +2367,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2453,14 +2401,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2470,8 +2428,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2706,6 +2664,15 @@
msgid "(stalled)"
msgstr "(stalled)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Saxla"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2718,12 +2685,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Bütöv fayl alına bilmədi. Saxlayım mı?"
-
-msgid "&Keep"
-msgstr "&Saxla"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2830,7 +2791,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2858,7 +2819,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2911,7 +2872,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "&Sıralama əmri..."
+msgstr ""
msgid "&Filter..."
msgstr "&Süzgəc ..."
@@ -2925,12 +2886,9 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B bağı..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3142,6 +3100,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3304,7 +3265,7 @@
msgstr "Sahə mə'lumatı yoxdur"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3549,6 +3510,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3577,11 +3541,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Əmr işə salına bilmir."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Borulama bacarılmadı"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3832,6 +3803,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3956,16 +3931,22 @@
"Faylın gözlənilməz bitişi görüldü\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Tar arxivi düzgün deyildir"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s arxivi açıla bilmir\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "extfs arxivi xəsərlidir"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4081,6 +4062,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4132,6 +4128,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4165,6 +4167,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4176,62 +4181,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/be.po
^
|
@@ -3,6 +3,7 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Pavel Suravezhkin, 2022
# Slava Zanko <slavazanko@gmail.com>, 2011
# Viktar Palstsiuk <vipals@gmail.com>, 2015
# Yury V. Zaytsev <yury@shurup.com>, 2019
@@ -12,22 +13,22 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Pavel Suravezhkin, 2022\n"
"Language-Team: Belarusian (http://www.transifex.com/mc/mc/language/be/)\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr "Увага: немагчыма загрузіць спіс"
+msgstr "Увага: немагчыма загрузіць спіс кодавых старонак"
msgid "7-bit ASCII"
msgstr "7-бітная ASCII"
@@ -82,31 +83,6 @@
msgid "FATAL: not a directory:"
msgstr "ХІБА: не з’яўляецца каталогам:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Падчас пераносу налад карыстальніка адбылася памылка: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Старыя налады перанесеныя з «%s»\n"
-" у каталогі, якія раіць «Freedesktop».\n"
-"Па падрабязнасці завітайце сюды:\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Старыя налады перанесеныя з\n"
-"«%s»\n"
-"у «%s»\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -196,12 +172,12 @@
msgid "True color not supported with ncurses."
msgstr "Колер не падтрымліваецца ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Сапраўдны колер не падтрымліваецца ў гэтай версіі slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Здаецца, ваш тэрмінал не падтрымлівае 256 колераў."
+msgid "True color not supported in this slang version."
+msgstr "Сапраўдны колер не падтрымліваецца ў гэтай версіі slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Вызначце COLORTERM=truecolor, калі ваш тэрмінал сапраўды падтрымлівае "
@@ -563,6 +539,9 @@
"Падчас чытання даных працэсу нашчадка нечакана адбылася памылка ў select():\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -571,18 +550,6 @@
"Нечакана адбылася памылка ў waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Увага"
-
-msgid "Pipe failed"
-msgstr "Хібны канал"
-
-msgid "Dup failed"
-msgstr "Не атрымалася падвоіць"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Не атрымалася падвоіць стары канал памылак"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Кэш каталога састарэў для %s"
@@ -708,12 +675,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Запісваць дыялог па FTP у вызначаны файл"
-msgid "Set debug level"
-msgstr "Вызначыць узровень пошуку хібаў"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Праглядзець файл"
@@ -1049,15 +1010,6 @@
msgid "Two files are needed to compare"
msgstr "Для параўнання неабходна два файлы"
-msgid "Choose syntax highlighting"
-msgstr "Абярыце як падсвятляць сінтаксіс"
-
-msgid "< Auto >"
-msgstr "< Аўтаматычна >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Перазагрузіць бягучы сінтаксіс >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Загрузка: %3d%%"
@@ -1092,6 +1044,9 @@
"Файл \"%s\" — завялікі.\n"
"Адкрыць яго?"
+msgid "Warning"
+msgstr "Увага"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Памылка чытання з канала: %s"
@@ -1100,14 +1055,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Не атрымалася адкрыць канал для чытання: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Пошук %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Пошук «%s»"
-
msgid "File has hard-links. Detach before saving?"
msgstr "У файла ёсць жорсткія спасылкі. Адлучыць іх перад тым, як захаваць?"
@@ -1153,9 +1100,6 @@
msgid "Save As"
msgstr "Захаваць як"
-msgid "Collect completions"
-msgstr "Збіраць дапаўненні"
-
msgid "&Quick save"
msgstr "Захаваць хутка(&Q)"
@@ -1186,27 +1130,6 @@
msgid "Cannot save file"
msgstr "Немагчыма захаваць файл"
-msgid "Delete macro"
-msgstr "Выдаліць макрас"
-
-msgid "Press macro hotkey:"
-msgstr "Націсніце гарачую клавішу на макрас:"
-
-msgid "Macro not deleted"
-msgstr "Макрас не выдалілі"
-
-msgid "Save macro"
-msgstr "Захаваць макрас"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Націсніце новую гарачую клавішу на макрас:"
-
-msgid "Repeat last commands"
-msgstr "Паўтарыць апошнія загады"
-
-msgid "Repeat times:"
-msgstr "Колькасць разоў:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Захаваць файл «%s»?"
@@ -1241,13 +1164,6 @@
msgid "&Local"
msgstr "Лакальны(&L)"
-msgid "Replace"
-msgstr "Замяніць"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Зроблена замен: %ld"
-
msgid "[NoName]"
msgstr "[Без назвы]"
@@ -1301,8 +1217,8 @@
msgid "Run sort"
msgstr "Упарадкаваць"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Увядзіце параметры парадкавання (глядзіце man), падзеленыя прагаламі:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Упарадкаваць"
@@ -1354,35 +1270,35 @@
"Тэкст змяніўся, але файл не захавалі.\n"
"Калі працягнуць, змены страцяцца."
-msgid "In se&lection"
-msgstr "У абраным(&L)"
+msgid "Cancel"
+msgstr "Скасаваць"
-msgid "&Find all"
-msgstr "Знайсці ўсё(&F)"
+msgid "Collect completions"
+msgstr "Збіраць дапаўненні"
-msgid "Enter replacement string:"
-msgstr "Замяніць на радок:"
+msgid "NoName"
+msgstr "Без назвы"
-msgid "Replace with:"
-msgstr "Замяніць на:"
+msgid "Save macro"
+msgstr "Захаваць макрас"
-msgid "&Replace"
-msgstr "Замяніць(&R)"
+msgid "Press the macro's new hotkey:"
+msgstr "Націсніце новую гарачую клавішу на макрас:"
-msgid "A&ll"
-msgstr "Усё(&A)"
+msgid "Delete macro"
+msgstr "Выдаліць макрас"
-msgid "&Skip"
-msgstr "Прамінуць(&S)"
+msgid "Press macro hotkey:"
+msgstr "Націсніце гарачую клавішу на макрас:"
-msgid "Confirm replace"
-msgstr "Замяніць?"
+msgid "Macro not deleted"
+msgstr "Макрас не выдалілі"
-msgid "Cancel"
-msgstr "Скасаваць"
+msgid "Repeat last commands"
+msgstr "Паўтарыць апошнія загады"
-msgid "NoName"
-msgstr "Без назвы"
+msgid "Repeat times:"
+msgstr "Колькасць разоў:"
msgid "&Open file..."
msgstr "Адкрыць файл(&O)"
@@ -1672,6 +1588,45 @@
msgid "Editor options"
msgstr "Параметры рэдактара"
+msgid "In se&lection"
+msgstr "У абраным(&L)"
+
+msgid "&Find all"
+msgstr "Знайсці ўсё(&F)"
+
+msgid "Enter replacement string:"
+msgstr "Замяніць на радок:"
+
+msgid "Replace"
+msgstr "Замяніць"
+
+msgid "Replace with:"
+msgstr "Замяніць на:"
+
+msgid "&Replace"
+msgstr "Замяніць(&R)"
+
+msgid "A&ll"
+msgstr "Усё(&A)"
+
+msgid "&Skip"
+msgstr "Прамінуць(&S)"
+
+msgid "Confirm replace"
+msgstr "Замяніць?"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Пошук %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Пошук «%s»"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Зроблена замен: %ld"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1679,8 +1634,8 @@
"Зручны тэкставы рэдактар,\n"
"напісаны для Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Усе правы абаронены (C) 1996-2022 Free Software Foundation"
msgid "About"
msgstr "Пра праграму"
@@ -1799,6 +1754,15 @@
msgid "Select language"
msgstr "Абраць мову"
+msgid "Choose syntax highlighting"
+msgstr "Абярыце як падсвятляць сінтаксіс"
+
+msgid "< Auto >"
+msgstr "< Аўтаматычна >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Перазагрузіць бягучы сінтаксіс >"
+
msgid "Load syntax file"
msgstr "Загрузіць файл сінтаксісу"
@@ -1836,6 +1800,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Не кансоль xterm або Linux;\n"
+"падабалонка не можа быць пераключана."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Увядзіце «exit», каб вярнуцца ў Midnight Commander"
@@ -1863,7 +1829,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Дазволы (васьмерычныя): %o"
msgid "Chown advanced command"
msgstr "Пашыраны загад «chown»"
@@ -2203,19 +2169,6 @@
msgstr "Фонавыя задачы"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Пароль на \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Дамен:"
-
-msgid "Username:"
-msgstr "Імя карыстальніка:"
-
-msgid "SMB authentication"
-msgstr "Аўтэнтыфікацыя SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2224,79 +2177,79 @@
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Надзейнае выдаленне"
msgid "Undelete"
-msgstr ""
+msgstr "Адмяніць выдаленне"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Сінхронныя абнаўлення"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Сінхронныя абнаўлення каталогаў"
msgid "Immutable"
-msgstr ""
+msgstr "Нязменны"
msgid "Append only"
-msgstr ""
+msgstr "Толькі дадаць"
msgid "No dump"
-msgstr ""
+msgstr "Без дампа"
msgid "No update atime"
-msgstr ""
+msgstr "Без абнаўлення atime"
msgid "Compress"
-msgstr ""
+msgstr "Сціснуць"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Сціснутыя кластары"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Сціснуты незахаваны файл"
msgid "Compression raw access"
-msgstr ""
+msgstr "Сціск неапрацаванага доступу"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Зашыфраваны inode"
msgid "Journaled data"
-msgstr ""
+msgstr "Дададзеныя ў часопіс дадзеныя"
msgid "Indexed directory"
-msgstr ""
+msgstr "Праіндэксаваны каталог"
msgid "No tail merging"
-msgstr ""
+msgstr "Без зліцця ў канец"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Верх іерархіі каталога"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Inode выкарыстоўвае экстэнты"
msgid "Huge_file"
-msgstr ""
+msgstr "Вялізны_файл"
msgid "No COW"
-msgstr ""
+msgstr "Без COW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Прамы доступ для файлаў"
msgid "Casefolded file"
-msgstr ""
+msgstr "Файл без уліку рэгістра"
msgid "Inode has inline data"
-msgstr ""
+msgstr "Inode мае убудаваныя дадзеныя"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Іерархія праекта"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Праўдзівасць абароненага inode"
msgid "&Marked all"
msgstr "Пазначыць усё(&M)"
@@ -2308,22 +2261,26 @@
msgstr "Прыбраць пазначэнне(&L)"
msgid "Chattr command"
-msgstr ""
+msgstr "Каманда Chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Немагчыма chattr \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
-msgstr ""
+msgstr "Немагчыма змяніць атрыбуты ў нелакальных файлавых сістэмах"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Немагчыма атрымаць сцягі \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
msgstr "вызначыць user ID для запуску(&U)"
@@ -2421,12 +2378,6 @@
msgid "Cannot change directory"
msgstr "Немагчыма змяніць каталог"
-msgid "Filter"
-msgstr "Фільтраваць"
-
-msgid "Set expression for filtering filenames"
-msgstr "Вызначце выраз для фільтравання назваў файлаў"
-
#, c-format
msgid "Link %s to:"
msgstr "Стварыць спасылку «%s» на:"
@@ -2532,9 +2483,6 @@
msgid "Shell link to machine"
msgstr "Злучыцца праз абалонку"
-msgid "SMB link to machine"
-msgstr "Злучыцца праз SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Аднавіць файлы на файлавай сістэме «ext2»"
@@ -2573,18 +2521,26 @@
"Немагчыма стварыць часовы загадны файл\n"
"%s"
+msgid "Pipe failed"
+msgstr "Хібны канал"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " Памылка ў файле %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Фармат %smc.ext змяніўся з версіі 3.0. Магчыма, падчас усталёўкі адбыўся "
-"збой. Калі ласка, абярыце свежую версію з пакунка Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2592,11 +2548,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Фармат файла %smc.ext змяніўся з версіі 3.0. Вы можаце або скапіяваць яго з "
-"%smc.ext альбо выкарыстаць гэты файл як прыклад і напісаць свой."
msgid "DialogTitle|Copy"
msgstr "Капіяваць"
@@ -2891,6 +2845,15 @@
msgid "(stalled)"
msgstr "(затрымліваецца)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "Захаваць(&K)"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2907,12 +2870,6 @@
"Немагчыма закрыць мэтавы файл «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Быў атрыманы незавершаны файл. Пакінуць?"
-
-msgid "&Keep"
-msgstr "Захаваць(&K)"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3029,8 +2986,8 @@
msgstr "Працэс у фоне: файл існуе"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Апрацавана файлаў: %zu з %zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3057,8 +3014,8 @@
msgstr " Агулам: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Агулам: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Крыніца"
@@ -3110,7 +3067,7 @@
msgstr "Фармат спіса(&L)..."
msgid "&Sort order..."
-msgstr "Упарадкаваць(&S)..."
+msgstr ""
msgid "&Filter..."
msgstr "Фільтраваць(&F)..."
@@ -3124,11 +3081,8 @@
msgid "S&hell link..."
msgstr "Злучэнне праз абалонку(&H)..."
-msgid "S&FTP link..."
-msgstr "Злучэнне праз SFTP(&F)..."
-
-msgid "SM&B link..."
-msgstr "Злучэнне праз SMB(&B)..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "На панэлі(&Z)"
@@ -3343,6 +3297,9 @@
msgid "&Find recursively"
msgstr "Шукаць у падкаталогах(&F)"
+msgid "Follow s&ymlinks"
+msgstr "Выконвайце s&ymlinks"
+
msgid "S&kip hidden"
msgstr "Мінаць схаваныя(&K)"
@@ -3511,8 +3468,8 @@
msgstr "Няма звестак пра прастору"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Вольнае месца: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3567,14 +3524,14 @@
msgstr "Спасылкі: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Атрыбуты: не падтрымліваецца"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Атрыбуты: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Атрыбуты: недаступны"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3760,6 +3717,9 @@
msgid "Unselect"
msgstr "Не абіраць"
+msgid "Filter"
+msgstr "Фільтраваць"
+
msgid "Do you really want to execute?"
msgstr "Сапраўды выканаць?"
@@ -3787,11 +3747,23 @@
msgid "Enter command label:"
msgstr "Увядзіце назву загада:"
-msgid "Cannot invoke command."
-msgstr "Немагчыма выканаць загад."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Вонкавая панелізаванне:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Памылка падчас закрыцця канала"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Вонкавая панелізаванне:\n"
+"не ўдалося прачытаць дадзеныя з даччынага stdout:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Немагчыма запусціць загад у адлеглым каталозе"
@@ -4032,7 +4004,7 @@
msgstr "З падтрымкай некалькіх кадаванняў"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "З падтрымкай атрыбутаў ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
@@ -4056,6 +4028,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Сабраны з ncursesw (невядомая версія)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Скампіляваны з libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Віртуальныя файлавыя сістэмы:"
@@ -4182,16 +4158,27 @@
"Нечаканы канец файла\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Несумяшчальны архіў tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Немагчыма адкрыць архіў «%s»\n"
+"Немагчыма адкрыць %s архіў\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Несумяшчальны архіў extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Віртуальная файлавая сістэма EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4307,6 +4294,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Чакаецца яшчэ спроба… %d (скасаваць — «Ctrl-G»)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: хібная сям’я адрасоў"
@@ -4360,6 +4362,14 @@
"Выдаліце пароль або выпраўце дазволы (ўласніка)"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Віртуальная файлавая сістэма SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Увага: файл «%s» не знойдзены\n"
@@ -4393,6 +4403,10 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: не ўдалося пераўтварыць IP-адрас выдаленага хаста ў тэкставую форму"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: злучаемся з «%s»"
@@ -4404,6 +4418,65 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: не атрымалася злучыцца з серверам: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: знойдзены ключ хоста тып якога не падтрымліваецца: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: невядомы тып ключа хоста:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Дададзены на сталай аснове\n"
+"%s (%s)\n"
+"у спіс вядомых хастоў."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: немагчыма атрымаць ключ выдаленага хаста"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: тып ключа не падтрымліваецца, немагчыма праверыць ключ выдаленага хаста"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: немагчыма вылічыць хэш адбіткаў ключа хоста"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Сапраўднасць хаста\n"
+"%s (%s)\n"
+"не можа быць устаноўлена!\n"
+"%s хэш адбітка ключа\n"
+"SHA1:%s.\n"
+"Вы хочаце дадаць яго ў спіс вядомых хастоў і працягнуць падключэнне?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"знойдзены ў спісе вядомых хастоў, але\n"
+"КЛЮЧЫ НЕ СУПАДАЮЦЬ! ГЭТА МОЖА БЫЦЬ MITM АТАКАЙ!\n"
+"Вы ўпэўнены, што хочаце дадаць яго ў спіс вядомых хастоў і працягнуць "
+"падключэнне?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: не атрымалася праверыць ключ хаста"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: увядзіце парольную фразу для «%s» "
@@ -4418,8 +4491,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: пароль пусты."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Збой стабілізацыі сеанса SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: збой пры ўсталяванні SSH сесіі"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: няма апрацоўшчыка каб прачытаць файл"
@@ -4436,33 +4509,6 @@
msgstr "sftp: спіс прачытаны."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "зноўку не атрымалася злучыцца з «%s»"
-
-msgid "Authentication failed"
-msgstr "Аўтэнтыфікацыя не ўдалася"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Памылка (%s) падчас стварэння каталога «%s»"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Памылка (%s) падчас выдалення каталога «%s»"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s падчас адкрыцця адлеглага файла «%s»"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s падчас выдалення адлеглага файла «%s»"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s падчас змены назвы файла\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/bg.po
^
|
@@ -3,17 +3,19 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Alexander Shopov <ash@kambanaria.org>, 2022
+# Myselus, 2015,2017
# Myselus, 2015-2017
# Slava Zanko <slavazanko@gmail.com>, 2011
# Yasen Pramatarov <yasen@lindeas.com>, 2011-2014,2016
-# Yury V. Zaytsev <yury@shurup.com>, 2017
+# Yury V. Zaytsev <yury@shurup.com>, 2017,2020
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>, 2022\n"
"Language-Team: Bulgarian (http://www.transifex.com/mc/mc/language/bg/)\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
@@ -23,7 +25,7 @@
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr "Предупреждение: не може да се зареди списъкът на кодовите таблици"
+msgstr "Предупреждение: списъкът с кодовите таблици не може да се зареди"
msgid "7-bit ASCII"
msgstr "7-битов ASCII"
@@ -33,7 +35,7 @@
msgstr "Не може да се преведе от %s на %s"
msgid "Event system already initialized"
-msgstr "Системата за събития е вече инициализирана"
+msgstr "Системата за събития вече е инициализирана"
msgid "Failed to initialize event system"
msgstr "Неуспешно инициализиране на системата за събития"
@@ -46,11 +48,11 @@
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr "Не може да се създаде група '%s' за събития!"
+msgstr "Не може да се създаде група „%s“ за събития!"
#, c-format
msgid "Unable to create event '%s'!"
-msgstr "Не може да се създаде събитие '%s'!"
+msgstr "Не може да се създаде събитие „%s“!"
#, c-format
msgid ""
@@ -58,9 +60,9 @@
"User: %s\n"
"Process ID: %d"
msgstr ""
-"Файлът \"%s\" вече се редактира.\n"
+"Файлът „%s“ вече се редактира.\n"
"Потребител: %s\n"
-"ID на процеса: %d"
+"Ид-р на процеса: %d"
msgid "File locked"
msgstr "Файлът е заключен"
@@ -73,53 +75,31 @@
#, c-format
msgid "Cannot create %s directory"
-msgstr "Не може да се създаде %s директория"
+msgstr "Не може да се създаде директория „%s“"
msgid "FATAL: not a directory:"
-msgstr "Фатално: не е директория:"
-
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Грешка възникна при преместването на потребителските настройки: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Старите ви настройки бяха преместени от %s\n"
-"в препоръчваните от Freedesktop директории.\n"
-"За повече информация, моля посетете\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Старите ви настройки бяха преместени от %s\n"
-"в %s\n"
+msgstr "ФАТАЛНА ГРЕШКА: не е директория:"
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
msgstr ""
-"Числото е извън обхват (би трябвало да бъде обвхвата, 0 <= n <=0xFF, "
-"представено в шестнадесетичен формат) "
+"Числото е извън обхват (трябва да е в интервала [0; 0xFF] и да е в 16-ен "
+"формат) "
msgid "Invalid character"
-msgstr "Невалиден символ"
+msgstr "Неправилен знак"
msgid "Unmatched quotes character"
-msgstr "Не съответстващи кавички"
+msgstr "Кавичка без еш"
#, c-format
msgid ""
"Hex pattern error at position %d:\n"
"%s."
msgstr ""
+"Грешка за 16-на стойност при знак %d:\n"
+"%s."
msgid "Search string not found"
msgstr "Търсеният низ не намерен"
@@ -128,19 +108,17 @@
msgstr "Все още не е внедрено"
msgid "Num of replace tokens not equal to num of found tokens"
-msgstr ""
-"Количеството на символи за заместване не е равно на количеството намерени "
-"символи"
+msgstr "Броят лексеми за заместване е различен от броя намерени лексеми"
#, c-format
msgid "Invalid token number %d"
-msgstr "Невалиден номер на символ %d"
+msgstr "Неправилeн номер на лексема %d"
msgid "Regular expression error"
msgstr "Грешка в регулярен израз"
msgid "No&rmal"
-msgstr ""
+msgstr "&Нормално"
msgid "Re&gular expression"
msgstr "Ре&гулярен израз"
@@ -156,16 +134,16 @@
"Unable to load '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"Невъзможно зареждане на \"%s\" тема.\n"
-"Тема по подразбиране беше заредена"
+"Невъзможно зареждане на темата „%s“.\n"
+"Заредена бе стандартната тема"
#, c-format
msgid ""
"Unable to parse '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"Невъзможна обработка на \"%s\" тема.\n"
-"Тема по подразбиране беше заредена"
+"Невъзможен анализ на темата „%s“.\n"
+"Заредена бе стандартната тема"
#, c-format
msgid ""
@@ -173,9 +151,9 @@
"%s\n"
"Default skin has been loaded"
msgstr ""
-"Невъзможно използване на '%s' тема с поддръжка на истински цветове:\n"
+"Не може да се ползва темата с поддръжка на истински цветове „%s“:\n"
"%s\n"
-"Тема по подразбиране беше заредена."
+"Заредена бе стандартната тема"
#, c-format
msgid ""
@@ -183,26 +161,24 @@
"on non-256 colors terminal.\n"
"Default skin has been loaded"
msgstr ""
-"Невъзможно използване на \"%s\" тема с 256 цветова поддръжка\n"
-"на не-256 цветови терминал.\n"
-"Тема по подразбиране беше заредена"
+"На терминал без поддръжка на 256 цвята не може да се ползва темата „%s“:\n"
+"Заредена бе стандартната тема"
msgid "True color not supported with ncurses."
-msgstr "Истински цвят не се поддържа заедно с ncurses."
+msgstr "Истински цвят не се поддържа с ncurses."
+
+msgid "Your terminal doesn't even seem to support 256 colors."
+msgstr "Терминалът ви не поддържа дори 256 цвята."
msgid "True color not supported in this slang version."
msgstr "Истински цвят не се поддържа с тази версия на slang."
-msgid "Your terminal doesn't even seem to support 256 colors."
-msgstr "Вашият терминал дори не поддържа 256 цвята."
-
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
-"Задайте COLORTERM=truecolor ако вашият терминал наистина поддържа истински "
-"цветове."
+"Задайте COLORTERM=truecolor, ако терминалът ви поддържа истински цветове."
msgid "Escape"
-msgstr "Esc"
+msgstr ""
msgid "Function key 1"
msgstr "F1"
@@ -265,25 +241,25 @@
msgstr "F20"
msgid "Completion/M-tab"
-msgstr "Допълване/M-tab"
+msgstr "Дописване/M-Tab"
msgid "BackTab/S-tab"
-msgstr "Обратен таб./S-tab"
+msgstr "Обратно/S-Tab"
msgid "Backspace"
msgstr "Backspace"
msgid "Up arrow"
-msgstr "Стрелка нагоре"
+msgstr "↑"
msgid "Down arrow"
-msgstr "Стрелка надолу"
+msgstr "↓"
msgid "Left arrow"
-msgstr "Стрелка наляво"
+msgstr "←"
msgid "Right arrow"
-msgstr "Стрелка надясно"
+msgstr "→"
msgid "Insert"
msgstr "Insert"
@@ -298,55 +274,55 @@
msgstr "End"
msgid "Page Up"
-msgstr "Страница нагоре"
+msgstr ""
msgid "Page Down"
-msgstr "Страница надолу"
+msgstr ""
msgid "/ on keypad"
-msgstr "/ от доп. клв."
+msgstr "/ от доп. клав."
msgid "* on keypad"
-msgstr "* от доп. клв."
+msgstr "* от доп. клав."
msgid "- on keypad"
-msgstr "- от доп. клв."
+msgstr "- от доп. клав."
msgid "+ on keypad"
-msgstr "+ от доп. клв."
+msgstr "+ от доп. клав."
msgid "Left arrow keypad"
-msgstr "Лява стрелка от доп. клв."
+msgstr "← от доп. клав."
msgid "Right arrow keypad"
-msgstr "Дясна стрелка от доп. клв."
+msgstr "→ от доп. клав."
msgid "Up arrow keypad"
-msgstr "Горна стрелка от доп. клв."
+msgstr "↑ от доп. клав."
msgid "Down arrow keypad"
-msgstr "Долна стрелка от доп. клв."
+msgstr "↓ от доп. клав."
msgid "Home on keypad"
-msgstr "Home от доп. клв."
+msgstr "Home от доп. клав."
msgid "End on keypad"
-msgstr "End от доп. клв."
+msgstr "End от доп. клав."
msgid "Page Down keypad"
-msgstr "Page Down от доп. клв."
+msgstr "Page Down от доп. клав."
msgid "Page Up keypad"
-msgstr "Page Up от доп. клв."
+msgstr "Page Up от доп. клав."
msgid "Insert on keypad"
-msgstr "Insert от доп. клв."
+msgstr "Insert от доп. клав."
msgid "Delete on keypad"
-msgstr "Delete от доп. клв."
+msgstr "Delete от доп. клав."
msgid "Enter on keypad"
-msgstr "Enter от доп. клв."
+msgstr "Enter от доп. клав."
msgid "Function key 21"
msgstr "F21"
@@ -361,97 +337,97 @@
msgstr "F24"
msgid "A1 key"
-msgstr "A1 клавиш"
+msgstr "Клавиш A1"
msgid "C1 key"
-msgstr "C1 клавиш"
+msgstr "Клавиш C1"
msgid "Asterisk"
-msgstr "Звезда"
+msgstr "*"
msgid "Minus"
-msgstr "Минус"
+msgstr "-"
msgid "Plus"
-msgstr "Плюс"
+msgstr "+"
msgid "Dot"
-msgstr "Точка"
+msgstr "."
msgid "Less than"
-msgstr "По-малко"
+msgstr "<"
msgid "Great than"
-msgstr "По-голямо"
+msgstr ">"
msgid "Equal"
-msgstr "Равно"
+msgstr "="
msgid "Comma"
-msgstr "Запетайка"
+msgstr ","
msgid "Apostrophe"
-msgstr "Апостроф"
+msgstr "'"
msgid "Colon"
-msgstr "Двоеточие"
+msgstr ":"
msgid "Semicolon"
-msgstr "Точка и запетая"
+msgstr ";"
msgid "Exclamation mark"
-msgstr "Удивителна"
+msgstr "!"
msgid "Question mark"
-msgstr "Въпросителна"
+msgstr "?"
msgid "Ampersand"
-msgstr "Амперсанд"
+msgstr "&"
msgid "Dollar sign"
-msgstr "Долар"
+msgstr "$"
msgid "Quotation mark"
-msgstr "Кавички"
+msgstr "\""
msgid "Percent sign"
-msgstr "Знак за процент"
+msgstr "%"
msgid "Caret"
-msgstr "Коректура"
+msgstr "^"
msgid "Tilda"
-msgstr "Тилда"
+msgstr "~"
msgid "Prime"
-msgstr "Обратен апостроф"
+msgstr "`"
msgid "Underline"
-msgstr "Подчертаване"
+msgstr "_"
msgid "Understrike"
-msgstr "Подчертаване"
+msgstr "_"
msgid "Pipe"
-msgstr "Права черта"
+msgstr "|"
msgid "Left parenthesis"
-msgstr "Отваряща скоба"
+msgstr "("
msgid "Right parenthesis"
-msgstr "Затваряща скоба"
+msgstr ")"
msgid "Left bracket"
-msgstr "Отваряща квадратна скоба"
+msgstr "["
msgid "Right bracket"
-msgstr "Затваряща квадратна скоба"
+msgstr "]"
msgid "Left brace"
-msgstr "Отваряща фигурна скоба"
+msgstr "{"
msgid "Right brace"
-msgstr "Затваряща фигурна скоба"
+msgstr "}"
msgid "Enter"
msgstr "Enter"
@@ -463,13 +439,13 @@
msgstr "Интервал"
msgid "Slash key"
-msgstr "Накл. черта"
+msgstr "/"
msgid "Backslash key"
-msgstr "Обратна накл. черта"
+msgstr "\\"
msgid "Number sign #"
-msgstr "Знак за номерация #"
+msgstr "#"
#. TRANSLATORS: Please translate as in "at sign" (@).
msgid "At sign"
@@ -485,72 +461,81 @@
msgstr "Shift"
msgid "The TERM environment variable is unset!\n"
-msgstr "Променливата TERM не е установена!\n"
+msgstr "Променливата TERM не е зададена!\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Каналът за SIGWINCH не може да се провери"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Не може да се създаде канал за SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Страната за запис на канала за SIGWINCH не може да се настрои: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Страната за четене на канала за SIGWINCH не може да се настрои: %s (%d)\n"
#, c-format
msgid ""
"Screen size %dx%d is not supported.\n"
"Check the TERM environment variable.\n"
msgstr ""
-"Размер на екрана %dx%d не е поддържан.\n"
+"Не се поддържа размер на екрана %dx%d.\n"
"Проверете променливата на средата TERM.\n"
msgid "B"
-msgstr "Б"
+msgstr "B"
msgid "kB"
-msgstr "кБ"
+msgstr "kB"
msgid "KiB"
-msgstr "КиБ"
+msgstr "KiB"
msgid "MB"
-msgstr "МБ"
+msgstr "MB"
msgid "MiB"
-msgstr "Миб"
+msgstr "MiB"
msgid "GB"
-msgstr "ГБ"
+msgstr "GB"
msgid "GiB"
-msgstr "Биб"
+msgstr "GiB"
msgid "Cannot create pipe descriptor"
msgstr "Не може да се създаде дескриптор на канала"
msgid "Cannot create pipe streams"
-msgstr "Не могат да се създадат потоци на канала"
+msgstr "Не може да се създадат потоци на канала"
#, c-format
msgid ""
"Unexpected error in select() reading data from a child process:\n"
"%s"
msgstr ""
-"Неочаквана грешка в select(), четейки информация от дъщерен процес:\n"
+"Неочаквана грешка в select() при четене на информация от дъщерен процес:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -559,18 +544,6 @@
"Неочаквана грешка в waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Предупреждение"
-
-msgid "Pipe failed"
-msgstr "Канал е неуспешен"
-
-msgid "Dup failed"
-msgstr "Dup се провали"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Грешка при дублиране на стар канал"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Кеша за %s остаря"
@@ -584,7 +557,7 @@
msgstr "%s: %s: %s %lld трансферирани байта"
msgid "Starting linear transfer..."
-msgstr "Започвам линеен трансфер..."
+msgstr "Начало на линеен трансфер…"
msgid "Getting file"
msgstr "Получавам файл"
@@ -602,7 +575,7 @@
#, c-format
msgid "Cannot set correct permissions for directory %s\n"
-msgstr "Не могат да се зададат коректни права за директория %s\n"
+msgstr "Не може да се зададат коректни права за директория %s\n"
#, c-format
msgid "Cannot create temporary directory %s: %s\n"
@@ -617,7 +590,7 @@
msgstr "Временни файлове няма да бъдат създадени\n"
msgid "Press any key to continue..."
-msgstr "Натиснете клавиш, за да продължите..."
+msgstr "Натиснете клавиш, за да продължите…"
msgid "Cannot parse:"
msgstr "Грешка при обработка:"
@@ -639,22 +612,22 @@
#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
msgid "DialogTitle|History cleanup"
-msgstr "ЗаглавиеДиалог|Изчистване история"
+msgstr "Изчистване история"
msgid "Do you want clean this history?"
msgstr "Да се изчисти ли историята?"
msgid "&Yes"
-msgstr "Да"
+msgstr "&Да"
msgid "&No"
-msgstr "Не"
+msgstr "&Не"
msgid "&OK"
-msgstr "&ОК"
+msgstr "&Добре"
msgid "&Cancel"
-msgstr "О&тказ"
+msgstr "&Отказ"
msgid "Background process:"
msgstr "Фонов процес:"
@@ -667,29 +640,28 @@
msgstr "%s (%d)"
msgid "&Abort"
-msgstr "Отказ"
+msgstr "&Отказ"
msgid "Displays the current version"
msgstr "Показване на текущата версия"
msgid "Print data directory"
-msgstr "Принтиране на директорията с данни"
+msgstr "Печат на директорията с данни"
msgid "Print extended info about used data directories"
-msgstr ""
-"Принтиране на разширена информация относно използваните директории за данни"
+msgstr "Печат на разширена информация относно използваните директории за данни"
msgid "Print configure options"
-msgstr "Принтиране на конфигурационните опции"
+msgstr "Печат на конфигурационните опции"
msgid "Print last working directory to specified file"
-msgstr "Принтиране на последната работна директория в определен файл"
+msgstr "Печат на последната работна директория в определен файл"
msgid "<file>"
-msgstr ""
+msgstr "<файл>"
msgid "Enables subshell support (default)"
-msgstr "Поддръжка на подобвивка (по подразбиране)"
+msgstr "Поддръжка на подобвивка (стандартно)"
msgid "Disables subshell support"
msgstr "Без поддръжка на подобвивка"
@@ -697,12 +669,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Записване на ftp-сесиите в указан файл"
-msgid "Set debug level"
-msgstr "Задаване на ниво на дебъгване"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Показване съдържанието на файл"
@@ -710,7 +676,7 @@
msgstr "Редактиране на файлове"
msgid "<file> ..."
-msgstr ""
+msgstr "<файл> …"
msgid "Forces xterm features"
msgstr "Използване възможности на xterm"
@@ -719,7 +685,7 @@
msgstr "Изключване на поддръжката на X11"
msgid "Tries to use an old highlight mouse tracking"
-msgstr ""
+msgstr "Опит за ползване на старото следене на маркиране с мишка"
msgid "Disable mouse support in text version"
msgstr "Без поддръжка на мишка в текстов режим"
@@ -741,7 +707,7 @@
msgid "Don't load definitions of key bindings from file, use defaults"
msgstr ""
-"Без зареждане на клавишни комбинации от файл, използване на подразбираните"
+"Без зареждане на клавишни комбинации от файл, използване на стандартните"
msgid "Requests to run in black and white"
msgstr "Поиск за стартиране в черно-бяло"
@@ -753,7 +719,7 @@
msgstr "Указва цветова конфигурация"
msgid "<string>"
-msgstr ""
+msgstr "<низ>"
msgid "Show mc with specified skin"
msgstr "Показване на mc с определена тема"
@@ -779,6 +745,25 @@
" Viewer: viewnormal,viewbold, viewunderline, viewselected\n"
" Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
msgstr ""
+"--colors КЛЮЧОВА_ДУМА={ЦВЯТ},{ФОН},{АТРИБУТ}:КЛЮЧОВА_ДУМА_2=…\n"
+"\n"
+"Когато пропуснете {ЦВЯТ}, {ФОН} или {АТРИБУТ}, се ползват стандартните\n"
+"стойности\n"
+"\n"
+"Ключови думи:\n"
+" Глобални: errors, disabled, reverse, gauge, header,\n"
+" input, inputmark, inputunchanged, commandlinemark,\n"
+" bbarhotkey, bbarbutton, statusbar\n"
+" Файлове: normal, selected, marked, markselect\n"
+" Диалогови прозорци: dnormal, dfocus, dhotnormal, dhotfocus, errdhotnormal,\n"
+" errdhotfocus\n"
+" Менюта: menunormal, menuhot, menusel, menuhotsel, menuinactive\n"
+" Изскачащи менюта: pmenunormal, pmenusel, pmenutitle\n"
+" Редактор: editnormal, editbold, editmarked, editwhitespace,\n"
+" editlinestate, editbg, editframe, editframeactive,\n"
+" editframedrag\n"
+" Преглед: viewnormal, viewbold, viewunderline, viewselected\n"
+" Помощ: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
#. TRANSLATORS: don't translate color names and attributes
msgid ""
@@ -808,16 +793,16 @@
msgstr "Настройки на цветове"
msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
-msgstr ""
+msgstr "[+№_ред] файл_1[:№_ред] [файл_2[:№_ред]…]"
msgid "file"
msgstr "файл"
msgid "file1 file2"
-msgstr "файл1 файл2"
+msgstr "файл_1 файл_2"
msgid "[this_dir] [other_panel_dir]"
-msgstr ""
+msgstr "[тази_дир-я] [дир-я_на_другия_панел]"
msgid ""
"\n"
@@ -867,8 +852,8 @@
"Background process sent us a request for more arguments\n"
"than we can handle."
msgstr ""
-"Фонов процес ни изпрати заявка за повече аргументи\n"
-"отколкото можем да боравим."
+"Фонов процес изпрати заявка за повече\n"
+"аргументи отколкото се поддържат."
msgid "&Dismiss"
msgstr "&Отмяна"
@@ -877,7 +862,7 @@
msgstr "Въведете низ за търсене:"
msgid "Cas&e sensitive"
-msgstr "Чувствителност към &регистъра"
+msgstr "&Чувствителност към регистъра"
msgid "&Backwards"
msgstr "&Назад"
@@ -966,25 +951,25 @@
msgstr "Въведете ред:"
msgid "ButtonBar|Help"
-msgstr "ButtonBar|Помощ"
+msgstr "Помощ"
msgid "ButtonBar|Save"
-msgstr "ButtonBar|Запис"
+msgstr "Запис"
msgid "ButtonBar|Edit"
-msgstr "ButtonBar|Редакция"
+msgstr "Редактиране"
msgid "ButtonBar|Merge"
-msgstr "ButtonBar|Обединяване"
+msgstr "Обединяване"
msgid "ButtonBar|Search"
-msgstr "ButtonBar|Търсене"
+msgstr "Търсене"
msgid "ButtonBar|Options"
-msgstr "ButtonBar|Настройки"
+msgstr "Настройки"
msgid "ButtonBar|Quit"
-msgstr "ButtonBar|Изход"
+msgstr "Изход"
msgid "Quit"
msgstr "Изход"
@@ -1004,14 +989,14 @@
#, c-format
msgid "\"%s\" is a directory"
-msgstr "\"%s\" е директория"
+msgstr "„%s“ е директория"
#, c-format
msgid ""
"Cannot stat \"%s\"\n"
"%s"
msgstr ""
-"Не може да се stat-не \"%s\"\n"
+"Не може да се stat-не „%s“\n"
"%s"
msgid "Diff viewer: invalid mode"
@@ -1020,21 +1005,12 @@
msgid "Two files are needed to compare"
msgstr "Два файла са нужни за сравнение"
-msgid "Choose syntax highlighting"
-msgstr "Избиране на осветяване на синтаксиса"
-
-msgid "< Auto >"
-msgstr "< Автоматично >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Презареждане на Сегашния Синтаксис >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Зареждане: %3d%%"
msgid "Loading..."
-msgstr "Зареждане..."
+msgstr "Зареждане…"
#, c-format
msgid "Cannot open %s for reading"
@@ -1053,16 +1029,19 @@
#, c-format
msgid "\"%s\" is not a regular file"
-msgstr "\"%s\" не е обикновен файл"
+msgstr "„%s“ не е обикновен файл"
#, c-format
msgid ""
"File \"%s\" is too large.\n"
"Open it anyway?"
msgstr ""
-"Файлът \"%s\" е твърде голям.\n"
+"Файлът „%s“ е твърде голям.\n"
"Отваряне въпреки това? "
+msgid "Warning"
+msgstr "Предупреждение"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Грешка при четене от канал: %s"
@@ -1071,14 +1050,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Не може да се отвори канал за четене: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Търсене на %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Търся %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Файлът има hard-линкове. Отвързване преди запис?"
@@ -1124,9 +1095,6 @@
msgid "Save As"
msgstr "Запазване като"
-msgid "Collect completions"
-msgstr "Събиране на довършванията"
-
msgid "&Quick save"
msgstr "&Бърз запис"
@@ -1157,36 +1125,15 @@
msgid "Cannot save file"
msgstr "Не може да се запише файл"
-msgid "Delete macro"
-msgstr "Изтриване на макрос"
-
-msgid "Press macro hotkey:"
-msgstr "Натиснете клавиша за макрос:"
-
-msgid "Macro not deleted"
-msgstr "Макроса не е изтрит"
-
-msgid "Save macro"
-msgstr "Записване на макрос"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Натиснете новия клавиш за макрос:"
-
-msgid "Repeat last commands"
-msgstr "Повтаряне на последните команди"
-
-msgid "Repeat times:"
-msgstr "Брой повторения:"
-
#, c-format
msgid "Confirm save file: \"%s\""
-msgstr "Потвърждаване запис на файл: \"%s\""
+msgstr "Потвърждаване запис на файл: „%s“"
msgid "Save file"
msgstr "Запазване на файл"
msgid "&Save"
-msgstr "Запази"
+msgstr "&Запазване"
msgid "Load"
msgstr "Зареждане"
@@ -1198,7 +1145,7 @@
msgstr "Кой синтактичен файл искате да редактирате?"
msgid "&User"
-msgstr "Потребителски"
+msgstr "&Потребителски"
msgid "&System wide"
msgstr "&Общосистемни"
@@ -1210,17 +1157,10 @@
msgstr "Кой файл на меню искате да редактирате?"
msgid "&Local"
-msgstr "Локален"
-
-msgid "Replace"
-msgstr "Замяна"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld замени са направени"
+msgstr "&Локален"
msgid "[NoName]"
-msgstr "[НямаИме]"
+msgstr "[БезИме]"
#, c-format
msgid ""
@@ -1239,7 +1179,7 @@
"Save modified file %s?"
msgstr ""
"Midnight Commander се изключва.\n"
-"Записване на редактирания файл %s?"
+"Запазване на редактирания файл %s?"
msgid "This function is not implemented"
msgstr "Това действие все още не е внедрено"
@@ -1254,7 +1194,7 @@
msgstr "Изрязване в буфера"
msgid "Goto line"
-msgstr "Отиване на ред"
+msgstr "Към ред"
msgid "Save block"
msgstr "Запис на блок"
@@ -1266,31 +1206,31 @@
msgstr "Грешка при вмъкване на файл"
msgid "Sort block"
-msgstr "Сортиране на блок"
+msgstr "Подредба на блок"
msgid "You must first highlight a block of text"
-msgstr "Трябва първо да осветите блок от текст"
+msgstr "Първо изберете блок от текст"
msgid "Run sort"
msgstr "Пускане на сортиране"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Въвеждане на опции за сортиране (вижте man-страницата) отделени чрез бяло "
-"поле:"
+"Въведете опциите за подредба (вижте страницата sort(1) в ръководството), "
+"разелени с интервал:"
msgid "Sort"
-msgstr "Подреждане"
+msgstr "Подредба"
msgid "Cannot execute sort command"
-msgstr "Не може да изпълни сортиращата команда"
+msgstr "Командата за подредба не може да изпълни"
#, c-format
msgid "Sort returned non-zero: %s"
-msgstr "Сортирането отвърна различно от нула: %s"
+msgstr "Подредбата завърши с ненулев код: %s"
msgid "Paste output of external command"
-msgstr "Вмъкване на изходната информация от външна команда"
+msgstr "Вмъкване на изхода от външна команда"
msgid "Enter shell command(s):"
msgstr "Въвеждане на конзолна команда(и):"
@@ -1302,13 +1242,13 @@
msgstr "Грешка при изпълнение на команда"
msgid "mail -s <subject> -c <cc> <to>"
-msgstr "mail -s <subject> -c <cc> <to>"
+msgstr "mail -s <ТЕМА> -c <ДОП_ПОЛУЧАТЕЛ> <ПОЛУЧАТЕЛ>"
msgid "To"
msgstr "До"
msgid "Subject"
-msgstr "Относно"
+msgstr "Тема"
msgid "Copies to"
msgstr "Копие до"
@@ -1320,47 +1260,47 @@
msgstr "Въвеждане дословно"
msgid "Press any key:"
-msgstr "Натиснете който и да е клавиш:"
+msgstr "Натиснете произволен клавиш:"
msgid ""
"Current text was modified without a file save.\n"
"Continue discards these changes."
msgstr ""
-"Сегашния текст е променен без запис на файл.\n"
+"Текущият текст е променен без запис на файл.\n"
"Продължаване изоставяйки тези промени"
-msgid "In se&lection"
-msgstr "В се&лекция"
+msgid "Cancel"
+msgstr "Отказ"
-msgid "&Find all"
-msgstr "&Намиране на всички"
+msgid "Collect completions"
+msgstr "Събиране на дописванията"
-msgid "Enter replacement string:"
-msgstr "Въвеждане на заместващ израз"
+msgid "NoName"
+msgstr "БезИме"
-msgid "Replace with:"
-msgstr "Замяна с:"
+msgid "Save macro"
+msgstr "Записване на макрос"
-msgid "&Replace"
-msgstr "Замести"
+msgid "Press the macro's new hotkey:"
+msgstr "Натиснете новия клавиш за макрос:"
-msgid "A&ll"
-msgstr "Всички"
+msgid "Delete macro"
+msgstr "Изтриване на макрос"
-msgid "&Skip"
-msgstr "Пропусни"
+msgid "Press macro hotkey:"
+msgstr "Натиснете клавиша за макрос:"
-msgid "Confirm replace"
-msgstr "Потвърждаване замяната"
+msgid "Macro not deleted"
+msgstr "Макросът не е изтрит"
-msgid "Cancel"
-msgstr "Отказ"
+msgid "Repeat last commands"
+msgstr "Повтаряне на последните команди"
-msgid "NoName"
-msgstr "БезИме"
+msgid "Repeat times:"
+msgstr "Брой повторения:"
msgid "&Open file..."
-msgstr "Отвори файл..."
+msgstr "&Отваряне на файл…"
msgid "&New"
msgstr "&Нов"
@@ -1369,25 +1309,25 @@
msgstr "&Затваряне"
msgid "&History..."
-msgstr ""
+msgstr "&История…"
msgid "Save &as..."
-msgstr "Запис &като..."
+msgstr "Запис &като…"
msgid "&Insert file..."
-msgstr "&Вмъкване на файл"
+msgstr "&Вмъкване на файл…"
msgid "Cop&y to file..."
-msgstr "Коп&иране към файл..."
+msgstr "Коп&иране към файл…"
msgid "&User menu..."
-msgstr "&Потребителско меню"
+msgstr "&Потребителско меню…"
msgid "A&bout..."
-msgstr "О&тносно"
+msgstr "От&носно…"
msgid "&Quit"
-msgstr "Изход"
+msgstr "Из&ход"
msgid "&Undo"
msgstr "&Отмяна"
@@ -1396,19 +1336,19 @@
msgstr "&Възстановяване"
msgid "&Toggle ins/overw"
-msgstr "&Включване/изключване вмъкване/замяна"
+msgstr "Вмъкване/&Замяна"
msgid "To&ggle mark"
-msgstr "Вкл&ючване/изключване маркиране"
+msgstr "&Избиране"
msgid "&Mark columns"
-msgstr "Маркиране колони"
+msgstr "Избиране &колони"
msgid "Mark &all"
-msgstr "Маркиране &всички"
+msgstr "Избиране &всички"
msgid "Unmar&k"
-msgstr "Отмаркиран&е"
+msgstr "&Без избиране"
msgid "Cop&y"
msgstr "Копира&не"
@@ -1417,16 +1357,16 @@
msgstr "Пре&местване"
msgid "&Delete"
-msgstr "Изтрий"
+msgstr "Из&триване"
msgid "Co&py to clipfile"
-msgstr "Ко&пие в clipfile"
+msgstr "Ко&пие в изрезките"
msgid "&Cut to clipfile"
-msgstr "&Изрязване в clipfile"
+msgstr "&Изрязване към изрезките"
msgid "Pa&ste from clipfile"
-msgstr "Вм&ъкване от clipfile"
+msgstr "Вм&ъкване от изрезките"
msgid "&Beginning"
msgstr "&Начало"
@@ -1435,16 +1375,16 @@
msgstr "&Край"
msgid "&Search..."
-msgstr "&Търсене..."
+msgstr "&Търсене…"
msgid "Search &again"
msgstr "Търсене &отново"
msgid "&Replace..."
-msgstr "&Замяна"
+msgstr "&Замяна…"
msgid "&Toggle bookmark"
-msgstr "&Установяване/отмяна на отметка"
+msgstr "&Отметка"
msgid "&Next bookmark"
msgstr "&Следваща отметка"
@@ -1453,22 +1393,22 @@
msgstr "&Предишна отметка"
msgid "&Flush bookmarks"
-msgstr ""
+msgstr "Из&чистване на отметките"
msgid "&Go to line..."
-msgstr "Отиване на &ред..."
+msgstr "Към &ред…"
msgid "&Toggle line state"
-msgstr "&Включване/изключване състояние на реда"
+msgstr "&Състояние на реда"
msgid "Go to matching &bracket"
-msgstr "Преместване до съвпадаща се &скоба"
+msgstr "Преместване до съответна &скоба"
msgid "Toggle s&yntax highlighting"
-msgstr "Включване/изключване осветяване на с&интаксиса"
+msgstr "Оцветяване на с&интаксиса"
msgid "&Find declaration"
-msgstr "&Търсене декларация"
+msgstr "&Декларация"
msgid "Back from &declaration"
msgstr "Обратно от &декларация"
@@ -1477,16 +1417,16 @@
msgstr "На&пред към декларация"
msgid "Encod&ing..."
-msgstr "Кодиро&вка"
+msgstr "Ко&диране…"
msgid "&Refresh screen"
msgstr "О&бновяване на екрана"
msgid "&Start/Stop record macro"
-msgstr "&Започване/Спиране запис за макрос"
+msgstr "&Запис на макрос"
msgid "Delete macr&o..."
-msgstr "Изтриване на макр&ос"
+msgstr "Изтриване на макр&ос…"
msgid "Record/Repeat &actions"
msgstr "Запис/Повторение &действия"
@@ -1498,13 +1438,13 @@
msgstr "П&роверка на дума"
msgid "Change spelling &language..."
-msgstr "Промяна на правописния &език"
+msgstr "&Език за правописа…"
msgid "&Mail..."
-msgstr "&Поща"
+msgstr "&Поща…"
msgid "Insert &literal..."
-msgstr "Въвеждане &дословно"
+msgstr "&Дословно въвеждане…"
msgid "Insert &date/time"
msgstr "Вмъкване на &дата и час"
@@ -1513,22 +1453,22 @@
msgstr "&Форматиране на абзац"
msgid "&Sort..."
-msgstr "&Подреждане..."
+msgstr "&Подредба…"
msgid "&Paste output of..."
-msgstr "&Вмъкване изходяща информация от..."
+msgstr "&Вмъкване на изхода от…"
msgid "&External formatter"
msgstr "&Външна форматираща програма"
msgid "&Move"
-msgstr "Премести"
+msgstr "&Преместване"
msgid "&Resize"
-msgstr "&Промяна на размер"
+msgstr "О&размеряване"
msgid "&Toggle fullscreen"
-msgstr "&Установяване/отмяна на пълен екран"
+msgstr "На &цял екран"
msgid "&Next"
msgstr "&Следващ"
@@ -1537,19 +1477,19 @@
msgstr "&Предишен"
msgid "&List..."
-msgstr "&Списък"
+msgstr "&Списък…"
msgid "&General..."
-msgstr "&Общо..."
+msgstr "&Общо…"
msgid "Save &mode..."
-msgstr "Запис &режим..."
+msgstr "Запис &режим…"
msgid "Learn &keys..."
-msgstr "Изучаване &клавиши"
+msgstr "За&даване на клавиши…"
msgid "Syntax &highlighting..."
-msgstr "Осветяване на &синтаксис..."
+msgstr "Оцветяване на &синтаксис…"
msgid "S&yntax file"
msgstr "Файл със &синтаксис"
@@ -1558,7 +1498,7 @@
msgstr "Файл с &меню"
msgid "&Save setup"
-msgstr "Запази настройките"
+msgstr "&Запазване на настройките"
msgid "&File"
msgstr "&Файл"
@@ -1588,7 +1528,7 @@
msgstr "&Динамични абзаци"
msgid "Type &writer wrap"
-msgstr ""
+msgstr "&Машинописно пренасяне"
msgid "Wrap mode"
msgstr "Режим на пренасяне"
@@ -1597,25 +1537,25 @@
msgstr "Табулация"
msgid "&Fake half tabs"
-msgstr "Фалшиви полу-tab-ове"
+msgstr "&Фалшиви полутабулации"
msgid "&Backspace through tabs"
-msgstr "Backspace между tab-овете"
+msgstr "&Backspace между tab-овете"
msgid "Fill tabs with &spaces"
-msgstr "Tab-овете са интервали"
+msgstr "Табулации чрез &интервали"
msgid "Tab spacing:"
-msgstr "Пространство на tab-а:"
+msgstr "Пространство на табулацията:"
msgid "Other options"
msgstr "Други настройки"
msgid "&Return does autoindent"
-msgstr "Return спазва полето"
+msgstr "Return спазва &полето"
msgid "Confir&m before saving"
-msgstr "Питай преди запазване"
+msgstr "&Питане преди запазване"
msgid "Save file &position"
msgstr "Запис на &позицията на файла"
@@ -1627,16 +1567,16 @@
msgstr "Видими &табулации"
msgid "Synta&x highlighting"
-msgstr "Осветяване на синтаксиса"
+msgstr "&Оцветяване на синтаксиса"
msgid "C&ursor after inserted block"
-msgstr "К&урсорът след вмъкнат блок"
+msgstr "К&урсор след вмъкнат блок"
msgid "Pers&istent selection"
msgstr "Посто&янна селекция"
msgid "Cursor be&yond end of line"
-msgstr "Курсорът из&вън края на линия"
+msgstr "Курсорът из&вън края на ред"
msgid "&Group undo"
msgstr "&Групова отняна"
@@ -1647,15 +1587,54 @@
msgid "Editor options"
msgstr "Настройки на редактора"
+msgid "In se&lection"
+msgstr "В се&лекция"
+
+msgid "&Find all"
+msgstr "&Намиране на всички"
+
+msgid "Enter replacement string:"
+msgstr "Заместващ израз:"
+
+msgid "Replace"
+msgstr "Замяна"
+
+msgid "Replace with:"
+msgstr "Замяна с:"
+
+msgid "&Replace"
+msgstr "&Замяна"
+
+msgid "A&ll"
+msgstr "&Всички"
+
+msgid "&Skip"
+msgstr "&Пропускане"
+
+msgid "Confirm replace"
+msgstr "Потвърждаване замяната"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Търсене на %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Търсене на %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "направени са %ld замѐни "
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-"Удобен за потребителя текстови редактор\n"
-"написан за Midnight Commander-а."
+"Удобен текстови редактор\n"
+"за Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr ""
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Авторски права © 1996-2022 Фондация за Свободен софтуер"
msgid "About"
msgstr "Относно"
@@ -1667,22 +1646,22 @@
msgstr "Редактиране: "
msgid "ButtonBar|Mark"
-msgstr "ButtonBar|Маркиране"
+msgstr "Избиране"
msgid "ButtonBar|Replac"
-msgstr "ButtonBar|Заместване"
+msgstr "Заместване"
msgid "ButtonBar|Copy"
-msgstr "ButtonBar|Копиране"
+msgstr "Копиране"
msgid "ButtonBar|Move"
-msgstr "ButtonBar|Преместване"
+msgstr "Преместване"
msgid "ButtonBar|Delete"
-msgstr "ButtonBar|Изтриване"
+msgstr "Изтриване"
msgid "ButtonBar|PullDn"
-msgstr ""
+msgstr "Меню"
msgid "Breton"
msgstr "Бретонски"
@@ -1774,6 +1753,15 @@
msgid "Select language"
msgstr "Избор на език"
+msgid "Choose syntax highlighting"
+msgstr "Оцветяване на синтаксиса"
+
+msgid "< Auto >"
+msgstr "< Автоматично >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Презареждане на сегашния синтаксис >"
+
msgid "Load syntax file"
msgstr "Зареждане на файл със синтаксис"
@@ -1795,14 +1783,14 @@
"deleted your working directory, or given yourself\n"
"extra access permissions with the \"su\" command?"
msgstr ""
-"Commander-а не може да промени директорията, в която\n"
-"под-shell-а твърди че сте. Може би сте изтрили вашата\n"
-"работна директория, или сте си дали допълнителни\n"
-"права за достъп с \"su\" командата?"
+"Commander не може да промени директорията, в\n"
+"която подобвивката твърди, че сте. Може да сте\n"
+"изтрили работната директория или да сте си дали\n"
+"допълнителни права за достъп с командата „su“."
#, c-format
msgid "Cannot fetch a local copy of %s"
-msgstr "Не може да се добие локално копие от %s"
+msgstr "Не може да се достави локално копие от %s"
msgid "The shell is already running a command"
msgstr "Обвивката вече изпълнява команда"
@@ -1811,21 +1799,23 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Не е xterm или конзола на Linux.\n"
+"Не може да се превключи подобвивка."
msgid "Type 'exit' to return to the Midnight Commander"
-msgstr "Напишете 'exit', за да се върнете в Midnight Commander-а"
+msgstr "Напишете „exit“, за да се върнете в Midnight Commander"
msgid "Set &all"
-msgstr "Прм всич"
+msgstr "&Всички"
msgid "S&kip"
-msgstr "Пропусни"
+msgstr "&Пропускане"
msgid "&Set"
-msgstr "Промени"
+msgstr "&Задаване"
msgid "owner"
-msgstr "собст."
+msgstr "собств."
msgid "group"
msgstr "група"
@@ -1838,38 +1828,38 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Права (8-чни): %o"
msgid "Chown advanced command"
-msgstr "Разширена Chown команда"
+msgstr "Разширена команда chown"
#, c-format
msgid ""
"Cannot chmod \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chmod-не \"%s\"\n"
+"Не може да се изпълни chmod „%s“\n"
"%s"
msgid "&Ignore"
-msgstr ""
+msgstr "&Прескачане"
msgid "Ignore &all"
-msgstr ""
+msgstr "Прескачане на &всички"
msgid "&Retry"
-msgstr "Отново"
+msgstr "&Отново"
#, c-format
msgid ""
"Cannot chown \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chown-не \"%s\"\n"
+"Не може да се изпълни chown „%s“\n"
"%s"
msgid "< Default >"
-msgstr "< По подразбиране >"
+msgstr "< Стандартно >"
msgid "Skins"
msgstr "Теми"
@@ -1878,43 +1868,43 @@
msgstr "Други 8 бита"
msgid "Running"
-msgstr "Изпълняващ се"
+msgstr "Изпълнява се"
msgid "Stopped"
msgstr "Спрян"
msgid "&Never"
-msgstr "Никога"
+msgstr "&Никога"
msgid "On dum&b terminals"
msgstr "На прост&и терминали"
msgid "Alwa&ys"
-msgstr "Винаги"
+msgstr "&Винаги"
msgid "File operations"
msgstr "Действия с файлове"
msgid "&Verbose operation"
-msgstr "Детайли при операции"
+msgstr "Детайли при опера&ции"
msgid "Compute tota&ls"
-msgstr "Изчисляване общ разм&ер"
+msgstr "Общ &размер"
msgid "Classic pro&gressbar"
-msgstr "Класически индикатор за прогрес"
+msgstr "Индикатор за про&грес"
msgid "Mkdi&r autoname"
-msgstr "Mkdi&r авто-наименуване"
+msgstr "&Автоматично име за нови директории"
msgid "&Preallocate space"
msgstr "&Предварително заделяне на пространство"
msgid "Esc key mode"
-msgstr "Клавиш Esc режим"
+msgstr "Режим на Esc"
msgid "S&ingle press"
-msgstr "Е&динично натискане"
+msgstr "Едини&чно натискане"
msgid "Timeout:"
msgstr "Изчакване:"
@@ -1923,103 +1913,103 @@
msgstr "Спиране след изпълнение"
msgid "Use internal edi&t"
-msgstr "Използване на вътрешно редактира&не"
+msgstr "Вътре&шен редактор"
msgid "Use internal vie&w"
-msgstr "Използване на вътрешен прегле&д"
+msgstr "Вътр&ешен преглед"
msgid "A&sk new file name"
msgstr "З&апитване за име на нов файл"
msgid "Auto m&enus"
-msgstr "Авто м&енюта"
+msgstr "Авто мен&юта"
msgid "&Drop down menus"
-msgstr "Падащи менюта"
+msgstr "Пада&щи менюта"
msgid "S&hell patterns"
-msgstr "S&hell метасимволи"
+msgstr "&Метасимволи на обвивката"
msgid "Co&mplete: show all"
-msgstr "Зав&ършено: показване на всички"
+msgstr "Допис&ване: показване на всички"
msgid "Rotating d&ash"
-msgstr "Въртящо се ти&ре"
+msgstr "Въртящо се &тире"
msgid "Cd follows lin&ks"
-msgstr "Cd следва линков&ете"
+msgstr "CD следва връ&зките"
msgid "Sa&fe delete"
-msgstr "Бе&зопасно изтриване"
+msgstr "Наде&ждно изтриване"
msgid "Safe overwrite"
-msgstr ""
+msgstr "Надеждно презапи&сване"
msgid "A&uto save setup"
-msgstr "А&втоматично записване настройка"
+msgstr "Автоматично записване на настро&йки"
msgid "Configure options"
-msgstr "Опции на конфигурацията"
+msgstr "Настройки"
msgid "Skin:"
msgstr "Тема:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Сенки"
msgid "Appearance"
-msgstr "Изглед"
+msgstr "Външен вид"
msgid "Case &insensitive"
msgstr "&Нечувствителност към регистъра"
msgid "Use panel sort mo&de"
-msgstr "Използване на сортиращ ре&жим на панела"
+msgstr "Подреден п&анел"
msgid "Show mi&ni-status"
-msgstr "Показване ми&ни-статус"
+msgstr "&Мини статус"
msgid "Use SI si&ze units"
-msgstr "Използване на SI единици за р&азмер"
+msgstr "Размер в &единици на SI"
msgid "Mi&x all files"
-msgstr "Сме&сване на всички файлове"
+msgstr "Смесване на фа&йловете"
msgid "Show &backup files"
-msgstr "Показване на &резервните файлове"
+msgstr "&Резервни файлове"
msgid "Show &hidden files"
-msgstr "Показване на &скритите файлове"
+msgstr "&Скрити файлове"
msgid "&Fast dir reload"
-msgstr "Бързо опресняване"
+msgstr "&Бързо опресняване"
msgid "Ma&rk moves down"
-msgstr "Ма&ркирането премества надолу"
+msgstr "&Избирането премества надолу"
msgid "Re&verse files only"
-msgstr "Пре&обръщане само на файловете"
+msgstr "Преобръ&щане само на файловете"
msgid "Simple s&wap"
-msgstr "Обикновена р&азмяна"
+msgstr "Обикно&вена размяна"
msgid "A&uto save panels setup"
-msgstr "Ав&томатично записване на настройката на панелите"
+msgstr "Ав&то записване на настройките на панелите"
msgid "Navigation"
msgstr "Навигация"
msgid "L&ynx-like motion"
-msgstr "Движение като lynx"
+msgstr "Придвижване &като lynx"
msgid "Pa&ge scrolling"
-msgstr "Прелистване на стра&ница"
+msgstr "Придви&жване на страница"
msgid "Center &scrolling"
-msgstr ""
+msgstr "&Центрирано придвижване"
msgid "&Mouse page scrolling"
-msgstr "Прелистване на страница с &мишка"
+msgstr "Пре&листване на страница с мишка"
msgid "File highlight"
msgstr "Осветяване на файл"
@@ -2028,7 +2018,7 @@
msgstr "Видове &файлове"
msgid "&Permissions"
-msgstr "&Права"
+msgstr "&Права̀"
msgid "Quick search"
msgstr "Бързо търсене"
@@ -2045,22 +2035,22 @@
"manual reload of the directory. See the man page for\n"
"the details."
msgstr ""
-"Използването на опцията за бързо презареждане може да не отрази\n"
-"точното съдържание на директорията. В този случай ще трябва да\n"
-"извършите ръчно презареждане на директорията. Вижте man страницата\n"
-"за повече детайли."
+"Използването на опцията за бързо презареждане може да не\n"
+"отрази точното съдържание на директорията. В този случай\n"
+"ще трябва да извършите ръчно презареждане на директорията.\n"
+"За повече детайли вижте страницата в ръководството."
msgid "&Full file list"
-msgstr "Пълен файлов списък"
+msgstr "&Пълен файлов списък"
msgid "&Brief file list:"
msgstr "&Кратък файлов списък:"
msgid "&Long file list"
-msgstr "Дълъг файлов списък"
+msgstr "&Дълъг файлов списък"
msgid "&User defined:"
-msgstr "Дефиниран от потребителя:"
+msgstr "&Потребителски:"
msgid "columns"
msgstr "колони"
@@ -2072,92 +2062,92 @@
msgstr "Формат на списък"
msgid "Executable &first"
-msgstr "Изпълнимия файл &първо"
+msgstr "Изпълними файлове отпре&д"
msgid "&Reverse"
-msgstr "Обратен ред"
+msgstr "&Обратно"
msgid "Sort order"
-msgstr "Ред на сортиране"
+msgstr "Подредба"
#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
-msgstr "Потвърждение|Из&триване"
+msgstr "&Изтриване"
msgid "Confirmation|O&verwrite"
-msgstr "Потвърждение|Презапи&сване"
+msgstr "&Презаписване"
msgid "Confirmation|&Execute"
-msgstr "Потвърждение|Из&пълнение"
+msgstr "И&зпълнение"
msgid "Confirmation|E&xit"
-msgstr "Потвърждение|И&зход"
+msgstr "Из&ход"
msgid "Confirmation|Di&rectory hotlist delete"
-msgstr "Потвърждение|Изтриване на &бързите папки"
+msgstr "Изчистване на &бързите папки"
msgid "Confirmation|&History cleanup"
-msgstr "Потвърждение|&Изчистване на историята"
+msgstr "Из&чистване на историята"
msgid "Confirmation"
-msgstr "Потвърждение"
+msgstr "Потвърждения"
msgid "&UTF-8 output"
-msgstr "&UTF-8 изходяща информация"
+msgstr "Изход в UTF-&8"
msgid "&Full 8 bits output"
-msgstr "&Цели 8 бита като изходяща информация"
+msgstr "Изход в 8 &бита"
msgid "&ISO 8859-1"
-msgstr "&ISO 8859-1"
+msgstr "ISO 8859-&1"
msgid "7 &bits"
-msgstr "7 &бита"
+msgstr "&7 бита"
msgid "F&ull 8 bits input"
-msgstr "Чети всичките 8 бита"
+msgstr "&Всички 8 бита"
msgid "Display bits"
msgstr "Показване на битовете"
msgid "Input / display codepage:"
-msgstr "Вход / дисплей кодова страница:"
+msgstr "Кодова страница:"
msgid "Directory tree"
msgstr "Дърво на директориите"
msgid "Timeout for freeing VFSs (sec):"
-msgstr "Време на изчакване за освобождаване на ВФС-и (сек.):"
+msgstr "Секунди изчакване за виртуални ФС:"
msgid "FTP anonymous password:"
-msgstr "FTP анонимна парола:"
+msgstr "Парола за анонимно FTP:"
msgid "FTP directory cache timeout (sec):"
-msgstr "Продължителност (сек.) над FTP директорийния кеш:"
+msgstr "Секунди за кеша с директориите на FTP:"
msgid "&Always use ftp proxy:"
-msgstr "&Винаги използване на ftp прокси:"
+msgstr "&Посредник за FTP:"
msgid "&Use ~/.netrc"
msgstr "&Използване на ~/.netrc"
msgid "Use &passive mode"
-msgstr "Използване на &пасивен режим"
+msgstr "Па&сивен режим"
msgid "Use passive mode over pro&xy"
-msgstr "Използване на пасивен режим през про&кси"
+msgstr "Пасивен &режим през посредник"
msgid "Virtual File System Setting"
-msgstr "Виртуална Файлова Система Настройка"
+msgstr "Виртуални файлови системи"
msgid "cd"
msgstr "cd"
msgid "Quick cd"
-msgstr "Бързо cd"
+msgstr "Бърза смяна — cd"
msgid "Existing filename (filename symlink will point to):"
-msgstr "Съществуващо име (към което ще сочи връзката):"
+msgstr "Съществуващо име (към което връзката ще сочи):"
msgid "Symbolic link filename:"
msgstr "Име на връзката:"
@@ -2166,148 +2156,139 @@
msgstr "Връзка"
msgid "&Stop"
-msgstr "Спри"
+msgstr "&Спиране"
msgid "&Resume"
-msgstr "Продължи"
+msgstr "&Продължаване"
msgid "&Kill"
-msgstr "Убий"
+msgstr "&Убиване"
msgid "Background jobs"
msgstr "Фонови задачи"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Парола за \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Домейн:"
-
-msgid "Username:"
-msgstr "Потребителско име:"
-
-msgid "SMB authentication"
-msgstr "SMB удостоверяване"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chdir в \"%s\"\n"
+"Не може да се премине в „%s“\n"
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Надеждно изтриване"
msgid "Undelete"
-msgstr ""
+msgstr "Възстановяване"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Синхронно обновяване"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Синхронно обновяване на директории"
msgid "Immutable"
-msgstr ""
+msgstr "Непроменим"
msgid "Append only"
-msgstr ""
+msgstr "Само добавяне"
msgid "No dump"
-msgstr ""
+msgstr "Без разтоварване"
msgid "No update atime"
-msgstr ""
+msgstr "Без обновяване на atime"
msgid "Compress"
-msgstr ""
+msgstr "Компресиране"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Компресирани клъстъри"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Компресиран нечист файл"
msgid "Compression raw access"
-msgstr ""
+msgstr "Директен достъп до компресираното"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Шифриран i-възел"
msgid "Journaled data"
-msgstr ""
+msgstr "Журнални данни"
msgid "Indexed directory"
-msgstr ""
+msgstr "Индексирана директория"
msgid "No tail merging"
-msgstr ""
+msgstr "Без сливане в края"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Начало на йерархия на директория"
msgid "Inode uses extents"
-msgstr ""
+msgstr "I-възелът ползва обхвати"
msgid "Huge_file"
-msgstr ""
+msgstr "Голям_файл"
msgid "No COW"
-msgstr ""
+msgstr "Без запис при промяна"
msgid "Direct access for files"
-msgstr ""
+msgstr "Пряк достъп за файлове"
msgid "Casefolded file"
-msgstr ""
+msgstr "Уеднаквен регистър"
msgid "Inode has inline data"
-msgstr ""
+msgstr "I-възел с вътрешни данни"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Йерархия на проект"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Проверка на защитѐн i-възел"
msgid "&Marked all"
-msgstr "Само марк"
+msgstr "&Всичко избрано"
msgid "S&et marked"
-msgstr "Уст марк"
+msgstr "&Избрано"
msgid "C&lear marked"
-msgstr "Изтр марк"
+msgstr "&Изчистване на избрано"
msgid "Chattr command"
-msgstr ""
+msgstr "Команда chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Неуспешно изпълнение на chattr „%s“\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
-msgstr ""
+msgstr "Не може да се сменят атрибути на отдалечени ФС"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Не може да се получат флаговете на „%s“\n"
+"%s"
msgid "set &user ID on execution"
-msgstr "задаване на &потребителско ID при изпълнение"
+msgstr "изпълнение с UID на &собственика"
msgid "set &group ID on execution"
-msgstr "задаване на ID на &група при изпълнение"
+msgstr "изпълнение с GID на &групата"
msgid "stick&y bit"
-msgstr "stick&y бит"
+msgstr "&лепкав бит"
msgid "&read by owner"
msgstr "&четене от собственика"
@@ -2316,40 +2297,40 @@
msgstr "&писане от собственика"
msgid "e&xecute/search by owner"
-msgstr "из&пълнение/търсене от собственика"
+msgstr "&изпълнение/търсене от собственика"
msgid "rea&d by group"
-msgstr "че&тене от групата"
+msgstr "ч&етене от групата"
msgid "write by grou&p"
-msgstr "писане от гру&пата"
+msgstr "пис&ане от групата"
msgid "execu&te/search by group"
-msgstr "изпъ&лнение/търсене от групата"
+msgstr "и&зпълнение/търсене от групата"
msgid "read &by others"
-msgstr "четете &от другите"
+msgstr "че&тене от другите"
msgid "wr&ite by others"
-msgstr "пи&сане от другите"
+msgstr "писа&не от другите"
msgid "execute/searc&h by others"
-msgstr "изпълнение/търс&ене от другите"
+msgstr "изп&ълнение/търсене от другите"
msgid "Name:"
msgstr "Име:"
msgid "Permissions (octal):"
-msgstr "Права (осмичен вид):"
+msgstr "Права̀ (8-чни):"
msgid "Owner name:"
-msgstr "Име на собственик:"
+msgstr "Собственик:"
msgid "Group name:"
-msgstr "Име на група:"
+msgstr "Група:"
msgid "Chmod command"
-msgstr "Команда Chmod"
+msgstr "Команда chmod"
msgid "Permission"
msgstr "Режим"
@@ -2358,28 +2339,28 @@
msgstr "Файл"
msgid "Set &groups"
-msgstr "Уст групи"
+msgstr "&Зад групи"
msgid "Set &users"
-msgstr "Уст потрб"
+msgstr "&Зад потрб"
msgid "Name"
msgstr "Име"
msgid "Owner name"
-msgstr "Име на собственика"
+msgstr "Собственик"
msgid "Group name"
-msgstr "Име на групата"
+msgstr "Група"
msgid "Size"
msgstr "Размер"
msgid "Chown command"
-msgstr "Chown команда"
+msgstr "Команда chown"
msgid "User name"
-msgstr "Потребителско име"
+msgstr "Потребител"
msgid "<Unknown user>"
msgstr "<Неизвестен>"
@@ -2388,38 +2369,32 @@
msgstr "<Неизвестна>"
msgid "Enter machine name (F1 for details):"
-msgstr "Въвеждане на машинното име (F1 за детайли):"
+msgstr "Име на хоста (F1 за детайли):"
msgid "Files tagged, want to cd?"
-msgstr "Има маркирани файлове,"
+msgstr "Има избрани файлове, да се смени ли директорията?"
msgid "Cannot change directory"
msgstr "Не може да се смени директорията"
-msgid "Filter"
-msgstr "Филтър"
-
-msgid "Set expression for filtering filenames"
-msgstr "Задаване на изражение за филтриране на файлови имена"
-
#, c-format
msgid "Link %s to:"
-msgstr "Свързване на %s с:"
+msgstr "Връзка на %s към:"
msgid "Link"
-msgstr "Линк"
+msgstr "Връзка"
#, c-format
msgid "link: %s"
-msgstr "линк: %s"
+msgstr "връзка: %s"
#, c-format
msgid "symlink: %s"
-msgstr "символичен линк: %s"
+msgstr "символна връзка: %s"
#, c-format
msgid "Cannot chdir to \"%s\""
-msgstr "Не може да се chdir-не в \"%s\""
+msgstr "Не може да се премине в „%s“"
msgid "View file"
msgstr "Преглед на файл"
@@ -2437,66 +2412,66 @@
msgstr "Редактиране на файл"
msgid "Create a new Directory"
-msgstr " Създай нова директория "
+msgstr "Нова директория"
msgid "Enter directory name:"
-msgstr "Въвеждане име на директория:"
+msgstr "Име на директория:"
msgid "Extension file edit"
-msgstr "Редактирай файл с разширения"
+msgstr "Редактиране на файл с разширения"
msgid "Which extension file you want to edit?"
-msgstr "Кой файл с разширение искате да редактирате?"
+msgstr "Кой файл с разширения да се редактира?"
msgid "&System Wide"
-msgstr "Системен"
+msgstr "&Системно"
msgid "Highlighting groups file edit"
msgstr "Осветяване редактирането на група от файлове"
msgid "Which highlighting file you want to edit?"
-msgstr "Кой осветен файл искате да редактирате?"
+msgstr "Кой осветен файл да се редактира?"
msgid "Compare directories"
-msgstr "Сравняване на папки"
+msgstr "Сравняване на директории"
msgid "Select compare method:"
-msgstr "Изберете начин на сравняване:"
+msgstr "Начин на сравняване:"
msgid "&Quick"
-msgstr "Бърз"
+msgstr "&Бърз"
msgid "&Size only"
-msgstr "Само размерите"
+msgstr "&Размери"
msgid "&Thorough"
-msgstr "Пълен"
+msgstr "&Пълен"
msgid ""
"Both panels should be in the listing mode\n"
"to use this command"
msgstr ""
-"Двата панела би трябвало да бъдат в\n"
-"списъчен режим, за да можете да използвате тази команда"
+"Двата панела трябва да са в списъчен\n"
+"режим, за да ползвате тази команда"
#, c-format
msgid "'%s' is not a symbolic link"
-msgstr "'%s' не е символичен линк"
+msgstr "„%s“ не е символна връзка"
#, c-format
msgid "Symlink '%s' points to:"
-msgstr "Символичен линк '%s' сочи към:"
+msgstr "Символната връзка „%s“ сочи към:"
msgid "Edit symlink"
-msgstr "Редакция на символичен линк"
+msgstr "Редактиране на символна връзка"
#, c-format
msgid "edit symlink, unable to remove %s: %s"
-msgstr "редактиране на символичен линк, не може да се изтрие %s: %s"
+msgstr "редактиране на символна връзка, не може да се изтрие %s: %s"
#, c-format
msgid "edit symlink: %s"
-msgstr "редактиране на символичен линк: %s"
+msgstr "редактиране на символна връзка: %s"
msgid "FTP to machine"
msgstr "FTP към машина"
@@ -2505,26 +2480,23 @@
msgstr "SFTP към машина"
msgid "Shell link to machine"
-msgstr "Shell връзка към машина"
-
-msgid "SMB link to machine"
-msgstr "SMB връзка към машина"
+msgstr "SSH към машина"
msgid "Undelete files on an ext2 file system"
-msgstr "Възстановяване на файлове на ext2 файлова система"
+msgstr "Възстановяване на файлове на ext2"
msgid ""
"Enter device (without /dev/) to undelete\n"
"files on: (F1 for details)"
msgstr ""
-"Въведете устройство (без /dev/) за възстановяване\n"
-"на файлове от него: (F1 за детайли)"
+"Въведете устройство (без /dev/) за\n"
+"възстановяване на файлове: (F1 за детайли)"
msgid "Directory scanning"
msgstr "Претърсване на директория"
msgid "Setup"
-msgstr "Настройка"
+msgstr "Настройки"
#, c-format
msgid "Setup saved to %s"
@@ -2535,7 +2507,7 @@
msgstr "Грешка при запис ан настройките в %s"
msgid "Cannot execute commands on non-local filesystems"
-msgstr "Не може да се изпълняват команди на не-локални файлови системи"
+msgstr "Не може да се изпълняват команди на нелокални файлови системи"
msgid "Parameter"
msgstr "Параметър"
@@ -2548,19 +2520,26 @@
"Не може да се създаде временен команден файл\n"
"%s"
+msgid "Pipe failed"
+msgstr "Неуспешен канал"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
-msgstr "%s%s файлова грешка"
+msgstr " %s%s файлова грешка"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Форматът на файла %smc.ext е бил променен с версия 3.0. Изглежда, че "
-"инсталацията е била неуспешна. Моля придобийте ново копие от пакета на "
-"Midnight Commander-а"
#, c-format
msgid "%s file error"
@@ -2568,34 +2547,31 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Форматът на файла %s е бил променен след версия 3.0. Можете или да го "
-"копирате от %smc.ext или да използвате този файл като пример как да го "
-"напишете."
msgid "DialogTitle|Copy"
-msgstr "ДиалогЗаглавие|Копиране"
+msgstr "Копиране"
msgid "DialogTitle|Move"
-msgstr "ДиалогЗагалвие|Преместване"
+msgstr "Преместване"
msgid "DialogTitle|Delete"
-msgstr "ДиалогЗаглавие|Изтриване"
+msgstr "Изтриване"
msgid "FileOperation|Copy"
-msgstr "ФайловаОперация|Копиране"
+msgstr "Копиране"
msgid "FileOperation|Move"
-msgstr "ФайловаОперация|Преместване"
+msgstr "Преместване"
msgid "FileOperation|Delete"
-msgstr "ФайловаОперация|Изтриване"
+msgstr "Изтриване"
#, no-c-format
msgid "%o %f%n\"%s\"%m"
-msgstr "%o %f%n\"%s\"%m"
+msgstr "%o %f%n„%s“%m"
#, no-c-format
msgid "%o %d %f%m"
@@ -2622,23 +2598,27 @@
"Cannot stat hardlink source file \"%s\"\n"
"%s"
msgstr ""
+"Не може да се изпълни stat върху източника на твърдата връзка „%s“\n"
+"%s"
#, c-format
msgid ""
"Cannot create target hardlink \"%s\"\n"
"%s"
msgstr ""
+"Не може да се създаде целевата твърда връзка „%s“\n"
+"%s"
#, c-format
msgid "Cannot create target hardlink \"%s\""
-msgstr ""
+msgstr "Не може да се създаде целевата твърда връзка „%s“"
#, c-format
msgid ""
"Cannot read source link \"%s\"\n"
"%s"
msgstr ""
-"Не може да се чете изходния линк \"%s\"\n"
+"Не може да се прочете изходната връзка „%s“\n"
"%s"
msgid ""
@@ -2646,17 +2626,17 @@
"\n"
"Option Stable Symlinks will be disabled"
msgstr ""
-"Не могат да се създадат стабилни символични линкове между не-локални файлови "
+"Не може да се създадат стабилни символни връзки между нелокални файлови "
"системи:\n"
"\n"
-"Опцията Стабилни Символични Линкове ще бъде деактивирана"
+"Опцията за стабилни символни връзки ще бъде деактивирана"
#, c-format
msgid ""
"Cannot create target symlink \"%s\"\n"
"%s"
msgstr ""
-"Не може да се създаде целевия символичен линк \"%s\"\n"
+"Не може да се създаде целевата символна връзка „%s“\n"
"%s"
#, c-format
@@ -2666,10 +2646,10 @@
"\"%s\"\n"
"are the same directory"
msgstr ""
-"\"%s\"\n"
+"„%s“\n"
"и\n"
-"\"%s\"\n"
-"са една и съща папка"
+"„%s“\n"
+"са една и съща директория"
#, c-format
msgid ""
@@ -2678,9 +2658,9 @@
"\"%s\"\n"
"are the same file"
msgstr ""
-"\"%s\"\n"
+"„%s“\n"
"и\n"
-"\"%s\"\n"
+"„%s“\n"
"са един и същи файл"
msgid "Ski&p all"
@@ -2691,8 +2671,8 @@
"Directory \"%s\" not empty.\n"
"Delete it recursively?"
msgstr ""
-"Директория \"%s\" не е празна.\n"
-"Изтриване рекурсивно?"
+"Непразна директория „%s“.\n"
+"Рекурсивно изтриване?"
#, c-format
msgid ""
@@ -2701,18 +2681,18 @@
"Delete it recursively?"
msgstr ""
"Фонов процес:\n"
-"Директория \"%s\" не е празна.\n"
-"Изтриване рекурсивно?"
+"Непразна директория „%s“.\n"
+"Рекурсивно изтриване?"
msgid "Non&e"
-msgstr "никой"
+msgstr "Н&яма"
#, c-format
msgid ""
"Cannot remove file \"%s\"\n"
"%s"
msgstr ""
-"Не може да изтрие файл \"%s\"\n"
+"Не може да се изтрие файла „%s“\n"
"%s"
#, c-format
@@ -2720,19 +2700,19 @@
"Cannot stat file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се stat-не файл \"%s\"\n"
+"Не може да се изпълни stat върху изходния файл „%s“\n"
"%s"
#, c-format
msgid "Cannot overwrite directory \"%s\""
-msgstr "Не може да се презапише директория \"%s\""
+msgstr "Не може да се презапише директорията „%s“"
#, c-format
msgid ""
"Cannot move file \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-"Не може да се премести файл \"%s\" в \"%s\"\n"
+"Не може да се премести файл „%s“ в „%s“\n"
"%s"
#, c-format
@@ -2740,7 +2720,7 @@
"Cannot remove directory \"%s\"\n"
"%s"
msgstr ""
-"Не може да се изтрие директория \"%s\"\n"
+"Не може да се изтрие директорията „%s“\n"
"%s"
#, c-format
@@ -2748,7 +2728,7 @@
"Cannot overwrite directory \"%s\"\n"
"%s"
msgstr ""
-"Не може да се презапише директория \"%s\"\n"
+"Не може да се презапише директорията „%s“\n"
"%s"
#, c-format
@@ -2756,7 +2736,7 @@
"Cannot overwrite file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се презапише файл \"%s\"\n"
+"Не може да се презапише файлът „%s“\n"
"%s"
#, c-format
@@ -2764,18 +2744,18 @@
"Cannot move directory \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-"Не може да се премести директория \"%s\" в \"%s\"\n"
+"Не може да се премести директорията „%s“ в „%s“\n"
"%s"
msgid "Cannot operate on \"..\"!"
-msgstr "Не може да работи върху \"..\"!"
+msgstr "Не може да работи върху „..“!"
#, c-format
msgid ""
"Cannot stat source file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се stat-не изходния файл \"%s\"\n"
+"Не може да се изпълни stat върху изходния файл „%s“\n"
"%s"
#, c-format
@@ -2783,7 +2763,7 @@
"Cannot create special file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се създаде специален файл \"%s\"\n"
+"Не може да се създаде специалният файл „%s“\n"
"%s"
#, c-format
@@ -2791,7 +2771,7 @@
"Cannot chown target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chown-не целевия файл \"%s\"\n"
+"Не може да се изпълни chown върху целевия файл „%s“\n"
"%s"
#, c-format
@@ -2799,7 +2779,7 @@
"Cannot chmod target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chmod-не целевия файл \"%s\"\n"
+"Не може да се изпълни chmod върху целевия файл „%s“\n"
"%s"
#, c-format
@@ -2807,18 +2787,18 @@
"Cannot open source file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се отвори изходния файл \"%s\"\n"
+"Не може да се отвори изходният файл \"%s\"\n"
"%s"
msgid "Reget failed, about to overwrite file"
-msgstr ""
+msgstr "Неуспешно повторно изтегляне, файлът ще бъде презаписан"
#, c-format
msgid ""
"Cannot fstat source file \"%s\"\n"
"%s"
msgstr ""
-"Не може да fstat-не изходния файл \"%s\"\n"
+"Не може да се изпълни fstat върху изходния файл „%s“\n"
"%s"
#, c-format
@@ -2826,7 +2806,7 @@
"Cannot create target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се създаде целевия файл \"%s\"\n"
+"Не може да се създаде целевият файл „%s“\n"
"%s"
#, c-format
@@ -2834,7 +2814,7 @@
"Cannot fstat target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се fstat-не целевия файл \"%s\"\n"
+"Не може да се изпълни fstat върху целевия файл „%s“\n"
"%s"
#, c-format
@@ -2842,7 +2822,7 @@
"Cannot preallocate space for target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се запази предварително пространство за целевия файл \"%s\"\n"
+"Не може да се запази пространство за целевия файл „%s“\n"
"%s"
#, c-format
@@ -2850,7 +2830,7 @@
"Cannot read source file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се прочете изходния файл \"%s\"\n"
+"Не може да се прочете изходният файл „%s“\n"
"%s"
#, c-format
@@ -2858,18 +2838,27 @@
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се пише в целевия файл \"%s\"\n"
+"Не може да се пише в целевия файл „%s“\n"
"%s"
msgid "(stalled)"
msgstr "(спрял)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Запазване"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се затвори изходния файл \"%s\"\n"
+"Не може да се затвори изходният файл „%s“\n"
"%s"
#, c-format
@@ -2877,21 +2866,15 @@
"Cannot close target file \"%s\"\n"
"%s"
msgstr ""
-"Не може да се затвори целевия файл \"%s\"\n"
+"Не може да се затвори целевият файл „%s“\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Беше получен нецял файл. Да го запазя ли?"
-
-msgid "&Keep"
-msgstr "Запази"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
"%s"
msgstr ""
-"Не може да се stat-не изходната директория \"%s\"\n"
+"Не може да се изпълне stat върху изходната директория „%s“\n"
"%s"
#, c-format
@@ -2899,7 +2882,7 @@
"Source \"%s\" is not a directory\n"
"%s"
msgstr ""
-"Източника \"%s\" не е директория\n"
+"Източникът „%s“ не е директория\n"
"%s"
#, c-format
@@ -2907,15 +2890,15 @@
"Cannot copy cyclic symbolic link\n"
"\"%s\""
msgstr ""
-"Не може да се копира цикличен символичен линк\n"
-"\"%s\""
+"Не може да се копира зациклената символна връзка\n"
+"„%s“"
#, c-format
msgid ""
"Destination \"%s\" must be a directory\n"
"%s"
msgstr ""
-"Целевата \"%s\" трябва да бъде директория\n"
+"Целта „%s“ трябва да е директория\n"
"%s"
#, c-format
@@ -2923,7 +2906,7 @@
"Cannot create target directory \"%s\"\n"
"%s"
msgstr ""
-"Не може да се създаде целева директория \"%s\"\n"
+"Не може да се създаде целева директория „%s“\n"
"%s"
#, c-format
@@ -2931,7 +2914,7 @@
"Cannot chown target directory \"%s\"\n"
"%s"
msgstr ""
-"Не може да се chown-не целевата директория \"%s\"\n"
+"Не може да се изпълни chown върху целевата директория „%s“\n"
"%s"
#, c-format
@@ -2939,13 +2922,13 @@
msgstr "Директории: %zu, общ размер %s"
msgid "Sorry, I could not put the job in background"
-msgstr "Съжалявам, не мога да поставя задачата във фона"
+msgstr "Задачата не може да се премести във фонов режим"
msgid "S&uspend"
msgstr "П&реустановяване"
msgid "Con&tinue"
-msgstr "Продължи"
+msgstr "&Продължаване"
#, c-format
msgid "%d:%02d.%02d"
@@ -2953,49 +2936,49 @@
#, c-format
msgid "ETA %s"
-msgstr "ETA %s"
+msgstr "Остават %s"
#, c-format
msgid "%.2f MB/s"
-msgstr "%.2f МБ/с"
+msgstr "%.2f MB/s"
#, c-format
msgid "%.2f KB/s"
-msgstr "%.2f КБ/с"
+msgstr "%.2f KB/s"
#, c-format
msgid "%ld B/s"
-msgstr "%ld Б/с"
+msgstr "%ld B/s"
msgid "New :"
-msgstr ""
+msgstr "Нов :"
msgid "Existing:"
-msgstr ""
+msgstr "Съществуващ:"
msgid "Overwrite this file?"
-msgstr ""
+msgstr "Презаписване на файла?"
msgid "A&ppend"
-msgstr "добави"
+msgstr "До&бавяне"
msgid "&Reget"
-msgstr "Препрочитане"
+msgstr "&Изтегляне наново"
msgid "Overwrite all files?"
-msgstr ""
+msgstr "Презаписване на всички файлове?"
msgid "Don't overwrite with &zero length file"
-msgstr ""
+msgstr "&Без презапис с празен файл"
msgid "&Older"
-msgstr ""
+msgstr "По-&стар"
msgid "S&maller"
-msgstr ""
+msgstr "По-&малък"
msgid "&Size differs"
-msgstr ""
+msgstr "&Различен размер"
msgid "File exists"
msgstr "Файлът съществува"
@@ -3004,8 +2987,8 @@
msgstr "Фонов процес: Файлът съществува"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Обработени файлове: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3032,45 +3015,45 @@
msgstr " Общо: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Общо: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Източник"
msgid "Target"
-msgstr "Назначение"
+msgstr "Цел"
msgid "Deleting"
msgstr "Изтриване"
msgid "&Using shell patterns"
-msgstr "Mетасимволи на обвивката"
+msgstr "&Mетасимволи на обвивката"
msgid "to:"
msgstr "в:"
msgid "Follow &links"
-msgstr "Следване на &линковете"
+msgstr "Следване на &връзките"
msgid "Preserve &attributes"
msgstr "Запазване на &атрибутите"
msgid "Di&ve into subdir if exists"
-msgstr "Вли&зане в поддиректория ако съществува"
+msgstr "Влизане в &поддиректория, ако съществува"
msgid "&Stable symlinks"
-msgstr "&Стабилни символични линкове"
+msgstr "&Стабилни символни връзки"
msgid "&Background"
-msgstr "Във фон"
+msgstr "&Във фон"
#, c-format
msgid "Invalid source pattern '%s'"
-msgstr "Невалиден изходен модел '%s'"
+msgstr "Неправилен шаблон „%s“"
msgid "File listin&g"
-msgstr "Файлово изреж&дане"
+msgstr "&Файловe и директории"
msgid "&Quick view"
msgstr "&Бърз преглед"
@@ -3079,43 +3062,40 @@
msgstr "&Информация"
msgid "&Tree"
-msgstr "Дърво"
+msgstr "&Дърво"
msgid "&Listing format..."
-msgstr "&Формат на списък"
+msgstr "Ф&ормат на списък…"
msgid "&Sort order..."
-msgstr "Ред на сортиране..."
+msgstr ""
msgid "&Filter..."
-msgstr "Филтър..."
+msgstr "Филт&ър…"
msgid "&Encoding..."
-msgstr "&Кодировка"
+msgstr "&Кодиране…"
msgid "FT&P link..."
-msgstr "FTP връзка..."
+msgstr "&FTP…"
msgid "S&hell link..."
-msgstr "S&hell връзка..."
+msgstr "SS&H…"
-msgid "S&FTP link..."
-msgstr "S&FTP връзка..."
-
-msgid "SM&B link..."
-msgstr "SMB връзка..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
-msgstr "Покажи в панел"
+msgstr "&В панел"
msgid "&Rescan"
-msgstr "&Сканиране отново"
+msgstr "&Опресняване"
msgid "&View"
msgstr "&Преглед"
msgid "Vie&w file..."
-msgstr "Преглед на &файла"
+msgstr "Преглед на фа&йла…"
msgid "&Filtered view"
msgstr "&Филтриран изглед"
@@ -3124,130 +3104,130 @@
msgstr "&Копиране"
msgid "C&hmod"
-msgstr "C&hmod"
+msgstr "Пр&ава̀"
msgid "&Link"
-msgstr "&Линк"
+msgstr "&Връзка"
msgid "&Symlink"
-msgstr "&Символичен линк"
+msgstr "&Символна връзка"
msgid "Relative symlin&k"
-msgstr "Релативен символи&чен линк"
+msgstr "&Относителна символна връзка"
msgid "Edit s&ymlink"
-msgstr "Редактиране на сим&воличен линк"
+msgstr "Р&едактиране на символна връзка"
msgid "Ch&own"
-msgstr "Ch&own"
+msgstr "См&яна на собственик"
msgid "&Advanced chown"
-msgstr "&Разширена chown"
+msgstr "Раз&ширена смяна на собственик"
msgid "Cha&ttr"
-msgstr ""
+msgstr "&СмАтр"
msgid "&Rename/Move"
-msgstr "&Преименуване или местене"
+msgstr "&Местене/Преименуване"
msgid "&Mkdir"
-msgstr "&Mkdir"
+msgstr "&Нова директория"
msgid "&Quick cd"
-msgstr "&Бързо cd"
+msgstr "&Бърза смяна — cd"
msgid "Select &group"
msgstr "Избор на &група"
msgid "U&nselect group"
-msgstr "Де&избиране на група"
+msgstr "Без избор на гр&упа"
msgid "&Invert selection"
-msgstr "&Преобръщане на селекция"
+msgstr "Об&ърнат избор"
msgid "E&xit"
-msgstr "&Изход"
+msgstr "Из&ход"
msgid "&User menu"
msgstr "&Потребителско меню"
msgid "&Directory tree"
-msgstr "Дърво на директориите"
+msgstr "&Дърво на директориите"
msgid "&Find file"
-msgstr "&Намиране на файл"
+msgstr "&Търсене на файл"
msgid "S&wap panels"
msgstr "Разм&яна на панели"
msgid "Switch &panels on/off"
-msgstr "Включване/Изключване на &панелите"
+msgstr "Превклю&чване на панелите"
msgid "&Compare directories"
msgstr "&Сравнение на директории"
msgid "C&ompare files"
-msgstr "С&равнение на файлове"
+msgstr "Сра&внение на файлове"
msgid "E&xternal panelize"
-msgstr "В&ъншна панелизация"
+msgstr "В&ъншен панел"
msgid "Show directory s&izes"
-msgstr "Показване на &размерите на директориите"
+msgstr "&Размери на директориите"
msgid "Command &history"
-msgstr "Командна &история"
+msgstr "&История на командите"
msgid "Viewed/edited files hi&story"
-msgstr ""
+msgstr "Скоро&шни файлове"
msgid "Di&rectory hotlist"
-msgstr "Списък за бърз достъп до дире&ктории"
+msgstr "&Горещи директории"
msgid "&Active VFS list"
-msgstr "&Активни списък от ВФС"
+msgstr "&Активни виртуални ФС"
msgid "&Background jobs"
-msgstr "&Фонови задачи"
+msgstr "Фонови &задачи"
msgid "Screen lis&t"
-msgstr "Спис&ък на екрани"
+msgstr "Списък на &екрани"
msgid "&Undelete files (ext2fs only)"
-msgstr "Възстанови файлове (само ext2fs)"
+msgstr "&Възстановяване на файлове (само ext2fs)"
msgid "&Listing format edit"
-msgstr "Редактирай формата на списъка"
+msgstr "&Формат на списъка"
msgid "Edit &extension file"
-msgstr "Редактирай файл с разширения"
+msgstr "&Файл за разширения"
msgid "Edit &menu file"
-msgstr "Редактирай меню-файл"
+msgstr "Файл с &меню"
msgid "Edit hi&ghlighting group file"
-msgstr ""
+msgstr "Фа&йл за оцветените групи"
msgid "&Configuration..."
-msgstr "Конфигурация..."
+msgstr "&Настройки…"
msgid "&Layout..."
-msgstr "Разположение..."
+msgstr "&Разположение…"
msgid "&Panel options..."
-msgstr "Настройки на &панел"
+msgstr "Настройки на &панел…"
msgid "C&onfirmation..."
-msgstr "По&твърждение..."
+msgstr "По&твърждения…"
msgid "&Appearance..."
-msgstr "&Изглед"
+msgstr "&Външен вид…"
msgid "&Display bits..."
-msgstr "Екран..."
+msgstr "&Битове за извеждане…"
msgid "&Virtual FS..."
-msgstr "Виртуална ФС..."
+msgstr "Виртуална &ФС…"
msgid "Panels:"
msgstr "Панели:"
@@ -3259,49 +3239,49 @@
msgstr[1] "Имате %zu отворени прозорци. Изход все пак?"
msgid "The Midnight Commander"
-msgstr "Midnight Commander-а"
+msgstr "Midnight Commander"
msgid "Do you really want to quit the Midnight Commander?"
msgstr "Наистина ли искате да напуснете Midnight Commander?"
msgid "&Above"
-msgstr "&Отгоре"
+msgstr "От&горе"
msgid "&Left"
-msgstr "&Вляво"
+msgstr "В&ляво"
msgid "&Below"
msgstr "&Отдолу"
msgid "&Right"
-msgstr "&Вдясно"
+msgstr "В&дясно"
msgid "ButtonBar|Menu"
-msgstr "ButtonBar|Меню"
+msgstr "Потребителско меню"
msgid "ButtonBar|View"
-msgstr "ButtonBar|Изглед"
+msgstr "Преглед"
msgid "ButtonBar|RenMov"
-msgstr ""
+msgstr "Местене/Преименуване"
msgid "ButtonBar|Mkdir"
-msgstr "ButtonBar|Mkdir"
+msgstr "Нова директория"
msgid "&Chdir"
-msgstr "Смени директорията"
+msgstr "&Смяна на директория"
msgid "&Again"
-msgstr "Отново"
+msgstr "&Отново"
msgid "Pane&lize"
-msgstr "Покажи в панел"
+msgstr "&Външен панел"
msgid "&View - F3"
-msgstr "Покажи - F3"
+msgstr "&Извеждане — F3"
msgid "&Edit - F4"
-msgstr "Редактирай - F4"
+msgstr "&Редактиране — F4"
#, c-format
msgid "Found: %lu"
@@ -3316,6 +3296,9 @@
msgid "&Find recursively"
msgstr "&Намиране рекурсивно"
+msgid "Follow s&ymlinks"
+msgstr "&Следване на връзки"
+
msgid "S&kip hidden"
msgstr "Пропускане на &скритите"
@@ -3326,7 +3309,7 @@
msgstr "Тър&сене на съдържание"
msgid "Case sens&itive"
-msgstr "Чувствителност към рег&истъра"
+msgstr "&Чувствителност към регистъра"
msgid "A&ll charsets"
msgstr "Вси&чки кодови таблици"
@@ -3335,13 +3318,13 @@
msgstr "Пър&во попадение"
msgid "Find File"
-msgstr "Търси файл"
+msgstr "Търсене на файл"
msgid "Start at:"
-msgstr "Започни от:"
+msgstr "Начало от:"
msgid "Ena&ble ignore directories:"
-msgstr "Акти&виране на игнориране на директории:"
+msgstr "&Игнориране на директории:"
#, c-format
msgid "Grepping in %s"
@@ -3358,47 +3341,47 @@
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
-msgstr ""
+msgstr "Търсене: „%s“. Съдържание: „%s“"
#, c-format
msgid "Find File: \"%s\""
-msgstr ""
+msgstr "Търсене: „%s“"
msgid "Searching"
-msgstr "Търся"
+msgstr "Търсене"
msgid "Change &to"
msgstr "Промяна &на"
msgid "&Free VFSs now"
-msgstr "&Освобождаване ВФС-тата сега"
+msgstr "&Освобождаване на виртуалната ФС"
msgid "&Refresh"
msgstr "&Обновяване"
msgid "&Add current"
-msgstr "Добави текущата"
+msgstr "И &текущата"
msgid "&Up"
-msgstr "Горе"
+msgstr "&Горе"
msgid "New &group"
-msgstr "Нова &група"
+msgstr "&Нова група"
msgid "New &entry"
msgstr "Нов &запис"
msgid "&Insert"
-msgstr "Вмъкни"
+msgstr "&Вмъкване"
msgid "&Remove"
-msgstr "Изтрий"
+msgstr "&Изтриване"
msgid "Subgroup - press ENTER to see list"
-msgstr "Подгрупа - натиснете ENTER за списък"
+msgstr "Подгрупа — ENTER за списък"
msgid "Active VFS directories"
-msgstr "Активни ВФС директории"
+msgstr "Активни директории за виртуални ФС"
msgid "Directory hotlist"
msgstr "Горещи директории"
@@ -3411,13 +3394,13 @@
#, c-format
msgid "Moving %s"
-msgstr "Премествам %s"
+msgstr "Преместване на %s"
msgid "Directory label"
-msgstr "Име"
+msgstr "Етикет"
msgid "&Append"
-msgstr "Добави"
+msgstr "Доб&авяне"
msgid "New hotlist entry"
msgstr "Нов запис"
@@ -3436,15 +3419,15 @@
#, c-format
msgid "Are you sure you want to remove entry \"%s\"?"
-msgstr "Наистина ли искате за премахнете записа \"%s\"?"
+msgstr "Наистина ли искате за премахнете записа „%s“?"
#, c-format
msgid ""
"Group \"%s\" is not empty.\n"
"Remove it?"
msgstr ""
-"Групата \"%s\" не е празна.\n"
-"Изтриване?"
+"Групата „%s“ не е празна.\n"
+"Да се изтрие ли?"
msgid "Hotlist Load"
msgstr "Зареждане на списъка за бърз достъп"
@@ -3454,12 +3437,12 @@
"MC was unable to write %s file,\n"
"your old hotlist entries were not deleted"
msgstr ""
-"MC не можа да запише файл %s,\n"
+"Midnight Commander не записа файл %s,\n"
"старите ви елементи в списъка за бърз достъп не бяха изтрити"
#, c-format
msgid "Label for \"%s\":"
-msgstr "Име за \"%s\":"
+msgstr "Етикет за „%s“:"
msgid "Add to hotlist"
msgstr "Добавяне към списъка за бърз достъп"
@@ -3476,21 +3459,21 @@
msgstr "Няма информация за възлите"
msgid "Free nodes:"
-msgstr "Свободни разклонения:"
+msgstr "Свободни възли:"
msgid "No space information"
msgstr "Няма информация за пространството"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Свободно пространство %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
msgstr "Вид: %s"
msgid "non-local vfs"
-msgstr "не-локална vfs"
+msgstr "нелокална vfs"
#, c-format
msgid "Device: %s"
@@ -3515,7 +3498,7 @@
#, c-format
msgid "Dev. type: major %lu, minor %lu"
-msgstr "Уст. тип: major %lu, minor %lu"
+msgstr "Уст-во: голям № %lu, малък № %lu"
#, c-format
msgid "Size: %s"
@@ -3524,8 +3507,8 @@
#, c-format
msgid " (%lu block)"
msgid_plural " (%lu blocks)"
-msgstr[0] "(%lu блок)"
-msgstr[1] "(%lu блокове)"
+msgstr[0] " (%lu блок)"
+msgstr[1] " (%lu блока)"
#, c-format
msgid "Owner: %s/%s"
@@ -3533,46 +3516,46 @@
#, c-format
msgid "Links: %d"
-msgstr "Линкове: %d"
+msgstr "Връзки: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Атрибути: не се поддържат"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Атрибути: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Атрибути: няма"
#, c-format
msgid "Mode: %s (%04o)"
-msgstr "Права: %s (%04o)"
+msgstr "Права̀: %s (%04o)"
#, c-format
msgid "Location: %Xh:%Xh"
msgstr "Разположение: %Xh:%Xh"
msgid "&Equal split"
-msgstr "По равно"
+msgstr "&По равно"
msgid "&Menubar visible"
-msgstr "Реда на &менюто показване"
+msgstr "Видимо &меню"
msgid "Command &prompt"
msgstr "Команден &ред"
msgid "&Keybar visible"
-msgstr "Видими F-ове"
+msgstr "В&идими F-ове"
msgid "H&intbar visible"
-msgstr "Реда за &подсказване показване "
+msgstr "Р&ед с подсказки"
msgid "&XTerm window title"
-msgstr "Заглавие на прозореца на &XTerm"
+msgstr "Заглавие на &терминалния прозорец"
msgid "&Show free space"
-msgstr "&Показване на свободното пространство"
+msgstr "&Свободно пространство"
msgid "Panel split"
msgstr "Разделяне на панела"
@@ -3581,40 +3564,40 @@
msgstr "Изходна информация на конзолата"
msgid "&Vertical"
-msgstr "Вертикално"
+msgstr "&Вертикално"
msgid "&Horizontal"
-msgstr "Хоризонтално"
+msgstr "&Хоризонтално"
msgid "Output lines:"
msgstr "Изходни редове:"
msgid "Layout"
-msgstr "Изглед"
+msgstr "Разположение на елементите"
msgid "Memory exhausted!"
-msgstr "Паметта е изразходвана!"
+msgstr "Паметта свърши!"
#. TRANSLATORS: one single character to represent 'unsorted' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|u"
-msgstr ""
+msgstr "н"
msgid "&Unsorted"
-msgstr "Неподредени"
+msgstr "&Неподредени"
#. TRANSLATORS: one single character to represent 'name' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|n"
-msgstr ""
+msgstr "и"
msgid "&Name"
-msgstr "Име"
+msgstr "&Име"
#. TRANSLATORS: one single character to represent 'version' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|v"
-msgstr ""
+msgstr "в"
msgid "&Version"
msgstr "&Версия"
@@ -3622,18 +3605,18 @@
#. TRANSLATORS: one single character to represent 'extension' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|e"
-msgstr ""
+msgstr "ш"
msgid "E&xtension"
-msgstr "Ра&зширение"
+msgstr "Раз&ширение"
#. TRANSLATORS: one single character to represent 'size' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|s"
-msgstr ""
+msgstr "р"
msgid "&Size"
-msgstr "Размер"
+msgstr "&Размер"
msgid "Block Size"
msgstr "Размер на блок"
@@ -3641,40 +3624,40 @@
#. TRANSLATORS: one single character to represent 'Modify time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|m"
-msgstr ""
+msgstr "м"
msgid "&Modify time"
-msgstr "Време на промяна на файла"
+msgstr "Време на про&мяна на файла"
#. TRANSLATORS: one single character to represent 'Access time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|a"
-msgstr ""
+msgstr "д"
msgid "&Access time"
-msgstr "Време на достъп"
+msgstr "Време на &достъп"
#. TRANSLATORS: one single character to represent 'Change time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|h"
-msgstr ""
+msgstr "я"
msgid "C&hange time"
-msgstr "Време на п&ромяна"
+msgstr "Време на пром&яна"
msgid "Perm"
-msgstr "Режим"
+msgstr "Права̀"
msgid "Nl"
-msgstr "Връзки"
+msgstr "БрВрзк"
#. TRANSLATORS: one single character to represent 'inode' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|i"
-msgstr ""
+msgstr "ъ"
msgid "&Inode"
-msgstr "I-възел"
+msgstr "I-в&ъзел"
msgid "UID"
msgstr "UID"
@@ -3689,16 +3672,16 @@
msgstr "Група"
msgid "[dev]"
-msgstr ""
+msgstr "[РЗР]"
msgid "UP--DIR"
-msgstr "ГОР-ДИР"
+msgstr "ГОРНА"
msgid "SYMLINK"
msgstr "ВРЪЗКА"
msgid "SUB-DIR"
-msgstr "ПОД-ДИР"
+msgstr "ПОД_ДИР"
msgid "<readlink failed>"
msgstr "<непрочетена връзка>"
@@ -3710,37 +3693,40 @@
msgstr[1] "%s в %d файла"
msgid "Panelize"
-msgstr "Панелизация"
+msgstr "Външен панел"
msgid "Unknown tag on display format:"
-msgstr "Непознат таг на формата на дисплея:"
+msgstr "Непознат етикет на форма̀та на дисплея:"
msgid "&Files only"
msgstr "Само &файлове"
msgid "&Case sensitive"
-msgstr "Чувствителност към &регистъра"
+msgstr "&Чувствителност към регистъра"
msgid "Select"
msgstr "Избиране"
msgid "Unselect"
-msgstr "Деселектиране"
+msgstr "Без избиране"
+
+msgid "Filter"
+msgstr "Филтър"
msgid "Do you really want to execute?"
-msgstr "Наистина ли искате на изпълните това?"
+msgstr "Наистина ли искате да изпълните това?"
msgid "Cannot read directory contents"
-msgstr "Не може да се прочете съдържанието на директорията"
+msgstr "Съдържанието на директорията не може да се прочете"
msgid "User supplied format looks invalid, reverting to default."
-msgstr "Потребителският формат изглежда невалиден, връщам се към стандартния."
+msgstr "Неправилен потребителски формат, ще се ползва стандартният."
msgid "&Add new"
-msgstr "Добави нов"
+msgstr "&Добавяне на нов"
msgid "External panelize"
-msgstr "Команда в панел"
+msgstr "Външен панел"
msgid "Other command"
msgstr "Друга команда"
@@ -3749,31 +3735,43 @@
msgstr "Команда"
msgid "Add to external panelize"
-msgstr "Добавяне към външна панелизация"
+msgstr "Добавяне към външен панел"
msgid "Enter command label:"
msgstr "Въвеждане на етикет на команда:"
-msgid "Cannot invoke command."
-msgstr "Не може да се извика командата."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Външен панел:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Затварянето на канала не успя"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Външен панел:\n"
+"неуспешно четене от стандартния изход на процес:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
-msgstr "Не може да се изпълни външна панелизация на не-локална директория"
+msgstr "Не може да се изпълни външен панел на нелокална директория"
msgid "Modified git files"
msgstr "Променени файлове в git"
msgid "Find rejects after patching"
-msgstr "Намери отказите след патч"
+msgstr "Неуспешни кръпки"
msgid "Find *.orig after patching"
-msgstr "Намеро *.orig след команда patch"
+msgstr "Първоначални версии след неуспешни кръпки"
msgid "Find SUID and SGID programs"
-msgstr "Намери SUID и SGID програми"
+msgstr "Търсене на програми SUID и SGID"
#, c-format
msgid ""
@@ -3785,38 +3783,38 @@
#, c-format
msgid "Copy \"%s\" directory to:"
-msgstr "Копирай директорията \"%s\" в:"
+msgstr "Копиране на директорията „%s“ в:"
#, c-format
msgid "Move \"%s\" directory to:"
-msgstr "Премести директорията \"%s\" в:"
+msgstr "Преместване на директорията „%s“ в:"
#, c-format
msgid ""
"Cannot stat the destination\n"
"%s"
msgstr ""
-"Не може да се stat-не дестинацията\n"
+"Не може да се изпълни stat върху целта\n"
"%s"
#, c-format
msgid "Delete %s?"
-msgstr "Да се изтрие ли %s?"
+msgstr "Да се изтрие ли „%s“?"
msgid "ButtonBar|Static"
-msgstr "ButtonBar|Статично"
+msgstr "Статично"
msgid "ButtonBar|Dynamc"
-msgstr "ButtonBar|Динамично"
+msgstr "Динамично"
msgid "ButtonBar|Rescan"
-msgstr "ButtonBar|Пресканиране"
+msgstr "Пресканиране"
msgid "ButtonBar|Forget"
-msgstr "ButtonBar|Пренебрегване"
+msgstr "Пренебрегване"
msgid "ButtonBar|Rmdir"
-msgstr "ButtonBar|Rmdir"
+msgstr "ТрДир"
#, c-format
msgid ""
@@ -3827,29 +3825,29 @@
"%s\n"
msgid "Help file format error\n"
-msgstr "Грешка във формата на помощния файл\n"
+msgstr "Грешка във форма̀та на помощния файл\n"
msgid "Internal bug: Double start of link area"
-msgstr ""
+msgstr "Вътрешна грешка: второ начало на областта за свързване"
#, c-format
msgid "Cannot find node %s in help file"
-msgstr "Не може да се намери разклонение %s в помощния файл"
+msgstr "Не може да се намери възел %s в помощния файл"
msgid "Help"
msgstr "Помощ"
msgid "ButtonBar|Index"
-msgstr "ButtonBar|Индекс"
+msgstr "Индекс"
msgid "ButtonBar|Prev"
-msgstr "ButtonBar|Предишен"
+msgstr "Назад"
msgid "Learn keys"
-msgstr "Учи клавиши"
+msgstr "Задаване на клавиши"
msgid "Teach me a key"
-msgstr "Обучете ме на клавиш"
+msgstr "Задаване на клавиши"
#, c-format
msgid ""
@@ -3862,13 +3860,13 @@
"If you want to escape, press a single Escape key\n"
"and wait as well."
msgstr ""
-"Моля, натианете %s\n"
+"Натиснете %s\n"
"и изчакайте това съобщение да изчезне.\n"
"\n"
"Тогава го натиснете пак, за да видите дали\n"
-"ще се появи OK до бутона мъ.\n"
+"ще се появи OK до бутона му.\n"
"\n"
-"Ако изкате да излезете, натиснете веднъж Escape\n"
+"За да излезете, натиснете веднъж Escape\n"
"и изчакайте."
msgid "Cannot accept this key"
@@ -3876,7 +3874,7 @@
#, c-format
msgid "You have entered \"%s\""
-msgstr "Въведохте \"%s\""
+msgstr "Въведохте „%s“"
#. TRANSLATORS: This label appears near learned keys. Keep it short.
msgid "OK"
@@ -3886,28 +3884,27 @@
"It seems that all your keys already\n"
"work fine. That's great."
msgstr ""
-"Изглежда, че всичките Ви клавиши вече\n"
-"работят добре. Това е супер."
+"Изглежда, че всичките Ви клавиши\n"
+"вече работят добре. Това е супер."
msgid "&Discard"
-msgstr "Отмени"
+msgstr "&Отмяна"
msgid ""
"Great! You have a complete terminal database!\n"
"All your keys work well."
msgstr ""
"Страхотно! Имате пълна терминална база данни!\n"
-"Всичките Ви клавиши работят добре."
+"Всичките ви клавиши работят добре."
msgid ""
"Press all the keys mentioned here. After you have done it, check\n"
"which keys are not marked with OK. Press space on the missing\n"
"key, or click with the mouse to define it. Move around with Tab."
msgstr ""
-"Натиснете всички клавиши споменати тук. След като приключите, проверете\n"
-"кои клавиши не са отбелязани с OK. Натиснете пауза на липсващия\n"
-"клавиш, или кликнете с мишката, за да го дефинирате. Движение насам-натам с "
-"Tab."
+"Натиснете всички клавиши споменати тук. След като приключите,\n"
+"проверете кои клавиши не са отбелязани с OK. Дефинирайте ги,\n"
+"като ги натиснете с интервал или мишката. Навигацията е с Tab."
#, c-format
msgid ""
@@ -3925,6 +3922,9 @@
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"GNU Midnight Commander\n"
+"вече работи в този терминал.\n"
+"Поддръжката на подобвивка ще се изключи."
#, c-format
msgid ""
@@ -3938,16 +3938,16 @@
"\n"
msgid "Choose codepage"
-msgstr "Избиране на кодова таблица"
+msgstr "Кодова таблица"
msgid "- < No translation >"
-msgstr "- < Няма превод >"
+msgstr "— < Без преобразуване >"
msgid "%b %e %Y"
-msgstr "%b %e %Y"
+msgstr "%e %b %Y"
msgid "%b %e %H:%M"
-msgstr "%b %e %H:%M"
+msgstr "%e %b %H:%M"
#, c-format
msgid ""
@@ -3966,98 +3966,102 @@
#, c-format
msgid "Warning: Cannot change to %s.\n"
-msgstr "Внимание: Не мога да премина в %s.\n"
+msgstr "Внимание: Не може да се влезе в %s.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "С поддръжка на вградения редактор и aspell"
msgid "With builtin Editor"
-msgstr ""
+msgstr "С поддръжка на вградения редактор"
msgid "With optional subshell support"
-msgstr ""
+msgstr "С поддръжка на подобвивка (при възможност)"
msgid "With subshell support as default"
-msgstr ""
+msgstr "С поддръжка на подобвивка (стандартно)"
msgid "With support for background operations"
-msgstr ""
+msgstr "С поддръжка на фонови задачи"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "С поддръжка на мишка на в xterm и конзола на Linux"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "С поддръжка на мишка в xterm"
msgid "With support for X11 events"
-msgstr ""
+msgstr "С поддръжка на събития от X11"
msgid "With internationalization support"
-msgstr ""
+msgstr "С поддръжка на интернационализация"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "С поддръжка на множество кодирания"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "С поддръжка на атрибути на ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
-msgstr "Компилиран с GLib %d.%d.%d\n"
+msgstr "С поддръжка на GLib %d.%d.%d\n"
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "С поддръжка на S-Lang %s с terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "С поддръжка на ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "С поддръжка на ncurses (непозната версия)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "С поддръжка на ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
-msgstr ""
+msgstr "С поддръжка на ncursesw (непозната версия)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "С поддръжка на libssh2 %d.%d.%d\n"
msgid "Virtual File Systems:"
msgstr "Виртуални файлови системи:"
msgid "Data types:"
-msgstr "Типове за данни:"
+msgstr "Видове данни:"
msgid "Home directory:"
msgstr "Домашна папка:"
msgid "Profile root directory:"
-msgstr "Коренна директория на профила:"
+msgstr "Коренова директория на профила:"
msgid "System data"
msgstr "Системни данни"
msgid "Config directory:"
-msgstr "Папка с настройки:"
+msgstr "Директория с настройки:"
msgid "Data directory:"
-msgstr "Папка с данни:"
+msgstr "Директория с данни:"
msgid "File extension handlers:"
-msgstr "Обработчици на файлови разширения:"
+msgstr "Поддръжка на файлови разширения:"
msgid "VFS plugins and scripts:"
-msgstr "ВФС добавки и скриптове:"
+msgstr "Добавки и скриптове за виртуални ФС:"
msgid "User data"
msgstr "Потребителски данни"
msgid "Cache directory:"
-msgstr "Кеш директория:"
+msgstr "Директория с кеш:"
msgid "Debug"
-msgstr "Дебъгване"
+msgstr "Трасиране"
msgid "ERROR:"
msgstr "ГРЕШКА:"
@@ -4072,22 +4076,22 @@
msgstr "Грешка при извикване на програма"
msgid "Warning -- ignoring file"
-msgstr "Предупреждение -- игнориране на файл"
+msgstr "Предупреждение — игнориране на файл"
#, c-format
msgid ""
"File %s is not owned by root or you or is world writable.\n"
"Using it may compromise your security"
msgstr ""
-"Файла %s не е на root или Ваш, или е достъпен за запис от всички.\n"
-"Използването му може да застраши сигурността Ви"
+"Файлът %s не е на root и не е ваш, или е достъпен за запис\n"
+"от всички. Използването му може да застраши сигурността ви"
msgid "Format error on file Extensions File"
-msgstr "Грешка във формата на файла за Разширения"
+msgstr "Грешка във форма̀та на файла за разширения"
#, c-format
msgid "The %%var macro has no default"
-msgstr "Макросът %%var няма стойност по подразбиране"
+msgstr "Макросът %%var няма стандартна стойност"
#, c-format
msgid "The %%var macro has no variable"
@@ -4105,7 +4109,7 @@
"Cannot open cpio archive\n"
"%s"
msgstr ""
-"Не може да се отвори cpio архива\n"
+"Не може да се отвори архивът cpio\n"
"%s"
#, c-format
@@ -4113,7 +4117,7 @@
"Premature end of cpio archive\n"
"%s"
msgstr ""
-"Преждевременен край на cpio архива\n"
+"Преждевременен край на архива cpio\n"
"%s"
#, c-format
@@ -4125,19 +4129,19 @@
msgstr ""
"Невалидни твърди връзки към\n"
"%s\n"
-"в cpio архивa\n"
+"в архива cpio\n"
"%s"
#, c-format
msgid "%s contains duplicate entries! Skipping!"
-msgstr "%s съдържа дублирани елементи! Пропускам го!"
+msgstr "%s съдържа повтарящи се елементи! Те се пропускат!"
#, c-format
msgid ""
"Corrupted cpio header encountered in\n"
"%s"
msgstr ""
-"Повредено cpio заглавие срещнато в\n"
+"Грешна заглавна част на cpio в\n"
"%s"
#, c-format
@@ -4145,53 +4149,64 @@
"Unexpected end of file\n"
"%s"
msgstr ""
-"Неочакван край на файла\n"
+"Неочакван край на файл\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "сгрешен архив tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Не може да се отвори архива %s\n"
+"Архивът %s не може да се отвори\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Повреден extfs архив"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Виртуална ФС по EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
-msgstr "Предупреждение: не може да се отвори %s директорията\n"
+msgstr "Предупреждение: директорията %s не може да се отвори \n"
#, c-format
msgid "fish: Disconnecting from %s"
-msgstr "fish: Изключвам се от %s"
+msgstr "fish: Изключване от %s"
msgid "fish: Waiting for initial line..."
-msgstr "fish: Чакам начален ред..."
+msgstr "fish: Изчаква се начален ред…"
msgid "Sorry, we cannot do password authenticated connections for now."
-msgstr "Съжалявам, не можем да правим връзки с парола засега."
+msgstr "Засега връзки с парола не може да се осъществят."
#, c-format
msgid "fish: Password is required for %s"
msgstr "fish: Нужна е парола за %s"
msgid "fish: Sending password..."
-msgstr "fish: Изпращам парола..."
+msgstr "fish: Изпращане на парола…"
msgid "fish: Sending initial line..."
-msgstr "fish: Изпращам начален ред..."
+msgstr "fish: Изпращане на начален ред…"
msgid "fish: Handshaking version..."
-msgstr "fish: Потвърждавм версията..."
+msgstr "fish: Потвърждаване на версията…"
msgid "fish: Getting host info..."
-msgstr "fish: Получавам данни за хоста..."
+msgstr "fish: Получаване на данни за хоста…"
#, c-format
msgid "fish: Reading directory %s..."
-msgstr "fish: Чета директорията %s..."
+msgstr "fish: Прочитане на директорията %s…"
#, c-format
msgid "%s: done."
@@ -4203,56 +4218,56 @@
#, c-format
msgid "fish: store %s: sending command..."
-msgstr "fish: запис на %s: изпращам командата..."
+msgstr "fish: запис на %s: изпращане на командата…"
msgid "fish: Local read failed, sending zeros"
-msgstr "fish: Локалното четене пропадна, изпращам нули"
+msgstr "fish: Неуспешно локалнот четене, изпращат се нули"
msgid "fish: storing file"
msgstr "fish: запис на файл"
msgid "Aborting transfer..."
-msgstr "Отменяне преноса..."
+msgstr "Отмяна на пренасянето…"
msgid "Error reported after abort."
-msgstr "Грешка след отняната."
+msgstr "Грешка след отмяната."
msgid "Aborted transfer would be successful."
msgstr "Преносът е отменен успешно."
#, c-format
msgid "ftpfs: Disconnecting from %s"
-msgstr "ftpfs: Изключвам се от %s"
+msgstr "ftpfs: Изключване от %s"
#, c-format
msgid "FTP: Password required for %s"
msgstr "FTP: Нужна е парола за %s"
msgid "ftpfs: sending login name"
-msgstr "ftpfs: изпращам потребителско име"
+msgstr "ftpfs: изпращане на потребителско име"
msgid "ftpfs: sending user password"
-msgstr "ftpfs: изпращам потребителска парола"
+msgstr "ftpfs: изпращане на потребителска парола"
#, c-format
msgid "FTP: Account required for user %s"
msgstr "FTP: Нужно е потребителско име за %s"
msgid "Account:"
-msgstr "Сметка:"
+msgstr "Регистрация:"
msgid "ftpfs: sending user account"
msgstr "ftpfs: изпращане на потребителско име"
msgid "ftpfs: logged in"
-msgstr "ftpfs: вътре сме"
+msgstr "ftpfs: успешно вписване"
#, c-format
msgid "ftpfs: Login incorrect for user %s "
msgstr "ftpfs: Отказ на връзка за потребителя %s "
msgid "ftpfs: Invalid host name."
-msgstr "ftpfs: Невалидно име на машина"
+msgstr "ftpfs: Неправилно име на машина"
#, c-format
msgid "ftpfs: %s"
@@ -4260,25 +4275,40 @@
#, c-format
msgid "ftpfs: making connection to %s"
-msgstr "ftpfs: установявам връзка с %s"
+msgstr "ftpfs: установяване на връзка с %s"
msgid "ftpfs: connection interrupted by user"
msgstr "ftpfs: връзката прекъсната от потребителя"
#, c-format
msgid "ftpfs: connection to server failed: %s"
-msgstr "ftpfs: връзката със сървъра пропадна: %s"
+msgstr "ftpfs: неуспешна връзка със сървъра: %s"
#, c-format
msgid "Waiting to retry... %d (Control-G to cancel)"
-msgstr "Очакване за повторен опит... %d (Control-G за отказване)"
+msgstr "Очакване за повторен опит… %d (Control-G за отказване)"
+
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: адресът не може да се преобразува до име: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: пореден неуспешен опит за връзка със сървъра — опит: %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: името на гнездото не може да се получи: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: повторното свързване към сървъра е невъзможно"
msgid "ftpfs: invalid address family"
-msgstr "ftpfs: невалиден вид на адреса"
+msgstr "ftpfs: неправилен вид на адреса"
#, c-format
msgid "ftpfs: could not create socket: %s"
-msgstr "ftpfs: не може да се създаде сокет: %s"
+msgstr "ftpfs: не може да се създаде гнездо: %s"
msgid "ftpfs: could not setup passive mode"
msgstr "ftpfs: не може да се установи пасивен режим"
@@ -4300,11 +4330,11 @@
msgstr "ftpfs: не може да се проследи връзката"
msgid "Resolving symlink..."
-msgstr "Проследяване на връзката..."
+msgstr "Проследяване на връзката…"
#, c-format
msgid "ftpfs: Reading FTP directory %s... %s%s"
-msgstr "ftpfs: Чете се FTP директорията %s... %s%s"
+msgstr "ftpfs: Чете се FTP директорията %s… %s%s"
msgid "(strict rfc959)"
msgstr "(стриктно rfc959)"
@@ -4313,7 +4343,7 @@
msgstr "(първо cd)"
msgid "ftpfs: failed; nowhere to fallback to"
-msgstr "ftpfs: неуспех; няма къде да се върна"
+msgstr "ftpfs: неуспех; няма място за връщане"
msgid "ftpfs: storing file"
msgstr "ftpfs: съхраняване на файл"
@@ -4322,8 +4352,16 @@
"~/.netrc file has incorrect mode\n"
"Remove password or correct mode"
msgstr ""
-"файлът /.netrc има неправилен режим\n"
-"Изтрийте паролата или поправете режима"
+"файлът /.netrc е с неправилни права\n"
+"Изтрийте паролата или ги оправете"
+
+#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Виртуална ФС по SFS:\n"
+"%s"
#, c-format
msgid "%s: Warning: file %s not found\n"
@@ -4347,18 +4385,22 @@
#, c-format
msgid "sftp: an error occurred while reading %s: %s"
-msgstr "sftp: грешка възникна при четенето на %s: %s"
+msgstr "sftp: грешка при четенето на %s: %s"
msgid "sftp: Unable to get current user name."
-msgstr "sftp: Невъзможност да се установи потребителското име."
+msgstr "sftp: Потребителското име не може да се установи."
msgid "sftp: Invalid host name."
-msgstr "sftp: Невалидно име на хост."
+msgstr "sftp: Неправилно име на хост."
#, c-format
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: IP адресът на отдалечения хост не може да се обърне в текстова форма"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: установява се връзка с %s"
@@ -4370,77 +4412,109 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: връзката към сървъра е неуспешна: %s"
-#, c-format
-msgid "sftp: Enter passphrase for %s "
-msgstr "sftp: Въвеждане на passphrase за %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: неподдържан вид на намерения ключ на хост: RSA1"
-msgid "sftp: Passphrase is empty."
-msgstr "sftp: passphrase-а е празна."
+msgid "sftp: unknown host key type:"
+msgstr "sftp: неподдържан вид ключ:"
#, c-format
-msgid "sftp: Enter password for %s "
-msgstr "sftp: Въвеждане на парола за %s"
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"%s (%s)\n"
+"е добавен за постоянно в\n"
+"списъка с познати хостове."
-msgid "sftp: Password is empty."
-msgstr "sftp: Паролата е празна."
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: ключът на отдалечения хост не може да се получи"
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Неуспешно установяване на SSH сесия"
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr "sftp: неподдържан вид ключ, не може да се провери"
-msgid "sftp: No file handler data present for reading file"
-msgstr "sftp: Няма съществуващ обработчик за четене на файл"
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: контролната сума на ключа на хоста не може да се изчисли"
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
+"Идентичността на хоста\n"
+"%s (%s)\n"
+"не може да бъде проверена!\n"
+"Контролната сума на ключа на %s е\n"
+"SHA1:%s.\n"
+"Искате ли да го добавите в списъка с\n"
+"познати хостове и да продължите с връзката?"
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
-msgstr "sftp: (Ctrl-G прекъсване) Изреждане... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"присъства в познатите хостове, но\n"
+"КЛЮЧЪТ НЕ СЪВПАДА! МОЖЕ ДА СТЕ АТАКУВАНИ!\n"
+"Сигурни ли сте, че искате да го добавите в списъка\n"
+"с познати хостове и да продължите с връзката?"
-msgid "sftp: Listing done."
-msgstr "sftp: Изреждането приключи."
+msgid "sftp: host key verification failed"
+msgstr "sftp: несъвпадащ ключ на хоста"
#, c-format
-msgid "reconnect to %s failed"
-msgstr "повторната връзка към %s беше неуспешна"
+msgid "sftp: Enter passphrase for %s "
+msgstr "sftp: Въвеждане на парола за %s"
-msgid "Authentication failed"
-msgstr "Грешка при автентикацията"
+msgid "sftp: Passphrase is empty."
+msgstr "sftp: Паролата е празна."
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Грешка %s при създаването на директория %s"
+msgid "sftp: Enter password for %s "
+msgstr "sftp: Въвеждане на парола за %s"
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Грешка %s при изтриването на директория %s"
+msgid "sftp: Password is empty."
+msgstr "sftp: Паролата е празна."
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s отваряне на не-локален файл %s"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: неуспешна връзка по SSH"
+
+msgid "sftp: No file handler data present for reading file"
+msgstr "sftp: Няма команда за четенето на файл"
#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s изтриване на не-локален файл %s"
+msgid "sftp: socket error: %s"
+msgstr "sftp: грешка в гнездото: %s"
#, c-format
-msgid "%s renaming files\n"
-msgstr "%s преименуване на файлове\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr "sftp: (прекъсване с Ctrl-G) Извеждане… %s"
+
+msgid "sftp: Listing done."
+msgstr "sftp: Извеждането приключи."
#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
msgstr ""
-"Не може да се отвори tar архива\n"
+"Не може да се отвори архивът tar\n"
"%s"
msgid "Inconsistent tar archive"
-msgstr "Несъгласуван tar архив"
+msgstr "сгрешен архив tar"
msgid "Unexpected EOF on archive file"
-msgstr "Неочакван край на архивния файл"
+msgstr "Неочакван край на архива"
#, c-format
msgid ""
@@ -4448,7 +4522,7 @@
"doesn't look like a tar archive."
msgstr ""
"%s\n"
-"не изглежда като tar архив."
+"не изглежда като архив tar."
msgid "undelfs: error"
msgstr "undelfs: грешка"
@@ -4457,7 +4531,7 @@
msgstr "няма достатъчно памет"
msgid "while allocating block buffer"
-msgstr "при заделянето на буфер за блок"
+msgstr "при заделянето на буфер"
#, c-format
msgid "open_inode_scan: %d"
@@ -4465,7 +4539,7 @@
#, c-format
msgid "while starting inode scan %d"
-msgstr "при стартиране на inode сканиране %d"
+msgstr "при стартиране на сканиране на i-възел %d"
#, c-format
msgid "undelfs: loading deleted files information %d inodes"
@@ -4480,46 +4554,46 @@
#, c-format
msgid "while doing inode scan %d"
-msgstr "при изпълнението на inode scan %d"
+msgstr "при изпълнението на сканиране на i-възел %d"
#, c-format
msgid "Cannot open file %s"
msgstr "Файлът %s не може да бъде отворен"
msgid "undelfs: reading inode bitmap..."
-msgstr "undelfs: четене на битовата карта на i-възлите..."
+msgstr "undelfs: четене на битовата карта на i-възлите…"
#, c-format
msgid ""
"Cannot load inode bitmap from:\n"
"%s"
msgstr ""
-"Не може да се зареди inode bitmap-а от:\n"
+"Не може да се зареди битовата карта на i-възлите от:\n"
"%s"
msgid "undelfs: reading block bitmap..."
-msgstr "undelfs: четене на блоковата битова карта..."
+msgstr "undelfs: четене на блоковата битова карта…"
#, c-format
msgid ""
"Cannot load block bitmap from:\n"
"%s"
msgstr ""
-"Не може да се зареди bitmap-а на блока от:\n"
+"Не може да се зареди битовата карта на блока от:\n"
"%s"
msgid "vfs_info is not fs!"
-msgstr "vfs_info не е фс!"
+msgstr "vfs_info не е ФС!"
msgid "You have to chdir to extract files first"
-msgstr "Трябва първо да chdir за да разархивирате файловете"
+msgstr "За да разархивирате файловете, първо изпълнете chdir"
msgid "while iterating over blocks"
msgstr "при обработване на блокове"
#, c-format
msgid "Cannot open file \"%s\""
-msgstr "Не може да се отвори файл \"%s\""
+msgstr "Не може да се отвори файлът „%s“"
msgid "Ext2lib error"
msgstr "Грешка в Ext2lib"
@@ -4528,17 +4602,17 @@
msgstr "Неправилна стойност"
msgid "File was modified. Save with exit?"
-msgstr "Файлът е променен. Да се запази ли при излизане?"
+msgstr "Файлът е променен. Да се запази ли при изход?"
msgid "&Cancel quit"
-msgstr "&Отказване на изход"
+msgstr "&Отказ от изход"
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file?"
msgstr ""
-"Midnight Commander-а се изключва.\n"
-"Запис на редактирания файл?"
+"Изход на Midnight Commander.\n"
+"Да се запази ли редактираният файл?"
msgid "&Line number"
msgstr "&Номер на ред"
@@ -4553,44 +4627,44 @@
msgstr "&Шестнадесетично отместване"
msgid "Goto"
-msgstr "Отиди"
+msgstr "Към"
msgid "ButtonBar|Ascii"
-msgstr "ButtonBar|Ascii"
+msgstr "Ascii"
msgid "ButtonBar|HxSrch"
-msgstr "ButtonBar|HxSrch"
+msgstr "HxSrch"
msgid "ButtonBar|UnWrap"
-msgstr "ButtonBar|Без пренасяне"
+msgstr "Без пренасяне"
msgid "ButtonBar|Wrap"
-msgstr "ButtonBar|Пренасяне"
+msgstr "Пренасяне"
msgid "ButtonBar|Hex"
-msgstr "ButtonBar|Hex"
+msgstr "16-но"
msgid "ButtonBar|Goto"
-msgstr "ButtonBar|ОтиванеНа"
+msgstr "Към"
msgid "ButtonBar|Raw"
-msgstr ""
+msgstr "Необработени"
msgid "ButtonBar|Parse"
-msgstr "ButtonBar|Обработка"
+msgstr "Обработка"
msgid "ButtonBar|Unform"
-msgstr "ButtonBar|Деформатиране"
+msgstr "Без форматиране"
msgid "ButtonBar|Format"
-msgstr "ButtonBar|Форматиране"
+msgstr "Форматиране"
#, c-format
msgid ""
"Failed to read data from child stdout:\n"
"%s"
msgstr ""
-"Неуспех при четене на информация то дъщерния stdout:\n"
+"Неуспех при четене на информация от изхода на процес:\n"
"%s"
#, c-format
@@ -4599,9 +4673,9 @@
"%s\n"
"Data may have been written or not"
msgstr ""
-"Грешка при затварянето на файлът:\n"
+"Грешка при затварянето на файла:\n"
"%s\n"
-"Информацията може да била записана или не"
+"Не е ясно дали информацията е записана"
#, c-format
msgid ""
@@ -4619,7 +4693,7 @@
"Cannot open \"%s\"\n"
"%s"
msgstr ""
-"Не може да се отвори \"%s\"\n"
+"Не може да се отвори „%s“\n"
"%s"
msgid "Cannot view: not a regular file"
@@ -4630,7 +4704,7 @@
"Cannot open \"%s\" in parse mode\n"
"%s"
msgstr ""
-"Не може да се отвори \"%s\" в обработващ режим\n"
+"Не може да се отвори „%s“ в режим с анализ\n"
"%s"
msgid "Search done"
@@ -4640,4 +4714,4 @@
msgstr "Да се продължи ли от началото?"
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
-msgstr "Не може да се изтегли локално копие на /ftp://some.host/editme.txt"
+msgstr "Не може да се изтегли локално копие на „/ftp://some.host/editme.txt“"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/br.po
^
|
@@ -1,22 +1,26 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
# Irriep Nala Novram <allannkorh@yahoo.fr>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Irriep Nala Novram <allannkorh@yahoo.fr>, 2017-2018\n"
"Language-Team: Breton (http://www.transifex.com/mc/mc/language/br/)\n"
+"Language: br\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"
+"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !"
+"=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && "
+"(n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 "
+"> 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != "
+"0 && n % 1000000 == 0) ? 3 : 4);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -72,24 +76,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +150,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +505,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Diwallit"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +639,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +928,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,6 +960,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Diwallit"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1006,14 +971,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "O klask %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1059,9 +1016,6 @@
msgid "Save As"
msgstr "Enrollañ evel"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "Enrollañ &prim"
@@ -1092,27 +1046,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1080,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1131,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1182,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1500,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "O klask %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1664,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1991,8 +1965,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2090,19 +2063,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2306,12 +2266,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2415,9 +2369,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2452,14 +2403,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2469,8 +2430,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2705,6 +2666,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2717,12 +2687,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2829,7 +2793,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2857,7 +2821,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2924,10 +2888,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3144,6 +3105,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3309,7 +3273,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3560,6 +3524,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3587,10 +3554,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3826,6 +3800,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3937,13 +3915,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4060,6 +4045,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4111,6 +4111,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4140,6 +4146,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4151,62 +4160,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ca.po
^
|
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Antoni Bella Pérez <antonibella5@yahoo.com>, 2017-2021
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2017-2022
# Daniel <danicases@gmail.com>, 2011
# Daniel <danicases@gmail.com>, 2011-2012
# Daniel <danicases@gmail.com>, 2012
@@ -15,10 +15,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2021-01-03 19:08+0000\n"
-"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>, 2017-2022\n"
"Language-Team: Catalan (http://www.transifex.com/mc/mc/language/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
@@ -44,7 +44,7 @@
msgstr "Ha fallat en inicialitzar el sistema d'esdeveniments"
msgid "Event system not initialized"
-msgstr "El sistema d'esdeveniments no s'ha inicialitzat "
+msgstr "El sistema d'esdeveniments no s'ha inicialitzat"
msgid "Check input data! Some of parameters are NULL!"
msgstr "Comproveu les dades d'entrada! Alguns paràmetres estan en NULL!"
@@ -83,30 +83,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: no és un directori:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Hi ha hagut un error mentre es migraven els ajustaments d'usuari: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Els vostres antics ajustaments s'han migrat de %s\n"
-"cap als directoris recomanats per Freedesktop.\n"
-"Per obtenir més informació, si us plau, visiteu\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Els vostres antics ajustaments s'han migrat de %s\n"
-"cap a %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,7 +140,7 @@
"Default skin has been loaded"
msgstr ""
"No es pot carregar el tema «%s».\n"
-"S'ha carregat el tema per defecte"
+"S'ha carregat el tema predeterminat"
#, c-format
msgid ""
@@ -172,7 +148,7 @@
"Default skin has been loaded"
msgstr ""
"No es pot comprovar el tema «%s».\n"
-"S'ha carregat el tema per defecte"
+"S'ha carregat el tema predeterminat"
#, c-format
msgid ""
@@ -182,7 +158,7 @@
msgstr ""
"No es pot usar el tema «%s» amb suport de colors vertaders:\n"
"%s\n"
-"S'ha carregat el per defecte"
+"S'ha carregat el predeterminat"
#, c-format
msgid ""
@@ -192,17 +168,17 @@
msgstr ""
"No es pot usar el tema «%s» amb suport\n"
"de 256 colors en un terminal de no-256 colors.\n"
-"S'ha carregat el tema per defecte"
+"S'ha carregat el tema predeterminat"
msgid "True color not supported with ncurses."
msgstr "El color veritable no està admès amb «ncurses»."
-msgid "True color not supported in this slang version."
-msgstr "El color veritable no està admès en aquesta versió de «slang»."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "El terminal no sembla admetre 256 colors."
+msgid "True color not supported in this slang version."
+msgstr "El color veritable no està admès en aquesta versió de «slang»."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Establiu COLORTERM=truecolor si el terminal realment admet colors veritables."
@@ -488,7 +464,7 @@
msgstr "Alt"
msgid "Shift"
-msgstr "Maj"
+msgstr "Majús"
msgid "The TERM environment variable is unset!\n"
msgstr "La variable d'entorn TERM no està definida!\n"
@@ -566,6 +542,9 @@
"fill:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -574,18 +553,6 @@
"S'ha produït un error inesperat en waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Avís"
-
-msgid "Pipe failed"
-msgstr "Ha fallat la canonada"
-
-msgid "Dup failed"
-msgstr "Dup ha fallat"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Error en fer «dup» per un error de canonada antiga"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "El directori de la memòria cau ha caducat per %s"
@@ -632,13 +599,13 @@
msgstr "No es crearan fitxers temporals\n"
msgid "Press any key to continue..."
-msgstr "Premeu qualsevol tecla per continuar..."
+msgstr "Premeu qualsevol tecla per a continuar..."
msgid "Cannot parse:"
msgstr "No s'ha pogut analitzar:"
msgid "More parsing errors will be ignored."
-msgstr " Si hi ha mès errors d'interpretació, s'ignoraran. "
+msgstr "Si hi ha més errors d'interpretació, s'ignoraran."
msgid "Internal error:"
msgstr "Error intern:"
@@ -711,12 +678,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Enregistra el diàleg FTP al fitxer especificat"
-msgid "Set debug level"
-msgstr "Determina el nivell de depuració"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Llança el visor de fitxers amb un fitxer"
@@ -739,7 +700,7 @@
msgstr "Inhabilita el suport de ratolí a la versió text"
msgid "Tries to use termcap instead of terminfo"
-msgstr "Prova de emprar el «termcap» en comptes del «terminfo»"
+msgstr "Prova d'emprar el «termcap» en comptes del «terminfo»"
msgid "To run on slow terminals"
msgstr "Per a funcionar amb terminals lents"
@@ -756,7 +717,8 @@
msgid "Don't load definitions of key bindings from file, use defaults"
msgstr ""
-"No carreguis les definicions d'associacions de tecles, usa les per defecte"
+"No carreguis les definicions d'associacions de tecles, usa les "
+"predeterminades"
msgid "Requests to run in black and white"
msgstr "Demana que s'empri el mode en blanc i negre"
@@ -796,7 +758,7 @@
msgstr ""
"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n"
"\n"
-"{FORE}, {BACK} i {ATTR} es poden ometre i s'usarà el valor per defecte\n"
+"{FORE}, {BACK} i {ATTR} es poden ometre i s'usarà el valor predeterminat\n"
"\n"
" Paraules clau:\n"
" Global: errors, disabled, reverse, gauge, header\n"
@@ -879,7 +841,7 @@
msgstr "No s'han donat arguments al visor."
msgid "Two files are required to envoke the diffviewer."
-msgstr "Calen dos fitxers per executar el visor de diferències."
+msgstr "Calen dos fitxers per a executar el visor de diferències."
msgid "Background protocol error"
msgstr "S'ha produït un error de protocol en segon pla"
@@ -990,10 +952,10 @@
msgstr "Edita està inhabilitada"
msgid "Goto line (left)"
-msgstr "Vés a la linia (esquerra)"
+msgstr "Ves a la línia (esquerra)"
msgid "Goto line (right)"
-msgstr "Vés a la linia (dreta)"
+msgstr "Ves a la línia (dreta)"
msgid "Enter line:"
msgstr "Introduïu la línia:"
@@ -1023,14 +985,14 @@
msgstr "Surt"
msgid "File(s) was modified. Save with exit?"
-msgstr "El/s fitxer/s ha/n estat modificat/s. Deso abans de sortir?"
+msgstr "El/s fitxer/s ha/n estat modificat/s. Voleu desar abans de sortir?"
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file(s)?"
msgstr ""
"S'està sortint del Midnight Commander.\n"
-"Deso abans de sortir?"
+"Voleu desar abans de sortir?"
msgid "Diff:"
msgstr "Diferència:"
@@ -1053,15 +1015,6 @@
msgid "Two files are needed to compare"
msgstr "Per a comparar calen dos fitxers"
-msgid "Choose syntax highlighting"
-msgstr "Tria mode de ressaltat"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Torna a carregar la sintaxi actual >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "S'està carregant: %3d%%"
@@ -1094,7 +1047,10 @@
"Open it anyway?"
msgstr ""
"El fitxer «%s» és massa gran.\n"
-"L'obro igualment?"
+"Voleu obrir-lo igualment?"
+
+msgid "Warning"
+msgstr "Avís"
#, c-format
msgid "Error reading from pipe: %s"
@@ -1104,19 +1060,12 @@
msgid "Cannot open pipe for reading: %s"
msgstr "No s'ha pogut obrir la canonada per a lectura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "S'està cercant %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "S'està cercant a %s"
-
msgid "File has hard-links. Detach before saving?"
-msgstr "El fitxer té enllaços durs. Els separo abans de desar?"
+msgstr "El fitxer té enllaços durs. Voleu separar-los abans de desar?"
msgid "The file has been modified in the meantime. Save anyway?"
-msgstr "Mentrestant el fitxer ha estat modificat. El deso de totes maneres?"
+msgstr ""
+"Mentrestant el fitxer ha estat modificat. Voleu desar-lo de totes maneres?"
#, c-format
msgid "Error writing to pipe: %s"
@@ -1157,9 +1106,6 @@
msgid "Save As"
msgstr "Desa com a"
-msgid "Collect completions"
-msgstr "Recull completat"
-
msgid "&Quick save"
msgstr "Desament &ràpid"
@@ -1190,27 +1136,6 @@
msgid "Cannot save file"
msgstr "No s'ha pogut desar el fitxer"
-msgid "Delete macro"
-msgstr "Suprimeix una macro"
-
-msgid "Press macro hotkey:"
-msgstr "Premeu la tecla de la macro:"
-
-msgid "Macro not deleted"
-msgstr "La macro no s'ha suprimit"
-
-msgid "Save macro"
-msgstr "Desa la macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Premeu la tecla nova per a la macro:"
-
-msgid "Repeat last commands"
-msgstr "Repeteix la darrera ordre"
-
-msgid "Repeat times:"
-msgstr "Repeteix vegades:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Confirma desar el fitxer: «%s»"
@@ -1245,13 +1170,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Substitueix"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "S'han fet %ld substitucions"
-
msgid "[NoName]"
msgstr "[SenseNom]"
@@ -1261,7 +1179,7 @@
"Save before close?"
msgstr ""
"El fitxer %s ha estat modificat.\n"
-"El deso abans de tancar?"
+"Voleu desar-lo abans de tancar?"
msgid "Close file"
msgstr "Tanca el fitxer"
@@ -1272,7 +1190,7 @@
"Save modified file %s?"
msgstr ""
"S'està sortint del Midnight Commander.\n"
-"Deso el fitxer modificat «%s»?"
+"Voleu desar el fitxer modificat «%s»?"
msgid "This function is not implemented"
msgstr "Funció no implementada"
@@ -1287,7 +1205,7 @@
msgstr "Talla al porta-retalls"
msgid "Goto line"
-msgstr "Vés a la línia"
+msgstr "Ves a la línia"
msgid "Save block"
msgstr "Desa el bloc"
@@ -1302,21 +1220,21 @@
msgstr "Ordena el bloc"
msgid "You must first highlight a block of text"
-msgstr "En primer lloc heu de ressaltar un bloc de text"
+msgstr "En primer lloc, heu de ressaltar un bloc de text"
msgid "Run sort"
msgstr "Executa l'ordenació"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Introduïu les opcions d'ordrenació (vegeu la pàgina man), separades per "
-"espais en blanc:"
+"Introduïu les opcions d'ordenació (vegeu la pàgina man sort(1)) separades "
+"per un espai en blanc:"
msgid "Sort"
msgstr "Ordena"
msgid "Cannot execute sort command"
-msgstr "No s'ha pogut executar l'ordre per ordenar"
+msgstr "No s'ha pogut executar l'ordre per a ordenar"
#, c-format
msgid "Sort returned non-zero: %s"
@@ -1353,7 +1271,7 @@
msgstr "Insereix literal"
msgid "Press any key:"
-msgstr "Premeu una tecla: "
+msgstr "Premeu una tecla:"
msgid ""
"Current text was modified without a file save.\n"
@@ -1362,35 +1280,35 @@
"El text actual ha estat modificat sense desar-lo a un fitxer.\n"
"Continueu i es descartaran aquests canvis."
-msgid "In se&lection"
-msgstr "A la se&lecció"
+msgid "Cancel"
+msgstr "Cancel·la"
-msgid "&Find all"
-msgstr "Cer&ca'ls tots"
+msgid "Collect completions"
+msgstr "Recull completat"
-msgid "Enter replacement string:"
-msgstr "Introduïu la cadena de substitució:"
+msgid "NoName"
+msgstr "Sense nom"
-msgid "Replace with:"
-msgstr "Substitueix amb:"
+msgid "Save macro"
+msgstr "Desa la macro"
-msgid "&Replace"
-msgstr "Su&bstitueix"
+msgid "Press the macro's new hotkey:"
+msgstr "Premeu la tecla nova per a la macro:"
-msgid "A&ll"
-msgstr "&Tots"
+msgid "Delete macro"
+msgstr "Suprimeix una macro"
-msgid "&Skip"
-msgstr "&Salta"
+msgid "Press macro hotkey:"
+msgstr "Premeu la tecla de la macro:"
-msgid "Confirm replace"
-msgstr "Consigna la substitució"
+msgid "Macro not deleted"
+msgstr "La macro no s'ha suprimit"
-msgid "Cancel"
-msgstr "Cancel·la"
+msgid "Repeat last commands"
+msgstr "Repeteix la darrera ordre"
-msgid "NoName"
-msgstr "Sense nom"
+msgid "Repeat times:"
+msgstr "Repeteix vegades:"
msgid "&Open file..."
msgstr "&Obre el fitxer..."
@@ -1489,13 +1407,13 @@
msgstr "Nete&ja els favorits"
msgid "&Go to line..."
-msgstr "Vés a la &línia..."
+msgstr "Ves a la &línia..."
msgid "&Toggle line state"
msgstr "A<erna la línia d'estat"
msgid "Go to matching &bracket"
-msgstr "Vés al &claudàtor relacionat"
+msgstr "Ves al &claudàtor relacionat"
msgid "Toggle s&yntax highlighting"
msgstr "Alterna el ressaltat de la s&intaxi"
@@ -1672,7 +1590,7 @@
msgstr "Cursor &més enllà del final de la línia"
msgid "&Group undo"
-msgstr "Desfès en &grup"
+msgstr "Desfés en &grup"
msgid "Word wrap line length:"
msgstr "Llargada de l'ajust de línia:"
@@ -1680,6 +1598,45 @@
msgid "Editor options"
msgstr "Opcions de l'editor"
+msgid "In se&lection"
+msgstr "A la se&lecció"
+
+msgid "&Find all"
+msgstr "Cer&ca'ls tots"
+
+msgid "Enter replacement string:"
+msgstr "Introduïu la cadena de substitució:"
+
+msgid "Replace"
+msgstr "Substitueix"
+
+msgid "Replace with:"
+msgstr "Substitueix amb:"
+
+msgid "&Replace"
+msgstr "Su&bstitueix"
+
+msgid "A&ll"
+msgstr "&Tots"
+
+msgid "&Skip"
+msgstr "&Salta"
+
+msgid "Confirm replace"
+msgstr "Consigna la substitució"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "S'està cercant %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "S'està cercant a %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "S'han fet %ld substitucions"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1687,8 +1644,8 @@
"Un editor de text fàcil d'emprar\n"
"escrit per al Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 la Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 la Free Software Foundation"
msgid "About"
msgstr "Quant a"
@@ -1697,7 +1654,7 @@
msgstr "Obre fitxers"
msgid "Edit: "
-msgstr "Edita:"
+msgstr "Edita: "
msgid "ButtonBar|Mark"
msgstr "ButtonBar|Marca"
@@ -1807,6 +1764,15 @@
msgid "Select language"
msgstr "Escull un idioma"
+msgid "Choose syntax highlighting"
+msgstr "Tria mode de ressaltat"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Torna a carregar la sintaxi actual >"
+
msgid "Load syntax file"
msgstr "Carrega el fitxer de sintaxi"
@@ -1848,7 +1814,7 @@
"no es pot alternar el subintèrpret d'ordres."
msgid "Type 'exit' to return to the Midnight Commander"
-msgstr "Escriviu «exit» per tornar al Midnight Commander"
+msgstr "Escriviu «exit» per a tornar al Midnight Commander"
msgid "Set &all"
msgstr "Estableix a &tots"
@@ -1904,7 +1870,7 @@
"%s"
msgid "< Default >"
-msgstr " < Predeterminat >"
+msgstr "< Predeterminat >"
msgid "Skins"
msgstr "Temes"
@@ -2083,7 +2049,7 @@
"L'ús de l'opció de recàrrega ràpida pot no reflectir\n"
"el contingut exacte del directori. En aquest cas,\n"
"haureu de fer una recàrrega manual del directori.\n"
-"Vegeu la pàgina man per als detalls."
+"Per als detalls, vegeu la pàgina man."
msgid "&Full file list"
msgstr "Llistat c&omplet de fitxers"
@@ -2162,7 +2128,7 @@
msgstr "Arbre de directoris"
msgid "Timeout for freeing VFSs (sec):"
-msgstr "Temps d'espera per alliberar els VFS (seg):"
+msgstr "Temps d'espera per a alliberar els VFS (seg):"
msgid "FTP anonymous password:"
msgstr "Contrasenya anònima FTP:"
@@ -2213,19 +2179,6 @@
msgstr "Tasques en segon pla"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Contrasenya per a \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domini:"
-
-msgid "Username:"
-msgstr "Nom d'usuari:"
-
-msgid "SMB authentication"
-msgstr "Autenticació SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2267,10 +2220,10 @@
msgstr "Fitxer en brut comprimit"
msgid "Compression raw access"
-msgstr "Compressió amb accès sense processar"
+msgstr "Compressió amb accés sense processar"
msgid "Encrypted inode"
-msgstr "Inode encriptat"
+msgstr "Node-i encriptat"
msgid "Journaled data"
msgstr "Dades amb diari"
@@ -2285,7 +2238,7 @@
msgstr "Començament de les jerarquies de directori"
msgid "Inode uses extents"
-msgstr "L'ínode usa extensions"
+msgstr "El node-i usa extensions"
msgid "Huge_file"
msgstr "Fitxer_enorme"
@@ -2300,13 +2253,13 @@
msgstr "Fitxer insensible a majúscules"
msgid "Inode has inline data"
-msgstr "L'ínode té dades incloses"
+msgstr "El node-i té dades incloses"
msgid "Project hierarchy"
msgstr "Jerarquia del projecte"
msgid "Verity protected inode"
-msgstr "Ínode protegit de veritat"
+msgstr "Node-i protegit de veritat"
msgid "&Marked all"
msgstr "&Marca'ls tots"
@@ -2430,17 +2383,11 @@
msgstr "Introduïu el nom de la màquina (F1 per a més detalls):"
msgid "Files tagged, want to cd?"
-msgstr "Hi ha fitxers seleccionats. Canvio de directori?"
+msgstr "Hi ha fitxers seleccionats. Voleu canviar de directori?"
msgid "Cannot change directory"
msgstr "No s'ha pogut canviar de directori"
-msgid "Filter"
-msgstr "Filtre"
-
-msgid "Set expression for filtering filenames"
-msgstr "Establiu l'expressió per a filtrar els noms de fitxer"
-
#, c-format
msgid "Link %s to:"
msgstr "Enllaça %s a:"
@@ -2516,7 +2463,7 @@
"to use this command"
msgstr ""
"Ambdós plafons han d'estar en el mode de llistat\n"
-"per usar aquesta ordre"
+"per a usar aquesta ordre"
#, c-format
msgid "'%s' is not a symbolic link"
@@ -2546,9 +2493,6 @@
msgid "Shell link to machine"
msgstr "Enllaç per a l'intèrpret amb la màquina"
-msgid "SMB link to machine"
-msgstr "Connexió per SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Recupera els fitxers en un sistema de fitxers ext2"
@@ -2587,19 +2531,26 @@
"No s'ha pogut crear el fitxer d'ordre temporal\n"
"%s"
+msgid "Pipe failed"
+msgstr "Ha fallat la canonada"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
-msgstr "Error en el fitxer %s%s"
+msgstr " error en el fitxer %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"El format del fitxer %smc.ext ha canviat amb la versió 3.0. Sembla que la "
-"instal·lació ha fallat. Si us plau, cerqueu una còpia nova des del paquet "
-"del Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2607,11 +2558,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"El format del fitxer %s ha canviat amb la versió 3.0. Podeu o bé copiar-lo "
-"des de %smc.ext o usar aquest fitxer com a exemple de com escriure'l."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Copia"
@@ -2734,7 +2683,7 @@
"Delete it recursively?"
msgstr ""
"El directori «%s» no està buit.\n"
-"El suprimeixo de forma recursiva?"
+"Voleu suprimir-lo de forma recursiva?"
#, c-format
msgid ""
@@ -2744,7 +2693,7 @@
msgstr ""
"Procés en segon pla:\n"
"El directori «%s» no està buit.\n"
-"El suprimeixo de forma recursiva?"
+"Voleu suprimir-lo de forma recursiva?"
msgid "Non&e"
msgstr "Ca&p"
@@ -2906,6 +2855,15 @@
msgid "(stalled)"
msgstr "(encallat)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Conserva'l"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2922,12 +2880,6 @@
"No s'ha pogut tancar el fitxer de destinació «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "S'ha recuperat un fitxer incomplet. Voleu conservar-lo?"
-
-msgid "&Keep"
-msgstr "&Conserva'l"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3016,7 +2968,7 @@
msgstr "Existent:"
msgid "Overwrite this file?"
-msgstr "Sobreescric aquest fitxer?"
+msgstr "Voleu sobreescriure aquest fitxer?"
msgid "A&ppend"
msgstr "A&nnexa"
@@ -3025,7 +2977,7 @@
msgstr "Reprè&n"
msgid "Overwrite all files?"
-msgstr "Sobreescric tots els fitxers?"
+msgstr "Voleu sobreescriure tots els fitxers?"
msgid "Don't overwrite with &zero length file"
msgstr "No sobreescriure amb un fitxer de longitud &zero"
@@ -3046,8 +2998,8 @@
msgstr "Procés en segon pla: El fitxer existeix"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Fitxers processats: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3074,8 +3026,8 @@
msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Total: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Origen"
@@ -3096,7 +3048,7 @@
msgstr "Segueix els en&llaços"
msgid "Preserve &attributes"
-msgstr "Mantèn els &atributs"
+msgstr "Mantén els &atributs"
msgid "Di&ve into subdir if exists"
msgstr "Su&bmergeix-te en els subdirectoris si existeixen"
@@ -3127,7 +3079,7 @@
msgstr "Format del &llistat..."
msgid "&Sort order..."
-msgstr "&Ordenació..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filtra..."
@@ -3141,11 +3093,8 @@
msgid "S&hell link..."
msgstr "Enllaç per a l'i&ntèrpret..."
-msgid "S&FTP link..."
-msgstr "Enllaç per a &SFTP..."
-
-msgid "SM&B link..."
-msgstr "Enllaç per a SM&B..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "&Quadre de cerca"
@@ -3202,7 +3151,7 @@
msgstr "Selecciona un &grup"
msgid "U&nselect group"
-msgstr "Deseleccio&na un grup"
+msgstr "Desseleccio&na un grup"
msgid "&Invert selection"
msgstr "&Inverteix la selecció"
@@ -3247,7 +3196,7 @@
msgstr "Favorits dels di&rectoris"
msgid "&Active VFS list"
-msgstr "Llista el VFS &activu"
+msgstr "Llista el VFS &actiu"
msgid "&Background jobs"
msgstr "Tasques en se&gon pla"
@@ -3297,8 +3246,8 @@
#, c-format
msgid "You have %zu opened screen. Quit anyway?"
msgid_plural "You have %zu opened screens. Quit anyway?"
-msgstr[0] "Teniu oberta %zu pantalla. Surto igualment?"
-msgstr[1] "Teniu obertes %zu pantalles. Surto igualment?"
+msgstr[0] "Teniu oberta %zu pantalla. Voleu sortir igualment?"
+msgstr[1] "Teniu obertes %zu pantalles. Voleu sortir igualment?"
msgid "The Midnight Commander"
msgstr "El Midnight Commander"
@@ -3331,7 +3280,7 @@
msgstr "ButtonBar|CreaDir"
msgid "&Chdir"
-msgstr "Canvia de &dirextori"
+msgstr "Canvia de dire&ctori"
msgid "&Again"
msgstr "Un &altre cop"
@@ -3358,6 +3307,9 @@
msgid "&Find recursively"
msgstr "&Troba de forma recursiva"
+msgid "Follow s&ymlinks"
+msgstr "Segueix els enllaços s&imbòlics"
+
msgid "S&kip hidden"
msgstr "O&met els ocults"
@@ -3486,7 +3438,7 @@
"Remove it?"
msgstr ""
"El grup «%s» no està buit.\n"
-"L'elimino?"
+"Voleu eliminar-lo?"
msgid "Hotlist Load"
msgstr "Carrega els favorits"
@@ -3524,8 +3476,8 @@
msgstr "No hi ha informació d'espai"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Espai lliure: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3599,7 +3551,7 @@
msgstr "Divisió &simètrica"
msgid "&Menubar visible"
-msgstr "Barra de &menú visible"
+msgstr "Barra de &menús visible"
msgid "Command &prompt"
msgstr "&Indicatiu d'ordres"
@@ -3769,6 +3721,9 @@
msgid "Unselect"
msgstr "No seleccionis"
+msgid "Filter"
+msgstr "Filtre"
+
msgid "Do you really want to execute?"
msgstr "Realment el voleu executar?"
@@ -3778,7 +3733,7 @@
msgid "User supplied format looks invalid, reverting to default."
msgstr ""
"El format facilitat per l'usuari sembla que no és vàlid, s'està tornant al "
-"format per defecte."
+"format predeterminat."
msgid "&Add new"
msgstr "Afegeix un &nou"
@@ -3798,11 +3753,23 @@
msgid "Enter command label:"
msgstr "Introduïu una etiqueta per a l'ordre:"
-msgid "Cannot invoke command."
-msgstr "No puc cridar l'ordre."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Quadre de cerca extern:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Ha fallat el tancament del conducte"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Quadre de cerca extern:\n"
+"Ha fallat en llegir les dades des de la sortida estàndard filla:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3826,7 +3793,7 @@
"Cannot open the %s file for writing:\n"
"%s\n"
msgstr ""
-"No s'ha pogut obrir el fitxer %s per escriptura:\n"
+"No s'ha pogut obrir el fitxer %s per a escriptura:\n"
"%s\n"
#, c-format
@@ -3847,7 +3814,7 @@
#, c-format
msgid "Delete %s?"
-msgstr "Suprimeixo %s?"
+msgstr "Voleu suprimir %s?"
msgid "ButtonBar|Static"
msgstr "ButtonBar|Estàtic"
@@ -3876,7 +3843,7 @@
msgstr "Error de format en el fitxer d'ajuda\n"
msgid "Internal bug: Double start of link area"
-msgstr "Error intern: Doble inici de l'àrea d''enllaç"
+msgstr "Error intern: Doble inici de l'àrea d'enllaç"
#, c-format
msgid "Cannot find node %s in help file"
@@ -3911,7 +3878,7 @@
"Per favor, premeu la tecla %s\n"
"i espereu fins que desaparegui aquest missatge.\n"
"\n"
-"Aleshores, premeu-la de nou per veure si\n"
+"Aleshores, premeu-la de nou per a veure si\n"
"apareix «D'acord» vora al seu botó.\n"
"\n"
"Si voleu sortir, premeu un cop la tecla\n"
@@ -3995,7 +3962,7 @@
msgstr "%b %e %Y"
msgid "%b %e %H:%M"
-msgstr "%b %e %H:%M"
+msgstr "%b %e %-H:%M"
#, c-format
msgid ""
@@ -4010,7 +3977,7 @@
msgstr "No s'ha pogut obrir la canonada anomenada %s\n"
msgid "The shell is still active. Quit anyway?"
-msgstr "L'intèrpret d'ordres encara està actiu. Surto de totes maneres?"
+msgstr "L'intèrpret d'ordres encara està actiu. Voleu sortir igualment?"
#, c-format
msgid "Warning: Cannot change to %s.\n"
@@ -4071,6 +4038,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Construïda amb ncursesw (versió desconeguda)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Construït amb libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Sistemes de fitxers virtuals:"
@@ -4135,7 +4106,7 @@
#, c-format
msgid "The %%var macro has no default"
-msgstr "La macro %%var no és la per defecte"
+msgstr "La macro %%var no és la predeterminada"
#, c-format
msgid "The %%var macro has no variable"
@@ -4171,7 +4142,7 @@
"in cpio archive\n"
"%s"
msgstr ""
-"Enllaços inconsistents de\n"
+"Enllaços incoherents de\n"
"%s\n"
"a l'arxiu cpio\n"
"%s"
@@ -4193,19 +4164,30 @@
"Unexpected end of file\n"
"%s"
msgstr ""
-"Fí de fitxer inesperat a\n"
+"Fi de fitxer inesperat a\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "L'arxiu TAR no és coherent"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
"No s'ha pogut obrir l'arxiu %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "L'arxiu extfs no és consistent"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de fitxers virtual EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4271,17 +4253,17 @@
#, c-format
msgid "ftpfs: Disconnecting from %s"
-msgstr "ftpfs: S'està desconnectant de %s"
+msgstr "FTPFS: S'està desconnectant de %s"
#, c-format
msgid "FTP: Password required for %s"
msgstr "FTP: contrasenya requerida per %s"
msgid "ftpfs: sending login name"
-msgstr "ftpfs: s'està enviant la identificació"
+msgstr "FTPFS: s'està enviant la identificació"
msgid "ftpfs: sending user password"
-msgstr "ftpfs: s'està enviant la contrasenya"
+msgstr "FTPFS: s'està enviant la contrasenya"
#, c-format
msgid "FTP: Account required for user %s"
@@ -4291,69 +4273,84 @@
msgstr "Compte:"
msgid "ftpfs: sending user account"
-msgstr "ftpfs: enviant compte d'usuari"
+msgstr "FTPFS: enviant compte d'usuari"
msgid "ftpfs: logged in"
-msgstr "ftpfs: connectat"
+msgstr "FTPFS: connectat"
#, c-format
msgid "ftpfs: Login incorrect for user %s "
-msgstr "ftpfs: La identificació per a l'usuari %s no és correcta"
+msgstr "FTPFS: La identificació per a l'usuari %s no és correcta "
msgid "ftpfs: Invalid host name."
-msgstr "ftpfs: El nom de l'amfitrió no és vàlid."
+msgstr "FTPFS: El nom de l'amfitrió no és vàlid."
#, c-format
msgid "ftpfs: %s"
-msgstr "ftpfs: %s"
+msgstr "FTPFS: %s"
#, c-format
msgid "ftpfs: making connection to %s"
-msgstr "ftpfs: s'està connectant amb %s"
+msgstr "FTPFS: s'està connectant amb %s"
msgid "ftpfs: connection interrupted by user"
-msgstr "ftpfs: l'usuari ha interromput la connexió"
+msgstr "FTPFS: l'usuari ha interromput la connexió"
#, c-format
msgid "ftpfs: connection to server failed: %s"
-msgstr "ftpfs: ha fallat la connexió amb el servidor: %s"
+msgstr "FTPFS: ha fallat la connexió amb el servidor: %s"
#, c-format
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Esperant abans d'insistir... %d (Ctrl-G per a cancel·lar)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "FTPFS: no s'ha pogut fer la traducció d'adreça a nom: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "FTPFS: s'intenta tornar a connectar amb el servidor, intenteu %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "FTPFS: no s'ha pogut obtenir el nom del sòcol: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "FTPFS: no s'ha pogut tornar a connectar amb el servidor"
+
msgid "ftpfs: invalid address family"
-msgstr "ftpfs: família d'adreces no vàlida"
+msgstr "FTPFS: família d'adreces no vàlida"
#, c-format
msgid "ftpfs: could not create socket: %s"
-msgstr "ftpfs: no s'ha pogut crear el sòcol: %s"
+msgstr "FTPFS: no s'ha pogut crear el sòcol: %s"
msgid "ftpfs: could not setup passive mode"
-msgstr "ftpfs: no s'ha pogut establir el mode passiu"
+msgstr "FTPFS: no s'ha pogut establir el mode passiu"
msgid "ftpfs: aborting transfer."
-msgstr "ftpfs: s'està interrompent la transferència."
+msgstr "FTPFS: s'està interrompent la transferència."
#, c-format
msgid "ftpfs: abort error: %s"
-msgstr "ftpfs: s'ha produït un error en interrompre: %s"
+msgstr "FTPFS: s'ha produït un error en interrompre: %s"
msgid "ftpfs: abort failed"
-msgstr "ftpfs: ha fallat en interrompre"
+msgstr "FTPFS: ha fallat en interrompre"
msgid "ftpfs: CWD failed."
-msgstr "ftpfs: ha fallat l'ordre CWD."
+msgstr "FTPFS: ha fallat l'ordre CWD."
msgid "ftpfs: couldn't resolve symlink"
-msgstr "ftpfs: no puc identificar l'enllaç simbòlic"
+msgstr "FTPFS: no puc identificar l'enllaç simbòlic"
msgid "Resolving symlink..."
msgstr "S'està identificant l'enllaç simbòlic..."
#, c-format
msgid "ftpfs: Reading FTP directory %s... %s%s"
-msgstr "ftpfs: S'està llegint el directori FTP %s... %s%s"
+msgstr "FTPFS: S'està llegint el directori FTP %s... %s%s"
msgid "(strict rfc959)"
msgstr "(rfc959 estricte)"
@@ -4362,10 +4359,10 @@
msgstr "(primer canvia de directori)"
msgid "ftpfs: failed; nowhere to fallback to"
-msgstr "ftpfs: ha fallat; enlloc per retornar-hi"
+msgstr "FTPFS: ha fallat; enlloc per a retornar-hi"
msgid "ftpfs: storing file"
-msgstr "ftpfs: s'està emmagatzemant el fitxer"
+msgstr "FTPFS: s'està emmagatzemant el fitxer"
msgid ""
"~/.netrc file has incorrect mode\n"
@@ -4375,6 +4372,14 @@
"Elimineu la contrasenya o el mode correcte"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de fitxers virtual SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Avís: no s'ha trobat el fitxer %s\n"
@@ -4408,6 +4413,11 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"SFTP: ha fallat en convertir l'adreça IP de l'amfitrió remot en format de "
+"text"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: s'està connectant amb %s"
@@ -4419,22 +4429,84 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: la connexió amb el servidor ha fallat: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "SFTP: ha trobat que la clau de l'amfitrió és de tipus no admès: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "SFTP: el tipus de clau de l'amfitrió és desconegut:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"S'ha afegit permanentment\n"
+"%s (%s)\n"
+"a la llista d'amfitrions coneguts."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "SFTP: No s'ha pogut obtenir la clau de l'amfitrió remot"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"SFTP: tipus de clau no admès, no es pot comprovar la clau de l'amfitrió remot"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+"SFTP: no es pot calcular el resum de l'empremta digital de la clau de "
+"l'amfitrió"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"L'autenticitat de l'amfitrió\n"
+"%s (%s)\n"
+"no es pot establir!\n"
+"La suma de l'empremta digital de la clau %s és\n"
+"SHA1:%s.\n"
+"Voleu afegir-la a la llista dels amfitrions coneguts i continuar amb la "
+"connexió?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"es troba a la llista dels amfitrions coneguts, però\n"
+"LES CLAUS NO COINCIDEIXEN! ES PODRIA TRACTAR D'UN ATAC «MITM»!\n"
+"Esteu segur que voleu afegir-lo a la llista dels amfitrions coneguts i "
+"continuar amb la connexió?"
+
+msgid "sftp: host key verification failed"
+msgstr "SFTP: ha fallat en verificar la clau de l'amfitrió"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
-msgstr "sftp: introduïu la frase de contrasenya per a %s "
+msgstr "sftp: introduïu la frase de pas per a %s "
msgid "sftp: Passphrase is empty."
-msgstr "sftp: la frase de contrasenya és buida."
+msgstr "sftp: la frase de pas està buida."
#, c-format
msgid "sftp: Enter password for %s "
msgstr "sftp: introduïu la contrasenya per a %s "
msgid "sftp: Password is empty."
-msgstr "sftp: la contrasenya és buida."
+msgstr "sftp: la contrasenya està buida."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: ha fallat en establir la sessió SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "SFTP: ha fallat en establir la sessió SSH"
msgid "sftp: No file handler data present for reading file"
msgstr ""
@@ -4452,33 +4524,6 @@
msgstr "sftp: el llistat s'ha completat."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "ha fallat la reconnexió amb %s"
-
-msgid "Authentication failed"
-msgstr "Ha fallat l'autenticació"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "S'ha produït l'error %s en crear el directori %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "S'ha produït l'error %s en suprimir el directori %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s està obrint el fitxer remot %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s està eliminant el fitxer remot %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s està reanomenant els fitxers\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
@@ -4487,10 +4532,10 @@
"%s"
msgid "Inconsistent tar archive"
-msgstr "L'arxiu TAR no és consistent"
+msgstr "L'arxiu TAR no és coherent"
msgid "Unexpected EOF on archive file"
-msgstr "Fí de fitxer inesperat al fitxer d'arxiu"
+msgstr "Fi de fitxer inesperat al fitxer d'arxiu"
#, c-format
msgid ""
@@ -4527,7 +4572,7 @@
msgstr "mentre es crida a ext2_block_iterate %d"
msgid "no more memory while reallocating array"
-msgstr "s'ha esgotat la memòria mentre és reassignaba la taula"
+msgstr "s'ha esgotat la memòria mentre és reassignava la taula"
#, c-format
msgid "while doing inode scan %d"
@@ -4563,7 +4608,7 @@
msgstr "vfs_info no és un FS!"
msgid "You have to chdir to extract files first"
-msgstr "Primer haureu de canviar el directori per extreure els fitxers"
+msgstr "Primer haureu de canviar al directori per a extreure els fitxers"
msgid "while iterating over blocks"
msgstr "mentre s'iterava entre els blocs"
@@ -4573,13 +4618,13 @@
msgstr "No s'ha pogut obrir el fitxer «%s»"
msgid "Ext2lib error"
-msgstr "Error de la ext2lib"
+msgstr "Error de la «ext2lib»"
msgid "Invalid value"
msgstr "Valor no vàlid"
msgid "File was modified. Save with exit?"
-msgstr "El fitxer ha estat modificat. El deso abans de sortir?"
+msgstr "El fitxer ha estat modificat. Voleu desar-lo abans de sortir?"
msgid "&Cancel quit"
msgstr "&Cancel·la la sortida"
@@ -4589,7 +4634,7 @@
"Save modified file?"
msgstr ""
"S'està sortint del Midnight Commander.\n"
-"Deso el fitxer modificat?"
+"Voleu desar el fitxer modificat?"
msgid "&Line number"
msgstr "Número de &línia"
@@ -4604,7 +4649,7 @@
msgstr "Desplaçament en He&xadecimal"
msgid "Goto"
-msgstr "Vés a"
+msgstr "Ves a"
msgid "ButtonBar|Ascii"
msgstr "ButtonBar|ASCII"
@@ -4622,7 +4667,7 @@
msgstr "ButtonBar|Hex"
msgid "ButtonBar|Goto"
-msgstr "ButtonBar|Vés a"
+msgstr "ButtonBar|Ves a"
msgid "ButtonBar|Raw"
msgstr "ButtonBar|RAW"
@@ -4641,7 +4686,7 @@
"Failed to read data from child stdout:\n"
"%s"
msgstr ""
-"Ha fallat en llegir les dades de la sortida estàndard filla:\n"
+"Ha fallat en llegir les dades des de la sortida estàndard filla:\n"
"%s"
#, c-format
@@ -4663,7 +4708,7 @@
"%s"
msgid "View: "
-msgstr "Visualitza:"
+msgstr "Visualitza: "
#, c-format
msgid ""
@@ -4688,7 +4733,7 @@
msgstr "Cerca finalitzada"
msgid "Continue from beginning?"
-msgstr "Continuo des del començament?"
+msgstr "Voleu continuar des del començament?"
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
msgstr ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/cs.po
^
|
@@ -4,19 +4,19 @@
#
# Translators:
# Jiří Vírava <appukonrad@gmail.com>, 2015,2017
-# k3dar <k3dar7@gmail.com>, 2020
+# kEdAR, 2020-2021
# Karel Kopecky <kdkopx@protonmail.com>, 2017
-# Pavel Borecki <pavel.borecki@gmail.com>, 2017-2020
+# Pavel Borecki <pavel.borecki@gmail.com>, 2017-2022
# Radek Valášek <valin@buchlovice.org>, 2014
# Robin Kriebel <kriebel.robin@gmail.com>, 2016
# Slava Zanko <slavazanko@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>, 2017-2022\n"
"Language-Team: Czech (http://www.transifex.com/mc/mc/language/cs/)\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
@@ -82,30 +82,6 @@
msgid "FATAL: not a directory:"
msgstr "FATÁLNÍ: není složkou:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Nastala chyba při stěhování uživatelských nastavení: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Vaše původní nastavení byla přestěhována z %s\n"
-"do složek dle doporučení Freedesktop.\n"
-"Další informace naleznete na\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Vaše původní nastavení byla přestěhována z %s\n"
-"do %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -194,12 +170,12 @@
msgid "True color not supported with ncurses."
msgstr "Knihovna ncurses nepodporuje 24 bitové barvy."
-msgid "True color not supported in this slang version."
-msgstr "24 bitové barvy nejsou podporovány v tomto nářečí."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Váš terminál pravděpodobně nepodporuje ani spektrum 256 barev."
+msgid "True color not supported in this slang version."
+msgstr "24 bitové barvy nejsou podporovány v tomto nářečí."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Nastavte COLORTERM=truecolor, pokud váš terminál skutečně podporuje spektrum "
@@ -561,6 +537,9 @@
"Nečekaná chyba v select() čtoucím data z podprocesu:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Nedaří se zavřít popisovač pajpy (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -569,18 +548,6 @@
"Neočekávaná chyba ve waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Varování"
-
-msgid "Pipe failed"
-msgstr "pipe() se nezdařilo"
-
-msgid "Dup failed"
-msgstr "dup() se nezdařilo"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Chyba při duplikaci staré chybové roury"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Platnost adresářové mezipaměti pro %s skončila"
@@ -706,12 +673,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Zapsat ftp dialog do zadaného souboru"
-msgid "Set debug level"
-msgstr "Nastavit stupeň podrobnosti ladících informací"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Otevře soubor v prohlížeči"
@@ -1045,15 +1006,6 @@
msgid "Two files are needed to compare"
msgstr "K porovnání jsou potřeba dva soubory"
-msgid "Choose syntax highlighting"
-msgstr "Vyberte zvýraznění syntaxe"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Znovu načíst aktuální syntaxi >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Načítání: %3d%%"
@@ -1088,6 +1040,9 @@
"Soubor „%s“ je příliš velký.\n"
"Přesto otevřít?"
+msgid "Warning"
+msgstr "Varování"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Chyba při čtení z roury: %s"
@@ -1096,14 +1051,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Nelze otevřít rouru pro čtení: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Hledání %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Hledání %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Soubor má pevné odkazy. Odpojit před uložením?"
@@ -1149,9 +1096,6 @@
msgid "Save As"
msgstr "Uložit jako"
-msgid "Collect completions"
-msgstr "Sbírat dokončení"
-
msgid "&Quick save"
msgstr "&Rychlé ukládání "
@@ -1182,27 +1126,6 @@
msgid "Cannot save file"
msgstr "Chyba při zápisu do souboru"
-msgid "Delete macro"
-msgstr "Smazat makro"
-
-msgid "Press macro hotkey:"
-msgstr "Stiskněte hotkey makra:"
-
-msgid "Macro not deleted"
-msgstr "Makro nebylo smazáno"
-
-msgid "Save macro"
-msgstr "Uložit makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Stiskněte novou hotkey pro makro:"
-
-msgid "Repeat last commands"
-msgstr "Opakovat poslední příkazy"
-
-msgid "Repeat times:"
-msgstr "Kolikrát opakovat:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Potvrďte uložení souboru: „%s“"
@@ -1237,13 +1160,6 @@
msgid "&Local"
msgstr "&Lokální"
-msgid "Replace"
-msgstr "Nahradit"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Provedeno %ld nahrazení"
-
msgid "[NoName]"
msgstr "[beze názvu]"
@@ -1299,8 +1215,8 @@
msgid "Run sort"
msgstr "Spustit třídění"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Zadejte předvolby pro třídění (viz man sort) oddělované mezerami:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr "Zadejte předvolby pro třídění (viz man sort(1) ) oddělované mezerami:"
msgid "Sort"
msgstr "Setřídit"
@@ -1352,35 +1268,35 @@
"Tento text byl změněn, ale změny nebyly uloženy.\n"
"Pokračováním se změny ztratí."
-msgid "In se&lection"
-msgstr "&Ve výběru"
+msgid "Cancel"
+msgstr "Storno"
-msgid "&Find all"
-msgstr "&Najít všechny"
+msgid "Collect completions"
+msgstr "Sbírat dokončení"
-msgid "Enter replacement string:"
-msgstr "Zadejte nahrazující text:"
+msgid "NoName"
+msgstr "Beze názvu"
-msgid "Replace with:"
-msgstr "Nahradit textem:"
+msgid "Save macro"
+msgstr "Uložit makro"
-msgid "&Replace"
-msgstr "Nah&radit"
+msgid "Press the macro's new hotkey:"
+msgstr "Stiskněte novou hotkey pro makro:"
-msgid "A&ll"
-msgstr "&Všechny"
+msgid "Delete macro"
+msgstr "Smazat makro"
-msgid "&Skip"
-msgstr "Pře&skočit"
+msgid "Press macro hotkey:"
+msgstr "Stiskněte hotkey makra:"
-msgid "Confirm replace"
-msgstr "Potvrdit nahrazení"
+msgid "Macro not deleted"
+msgstr "Makro nebylo smazáno"
-msgid "Cancel"
-msgstr "Storno"
+msgid "Repeat last commands"
+msgstr "Opakovat poslední příkazy"
-msgid "NoName"
-msgstr "Beze názvu"
+msgid "Repeat times:"
+msgstr "Kolikrát opakovat:"
msgid "&Open file..."
msgstr "&Otevřít soubor…"
@@ -1670,6 +1586,45 @@
msgid "Editor options"
msgstr "Nastavení editoru"
+msgid "In se&lection"
+msgstr "&Ve výběru"
+
+msgid "&Find all"
+msgstr "&Najít všechny"
+
+msgid "Enter replacement string:"
+msgstr "Zadejte nahrazující text:"
+
+msgid "Replace"
+msgstr "Nahradit"
+
+msgid "Replace with:"
+msgstr "Nahradit textem:"
+
+msgid "&Replace"
+msgstr "Nah&radit"
+
+msgid "A&ll"
+msgstr "&Všechny"
+
+msgid "&Skip"
+msgstr "Pře&skočit"
+
+msgid "Confirm replace"
+msgstr "Potvrdit nahrazení"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Hledání %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Hledání %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Provedeno %ld nahrazení"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1677,8 +1632,8 @@
"Uživatelsky přívětivý textový editor\n"
"napsaný pro Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Autorská práva © 1996-2020 nadace Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Autorská práva © 1996-2022 nadace Free Software Foundation"
msgid "About"
msgstr "O programu"
@@ -1797,6 +1752,15 @@
msgid "Select language"
msgstr "Výběr jazyka"
+msgid "Choose syntax highlighting"
+msgstr "Vyberte zvýraznění syntaxe"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Znovu načíst aktuální syntaxi >"
+
msgid "Load syntax file"
msgstr "Načíst soubor se syntaxí"
@@ -1991,7 +1955,7 @@
msgstr "Schéma vzhledu:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Stíny"
msgid "Appearance"
msgstr "Vzhled"
@@ -2204,19 +2168,6 @@
msgstr "Úlohy na pozadí"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Heslo pro \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Doména:"
-
-msgid "Username:"
-msgstr "Uživatelské jméno:"
-
-msgid "SMB authentication"
-msgstr "SMB ověření"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2285,7 +2236,7 @@
msgstr "Nepoužít kopírování při zápisu (CoW)"
msgid "Direct access for files"
-msgstr ""
+msgstr "Přímý přístup pro soubory"
msgid "Casefolded file"
msgstr "Casefolded file"
@@ -2426,12 +2377,6 @@
msgid "Cannot change directory"
msgstr "Nedaří se přejít do složky"
-msgid "Filter"
-msgstr "Filtr"
-
-msgid "Set expression for filtering filenames"
-msgstr "Zadejte masku pro filtrování názvů souborů"
-
#, c-format
msgid "Link %s to:"
msgstr "Odkaz %s do:"
@@ -2537,9 +2482,6 @@
msgid "Shell link to machine"
msgstr "Shellové spojení na počítač"
-msgid "SMB link to machine"
-msgstr "SMB spojení na počítač"
-
msgid "Undelete files on an ext2 file system"
msgstr "Obnovit soubory na souborovém systému typu ext2"
@@ -2580,17 +2522,30 @@
"Nedaří se vytvořit dočasný příkazový soubor\n"
"%s"
+msgid "Pipe failed"
+msgstr "pipe() se nezdařilo"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Máte zastaralý soubor %s.\n"
+"Midnight Commander nyní používá soubor %s.\n"
+"Zkopírujte si své úpravy původního souboru do toho nového."
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s chyba souboru"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formát souboru %smc.ext byl upraven verzí 3.0. Zdá se, že instalace se "
+"Formát souboru %s%s byl upraven verzí 4.0. Zdá se, že instalace se "
"nezdařila. Nahrajte si novou aktuální kopii z balíčku s Midnight Commander."
#, c-format
@@ -2599,10 +2554,10 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formát %s souboru se s verzí 3.0 změnil. Můžete buď zkopírovat z %smc.ext "
+"Formát %s souboru se s verzí 4.0 změnil. Můžete ho buď zkopírovat z %s%s "
"nebo tento soubor použít jako ukázku jak ho napsat."
msgid "DialogTitle|Copy"
@@ -2898,6 +2853,15 @@
msgid "(stalled)"
msgstr "(zamrzlo)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Ponechat"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2914,12 +2878,6 @@
"Nelze zavřít cílový soubor „%s“\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Získaný soubor není kompletní. Přesto uložit?"
-
-msgid "&Keep"
-msgstr "&Ponechat"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3038,8 +2996,8 @@
msgstr "Proces na pozadí: soubor existuje"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Zpracované soubory: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3066,8 +3024,8 @@
msgstr " Celkem: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr "Celkem: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Zdroj"
@@ -3119,7 +3077,7 @@
msgstr "&Formát výpisu…"
msgid "&Sort order..."
-msgstr "&Pořadí…"
+msgstr "&Pořadí řazení…"
msgid "&Filter..."
msgstr "&Filtr…"
@@ -3133,11 +3091,8 @@
msgid "S&hell link..."
msgstr "S&hell spojení…"
-msgid "S&FTP link..."
-msgstr "SFTP sp&ojení…"
-
-msgid "SM&B link..."
-msgstr "SM&B spojení…"
+msgid "SFTP li&nk..."
+msgstr "&SFTP odkaz…"
msgid "Paneli&ze"
msgstr "Zobra&zit v panelu"
@@ -3352,6 +3307,9 @@
msgid "&Find recursively"
msgstr "&Hledat i v podsložkách"
+msgid "Follow s&ymlinks"
+msgstr "Následovat symbolické odkaz&y"
+
msgid "S&kip hidden"
msgstr "Přes&kočit skryté"
@@ -3520,8 +3478,8 @@
msgstr "Informace o využití prostoru nejsou k dispozici"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Volné místo: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3769,6 +3727,9 @@
msgid "Unselect"
msgstr "Zrušit výběr"
+msgid "Filter"
+msgstr "Filtr"
+
msgid "Do you really want to execute?"
msgstr "Opravdu chcete spustit?"
@@ -3796,11 +3757,23 @@
msgid "Enter command label:"
msgstr "Zadejte označení příkazu:"
-msgid "Cannot invoke command."
-msgstr "Příkaz se nedaří vyvolat."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Externí panelizace:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Rouru (pipe) se nepodařilo zavřít"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Externí panelizace:\n"
+"nepodařilo se číst data ze std. výstupu podříz. procesu:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Při práci se složkou, která není místní, není možné zobrazit v panelu"
@@ -4068,6 +4041,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Sestaveno s využitím ncursesw (neznámá verze)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Sestaveno s libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Virtuální souborové systémy:"
@@ -4193,16 +4170,27 @@
"Soubor neočekávaně končí\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Nekonzistentní archiv .tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Nedaří se otevřít %s archiv\n"
+"Nepodařilo se otevřít %s archiv\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Poškozený extfs archiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuální souborový systém EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4319,6 +4307,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Čekání na opakovaný pokus… %d (Storno CTRL+G)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: nepodařilo se přeložit adresu na název: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: pokus o připojení k serveru, pokus %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: nepodařilo se získat název soketu: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: nepodařilo se opětovně připojit k serveru"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: neplatná generace adresy"
@@ -4372,6 +4375,14 @@
"Odstraňte heslo nebo změňte práva"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuální souborový systém SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Varování: soubor %s nenalezen\n"
@@ -4405,6 +4416,10 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: nepodařilo se převést IP adresu vzdáleného hostitele do textové podoby"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: navazování spojení s %s"
@@ -4416,6 +4431,66 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: připojování k serveru se nezdařilo: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: nalezeny klíče hostitele nepodporovaného typu: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: neznámý typ klíče hostitele"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"%s (%s) trvale\n"
+"přidáno do seznamu\n"
+"známých hostitelů."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: nepodařilo se získat klíč vzdáleného hostitele"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: nepodporovaný typ klíče – není možné zkontrolovat klíč vzdáleného "
+"hostitele"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: nepodařilo se spočítat hash otisku klíče hostitele"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Nepodvrženost hostitele\n"
+"%s (%s)\n"
+"se nepodařilo ověřit!\n"
+"hash otisku klíče %s je\n"
+"SHA1:%s.\n"
+"Chcete ho přidat na seznam známých hostitelů a pokračovat v připojování?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"je nalezeno na seznamu známých hostitelů ale\n"
+"KLÍČE SE NESHODUJÍ! TOTO BY MOHL BÝT ÚTOK TYPU „ČLOVĚK UPROSTŘED!“\n"
+"Opravdu ho chcete přidat do seznamu známých hostitelů a pokračovat v "
+"připojování?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: ověření klíče hostitele se nezdařilo"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Zadejte heslo pro %s "
@@ -4430,8 +4505,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Heslo není vyplněné."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Nepodařilo se navázat SSH sezení"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: nepodařilo se navázat SSH relaci"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Není přítomen žádný obslužný program pro čtení souboru"
@@ -4448,33 +4523,6 @@
msgstr "sftp: Vypsání dokončeno."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "obnovení připojení k %s se nezdařilo"
-
-msgid "Authentication failed"
-msgstr "Ověření se nezdařilo"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Chyba %s při vytváření složky %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Chyba %s při odstraňování složky %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s otevírání vzdáleného souboru %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s odstraňování vzdáleného souboru %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s přejmenování souborů\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/da.po
^
|
@@ -12,10 +12,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: scootergrisen, 2018-2020\n"
"Language-Team: Danish (http://www.transifex.com/mc/mc/language/da/)\n"
"Language: da\n"
"MIME-Version: 1.0\n"
@@ -80,31 +80,6 @@
msgid "FATAL: not a directory:"
msgstr "KRITISK: Ikke en mappe:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Der opstod en fejl ved flytning af brugerindstillinger: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Dine gamle indstillinger blev flyttet fra %s\n"
-"til mapper anbefalet af Freedesktop.\n"
-"Besøg venligst http://standards.freedesktop.org/basedir-spec/basedir-spec-"
-"latest.html\n"
-"for mere information"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Dine gamle indstillinger blev flyttet fra %s\n"
-"til %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -192,12 +167,12 @@
msgid "True color not supported with ncurses."
msgstr "Ægte farver understøttes ikke med ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Ægte farver understøttes ikke i denne version af slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Din terminal ser ikke ud til at understøtte 256 farver."
+msgid "True color not supported in this slang version."
+msgstr "Ægte farver understøttes ikke i denne version af slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Sæt COLORTERM=truecolor hvis din terminal virkeligt understøtter ægte farver."
@@ -558,6 +533,9 @@
"Uventet fejl i select() læser data fra en underproces:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -566,18 +544,6 @@
"Uventet fejl i waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Advarsel"
-
-msgid "Pipe failed"
-msgstr "Datakanal fejlede"
-
-msgid "Dup failed"
-msgstr "Dup fejlede"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Fejl ved dupning af gammel fejldatakanal"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Mellemlagermappe udløbet for %s"
@@ -703,12 +669,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Gem ftp-dialog i angivet fil"
-msgid "Set debug level"
-msgstr "Angiv fejlsøgningsniveau"
-
-msgid "<integer>"
-msgstr "<heltal>"
-
msgid "Launches the file viewer on a file"
msgstr "Bruger filfremviseren på en fil"
@@ -1042,15 +1002,6 @@
msgid "Two files are needed to compare"
msgstr "To filer kræves for sammenligning"
-msgid "Choose syntax highlighting"
-msgstr "Vælg syntaksfremhævelse"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Genindlæs aktuel syntaks >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Indlæser: %3d%%"
@@ -1085,6 +1036,9 @@
"Filen »%s« er for stor.\n"
"Åbn den alligevel?"
+msgid "Warning"
+msgstr "Advarsel"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Der opstod en fejl under læsning fra datakanal: %s"
@@ -1093,14 +1047,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Kan ikke åbne datakanal til læsning: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Søger %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Søger i %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Fil har hårde henvisninger. Frigør før der gemmes?"
@@ -1146,9 +1092,6 @@
msgid "Save As"
msgstr "Gem som"
-msgid "Collect completions"
-msgstr "Indsaml fuldførelser"
-
msgid "&Quick save"
msgstr "&Hurtiggem"
@@ -1179,27 +1122,6 @@
msgid "Cannot save file"
msgstr "Kan ikke gemme fil"
-msgid "Delete macro"
-msgstr "Slet makro"
-
-msgid "Press macro hotkey:"
-msgstr "Tast makrogenvej:"
-
-msgid "Macro not deleted"
-msgstr "Makro blev ikke slettet"
-
-msgid "Save macro"
-msgstr "Gem makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Tast makroens nye genvej:"
-
-msgid "Repeat last commands"
-msgstr "Gentag de sidste kommandoer"
-
-msgid "Repeat times:"
-msgstr "Gentag antal gange:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Bekræft gemning af fil: »%s«"
@@ -1234,13 +1156,6 @@
msgid "&Local"
msgstr "&Lokal"
-msgid "Replace"
-msgstr "Erstat"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld erstatninger foretaget"
-
msgid "[NoName]"
msgstr "[IntetNavn]"
@@ -1296,8 +1211,8 @@
msgid "Run sort"
msgstr "Udfør sortering"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Indtast sorteringsindstillinger (se manualside) adskilt af mellemrum:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Sortér"
@@ -1349,35 +1264,35 @@
"Aktuel tekst blev ændret uden en filgemning.\n"
"Fortsæt med at ændre disse ændringer."
-msgid "In se&lection"
-msgstr "I &markering"
+msgid "Cancel"
+msgstr "Annuller"
-msgid "&Find all"
-msgstr "&Find alle"
+msgid "Collect completions"
+msgstr "Indsaml fuldførelser"
-msgid "Enter replacement string:"
-msgstr "Indtast erstatningsstreng:"
+msgid "NoName"
+msgstr "IntetNavn"
-msgid "Replace with:"
-msgstr "Erstat med:"
+msgid "Save macro"
+msgstr "Gem makro"
-msgid "&Replace"
-msgstr "&Erstat"
+msgid "Press the macro's new hotkey:"
+msgstr "Tast makroens nye genvej:"
-msgid "A&ll"
-msgstr "A&lle"
+msgid "Delete macro"
+msgstr "Slet makro"
-msgid "&Skip"
-msgstr "&Spring over"
+msgid "Press macro hotkey:"
+msgstr "Tast makrogenvej:"
-msgid "Confirm replace"
-msgstr "Bekræft erstatning"
+msgid "Macro not deleted"
+msgstr "Makro blev ikke slettet"
-msgid "Cancel"
-msgstr "Annuller"
+msgid "Repeat last commands"
+msgstr "Gentag de sidste kommandoer"
-msgid "NoName"
-msgstr "IntetNavn"
+msgid "Repeat times:"
+msgstr "Gentag antal gange:"
msgid "&Open file..."
msgstr "&Åbn fil..."
@@ -1667,6 +1582,45 @@
msgid "Editor options"
msgstr "Indstillinger for editor"
+msgid "In se&lection"
+msgstr "I &markering"
+
+msgid "&Find all"
+msgstr "&Find alle"
+
+msgid "Enter replacement string:"
+msgstr "Indtast erstatningsstreng:"
+
+msgid "Replace"
+msgstr "Erstat"
+
+msgid "Replace with:"
+msgstr "Erstat med:"
+
+msgid "&Replace"
+msgstr "&Erstat"
+
+msgid "A&ll"
+msgstr "A&lle"
+
+msgid "&Skip"
+msgstr "&Spring over"
+
+msgid "Confirm replace"
+msgstr "Bekræft erstatning"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Søger %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Søger i %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld erstatninger foretaget"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1674,8 +1628,8 @@
"En brugervenlig teksteditor\n"
"skrevet til Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Ophavsret (C) 1996-2020 Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "Om"
@@ -1794,6 +1748,15 @@
msgid "Select language"
msgstr "Vælg sprog"
+msgid "Choose syntax highlighting"
+msgstr "Vælg syntaksfremhævelse"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Genindlæs aktuel syntaks >"
+
msgid "Load syntax file"
msgstr "Indlæs syntaksfil"
@@ -2201,19 +2164,6 @@
msgstr "Baggrundsjobs"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Adgangskode for \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domæne:"
-
-msgid "Username:"
-msgstr "Brugernavn:"
-
-msgid "SMB authentication"
-msgstr "SMB-godkendelse"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2423,12 +2373,6 @@
msgid "Cannot change directory"
msgstr "Kunne ikke skifte mappe"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr "Angiv udtryk til filtrering af filnavne"
-
#, c-format
msgid "Link %s to:"
msgstr "Henvis %s til:"
@@ -2534,9 +2478,6 @@
msgid "Shell link to machine"
msgstr "Skalhenvisning til maskine"
-msgid "SMB link to machine"
-msgstr "SMB-henvisning til maskine"
-
msgid "Undelete files on an ext2 file system"
msgstr "Gendan filer på et ext2-filsystem"
@@ -2575,18 +2516,26 @@
"Kan ikke oprette midlertidig kommandofil\n"
"%s"
+msgid "Pipe failed"
+msgstr "Datakanal fejlede"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s-filfejl"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formatet på filen %smc.ext er ændret med version 3.0. Installationen ser ud "
-"til at have fejlet. Hent venligst en ny kopi fra Midnight Commander-pakken."
#, c-format
msgid "%s file error"
@@ -2594,11 +2543,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formatet af %s-filen blev skiftet i version 3.0. Du kan enten kopiere den "
-"fra %smc.ext eller bruge filen som et eksempel på hvordan den skrives."
msgid "DialogTitle|Copy"
msgstr "Kopiér"
@@ -2893,6 +2840,15 @@
msgid "(stalled)"
msgstr "(venter)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Behold"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2909,12 +2865,6 @@
"Kan ikke lukke målfil »%s«\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "En fil der ikke er komplet blev hentet ned. Behold den?"
-
-msgid "&Keep"
-msgstr "&Behold"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3033,8 +2983,8 @@
msgstr "Baggrundproces: Fil findes"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Filer behandlet: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3061,8 +3011,8 @@
msgstr " Samlet: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Samlet: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Kilde"
@@ -3114,7 +3064,7 @@
msgstr "&Listeformat..."
msgid "&Sort order..."
-msgstr "&Sorteringsrækkefølge..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filter..."
@@ -3128,11 +3078,8 @@
msgid "S&hell link..."
msgstr "S&kalhenvisning..."
-msgid "S&FTP link..."
-msgstr "S&FTP-link..."
-
-msgid "SM&B link..."
-msgstr "SM&B-henvisning..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Paneli&sér"
@@ -3345,6 +3292,9 @@
msgid "&Find recursively"
msgstr "&Find rekursivt"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "S&pring skjulte over"
@@ -3511,8 +3461,8 @@
msgstr "Ingen pladsinformation"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Ledig plads: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3756,6 +3706,9 @@
msgid "Unselect"
msgstr "Fravælg"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Ønsker du virkelig at køre?"
@@ -3783,11 +3736,18 @@
msgid "Enter command label:"
msgstr "Indtast kommandoetiket:"
-msgid "Cannot invoke command."
-msgstr "Kan ikke udføre kommando."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Fejl under lukning af datakanal"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Kan ikke køre ekstern panelisering i en mappe, der ikke er lokal"
@@ -4054,6 +4014,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Bygget med ncursesw (ukendt version)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtuelle filsystemer:"
@@ -4179,16 +4143,22 @@
"Uventet EOF\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inkonsistent tar-arkiv"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Kunne ikke åbne arkivet %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inkonsistent extfs-arkiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4304,6 +4274,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Venter på at prøve igen... %d (Control-G for at annullere)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: Ugyldig adressefamilie"
@@ -4357,6 +4342,12 @@
"Fjern adgangskode eller tilpas tilstand"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Advarsel: filen %s blev ikke fundet\n"
@@ -4390,6 +4381,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: opretter forbindelse til %s"
@@ -4401,6 +4395,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: forbindelse til server mislykkedes: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Indtast adgangskode til %s "
@@ -4415,8 +4453,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Adgangskoden er tom."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Kunne ikke etablere SSH-session"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Ingen tilgængelig filbehandlerdata til læsning af fil"
@@ -4433,33 +4471,6 @@
msgstr "sftp: Liste færdig."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "gentilkobling til %s fejlede"
-
-msgid "Authentication failed"
-msgstr "Godkendelse fejlede"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Fejl %s under oprettelse af mappe %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Fejl %s under fjernelse af mappe %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s åbner ekstern fil %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s fjerner ekstern fil %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s omdøber filer\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/de.po
^
|
@@ -5,7 +5,7 @@
# Translators:
# Atha Translate, 2016
# cheese <cheese@nosuchhost.net>, 2016
-# Ettore Atalan <atalanttore@googlemail.com>, 2015-2021
+# Ettore Atalan <atalanttore@googlemail.com>, 2015-2022
# Fabian Affolter <fab@fedoraproject.org>, 2012-2013
# Johannes Hellmuth <johannes.hellmuth@gmail.com>, 2020
# Karsten <waldstadt@web.de>, 2016
@@ -19,10 +19,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2021-01-01 17:46+0000\n"
-"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>, 2015-2022\n"
"Language-Team: German (http://www.transifex.com/mc/mc/language/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@@ -87,32 +87,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: kein Verzeichnis:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-"Während der Migration der Benutzereinstellungen ist ein Fehler aufgetreten: "
-"%s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Ihre alten Einstellungen wurden von %s\n"
-"in die von Freedesktop empfohlenen Verzeichnisse migriert.\n"
-"Besuchen Sie für weitere Informationen\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Ihre alten Einstellungen wurden von %s\n"
-"nach %s migriert\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -203,12 +177,12 @@
msgid "True color not supported with ncurses."
msgstr "Echte Farben werden mit ncurses nicht unterstützt."
-msgid "True color not supported in this slang version."
-msgstr "Echte Farben werden in dieser Slangversion nicht unterstützt."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Ihr Terminal scheint nicht einmal 256 Farben zu unterstützen."
+msgid "True color not supported in this slang version."
+msgstr "Echte Farben werden in dieser Slangversion nicht unterstützt."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Legen Sie COLORTERM=truecolor fest, wenn Ihr Terminal echte Farben "
@@ -571,6 +545,9 @@
"Prozess:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -579,18 +556,6 @@
"Unerwarteter Fehler in waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Warnung"
-
-msgid "Pipe failed"
-msgstr "Pipe fehlgeschlagen"
-
-msgid "Dup failed"
-msgstr "Dup fehlgeschlagen"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Fehler beim Lesen aus einer älteren Fehler-Pipe"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Verzeichniscache abgelaufen für %s"
@@ -717,12 +682,6 @@
msgid "Log ftp dialog to specified file"
msgstr "FTP-Dialog in die angegebene Datei protokollieren"
-msgid "Set debug level"
-msgstr "Debugging-Level setzen"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Startet den Ansichtsmodus für eine Datei"
@@ -1059,15 +1018,6 @@
msgid "Two files are needed to compare"
msgstr "Zum Vergleich werden zwei Dateien benötigt"
-msgid "Choose syntax highlighting"
-msgstr "Syntaxhervorhebung auswählen"
-
-msgid "< Auto >"
-msgstr "< Automatisch >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Aktuelle Hervorhebung neu laden >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Ladevorgang: %3d%%"
@@ -1102,6 +1052,9 @@
"Datei \"%s\" ist zu groß.\n"
"Trotzdem öffnen?"
+msgid "Warning"
+msgstr "Warnung"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Fehler beim Lesen aus einer Pipe: %s"
@@ -1110,14 +1063,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Kann Pipe zum Lesen nicht öffnen: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Suchvorgang %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Suche %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
"Die Datei ist statisch verlinkt. Diesen Link vor dem Speichern entfernen?"
@@ -1164,9 +1109,6 @@
msgid "Save As"
msgstr "Speichern unter"
-msgid "Collect completions"
-msgstr "Fertigstellungen zusammentragen"
-
msgid "&Quick save"
msgstr "&Schnelles Speichern "
@@ -1197,27 +1139,6 @@
msgid "Cannot save file"
msgstr "Kann Datei nicht speichern"
-msgid "Delete macro"
-msgstr "Makro löschen"
-
-msgid "Press macro hotkey:"
-msgstr "Drücken Sie einen Makro-Hotkey:"
-
-msgid "Macro not deleted"
-msgstr "Makro nicht gelöscht"
-
-msgid "Save macro"
-msgstr "Makro speichern"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Den neuen Hotkey des Makros drücken:"
-
-msgid "Repeat last commands"
-msgstr "Letzten Befehl wiederholen"
-
-msgid "Repeat times:"
-msgstr "Anzahl Wiederholungen:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Speichern der Datei \"%s\" bestätigen"
@@ -1252,13 +1173,6 @@
msgid "&Local"
msgstr "&Lokal"
-msgid "Replace"
-msgstr "Ersetzen"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld Ersetzung(en) durchgeführt."
-
msgid "[NoName]"
msgstr "[KeinName]"
@@ -1314,8 +1228,8 @@
msgid "Run sort"
msgstr "Sortierung ausführen"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Sortieroptionen eingeben, mit Leerzeichen getrennt (siehe Man-Page):"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Sortieren"
@@ -1367,35 +1281,35 @@
"Dieser Text wurde ohne zu speichern geändert.\n"
"Wenn Sie fortfahren, werden diese Änderungen verworfen."
-msgid "In se&lection"
-msgstr "In der Auswah&l"
+msgid "Cancel"
+msgstr "Abbrechen"
-msgid "&Find all"
-msgstr "Alles &finden"
+msgid "Collect completions"
+msgstr "Fertigstellungen zusammentragen"
-msgid "Enter replacement string:"
-msgstr "Ersatzstring eingeben:"
+msgid "NoName"
+msgstr "NoName"
-msgid "Replace with:"
-msgstr "Ersetzen mit:"
+msgid "Save macro"
+msgstr "Makro speichern"
-msgid "&Replace"
-msgstr "E&rsetzen"
+msgid "Press the macro's new hotkey:"
+msgstr "Den neuen Hotkey des Makros drücken:"
-msgid "A&ll"
-msgstr "A&lle"
+msgid "Delete macro"
+msgstr "Makro löschen"
-msgid "&Skip"
-msgstr "Über&springen"
+msgid "Press macro hotkey:"
+msgstr "Drücken Sie einen Makro-Hotkey:"
-msgid "Confirm replace"
-msgstr "Ersetzen bestätigen"
+msgid "Macro not deleted"
+msgstr "Makro nicht gelöscht"
-msgid "Cancel"
-msgstr "Abbrechen"
+msgid "Repeat last commands"
+msgstr "Letzten Befehl wiederholen"
-msgid "NoName"
-msgstr "NoName"
+msgid "Repeat times:"
+msgstr "Anzahl Wiederholungen:"
msgid "&Open file..."
msgstr "Datei ö&ffnen..."
@@ -1685,6 +1599,45 @@
msgid "Editor options"
msgstr "Editoroptionen"
+msgid "In se&lection"
+msgstr "In der Auswah&l"
+
+msgid "&Find all"
+msgstr "Alles &finden"
+
+msgid "Enter replacement string:"
+msgstr "Ersatzstring eingeben:"
+
+msgid "Replace"
+msgstr "Ersetzen"
+
+msgid "Replace with:"
+msgstr "Ersetzen mit:"
+
+msgid "&Replace"
+msgstr "E&rsetzen"
+
+msgid "A&ll"
+msgstr "A&lle"
+
+msgid "&Skip"
+msgstr "Über&springen"
+
+msgid "Confirm replace"
+msgstr "Ersetzen bestätigen"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Suchvorgang %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Suche %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld Ersetzung(en) durchgeführt."
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1692,8 +1645,8 @@
"Ein benutzerfreundlicher Texteditor,\n"
"geschrieben für Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "Über"
@@ -1812,6 +1765,15 @@
msgid "Select language"
msgstr "Sprache auswählen"
+msgid "Choose syntax highlighting"
+msgstr "Syntaxhervorhebung auswählen"
+
+msgid "< Auto >"
+msgstr "< Automatisch >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Aktuelle Hervorhebung neu laden >"
+
msgid "Load syntax file"
msgstr "Syntaxdatei laden"
@@ -2217,19 +2179,6 @@
msgstr "Hintergrundaufgaben"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Passwort für \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domain:"
-
-msgid "Username:"
-msgstr "Benutzername:"
-
-msgid "SMB authentication"
-msgstr "SMB-Authentifikation"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2439,12 +2388,6 @@
msgid "Cannot change directory"
msgstr "Konnte Verzeichnis nicht wechseln"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr "Ausdruck zum Filtern von Dateinamen setzen"
-
#, c-format
msgid "Link %s to:"
msgstr "Link %s zu:"
@@ -2550,9 +2493,6 @@
msgid "Shell link to machine"
msgstr "Shell-Verbindung zu Server"
-msgid "SMB link to machine"
-msgstr "SMB-Verbindung zu Server"
-
msgid "Undelete files on an ext2 file system"
msgstr "Löschen von Dateien auf einem Ext2-Dateisystem rückgängig machen"
@@ -2591,19 +2531,26 @@
"Kann temporäre Befehlsdatei nicht erstellen\n"
"%s"
+msgid "Pipe failed"
+msgstr "Pipe fehlgeschlagen"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " Fehler in der Datei %s%s "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Das Format der Datei \"%smc.ext\" hat sich in Version 3.0 geändert. Die "
-"Installation scheint fehlgeschlagen. Bitte holen Sie sich eine frische Kopie "
-"aus dem \"Midnight Commander\"-Paket."
#, c-format
msgid "%s file error"
@@ -2611,12 +2558,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Das Format der Datei %s hat sich mit Version 3.0 geändert. Entweder eine "
-"Kopie von %smc.ext erstellen oder diese Datei als Vorlage für eigene "
-"Einstellungen verwenden."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopieren"
@@ -2911,6 +2855,15 @@
msgid "(stalled)"
msgstr "(blockiert)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Behalten"
+
+msgid "&Continue copy"
+msgstr "Kopieren &fortsetzen"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2927,12 +2880,6 @@
"Kann Zieldatei \"%s\" nicht schließen\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Unvollständige Datei empfangen. Behalten?"
-
-msgid "&Keep"
-msgstr "&Behalten"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3051,8 +2998,8 @@
msgstr "Hintergrundprozess: Datei schon vorhanden"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Verarbeitete Dateien: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Verarbeitete Dateien: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3076,11 +3023,11 @@
#, c-format
msgid " Total: %s "
-msgstr " Total: %s "
+msgstr " Insgesamt: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Total: %s/%s "
+msgid " Total: %s / %s "
+msgstr " Insgesamt: %s / %s "
msgid "Source"
msgstr "Quelle"
@@ -3146,11 +3093,8 @@
msgid "S&hell link..."
msgstr "S&hell-Verbindung..."
-msgid "S&FTP link..."
-msgstr "S&FTP-Verbindung..."
-
-msgid "SM&B link..."
-msgstr "S&MB-Verbindung..."
+msgid "SFTP li&nk..."
+msgstr "SFTP-Verbi&ndung..."
msgid "Paneli&ze"
msgstr "Anordnen"
@@ -3363,6 +3307,9 @@
msgid "&Find recursively"
msgstr "Rek&ursiv durchsuchen"
+msgid "Follow s&ymlinks"
+msgstr "S&ymlinks folgen"
+
msgid "S&kip hidden"
msgstr "Versteckte überspringen"
@@ -3529,8 +3476,8 @@
msgstr "Keine Information über Speicherplatz"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Freier Platz: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Freier Platz: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3774,6 +3721,9 @@
msgid "Unselect"
msgstr "Deselektieren"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Möchten Sie wirklich ausführen?"
@@ -3801,11 +3751,20 @@
msgid "Enter command label:"
msgstr "Kommandobezeichnung eingeben:"
-msgid "Cannot invoke command."
-msgstr "Kann Befehl nicht aufrufen."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Externes Anordnen:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Schließen der Pipe fehlgeschlagen"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -4071,6 +4030,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Gebaut mit ncursesw (unbekannte Version)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Gebaut mit libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Virtuelles Dateisystem:"
@@ -4198,16 +4161,27 @@
"Unerwartetes Ende der Datei\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inkonsistentes tar-Archiv"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
"Kann Archiv %s nicht öffnen\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inkonsistentes extfs-Archiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuelles Dateisystem EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4325,6 +4299,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Warte bis zum nächsten Versuch... %d (Strg+G zum Abbrechen)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: Verbindung zum Server konnte nicht wiederhergestellt werden"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: Ungültige Rechneradresse"
@@ -4378,6 +4367,14 @@
"Bitte Passwort entfernen oder den Modus korrigieren"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuelles Dateisystem SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Warnung: Datei %s nicht gefunden\n"
@@ -4411,6 +4408,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: Stelle Verbindung her zu %s"
@@ -4422,6 +4422,58 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: Verbindung zum Server fehlgeschlagen: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Dauerhaft hinzugefügt\n"
+"%s (%s)\n"
+"zur Liste der bekannten Hosts."
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"wurde in der Liste der bekannten Hosts gefunden, aber\n"
+"DIE SCHLÜSSEL STIMMEN NICHT ÜBEREIN! DIES KÖNNTE EIN MITM-ANGRIFF SEIN!\n"
+"Sind Sie sicher, dass Sie ihn zur Liste der bekannten Hosts hinzufügen und "
+"die Verbindung fortsetzen möchten?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: Verifizierung des Hostschlüssels fehlgeschlagen"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Passphrase für %s eingeben"
@@ -4436,7 +4488,7 @@
msgid "sftp: Password is empty."
msgstr "sftp: Passwort ist leer."
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: failure establishing SSH session"
msgstr "sftp: Fehler beim Herstellen der SSH-Sitzung"
msgid "sftp: No file handler data present for reading file"
@@ -4454,33 +4506,6 @@
msgstr "sftp: Auflisten beendet."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "Wieder verbinden mit %s fehlgeschlagen"
-
-msgid "Authentication failed"
-msgstr "Authentifikation fehlgeschlagen"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Fehler %s beim Erstellen des Verzeichnisses %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Fehler %s beim Löschen des Verzeichnisses %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s beim Öffnen von entfernter Datei %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s beim Löschen von entfernter Datei %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s beim Umbenennen von Dateien\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/de_CH.po
^
|
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
"PO-Revision-Date: 2015-02-26 09:48+0000\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/mc/"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3140,6 +3098,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3508,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3538,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3784,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3924,13 +3899,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4029,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4098,6 +4095,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4130,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4144,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/el.po
^
|
@@ -11,10 +11,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>, 2015\n"
"Language-Team: Greek (http://www.transifex.com/mc/mc/language/el/)\n"
"Language: el\n"
"MIME-Version: 1.0\n"
@@ -79,30 +79,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Οι παλιές σας ρυθμίσεις μετακινήθηκαν από %s\n"
-"στους προτεινόμενους καταλόγους του Freedesktop.\n"
-"Για να λάβετε περισσότερες πληροφορίες, παρακαλούμε επισκεφτείτε το\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Οι παλιές σας ρυθμίσεις μετακινήθηκαν από %s\n"
-"σε %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -181,10 +157,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -536,24 +512,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Προειδοποίηση"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -681,12 +648,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr "Ρύθμιση επιπέδου αποσφαλμάτωσης"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Εκτελεί τον προβολέα αρχείων σε ένα αρχείο"
@@ -983,15 +944,6 @@
msgid "Two files are needed to compare"
msgstr "Χρειάζονται δύο αρχεία για σύγκριση"
-msgid "Choose syntax highlighting"
-msgstr "Επιλογή συντακτικού τονισμού"
-
-msgid "< Auto >"
-msgstr "< Αυτόματο >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Επαναφόρτωση τρέχοντος συντακτικού >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1024,6 +976,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Προειδοποίηση"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1032,14 +987,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Αναζήτηση %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1085,9 +1032,6 @@
msgid "Save As"
msgstr "Αποθήκευση ως"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "&Γρήγορη αποθήκευση"
@@ -1118,27 +1062,6 @@
msgid "Cannot save file"
msgstr "Δεν ήταν δυνατή η αποθήκευση του αρχείου"
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr "Επανάληψη τελευταίων εντολών"
-
-msgid "Repeat times:"
-msgstr "Επαναλήψεις:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Επιβεβαίωση αποθήκευσης αρχείου: \"%s\""
@@ -1173,13 +1096,6 @@
msgid "&Local"
msgstr "&Τοπικό"
-msgid "Replace"
-msgstr "Αντικατάσταση"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Έγιναν %ld αντικαταστάσεις"
-
msgid "[NoName]"
msgstr "[ΧωρίςΌνομα]"
@@ -1235,7 +1151,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1286,35 +1202,35 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
+msgstr "Άκυρο"
+
+msgid "Collect completions"
msgstr ""
-msgid "&Find all"
-msgstr "&Εύρεση όλων"
+msgid "NoName"
+msgstr "ΧωρίςΌνομα"
-msgid "Enter replacement string:"
+msgid "Save macro"
msgstr ""
-msgid "Replace with:"
-msgstr "Αντικατάσταση με:"
-
-msgid "&Replace"
-msgstr "&Αντικατάσταση"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "Ό&λα"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Παράβλεψη"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
-msgstr "Επιβεβαίωση αντικατάστασης"
+msgid "Macro not deleted"
+msgstr ""
-msgid "Cancel"
-msgstr "Άκυρο"
+msgid "Repeat last commands"
+msgstr "Επανάληψη τελευταίων εντολών"
-msgid "NoName"
-msgstr "ΧωρίςΌνομα"
+msgid "Repeat times:"
+msgstr "Επαναλήψεις:"
msgid "&Open file..."
msgstr "&Άνοιγμα αρχείου"
@@ -1604,12 +1520,51 @@
msgid "Editor options"
msgstr "Επιλογές επεξεργαστή"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr "&Εύρεση όλων"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr "Αντικατάσταση"
+
+msgid "Replace with:"
+msgstr "Αντικατάσταση με:"
+
+msgid "&Replace"
+msgstr "&Αντικατάσταση"
+
+msgid "A&ll"
+msgstr "Ό&λα"
+
+msgid "&Skip"
+msgstr "&Παράβλεψη"
+
+msgid "Confirm replace"
+msgstr "Επιβεβαίωση αντικατάστασης"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Αναζήτηση %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Έγιναν %ld αντικαταστάσεις"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1729,6 +1684,15 @@
msgid "Select language"
msgstr "Επιλογή γλώσσας"
+msgid "Choose syntax highlighting"
+msgstr "Επιλογή συντακτικού τονισμού"
+
+msgid "< Auto >"
+msgstr "< Αυτόματο >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Επαναφόρτωση τρέχοντος συντακτικού >"
+
msgid "Load syntax file"
msgstr "Φόρτωμα αρχείου συντακτικού"
@@ -2125,19 +2089,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Κωδικός πρόσβασης για \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr "Όνομα χρήστη:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2343,12 +2294,6 @@
msgid "Cannot change directory"
msgstr "Αδυναμία αλλαγής καταλόγου"
-msgid "Filter"
-msgstr "Φίλτρο"
-
-msgid "Set expression for filtering filenames"
-msgstr "Ρύθμιση έκφρασης για φιλτράρισμα ονομάτων αρχείων"
-
#, c-format
msgid "Link %s to:"
msgstr "Δεσμός %s σε:"
@@ -2452,9 +2397,6 @@
msgid "Shell link to machine"
msgstr "Δεσμός κελύφους σε μηχάνημα"
-msgid "SMB link to machine"
-msgstr "Δεσμός SMB σε μηχάνημα"
-
msgid "Undelete files on an ext2 file system"
msgstr "Επαναφορά αρχείων σε ένα σύστημα αρχείων ext2"
@@ -2493,19 +2435,26 @@
"Αδυναμία δημιουργίας προσωρινού αρχείου εντολών\n"
"%s"
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr "Σφάλμα αρχείου %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Η μορφή του αρχείου %smc.ext άλλαξε με την έκδοση 3.0. Φαίνεται ότι η "
-"εγκατάσταση απέτυχε. Παρακαλούμε λάβετε ένα νέο αντίγραφο του πακέτου του "
-"Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2513,12 +2462,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Η μορφή του αρχείου %s άλλαξε με την έκδοση 3.0. Ίσως θέλετε να το "
-"αντιγράψετε από %smc.ext ή να χρησιμοποιήσετε εκείνο το αρχείο ως παράδειγμα "
-"για το πως να το γράψετε."
msgid "DialogTitle|Copy"
msgstr "ΤίτλοςΔιαλόγου|Αντιγραφή"
@@ -2784,6 +2730,15 @@
msgid "(stalled)"
msgstr "(σταμάτησε)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Διατήρηση"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2800,12 +2755,6 @@
"Αδυναμία κλεισίματος αρχείου στόχου \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Ανακτήθηκε ατελές αρχείο. Να διατηρηθεί;"
-
-msgid "&Keep"
-msgstr "&Διατήρηση"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2920,8 +2869,8 @@
msgstr "Διεργασία παρασκηνίου:Το αρχείο υπάρχει"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Αρχεία που προσπελάστηκαν: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -2948,8 +2897,8 @@
msgstr "Σύνολο: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr "Σύνολο: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Πηγή"
@@ -3001,7 +2950,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "&Σειρά ταξινόμησης..."
+msgstr ""
msgid "&Filter..."
msgstr "&Φίλτρο..."
@@ -3015,11 +2964,8 @@
msgid "S&hell link..."
msgstr "Δεσμος κε&λύφους..."
-msgid "S&FTP link..."
-msgstr "Δεσμός S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Δεσμός SM&B..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr ""
@@ -3232,6 +3178,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "&Παράβλεψη κρυφών"
@@ -3396,8 +3345,8 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Ελεύθερος χώρος: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3641,6 +3590,9 @@
msgid "Unselect"
msgstr "Αποεπιλογή"
+msgid "Filter"
+msgstr "Φίλτρο"
+
msgid "Do you really want to execute?"
msgstr "Σίγουρα θέλετε να γίνει εκτέλεση;"
@@ -3668,10 +3620,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3930,6 +3889,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Εικονικά συστήματα αρχείων:"
@@ -4043,16 +4006,22 @@
"Απροσδόκητο τέλος αρχείου\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Χαλασμένη αρχειοθήκη tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Άνοιγμα αρχείου %s ανεπιτυχές\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Χαλασμένο αρχείο extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4169,6 +4138,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Αναμονή επαναπροσπάθειας... %d (Control-G για ακύρωση)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: μη έγκυρη οικογένεια διευθύνσεων"
@@ -4220,6 +4204,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Προειδοποίηση: το αρχείο %s δε βρέθηκε\n"
@@ -4253,6 +4243,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4264,63 +4257,80 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
-msgstr "η επανασύνδεση με %s απέτυχε"
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
-msgid "Authentication failed"
-msgstr "η πιστοποίηση απέτυχε"
+msgid "sftp: Passphrase is empty."
+msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Σφάλμα %s κατά τη δημιουργία του καταλόγου %s"
+msgid "sftp: Enter password for %s "
+msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Σφάλμα %s κατά την αφαίρεση του καταλόγου %s"
+msgid "sftp: Password is empty."
+msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s ανοίγει το απομακρυσμένο αρχείο %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
+msgstr ""
#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s αφαιρεί το απομακρυσμένο αρχείο %s"
+msgid "sftp: socket error: %s"
+msgstr ""
#, c-format
-msgid "%s renaming files\n"
-msgstr "%s μετονομάζει αρχεία\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
+msgstr ""
#, c-format
msgid ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/en_GB.po
^
|
@@ -3,14 +3,14 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Andi Chandler <andi@gowling.com>, 2016-2017,2020
+# Andi Chandler <andi@gowling.com>, 2016-2017,2020,2022
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Andi Chandler <andi@gowling.com>, 2016-2017,2020,2022\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/mc/mc/"
"language/en_GB/)\n"
"Language: en_GB\n"
@@ -76,30 +76,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: not a directory:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "An error occurred while migrating user settings: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -188,12 +164,12 @@
msgid "True color not supported with ncurses."
msgstr "True colour not supported with ncurses."
-msgid "True color not supported in this slang version."
-msgstr "True colour not supported in this slang version."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Your terminal doesn't even seem to support 256 colours."
+msgid "True color not supported in this slang version."
+msgstr "True colour not supported in this slang version."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Set COLORTERM=truecolor if your terminal really supports true colours."
@@ -204,103 +180,103 @@
msgstr "Function key 1"
msgid "Function key 2"
-msgstr ""
+msgstr "Function key 2"
msgid "Function key 3"
-msgstr ""
+msgstr "Function key 3"
msgid "Function key 4"
-msgstr ""
+msgstr "Function key 4"
msgid "Function key 5"
-msgstr ""
+msgstr "Function key 5"
msgid "Function key 6"
-msgstr ""
+msgstr "Function key 6"
msgid "Function key 7"
-msgstr ""
+msgstr "Function key 7"
msgid "Function key 8"
-msgstr ""
+msgstr "Function key 8"
msgid "Function key 9"
-msgstr ""
+msgstr "Function key 9"
msgid "Function key 10"
-msgstr ""
+msgstr "Function key 10"
msgid "Function key 11"
-msgstr ""
+msgstr "Function key 11"
msgid "Function key 12"
-msgstr ""
+msgstr "Function key 12"
msgid "Function key 13"
-msgstr ""
+msgstr "Function key 13"
msgid "Function key 14"
-msgstr ""
+msgstr "Function key 14"
msgid "Function key 15"
-msgstr ""
+msgstr "Function key 15"
msgid "Function key 16"
-msgstr ""
+msgstr "Function key 16"
msgid "Function key 17"
-msgstr ""
+msgstr "Function key 17"
msgid "Function key 18"
-msgstr ""
+msgstr "Function key 18"
msgid "Function key 19"
-msgstr ""
+msgstr "Function key 19"
msgid "Function key 20"
-msgstr ""
+msgstr "Function key 20"
msgid "Completion/M-tab"
-msgstr ""
+msgstr "Completion/M-tab"
msgid "BackTab/S-tab"
-msgstr ""
+msgstr "BackTab/S-tab"
msgid "Backspace"
-msgstr ""
+msgstr "Backspace"
msgid "Up arrow"
-msgstr ""
+msgstr "Up arrow"
msgid "Down arrow"
-msgstr ""
+msgstr "Down arrow"
msgid "Left arrow"
msgstr ""
msgid "Right arrow"
-msgstr ""
+msgstr "Right arrow"
msgid "Insert"
-msgstr ""
+msgstr "Insert"
msgid "Delete"
-msgstr ""
+msgstr "Delete"
msgid "Home"
-msgstr ""
+msgstr "Home"
msgid "End key"
-msgstr ""
+msgstr "End key"
msgid "Page Up"
-msgstr ""
+msgstr "Page Up"
msgid "Page Down"
-msgstr ""
+msgstr "Page Down"
msgid "/ on keypad"
-msgstr ""
+msgstr "/ on keypad"
msgid "* on keypad"
msgstr ""
@@ -543,24 +519,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -686,12 +653,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -981,15 +942,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1022,20 +974,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1083,9 +1030,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1116,27 +1060,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1171,13 +1094,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1229,7 +1145,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1280,34 +1196,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1598,12 +1514,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1723,6 +1678,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2113,19 +2077,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2329,12 +2280,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2438,9 +2383,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2475,14 +2417,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2492,8 +2444,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2728,6 +2680,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2740,12 +2701,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2852,7 +2807,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2880,7 +2835,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2947,10 +2902,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3164,6 +3116,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3326,7 +3281,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3571,6 +3526,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3598,10 +3556,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3837,6 +3802,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3948,13 +3917,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4071,6 +4047,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4122,6 +4113,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4151,6 +4148,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4162,62 +4162,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/eo.po
^
|
@@ -4,13 +4,14 @@
#
# Translators:
# Keith Bowes <zooplah@gmail.com>, 2011,2016,2018-2019
+# Yury V. Zaytsev <yury@shurup.com>, 2022
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 15:56+0000\n"
-"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Yury V. Zaytsev <yury@shurup.com>, 2022\n"
"Language-Team: Esperanto (http://www.transifex.com/mc/mc/language/eo/)\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
@@ -75,30 +76,6 @@
msgid "FATAL: not a directory:"
msgstr "PEREIGA: ne estas dosierujo:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Eraro okazis dum migrigi uzanto-agordon: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Via eksaj agordaĵoj estis migrintaj el %s\n"
-"al dosierujoj rekomendataj de Freedesktop.\n"
-"Por akiri pliajn informojn, bonvolu viziti\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Via eksa agordo estis elmigrinta el %s\n"
-"al %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -187,12 +164,12 @@
msgid "True color not supported with ncurses."
msgstr "Verkoloro ne estas regata per ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Verkoloro ne estas regata de tiu eldono de S-Lang"
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Via terminalo ŝajnas ne regi 256 kolorojn"
+msgid "True color not supported in this slang version."
+msgstr "Verkoloro ne estas regata de tiu eldono de S-Lang"
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Agordi je COLORTERM=truecolor se via terminalo efektive regas verkolorojn."
@@ -270,16 +247,16 @@
msgstr "Retropaŝa klavo"
msgid "Up arrow"
-msgstr "Supriga sagoklavo"
+msgstr "Supreniga sagoklavo"
msgid "Down arrow"
-msgstr "Malsupriga sagoklavo"
+msgstr "Malsupreniga sagoklavo"
msgid "Left arrow"
-msgstr "Maldekstriga sagoklavo"
+msgstr "Maldekstreniga sagoklavo"
msgid "Right arrow"
-msgstr "Dekstriga sagoklavo"
+msgstr "Dekstreniga sagoklavo"
msgid "Insert"
msgstr "Enmeta klavo"
@@ -294,10 +271,10 @@
msgstr "Finiga klavo"
msgid "Page Up"
-msgstr "Klavo por suprenigi je ekranpleno"
+msgstr "Rulumi supren je paĝo"
msgid "Page Down"
-msgstr "Klavo por malsuprenigi je ekranpleno"
+msgstr "Rulumi malsupren je paĝo"
msgid "/ on keypad"
msgstr "/ ĉe cifera klavaro"
@@ -312,16 +289,16 @@
msgstr "+ ĉe cifera klavaro"
msgid "Left arrow keypad"
-msgstr "Maldekstriga sagoklavo [cifera klavaro]"
+msgstr "Maldekstreniga sagoklavo [cifera klavaro]"
msgid "Right arrow keypad"
-msgstr "Dekstriga sagoklavo [cifera klavaro]"
+msgstr "Dekstreniga sagoklavo [cifera klavaro]"
msgid "Up arrow keypad"
-msgstr "Supriga sagoklavo [cifera klavaro]"
+msgstr "Supreniga sagoklavo [cifera klavaro]"
msgid "Down arrow keypad"
-msgstr "Malsupriga sagoklavo [cifera klavaro]"
+msgstr "Malsupreniga sagoklavo [cifera klavaro]"
msgid "Home on keypad"
msgstr "Hejma klavo [cifera klavaro]"
@@ -553,6 +530,9 @@
"Neatendita eraro en select() leginte datumojn el ida procezo:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Ne eblas fermi duktan priskribilon (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -561,18 +541,6 @@
"Neatendita eraro en waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Averto"
-
-msgid "Pipe failed"
-msgstr "Dukto malsukcesis"
-
-msgid "Dup failed"
-msgstr "Duplikato malsukcesis"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Erara dum duplikati malnovan eraran dukton"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Dosieruja tenejo eksvalidiĝis por %s"
@@ -698,12 +666,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Protokoli FTP-dialogon al specifa dosiero"
-msgid "Set debug level"
-msgstr "Specifi senerarigan nivelon"
-
-msgid "<integer>"
-msgstr "<entjero>"
-
msgid "Launches the file viewer on a file"
msgstr "Plenumigi la dosiero-legilon je la dosiero"
@@ -711,7 +673,7 @@
msgstr "Redakti dosierojn"
msgid "<file> ..."
-msgstr "<dosiero> …"
+msgstr "<dosiero> ..."
msgid "Forces xterm features"
msgstr "Devigi xterm-trajtojn"
@@ -828,7 +790,7 @@
msgstr "Kolora agordo"
msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
-msgstr "[+linia_numero] dosiero1[:linia_numero] [dosiero2[:linia_numero…]]"
+msgstr "[+linia_numero] dosiero1[:linia_numero] [dosiero2[:linia_numero]...]"
msgid "file"
msgstr "dosieron"
@@ -1039,15 +1001,6 @@
msgid "Two files are needed to compare"
msgstr "Du dosieroj estas bezonataj por kompari"
-msgid "Choose syntax highlighting"
-msgstr "Elekti sintaksan prilumadon"
-
-msgid "< Auto >"
-msgstr "< Aŭtomata >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Reŝargi nunan sintakson >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Ŝarganta: %3d%%"
@@ -1082,6 +1035,9 @@
"Dosiero \"%s\" estas tro granda.\n"
"Ĉu senkonsidere malfermi ĝin?"
+msgid "Warning"
+msgstr "Averto"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Eraro dum legi de dukto: %s"
@@ -1090,14 +1046,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Ne eblas malfermi dukton por legi: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Serĉanta en %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Serĉanta en %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Dosiero havas rektajn ligilojn. Ĉu elmeti antaŭ ol konservi?"
@@ -1143,9 +1091,6 @@
msgid "Save As"
msgstr "Konservi kiel"
-msgid "Collect completions"
-msgstr "Kolekti kompletigojn"
-
msgid "&Quick save"
msgstr "&Rapida konservado"
@@ -1176,27 +1121,6 @@
msgid "Cannot save file"
msgstr "Ne eblas konservi dosieron"
-msgid "Delete macro"
-msgstr "Forigi makroon"
-
-msgid "Press macro hotkey:"
-msgstr "Premu makroan klavkomandon:"
-
-msgid "Macro not deleted"
-msgstr "Makroo ne forigita"
-
-msgid "Save macro"
-msgstr "Konservi makroon"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Premu la novan klavkomandon de la makroo:"
-
-msgid "Repeat last commands"
-msgstr "Refari lastajn komandojn"
-
-msgid "Repeat times:"
-msgstr "Refari (n-fojojn):"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Konfirmi konservi dosieron: \"%s\""
@@ -1231,13 +1155,6 @@
msgid "&Local"
msgstr "&Loka"
-msgid "Replace"
-msgstr "Anstataŭigi"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld anstataŭigoj faritaj"
-
msgid "[NoName]"
msgstr "[Sennoma]"
@@ -1293,9 +1210,10 @@
msgid "Run sort"
msgstr "Rula ordigo"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Enmetu ordigajn agordaĵon (vidu man-paĝon) apartigante per blankospacoj:"
+"Enmetu ordigajn agordaĵon (vidu la man-elementon sort(1)) apartigante ilin "
+"per blankspacoj:"
msgid "Sort"
msgstr "Ordigi"
@@ -1347,35 +1265,35 @@
"Nuna teksto estis modifita sen dosiera konservado.\n"
"Daŭri forviŝos tiujn ŝanĝojn."
-msgid "In se&lection"
-msgstr "En e&lekto"
+msgid "Cancel"
+msgstr "Nuligi"
-msgid "&Find all"
-msgstr "&Trovi ĉion"
+msgid "Collect completions"
+msgstr "Kolekti kompletigojn"
-msgid "Enter replacement string:"
-msgstr "Enmetu anstataŭigan ĉenon:"
+msgid "NoName"
+msgstr "Sennoma"
-msgid "Replace with:"
-msgstr "Anstataŭigi per:"
+msgid "Save macro"
+msgstr "Konservi makroon"
-msgid "&Replace"
-msgstr "&Anstataŭigi"
+msgid "Press the macro's new hotkey:"
+msgstr "Premu la novan klavkomandon de la makroo:"
-msgid "A&ll"
-msgstr "Ĉ&io"
+msgid "Delete macro"
+msgstr "Forigi makroon"
-msgid "&Skip"
-msgstr "&Preterlasi"
+msgid "Press macro hotkey:"
+msgstr "Premu makroan klavkomandon:"
-msgid "Confirm replace"
-msgstr "Konfirmi anstataŭigon"
+msgid "Macro not deleted"
+msgstr "Makroo ne forigita"
-msgid "Cancel"
-msgstr "Nuligi"
+msgid "Repeat last commands"
+msgstr "Refari lastajn komandojn"
-msgid "NoName"
-msgstr "Sennoma"
+msgid "Repeat times:"
+msgstr "Refari (n-fojojn):"
msgid "&Open file..."
msgstr "&Malfermi dosieron..."
@@ -1387,7 +1305,7 @@
msgstr "&Fermi"
msgid "&History..."
-msgstr "&Historio…"
+msgstr "&Historio..."
msgid "Save &as..."
msgstr "K&onservi kiel..."
@@ -1665,6 +1583,45 @@
msgid "Editor options"
msgstr "Redaktilaj agordaĵoj"
+msgid "In se&lection"
+msgstr "En e&lekto"
+
+msgid "&Find all"
+msgstr "&Trovi ĉion"
+
+msgid "Enter replacement string:"
+msgstr "Enmetu anstataŭigan ĉenon:"
+
+msgid "Replace"
+msgstr "Anstataŭigi"
+
+msgid "Replace with:"
+msgstr "Anstataŭigi per:"
+
+msgid "&Replace"
+msgstr "&Anstataŭigi"
+
+msgid "A&ll"
+msgstr "Ĉ&io"
+
+msgid "&Skip"
+msgstr "&Preterlasi"
+
+msgid "Confirm replace"
+msgstr "Konfirmi anstataŭigon"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Serĉanta en %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Serĉanta en %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld anstataŭigoj faritaj"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1672,8 +1629,8 @@
"Afabla tekstoredaktilo\n"
"verkita por Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Kopirajto (C) 1996–2020 la Fondaĵo pri liberaj programoj"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Kopirajto (C) 1996–2022 la Fondaĵo pri Libera Programaro"
msgid "About"
msgstr "Pri"
@@ -1792,6 +1749,15 @@
msgid "Select language"
msgstr "Elekti lingvon"
+msgid "Choose syntax highlighting"
+msgstr "Elekti sintaksan prilumadon"
+
+msgid "< Auto >"
+msgstr "< Aŭtomata >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Reŝargi nunan sintakson >"
+
msgid "Load syntax file"
msgstr "Ŝargi sintakso-dosieron"
@@ -2198,19 +2164,6 @@
msgstr "Fonaj taskoj"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Pasvorto por \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domajno:"
-
-msgid "Username:"
-msgstr "Salutnomo:"
-
-msgid "SMB authentication"
-msgstr "SMB-atestado"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2279,7 +2232,7 @@
msgstr "Neniu COW"
msgid "Direct access for files"
-msgstr "Senpera atingo de dosieroj"
+msgstr "Rekta atingo por dosieroj"
msgid "Casefolded file"
msgstr "Dosiero kun faldita uskleco"
@@ -2420,12 +2373,6 @@
msgid "Cannot change directory"
msgstr "Ne eblas ŝanĝi dosierujon"
-msgid "Filter"
-msgstr "Filtri"
-
-msgid "Set expression for filtering filenames"
-msgstr "Agordi esprimon por filtri dosiernomojn"
-
#, c-format
msgid "Link %s to:"
msgstr "Ligi je %s al:"
@@ -2531,9 +2478,6 @@
msgid "Shell link to machine"
msgstr "Ŝela ligilo al servilo"
-msgid "SMB link to machine"
-msgstr "SMB-ligilo al servilo"
-
msgid "Undelete files on an ext2 file system"
msgstr "Remeti dosierojn en ext2-dosiersistemon"
@@ -2572,18 +2516,31 @@
"Ne eblas krei provizoran komandodosieron\n"
"%s"
+msgid "Pipe failed"
+msgstr "Dukto malsukcesis"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Vi havas malaktualan dosieron %s.\n"
+"Midnight Cammander now uzas la dosieron %s.\n"
+"Bonvolu kopii viajn modifojn de la malnova dosiero al la nova."
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s: dosiera eraro"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"La aranĝo de la dosiero %smc.ext ŝanĝiĝis en eldono 3.0. Ŝajne la instalado "
-"malsukcesis. Bonvolu havigi al vi freŝan ekzempleron de la pako Midnight "
+"La aranĝo de la dosiero %s%s ŝanĝiĝis en eldono 4.0. Ŝajne la instalado "
+"malsukcesis. Bonvolu havigi al vi freŝan ekzempleron de la pakaĵo Midnight "
"Commander."
#, c-format
@@ -2592,11 +2549,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"La aranĝo de la dosiero %s ŝanĝiĝis en eldono 3.0. Vi eble povos aŭ kopii "
-"ĝin el %smc.txt aŭ uzi tiun dosieron kiel ekzemplon."
+"La aranĝo de la dosiero %s ŝanĝiĝis en eldono 4.0. Vi eble povos aŭ kopii "
+"ĝin el %s%s aŭ uzi tiun dosieron kiel ekzemplon pri kiel skribi ĝin."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopii"
@@ -2890,6 +2847,15 @@
msgid "(stalled)"
msgstr "(paŭzinta)"
+msgid "Incomplete file was retrieved"
+msgstr "Nekompleta dosiero estis akirita"
+
+msgid "&Keep"
+msgstr "&Teni"
+
+msgid "&Continue copy"
+msgstr "D&aŭrigi kopii"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2906,12 +2872,6 @@
"Ne eblas fermi celan dosieron \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Nekompleta dosiero estis akirita. Ĉu teni ĝin?"
-
-msgid "&Keep"
-msgstr "&Teni"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3030,8 +2990,8 @@
msgstr "Fona procezo: Dosiero ekzistas"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Dosieroj traktitaj: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Dosieroj traktitaj: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3058,7 +3018,7 @@
msgstr " Kiomo: %s "
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr " Kiomo: %s el %s "
msgid "Source"
@@ -3108,10 +3068,10 @@
msgstr "&Arbo"
msgid "&Listing format..."
-msgstr "&Listo-aranĝo…"
+msgstr "&Listo-aranĝo..."
msgid "&Sort order..."
-msgstr "&Ordigi laŭ..."
+msgstr "&Ordiga ordo..."
msgid "&Filter..."
msgstr "&Filtri..."
@@ -3125,12 +3085,9 @@
msgid "S&hell link..."
msgstr "Ŝ&ela ligilo..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr "&SFTP-ligilo..."
-msgid "SM&B link..."
-msgstr "SM&B-a ligilo..."
-
msgid "Paneli&ze"
msgstr "&Flankigi"
@@ -3342,6 +3299,9 @@
msgid "&Find recursively"
msgstr "&Trovi rekursie"
+msgid "Follow s&ymlinks"
+msgstr "Sekvi Simbolajn &Ligilojn"
+
msgid "S&kip hidden"
msgstr "P&reterlasi kaŝitan"
@@ -3508,7 +3468,7 @@
msgstr "Neniuj spacaj informoj"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr "Restanta spaco: %s el %s (%d%%)"
#, c-format
@@ -3562,14 +3522,14 @@
msgstr "Ligiloj: %d"
msgid "Attributes: not supported"
-msgstr "Atributoj: ne komprenitaj"
+msgstr "Atributoj: ne komprenataj"
#, c-format
msgid "Attributes: %s"
-msgstr "Atributoj: %s"
+msgstr "Atributoj: %s"
msgid "Attributes: unavailable"
-msgstr "Atributoj: nedisponeblaj"
+msgstr "Atributoj: nedisponeblaj"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3753,6 +3713,9 @@
msgid "Unselect"
msgstr "Malelekti"
+msgid "Filter"
+msgstr "Filtri"
+
msgid "Do you really want to execute?"
msgstr "Ĉu vi efekti volas plenumigi?"
@@ -3780,11 +3743,23 @@
msgid "Enter command label:"
msgstr "Enmetu komandan etikedon:"
-msgid "Cannot invoke command."
-msgstr "Ne eblas plenumi komandon."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Eksterigi flankojn:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Dukta fermo malsukcesis"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Eksteraj paneloj:\n"
+"malsukcesis legi datumojn el ida ĉefeligujo\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Ne eblas plenumi eksterajn flanojn en fora dosierujo"
@@ -4050,6 +4025,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Muntita kun ncursesw (nekonata eldono)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Muntita kun libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Virtualaj dosiersistemoj:"
@@ -4158,7 +4137,7 @@
#, c-format
msgid "%s contains duplicate entries! Skipping!"
-msgstr "%s enhavas duplikatajn erojn! Preterlasanta!"
+msgstr "%s enhavas duobligitajn erojn! Preterlasanta!"
#, c-format
msgid ""
@@ -4176,16 +4155,27 @@
"Neatendita dosierfino\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Malkonsekvenca tar-dosiero"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Ne eblas malfermi dosiero %s\n"
+"Ne eblas malfermi arĥivan dosieron %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Malkonsekvenca extfs-dosieron"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuala dosiersistemo EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4301,6 +4291,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Atendanta por reprovi... %d (Stirklavo-G por nuligi)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: ne eblas krei adreso-al-noman traduko: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: provo rekonektiĝi al servilo, provo %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: ne eblas akiri konektingan nomon: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: ne eblas rekonektiĝi al servilo"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: nevalida familio"
@@ -4354,6 +4359,14 @@
"Forigi pasvorton aŭ alĝustigi reĝimon"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Virtuala dosiersistemo SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Averto: dosiero %s ne trovita\n"
@@ -4387,6 +4400,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr "sftp: malsukcesis konverti IP-adreson de fora retnodo al teksta formo"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: konektiĝanta al %s"
@@ -4398,6 +4414,64 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: konekto al servilo fiaskis: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: trovis retnodo-ŝlosilon kun nekomprenata tipo: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: nekonata retnodo-ŝlosila tipo"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Ĉiame aldonita\n"
+"%s (%s)\n"
+"al la listo de konatoj retnodoj."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: ne eblas atingi la ŝlosilon de la fora retnodo"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: nekonata ŝlosilo-tipo, ne eblas konroli la ŝlosilon de la fora retnodo"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: ne eblas komputi fingropreman hakaĵon de la retnoda ŝlosilo"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"%s (%s)\n"
+"ne estas starigebla!\n"
+"Fingroprema hakaĵo de ŝlosilo %s estas\n"
+"SHA1:%s.\n"
+"Ĉu vi velas aldoni ĝin al la listo de konataj retnodoj kaj poste konektiĝi?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"estas trovata en la listo de konataj retnodoj sed\n"
+"ŜLOSILOJ NE KONGRUAS! TIO EBLE ESTAS MEZULA ATAKO!\n"
+"Ĉu vi certas, ke vi volas aldoni ĝin al la listo de konataj retnodoj kaj "
+"poste konektiĝi?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: malsukcesis aŭtentigo de la retnoda ŝlosilo"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Enmetu pasfrazon por %s "
@@ -4412,8 +4486,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Pasvorto estas vaka."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Malsukcesis starigi SSH-seancon"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: malsukcesis starigi SSH-seancon"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Neniu dosiertraktila datumo ĉeestas por legi dosieron"
@@ -4430,33 +4504,6 @@
msgstr "sftp: Listado finita."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "rekonektiĝi al %s malsukcesis"
-
-msgid "Authentication failed"
-msgstr "Atestado malsukcesis"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Eraro %s dum krei dosierujon %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Eraro %s dum forigi dosierujon %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s malfermanta forajn dosierojn %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s dum forigi forajn dosierojn %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s alinomanta dosierojn\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/es.po
^
|
@@ -12,16 +12,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 18:30+0000\n"
-"Last-Translator: David Martin <dhmartina@yahoo.es>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Spanish (http://www.transifex.com/mc/mc/language/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
+"1 : 2;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -80,30 +81,6 @@
msgid "FATAL: not a directory:"
msgstr "¡FATAL! No es directorio:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Error en la migración de la configuración personal: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"La configuración previa ha sido trasladada de %s\n"
-"a los directorios recomendados por Freedesktop.\n"
-"Para más detalles consulte\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"La configuración previa ha sido trasladada de %s\n"
-"a %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -191,12 +168,12 @@
msgid "True color not supported with ncurses."
msgstr "El color real no está soportado con ncurses."
-msgid "True color not supported in this slang version."
-msgstr "El color real no está soportado con esta versión de slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "El terminal no parece siquiera poder soportar 256 colores."
+msgid "True color not supported in this slang version."
+msgstr "El color real no está soportado con esta versión de slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Pruebe COLORTERM=truecolor si el terminal realmente soporta color real"
@@ -558,6 +535,9 @@
"Error inesperado en select() leyendo datos del proceso hijo:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Imposible cerrar descriptor de tubería (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -566,18 +546,6 @@
"Error inesperado en waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "¡ Atención !"
-
-msgid "Pipe failed"
-msgstr "Fallo en la tubería"
-
-msgid "Dup failed"
-msgstr "Dup falló"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Error duplicando tubería de error"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "El caché del directorio %s ha expirado"
@@ -703,12 +671,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Registrar diálogos ftp en un archivo"
-msgid "Set debug level"
-msgstr "Fijar el nivel de depuración"
-
-msgid "<integer>"
-msgstr "<número>"
-
msgid "Launches the file viewer on a file"
msgstr "Abrir un archivo con el visor"
@@ -1047,15 +1009,6 @@
"Para comparar se necesita\n"
"un archivo en cada panel"
-msgid "Choose syntax highlighting"
-msgstr "Sintaxis coloreada"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Releer sintaxis >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Cargando: %3d%%"
@@ -1090,6 +1043,9 @@
"El archivo «%s» es demasiado grande\n"
"¿Está seguro de querer abrirlo?"
+msgid "Warning"
+msgstr "¡ Atención !"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Error al leer en tubería: %s"
@@ -1098,14 +1054,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Imposible abrir tubería para lectura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Buscando %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Buscando %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Hay otros enlaces al archivo. ¿Desea separarlo al guardar?"
@@ -1151,9 +1099,6 @@
msgid "Save As"
msgstr "Guardar como"
-msgid "Collect completions"
-msgstr "Encontrar finales"
-
msgid "&Quick save"
msgstr "guardar &Rápido"
@@ -1184,27 +1129,6 @@
msgid "Cannot save file"
msgstr "Imposible guardar el archivo."
-msgid "Delete macro"
-msgstr "Eliminar macro"
-
-msgid "Press macro hotkey:"
-msgstr "Pulse la tecla de la macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro no eliminada"
-
-msgid "Save macro"
-msgstr "Guardar macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Presione la nueva tecla para la macro:"
-
-msgid "Repeat last commands"
-msgstr "Repetir órdenes anteriores"
-
-msgid "Repeat times:"
-msgstr "Número de repeticiones:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Guardar el archivo: «%s»"
@@ -1239,13 +1163,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Reemplazar"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld reemplazos hechos."
-
msgid "[NoName]"
msgstr "[SinNombre]"
@@ -1301,8 +1218,8 @@
msgid "Run sort"
msgstr "Ordenar bloque de texto"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Opciones para «sort» (ver manual), separadas por espacios:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr "Opciones para «sort» (ver manual sort(1)), separadas por espacios:"
msgid "Sort"
msgstr "Ordenar"
@@ -1354,35 +1271,35 @@
"El texto actual ha sido modificado y no ha sido guardado \n"
"Continuar descartará estos cambios."
-msgid "In se&lection"
-msgstr "solo en se&Lección"
+msgid "Cancel"
+msgstr "Cancelar"
-msgid "&Find all"
-msgstr "buscar &Todos"
+msgid "Collect completions"
+msgstr "Encontrar finales"
-msgid "Enter replacement string:"
-msgstr "Teclee el cambio a realizar:"
+msgid "NoName"
+msgstr "SinNombre"
-msgid "Replace with:"
-msgstr "Reemplazar con:"
+msgid "Save macro"
+msgstr "Guardar macro"
-msgid "&Replace"
-msgstr "&Reemplazar"
+msgid "Press the macro's new hotkey:"
+msgstr "Presione la nueva tecla para la macro:"
-msgid "A&ll"
-msgstr "&Todos"
+msgid "Delete macro"
+msgstr "Eliminar macro"
-msgid "&Skip"
-msgstr "&Saltar"
+msgid "Press macro hotkey:"
+msgstr "Pulse la tecla de la macro:"
-msgid "Confirm replace"
-msgstr "Confirmar cambios"
+msgid "Macro not deleted"
+msgstr "Macro no eliminada"
-msgid "Cancel"
-msgstr "Cancelar"
+msgid "Repeat last commands"
+msgstr "Repetir órdenes anteriores"
-msgid "NoName"
-msgstr "SinNombre"
+msgid "Repeat times:"
+msgstr "Número de repeticiones:"
msgid "&Open file..."
msgstr "abrir archiv&O..."
@@ -1672,6 +1589,45 @@
msgid "Editor options"
msgstr "Opciones del editor"
+msgid "In se&lection"
+msgstr "solo en se&Lección"
+
+msgid "&Find all"
+msgstr "buscar &Todos"
+
+msgid "Enter replacement string:"
+msgstr "Teclee el cambio a realizar:"
+
+msgid "Replace"
+msgstr "Reemplazar"
+
+msgid "Replace with:"
+msgstr "Reemplazar con:"
+
+msgid "&Replace"
+msgstr "&Reemplazar"
+
+msgid "A&ll"
+msgstr "&Todos"
+
+msgid "&Skip"
+msgstr "&Saltar"
+
+msgid "Confirm replace"
+msgstr "Confirmar cambios"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Buscando %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Buscando %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld reemplazos hechos."
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1679,8 +1635,8 @@
"Un editor de texto amigable\n"
"para Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 the Free Software Foundation"
msgid "About"
msgstr "Acerca de..."
@@ -1799,6 +1755,15 @@
msgid "Select language"
msgstr "Elegir idioma"
+msgid "Choose syntax highlighting"
+msgstr "Sintaxis coloreada"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Releer sintaxis >"
+
msgid "Load syntax file"
msgstr "Cargar archivo de sintaxis"
@@ -2205,19 +2170,6 @@
msgstr "Procesos en 2º plano"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Contraseña para \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Dominio:"
-
-msgid "Username:"
-msgstr "Usuario:"
-
-msgid "SMB authentication"
-msgstr "Autenticación SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2427,12 +2379,6 @@
msgid "Cannot change directory"
msgstr "Imposible cambiar de directorio"
-msgid "Filter"
-msgstr "Filtro"
-
-msgid "Set expression for filtering filenames"
-msgstr "Teclee la expresión para filtrar nombres de archivo"
-
#, c-format
msgid "Link %s to:"
msgstr "Crear enlace a %s como:"
@@ -2538,9 +2484,6 @@
msgid "Shell link to machine"
msgstr "Conexión por SSH"
-msgid "SMB link to machine"
-msgstr "Conexión por SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Recuperar archivos de un sistema de archivos ext2"
@@ -2579,20 +2522,32 @@
"Imposible crear el archivo temporal para comandos\n"
"%s"
+msgid "Pipe failed"
+msgstr "Fallo en la tubería"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Tiene un archivo %s obsoleto.\n"
+"Midnight Commander usa ahora el archivo %s. Por favor,\n"
+"copie las modificaciones realizadas al nuevo."
+
#, c-format
msgid " %s%s file error"
msgstr " error en el archivo %s%s "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"El archivo %smc.ext ha cambiado con la versión 3.0.\n"
-"Parece que la instalación falló. Por favor, trate\n"
-"de conseguir una copia intacta con el paquete del\n"
-"Midnight Commander."
+"El formato del archivo %s%s ha cambiado con la versión 4.0.\n"
+"Parece que la instalación falló. Por favor, trate de conseguir\n"
+"una copia intacta del paquete de Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2600,11 +2555,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"El formato del archivo %s ha cambiado con la versión 3.0. Puede hacer una "
-"copia de %smc.ext o bien emplearlo como modelo."
+"El formato del archivo %s ha cambiado con la versión 4.0. Puede hacer una "
+"copia de %s%s o bien emplearlo como modelo."
msgid "DialogTitle|Copy"
msgstr "Copiar"
@@ -2898,6 +2853,15 @@
msgid "(stalled)"
msgstr "(bloqueado)"
+msgid "Incomplete file was retrieved"
+msgstr "El archivo descargado está incompleto"
+
+msgid "&Keep"
+msgstr "&Mantener"
+
+msgid "&Continue copy"
+msgstr "&Continuar copia"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2914,12 +2878,6 @@
"Imposible cerrar el archivo destino «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "El archivo está incompleto. ¿Desea conservarlo?"
-
-msgid "&Keep"
-msgstr "&Mantener"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3038,8 +2996,8 @@
msgstr "Proceso en 2º plano: El archivo ya existe"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Archivos procesados: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Archivos procesados: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3066,8 +3024,8 @@
msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr "Total: %s/%s"
+msgid " Total: %s / %s "
+msgstr "Total: %s / %s"
msgid "Source"
msgstr "Origen"
@@ -3133,12 +3091,9 @@
msgid "S&hell link..."
msgstr "conexión por SS&H..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr "conexión por SF&TP..."
-msgid "SM&B link..."
-msgstr "conexión por &SMB..."
-
msgid "Paneli&ze"
msgstr "búsqueda e&Xterna"
@@ -3291,6 +3246,7 @@
msgid_plural "You have %zu opened screens. Quit anyway?"
msgstr[0] "Hay %zu pantalla abierta. ¿Desea realmente salir?"
msgstr[1] "Hay %zu pantallas abiertas. ¿Desea realmente salir?"
+msgstr[2] "Hay %zu pantallas abiertas. ¿Desea realmente salir?"
msgid "The Midnight Commander"
msgstr "The Midnight Commander"
@@ -3350,6 +3306,9 @@
msgid "&Find recursively"
msgstr "buscar &Recursivamente"
+msgid "Follow s&ymlinks"
+msgstr "seguir enlaces simbólicos"
+
msgid "S&kip hidden"
msgstr "saltar &Ocultos"
@@ -3389,6 +3348,7 @@
msgid_plural "Finished (ignored %zu directories)"
msgstr[0] "Terminado (%zu directorio ignorado)"
msgstr[1] "Terminado (%zu directorios ignorados)"
+msgstr[2] "Terminado (%zu directorios ignorados)"
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
@@ -3516,8 +3476,8 @@
msgstr "Espacio libre desconocido"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Espacio libre: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Espacio libre: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3560,6 +3520,7 @@
msgid_plural " (%lu blocks)"
msgstr[0] " (%lu bloque)"
msgstr[1] " (%lu bloques)"
+msgstr[2] " (%lu bloques)"
#, c-format
msgid "Owner: %s/%s"
@@ -3742,6 +3703,7 @@
msgid_plural "%s in %d files"
msgstr[0] "%s en %d archivo"
msgstr[1] "%s en %d archivos"
+msgstr[2] "%s en %d archivos"
msgid "Panelize"
msgstr "Búsqueda externa"
@@ -3761,6 +3723,9 @@
msgid "Unselect"
msgstr "De-seleccionar grupo"
+msgid "Filter"
+msgstr "Filtro"
+
msgid "Do you really want to execute?"
msgstr "¿Realmente quiere ejecutar?"
@@ -3788,11 +3753,23 @@
msgid "Enter command label:"
msgstr "Etiqueta del comando:"
-msgid "Cannot invoke command."
-msgstr "Imposible invocar el comando."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Búsqueda externa:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Fallo al cerrar la tubería"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Búsqueda externa:\n"
+"Fallo de lectura sobre la salida estándar del proceso hijo:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Imposible ejecutar una búsqueda externa en un directorio no local"
@@ -4058,6 +4035,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Incluye la biblioteca ncursesw (versión desconocida)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Incluye la biblioteca libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Sistemas de archivos virtuales:"
@@ -4183,16 +4164,27 @@
"Fin de archivo inesperado\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Archivo de tipo tar inconsistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
"Imposible abrir el archivo %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Archivo extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de archivos virtual EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4308,6 +4300,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Esperando antes de insistir... %d (Ctrl-G para cancelar)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: Imposible traducir dirección a nombre: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: Intento de reconexión %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: Imposible obtener nombre de socket: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: Imposible reconectar con el servidor"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: Familia de direcciones incorrecta"
@@ -4361,6 +4368,14 @@
"Elimine la contraseña o cambie los permisos."
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de archivos virtual SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Atención: No se encuentra el archivo %s\n"
@@ -4394,6 +4409,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr "sftp: Error al convertir a texto la dirección IP remota"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: Estableciendo conexión con %s"
@@ -4405,6 +4423,63 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: Conexión al servidor fracasó: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: Encontrada clave de equipo de tipo no soportado: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: Clave de equipo de tipo desconocido:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"%s (%s)\n"
+"añadido permanentemente a la\n"
+"lista de equipos conocidos."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: Imposible obtener la clave del equipo remoto"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr "sftp: Clave de tipo no soportado, imposible comprobar equipo remoto"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: No se puede evaluar la huella de seguridad del equipo remoto"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"No se puede establecer la autenticidad del equipo\n"
+"%s (%s)\n"
+"La huella de seguridad de %s es\n"
+"SHA1:%s.\n"
+"¿Desea añadirlo a la lista de equipos conocidos y continuar con la conexión?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"se encuentra en la lista de equipos conocidos pero\n"
+"¡LAS CLAVES NO COINCIDEN! ¡PODRÍA SER UN ATAQUE DE «HOMBRE EN MEDIO»!\n"
+"¿Está seguro de querer añadirlo a la lista de equipos conocidos\n"
+"y continuar con la conexión?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: Error al verificar la clave del equipo"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Introduzca la frase de paso para %s"
@@ -4419,7 +4494,7 @@
msgid "sftp: Password is empty."
msgstr "sftp: Contraseña vacía."
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: failure establishing SSH session"
msgstr "sftp: Error al establecer sesión SSH"
msgid "sftp: No file handler data present for reading file"
@@ -4437,33 +4512,6 @@
msgstr "sftp: Listado completo."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "falló la reconexión con %s"
-
-msgid "Authentication failed"
-msgstr "Autenticación fallida"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Error %s creando el directorio %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Error %s eliminando el directorio %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s abriendo archivo remoto %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s eliminando archivo remoto %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s renombrando archivos\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/et.po
^
|
@@ -3,16 +3,17 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Ivar Smolin <okul@linux.ee>, 2021
# Kristjan Räts <kristjanrats@gmail.com>, 2013-2016,2018-2019
-# Priit Jõerüüt <transifex@joeruut.com>, 2020
-# vaba <vaba@riseup.net>, 2020
+# Priit Jõerüüt <transifex@joeruut.com>, 2020-2021
+# Marko Silluste <vaba@riseup.net>, 2020
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Priit Jõerüüt <transifex@joeruut.com>, 2020-2021\n"
"Language-Team: Estonian (http://www.transifex.com/mc/mc/language/et/)\n"
"Language: et\n"
"MIME-Version: 1.0\n"
@@ -77,30 +78,6 @@
msgid "FATAL: not a directory:"
msgstr "Viga: ei ole kataloog:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Viga kasutaja seadete migreerimisel: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Su vanad seaded toodi %s'st üle\n"
-"Freedesktopi soovitatud kataloogidesse.\n"
-"Lisainfot leiad aadressilt\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Su vanad seaded toodi failist %s\n"
-"üle faili %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -189,12 +166,12 @@
msgid "True color not supported with ncurses."
msgstr "Tõelised värvid ei ole toetatud teegiga ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Tõelised värvid ei ole teegi slang selle versiooniga toetatud."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Su terminal ei paista toetavat isegi 256 värvi."
+msgid "True color not supported in this slang version."
+msgstr "Tõelised värvid ei ole teegi slang selle versiooniga toetatud."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Sea keskkonnamuutuja COLORTERM=truecolor, kui su terminal tõesti toetab "
@@ -550,6 +527,9 @@
"Ootamatu viga tütarprotsessist andmete lugemisel funktsioonis select():\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -558,18 +538,6 @@
"Tundmatu viga funktsioonis waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Hoiatus"
-
-msgid "Pipe failed"
-msgstr "Funktsioon pipe nurjus"
-
-msgid "Dup failed"
-msgstr "Funktsioon dup nurjus"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Tõrge vana veatoru paljundamisel"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Kataloogi %s vahemälu sisu on aegunud"
@@ -695,12 +663,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Logi FTP dialoog määratud faili"
-msgid "Set debug level"
-msgstr "Määra silumistase"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Käivitab failivaaturi failile"
@@ -1035,15 +997,6 @@
msgid "Two files are needed to compare"
msgstr "Võrdlemiseks on vaja kahte faili"
-msgid "Choose syntax highlighting"
-msgstr "Valsi süntaksi esiletoomine"
-
-msgid "< Auto >"
-msgstr "<Auto>"
-
-msgid "< Reload Current Syntax >"
-msgstr "<Valitud süntaksi taaslaadimine>"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Laaditakse: %3d%%"
@@ -1078,6 +1031,9 @@
"Fail \"%s\" on liiga suur.\n"
"Kas avada ta ikkagi?"
+msgid "Warning"
+msgstr "Hoiatus"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Viga torust lugemisel: %s"
@@ -1086,14 +1042,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Toru avamine lugemiseks nurjus: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Otsitakse %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Otsitakse %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Failil on jäiku viitasid. Kas võtta need enne salvestamist lahti?"
@@ -1139,9 +1087,6 @@
msgid "Save As"
msgstr "Salvesta kui"
-msgid "Collect completions"
-msgstr "Koonda lõpetamised"
-
msgid "&Quick save"
msgstr "&Kiirsalvestus"
@@ -1172,27 +1117,6 @@
msgid "Cannot save file"
msgstr "Faili salvestamine nurjus"
-msgid "Delete macro"
-msgstr "Kustuta makro"
-
-msgid "Press macro hotkey:"
-msgstr "Vajuta makro kiirklahv:"
-
-msgid "Macro not deleted"
-msgstr "Makrot ei kustutatud"
-
-msgid "Save macro"
-msgstr "Salvesta makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Vajuta makro uus kiirklahv:"
-
-msgid "Repeat last commands"
-msgstr "Korda viimaseid käske"
-
-msgid "Repeat times:"
-msgstr "Korduste arv:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Kinnita faili salvestamine: \"%s\""
@@ -1227,13 +1151,6 @@
msgid "&Local"
msgstr "&Kohalik"
-msgid "Replace"
-msgstr "Asenda"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Teostati %ld asendust"
-
msgid "[NoName]"
msgstr "[Nimetu]"
@@ -1289,8 +1206,8 @@
msgid "Run sort"
msgstr "Räivita sortimine"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Sisesta sortimise suvandid tühikutega eraldatult (vaata manuaali):"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Sorteeri"
@@ -1342,35 +1259,35 @@
"Teksti on muudetud faili salvestamata.\n"
"Jätkamine viskab muudatused ära."
-msgid "In se&lection"
-msgstr "&Valikus"
+msgid "Cancel"
+msgstr "Tühista"
-msgid "&Find all"
-msgstr "&Otsi kõikjalt"
+msgid "Collect completions"
+msgstr "Koonda lõpetamised"
-msgid "Enter replacement string:"
-msgstr "Sisesta asendus string:"
+msgid "NoName"
+msgstr "Nimetu"
-msgid "Replace with:"
-msgstr "Asenda:"
+msgid "Save macro"
+msgstr "Salvesta makro"
-msgid "&Replace"
-msgstr "&Asenda"
+msgid "Press the macro's new hotkey:"
+msgstr "Vajuta makro uus kiirklahv:"
-msgid "A&ll"
-msgstr "&Kõik"
+msgid "Delete macro"
+msgstr "Kustuta makro"
-msgid "&Skip"
-msgstr "&Jäta vahele"
+msgid "Press macro hotkey:"
+msgstr "Vajuta makro kiirklahv:"
-msgid "Confirm replace"
-msgstr "Kinnita asendamine"
+msgid "Macro not deleted"
+msgstr "Makrot ei kustutatud"
-msgid "Cancel"
-msgstr "Tühista"
+msgid "Repeat last commands"
+msgstr "Korda viimaseid käske"
-msgid "NoName"
-msgstr "Nimetu"
+msgid "Repeat times:"
+msgstr "Korduste arv:"
msgid "&Open file..."
msgstr "&Ava fail..."
@@ -1660,6 +1577,45 @@
msgid "Editor options"
msgstr "Redaktori suvandid"
+msgid "In se&lection"
+msgstr "&Valikus"
+
+msgid "&Find all"
+msgstr "&Otsi kõikjalt"
+
+msgid "Enter replacement string:"
+msgstr "Sisesta asendus string:"
+
+msgid "Replace"
+msgstr "Asenda"
+
+msgid "Replace with:"
+msgstr "Asenda:"
+
+msgid "&Replace"
+msgstr "&Asenda"
+
+msgid "A&ll"
+msgstr "&Kõik"
+
+msgid "&Skip"
+msgstr "&Jäta vahele"
+
+msgid "Confirm replace"
+msgstr "Kinnita asendamine"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Otsitakse %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Otsitakse %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Teostati %ld asendust"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1667,8 +1623,8 @@
"Kasutajasõbralik tekstitoimeti, mis\n"
"on loodud Midnight Commanderile."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Autoriõigus (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "Programmist"
@@ -1787,6 +1743,15 @@
msgid "Select language"
msgstr "Vali keel"
+msgid "Choose syntax highlighting"
+msgstr "Valsi süntaksi esiletoomine"
+
+msgid "< Auto >"
+msgstr "<Auto>"
+
+msgid "< Reload Current Syntax >"
+msgstr "<Valitud süntaksi taaslaadimine>"
+
msgid "Load syntax file"
msgstr "Lae süntaksi fail"
@@ -1823,6 +1788,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Sa ei kasuta xtermi või Linuxi konsooli;\n"
+"alamkesta ei saa sisse/välja lülitada."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Midnight Commanderisse tagasipöördumiseks sisesta 'exit'"
@@ -1977,7 +1944,7 @@
msgstr "Nahk:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Varjud"
msgid "Appearance"
msgstr "Välimus"
@@ -2189,19 +2156,6 @@
msgstr "Tööd taustal"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Salasõna teenusele \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domeen:"
-
-msgid "Username:"
-msgstr "Kasutaja:"
-
-msgid "SMB authentication"
-msgstr "SMB autentimine"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2407,12 +2361,6 @@
msgid "Cannot change directory"
msgstr "Kataloogi vahetamine nurjus"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr "Määra failinimede filtri väljend"
-
#, c-format
msgid "Link %s to:"
msgstr "Loo link %s:"
@@ -2518,9 +2466,6 @@
msgid "Shell link to machine"
msgstr "Kesta ühendus masinaga"
-msgid "SMB link to machine"
-msgstr "SMB ühendus masinaga"
-
msgid "Undelete files on an ext2 file system"
msgstr "Failide taastamine ext2 failisüsteemis"
@@ -2559,18 +2504,26 @@
"Ajutise käsufaili loomine nurjus\n"
"%s"
+msgid "Pipe failed"
+msgstr "Funktsioon pipe nurjus"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr "%s%s faili viga"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Versiooniga 3.0 muutus faili %smc.ext vormindus. Tundub, et paigaldus ei "
-"õnnestunud. Palun hangi uus koopia Midnight Commanderi paketist."
#, c-format
msgid "%s file error"
@@ -2578,11 +2531,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Faili %s vormindus muutus versioonis 3.0. Sa võiksid kas kopeerida faili "
-"%smc.ext või kasutada seda faili tooriku näidisena."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopeerimine"
@@ -2876,6 +2827,15 @@
msgid "(stalled)"
msgstr "(seiskunud)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Hoia"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2892,12 +2852,6 @@
"Sihtfaili \"%s\" sulgemine nurjus\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Saadi lõpetamata fail. Kas hoida see alles?"
-
-msgid "&Keep"
-msgstr "&Hoia"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3016,8 +2970,8 @@
msgstr "Taustaprotsess: Fail on olemas"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Faile töödeldud: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3044,8 +2998,8 @@
msgstr "Kokku: %s"
#, c-format
-msgid " Total: %s/%s "
-msgstr "Kokku: %s/%s"
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Lähtekoht"
@@ -3097,7 +3051,7 @@
msgstr "&Loendi vormindus"
msgid "&Sort order..."
-msgstr "&Sortimine..."
+msgstr ""
msgid "&Filter..."
msgstr "Filtreeri&mine..."
@@ -3111,11 +3065,8 @@
msgid "S&hell link..."
msgstr "K&esta ühendus..."
-msgid "S&FTP link..."
-msgstr "S&FTP ühendus..."
-
-msgid "SM&B link..."
-msgstr "SM&B ühendus..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Pa&neelile"
@@ -3196,7 +3147,7 @@
msgstr "&Kuva/peida paneelid"
msgid "&Compare directories"
-msgstr "Kataloogi&de võrdlemine"
+msgstr "Võr&dle katalooge"
msgid "C&ompare files"
msgstr "Võ&rdle faile"
@@ -3328,6 +3279,9 @@
msgid "&Find recursively"
msgstr "&Otsi rekursiivselt"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "&Eira peidetud"
@@ -3494,8 +3448,8 @@
msgstr "Puudub mahu informatsioon"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Vaba ruum: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3739,6 +3693,9 @@
msgid "Unselect"
msgstr "Tühista valik"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Kas sa soovid tõesti käivitada?"
@@ -3766,11 +3723,18 @@
msgid "Enter command label:"
msgstr "Sisesta käsu silt:"
-msgid "Cannot invoke command."
-msgstr "Käsu käivitamine nurjus."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Toru sulgemine nurjus"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Väliskäsu paneelile saatmine töötab ainult kohalike kataloogidega"
@@ -3936,6 +3900,9 @@
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"GNU Midnight Commander juba\n"
+"töötab selles terminalis.\n"
+"Alamkesta tugi keelatakse."
#, c-format
msgid ""
@@ -3979,34 +3946,34 @@
msgstr "Hoiatus: sisenemine kataloogi %s nurjus.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "Sisseehitatud toimeti ja Aspelli toega"
msgid "With builtin Editor"
-msgstr ""
+msgstr "Sisseehitatud toimetiga"
msgid "With optional subshell support"
-msgstr ""
+msgstr "Valikulise alamkesta toega"
msgid "With subshell support as default"
-msgstr ""
+msgstr "Alamkesta tugi vaikeväärtusena"
msgid "With support for background operations"
-msgstr ""
+msgstr "Taustategevuste toega"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "Hiire toega xtermis ja Linuxi konsoolil"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "Hiire toega xtermis"
msgid "With support for X11 events"
-msgstr ""
+msgstr "X11 sündmuste toega"
msgid "With internationalization support"
-msgstr ""
+msgstr "Internatsionaliseerimise toega"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "Mitme kooditabeli toega"
msgid "With ext2fs attributes support"
msgstr "Sealhulgas ext2fs atribuutide tugi"
@@ -4017,20 +3984,24 @@
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "Kompileerimisel on kaasatud S-Lang %s terminfo andmekoguga\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Kompileerimisel on kaasatud ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Kompileerimisel on kaasatud ncurses (versioon pole teada)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "Kompileerimisel on kaasatud ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
+msgstr "Kompileerimisel on kaasatud ncursesw (versioon pole teada)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
msgstr ""
msgid "Virtual File Systems:"
@@ -4158,16 +4129,27 @@
"Ootamatu faili lõpp\n"
" %s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Tar arhiiv sisaldab vasturääkivusi"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s arhiivi avamine nurjus\n"
-" %s"
+"%s arhiivi avamine ei õnnestu\n"
+"%s:\n"
+"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Vasturääkiv extfs arhiiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"EXTFS virtuaalne failisüsteem:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4283,6 +4265,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Oodatakse kordamist... %d (Ctrl-G tühistab)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: vigane aadressi perekond"
@@ -4336,6 +4333,14 @@
"Kustuta failist salasõna või muuda õigused"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"SFS virtuaalne failisüsteem:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: hoiatus: faili %s ei leitud\n"
@@ -4369,6 +4374,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: ühenduse loomine masinaga %s"
@@ -4380,6 +4388,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: ühenduse loomine masinaga nurjus: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: sisesta paroolifraas masinale %s"
@@ -4394,8 +4446,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: parool on tühi."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: nurjus SSH ühenduse loomine"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: SSH sessiooni loomine ei õnnestu"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: faili lugemiseks puuduvad faili käsitleja andmed"
@@ -4412,33 +4464,6 @@
msgstr "sftp: Loendamine lõpetatud."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "Ühenduse taastamine serveriga %s nurjus"
-
-msgid "Authentication failed"
-msgstr "Autentimine ebaõnnestus"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Viga %s kataloogi %s loomisel"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Viga %s kataloogi %s kustutamisel"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s avatakse kaugfaili %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s kustutatakse kaugfaili %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s failide ümbernimetamine\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
@@ -4633,7 +4658,7 @@
"%s"
msgid "Cannot view: not a regular file"
-msgstr "Vaataamine ei ole võimalik: tegemist ei ole hariliku failiga"
+msgstr "Vaatamine pole võimalik: see pole harilik fail"
#, c-format
msgid ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/eu.po
^
|
@@ -8,10 +8,11 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Iñigo Salvador Azurmendi <xalba@euskalnet.net>, "
+"2011,2015-2019\n"
"Language-Team: Basque (http://www.transifex.com/mc/mc/language/eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
@@ -76,30 +77,6 @@
msgid "FATAL: not a directory:"
msgstr "LARRIA: ez da direktorioa:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Errore bat gertatu da erabiltzaile-ezarpenak migratzean: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Zure ezarpen zaharrak %s-tik \n"
-"Freedesktop-ek gomendatutako direktorioetara migratu dira.\n"
-"Info gehiago nahi baduzu, mesedez bisitatu\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Zure ezarpen zaharrak %s-tik⏎\n"
-"%s-ra migratu dira⏎\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -188,12 +165,12 @@
msgid "True color not supported with ncurses."
msgstr "Benetako-kolorea ez du onartzen ncurses-ek."
-msgid "True color not supported in this slang version."
-msgstr "Benetako-kolorea ez da onartzen slang bertsio honetan."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Ematen du zure terminalak 256 kolore ere ez dituela onartzen."
+msgid "True color not supported in this slang version."
+msgstr "Benetako-kolorea ez da onartzen slang bertsio honetan."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Ezarri COLORTERM=truecolor zure terminalak benetako-kolorea onartzen badu."
@@ -548,6 +525,9 @@
"Ustekabeko errorea select()-ean ume prozesutik datuak irakurtzean:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -556,18 +536,6 @@
"Ustekabeko errorea waitpid()-en:\n"
"%s"
-msgid "Warning"
-msgstr "Abisua"
-
-msgid "Pipe failed"
-msgstr "Hodiak huts egin du"
-
-msgid "Dup failed"
-msgstr "\"Dup\"-ek huts egin du"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Akatsa akats hodi zaharra bikoizterakoan (\"dup\")"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "%s(r)en direktorio cache-a iraungi egin da"
@@ -693,12 +661,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Gorde ftp elkarrizketa zehaztutako fitxategian"
-msgid "Set debug level"
-msgstr "Ezarri arazketa maila"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Fitxategi-ikustailea fitxategian abiarazten du"
@@ -1034,15 +996,6 @@
msgid "Two files are needed to compare"
msgstr "Bi fitxategi behar dira konparatzeko"
-msgid "Choose syntax highlighting"
-msgstr "Hautatu sintaxi nabarmentzea"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Birzamatu uneko sintaxia >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Zamatzen: %3d%%"
@@ -1077,6 +1030,9 @@
"\"%s\" fitxategia handiegia da.\n"
"Ireki hala ere?"
+msgid "Warning"
+msgstr "Abisua"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Akatsa hoditik irakurtzerakoan: %s"
@@ -1085,14 +1041,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Hodia irakurtzeko ezin ireki: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "%s bilatzen: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "%s bilatzen"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Fitxategiak esteka-trinkoak dauzka. Deslotu gorde aurretik?"
@@ -1138,9 +1086,6 @@
msgid "Save As"
msgstr "Gorde honela"
-msgid "Collect completions"
-msgstr "Osatzeak bildu"
-
msgid "&Quick save"
msgstr "&Azker gordetzea"
@@ -1171,27 +1116,6 @@
msgid "Cannot save file"
msgstr "Fitxategia ezin gorde"
-msgid "Delete macro"
-msgstr "Ezabatu makroa"
-
-msgid "Press macro hotkey:"
-msgstr "Sakatu makroaren laster-tekla:"
-
-msgid "Macro not deleted"
-msgstr "Makro ez ezabatua"
-
-msgid "Save macro"
-msgstr "Gorde makroa"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Sakatu makroaren laster-tekla berria:"
-
-msgid "Repeat last commands"
-msgstr "Errepikatu azken komandoa"
-
-msgid "Repeat times:"
-msgstr "Zenbat aldiz errepikatu:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Berretsi gorde fitxategia: \"%s\""
@@ -1226,13 +1150,6 @@
msgid "&Local"
msgstr "&Lokala"
-msgid "Replace"
-msgstr "Ordezkatu"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld ordezkapen egin dira"
-
msgid "[NoName]"
msgstr "[Izengabe]"
@@ -1288,10 +1205,8 @@
msgid "Run sort"
msgstr "Exekutatu \"sort\""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Sartu sailkatzeko aukerak (begiratu eskuliburu (\"man\") orrialdea) zuriune "
-"bitartez banatuta:"
msgid "Sort"
msgstr "Sailkatu"
@@ -1343,35 +1258,35 @@
"Uneko testua aldatu da baino ez da fitxategian gorde.\n"
"Jarraitzeak aldaketa hauek baztertuko ditu."
-msgid "In se&lection"
-msgstr "&Hautapenean"
+msgid "Cancel"
+msgstr "Utzi"
-msgid "&Find all"
-msgstr "&Aurkitu dena"
+msgid "Collect completions"
+msgstr "Osatzeak bildu"
-msgid "Enter replacement string:"
-msgstr "Sartu ordezko katea:"
+msgid "NoName"
+msgstr "Izengabe"
-msgid "Replace with:"
-msgstr "Ordezkatu honekin:"
+msgid "Save macro"
+msgstr "Gorde makroa"
-msgid "&Replace"
-msgstr "&Ordeztu"
+msgid "Press the macro's new hotkey:"
+msgstr "Sakatu makroaren laster-tekla berria:"
-msgid "A&ll"
-msgstr "&Guztia"
+msgid "Delete macro"
+msgstr "Ezabatu makroa"
-msgid "&Skip"
-msgstr "&Saltatu"
+msgid "Press macro hotkey:"
+msgstr "Sakatu makroaren laster-tekla:"
-msgid "Confirm replace"
-msgstr "Berretsi ordezkapena"
+msgid "Macro not deleted"
+msgstr "Makro ez ezabatua"
-msgid "Cancel"
-msgstr "Utzi"
+msgid "Repeat last commands"
+msgstr "Errepikatu azken komandoa"
-msgid "NoName"
-msgstr "Izengabe"
+msgid "Repeat times:"
+msgstr "Zenbat aldiz errepikatu:"
msgid "&Open file..."
msgstr "&Ireki fitxategia..."
@@ -1661,6 +1576,45 @@
msgid "Editor options"
msgstr "Editorearen aukerak"
+msgid "In se&lection"
+msgstr "&Hautapenean"
+
+msgid "&Find all"
+msgstr "&Aurkitu dena"
+
+msgid "Enter replacement string:"
+msgstr "Sartu ordezko katea:"
+
+msgid "Replace"
+msgstr "Ordezkatu"
+
+msgid "Replace with:"
+msgstr "Ordezkatu honekin:"
+
+msgid "&Replace"
+msgstr "&Ordeztu"
+
+msgid "A&ll"
+msgstr "&Guztia"
+
+msgid "&Skip"
+msgstr "&Saltatu"
+
+msgid "Confirm replace"
+msgstr "Berretsi ordezkapena"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "%s bilatzen: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "%s bilatzen"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld ordezkapen egin dira"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1668,7 +1622,7 @@
"Testu editore lagunkoi bat\n"
"Midnight Commander-rarentzako idatzia."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1788,6 +1742,15 @@
msgid "Select language"
msgstr "Hautatu hizkuntza"
+msgid "Choose syntax highlighting"
+msgstr "Hautatu sintaxi nabarmentzea"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Birzamatu uneko sintaxia >"
+
msgid "Load syntax file"
msgstr "Zamatu sintaxi fitxategia"
@@ -2194,19 +2157,6 @@
msgstr "Hondoko lanak"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s(r)entzako pasahitza"
-
-msgid "Domain:"
-msgstr "Domeinua:"
-
-msgid "Username:"
-msgstr "Erabiltzaile izena:"
-
-msgid "SMB authentication"
-msgstr "SMB autentikazioa"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2412,12 +2362,6 @@
msgid "Cannot change directory"
msgstr "Direktorioa ezin aldatu"
-msgid "Filter"
-msgstr "Iragazi"
-
-msgid "Set expression for filtering filenames"
-msgstr "Ezarri fitxategi izenak iragazteko adierazpena"
-
#, c-format
msgid "Link %s to:"
msgstr "Estekatu %s hona:"
@@ -2523,9 +2467,6 @@
msgid "Shell link to machine"
msgstr "Shell esteka makinara"
-msgid "SMB link to machine"
-msgstr "SMB esteka makinara"
-
msgid "Undelete files on an ext2 file system"
msgstr "Berreskuratu ezabatutako fitxategiak ext2 fitxategi sistema batean"
@@ -2564,19 +2505,26 @@
"%s\n"
"aldiuneko komando fitxategia ezin sortu"
+msgid "Pipe failed"
+msgstr "Hodiak huts egin du"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s fitxategi akatsa"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"%smc.ext fitxategiaren formatua aldatu egin da 3.0 bertsioarekin. "
-"Instalatzeak huts egin duela diruri. Mesedez eskuratu kopia berri bat "
-"Midnight Commander paketetik."
#, c-format
msgid "%s file error"
@@ -2584,12 +2532,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"%s fitxategiaren formatua aldatu egin da 3.0 bertsioarekin. %smc.ext "
-"fitxategitik kopiatu edo fitxategi hori nola idatzi adibide gisa erabili "
-"nahi izan dezakezu."
msgid "DialogTitle|Copy"
msgstr "Kopiatu"
@@ -2885,6 +2830,15 @@
msgid "(stalled)"
msgstr "(trabatuta)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Gorde"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2901,12 +2855,6 @@
"Ezin da itxi \"%s\" helburu fitxategia\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Osatu gabeko fitxategia eskuratu da. Mantendu?"
-
-msgid "&Keep"
-msgstr "&Gorde"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3025,8 +2973,8 @@
msgstr "Hondoko prozesua: Fitxategia existitzen da"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Prozesatutako fitxategiak: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3053,8 +3001,8 @@
msgstr " Guztira: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Guztira: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Iturburua"
@@ -3106,7 +3054,7 @@
msgstr "&Zerrenda formatua"
msgid "&Sort order..."
-msgstr "&Sailkatzeko ordena..."
+msgstr ""
msgid "&Filter..."
msgstr "I&ragazkia..."
@@ -3120,11 +3068,8 @@
msgid "S&hell link..."
msgstr "S&hell esteka..."
-msgid "S&FTP link..."
-msgstr "S&FTP esteka..."
-
-msgid "SM&B link..."
-msgstr "S&MB esteka..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Panelerat&u"
@@ -3337,6 +3282,9 @@
msgid "&Find recursively"
msgstr "&Bilatu errekurtsiboki"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "B&aztertu ezkutukoak"
@@ -3503,8 +3451,8 @@
msgstr "Ez dago leku-informaziorik"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Leku askea: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3748,6 +3696,9 @@
msgid "Unselect"
msgstr "Hautua kendu"
+msgid "Filter"
+msgstr "Iragazi"
+
msgid "Do you really want to execute?"
msgstr "Beneta exekutatu nahi duzu?"
@@ -3775,11 +3726,18 @@
msgid "Enter command label:"
msgstr "Sartu komandoaren etiketa:"
-msgid "Cannot invoke command."
-msgstr "Ezin da komandoa deitu."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Hodi ixteak huts egin du"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -4043,6 +4001,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Alegiazko fitxategi sistemak (VFS):"
@@ -4168,16 +4130,22 @@
"Ustekabeko fitxategi bukaera\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "tar artxibo inkoherentea"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s artxiboa ezin ireki\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "extfs artxibo inkoherentea"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4294,6 +4262,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Berriz saiatzeko itxoiten... %d (Ctrl-G uzteko)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: baliogabeko helbide familia"
@@ -4347,6 +4330,12 @@
"Kendu pasahitza edo zuzendu modua"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Abisua: %s fitxategia ez da aurkitu\n"
@@ -4380,6 +4369,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: %s-ra konektatzen"
@@ -4391,6 +4383,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: zerbitzarira konexioak huts egin du: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Sartu %s-rako pasaesaldia"
@@ -4405,8 +4441,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: pasahitza hutsik dago."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Hutsegitea SSH saioa ezartzean"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Ez dago fitxategi maneiatzaile daturik fitxategia irakurtzeko"
@@ -4423,33 +4459,6 @@
msgstr "sftp: Zerrenda osatuta."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "%s(e)ra birkonektatzeak huts egin du"
-
-msgid "Authentication failed"
-msgstr "Autentifikatzeak huts egin du"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "%s akatsa %s direktorioa sortzerakoan"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "%s akatsa %s direktorioa ezabatzerakoan"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s urruneko %s fitxategia irekitzen"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s urruneko %s fitxategia ezabatzen"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s fitxategiak berrizendatzen\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/fa.po
^
|
@@ -11,10 +11,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Arya Hadi <arya.hadi97@gmail.com>, 2017\n"
"Language-Team: Persian (http://www.transifex.com/mc/mc/language/fa/)\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
@@ -76,24 +76,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "هنگام انتقال اطلاعات کاربر خطایی رخ داد: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -168,10 +150,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -523,24 +505,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "اخطار"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -666,12 +639,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr "تنظیم سطح خطایابی"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -961,15 +928,6 @@
msgid "Two files are needed to compare"
msgstr "دو فایل برای مقایسه لازم است"
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1002,6 +960,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "اخطار"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1010,14 +971,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "در حال جستجوی %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1063,9 +1016,6 @@
msgid "Save As"
msgstr "ذخیره به عنوان"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "ذخیرهی سریع"
@@ -1096,27 +1046,6 @@
msgid "Cannot save file"
msgstr "نمیتوان فایل را ذخیره کرد"
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "ذخیره این فایل را تایید کنید: \"%s\""
@@ -1151,13 +1080,6 @@
msgid "&Local"
msgstr "محلی"
-msgid "Replace"
-msgstr "جایگزین کردن"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr "]بدون نام["
@@ -1209,7 +1131,7 @@
msgid "Run sort"
msgstr "اجرای مرتبسازی"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1260,34 +1182,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "لغو"
-msgid "&Find all"
-msgstr "پیدا کردن همه"
+msgid "Collect completions"
+msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
-msgstr "همه"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "چشمپوشی"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "لغو"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1578,12 +1500,51 @@
msgid "Editor options"
msgstr "تنظیمات ویرایشگر"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr "پیدا کردن همه"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr "جایگزین کردن"
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr "همه"
+
+msgid "&Skip"
+msgstr "چشمپوشی"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "در حال جستجوی %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1703,6 +1664,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2093,19 +2063,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr "نام کاربری:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2309,12 +2266,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr "فیلتر"
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2418,9 +2369,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2455,14 +2403,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2472,8 +2430,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2708,6 +2666,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2720,12 +2687,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2832,7 +2793,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2860,7 +2821,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2927,10 +2888,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3144,6 +3102,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3306,7 +3267,7 @@
msgstr "اطلاعات فاصله موجود نیست"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3551,6 +3512,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr "فیلتر"
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3578,10 +3542,17 @@
msgid "Enter command label:"
msgstr "برچسب فرمان را وارد کنید:"
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3817,6 +3788,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "فایل سیستمهای مجازی:"
@@ -3928,13 +3903,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4051,6 +4033,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: خانواده آدرسهای نامعتبر"
@@ -4102,6 +4099,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4131,6 +4134,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4142,62 +4148,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/fi.po
^
|
@@ -3,16 +3,17 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Nikolay Korotkiy <sikmir@gmail.com>, 2017-2019
+# Kimmo Kujansuu <mrkujansuu@gmail.com>, 2021
+# Nikolay Korotkiy <sikmir@disroot.org>, 2017-2019
# Slava Zanko <slavazanko@gmail.com>, 2011
# hondakassi <kasvain@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Kimmo Kujansuu <mrkujansuu@gmail.com>, 2021\n"
"Language-Team: Finnish (http://www.transifex.com/mc/mc/language/fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
@@ -32,20 +33,20 @@
msgstr "Kääntäminen kielestä %s kieleen %s epäonnistui"
msgid "Event system already initialized"
-msgstr ""
+msgstr "Tapahtumat on jo alustettu"
msgid "Failed to initialize event system"
-msgstr ""
+msgstr "Tapahtumien alustaminen epäonnistui"
msgid "Event system not initialized"
-msgstr ""
+msgstr "Tapahtumia ei ole alustettu"
msgid "Check input data! Some of parameters are NULL!"
-msgstr ""
+msgstr "Tarkista syöttötiedot! Jotkin parametrit ovat NULL!"
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr ""
+msgstr "Ryhmää '%s' ei voi luoda tapahtumille!"
#, c-format
msgid "Unable to create event '%s'!"
@@ -75,42 +76,28 @@
msgstr "Hakemiston %s luonti epäonnistui"
msgid "FATAL: not a directory:"
-msgstr ""
-
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
+msgstr "FATAL: ei hakemistoa:"
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
msgstr ""
+"Luku alueen ulkopuolella (pitäisi olla tavualueella, 0 <= n <= 0xFF, "
+"ilmaistuna heksalla)"
msgid "Invalid character"
-msgstr ""
+msgstr "Virheellinen merkki"
msgid "Unmatched quotes character"
-msgstr ""
+msgstr "Ei vastaa lainausmerkkeihin"
#, c-format
msgid ""
"Hex pattern error at position %d:\n"
"%s."
msgstr ""
+"Hex-kaavan virhe paikassa %d:\n"
+"%s."
msgid "Search string not found"
msgstr "Etsittyä merkkijonoa ei löydy"
@@ -119,26 +106,26 @@
msgstr "Ei ole vielä toteutettu"
msgid "Num of replace tokens not equal to num of found tokens"
-msgstr ""
+msgstr "Korvaavien tunnusten lukumäärä ei ole sama kuin löydettyjen määrä"
#, c-format
msgid "Invalid token number %d"
msgstr "Token %d ei ole validi"
msgid "Regular expression error"
-msgstr ""
+msgstr "Säännöllisen lausekkeen virhe"
msgid "No&rmal"
msgstr "Ta&vallinen"
msgid "Re&gular expression"
-msgstr ""
+msgstr "&Säännöllinen lauseke"
msgid "He&xadecimal"
-msgstr ""
+msgstr "He&xadesimaali"
msgid "Wil&dcard search"
-msgstr ""
+msgstr "Merkki&haku"
#, c-format
msgid ""
@@ -162,6 +149,9 @@
"%s\n"
"Default skin has been loaded"
msgstr ""
+"Ei voi käyttää '%s' ulkoasua täydellä värikartalla:\n"
+"%s\n"
+"Oletus ulkoasu on ladattu"
#, c-format
msgid ""
@@ -169,21 +159,25 @@
"on non-256 colors terminal.\n"
"Default skin has been loaded"
msgstr ""
+"Ei voi käyttää '%s' ulkoasua 256 värlillä\n"
+"terminaalissa joka ei tue värikarttaa-256\n"
+"Oletus ulkoasu on ladattu"
msgid "True color not supported with ncurses."
-msgstr ""
-
-msgid "True color not supported in this slang version."
-msgstr ""
+msgstr "Täyttä värikarttaa ei ncurses tue."
msgid "Your terminal doesn't even seem to support 256 colors."
-msgstr ""
+msgstr "Päätteesi ei näytä edes tukevan 256 värikarttaa."
+
+msgid "True color not supported in this slang version."
+msgstr "Täyttä värikarttaa ei tueta tässä slang versiossa."
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
+"Aseta COLORTERM=truecolor, jos pääte todella tukee täydellistä värikarttaa."
msgid "Escape"
-msgstr ""
+msgstr "Esc"
msgid "Function key 1"
msgstr "Funktio 1"
@@ -252,37 +246,37 @@
msgstr ""
msgid "Backspace"
-msgstr ""
+msgstr "Askelpalautin"
msgid "Up arrow"
-msgstr ""
+msgstr "Ylänuoli"
msgid "Down arrow"
-msgstr ""
+msgstr "Alanuoli"
msgid "Left arrow"
-msgstr ""
+msgstr "Vasen nuoli"
msgid "Right arrow"
-msgstr ""
+msgstr "Oikea nuoli"
msgid "Insert"
-msgstr ""
+msgstr "Insert"
msgid "Delete"
-msgstr ""
+msgstr "Delete"
msgid "Home"
-msgstr ""
+msgstr "Home"
msgid "End key"
msgstr "End"
msgid "Page Up"
-msgstr ""
+msgstr "Page Up"
msgid "Page Down"
-msgstr ""
+msgstr "Page Down"
msgid "/ on keypad"
msgstr "/ keypadilla"
@@ -372,10 +366,10 @@
msgstr "Pilkku"
msgid "Apostrophe"
-msgstr ""
+msgstr "Heittomerkki"
msgid "Colon"
-msgstr ""
+msgstr "Kaksoispiste"
msgid "Semicolon"
msgstr "Puolipiste"
@@ -399,13 +393,13 @@
msgstr "Prosenttimerkki"
msgid "Caret"
-msgstr ""
+msgstr "Kursori"
msgid "Tilda"
msgstr "Tilde"
msgid "Prime"
-msgstr ""
+msgstr "Heittomerkki"
msgid "Underline"
msgstr "Alleviivaus"
@@ -417,10 +411,10 @@
msgstr "Putki"
msgid "Left parenthesis"
-msgstr ""
+msgstr "Sulku vasen"
msgid "Right parenthesis"
-msgstr ""
+msgstr "Sulku oikea"
msgid "Left bracket"
msgstr "Vasen sarake"
@@ -429,10 +423,10 @@
msgstr "Oikea sarake"
msgid "Left brace"
-msgstr ""
+msgstr "Hakasulku vasen"
msgid "Right brace"
-msgstr ""
+msgstr "Hakasulku oikea"
msgid "Enter"
msgstr "Enter"
@@ -466,28 +460,34 @@
msgstr "Vaihto"
msgid "The TERM environment variable is unset!\n"
-msgstr ""
+msgstr "TERM-ympäristön muuttujaa ei ole asetettu!\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Ei voi tarkistaa SIGWINCH -putkea"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Ei voi luoda putkea SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Ei voitu määrittää kirjoituksen loppua SIGWINCH putkessa: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Ei voitu määrittää lukemisen loppua SIGWINCH putkessa: %s (%d)\n"
#, c-format
msgid ""
@@ -504,49 +504,44 @@
msgstr "kt"
msgid "KiB"
-msgstr ""
+msgstr "KiB"
msgid "MB"
msgstr "Mt"
msgid "MiB"
-msgstr ""
+msgstr "MiB"
msgid "GB"
msgstr "Gt"
msgid "GiB"
-msgstr ""
+msgstr "GiB"
msgid "Cannot create pipe descriptor"
-msgstr ""
+msgstr "Putken kuvausta ei voi luoda"
msgid "Cannot create pipe streams"
-msgstr ""
+msgstr "Ei voitu luoda putken virtausta"
#, c-format
msgid ""
"Unexpected error in select() reading data from a child process:\n"
"%s"
msgstr ""
+"Odottamaton virhe select() luettaessa dataa aliprosessista:\n"
+"%s"
+
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-
-msgid "Warning"
-msgstr "Varoitus"
-
-msgid "Pipe failed"
-msgstr "Virheellinen putki"
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
+"Odottamaton virhe waitpid():\n"
+"%s"
#, c-format
msgid "Directory cache expired for %s"
@@ -554,11 +549,11 @@
#, c-format
msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %3d%% (%lld) tavua siirretty"
#, c-format
msgid "%s: %s: %s %lld bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %lld tavua siirretty"
msgid "Starting linear transfer..."
msgstr "Aloitetaan lineaarinen transferrointi..."
@@ -567,7 +562,7 @@
msgstr "Tuodaan tiedostoa"
msgid "Changes to file lost"
-msgstr ""
+msgstr "Muutokset tiedostoon menetetty"
#, c-format
msgid "%s is not a directory\n"
@@ -600,7 +595,7 @@
msgstr "Ei voi jäsentää:"
msgid "More parsing errors will be ignored."
-msgstr ""
+msgstr "Lisää jäsentämisen virheitä ei oteta huomioon."
msgid "Internal error:"
msgstr "Sisäinen virhe:"
@@ -616,7 +611,7 @@
#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
msgid "DialogTitle|History cleanup"
-msgstr ""
+msgstr "DialogTitle|Historian puhdistus"
msgid "Do you want clean this history?"
msgstr "Haluatko pyyhkiä tämän historian?"
@@ -647,40 +642,34 @@
msgstr "&Keskeytä"
msgid "Displays the current version"
-msgstr ""
+msgstr "Näyttää nykyisen version"
msgid "Print data directory"
-msgstr ""
+msgstr "Tulosta hakemistoon"
msgid "Print extended info about used data directories"
-msgstr ""
+msgstr "Tulosta lisätietoja kuten hakemiston käyttämä tila"
msgid "Print configure options"
-msgstr ""
+msgstr "Tulosta määrityksen vaihtoehdot"
msgid "Print last working directory to specified file"
-msgstr ""
+msgstr "Tulosta viimeinen työhakemisto määrättyyn tiedostoon"
msgid "<file>"
msgstr "<file>"
msgid "Enables subshell support (default)"
-msgstr ""
+msgstr "Ottaa subshell tuen käyttöön (oletus) "
msgid "Disables subshell support"
-msgstr ""
+msgstr "Poistaa subshell tuen käytöstä"
msgid "Log ftp dialog to specified file"
-msgstr ""
-
-msgid "Set debug level"
-msgstr "Aseta debug-taso"
-
-msgid "<integer>"
-msgstr "<integer>"
+msgstr "Kirjaa ftp kyselyt tiedostoon"
msgid "Launches the file viewer on a file"
-msgstr ""
+msgstr "Käynnistää tiedoston katseluohjelman"
msgid "Edit files"
msgstr "Muokkaa tiedostoja"
@@ -695,19 +684,19 @@
msgstr "Ota X11-tuki pois käytöstä"
msgid "Tries to use an old highlight mouse tracking"
-msgstr ""
+msgstr "Yrittää käyttää seurantaan vanhaa hiiren korostusta"
msgid "Disable mouse support in text version"
msgstr "Ota hiirituki pois käytöstä tekstiversiossa"
msgid "Tries to use termcap instead of terminfo"
-msgstr ""
+msgstr "Yrittään käyttää termcap, terminfo:n sijaan"
msgid "To run on slow terminals"
-msgstr ""
+msgstr "Hitaissa päätteissä ajaminen"
msgid "Use stickchars to draw"
-msgstr ""
+msgstr "Käytä pylväitä piirtämiseen"
msgid "Resets soft keys on HP terminals"
msgstr ""
@@ -779,7 +768,7 @@
msgstr "tiedosto"
msgid "file1 file2"
-msgstr ""
+msgstr "tiedosto1 tiedosto2"
msgid "[this_dir] [other_panel_dir]"
msgstr "[this_dir] [other_panel_dir]"
@@ -801,16 +790,16 @@
msgstr "Terminaalin asetukset"
msgid "Arguments parse error!"
-msgstr ""
+msgstr "Argumenttien rakennevirhe!"
msgid "No arguments given to the viewer."
-msgstr ""
+msgstr "Katseluohjelmalle ei annettu argumentteja."
msgid "Two files are required to envoke the diffviewer."
-msgstr ""
+msgstr "Kaksi tiedostoa tarvitaan diffviewerin käynnistämiseksi."
msgid "Background protocol error"
-msgstr ""
+msgstr "Taustaprosessin protokollavirhe"
msgid "Reading failed"
msgstr "Luku epäonnistui"
@@ -819,15 +808,17 @@
msgstr "Taustaprosessin virhe"
msgid "Unknown error in child"
-msgstr ""
+msgstr "Tuntematon virhe aliprosessissa"
msgid "Child died unexpectedly"
-msgstr ""
+msgstr "Aliprosessi kuoli yllättäin"
msgid ""
"Background process sent us a request for more arguments\n"
"than we can handle."
msgstr ""
+"Taustaprosessi lähetti meille pyynnön lisätä argumentteja\n"
+"enemmän kuin pystymme käsittelemään."
msgid "&Dismiss"
msgstr "&Kuittaa"
@@ -858,6 +849,8 @@
"Cannot create temporary diff file\n"
"%s"
msgstr ""
+"Väliaikaista diff-tiedostoa ei voi luoda\n"
+"%s"
#, c-format
msgid ""
@@ -865,24 +858,29 @@
"%s%s\n"
"%s"
msgstr ""
+"Ei voi luoda varmuuskopion tiedostoa\n"
+"%s%s\n"
+"%s"
#, c-format
msgid ""
"Cannot create temporary merge file\n"
"%s"
msgstr ""
+"Väliaikaista merge-tiedostoa ei voi luoda\n"
+"%s"
msgid "&Fastest (Assume large files)"
-msgstr ""
+msgstr "&Nopein (oleta suuria tiedostoja)"
msgid "&Minimal (Find a smaller set of change)"
-msgstr ""
+msgstr "&Minimaalinen (etsi pieniä muutoksia)"
msgid "Diff algorithm"
msgstr "Diff-algoritmi"
msgid "Diff extra options"
-msgstr ""
+msgstr "Diff lisäominaisuudet"
msgid "&Ignore case"
msgstr ""
@@ -900,7 +898,7 @@
msgstr ""
msgid "Diff Options"
-msgstr ""
+msgstr "Diff asetukset"
msgid "Edit"
msgstr "Muokkaa"
@@ -909,13 +907,13 @@
msgstr "Muokkaus on pois käytöstä"
msgid "Goto line (left)"
-msgstr ""
+msgstr "Mene riville (vasen)"
msgid "Goto line (right)"
-msgstr ""
+msgstr "Mene riville (oikea)"
msgid "Enter line:"
-msgstr ""
+msgstr "Anna rivi:"
msgid "ButtonBar|Help"
msgstr ""
@@ -942,19 +940,21 @@
msgstr "Poistu"
msgid "File(s) was modified. Save with exit?"
-msgstr ""
+msgstr "Tiedostot ovat muuttuneet. Tallenna ja poistu?"
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file(s)?"
msgstr ""
+"Midnight Commander suljetaan.\n"
+"Tallenna muuttuneet tiedostot?"
msgid "Diff:"
-msgstr ""
+msgstr "Diff:"
#, c-format
msgid "\"%s\" is a directory"
-msgstr ""
+msgstr "\"%s\" on hakemisto"
#, c-format
msgid ""
@@ -963,19 +963,10 @@
msgstr ""
msgid "Diff viewer: invalid mode"
-msgstr ""
+msgstr "Diff viewer: virheellinen tila"
msgid "Two files are needed to compare"
-msgstr ""
-
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
+msgstr "Vertailuun tarvitaan kaksi tiedostoa"
#, c-format
msgid "Loading: %3d%%"
@@ -997,136 +988,109 @@
#, c-format
msgid "Cannot get size/permissions for %s"
-msgstr ""
+msgstr "Ei saada kohteen %s kokoa/käyttöoikeuksia"
#, c-format
msgid "\"%s\" is not a regular file"
-msgstr ""
+msgstr "\"%s\" ei ole tavallinen tiedosto"
#, c-format
msgid ""
"File \"%s\" is too large.\n"
"Open it anyway?"
msgstr ""
+"tiedosto \"%s\" on liian iso.\n"
+"Avataanko silti?"
+
+msgid "Warning"
+msgstr "Varoitus"
#, c-format
msgid "Error reading from pipe: %s"
-msgstr ""
+msgstr "Virhe luettaessa putkesta: %s"
#, c-format
msgid "Cannot open pipe for reading: %s"
-msgstr ""
-
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Etsitään %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Etsitään %s"
+msgstr "Putki ei avaudu lukemista varten: %s"
msgid "File has hard-links. Detach before saving?"
-msgstr ""
+msgstr "Tiedostossa on kovia linkkejä. Irrota ennen tallennusta?"
msgid "The file has been modified in the meantime. Save anyway?"
-msgstr ""
+msgstr "Tiedosto on muuttunut tällä välin. Tallenna kuitenkin?"
#, c-format
msgid "Error writing to pipe: %s"
-msgstr ""
+msgstr "Virhe kirjoitettaessa putkeen: %s"
#, c-format
msgid "Cannot open pipe for writing: %s"
-msgstr ""
+msgstr "Putki ei avaudu kirjoitusta varten: %s"
#, c-format
msgid "Cannot open file for writing: %s"
-msgstr ""
+msgstr "Ei voida avata %s kirjoitusta varten"
msgid "The file you are saving does not end with a newline."
-msgstr ""
+msgstr "Tallentamasi tiedosto ei pääty uuteen riviin."
msgid "C&ontinue"
-msgstr ""
+msgstr "J&atka"
msgid "&Do not change"
-msgstr ""
+msgstr "&Älä tee muutoksia"
msgid "&Unix format (LF)"
-msgstr ""
+msgstr "&Unix formaatti (LF)"
msgid "&Windows/DOS format (CR LF)"
-msgstr ""
+msgstr "&Windows/DOS formaatti (CR LF)"
msgid "&Macintosh format (CR)"
-msgstr ""
+msgstr "&Macintosh formaatti (CR)"
msgid "Enter file name:"
msgstr "Anna tiedostonimi:"
msgid "Change line breaks to:"
-msgstr ""
+msgstr "Muuta rivinvaihdot:"
msgid "Save As"
msgstr "Tallenna nimellä"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
-msgstr ""
+msgstr "&Nopea tallennus"
msgid "&Safe save"
-msgstr ""
+msgstr "&Turvallinen tallennus"
msgid "&Do backups with following extension:"
-msgstr ""
+msgstr "&Tee varmuuskopiot seuraavalla laajennuksella:"
msgid "Check &POSIX new line"
-msgstr ""
+msgstr "Tarkista &POSIX uusi rivi"
msgid "Edit Save Mode"
-msgstr ""
+msgstr "Muokkaa tallennustilaa"
msgid "Save as"
msgstr "Tallenna nimellä"
msgid "Cannot save: destination is not a regular file"
-msgstr ""
+msgstr "Ei voi tallentaa: kohde ei ole tavallinen tiedosto"
msgid "A file already exists with this name"
-msgstr ""
+msgstr "Nimellä on jo tiedosto olemassa"
msgid "&Overwrite"
-msgstr ""
+msgstr "&Ylikirjoita"
msgid "Cannot save file"
-msgstr ""
-
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
+msgstr "Tiedostoa ei voi tallentaa"
#, c-format
msgid "Confirm save file: \"%s\""
-msgstr ""
+msgstr "Vahvista tiedoston tallennus: \"%s\""
msgid "Save file"
msgstr "Tallenna tiedosto"
@@ -1135,36 +1099,29 @@
msgstr "&Tallenna"
msgid "Load"
-msgstr ""
+msgstr "Lataa"
msgid "Syntax file edit"
-msgstr ""
+msgstr "Syntaksitiedoston muokkaus"
msgid "Which syntax file you want to edit?"
-msgstr ""
+msgstr "Mitä syntaksia haluat muuttaa?"
msgid "&User"
msgstr "&Käyttäjä"
msgid "&System wide"
-msgstr ""
+msgstr "&Järjestelmän laajuinen"
msgid "Menu edit"
-msgstr ""
+msgstr "Valikon muokkaus"
msgid "Which menu file do you want to edit?"
-msgstr ""
+msgstr "Mitä valikkoa haluat muuttaa?"
msgid "&Local"
msgstr "&Paikallinen"
-msgid "Replace"
-msgstr "Korvaa"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1173,6 +1130,8 @@
"File %s was modified.\n"
"Save before close?"
msgstr ""
+"Tiedosto %s muuttunut.\n"
+"Tallenna ennen sulkemista?"
msgid "Close file"
msgstr "Sulje tiedosto"
@@ -1182,82 +1141,84 @@
"Midnight Commander is being shut down.\n"
"Save modified file %s?"
msgstr ""
+"Midnight Commander suljetaan.\n"
+"Tallenna muuttunut tiedosto %s?"
msgid "This function is not implemented"
-msgstr ""
+msgstr "Tätä toimintoa ei ole otettu käyttöön"
msgid "Copy to clipboard"
-msgstr ""
+msgstr "Kopioi leikepöydälle"
msgid "Unable to save to file"
-msgstr ""
+msgstr "Tiedostoon tallentaminen epäonnistui "
msgid "Cut to clipboard"
-msgstr ""
+msgstr "Leikkaa leikepöydälle"
msgid "Goto line"
-msgstr ""
+msgstr "Mene riville"
msgid "Save block"
-msgstr ""
+msgstr "Tallenna alue"
msgid "Insert file"
-msgstr ""
+msgstr "Lisää tiedosto"
msgid "Cannot insert file"
-msgstr ""
+msgstr "Tiedostoa ei voi lisätä"
msgid "Sort block"
-msgstr ""
+msgstr "Lajittele alue"
msgid "You must first highlight a block of text"
-msgstr ""
+msgstr "Sinun pitää ensin korostaa tekstin alue"
msgid "Run sort"
-msgstr ""
+msgstr "Suorita lajittelu"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
-msgstr ""
+msgstr "Lajittelu"
msgid "Cannot execute sort command"
-msgstr ""
+msgstr "Komentoa sort ei voi suorittaa"
#, c-format
msgid "Sort returned non-zero: %s"
msgstr ""
msgid "Paste output of external command"
-msgstr ""
+msgstr "Liitä ulkoinen komento"
msgid "Enter shell command(s):"
-msgstr ""
+msgstr "Anna shell komento:"
msgid "External command"
-msgstr ""
+msgstr "Ulkoinen komento"
msgid "Cannot execute command"
-msgstr ""
+msgstr "Komentoa voi suorittaa"
msgid "mail -s <subject> -c <cc> <to>"
-msgstr ""
+msgstr "mail -s <subject> -c <cc> <to>"
msgid "To"
-msgstr ""
+msgstr "Vastaanottaja"
msgid "Subject"
msgstr "Aihe"
msgid "Copies to"
-msgstr ""
+msgstr "Kopiona"
msgid "Mail"
-msgstr ""
+msgstr "Viesti"
msgid "Insert literal"
-msgstr ""
+msgstr "Lisää teksti"
msgid "Press any key:"
msgstr "Paina mitä tahansa näppäintä:"
@@ -1266,36 +1227,38 @@
"Current text was modified without a file save.\n"
"Continue discards these changes."
msgstr ""
+"Nykyistä tekstiä muokattiin tallentamatta tiedostoa.\n"
+"Jatkamalla hylkäät nämä muutokset."
-msgid "In se&lection"
-msgstr ""
-
-msgid "&Find all"
-msgstr "&Etsi kaikki"
+msgid "Cancel"
+msgstr "Peruuta"
-msgid "Enter replacement string:"
+msgid "Collect completions"
msgstr ""
-msgid "Replace with:"
-msgstr ""
+msgid "NoName"
+msgstr "Nimetön"
-msgid "&Replace"
-msgstr "&Korvaa"
+msgid "Save macro"
+msgstr "Tallenna makro"
-msgid "A&ll"
-msgstr "K&aikki"
+msgid "Press the macro's new hotkey:"
+msgstr "Paina makron uudet pikanäppäimet:"
-msgid "&Skip"
-msgstr "&Ohita"
+msgid "Delete macro"
+msgstr "Poista makro"
-msgid "Confirm replace"
-msgstr ""
+msgid "Press macro hotkey:"
+msgstr "Paina makro pikanäppäintä:"
-msgid "Cancel"
-msgstr "Peruuta"
+msgid "Macro not deleted"
+msgstr "Makroa ei poistettu"
-msgid "NoName"
-msgstr ""
+msgid "Repeat last commands"
+msgstr "Edellinen komento uudestaan"
+
+msgid "Repeat times:"
+msgstr "Toistokerrat:"
msgid "&Open file..."
msgstr "&Avaa tiedosto..."
@@ -1307,19 +1270,19 @@
msgstr "&Sulje"
msgid "&History..."
-msgstr ""
+msgstr "&Historia..."
msgid "Save &as..."
msgstr "Tallenna &nimellä..."
msgid "&Insert file..."
-msgstr ""
+msgstr "&Lisää tiedosto..."
msgid "Cop&y to file..."
-msgstr ""
+msgstr "Kop&ioi tiedostoon..."
msgid "&User menu..."
-msgstr ""
+msgstr "&Käyttäjän valikko..."
msgid "A&bout..."
msgstr ""
@@ -1328,10 +1291,10 @@
msgstr "&Lopeta"
msgid "&Undo"
-msgstr ""
+msgstr "&Kumoa"
msgid "&Redo"
-msgstr ""
+msgstr "&Uudelleen"
msgid "&Toggle ins/overw"
msgstr ""
@@ -1340,19 +1303,19 @@
msgstr ""
msgid "&Mark columns"
-msgstr ""
+msgstr "&Merkitse sarakkeet"
msgid "Mark &all"
-msgstr ""
+msgstr "Merkitse k&aikki"
msgid "Unmar&k"
-msgstr ""
+msgstr "Poista mer&kintä"
msgid "Cop&y"
msgstr "&Kopioi"
msgid "Mo&ve"
-msgstr ""
+msgstr "Sii&rrä"
msgid "&Delete"
msgstr "&Poista"
@@ -1367,37 +1330,37 @@
msgstr ""
msgid "&Beginning"
-msgstr ""
+msgstr "&Alku"
msgid "&End"
-msgstr ""
+msgstr "&Loppu"
msgid "&Search..."
-msgstr ""
+msgstr "&Haku..."
msgid "Search &again"
-msgstr ""
+msgstr "Hae &uudelleen"
msgid "&Replace..."
-msgstr ""
+msgstr "&Korvaa..."
msgid "&Toggle bookmark"
-msgstr ""
+msgstr "&Vaihda kirjanmerkki"
msgid "&Next bookmark"
-msgstr ""
+msgstr "&Seuraava kirjanmerkki"
msgid "&Prev bookmark"
-msgstr ""
+msgstr "&Edellinen kirjanmerkki"
msgid "&Flush bookmarks"
-msgstr ""
+msgstr "&Tyhjennä kirjanmerkit"
msgid "&Go to line..."
-msgstr ""
+msgstr "&Mene riville..."
msgid "&Toggle line state"
-msgstr ""
+msgstr "&Vaihda rivin tilaa"
msgid "Go to matching &bracket"
msgstr ""
@@ -1451,7 +1414,7 @@
msgstr ""
msgid "&Sort..."
-msgstr ""
+msgstr "&Järjestys..."
msgid "&Paste output of..."
msgstr ""
@@ -1460,13 +1423,13 @@
msgstr ""
msgid "&Move"
-msgstr ""
+msgstr "&Siirrä"
msgid "&Resize"
-msgstr ""
+msgstr "&Muuta kokoa"
msgid "&Toggle fullscreen"
-msgstr ""
+msgstr "&Vaihda kokoruutuun"
msgid "&Next"
msgstr "&Seuraava"
@@ -1475,7 +1438,7 @@
msgstr "&Edellinen"
msgid "&List..."
-msgstr ""
+msgstr "&Lista..."
msgid "&General..."
msgstr ""
@@ -1532,7 +1495,7 @@
msgstr "Kieromoodi"
msgid "Tabulation"
-msgstr ""
+msgstr "Taulukko"
msgid "&Fake half tabs"
msgstr "valepuolikas&Tabit"
@@ -1544,10 +1507,10 @@
msgstr "täytä tabit &Välilyönnein"
msgid "Tab spacing:"
-msgstr ""
+msgstr "Välilehtien väli:"
msgid "Other options"
-msgstr ""
+msgstr "Muut asetukset"
msgid "&Return does autoindent"
msgstr "&Rivinvaihto sisentää"
@@ -1568,7 +1531,7 @@
msgstr "syntaks&Ikorostus"
msgid "C&ursor after inserted block"
-msgstr ""
+msgstr "K&ohdistin lisätyn alueen jälkeen"
msgid "Pers&istent selection"
msgstr ""
@@ -1580,27 +1543,68 @@
msgstr ""
msgid "Word wrap line length:"
-msgstr ""
+msgstr "Sanan rivityksen pituus:"
msgid "Editor options"
+msgstr "Editorin asetukset"
+
+msgid "In se&lection"
msgstr ""
+msgid "&Find all"
+msgstr "&Etsi kaikki"
+
+msgid "Enter replacement string:"
+msgstr "Anna korvaava merkkijono:"
+
+msgid "Replace"
+msgstr "Korvaa"
+
+msgid "Replace with:"
+msgstr "Korvaa:"
+
+msgid "&Replace"
+msgstr "&Korvaa"
+
+msgid "A&ll"
+msgstr "K&aikki"
+
+msgid "&Skip"
+msgstr "&Ohita"
+
+msgid "Confirm replace"
+msgstr "Vahvista vaihto"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Etsitään %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Etsitään %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld korvaaminen tehty"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
+"Midnight Commanderille kirjoitettu\n"
+"käyttäjäystävällinen tekstieditori."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
msgstr "Tietoja"
msgid "Open files"
-msgstr ""
+msgstr "Avaa tiedostot"
msgid "Edit: "
-msgstr ""
+msgstr "Muokkaa:"
msgid "ButtonBar|Mark"
msgstr ""
@@ -1693,35 +1697,46 @@
msgstr "ukraina"
msgid "&Add word"
-msgstr ""
+msgstr "&Lisää sana"
msgid "Language"
msgstr "Kieli"
msgid "Misspelled"
-msgstr ""
+msgstr "Kirjoitusvirhe"
msgid "Check word"
-msgstr ""
+msgstr "Tarkista sana"
msgid "Suggest"
-msgstr ""
+msgstr "Ehdota"
msgid "Select language"
msgstr "Valitse kieli"
+msgid "Choose syntax highlighting"
+msgstr "Valitse syntaksin korostus"
+
+msgid "< Auto >"
+msgstr "< Automaatti >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Lataa syntaksi uudelleen >"
+
msgid "Load syntax file"
-msgstr ""
+msgstr "Lataa syntaksi tiedosto"
#, c-format
msgid ""
"Cannot open file %s\n"
"%s"
msgstr ""
+"Ei voi avata tiedostoa %s\n"
+"%s"
#, c-format
msgid "Error in file %s on line %d"
-msgstr ""
+msgstr "Virhe tiedostossa %s rivillä %d"
msgid ""
"The Commander can't change to the directory that\n"
@@ -1732,10 +1747,10 @@
#, c-format
msgid "Cannot fetch a local copy of %s"
-msgstr ""
+msgstr "Paikallista kopiota %s ei voi noutaa "
msgid "The shell is already running a command"
-msgstr ""
+msgstr "Shell suorittaa jo komentoa"
msgid ""
"Not an xterm or Linux console;\n"
@@ -1780,13 +1795,13 @@
msgstr ""
msgid "&Ignore"
-msgstr ""
+msgstr "&Ohita"
msgid "Ignore &all"
-msgstr ""
+msgstr "Ohita &kaikki"
msgid "&Retry"
-msgstr ""
+msgstr "&Uudelleen"
#, c-format
msgid ""
@@ -1795,31 +1810,31 @@
msgstr ""
msgid "< Default >"
-msgstr ""
+msgstr "<Oletus>"
msgid "Skins"
msgstr "Ulkoasuteemat"
msgid "Other 8 bit"
-msgstr ""
+msgstr "Muut 8-bittiset"
msgid "Running"
-msgstr ""
+msgstr "Käynnissä"
msgid "Stopped"
msgstr "Pysäytetty"
msgid "&Never"
-msgstr ""
+msgstr "&Koskaan"
msgid "On dum&b terminals"
msgstr ""
msgid "Alwa&ys"
-msgstr ""
+msgstr "Ai&na"
msgid "File operations"
-msgstr ""
+msgstr "Tiedostojen toiminnot"
msgid "&Verbose operation"
msgstr ""
@@ -1843,10 +1858,10 @@
msgstr ""
msgid "Timeout:"
-msgstr ""
+msgstr "Aikakatkaisu:"
msgid "Pause after run"
-msgstr ""
+msgstr "Tauko ajon jälkeen"
msgid "Use internal edi&t"
msgstr ""
@@ -1985,13 +2000,13 @@
msgstr "&Oma tiedostolista:"
msgid "columns"
-msgstr ""
+msgstr "sarakkeet"
msgid "User &mini status"
msgstr ""
msgid "Listing format"
-msgstr ""
+msgstr "Luettelon muoto"
msgid "Executable &first"
msgstr ""
@@ -2025,10 +2040,10 @@
msgstr ""
msgid "&UTF-8 output"
-msgstr ""
+msgstr "&UTF-8 ulostulo"
msgid "&Full 8 bits output"
-msgstr ""
+msgstr "&Täysi 8-bittinen ulostulo"
msgid "&ISO 8859-1"
msgstr "&ISO 8859-1"
@@ -2097,20 +2112,7 @@
msgstr "&Tapa"
msgid "Background jobs"
-msgstr ""
-
-#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
+msgstr "Taustatyöt"
#, c-format
msgid ""
@@ -2119,34 +2121,34 @@
msgstr ""
msgid "Secure deletion"
-msgstr ""
+msgstr "Turvallinen poistaminen"
msgid "Undelete"
-msgstr ""
+msgstr "Kumoa poisto"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Synkroniset päivitykset"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Synkroniset hakemiston päivitykset"
msgid "Immutable"
-msgstr ""
+msgstr "Muuttumaton"
msgid "Append only"
-msgstr ""
+msgstr "Vain liitä"
msgid "No dump"
-msgstr ""
+msgstr "Ei hylätä"
msgid "No update atime"
msgstr ""
msgid "Compress"
-msgstr ""
+msgstr "Pakkaus"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Pakatut klusterit"
msgid "Compressed dirty file"
msgstr ""
@@ -2316,12 +2318,6 @@
msgid "Cannot change directory"
msgstr "Ei voitu vaihtaa hakemistoa"
-msgid "Filter"
-msgstr "Suodata"
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2425,9 +2421,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2462,14 +2455,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr "Virheellinen putki"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2479,8 +2482,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2599,79 +2602,103 @@
"Cannot remove file \"%s\"\n"
"%s"
msgstr ""
+"Tiedostoa \"%s\" ei voi poistaa\n"
+"%s"
#, c-format
msgid ""
"Cannot stat file \"%s\"\n"
"%s"
msgstr ""
+"Tiedostoa \"%s\" ei voi lisätä\n"
+"%s"
#, c-format
msgid "Cannot overwrite directory \"%s\""
-msgstr ""
+msgstr "Kansiota \"%s\" ei voi ylikirjoittaa"
#, c-format
msgid ""
"Cannot move file \"%s\" to \"%s\"\n"
"%s"
msgstr ""
+"Tiedostoa ei voi siirtää \"%s\" - \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot remove directory \"%s\"\n"
"%s"
msgstr ""
+"Kansiota \"%s\" ei voi poistaa\n"
+"%s"
#, c-format
msgid ""
"Cannot overwrite directory \"%s\"\n"
"%s"
msgstr ""
+"Kansiota \"%s\" ei voi ylikirjoittaa\n"
+"%s"
#, c-format
msgid ""
"Cannot overwrite file \"%s\"\n"
"%s"
msgstr ""
+"Tiedostoa \"%s\" ei voi ylikirjoittaa\n"
+"%s"
#, c-format
msgid ""
"Cannot move directory \"%s\" to \"%s\"\n"
"%s"
msgstr ""
+"Kansiota ei voi siirtää \"%s\" - \"%s\"\n"
+"%s"
msgid "Cannot operate on \"..\"!"
-msgstr ""
+msgstr "Ei voi käyttää \"..\"!"
#, c-format
msgid ""
"Cannot stat source file \"%s\"\n"
"%s"
msgstr ""
+"Lähdetiedostoa ei voi lisätä \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot create special file \"%s\"\n"
"%s"
msgstr ""
+"Erikoistiedostoa ei voi luoda \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot chown target file \"%s\"\n"
"%s"
msgstr ""
+"Ei onnistu chown kohdetiedostoon \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot chmod target file \"%s\"\n"
"%s"
msgstr ""
+"Ei onnistu chmod kohdetiedostoon \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot open source file \"%s\"\n"
"%s"
msgstr ""
+"Lähdetiedostoa ei voi avata \"%s\"\n"
+"%s"
msgid "Reget failed, about to overwrite file"
msgstr ""
@@ -2681,69 +2708,92 @@
"Cannot fstat source file \"%s\"\n"
"%s"
msgstr ""
+"Ei onnistu fstat lähdetiedostoon \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot create target file \"%s\"\n"
"%s"
msgstr ""
+"Kohdetiedostoa ei voi luoda \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot fstat target file \"%s\"\n"
"%s"
msgstr ""
+"Ei onnistu fstat kohdetiedostoon \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot preallocate space for target file \"%s\"\n"
"%s"
msgstr ""
+"Ei voitu varata tilaa kohdetiedostolle \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot read source file \"%s\"\n"
"%s"
msgstr ""
+"Lähdetiedostoa ei voi lukea \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
+"Kohdetiedostoa ei voi kirjoittaa \"%s\"\n"
+"%s"
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Pidä"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
"%s"
msgstr ""
+"Lähdetiedostoa ei voi sulkea \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot close target file \"%s\"\n"
"%s"
msgstr ""
-
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
+"Kohdetiedostoa ei voi sulkea \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
"%s"
msgstr ""
+"Kohdekansiota ei voi lisätä \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Source \"%s\" is not a directory\n"
"%s"
msgstr ""
+"Lähde \"%s\" ei ole kansio\n"
+"%s"
#, c-format
msgid ""
@@ -2756,25 +2806,31 @@
"Destination \"%s\" must be a directory\n"
"%s"
msgstr ""
+"Kohteen \"%s\" on oltava kansio\n"
+"%s"
#, c-format
msgid ""
"Cannot create target directory \"%s\"\n"
"%s"
msgstr ""
+"Kohdekansiota ei voi luoda \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot chown target directory \"%s\"\n"
"%s"
msgstr ""
+"Ei onnistu chown kohdekansioon \"%s\"\n"
+"%s"
#, c-format
msgid "Directories: %zu, total size: %s"
-msgstr ""
+msgstr "Kansioiden: %zu, koko yhteensä: %s"
msgid "Sorry, I could not put the job in background"
-msgstr ""
+msgstr "Anteeksi, en voinut laittaa työtä taustalle"
msgid "S&uspend"
msgstr ""
@@ -2784,140 +2840,140 @@
#, c-format
msgid "%d:%02d.%02d"
-msgstr ""
+msgstr "%d:%02d.%02d"
#, c-format
msgid "ETA %s"
-msgstr ""
+msgstr "ETA %s"
#, c-format
msgid "%.2f MB/s"
-msgstr ""
+msgstr "%.2f MB/s"
#, c-format
msgid "%.2f KB/s"
-msgstr ""
+msgstr "%.2f Kt/s"
#, c-format
msgid "%ld B/s"
-msgstr ""
+msgstr "%ld B/s"
msgid "New :"
msgstr "Uusi :"
msgid "Existing:"
-msgstr ""
+msgstr "Nykyinen:"
msgid "Overwrite this file?"
-msgstr ""
+msgstr "Korvataanko tämä tiedosto?"
msgid "A&ppend"
-msgstr ""
+msgstr "&Lisää"
msgid "&Reget"
-msgstr ""
+msgstr "&Uudelleen"
msgid "Overwrite all files?"
-msgstr ""
+msgstr "Korvataanko kaikki tiedostot?"
msgid "Don't overwrite with &zero length file"
-msgstr ""
+msgstr "Älä korvaa &nollan pituisella tiedostolla "
msgid "&Older"
-msgstr ""
+msgstr "&Vanhin"
msgid "S&maller"
-msgstr ""
+msgstr "Piene&mpi"
msgid "&Size differs"
-msgstr ""
+msgstr "&Koko eroaa"
msgid "File exists"
-msgstr ""
+msgstr "Tiedosto saatavilla"
msgid "Background process: File exists"
-msgstr ""
+msgstr "Taustaprosessi: Tiedosto saatavilla"
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
msgid "Files processed: %zu"
-msgstr ""
+msgstr "Käsitellyt tiedostot: %zu"
#, c-format
msgid "Time: %s %s"
-msgstr ""
+msgstr "Aika: %s %s"
#, c-format
msgid "Time: %s %s (%s)"
-msgstr ""
+msgstr "Aika: %s %s (%s)"
#, c-format
msgid "Time: %s"
-msgstr ""
+msgstr "Aika: %s"
#, c-format
msgid "Time: %s (%s)"
-msgstr ""
+msgstr "Aika: %s (%s)"
#, c-format
msgid " Total: %s "
-msgstr ""
+msgstr " Yhteensä: %s "
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
-msgstr ""
+msgstr "Lähde"
msgid "Target"
-msgstr ""
+msgstr "Kohde"
msgid "Deleting"
-msgstr ""
+msgstr "Poistetaan"
msgid "&Using shell patterns"
msgstr ""
msgid "to:"
-msgstr ""
+msgstr "kohde:"
msgid "Follow &links"
-msgstr ""
+msgstr "Seuraa &linkkejä"
msgid "Preserve &attributes"
msgstr ""
msgid "Di&ve into subdir if exists"
-msgstr ""
+msgstr "Si&irry alihakemistoon, jos sellainen on "
msgid "&Stable symlinks"
-msgstr ""
+msgstr "Vakaa &symlinkki"
msgid "&Background"
-msgstr ""
+msgstr "&Tausta"
#, c-format
msgid "Invalid source pattern '%s'"
msgstr ""
msgid "File listin&g"
-msgstr ""
+msgstr "Tiedosto lista&us"
msgid "&Quick view"
-msgstr ""
+msgstr "&Pikanäkymä"
msgid "&Info"
-msgstr ""
+msgstr "&Tiedot"
msgid "&Tree"
-msgstr ""
+msgstr "&Puu"
msgid "&Listing format..."
-msgstr ""
+msgstr "&Luettelomuoto..."
msgid "&Sort order..."
msgstr ""
@@ -2926,55 +2982,52 @@
msgstr "&Suodata..."
msgid "&Encoding..."
-msgstr ""
+msgstr "&Pakkaa..."
msgid "FT&P link..."
-msgstr ""
+msgstr "FT&P linkki..."
msgid "S&hell link..."
-msgstr ""
+msgstr "S&hell linkki..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B linkki..."
-
msgid "Paneli&ze"
msgstr ""
msgid "&Rescan"
-msgstr ""
+msgstr "&Virkistä"
msgid "&View"
-msgstr ""
+msgstr "&Näytä"
msgid "Vie&w file..."
-msgstr ""
+msgstr "Näy&tä tiedosto..."
msgid "&Filtered view"
-msgstr ""
+msgstr "&Suodatettu näkymä"
msgid "&Copy"
msgstr "&Kopioi"
msgid "C&hmod"
-msgstr ""
+msgstr "C&hmod"
msgid "&Link"
msgstr "&Linkki"
msgid "&Symlink"
-msgstr ""
+msgstr "&Symlinkki"
msgid "Relative symlin&k"
msgstr ""
msgid "Edit s&ymlink"
-msgstr ""
+msgstr "Muokkaa s&ymlinkkiä"
msgid "Ch&own"
-msgstr ""
+msgstr "Ch&own"
msgid "&Advanced chown"
msgstr ""
@@ -2983,40 +3036,40 @@
msgstr ""
msgid "&Rename/Move"
-msgstr ""
+msgstr "&Nimeä/Siirrä"
msgid "&Mkdir"
-msgstr ""
+msgstr "&Luo hakemisto"
msgid "&Quick cd"
-msgstr ""
+msgstr "&Nopea cd"
msgid "Select &group"
-msgstr ""
+msgstr "Valitse &ryhmään"
msgid "U&nselect group"
-msgstr ""
+msgstr "Poista &ryhmästä"
msgid "&Invert selection"
-msgstr ""
+msgstr "&Käänteinen valinta"
msgid "E&xit"
-msgstr ""
+msgstr "P&oistu"
msgid "&User menu"
-msgstr ""
+msgstr "&Käyttäjän valikko"
msgid "&Directory tree"
-msgstr ""
+msgstr "&Hakemistopuu"
msgid "&Find file"
-msgstr ""
+msgstr "&Etsi tiedosto"
msgid "S&wap panels"
-msgstr ""
+msgstr "V&aihda paneelit "
msgid "Switch &panels on/off"
-msgstr ""
+msgstr "Vaihda &paneelit on/off"
msgid "&Compare directories"
msgstr ""
@@ -3028,10 +3081,10 @@
msgstr ""
msgid "Show directory s&izes"
-msgstr ""
+msgstr "Näytä hakem&iston koot"
msgid "Command &history"
-msgstr ""
+msgstr "Komentojen &historia"
msgid "Viewed/edited files hi&story"
msgstr ""
@@ -3064,13 +3117,13 @@
msgstr ""
msgid "&Configuration..."
-msgstr ""
+msgstr "&Asetukset..."
msgid "&Layout..."
msgstr "&Muotoilu..."
msgid "&Panel options..."
-msgstr ""
+msgstr "&Paneelin asetukset..."
msgid "C&onfirmation..."
msgstr ""
@@ -3085,7 +3138,7 @@
msgstr ""
msgid "Panels:"
-msgstr ""
+msgstr "Paneelit:"
#, c-format
msgid "You have %zu opened screen. Quit anyway?"
@@ -3094,10 +3147,10 @@
msgstr[1] ""
msgid "The Midnight Commander"
-msgstr ""
+msgstr "Midnight Commander"
msgid "Do you really want to quit the Midnight Commander?"
-msgstr ""
+msgstr "Haluatko sulkea Midnight Commanderin?"
msgid "&Above"
msgstr ""
@@ -3151,11 +3204,14 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
msgid "Content:"
-msgstr ""
+msgstr "Sisältö:"
msgid "Sea&rch for content"
msgstr ""
@@ -3313,7 +3369,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3467,7 +3523,7 @@
msgstr "&Koko"
msgid "Block Size"
-msgstr ""
+msgstr "Alueen koko"
#. TRANSLATORS: one single character to represent 'Modify time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
@@ -3558,6 +3614,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr "Suodata"
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3585,10 +3644,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3812,16 +3878,20 @@
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr " Luotu ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Luotu ncurses (tuntematon versio)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr " Luotu ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
+msgstr "Luotu ncursesw (tuntematon versio)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
msgstr ""
msgid "Virtual File Systems:"
@@ -3935,13 +4005,20 @@
"%s"
msgstr "Odottaminen päättyminen tiedostossa %s"
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4059,6 +4136,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: Osoiteperhe ei ole validi"
@@ -4110,6 +4202,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4143,6 +4241,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4154,63 +4255,80 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
-msgstr "uudelleenyritys kohteeseen %s epäonnistui"
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
-msgid "Authentication failed"
-msgstr "Authenkaatio epäonnistui"
+msgid "sftp: Passphrase is empty."
+msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Virhe %s luotaessa kansiota %s"
+msgid "sftp: Enter password for %s "
+msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Virhe %s poistaessa hakemistoa %s"
+msgid "sftp: Password is empty."
+msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s avautuva palvelintiedosto %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
+msgstr ""
#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s poistaa palvelintiedostoa %s"
+msgid "sftp: socket error: %s"
+msgstr ""
#, c-format
-msgid "%s renaming files\n"
-msgstr "%s uudelleennimeää tiedostoja\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
+msgstr ""
#, c-format
msgid ""
@@ -4237,7 +4355,7 @@
msgstr ""
msgid "while allocating block buffer"
-msgstr ""
+msgstr "samalla kun valitaan alueen puskuria"
#, c-format
msgid "open_inode_scan: %d"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/fr.po
^
|
@@ -5,31 +5,33 @@
# Translators:
# baua gonzo <baua.gonzo@gmail.com>, 2016
# David D, 2017-2018
-# David Prudhomme <david7.prudhomme@gmail.com>, 2018
+# David Prudhomme <david7.prudhomme@gmail.com>, 2018,2021
# dfd998a47e5ece82efa734d3c31b5c3e_071ebb8, 2015
# Effede Effede <g2sainfroc@gmail.com>, 2016
# Matthieu Crapet <mcrapet@gmail.com>, 2013-2016
# Slava Zanko <slavazanko@gmail.com>, 2011
# 4a14a73d523224463300dea5e0502458_3dab472, 2012
# Towinet, 2017
+# Wallon Wallon, 2022
# Yury V. Zaytsev <yury@shurup.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Wallon Wallon, 2022\n"
"Language-Team: French (http://www.transifex.com/mc/mc/language/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
+"1000000 == 0 ? 1 : 2;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr "Avertissement: impossible de charger la liste des pages de code"
+msgstr "Avertissement : impossible de charger la liste des pages de code"
msgid "7-bit ASCII"
msgstr "ASCII 7 bits"
@@ -39,24 +41,24 @@
msgstr "Ne peut convertir de %s vers %s"
msgid "Event system already initialized"
-msgstr "Système d'évènement déjà initialisé"
+msgstr "Système d'événement déjà initialisé"
msgid "Failed to initialize event system"
-msgstr "Echec de l'initialisation du système d'évènement"
+msgstr "Échec de l'initialisation du système d'événement"
msgid "Event system not initialized"
-msgstr "Système d'évènement non initialisé"
+msgstr "Système d'événement non initialisé"
msgid "Check input data! Some of parameters are NULL!"
-msgstr "Vérifiez les données d'entrée ! Certain paramètres sont NULL!"
+msgstr "Vérifiez les données d'entrée ! Certains paramètres sont NULL !"
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr "Impossible de créer le groupe « %s » pour les évènements !"
+msgstr "Impossible de créer le groupe « %s » pour les événements !"
#, c-format
msgid "Unable to create event '%s'!"
-msgstr "Impossible de créer l'évènement « %s » !"
+msgstr "Impossible de créer l'événement « %s » !"
#, c-format
msgid ""
@@ -82,32 +84,7 @@
msgstr "Ne peut créer le répertoire %s"
msgid "FATAL: not a directory:"
-msgstr "FATAL: n'est pas un répertoire :"
-
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-"Une erreur est survenue lors de la migration des paramètres utilisateur : %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Vos anciens paramètres ont été migré de %s\n"
-"vers les répertoires recommandés par Freedesktop\n"
-"Pour plus d'informations, veuillez visiter\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Vos anciens paramètres ont été migrés de %s\n"
-"vers %s\n"
+msgstr "FATAL : n'est pas un répertoire :"
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
@@ -131,7 +108,7 @@
"%s."
msgid "Search string not found"
-msgstr " Chaîne non trouvée "
+msgstr "Chaîne de recherche introuvable"
msgid "Not implemented yet"
msgstr "Pas encore implémenté"
@@ -197,12 +174,12 @@
msgid "True color not supported with ncurses."
msgstr "Truecolor n'est pas permis avec Ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Truecolor n'est pas permis cette version d'argot (\"slang version\")."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Votre terminal ne semble même pas permettre 256 couleurs."
+msgid "True color not supported in this slang version."
+msgstr "Truecolor non supporté dans cette version d'argot (\"slang version\")."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Mettre COLORTERM=truecolor si votre terminal permet vraiment le mode "
@@ -495,25 +472,31 @@
msgstr "La variable d'environnement TERM n'est pas définie !\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Impossible de vérifier le tuyau SIGWINCH"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Impossible de créer un tube pour SIGWINCH : %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Impossible de configurer la fin d'écriture du tuyau SIGWINCH : %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Impossible de configurer la fin de lecture du tuyau SIGWINCH : %s (%d)\n"
#, c-format
msgid ""
@@ -559,6 +542,9 @@
"fils :\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Impossible de fermer le descripteur de tube (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -567,18 +553,6 @@
"Erreur inattendue dans waitpid() :\n"
"%s"
-msgid "Warning"
-msgstr "Attention"
-
-msgid "Pipe failed"
-msgstr " Échec du tube "
-
-msgid "Dup failed"
-msgstr "Échec système « dup »"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Erreur système « dup » sur l'ancien tube"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Répertoire de cache expiré pour %s"
@@ -685,7 +659,7 @@
msgid "Print extended info about used data directories"
msgstr ""
-"Imprimer les informations étendues a propos des répertoires utilisés pour "
+"Imprimer les informations étendues à propos des répertoires utilisés pour "
"les données"
msgid "Print configure options"
@@ -695,7 +669,7 @@
msgstr "Écrit le dernier répertoire courant dans le fichier donné"
msgid "<file>"
-msgstr "<file>"
+msgstr "fichier"
msgid "Enables subshell support (default)"
msgstr "Active le support des sous-shells (par défaut)"
@@ -706,12 +680,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Consigne les échanges FTP dans le fichier spécifié"
-msgid "Set debug level"
-msgstr "Définit le niveau de débogage"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Lance la visionneuse sur un fichier"
@@ -719,7 +687,7 @@
msgstr "Éditer les fichiers"
msgid "<file> ..."
-msgstr "<file> ..."
+msgstr "fichier ..."
msgid "Forces xterm features"
msgstr "Force un attribut xterm"
@@ -851,7 +819,7 @@
"as tickets at www.midnight-commander.org\n"
msgstr ""
"\n"
-"Envoyez vos rapports d'anomalies (incluant la sortie de of 'mc -V')\n"
+"Envoyez vos rapports d'anomalies (incluant la sortie de 'mc -V')\n"
"comme ticket de www.midnight-commander.org\n"
"\n"
@@ -1022,8 +990,7 @@
"Midnight Commander is being shut down.\n"
"Save modified file(s)?"
msgstr ""
-"Midnight Commander va se s'éteindre.\n"
-"Enregistrer le(s) fichier(s) modifié(s) ?"
+"Midnight Commander va s'éteindre. Enregistrer le(s) fichier(s) modifié(s) ?"
msgid "Diff:"
msgstr "Comparaison:"
@@ -1046,15 +1013,6 @@
msgid "Two files are needed to compare"
msgstr "Deux fichiers sont nécessaires à la comparaison"
-msgid "Choose syntax highlighting"
-msgstr "Choisir la coloration syntaxique"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Recharger la syntaxe courante >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Chargement: %3d%%"
@@ -1087,7 +1045,10 @@
"Open it anyway?"
msgstr ""
"Le fichier \"%s\" est trop gros.\n"
-"Voulez-vous tout de même l'Ouvrir ?"
+"Voulez-vous tout de même l'ouvrir ?"
+
+msgid "Warning"
+msgstr "Attention"
#, c-format
msgid "Error reading from pipe: %s"
@@ -1097,14 +1058,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Impossible d'ouvrir le tube pour lire: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Recherche %s : %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Recherche %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Le fichier est un lien physique. Détacher avant de sauvegarder ?"
@@ -1151,9 +1104,6 @@
msgid "Save As"
msgstr "Enregistrer sous"
-msgid "Collect completions"
-msgstr "Collecter les complétions"
-
msgid "&Quick save"
msgstr "&Enregistrement rapide"
@@ -1185,27 +1135,6 @@
msgid "Cannot save file"
msgstr "Impossible d'enregistrer le fichier"
-msgid "Delete macro"
-msgstr "Supprimer la macro"
-
-msgid "Press macro hotkey:"
-msgstr "Appuyez sur le raccourci macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro non supprimée"
-
-msgid "Save macro"
-msgstr "Enregistrer une macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Appuyez sur le nouveau raccourci macro:"
-
-msgid "Repeat last commands"
-msgstr "Répéter la dernière commande"
-
-msgid "Repeat times:"
-msgstr "Nombre de répétitions:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Confirmer la sauvegarde du fichier : « %s »"
@@ -1240,13 +1169,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Remplacer"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld remplacements effectués"
-
msgid "[NoName]"
msgstr "[AucunNom]"
@@ -1302,9 +1224,9 @@
msgid "Run sort"
msgstr " Lancer le tri"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-" Saisissez les options de tri (cf page de manuel) séparées par des espaces :"
+"Entrer les options de tri (voir manpage sort(1)) séparées par des espaces :"
msgid "Sort"
msgstr " Trier"
@@ -1356,35 +1278,35 @@
"Le fichier courant a été modifié mais pas enregistré.\n"
"Les modifications seront perdues si vous continuez."
-msgid "In se&lection"
-msgstr "Dans la sé&lection"
+msgid "Cancel"
+msgstr "Annuler"
-msgid "&Find all"
-msgstr "&Rechercher tout"
+msgid "Collect completions"
+msgstr "Collecter les complétions"
-msgid "Enter replacement string:"
-msgstr "Saisissez la chaîne de remplacement :"
+msgid "NoName"
+msgstr "AucunNom"
-msgid "Replace with:"
-msgstr "Remplacer par :"
+msgid "Save macro"
+msgstr "Enregistrer une macro"
-msgid "&Replace"
-msgstr "&Remplacer"
+msgid "Press the macro's new hotkey:"
+msgstr "Appuyez sur le nouveau raccourci macro:"
-msgid "A&ll"
-msgstr "&Tous"
+msgid "Delete macro"
+msgstr "Supprimer la macro"
-msgid "&Skip"
-msgstr "&Sauter"
+msgid "Press macro hotkey:"
+msgstr "Appuyez sur le raccourci macro:"
-msgid "Confirm replace"
-msgstr "Confirmer le remplacement"
+msgid "Macro not deleted"
+msgstr "Macro non supprimée"
-msgid "Cancel"
-msgstr "Annuler"
+msgid "Repeat last commands"
+msgstr "Répéter la dernière commande"
-msgid "NoName"
-msgstr "AucunNom"
+msgid "Repeat times:"
+msgstr "Nombre de répétitions:"
msgid "&Open file..."
msgstr "&Ouvrir un fichier..."
@@ -1396,7 +1318,7 @@
msgstr "&Fermer"
msgid "&History..."
-msgstr ""
+msgstr "&Historique"
msgid "Save &as..."
msgstr "Enregi&strer sous..."
@@ -1674,6 +1596,45 @@
msgid "Editor options"
msgstr "Options de l'éditeur"
+msgid "In se&lection"
+msgstr "Dans la sé&lection"
+
+msgid "&Find all"
+msgstr "&Rechercher tout"
+
+msgid "Enter replacement string:"
+msgstr "Saisissez la chaîne de remplacement :"
+
+msgid "Replace"
+msgstr "Remplacer"
+
+msgid "Replace with:"
+msgstr "Remplacer par :"
+
+msgid "&Replace"
+msgstr "&Remplacer"
+
+msgid "A&ll"
+msgstr "&Tous"
+
+msgid "&Skip"
+msgstr "&Sauter"
+
+msgid "Confirm replace"
+msgstr "Confirmer le remplacement"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Recherche %s : %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Recherche %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld remplacements effectués"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1681,8 +1642,8 @@
"Un éditeur de text facile d'utilisation.\n"
"écrit pour Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr ""
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 la Free Software Foundation"
msgid "About"
msgstr "À propos"
@@ -1801,6 +1762,15 @@
msgid "Select language"
msgstr "Sélectionner une langue"
+msgid "Choose syntax highlighting"
+msgstr "Choisir la coloration syntaxique"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Recharger la syntaxe courante >"
+
msgid "Load syntax file"
msgstr "Charger le fichier de syntaxe"
@@ -1838,6 +1808,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Pas un xterm ou une console Linux ;\n"
+"le sous-shell ne peut pas être commuté."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Tapez « exit » pour retourner à Midnight Commander"
@@ -1865,7 +1837,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Permissions (octal) : %o"
msgid "Chown advanced command"
msgstr " Commande chown avancée"
@@ -1992,7 +1964,7 @@
msgstr "Thème :"
msgid "&Shadows"
-msgstr ""
+msgstr "Ombre&s"
msgid "Appearance"
msgstr "Apparence"
@@ -2205,19 +2177,6 @@
msgstr "Processus en arrière plan"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Mot de passe pour \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domaine:"
-
-msgid "Username:"
-msgstr "Nom d'utilisateur :"
-
-msgid "SMB authentication"
-msgstr "Authentification SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2226,79 +2185,79 @@
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Suppression sécurisée"
msgid "Undelete"
-msgstr ""
+msgstr "Annuler la suppression"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Mises à jour synchrones"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Mises à jour synchrones du répertoire"
msgid "Immutable"
-msgstr ""
+msgstr "Immuable"
msgid "Append only"
-msgstr ""
+msgstr "Ajout uniquement"
msgid "No dump"
-msgstr ""
+msgstr "Pas pour dump"
msgid "No update atime"
-msgstr ""
+msgstr "Pas de mise à jour atime"
msgid "Compress"
-msgstr ""
+msgstr "Compresser"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Clusters compressés"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Dirty file compressé"
msgid "Compression raw access"
-msgstr ""
+msgstr "Compression raw access"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Inode crypté"
msgid "Journaled data"
-msgstr ""
+msgstr "Données journalisées"
msgid "Indexed directory"
-msgstr ""
+msgstr "Répertoire indexé"
msgid "No tail merging"
-msgstr ""
+msgstr "Pas de fusion des fins de fichiers"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Répertoire racine"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Inode utilise des formats étendus"
msgid "Huge_file"
-msgstr ""
+msgstr "Gros_fichier"
msgid "No COW"
-msgstr ""
+msgstr "Pas de COW - dirty copy-on-write -"
msgid "Direct access for files"
-msgstr ""
+msgstr "Accès direct aux fichiers"
msgid "Casefolded file"
-msgstr ""
+msgstr "Fichier \"casefoldé\""
msgid "Inode has inline data"
-msgstr ""
+msgstr "Inode a des données \"inline\""
msgid "Project hierarchy"
-msgstr ""
+msgstr "Hiérarchie du projet"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Inode protégé par Verity"
msgid "&Marked all"
msgstr "Tous &Marqués"
@@ -2310,22 +2269,27 @@
msgstr "&Supprimer les marqués"
msgid "Chattr command"
-msgstr ""
+msgstr "Commande chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Chattr impossible \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
msgstr ""
+"Impossible de modifier les attributs sur les systèmes de fichiers non locaux"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Impossible d'obtenir les drapeaux de \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
msgstr "définir l'ID &utilisateur à l'exécution"
@@ -2423,12 +2387,6 @@
msgid "Cannot change directory"
msgstr " Ne peut changer de répertoire"
-msgid "Filter"
-msgstr "Filtre"
-
-msgid "Set expression for filtering filenames"
-msgstr " Expression pour filtrer les noms des fichiers"
-
#, c-format
msgid "Link %s to:"
msgstr "Lien %s vers :"
@@ -2534,9 +2492,6 @@
msgid "Shell link to machine"
msgstr " Lien shell vers une machine "
-msgid "SMB link to machine"
-msgstr "Lien SMB vers une machine"
-
msgid "Undelete files on an ext2 file system"
msgstr "Récupération de fichiers effacés sur un système de fichiers ext2"
@@ -2575,18 +2530,32 @@
"Impossible de créer le fichier de commande temporaire\n"
"%s"
+msgid "Pipe failed"
+msgstr " Échec du tube "
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Vous avez un fichier %s obsolète.\n"
+"Midnight Commander utilise maintenant le fichier %s.\n"
+"Veuillez copier vos modifications de l'ancien fichier vers le nouveau."
+
#, c-format
msgid " %s%s file error"
msgstr "%s%s erreur de fichier"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Le format du fichier %smc.ext a été changé avec la version 3.0. Il semble "
-"que l'installation ait échouée. Veullez mettre à jour Midnight Commander."
+"Le format du fichier %s%s a changé avec la version 4.0. Il semble que "
+"l'installation ait échoué. Veuillez récupérer une nouvelle copie à partir du "
+"paquet Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2594,12 +2563,12 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Le format du fichier %s a été changé avec la version 3.0. Vous voulez "
-"probablement une copie de %smc.ext ou utiliser le fichier comme exemple "
-"d'édition."
+"Le format du fichier %s a changé avec la version 4.0. Vous pouvez soit le "
+"copier à partir de %s%s, soit utiliser ce fichier à titre d'exemple pour "
+"savoir comment il faut l'écrire."
msgid "DialogTitle|Copy"
msgstr "TitreDialog|Copie"
@@ -2648,16 +2617,21 @@
"Cannot stat hardlink source file \"%s\"\n"
"%s"
msgstr ""
+"Impossible de statuer sur le fichier source de la liaison physique "
+"\"hardlink\" \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot create target hardlink \"%s\"\n"
"%s"
msgstr ""
+"Impossible de créer un lien physique \"hardlink\" cible \"%s\"\n"
+"%s"
#, c-format
msgid "Cannot create target hardlink \"%s\""
-msgstr ""
+msgstr "Impossible de créer un lien physique \"hardlink\" cible \"%s\""
#, c-format
msgid ""
@@ -2673,8 +2647,8 @@
"Option Stable Symlinks will be disabled"
msgstr ""
"Impossible de réaliser des liens symboliques stables entre systèmes de "
-"fichiers non-locaux : désactivation de l'option \"Liens symboliques stables"
-"\"."
+"fichiers non-locaux : désactivation de l'option \"Liens symboliques "
+"stables\"."
#, c-format
msgid ""
@@ -2889,6 +2863,15 @@
msgid "(stalled)"
msgstr "(au point mort)"
+msgid "Incomplete file was retrieved"
+msgstr "Un fichier incomplet a été récupéré"
+
+msgid "&Keep"
+msgstr "C&onserver"
+
+msgid "&Continue copy"
+msgstr "&Continuer à copier"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2905,12 +2888,6 @@
"Impossible de fermer le fichier cible « %s »\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Le fichier récupéré est incomplet. Le conserver quand même ?"
-
-msgid "&Keep"
-msgstr "C&onserver"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2993,13 +2970,13 @@
msgstr "%ld o/s"
msgid "New :"
-msgstr ""
+msgstr "Nouveau :"
msgid "Existing:"
-msgstr ""
+msgstr "Actuel :"
msgid "Overwrite this file?"
-msgstr ""
+msgstr "Écraser ce fichier ?"
msgid "A&ppend"
msgstr "a&joute"
@@ -3008,19 +2985,19 @@
msgstr "&Réobtenir"
msgid "Overwrite all files?"
-msgstr ""
+msgstr "Écraser tous les fichiers ?"
msgid "Don't overwrite with &zero length file"
-msgstr ""
+msgstr "Ne pas écraser avec le fichier de longueur &zero"
msgid "&Older"
-msgstr ""
+msgstr "Plus ancien"
msgid "S&maller"
-msgstr ""
+msgstr "Plus petit"
msgid "&Size differs"
-msgstr ""
+msgstr "Taille différente"
msgid "File exists"
msgstr "Le fichier existe"
@@ -3029,8 +3006,8 @@
msgstr "Tâche de fond : le fichier existe"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Fichiers traités: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Fichiers traités : %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3057,8 +3034,8 @@
msgstr "Total : %s"
#, c-format
-msgid " Total: %s/%s "
-msgstr "Total : %s/%s"
+msgid " Total: %s / %s "
+msgstr " Total : %s / %s "
msgid "Source"
msgstr "Source"
@@ -3124,11 +3101,8 @@
msgid "S&hell link..."
msgstr "Lien S&hell..."
-msgid "S&FTP link..."
-msgstr "Lien &SFTP..."
-
-msgid "SM&B link..."
-msgstr "Lien SM&B..."
+msgid "SFTP li&nk..."
+msgstr "SFTP lie&n..."
msgid "Paneli&ze"
msgstr "Mise en &panneaux"
@@ -3170,7 +3144,7 @@
msgstr "Chown &avancé"
msgid "Cha&ttr"
-msgstr ""
+msgstr "Cha&ttr"
msgid "&Rename/Move"
msgstr "&Renommer/Déplacer"
@@ -3224,7 +3198,7 @@
msgstr "&Historique des commandes"
msgid "Viewed/edited files hi&story"
-msgstr ""
+msgstr "Hi&storique des fichiers vus ou édités"
msgid "Di&rectory hotlist"
msgstr "Liste des répe&rtoires favoris"
@@ -3281,7 +3255,8 @@
msgid "You have %zu opened screen. Quit anyway?"
msgid_plural "You have %zu opened screens. Quit anyway?"
msgstr[0] "Il y a %zu fenêtre d'ouverte. Quitter ?"
-msgstr[1] "Il y a %zu fenêtres d'ouvertes. Quitter ?"
+msgstr[1] "Il y a %zu fenêtres ouvertes. Quitter ?"
+msgstr[2] "Il y a %zu fenêtres ouvertes. Quitter ?"
msgid "The Midnight Commander"
msgstr "Midnight Commander"
@@ -3341,6 +3316,9 @@
msgid "&Find recursively"
msgstr "&Recherche récursive"
+msgid "Follow s&ymlinks"
+msgstr "Suivre les liens s&ymboliques"
+
msgid "S&kip hidden"
msgstr "Ignorer les &cachés"
@@ -3380,14 +3358,15 @@
msgid_plural "Finished (ignored %zu directories)"
msgstr[0] "Terminé (%zu répertoire ignoré)"
msgstr[1] "Terminé (%zu répertoires ignorés)"
+msgstr[2] "Terminé (%zu répertoires ignorés)"
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
-msgstr ""
+msgstr "Chercher un fichier : \"%s\". Contenant : \"%s\""
#, c-format
msgid "Find File: \"%s\""
-msgstr ""
+msgstr "Chercher un fichier : \"%s\""
msgid "Searching"
msgstr "Recherche en cours"
@@ -3507,8 +3486,8 @@
msgstr "Pas d'information sur l'espace disponible"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Espace libre: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Espace libre : %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3551,6 +3530,7 @@
msgid_plural " (%lu blocks)"
msgstr[0] "(%lu bloc)"
msgstr[1] "(%lu blocs)"
+msgstr[2] "(%lu blocs)"
#, c-format
msgid "Owner: %s/%s"
@@ -3561,14 +3541,14 @@
msgstr "Liens : %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Attributs : non supporté"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Attributs : %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Attributs : indisponible"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3733,6 +3713,7 @@
msgid_plural "%s in %d files"
msgstr[0] " %s octets dans %d fichier"
msgstr[1] "%s dans %d fichiers"
+msgstr[2] "%s dans %d fichiers"
msgid "Panelize"
msgstr "Mettre en panneau"
@@ -3752,6 +3733,9 @@
msgid "Unselect"
msgstr "Désélectionner"
+msgid "Filter"
+msgstr "Filtre"
+
msgid "Do you really want to execute?"
msgstr "Voulez-vous vraiment l'exécuter ?"
@@ -3781,11 +3765,23 @@
msgid "Enter command label:"
msgstr "Saissiez le libellé de la commande :"
-msgid "Cannot invoke command."
-msgstr "Ne peut invoquer la commande."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Panneau externe :\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "La fermeture du tube a échoué"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Panneau externe :\n"
+"échec de la lecture des données du \"stdout\" enfant :\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Impossible d'exécuter le panneau externe dans un répertoire non local"
@@ -3951,6 +3947,9 @@
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"GNU Midnight Commander\n"
+"est déjà lancé sur ce terminal.\n"
+"Le support du sous-shell sera désactivé."
#, c-format
msgid ""
@@ -3994,37 +3993,37 @@
msgstr "Attention : ne peut aller à %s.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "Avec un éditeur intégré et un support Aspell"
msgid "With builtin Editor"
-msgstr ""
+msgstr "Avec l'éditeur intégré"
msgid "With optional subshell support"
-msgstr ""
+msgstr "Avec prise en charge optionnelle du sous-shell"
msgid "With subshell support as default"
-msgstr ""
+msgstr "Avec prise en charge du sous-shell par défaut"
msgid "With support for background operations"
-msgstr ""
+msgstr "Avec prise en charge des opérations en arrière-plan"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "Avec prise en charge de la souris sur xterm et la console Linux"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "Avec prise en charge de la souris sur xterm"
msgid "With support for X11 events"
-msgstr ""
+msgstr "Avec prise en charge des événements X11"
msgid "With internationalization support"
-msgstr ""
+msgstr "Avec prise en charge de l'internationalisation"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "Avec prise en charge de plusieurs codepages"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "Avec la prise en charge des attributs ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
@@ -4032,21 +4031,25 @@
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "Construit avec S-Lang %s avec la base de données terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Construit avec ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Construit avec ncurses (version inconnue)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "Construit avec ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
-msgstr ""
+msgstr "Construit avec ncursesw (version inconnue)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Construit avec libssh2 %d.%d.%d\n"
msgid "Virtual File Systems:"
msgstr "Systèmes des fichiers virtuels :"
@@ -4175,16 +4178,27 @@
"Fin de fichier inattendue\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Archive tar incohérente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Ne peut ouvrir l'archive %s\n"
+"Impossible d'ouvrir l'archive %s\n"
+"%s :\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Archive extfs incohérente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Système de fichiers virtuel EXTFS :\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4302,6 +4316,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Attente avant de réessayer... %d (Control-G pour annuler)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs : impossible de faire la conversion address-to-name : %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs : essaye de se reconnecter au serveur, tentative %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs : impossible d'obtenir le nom du socket : %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs : impossible de se reconnecter au serveur"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs : type de famille d'adresse incorrecte"
@@ -4355,6 +4384,14 @@
"Enlevez le mot de passe ou corrigez le mode."
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Système de fichiers virtuel SFS :\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Avertissement : fichier « %s » introuvable\n"
@@ -4388,6 +4425,11 @@
msgid "sftp: %s"
msgstr "sftp : %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp : échec de la conversion de l'adresse IP de l'hôte distant en format "
+"texte"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp : établissement de la connexion à %s"
@@ -4399,6 +4441,69 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp : connexion au serveur échouée : %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp : clé hôte trouvée de type non supporté : RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp : type de clé d'hôte inconnu :"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Ajout définitif de\n"
+"%s (%s)\n"
+"à la liste des hôtes connus."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp : impossible d'obtenir la clé de l'hôte distant"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp : type de clé non pris en charge, impossible de vérifier la clé de "
+"l'hôte distant"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+"sftp : Impossible de calculer l'empreinte numérique \"hash\" de la clé de "
+"l'hôte"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"L'authenticité de l'hôte\n"
+"%s (%s)\n"
+"ne peut pas être établie !\n"
+"L'emprunte numérique \"hash\" de la clé %s est\n"
+"SHA1:%s.\n"
+"Voulez-vous l'ajouter à la liste des hôtes connus et continuer à vous "
+"connecter ?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"se trouve dans la liste des hôtes connus mais les CLES NE\n"
+"CORRESPONDENT PAS ! CELA POURRAIT ÊTRE UNE ATTAQUE MITM !\n"
+"Voulez-vous vraiment l'ajouter à la liste des hôtes connus et continuer à "
+"vous connecter ?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp : échec de la vérification de la clé de l'hôte"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp : saisir la passphrase pour %s"
@@ -4413,8 +4518,8 @@
msgid "sftp: Password is empty."
msgstr "sftp : mot de passe vide"
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp : impossible d'établir une session SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp : échec de l'établissement de la session SSH"
msgid "sftp: No file handler data present for reading file"
msgstr ""
@@ -4432,33 +4537,6 @@
msgstr "sftp : listing effectué."
#, c-format
-msgid "reconnect to %s failed"
-msgstr " échec de la reconnexion à %s"
-
-msgid "Authentication failed"
-msgstr " Échec de l'authentification"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Erreur %s la création du répertoire %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr " Erreur %s destruction du répertoire %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s ouverture du fichier distant %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s suppression du fichier distant %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s renommage des fichiers\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/fr_CA.po
^
|
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
"PO-Revision-Date: 2015-02-26 09:48+0000\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: French (Canada) (http://www.transifex.com/projects/p/mc/"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3140,6 +3098,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3508,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3538,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3784,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3924,13 +3899,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4029,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4098,6 +4095,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4130,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4144,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ga.po
^
|
@@ -1,21 +1,22 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Irish (http://www.transifex.com/mc/mc/language/ga/)\n"
+"Language: ga\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n"
+"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
+"4);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -71,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1990,8 +1961,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3143,6 +3101,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3308,7 +3269,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3559,6 +3520,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3586,10 +3550,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3825,6 +3796,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3936,13 +3911,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4059,6 +4041,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4110,6 +4107,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4139,6 +4142,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4150,62 +4156,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/gl.po
^
|
@@ -11,10 +11,11 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>, "
+"2012,2014-2015,2019\n"
"Language-Team: Galician (http://www.transifex.com/mc/mc/language/gl/)\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
@@ -79,30 +80,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL! Non é un directorio:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Produciuse un erro ao migrar a configuración do usuario: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"A configuración antiga foi trasladada de %s\n"
-"cara os directorios recomendados por Freedesktop.\n"
-"Para obter máis detalles consulte\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"A configuración previa foi trasladada de %s\n"
-"a %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -194,12 +171,12 @@
msgid "True color not supported with ncurses."
msgstr "Non se admite a cor verdadeira con ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Non se admite a cor verdadeira nesta versión da xiria."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Semella que a súa terminal non admite 256 cores."
+msgid "True color not supported in this slang version."
+msgstr "Non se admite a cor verdadeira nesta versión da xiria."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Estabeleza COLORTERM=truecolor, se a súa terminal admite realmente cores "
@@ -555,6 +532,9 @@
"Produciuse un erro en select() lendo os datos para o proceso fillo:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -563,18 +543,6 @@
"Produciuse un erro non agardado en waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Atención"
-
-msgid "Pipe failed"
-msgstr "Fallo na canalización"
-
-msgid "Dup failed"
-msgstr "Fallou na duplicación"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Produciuse un erro duplicando antigo erro de canalización"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "O cache para %s expirou"
@@ -700,12 +668,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Gardar rexistro dos diálogos ftp nun ficheiro"
-msgid "Set debug level"
-msgstr "Definir o nivel de depuración"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Abrir un ficheiro co visor"
@@ -1043,15 +1005,6 @@
msgid "Two files are needed to compare"
msgstr "Son precisos dous ficheiros para comparar"
-msgid "Choose syntax highlighting"
-msgstr "Elixa a sintaxe de resalte"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Recargar a sintaxe actual >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Cargando: %3d%%"
@@ -1086,6 +1039,9 @@
"O ficheiro «%s» é grande de máis.\n"
"Abrir aínda así?"
+msgid "Warning"
+msgstr "Atención"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Produciuse un erro ao ler da canalización: %s"
@@ -1094,14 +1050,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Non é posíbel abrir canalización para lectura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Buscando %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Buscando %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Hai outras ligazóns duras ao ficheiro. Desexa separalas ao gardar?"
@@ -1147,9 +1095,6 @@
msgid "Save As"
msgstr "Gardar como"
-msgid "Collect completions"
-msgstr "Recoller os remates"
-
msgid "&Quick save"
msgstr "Gardar &Rápido"
@@ -1180,27 +1125,6 @@
msgid "Cannot save file"
msgstr "Non é posíbel gardar o ficheiro"
-msgid "Delete macro"
-msgstr "Eliminar macro"
-
-msgid "Press macro hotkey:"
-msgstr "Prema a tecla de macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro non eliminada"
-
-msgid "Save macro"
-msgstr "Gardar macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Prema a nova tecla para a macro:"
-
-msgid "Repeat last commands"
-msgstr "Repetir as últimas ordes"
-
-msgid "Repeat times:"
-msgstr "Número de repeticións:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Gardar o ficheiro: «%s»?"
@@ -1235,13 +1159,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Substituír"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr " %ld substitucións feitas"
-
msgid "[NoName]"
msgstr "[SenNome]"
@@ -1297,8 +1214,8 @@
msgid "Run sort"
msgstr "Proceder a ordenar"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Opcións para ordenar (ver manual), separadas por espazos:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Ordenar"
@@ -1350,35 +1267,35 @@
"O texto actual foi modificado e non foi gardado.\n"
"Continuar debotará estes cambios."
-msgid "In se&lection"
-msgstr "Na se&Lección"
+msgid "Cancel"
+msgstr "Cancelar"
-msgid "&Find all"
-msgstr "Buscar &Todos"
+msgid "Collect completions"
+msgstr "Recoller os remates"
-msgid "Enter replacement string:"
-msgstr "Escriba a cadea a substituír:"
+msgid "NoName"
+msgstr "SenNome"
-msgid "Replace with:"
-msgstr "Substituír con:"
+msgid "Save macro"
+msgstr "Gardar macro"
-msgid "&Replace"
-msgstr "Substituí&R"
+msgid "Press the macro's new hotkey:"
+msgstr "Prema a nova tecla para a macro:"
-msgid "A&ll"
-msgstr "&Todos"
+msgid "Delete macro"
+msgstr "Eliminar macro"
-msgid "&Skip"
-msgstr "&Omitir"
+msgid "Press macro hotkey:"
+msgstr "Prema a tecla de macro:"
-msgid "Confirm replace"
-msgstr "Confirmar cambios"
+msgid "Macro not deleted"
+msgstr "Macro non eliminada"
-msgid "Cancel"
-msgstr "Cancelar"
+msgid "Repeat last commands"
+msgstr "Repetir as últimas ordes"
-msgid "NoName"
-msgstr "SenNome"
+msgid "Repeat times:"
+msgstr "Número de repeticións:"
msgid "&Open file..."
msgstr "&Abrir ficheiro..."
@@ -1668,6 +1585,45 @@
msgid "Editor options"
msgstr "Opcións do editor"
+msgid "In se&lection"
+msgstr "Na se&Lección"
+
+msgid "&Find all"
+msgstr "Buscar &Todos"
+
+msgid "Enter replacement string:"
+msgstr "Escriba a cadea a substituír:"
+
+msgid "Replace"
+msgstr "Substituír"
+
+msgid "Replace with:"
+msgstr "Substituír con:"
+
+msgid "&Replace"
+msgstr "Substituí&R"
+
+msgid "A&ll"
+msgstr "&Todos"
+
+msgid "&Skip"
+msgstr "&Omitir"
+
+msgid "Confirm replace"
+msgstr "Confirmar cambios"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Buscando %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Buscando %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr " %ld substitucións feitas"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1675,7 +1631,7 @@
"Un editor de texto de uso amigábel\n"
"escrito para o Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1795,6 +1751,15 @@
msgid "Select language"
msgstr "Escoller o idioma"
+msgid "Choose syntax highlighting"
+msgstr "Elixa a sintaxe de resalte"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Recargar a sintaxe actual >"
+
msgid "Load syntax file"
msgstr "Cargar ficheiro de sintaxe"
@@ -2200,19 +2165,6 @@
msgstr "Traballos en segundo plano"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Contrasinal para \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Dominio:"
-
-msgid "Username:"
-msgstr "Usuario:"
-
-msgid "SMB authentication"
-msgstr "Autenticación SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2418,12 +2370,6 @@
msgid "Cannot change directory"
msgstr "Non é posíbel cambiar de directorio"
-msgid "Filter"
-msgstr "Filtro"
-
-msgid "Set expression for filtering filenames"
-msgstr "Introduza a expresión para filtrar nomes de ficheiro"
-
#, c-format
msgid "Link %s to:"
msgstr "Crear ligazón a %s como:"
@@ -2529,9 +2475,6 @@
msgid "Shell link to machine"
msgstr "Ligazón á máquina do terminal"
-msgid "SMB link to machine"
-msgstr "Ligazón á máquina SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Recuperar ficheiros dun sistema de ficheiros ext2"
@@ -2570,19 +2513,26 @@
"Non é posíbel crear o ficheiro temporal para ordes\n"
"%s"
+msgid "Pipe failed"
+msgstr "Fallo na canalización"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr "Produciuse un erro no ficheiro %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"O formato do ficheiro %smc.ext cambiou coa versión 3.0. Parece que está mal "
-"instalado. Por favor, tente conseguir unha copia intacta dende o paquete "
-"Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2590,11 +2540,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"O formato do ficheiro %s ha cambiou coa versión 3.0. Pode facer unha copia "
-"de %smc.ext ou empregalo como modelo."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Copiar"
@@ -2889,6 +2837,15 @@
msgid "(stalled)"
msgstr "(atoado)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Manter"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2905,12 +2862,6 @@
"Non é posíbel pechar o ficheiro destino «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "O ficheiro esta incompleto. Desexa conservalo?"
-
-msgid "&Keep"
-msgstr "&Manter"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3029,8 +2980,8 @@
msgstr "Proceso en 2º plano: O ficheiro xa existe"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Ficheiros procesados: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3057,8 +3008,8 @@
msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Total: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Orixe"
@@ -3110,7 +3061,7 @@
msgstr "Formato de &ista..."
msgid "&Sort order..."
-msgstr "&Ordenar..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filtro..."
@@ -3124,11 +3075,8 @@
msgid "S&hell link..."
msgstr "Conexión por &Terminal..."
-msgid "S&FTP link..."
-msgstr "Ligazón S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Conexión por &SMB..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "&Poñer no panel"
@@ -3341,6 +3289,9 @@
msgid "&Find recursively"
msgstr "&Busca recursiva"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "i&Gnorar agochados"
@@ -3507,8 +3458,8 @@
msgstr "Sen información do espazo"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Espazo libre: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3752,6 +3703,9 @@
msgid "Unselect"
msgstr "Desmarcar"
+msgid "Filter"
+msgstr "Filtro"
+
msgid "Do you really want to execute?"
msgstr "Confirma que quere executalo?"
@@ -3779,11 +3733,18 @@
msgid "Enter command label:"
msgstr "Introduza a etiqueta da orde:"
-msgid "Cannot invoke command."
-msgstr "Non é posíbel invocar a orde."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Produciuse un fallo ao pechar a canalización"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Non é posíbel executar a panelización externa nun directorio non local"
@@ -4046,6 +4007,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "(VFS) Sistema de ficheiros virtual:"
@@ -4171,16 +4136,22 @@
"Fin de ficheiro inesperado\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Arquivo de tipo tar inconsistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Non é posíbel abrir o arquivo %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Arquivo extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4296,6 +4267,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Agardando antes de volver tentar... %d (Ctrl-G para cancelar)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: familia de enderezos incorrecta"
@@ -4349,6 +4335,12 @@
"Elimine o contrasinal ou cambie os permisos."
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Aviso: non é posíbel atopar o ficheiro %s\n"
@@ -4382,6 +4374,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: estabelecendo conexión con %s"
@@ -4393,6 +4388,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: fracasou a conexión ao servidor: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: introduza a frase de paso para %s "
@@ -4407,8 +4446,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: o contrasinal está baleiro."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: produciuse un fallo ao estabelecer a sesión SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Sen datos del descritor do ficheiro para lelo."
@@ -4425,33 +4464,6 @@
msgstr "sftp: Feito o listado."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "Produciuse un fallo na reconexión con %s"
-
-msgid "Authentication failed"
-msgstr "Produciuse un fallo de autenticación"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Produciuse un erro %s creando o directorio %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Produciuse un erro %s eliminando o directorio %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s abrindo ficheiro remoto %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s eliminando ficheiro remoto %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s renomeando ficheiros\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/he.po
^
|
@@ -1,21 +1,22 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew (http://www.transifex.com/mc/mc/language/he/)\n"
+"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: he\n"
-"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
+"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -71,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1990,8 +1961,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3142,6 +3100,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3306,7 +3267,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3555,6 +3516,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3582,10 +3546,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3821,6 +3792,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3932,13 +3907,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4055,6 +4037,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4106,6 +4103,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4135,6 +4138,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4146,62 +4152,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/hr.po
^
|
@@ -6,17 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Croatian (http://www.transifex.com/mc/mc/language/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3141,6 +3099,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3304,7 +3265,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3551,6 +3512,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3578,10 +3542,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3817,6 +3788,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3928,13 +3903,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4051,6 +4033,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4102,6 +4099,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4131,6 +4134,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4142,62 +4148,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/hu.po
^
|
@@ -11,10 +11,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: András Tőrös <toros.andras04@gmail.com>, 2020\n"
"Language-Team: Hungarian (http://www.transifex.com/mc/mc/language/hu/)\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
@@ -79,30 +79,6 @@
msgid "FATAL: not a directory:"
msgstr "HIBA: nem könyvtár:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Hiba történt a felhasználói adatok migrálásakor: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"A régi beállítások innen: %s migrálva lettek\\n\n"
-"a Freedesktop ajánlás szerinti könyvtárakba.\\n\n"
-"További információ:\\n\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"A régi beállítások innen: %s migrálva lettek\n"
-"migrálva lettek ide: %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -184,10 +160,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -541,24 +517,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Figyelem"
-
-msgid "Pipe failed"
-msgstr "Cső-hiba"
-
-msgid "Dup failed"
-msgstr "Sikertelen duplikálás"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Hiba a régi hiba-cső duplikálásakor"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "A könyvtár gyorstárának adatai elévültek: %s"
@@ -684,12 +651,6 @@
msgid "Log ftp dialog to specified file"
msgstr "FTP-párbeszéd naplózása megadott fájlba"
-msgid "Set debug level"
-msgstr "Nyomkövetési (debug) szint beállítása"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Fájlmegjelenítés indítása a megadott fájlon"
@@ -1025,15 +986,6 @@
msgid "Two files are needed to compare"
msgstr "Két fájl kell az összehasonlításhoz"
-msgid "Choose syntax highlighting"
-msgstr "Válasszon szintaktikus szövegkiemelést"
-
-msgid "< Auto >"
-msgstr "< Automatikus >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Aktuális szintaktika újratöltése >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Betöltés: %3d%%"
@@ -1068,6 +1020,9 @@
" \"%s\" fájl túl nagy.\n"
"Mindenképp megnyitja?"
+msgid "Warning"
+msgstr "Figyelem"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Hiba a cső olvasásakor: %s"
@@ -1076,14 +1031,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "A cső nem megnyitható olvasásra: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "%s keresése: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "\"%s\" keresése"
-
msgid "File has hard-links. Detach before saving?"
msgstr "A fájlban \"hard-link\" van. Leválaszt mentés előtt?"
@@ -1129,9 +1076,6 @@
msgid "Save As"
msgstr "Mentés másként"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "Gyors mentés"
@@ -1162,27 +1106,6 @@
msgid "Cannot save file"
msgstr "Nem sikerült a mentés."
-msgid "Delete macro"
-msgstr "Makró törlése"
-
-msgid "Press macro hotkey:"
-msgstr "Makró-gyorsbillentyű:"
-
-msgid "Macro not deleted"
-msgstr "A makró nem lett törölve"
-
-msgid "Save macro"
-msgstr "Makró mentése"
-
-msgid "Press the macro's new hotkey:"
-msgstr "A makró új gyorsbillentyűje:"
-
-msgid "Repeat last commands"
-msgstr "Utolsó parancsok ismétlése"
-
-msgid "Repeat times:"
-msgstr "Ismétlések száma:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Valóban menti: %s ?"
@@ -1217,13 +1140,6 @@
msgid "&Local"
msgstr "&Könyvtárét (helyi)"
-msgid "Replace"
-msgstr "Csere"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld csere történt."
-
msgid "[NoName]"
msgstr "[Névtelen]"
@@ -1279,8 +1195,8 @@
msgid "Run sort"
msgstr "Rendezés futtatása"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "\"sort\" paraméterei (ld. man sort), szóközzel elválasztva:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Rendezés"
@@ -1332,35 +1248,35 @@
"A szöveg módosult a legutóbbi mentés óta. \n"
"Ha továbblép, ezek a változások elvesznek."
-msgid "In se&lection"
-msgstr "Kijelöltben"
+msgid "Cancel"
+msgstr "Mégsem"
-msgid "&Find all"
-msgstr "Min&det"
+msgid "Collect completions"
+msgstr ""
-msgid "Enter replacement string:"
-msgstr "Új szöveg:"
+msgid "NoName"
+msgstr "Névtelen"
-msgid "Replace with:"
-msgstr "Csere erre:"
+msgid "Save macro"
+msgstr "Makró mentése"
-msgid "&Replace"
-msgstr "&Csere"
+msgid "Press the macro's new hotkey:"
+msgstr "A makró új gyorsbillentyűje:"
-msgid "A&ll"
-msgstr "Min&det"
+msgid "Delete macro"
+msgstr "Makró törlése"
-msgid "&Skip"
-msgstr "&Kihagyás"
+msgid "Press macro hotkey:"
+msgstr "Makró-gyorsbillentyű:"
-msgid "Confirm replace"
-msgstr "Csere megerősítése"
+msgid "Macro not deleted"
+msgstr "A makró nem lett törölve"
-msgid "Cancel"
-msgstr "Mégsem"
+msgid "Repeat last commands"
+msgstr "Utolsó parancsok ismétlése"
-msgid "NoName"
-msgstr "Névtelen"
+msgid "Repeat times:"
+msgstr "Ismétlések száma:"
msgid "&Open file..."
msgstr "&Megnyitás..."
@@ -1650,6 +1566,45 @@
msgid "Editor options"
msgstr "A szövegszerkesztő beállításai"
+msgid "In se&lection"
+msgstr "Kijelöltben"
+
+msgid "&Find all"
+msgstr "Min&det"
+
+msgid "Enter replacement string:"
+msgstr "Új szöveg:"
+
+msgid "Replace"
+msgstr "Csere"
+
+msgid "Replace with:"
+msgstr "Csere erre:"
+
+msgid "&Replace"
+msgstr "&Csere"
+
+msgid "A&ll"
+msgstr "Min&det"
+
+msgid "&Skip"
+msgstr "&Kihagyás"
+
+msgid "Confirm replace"
+msgstr "Csere megerősítése"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "%s keresése: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "\"%s\" keresése"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld csere történt."
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1657,7 +1612,7 @@
"Felhasználóbarát szövegszerkesztő\n"
"a Midnight Commander-hez készítve"
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1777,6 +1732,15 @@
msgid "Select language"
msgstr "Nyelv kiválasztása"
+msgid "Choose syntax highlighting"
+msgstr "Válasszon szintaktikus szövegkiemelést"
+
+msgid "< Auto >"
+msgstr "< Automatikus >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Aktuális szintaktika újratöltése >"
+
msgid "Load syntax file"
msgstr "Szintaxisfájl betöltése"
@@ -2180,19 +2144,6 @@
msgstr "Háttérfolyamatok"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s jelszava:"
-
-msgid "Domain:"
-msgstr "Tartomány:"
-
-msgid "Username:"
-msgstr "Felhasználónév:"
-
-msgid "SMB authentication"
-msgstr "SMB hitelesítés"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2398,12 +2349,6 @@
msgid "Cannot change directory"
msgstr "Nem sikerült könyvtárt váltani"
-msgid "Filter"
-msgstr "Szűrő"
-
-msgid "Set expression for filtering filenames"
-msgstr "Adja meg a fájlnevekre vonatkozó szűrőkifejezést"
-
#, c-format
msgid "Link %s to:"
msgstr "\"%s\" linkelése ide:"
@@ -2509,9 +2454,6 @@
msgid "Shell link to machine"
msgstr "Shell-kapcsolat egy másik géppel"
-msgid "SMB link to machine"
-msgstr "SMB-kapcsolat"
-
msgid "Undelete files on an ext2 file system"
msgstr "Törölt fájlok visszaállítása Ext2 fájlrendszeren"
@@ -2550,19 +2492,26 @@
"Nem sikerült ideiglenes parancsfájlt létrehozni\n"
"%s"
+msgid "Pipe failed"
+msgstr "Cső-hiba"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s fájlhiba"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"A(z) %smc.ext fájl formátuma a 3.0-s verzióval módosult. Úgy tűnik, hogy a "
-"Midnight Commander telepítésekor hiba történt. Szerezzen be egy friss "
-"verziót a Midnight Commander-csomagból."
#, c-format
msgid "%s file error"
@@ -2570,11 +2519,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"'%s' fájl formátuma a 3.0-s verzióval módosult. Lemásolhatja azt a(z) '%smc."
-"ext' fájlból, vagy elkészítheti az alapján."
msgid "DialogTitle|Copy"
msgstr "Másol"
@@ -2862,6 +2809,15 @@
msgid "(stalled)"
msgstr "(elakadt)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Megtartás"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2878,12 +2834,6 @@
"Nem sikerült lezárni a(z) \"%s\" célfájlt. \n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Nem másolódott át a teljes fájl. Megtartja a célfájlt?"
-
-msgid "&Keep"
-msgstr "&Megtartás"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3003,8 +2953,8 @@
msgstr "Háttérfolyamat: a fájl már létezik"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Feldolgozott fájl: %zu / %zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3031,8 +2981,8 @@
msgstr " Összesen: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Összesen: %s/%s"
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Forrás"
@@ -3084,7 +3034,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "&Rendezési mód..."
+msgstr ""
msgid "&Filter..."
msgstr "&Szűrő..."
@@ -3098,11 +3048,8 @@
msgid "S&hell link..."
msgstr "Sh&ell-kapcsolat..."
-msgid "S&FTP link..."
-msgstr "S&FTP link..."
-
-msgid "SM&B link..."
-msgstr "SM&B-kapcsolat..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Panelra helye&zés"
@@ -3315,6 +3262,9 @@
msgid "&Find recursively"
msgstr "Rek&urzív keresés"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "&Rejtettek kihagyása"
@@ -3481,8 +3431,8 @@
msgstr "Nincs adat a tárolóhelyről"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Szabad hely: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3726,6 +3676,9 @@
msgid "Unselect"
msgstr "Kijelölések megszüntetése"
+msgid "Filter"
+msgstr "Szűrő"
+
msgid "Do you really want to execute?"
msgstr "Biztosan futtatni kívánja a programot?"
@@ -3753,11 +3706,18 @@
msgid "Enter command label:"
msgstr "A parancshoz tartozó leírás:"
-msgid "Cannot invoke command."
-msgstr "A parancs nem hívható meg."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Nem sikerült lezárni a csövet."
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Távoli/virtuális könyvtáron nem megy a külső panel-parancsot"
@@ -4023,6 +3983,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtuális fájlrendszerek:"
@@ -4148,16 +4112,22 @@
"Váratlan fájlvég:\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inkonzisztens tar-archívum."
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s-archívum nem megnyitható\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inkonzisztens Extfs-archívum."
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4273,6 +4243,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Várakozás az ismétlésre... %d (megszakítás: Control-G)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "Ftpfs: hibás gépnév/-cím"
@@ -4326,6 +4311,12 @@
"Szüntesse meg a jelszót vagy javítsa a jogosultságokat."
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Figyelem: %s fájl nem található\n"
@@ -4359,6 +4350,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: kapcsolódás %s-hoz/hez"
@@ -4370,6 +4364,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: a kapcsolódás nem sikerült a szerverhez: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Adja meg %s jelmondatát"
@@ -4384,8 +4422,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: a jelszó üres."
-msgid "sftp: Failure establishing SSH session"
-msgstr "stp: Hiba lépett fel az ssh kapcsolat létrehozása közben"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Nincs jelenleg elérhető fájlkezelő adat a fájl olvasásához"
@@ -4402,33 +4440,6 @@
msgstr "sftp: A listázás kész."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "%s: újrakapcsolódás sikertelen"
-
-msgid "Authentication failed"
-msgstr "Azonosítás sikertelen"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "%s könyvtár létrehozása: %s hiba"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "%s könyvtár törlése: %s hiba"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s távoli fájl megnyitása: %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s távoli fájl törlése: %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s: a fájlok átnevezésekor\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ia.po
^
|
@@ -9,10 +9,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>, 2012,2017\n"
"Language-Team: Interlingua (http://www.transifex.com/mc/mc/language/ia/)\n"
"Language: ia\n"
"MIME-Version: 1.0\n"
@@ -77,24 +77,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -173,10 +155,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -530,24 +512,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Advertimento"
-
-msgid "Pipe failed"
-msgstr "Tubo fallite"
-
-msgid "Dup failed"
-msgstr "Duplication fallite"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Error duplicante ancian tubo de error"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache de directorio explicate pro %s"
@@ -673,12 +646,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Registrar dialogos FTP in un file"
-msgid "Set debug level"
-msgstr "Fixar le nivello de recerca de faltas"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Aperir un file con le visualisator"
@@ -977,15 +944,6 @@
msgid "Two files are needed to compare"
msgstr "Duo files es necessari pro comparar"
-msgid "Choose syntax highlighting"
-msgstr "Selige coloration syntactic"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Recargar syntaxe actual >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1018,6 +976,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Advertimento"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Error de lectura ab tubo: %s"
@@ -1026,14 +987,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Impossibile aperir tubo pro lectura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Cerca %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Le file ha ligamines physic. Distachar ante salveguardar?"
@@ -1079,9 +1032,6 @@
msgid "Save As"
msgstr "Salveguardar como"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1112,27 +1062,6 @@
msgid "Cannot save file"
msgstr "Le file non pote esser salveguardate"
-msgid "Delete macro"
-msgstr "Deler le macro"
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr "Salveguardar le macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1167,13 +1096,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1225,7 +1147,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1276,34 +1198,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Cancellar"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
-msgstr ""
+msgid "Save macro"
+msgstr "Salveguardar le macro"
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
-msgstr ""
+msgid "Delete macro"
+msgstr "Deler le macro"
-msgid "&Skip"
-msgstr "&Saltar"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Cancellar"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1594,12 +1516,51 @@
msgid "Editor options"
msgstr "Optiones de editor"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr "&Saltar"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Cerca %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1719,6 +1680,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr "Selige coloration syntactic"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Recargar syntaxe actual >"
+
msgid "Load syntax file"
msgstr ""
@@ -2109,19 +2079,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Contrasigno pro \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Dominio:"
-
-msgid "Username:"
-msgstr "Nomine de usator:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2325,12 +2282,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr "Filtro"
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2434,9 +2385,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2471,14 +2419,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr "Tubo fallite"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2488,8 +2446,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2724,6 +2682,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2736,12 +2703,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2848,7 +2809,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2876,7 +2837,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2943,10 +2904,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3160,6 +3118,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3322,7 +3283,7 @@
msgstr "Nulle information super spatio"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3567,6 +3528,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr "Filtro"
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3594,10 +3558,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3833,6 +3804,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3956,16 +3931,22 @@
"Fin de file inexpectate\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Archivo tar inconsistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Impossibile aperir le archivo %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Archivo extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4083,6 +4064,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: familia de adresses invalide"
@@ -4136,6 +4132,12 @@
"Remove le contrasigno o corrige le modo"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4169,6 +4171,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4180,63 +4185,80 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
-msgstr "reconnexion a %s fallite"
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
-msgid "Authentication failed"
-msgstr "Authentication fallite"
+msgid "sftp: Passphrase is empty."
+msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Error %s durante le creation del directorio %s"
+msgid "sftp: Enter password for %s "
+msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Error %s durante le remotion del directorio %s"
+msgid "sftp: Password is empty."
+msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s aperi file remote %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
+msgstr ""
#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s remove file remote %s"
+msgid "sftp: socket error: %s"
+msgstr ""
#, c-format
-msgid "%s renaming files\n"
-msgstr "%s renomina files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
+msgstr ""
#, c-format
msgid ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/id.po
^
|
@@ -9,10 +9,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Ferriandy Chianiago <gpl4all@gmail.com>, 2015\n"
"Language-Team: Indonesian (http://www.transifex.com/mc/mc/language/id/)\n"
"Language: id\n"
"MIME-Version: 1.0\n"
@@ -77,30 +77,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: bukan sebuah direktori:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Terjadi kesalahan saat migrasi setting pengguna: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Setting lama anda sudah dimigrasikan dari %s\n"
-"ke direktori yang direkomendasikan Freedesktop.\n"
-"Untuk penjelasan lebih lanjutm silahkan kunjungi\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Setting lama anda telah dimigrasikan dari %s\n"
-"ke %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -182,10 +158,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -541,6 +517,9 @@
"Kesalahan tak terduga dalam select() membaca data dari child process\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -549,18 +528,6 @@
"Kesalahan tak terduga dalam waitpid()\n"
"%s"
-msgid "Warning"
-msgstr "Peringatan"
-
-msgid "Pipe failed"
-msgstr "Pipa gagal"
-
-msgid "Dup failed"
-msgstr "Dup gagal"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Kesalahan pada dup'ing error pipe"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache direktori untuk %s sudah kadaluarsa "
@@ -687,12 +654,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Rekam log ftp dialog ke file yang ditentukan"
-msgid "Set debug level"
-msgstr "Tentukan level debug"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Jalankan file viewer atas file"
@@ -998,15 +959,6 @@
msgid "Two files are needed to compare"
msgstr "Dibutuhkan dua file untuk membandingkan"
-msgid "Choose syntax highlighting"
-msgstr "Pilih syntax highlighting"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Reload Current Syntax >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Memuat: %3d%%"
@@ -1041,6 +993,9 @@
"File \"%s\" terlalu besar.\n"
"Tetap dibuka?"
+msgid "Warning"
+msgstr "Peringatan"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1049,14 +1004,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr ""
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1102,9 +1049,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1135,27 +1079,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1190,13 +1113,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1248,7 +1164,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1299,34 +1215,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1617,12 +1533,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1742,6 +1697,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr "Pilih syntax highlighting"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Reload Current Syntax >"
+
msgid "Load syntax file"
msgstr ""
@@ -2132,19 +2096,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2348,12 +2299,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2457,9 +2402,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2494,14 +2436,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr "Pipa gagal"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2511,8 +2463,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2747,6 +2699,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2759,12 +2720,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2871,7 +2826,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2899,7 +2854,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2966,10 +2921,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3182,6 +3134,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3343,7 +3298,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3586,6 +3541,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3613,10 +3571,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3852,6 +3817,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3967,13 +3936,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4090,6 +4066,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4141,6 +4132,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4170,6 +4167,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4181,62 +4181,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ie.po
^
|
@@ -1,20 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Interlingue (http://www.transifex.com/mc/mc/language/ie/)\n"
+"Language: ie\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ie\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
@@ -71,24 +71,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +145,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +500,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Avise"
-
-msgid "Pipe failed"
-msgstr "pipe ne successat"
-
-msgid "Dup failed"
-msgstr "dup ne successat"
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +634,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +923,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr "Selecter li coloration de sintaxe"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,6 +955,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Avise"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1005,14 +966,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr ""
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1058,9 +1011,6 @@
msgid "Save As"
msgstr "Gardar quam"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1041,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1075,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1126,7 @@
msgid "Run sort"
msgstr "Lansar sort"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1177,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Anullar"
-msgid "&Find all"
-msgstr "&Trovar omni"
+msgid "Collect completions"
+msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Anullar"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1495,51 @@
msgid "Editor options"
msgstr "Parametres del redactor"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr "&Trovar omni"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1659,15 @@
msgid "Select language"
msgstr "Selecter un lingue"
+msgid "Choose syntax highlighting"
+msgstr "Selecter li coloration de sintaxe"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1765,7 +1735,9 @@
msgid ""
"Cannot chmod \"%s\"\n"
"%s"
-msgstr "chmod \"%s\" ne successat\n%s"
+msgstr ""
+"chmod \"%s\" ne successat\n"
+"%s"
msgid "&Ignore"
msgstr "&Ignorar"
@@ -1780,7 +1752,9 @@
msgid ""
"Cannot chown \"%s\"\n"
"%s"
-msgstr "chown \"%s\" ne successat\n%s"
+msgstr ""
+"chown \"%s\" ne successat\n"
+"%s"
msgid "< Default >"
msgstr "< Predefinit >"
@@ -1990,8 +1964,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr "&Deleter"
@@ -2089,19 +2062,6 @@
msgstr "Taches in funde"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr "Dominia:"
-
-msgid "Username:"
-msgstr "Nómine de usator:"
-
-msgid "SMB authentication"
-msgstr "Autentication SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2265,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr "Filtre"
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2368,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr "Dedeleter files sur un sistema de files ext2"
@@ -2451,14 +2402,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr "pipe ne successat"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2429,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2665,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Retener"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2686,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr "&Retener"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2792,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2820,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,11 +2887,8 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr "Conexion S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Conexion SM&B..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Pa&nelisar"
@@ -3140,6 +3101,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3266,7 @@
msgstr "Null information pri spacie"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3511,9 @@
msgid "Unselect"
msgstr "Deselecter"
+msgid "Filter"
+msgstr "Filtre"
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3541,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3787,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3892,7 +3870,9 @@
msgid ""
"Cannot open cpio archive\n"
"%s"
-msgstr "Ne successat aperter li archive cpio\n%s"
+msgstr ""
+"Ne successat aperter li archive cpio\n"
+"%s"
#, c-format
msgid ""
@@ -3924,13 +3904,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4034,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: ínvalid familie de adresses"
@@ -4098,6 +4100,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4135,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4149,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
-msgstr "Autentication ne successat"
+msgid "sftp: Passphrase is empty."
+msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/it.po
^
|
@@ -1,27 +1,30 @@
-# The Midnight Commander Italian translation strings
-# Copyright (C) 1998-2019 Free Software Foundation, Inc.
-# This file is distributed under the same license as the Midnight Commander package.
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the mc package.
#
# Translators:
-# Marco Ciampa <ciampix@libero.it>, 1999-2020
-# Andreas Troschka <signupbox001@om.it.eu.org>, 2012.
-# Giuliano Natali <diaolin@diaolin.com>, 1998.
-# Slava Zanko <slavazanko@gmail.com>, 2011.
+# Andreas Troschka <signupbox001@om.it.eu.org>, 2012
+# Giuliano Natali <diaolin@diaolin.com>, 1998
+# Marco Ciampa <ciampix@posteo.net>, 2012,2015
+# Marco Falgari <marco.ledpro@gmail.com>, 2018
+# Marco Manuzzi <marco.manuzzi@icloud.com>, 2021
+# Slava Zanko <slavazanko@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-01-06 12:54+0100\n"
-"Last-Translator: Marco Ciampa <ciampix@libero.it>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/mc/language/"
-"it/)\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
+"Language-Team: Italian (http://www.transifex.com/mc/mc/language/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
+"1 : 2;\n"
+# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
msgstr "Attenzione: impossibile caricare l'elenco delle codepage"
@@ -78,30 +81,6 @@
msgid "FATAL: not a directory:"
msgstr "FATALE: non è una directory:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Errore durante la migrazione delle impostazioni dell'utente: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Le vecchie impostazioni sono state migrate da %s\n"
-"alle cartelle raccomandate da Freedesktop.\n"
-"Per avere ulteriori informazioni, consultare\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Le vecchie impostazioni sono state migrate da %s\n"
-"a %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -190,12 +169,12 @@
msgid "True color not supported with ncurses."
msgstr "True color non supportato con ncurses."
-msgid "True color not supported in this slang version."
-msgstr "True color non supportato in questa versione di slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Il terminale non sembra supportare neanche 256 colori."
+msgid "True color not supported in this slang version."
+msgstr "True color non supportato in questa versione di slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Impostare COLORTERM=truecolor se il terminale supporta il true color."
@@ -488,23 +467,29 @@
msgid "Cannot check SIGWINCH pipe"
msgstr "Impossibile controllare la pipe SIGWINCH"
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
-msgstr "Impossibile creare la pipe SIGWINCH"
+msgstr ""
+"\n"
+"Impossibile creare la pipe per SIGWINCH: %s (%d)\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
-msgstr "Impossibile configurare la fine scrittura della pipe SIGWINCH"
+msgstr ""
+"\n"
+"Impossibile configurare la fine scrittura della pipe SIGWINCH: %s (%d)\n"
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
-msgstr "Impossibile configurare la fine lettura della pipe SIGWINCH"
+msgstr ""
+"\n"
+"Impossibile configurare la fine lettura della pipe SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
@@ -549,6 +534,9 @@
"Errore inaspettato in select() leggendo i dati da un processo figlio:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -557,18 +545,6 @@
"Errore inatteso in waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Attenzione"
-
-msgid "Pipe failed"
-msgstr "Pipe fallita"
-
-msgid "Dup failed"
-msgstr "Dup fallita"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Errore facendo il dup della vecchia pipe errori"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache dir scaduta per %s"
@@ -694,12 +670,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Annota i messaggi dell'ftp in un file specificato"
-msgid "Set debug level"
-msgstr "Imposta livello di debug"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Esegue il visualizzatore per un file"
@@ -1035,15 +1005,6 @@
msgid "Two files are needed to compare"
msgstr "Per il confronto servono due file"
-msgid "Choose syntax highlighting"
-msgstr "Scegli la sintassi evidenziata"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Ricarica la sintassi corrente >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Caricamento: %3d%%"
@@ -1078,6 +1039,9 @@
"Il file \"%s\" è troppo grande.\n"
"Aprirlo comunque?"
+msgid "Warning"
+msgstr "Attenzione"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Errore leggendo dalla pipe: %s"
@@ -1086,14 +1050,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Impossibile aprire la pipe in lettura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Cercando %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Cercando %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Il file ha collegamenti (link) hard. Scollegarli prima di salvare?"
@@ -1139,9 +1095,6 @@
msgid "Save As"
msgstr "Salva come"
-msgid "Collect completions"
-msgstr "Raccogli completion"
-
msgid "&Quick save"
msgstr "Salva &veloce"
@@ -1172,27 +1125,6 @@
msgid "Cannot save file"
msgstr "Impossibile salvare il file"
-msgid "Delete macro"
-msgstr "Elimina macro"
-
-msgid "Press macro hotkey:"
-msgstr "Premere tasto macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro non cancellata"
-
-msgid "Save macro"
-msgstr "Salva macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Premi nuovo tasto veloce macro:"
-
-msgid "Repeat last commands"
-msgstr "Ripeti l'ultimo comando"
-
-msgid "Repeat times:"
-msgstr "Numero ripetizioni:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Conferma salvataggio file: \"%s\""
@@ -1227,13 +1159,6 @@
msgid "&Local"
msgstr "&Locale"
-msgid "Replace"
-msgstr "Sostituisci"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Eseguite %ld sostituzioni"
-
msgid "[NoName]"
msgstr "[SenzaNome]"
@@ -1289,8 +1214,8 @@
msgid "Run sort"
msgstr "Esegui ordinamento"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Inserisci opzioni di ordinamento (vedi man sort) separate da spazi:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Ordina"
@@ -1342,35 +1267,35 @@
"Il testo corrente è stato modificato senza salvare.\n"
"Continuando si perdono tutte le modifiche."
-msgid "In se&lection"
-msgstr "In se&lezione"
+msgid "Cancel"
+msgstr "Annulla"
-msgid "&Find all"
-msgstr "Tro&va tutti"
+msgid "Collect completions"
+msgstr "Raccogli completion"
-msgid "Enter replacement string:"
-msgstr "Inserire stringa di sostituzione:"
+msgid "NoName"
+msgstr "SenzaNome"
-msgid "Replace with:"
-msgstr "Sostituisci con:"
+msgid "Save macro"
+msgstr "Salva macro"
-msgid "&Replace"
-msgstr "&Rimpiazza"
+msgid "Press the macro's new hotkey:"
+msgstr "Premi nuovo tasto veloce macro:"
-msgid "A&ll"
-msgstr "&Tutti"
+msgid "Delete macro"
+msgstr "Elimina macro"
-msgid "&Skip"
-msgstr "&Salta"
+msgid "Press macro hotkey:"
+msgstr "Premere tasto macro:"
-msgid "Confirm replace"
-msgstr "Conferma sostituzione"
+msgid "Macro not deleted"
+msgstr "Macro non cancellata"
-msgid "Cancel"
-msgstr "Annulla"
+msgid "Repeat last commands"
+msgstr "Ripeti l'ultimo comando"
-msgid "NoName"
-msgstr "SenzaNome"
+msgid "Repeat times:"
+msgstr "Numero ripetizioni:"
msgid "&Open file..."
msgstr "&Apri file..."
@@ -1660,6 +1585,45 @@
msgid "Editor options"
msgstr "Opzioni editor"
+msgid "In se&lection"
+msgstr "In se&lezione"
+
+msgid "&Find all"
+msgstr "Tro&va tutti"
+
+msgid "Enter replacement string:"
+msgstr "Inserire stringa di sostituzione:"
+
+msgid "Replace"
+msgstr "Sostituisci"
+
+msgid "Replace with:"
+msgstr "Sostituisci con:"
+
+msgid "&Replace"
+msgstr "&Rimpiazza"
+
+msgid "A&ll"
+msgstr "&Tutti"
+
+msgid "&Skip"
+msgstr "&Salta"
+
+msgid "Confirm replace"
+msgstr "Conferma sostituzione"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Cercando %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Cercando %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Eseguite %ld sostituzioni"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1667,9 +1631,8 @@
"Un semplice editor di testi\n"
"scritto per il Midnight Commander."
-#, fuzzy
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2019 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "Informazioni"
@@ -1788,6 +1751,15 @@
msgid "Select language"
msgstr "Seleziona la lingua"
+msgid "Choose syntax highlighting"
+msgstr "Scegli la sintassi evidenziata"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Ricarica la sintassi corrente >"
+
msgid "Load syntax file"
msgstr "Carica file sintassi"
@@ -1821,13 +1793,12 @@
msgid "The shell is already running a command"
msgstr "La shell sta già eseguendo un comando"
-#, fuzzy
msgid ""
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
-"Non è né un xterm né una console; \n"
-"i pannelli non possono essere nascosti."
+"Non è un xterm né una console Linux; \n"
+"la subshell non può essere commutata."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Battere 'exit' per tornare al Midnight Commander"
@@ -1853,9 +1824,9 @@
msgid "Flag"
msgstr "Flag"
-#, fuzzy, c-format
+#, c-format
msgid "Permissions (octal): %o"
-msgstr "Permessi (ottale):"
+msgstr "Permessi (ottale): %o"
msgid "Chown advanced command"
msgstr "Comando chown avanzato"
@@ -1982,7 +1953,7 @@
msgstr "Tema:"
msgid "&Shadows"
-msgstr ""
+msgstr "O&mbre"
msgid "Appearance"
msgstr "Aspetto"
@@ -2196,19 +2167,6 @@
msgstr "Processi in background"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Password per \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Dominio:"
-
-msgid "Username:"
-msgstr "Nome utente:"
-
-msgid "SMB authentication"
-msgstr "Autenticazione SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2216,90 +2174,80 @@
"Non posso entrare in \"%s\"\n"
"%s"
-#, fuzzy
msgid "Secure deletion"
-msgstr "&Inverti selezione"
+msgstr "Eliminazione sicura"
-#, fuzzy
msgid "Undelete"
-msgstr "Elimina"
+msgstr "De-elimina"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Aggiornamenti sincroni"
-#, fuzzy
msgid "Synchronous directory updates"
-msgstr "Mostra dimensione d&irectory"
+msgstr "Aggiornamento directory sincrono"
msgid "Immutable"
-msgstr ""
+msgstr "Immutabile"
-#, fuzzy
msgid "Append only"
-msgstr "&Appendi"
+msgstr "Solo aggiunta"
msgid "No dump"
-msgstr ""
+msgstr "No dump"
msgid "No update atime"
-msgstr ""
+msgstr "No agg.nto atime"
msgid "Compress"
-msgstr ""
+msgstr "Comprimi"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Cluster compressi"
-#, fuzzy
msgid "Compressed dirty file"
-msgstr "Confronta directory"
+msgstr "File dirty compresso"
msgid "Compression raw access"
-msgstr ""
+msgstr "Accesso diretto compressione"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Inode crittato"
msgid "Journaled data"
-msgstr ""
+msgstr "Dati journaled"
-#, fuzzy
msgid "Indexed directory"
-msgstr "directory"
+msgstr "Directory indicizzata"
msgid "No tail merging"
-msgstr ""
+msgstr "No fusione tail"
-#, fuzzy
msgid "Top of directory hierarchies"
-msgstr "Mostra dimensione d&irectory"
+msgstr "Gerarchie top directory"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Inode usa gli extents"
-#, fuzzy
msgid "Huge_file"
-msgstr "file"
+msgstr "File_enorme"
msgid "No COW"
-msgstr ""
+msgstr "No COW"
-#, fuzzy
msgid "Direct access for files"
-msgstr "Cache dir scaduta per %s"
+msgstr "Accesso diretto ai file"
-#, fuzzy
msgid "Casefolded file"
-msgstr "Chiudi il file"
+msgstr "File casefolded"
msgid "Inode has inline data"
-msgstr ""
+msgstr "Inode con dati inline"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Gerarchia del progetto"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Inode protetto verity"
msgid "&Marked all"
msgstr "M&od. tut."
@@ -2310,28 +2258,26 @@
msgid "C&lear marked"
msgstr "&Canc. marc."
-#, fuzzy
msgid "Chattr command"
-msgstr "Altro comando"
+msgstr "Comando chattr"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
-"Impossibile ottenere info dal file \"%s\"\n"
+"Impossibile chattr \"%s\"\n"
"%s"
-#, fuzzy
msgid "Cannot change attributes on non-local filesystems"
-msgstr "Impossibile eseguire comandi su filesystem non locali"
+msgstr "Impossibile cambiare gli attributi su filesystem non locali"
-#, fuzzy, c-format
+#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
-"Impossibile spostare il file \"%s\" in \"%s\" \n"
+"Impossibile ottenere i flag di \"%s\"\n"
"%s"
msgid "set &user ID on execution"
@@ -2430,12 +2376,6 @@
msgid "Cannot change directory"
msgstr "Non posso cambiare directory"
-msgid "Filter"
-msgstr "Filtro"
-
-msgid "Set expression for filtering filenames"
-msgstr "Imposta l'espressione per filtrare i nomi dei file"
-
#, c-format
msgid "Link %s to:"
msgstr "Collega %s a:"
@@ -2541,9 +2481,6 @@
msgid "Shell link to machine"
msgstr "Connessione shell"
-msgid "SMB link to machine"
-msgstr "Connessione SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Ripristina file da un filesystem ext2"
@@ -2582,19 +2519,26 @@
"Non posso creare file comandi temporaneo \n"
"%s"
+msgid "Pipe failed"
+msgstr "Pipe fallita"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " errore nel file %s%s "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Il formato del file %smc.ext è cambiato con la versione 3.0. Sembra che "
-"l'installazione sia fallita. Procurarsi una versione più aggiornata del "
-"Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2602,11 +2546,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Il formato del file %s è cambiato con la versione 3.0. È possibile sia "
-"copiarlo da %smc.ext o usare quel file come esempio per scriverne uno nuovo."
msgid "DialogTitle|Copy"
msgstr "Copia"
@@ -2900,6 +2842,15 @@
msgid "(stalled)"
msgstr "(in attesa)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Mantieni"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2916,12 +2867,6 @@
"Impossibile chiudere il file destinazione \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Il file recuperato è incompleto. Lo vuoi tenere?"
-
-msgid "&Keep"
-msgstr "&Mantieni"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3040,8 +2985,8 @@
msgstr "Processo in background: il file esiste"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "File elaborati: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3068,8 +3013,8 @@
msgstr " Totale: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Totale: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Sorgente"
@@ -3121,7 +3066,7 @@
msgstr "Formato &lista..."
msgid "&Sort order..."
-msgstr "&Ordina per..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filtro"
@@ -3135,11 +3080,8 @@
msgid "S&hell link..."
msgstr "Connessione S&hell..."
-msgid "S&FTP link..."
-msgstr "Connessione S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Connessione SM&B..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Pannelli&zza"
@@ -3181,7 +3123,7 @@
msgstr "Proprietario &avanzato"
msgid "Cha&ttr"
-msgstr ""
+msgstr "Cha&ttr"
msgid "&Rename/Move"
msgstr "Rinomina&/Sposta"
@@ -3291,8 +3233,9 @@
#, c-format
msgid "You have %zu opened screen. Quit anyway?"
msgid_plural "You have %zu opened screens. Quit anyway?"
-msgstr[0] "È aperto %zu schermo. Uscire comunque?"
-msgstr[1] "Sono aperti %zu schermi. Uscire comunque?"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
msgid "The Midnight Commander"
msgstr "Il Midnight Commander"
@@ -3352,8 +3295,11 @@
msgid "&Find recursively"
msgstr "&Trova ricorsivamente"
+msgid "Follow s&ymlinks"
+msgstr "Segui colle&gamenti"
+
msgid "S&kip hidden"
-msgstr "Salta i &nascosti"
+msgstr "Salta &nascosti"
msgid "Content:"
msgstr "Contenuto:"
@@ -3389,8 +3335,9 @@
#, c-format
msgid "Finished (ignored %zu directory)"
msgid_plural "Finished (ignored %zu directories)"
-msgstr[0] "Finito (ignorata %zu directory)"
-msgstr[1] "Finito (ignorate %zu directory)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
@@ -3518,8 +3465,8 @@
msgstr "Nessuna info sullo spazio"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Spazio libero: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3560,8 +3507,9 @@
#, c-format
msgid " (%lu block)"
msgid_plural " (%lu blocks)"
-msgstr[0] " (%lu blocco)"
-msgstr[1] " (%lu blocchi)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
#, c-format
msgid "Owner: %s/%s"
@@ -3572,14 +3520,14 @@
msgstr "Collegamenti: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Attributi: non supportati"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Attributi: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Attributi: non disponibili"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3744,6 +3692,7 @@
msgid_plural "%s in %d files"
msgstr[0] " %s byte in %d file"
msgstr[1] " %s byte in %d file"
+msgstr[2] " %s byte in %d file"
msgid "Panelize"
msgstr "Pannellizza"
@@ -3763,6 +3712,9 @@
msgid "Unselect"
msgstr "Deseleziona"
+msgid "Filter"
+msgstr "Filtro"
+
msgid "Do you really want to execute?"
msgstr "Vuoi veramente eseguirlo?"
@@ -3790,11 +3742,23 @@
msgid "Enter command label:"
msgstr "Etichetta per il comando:"
-msgid "Cannot invoke command."
-msgstr "Impossibile eseguire comando."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Pannellizza esternamente:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Chiusura pipe fallita"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Pannellizza esternamente:\n"
+"Fallita la lettura dati stdout processo figlio:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Impossibile eseguire il pannello esterno su directory non-locali"
@@ -3955,15 +3919,14 @@
msgid "Home directory path is not absolute"
msgstr "Il percorso della directory home non è assoluto"
-#, fuzzy
msgid ""
"GNU Midnight Commander\n"
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
-"GNU Midnight Commander è già in funzione su\n"
-"questo terminale.\n"
-"Il supporto alla subshell verrà disabilitato."
+"GNU Midnight Commander\n"
+"è già in funzione su questo terminale.\n"
+"Il supporto subshell verrà disabilitato."
#, c-format
msgid ""
@@ -4006,69 +3969,63 @@
msgid "Warning: Cannot change to %s.\n"
msgstr "Attenzione: non posso entrare su %s.\n"
-#, fuzzy
msgid "With builtin Editor and Aspell support"
-msgstr "Con editor integrato e supporto Aspell\n"
+msgstr "Con editor integrato e supporto Aspell"
-#, fuzzy
msgid "With builtin Editor"
-msgstr "Con editor integrato\n"
+msgstr "Con editor integrato"
-#, fuzzy
msgid "With optional subshell support"
-msgstr "Con supporto opzionale subshell\n"
+msgstr "Con supporto opzionale subshell"
-#, fuzzy
msgid "With subshell support as default"
-msgstr "Con supporto subshell predefinito\n"
+msgstr "Con supporto subshell predefinito"
-#, fuzzy
msgid "With support for background operations"
-msgstr "Con supporto per processi in background\n"
+msgstr "Con supporto per processi in background"
-#, fuzzy
msgid "With mouse support on xterm and Linux console"
-msgstr "Con supporto del mouse in xterm e in console Linux\n"
+msgstr "Con supporto del mouse in xterm e in console Linux"
-#, fuzzy
msgid "With mouse support on xterm"
-msgstr "Con supporto del mouse in xterm\n"
+msgstr "Con supporto del mouse in xterm"
-#, fuzzy
msgid "With support for X11 events"
-msgstr "Con supporto per eventi X11\n"
+msgstr "Con supporto per eventi X11"
-#, fuzzy
msgid "With internationalization support"
-msgstr "Con supporto internazionale\n"
+msgstr "Con supporto internazionale"
-#, fuzzy
msgid "With multiple codepages support"
-msgstr "Con supporto codepages multiple\n"
+msgstr "Con supporto codepages multiple"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "Con supporto attributi ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
msgstr "Creato con GLib %d.%d.%d\n"
-#, fuzzy, c-format
+#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr "Uso della libreria S-Lang con il database terminfo\n"
+msgstr "Creato con S-Lang %s con database terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Creato con ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Creato con ncurses (versione sconosciuta)"
-#, fuzzy, c-format
+#, c-format
msgid "Built with ncursesw %s\n"
-msgstr "Uso della libreria ncursesw\n"
+msgstr "Creato con ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
+msgstr "Creato con ncursesw (versione sconosiuta)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
msgstr ""
msgid "Virtual File Systems:"
@@ -4196,16 +4153,27 @@
"Inattesa fine del file\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Archivio tar inconsistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Non posso aprire l'archivio %s\n"
+"Impossibile aprire archivio %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Archivio extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"File system virtuale EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4321,6 +4289,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "In attesa di risposta... %d (Ctrl-G per annullare)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: famiglia di indirizzi non valida"
@@ -4374,6 +4357,14 @@
"Rimuovere la password o correggere i permessi."
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"File system virtuale SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Attenzione: file %s non trovato\n"
@@ -4407,6 +4398,10 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: fallita conversione indirizzo IP host remoto nella forma testuale"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: connessione a %s"
@@ -4418,6 +4413,63 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: connessione al server fallita: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: trovata chiave host di tipo non supportato: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: tipo chiave host sconosciuto:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Aggiunto permanentemente\n"
+"%s (%s)\n"
+"all'elenco di host conosciuti."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: impossibile ottenere la chiave host remoto"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr "sftp: tipo chiave host remoto non supportata, verifica impossibile"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: impossibile computare impronta hash chiave host"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"L'autenticità dell'host\n"
+"%s (%s)\n"
+"non può essere confermata!\n"
+"%s l'hash impronta chiave è\n"
+"SHA1:%s.\n"
+"Aggiungerla all'elenco di host conosciuti e continuare la connessione?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"trovato nell'elenco host conosciuti ma\n"
+"LE CHIAVI NON COMBACIANO! POTREBBE TRATTARSI DI ATTACCO MITM!\n"
+"Sicuri di aggiungerlo all'elenco host conosciuti e continuare la connessione?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: fallita verifica chiave host"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: inserire passphrase per %s "
@@ -4432,8 +4484,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: la password è vuota."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: fallita avvio sessione SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: fallito avvio sessione SSH"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: nessun file handler dati per la lettura del file"
@@ -4450,33 +4502,6 @@
msgstr "sftp: listato eseguito."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "riconnessione a %s fallita"
-
-msgid "Authentication failed"
-msgstr "Autenticazione fallita"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Errore %s nella creazione directory %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Errore %s nella rimozione directory %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s durante l'apertura del file remoto %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s durante la rimozione del file remoto %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s durante la rinomina file\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
@@ -4689,16 +4714,3 @@
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
msgstr "Impossibile ricevere copia locale di /ftp://un.host/modificami.txt"
-
-#~ msgid "Block is large, you may not be able to undo this action"
-#~ msgstr "Il blocco è grande, potresti non riuscire ad annullare l'azione."
-
-#~ msgid ""
-#~ "Current text was modified without a file save.\n"
-#~ "Continue discards these changes"
-#~ msgstr ""
-#~ "Il testo corrente è stato modificato senza salvare.\n"
-#~ "Continuando si perdono tutte le modifiche."
-
-#~ msgid "Using the ncurses library\n"
-#~ msgstr "Uso della libreria ncurses\n"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ja.po
^
|
@@ -7,14 +7,15 @@
# Tadashi Jokagi <elf@poyo.jp>, 2012
# Tadashi Jokagi <elf@poyo.jp>, 2011
# linuxmetel <linuxmetel@gmail.com>, 2020
+# Takuro Onoue <kusanaginoturugi@gmail.com>, 2021
# Yoshitaka Yamashita <drum@magic-touch.org>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Takuro Onoue <kusanaginoturugi@gmail.com>, 2021\n"
"Language-Team: Japanese (http://www.transifex.com/mc/mc/language/ja/)\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
@@ -79,24 +80,6 @@
msgid "FATAL: not a directory:"
msgstr "致命的なエラー:ディレクトリではありません:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -175,10 +158,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -380,7 +363,7 @@
msgstr "コロン"
msgid "Semicolon"
-msgstr ""
+msgstr "セミコロン"
msgid "Exclamation mark"
msgstr "感嘆符(!)"
@@ -389,16 +372,16 @@
msgstr "疑問符(?)"
msgid "Ampersand"
-msgstr ""
+msgstr "アンパサンド"
msgid "Dollar sign"
msgstr "$"
msgid "Quotation mark"
-msgstr ""
+msgstr "クォーテーションマーク"
msgid "Percent sign"
-msgstr ""
+msgstr "パーセント記号"
msgid "Caret"
msgstr "キャレット"
@@ -419,22 +402,22 @@
msgstr "パイプ"
msgid "Left parenthesis"
-msgstr ""
+msgstr "左カッコ"
msgid "Right parenthesis"
-msgstr ""
+msgstr "右カッコ"
msgid "Left bracket"
-msgstr ""
+msgstr "左角カッコ"
msgid "Right bracket"
-msgstr ""
+msgstr "右角カッコ"
msgid "Left brace"
-msgstr ""
+msgstr "左中カッコ"
msgid "Right brace"
-msgstr ""
+msgstr "右中カッコ"
msgid "Enter"
msgstr "エンター"
@@ -452,11 +435,11 @@
msgstr "バックスラッシュ キー"
msgid "Number sign #"
-msgstr ""
+msgstr "番号記号 #"
#. TRANSLATORS: Please translate as in "at sign" (@).
msgid "At sign"
-msgstr ""
+msgstr "アットマーク"
msgid "Ctrl"
msgstr "Ctrl"
@@ -471,7 +454,7 @@
msgstr "環境変数 TERM がセットされていません\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "SIGWINCH パイプをチェックできません"
#, c-format
msgid ""
@@ -532,24 +515,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "警告"
-
-msgid "Pipe failed"
-msgstr "パイプの受け渡しに失敗しました"
-
-msgid "Dup failed"
-msgstr "複製に失敗しました"
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "'%s' の Dir キャッシュが終了しました"
@@ -675,12 +649,6 @@
msgid "Log ftp dialog to specified file"
msgstr "ftp の対話記録を指定したファイルに保存"
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "ファイルビューアを起動"
@@ -970,15 +938,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1011,6 +970,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "警告"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1019,14 +981,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "%sを検索中"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1072,9 +1026,6 @@
msgid "Save As"
msgstr "別名で保存"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1105,27 +1056,6 @@
msgid "Cannot save file"
msgstr "ファイルを保存できません"
-msgid "Delete macro"
-msgstr "マクロの削除"
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr "マクロの保存"
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr "最後のコマンドを繰り返す"
-
-msgid "Repeat times:"
-msgstr "繰り返し回数:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "ファイル保存の確認: \"%s\""
@@ -1160,13 +1090,6 @@
msgid "&Local"
msgstr "ローカル(&L)"
-msgid "Replace"
-msgstr "置換"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1218,7 +1141,7 @@
msgid "Run sort"
msgstr "並び替えの実行"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1269,36 +1192,36 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
-
-msgid "&Find all"
-msgstr "すべて検索(&F)"
+msgid "Cancel"
+msgstr "キャンセル"
-msgid "Enter replacement string:"
+msgid "Collect completions"
msgstr ""
-msgid "Replace with:"
+msgid "NoName"
msgstr ""
-msgid "&Replace"
-msgstr "置換(&R)"
-
-msgid "A&ll"
-msgstr "全部(&L)"
+msgid "Save macro"
+msgstr "マクロの保存"
-msgid "&Skip"
-msgstr "スキップ(&S)"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "Confirm replace"
-msgstr "置換の確認"
+msgid "Delete macro"
+msgstr "マクロの削除"
-msgid "Cancel"
-msgstr "キャンセル"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "NoName"
+msgid "Macro not deleted"
msgstr ""
+msgid "Repeat last commands"
+msgstr "最後のコマンドを繰り返す"
+
+msgid "Repeat times:"
+msgstr "繰り返し回数:"
+
msgid "&Open file..."
msgstr "ファイルを開く(&O)..."
@@ -1587,12 +1510,51 @@
msgid "Editor options"
msgstr "編集のオプション"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr "すべて検索(&F)"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr "置換"
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "置換(&R)"
+
+msgid "A&ll"
+msgstr "全部(&L)"
+
+msgid "&Skip"
+msgstr "スキップ(&S)"
+
+msgid "Confirm replace"
+msgstr "置換の確認"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "%sを検索中"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1712,6 +1674,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr "文法ファイルの読み込み"
@@ -2106,19 +2077,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%sのパスワード"
-
-msgid "Domain:"
-msgstr "ドメイン:"
-
-msgid "Username:"
-msgstr "ユーザ名:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2324,12 +2282,6 @@
msgid "Cannot change directory"
msgstr "ディレクトリを変更できません"
-msgid "Filter"
-msgstr "フィルター"
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2433,9 +2385,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2470,14 +2419,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr "パイプの受け渡しに失敗しました"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2487,8 +2446,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2723,6 +2682,15 @@
msgid "(stalled)"
msgstr "(stalled)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "保存(&K)"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2735,12 +2703,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "ファイルを完全に取得できませんでした。保存しますか?"
-
-msgid "&Keep"
-msgstr "保存(&K)"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2847,7 +2809,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2875,7 +2837,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2928,7 +2890,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "整列順(&S)..."
+msgstr ""
msgid "&Filter..."
msgstr "フィルタ(&F)..."
@@ -2942,12 +2904,9 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SMBリンク(&B)..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3158,6 +3117,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3319,8 +3281,8 @@
msgstr "空き領域情報がありません"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "空き容量: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3562,6 +3524,9 @@
msgid "Unselect"
msgstr "選択解除"
+msgid "Filter"
+msgstr "フィルター"
+
msgid "Do you really want to execute?"
msgstr "本当に実行しますか?"
@@ -3589,11 +3554,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "コマンドを実行できません"
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "パイプのクローズに失敗"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3844,6 +3816,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "仮想ファイル システム:"
@@ -3966,16 +3942,22 @@
"予期しない EOF です\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "tar アーカイブに不整合"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s アーカイブを開くことが出来ません\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "不整合な extfs アーカイブです"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4091,6 +4073,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4142,6 +4139,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4175,6 +4178,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4186,62 +4192,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
-msgstr "%s への再接続に失敗しました"
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ka.po
^
|
@@ -4,13 +4,15 @@
#
# Translators:
# George Machitidze <giomac@gmail.com>, 2012,2014
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022\n"
"Language-Team: Georgian (http://www.transifex.com/mc/mc/language/ka/)\n"
"Language: ka\n"
"MIME-Version: 1.0\n"
@@ -20,30 +22,30 @@
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr ""
+msgstr "გაფრთხილება: კოდების გვერდების სიის ჩატვირთვის სეცდომა"
msgid "7-bit ASCII"
msgstr "7-ბიტიანი ASCII"
#, c-format
msgid "Cannot translate from %s to %s"
-msgstr ""
+msgstr "%s-დან %s-ზე თარგმნა შეუძლებელია"
msgid "Event system already initialized"
-msgstr ""
+msgstr "მოვლენების სისტემა უკვე ინიციალიზირებულია"
msgid "Failed to initialize event system"
-msgstr ""
+msgstr "მოვლენების სისტემის ინიციალიზაციის შეცდომა"
msgid "Event system not initialized"
-msgstr ""
+msgstr "მოვლენების სისტემა ინიციალიზირებული არაა"
msgid "Check input data! Some of parameters are NULL!"
msgstr ""
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr ""
+msgstr "მოვლენებისთვის ჯგუფის შექმნა შეუძლებელია: %s !"
#, c-format
msgid "Unable to create event '%s'!"
@@ -67,28 +69,10 @@
#, c-format
msgid "Cannot create %s directory"
-msgstr ""
+msgstr "საქაღალდე %s-ის შექმნა შეუძლებელია"
msgid "FATAL: not a directory:"
-msgstr ""
-
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
+msgstr "შეცდომა: არ წარმოადგენს საქაღალდეს:"
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
@@ -96,7 +80,7 @@
msgstr ""
msgid "Invalid character"
-msgstr ""
+msgstr "არასწორი სიმბოლო"
msgid "Unmatched quotes character"
msgstr ""
@@ -127,7 +111,7 @@
msgstr "ნორ&მალური"
msgid "Re&gular expression"
-msgstr ""
+msgstr "&რეგულარულ გამოსახულება"
msgid "He&xadecimal"
msgstr "ტე&ქვსმეტობითი"
@@ -164,77 +148,77 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
msgid "Escape"
-msgstr ""
+msgstr "ღილაკი Esc"
msgid "Function key 1"
-msgstr ""
+msgstr "ღილაკი F1"
msgid "Function key 2"
-msgstr ""
+msgstr "ღილაკი F2"
msgid "Function key 3"
-msgstr ""
+msgstr "ღილაკი F3"
msgid "Function key 4"
-msgstr ""
+msgstr "ღილაკი F4"
msgid "Function key 5"
-msgstr ""
+msgstr "ღილაკი F5"
msgid "Function key 6"
-msgstr ""
+msgstr "ღილაკი F6"
msgid "Function key 7"
-msgstr ""
+msgstr "ღილაკი F7"
msgid "Function key 8"
-msgstr ""
+msgstr "ღილაკი F8"
msgid "Function key 9"
-msgstr ""
+msgstr "ღილაკი F9"
msgid "Function key 10"
-msgstr ""
+msgstr "ღილაკი F10"
msgid "Function key 11"
-msgstr ""
+msgstr "ღილაკი F11"
msgid "Function key 12"
-msgstr ""
+msgstr "ღილაკი F12"
msgid "Function key 13"
-msgstr ""
+msgstr "ღილაკი F13"
msgid "Function key 14"
-msgstr ""
+msgstr "ღილაკი F14"
msgid "Function key 15"
-msgstr ""
+msgstr "ღილაკი F15"
msgid "Function key 16"
-msgstr ""
+msgstr "ღილაკი F16"
msgid "Function key 17"
-msgstr ""
+msgstr "ღილაკი F17"
msgid "Function key 18"
-msgstr ""
+msgstr "ღილაკი F18"
msgid "Function key 19"
-msgstr ""
+msgstr "ღილაკი F19"
msgid "Function key 20"
-msgstr ""
+msgstr "ღილაკი F20"
msgid "Completion/M-tab"
msgstr ""
@@ -243,94 +227,94 @@
msgstr ""
msgid "Backspace"
-msgstr ""
+msgstr "Backspace"
msgid "Up arrow"
-msgstr ""
+msgstr "ისარი ზემოთ"
msgid "Down arrow"
-msgstr ""
+msgstr "ისარი ქვემოთ"
msgid "Left arrow"
-msgstr ""
+msgstr "ისარი მარცხნივ"
msgid "Right arrow"
-msgstr ""
+msgstr "ისარი მარჯვნივ"
msgid "Insert"
-msgstr ""
+msgstr "ჩასმა"
msgid "Delete"
-msgstr ""
+msgstr "წაშლა"
msgid "Home"
-msgstr ""
+msgstr "ღილაკი Home"
msgid "End key"
-msgstr ""
+msgstr "ღილაკი End"
msgid "Page Up"
-msgstr ""
+msgstr "ღილაკი Page Up"
msgid "Page Down"
-msgstr ""
+msgstr "ღილაკი Page Down"
msgid "/ on keypad"
-msgstr ""
+msgstr "/ ციფრულ კლავიატურაზე"
msgid "* on keypad"
-msgstr ""
+msgstr "* ციფრულ კლავიატურაზე"
msgid "- on keypad"
-msgstr ""
+msgstr "- ციფრულ კლავიატურაზე"
msgid "+ on keypad"
-msgstr ""
+msgstr "+ ციფრულ კლავიატურაზე"
msgid "Left arrow keypad"
-msgstr ""
+msgstr "ისარი მარცხნივ ციფრულ კლავიატურაზე"
msgid "Right arrow keypad"
-msgstr ""
+msgstr "ისარი მარჯვნივ ციფრულ კლავიატურაზე"
msgid "Up arrow keypad"
-msgstr ""
+msgstr "ისარი ზემოთ ციფრულ კლავიატურაზე"
msgid "Down arrow keypad"
-msgstr ""
+msgstr "ისარი ქვემოთ ციფრულ კლავიატურაზე"
msgid "Home on keypad"
-msgstr ""
+msgstr "ღილაკი Home ციფრულ კლავიატურაზე"
msgid "End on keypad"
-msgstr ""
+msgstr "ღილაკი End ციფრულ კლავიატურაზე"
msgid "Page Down keypad"
-msgstr ""
+msgstr "ღილაკი PageDown ციფრულ კლავიატურაზე"
msgid "Page Up keypad"
-msgstr ""
+msgstr "ღილაკი PageUp ციფრულ კლავიატურაზე"
msgid "Insert on keypad"
-msgstr ""
+msgstr "ღილაკი Insert ციფრულ კლავიატურაზე"
msgid "Delete on keypad"
-msgstr ""
+msgstr "ღილაკი Delete ციფრულ კლავიატურაზე"
msgid "Enter on keypad"
-msgstr ""
+msgstr "ღილაკი Enter ციფრულ კლავიატურაზე"
msgid "Function key 21"
-msgstr ""
+msgstr "ღილაკი F21"
msgid "Function key 22"
-msgstr ""
+msgstr "ღილაკი F22"
msgid "Function key 23"
-msgstr ""
+msgstr "ღილაკი F23"
msgid "Function key 24"
-msgstr ""
+msgstr "ღილაკი F24"
msgid "A1 key"
msgstr "A1 ღილაკი"
@@ -369,7 +353,7 @@
msgstr "ორი წერტილი"
msgid "Semicolon"
-msgstr ""
+msgstr "წერტილმძიმე"
msgid "Exclamation mark"
msgstr "ძახილის ნიშანი"
@@ -378,74 +362,74 @@
msgstr "კითხვის ნიშანი"
msgid "Ampersand"
-msgstr ""
+msgstr "ამპერსანდი"
msgid "Dollar sign"
msgstr "დოლარის ნიშანი"
msgid "Quotation mark"
-msgstr ""
+msgstr "კითხვის ნიშანი"
msgid "Percent sign"
msgstr "პროცენტის ნიშანი"
msgid "Caret"
-msgstr ""
+msgstr "კარეტის დაბრუნება"
msgid "Tilda"
-msgstr ""
+msgstr "ტალღა"
msgid "Prime"
-msgstr ""
+msgstr "პრიმა"
msgid "Underline"
-msgstr ""
+msgstr "ქვედა ტირე"
msgid "Understrike"
-msgstr ""
+msgstr "ქვედახაზი"
msgid "Pipe"
-msgstr ""
+msgstr "მილი"
msgid "Left parenthesis"
-msgstr ""
+msgstr "მარცხენა მრგვალი ფრჩხილი"
msgid "Right parenthesis"
-msgstr ""
+msgstr "მარჯვენა მრგვალი ფრჩხილი"
msgid "Left bracket"
-msgstr ""
+msgstr "მარცხენა ნაკვთური ფრჩხილი"
msgid "Right bracket"
-msgstr ""
+msgstr "მარჯვენა ნაკვთური ფრჩხილი"
msgid "Left brace"
-msgstr ""
+msgstr "მარცხენა ფიგურული ფრჩხილი"
msgid "Right brace"
-msgstr ""
+msgstr "მარჯვენა ფიგურული ფრჩხილი"
msgid "Enter"
-msgstr ""
+msgstr "Enter"
msgid "Tab key"
-msgstr ""
+msgstr "ღილაკი Tab"
msgid "Space key"
-msgstr ""
+msgstr "ღილაკი ჰარე"
msgid "Slash key"
-msgstr ""
+msgstr "ღილაკი /"
msgid "Backslash key"
-msgstr ""
+msgstr "ღილაკი \\"
msgid "Number sign #"
-msgstr ""
+msgstr "ნომრის ნიშანი #"
#. TRANSLATORS: Please translate as in "at sign" (@).
msgid "At sign"
-msgstr ""
+msgstr "ძაღლუკა"
msgid "Ctrl"
msgstr "Ctrl"
@@ -489,31 +473,31 @@
"შეამოწმეთ გარემოს ცვლადი TERM.\n"
msgid "B"
-msgstr ""
+msgstr "ბ"
msgid "kB"
-msgstr ""
+msgstr "კბ"
msgid "KiB"
-msgstr ""
+msgstr "კიბ"
msgid "MB"
-msgstr ""
+msgstr "მბ"
msgid "MiB"
-msgstr ""
+msgstr "მიბ"
msgid "GB"
-msgstr ""
+msgstr "გბ"
msgid "GiB"
-msgstr ""
+msgstr "გიბ"
msgid "Cannot create pipe descriptor"
-msgstr ""
+msgstr "ფაიფის დესკრიპტორის შექმნა შეუძლებელია"
msgid "Cannot create pipe streams"
-msgstr ""
+msgstr "ფაილის ნაკადის შექმნა შეუძლებელია"
#, c-format
msgid ""
@@ -521,35 +505,28 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
+"Waitpid()-ის გაუთვალისწინებელი შეცდომა:\n"
+"%s"
#, c-format
msgid "Directory cache expired for %s"
-msgstr ""
+msgstr "%s-ის ქეშს ვადა გაუვიდა"
#, c-format
msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %3d%% (%lld) ბაიტი გადაწერილია"
#, c-format
msgid "%s: %s: %s %lld bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %lld ბაიტი გადაწერილია"
msgid "Starting linear transfer..."
msgstr "წრფივი გადაგზავნის დაწყება..."
@@ -558,7 +535,7 @@
msgstr "ფაილის მიღება"
msgid "Changes to file lost"
-msgstr ""
+msgstr "ფაილის ცვლილებები დაიკარგა"
#, c-format
msgid "%s is not a directory\n"
@@ -566,7 +543,7 @@
#, c-format
msgid "Directory %s is not owned by you\n"
-msgstr ""
+msgstr "%s-ის მფლობელი არ ბრძანდებით\n"
#, c-format
msgid "Cannot set correct permissions for directory %s\n"
@@ -578,17 +555,17 @@
#, c-format
msgid "Temporary files will be created in %s\n"
-msgstr ""
+msgstr "დროებითი ფაილები %s-ში შეიქმნება\n"
#, c-format
msgid "Temporary files will not be created\n"
-msgstr ""
+msgstr "დროებითი ფალების შექმნის შეცდომა\n"
msgid "Press any key to continue..."
msgstr "გასაგრძელებლად დააჭირეთ ნებისმიერ ღილაკს..."
msgid "Cannot parse:"
-msgstr ""
+msgstr "დამუშავება შეუძლებელია:"
msgid "More parsing errors will be ignored."
msgstr ""
@@ -632,16 +609,16 @@
#, c-format
msgid "%s (%d)"
-msgstr ""
+msgstr "%s(%d)"
msgid "&Abort"
-msgstr ""
+msgstr "გაუქმება"
msgid "Displays the current version"
msgstr "აჩვენებს მიმდინარე ვერსიას"
msgid "Print data directory"
-msgstr ""
+msgstr "დაბეჭდვის მონაცემების საქაღალდე"
msgid "Print extended info about used data directories"
msgstr ""
@@ -653,7 +630,7 @@
msgstr ""
msgid "<file>"
-msgstr ""
+msgstr "<file>"
msgid "Enables subshell support (default)"
msgstr ""
@@ -664,12 +641,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -677,7 +648,7 @@
msgstr "ფაილების რედაქტირება"
msgid "<file> ..."
-msgstr ""
+msgstr "<file> ..."
msgid "Forces xterm features"
msgstr ""
@@ -719,7 +690,7 @@
msgstr ""
msgid "<string>"
-msgstr ""
+msgstr "<string>"
msgid "Show mc with specified skin"
msgstr ""
@@ -767,10 +738,10 @@
msgstr ""
msgid "file"
-msgstr ""
+msgstr "ფაილი"
msgid "file1 file2"
-msgstr ""
+msgstr "ფაილი1 ფაილი2"
msgid "[this_dir] [other_panel_dir]"
msgstr ""
@@ -821,7 +792,7 @@
msgstr ""
msgid "&Dismiss"
-msgstr ""
+msgstr "&მოცილება"
msgid "Enter search string:"
msgstr "შეიყვანეთ საძებნი სტრიქონი:"
@@ -833,10 +804,10 @@
msgstr "&უკან"
msgid "&Whole words"
-msgstr ""
+msgstr "&მთლიანი სიტყვები"
msgid "&All charsets"
-msgstr ""
+msgstr "&ყველა კოდირება"
msgid "Search"
msgstr "ძებნა"
@@ -870,16 +841,16 @@
msgstr ""
msgid "Diff algorithm"
-msgstr ""
+msgstr "განსხვავების ალგორითმი"
msgid "Diff extra options"
-msgstr ""
+msgstr "განსხვავების დამატებითი მორგება"
msgid "&Ignore case"
-msgstr ""
+msgstr "&ასოების სიდიდის იგნორი"
msgid "Ignore tab &expansion"
-msgstr ""
+msgstr "ტაბულაციის &გაფართოების იგნორი"
msgid "Ignore &space change"
msgstr ""
@@ -891,7 +862,7 @@
msgstr ""
msgid "Diff Options"
-msgstr ""
+msgstr "განსხვავების დამატებითი მორგება"
msgid "Edit"
msgstr "რედაქტირება"
@@ -900,10 +871,10 @@
msgstr "რედაქტირება გათიშულია"
msgid "Goto line (left)"
-msgstr ""
+msgstr "ხაზზე გადასვლა (მარცხნვ)"
msgid "Goto line (right)"
-msgstr ""
+msgstr "ხაზზე გადასვლა (მარჯვნივ)"
msgid "Enter line:"
msgstr "შეიყვანეთ სტრიქონი:"
@@ -941,7 +912,7 @@
msgstr ""
msgid "Diff:"
-msgstr ""
+msgstr "განსხვავება:"
#, c-format
msgid "\"%s\" is a directory"
@@ -959,32 +930,23 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
-msgstr ""
+msgstr "ჩატვირთვა: %3d%%"
msgid "Loading..."
-msgstr ""
+msgstr "ჩატვირთვა..."
#, c-format
msgid "Cannot open %s for reading"
-msgstr ""
+msgstr "%s-ის წაკითხვის შეცდომა"
msgid "Load file"
-msgstr ""
+msgstr "ფაილის ჩატვირთვა"
#, c-format
msgid "Error reading %s"
-msgstr ""
+msgstr "%s-ის კითხვის შეცდომა"
#, c-format
msgid "Cannot get size/permissions for %s"
@@ -1000,6 +962,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "გაფრთხილება"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1008,14 +973,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr ""
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1061,11 +1018,8 @@
msgid "Save As"
msgstr "შეინახე როგორც"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
-msgstr ""
+msgstr "&სწრაფი შენახვა"
msgid "&Safe save"
msgstr "ფაილის &შენახვა"
@@ -1077,7 +1031,7 @@
msgstr ""
msgid "Edit Save Mode"
-msgstr ""
+msgstr "შენახვის რეჟიმის ჩასწორება"
msgid "Save as"
msgstr "შენახვა როგორც"
@@ -1089,31 +1043,10 @@
msgstr "ფაილი ამ სახელით უკვე არსებობს"
msgid "&Overwrite"
-msgstr ""
+msgstr "&გადაწერა"
msgid "Cannot save file"
-msgstr ""
-
-msgid "Delete macro"
-msgstr "მაკროსის წაშლა"
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr "მაკროსი არ წაშლილა"
-
-msgid "Save macro"
-msgstr "მაკროსის შენახვა"
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr "გამეორების დრო:"
+msgstr "ფაილის შენახვა შეუძლებელია"
#, c-format
msgid "Confirm save file: \"%s\""
@@ -1138,7 +1071,7 @@
msgstr "მომ&ხმარებელი"
msgid "&System wide"
-msgstr ""
+msgstr "&მთელ სისტემაში"
msgid "Menu edit"
msgstr "მენიუს რედაქტირება"
@@ -1147,14 +1080,7 @@
msgstr ""
msgid "&Local"
-msgstr ""
-
-msgid "Replace"
-msgstr "გამოცვლა"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
+msgstr "&ლოკალურად"
msgid "[NoName]"
msgstr "[უსახელო]"
@@ -1178,13 +1104,13 @@
msgstr ""
msgid "Copy to clipboard"
-msgstr ""
+msgstr "გაცვლის ბუფერში კოპირება"
msgid "Unable to save to file"
-msgstr ""
+msgstr "ფაილში შენახვის შეცდომა"
msgid "Cut to clipboard"
-msgstr ""
+msgstr "ამოჭრა გაცვლის ბუფერში"
msgid "Goto line"
msgstr "გადასვლა ხაზზე"
@@ -1199,15 +1125,15 @@
msgstr "ფაილის ჩასმა ვერ მოხერხდა"
msgid "Sort block"
-msgstr ""
+msgstr "დალაგების ბლოკირება"
msgid "You must first highlight a block of text"
msgstr ""
msgid "Run sort"
-msgstr ""
+msgstr "დალაგების გაშვება"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1258,38 +1184,38 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
+msgstr "შეწყვეტა"
+
+msgid "Collect completions"
msgstr ""
-msgid "&Find all"
-msgstr "&ყველას პოვნა"
+msgid "NoName"
+msgstr "უსახელო"
-msgid "Enter replacement string:"
-msgstr ""
+msgid "Save macro"
+msgstr "მაკროსის შენახვა"
-msgid "Replace with:"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "&Replace"
-msgstr ""
+msgid "Delete macro"
+msgstr "მაკროსის წაშლა"
-msgid "A&ll"
-msgstr "ყვე&ლა"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "&Skip"
-msgstr "გამო&ტოვება"
+msgid "Macro not deleted"
+msgstr "მაკროსი არ წაშლილა"
-msgid "Confirm replace"
+msgid "Repeat last commands"
msgstr ""
-msgid "Cancel"
-msgstr "შეწყვეტა"
-
-msgid "NoName"
-msgstr "უსახელო"
+msgid "Repeat times:"
+msgstr "გამეორების დრო:"
msgid "&Open file..."
-msgstr ""
+msgstr "&ფაილის გახსნა..."
msgid "&New"
msgstr "&ახალი"
@@ -1298,88 +1224,88 @@
msgstr "დაკე&ტვა"
msgid "&History..."
-msgstr ""
+msgstr "&ისტორია..."
msgid "Save &as..."
-msgstr ""
+msgstr "&შენახვა როგორც..."
msgid "&Insert file..."
-msgstr ""
+msgstr "&ფაილის ჩასმა..."
msgid "Cop&y to file..."
-msgstr ""
+msgstr "ფაილში &კოპირება..."
msgid "&User menu..."
-msgstr ""
+msgstr "&მომხმარებლის მენიუ..."
msgid "A&bout..."
msgstr "&შესახებ..."
msgid "&Quit"
-msgstr ""
+msgstr "&გასვლა"
msgid "&Undo"
-msgstr ""
+msgstr "&დაბრუნება"
msgid "&Redo"
-msgstr ""
+msgstr "&გამეორება"
msgid "&Toggle ins/overw"
-msgstr ""
+msgstr "&ჩასმა/გადაწერის გადართვა"
msgid "To&ggle mark"
-msgstr ""
+msgstr "&ნიშნის ჩართ/გამორთ"
msgid "&Mark columns"
-msgstr ""
+msgstr "&სვეტების ნიშნები"
msgid "Mark &all"
-msgstr ""
+msgstr "&ყველაფრის მონიშვნა"
msgid "Unmar&k"
-msgstr ""
+msgstr "&მონიშვნის მოხსნა"
msgid "Cop&y"
-msgstr ""
+msgstr "&კოპირება"
msgid "Mo&ve"
-msgstr ""
+msgstr "&გადატანა"
msgid "&Delete"
msgstr "&წაშლა"
msgid "Co&py to clipfile"
-msgstr ""
+msgstr "&ამოსაჭრელ ფაილში კოპირება"
msgid "&Cut to clipfile"
-msgstr ""
+msgstr "&ამოსაჭრელ ფაილში ამოჭრა"
msgid "Pa&ste from clipfile"
-msgstr ""
+msgstr "&ამოსაჭრელი ფაილიდან ჩასმა"
msgid "&Beginning"
-msgstr ""
+msgstr "&დასაწყისი"
msgid "&End"
-msgstr ""
+msgstr "&დასასრული"
msgid "&Search..."
-msgstr ""
+msgstr "&ძებნა..."
msgid "Search &again"
-msgstr ""
+msgstr "&თავიდან ძებნა"
msgid "&Replace..."
-msgstr ""
+msgstr "&ჩანაცვლება..."
msgid "&Toggle bookmark"
-msgstr ""
+msgstr "&სანიშნის ჩართ/გამორთ"
msgid "&Next bookmark"
-msgstr ""
+msgstr "&შემდეგი სანიშნი"
msgid "&Prev bookmark"
-msgstr ""
+msgstr "&წინა სანიშიშნი"
msgid "&Flush bookmarks"
msgstr ""
@@ -1406,31 +1332,31 @@
msgstr ""
msgid "Encod&ing..."
-msgstr ""
+msgstr "კოდირება..."
msgid "&Refresh screen"
-msgstr ""
+msgstr "&ეკრანის განახლება"
msgid "&Start/Stop record macro"
-msgstr ""
+msgstr "მაკროს ჩაწერის დაწყება/დასასრული"
msgid "Delete macr&o..."
-msgstr ""
+msgstr "მაკროს წაშლა..."
msgid "Record/Repeat &actions"
-msgstr ""
+msgstr "ჩაწერა/გამეორების ქმედებები"
msgid "S&pell check"
-msgstr ""
+msgstr "მართლწერის შემოწმება"
msgid "C&heck word"
-msgstr ""
+msgstr "სიტყვის შემოწმება"
msgid "Change spelling &language..."
-msgstr ""
+msgstr "მართლწერის შემოწმების ენის შეცვლა..."
msgid "&Mail..."
-msgstr ""
+msgstr "&ფოსტა..."
msgid "Insert &literal..."
msgstr ""
@@ -1439,19 +1365,19 @@
msgstr "&თარიღის/დროს ჩასმა"
msgid "&Format paragraph"
-msgstr ""
+msgstr "&პარაგრაფის ფორმატირება"
msgid "&Sort..."
-msgstr ""
+msgstr "&დალაგება..."
msgid "&Paste output of..."
-msgstr ""
+msgstr "&პროგრამის გამონატანის ჩასმა..."
msgid "&External formatter"
-msgstr ""
+msgstr "&გარე ფორმატერი"
msgid "&Move"
-msgstr ""
+msgstr "&გადატანა"
msgid "&Resize"
msgstr "&ზომის შეცვლა"
@@ -1466,28 +1392,28 @@
msgstr "&წინა"
msgid "&List..."
-msgstr "ს&ია"
+msgstr "ს&ია..."
msgid "&General..."
msgstr "&ძირითადი..."
msgid "Save &mode..."
-msgstr ""
+msgstr "შენახვის &რეჟიმი..."
msgid "Learn &keys..."
-msgstr ""
+msgstr "&ღილაკების სწავლა..."
msgid "Syntax &highlighting..."
-msgstr ""
+msgstr "&სინტაქსის განათება..."
msgid "S&yntax file"
-msgstr ""
+msgstr "&სინტაქსის ფაილი"
msgid "&Menu file"
-msgstr ""
+msgstr "&მენიუს ფაილი"
msgid "&Save setup"
-msgstr ""
+msgstr "&პარამეტრების შენახვა"
msgid "&File"
msgstr "&ფაილი"
@@ -1502,7 +1428,7 @@
msgstr "&ბრძანება"
msgid "For&mat"
-msgstr ""
+msgstr "&ფორმატი"
msgid "&Window"
msgstr "&ფანჯარა"
@@ -1511,19 +1437,19 @@
msgstr "&პარამეტრები"
msgid "&None"
-msgstr ""
+msgstr "არაფერი"
msgid "&Dynamic paragraphing"
-msgstr ""
+msgstr "&დინამიური პარაგრაფები"
msgid "Type &writer wrap"
-msgstr ""
+msgstr "სიტყ&ვების გადატანა"
msgid "Wrap mode"
-msgstr ""
+msgstr "გადატანის რეჟიმი"
msgid "Tabulation"
-msgstr ""
+msgstr "ტაბულაცია"
msgid "&Fake half tabs"
msgstr ""
@@ -1538,7 +1464,7 @@
msgstr ""
msgid "Other options"
-msgstr ""
+msgstr "სხვა პარამეტრები"
msgid "&Return does autoindent"
msgstr ""
@@ -1547,41 +1473,80 @@
msgstr ""
msgid "Save file &position"
-msgstr ""
+msgstr "ფაილის მდებარეობის შენახვა"
msgid "&Visible trailing spaces"
-msgstr ""
+msgstr "მიწერილი გამოტოვებების ჩვენება"
msgid "Visible &tabs"
-msgstr ""
+msgstr "ტაბულაციის ჩვენება"
msgid "Synta&x highlighting"
-msgstr ""
+msgstr "&სინტაქსის განათება"
msgid "C&ursor after inserted block"
-msgstr ""
+msgstr "კურსორი ჩასმული ბლოკის შემდეგ"
msgid "Pers&istent selection"
-msgstr ""
+msgstr "მუდმივი მონიშნული"
msgid "Cursor be&yond end of line"
-msgstr ""
+msgstr "კურსორი ხაზის ბოლოს იქეთაა"
msgid "&Group undo"
-msgstr ""
+msgstr "ჯგუფური გაუქმება"
msgid "Word wrap line length:"
-msgstr ""
+msgstr "სიტყვების გადატანის სიგრძე:"
msgid "Editor options"
+msgstr "რედაქტორის მორგება"
+
+msgid "In se&lection"
+msgstr "მონიშნულში"
+
+msgid "&Find all"
+msgstr "&ყველას პოვნა"
+
+msgid "Enter replacement string:"
+msgstr "შეიყვანეთ ჩანაცვლების სტრიქონი:"
+
+msgid "Replace"
+msgstr "გამოცვლა"
+
+msgid "Replace with:"
+msgstr "ჩანაცვლება:"
+
+msgid "&Replace"
+msgstr "ჩანაცვლება"
+
+msgid "A&ll"
+msgstr "ყვე&ლა"
+
+msgid "&Skip"
+msgstr "გამო&ტოვება"
+
+msgid "Confirm replace"
+msgstr "ჩანაცვლების დადასტურება"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
msgstr ""
+#, c-format
+msgid "%ld replacements made"
+msgstr "მოხდა %ld ჩანაცვლება"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1591,7 +1556,7 @@
msgstr "ფაილების გახსნა"
msgid "Edit: "
-msgstr ""
+msgstr "ჩასწორება: "
msgid "ButtonBar|Mark"
msgstr "მონიშ"
@@ -1612,103 +1577,114 @@
msgstr "MCმენიუ"
msgid "Breton"
-msgstr ""
+msgstr "ბრეტონული"
msgid "Czech"
-msgstr ""
+msgstr "ჩეხური"
msgid "Welsh"
-msgstr ""
+msgstr "უელსური"
msgid "Danish"
-msgstr ""
+msgstr "დანიური"
msgid "German"
-msgstr ""
+msgstr "გერმანული"
msgid "Greek"
-msgstr ""
+msgstr "ბერძნული"
msgid "English"
-msgstr ""
+msgstr "ინგლისური"
msgid "British English"
-msgstr ""
+msgstr "ბრიტანული ინგლისური"
msgid "Canadian English"
-msgstr ""
+msgstr "კანადური ინგლისური"
msgid "American English"
-msgstr ""
+msgstr "ამერიკული ინგლისური"
msgid "Esperanto"
-msgstr ""
+msgstr "ესპერანტო"
msgid "Spanish"
-msgstr ""
+msgstr "ესპანური"
msgid "Faroese"
-msgstr ""
+msgstr "ფაროული"
msgid "French"
-msgstr ""
+msgstr "ფრანგული"
msgid "Italian"
-msgstr ""
+msgstr "იტალიური"
msgid "Dutch"
-msgstr ""
+msgstr "ჰოლანდიური"
msgid "Norwegian"
-msgstr ""
+msgstr "ნორვეგიული"
msgid "Polish"
-msgstr ""
+msgstr "პოლონური"
msgid "Portuguese"
-msgstr ""
+msgstr "პორტუგალიური"
msgid "Romanian"
-msgstr ""
+msgstr "რუმინული"
msgid "Russian"
-msgstr ""
+msgstr "რუსული"
msgid "Slovak"
-msgstr ""
+msgstr "სლოვაკური"
msgid "Swedish"
-msgstr ""
+msgstr "შვედური"
msgid "Ukrainian"
-msgstr ""
+msgstr "უკრაინული"
msgid "&Add word"
-msgstr ""
+msgstr "&სიტყვის დამატება"
msgid "Language"
-msgstr ""
+msgstr "ენა"
msgid "Misspelled"
-msgstr ""
+msgstr "არასწორი მართლწერა"
msgid "Check word"
-msgstr ""
+msgstr "სიტყვის შემოწმება"
msgid "Suggest"
-msgstr ""
+msgstr "მინიშნება"
msgid "Select language"
-msgstr ""
+msgstr "ენის არჩევა"
+
+msgid "Choose syntax highlighting"
+msgstr "აირჩიეთ სინტაქსის განატება"
+
+msgid "< Auto >"
+msgstr "< ავტომატური >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< მიმდინარე სინტაქსის თავიდან ჩატვირთვა >"
msgid "Load syntax file"
-msgstr ""
+msgstr "სინტაქსის ფაილის ჩატვირთვა"
#, c-format
msgid ""
"Cannot open file %s\n"
"%s"
msgstr ""
+"ფაილის გახსნის შეცდომა %s\n"
+"%s"
#, c-format
msgid "Error in file %s on line %d"
@@ -1737,224 +1713,228 @@
msgstr ""
msgid "Set &all"
-msgstr ""
+msgstr "ყველას დაყენება"
msgid "S&kip"
-msgstr ""
+msgstr "გამოტოვება"
msgid "&Set"
-msgstr ""
+msgstr "და&ყენება"
msgid "owner"
-msgstr ""
+msgstr "მფლობელი"
msgid "group"
-msgstr ""
+msgstr "ჯგუფი"
msgid "other"
-msgstr ""
+msgstr "სხვა"
msgid "Flag"
-msgstr ""
+msgstr "ალამი"
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "უფლებები (8-ბიტიანი): %o"
msgid "Chown advanced command"
-msgstr ""
+msgstr "Chmod-ის დამატებითი პარამეტრები"
#, c-format
msgid ""
"Cannot chmod \"%s\"\n"
"%s"
msgstr ""
+"\"%s\"-ის chmod_ის შეცდომა\n"
+"%s"
msgid "&Ignore"
-msgstr ""
+msgstr "იგნორი"
msgid "Ignore &all"
-msgstr ""
+msgstr "ყველას იგნორირება"
msgid "&Retry"
-msgstr ""
+msgstr "&თავიდან ცდა"
#, c-format
msgid ""
"Cannot chown \"%s\"\n"
"%s"
msgstr ""
+"\"%s\"-ის chown შეუძლებელია\n"
+"%s"
msgid "< Default >"
-msgstr ""
+msgstr "< ნაგულისხმევი >"
msgid "Skins"
-msgstr ""
+msgstr "სკინები"
msgid "Other 8 bit"
-msgstr ""
+msgstr "სხვა 8 ბიტიანი"
msgid "Running"
-msgstr ""
+msgstr "გაშვებულია"
msgid "Stopped"
-msgstr ""
+msgstr "შეჩერებულია"
msgid "&Never"
-msgstr ""
+msgstr "არასოდეს"
msgid "On dum&b terminals"
-msgstr ""
+msgstr "მხოლოდ მარტივ ტერმინალზე"
msgid "Alwa&ys"
-msgstr ""
+msgstr "ყოველთვის"
msgid "File operations"
-msgstr ""
+msgstr "ფაილის ოპერაციები"
msgid "&Verbose operation"
-msgstr ""
+msgstr "ოპერაციის დამატებითი ინფორმაცია"
msgid "Compute tota&ls"
-msgstr ""
+msgstr "ჯამების გამოთვლა"
msgid "Classic pro&gressbar"
-msgstr ""
+msgstr "მიმდინარეობის კლასიკური მაჩვენებელი"
msgid "Mkdi&r autoname"
-msgstr ""
+msgstr "Mkdir-ის ავტომატური სახელი"
msgid "&Preallocate space"
-msgstr ""
+msgstr "ადგილის წინასწარი გამოყოფა"
msgid "Esc key mode"
-msgstr ""
+msgstr "Esc ღილაკის რეჟიმი"
msgid "S&ingle press"
-msgstr ""
+msgstr "ერთი დაწოლა"
msgid "Timeout:"
-msgstr ""
+msgstr "ლოდინის ვადა:"
msgid "Pause after run"
-msgstr ""
+msgstr "შეყოვნება გაშვების შემდეგ"
msgid "Use internal edi&t"
-msgstr ""
+msgstr "შიდა რედაქტორი"
msgid "Use internal vie&w"
-msgstr ""
+msgstr "შიდა მნახველი"
msgid "A&sk new file name"
-msgstr ""
+msgstr "ფაილის ახალი საელის კითხვა"
msgid "Auto m&enus"
-msgstr ""
+msgstr "ავტომატური მენიუ"
msgid "&Drop down menus"
-msgstr ""
+msgstr "ჩამოსაშლელი მენიუ"
msgid "S&hell patterns"
-msgstr ""
+msgstr "გარსის შაბლონები"
msgid "Co&mplete: show all"
-msgstr ""
+msgstr "სრულად: ყველას ჩვენება"
msgid "Rotating d&ash"
-msgstr ""
+msgstr "მბრუნავი ტირე"
msgid "Cd follows lin&ks"
-msgstr ""
+msgstr "CD მიჰყვება ბმულებს"
msgid "Sa&fe delete"
-msgstr ""
+msgstr "უსაფრთხო წაშლა"
msgid "Safe overwrite"
-msgstr ""
+msgstr "უსაფრთხო გადაწერა"
msgid "A&uto save setup"
-msgstr ""
+msgstr "&პარამეტრების ავტომატური შენახვა"
msgid "Configure options"
-msgstr ""
+msgstr "პარამეტრების მორგება"
msgid "Skin:"
-msgstr ""
+msgstr "გარეგნობა:"
msgid "&Shadows"
-msgstr ""
+msgstr "ჩრდილები"
msgid "Appearance"
-msgstr ""
+msgstr "გარემოს იერსახე"
msgid "Case &insensitive"
-msgstr ""
+msgstr "დიდი და პატარა ასოების იგნორი"
msgid "Use panel sort mo&de"
-msgstr ""
+msgstr "პანელის დალაგების რეჟიმის გამოყენება"
msgid "Show mi&ni-status"
msgstr "მი&ნი სტატუსი"
msgid "Use SI si&ze units"
-msgstr ""
+msgstr "SI საზომი ერთეულების გამოყენება"
msgid "Mi&x all files"
-msgstr ""
+msgstr "ყველა ფაილის შერევა"
msgid "Show &backup files"
-msgstr ""
+msgstr "მარქაფის ფაილების ჩვენება"
msgid "Show &hidden files"
-msgstr ""
+msgstr "დამალული &ფაილების ჩვენება"
msgid "&Fast dir reload"
-msgstr ""
+msgstr "საქაღალდის სწრაფი გადატვირთვა"
msgid "Ma&rk moves down"
-msgstr ""
+msgstr "მონიშვნა დაბლა ჩამოიტანს"
msgid "Re&verse files only"
-msgstr ""
+msgstr "მხოლოდ რევერსული ფაილები"
msgid "Simple s&wap"
-msgstr ""
+msgstr "უბრალოდ შეცვლა"
msgid "A&uto save panels setup"
-msgstr ""
+msgstr "პანელების მორგების ავტომატური შენახვა"
msgid "Navigation"
-msgstr ""
+msgstr "ნავიგაცია"
msgid "L&ynx-like motion"
msgstr "L&ynx-ის მაგვარი გადასვლა"
msgid "Pa&ge scrolling"
-msgstr ""
+msgstr "გვერდების დაქაჩვა"
msgid "Center &scrolling"
-msgstr ""
+msgstr "ცენტრიდან დაქაჩვა"
msgid "&Mouse page scrolling"
-msgstr ""
+msgstr "გვერდების დაქაჩვა თაგუნათი"
msgid "File highlight"
-msgstr ""
+msgstr "ფაილის გამოკვეთა"
msgid "File &types"
-msgstr ""
+msgstr "ფაილის ტიპები"
msgid "&Permissions"
msgstr "უ&ფლებები"
msgid "Quick search"
-msgstr ""
+msgstr "სწრაფი ძებნა"
msgid "Panel options"
-msgstr ""
+msgstr "პანელის მორგება"
msgid "Information"
-msgstr ""
+msgstr "ინფორმაცია"
msgid ""
"Using the fast reload option may not reflect the exact\n"
@@ -1976,13 +1956,13 @@
msgstr ""
msgid "columns"
-msgstr ""
+msgstr "სვეტები"
msgid "User &mini status"
msgstr ""
msgid "Listing format"
-msgstr ""
+msgstr "სიის ფორმატი"
msgid "Executable &first"
msgstr ""
@@ -1991,7 +1971,7 @@
msgstr ""
msgid "Sort order"
-msgstr ""
+msgstr "დალაგების წესი"
#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
@@ -2043,7 +2023,7 @@
msgstr ""
msgid "FTP anonymous password:"
-msgstr ""
+msgstr "ანონიმური FTP-ის პაროლი:"
msgid "FTP directory cache timeout (sec):"
msgstr ""
@@ -2064,10 +2044,10 @@
msgstr "ვირტუალური ფაილური სისტემის პარამეტრები"
msgid "cd"
-msgstr ""
+msgstr "cd"
msgid "Quick cd"
-msgstr ""
+msgstr "სწრაფი cd"
msgid "Existing filename (filename symlink will point to):"
msgstr ""
@@ -2077,32 +2057,19 @@
msgstr "სიმბოლური ბმულის ფაილის სახელი:"
msgid "Symbolic link"
-msgstr ""
+msgstr "სიმბმული"
msgid "&Stop"
-msgstr ""
+msgstr "გაჩერება"
msgid "&Resume"
-msgstr ""
+msgstr "გაგრძელება"
msgid "&Kill"
-msgstr ""
+msgstr "მოკვლა"
msgid "Background jobs"
-msgstr ""
-
-#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr "მომხმარებლის სახელი:"
-
-msgid "SMB authentication"
-msgstr ""
+msgstr "ფონური ამოცანები"
#, c-format
msgid ""
@@ -2111,22 +2078,22 @@
msgstr ""
msgid "Secure deletion"
-msgstr ""
+msgstr "უსაფრთხოდ წაშლა"
msgid "Undelete"
-msgstr ""
+msgstr "წაშლის გაუქმება"
msgid "Synchronous updates"
-msgstr ""
+msgstr "სინქრონული განახლებები"
msgid "Synchronous directory updates"
msgstr ""
msgid "Immutable"
-msgstr ""
+msgstr "დაურღვეველი"
msgid "Append only"
-msgstr ""
+msgstr "მხოლოდ ბოლოში მიწერა"
msgid "No dump"
msgstr ""
@@ -2135,13 +2102,13 @@
msgstr ""
msgid "Compress"
-msgstr ""
+msgstr "შეკუმშვა"
msgid "Compressed clusters"
-msgstr ""
+msgstr "შეკუმშული კლასტერები"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "შეკუმშული ბინძური ფაილები"
msgid "Compression raw access"
msgstr ""
@@ -2219,34 +2186,34 @@
msgstr ""
msgid "stick&y bit"
-msgstr ""
+msgstr "წებობავანი ბიტი"
msgid "&read by owner"
-msgstr ""
+msgstr "მფლობლის მიერ წაკითხვა"
msgid "&write by owner"
-msgstr ""
+msgstr "მფლობლის მიერ ჩაწერა"
msgid "e&xecute/search by owner"
-msgstr ""
+msgstr "მფლობლის მიწერ მოძებნა/გაშვება"
msgid "rea&d by group"
-msgstr ""
+msgstr "ჯგუფის მიერ წაკითხვა"
msgid "write by grou&p"
-msgstr ""
+msgstr "ჯგუფის მიერ ჩაწერა"
msgid "execu&te/search by group"
-msgstr ""
+msgstr "ჯგუფის მიერ მოძებნა/გაშვება"
msgid "read &by others"
-msgstr ""
+msgstr "სხვების მიერ წაკითხვა"
msgid "wr&ite by others"
-msgstr ""
+msgstr "სხვების მიერ ჩაწერა"
msgid "execute/searc&h by others"
-msgstr ""
+msgstr "სხვების მიერ მოძებნა/გაშვება"
msgid "Name:"
msgstr "სახელი:"
@@ -2261,19 +2228,19 @@
msgstr "ჯგუფის სახელი:"
msgid "Chmod command"
-msgstr ""
+msgstr "Chmod-ის ბრძანება"
msgid "Permission"
-msgstr ""
+msgstr "წვდომა"
msgid "File"
-msgstr ""
+msgstr "ფაილი"
msgid "Set &groups"
-msgstr ""
+msgstr "ჯგუფების დაყენება"
msgid "Set &users"
-msgstr ""
+msgstr "მომხმარებლების დაყენება"
msgid "Name"
msgstr "სახელი"
@@ -2288,7 +2255,7 @@
msgstr "ზომა"
msgid "Chown command"
-msgstr ""
+msgstr "Chmod-ის ბრძანება"
msgid "User name"
msgstr "მომხმარებლის სახელი"
@@ -2308,26 +2275,20 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
-msgstr ""
+msgstr "%s-ის მიბმა:"
msgid "Link"
-msgstr ""
+msgstr "ბმული"
#, c-format
msgid "link: %s"
-msgstr ""
+msgstr "ბმული: %s"
#, c-format
msgid "symlink: %s"
-msgstr ""
+msgstr "სიმბმული: %s"
#, c-format
msgid "Cannot chdir to \"%s\""
@@ -2343,13 +2304,13 @@
msgstr "გაფილტრული ხედი"
msgid "Filter command and arguments:"
-msgstr ""
+msgstr "ფილტრის ბრძანება და არგუმენტები:"
msgid "Edit file"
-msgstr ""
+msgstr "ფაილის ჩასწორება"
msgid "Create a new Directory"
-msgstr ""
+msgstr "ახალი საქაღალდის შექმნა"
msgid "Enter directory name:"
msgstr "შეიყვანეთ დირექტორიის სახელი:"
@@ -2395,10 +2356,10 @@
#, c-format
msgid "Symlink '%s' points to:"
-msgstr ""
+msgstr "სიმბმულის %s მიუთითებს:"
msgid "Edit symlink"
-msgstr ""
+msgstr "სიმბმულის ჩასწორება"
#, c-format
msgid "edit symlink, unable to remove %s: %s"
@@ -2406,19 +2367,16 @@
#, c-format
msgid "edit symlink: %s"
-msgstr ""
+msgstr "სიმბმულის ჩასწორება: %s"
msgid "FTP to machine"
-msgstr ""
+msgstr "FTP მანქანამდე"
msgid "SFTP to machine"
msgstr "SFTP მანქანამდე"
msgid "Shell link to machine"
-msgstr ""
-
-msgid "SMB link to machine"
-msgstr ""
+msgstr "გარსის შეერთება მანქანამდე"
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2432,7 +2390,7 @@
msgstr ""
msgid "Setup"
-msgstr ""
+msgstr "მორგება"
#, c-format
msgid "Setup saved to %s"
@@ -2446,7 +2404,7 @@
msgstr ""
msgid "Parameter"
-msgstr ""
+msgstr "პარამეტრი"
#, c-format
msgid ""
@@ -2454,14 +2412,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2471,8 +2439,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2499,13 +2467,13 @@
#, no-c-format
msgid "%o %d %f%m"
-msgstr ""
+msgstr "%o %d %f%m"
msgid "files"
-msgstr ""
+msgstr "ფაილი"
msgid "directory"
-msgstr ""
+msgstr "საქაღალდე"
msgid "directories"
msgstr ""
@@ -2584,7 +2552,7 @@
msgstr ""
msgid "Non&e"
-msgstr ""
+msgstr "არცერთი"
#, c-format
msgid ""
@@ -2705,6 +2673,15 @@
msgstr ""
msgid "(stalled)"
+msgstr "(დაეკიდა)"
+
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
msgstr ""
#, c-format
@@ -2719,12 +2696,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2776,7 +2747,7 @@
#, c-format
msgid "%d:%02d.%02d"
-msgstr ""
+msgstr "%d:%02d.%02d"
#, c-format
msgid "ETA %s"
@@ -2784,15 +2755,15 @@
#, c-format
msgid "%.2f MB/s"
-msgstr ""
+msgstr "%.2f მბ/წმ"
#, c-format
msgid "%.2f KB/s"
-msgstr ""
+msgstr "%.2f კბ/წმ"
#, c-format
msgid "%ld B/s"
-msgstr ""
+msgstr "%ld ბ/წმ"
msgid "New :"
msgstr ""
@@ -2825,14 +2796,14 @@
msgstr ""
msgid "File exists"
-msgstr ""
+msgstr "ფაილი უკვე არსებობს"
msgid "Background process: File exists"
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "დამუშავებული ფაილები: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -2859,26 +2830,26 @@
msgstr " სულ: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " სულ: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
-msgstr ""
+msgstr "წყარო"
msgid "Target"
-msgstr ""
+msgstr "სამიზნე"
msgid "Deleting"
-msgstr ""
+msgstr "წაშლა"
msgid "&Using shell patterns"
-msgstr ""
+msgstr "გარსის შაბლონების გამოყენება"
msgid "to:"
msgstr ""
msgid "Follow &links"
-msgstr ""
+msgstr "&ბმულებზე მიყოლა"
msgid "Preserve &attributes"
msgstr ""
@@ -2897,10 +2868,10 @@
msgstr ""
msgid "File listin&g"
-msgstr ""
+msgstr "&ფაილების სია"
msgid "&Quick view"
-msgstr ""
+msgstr "&სწრაფი ხედი"
msgid "&Info"
msgstr "&ინფო"
@@ -2909,196 +2880,193 @@
msgstr "&ხე"
msgid "&Listing format..."
-msgstr ""
+msgstr "&სიის ფორმატი..."
msgid "&Sort order..."
msgstr ""
msgid "&Filter..."
-msgstr ""
+msgstr "&ფილტრი..."
msgid "&Encoding..."
-msgstr ""
+msgstr "&კოდრება..."
msgid "FT&P link..."
-msgstr ""
+msgstr "FT&P შეერთება..."
msgid "S&hell link..."
-msgstr ""
-
-msgid "S&FTP link..."
-msgstr "S&FTP ბმა..."
+msgstr "გარ&სის შეერთება..."
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
msgstr "&პანელში"
msgid "&Rescan"
-msgstr ""
+msgstr "&თავიდან სკანირება"
msgid "&View"
msgstr "&ჩვენება"
msgid "Vie&w file..."
-msgstr ""
+msgstr "ფაილის ნახ&ვა..."
msgid "&Filtered view"
msgstr "გა&ფილტრული ხედი"
msgid "&Copy"
-msgstr ""
+msgstr "&კოპირება"
msgid "C&hmod"
-msgstr ""
+msgstr "რეჯიმი"
msgid "&Link"
-msgstr ""
+msgstr "&ბმული"
msgid "&Symlink"
-msgstr ""
+msgstr "&სიმბმული"
msgid "Relative symlin&k"
-msgstr ""
+msgstr "დამოკიდებული სიმბმული"
msgid "Edit s&ymlink"
-msgstr ""
+msgstr "სიმბმულის ჩასწორება"
msgid "Ch&own"
-msgstr ""
+msgstr "რეჟიმი"
msgid "&Advanced chown"
-msgstr ""
+msgstr "რეჟიმის დამატებითი პარამეტრები"
msgid "Cha&ttr"
-msgstr ""
+msgstr "ატრიბუტები"
msgid "&Rename/Move"
-msgstr ""
+msgstr "გადარქმევა/გადატანა"
msgid "&Mkdir"
-msgstr ""
+msgstr "დირ. შექმნა"
msgid "&Quick cd"
-msgstr ""
+msgstr "სწრაფი cd"
msgid "Select &group"
-msgstr ""
+msgstr "ჯგუფის მონიშვნა"
msgid "U&nselect group"
-msgstr ""
+msgstr "ჯგუფის მონიშვნის მოხსნა"
msgid "&Invert selection"
-msgstr ""
+msgstr "მონიშვნის ინვერსია"
msgid "E&xit"
-msgstr ""
+msgstr "&გამოსვლა"
msgid "&User menu"
-msgstr ""
+msgstr "&მომხმარებლის მენიუ"
msgid "&Directory tree"
msgstr "&დირექტორიების ხე"
msgid "&Find file"
-msgstr ""
+msgstr "ფაილის მოძებნა"
msgid "S&wap panels"
-msgstr ""
+msgstr "პანელების შეცვლა"
msgid "Switch &panels on/off"
-msgstr ""
+msgstr "პანელების ჩართ/გამორთ"
msgid "&Compare directories"
-msgstr ""
+msgstr "საქაღალდეების შედარება"
msgid "C&ompare files"
msgstr "ფა&ილების შედარება"
msgid "E&xternal panelize"
-msgstr ""
+msgstr "გარე პანელზე"
msgid "Show directory s&izes"
-msgstr ""
+msgstr "საქაღალდეების ზომების ჩვენება"
msgid "Command &history"
-msgstr ""
+msgstr "ბრძანებების ისტორია"
msgid "Viewed/edited files hi&story"
-msgstr ""
+msgstr "ნანახი/ჩასწორებული ფაილების ისტორია"
msgid "Di&rectory hotlist"
-msgstr ""
+msgstr "ახლახანს ნანახი საქაღალდეები"
msgid "&Active VFS list"
-msgstr ""
+msgstr "აქტიური VFS-ის სია"
msgid "&Background jobs"
-msgstr ""
+msgstr "ფონური ამოცანები"
msgid "Screen lis&t"
-msgstr ""
+msgstr "ეკრანის სია"
msgid "&Undelete files (ext2fs only)"
-msgstr ""
+msgstr "ფაილების აღდგენა (მხოლოდ ext2fs)"
msgid "&Listing format edit"
-msgstr ""
+msgstr "&სიის ფორმატის ჩასწორება"
msgid "Edit &extension file"
-msgstr ""
+msgstr "გაფართოების ფაილის ჩასწორება"
msgid "Edit &menu file"
-msgstr ""
+msgstr "მენიუს ფაილის ჩასწორება"
msgid "Edit hi&ghlighting group file"
-msgstr ""
+msgstr "გამოკვეთის ჯგუფის ფაილის ჩასწორება"
msgid "&Configuration..."
-msgstr "&კონფიგურაცია"
+msgstr "&კონფიგურაცია..."
msgid "&Layout..."
msgstr "გან&ლაგება..."
msgid "&Panel options..."
-msgstr ""
+msgstr "პანელის მორგება..."
msgid "C&onfirmation..."
-msgstr ""
+msgstr "დადასტურებები..."
msgid "&Appearance..."
-msgstr ""
+msgstr "გარეგნობა..."
msgid "&Display bits..."
-msgstr ""
+msgstr "ნაჩვენები ნაწილები..."
msgid "&Virtual FS..."
msgstr "&ვირტუალური FS..."
msgid "Panels:"
-msgstr ""
+msgstr "პანელები:"
#, c-format
msgid "You have %zu opened screen. Quit anyway?"
msgid_plural "You have %zu opened screens. Quit anyway?"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "გაქვთ %zu ღია ეკრანი. მაინც გააგრძელებთ?"
+msgstr[1] "გაქვთ %zu ღია ეკრანი. მაინც გააგრძელებთ?"
msgid "The Midnight Commander"
-msgstr ""
+msgstr "The Midnight Commander"
msgid "Do you really want to quit the Midnight Commander?"
-msgstr ""
+msgstr "ნამდვილად გნებავთ Midnight Commander-დან გასვლა?"
msgid "&Above"
-msgstr ""
+msgstr "ზემოდან"
msgid "&Left"
msgstr "მარ&ცხნივ"
msgid "&Below"
-msgstr ""
+msgstr "ქვემოდან"
msgid "&Right"
msgstr "მარ&ჯვნივ"
@@ -3116,23 +3084,23 @@
msgstr "დირ. შექმნა"
msgid "&Chdir"
-msgstr ""
+msgstr "Chdir"
msgid "&Again"
-msgstr ""
+msgstr "კიდევ"
msgid "Pane&lize"
-msgstr ""
+msgstr "პანელზე გატანა"
msgid "&View - F3"
msgstr "&ჩვენება - F3"
msgid "&Edit - F4"
-msgstr ""
+msgstr "ჩასწორება - F4"
#, c-format
msgid "Found: %lu"
-msgstr ""
+msgstr "ნაპოვნია: %lu"
msgid "Malformed regular expression"
msgstr ""
@@ -3143,11 +3111,14 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
msgid "Content:"
-msgstr ""
+msgstr "შემცველობა:"
msgid "Sea&rch for content"
msgstr ""
@@ -3162,7 +3133,7 @@
msgstr ""
msgid "Find File"
-msgstr ""
+msgstr "ფაილის ძებნა"
msgid "Start at:"
msgstr ""
@@ -3175,7 +3146,7 @@
msgstr ""
msgid "Finished"
-msgstr ""
+msgstr "დასრულდა"
#, c-format
msgid "Finished (ignored %zu directory)"
@@ -3192,7 +3163,7 @@
msgstr ""
msgid "Searching"
-msgstr ""
+msgstr "ძებნა"
msgid "Change &to"
msgstr ""
@@ -3201,7 +3172,7 @@
msgstr ""
msgid "&Refresh"
-msgstr ""
+msgstr "&განახლება"
msgid "&Add current"
msgstr ""
@@ -3216,10 +3187,10 @@
msgstr ""
msgid "&Insert"
-msgstr ""
+msgstr "&ჩასმა"
msgid "&Remove"
-msgstr ""
+msgstr "&წაშლა"
msgid "Subgroup - press ENTER to see list"
msgstr ""
@@ -3305,131 +3276,131 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
msgid "Type: %s"
-msgstr ""
+msgstr "ტიპი: %s"
msgid "non-local vfs"
-msgstr ""
+msgstr "არალოკალური vfs"
#, c-format
msgid "Device: %s"
-msgstr ""
+msgstr "მოწყობილობა: %s"
#, c-format
msgid "Filesystem: %s"
-msgstr ""
+msgstr "ფაილური სისტემა: %s"
#, c-format
msgid "Accessed: %s"
-msgstr ""
+msgstr "ბოლო წვდომა: %s"
#, c-format
msgid "Modified: %s"
-msgstr ""
+msgstr "ჩასწორებულია: %s"
#. TRANSLATORS: Time of last status change as in stat(2) man.
#, c-format
msgid "Changed: %s"
-msgstr ""
+msgstr "შეცვლილია: %s"
#, c-format
msgid "Dev. type: major %lu, minor %lu"
-msgstr ""
+msgstr "მოწყ. ტიპი: ზედა%lu, ქვედა %lu"
#, c-format
msgid "Size: %s"
-msgstr ""
+msgstr "ზომა: %s"
#, c-format
msgid " (%lu block)"
msgid_plural " (%lu blocks)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] " (%lu ბლოკი)"
+msgstr[1] " (%lu ბლოკი)"
#, c-format
msgid "Owner: %s/%s"
-msgstr ""
+msgstr "მფლობელი: %s/%s"
#, c-format
msgid "Links: %d"
-msgstr ""
+msgstr "ბმულები: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "ატრიბუტები: მხარდაუჭერელია"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "ატრიბუტები: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "ატრიბუტები:ხელმიუწვდომელია"
#, c-format
msgid "Mode: %s (%04o)"
-msgstr ""
+msgstr "რეჟიმი: %s (%04o)"
#, c-format
msgid "Location: %Xh:%Xh"
-msgstr ""
+msgstr "მდებარეობა: %Xh:%Xh"
msgid "&Equal split"
msgstr "&თანაბრად გაყოფა"
msgid "&Menubar visible"
-msgstr ""
+msgstr "მენიუს ზოლის ჩვენება"
msgid "Command &prompt"
-msgstr ""
+msgstr "ბრძანების სტრიქონი"
msgid "&Keybar visible"
-msgstr ""
+msgstr "ღილაკების ზოლი"
msgid "H&intbar visible"
-msgstr ""
+msgstr "მინიშნების ზოლი"
msgid "&XTerm window title"
-msgstr ""
+msgstr "Xterm-ის ფანჯრის სათაური"
msgid "&Show free space"
-msgstr ""
+msgstr "თავისუფალი ადგილის ჩვენება"
msgid "Panel split"
msgstr "პანელის გაყოფა"
msgid "Console output"
-msgstr ""
+msgstr "კონსოლში გამოტანა"
msgid "&Vertical"
-msgstr ""
+msgstr "ვერტიკალური"
msgid "&Horizontal"
-msgstr ""
+msgstr "ჰორიზონტალური"
msgid "Output lines:"
-msgstr ""
+msgstr "გამოტანის ხაზები:"
msgid "Layout"
msgstr "განლაგება"
msgid "Memory exhausted!"
-msgstr ""
+msgstr "მეხსიერება გადავსებულია!"
#. TRANSLATORS: one single character to represent 'unsorted' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|u"
-msgstr ""
+msgstr "sort|u"
msgid "&Unsorted"
-msgstr ""
+msgstr "&დაულაგებელი"
#. TRANSLATORS: one single character to represent 'name' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|n"
-msgstr ""
+msgstr "sort|n"
msgid "&Name"
msgstr "&სახელი"
@@ -3437,23 +3408,23 @@
#. TRANSLATORS: one single character to represent 'version' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|v"
-msgstr ""
+msgstr "sort|v"
msgid "&Version"
-msgstr ""
+msgstr "&ვერსია"
#. TRANSLATORS: one single character to represent 'extension' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|e"
-msgstr ""
+msgstr "sort|e"
msgid "E&xtension"
-msgstr ""
+msgstr "&გაფართოება"
#. TRANSLATORS: one single character to represent 'size' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|s"
-msgstr ""
+msgstr "sort|s"
msgid "&Size"
msgstr "&ზომა"
@@ -3464,7 +3435,7 @@
#. TRANSLATORS: one single character to represent 'Modify time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|m"
-msgstr ""
+msgstr "sort|m"
msgid "&Modify time"
msgstr "&ცვლილების დრო"
@@ -3472,7 +3443,7 @@
#. TRANSLATORS: one single character to represent 'Access time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|a"
-msgstr ""
+msgstr "sort|a"
msgid "&Access time"
msgstr "&წვდომის დრო"
@@ -3480,57 +3451,57 @@
#. TRANSLATORS: one single character to represent 'Change time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|h"
-msgstr ""
+msgstr "sort|h"
msgid "C&hange time"
msgstr "დ&როის შეცვლა"
msgid "Perm"
-msgstr ""
+msgstr "წვდომა"
msgid "Nl"
-msgstr ""
+msgstr "Nl"
#. TRANSLATORS: one single character to represent 'inode' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|i"
-msgstr ""
+msgstr "sort|i"
msgid "&Inode"
-msgstr ""
+msgstr "&Inode"
msgid "UID"
-msgstr ""
+msgstr "UID"
msgid "GID"
-msgstr ""
+msgstr "GID"
msgid "Owner"
-msgstr ""
+msgstr "მფლობელი"
msgid "Group"
-msgstr ""
+msgstr "ჯგუფი"
msgid "[dev]"
-msgstr ""
+msgstr "[dev]"
msgid "UP--DIR"
msgstr "ზედა-დირექტორია"
msgid "SYMLINK"
-msgstr ""
+msgstr "სიმბმული"
msgid "SUB-DIR"
-msgstr ""
+msgstr "ქვე-საქ"
msgid "<readlink failed>"
-msgstr ""
+msgstr "<readlink failed>"
#, c-format
msgid "%s in %d file"
msgid_plural "%s in %d files"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s %d ფაილში"
+msgstr[1] "%s %d ფაილში"
msgid "Panelize"
msgstr "პანელში"
@@ -3539,16 +3510,19 @@
msgstr ""
msgid "&Files only"
-msgstr ""
+msgstr "&მხოლოდ ფაილები"
msgid "&Case sensitive"
-msgstr ""
+msgstr "&დიდი თუ პატარა სიმბოლოები"
msgid "Select"
-msgstr ""
+msgstr "მონიშვნა"
msgid "Unselect"
-msgstr ""
+msgstr "მონიშვნის მოხსნა"
+
+msgid "Filter"
+msgstr "ფილტრი"
msgid "Do you really want to execute?"
msgstr ""
@@ -3560,27 +3534,34 @@
msgstr ""
msgid "&Add new"
-msgstr ""
+msgstr "&ახლის დამატება"
msgid "External panelize"
-msgstr ""
+msgstr "გარე პანელზე"
msgid "Other command"
-msgstr ""
+msgstr "სხვა ბრძანება"
msgid "Command"
-msgstr ""
+msgstr "ბრძანება"
msgid "Add to external panelize"
-msgstr ""
+msgstr "გარე პანელზე დამატება"
msgid "Enter command label:"
-msgstr ""
+msgstr "შეიყვანეთ ბრძანების ჭდე:"
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3620,7 +3601,7 @@
#, c-format
msgid "Delete %s?"
-msgstr ""
+msgstr "წავშალო \"%s\"?"
msgid "ButtonBar|Static"
msgstr "სტატ"
@@ -3654,7 +3635,7 @@
msgstr ""
msgid "Help"
-msgstr ""
+msgstr "დახმარება"
msgid "ButtonBar|Index"
msgstr ""
@@ -3689,7 +3670,7 @@
#. TRANSLATORS: This label appears near learned keys. Keep it short.
msgid "OK"
-msgstr ""
+msgstr "დიახ"
msgid ""
"It seems that all your keys already\n"
@@ -3697,7 +3678,7 @@
msgstr ""
msgid "&Discard"
-msgstr ""
+msgstr "&გაუქმება"
msgid ""
"Great! You have a complete terminal database!\n"
@@ -3739,10 +3720,10 @@
msgstr ""
msgid "%b %e %Y"
-msgstr ""
+msgstr "%b %e %Y"
msgid "%b %e %H:%M"
-msgstr ""
+msgstr "%b %e %H:%M"
#, c-format
msgid ""
@@ -3816,6 +3797,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "ვირტუალური ფაილური სისტემები:"
@@ -3850,7 +3835,7 @@
msgstr ""
msgid "Debug"
-msgstr ""
+msgstr "გამართვა"
msgid "ERROR:"
msgstr "შეცდომა:"
@@ -3927,13 +3912,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -3972,15 +3964,15 @@
#, c-format
msgid "%s: done."
-msgstr ""
+msgstr "%s: დასრულებულია."
#, c-format
msgid "%s: failure"
-msgstr ""
+msgstr "%s: შეცდომა"
#, c-format
msgid "fish: store %s: sending command..."
-msgstr ""
+msgstr "fish: საცავი %s: ბრძანების გაგზავნა..."
msgid "fish: Local read failed, sending zeros"
msgstr ""
@@ -4029,7 +4021,7 @@
msgstr ""
msgid "ftpfs: Invalid host name."
-msgstr "ftpfs: ჰოსტის სახელი არასწორია"
+msgstr "ftpfs: ჰოსტის სახელი არასწორია."
#, c-format
msgid "ftpfs: %s"
@@ -4050,6 +4042,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4101,6 +4108,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4130,6 +4143,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4141,62 +4157,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
-msgstr "ავთენტიკაცია ვერ მოხერხდა"
+msgid "sftp: Passphrase is empty."
+msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
@@ -4314,7 +4347,7 @@
msgstr ""
msgid "Goto"
-msgstr ""
+msgstr "გადასვლა"
msgid "ButtonBar|Ascii"
msgstr "Ascii"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/kk.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Aidos Kakimzhanov <aidos.kakimzhan@gmail.com>, 2016\n"
"Language-Team: Kazakh (http://www.transifex.com/mc/mc/language/kk/)\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3140,6 +3098,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3508,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3538,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3784,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3924,13 +3899,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4029,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4098,6 +4095,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4130,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4144,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ko.po
^
|
@@ -3,17 +3,20 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Bruce Lee <daemul72@gmail.com>, 2019-2020
+# Junghee Lee <daemul72@gmail.com>, 2021
+# Junghee Lee <daemul72@gmail.com>, 2019-2020
# JinYeong Bak <dongdm@gmail.com>, 2016
-# Bruce Lee <daemul72@gmail.com>, 2019-2020
+# Junghee Lee <daemul72@gmail.com>, 2022
+# Junghee Lee <daemul72@gmail.com>, 2022
+# Junghee Lee <daemul72@gmail.com>, 2019-2021
# Slava Zanko <slavazanko@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Junghee Lee <daemul72@gmail.com>, 2022\n"
"Language-Team: Korean (http://www.transifex.com/mc/mc/language/ko/)\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
@@ -23,14 +26,14 @@
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr "경고: 코드 페이지 목록을 불러올 수 없음"
+msgstr "경고: 코드 페이지 목록을 불러올 수 없습니다"
msgid "7-bit ASCII"
msgstr "7-bit ASCII"
#, c-format
msgid "Cannot translate from %s to %s"
-msgstr "%s에서 %s로 변환할 수 없음"
+msgstr "%s에서 %s로 변환할 수 없습니다"
msgid "Event system already initialized"
msgstr "이벤트 시스템이 이미 초기화되었습니다"
@@ -46,11 +49,11 @@
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr "이벤트에 대한 '%s' 그룹을 생성할 수 없음!"
+msgstr "이벤트에 대한 '%s' 그룹을 생성할 수 없습니다!"
#, c-format
msgid "Unable to create event '%s'!"
-msgstr "'%s' 이벤트를 생성할 수 없음!"
+msgstr "'%s' 이벤트를 생성할 수 없습니다!"
#, c-format
msgid ""
@@ -73,35 +76,11 @@
#, c-format
msgid "Cannot create %s directory"
-msgstr "%s 디렉터리을 만들 수 없음"
+msgstr "%s 디렉터리을 만들 수 없습니다"
msgid "FATAL: not a directory:"
msgstr "치명적인 오류: 디렉터리가 아님:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "사용자 설정을 이전하는 동안 오류가 발생함: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"이전 설정이 %s에서 이전됨\n"
-"Freedesktop 추천 디렉토리.\n"
-"자세한 내용은 다음 웹 사이트를 참조하십시오.\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"기존 설정이 %s에서\n"
-"%s로 이전됨\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -122,7 +101,7 @@
"%s."
msgid "Search string not found"
-msgstr "검색 문자열을 찾을 수 없음"
+msgstr "검색 문자열을 찾을 수 없습니다"
msgid "Not implemented yet"
msgstr "아직 구현되지 않음"
@@ -154,16 +133,16 @@
"Unable to load '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"'%s' 스킨을 불러올 수 없음.\n"
-"기본 스킨이 로드됨"
+"'%s' 스킨을 불러올 수 없습니다.\n"
+"기본 스킨이 불러오기 되었습니다"
#, c-format
msgid ""
"Unable to parse '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"'%s' 스킨을 구문 분석할 수 없음.\n"
-"기본 스킨이 로드됨"
+"'%s' 스킨을 구문 분석할 수 없습니다.\n"
+"기본 스킨이 불러오기 되었습니다"
#, c-format
msgid ""
@@ -171,9 +150,9 @@
"%s\n"
"Default skin has been loaded"
msgstr ""
-"트루컬러를 지원하는 '%s' 스킨을 사용할 수 없음:\n"
+"트루컬러를 지원하는 '%s' 스킨을 사용할 수 없습니다:\n"
"%s\n"
-"기본 스킨이 로드됨"
+"기본 스킨이 불러오기 되었습니다"
#, c-format
msgid ""
@@ -181,19 +160,19 @@
"on non-256 colors terminal.\n"
"Default skin has been loaded"
msgstr ""
-"256색이 아닌 '%s'스킨을 사용할 수 없음\n"
-"256 색이 아닌 터미널에서 지원됨\n"
-"기본 스킨이 로드됨"
+"256색이 아닌 터미널에서 256색을 지원하는\n"
+"'%s' 스킨을 사용할 수 없습니다.\n"
+"기본 스킨이 불러오기 되었습니다"
msgid "True color not supported with ncurses."
msgstr "트루 컬러는 ncurses에서 지원 되지 않습니다."
-msgid "True color not supported in this slang version."
-msgstr "트루 컬러는 이 속어 버전에서 지원되지 않습니다."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "터미널이 256색상을 지원하지 않는 것 같습니다."
+msgid "True color not supported in this slang version."
+msgstr "트루 컬러는 이 속어 버전에서 지원되지 않습니다."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "터미널이 트루 컬러를 지원하는 경우, COLORTERM=truecolor로 설정."
@@ -261,7 +240,7 @@
msgstr "F20"
msgid "Completion/M-tab"
-msgstr "완료/M-tab"
+msgstr "완성/M-tab"
msgid "BackTab/S-tab"
msgstr "뒤로 탭/S-tab"
@@ -291,7 +270,7 @@
msgstr "홈 키"
msgid "End key"
-msgstr "엔드 키"
+msgstr "End 키"
msgid "Page Up"
msgstr "페이지 위로 키"
@@ -324,25 +303,25 @@
msgstr "키패드 아래쪽 방향키"
msgid "Home on keypad"
-msgstr "키패드 홈 키"
+msgstr "키패드 Home"
msgid "End on keypad"
-msgstr "키패드 엔드 키"
+msgstr "키패드 End"
msgid "Page Down keypad"
-msgstr "키패드 페이지 아래로 키"
+msgstr "키패드 Page Down"
msgid "Page Up keypad"
-msgstr "키패드 페이지 위로 키"
+msgstr "키패드 Page Up"
msgid "Insert on keypad"
-msgstr "키패드 삽입 키"
+msgstr "키패드 Insert"
msgid "Delete on keypad"
-msgstr "키패드 삭제 키"
+msgstr "키패드 Delete"
msgid "Enter on keypad"
-msgstr "키패드 엔터 키"
+msgstr "키패드 Enter"
msgid "Function key 21"
msgstr "F21"
@@ -472,13 +451,13 @@
msgstr "@"
msgid "Ctrl"
-msgstr "컨트롤"
+msgstr "Ctrl"
msgid "Alt"
-msgstr "알트"
+msgstr "Alt"
msgid "Shift"
-msgstr "쉬프트"
+msgstr "Shift"
msgid "The TERM environment variable is unset!\n"
msgstr "TERM 환경변수가 설정되어있지 않습니다!\n"
@@ -492,7 +471,7 @@
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
"\n"
-"SIGWINCH용 파이프를 작성할 수 없음: %s (%d)\n"
+"SIGWINCH용 파이프를 작성할 수 없습니다: %s (%d)\n"
#, c-format
msgid ""
@@ -500,7 +479,7 @@
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
"\n"
-"SIGWINCH 파이프의 쓰기 끝을 구성할 수 없음: %s (%d)\n"
+"SIGWINCH 파이프의 쓰기 끝을 구성할 수 없습니다: %s (%d)\n"
#, c-format
msgid ""
@@ -508,7 +487,7 @@
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
"\n"
-"SIGWINCH 파이프의 읽기 끝을 구성할 수 없음: %s (%d)\n"
+"SIGWINCH 파이프의 읽기 끝을 구성할 수 없습니다: %s (%d)\n"
#, c-format
msgid ""
@@ -540,10 +519,10 @@
msgstr "기비바이트"
msgid "Cannot create pipe descriptor"
-msgstr "파이프 설명도구를 작성할 수 없음"
+msgstr "파이프 설명도구를 작성할 수 없습니다"
msgid "Cannot create pipe streams"
-msgstr "파이프 데이터 스트림을 생성할 수 없음"
+msgstr "파이프 데이터 스트림을 생성할 수 없습니다"
#, c-format
msgid ""
@@ -553,6 +532,9 @@
"Select()에서 하위 프로세스의 데이터를 읽는 도중 예상치 못한 오류 발생:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -561,18 +543,6 @@
"Waitpid()에서 예상치 못한 오류가 발생:\n"
"%s"
-msgid "Warning"
-msgstr "경고"
-
-msgid "Pipe failed"
-msgstr "파이프 실패"
-
-msgid "Dup failed"
-msgstr "복제 실패"
-
-msgid "Error dup'ing old error pipe"
-msgstr "이전 오류 파이프를 중복하는 동안 오류 발생"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "%s 디렉터리 캐쉬 만료"
@@ -604,11 +574,11 @@
#, c-format
msgid "Cannot set correct permissions for directory %s\n"
-msgstr "%s 디렉토리에 대한 올바른 사용 권한을 설정할 수 없음\n"
+msgstr "%s 디렉터리에 대한 올바른 사용 권한을 설정할 수 없습니다\n"
#, c-format
msgid "Cannot create temporary directory %s: %s\n"
-msgstr "%s 임시 디렉토리를 생성할 수 없음: %s\n"
+msgstr "%s 임시 디렉터리를 생성할 수 없습니다: %s\n"
#, c-format
msgid "Temporary files will be created in %s\n"
@@ -619,10 +589,10 @@
msgstr "임시 파일이 생성되지 않음\n"
msgid "Press any key to continue..."
-msgstr "아무 키나 눌러 계속합니다..."
+msgstr "계속하려면 아무 키나 누르십시오..."
msgid "Cannot parse:"
-msgstr "구문 분석할 수 없음:"
+msgstr "구문 분석할 수 없습니다:"
msgid "More parsing errors will be ignored."
msgstr "더 많은 구문 분석 오류가 무시됩니다."
@@ -641,7 +611,7 @@
#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
msgid "DialogTitle|History cleanup"
-msgstr "대화상자 제목 | 기록 지우기"
+msgstr "대화상자제목|기록 지우기"
msgid "Do you want clean this history?"
msgstr "이 기록을 지우시겠습니까?"
@@ -675,35 +645,29 @@
msgstr "현재 버전 표시"
msgid "Print data directory"
-msgstr "데이터 디렉토리 인쇄"
+msgstr "데이터 디렉터리 인쇄"
msgid "Print extended info about used data directories"
-msgstr "사용된 데이터 디렉토리에 대한 확장 정보 인쇄"
+msgstr "사용된 데이터 디렉터리에 대한 확장 정보 인쇄"
msgid "Print configure options"
msgstr "설정 옵션 인쇄"
msgid "Print last working directory to specified file"
-msgstr "마지막 작업 디렉토리를 지정된 파일로 인쇄"
+msgstr "마지막 작업 디렉터리를 지정된 파일로 인쇄"
msgid "<file>"
msgstr "<file>"
msgid "Enables subshell support (default)"
-msgstr "subshell 지원 사용 (기본 값)"
+msgstr "서브쉘 지원 사용 (기본 값)"
msgid "Disables subshell support"
-msgstr "subshell 지원 사용안함"
+msgstr "서브쉘 지원 비활성화"
msgid "Log ftp dialog to specified file"
msgstr "지정된 파일에 ftp 대화상자 로그"
-msgid "Set debug level"
-msgstr "디버그 수준 설정"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "파일에서 파일 뷰어 실행"
@@ -717,13 +681,13 @@
msgstr "XTerm 기능을 무조건 사용"
msgid "Disable X11 support"
-msgstr "X11 지원 사용안함"
+msgstr "X11 지원 비활성화"
msgid "Tries to use an old highlight mouse tracking"
msgstr "이전 강조 표시 마우스 추적 사용 시도"
msgid "Disable mouse support in text version"
-msgstr "텍스트 버전에서 마우스 지원 사용안함"
+msgstr "텍스트 버전에서 마우스 지원 비활성화"
msgid "Tries to use termcap instead of terminfo"
msgstr "terminfo 대신 termcap 사용 시도"
@@ -843,8 +807,8 @@
"as tickets at www.midnight-commander.org\n"
msgstr ""
"\n"
-"버그 보고서를 보내주세요 ('mc -V' 출력을 포함)\n"
-"www.midnight-commander.org에서 티켓으로\n"
+"모든 버그 보고서('mc-V' 출력 포함)는 \n"
+"www.midnight-commander.org에서 티켓으로 보내주십시오\n"
#, c-format
msgid "GNU Midnight Commander %s\n"
@@ -860,10 +824,10 @@
msgstr "인수 구문 분석 오류!"
msgid "No arguments given to the viewer."
-msgstr "뷰어에 지정된 인수가 없음."
+msgstr "뷰어에 지정된 인수가 없습니다."
msgid "Two files are required to envoke the diffviewer."
-msgstr "Diff 뷰어를 호출하려면 두 개의 파일이 필요함."
+msgstr "Diffviewer를 호출하려면 두 개의 파일이 필요합니다."
msgid "Background protocol error"
msgstr "백그라운드 프로토콜 오류"
@@ -909,7 +873,7 @@
msgstr "검색"
msgid "Search is disabled"
-msgstr "검색 사용안함"
+msgstr "검색이 비활성화되었습니다"
#, c-format
msgid ""
@@ -917,7 +881,7 @@
"%s"
msgstr ""
"%s\n"
-"임시 Diff 파일을 생성할 수 없음"
+"임시 Diff 파일을 생성할 수 없습니다"
#, c-format
msgid ""
@@ -927,7 +891,7 @@
msgstr ""
"%s%s\n"
"%s\n"
-" 백업 파일을 생성할 수 없음"
+" 백업 파일을 생성할 수 없습니다"
#, c-format
msgid ""
@@ -935,7 +899,7 @@
"%s"
msgstr ""
"%s\n"
-"임시 병합 파일을 생성할 수 없음"
+"임시 병합 파일을 생성할 수 없습니다"
msgid "&Fastest (Assume large files)"
msgstr "가장 빠름 (대용량 파일 추정)(&F)"
@@ -971,7 +935,7 @@
msgstr "편집"
msgid "Edit is disabled"
-msgstr "편집 사용안함"
+msgstr "편집이 비활성화되었습니다"
msgid "Goto line (left)"
msgstr "행으로 이동 (왼쪽)"
@@ -1021,7 +985,7 @@
#, c-format
msgid "\"%s\" is a directory"
-msgstr "\"%s\"은(는) 디렉토리임"
+msgstr "\"%s\"은(는) 디렉터리임"
#, c-format
msgid ""
@@ -1037,15 +1001,6 @@
msgid "Two files are needed to compare"
msgstr "비교를 위해 두 개의 파일이 필요함"
-msgid "Choose syntax highlighting"
-msgstr "구문 강조 표시 선택"
-
-msgid "< Auto >"
-msgstr "< 자동 >"
-
-msgid "< Reload Current Syntax >"
-msgstr "<현재 구문 새로 고침>"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "불러오는 중: %3d%%"
@@ -1055,7 +1010,7 @@
#, c-format
msgid "Cannot open %s for reading"
-msgstr "%s을(를) 열 수 없음"
+msgstr "%s을(를) 열 수 없습니다"
msgid "Load file"
msgstr "파일 불러오기"
@@ -1066,7 +1021,7 @@
#, c-format
msgid "Cannot get size/permissions for %s"
-msgstr "%s에 대한 크기/사용 권한을 가져올 수 없음"
+msgstr "%s에 대한 크기/사용 권한을 가져올 수 없습니다"
#, c-format
msgid "\"%s\" is not a regular file"
@@ -1080,21 +1035,16 @@
"\"%s\" 파일이 너무 큽니다.\n"
"그래도 여시겠습니까?"
+msgid "Warning"
+msgstr "경고"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "파이프에서 읽는 중 오류 발생: %s"
#, c-format
msgid "Cannot open pipe for reading: %s"
-msgstr "읽을 파이프를 열 수 없음: %s"
-
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "%s 검색중: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "%s 검색중"
+msgstr "읽을 파이프를 열 수 없습니다: %s"
msgid "File has hard-links. Detach before saving?"
msgstr "파일에 하드-링크가 있습니다. 저장하기 전에 분리 하시겠습니까?"
@@ -1108,11 +1058,11 @@
#, c-format
msgid "Cannot open pipe for writing: %s"
-msgstr "쓰기 위해 파이프를 열 수 없음: %s"
+msgstr "쓰기 위해 파이프를 열 수 없습니다: %s"
#, c-format
msgid "Cannot open file for writing: %s"
-msgstr "쓰기 위해 파일을 열 수 없음: %s"
+msgstr "쓰기 위해 파일을 열 수 없습니다: %s"
msgid "The file you are saving does not end with a newline."
msgstr "저장중인 파일은 개행 문자로 끝나지 않음."
@@ -1136,14 +1086,11 @@
msgstr "파일 이름 입력:"
msgid "Change line breaks to:"
-msgstr "줄바꿈 변경:"
+msgstr "줄 바꿈을 다음으로 변경:"
msgid "Save As"
msgstr "다른이름으로 저장"
-msgid "Collect completions"
-msgstr "수집 완료"
-
msgid "&Quick save"
msgstr "빠른 저장(&Q)"
@@ -1151,7 +1098,7 @@
msgstr "안전 저장(&S)"
msgid "&Do backups with following extension:"
-msgstr "확장명을 다음과 같이 백업하지 않음(&D):"
+msgstr "다음 확장자로 백업 수행(&D):"
msgid "Check &POSIX new line"
msgstr "POSIX 새 행 확인(&P)"
@@ -1163,7 +1110,7 @@
msgstr "다른 이름으로 저장"
msgid "Cannot save: destination is not a regular file"
-msgstr "저장할 수 없음: 대상이 일반 파일이 아님"
+msgstr "저장할 수 없습니다: 대상이 일반 파일이 아님"
msgid "A file already exists with this name"
msgstr "이 이름의 파일이 이미 있음"
@@ -1172,28 +1119,7 @@
msgstr "덮어쓰기(&O)"
msgid "Cannot save file"
-msgstr "파일을 저장할 수 없음"
-
-msgid "Delete macro"
-msgstr "매크로 삭제"
-
-msgid "Press macro hotkey:"
-msgstr "매크로 단축키 누름:"
-
-msgid "Macro not deleted"
-msgstr "매크로가 삭제되지 않음"
-
-msgid "Save macro"
-msgstr "매크로 저장"
-
-msgid "Press the macro's new hotkey:"
-msgstr "매크로의 새 단축키 누르기:"
-
-msgid "Repeat last commands"
-msgstr "마지막 명령어 반복"
-
-msgid "Repeat times:"
-msgstr "반복 횟수:"
+msgstr "파일을 저장할 수 없습니다"
#, c-format
msgid "Confirm save file: \"%s\""
@@ -1229,15 +1155,8 @@
msgid "&Local"
msgstr "로컬(&L)"
-msgid "Replace"
-msgstr "바꾸기"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld 교체"
-
msgid "[NoName]"
-msgstr "[이름 없음]"
+msgstr "[이름 없습니다]"
#, c-format
msgid ""
@@ -1265,7 +1184,7 @@
msgstr "클립보드로 복사하기"
msgid "Unable to save to file"
-msgstr "파일에 저장할 수 없음"
+msgstr "파일에 저장할 수 없습니다"
msgid "Cut to clipboard"
msgstr "클립보드로 잘라내기"
@@ -1280,7 +1199,7 @@
msgstr "파일 삽입"
msgid "Cannot insert file"
-msgstr "파일을 삽입할 수 없음"
+msgstr "파일을 삽입할 수 없습니다"
msgid "Sort block"
msgstr "블록 정렬"
@@ -1291,30 +1210,30 @@
msgid "Run sort"
msgstr "정렬 실행"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "화이트 스페이스로 구분된 정렬 옵션 입력(맨 페이지 참조):"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "정렬"
msgid "Cannot execute sort command"
-msgstr "정렬 명령을 실행할 수 없음"
+msgstr "정렬 명령을 실행할 수 없습니다"
#, c-format
msgid "Sort returned non-zero: %s"
msgstr "정렬이 0이 아닌 값을 반환함: %s"
msgid "Paste output of external command"
-msgstr "기타 명령의 출력 붙여넣기"
+msgstr "확장 명령의 출력 붙여넣기"
msgid "Enter shell command(s):"
msgstr "쉘 명령어 입력:"
msgid "External command"
-msgstr "기타 명령어"
+msgstr "확장 명령어"
msgid "Cannot execute command"
-msgstr "명령을 실행할 수 없음"
+msgstr "명령을 실행할 수 없습니다"
msgid "mail -s <subject> -c <cc> <to>"
msgstr "mail -s <subject> -c <cc> <to>"
@@ -1335,7 +1254,7 @@
msgstr "텍스트 삽입"
msgid "Press any key:"
-msgstr "아무 키나 누르십시오:"
+msgstr "아무 키나 누르기:"
msgid ""
"Current text was modified without a file save.\n"
@@ -1344,35 +1263,35 @@
"파일 저장 없이 현재 텍스트가 수정됨.\n"
"계속 이런 변경 내용을 삭제합니다."
-msgid "In se&lection"
-msgstr "선택 영역(&L)"
+msgid "Cancel"
+msgstr "취소"
-msgid "&Find all"
-msgstr "모두 찾기(&F)"
+msgid "Collect completions"
+msgstr "완성 정보 수집"
-msgid "Enter replacement string:"
-msgstr "대체 문자열 입력:"
+msgid "NoName"
+msgstr "이름없습니다"
-msgid "Replace with:"
-msgstr "바꾸기:"
+msgid "Save macro"
+msgstr "매크로 저장"
-msgid "&Replace"
-msgstr "바꾸기(&R)"
+msgid "Press the macro's new hotkey:"
+msgstr "매크로의 새 단축키 누르기:"
-msgid "A&ll"
-msgstr "모두(&L)"
+msgid "Delete macro"
+msgstr "매크로 삭제"
-msgid "&Skip"
-msgstr "건너뛰기(&S)"
+msgid "Press macro hotkey:"
+msgstr "매크로 단축키 누르기:"
-msgid "Confirm replace"
-msgstr "바꾸기 확인"
+msgid "Macro not deleted"
+msgstr "매크로가 삭제되지 않음"
-msgid "Cancel"
-msgstr "취소"
+msgid "Repeat last commands"
+msgstr "마지막 명령어 반복"
-msgid "NoName"
-msgstr "이름없음"
+msgid "Repeat times:"
+msgstr "반복 횟수:"
msgid "&Open file..."
msgstr "파일 열기(&O)..."
@@ -1417,7 +1336,7 @@
msgstr "표시 전환(&G)"
msgid "&Mark columns"
-msgstr "행 표시(&M)"
+msgstr "열 표시(&M)"
msgid "Mark &all"
msgstr "모두 표시(&A)"
@@ -1459,16 +1378,16 @@
msgstr "바꾸기(&R)..."
msgid "&Toggle bookmark"
-msgstr "북마크 전환(&T)"
+msgstr "바로찾기 전환(&T)"
msgid "&Next bookmark"
-msgstr "다음 북마크(&N)"
+msgstr "다음 바로찾기(&N)"
msgid "&Prev bookmark"
-msgstr "이전 북마크(&P)"
+msgstr "이전 바로찾기(&P)"
msgid "&Flush bookmarks"
-msgstr "북마크 정리(&F)"
+msgstr "바로찾기 갱신(&F)"
msgid "&Go to line..."
msgstr "행으로 이동(&G)..."
@@ -1531,10 +1450,10 @@
msgstr "정렬(&S)..."
msgid "&Paste output of..."
-msgstr "출력 붙여 넣기(&P)..."
+msgstr "출력 붙여넣기(&P)..."
msgid "&External formatter"
-msgstr "기타 포맷도구(&E)"
+msgstr "확장 포맷도구(&E)"
msgid "&Move"
msgstr "이동(&M)"
@@ -1597,7 +1516,7 @@
msgstr "옵션(&O)"
msgid "&None"
-msgstr "없음(&N)"
+msgstr "없습니다(&N)"
msgid "&Dynamic paragraphing"
msgstr "동적 분할(&D)"
@@ -1662,6 +1581,45 @@
msgid "Editor options"
msgstr "편집기 옵션"
+msgid "In se&lection"
+msgstr "선택 영역(&L)"
+
+msgid "&Find all"
+msgstr "모두 찾기(&F)"
+
+msgid "Enter replacement string:"
+msgstr "대체 문자열 입력:"
+
+msgid "Replace"
+msgstr "바꾸기"
+
+msgid "Replace with:"
+msgstr "바꾸기:"
+
+msgid "&Replace"
+msgstr "바꾸기(&R)"
+
+msgid "A&ll"
+msgstr "모두(&L)"
+
+msgid "&Skip"
+msgstr "건너뛰기(&S)"
+
+msgid "Confirm replace"
+msgstr "바꾸기 확인"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "%s 검색중: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "%s 검색중"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld 교체"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1669,8 +1627,8 @@
"사용자 친화적인 텍스트 편집기\n"
"미드나잇 커맨더를 위해 작성됨."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 자유 소프트웨어 재단"
msgid "About"
msgstr "소개"
@@ -1789,6 +1747,15 @@
msgid "Select language"
msgstr "언어 선택"
+msgid "Choose syntax highlighting"
+msgstr "구문 강조 표시 선택"
+
+msgid "< Auto >"
+msgstr "< 자동 >"
+
+msgid "< Reload Current Syntax >"
+msgstr "<현재 구문 새로 고침>"
+
msgid "Load syntax file"
msgstr "구문 파일 불러오기"
@@ -1797,7 +1764,7 @@
"Cannot open file %s\n"
"%s"
msgstr ""
-"%s 파일을 열 수 없음\n"
+"%s 파일을 열 수 없습니다\n"
"%s"
#, c-format
@@ -1810,13 +1777,13 @@
"deleted your working directory, or given yourself\n"
"extra access permissions with the \"su\" command?"
msgstr ""
-"커맨더는 하위쉘이 요구하는 디렉토리로 변경할 수\n"
-"없습니다. 작업 디렉토리를 삭제했거나 \"su\" 명령으로\n"
+"커맨더는 하위쉘이 요구하는 디렉터리로 변경할 수\n"
+"없습니다. 작업 디렉터리를 삭제했거나 \"su\" 명령으로\n"
"추가 액세스 권한을 부여했습니까?"
#, c-format
msgid "Cannot fetch a local copy of %s"
-msgstr "%s의 로컬 복사본을 가져올 수 없음"
+msgstr "%s의 로컬 복사본을 가져올 수 없습니다"
msgid "The shell is already running a command"
msgstr "셸이 이미 명령을 실행하고 있음"
@@ -1826,7 +1793,7 @@
"the subshell cannot be toggled."
msgstr ""
"xterm 또는 Linux 콘솔이 아님;\n"
-"subshell은 토글할 수 없습니다."
+"서브쉘은 토글할 수 없습니다."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "미드나잇 커맨더로 돌아가려면 'exit'를 입력하십시오."
@@ -1864,7 +1831,7 @@
"Cannot chmod \"%s\"\n"
"%s"
msgstr ""
-"\"%s\"을(를) chmod할 수 없음\n"
+"\"%s\"을(를) chmod할 수 없습니다\n"
"%s"
msgid "&Ignore"
@@ -1881,7 +1848,7 @@
"Cannot chown \"%s\"\n"
"%s"
msgstr ""
-"\"%s\"을(를) 선택할 수 없음\n"
+"\"%s\"을(를) 선택할 수 없습니다\n"
"%s"
msgid "< Default >"
@@ -1921,7 +1888,7 @@
msgstr "클래식 진행률 표시줄(&G)"
msgid "Mkdi&r autoname"
-msgstr "디렉토리 만들기 자동이름 지정(&R)"
+msgstr "디렉터리 만들기 자동이름 지정(&R)"
msgid "&Preallocate space"
msgstr "사전 할당 공간(&P)"
@@ -1963,7 +1930,7 @@
msgstr "대시 회전(&A)"
msgid "Cd follows lin&ks"
-msgstr "링크를 따르는 디렉토리 변경(&K)"
+msgstr "링크를 따르는 디렉터리 변경(&K)"
msgid "Sa&fe delete"
msgstr "안전 삭제(&F)"
@@ -1981,7 +1948,7 @@
msgstr "스킨:"
msgid "&Shadows"
-msgstr ""
+msgstr "그림자(&S)"
msgid "Appearance"
msgstr "외형"
@@ -2061,8 +2028,8 @@
"manual reload of the directory. See the man page for\n"
"the details."
msgstr ""
-"빠른 다시 불러오기 옵션을 사용하면 정확한 디렉토리\n"
-"내용이 반영되지 않을 수 있습니다. 이 경우 디렉토리를\n"
+"빠른 다시 불러오기 옵션을 사용하면 정확한 디렉터리\n"
+"내용이 반영되지 않을 수 있습니다. 이 경우 디렉터리를\n"
"수동으로 다시 불러오기해야 합니다. 자세한 내용은\n"
"맨페이지를 참조하십시오."
@@ -2088,7 +2055,7 @@
msgstr "목록 형식"
msgid "Executable &first"
-msgstr "처음 실행(&F)"
+msgstr "실행 파일 우선(&F)"
msgid "&Reverse"
msgstr "반전(&R)"
@@ -2110,10 +2077,10 @@
msgstr "확인|종료(&X)"
msgid "Confirmation|Di&rectory hotlist delete"
-msgstr "확인|디렉토리 단축목록 삭제(&R)"
+msgstr "확인|디렉터리 단축목록 삭제(&R)"
msgid "Confirmation|&History cleanup"
-msgstr "확인 | 기록 청소(&H)"
+msgstr "확인|기록 청소(&H)"
msgid "Confirmation"
msgstr "확인"
@@ -2167,10 +2134,10 @@
msgstr "가상 파일 시스템 설정"
msgid "cd"
-msgstr "디렉토리 변경"
+msgstr "디렉터리 변경"
msgid "Quick cd"
-msgstr "빠른 디렉토리 변경"
+msgstr "빠른 디렉터리 변경"
msgid "Existing filename (filename symlink will point to):"
msgstr "대상 파일 이름 (심볼릭링크 파일이 가리킬 파일):"
@@ -2194,24 +2161,11 @@
msgstr "백그라운드 작업"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s의 비밀번호"
-
-msgid "Domain:"
-msgstr "도메인:"
-
-msgid "Username:"
-msgstr "사용자 이름:"
-
-msgid "SMB authentication"
-msgstr "SMB 인증"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
msgstr ""
-"\"%s\"로 디렉토리 변경할 수 없음\n"
+"\"%s\"로 디렉터리 변경할 수 없습니다\n"
"%s"
msgid "Secure deletion"
@@ -2224,7 +2178,7 @@
msgstr "동기 업데이트"
msgid "Synchronous directory updates"
-msgstr "동기 디렉토리 업데이트"
+msgstr "동기 디렉터리 업데이트"
msgid "Immutable"
msgstr "불변"
@@ -2233,10 +2187,10 @@
msgstr "첨부 만"
msgid "No dump"
-msgstr "덤프 없음"
+msgstr "덤프 없습니다"
msgid "No update atime"
-msgstr "한 번에 업데이트 없음"
+msgstr "한 번에 업데이트 없습니다"
msgid "Compress"
msgstr "압축"
@@ -2257,13 +2211,13 @@
msgstr "저널링된 데이터"
msgid "Indexed directory"
-msgstr "색인된 디렉토리"
+msgstr "색인된 디렉터리"
msgid "No tail merging"
-msgstr "꼬리 병합 없음"
+msgstr "꼬리 병합 없습니다"
msgid "Top of directory hierarchies"
-msgstr "최상위 디렉토리 계층"
+msgstr "최상위 디렉터리 계층"
msgid "Inode uses extents"
msgstr "Inode는 extents를 사용합니다"
@@ -2272,10 +2226,10 @@
msgstr "대용량_파일"
msgid "No COW"
-msgstr "COW 없음"
+msgstr "COW 없습니다"
msgid "Direct access for files"
-msgstr ""
+msgstr "파일에 대한 직접 액세스"
msgid "Casefolded file"
msgstr "대소문자 구분 파일"
@@ -2293,7 +2247,7 @@
msgstr "모두 표시됨(&M)"
msgid "S&et marked"
-msgstr "표시됨 설정(&E)"
+msgstr "표시됨 지정하기(&E)"
msgid "C&lear marked"
msgstr "표시됨 지우기(&L)"
@@ -2306,7 +2260,7 @@
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 속성 변경을 할 수 없음\n"
+"\"%s\" 속성 변경을 할 수 없습니다\n"
"%s"
msgid "Cannot change attributes on non-local filesystems"
@@ -2317,7 +2271,7 @@
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 플래그를 가져올 수 없음\n"
+"\"%s\" 플래그를 가져올 수 없습니다\n"
"%s"
msgid "set &user ID on execution"
@@ -2348,13 +2302,13 @@
msgstr "그룹으로 실행/검색(&T)"
msgid "read &by others"
-msgstr "기타로 읽기(&B)"
+msgstr "다른 사용자로 읽기(&B)"
msgid "wr&ite by others"
-msgstr "기타로 쓰기(&I)"
+msgstr "다른 사용자로 쓰기(&I)"
msgid "execute/searc&h by others"
-msgstr "기타로 실행/검색(&H)"
+msgstr "다른 사용자로 실행/검색(&H)"
msgid "Name:"
msgstr "이름 :"
@@ -2411,20 +2365,14 @@
msgstr "호스트 이름 입력(자세한 내용은 F1):"
msgid "Files tagged, want to cd?"
-msgstr "파일 태그됨, 디렉토리 변경을 하시겠습니까?"
+msgstr "파일 태그됨, 디렉터리 변경을 하시겠습니까?"
msgid "Cannot change directory"
-msgstr "디렉터리를 변경할 수 없음"
-
-msgid "Filter"
-msgstr "필터"
-
-msgid "Set expression for filtering filenames"
-msgstr "파일 이름을 필터링하기 위한 표현식 설정"
+msgstr "디렉터리를 변경할 수 없습니다"
#, c-format
msgid "Link %s to:"
-msgstr "%s에 링크:"
+msgstr "%s 링크 대상:"
msgid "Link"
msgstr "링크"
@@ -2435,11 +2383,11 @@
#, c-format
msgid "symlink: %s"
-msgstr "심링크: %s"
+msgstr "심볼릭링크: %s"
#, c-format
msgid "Cannot chdir to \"%s\""
-msgstr "%s로 디렉토리 변경을 할 수 없음"
+msgstr "%s로 디렉터리 변경을 할 수 없습니다"
msgid "View file"
msgstr "파일 보기"
@@ -2460,7 +2408,7 @@
msgstr "새 디렉터리 만들기"
msgid "Enter directory name:"
-msgstr "디렉토리 이름 입력:"
+msgstr "디렉터리 이름 입력:"
msgid "Extension file edit"
msgstr "파일 확장 편집"
@@ -2478,7 +2426,7 @@
msgstr "어떤 강조표시 파일을 편집 하시겠습니까?"
msgid "Compare directories"
-msgstr "디렉토리 비교"
+msgstr "디렉터리 비교"
msgid "Select compare method:"
msgstr "비교 방법 선택:"
@@ -2505,14 +2453,14 @@
#, c-format
msgid "Symlink '%s' points to:"
-msgstr "'%s' 심링크가 가리키는 위치:"
+msgstr "'%s' 심볼릭링크가 가리키는 위치:"
msgid "Edit symlink"
msgstr "심볼릭링크 편집"
#, c-format
msgid "edit symlink, unable to remove %s: %s"
-msgstr "심볼릭링크 편집, %s을(를) 제거할 수 없음: %s"
+msgstr "심볼릭링크 편집, %s을(를) 제거할 수 없습니다: %s"
#, c-format
msgid "edit symlink: %s"
@@ -2527,9 +2475,6 @@
msgid "Shell link to machine"
msgstr "호스트에 쉘 링크"
-msgid "SMB link to machine"
-msgstr "호스트에 SMB 링크"
-
msgid "Undelete files on an ext2 file system"
msgstr "ext2 파일 시스템에서 파일 삭제 해제"
@@ -2552,10 +2497,10 @@
#, c-format
msgid "Unable to save setup to %s"
-msgstr "%s에 설정을 저장할 수 없음"
+msgstr "%s에 설정을 저장할 수 없습니다"
msgid "Cannot execute commands on non-local filesystems"
-msgstr "로컬이 아닌 파일 시스템에서 명령을 실행할 수 없음"
+msgstr "로컬이 아닌 파일 시스템에서 명령을 실행할 수 없습니다"
msgid "Parameter"
msgstr "매개변수"
@@ -2565,21 +2510,29 @@
"Cannot create temporary command file\n"
"%s"
msgstr ""
-"임시 명령 파일을 생성할 수 없음\n"
+"임시 명령 파일을 생성할 수 없습니다\n"
"%s"
+msgid "Pipe failed"
+msgstr "파이프 실패"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s 파일 오류"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"%smc.ext 파일의 형식이 버전 3.0으로 변경되었습니다. 설치가 실패한 것 같습니"
-"다. 미드나잇 커맨더 패키지에서 새 사본을 가져오세요."
#, c-format
msgid "%s file error"
@@ -2587,29 +2540,27 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"버전 3.0에서는 %s 파일의 형식이 변경되었습니다. %smc.ext에서 복사하거나 쓰기 "
-"방법의 예제로 그 파일을 사용할 수 있습니다."
msgid "DialogTitle|Copy"
-msgstr "대화상자 제목|복사"
+msgstr "대화상자제목|복사"
msgid "DialogTitle|Move"
-msgstr "대화상자 제목|이동"
+msgstr "대화상자제목|이동"
msgid "DialogTitle|Delete"
-msgstr "대화상자 제목|삭제"
+msgstr "대화상자제목|삭제"
msgid "FileOperation|Copy"
-msgstr "파일 작업|복사"
+msgstr "파일작업|복사"
msgid "FileOperation|Move"
-msgstr "파일 작업|이동"
+msgstr "파일작업|이동"
msgid "FileOperation|Delete"
-msgstr "파일 작업|삭제"
+msgstr "파일작업|삭제"
#, no-c-format
msgid "%o %f%n\"%s\"%m"
@@ -2640,7 +2591,7 @@
"Cannot stat hardlink source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 하드링크 소스 파일을 통계할 수 없음\n"
+"\"%s\" 하드링크 소스 파일을 통계할 수 없습니다\n"
"%s"
#, c-format
@@ -2648,19 +2599,19 @@
"Cannot create target hardlink \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 하드링크를 만들 수 없음\n"
+"\"%s\" 대상 하드링크를 만들 수 없습니다\n"
"%s"
#, c-format
msgid "Cannot create target hardlink \"%s\""
-msgstr "\"%s\" 대상 하드링크를 만들 수 없음"
+msgstr "\"%s\" 대상 하드링크를 만들 수 없습니다"
#, c-format
msgid ""
"Cannot read source link \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 소스 링크를 읽을 수 없음\n"
+"\"%s\" 소스 링크를 읽을 수 없습니다\n"
"%s"
msgid ""
@@ -2668,16 +2619,16 @@
"\n"
"Option Stable Symlinks will be disabled"
msgstr ""
-"로컬이 아닌 파일 시스템 간에 안정적인 심링크를 만들 수 없음:\n"
+"로컬이 아닌 파일 시스템 간에 안정적인 심볼릭링크를 만들 수 없습니다:\n"
"\n"
-"옵션 안정 심링크가 사용중지 됩니다."
+"옵션 안정 심볼릭링크가 비활성화 됩니다"
#, c-format
msgid ""
"Cannot create target symlink \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 심링크를 만들 수 없음\n"
+"\"%s\" 대상 심볼릭링크를 만들 수 없습니다\n"
"%s"
#, c-format
@@ -2690,7 +2641,7 @@
"\"%s\"\n"
"와\n"
"\"%s\"\n"
-"는 같은 디렉토리임"
+"는 같은 디렉터리임"
#, c-format
msgid ""
@@ -2726,14 +2677,14 @@
"다시 삭제하시겠습니까?"
msgid "Non&e"
-msgstr "없음(&E)"
+msgstr "없습니다(&E)"
#, c-format
msgid ""
"Cannot remove file \"%s\"\n"
"%s"
msgstr ""
-"%s 파일을 제거할 수 없음\n"
+"%s 파일을 제거할 수 없습니다\n"
"%s"
#, c-format
@@ -2741,19 +2692,19 @@
"Cannot stat file \"%s\"\n"
"%s"
msgstr ""
-"%s 파일을 stat할 수 없음\n"
+"%s 파일을 stat할 수 없습니다\n"
"%s"
#, c-format
msgid "Cannot overwrite directory \"%s\""
-msgstr "%s 디렉터리를 덮어쓸 수 없음"
+msgstr "%s 디렉터리를 덮어쓸 수 없습니다"
#, c-format
msgid ""
"Cannot move file \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-"%s 파일을 \"%s\"로 이동할 수 없음\n"
+"%s 파일을 \"%s\"로 이동할 수 없습니다\n"
"\n"
"%s"
@@ -2762,7 +2713,7 @@
"Cannot remove directory \"%s\"\n"
"%s"
msgstr ""
-"%s 디렉토리를 제거할 수 없음\n"
+"%s 디렉터리를 제거할 수 없습니다\n"
"%s"
#, c-format
@@ -2770,7 +2721,7 @@
"Cannot overwrite directory \"%s\"\n"
"%s"
msgstr ""
-"%s 디렉터리를 덮어쓸 수 없음\n"
+"%s 디렉터리를 덮어쓸 수 없습니다\n"
"%s"
#, c-format
@@ -2778,7 +2729,7 @@
"Cannot overwrite file \"%s\"\n"
"%s"
msgstr ""
-"%s 파일을 덮어쓸 수 없음\n"
+"%s 파일을 덮어쓸 수 없습니다\n"
"%s"
#, c-format
@@ -2786,18 +2737,18 @@
"Cannot move directory \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 디렉토리를 \"%s\"로 이동할 수 없음\n"
+"\"%s\" 디렉터리를 \"%s\"로 이동할 수 없습니다\n"
"%s"
msgid "Cannot operate on \"..\"!"
-msgstr "\"..\"에서 작동할 수 없음!"
+msgstr "\"..\"에서 작동할 수 없습니다!"
#, c-format
msgid ""
"Cannot stat source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 원본 파일을 통계할 수 없음\n"
+"\"%s\" 원본 파일을 통계할 수 없습니다\n"
"%s"
#, c-format
@@ -2805,7 +2756,7 @@
"Cannot create special file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 특수 파일을 만들 수 없음\n"
+"\"%s\" 특수 파일을 만들 수 없습니다\n"
"%s"
#, c-format
@@ -2813,7 +2764,7 @@
"Cannot chown target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 chown 할 수 없음\n"
+"\"%s\" 대상 파일을 chown 할 수 없습니다\n"
"%s"
#, c-format
@@ -2821,7 +2772,7 @@
"Cannot chmod target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 chmod할 수 없음\n"
+"\"%s\" 대상 파일을 chmod할 수 없습니다\n"
"%s"
#, c-format
@@ -2829,7 +2780,7 @@
"Cannot open source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 원본 파일을 열 수 없음\n"
+"\"%s\" 원본 파일을 열 수 없습니다\n"
"%s"
msgid "Reget failed, about to overwrite file"
@@ -2840,7 +2791,7 @@
"Cannot fstat source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 소스 파일을 fstat할 수 없음\n"
+"\"%s\" 소스 파일을 fstat할 수 없습니다\n"
"%s"
#, c-format
@@ -2848,7 +2799,7 @@
"Cannot create target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 생성할 수 없음\n"
+"\"%s\" 대상 파일을 생성할 수 없습니다\n"
"%s"
#, c-format
@@ -2856,7 +2807,7 @@
"Cannot fstat target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 fstat할 수 없음\n"
+"\"%s\" 대상 파일을 fstat할 수 없습니다\n"
"%s"
#, c-format
@@ -2864,7 +2815,7 @@
"Cannot preallocate space for target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일에 대한 공간을 사전 할당할 수 없음\n"
+"\"%s\" 대상 파일에 대한 공간을 사전 할당할 수 없습니다\n"
"%s"
#, c-format
@@ -2872,7 +2823,7 @@
"Cannot read source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 소스 파일를 읽을 수 없음\n"
+"\"%s\" 소스 파일를 읽을 수 없습니다\n"
"%s"
#, c-format
@@ -2880,18 +2831,27 @@
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 쓸 수 없음\n"
+"\"%s\" 대상 파일을 쓸 수 없습니다\n"
"%s"
msgid "(stalled)"
msgstr "(지연됨)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "보존(&K)"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 원본 파일을 닫을 수 없음\n"
+"\"%s\" 원본 파일을 닫을 수 없습니다\n"
"%s"
#, c-format
@@ -2899,21 +2859,15 @@
"Cannot close target file \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 파일을 닫을 수 없음\n"
+"\"%s\" 대상 파일을 닫을 수 없습니다\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "불완전한 파일이 검색되었습니다. 파일을 보존할까요?"
-
-msgid "&Keep"
-msgstr "보존(&K)"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 소스 디렉토리를 stat할 수 없음\n"
+"\"%s\" 소스 디렉터리를 stat할 수 없습니다\n"
"%s"
#, c-format
@@ -2929,7 +2883,7 @@
"Cannot copy cyclic symbolic link\n"
"\"%s\""
msgstr ""
-"순환 심볼릭 링크를 복사할 수 없음\n"
+"순환 심볼릭 링크를 복사할 수 없습니다\n"
"\"%s\""
#, c-format
@@ -2937,7 +2891,7 @@
"Destination \"%s\" must be a directory\n"
"%s"
msgstr ""
-"\"%s\" 대상은 디렉토리여야 함\n"
+"\"%s\" 대상은 디렉터리여야 함\n"
"%s"
#, c-format
@@ -2945,7 +2899,7 @@
"Cannot create target directory \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 디렉토리를 생성할 수 없음\n"
+"\"%s\" 대상 디렉터리를 생성할 수 없습니다\n"
"%s"
#, c-format
@@ -2953,12 +2907,12 @@
"Cannot chown target directory \"%s\"\n"
"%s"
msgstr ""
-"\"%s\" 대상 디렉토리를 선택할 수 없음\n"
+"\"%s\" 대상 디렉터리를 선택할 수 없습니다\n"
"%s"
#, c-format
msgid "Directories: %zu, total size: %s"
-msgstr "디렉토리: %zu, 전체 크기: %s"
+msgstr "디렉터리: %zu, 전체 크기: %s"
msgid "Sorry, I could not put the job in background"
msgstr "죄송합니다, 백그라운드에서 작업을 넣을 수 없습니다"
@@ -3026,8 +2980,8 @@
msgstr "백그라운드 프로세스: 파일 존재"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "처리된 파일: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3054,8 +3008,8 @@
msgstr " 전체: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " 전체: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "원본"
@@ -3079,10 +3033,10 @@
msgstr "??????????????영역 속성(&A)"
msgid "Di&ve into subdir if exists"
-msgstr "존재한다면 하위 디렉토리로 이동(&V)"
+msgstr "존재한다면 하위 디렉터리로 이동(&V)"
msgid "&Stable symlinks"
-msgstr "안정적인 심링크(&S)"
+msgstr "안정적인 심볼릭링크(&S)"
msgid "&Background"
msgstr "백그라운드(&B)"
@@ -3107,7 +3061,7 @@
msgstr "목록 형식(&L)..."
msgid "&Sort order..."
-msgstr "정렬 순서(&S)..."
+msgstr ""
msgid "&Filter..."
msgstr "필터(&F)..."
@@ -3121,11 +3075,8 @@
msgid "S&hell link..."
msgstr "쉘 링크(&H)..."
-msgid "S&FTP link..."
-msgstr "SFTP 링크(&F)..."
-
-msgid "SM&B link..."
-msgstr "SMB 링크(&B)..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "패널 크기조정"
@@ -3146,19 +3097,19 @@
msgstr "복사(&C)"
msgid "C&hmod"
-msgstr "파일 사용 권한 변경(&H)"
+msgstr "파일/디렉터리 권한 변경(&H)"
msgid "&Link"
msgstr "링크(&L)"
msgid "&Symlink"
-msgstr "심링크(&S)"
+msgstr "심볼릭링크(&S)"
msgid "Relative symlin&k"
-msgstr "상대 심링크(&K)"
+msgstr "상대 심볼릭링크(&K)"
msgid "Edit s&ymlink"
-msgstr "심링크 편집(&Y)"
+msgstr "심볼릭링크 편집(&Y)"
msgid "Ch&own"
msgstr "파일 소유자 변경 (&O)"
@@ -3173,10 +3124,10 @@
msgstr "이름변경/이동(&R)"
msgid "&Mkdir"
-msgstr "디렉토리 만들기(&M)"
+msgstr "&디렉생성"
msgid "&Quick cd"
-msgstr "빠른 디렉토리 변경(&Q)"
+msgstr "빠른 디렉터리 변경(&Q)"
msgid "Select &group"
msgstr "그룹 선택(&G)"
@@ -3212,7 +3163,7 @@
msgstr "파일 비교(&O)"
msgid "E&xternal panelize"
-msgstr "기타 패널 크기조정(&X)"
+msgstr "확장 패널크기(&X)"
msgid "Show directory s&izes"
msgstr "디렉터리 크기 보기(&I)"
@@ -3307,7 +3258,7 @@
msgstr "버튼바|이름변경/이동"
msgid "ButtonBar|Mkdir"
-msgstr "버튼바|디렉만들기"
+msgstr "버튼바|디렉생성"
msgid "&Chdir"
msgstr "디렉터리 이동(&C)"
@@ -3337,6 +3288,9 @@
msgid "&Find recursively"
msgstr "반복적으로 찾기(&F)"
+msgid "Follow s&ymlinks"
+msgstr "심볼릭링크 따라가기(&Y)"
+
msgid "S&kip hidden"
msgstr "건너뛰기 숨기기(&K)"
@@ -3374,7 +3328,7 @@
#, c-format
msgid "Finished (ignored %zu directory)"
msgid_plural "Finished (ignored %zu directories)"
-msgstr[0] "완료됨 (지정된 %zu 디렉토리)"
+msgstr[0] "완료됨 (지정된 %zu 디렉터리)"
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
@@ -3443,7 +3397,7 @@
msgstr "새 단축목록 항목"
msgid "Directory label:"
-msgstr "디렉토리 레이블:"
+msgstr "디렉터리 레이블:"
msgid "Directory path:"
msgstr "디렉터리 경로:"
@@ -3474,7 +3428,7 @@
"MC was unable to write %s file,\n"
"your old hotlist entries were not deleted"
msgstr ""
-"MC가 %s 파일을 쓸 수 없음,\n"
+"MC가 %s 파일을 쓸 수 없습니다,\n"
"이전 단축목록 항목이 삭제되지 않음"
#, c-format
@@ -3493,24 +3447,24 @@
msgstr "파일: %s"
msgid "No node information"
-msgstr "노드 정보 없음"
+msgstr "노드 정보 없습니다"
msgid "Free nodes:"
msgstr "사용 가능한 노드:"
msgid "No space information"
-msgstr "공간 정보 없음"
+msgstr "공간 정보 없습니다"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "사용 가능한 공간: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
msgstr "유형: %s"
msgid "non-local vfs"
-msgstr "로컬이 아닌 vfs"
+msgstr "원격 vfs"
#, c-format
msgid "Device: %s"
@@ -3562,7 +3516,7 @@
msgstr "속성: %s"
msgid "Attributes: unavailable"
-msgstr "속성: 사용할 수 없음"
+msgstr "속성: 사용할 수 없습니다"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3582,7 +3536,7 @@
msgstr "명령 프롬프트(&P)"
msgid "&Keybar visible"
-msgstr "단추모음 보이기(&K)"
+msgstr "펑션키 보이기(&K)"
msgid "H&intbar visible"
msgstr "힌트바 보이기(&I)"
@@ -3711,7 +3665,7 @@
msgstr "[dev]"
msgid "UP--DIR"
-msgstr "상위 디렉토리"
+msgstr "상위 디렉터리"
msgid "SYMLINK"
msgstr "심볼릭링크"
@@ -3745,6 +3699,9 @@
msgid "Unselect"
msgstr "선택 해제"
+msgid "Filter"
+msgstr "필터"
+
msgid "Do you really want to execute?"
msgstr "정말로 실행하시겠습니까?"
@@ -3758,7 +3715,7 @@
msgstr "새 항목 추가(&A)"
msgid "External panelize"
-msgstr "기타 패널 크기조정"
+msgstr "확장 패널크기"
msgid "Other command"
msgstr "기타 명령어"
@@ -3767,19 +3724,31 @@
msgstr "명령어"
msgid "Add to external panelize"
-msgstr "기타 패널 크기조정에 추가"
+msgstr "확장 패널크기에 추가"
msgid "Enter command label:"
msgstr "명령어 레이블 입력:"
-msgid "Cannot invoke command."
-msgstr "명령을 호출할 수 없음."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"확장 패널크기:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "파이프 닫기 실패"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"확장 패널크기:\n"
+"하위 프로세스의 stdout에서 데이터를 읽을 수 없습니다:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
-msgstr "로컬이 아닌 디렉토리에서 기타 패널 크기조정을 실행할 수 없음"
+msgstr "로컬이 아닌 디렉터리에서 확장 패널크기를 실행할 수 없습니다"
msgid "Modified git files"
msgstr "수정된 git 파일"
@@ -3798,23 +3767,23 @@
"Cannot open the %s file for writing:\n"
"%s\n"
msgstr ""
-"쓰기 위한 파일 %s을(를) 열 수 없음:\n"
+"쓰기 위한 파일 %s을(를) 열 수 없습니다:\n"
"%s\n"
#, c-format
msgid "Copy \"%s\" directory to:"
-msgstr "%s 디렉터리를 다음 위치에 복사:"
+msgstr "%s 디렉터리를 다음 위치로 복사:"
#, c-format
msgid "Move \"%s\" directory to:"
-msgstr "%s 디렉토리를 다음으로 이동:"
+msgstr "%s 디렉터리를 다음 위치로 이동:"
#, c-format
msgid ""
"Cannot stat the destination\n"
"%s"
msgstr ""
-"대상 정보를 볼 수 없음\n"
+"대상 정보를 볼 수 없습니다\n"
"%s"
#, c-format
@@ -3834,14 +3803,14 @@
msgstr "버튼바|잊기"
msgid "ButtonBar|Rmdir"
-msgstr "버튼바|디렉토리 삭제"
+msgstr "버튼바|디렉제거"
#, c-format
msgid ""
"Cannot write to the %s file:\n"
"%s\n"
msgstr ""
-"%s 파일에 쓸 수 없음:\n"
+"%s 파일에 쓸 수 없습니다:\n"
"%s\n"
msgid "Help file format error\n"
@@ -3852,7 +3821,7 @@
#, c-format
msgid "Cannot find node %s in help file"
-msgstr "도움말 파일에서 %s 노드를 찾을 수 없음"
+msgstr "도움말 파일에서 %s 노드를 찾을 수 없습니다"
msgid "Help"
msgstr "도움말"
@@ -3890,7 +3859,7 @@
"마찬가지로 기다리십시오."
msgid "Cannot accept this key"
-msgstr "이 키를 수락할 수 없음"
+msgstr "이 키를 수락할 수 없습니다"
#, c-format
msgid "You have entered \"%s\""
@@ -3935,7 +3904,7 @@
"%s\n"
msgid "Home directory path is not absolute"
-msgstr "홈 디렉토리 경로가 절대적이지 않음"
+msgstr "홈 디렉터리 경로가 절대적이지 않음"
msgid ""
"GNU Midnight Commander\n"
@@ -3973,34 +3942,34 @@
"Cannot save file %s:\n"
"%s"
msgstr ""
-"파일을 저장할 수 없음%s:\n"
+"파일을 저장할 수 없습니다%s:\n"
"%s"
#, c-format
msgid "Cannot open named pipe %s\n"
-msgstr "명명된 %s 파이프를 열 수 없음\n"
+msgstr "명명된 %s 파이프를 열 수 없습니다\n"
msgid "The shell is still active. Quit anyway?"
msgstr "셸이 아직 활성 상태입니다. 그래도 끝낼까요?"
#, c-format
msgid "Warning: Cannot change to %s.\n"
-msgstr "경고: %s으(로) 변경할 수 없음.\n"
+msgstr "경고: %s으(로) 변경할 수 없습니다.\n"
msgid "With builtin Editor and Aspell support"
-msgstr "기본 제공 편집기 및 Aspell 지원 포함"
+msgstr "내장 편집기 및 Aspell 지원 포함"
msgid "With builtin Editor"
-msgstr "기본 제공 편집기 포함"
+msgstr "내장 편집기 포함"
msgid "With optional subshell support"
-msgstr "subshell 지원 옵션 포함"
+msgstr "선택적 서브쉘 지원 포함"
msgid "With subshell support as default"
-msgstr "기본 설정으로 subshell 지원 포함"
+msgstr "기본적으로 서브쉘 지원 포함"
msgid "With support for background operations"
-msgstr "백그라운드 작업용 지원 포함"
+msgstr "백그라운드 작업 지원 포함"
msgid "With mouse support on xterm and Linux console"
msgstr "xterm 및 Linux 콘솔에서 마우스 지원 포함"
@@ -4009,7 +3978,7 @@
msgstr "xterm에서 마우스 지원 포함"
msgid "With support for X11 events"
-msgstr "X11 이벤트에 대한 지원 포함"
+msgstr "X11 이벤트 지원 포함"
msgid "With internationalization support"
msgstr "국제화 지원 포함"
@@ -4042,6 +4011,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "ncursesw로 구축 (알 수 없는 버전)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "libssh2 %d.%d.%d로 빌드\n"
+
msgid "Virtual File Systems:"
msgstr "가상 파일 시스템:"
@@ -4049,7 +4022,7 @@
msgstr "데이터 유형:"
msgid "Home directory:"
-msgstr "홈 디렉토리 :"
+msgstr "홈 디렉터리 :"
msgid "Profile root directory:"
msgstr "프로필 루트 디렉터리:"
@@ -4061,7 +4034,7 @@
msgstr "디렉터리 설정:"
msgid "Data directory:"
-msgstr "데이터 디렉토리:"
+msgstr "데이터 디렉터리:"
msgid "File extension handlers:"
msgstr "파일 확장자 처리기:"
@@ -4073,7 +4046,7 @@
msgstr "사용자 데이터"
msgid "Cache directory:"
-msgstr "캐시 디렉토리:"
+msgstr "캐시 디렉터리:"
msgid "Debug"
msgstr "디버그"
@@ -4106,15 +4079,15 @@
#, c-format
msgid "The %%var macro has no default"
-msgstr "%%var 매크로에 기본값이 없음"
+msgstr "%%var 매크로에 기본값이 없습니다"
#, c-format
msgid "The %%var macro has no variable"
-msgstr "%%var 매크로에 변수가 없음"
+msgstr "%%var 매크로에 변수가 없습니다"
#, c-format
msgid "No suitable entries found in %s"
-msgstr "%s에서 해당 항목을 찾을 수 없음"
+msgstr "%s에서 해당 항목을 찾을 수 없습니다"
msgid "User menu"
msgstr "사용자 메뉴"
@@ -4124,7 +4097,7 @@
"Cannot open cpio archive\n"
"%s"
msgstr ""
-"cpio 압축파일을 열 수 없음\n"
+"cpio 압축파일을 열 수 없습니다\n"
"%s"
#, c-format
@@ -4167,20 +4140,31 @@
"%s\n"
"파일의 예기치 않은 끝"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "잘못된 tar 압축파일"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s 압축파일을 열 수 없음\n"
+"%s 압축파일을 열 수 없습니다\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "불완전한 extfs 압축파일"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"EXTFS 가상 파일 시스템:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
-msgstr "경고: %s 디렉토리를 열 수 없음\n"
+msgstr "경고: %s 디렉터리를 열 수 없습니다\n"
#, c-format
msgid "fish: Disconnecting from %s"
@@ -4197,13 +4181,13 @@
msgstr "fish: %s에 대한 비밀번호가 필요함"
msgid "fish: Sending password..."
-msgstr "fish: 비밀번호 전송중..."
+msgstr "fish: 비밀번호 보내기..."
msgid "fish: Sending initial line..."
-msgstr "fish: 초기화 라인 전송중..."
+msgstr "fish: 초기화 라인 보내기..."
msgid "fish: Handshaking version..."
-msgstr "fish: 핸드쉐이킹 버전..."
+msgstr "fish: 주고받기 버전..."
msgid "fish: Getting host info..."
msgstr "fish: 호스트 정보 가져오는 중..."
@@ -4214,7 +4198,7 @@
#, c-format
msgid "%s: done."
-msgstr "%s: 완료됨."
+msgstr "%s: 완료."
#, c-format
msgid "%s: failure"
@@ -4222,7 +4206,7 @@
#, c-format
msgid "fish: store %s: sending command..."
-msgstr "fish: %s 저장: 명령 전송 중..."
+msgstr "fish: %s 저장: 명령 보내기..."
msgid "fish: Local read failed, sending zeros"
msgstr "fish: 로컬 읽기 실패, 0 보내기"
@@ -4251,7 +4235,7 @@
msgstr "ftpfs: 로그인 이름 보내기"
msgid "ftpfs: sending user password"
-msgstr "ftpfs: 사용자 비밀번호 전송"
+msgstr "ftpfs: 사용자 비밀번호 보내기"
#, c-format
msgid "FTP: Account required for user %s"
@@ -4261,7 +4245,7 @@
msgstr "계정:"
msgid "ftpfs: sending user account"
-msgstr "ftpfs: 사용자 계정 전송"
+msgstr "ftpfs: 사용자 계정 보내기"
msgid "ftpfs: logged in"
msgstr "ftpfs: 로그인됨"
@@ -4292,15 +4276,30 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "재시도 대기 중... %d(Control-G가 취소됨)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: 잘못된 주소 패밀리"
#, c-format
msgid "ftpfs: could not create socket: %s"
-msgstr "ftpfs: 소켓을 만들 수 없음: %s"
+msgstr "ftpfs: 소켓을 만들 수 없습니다: %s"
msgid "ftpfs: could not setup passive mode"
-msgstr "ftpfs: 패시브 모드를 설정할 수 없음"
+msgstr "ftpfs: 패시브 모드를 설정할 수 없습니다"
msgid "ftpfs: aborting transfer."
msgstr "ftpfs: 전송 중단."
@@ -4316,23 +4315,23 @@
msgstr "ftpfs: CWD 실패."
msgid "ftpfs: couldn't resolve symlink"
-msgstr "ftpfs: 심링크를 확인할 수 없음"
+msgstr "ftpfs: 심볼릭링크를 확인할 수 없습니다"
msgid "Resolving symlink..."
-msgstr "심링크 해결 중..."
+msgstr "심볼릭링크 해결 중..."
#, c-format
msgid "ftpfs: Reading FTP directory %s... %s%s"
-msgstr "ftpfs: %s FTP 디렉토리 읽기... %s%s"
+msgstr "ftpfs: %s FTP 디렉터리 읽는 중... %s%s"
msgid "(strict rfc959)"
msgstr "(엄격하게 rfc959를 따름)"
msgid "(chdir first)"
-msgstr "(먼저 디렉토리 변경)"
+msgstr "(먼저 디렉터리 변경)"
msgid "ftpfs: failed; nowhere to fallback to"
-msgstr "ftpfs: 실패함, 어디에서도 fallback할 수 없음"
+msgstr "ftpfs: 실패함, 어디에서도 fallback할 수 없습니다"
msgid "ftpfs: storing file"
msgstr "ftpfs: 파일 저장중"
@@ -4345,8 +4344,16 @@
"비밀번호 또는 올바른 권한 제거"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"SFS 가상 파일 시스템:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
-msgstr "%s: 경고: %s 파일을 찾을 수 없음\n"
+msgstr "%s: 경고: %s 파일을 찾을 수 없습니다\n"
#, c-format
msgid ""
@@ -4369,7 +4376,7 @@
msgstr "sftp: %s을(를) 읽는 동안 오류가 발생함: %s"
msgid "sftp: Unable to get current user name."
-msgstr "sftp: 현재 사용자 이름을 가져올 수 없음."
+msgstr "sftp: 현재 사용자 이름을 가져올 수 없습니다."
msgid "sftp: Invalid host name."
msgstr "sftp: 잘못된 호스트 이름."
@@ -4378,6 +4385,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr "sftp: 원격 호스트 IP 주소를 텍스트 형식으로 변환하지 못했습니다"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: %s에 연결"
@@ -4389,6 +4399,62 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: 서버 연결 실패: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: 지원되지 않는 유형의 호스트 키를 찾았습니다: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: 호스트 키 유형을 알 수 없습니다:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"알려진 호스트 목록에\n"
+"%s (%s)\n"
+"영구적으로 추가되었습니다."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: 원격 호스트 키를 가져올 수 없습니다"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr "sftp: 지원되지 않는 키 유형, 원격 호스트 키를 확인할 수 없습니다"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: 호스트 키 지문 해시를 계산할 수 없습니다"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"%s (%s)\n"
+"호스트의 신뢰성을 확인할 수 없습니다!\n"
+"%s 키 지문 해시는\n"
+"SHA1:%s 입니다.\n"
+"알려진 호스트 목록에 추가하고 계속 연결하시겠습니까?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"는 알려진 호스트 목록에 있지만\n"
+"키가 일치하지 않습니다! 이것은 MITM 공격일 수 있습니다!\n"
+"알려진 호스트 목록에 추가하고 계속 연결하시겠습니까?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: 호스트 키를 확인하지 못했습니다"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: %s에 대한 암호 입력 "
@@ -4403,11 +4469,11 @@
msgid "sftp: Password is empty."
msgstr "sftp: 비밀번호가 비어 있음."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: SSH 세션 설정 실패"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: SSH 세션을 설정하지 못했습니다"
msgid "sftp: No file handler data present for reading file"
-msgstr "sftp: 파일을 읽기 위한 파일 처리기 데이터가 없음"
+msgstr "sftp: 파일을 읽기 위한 파일 처리기 데이터가 없습니다"
#, c-format
msgid "sftp: socket error: %s"
@@ -4421,38 +4487,11 @@
msgstr "sftp: 목록 작성 완료."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "%s에 다시 연결 실패"
-
-msgid "Authentication failed"
-msgstr "인증 실패"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "%s 디렉토리 %s을(를) 만드는 중"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "%s 디렉토리 %s을(를) 제거하는 중 오류 발생"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s 원격 파일 %s 열기"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s 원격 파일 %s 제거"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "파일 이름 변경 중 %s\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
msgstr ""
-"tar 압축파일을 열 수 없음\n"
+"tar 압축파일을 열 수 없습니다\n"
"%s"
msgid "Inconsistent tar archive"
@@ -4495,7 +4534,7 @@
msgstr "ext2_block_iterate %d을(를) 호출하는 중"
msgid "no more memory while reallocating array"
-msgstr "배열을 재할당하는 동안 메모리가 더 이상 없음"
+msgstr "배열을 재할당하는 동안 메모리가 더 이상 없습니다"
#, c-format
msgid "while doing inode scan %d"
@@ -4503,42 +4542,42 @@
#, c-format
msgid "Cannot open file %s"
-msgstr "%s 파일을 열 수 없음"
+msgstr "%s 파일을 열 수 없습니다"
msgid "undelfs: reading inode bitmap..."
-msgstr "unelfs: inode 비트맵 읽기..."
+msgstr "unelfs: inode 비트맵 읽는 중..."
#, c-format
msgid ""
"Cannot load inode bitmap from:\n"
"%s"
msgstr ""
-"다음 위치에서 inode 비트맵을 로드할 수 없음:\n"
+"다음 위치에서 inode 비트맵을 로드할 수 없습니다:\n"
"%s"
msgid "undelfs: reading block bitmap..."
-msgstr "unelfs: 블록 비트맵 읽기..."
+msgstr "unelfs: 블록 비트맵 읽는 중..."
#, c-format
msgid ""
"Cannot load block bitmap from:\n"
"%s"
msgstr ""
-"블록 비트맵을 로드할 수 없음:\n"
+"블록 비트맵을 로드할 수 없습니다:\n"
"%s"
msgid "vfs_info is not fs!"
msgstr "vfs_info는 파일 시스템이 아닙니다!"
msgid "You have to chdir to extract files first"
-msgstr "먼저 파일을 추출하려면 디렉토리 변경이 필요함."
+msgstr "먼저 파일을 추출하려면 디렉터리 변경이 필요함."
msgid "while iterating over blocks"
msgstr "블록을 반복하는 동안"
#, c-format
msgid "Cannot open file \"%s\""
-msgstr "%s 파일을 열 수 없음"
+msgstr "%s 파일을 열 수 없습니다"
msgid "Ext2lib error"
msgstr "Ext2lib 오류"
@@ -4609,7 +4648,7 @@
"Failed to read data from child stdout:\n"
"%s"
msgstr ""
-"하위 프로세스의 표준 출력에서 데이터를 읽을 수 없음:\n"
+"하위 프로세스의 stdout에서 데이터를 읽을 수 없습니다:\n"
"%s"
#, c-format
@@ -4627,7 +4666,7 @@
"Cannot save file:\n"
"%s"
msgstr ""
-"파일을 저장할 수 없음:\n"
+"파일을 저장할 수 없습니다:\n"
"%s"
msgid "View: "
@@ -4638,18 +4677,18 @@
"Cannot open \"%s\"\n"
"%s"
msgstr ""
-"%s을(를) 열 수 없음\n"
+"%s을(를) 열 수 없습니다\n"
"%s"
msgid "Cannot view: not a regular file"
-msgstr "볼 수 없음: 일반 파일이 아님"
+msgstr "볼 수 없습니다: 일반 파일이 아님"
#, c-format
msgid ""
"Cannot open \"%s\" in parse mode\n"
"%s"
msgstr ""
-"%s을(를) 구문 모드에서 열 수 없음\n"
+"%s을(를) 구문 모드에서 열 수 없습니다\n"
"%s"
msgid "Search done"
@@ -4659,4 +4698,4 @@
msgstr "처음부터 계속하시겠습니까?"
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
-msgstr "/ftp://some.host/editme.txt의 로컬 복사본을 가져올 수 없음"
+msgstr "/ftp://some.host/editme.txt의 로컬 복사본을 가져올 수 없습니다"
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/kw.po
^
|
@@ -0,0 +1,4434 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the mc package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Midnight Commander\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Cornish (http://www.transifex.com/mc/mc/language/kw/)\n"
+"Language: kw\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n == 0 ? 0 : n == 1 ? 1 : (n % 100 == 2 || "
+"n % 100 == 22 || n % 100 == 42 || n % 100 == 62 || n % 100 == 82) || n % "
+"1000 == 0 && (n % 100000 >= 1000 && n % 100000 <= 20000 || n % 100000 == "
+"40000 || n % 100000 == 60000 || n % 100000 == 80000) || n != 0 && n % "
+"1000000 == 100000 ? 2 : (n % 100 == 3 || n % 100 == 23 || n % 100 == 43 || n "
+"% 100 == 63 || n % 100 == 83) ? 3 : n != 1 && (n % 100 == 1 || n % 100 == 21 "
+"|| n % 100 == 41 || n % 100 == 61 || n % 100 == 81) ? 4 : 5;\n"
+
+# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+msgid "Warning: cannot load codepages list"
+msgstr ""
+
+msgid "7-bit ASCII"
+msgstr ""
+
+#, c-format
+msgid "Cannot translate from %s to %s"
+msgstr ""
+
+msgid "Event system already initialized"
+msgstr ""
+
+msgid "Failed to initialize event system"
+msgstr ""
+
+msgid "Event system not initialized"
+msgstr ""
+
+msgid "Check input data! Some of parameters are NULL!"
+msgstr ""
+
+#, c-format
+msgid "Unable to create group '%s' for events!"
+msgstr ""
+
+#, c-format
+msgid "Unable to create event '%s'!"
+msgstr ""
+
+#, c-format
+msgid ""
+"File \"%s\" is already being edited.\n"
+"User: %s\n"
+"Process ID: %d"
+msgstr ""
+
+msgid "File locked"
+msgstr ""
+
+msgid "&Grab lock"
+msgstr ""
+
+msgid "&Ignore lock"
+msgstr ""
+
+#, c-format
+msgid "Cannot create %s directory"
+msgstr ""
+
+msgid "FATAL: not a directory:"
+msgstr ""
+
+msgid ""
+"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
+"hex)"
+msgstr ""
+
+msgid "Invalid character"
+msgstr ""
+
+msgid "Unmatched quotes character"
+msgstr ""
+
+#, c-format
+msgid ""
+"Hex pattern error at position %d:\n"
+"%s."
+msgstr ""
+
+msgid "Search string not found"
+msgstr ""
+
+msgid "Not implemented yet"
+msgstr ""
+
+msgid "Num of replace tokens not equal to num of found tokens"
+msgstr ""
+
+#, c-format
+msgid "Invalid token number %d"
+msgstr ""
+
+msgid "Regular expression error"
+msgstr ""
+
+msgid "No&rmal"
+msgstr ""
+
+msgid "Re&gular expression"
+msgstr ""
+
+msgid "He&xadecimal"
+msgstr ""
+
+msgid "Wil&dcard search"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to load '%s' skin.\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to parse '%s' skin.\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to use '%s' skin with true colors support:\n"
+"%s\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to use '%s' skin with 256 colors support\n"
+"on non-256 colors terminal.\n"
+"Default skin has been loaded"
+msgstr ""
+
+msgid "True color not supported with ncurses."
+msgstr ""
+
+msgid "Your terminal doesn't even seem to support 256 colors."
+msgstr ""
+
+msgid "True color not supported in this slang version."
+msgstr ""
+
+msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
+msgstr ""
+
+msgid "Escape"
+msgstr ""
+
+msgid "Function key 1"
+msgstr ""
+
+msgid "Function key 2"
+msgstr ""
+
+msgid "Function key 3"
+msgstr ""
+
+msgid "Function key 4"
+msgstr ""
+
+msgid "Function key 5"
+msgstr ""
+
+msgid "Function key 6"
+msgstr ""
+
+msgid "Function key 7"
+msgstr ""
+
+msgid "Function key 8"
+msgstr ""
+
+msgid "Function key 9"
+msgstr ""
+
+msgid "Function key 10"
+msgstr ""
+
+msgid "Function key 11"
+msgstr ""
+
+msgid "Function key 12"
+msgstr ""
+
+msgid "Function key 13"
+msgstr ""
+
+msgid "Function key 14"
+msgstr ""
+
+msgid "Function key 15"
+msgstr ""
+
+msgid "Function key 16"
+msgstr ""
+
+msgid "Function key 17"
+msgstr ""
+
+msgid "Function key 18"
+msgstr ""
+
+msgid "Function key 19"
+msgstr ""
+
+msgid "Function key 20"
+msgstr ""
+
+msgid "Completion/M-tab"
+msgstr ""
+
+msgid "BackTab/S-tab"
+msgstr ""
+
+msgid "Backspace"
+msgstr ""
+
+msgid "Up arrow"
+msgstr ""
+
+msgid "Down arrow"
+msgstr ""
+
+msgid "Left arrow"
+msgstr ""
+
+msgid "Right arrow"
+msgstr ""
+
+msgid "Insert"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+msgid "Home"
+msgstr ""
+
+msgid "End key"
+msgstr ""
+
+msgid "Page Up"
+msgstr ""
+
+msgid "Page Down"
+msgstr ""
+
+msgid "/ on keypad"
+msgstr ""
+
+msgid "* on keypad"
+msgstr ""
+
+msgid "- on keypad"
+msgstr ""
+
+msgid "+ on keypad"
+msgstr ""
+
+msgid "Left arrow keypad"
+msgstr ""
+
+msgid "Right arrow keypad"
+msgstr ""
+
+msgid "Up arrow keypad"
+msgstr ""
+
+msgid "Down arrow keypad"
+msgstr ""
+
+msgid "Home on keypad"
+msgstr ""
+
+msgid "End on keypad"
+msgstr ""
+
+msgid "Page Down keypad"
+msgstr ""
+
+msgid "Page Up keypad"
+msgstr ""
+
+msgid "Insert on keypad"
+msgstr ""
+
+msgid "Delete on keypad"
+msgstr ""
+
+msgid "Enter on keypad"
+msgstr ""
+
+msgid "Function key 21"
+msgstr ""
+
+msgid "Function key 22"
+msgstr ""
+
+msgid "Function key 23"
+msgstr ""
+
+msgid "Function key 24"
+msgstr ""
+
+msgid "A1 key"
+msgstr ""
+
+msgid "C1 key"
+msgstr ""
+
+msgid "Asterisk"
+msgstr ""
+
+msgid "Minus"
+msgstr ""
+
+msgid "Plus"
+msgstr ""
+
+msgid "Dot"
+msgstr ""
+
+msgid "Less than"
+msgstr ""
+
+msgid "Great than"
+msgstr ""
+
+msgid "Equal"
+msgstr ""
+
+msgid "Comma"
+msgstr ""
+
+msgid "Apostrophe"
+msgstr ""
+
+msgid "Colon"
+msgstr ""
+
+msgid "Semicolon"
+msgstr ""
+
+msgid "Exclamation mark"
+msgstr ""
+
+msgid "Question mark"
+msgstr ""
+
+msgid "Ampersand"
+msgstr ""
+
+msgid "Dollar sign"
+msgstr ""
+
+msgid "Quotation mark"
+msgstr ""
+
+msgid "Percent sign"
+msgstr ""
+
+msgid "Caret"
+msgstr ""
+
+msgid "Tilda"
+msgstr ""
+
+msgid "Prime"
+msgstr ""
+
+msgid "Underline"
+msgstr ""
+
+msgid "Understrike"
+msgstr ""
+
+msgid "Pipe"
+msgstr ""
+
+msgid "Left parenthesis"
+msgstr ""
+
+msgid "Right parenthesis"
+msgstr ""
+
+msgid "Left bracket"
+msgstr ""
+
+msgid "Right bracket"
+msgstr ""
+
+msgid "Left brace"
+msgstr ""
+
+msgid "Right brace"
+msgstr ""
+
+msgid "Enter"
+msgstr ""
+
+msgid "Tab key"
+msgstr ""
+
+msgid "Space key"
+msgstr ""
+
+msgid "Slash key"
+msgstr ""
+
+msgid "Backslash key"
+msgstr ""
+
+msgid "Number sign #"
+msgstr ""
+
+#. TRANSLATORS: Please translate as in "at sign" (@).
+msgid "At sign"
+msgstr ""
+
+msgid "Ctrl"
+msgstr ""
+
+msgid "Alt"
+msgstr ""
+
+msgid "Shift"
+msgstr ""
+
+msgid "The TERM environment variable is unset!\n"
+msgstr ""
+
+msgid "Cannot check SIGWINCH pipe"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot create pipe for SIGWINCH: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Screen size %dx%d is not supported.\n"
+"Check the TERM environment variable.\n"
+msgstr ""
+
+msgid "B"
+msgstr ""
+
+msgid "kB"
+msgstr ""
+
+msgid "KiB"
+msgstr ""
+
+msgid "MB"
+msgstr ""
+
+msgid "MiB"
+msgstr ""
+
+msgid "GB"
+msgstr ""
+
+msgid "GiB"
+msgstr ""
+
+msgid "Cannot create pipe descriptor"
+msgstr ""
+
+msgid "Cannot create pipe streams"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected error in select() reading data from a child process:\n"
+"%s"
+msgstr ""
+
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected error in waitpid():\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Directory cache expired for %s"
+msgstr ""
+
+#, c-format
+msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
+msgstr ""
+
+#, c-format
+msgid "%s: %s: %s %lld bytes transferred"
+msgstr ""
+
+msgid "Starting linear transfer..."
+msgstr ""
+
+msgid "Getting file"
+msgstr ""
+
+msgid "Changes to file lost"
+msgstr ""
+
+#, c-format
+msgid "%s is not a directory\n"
+msgstr ""
+
+#, c-format
+msgid "Directory %s is not owned by you\n"
+msgstr ""
+
+#, c-format
+msgid "Cannot set correct permissions for directory %s\n"
+msgstr ""
+
+#, c-format
+msgid "Cannot create temporary directory %s: %s\n"
+msgstr ""
+
+#, c-format
+msgid "Temporary files will be created in %s\n"
+msgstr ""
+
+#, c-format
+msgid "Temporary files will not be created\n"
+msgstr ""
+
+msgid "Press any key to continue..."
+msgstr ""
+
+msgid "Cannot parse:"
+msgstr ""
+
+msgid "More parsing errors will be ignored."
+msgstr ""
+
+msgid "Internal error:"
+msgstr ""
+
+msgid "Password:"
+msgstr ""
+
+msgid "Screens"
+msgstr ""
+
+msgid "History"
+msgstr ""
+
+#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
+msgid "DialogTitle|History cleanup"
+msgstr ""
+
+msgid "Do you want clean this history?"
+msgstr ""
+
+msgid "&Yes"
+msgstr ""
+
+msgid "&No"
+msgstr ""
+
+msgid "&OK"
+msgstr ""
+
+msgid "&Cancel"
+msgstr ""
+
+msgid "Background process:"
+msgstr ""
+
+msgid "Error"
+msgstr ""
+
+#, c-format
+msgid "%s (%d)"
+msgstr ""
+
+msgid "&Abort"
+msgstr ""
+
+msgid "Displays the current version"
+msgstr ""
+
+msgid "Print data directory"
+msgstr ""
+
+msgid "Print extended info about used data directories"
+msgstr ""
+
+msgid "Print configure options"
+msgstr ""
+
+msgid "Print last working directory to specified file"
+msgstr ""
+
+msgid "<file>"
+msgstr ""
+
+msgid "Enables subshell support (default)"
+msgstr ""
+
+msgid "Disables subshell support"
+msgstr ""
+
+msgid "Log ftp dialog to specified file"
+msgstr ""
+
+msgid "Launches the file viewer on a file"
+msgstr ""
+
+msgid "Edit files"
+msgstr ""
+
+msgid "<file> ..."
+msgstr ""
+
+msgid "Forces xterm features"
+msgstr ""
+
+msgid "Disable X11 support"
+msgstr ""
+
+msgid "Tries to use an old highlight mouse tracking"
+msgstr ""
+
+msgid "Disable mouse support in text version"
+msgstr ""
+
+msgid "Tries to use termcap instead of terminfo"
+msgstr ""
+
+msgid "To run on slow terminals"
+msgstr ""
+
+msgid "Use stickchars to draw"
+msgstr ""
+
+msgid "Resets soft keys on HP terminals"
+msgstr ""
+
+msgid "Load definitions of key bindings from specified file"
+msgstr ""
+
+msgid "Don't load definitions of key bindings from file, use defaults"
+msgstr ""
+
+msgid "Requests to run in black and white"
+msgstr ""
+
+msgid "Request to run in color mode"
+msgstr ""
+
+msgid "Specifies a color configuration"
+msgstr ""
+
+msgid "<string>"
+msgstr ""
+
+msgid "Show mc with specified skin"
+msgstr ""
+
+#. TRANSLATORS: don't translate keywords
+msgid ""
+"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n"
+"\n"
+"{FORE}, {BACK} and {ATTR} can be omitted, and the default will be used\n"
+"\n"
+" Keywords:\n"
+" Global: errors, disabled, reverse, gauge, header\n"
+" input, inputmark, inputunchanged, commandlinemark\n"
+" bbarhotkey, bbarbutton, statusbar\n"
+" File display: normal, selected, marked, markselect\n"
+" Dialog boxes: dnormal, dfocus, dhotnormal, dhotfocus, errdhotnormal,\n"
+" errdhotfocus\n"
+" Menus: menunormal, menuhot, menusel, menuhotsel, menuinactive\n"
+" Popup menus: pmenunormal, pmenusel, pmenutitle\n"
+" Editor: editnormal, editbold, editmarked, editwhitespace,\n"
+" editlinestate, editbg, editframe, editframeactive\n"
+" editframedrag\n"
+" Viewer: viewnormal,viewbold, viewunderline, viewselected\n"
+" Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
+msgstr ""
+
+#. TRANSLATORS: don't translate color names and attributes
+msgid ""
+"Standard Colors:\n"
+" black, gray, red, brightred, green, brightgreen, brown,\n"
+" yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
+" brightcyan, lightgray and white\n"
+"\n"
+"Extended colors, when 256 colors are available:\n"
+" color16 to color255, or rgb000 to rgb555 and gray0 to gray23\n"
+"\n"
+"Attributes:\n"
+" bold, italic, underline, reverse, blink; append more with '+'\n"
+msgstr ""
+
+msgid "Color options"
+msgstr ""
+
+msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
+msgstr ""
+
+msgid "file"
+msgstr ""
+
+msgid "file1 file2"
+msgstr ""
+
+msgid "[this_dir] [other_panel_dir]"
+msgstr ""
+
+msgid ""
+"\n"
+"Please send any bug reports (including the output of 'mc -V')\n"
+"as tickets at www.midnight-commander.org\n"
+msgstr ""
+
+#, c-format
+msgid "GNU Midnight Commander %s\n"
+msgstr ""
+
+msgid "Main options"
+msgstr ""
+
+msgid "Terminal options"
+msgstr ""
+
+msgid "Arguments parse error!"
+msgstr ""
+
+msgid "No arguments given to the viewer."
+msgstr ""
+
+msgid "Two files are required to envoke the diffviewer."
+msgstr ""
+
+msgid "Background protocol error"
+msgstr ""
+
+msgid "Reading failed"
+msgstr ""
+
+msgid "Background process error"
+msgstr ""
+
+msgid "Unknown error in child"
+msgstr ""
+
+msgid "Child died unexpectedly"
+msgstr ""
+
+msgid ""
+"Background process sent us a request for more arguments\n"
+"than we can handle."
+msgstr ""
+
+msgid "&Dismiss"
+msgstr ""
+
+msgid "Enter search string:"
+msgstr ""
+
+msgid "Cas&e sensitive"
+msgstr ""
+
+msgid "&Backwards"
+msgstr ""
+
+msgid "&Whole words"
+msgstr ""
+
+msgid "&All charsets"
+msgstr ""
+
+msgid "Search"
+msgstr ""
+
+msgid "Search is disabled"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary diff file\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create backup file\n"
+"%s%s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary merge file\n"
+"%s"
+msgstr ""
+
+msgid "&Fastest (Assume large files)"
+msgstr ""
+
+msgid "&Minimal (Find a smaller set of change)"
+msgstr ""
+
+msgid "Diff algorithm"
+msgstr ""
+
+msgid "Diff extra options"
+msgstr ""
+
+msgid "&Ignore case"
+msgstr ""
+
+msgid "Ignore tab &expansion"
+msgstr ""
+
+msgid "Ignore &space change"
+msgstr ""
+
+msgid "Ignore all &whitespace"
+msgstr ""
+
+msgid "Strip &trailing carriage return"
+msgstr ""
+
+msgid "Diff Options"
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Edit is disabled"
+msgstr ""
+
+msgid "Goto line (left)"
+msgstr ""
+
+msgid "Goto line (right)"
+msgstr ""
+
+msgid "Enter line:"
+msgstr ""
+
+msgid "ButtonBar|Help"
+msgstr ""
+
+msgid "ButtonBar|Save"
+msgstr ""
+
+msgid "ButtonBar|Edit"
+msgstr ""
+
+msgid "ButtonBar|Merge"
+msgstr ""
+
+msgid "ButtonBar|Search"
+msgstr ""
+
+msgid "ButtonBar|Options"
+msgstr ""
+
+msgid "ButtonBar|Quit"
+msgstr ""
+
+msgid "Quit"
+msgstr ""
+
+msgid "File(s) was modified. Save with exit?"
+msgstr ""
+
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file(s)?"
+msgstr ""
+
+msgid "Diff:"
+msgstr ""
+
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Diff viewer: invalid mode"
+msgstr ""
+
+msgid "Two files are needed to compare"
+msgstr ""
+
+#, c-format
+msgid "Loading: %3d%%"
+msgstr ""
+
+msgid "Loading..."
+msgstr ""
+
+#, c-format
+msgid "Cannot open %s for reading"
+msgstr ""
+
+msgid "Load file"
+msgstr ""
+
+#, c-format
+msgid "Error reading %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot get size/permissions for %s"
+msgstr ""
+
+#, c-format
+msgid "\"%s\" is not a regular file"
+msgstr ""
+
+#, c-format
+msgid ""
+"File \"%s\" is too large.\n"
+"Open it anyway?"
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+#, c-format
+msgid "Error reading from pipe: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open pipe for reading: %s"
+msgstr ""
+
+msgid "File has hard-links. Detach before saving?"
+msgstr ""
+
+msgid "The file has been modified in the meantime. Save anyway?"
+msgstr ""
+
+#, c-format
+msgid "Error writing to pipe: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open pipe for writing: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file for writing: %s"
+msgstr ""
+
+msgid "The file you are saving does not end with a newline."
+msgstr ""
+
+msgid "C&ontinue"
+msgstr ""
+
+msgid "&Do not change"
+msgstr ""
+
+msgid "&Unix format (LF)"
+msgstr ""
+
+msgid "&Windows/DOS format (CR LF)"
+msgstr ""
+
+msgid "&Macintosh format (CR)"
+msgstr ""
+
+msgid "Enter file name:"
+msgstr ""
+
+msgid "Change line breaks to:"
+msgstr ""
+
+msgid "Save As"
+msgstr ""
+
+msgid "&Quick save"
+msgstr ""
+
+msgid "&Safe save"
+msgstr ""
+
+msgid "&Do backups with following extension:"
+msgstr ""
+
+msgid "Check &POSIX new line"
+msgstr ""
+
+msgid "Edit Save Mode"
+msgstr ""
+
+msgid "Save as"
+msgstr ""
+
+msgid "Cannot save: destination is not a regular file"
+msgstr ""
+
+msgid "A file already exists with this name"
+msgstr ""
+
+msgid "&Overwrite"
+msgstr ""
+
+msgid "Cannot save file"
+msgstr ""
+
+#, c-format
+msgid "Confirm save file: \"%s\""
+msgstr ""
+
+msgid "Save file"
+msgstr ""
+
+msgid "&Save"
+msgstr ""
+
+msgid "Load"
+msgstr ""
+
+msgid "Syntax file edit"
+msgstr ""
+
+msgid "Which syntax file you want to edit?"
+msgstr ""
+
+msgid "&User"
+msgstr ""
+
+msgid "&System wide"
+msgstr ""
+
+msgid "Menu edit"
+msgstr ""
+
+msgid "Which menu file do you want to edit?"
+msgstr ""
+
+msgid "&Local"
+msgstr ""
+
+msgid "[NoName]"
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s was modified.\n"
+"Save before close?"
+msgstr ""
+
+msgid "Close file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file %s?"
+msgstr ""
+
+msgid "This function is not implemented"
+msgstr ""
+
+msgid "Copy to clipboard"
+msgstr ""
+
+msgid "Unable to save to file"
+msgstr ""
+
+msgid "Cut to clipboard"
+msgstr ""
+
+msgid "Goto line"
+msgstr ""
+
+msgid "Save block"
+msgstr ""
+
+msgid "Insert file"
+msgstr ""
+
+msgid "Cannot insert file"
+msgstr ""
+
+msgid "Sort block"
+msgstr ""
+
+msgid "You must first highlight a block of text"
+msgstr ""
+
+msgid "Run sort"
+msgstr ""
+
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
+
+msgid "Sort"
+msgstr ""
+
+msgid "Cannot execute sort command"
+msgstr ""
+
+#, c-format
+msgid "Sort returned non-zero: %s"
+msgstr ""
+
+msgid "Paste output of external command"
+msgstr ""
+
+msgid "Enter shell command(s):"
+msgstr ""
+
+msgid "External command"
+msgstr ""
+
+msgid "Cannot execute command"
+msgstr ""
+
+msgid "mail -s <subject> -c <cc> <to>"
+msgstr ""
+
+msgid "To"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Copies to"
+msgstr ""
+
+msgid "Mail"
+msgstr ""
+
+msgid "Insert literal"
+msgstr ""
+
+msgid "Press any key:"
+msgstr ""
+
+msgid ""
+"Current text was modified without a file save.\n"
+"Continue discards these changes."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Collect completions"
+msgstr ""
+
+msgid "NoName"
+msgstr ""
+
+msgid "Save macro"
+msgstr ""
+
+msgid "Press the macro's new hotkey:"
+msgstr ""
+
+msgid "Delete macro"
+msgstr ""
+
+msgid "Press macro hotkey:"
+msgstr ""
+
+msgid "Macro not deleted"
+msgstr ""
+
+msgid "Repeat last commands"
+msgstr ""
+
+msgid "Repeat times:"
+msgstr ""
+
+msgid "&Open file..."
+msgstr ""
+
+msgid "&New"
+msgstr ""
+
+msgid "&Close"
+msgstr ""
+
+msgid "&History..."
+msgstr ""
+
+msgid "Save &as..."
+msgstr ""
+
+msgid "&Insert file..."
+msgstr ""
+
+msgid "Cop&y to file..."
+msgstr ""
+
+msgid "&User menu..."
+msgstr ""
+
+msgid "A&bout..."
+msgstr ""
+
+msgid "&Quit"
+msgstr ""
+
+msgid "&Undo"
+msgstr ""
+
+msgid "&Redo"
+msgstr ""
+
+msgid "&Toggle ins/overw"
+msgstr ""
+
+msgid "To&ggle mark"
+msgstr ""
+
+msgid "&Mark columns"
+msgstr ""
+
+msgid "Mark &all"
+msgstr ""
+
+msgid "Unmar&k"
+msgstr ""
+
+msgid "Cop&y"
+msgstr ""
+
+msgid "Mo&ve"
+msgstr ""
+
+msgid "&Delete"
+msgstr ""
+
+msgid "Co&py to clipfile"
+msgstr ""
+
+msgid "&Cut to clipfile"
+msgstr ""
+
+msgid "Pa&ste from clipfile"
+msgstr ""
+
+msgid "&Beginning"
+msgstr ""
+
+msgid "&End"
+msgstr ""
+
+msgid "&Search..."
+msgstr ""
+
+msgid "Search &again"
+msgstr ""
+
+msgid "&Replace..."
+msgstr ""
+
+msgid "&Toggle bookmark"
+msgstr ""
+
+msgid "&Next bookmark"
+msgstr ""
+
+msgid "&Prev bookmark"
+msgstr ""
+
+msgid "&Flush bookmarks"
+msgstr ""
+
+msgid "&Go to line..."
+msgstr ""
+
+msgid "&Toggle line state"
+msgstr ""
+
+msgid "Go to matching &bracket"
+msgstr ""
+
+msgid "Toggle s&yntax highlighting"
+msgstr ""
+
+msgid "&Find declaration"
+msgstr ""
+
+msgid "Back from &declaration"
+msgstr ""
+
+msgid "For&ward to declaration"
+msgstr ""
+
+msgid "Encod&ing..."
+msgstr ""
+
+msgid "&Refresh screen"
+msgstr ""
+
+msgid "&Start/Stop record macro"
+msgstr ""
+
+msgid "Delete macr&o..."
+msgstr ""
+
+msgid "Record/Repeat &actions"
+msgstr ""
+
+msgid "S&pell check"
+msgstr ""
+
+msgid "C&heck word"
+msgstr ""
+
+msgid "Change spelling &language..."
+msgstr ""
+
+msgid "&Mail..."
+msgstr ""
+
+msgid "Insert &literal..."
+msgstr ""
+
+msgid "Insert &date/time"
+msgstr ""
+
+msgid "&Format paragraph"
+msgstr ""
+
+msgid "&Sort..."
+msgstr ""
+
+msgid "&Paste output of..."
+msgstr ""
+
+msgid "&External formatter"
+msgstr ""
+
+msgid "&Move"
+msgstr ""
+
+msgid "&Resize"
+msgstr ""
+
+msgid "&Toggle fullscreen"
+msgstr ""
+
+msgid "&Next"
+msgstr ""
+
+msgid "&Previous"
+msgstr ""
+
+msgid "&List..."
+msgstr ""
+
+msgid "&General..."
+msgstr ""
+
+msgid "Save &mode..."
+msgstr ""
+
+msgid "Learn &keys..."
+msgstr ""
+
+msgid "Syntax &highlighting..."
+msgstr ""
+
+msgid "S&yntax file"
+msgstr ""
+
+msgid "&Menu file"
+msgstr ""
+
+msgid "&Save setup"
+msgstr ""
+
+msgid "&File"
+msgstr ""
+
+msgid "&Edit"
+msgstr ""
+
+msgid "&Search"
+msgstr ""
+
+msgid "&Command"
+msgstr ""
+
+msgid "For&mat"
+msgstr ""
+
+msgid "&Window"
+msgstr ""
+
+msgid "&Options"
+msgstr ""
+
+msgid "&None"
+msgstr ""
+
+msgid "&Dynamic paragraphing"
+msgstr ""
+
+msgid "Type &writer wrap"
+msgstr ""
+
+msgid "Wrap mode"
+msgstr ""
+
+msgid "Tabulation"
+msgstr ""
+
+msgid "&Fake half tabs"
+msgstr ""
+
+msgid "&Backspace through tabs"
+msgstr ""
+
+msgid "Fill tabs with &spaces"
+msgstr ""
+
+msgid "Tab spacing:"
+msgstr ""
+
+msgid "Other options"
+msgstr ""
+
+msgid "&Return does autoindent"
+msgstr ""
+
+msgid "Confir&m before saving"
+msgstr ""
+
+msgid "Save file &position"
+msgstr ""
+
+msgid "&Visible trailing spaces"
+msgstr ""
+
+msgid "Visible &tabs"
+msgstr ""
+
+msgid "Synta&x highlighting"
+msgstr ""
+
+msgid "C&ursor after inserted block"
+msgstr ""
+
+msgid "Pers&istent selection"
+msgstr ""
+
+msgid "Cursor be&yond end of line"
+msgstr ""
+
+msgid "&Group undo"
+msgstr ""
+
+msgid "Word wrap line length:"
+msgstr ""
+
+msgid "Editor options"
+msgstr ""
+
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
+msgid ""
+"A user friendly text editor\n"
+"written for the Midnight Commander."
+msgstr ""
+
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
+
+msgid "About"
+msgstr ""
+
+msgid "Open files"
+msgstr ""
+
+msgid "Edit: "
+msgstr ""
+
+msgid "ButtonBar|Mark"
+msgstr ""
+
+msgid "ButtonBar|Replac"
+msgstr ""
+
+msgid "ButtonBar|Copy"
+msgstr ""
+
+msgid "ButtonBar|Move"
+msgstr ""
+
+msgid "ButtonBar|Delete"
+msgstr ""
+
+msgid "ButtonBar|PullDn"
+msgstr ""
+
+msgid "Breton"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Welsh"
+msgstr ""
+
+msgid "Danish"
+msgstr ""
+
+msgid "German"
+msgstr ""
+
+msgid "Greek"
+msgstr ""
+
+msgid "English"
+msgstr ""
+
+msgid "British English"
+msgstr ""
+
+msgid "Canadian English"
+msgstr ""
+
+msgid "American English"
+msgstr ""
+
+msgid "Esperanto"
+msgstr ""
+
+msgid "Spanish"
+msgstr ""
+
+msgid "Faroese"
+msgstr ""
+
+msgid "French"
+msgstr ""
+
+msgid "Italian"
+msgstr ""
+
+msgid "Dutch"
+msgstr ""
+
+msgid "Norwegian"
+msgstr ""
+
+msgid "Polish"
+msgstr ""
+
+msgid "Portuguese"
+msgstr ""
+
+msgid "Romanian"
+msgstr ""
+
+msgid "Russian"
+msgstr ""
+
+msgid "Slovak"
+msgstr ""
+
+msgid "Swedish"
+msgstr ""
+
+msgid "Ukrainian"
+msgstr ""
+
+msgid "&Add word"
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Misspelled"
+msgstr ""
+
+msgid "Check word"
+msgstr ""
+
+msgid "Suggest"
+msgstr ""
+
+msgid "Select language"
+msgstr ""
+
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
+msgid "Load syntax file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open file %s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Error in file %s on line %d"
+msgstr ""
+
+msgid ""
+"The Commander can't change to the directory that\n"
+"the subshell claims you are in. Perhaps you have\n"
+"deleted your working directory, or given yourself\n"
+"extra access permissions with the \"su\" command?"
+msgstr ""
+
+#, c-format
+msgid "Cannot fetch a local copy of %s"
+msgstr ""
+
+msgid "The shell is already running a command"
+msgstr ""
+
+msgid ""
+"Not an xterm or Linux console;\n"
+"the subshell cannot be toggled."
+msgstr ""
+
+msgid "Type 'exit' to return to the Midnight Commander"
+msgstr ""
+
+msgid "Set &all"
+msgstr ""
+
+msgid "S&kip"
+msgstr ""
+
+msgid "&Set"
+msgstr ""
+
+msgid "owner"
+msgstr ""
+
+msgid "group"
+msgstr ""
+
+msgid "other"
+msgstr ""
+
+msgid "Flag"
+msgstr ""
+
+#, c-format
+msgid "Permissions (octal): %o"
+msgstr ""
+
+msgid "Chown advanced command"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chmod \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "&Ignore"
+msgstr ""
+
+msgid "Ignore &all"
+msgstr ""
+
+msgid "&Retry"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "< Default >"
+msgstr ""
+
+msgid "Skins"
+msgstr ""
+
+msgid "Other 8 bit"
+msgstr ""
+
+msgid "Running"
+msgstr ""
+
+msgid "Stopped"
+msgstr ""
+
+msgid "&Never"
+msgstr ""
+
+msgid "On dum&b terminals"
+msgstr ""
+
+msgid "Alwa&ys"
+msgstr ""
+
+msgid "File operations"
+msgstr ""
+
+msgid "&Verbose operation"
+msgstr ""
+
+msgid "Compute tota&ls"
+msgstr ""
+
+msgid "Classic pro&gressbar"
+msgstr ""
+
+msgid "Mkdi&r autoname"
+msgstr ""
+
+msgid "&Preallocate space"
+msgstr ""
+
+msgid "Esc key mode"
+msgstr ""
+
+msgid "S&ingle press"
+msgstr ""
+
+msgid "Timeout:"
+msgstr ""
+
+msgid "Pause after run"
+msgstr ""
+
+msgid "Use internal edi&t"
+msgstr ""
+
+msgid "Use internal vie&w"
+msgstr ""
+
+msgid "A&sk new file name"
+msgstr ""
+
+msgid "Auto m&enus"
+msgstr ""
+
+msgid "&Drop down menus"
+msgstr ""
+
+msgid "S&hell patterns"
+msgstr ""
+
+msgid "Co&mplete: show all"
+msgstr ""
+
+msgid "Rotating d&ash"
+msgstr ""
+
+msgid "Cd follows lin&ks"
+msgstr ""
+
+msgid "Sa&fe delete"
+msgstr ""
+
+msgid "Safe overwrite"
+msgstr ""
+
+msgid "A&uto save setup"
+msgstr ""
+
+msgid "Configure options"
+msgstr ""
+
+msgid "Skin:"
+msgstr ""
+
+msgid "&Shadows"
+msgstr ""
+
+msgid "Appearance"
+msgstr ""
+
+msgid "Case &insensitive"
+msgstr ""
+
+msgid "Use panel sort mo&de"
+msgstr ""
+
+msgid "Show mi&ni-status"
+msgstr ""
+
+msgid "Use SI si&ze units"
+msgstr ""
+
+msgid "Mi&x all files"
+msgstr ""
+
+msgid "Show &backup files"
+msgstr ""
+
+msgid "Show &hidden files"
+msgstr ""
+
+msgid "&Fast dir reload"
+msgstr ""
+
+msgid "Ma&rk moves down"
+msgstr ""
+
+msgid "Re&verse files only"
+msgstr ""
+
+msgid "Simple s&wap"
+msgstr ""
+
+msgid "A&uto save panels setup"
+msgstr ""
+
+msgid "Navigation"
+msgstr ""
+
+msgid "L&ynx-like motion"
+msgstr ""
+
+msgid "Pa&ge scrolling"
+msgstr ""
+
+msgid "Center &scrolling"
+msgstr ""
+
+msgid "&Mouse page scrolling"
+msgstr ""
+
+msgid "File highlight"
+msgstr ""
+
+msgid "File &types"
+msgstr ""
+
+msgid "&Permissions"
+msgstr ""
+
+msgid "Quick search"
+msgstr ""
+
+msgid "Panel options"
+msgstr ""
+
+msgid "Information"
+msgstr ""
+
+msgid ""
+"Using the fast reload option may not reflect the exact\n"
+"directory contents. In this case you'll need to do a\n"
+"manual reload of the directory. See the man page for\n"
+"the details."
+msgstr ""
+
+msgid "&Full file list"
+msgstr ""
+
+msgid "&Brief file list:"
+msgstr ""
+
+msgid "&Long file list"
+msgstr ""
+
+msgid "&User defined:"
+msgstr ""
+
+msgid "columns"
+msgstr ""
+
+msgid "User &mini status"
+msgstr ""
+
+msgid "Listing format"
+msgstr ""
+
+msgid "Executable &first"
+msgstr ""
+
+msgid "&Reverse"
+msgstr ""
+
+msgid "Sort order"
+msgstr ""
+
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
+msgid "Confirmation|&Delete"
+msgstr ""
+
+msgid "Confirmation|O&verwrite"
+msgstr ""
+
+msgid "Confirmation|&Execute"
+msgstr ""
+
+msgid "Confirmation|E&xit"
+msgstr ""
+
+msgid "Confirmation|Di&rectory hotlist delete"
+msgstr ""
+
+msgid "Confirmation|&History cleanup"
+msgstr ""
+
+msgid "Confirmation"
+msgstr ""
+
+msgid "&UTF-8 output"
+msgstr ""
+
+msgid "&Full 8 bits output"
+msgstr ""
+
+msgid "&ISO 8859-1"
+msgstr ""
+
+msgid "7 &bits"
+msgstr ""
+
+msgid "F&ull 8 bits input"
+msgstr ""
+
+msgid "Display bits"
+msgstr ""
+
+msgid "Input / display codepage:"
+msgstr ""
+
+msgid "Directory tree"
+msgstr ""
+
+msgid "Timeout for freeing VFSs (sec):"
+msgstr ""
+
+msgid "FTP anonymous password:"
+msgstr ""
+
+msgid "FTP directory cache timeout (sec):"
+msgstr ""
+
+msgid "&Always use ftp proxy:"
+msgstr ""
+
+msgid "&Use ~/.netrc"
+msgstr ""
+
+msgid "Use &passive mode"
+msgstr ""
+
+msgid "Use passive mode over pro&xy"
+msgstr ""
+
+msgid "Virtual File System Setting"
+msgstr ""
+
+msgid "cd"
+msgstr ""
+
+msgid "Quick cd"
+msgstr ""
+
+msgid "Existing filename (filename symlink will point to):"
+msgstr ""
+
+msgid "Symbolic link filename:"
+msgstr ""
+
+msgid "Symbolic link"
+msgstr ""
+
+msgid "&Stop"
+msgstr ""
+
+msgid "&Resume"
+msgstr ""
+
+msgid "&Kill"
+msgstr ""
+
+msgid "Background jobs"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chdir to \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Secure deletion"
+msgstr ""
+
+msgid "Undelete"
+msgstr ""
+
+msgid "Synchronous updates"
+msgstr ""
+
+msgid "Synchronous directory updates"
+msgstr ""
+
+msgid "Immutable"
+msgstr ""
+
+msgid "Append only"
+msgstr ""
+
+msgid "No dump"
+msgstr ""
+
+msgid "No update atime"
+msgstr ""
+
+msgid "Compress"
+msgstr ""
+
+msgid "Compressed clusters"
+msgstr ""
+
+msgid "Compressed dirty file"
+msgstr ""
+
+msgid "Compression raw access"
+msgstr ""
+
+msgid "Encrypted inode"
+msgstr ""
+
+msgid "Journaled data"
+msgstr ""
+
+msgid "Indexed directory"
+msgstr ""
+
+msgid "No tail merging"
+msgstr ""
+
+msgid "Top of directory hierarchies"
+msgstr ""
+
+msgid "Inode uses extents"
+msgstr ""
+
+msgid "Huge_file"
+msgstr ""
+
+msgid "No COW"
+msgstr ""
+
+msgid "Direct access for files"
+msgstr ""
+
+msgid "Casefolded file"
+msgstr ""
+
+msgid "Inode has inline data"
+msgstr ""
+
+msgid "Project hierarchy"
+msgstr ""
+
+msgid "Verity protected inode"
+msgstr ""
+
+msgid "&Marked all"
+msgstr ""
+
+msgid "S&et marked"
+msgstr ""
+
+msgid "C&lear marked"
+msgstr ""
+
+msgid "Chattr command"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chattr \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot change attributes on non-local filesystems"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot get flags of \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "set &user ID on execution"
+msgstr ""
+
+msgid "set &group ID on execution"
+msgstr ""
+
+msgid "stick&y bit"
+msgstr ""
+
+msgid "&read by owner"
+msgstr ""
+
+msgid "&write by owner"
+msgstr ""
+
+msgid "e&xecute/search by owner"
+msgstr ""
+
+msgid "rea&d by group"
+msgstr ""
+
+msgid "write by grou&p"
+msgstr ""
+
+msgid "execu&te/search by group"
+msgstr ""
+
+msgid "read &by others"
+msgstr ""
+
+msgid "wr&ite by others"
+msgstr ""
+
+msgid "execute/searc&h by others"
+msgstr ""
+
+msgid "Name:"
+msgstr ""
+
+msgid "Permissions (octal):"
+msgstr ""
+
+msgid "Owner name:"
+msgstr ""
+
+msgid "Group name:"
+msgstr ""
+
+msgid "Chmod command"
+msgstr ""
+
+msgid "Permission"
+msgstr ""
+
+msgid "File"
+msgstr ""
+
+msgid "Set &groups"
+msgstr ""
+
+msgid "Set &users"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Owner name"
+msgstr ""
+
+msgid "Group name"
+msgstr ""
+
+msgid "Size"
+msgstr ""
+
+msgid "Chown command"
+msgstr ""
+
+msgid "User name"
+msgstr ""
+
+msgid "<Unknown user>"
+msgstr ""
+
+msgid "<Unknown group>"
+msgstr ""
+
+msgid "Enter machine name (F1 for details):"
+msgstr ""
+
+msgid "Files tagged, want to cd?"
+msgstr ""
+
+msgid "Cannot change directory"
+msgstr ""
+
+#, c-format
+msgid "Link %s to:"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+#, c-format
+msgid "link: %s"
+msgstr ""
+
+#, c-format
+msgid "symlink: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot chdir to \"%s\""
+msgstr ""
+
+msgid "View file"
+msgstr ""
+
+msgid "Filename:"
+msgstr ""
+
+msgid "Filtered view"
+msgstr ""
+
+msgid "Filter command and arguments:"
+msgstr ""
+
+msgid "Edit file"
+msgstr ""
+
+msgid "Create a new Directory"
+msgstr ""
+
+msgid "Enter directory name:"
+msgstr ""
+
+msgid "Extension file edit"
+msgstr ""
+
+msgid "Which extension file you want to edit?"
+msgstr ""
+
+msgid "&System Wide"
+msgstr ""
+
+msgid "Highlighting groups file edit"
+msgstr ""
+
+msgid "Which highlighting file you want to edit?"
+msgstr ""
+
+msgid "Compare directories"
+msgstr ""
+
+msgid "Select compare method:"
+msgstr ""
+
+msgid "&Quick"
+msgstr ""
+
+msgid "&Size only"
+msgstr ""
+
+msgid "&Thorough"
+msgstr ""
+
+msgid ""
+"Both panels should be in the listing mode\n"
+"to use this command"
+msgstr ""
+
+#, c-format
+msgid "'%s' is not a symbolic link"
+msgstr ""
+
+#, c-format
+msgid "Symlink '%s' points to:"
+msgstr ""
+
+msgid "Edit symlink"
+msgstr ""
+
+#, c-format
+msgid "edit symlink, unable to remove %s: %s"
+msgstr ""
+
+#, c-format
+msgid "edit symlink: %s"
+msgstr ""
+
+msgid "FTP to machine"
+msgstr ""
+
+msgid "SFTP to machine"
+msgstr ""
+
+msgid "Shell link to machine"
+msgstr ""
+
+msgid "Undelete files on an ext2 file system"
+msgstr ""
+
+msgid ""
+"Enter device (without /dev/) to undelete\n"
+"files on: (F1 for details)"
+msgstr ""
+
+msgid "Directory scanning"
+msgstr ""
+
+msgid "Setup"
+msgstr ""
+
+#, c-format
+msgid "Setup saved to %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to save setup to %s"
+msgstr ""
+
+msgid "Cannot execute commands on non-local filesystems"
+msgstr ""
+
+msgid "Parameter"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary command file\n"
+"%s"
+msgstr ""
+
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
+#, c-format
+msgid " %s%s file error"
+msgstr ""
+
+#, c-format
+msgid ""
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
+"Commander package."
+msgstr ""
+
+#, c-format
+msgid "%s file error"
+msgstr ""
+
+#, c-format
+msgid ""
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
+msgstr ""
+
+msgid "DialogTitle|Copy"
+msgstr ""
+
+msgid "DialogTitle|Move"
+msgstr ""
+
+msgid "DialogTitle|Delete"
+msgstr ""
+
+msgid "FileOperation|Copy"
+msgstr ""
+
+msgid "FileOperation|Move"
+msgstr ""
+
+msgid "FileOperation|Delete"
+msgstr ""
+
+#, no-c-format
+msgid "%o %f%n\"%s\"%m"
+msgstr ""
+
+#, no-c-format
+msgid "%o %d %f%m"
+msgstr ""
+
+msgid "files"
+msgstr ""
+
+msgid "directory"
+msgstr ""
+
+msgid "directories"
+msgstr ""
+
+msgid "files/directories"
+msgstr ""
+
+#. TRANSLATORS: keep leading space here to split words in Copy/Move dialog
+msgid " with source mask:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat hardlink source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target hardlink \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot create target hardlink \"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot read source link \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid ""
+"Cannot make stable symlinks across non-local filesystems:\n"
+"\n"
+"Option Stable Symlinks will be disabled"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target symlink \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\"\n"
+"and\n"
+"\"%s\"\n"
+"are the same directory"
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\"\n"
+"and\n"
+"\"%s\"\n"
+"are the same file"
+msgstr ""
+
+msgid "Ski&p all"
+msgstr ""
+
+#, c-format
+msgid ""
+"Directory \"%s\" not empty.\n"
+"Delete it recursively?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Background process:\n"
+"Directory \"%s\" not empty.\n"
+"Delete it recursively?"
+msgstr ""
+
+msgid "Non&e"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot remove file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot overwrite directory \"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot move file \"%s\" to \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot remove directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot overwrite directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot overwrite file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot move directory \"%s\" to \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot operate on \"..\"!"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create special file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chmod target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open source file \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Reget failed, about to overwrite file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot fstat source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot fstat target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot preallocate space for target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot read source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot write target file \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "(stalled)"
+msgstr ""
+
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot close source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot close target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat source directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Source \"%s\" is not a directory\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot copy cyclic symbolic link\n"
+"\"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Destination \"%s\" must be a directory\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown target directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Directories: %zu, total size: %s"
+msgstr ""
+
+msgid "Sorry, I could not put the job in background"
+msgstr ""
+
+msgid "S&uspend"
+msgstr ""
+
+msgid "Con&tinue"
+msgstr ""
+
+#, c-format
+msgid "%d:%02d.%02d"
+msgstr ""
+
+#, c-format
+msgid "ETA %s"
+msgstr ""
+
+#, c-format
+msgid "%.2f MB/s"
+msgstr ""
+
+#, c-format
+msgid "%.2f KB/s"
+msgstr ""
+
+#, c-format
+msgid "%ld B/s"
+msgstr ""
+
+msgid "New :"
+msgstr ""
+
+msgid "Existing:"
+msgstr ""
+
+msgid "Overwrite this file?"
+msgstr ""
+
+msgid "A&ppend"
+msgstr ""
+
+msgid "&Reget"
+msgstr ""
+
+msgid "Overwrite all files?"
+msgstr ""
+
+msgid "Don't overwrite with &zero length file"
+msgstr ""
+
+msgid "&Older"
+msgstr ""
+
+msgid "S&maller"
+msgstr ""
+
+msgid "&Size differs"
+msgstr ""
+
+msgid "File exists"
+msgstr ""
+
+msgid "Background process: File exists"
+msgstr ""
+
+#, c-format
+msgid "Files processed: %zu / %zu"
+msgstr ""
+
+#, c-format
+msgid "Files processed: %zu"
+msgstr ""
+
+#, c-format
+msgid "Time: %s %s"
+msgstr ""
+
+#, c-format
+msgid "Time: %s %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Time: %s"
+msgstr ""
+
+#, c-format
+msgid "Time: %s (%s)"
+msgstr ""
+
+#, c-format
+msgid " Total: %s "
+msgstr ""
+
+#, c-format
+msgid " Total: %s / %s "
+msgstr ""
+
+msgid "Source"
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "Deleting"
+msgstr ""
+
+msgid "&Using shell patterns"
+msgstr ""
+
+msgid "to:"
+msgstr ""
+
+msgid "Follow &links"
+msgstr ""
+
+msgid "Preserve &attributes"
+msgstr ""
+
+msgid "Di&ve into subdir if exists"
+msgstr ""
+
+msgid "&Stable symlinks"
+msgstr ""
+
+msgid "&Background"
+msgstr ""
+
+#, c-format
+msgid "Invalid source pattern '%s'"
+msgstr ""
+
+msgid "File listin&g"
+msgstr ""
+
+msgid "&Quick view"
+msgstr ""
+
+msgid "&Info"
+msgstr ""
+
+msgid "&Tree"
+msgstr ""
+
+msgid "&Listing format..."
+msgstr ""
+
+msgid "&Sort order..."
+msgstr ""
+
+msgid "&Filter..."
+msgstr ""
+
+msgid "&Encoding..."
+msgstr ""
+
+msgid "FT&P link..."
+msgstr ""
+
+msgid "S&hell link..."
+msgstr ""
+
+msgid "SFTP li&nk..."
+msgstr ""
+
+msgid "Paneli&ze"
+msgstr ""
+
+msgid "&Rescan"
+msgstr ""
+
+msgid "&View"
+msgstr ""
+
+msgid "Vie&w file..."
+msgstr ""
+
+msgid "&Filtered view"
+msgstr ""
+
+msgid "&Copy"
+msgstr ""
+
+msgid "C&hmod"
+msgstr ""
+
+msgid "&Link"
+msgstr ""
+
+msgid "&Symlink"
+msgstr ""
+
+msgid "Relative symlin&k"
+msgstr ""
+
+msgid "Edit s&ymlink"
+msgstr ""
+
+msgid "Ch&own"
+msgstr ""
+
+msgid "&Advanced chown"
+msgstr ""
+
+msgid "Cha&ttr"
+msgstr ""
+
+msgid "&Rename/Move"
+msgstr ""
+
+msgid "&Mkdir"
+msgstr ""
+
+msgid "&Quick cd"
+msgstr ""
+
+msgid "Select &group"
+msgstr ""
+
+msgid "U&nselect group"
+msgstr ""
+
+msgid "&Invert selection"
+msgstr ""
+
+msgid "E&xit"
+msgstr ""
+
+msgid "&User menu"
+msgstr ""
+
+msgid "&Directory tree"
+msgstr ""
+
+msgid "&Find file"
+msgstr ""
+
+msgid "S&wap panels"
+msgstr ""
+
+msgid "Switch &panels on/off"
+msgstr ""
+
+msgid "&Compare directories"
+msgstr ""
+
+msgid "C&ompare files"
+msgstr ""
+
+msgid "E&xternal panelize"
+msgstr ""
+
+msgid "Show directory s&izes"
+msgstr ""
+
+msgid "Command &history"
+msgstr ""
+
+msgid "Viewed/edited files hi&story"
+msgstr ""
+
+msgid "Di&rectory hotlist"
+msgstr ""
+
+msgid "&Active VFS list"
+msgstr ""
+
+msgid "&Background jobs"
+msgstr ""
+
+msgid "Screen lis&t"
+msgstr ""
+
+msgid "&Undelete files (ext2fs only)"
+msgstr ""
+
+msgid "&Listing format edit"
+msgstr ""
+
+msgid "Edit &extension file"
+msgstr ""
+
+msgid "Edit &menu file"
+msgstr ""
+
+msgid "Edit hi&ghlighting group file"
+msgstr ""
+
+msgid "&Configuration..."
+msgstr ""
+
+msgid "&Layout..."
+msgstr ""
+
+msgid "&Panel options..."
+msgstr ""
+
+msgid "C&onfirmation..."
+msgstr ""
+
+msgid "&Appearance..."
+msgstr ""
+
+msgid "&Display bits..."
+msgstr ""
+
+msgid "&Virtual FS..."
+msgstr ""
+
+msgid "Panels:"
+msgstr ""
+
+#, c-format
+msgid "You have %zu opened screen. Quit anyway?"
+msgid_plural "You have %zu opened screens. Quit anyway?"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+msgid "The Midnight Commander"
+msgstr ""
+
+msgid "Do you really want to quit the Midnight Commander?"
+msgstr ""
+
+msgid "&Above"
+msgstr ""
+
+msgid "&Left"
+msgstr ""
+
+msgid "&Below"
+msgstr ""
+
+msgid "&Right"
+msgstr ""
+
+msgid "ButtonBar|Menu"
+msgstr ""
+
+msgid "ButtonBar|View"
+msgstr ""
+
+msgid "ButtonBar|RenMov"
+msgstr ""
+
+msgid "ButtonBar|Mkdir"
+msgstr ""
+
+msgid "&Chdir"
+msgstr ""
+
+msgid "&Again"
+msgstr ""
+
+msgid "Pane&lize"
+msgstr ""
+
+msgid "&View - F3"
+msgstr ""
+
+msgid "&Edit - F4"
+msgstr ""
+
+#, c-format
+msgid "Found: %lu"
+msgstr ""
+
+msgid "Malformed regular expression"
+msgstr ""
+
+msgid "File name:"
+msgstr ""
+
+msgid "&Find recursively"
+msgstr ""
+
+msgid "Follow s&ymlinks"
+msgstr ""
+
+msgid "S&kip hidden"
+msgstr ""
+
+msgid "Content:"
+msgstr ""
+
+msgid "Sea&rch for content"
+msgstr ""
+
+msgid "Case sens&itive"
+msgstr ""
+
+msgid "A&ll charsets"
+msgstr ""
+
+msgid "Fir&st hit"
+msgstr ""
+
+msgid "Find File"
+msgstr ""
+
+msgid "Start at:"
+msgstr ""
+
+msgid "Ena&ble ignore directories:"
+msgstr ""
+
+#, c-format
+msgid "Grepping in %s"
+msgstr ""
+
+msgid "Finished"
+msgstr ""
+
+#, c-format
+msgid "Finished (ignored %zu directory)"
+msgid_plural "Finished (ignored %zu directories)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#, c-format
+msgid "Find File: \"%s\". Content: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Find File: \"%s\""
+msgstr ""
+
+msgid "Searching"
+msgstr ""
+
+msgid "Change &to"
+msgstr ""
+
+msgid "&Free VFSs now"
+msgstr ""
+
+msgid "&Refresh"
+msgstr ""
+
+msgid "&Add current"
+msgstr ""
+
+msgid "&Up"
+msgstr ""
+
+msgid "New &group"
+msgstr ""
+
+msgid "New &entry"
+msgstr ""
+
+msgid "&Insert"
+msgstr ""
+
+msgid "&Remove"
+msgstr ""
+
+msgid "Subgroup - press ENTER to see list"
+msgstr ""
+
+msgid "Active VFS directories"
+msgstr ""
+
+msgid "Directory hotlist"
+msgstr ""
+
+msgid "Top level group"
+msgstr ""
+
+msgid "Directory path"
+msgstr ""
+
+#, c-format
+msgid "Moving %s"
+msgstr ""
+
+msgid "Directory label"
+msgstr ""
+
+msgid "&Append"
+msgstr ""
+
+msgid "New hotlist entry"
+msgstr ""
+
+msgid "Directory label:"
+msgstr ""
+
+msgid "Directory path:"
+msgstr ""
+
+msgid "New hotlist group"
+msgstr ""
+
+msgid "Name of new group:"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to remove entry \"%s\"?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Group \"%s\" is not empty.\n"
+"Remove it?"
+msgstr ""
+
+msgid "Hotlist Load"
+msgstr ""
+
+#, c-format
+msgid ""
+"MC was unable to write %s file,\n"
+"your old hotlist entries were not deleted"
+msgstr ""
+
+#, c-format
+msgid "Label for \"%s\":"
+msgstr ""
+
+msgid "Add to hotlist"
+msgstr ""
+
+#, c-format
+msgid "Midnight Commander %s"
+msgstr ""
+
+#, c-format
+msgid "File: %s"
+msgstr ""
+
+msgid "No node information"
+msgstr ""
+
+msgid "Free nodes:"
+msgstr ""
+
+msgid "No space information"
+msgstr ""
+
+#, c-format
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
+
+#, c-format
+msgid "Type: %s"
+msgstr ""
+
+msgid "non-local vfs"
+msgstr ""
+
+#, c-format
+msgid "Device: %s"
+msgstr ""
+
+#, c-format
+msgid "Filesystem: %s"
+msgstr ""
+
+#, c-format
+msgid "Accessed: %s"
+msgstr ""
+
+#, c-format
+msgid "Modified: %s"
+msgstr ""
+
+#. TRANSLATORS: Time of last status change as in stat(2) man.
+#, c-format
+msgid "Changed: %s"
+msgstr ""
+
+#, c-format
+msgid "Dev. type: major %lu, minor %lu"
+msgstr ""
+
+#, c-format
+msgid "Size: %s"
+msgstr ""
+
+#, c-format
+msgid " (%lu block)"
+msgid_plural " (%lu blocks)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#, c-format
+msgid "Owner: %s/%s"
+msgstr ""
+
+#, c-format
+msgid "Links: %d"
+msgstr ""
+
+msgid "Attributes: not supported"
+msgstr ""
+
+#, c-format
+msgid "Attributes: %s"
+msgstr ""
+
+msgid "Attributes: unavailable"
+msgstr ""
+
+#, c-format
+msgid "Mode: %s (%04o)"
+msgstr ""
+
+#, c-format
+msgid "Location: %Xh:%Xh"
+msgstr ""
+
+msgid "&Equal split"
+msgstr ""
+
+msgid "&Menubar visible"
+msgstr ""
+
+msgid "Command &prompt"
+msgstr ""
+
+msgid "&Keybar visible"
+msgstr ""
+
+msgid "H&intbar visible"
+msgstr ""
+
+msgid "&XTerm window title"
+msgstr ""
+
+msgid "&Show free space"
+msgstr ""
+
+msgid "Panel split"
+msgstr ""
+
+msgid "Console output"
+msgstr ""
+
+msgid "&Vertical"
+msgstr ""
+
+msgid "&Horizontal"
+msgstr ""
+
+msgid "Output lines:"
+msgstr ""
+
+msgid "Layout"
+msgstr ""
+
+msgid "Memory exhausted!"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'unsorted' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|u"
+msgstr ""
+
+msgid "&Unsorted"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'name' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|n"
+msgstr ""
+
+msgid "&Name"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'version' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|v"
+msgstr ""
+
+msgid "&Version"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'extension' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|e"
+msgstr ""
+
+msgid "E&xtension"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'size' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|s"
+msgstr ""
+
+msgid "&Size"
+msgstr ""
+
+msgid "Block Size"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Modify time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|m"
+msgstr ""
+
+msgid "&Modify time"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Access time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|a"
+msgstr ""
+
+msgid "&Access time"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Change time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|h"
+msgstr ""
+
+msgid "C&hange time"
+msgstr ""
+
+msgid "Perm"
+msgstr ""
+
+msgid "Nl"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'inode' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|i"
+msgstr ""
+
+msgid "&Inode"
+msgstr ""
+
+msgid "UID"
+msgstr ""
+
+msgid "GID"
+msgstr ""
+
+msgid "Owner"
+msgstr ""
+
+msgid "Group"
+msgstr ""
+
+msgid "[dev]"
+msgstr ""
+
+msgid "UP--DIR"
+msgstr ""
+
+msgid "SYMLINK"
+msgstr ""
+
+msgid "SUB-DIR"
+msgstr ""
+
+msgid "<readlink failed>"
+msgstr ""
+
+#, c-format
+msgid "%s in %d file"
+msgid_plural "%s in %d files"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+msgid "Panelize"
+msgstr ""
+
+msgid "Unknown tag on display format:"
+msgstr ""
+
+msgid "&Files only"
+msgstr ""
+
+msgid "&Case sensitive"
+msgstr ""
+
+msgid "Select"
+msgstr ""
+
+msgid "Unselect"
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Do you really want to execute?"
+msgstr ""
+
+msgid "Cannot read directory contents"
+msgstr ""
+
+msgid "User supplied format looks invalid, reverting to default."
+msgstr ""
+
+msgid "&Add new"
+msgstr ""
+
+msgid "External panelize"
+msgstr ""
+
+msgid "Other command"
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Add to external panelize"
+msgstr ""
+
+msgid "Enter command label:"
+msgstr ""
+
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+
+msgid "Cannot run external panelize in a non-local directory"
+msgstr ""
+
+msgid "Modified git files"
+msgstr ""
+
+msgid "Find rejects after patching"
+msgstr ""
+
+msgid "Find *.orig after patching"
+msgstr ""
+
+msgid "Find SUID and SGID programs"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open the %s file for writing:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid "Copy \"%s\" directory to:"
+msgstr ""
+
+#, c-format
+msgid "Move \"%s\" directory to:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat the destination\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Delete %s?"
+msgstr ""
+
+msgid "ButtonBar|Static"
+msgstr ""
+
+msgid "ButtonBar|Dynamc"
+msgstr ""
+
+msgid "ButtonBar|Rescan"
+msgstr ""
+
+msgid "ButtonBar|Forget"
+msgstr ""
+
+msgid "ButtonBar|Rmdir"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot write to the %s file:\n"
+"%s\n"
+msgstr ""
+
+msgid "Help file format error\n"
+msgstr ""
+
+msgid "Internal bug: Double start of link area"
+msgstr ""
+
+#, c-format
+msgid "Cannot find node %s in help file"
+msgstr ""
+
+msgid "Help"
+msgstr ""
+
+msgid "ButtonBar|Index"
+msgstr ""
+
+msgid "ButtonBar|Prev"
+msgstr ""
+
+msgid "Learn keys"
+msgstr ""
+
+msgid "Teach me a key"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please press the %s\n"
+"and then wait until this message disappears.\n"
+"\n"
+"Then, press it again to see if OK appears\n"
+"next to its button.\n"
+"\n"
+"If you want to escape, press a single Escape key\n"
+"and wait as well."
+msgstr ""
+
+msgid "Cannot accept this key"
+msgstr ""
+
+#, c-format
+msgid "You have entered \"%s\""
+msgstr ""
+
+#. TRANSLATORS: This label appears near learned keys. Keep it short.
+msgid "OK"
+msgstr ""
+
+msgid ""
+"It seems that all your keys already\n"
+"work fine. That's great."
+msgstr ""
+
+msgid "&Discard"
+msgstr ""
+
+msgid ""
+"Great! You have a complete terminal database!\n"
+"All your keys work well."
+msgstr ""
+
+msgid ""
+"Press all the keys mentioned here. After you have done it, check\n"
+"which keys are not marked with OK. Press space on the missing\n"
+"key, or click with the mouse to define it. Move around with Tab."
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to run:\n"
+"%s\n"
+msgstr ""
+
+msgid "Home directory path is not absolute"
+msgstr ""
+
+msgid ""
+"GNU Midnight Commander\n"
+"is already running on this terminal.\n"
+"Subshell support will be disabled."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Failed while close:\n"
+"%s\n"
+msgstr ""
+
+msgid "Choose codepage"
+msgstr ""
+
+msgid "- < No translation >"
+msgstr ""
+
+msgid "%b %e %Y"
+msgstr ""
+
+msgid "%b %e %H:%M"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot save file %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open named pipe %s\n"
+msgstr ""
+
+msgid "The shell is still active. Quit anyway?"
+msgstr ""
+
+#, c-format
+msgid "Warning: Cannot change to %s.\n"
+msgstr ""
+
+msgid "With builtin Editor and Aspell support"
+msgstr ""
+
+msgid "With builtin Editor"
+msgstr ""
+
+msgid "With optional subshell support"
+msgstr ""
+
+msgid "With subshell support as default"
+msgstr ""
+
+msgid "With support for background operations"
+msgstr ""
+
+msgid "With mouse support on xterm and Linux console"
+msgstr ""
+
+msgid "With mouse support on xterm"
+msgstr ""
+
+msgid "With support for X11 events"
+msgstr ""
+
+msgid "With internationalization support"
+msgstr ""
+
+msgid "With multiple codepages support"
+msgstr ""
+
+msgid "With ext2fs attributes support"
+msgstr ""
+
+#, c-format
+msgid "Built with GLib %d.%d.%d\n"
+msgstr ""
+
+#, c-format
+msgid "Built with S-Lang %s with terminfo database\n"
+msgstr ""
+
+#, c-format
+msgid "Built with ncurses %s\n"
+msgstr ""
+
+msgid "Built with ncurses (unknown version)"
+msgstr ""
+
+#, c-format
+msgid "Built with ncursesw %s\n"
+msgstr ""
+
+msgid "Built with ncursesw (unknown version)"
+msgstr ""
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
+msgid "Virtual File Systems:"
+msgstr ""
+
+msgid "Data types:"
+msgstr ""
+
+msgid "Home directory:"
+msgstr ""
+
+msgid "Profile root directory:"
+msgstr ""
+
+msgid "System data"
+msgstr ""
+
+msgid "Config directory:"
+msgstr ""
+
+msgid "Data directory:"
+msgstr ""
+
+msgid "File extension handlers:"
+msgstr ""
+
+msgid "VFS plugins and scripts:"
+msgstr ""
+
+msgid "User data"
+msgstr ""
+
+msgid "Cache directory:"
+msgstr ""
+
+msgid "Debug"
+msgstr ""
+
+msgid "ERROR:"
+msgstr ""
+
+msgid "True:"
+msgstr ""
+
+msgid "False:"
+msgstr ""
+
+msgid "Error calling program"
+msgstr ""
+
+msgid "Warning -- ignoring file"
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s is not owned by root or you or is world writable.\n"
+"Using it may compromise your security"
+msgstr ""
+
+msgid "Format error on file Extensions File"
+msgstr ""
+
+#, c-format
+msgid "The %%var macro has no default"
+msgstr ""
+
+#, c-format
+msgid "The %%var macro has no variable"
+msgstr ""
+
+#, c-format
+msgid "No suitable entries found in %s"
+msgstr ""
+
+msgid "User menu"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Premature end of cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Inconsistent hardlinks of\n"
+"%s\n"
+"in cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s contains duplicate entries! Skipping!"
+msgstr ""
+
+#, c-format
+msgid ""
+"Corrupted cpio header encountered in\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected end of file\n"
+"%s"
+msgstr ""
+
+msgid "Inconsistent archive"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open %s archive\n"
+"%s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Warning: cannot open %s directory\n"
+msgstr ""
+
+#, c-format
+msgid "fish: Disconnecting from %s"
+msgstr ""
+
+msgid "fish: Waiting for initial line..."
+msgstr ""
+
+msgid "Sorry, we cannot do password authenticated connections for now."
+msgstr ""
+
+#, c-format
+msgid "fish: Password is required for %s"
+msgstr ""
+
+msgid "fish: Sending password..."
+msgstr ""
+
+msgid "fish: Sending initial line..."
+msgstr ""
+
+msgid "fish: Handshaking version..."
+msgstr ""
+
+msgid "fish: Getting host info..."
+msgstr ""
+
+#, c-format
+msgid "fish: Reading directory %s..."
+msgstr ""
+
+#, c-format
+msgid "%s: done."
+msgstr ""
+
+#, c-format
+msgid "%s: failure"
+msgstr ""
+
+#, c-format
+msgid "fish: store %s: sending command..."
+msgstr ""
+
+msgid "fish: Local read failed, sending zeros"
+msgstr ""
+
+msgid "fish: storing file"
+msgstr ""
+
+msgid "Aborting transfer..."
+msgstr ""
+
+msgid "Error reported after abort."
+msgstr ""
+
+msgid "Aborted transfer would be successful."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Disconnecting from %s"
+msgstr ""
+
+#, c-format
+msgid "FTP: Password required for %s"
+msgstr ""
+
+msgid "ftpfs: sending login name"
+msgstr ""
+
+msgid "ftpfs: sending user password"
+msgstr ""
+
+#, c-format
+msgid "FTP: Account required for user %s"
+msgstr ""
+
+msgid "Account:"
+msgstr ""
+
+msgid "ftpfs: sending user account"
+msgstr ""
+
+msgid "ftpfs: logged in"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Login incorrect for user %s "
+msgstr ""
+
+msgid "ftpfs: Invalid host name."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: making connection to %s"
+msgstr ""
+
+msgid "ftpfs: connection interrupted by user"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: connection to server failed: %s"
+msgstr ""
+
+#, c-format
+msgid "Waiting to retry... %d (Control-G to cancel)"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
+msgid "ftpfs: invalid address family"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not create socket: %s"
+msgstr ""
+
+msgid "ftpfs: could not setup passive mode"
+msgstr ""
+
+msgid "ftpfs: aborting transfer."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: abort error: %s"
+msgstr ""
+
+msgid "ftpfs: abort failed"
+msgstr ""
+
+msgid "ftpfs: CWD failed."
+msgstr ""
+
+msgid "ftpfs: couldn't resolve symlink"
+msgstr ""
+
+msgid "Resolving symlink..."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Reading FTP directory %s... %s%s"
+msgstr ""
+
+msgid "(strict rfc959)"
+msgstr ""
+
+msgid "(chdir first)"
+msgstr ""
+
+msgid "ftpfs: failed; nowhere to fallback to"
+msgstr ""
+
+msgid "ftpfs: storing file"
+msgstr ""
+
+msgid ""
+"~/.netrc file has incorrect mode\n"
+"Remove password or correct mode"
+msgstr ""
+
+#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s: Warning: file %s not found\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Warning: Invalid line in %s:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Warning: Invalid flag %c in %s:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid "sftp: an error occurred while reading %s: %s"
+msgstr ""
+
+msgid "sftp: Unable to get current user name."
+msgstr ""
+
+msgid "sftp: Invalid host name."
+msgstr ""
+
+#, c-format
+msgid "sftp: %s"
+msgstr ""
+
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
+#, c-format
+msgid "sftp: making connection to %s"
+msgstr ""
+
+msgid "sftp: connection interrupted by user"
+msgstr ""
+
+#, c-format
+msgid "sftp: connection to server failed: %s"
+msgstr ""
+
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
+#, c-format
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
+
+msgid "sftp: Passphrase is empty."
+msgstr ""
+
+#, c-format
+msgid "sftp: Enter password for %s "
+msgstr ""
+
+msgid "sftp: Password is empty."
+msgstr ""
+
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
+msgstr ""
+
+#, c-format
+msgid "sftp: socket error: %s"
+msgstr ""
+
+#, c-format
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open tar archive\n"
+"%s"
+msgstr ""
+
+msgid "Inconsistent tar archive"
+msgstr ""
+
+msgid "Unexpected EOF on archive file"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s\n"
+"doesn't look like a tar archive."
+msgstr ""
+
+msgid "undelfs: error"
+msgstr ""
+
+msgid "not enough memory"
+msgstr ""
+
+msgid "while allocating block buffer"
+msgstr ""
+
+#, c-format
+msgid "open_inode_scan: %d"
+msgstr ""
+
+#, c-format
+msgid "while starting inode scan %d"
+msgstr ""
+
+#, c-format
+msgid "undelfs: loading deleted files information %d inodes"
+msgstr ""
+
+#, c-format
+msgid "while calling ext2_block_iterate %d"
+msgstr ""
+
+msgid "no more memory while reallocating array"
+msgstr ""
+
+#, c-format
+msgid "while doing inode scan %d"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file %s"
+msgstr ""
+
+msgid "undelfs: reading inode bitmap..."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot load inode bitmap from:\n"
+"%s"
+msgstr ""
+
+msgid "undelfs: reading block bitmap..."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot load block bitmap from:\n"
+"%s"
+msgstr ""
+
+msgid "vfs_info is not fs!"
+msgstr ""
+
+msgid "You have to chdir to extract files first"
+msgstr ""
+
+msgid "while iterating over blocks"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file \"%s\""
+msgstr ""
+
+msgid "Ext2lib error"
+msgstr ""
+
+msgid "Invalid value"
+msgstr ""
+
+msgid "File was modified. Save with exit?"
+msgstr ""
+
+msgid "&Cancel quit"
+msgstr ""
+
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file?"
+msgstr ""
+
+msgid "&Line number"
+msgstr ""
+
+msgid "Pe&rcents"
+msgstr ""
+
+msgid "&Decimal offset"
+msgstr ""
+
+msgid "He&xadecimal offset"
+msgstr ""
+
+msgid "Goto"
+msgstr ""
+
+msgid "ButtonBar|Ascii"
+msgstr ""
+
+msgid "ButtonBar|HxSrch"
+msgstr ""
+
+msgid "ButtonBar|UnWrap"
+msgstr ""
+
+msgid "ButtonBar|Wrap"
+msgstr ""
+
+msgid "ButtonBar|Hex"
+msgstr ""
+
+msgid "ButtonBar|Goto"
+msgstr ""
+
+msgid "ButtonBar|Raw"
+msgstr ""
+
+msgid "ButtonBar|Parse"
+msgstr ""
+
+msgid "ButtonBar|Unform"
+msgstr ""
+
+msgid "ButtonBar|Format"
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error while closing the file:\n"
+"%s\n"
+"Data may have been written or not"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot save file:\n"
+"%s"
+msgstr ""
+
+msgid "View: "
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot view: not a regular file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open \"%s\" in parse mode\n"
+"%s"
+msgstr ""
+
+msgid "Search done"
+msgstr ""
+
+msgid "Continue from beginning?"
+msgstr ""
+
+msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
+msgstr ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/lt.po
^
|
@@ -13,10 +13,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Mantas Kriaučiūnas Baltix <mantas@akl.lt>, 2020\n"
"Language-Team: Lithuanian (http://www.transifex.com/mc/mc/language/lt/)\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
@@ -83,30 +83,6 @@
msgid "FATAL: not a directory:"
msgstr "KLAIDA: ne aplankas:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Klaida perkeliant vartotojo nustatymus: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Jūsų anskstesni nustatymai buvo perkelti iš %s\n"
-"į Freedesktop rekomenduojamus aplankus.\n"
-"Daugiau informacijos rasite čia\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Jūsų anskstesni nustatymai buvo perkelti iš %s\n"
-"į %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -195,12 +171,12 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
-msgstr ""
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Panašu, kad terminalas nepalaiko 256 spalvų režimo."
+msgid "True color not supported in this slang version."
+msgstr ""
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Pateikite nustatymą COLORTERM=truecolor jei terminalas palaiko tikrų spalvų "
@@ -554,24 +530,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Įspėjimas"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Aplanko „%s“ podėlis nebegalioja"
@@ -697,12 +664,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Veda FTP dialogo žurnalą į nurodytą failą"
-msgid "Set debug level"
-msgstr "Nurodo „debug“ lygį"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Parodo failo turinį"
@@ -1002,15 +963,6 @@
msgid "Two files are needed to compare"
msgstr "Palyginimui reikalingi du failai"
-msgid "Choose syntax highlighting"
-msgstr "Pasirinkti sintaksės žymėjimą"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Įkelti esamą sintaksę iš naujo >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1045,6 +997,9 @@
"Failas \"%s\" yra per didelis.\n"
"Vis tiek atidaryti?"
+msgid "Warning"
+msgstr "Įspėjimas"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1053,14 +1008,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Ieškoma %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1106,9 +1053,6 @@
msgid "Save As"
msgstr "Išsaugoti kaip"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "&Greitas išsaugojimas"
@@ -1139,27 +1083,6 @@
msgid "Cannot save file"
msgstr "Nepavyko išsaugoti failo"
-msgid "Delete macro"
-msgstr "Šalinti macro"
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr "Macro nepašalinta"
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr "Kartojimų skaičius:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Patvirtinkite failo išsaugojimą: \"%s\""
@@ -1194,13 +1117,6 @@
msgid "&Local"
msgstr "&Vietinį"
-msgid "Replace"
-msgstr "Pakeisti"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1256,8 +1172,8 @@
msgid "Run sort"
msgstr "Rikiuoti"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Įveskite rikiavimo parinktis (žiūrėkite 'manpage') atskirtas tarpais:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Rikiuoti"
@@ -1309,36 +1225,36 @@
"Teksto pakeitimai neišsaugoti faile.\n"
"Tęsimas atšauks šiuos pakeitimus."
-msgid "In se&lection"
-msgstr ""
-
-msgid "&Find all"
-msgstr "&Rasti viską"
+msgid "Cancel"
+msgstr "Atsisakyti"
-msgid "Enter replacement string:"
+msgid "Collect completions"
msgstr ""
-msgid "Replace with:"
-msgstr "Pakeisti:"
+msgid "NoName"
+msgstr ""
-msgid "&Replace"
-msgstr "Pa&keisti"
+msgid "Save macro"
+msgstr ""
-msgid "A&ll"
-msgstr "&Visi"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "&Skip"
-msgstr "Pralei&sti"
+msgid "Delete macro"
+msgstr "Šalinti macro"
-msgid "Confirm replace"
-msgstr "Patvirtinti pakeitimą"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Cancel"
-msgstr "Atsisakyti"
+msgid "Macro not deleted"
+msgstr "Macro nepašalinta"
-msgid "NoName"
+msgid "Repeat last commands"
msgstr ""
+msgid "Repeat times:"
+msgstr "Kartojimų skaičius:"
+
msgid "&Open file..."
msgstr "At&verti failą..."
@@ -1627,6 +1543,45 @@
msgid "Editor options"
msgstr "Redaktoriaus parinktys"
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr "&Rasti viską"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr "Pakeisti"
+
+msgid "Replace with:"
+msgstr "Pakeisti:"
+
+msgid "&Replace"
+msgstr "Pa&keisti"
+
+msgid "A&ll"
+msgstr "&Visi"
+
+msgid "&Skip"
+msgstr "Pralei&sti"
+
+msgid "Confirm replace"
+msgstr "Patvirtinti pakeitimą"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Ieškoma %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1634,7 +1589,7 @@
"Lengvas vartoti teksto redaktorius\n"
"sukurtas Midnight Commander aplinkai."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1754,6 +1709,15 @@
msgid "Select language"
msgstr "Pasirinkti kalbą"
+msgid "Choose syntax highlighting"
+msgstr "Pasirinkti sintaksės žymėjimą"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Įkelti esamą sintaksę iš naujo >"
+
msgid "Load syntax file"
msgstr "Įkelti sintaksės failą"
@@ -2150,19 +2114,6 @@
msgstr "Foninio režimo užduotys"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s slaptažodis"
-
-msgid "Domain:"
-msgstr "Domenas:"
-
-msgid "Username:"
-msgstr "Prisijungimo vardas:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2366,12 +2317,6 @@
msgid "Cannot change directory"
msgstr " Nepavyko pakeisti aplanko "
-msgid "Filter"
-msgstr "Filtras"
-
-msgid "Set expression for filtering filenames"
-msgstr "Failų vardų filtro išraiška"
-
#, c-format
msgid "Link %s to:"
msgstr "Sukurti nuorodą iš „%s“ į:"
@@ -2475,9 +2420,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2512,14 +2454,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s failo klaida"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2529,8 +2481,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2789,6 +2741,15 @@
msgid "(stalled)"
msgstr "(sustojo)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "Išlai&kyti"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2801,12 +2762,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Gautas nepilnas failas. Ar jį išlaikyti?"
-
-msgid "&Keep"
-msgstr "Išlai&kyti"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2919,7 +2874,7 @@
msgstr "Foninis procesas: failas egzistuoja"
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2947,7 +2902,7 @@
msgstr "Iš viso: %s"
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -3000,7 +2955,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "Rik. t&varka..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filtras..."
@@ -3014,12 +2969,9 @@
msgid "S&hell link..."
msgstr "Apli&nkos ryšys..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B ryšys..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3233,6 +3185,9 @@
msgid "&Find recursively"
msgstr "&Rasti rekursyviai"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3399,7 +3354,7 @@
msgstr "Nėra informacijos apie vietą"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3648,6 +3603,9 @@
msgid "Unselect"
msgstr "Nebesirinkti"
+msgid "Filter"
+msgstr "Filtras"
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3675,11 +3633,18 @@
msgid "Enter command label:"
msgstr "Įvesti komandos etiketę:"
-msgid "Cannot invoke command."
-msgstr "Nepavyko iškviesti komandos."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Konvejerio užvėrimas nepavyko"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3934,6 +3899,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtualios failų sistemos:"
@@ -4059,16 +4028,22 @@
"Netikėta failo pabaiga\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Nevientisas tar archyvas"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Nepavyko atverti „%s“ archyvo\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Prieštaringas „extfs“ archyvas"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4184,6 +4159,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4235,6 +4225,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Įspėjimas: failas %s nerastas\n"
@@ -4268,6 +4264,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4279,62 +4278,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Klaida %s kuriant aplanką %s"
+msgid "sftp: Enter password for %s "
+msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Klaida %s šalinant aplanką %s"
+msgid "sftp: Password is empty."
+msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/lv.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Latvian (http://www.transifex.com/mc/mc/language/lv/)\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
@@ -73,24 +73,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -165,10 +147,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -522,24 +504,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Brīdinājums"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Direktorija kešs priekš %s izbeidzās"
@@ -665,12 +638,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Iegrāmatot ftp dialogu noteiktā failā"
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Palaiž failam failu skatītāju"
@@ -960,15 +927,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1001,6 +959,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Brīdinājums"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1009,14 +970,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Meklēju %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1062,9 +1015,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1095,27 +1045,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1150,13 +1079,6 @@
msgid "&Local"
msgstr "&Vietēji"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1208,7 +1130,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1259,34 +1181,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Atsaukt"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Aizvietot"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "vi&Si"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Izlaist"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Atsaukt"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1577,12 +1499,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Aizvietot"
+
+msgid "A&ll"
+msgstr "vi&Si"
+
+msgid "&Skip"
+msgstr "&Izlaist"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Meklēju %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1702,6 +1663,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2093,19 +2063,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s Parole"
-
-msgid "Domain:"
-msgstr "Domēns:"
-
-msgid "Username:"
-msgstr "Lietotājvārds:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2309,12 +2266,6 @@
msgid "Cannot change directory"
msgstr "Nevar nomainīt direktoriju"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2418,9 +2369,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2455,14 +2403,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2472,8 +2430,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2708,6 +2666,15 @@
msgid "(stalled)"
msgstr "(staļļots)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Paturēt"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2720,12 +2687,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Tika saņemts nepilns fails. Paturēt to?"
-
-msgid "&Keep"
-msgstr "&Paturēt"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2832,7 +2793,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2860,7 +2821,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2913,7 +2874,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "&Kārtotā secībā..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filtrs..."
@@ -2927,12 +2888,9 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B saite..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3145,6 +3103,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3308,7 +3269,7 @@
msgstr "Nav vietas informācijas"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3555,6 +3516,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3583,11 +3547,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Nevar palais komandu."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Kanāla aizvēršana neizdevās"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3838,6 +3809,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3963,16 +3938,22 @@
"Negaidītas faila beigas\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Neatbilstīgs tar arhīvs"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Nevar atvērt %s arhīvu\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Nepatstāvīgs extfs arhīvs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4089,6 +4070,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4140,6 +4136,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4173,6 +4175,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4184,62 +4189,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/mc.pot
^
|
@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: mc 4.8.25-151-gfd65a1654\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
+"Project-Id-Version: mc 4.8.29-pre1-5-g8a6b2cb91\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,7 +21,7 @@
msgid "Warning: cannot load codepages list"
msgstr ""
-#: lib/charsets.c:220 src/filemanager/boxes.c:388
+#: lib/charsets.c:220 src/filemanager/boxes.c:385
msgid "7-bit ASCII"
msgstr ""
@@ -76,36 +76,15 @@
msgid "&Ignore lock"
msgstr ""
-#: lib/mcconfig/paths.c:136
+#: lib/mcconfig/paths.c:109
#, c-format
msgid "Cannot create %s directory"
msgstr ""
-#: lib/mcconfig/paths.c:156
+#: lib/mcconfig/paths.c:129
msgid "FATAL: not a directory:"
msgstr ""
-#: lib/mcconfig/paths.c:208
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#: lib/mcconfig/paths.c:467
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#: lib/mcconfig/paths.c:473
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
#: lib/search/hex.c:192
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
@@ -144,15 +123,15 @@
msgid "Invalid token number %d"
msgstr ""
-#: lib/search/regex.c:339 lib/search/regex.c:834 src/filemanager/ext.c:746
+#: lib/search/regex.c:337 lib/search/regex.c:830 src/filemanager/ext.c:756
msgid "Regular expression error"
msgstr ""
-#: lib/search/search.c:53 src/diffviewer/ydiff.c:2357
+#: lib/search/search.c:53 src/diffviewer/ydiff.c:2359
msgid "No&rmal"
msgstr ""
-#: lib/search/search.c:54 src/filemanager/find.c:587
+#: lib/search/search.c:54 src/filemanager/find.c:595
msgid "Re&gular expression"
msgstr ""
@@ -194,16 +173,16 @@
"Default skin has been loaded"
msgstr ""
-#: lib/tty/color-ncurses.c:242
+#: lib/tty/color-ncurses.c:244
msgid "True color not supported with ncurses."
msgstr ""
-#: lib/tty/color-slang.c:231
-msgid "True color not supported in this slang version."
+#: lib/tty/color-slang.c:221
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
#: lib/tty/color-slang.c:239
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
#: lib/tty/color-slang.c:250
@@ -587,11 +566,11 @@
msgid "Shift"
msgstr ""
-#: lib/tty/tty.c:106
+#: lib/tty/tty.c:114
msgid "The TERM environment variable is unset!\n"
msgstr ""
-#: lib/tty/tty.c:195
+#: lib/tty/tty.c:206
msgid "Cannot check SIGWINCH pipe"
msgstr ""
@@ -651,125 +630,106 @@
msgid "GiB"
msgstr ""
-#: lib/utilunix.c:521
+#: lib/utilunix.c:513
msgid "Cannot create pipe descriptor"
msgstr ""
-#: lib/utilunix.c:530
+#: lib/utilunix.c:526
msgid "Cannot create pipe streams"
msgstr ""
-#: lib/utilunix.c:609
+#: lib/utilunix.c:605
#, c-format
msgid ""
"Unexpected error in select() reading data from a child process:\n"
"%s"
msgstr ""
-#: lib/utilunix.c:652
+#: lib/utilunix.c:681
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
+#: lib/utilunix.c:699
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-#: lib/utilunix.c:721 lib/utilunix.c:727 lib/utilunix.c:786
-#: src/editor/edit.c:358 src/editor/editcmd.c:231 src/editor/editcmd.c:254
-#: src/editor/editcmd.c:425 src/editor/editcmd.c:585 src/editor/editcmd.c:1706
-#: src/editor/editcmd.c:3453 src/editor/editcmd.c:3482
-#: src/editor/editcmd_dialogs.c:474 src/execute.c:135
-#: src/filemanager/file.c:2390 src/filemanager/panel.c:4510 src/help.c:362
-#: src/main.c:410 src/main.c:454 src/subshell/common.c:1602
-#: src/viewer/actions_cmd.c:461
-msgid "Warning"
-msgstr ""
-
-#: lib/utilunix.c:721 src/filemanager/ext.c:728
-msgid "Pipe failed"
-msgstr ""
-
-#: lib/utilunix.c:727
-msgid "Dup failed"
-msgstr ""
-
-#: lib/utilunix.c:794
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
-#: lib/vfs/direntry.c:271
+#: lib/vfs/direntry.c:272
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
-#: lib/vfs/direntry.c:709
+#: lib/vfs/direntry.c:710
#, c-format
msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
msgstr ""
-#: lib/vfs/direntry.c:712
+#: lib/vfs/direntry.c:713
#, c-format
msgid "%s: %s: %s %lld bytes transferred"
msgstr ""
-#: lib/vfs/direntry.c:1375
+#: lib/vfs/direntry.c:1371
msgid "Starting linear transfer..."
msgstr ""
-#: lib/vfs/direntry.c:1475
+#: lib/vfs/direntry.c:1470
msgid "Getting file"
msgstr ""
-#: lib/vfs/interface.c:173
+#: lib/vfs/interface.c:174
msgid "Changes to file lost"
msgstr ""
-#: lib/vfs/interface.c:840
+#: lib/vfs/interface.c:857
#, c-format
msgid "%s is not a directory\n"
msgstr ""
-#: lib/vfs/interface.c:842
+#: lib/vfs/interface.c:859
#, c-format
msgid "Directory %s is not owned by you\n"
msgstr ""
-#: lib/vfs/interface.c:844
+#: lib/vfs/interface.c:861
#, c-format
msgid "Cannot set correct permissions for directory %s\n"
msgstr ""
-#: lib/vfs/interface.c:849
+#: lib/vfs/interface.c:866
#, c-format
msgid "Cannot create temporary directory %s: %s\n"
msgstr ""
-#: lib/vfs/interface.c:883
+#: lib/vfs/interface.c:900
#, c-format
msgid "Temporary files will be created in %s\n"
msgstr ""
-#: lib/vfs/interface.c:889
+#: lib/vfs/interface.c:906
#, c-format
msgid "Temporary files will not be created\n"
msgstr ""
-#: lib/vfs/interface.c:894 src/execute.c:337
+#: lib/vfs/interface.c:911 src/execute.c:337
msgid "Press any key to continue..."
msgstr ""
-#: lib/vfs/parse_ls_vga.c:872
+#: lib/vfs/parse_ls_vga.c:874
msgid "Cannot parse:"
msgstr ""
-#: lib/vfs/parse_ls_vga.c:875
+#: lib/vfs/parse_ls_vga.c:877
msgid "More parsing errors will be ignored."
msgstr ""
-#: lib/vfs/utilvfs.c:356
+#: lib/vfs/utilvfs.c:363
msgid "Internal error:"
msgstr ""
-#: lib/vfs/utilvfs.c:365 src/filemanager/boxes.c:1350
+#: lib/vfs/utilvfs.c:372
msgid "Password:"
msgstr ""
@@ -782,208 +742,202 @@
msgstr ""
#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
-#: lib/widget/listbox.c:318
+#: lib/widget/listbox.c:319
msgid "DialogTitle|History cleanup"
msgstr ""
-#: lib/widget/listbox.c:319
+#: lib/widget/listbox.c:320
msgid "Do you want clean this history?"
msgstr ""
-#: lib/widget/listbox.c:320 src/diffviewer/ydiff.c:3089 src/editor/edit.c:358
-#: src/editor/editcmd.c:233 src/editor/editcmd.c:256 src/editor/editcmd.c:2863
-#: src/editor/editcmd.c:2869 src/filemanager/cmd.c:140
-#: src/filemanager/file.c:959 src/filemanager/file.c:1956
-#: src/filemanager/filegui.c:458 src/filemanager/filemanager.c:1062
-#: src/filemanager/filemanager.c:1070 src/filemanager/hotlist.c:1159
-#: src/filemanager/hotlist.c:1176 src/filemanager/panel.c:2819
-#: src/filemanager/tree.c:829 src/subshell/common.c:1604
-#: src/viewer/actions_cmd.c:661 src/viewer/actions_cmd.c:667
-#: src/viewer/search.c:398
+#: lib/widget/listbox.c:321 src/diffviewer/ydiff.c:3092 src/editor/edit.c:365
+#: src/editor/editcmd.c:186 src/editor/editcmd.c:209 src/editor/editcmd.c:1527
+#: src/editor/editcmd.c:1533 src/filemanager/cmd.c:138
+#: src/filemanager/file.c:1011 src/filemanager/file.c:2020
+#: src/filemanager/filegui.c:480 src/filemanager/filemanager.c:1062
+#: src/filemanager/filemanager.c:1070 src/filemanager/hotlist.c:1162
+#: src/filemanager/hotlist.c:1179 src/filemanager/panel.c:2895
+#: src/filemanager/tree.c:829 src/subshell/common.c:1657
+#: src/vfs/sftpfs/connection.c:519 src/vfs/sftpfs/connection.c:531
+#: src/viewer/actions_cmd.c:643 src/viewer/actions_cmd.c:649
+#: src/viewer/search.c:450
msgid "&Yes"
msgstr ""
-#: lib/widget/listbox.c:320 src/diffviewer/ydiff.c:3089 src/editor/edit.c:358
-#: src/editor/editcmd.c:233 src/editor/editcmd.c:2863 src/editor/editcmd.c:2869
-#: src/filemanager/cmd.c:140 src/filemanager/file.c:959
-#: src/filemanager/file.c:1956 src/filemanager/filegui.c:460
+#: lib/widget/listbox.c:321 src/diffviewer/ydiff.c:3092 src/editor/edit.c:365
+#: src/editor/editcmd.c:186 src/editor/editcmd.c:1527 src/editor/editcmd.c:1533
+#: src/filemanager/cmd.c:138 src/filemanager/file.c:1011
+#: src/filemanager/file.c:2020 src/filemanager/filegui.c:482
#: src/filemanager/filemanager.c:1062 src/filemanager/filemanager.c:1070
-#: src/filemanager/hotlist.c:1159 src/filemanager/hotlist.c:1176
-#: src/filemanager/panel.c:2819 src/filemanager/tree.c:829
-#: src/subshell/common.c:1604 src/viewer/actions_cmd.c:661
-#: src/viewer/actions_cmd.c:667 src/viewer/search.c:399
+#: src/filemanager/hotlist.c:1162 src/filemanager/hotlist.c:1179
+#: src/filemanager/panel.c:2895 src/filemanager/tree.c:829
+#: src/subshell/common.c:1657 src/vfs/sftpfs/connection.c:519
+#: src/vfs/sftpfs/connection.c:531 src/viewer/actions_cmd.c:643
+#: src/viewer/actions_cmd.c:649 src/viewer/search.c:451
msgid "&No"
msgstr ""
-#: lib/widget/quick.h:215 src/editor/editcmd.c:2730
-#: src/editor/editcmd_dialogs.c:121 src/editor/editwidget.c:151
-#: src/filemanager/boxes.c:1271 src/filemanager/filegui.c:1357
-#: src/filemanager/find.c:595 src/filemanager/layout.c:508 src/main.c:413
+#: lib/widget/quick.h:215 src/editor/editsearch.c:103
+#: src/editor/editsearch.c:1013 src/editor/editwidget.c:157
+#: src/filemanager/boxes.c:1291 src/filemanager/filegui.c:1384
+#: src/filemanager/find.c:603 src/filemanager/layout.c:508 src/main.c:411
msgid "&OK"
msgstr ""
-#: lib/widget/quick.h:216 src/editor/editcmd.c:233 src/editor/editcmd.c:256
-#: src/editor/editcmd.c:427 src/editor/editcmd.c:587 src/editor/editcmd.c:1707
-#: src/editor/editcmd.c:2049 src/editor/editcmd.c:2863
-#: src/editor/editcmd.c:3456 src/editor/editcmd.c:3485
-#: src/editor/editcmd_dialogs.c:123 src/editor/editcmd_dialogs.c:282
-#: src/editor/editcmd_dialogs.c:476 src/editor/spell_dialogs.c:100
-#: src/filemanager/achown.c:87 src/filemanager/achown.c:860
-#: src/filemanager/achown.c:895 src/filemanager/chattr.c:234
-#: src/filemanager/chattr.c:1105 src/filemanager/chmod.c:115
-#: src/filemanager/chmod.c:438 src/filemanager/chown.c:87
-#: src/filemanager/chown.c:311 src/filemanager/cmd.c:1146
-#: src/filemanager/filegui.c:1361 src/filemanager/find.c:595
-#: src/filemanager/hotlist.c:183 src/filemanager/hotlist.c:1015
-#: src/filemanager/hotlist.c:1077 src/filemanager/layout.c:509
-#: src/filemanager/panelize.c:143 src/learn.c:258 src/viewer/hex.c:431
+#: lib/widget/quick.h:216 src/editor/editcmd.c:186 src/editor/editcmd.c:209
+#: src/editor/editcmd.c:380 src/editor/editcmd.c:524 src/editor/editcmd.c:944
+#: src/editor/editcmd.c:1021 src/editor/editcmd.c:1527
+#: src/editor/editcmd.c:2023 src/editor/editcmd.c:2052
+#: src/editor/editsearch.c:105 src/editor/editsearch.c:247
+#: src/editor/etags.c:374 src/editor/spell.c:767 src/filemanager/achown.c:87
+#: src/filemanager/achown.c:861 src/filemanager/achown.c:896
+#: src/filemanager/chattr.c:233 src/filemanager/chattr.c:1120
+#: src/filemanager/chmod.c:115 src/filemanager/chmod.c:438
+#: src/filemanager/chown.c:87 src/filemanager/chown.c:311
+#: src/filemanager/cmd.c:1021 src/filemanager/filegui.c:1388
+#: src/filemanager/find.c:603 src/filemanager/hotlist.c:183
+#: src/filemanager/hotlist.c:1016 src/filemanager/hotlist.c:1079
+#: src/filemanager/layout.c:509 src/filemanager/panelize.c:144 src/learn.c:258
+#: src/viewer/hex.c:429
msgid "&Cancel"
msgstr ""
-#: lib/widget/wtools.c:165
+#: lib/widget/wtools.c:168
msgid "Background process:"
msgstr ""
-#: lib/widget/wtools.c:288 lib/widget/wtools.c:417 src/editor/edit.c:193
-#: src/editor/edit.c:214 src/editor/edit.c:370 src/editor/edit.c:1977
-#: src/editor/edit.c:1987 src/editor/editcmd.c:318 src/editor/editcmd.c:328
-#: src/editor/editcmd.c:371 src/editor/editcmd.c:2967 src/editor/spell.c:315
-#: src/editor/spell.c:551 src/editor/spell.c:559
-#: tests/src/execute__common.c:145
-#: tests/src/execute__execute_with_vfs_arg.c:154
+#: lib/widget/wtools.c:293 lib/widget/wtools.c:422 src/editor/edit.c:200
+#: src/editor/edit.c:221 src/editor/edit.c:377 src/editor/edit.c:1984
+#: src/editor/edit.c:1994 src/editor/editcmd.c:271 src/editor/editcmd.c:281
+#: src/editor/editcmd.c:324 src/editor/editcmd.c:1631 src/editor/spell.c:322
+#: src/editor/spell.c:558 src/editor/spell.c:566
+#: tests/src/execute__common.c:152
+#: tests/src/execute__execute_with_vfs_arg.c:152
msgid "Error"
msgstr ""
-#: lib/widget/wtools.c:451
+#: lib/widget/wtools.c:456
#, c-format
msgid "%s (%d)"
msgstr ""
-#: lib/widget/wtools.c:696 src/filemanager/file.c:838
-#: src/filemanager/file.c:912 src/filemanager/file.c:914
-#: src/filemanager/file.c:960 src/filemanager/file.c:3077
-#: src/filemanager/filegui.c:255 src/filemanager/filegui.c:482
+#: lib/widget/wtools.c:702 src/filemanager/file.c:890
+#: src/filemanager/file.c:964 src/filemanager/file.c:966
+#: src/filemanager/file.c:1012 src/filemanager/file.c:3172
+#: src/filemanager/filegui.c:255 src/filemanager/filegui.c:504
msgid "&Abort"
msgstr ""
-#: src/args.c:110
+#: src/args.c:101
msgid "Displays the current version"
msgstr ""
-#: src/args.c:118
+#: src/args.c:109
msgid "Print data directory"
msgstr ""
-#: src/args.c:126
+#: src/args.c:117
msgid "Print extended info about used data directories"
msgstr ""
-#: src/args.c:135
+#: src/args.c:126
msgid "Print configure options"
msgstr ""
-#: src/args.c:143
+#: src/args.c:134
msgid "Print last working directory to specified file"
msgstr ""
-#: src/args.c:144 src/args.c:169 src/args.c:186 src/args.c:271
+#: src/args.c:135 src/args.c:160 src/args.c:169 src/args.c:253
msgid "<file>"
msgstr ""
-#: src/args.c:151
+#: src/args.c:142
msgid "Enables subshell support (default)"
msgstr ""
-#: src/args.c:158
+#: src/args.c:149
msgid "Disables subshell support"
msgstr ""
-#: src/args.c:168
+#: src/args.c:159
msgid "Log ftp dialog to specified file"
msgstr ""
-#: src/args.c:176
-msgid "Set debug level"
-msgstr ""
-
-#: src/args.c:177
-msgid "<integer>"
-msgstr ""
-
-#: src/args.c:185
+#: src/args.c:168
msgid "Launches the file viewer on a file"
msgstr ""
-#: src/args.c:193
+#: src/args.c:176
msgid "Edit files"
msgstr ""
-#: src/args.c:194
+#: src/args.c:177
msgid "<file> ..."
msgstr ""
-#: src/args.c:210
+#: src/args.c:192
msgid "Forces xterm features"
msgstr ""
-#: src/args.c:217
+#: src/args.c:199
msgid "Disable X11 support"
msgstr ""
-#: src/args.c:224
+#: src/args.c:206
msgid "Tries to use an old highlight mouse tracking"
msgstr ""
-#: src/args.c:231
+#: src/args.c:213
msgid "Disable mouse support in text version"
msgstr ""
-#: src/args.c:239
+#: src/args.c:221
msgid "Tries to use termcap instead of terminfo"
msgstr ""
-#: src/args.c:247
+#: src/args.c:229
msgid "To run on slow terminals"
msgstr ""
-#: src/args.c:254
+#: src/args.c:236
msgid "Use stickchars to draw"
msgstr ""
-#: src/args.c:262
+#: src/args.c:244
msgid "Resets soft keys on HP terminals"
msgstr ""
-#: src/args.c:270
+#: src/args.c:252
msgid "Load definitions of key bindings from specified file"
msgstr ""
-#: src/args.c:277
+#: src/args.c:259
msgid "Don't load definitions of key bindings from file, use defaults"
msgstr ""
-#: src/args.c:298
+#: src/args.c:278
msgid "Requests to run in black and white"
msgstr ""
-#: src/args.c:305
+#: src/args.c:285
msgid "Request to run in color mode"
msgstr ""
-#: src/args.c:312
+#: src/args.c:292
msgid "Specifies a color configuration"
msgstr ""
-#: src/args.c:313 src/args.c:320
+#: src/args.c:293 src/args.c:300
msgid "<string>"
msgstr ""
-#: src/args.c:319
+#: src/args.c:299
msgid "Show mc with specified skin"
msgstr ""
#. TRANSLATORS: don't translate keywords
-#: src/args.c:357
+#: src/args.c:336
msgid ""
"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n"
"\n"
@@ -1006,7 +960,7 @@
msgstr ""
#. TRANSLATORS: don't translate color names and attributes
-#: src/args.c:374
+#: src/args.c:353
msgid ""
"Standard Colors:\n"
" black, gray, red, brightred, green, brightgreen, brown,\n"
@@ -1020,55 +974,55 @@
" bold, italic, underline, reverse, blink; append more with '+'\n"
msgstr ""
-#: src/args.c:386
+#: src/args.c:365
msgid "Color options"
msgstr ""
-#: src/args.c:400
+#: src/args.c:379
msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
msgstr ""
-#: src/args.c:403 src/filemanager/file.c:168
+#: src/args.c:382 src/filemanager/file.c:172
msgid "file"
msgstr ""
-#: src/args.c:407
+#: src/args.c:386
msgid "file1 file2"
msgstr ""
-#: src/args.c:412
+#: src/args.c:391
msgid "[this_dir] [other_panel_dir]"
msgstr ""
-#: src/args.c:427
+#: src/args.c:406
msgid ""
"\n"
"Please send any bug reports (including the output of 'mc -V')\n"
"as tickets at www.midnight-commander.org\n"
msgstr ""
-#: src/args.c:430 src/filemanager/filemanager.c:1762 src/textconf.c:141
+#: src/args.c:410 src/filemanager/filemanager.c:1752 src/textconf.c:142
#, c-format
msgid "GNU Midnight Commander %s\n"
msgstr ""
-#: src/args.c:683 src/filemanager/boxes.c:688
+#: src/args.c:663 src/filemanager/boxes.c:693
msgid "Main options"
msgstr ""
-#: src/args.c:689 src/args.c:690
+#: src/args.c:669 src/args.c:670
msgid "Terminal options"
msgstr ""
-#: src/args.c:705
+#: src/args.c:685
msgid "Arguments parse error!"
msgstr ""
-#: src/args.c:825
+#: src/args.c:795
msgid "No arguments given to the viewer."
msgstr ""
-#: src/args.c:837
+#: src/args.c:807
msgid "Two files are required to envoke the diffviewer."
msgstr ""
@@ -1080,7 +1034,7 @@
msgid "Reading failed"
msgstr ""
-#: src/background.c:219 src/filemanager/file.c:835 src/filemanager/file.c:907
+#: src/background.c:219 src/filemanager/file.c:859 src/filemanager/file.c:959
msgid "Background process error"
msgstr ""
@@ -1098,63 +1052,63 @@
"than we can handle."
msgstr ""
-#: src/diffviewer/internal.h:15 src/diffviewer/search.c:229
-#: src/editor/edit-impl.h:74 src/editor/edit-impl.h:75 src/viewer/search.c:430
-#: src/viewer/search.c:432
+#: src/diffviewer/internal.h:15 src/diffviewer/search.c:230
+#: src/editor/edit-impl.h:74 src/editor/edit-impl.h:75 src/viewer/search.c:482
+#: src/viewer/search.c:484
msgid "&Dismiss"
msgstr ""
-#: src/diffviewer/search.c:85 src/editor/editcmd_dialogs.c:104
-#: src/editor/editcmd_dialogs.c:199 src/viewer/dialogs.c:89
+#: src/diffviewer/search.c:85 src/editor/editsearch.c:86
+#: src/editor/editsearch.c:164 src/viewer/dialogs.c:81
msgid "Enter search string:"
msgstr ""
-#: src/diffviewer/search.c:92 src/editor/editcmd_dialogs.c:112
-#: src/editor/editcmd_dialogs.c:209 src/filemanager/boxes.c:681
-#: src/filemanager/boxes.c:886 src/filemanager/find.c:581
-#: src/viewer/dialogs.c:97
+#: src/diffviewer/search.c:92 src/editor/editsearch.c:94
+#: src/editor/editsearch.c:174 src/filemanager/boxes.c:686
+#: src/filemanager/boxes.c:893 src/filemanager/find.c:589
+#: src/viewer/dialogs.c:89
msgid "Cas&e sensitive"
msgstr ""
-#: src/diffviewer/search.c:93 src/editor/editcmd_dialogs.c:113
-#: src/editor/editcmd_dialogs.c:210 src/viewer/dialogs.c:98
+#: src/diffviewer/search.c:93 src/editor/editsearch.c:95
+#: src/editor/editsearch.c:175 src/viewer/dialogs.c:90
msgid "&Backwards"
msgstr ""
-#: src/diffviewer/search.c:94 src/editor/editcmd_dialogs.c:115
-#: src/editor/editcmd_dialogs.c:212 src/filemanager/find.c:592
-#: src/viewer/dialogs.c:99
+#: src/diffviewer/search.c:94 src/editor/editsearch.c:97
+#: src/editor/editsearch.c:177 src/filemanager/find.c:600
+#: src/viewer/dialogs.c:91
msgid "&Whole words"
msgstr ""
-#: src/diffviewer/search.c:96 src/editor/editcmd_dialogs.c:117
-#: src/editor/editcmd_dialogs.c:214 src/filemanager/find.c:579
-#: src/viewer/dialogs.c:101
+#: src/diffviewer/search.c:96 src/editor/editsearch.c:99
+#: src/editor/editsearch.c:179 src/filemanager/find.c:587
+#: src/viewer/dialogs.c:93
msgid "&All charsets"
msgstr ""
-#: src/diffviewer/search.c:106 src/diffviewer/search.c:229
-#: src/diffviewer/search.c:242 src/diffviewer/search.c:275
-#: src/editor/editcmd.c:960 src/editor/editcmd.c:986 src/editor/editcmd.c:1015
-#: src/editor/editcmd.c:2614 src/editor/editcmd.c:2625
-#: src/editor/editcmd_dialogs.c:130 src/viewer/dialogs.c:111
-#: src/viewer/search.c:350 src/viewer/search.c:410 src/viewer/search.c:430
-#: src/viewer/search.c:432
+#: src/diffviewer/search.c:107 src/diffviewer/search.c:230
+#: src/diffviewer/search.c:243 src/diffviewer/search.c:276
+#: src/editor/editsearch.c:113 src/editor/editsearch.c:592
+#: src/editor/editsearch.c:618 src/editor/editsearch.c:647
+#: src/editor/editsearch.c:897 src/editor/editsearch.c:908
+#: src/viewer/dialogs.c:104 src/viewer/search.c:402 src/viewer/search.c:462
+#: src/viewer/search.c:482 src/viewer/search.c:484
msgid "Search"
msgstr ""
-#: src/diffviewer/search.c:242 src/diffviewer/search.c:275
+#: src/diffviewer/search.c:243 src/diffviewer/search.c:276
msgid "Search is disabled"
msgstr ""
-#: src/diffviewer/ydiff.c:176
+#: src/diffviewer/ydiff.c:178
#, c-format
msgid ""
"Cannot create temporary diff file\n"
"%s"
msgstr ""
-#: src/diffviewer/ydiff.c:2208
+#: src/diffviewer/ydiff.c:2210
#, c-format
msgid ""
"Cannot create backup file\n"
@@ -1162,588 +1116,529 @@
"%s"
msgstr ""
-#: src/diffviewer/ydiff.c:2217
+#: src/diffviewer/ydiff.c:2219
#, c-format
msgid ""
"Cannot create temporary merge file\n"
"%s"
msgstr ""
-#: src/diffviewer/ydiff.c:2358
+#: src/diffviewer/ydiff.c:2360
msgid "&Fastest (Assume large files)"
msgstr ""
-#: src/diffviewer/ydiff.c:2359
+#: src/diffviewer/ydiff.c:2361
msgid "&Minimal (Find a smaller set of change)"
msgstr ""
-#: src/diffviewer/ydiff.c:2364
+#: src/diffviewer/ydiff.c:2366
msgid "Diff algorithm"
msgstr ""
-#: src/diffviewer/ydiff.c:2367
+#: src/diffviewer/ydiff.c:2369
msgid "Diff extra options"
msgstr ""
-#: src/diffviewer/ydiff.c:2368
+#: src/diffviewer/ydiff.c:2370
msgid "&Ignore case"
msgstr ""
-#: src/diffviewer/ydiff.c:2369
+#: src/diffviewer/ydiff.c:2371
msgid "Ignore tab &expansion"
msgstr ""
-#: src/diffviewer/ydiff.c:2370
+#: src/diffviewer/ydiff.c:2372
msgid "Ignore &space change"
msgstr ""
-#: src/diffviewer/ydiff.c:2371
+#: src/diffviewer/ydiff.c:2373
msgid "Ignore all &whitespace"
msgstr ""
-#: src/diffviewer/ydiff.c:2372
+#: src/diffviewer/ydiff.c:2374
msgid "Strip &trailing carriage return"
msgstr ""
-#: src/diffviewer/ydiff.c:2382
+#: src/diffviewer/ydiff.c:2385
msgid "Diff Options"
msgstr ""
-#: src/diffviewer/ydiff.c:2891
+#: src/diffviewer/ydiff.c:2894
msgid "Edit"
msgstr ""
-#: src/diffviewer/ydiff.c:2891
+#: src/diffviewer/ydiff.c:2894
msgid "Edit is disabled"
msgstr ""
-#: src/diffviewer/ydiff.c:2925
+#: src/diffviewer/ydiff.c:2928
msgid "Goto line (left)"
msgstr ""
-#: src/diffviewer/ydiff.c:2926
+#: src/diffviewer/ydiff.c:2929
msgid "Goto line (right)"
msgstr ""
-#: src/diffviewer/ydiff.c:2934 src/editor/editcmd.c:3050
+#: src/diffviewer/ydiff.c:2937 src/editor/editcmd.c:1714
msgid "Enter line:"
msgstr ""
-#: src/diffviewer/ydiff.c:2973 src/editor/editwidget.c:660
-#: src/filemanager/filemanager.c:1649 src/filemanager/tree.c:1172
-#: src/help.c:1165 src/viewer/display.c:87
+#: src/diffviewer/ydiff.c:2976 src/editor/editwidget.c:674
+#: src/filemanager/filemanager.c:1640 src/filemanager/tree.c:1172
+#: src/help.c:1163 src/viewer/display.c:87
msgid "ButtonBar|Help"
msgstr ""
-#: src/diffviewer/ydiff.c:2974 src/editor/editwidget.c:661
+#: src/diffviewer/ydiff.c:2977 src/editor/editwidget.c:675
#: src/viewer/display.c:99
msgid "ButtonBar|Save"
msgstr ""
-#: src/diffviewer/ydiff.c:2975 src/filemanager/filemanager.c:1652
+#: src/diffviewer/ydiff.c:2978 src/filemanager/filemanager.c:1643
#: src/viewer/display.c:94
msgid "ButtonBar|Edit"
msgstr ""
-#: src/diffviewer/ydiff.c:2976
+#: src/diffviewer/ydiff.c:2979
msgid "ButtonBar|Merge"
msgstr ""
-#: src/diffviewer/ydiff.c:2977 src/editor/editwidget.c:666
+#: src/diffviewer/ydiff.c:2980 src/editor/editwidget.c:680
#: src/viewer/display.c:109
msgid "ButtonBar|Search"
msgstr ""
-#: src/diffviewer/ydiff.c:2978
+#: src/diffviewer/ydiff.c:2981
msgid "ButtonBar|Options"
msgstr ""
-#: src/diffviewer/ydiff.c:2979 src/editor/editwidget.c:669
-#: src/filemanager/filemanager.c:1658 src/help.c:1174 src/viewer/display.c:118
+#: src/diffviewer/ydiff.c:2982 src/editor/editwidget.c:683
+#: src/filemanager/filemanager.c:1649 src/help.c:1172 src/viewer/display.c:118
#: src/viewer/display.c:121
msgid "ButtonBar|Quit"
msgstr ""
-#: src/diffviewer/ydiff.c:3086 src/editor/editcmd.c:2869
-#: src/viewer/actions_cmd.c:659 src/viewer/actions_cmd.c:665
+#: src/diffviewer/ydiff.c:3089 src/editor/editcmd.c:1533
+#: src/viewer/actions_cmd.c:641 src/viewer/actions_cmd.c:647
msgid "Quit"
msgstr ""
-#: src/diffviewer/ydiff.c:3087
+#: src/diffviewer/ydiff.c:3090
msgid "File(s) was modified. Save with exit?"
msgstr ""
-#: src/diffviewer/ydiff.c:3088
+#: src/diffviewer/ydiff.c:3091
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file(s)?"
msgstr ""
-#: src/diffviewer/ydiff.c:3421 src/diffviewer/ydiff.c:3424
+#: src/diffviewer/ydiff.c:3424 src/diffviewer/ydiff.c:3427
msgid "Diff:"
msgstr ""
-#: src/diffviewer/ydiff.c:3540 src/diffviewer/ydiff.c:3550
-#: src/diffviewer/ydiff.c:3570 src/diffviewer/ydiff.c:3587
+#: src/diffviewer/ydiff.c:3547 src/diffviewer/ydiff.c:3558
+#: src/diffviewer/ydiff.c:3578 src/diffviewer/ydiff.c:3595
#, c-format
msgid "\"%s\" is a directory"
msgstr ""
-#: src/diffviewer/ydiff.c:3576 src/diffviewer/ydiff.c:3593
-#: src/filemanager/file.c:1763 src/viewer/mcviewer.c:349
+#: src/diffviewer/ydiff.c:3584 src/diffviewer/ydiff.c:3601
+#: src/filemanager/file.c:1827 src/viewer/mcviewer.c:352
#, c-format
msgid ""
"Cannot stat \"%s\"\n"
"%s"
msgstr ""
-#: src/diffviewer/ydiff.c:3602
+#: src/diffviewer/ydiff.c:3610
msgid "Diff viewer: invalid mode"
msgstr ""
-#: src/diffviewer/ydiff.c:3631
+#: src/diffviewer/ydiff.c:3639
msgid "Two files are needed to compare"
msgstr ""
-#: src/editor/choosesyntax.c:76
-msgid "Choose syntax highlighting"
-msgstr ""
-
-#: src/editor/choosesyntax.c:77
-msgid "< Auto >"
-msgstr ""
-
-#: src/editor/choosesyntax.c:78
-msgid "< Reload Current Syntax >"
-msgstr ""
-
-#: src/editor/edit.c:152
+#: src/editor/edit.c:156
#, c-format
msgid "Loading: %3d%%"
msgstr ""
-#: src/editor/edit.c:155
+#: src/editor/edit.c:159
msgid "Loading..."
msgstr ""
-#: src/editor/edit.c:192 src/editor/edit.c:310
+#: src/editor/edit.c:199 src/editor/edit.c:317
#, c-format
msgid "Cannot open %s for reading"
msgstr ""
-#: src/editor/edit.c:202
+#: src/editor/edit.c:209
msgid "Load file"
msgstr ""
-#: src/editor/edit.c:213
+#: src/editor/edit.c:220
#, c-format
msgid "Error reading %s"
msgstr ""
-#: src/editor/edit.c:322
+#: src/editor/edit.c:329
#, c-format
msgid "Cannot get size/permissions for %s"
msgstr ""
-#: src/editor/edit.c:331
+#: src/editor/edit.c:338
#, c-format
msgid "\"%s\" is not a regular file"
msgstr ""
-#: src/editor/edit.c:356
+#: src/editor/edit.c:363
#, c-format
msgid ""
"File \"%s\" is too large.\n"
"Open it anyway?"
msgstr ""
-#: src/editor/edit.c:1976
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#: src/editor/edit.c:1986
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+#: src/editor/edit.c:365 src/editor/editcmd.c:184 src/editor/editcmd.c:207
+#: src/editor/editcmd.c:378 src/editor/editcmd.c:522 src/editor/editcmd.c:943
+#: src/editor/editcmd.c:2020 src/editor/editcmd.c:2049 src/editor/etags.c:372
+#: src/execute.c:135 src/filemanager/ext.c:773 src/filemanager/file.c:2459
+#: src/filemanager/panel.c:4641 src/help.c:362 src/main.c:408
+#: src/subshell/common.c:1655 src/vfs/sftpfs/connection.c:519
+#: src/viewer/actions_cmd.c:443
+msgid "Warning"
msgstr ""
-#: src/editor/editcmd.c:128 src/viewer/search.c:82
+#: src/editor/edit.c:1983
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
-#: src/editor/editcmd.c:131 src/filemanager/find.c:1327 src/viewer/search.c:85
+#: src/editor/edit.c:1993
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
-#: src/editor/editcmd.c:232
+#: src/editor/editcmd.c:185
msgid "File has hard-links. Detach before saving?"
msgstr ""
-#: src/editor/editcmd.c:255
+#: src/editor/editcmd.c:208
msgid "The file has been modified in the meantime. Save anyway?"
msgstr ""
-#: src/editor/editcmd.c:317
+#: src/editor/editcmd.c:270
#, c-format
msgid "Error writing to pipe: %s"
msgstr ""
-#: src/editor/editcmd.c:327
+#: src/editor/editcmd.c:280
#, c-format
msgid "Cannot open pipe for writing: %s"
msgstr ""
-#: src/editor/editcmd.c:370
+#: src/editor/editcmd.c:323
#, c-format
msgid "Cannot open file for writing: %s"
msgstr ""
-#: src/editor/editcmd.c:426
+#: src/editor/editcmd.c:379
msgid "The file you are saving does not end with a newline."
msgstr ""
-#: src/editor/editcmd.c:427 src/editor/editcmd.c:587 src/editor/editcmd.c:3455
-#: src/editor/editcmd.c:3484 src/editor/editcmd_dialogs.c:476
+#: src/editor/editcmd.c:380 src/editor/editcmd.c:524 src/editor/editcmd.c:2022
+#: src/editor/editcmd.c:2051 src/editor/etags.c:374
msgid "C&ontinue"
msgstr ""
-#: src/editor/editcmd.c:440
+#: src/editor/editcmd.c:393
msgid "&Do not change"
msgstr ""
-#: src/editor/editcmd.c:441
+#: src/editor/editcmd.c:394
msgid "&Unix format (LF)"
msgstr ""
-#: src/editor/editcmd.c:442
+#: src/editor/editcmd.c:395
msgid "&Windows/DOS format (CR LF)"
msgstr ""
-#: src/editor/editcmd.c:443
+#: src/editor/editcmd.c:396
msgid "&Macintosh format (CR)"
msgstr ""
-#: src/editor/editcmd.c:448 src/editor/editcmd.c:2071 src/editor/editcmd.c:3091
-#: src/editor/editcmd.c:3122 src/filemanager/cmd.c:751
+#: src/editor/editcmd.c:401 src/editor/editcmd.c:1043 src/editor/editcmd.c:1755
+#: src/editor/editcmd.c:1786 src/filemanager/cmd.c:730
msgid "Enter file name:"
msgstr ""
-#: src/editor/editcmd.c:452
+#: src/editor/editcmd.c:405
msgid "Change line breaks to:"
msgstr ""
-#: src/editor/editcmd.c:461
+#: src/editor/editcmd.c:415
msgid "Save As"
msgstr ""
-#: src/editor/editcmd.c:1251
-msgid "Collect completions"
-msgstr ""
-
-#: src/editor/editcmd.c:1606
+#: src/editor/editcmd.c:842
msgid "&Quick save"
msgstr ""
-#: src/editor/editcmd.c:1607
+#: src/editor/editcmd.c:843
msgid "&Safe save"
msgstr ""
-#: src/editor/editcmd.c:1608
+#: src/editor/editcmd.c:844
msgid "&Do backups with following extension:"
msgstr ""
-#: src/editor/editcmd.c:1627
+#: src/editor/editcmd.c:863
msgid "Check &POSIX new line"
msgstr ""
-#: src/editor/editcmd.c:1635
+#: src/editor/editcmd.c:872
msgid "Edit Save Mode"
msgstr ""
-#: src/editor/editcmd.c:1689 src/editor/editcmd.c:1748
+#: src/editor/editcmd.c:926 src/editor/editcmd.c:985
msgid "Save as"
msgstr ""
-#: src/editor/editcmd.c:1691
+#: src/editor/editcmd.c:928
msgid "Cannot save: destination is not a regular file"
msgstr ""
-#: src/editor/editcmd.c:1707
+#: src/editor/editcmd.c:944
msgid "A file already exists with this name"
msgstr ""
-#: src/editor/editcmd.c:1707
+#: src/editor/editcmd.c:944
msgid "&Overwrite"
msgstr ""
-#: src/editor/editcmd.c:1748 src/editor/editcmd.c:3101
+#: src/editor/editcmd.c:985 src/editor/editcmd.c:1765
msgid "Cannot save file"
msgstr ""
-#: src/editor/editcmd.c:1773 src/editor/editcmd.c:1776
-msgid "Delete macro"
-msgstr ""
-
-#: src/editor/editcmd.c:1773
-msgid "Press macro hotkey:"
-msgstr ""
-
-#: src/editor/editcmd.c:1776
-msgid "Macro not deleted"
-msgstr ""
-
-#: src/editor/editcmd.c:1831
-msgid "Save macro"
-msgstr ""
-
-#: src/editor/editcmd.c:1831
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-#: src/editor/editcmd.c:1907
-msgid "Repeat last commands"
-msgstr ""
-
-#: src/editor/editcmd.c:1907
-msgid "Repeat times:"
-msgstr ""
-
-#: src/editor/editcmd.c:2047
+#: src/editor/editcmd.c:1019
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
-#: src/editor/editcmd.c:2049 src/viewer/hex.c:419 src/viewer/hex.c:431
+#: src/editor/editcmd.c:1021 src/viewer/hex.c:417 src/viewer/hex.c:429
msgid "Save file"
msgstr ""
-#: src/editor/editcmd.c:2049 src/editor/editmenu.c:78 src/learn.c:192
+#: src/editor/editcmd.c:1021 src/editor/editmenu.c:78 src/learn.c:192
#: src/learn.c:257
msgid "&Save"
msgstr ""
-#: src/editor/editcmd.c:2071
+#: src/editor/editcmd.c:1043
msgid "Load"
msgstr ""
-#: src/editor/editcmd.c:2133
+#: src/editor/editcmd.c:1126
msgid "Syntax file edit"
msgstr ""
-#: src/editor/editcmd.c:2134
+#: src/editor/editcmd.c:1127
msgid "Which syntax file you want to edit?"
msgstr ""
-#: src/editor/editcmd.c:2135 src/editor/editcmd.c:2181
-#: src/filemanager/cmd.c:951 src/filemanager/cmd.c:992
-#: src/filemanager/cmd.c:1050
+#: src/editor/editcmd.c:1128 src/editor/editcmd.c:1174
+#: src/filemanager/cmd.c:826 src/filemanager/cmd.c:867
+#: src/filemanager/cmd.c:925
msgid "&User"
msgstr ""
-#: src/editor/editcmd.c:2135 src/editor/editcmd.c:2181
+#: src/editor/editcmd.c:1128 src/editor/editcmd.c:1174
msgid "&System wide"
msgstr ""
-#: src/editor/editcmd.c:2179 src/filemanager/cmd.c:990
+#: src/editor/editcmd.c:1172 src/filemanager/cmd.c:865
msgid "Menu edit"
msgstr ""
-#: src/editor/editcmd.c:2180 src/filemanager/cmd.c:991
+#: src/editor/editcmd.c:1173 src/filemanager/cmd.c:866
msgid "Which menu file do you want to edit?"
msgstr ""
-#: src/editor/editcmd.c:2181 src/filemanager/cmd.c:992
+#: src/editor/editcmd.c:1174 src/filemanager/cmd.c:867
msgid "&Local"
msgstr ""
-#: src/editor/editcmd.c:2690 src/editor/editcmd.c:2730
-#: src/editor/editcmd.c:2742 src/editor/editcmd_dialogs.c:224
-msgid "Replace"
-msgstr ""
-
-#: src/editor/editcmd.c:2742
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
-#: src/editor/editcmd.c:2844 src/editor/editwidget.c:369
+#: src/editor/editcmd.c:1508 src/editor/editwidget.c:384
msgid "[NoName]"
msgstr ""
-#: src/editor/editcmd.c:2862
+#: src/editor/editcmd.c:1526
#, c-format
msgid ""
"File %s was modified.\n"
"Save before close?"
msgstr ""
-#: src/editor/editcmd.c:2863
+#: src/editor/editcmd.c:1527
msgid "Close file"
msgstr ""
-#: src/editor/editcmd.c:2867
+#: src/editor/editcmd.c:1531
#, c-format
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file %s?"
msgstr ""
-#: src/editor/editcmd.c:2967
+#: src/editor/editcmd.c:1631
msgid "This function is not implemented"
msgstr ""
-#: src/editor/editcmd.c:2982
+#: src/editor/editcmd.c:1646
msgid "Copy to clipboard"
msgstr ""
-#: src/editor/editcmd.c:2982 src/editor/editcmd.c:3006
+#: src/editor/editcmd.c:1646 src/editor/editcmd.c:1670
msgid "Unable to save to file"
msgstr ""
-#: src/editor/editcmd.c:3006
+#: src/editor/editcmd.c:1670
msgid "Cut to clipboard"
msgstr ""
-#: src/editor/editcmd.c:3050
+#: src/editor/editcmd.c:1714
msgid "Goto line"
msgstr ""
-#: src/editor/editcmd.c:3091 src/editor/editcmd.c:3101
+#: src/editor/editcmd.c:1755 src/editor/editcmd.c:1765
msgid "Save block"
msgstr ""
-#: src/editor/editcmd.c:3122 src/editor/editcmd.c:3137
+#: src/editor/editcmd.c:1786 src/editor/editcmd.c:1801
msgid "Insert file"
msgstr ""
-#: src/editor/editcmd.c:3137
+#: src/editor/editcmd.c:1801
msgid "Cannot insert file"
msgstr ""
-#: src/editor/editcmd.c:3158
+#: src/editor/editcmd.c:1822
msgid "Sort block"
msgstr ""
-#: src/editor/editcmd.c:3158
+#: src/editor/editcmd.c:1822
msgid "You must first highlight a block of text"
msgstr ""
-#: src/editor/editcmd.c:3166
+#: src/editor/editcmd.c:1830
msgid "Run sort"
msgstr ""
-#: src/editor/editcmd.c:3167
-msgid "Enter sort options (see manpage) separated by whitespace:"
+#: src/editor/editcmd.c:1831
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-#: src/editor/editcmd.c:3187 src/editor/editcmd.c:3194
+#: src/editor/editcmd.c:1851 src/editor/editcmd.c:1858
msgid "Sort"
msgstr ""
-#: src/editor/editcmd.c:3187
+#: src/editor/editcmd.c:1851
msgid "Cannot execute sort command"
msgstr ""
-#: src/editor/editcmd.c:3193
+#: src/editor/editcmd.c:1857
#, c-format
msgid "Sort returned non-zero: %s"
msgstr ""
-#: src/editor/editcmd.c:3230
+#: src/editor/editcmd.c:1894
msgid "Paste output of external command"
msgstr ""
-#: src/editor/editcmd.c:3231
+#: src/editor/editcmd.c:1895
msgid "Enter shell command(s):"
msgstr ""
-#: src/editor/editcmd.c:3248
+#: src/editor/editcmd.c:1912
msgid "External command"
msgstr ""
-#: src/editor/editcmd.c:3248
+#: src/editor/editcmd.c:1912
msgid "Cannot execute command"
msgstr ""
-#: src/editor/editcmd.c:3293
+#: src/editor/editcmd.c:1957
msgid "mail -s <subject> -c <cc> <to>"
msgstr ""
-#: src/editor/editcmd.c:3294
+#: src/editor/editcmd.c:1958
msgid "To"
msgstr ""
-#: src/editor/editcmd.c:3297
+#: src/editor/editcmd.c:1961
msgid "Subject"
msgstr ""
-#: src/editor/editcmd.c:3300
+#: src/editor/editcmd.c:1964
msgid "Copies to"
msgstr ""
-#: src/editor/editcmd.c:3310
+#: src/editor/editcmd.c:1975
msgid "Mail"
msgstr ""
-#: src/editor/editcmd.c:3414
+#: src/editor/editcmd.c:2009
msgid "Insert literal"
msgstr ""
-#: src/editor/editcmd.c:3415
+#: src/editor/editcmd.c:2010
msgid "Press any key:"
msgstr ""
-#: src/editor/editcmd.c:3454 src/editor/editcmd.c:3483
-#: src/editor/editcmd_dialogs.c:475
+#: src/editor/editcmd.c:2021 src/editor/editcmd.c:2050 src/editor/etags.c:373
msgid ""
"Current text was modified without a file save.\n"
"Continue discards these changes."
msgstr ""
-#: src/editor/editcmd_dialogs.c:114 src/editor/editcmd_dialogs.c:211
-msgid "In se&lection"
+#: src/editor/editcmd.c:2103
+msgid "Cancel"
msgstr ""
-#: src/editor/editcmd_dialogs.c:122
-msgid "&Find all"
+#: src/editor/editcomplete.c:248
+msgid "Collect completions"
msgstr ""
-#: src/editor/editcmd_dialogs.c:202
-msgid "Enter replacement string:"
+#: src/editor/editdraw.c:263 src/editor/editwidget.c:333
+msgid "NoName"
msgstr ""
-#: src/editor/editcmd_dialogs.c:276
-msgid "Replace with:"
+#: src/editor/editmacros.c:151
+msgid "Save macro"
msgstr ""
-#: src/editor/editcmd_dialogs.c:279 src/editor/spell_dialogs.c:96
-msgid "&Replace"
+#: src/editor/editmacros.c:151
+msgid "Press the macro's new hotkey:"
msgstr ""
-#: src/editor/editcmd_dialogs.c:280 src/filemanager/file.c:959
-#: src/filemanager/filegui.c:471
-msgid "A&ll"
+#: src/editor/editmacros.c:319 src/editor/editmacros.c:322
+msgid "Delete macro"
msgstr ""
-#: src/editor/editcmd_dialogs.c:281 src/editor/spell_dialogs.c:98
-#: src/filemanager/file.c:838 src/filemanager/file.c:911
-#: src/filemanager/file.c:914 src/filemanager/file.c:3078
-#: src/filemanager/filegui.c:252
-msgid "&Skip"
+#: src/editor/editmacros.c:319
+msgid "Press macro hotkey:"
msgstr ""
-#: src/editor/editcmd_dialogs.c:289
-msgid "Confirm replace"
+#: src/editor/editmacros.c:322
+msgid "Macro not deleted"
msgstr ""
-#: src/editor/editcmd_dialogs.c:334
-msgid "Cancel"
+#: src/editor/editmacros.c:334
+msgid "Repeat last commands"
msgstr ""
-#: src/editor/editdraw.c:263 src/editor/editwidget.c:319
-msgid "NoName"
+#: src/editor/editmacros.c:334
+msgid "Repeat times:"
msgstr ""
#: src/editor/editmenu.c:73
@@ -1782,7 +1677,7 @@
msgid "A&bout..."
msgstr ""
-#: src/editor/editmenu.c:88 src/filemanager/find.c:190 src/main.c:413
+#: src/editor/editmenu.c:88 src/filemanager/find.c:192 src/main.c:411
msgid "&Quit"
msgstr ""
@@ -1822,8 +1717,8 @@
msgid "Mo&ve"
msgstr ""
-#: src/editor/editmenu.c:113 src/filemanager/file.c:2676
-#: src/filemanager/filemanager.c:254
+#: src/editor/editmenu.c:113 src/filemanager/file.c:2709
+#: src/filemanager/file.c:2765 src/filemanager/filemanager.c:251
msgid "&Delete"
msgstr ""
@@ -1995,7 +1890,7 @@
msgid "Save &mode..."
msgstr ""
-#: src/editor/editmenu.c:252 src/filemanager/filemanager.c:344
+#: src/editor/editmenu.c:252 src/filemanager/filemanager.c:341
msgid "Learn &keys..."
msgstr ""
@@ -2011,15 +1906,15 @@
msgid "&Menu file"
msgstr ""
-#: src/editor/editmenu.c:259 src/filemanager/filemanager.c:349
+#: src/editor/editmenu.c:259 src/filemanager/filemanager.c:346
msgid "&Save setup"
msgstr ""
-#: src/editor/editmenu.c:283 src/filemanager/filemanager.c:361
+#: src/editor/editmenu.c:283 src/filemanager/filemanager.c:358
msgid "&File"
msgstr ""
-#: src/editor/editmenu.c:285 src/filemanager/filemanager.c:237
+#: src/editor/editmenu.c:285 src/filemanager/filemanager.c:234
msgid "&Edit"
msgstr ""
@@ -2027,7 +1922,7 @@
msgid "&Search"
msgstr ""
-#: src/editor/editmenu.c:290 src/filemanager/filemanager.c:363
+#: src/editor/editmenu.c:290 src/filemanager/filemanager.c:360
msgid "&Command"
msgstr ""
@@ -2039,7 +1934,7 @@
msgid "&Window"
msgstr ""
-#: src/editor/editmenu.c:297 src/filemanager/filemanager.c:365
+#: src/editor/editmenu.c:297 src/filemanager/filemanager.c:362
msgid "&Options"
msgstr ""
@@ -2079,7 +1974,7 @@
msgid "Tab spacing:"
msgstr ""
-#: src/editor/editoptions.c:164 src/filemanager/boxes.c:571
+#: src/editor/editoptions.c:164 src/filemanager/boxes.c:569
#: src/filemanager/layout.c:501
msgid "Other options"
msgstr ""
@@ -2128,190 +2023,259 @@
msgid "Word wrap line length:"
msgstr ""
-#: src/editor/editoptions.c:189
+#: src/editor/editoptions.c:190
msgid "Editor options"
msgstr ""
-#: src/editor/editwidget.c:146
+#: src/editor/editsearch.c:96 src/editor/editsearch.c:176
+msgid "In se&lection"
+msgstr ""
+
+#: src/editor/editsearch.c:104
+msgid "&Find all"
+msgstr ""
+
+#: src/editor/editsearch.c:167
+msgid "Enter replacement string:"
+msgstr ""
+
+#: src/editor/editsearch.c:190 src/editor/editsearch.c:973
+#: src/editor/editsearch.c:1013 src/editor/editsearch.c:1025
+msgid "Replace"
+msgstr ""
+
+#: src/editor/editsearch.c:241
+msgid "Replace with:"
+msgstr ""
+
+#: src/editor/editsearch.c:244 src/editor/spell.c:763
+msgid "&Replace"
+msgstr ""
+
+#: src/editor/editsearch.c:245 src/filemanager/file.c:1011
+#: src/filemanager/filegui.c:493
+msgid "A&ll"
+msgstr ""
+
+#: src/editor/editsearch.c:246 src/editor/spell.c:765
+#: src/filemanager/file.c:890 src/filemanager/file.c:963
+#: src/filemanager/file.c:966 src/filemanager/file.c:3173
+#: src/filemanager/filegui.c:252
+msgid "&Skip"
+msgstr ""
+
+#: src/editor/editsearch.c:255
+msgid "Confirm replace"
+msgstr ""
+
+#: src/editor/editsearch.c:741 src/viewer/search.c:93
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#: src/editor/editsearch.c:744 src/filemanager/find.c:1349
+#: src/viewer/search.c:96
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#: src/editor/editsearch.c:1025
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
+#: src/editor/editwidget.c:152
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-#: src/editor/editwidget.c:149
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+#: src/editor/editwidget.c:155
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
-#: src/editor/editwidget.c:158
+#: src/editor/editwidget.c:165
msgid "About"
msgstr ""
-#: src/editor/editwidget.c:310
+#: src/editor/editwidget.c:324
msgid "Open files"
msgstr ""
-#: src/editor/editwidget.c:373 src/editor/editwidget.c:376
+#: src/editor/editwidget.c:388 src/editor/editwidget.c:391
msgid "Edit: "
msgstr ""
-#: src/editor/editwidget.c:662
+#: src/editor/editwidget.c:676
msgid "ButtonBar|Mark"
msgstr ""
-#: src/editor/editwidget.c:663
+#: src/editor/editwidget.c:677
msgid "ButtonBar|Replac"
msgstr ""
-#: src/editor/editwidget.c:664 src/filemanager/filemanager.c:1653
+#: src/editor/editwidget.c:678 src/filemanager/filemanager.c:1644
#: src/filemanager/tree.c:1177
msgid "ButtonBar|Copy"
msgstr ""
-#: src/editor/editwidget.c:665
+#: src/editor/editwidget.c:679
msgid "ButtonBar|Move"
msgstr ""
-#: src/editor/editwidget.c:667 src/filemanager/filemanager.c:1656
+#: src/editor/editwidget.c:681 src/filemanager/filemanager.c:1647
msgid "ButtonBar|Delete"
msgstr ""
-#: src/editor/editwidget.c:668 src/filemanager/filemanager.c:1657
+#: src/editor/editwidget.c:682 src/filemanager/filemanager.c:1648
msgid "ButtonBar|PullDn"
msgstr ""
-#: src/editor/spell.c:98
+#: src/editor/spell.c:105
msgid "Breton"
msgstr ""
-#: src/editor/spell.c:99
+#: src/editor/spell.c:106
msgid "Czech"
msgstr ""
-#: src/editor/spell.c:100
+#: src/editor/spell.c:107
msgid "Welsh"
msgstr ""
-#: src/editor/spell.c:101
+#: src/editor/spell.c:108
msgid "Danish"
msgstr ""
-#: src/editor/spell.c:102
+#: src/editor/spell.c:109
msgid "German"
msgstr ""
-#: src/editor/spell.c:103
+#: src/editor/spell.c:110
msgid "Greek"
msgstr ""
-#: src/editor/spell.c:104
+#: src/editor/spell.c:111
msgid "English"
msgstr ""
-#: src/editor/spell.c:105
+#: src/editor/spell.c:112
msgid "British English"
msgstr ""
-#: src/editor/spell.c:106
+#: src/editor/spell.c:113
msgid "Canadian English"
msgstr ""
-#: src/editor/spell.c:107
+#: src/editor/spell.c:114
msgid "American English"
msgstr ""
-#: src/editor/spell.c:108
+#: src/editor/spell.c:115
msgid "Esperanto"
msgstr ""
-#: src/editor/spell.c:109
+#: src/editor/spell.c:116
msgid "Spanish"
msgstr ""
-#: src/editor/spell.c:110
+#: src/editor/spell.c:117
msgid "Faroese"
msgstr ""
-#: src/editor/spell.c:111
+#: src/editor/spell.c:118
msgid "French"
msgstr ""
-#: src/editor/spell.c:112
+#: src/editor/spell.c:119
msgid "Italian"
msgstr ""
-#: src/editor/spell.c:113
+#: src/editor/spell.c:120
msgid "Dutch"
msgstr ""
-#: src/editor/spell.c:114
+#: src/editor/spell.c:121
msgid "Norwegian"
msgstr ""
-#: src/editor/spell.c:115
+#: src/editor/spell.c:122
msgid "Polish"
msgstr ""
-#: src/editor/spell.c:116
+#: src/editor/spell.c:123
msgid "Portuguese"
msgstr ""
-#: src/editor/spell.c:117
+#: src/editor/spell.c:124
msgid "Romanian"
msgstr ""
-#: src/editor/spell.c:118
+#: src/editor/spell.c:125
msgid "Russian"
msgstr ""
-#: src/editor/spell.c:119
+#: src/editor/spell.c:126
msgid "Slovak"
msgstr ""
-#: src/editor/spell.c:120
+#: src/editor/spell.c:127
msgid "Swedish"
msgstr ""
-#: src/editor/spell.c:121
+#: src/editor/spell.c:128
msgid "Ukrainian"
msgstr ""
-#: src/editor/spell_dialogs.c:95
+#: src/editor/spell.c:762
msgid "&Add word"
msgstr ""
-#: src/editor/spell_dialogs.c:106
+#: src/editor/spell.c:773
msgid "Language"
msgstr ""
-#: src/editor/spell_dialogs.c:107
+#: src/editor/spell.c:774
msgid "Misspelled"
msgstr ""
-#: src/editor/spell_dialogs.c:114
+#: src/editor/spell.c:781
msgid "Check word"
msgstr ""
-#: src/editor/spell_dialogs.c:120
+#: src/editor/spell.c:787
msgid "Suggest"
msgstr ""
-#: src/editor/spell_dialogs.c:172
+#: src/editor/spell.c:839
msgid "Select language"
msgstr ""
-#: src/editor/syntax.c:1496 src/editor/syntax.c:1502
+#: src/editor/syntax.c:1424
+msgid "Choose syntax highlighting"
+msgstr ""
+
+#: src/editor/syntax.c:1425
+msgid "< Auto >"
+msgstr ""
+
+#: src/editor/syntax.c:1426
+msgid "< Reload Current Syntax >"
+msgstr ""
+
+#: src/editor/syntax.c:1528 src/editor/syntax.c:1534
msgid "Load syntax file"
msgstr ""
-#: src/editor/syntax.c:1497 src/help.c:1101 src/usermenu.c:955
-#: src/usermenu.c:995
+#: src/editor/syntax.c:1529 src/help.c:1097 src/usermenu.c:975
+#: src/usermenu.c:1015
#, c-format
msgid ""
"Cannot open file %s\n"
"%s"
msgstr ""
-#: src/editor/syntax.c:1503
+#: src/editor/syntax.c:1535
#, c-format
msgid "Error in file %s on line %d"
msgstr ""
@@ -2324,12 +2288,12 @@
"extra access permissions with the \"su\" command?"
msgstr ""
-#: src/execute.c:196 src/filemanager/ext.c:662
+#: src/execute.c:196 src/filemanager/ext.c:667
#, c-format
msgid "Cannot fetch a local copy of %s"
msgstr ""
-#: src/execute.c:437 src/filemanager/command.c:123
+#: src/execute.c:437 src/filemanager/command.c:125
msgid "The shell is already running a command"
msgstr ""
@@ -2343,7 +2307,7 @@
msgid "Type 'exit' to return to the Midnight Commander"
msgstr ""
-#: src/filemanager/achown.c:84 src/filemanager/chattr.c:229
+#: src/filemanager/achown.c:84 src/filemanager/chattr.c:228
#: src/filemanager/chmod.c:110 src/filemanager/chown.c:83
msgid "Set &all"
msgstr ""
@@ -2352,7 +2316,7 @@
msgid "S&kip"
msgstr ""
-#: src/filemanager/achown.c:86 src/filemanager/chattr.c:233
+#: src/filemanager/achown.c:86 src/filemanager/chattr.c:232
#: src/filemanager/chmod.c:114 src/filemanager/chown.c:86
msgid "&Set"
msgstr ""
@@ -2384,7 +2348,7 @@
msgid "Chown advanced command"
msgstr ""
-#: src/filemanager/achown.c:857 src/filemanager/achown.c:1052
+#: src/filemanager/achown.c:858 src/filemanager/achown.c:1053
#: src/filemanager/chmod.c:434 src/filemanager/chmod.c:581
#, c-format
msgid ""
@@ -2392,25 +2356,26 @@
"%s"
msgstr ""
-#: src/filemanager/achown.c:859 src/filemanager/achown.c:894
-#: src/filemanager/chattr.c:1104 src/filemanager/chmod.c:437
-#: src/filemanager/chown.c:310
+#: src/filemanager/achown.c:860 src/filemanager/achown.c:895
+#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437
+#: src/filemanager/chown.c:310 src/vfs/sftpfs/connection.c:519
+#: src/vfs/sftpfs/connection.c:531
msgid "&Ignore"
msgstr ""
-#: src/filemanager/achown.c:859 src/filemanager/achown.c:894
-#: src/filemanager/chattr.c:1104 src/filemanager/chmod.c:437
+#: src/filemanager/achown.c:860 src/filemanager/achown.c:895
+#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437
#: src/filemanager/chown.c:310
msgid "Ignore &all"
msgstr ""
-#: src/filemanager/achown.c:859 src/filemanager/achown.c:894
-#: src/filemanager/chattr.c:1104 src/filemanager/chmod.c:437
-#: src/filemanager/chown.c:310 src/filemanager/file.c:911 src/viewer/hex.c:431
+#: src/filemanager/achown.c:860 src/filemanager/achown.c:895
+#: src/filemanager/chattr.c:1119 src/filemanager/chmod.c:437
+#: src/filemanager/chown.c:310 src/filemanager/file.c:963 src/viewer/hex.c:429
msgid "&Retry"
msgstr ""
-#: src/filemanager/achown.c:892 src/filemanager/achown.c:1058
+#: src/filemanager/achown.c:893 src/filemanager/achown.c:1059
#: src/filemanager/chown.c:307 src/filemanager/chown.c:475
#, c-format
msgid ""
@@ -2418,236 +2383,237 @@
"%s"
msgstr ""
-#: src/filemanager/boxes.c:181
+#: src/filemanager/boxes.c:178
msgid "< Default >"
msgstr ""
-#: src/filemanager/boxes.c:227
+#: src/filemanager/boxes.c:222
msgid "Skins"
msgstr ""
-#: src/filemanager/boxes.c:383 src/filemanager/boxes.c:1006
+#: src/filemanager/boxes.c:380 src/filemanager/boxes.c:1016
#: src/selcodepage.c:101
msgid "Other 8 bit"
msgstr ""
-#: src/filemanager/boxes.c:468
+#: src/filemanager/boxes.c:466
msgid "Running"
msgstr ""
-#: src/filemanager/boxes.c:469 src/filemanager/find.c:1592
+#: src/filemanager/boxes.c:467 src/filemanager/find.c:1621
msgid "Stopped"
msgstr ""
-#: src/filemanager/boxes.c:536
+#: src/filemanager/boxes.c:534
msgid "&Never"
msgstr ""
-#: src/filemanager/boxes.c:537
+#: src/filemanager/boxes.c:535
msgid "On dum&b terminals"
msgstr ""
-#: src/filemanager/boxes.c:538
+#: src/filemanager/boxes.c:536
msgid "Alwa&ys"
msgstr ""
-#: src/filemanager/boxes.c:552
+#: src/filemanager/boxes.c:550
msgid "File operations"
msgstr ""
-#: src/filemanager/boxes.c:553
+#: src/filemanager/boxes.c:551
msgid "&Verbose operation"
msgstr ""
-#: src/filemanager/boxes.c:554
+#: src/filemanager/boxes.c:552
msgid "Compute tota&ls"
msgstr ""
-#: src/filemanager/boxes.c:555
+#: src/filemanager/boxes.c:553
msgid "Classic pro&gressbar"
msgstr ""
-#: src/filemanager/boxes.c:556
+#: src/filemanager/boxes.c:554
msgid "Mkdi&r autoname"
msgstr ""
-#: src/filemanager/boxes.c:557
+#: src/filemanager/boxes.c:555
msgid "&Preallocate space"
msgstr ""
-#: src/filemanager/boxes.c:560
+#: src/filemanager/boxes.c:558
msgid "Esc key mode"
msgstr ""
-#: src/filemanager/boxes.c:561
+#: src/filemanager/boxes.c:559
msgid "S&ingle press"
msgstr ""
-#: src/filemanager/boxes.c:562
+#: src/filemanager/boxes.c:560
msgid "Timeout:"
msgstr ""
-#: src/filemanager/boxes.c:567
+#: src/filemanager/boxes.c:565
msgid "Pause after run"
msgstr ""
-#: src/filemanager/boxes.c:572
+#: src/filemanager/boxes.c:570
msgid "Use internal edi&t"
msgstr ""
-#: src/filemanager/boxes.c:573
+#: src/filemanager/boxes.c:571
msgid "Use internal vie&w"
msgstr ""
-#: src/filemanager/boxes.c:574
+#: src/filemanager/boxes.c:572
msgid "A&sk new file name"
msgstr ""
-#: src/filemanager/boxes.c:576
+#: src/filemanager/boxes.c:574
msgid "Auto m&enus"
msgstr ""
-#: src/filemanager/boxes.c:577
+#: src/filemanager/boxes.c:575
msgid "&Drop down menus"
msgstr ""
-#: src/filemanager/boxes.c:578
+#: src/filemanager/boxes.c:576
msgid "S&hell patterns"
msgstr ""
-#: src/filemanager/boxes.c:579
+#: src/filemanager/boxes.c:577
msgid "Co&mplete: show all"
msgstr ""
-#: src/filemanager/boxes.c:581
+#: src/filemanager/boxes.c:579
msgid "Rotating d&ash"
msgstr ""
-#: src/filemanager/boxes.c:582
+#: src/filemanager/boxes.c:580
msgid "Cd follows lin&ks"
msgstr ""
-#: src/filemanager/boxes.c:583
+#: src/filemanager/boxes.c:581
msgid "Sa&fe delete"
msgstr ""
-#: src/filemanager/boxes.c:584
+#: src/filemanager/boxes.c:582
msgid "Safe overwrite"
msgstr ""
-#: src/filemanager/boxes.c:585
+#: src/filemanager/boxes.c:583
msgid "A&uto save setup"
msgstr ""
-#: src/filemanager/boxes.c:597
+#: src/filemanager/boxes.c:596
msgid "Configure options"
msgstr ""
-#: src/filemanager/boxes.c:636
+#: src/filemanager/boxes.c:640
msgid "Skin:"
msgstr ""
-#: src/filemanager/boxes.c:642
+#: src/filemanager/boxes.c:646
msgid "&Shadows"
msgstr ""
-#: src/filemanager/boxes.c:650
+#: src/filemanager/boxes.c:655
msgid "Appearance"
msgstr ""
-#: src/filemanager/boxes.c:680
+#: src/filemanager/boxes.c:685
msgid "Case &insensitive"
msgstr ""
-#: src/filemanager/boxes.c:682
+#: src/filemanager/boxes.c:687
msgid "Use panel sort mo&de"
msgstr ""
-#: src/filemanager/boxes.c:689
+#: src/filemanager/boxes.c:694
msgid "Show mi&ni-status"
msgstr ""
-#: src/filemanager/boxes.c:690
+#: src/filemanager/boxes.c:695
msgid "Use SI si&ze units"
msgstr ""
-#: src/filemanager/boxes.c:691
+#: src/filemanager/boxes.c:696
msgid "Mi&x all files"
msgstr ""
-#: src/filemanager/boxes.c:692
+#: src/filemanager/boxes.c:697
msgid "Show &backup files"
msgstr ""
-#: src/filemanager/boxes.c:693
+#: src/filemanager/boxes.c:698
msgid "Show &hidden files"
msgstr ""
-#: src/filemanager/boxes.c:694
+#: src/filemanager/boxes.c:699
msgid "&Fast dir reload"
msgstr ""
-#: src/filemanager/boxes.c:695
+#: src/filemanager/boxes.c:700
msgid "Ma&rk moves down"
msgstr ""
-#: src/filemanager/boxes.c:696
+#: src/filemanager/boxes.c:701
msgid "Re&verse files only"
msgstr ""
-#: src/filemanager/boxes.c:698
+#: src/filemanager/boxes.c:703
msgid "Simple s&wap"
msgstr ""
-#: src/filemanager/boxes.c:699
+#: src/filemanager/boxes.c:704
msgid "A&uto save panels setup"
msgstr ""
-#: src/filemanager/boxes.c:706
+#: src/filemanager/boxes.c:711
msgid "Navigation"
msgstr ""
-#: src/filemanager/boxes.c:707
+#: src/filemanager/boxes.c:712
msgid "L&ynx-like motion"
msgstr ""
-#: src/filemanager/boxes.c:709
+#: src/filemanager/boxes.c:714
msgid "Pa&ge scrolling"
msgstr ""
-#: src/filemanager/boxes.c:710
+#: src/filemanager/boxes.c:715
msgid "Center &scrolling"
msgstr ""
-#: src/filemanager/boxes.c:711
+#: src/filemanager/boxes.c:716
msgid "&Mouse page scrolling"
msgstr ""
-#: src/filemanager/boxes.c:714
+#: src/filemanager/boxes.c:719
msgid "File highlight"
msgstr ""
-#: src/filemanager/boxes.c:715
+#: src/filemanager/boxes.c:720
msgid "File &types"
msgstr ""
-#: src/filemanager/boxes.c:716
+#: src/filemanager/boxes.c:721
msgid "&Permissions"
msgstr ""
-#: src/filemanager/boxes.c:718
+#: src/filemanager/boxes.c:723
msgid "Quick search"
msgstr ""
-#: src/filemanager/boxes.c:730
+#: src/filemanager/boxes.c:736
msgid "Panel options"
msgstr ""
-#: src/filemanager/boxes.c:742 src/filemanager/info.c:90
+#: src/filemanager/boxes.c:748 src/filemanager/info.c:86
+#: src/vfs/sftpfs/connection.c:378
msgid "Information"
msgstr ""
-#: src/filemanager/boxes.c:743
+#: src/filemanager/boxes.c:749
msgid ""
"Using the fast reload option may not reflect the exact\n"
"directory contents. In this case you'll need to do a\n"
@@ -2655,193 +2621,176 @@
"the details."
msgstr ""
-#: src/filemanager/boxes.c:777
+#: src/filemanager/boxes.c:783
msgid "&Full file list"
msgstr ""
-#: src/filemanager/boxes.c:778
+#: src/filemanager/boxes.c:784
msgid "&Brief file list:"
msgstr ""
-#: src/filemanager/boxes.c:779
+#: src/filemanager/boxes.c:785
msgid "&Long file list"
msgstr ""
-#: src/filemanager/boxes.c:780
+#: src/filemanager/boxes.c:786
msgid "&User defined:"
msgstr ""
-#: src/filemanager/boxes.c:789
+#: src/filemanager/boxes.c:795
msgid "columns"
msgstr ""
-#: src/filemanager/boxes.c:796
+#: src/filemanager/boxes.c:802
msgid "User &mini status"
msgstr ""
-#: src/filemanager/boxes.c:806
+#: src/filemanager/boxes.c:813
msgid "Listing format"
msgstr ""
-#: src/filemanager/boxes.c:885
+#: src/filemanager/boxes.c:892
msgid "Executable &first"
msgstr ""
-#: src/filemanager/boxes.c:887
+#: src/filemanager/boxes.c:894
msgid "&Reverse"
msgstr ""
-#: src/filemanager/boxes.c:896
+#: src/filemanager/boxes.c:904
msgid "Sort order"
msgstr ""
#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
-#: src/filemanager/boxes.c:920
+#: src/filemanager/boxes.c:928
msgid "Confirmation|&Delete"
msgstr ""
-#: src/filemanager/boxes.c:921
+#: src/filemanager/boxes.c:929
msgid "Confirmation|O&verwrite"
msgstr ""
-#: src/filemanager/boxes.c:922
+#: src/filemanager/boxes.c:930
msgid "Confirmation|&Execute"
msgstr ""
-#: src/filemanager/boxes.c:923
+#: src/filemanager/boxes.c:931
msgid "Confirmation|E&xit"
msgstr ""
-#: src/filemanager/boxes.c:924
+#: src/filemanager/boxes.c:932
msgid "Confirmation|Di&rectory hotlist delete"
msgstr ""
-#: src/filemanager/boxes.c:926
+#: src/filemanager/boxes.c:934
msgid "Confirmation|&History cleanup"
msgstr ""
-#: src/filemanager/boxes.c:935 src/filemanager/cmd.c:139
+#: src/filemanager/boxes.c:944 src/filemanager/cmd.c:137
msgid "Confirmation"
msgstr ""
-#: src/filemanager/boxes.c:952
+#: src/filemanager/boxes.c:961
msgid "&UTF-8 output"
msgstr ""
-#: src/filemanager/boxes.c:953
+#: src/filemanager/boxes.c:962
msgid "&Full 8 bits output"
msgstr ""
-#: src/filemanager/boxes.c:954
+#: src/filemanager/boxes.c:963
msgid "&ISO 8859-1"
msgstr ""
-#: src/filemanager/boxes.c:955
+#: src/filemanager/boxes.c:964
msgid "7 &bits"
msgstr ""
-#: src/filemanager/boxes.c:962 src/filemanager/boxes.c:1020
+#: src/filemanager/boxes.c:971 src/filemanager/boxes.c:1030
msgid "F&ull 8 bits input"
msgstr ""
-#: src/filemanager/boxes.c:970 src/filemanager/boxes.c:1028
+#: src/filemanager/boxes.c:980 src/filemanager/boxes.c:1039
msgid "Display bits"
msgstr ""
-#: src/filemanager/boxes.c:1015
+#: src/filemanager/boxes.c:1025
msgid "Input / display codepage:"
msgstr ""
-#: src/filemanager/boxes.c:1078 src/filemanager/tree.c:1127
+#: src/filemanager/boxes.c:1089 src/filemanager/tree.c:1127
msgid "Directory tree"
msgstr ""
-#: src/filemanager/boxes.c:1128
+#: src/filemanager/boxes.c:1139
msgid "Timeout for freeing VFSs (sec):"
msgstr ""
-#: src/filemanager/boxes.c:1133
+#: src/filemanager/boxes.c:1144
msgid "FTP anonymous password:"
msgstr ""
-#: src/filemanager/boxes.c:1136
+#: src/filemanager/boxes.c:1147
msgid "FTP directory cache timeout (sec):"
msgstr ""
-#: src/filemanager/boxes.c:1139
+#: src/filemanager/boxes.c:1150
msgid "&Always use ftp proxy:"
msgstr ""
-#: src/filemanager/boxes.c:1143
+#: src/filemanager/boxes.c:1154
msgid "&Use ~/.netrc"
msgstr ""
-#: src/filemanager/boxes.c:1144
+#: src/filemanager/boxes.c:1155
msgid "Use &passive mode"
msgstr ""
-#: src/filemanager/boxes.c:1145
+#: src/filemanager/boxes.c:1156
msgid "Use passive mode over pro&xy"
msgstr ""
-#: src/filemanager/boxes.c:1155
+#: src/filemanager/boxes.c:1167
msgid "Virtual File System Setting"
msgstr ""
-#: src/filemanager/boxes.c:1204
+#: src/filemanager/boxes.c:1222
msgid "cd"
msgstr ""
-#: src/filemanager/boxes.c:1211
+#: src/filemanager/boxes.c:1230
msgid "Quick cd"
msgstr ""
-#: src/filemanager/boxes.c:1226
+#: src/filemanager/boxes.c:1245
msgid "Existing filename (filename symlink will point to):"
msgstr ""
-#: src/filemanager/boxes.c:1230
+#: src/filemanager/boxes.c:1249
msgid "Symbolic link filename:"
msgstr ""
-#: src/filemanager/boxes.c:1240
+#: src/filemanager/boxes.c:1260
msgid "Symbolic link"
msgstr ""
-#: src/filemanager/boxes.c:1268
+#: src/filemanager/boxes.c:1288
msgid "&Stop"
msgstr ""
-#: src/filemanager/boxes.c:1269
+#: src/filemanager/boxes.c:1289
msgid "&Resume"
msgstr ""
-#: src/filemanager/boxes.c:1270
+#: src/filemanager/boxes.c:1290
msgid "&Kill"
msgstr ""
-#: src/filemanager/boxes.c:1300
+#: src/filemanager/boxes.c:1320
msgid "Background jobs"
msgstr ""
-#: src/filemanager/boxes.c:1336
-#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-#: src/filemanager/boxes.c:1346
-msgid "Domain:"
-msgstr ""
-
-#: src/filemanager/boxes.c:1348
-msgid "Username:"
-msgstr ""
-
-#: src/filemanager/boxes.c:1365
-msgid "SMB authentication"
-msgstr ""
-
-#: src/filemanager/cd.c:287 src/filemanager/panel.c:3668
+#: src/filemanager/cd.c:287 src/filemanager/panel.c:3747
#: src/filemanager/tree.c:596
#, c-format
msgid ""
@@ -2929,54 +2878,54 @@
msgid "No COW"
msgstr ""
-#: src/filemanager/chattr.c:183
+#: src/filemanager/chattr.c:182
msgid "Direct access for files"
msgstr ""
-#: src/filemanager/chattr.c:188
+#: src/filemanager/chattr.c:187
msgid "Casefolded file"
msgstr ""
-#: src/filemanager/chattr.c:191
+#: src/filemanager/chattr.c:190
msgid "Inode has inline data"
msgstr ""
-#: src/filemanager/chattr.c:197
+#: src/filemanager/chattr.c:196
msgid "Project hierarchy"
msgstr ""
-#: src/filemanager/chattr.c:204
+#: src/filemanager/chattr.c:203
msgid "Verity protected inode"
msgstr ""
-#: src/filemanager/chattr.c:230 src/filemanager/chmod.c:111
+#: src/filemanager/chattr.c:229 src/filemanager/chmod.c:111
msgid "&Marked all"
msgstr ""
-#: src/filemanager/chattr.c:231 src/filemanager/chmod.c:112
+#: src/filemanager/chattr.c:230 src/filemanager/chmod.c:112
msgid "S&et marked"
msgstr ""
-#: src/filemanager/chattr.c:232 src/filemanager/chmod.c:113
+#: src/filemanager/chattr.c:231 src/filemanager/chmod.c:113
msgid "C&lear marked"
msgstr ""
-#: src/filemanager/chattr.c:983
+#: src/filemanager/chattr.c:1001
msgid "Chattr command"
msgstr ""
-#: src/filemanager/chattr.c:1101 src/filemanager/chattr.c:1257
+#: src/filemanager/chattr.c:1116 src/filemanager/chattr.c:1273
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/chattr.c:1213
+#: src/filemanager/chattr.c:1229
msgid "Cannot change attributes on non-local filesystems"
msgstr ""
-#: src/filemanager/chattr.c:1232
+#: src/filemanager/chattr.c:1248
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
@@ -3052,7 +3001,7 @@
msgstr ""
#: src/filemanager/chmod.c:341 src/filemanager/chown.c:166
-#: src/filemanager/panel.c:256
+#: src/filemanager/panel.c:266
msgid "Permission"
msgstr ""
@@ -3100,237 +3049,237 @@
msgid "<Unknown group>"
msgstr ""
-#: src/filemanager/cmd.c:120
+#: src/filemanager/cmd.c:118
msgid "Enter machine name (F1 for details):"
msgstr ""
-#: src/filemanager/cmd.c:139
+#: src/filemanager/cmd.c:137
msgid "Files tagged, want to cd?"
msgstr ""
-#: src/filemanager/cmd.c:145 src/filemanager/cmd.c:1129
-#: src/filemanager/panel.c:2797 src/filemanager/panel.c:3376
+#: src/filemanager/cmd.c:143 src/filemanager/cmd.c:1004
+#: src/filemanager/panel.c:2873 src/filemanager/panel.c:3452
msgid "Cannot change directory"
msgstr ""
-#: src/filemanager/cmd.c:196
-msgid "Filter"
-msgstr ""
-
-#: src/filemanager/cmd.c:197
-msgid "Set expression for filtering filenames"
-msgstr ""
-
-#: src/filemanager/cmd.c:355
+#: src/filemanager/cmd.c:334
#, c-format
msgid "Link %s to:"
msgstr ""
-#: src/filemanager/cmd.c:357
+#: src/filemanager/cmd.c:336
msgid "Link"
msgstr ""
-#: src/filemanager/cmd.c:366
+#: src/filemanager/cmd.c:345
#, c-format
msgid "link: %s"
msgstr ""
-#: src/filemanager/cmd.c:405
+#: src/filemanager/cmd.c:384
#, c-format
msgid "symlink: %s"
msgstr ""
-#: src/filemanager/cmd.c:465 src/filemanager/panel.c:4755
+#: src/filemanager/cmd.c:444 src/filemanager/panel.c:4905
#, c-format
msgid "Cannot chdir to \"%s\""
msgstr ""
-#: src/filemanager/cmd.c:628
+#: src/filemanager/cmd.c:607
msgid "View file"
msgstr ""
-#: src/filemanager/cmd.c:628
+#: src/filemanager/cmd.c:607
msgid "Filename:"
msgstr ""
-#: src/filemanager/cmd.c:662
+#: src/filemanager/cmd.c:641
msgid "Filtered view"
msgstr ""
-#: src/filemanager/cmd.c:663
+#: src/filemanager/cmd.c:642
msgid "Filter command and arguments:"
msgstr ""
-#: src/filemanager/cmd.c:751
+#: src/filemanager/cmd.c:730
msgid "Edit file"
msgstr ""
-#: src/filemanager/cmd.c:843
+#: src/filemanager/cmd.c:762
msgid "Create a new Directory"
msgstr ""
-#: src/filemanager/cmd.c:844
+#: src/filemanager/cmd.c:763
msgid "Enter directory name:"
msgstr ""
-#: src/filemanager/cmd.c:949
+#: src/filemanager/cmd.c:824
msgid "Extension file edit"
msgstr ""
-#: src/filemanager/cmd.c:950
+#: src/filemanager/cmd.c:825
msgid "Which extension file you want to edit?"
msgstr ""
-#: src/filemanager/cmd.c:951 src/filemanager/cmd.c:992
-#: src/filemanager/cmd.c:1050
+#: src/filemanager/cmd.c:826 src/filemanager/cmd.c:867
+#: src/filemanager/cmd.c:925
msgid "&System Wide"
msgstr ""
-#: src/filemanager/cmd.c:1048
+#: src/filemanager/cmd.c:923
msgid "Highlighting groups file edit"
msgstr ""
-#: src/filemanager/cmd.c:1049
+#: src/filemanager/cmd.c:924
msgid "Which highlighting file you want to edit?"
msgstr ""
-#: src/filemanager/cmd.c:1144
+#: src/filemanager/cmd.c:1019
msgid "Compare directories"
msgstr ""
-#: src/filemanager/cmd.c:1145
+#: src/filemanager/cmd.c:1020
msgid "Select compare method:"
msgstr ""
-#: src/filemanager/cmd.c:1146
+#: src/filemanager/cmd.c:1021
msgid "&Quick"
msgstr ""
-#: src/filemanager/cmd.c:1146
+#: src/filemanager/cmd.c:1021
msgid "&Size only"
msgstr ""
-#: src/filemanager/cmd.c:1146
+#: src/filemanager/cmd.c:1021
msgid "&Thorough"
msgstr ""
-#: src/filemanager/cmd.c:1160
+#: src/filemanager/cmd.c:1035
msgid ""
"Both panels should be in the listing mode\n"
"to use this command"
msgstr ""
-#: src/filemanager/cmd.c:1218
+#: src/filemanager/cmd.c:1093
#, c-format
msgid "'%s' is not a symbolic link"
msgstr ""
-#: src/filemanager/cmd.c:1231
+#: src/filemanager/cmd.c:1106
#, c-format
msgid "Symlink '%s' points to:"
msgstr ""
-#: src/filemanager/cmd.c:1233
+#: src/filemanager/cmd.c:1108
msgid "Edit symlink"
msgstr ""
-#: src/filemanager/cmd.c:1246
+#: src/filemanager/cmd.c:1121
#, c-format
msgid "edit symlink, unable to remove %s: %s"
msgstr ""
-#: src/filemanager/cmd.c:1254
+#: src/filemanager/cmd.c:1129
#, c-format
msgid "edit symlink: %s"
msgstr ""
-#: src/filemanager/cmd.c:1299
+#: src/filemanager/cmd.c:1174
msgid "FTP to machine"
msgstr ""
-#: src/filemanager/cmd.c:1310
+#: src/filemanager/cmd.c:1185
msgid "SFTP to machine"
msgstr ""
-#: src/filemanager/cmd.c:1322
+#: src/filemanager/cmd.c:1197
msgid "Shell link to machine"
msgstr ""
-#: src/filemanager/cmd.c:1334
-msgid "SMB link to machine"
-msgstr ""
-
-#: src/filemanager/cmd.c:1345
+#: src/filemanager/cmd.c:1209
msgid "Undelete files on an ext2 file system"
msgstr ""
-#: src/filemanager/cmd.c:1346
+#: src/filemanager/cmd.c:1210
msgid ""
"Enter device (without /dev/) to undelete\n"
"files on: (F1 for details)"
msgstr ""
-#: src/filemanager/cmd.c:1404 src/filemanager/cmd.c:1438
-#: src/filemanager/file.c:748
+#: src/filemanager/cmd.c:1268 src/filemanager/cmd.c:1302
+#: src/filemanager/file.c:770
msgid "Directory scanning"
msgstr ""
-#: src/filemanager/cmd.c:1484 src/filemanager/cmd.c:1486
+#: src/filemanager/cmd.c:1348 src/filemanager/cmd.c:1350
msgid "Setup"
msgstr ""
-#: src/filemanager/cmd.c:1484
+#: src/filemanager/cmd.c:1348
#, c-format
msgid "Setup saved to %s"
msgstr ""
-#: src/filemanager/cmd.c:1486
+#: src/filemanager/cmd.c:1350
#, c-format
msgid "Unable to save setup to %s"
msgstr ""
-#: src/filemanager/command.c:115 src/usermenu.c:944
+#: src/filemanager/command.c:117 src/usermenu.c:964
msgid "Cannot execute commands on non-local filesystems"
msgstr ""
-#: src/filemanager/ext.c:247 src/usermenu.c:476
+#: src/filemanager/ext.c:255 src/usermenu.c:477
msgid "Parameter"
msgstr ""
-#: src/filemanager/ext.c:460 src/usermenu.c:446
+#: src/filemanager/ext.c:467 src/usermenu.c:448
#, c-format
msgid ""
"Cannot create temporary command file\n"
"%s"
msgstr ""
-#: src/filemanager/ext.c:844
+#: src/filemanager/ext.c:738
+msgid "Pipe failed"
+msgstr ""
+
+#: src/filemanager/ext.c:774
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
+#: src/filemanager/ext.c:826
#, c-format
msgid " %s%s file error"
msgstr ""
-#: src/filemanager/ext.c:846
+#: src/filemanager/ext.c:828
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-#: src/filemanager/ext.c:866
+#: src/filemanager/ext.c:845
#, c-format
msgid "%s file error"
msgstr ""
-#: src/filemanager/ext.c:868
+#: src/filemanager/ext.c:847
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-#: src/filemanager/file.c:95 src/filemanager/file.c:2675
-#: src/filemanager/tree.c:719
+#: src/filemanager/file.c:95 src/filemanager/file.c:2707
+#: src/filemanager/file.c:2764 src/filemanager/tree.c:719
msgid "DialogTitle|Copy"
msgstr ""
@@ -3338,95 +3287,95 @@
msgid "DialogTitle|Move"
msgstr ""
-#: src/filemanager/file.c:97 src/filemanager/hotlist.c:1158
-#: src/filemanager/hotlist.c:1175 src/filemanager/tree.c:829
+#: src/filemanager/file.c:97 src/filemanager/hotlist.c:1161
+#: src/filemanager/hotlist.c:1178 src/filemanager/tree.c:829
msgid "DialogTitle|Delete"
msgstr ""
-#: src/filemanager/file.c:148
+#: src/filemanager/file.c:152
msgid "FileOperation|Copy"
msgstr ""
-#: src/filemanager/file.c:149
+#: src/filemanager/file.c:153
msgid "FileOperation|Move"
msgstr ""
-#: src/filemanager/file.c:150
+#: src/filemanager/file.c:154
msgid "FileOperation|Delete"
msgstr ""
-#: src/filemanager/file.c:163
+#: src/filemanager/file.c:167
#, no-c-format
msgid "%o %f%n\"%s\"%m"
msgstr ""
-#: src/filemanager/file.c:165
+#: src/filemanager/file.c:169
#, no-c-format
msgid "%o %d %f%m"
msgstr ""
-#: src/filemanager/file.c:169
+#: src/filemanager/file.c:173
msgid "files"
msgstr ""
-#: src/filemanager/file.c:170
+#: src/filemanager/file.c:174
msgid "directory"
msgstr ""
-#: src/filemanager/file.c:171
+#: src/filemanager/file.c:175
msgid "directories"
msgstr ""
-#: src/filemanager/file.c:172
+#: src/filemanager/file.c:176
msgid "files/directories"
msgstr ""
#. TRANSLATORS: keep leading space here to split words in Copy/Move dialog
-#: src/filemanager/file.c:174
+#: src/filemanager/file.c:178
msgid " with source mask:"
msgstr ""
-#: src/filemanager/file.c:391
+#: src/filemanager/file.c:414
#, c-format
msgid ""
"Cannot stat hardlink source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:411
+#: src/filemanager/file.c:434
#, c-format
msgid ""
"Cannot create target hardlink \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:447
+#: src/filemanager/file.c:470
#, c-format
msgid "Cannot create target hardlink \"%s\""
msgstr ""
-#: src/filemanager/file.c:510
+#: src/filemanager/file.c:534
#, c-format
msgid ""
"Cannot read source link \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:524
+#: src/filemanager/file.c:548
msgid ""
"Cannot make stable symlinks across non-local filesystems:\n"
"\n"
"Option Stable Symlinks will be disabled"
msgstr ""
-#: src/filemanager/file.c:593
+#: src/filemanager/file.c:617
#, c-format
msgid ""
"Cannot create target symlink \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:877
+#: src/filemanager/file.c:929
#, c-format
msgid ""
"\"%s\"\n"
@@ -3435,7 +3384,7 @@
"are the same directory"
msgstr ""
-#: src/filemanager/file.c:879
+#: src/filemanager/file.c:931
#, c-format
msgid ""
"\"%s\"\n"
@@ -3444,18 +3393,18 @@
"are the same file"
msgstr ""
-#: src/filemanager/file.c:911 src/filemanager/file.c:914
+#: src/filemanager/file.c:963 src/filemanager/file.c:966
msgid "Ski&p all"
msgstr ""
-#: src/filemanager/file.c:951
+#: src/filemanager/file.c:1003
#, c-format
msgid ""
"Directory \"%s\" not empty.\n"
"Delete it recursively?"
msgstr ""
-#: src/filemanager/file.c:952
+#: src/filemanager/file.c:1004
#, c-format
msgid ""
"Background process:\n"
@@ -3463,197 +3412,201 @@
"Delete it recursively?"
msgstr ""
-#: src/filemanager/file.c:960 src/filemanager/filegui.c:475
+#: src/filemanager/file.c:1012 src/filemanager/filegui.c:497
msgid "Non&e"
msgstr ""
-#: src/filemanager/file.c:1159
+#: src/filemanager/file.c:1206
#, c-format
msgid ""
"Cannot remove file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1217
+#: src/filemanager/file.c:1264
#, c-format
msgid ""
"Cannot stat file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1233
+#: src/filemanager/file.c:1280
#, c-format
msgid "Cannot overwrite directory \"%s\""
msgstr ""
-#: src/filemanager/file.c:1279
+#: src/filemanager/file.c:1335
#, c-format
msgid ""
"Cannot move file \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1385
+#: src/filemanager/file.c:1441
#, c-format
msgid ""
"Cannot remove directory \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1627 src/filemanager/file.c:2245
+#: src/filemanager/file.c:1691 src/filemanager/file.c:2309
#, c-format
msgid ""
"Cannot overwrite directory \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1629
+#: src/filemanager/file.c:1693
#, c-format
msgid ""
"Cannot overwrite file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1650
+#: src/filemanager/file.c:1714
#, c-format
msgid ""
"Cannot move directory \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:1752
+#: src/filemanager/file.c:1816
msgid "Cannot operate on \"..\"!"
msgstr ""
-#: src/filemanager/file.c:2264
+#: src/filemanager/file.c:2328
#, c-format
msgid ""
"Cannot stat source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2329
+#: src/filemanager/file.c:2397
#, c-format
msgid ""
"Cannot create special file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2341 src/filemanager/file.c:2686
+#: src/filemanager/file.c:2409 src/filemanager/file.c:2777
#, c-format
msgid ""
"Cannot chown target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2356 src/filemanager/file.c:2702
+#: src/filemanager/file.c:2424 src/filemanager/file.c:2793
#, c-format
msgid ""
"Cannot chmod target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2377
+#: src/filemanager/file.c:2446
#, c-format
msgid ""
"Cannot open source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2390
+#: src/filemanager/file.c:2459
msgid "Reget failed, about to overwrite file"
msgstr ""
-#: src/filemanager/file.c:2401
+#: src/filemanager/file.c:2470
#, c-format
msgid ""
"Cannot fstat source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2434
+#: src/filemanager/file.c:2502
#, c-format
msgid ""
"Cannot create target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2465
+#: src/filemanager/file.c:2534
#, c-format
msgid ""
"Cannot fstat target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2486
+#: src/filemanager/file.c:2555
#, c-format
msgid ""
"Cannot preallocate space for target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2544
+#: src/filemanager/file.c:2614
#, c-format
msgid ""
"Cannot read source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2583
+#: src/filemanager/file.c:2653
#, c-format
msgid ""
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2618
+#: src/filemanager/file.c:2687
msgid "(stalled)"
msgstr ""
-#: src/filemanager/file.c:2651
+#: src/filemanager/file.c:2708 src/filemanager/file.c:2764
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+#: src/filemanager/file.c:2709 src/filemanager/file.c:2765
+msgid "&Keep"
+msgstr ""
+
+#: src/filemanager/file.c:2709
+msgid "&Continue copy"
+msgstr ""
+
+#: src/filemanager/file.c:2740
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2663
+#: src/filemanager/file.c:2752
#, c-format
msgid ""
"Cannot close target file \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2675
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-#: src/filemanager/file.c:2676
-msgid "&Keep"
-msgstr ""
-
-#: src/filemanager/file.c:2767
+#: src/filemanager/file.c:2858
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2811
+#: src/filemanager/file.c:2902
#, c-format
msgid ""
"Source \"%s\" is not a directory\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2823
+#: src/filemanager/file.c:2914
#, c-format
msgid ""
"Cannot copy cyclic symbolic link\n"
"\"%s\""
msgstr ""
-#: src/filemanager/file.c:2862 src/filemanager/file.c:3348
+#: src/filemanager/file.c:2953 src/filemanager/file.c:3450
#: src/filemanager/tree.c:776
#, c-format
msgid ""
@@ -3661,34 +3614,34 @@
"%s"
msgstr ""
-#: src/filemanager/file.c:2895
+#: src/filemanager/file.c:2986
#, c-format
msgid ""
"Cannot create target directory \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:2919
+#: src/filemanager/file.c:3010
#, c-format
msgid ""
"Cannot chown target directory \"%s\"\n"
"%s"
msgstr ""
-#: src/filemanager/file.c:3119
+#: src/filemanager/file.c:3217
#, c-format
msgid "Directories: %zu, total size: %s"
msgstr ""
-#: src/filemanager/file.c:3264
+#: src/filemanager/file.c:3366
msgid "Sorry, I could not put the job in background"
msgstr ""
-#: src/filemanager/filegui.c:253 src/filemanager/find.c:188
+#: src/filemanager/filegui.c:253 src/filemanager/find.c:190
msgid "S&uspend"
msgstr ""
-#: src/filemanager/filegui.c:254 src/filemanager/find.c:189
+#: src/filemanager/filegui.c:254 src/filemanager/find.c:191
msgid "Con&tinue"
msgstr ""
@@ -3717,136 +3670,136 @@
msgid "%ld B/s"
msgstr ""
-#: src/filemanager/filegui.c:439
+#: src/filemanager/filegui.c:461
msgid "New :"
msgstr ""
-#: src/filemanager/filegui.c:447
+#: src/filemanager/filegui.c:469
msgid "Existing:"
msgstr ""
-#: src/filemanager/filegui.c:456
+#: src/filemanager/filegui.c:478
msgid "Overwrite this file?"
msgstr ""
-#: src/filemanager/filegui.c:462 src/filemanager/hotlist.c:191
+#: src/filemanager/filegui.c:484 src/filemanager/hotlist.c:191
msgid "A&ppend"
msgstr ""
-#: src/filemanager/filegui.c:464
+#: src/filemanager/filegui.c:486
msgid "&Reget"
msgstr ""
-#: src/filemanager/filegui.c:467
+#: src/filemanager/filegui.c:489
msgid "Overwrite all files?"
msgstr ""
-#: src/filemanager/filegui.c:469
+#: src/filemanager/filegui.c:491
msgid "Don't overwrite with &zero length file"
msgstr ""
-#: src/filemanager/filegui.c:473
+#: src/filemanager/filegui.c:495
msgid "&Older"
msgstr ""
-#: src/filemanager/filegui.c:477
+#: src/filemanager/filegui.c:499
msgid "S&maller"
msgstr ""
-#: src/filemanager/filegui.c:479
+#: src/filemanager/filegui.c:501
msgid "&Size differs"
msgstr ""
-#: src/filemanager/filegui.c:504
+#: src/filemanager/filegui.c:527
msgid "File exists"
msgstr ""
-#: src/filemanager/filegui.c:506
+#: src/filemanager/filegui.c:529
msgid "Background process: File exists"
msgstr ""
-#: src/filemanager/filegui.c:1021
+#: src/filemanager/filegui.c:1047
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
-#: src/filemanager/filegui.c:1024
+#: src/filemanager/filegui.c:1050
#, c-format
msgid "Files processed: %zu"
msgstr ""
-#: src/filemanager/filegui.c:1069
+#: src/filemanager/filegui.c:1095
#, c-format
msgid "Time: %s %s"
msgstr ""
-#: src/filemanager/filegui.c:1073
+#: src/filemanager/filegui.c:1099
#, c-format
msgid "Time: %s %s (%s)"
msgstr ""
-#: src/filemanager/filegui.c:1079
+#: src/filemanager/filegui.c:1105
#, c-format
msgid "Time: %s"
msgstr ""
-#: src/filemanager/filegui.c:1083
+#: src/filemanager/filegui.c:1109
#, c-format
msgid "Time: %s (%s)"
msgstr ""
-#: src/filemanager/filegui.c:1093
+#: src/filemanager/filegui.c:1119
#, c-format
msgid " Total: %s "
msgstr ""
-#: src/filemanager/filegui.c:1097
+#: src/filemanager/filegui.c:1123
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
-#: src/filemanager/filegui.c:1121
+#: src/filemanager/filegui.c:1147
msgid "Source"
msgstr ""
-#: src/filemanager/filegui.c:1146
+#: src/filemanager/filegui.c:1172
msgid "Target"
msgstr ""
-#: src/filemanager/filegui.c:1179
+#: src/filemanager/filegui.c:1205
msgid "Deleting"
msgstr ""
-#: src/filemanager/filegui.c:1344 src/filemanager/find.c:577
-#: src/filemanager/panel.c:2540
+#: src/filemanager/filegui.c:1371 src/filemanager/find.c:585
+#: src/filemanager/panel.c:2555
msgid "&Using shell patterns"
msgstr ""
-#: src/filemanager/filegui.c:1346
+#: src/filemanager/filegui.c:1373
msgid "to:"
msgstr ""
-#: src/filemanager/filegui.c:1350
+#: src/filemanager/filegui.c:1377
msgid "Follow &links"
msgstr ""
-#: src/filemanager/filegui.c:1351
+#: src/filemanager/filegui.c:1378
msgid "Preserve &attributes"
msgstr ""
-#: src/filemanager/filegui.c:1353
+#: src/filemanager/filegui.c:1380
msgid "Di&ve into subdir if exists"
msgstr ""
-#: src/filemanager/filegui.c:1354
+#: src/filemanager/filegui.c:1381
msgid "&Stable symlinks"
msgstr ""
-#: src/filemanager/filegui.c:1359
+#: src/filemanager/filegui.c:1386
msgid "&Background"
msgstr ""
-#: src/filemanager/filegui.c:1411
+#: src/filemanager/filegui.c:1440
#, c-format
msgid "Invalid source pattern '%s'"
msgstr ""
@@ -3863,7 +3816,7 @@
msgid "&Info"
msgstr ""
-#: src/filemanager/filemanager.c:197 src/filemanager/find.c:595
+#: src/filemanager/filemanager.c:197 src/filemanager/find.c:603
msgid "&Tree"
msgstr ""
@@ -3892,206 +3845,202 @@
msgstr ""
#: src/filemanager/filemanager.c:215
-msgid "S&FTP link..."
-msgstr ""
-
-#: src/filemanager/filemanager.c:218
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
-#: src/filemanager/filemanager.c:220
+#: src/filemanager/filemanager.c:217
msgid "Paneli&ze"
msgstr ""
-#: src/filemanager/filemanager.c:222
+#: src/filemanager/filemanager.c:219
msgid "&Rescan"
msgstr ""
-#: src/filemanager/filemanager.c:234
+#: src/filemanager/filemanager.c:231
msgid "&View"
msgstr ""
-#: src/filemanager/filemanager.c:235
+#: src/filemanager/filemanager.c:232
msgid "Vie&w file..."
msgstr ""
-#: src/filemanager/filemanager.c:236
+#: src/filemanager/filemanager.c:233
msgid "&Filtered view"
msgstr ""
-#: src/filemanager/filemanager.c:238
+#: src/filemanager/filemanager.c:235
msgid "&Copy"
msgstr ""
-#: src/filemanager/filemanager.c:239
+#: src/filemanager/filemanager.c:236
msgid "C&hmod"
msgstr ""
-#: src/filemanager/filemanager.c:240
+#: src/filemanager/filemanager.c:237
msgid "&Link"
msgstr ""
-#: src/filemanager/filemanager.c:241
+#: src/filemanager/filemanager.c:238
msgid "&Symlink"
msgstr ""
-#: src/filemanager/filemanager.c:244
+#: src/filemanager/filemanager.c:241
msgid "Relative symlin&k"
msgstr ""
-#: src/filemanager/filemanager.c:245
+#: src/filemanager/filemanager.c:242
msgid "Edit s&ymlink"
msgstr ""
-#: src/filemanager/filemanager.c:246
+#: src/filemanager/filemanager.c:243
msgid "Ch&own"
msgstr ""
-#: src/filemanager/filemanager.c:248
+#: src/filemanager/filemanager.c:245
msgid "&Advanced chown"
msgstr ""
-#: src/filemanager/filemanager.c:250
+#: src/filemanager/filemanager.c:247
msgid "Cha&ttr"
msgstr ""
-#: src/filemanager/filemanager.c:252
+#: src/filemanager/filemanager.c:249
msgid "&Rename/Move"
msgstr ""
-#: src/filemanager/filemanager.c:253
+#: src/filemanager/filemanager.c:250
msgid "&Mkdir"
msgstr ""
-#: src/filemanager/filemanager.c:255
+#: src/filemanager/filemanager.c:252
msgid "&Quick cd"
msgstr ""
-#: src/filemanager/filemanager.c:257
+#: src/filemanager/filemanager.c:254
msgid "Select &group"
msgstr ""
-#: src/filemanager/filemanager.c:258
+#: src/filemanager/filemanager.c:255
msgid "U&nselect group"
msgstr ""
-#: src/filemanager/filemanager.c:259
+#: src/filemanager/filemanager.c:256
msgid "&Invert selection"
msgstr ""
-#: src/filemanager/filemanager.c:261
+#: src/filemanager/filemanager.c:258
msgid "E&xit"
msgstr ""
-#: src/filemanager/filemanager.c:277
+#: src/filemanager/filemanager.c:274
msgid "&User menu"
msgstr ""
-#: src/filemanager/filemanager.c:278
+#: src/filemanager/filemanager.c:275
msgid "&Directory tree"
msgstr ""
-#: src/filemanager/filemanager.c:279
+#: src/filemanager/filemanager.c:276
msgid "&Find file"
msgstr ""
-#: src/filemanager/filemanager.c:280
+#: src/filemanager/filemanager.c:277
msgid "S&wap panels"
msgstr ""
-#: src/filemanager/filemanager.c:281
+#: src/filemanager/filemanager.c:278
msgid "Switch &panels on/off"
msgstr ""
-#: src/filemanager/filemanager.c:283
+#: src/filemanager/filemanager.c:280
msgid "&Compare directories"
msgstr ""
-#: src/filemanager/filemanager.c:285
+#: src/filemanager/filemanager.c:282
msgid "C&ompare files"
msgstr ""
-#: src/filemanager/filemanager.c:288
+#: src/filemanager/filemanager.c:285
msgid "E&xternal panelize"
msgstr ""
-#: src/filemanager/filemanager.c:289
+#: src/filemanager/filemanager.c:286
msgid "Show directory s&izes"
msgstr ""
-#: src/filemanager/filemanager.c:291
+#: src/filemanager/filemanager.c:288
msgid "Command &history"
msgstr ""
-#: src/filemanager/filemanager.c:294
+#: src/filemanager/filemanager.c:291
msgid "Viewed/edited files hi&story"
msgstr ""
-#: src/filemanager/filemanager.c:296
+#: src/filemanager/filemanager.c:293
msgid "Di&rectory hotlist"
msgstr ""
-#: src/filemanager/filemanager.c:298
+#: src/filemanager/filemanager.c:295
msgid "&Active VFS list"
msgstr ""
-#: src/filemanager/filemanager.c:301
+#: src/filemanager/filemanager.c:298
msgid "&Background jobs"
msgstr ""
-#: src/filemanager/filemanager.c:303
+#: src/filemanager/filemanager.c:300
msgid "Screen lis&t"
msgstr ""
-#: src/filemanager/filemanager.c:308
+#: src/filemanager/filemanager.c:305
msgid "&Undelete files (ext2fs only)"
msgstr ""
-#: src/filemanager/filemanager.c:311
+#: src/filemanager/filemanager.c:308
msgid "&Listing format edit"
msgstr ""
-#: src/filemanager/filemanager.c:318
+#: src/filemanager/filemanager.c:315
msgid "Edit &extension file"
msgstr ""
-#: src/filemanager/filemanager.c:319
+#: src/filemanager/filemanager.c:316
msgid "Edit &menu file"
msgstr ""
-#: src/filemanager/filemanager.c:322
+#: src/filemanager/filemanager.c:319
msgid "Edit hi&ghlighting group file"
msgstr ""
-#: src/filemanager/filemanager.c:335
+#: src/filemanager/filemanager.c:332
msgid "&Configuration..."
msgstr ""
-#: src/filemanager/filemanager.c:336
+#: src/filemanager/filemanager.c:333
msgid "&Layout..."
msgstr ""
-#: src/filemanager/filemanager.c:337
+#: src/filemanager/filemanager.c:334
msgid "&Panel options..."
msgstr ""
-#: src/filemanager/filemanager.c:339
+#: src/filemanager/filemanager.c:336
msgid "C&onfirmation..."
msgstr ""
-#: src/filemanager/filemanager.c:341
+#: src/filemanager/filemanager.c:338
msgid "&Appearance..."
msgstr ""
-#: src/filemanager/filemanager.c:343
+#: src/filemanager/filemanager.c:340
msgid "&Display bits..."
msgstr ""
-#: src/filemanager/filemanager.c:346
+#: src/filemanager/filemanager.c:343
msgid "&Virtual FS..."
msgstr ""
-#: src/filemanager/filemanager.c:448
+#: src/filemanager/filemanager.c:445
msgid "Panels:"
msgstr ""
@@ -4103,7 +4052,7 @@
msgstr[1] ""
#: src/filemanager/filemanager.c:1062 src/filemanager/filemanager.c:1068
-#: src/filemanager/panel.c:2818
+#: src/filemanager/panel.c:2894
msgid "The Midnight Commander"
msgstr ""
@@ -4111,138 +4060,143 @@
msgid "Do you really want to quit the Midnight Commander?"
msgstr ""
-#: src/filemanager/filemanager.c:1636
+#: src/filemanager/filemanager.c:1627
msgid "&Above"
msgstr ""
-#: src/filemanager/filemanager.c:1636
+#: src/filemanager/filemanager.c:1627
msgid "&Left"
msgstr ""
-#: src/filemanager/filemanager.c:1637
+#: src/filemanager/filemanager.c:1628
msgid "&Below"
msgstr ""
-#: src/filemanager/filemanager.c:1637
+#: src/filemanager/filemanager.c:1628
msgid "&Right"
msgstr ""
-#: src/filemanager/filemanager.c:1650
+#: src/filemanager/filemanager.c:1641
msgid "ButtonBar|Menu"
msgstr ""
-#: src/filemanager/filemanager.c:1651 src/viewer/display.c:92
+#: src/filemanager/filemanager.c:1642 src/viewer/display.c:92
msgid "ButtonBar|View"
msgstr ""
-#: src/filemanager/filemanager.c:1654 src/filemanager/tree.c:1178
+#: src/filemanager/filemanager.c:1645 src/filemanager/tree.c:1178
msgid "ButtonBar|RenMov"
msgstr ""
-#: src/filemanager/filemanager.c:1655 src/filemanager/tree.c:1181
+#: src/filemanager/filemanager.c:1646 src/filemanager/tree.c:1181
msgid "ButtonBar|Mkdir"
msgstr ""
-#: src/filemanager/find.c:186
+#: src/filemanager/find.c:188
msgid "&Chdir"
msgstr ""
-#: src/filemanager/find.c:187
+#: src/filemanager/find.c:189
msgid "&Again"
msgstr ""
-#: src/filemanager/find.c:192 src/filemanager/panelize.c:140
+#: src/filemanager/find.c:194 src/filemanager/panelize.c:141
msgid "Pane&lize"
msgstr ""
-#: src/filemanager/find.c:193
+#: src/filemanager/find.c:195
msgid "&View - F3"
msgstr ""
-#: src/filemanager/find.c:194
+#: src/filemanager/find.c:196
msgid "&Edit - F4"
msgstr ""
-#: src/filemanager/find.c:369
+#: src/filemanager/find.c:375
#, c-format
msgid "Found: %lu"
msgstr ""
-#: src/filemanager/find.c:502 src/filemanager/find.c:512
+#: src/filemanager/find.c:508 src/filemanager/find.c:519
+#: src/filemanager/panel.c:2593
msgid "Malformed regular expression"
msgstr ""
-#: src/filemanager/find.c:575
+#: src/filemanager/find.c:582
msgid "File name:"
msgstr ""
-#: src/filemanager/find.c:576
+#: src/filemanager/find.c:583
msgid "&Find recursively"
msgstr ""
-#: src/filemanager/find.c:582
+#: src/filemanager/find.c:584
+msgid "Follow s&ymlinks"
+msgstr ""
+
+#: src/filemanager/find.c:590
msgid "S&kip hidden"
msgstr ""
-#: src/filemanager/find.c:585
+#: src/filemanager/find.c:593
msgid "Content:"
msgstr ""
-#: src/filemanager/find.c:586
+#: src/filemanager/find.c:594
msgid "Sea&rch for content"
msgstr ""
-#: src/filemanager/find.c:588
+#: src/filemanager/find.c:596
msgid "Case sens&itive"
msgstr ""
-#: src/filemanager/find.c:590
+#: src/filemanager/find.c:598
msgid "A&ll charsets"
msgstr ""
-#: src/filemanager/find.c:593
+#: src/filemanager/find.c:601
msgid "Fir&st hit"
msgstr ""
-#: src/filemanager/find.c:669
+#: src/filemanager/find.c:679
msgid "Find File"
msgstr ""
-#: src/filemanager/find.c:677
+#: src/filemanager/find.c:687
msgid "Start at:"
msgstr ""
-#: src/filemanager/find.c:686
+#: src/filemanager/find.c:696
msgid "Ena&ble ignore directories:"
msgstr ""
-#: src/filemanager/find.c:1014 src/filemanager/find.c:1108
+#: src/filemanager/find.c:1036 src/filemanager/find.c:1130
#, c-format
msgid "Grepping in %s"
msgstr ""
-#: src/filemanager/find.c:1290
+#: src/filemanager/find.c:1312
msgid "Finished"
msgstr ""
-#: src/filemanager/find.c:1296
+#: src/filemanager/find.c:1318
#, c-format
msgid "Finished (ignored %zu directory)"
msgid_plural "Finished (ignored %zu directories)"
msgstr[0] ""
msgstr[1] ""
-#: src/filemanager/find.c:1492
+#: src/filemanager/find.c:1520
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
msgstr ""
-#: src/filemanager/find.c:1495
+#: src/filemanager/find.c:1523
#, c-format
msgid "Find File: \"%s\""
msgstr ""
-#: src/filemanager/find.c:1592 src/filemanager/find.c:1674
+#: src/filemanager/find.c:1621 src/filemanager/find.c:1703
msgid "Searching"
msgstr ""
@@ -4274,12 +4228,12 @@
msgid "New &entry"
msgstr ""
-#: src/filemanager/hotlist.c:189 src/filemanager/hotlist.c:1014
-#: src/filemanager/hotlist.c:1076
+#: src/filemanager/hotlist.c:189 src/filemanager/hotlist.c:1015
+#: src/filemanager/hotlist.c:1078
msgid "&Insert"
msgstr ""
-#: src/filemanager/hotlist.c:193 src/filemanager/panelize.c:141
+#: src/filemanager/hotlist.c:193 src/filemanager/panelize.c:142
msgid "&Remove"
msgstr ""
@@ -4287,196 +4241,196 @@
msgid "Subgroup - press ENTER to see list"
msgstr ""
-#: src/filemanager/hotlist.c:770
+#: src/filemanager/hotlist.c:771
msgid "Active VFS directories"
msgstr ""
-#: src/filemanager/hotlist.c:777
+#: src/filemanager/hotlist.c:778
msgid "Directory hotlist"
msgstr ""
-#: src/filemanager/hotlist.c:787 src/filemanager/hotlist.c:1470
+#: src/filemanager/hotlist.c:788 src/filemanager/hotlist.c:1473
msgid "Top level group"
msgstr ""
-#: src/filemanager/hotlist.c:812
+#: src/filemanager/hotlist.c:813
msgid "Directory path"
msgstr ""
-#: src/filemanager/hotlist.c:849
+#: src/filemanager/hotlist.c:850
#, c-format
msgid "Moving %s"
msgstr ""
-#: src/filemanager/hotlist.c:859
+#: src/filemanager/hotlist.c:860
msgid "Directory label"
msgstr ""
-#: src/filemanager/hotlist.c:1013 src/filemanager/hotlist.c:1075
+#: src/filemanager/hotlist.c:1014 src/filemanager/hotlist.c:1077
msgid "&Append"
msgstr ""
-#: src/filemanager/hotlist.c:1044
+#: src/filemanager/hotlist.c:1046
msgid "New hotlist entry"
msgstr ""
-#: src/filemanager/hotlist.c:1044
+#: src/filemanager/hotlist.c:1046
msgid "Directory label:"
msgstr ""
-#: src/filemanager/hotlist.c:1045
+#: src/filemanager/hotlist.c:1047
msgid "Directory path:"
msgstr ""
-#: src/filemanager/hotlist.c:1103
+#: src/filemanager/hotlist.c:1106
msgid "New hotlist group"
msgstr ""
-#: src/filemanager/hotlist.c:1103
+#: src/filemanager/hotlist.c:1106
msgid "Name of new group:"
msgstr ""
-#: src/filemanager/hotlist.c:1156
+#: src/filemanager/hotlist.c:1159
#, c-format
msgid "Are you sure you want to remove entry \"%s\"?"
msgstr ""
-#: src/filemanager/hotlist.c:1173
+#: src/filemanager/hotlist.c:1176
#, c-format
msgid ""
"Group \"%s\" is not empty.\n"
"Remove it?"
msgstr ""
-#: src/filemanager/hotlist.c:1493
+#: src/filemanager/hotlist.c:1496
msgid "Hotlist Load"
msgstr ""
-#: src/filemanager/hotlist.c:1495
+#: src/filemanager/hotlist.c:1498
#, c-format
msgid ""
"MC was unable to write %s file,\n"
"your old hotlist entries were not deleted"
msgstr ""
-#: src/filemanager/hotlist.c:1601
+#: src/filemanager/hotlist.c:1604
#, c-format
msgid "Label for \"%s\":"
msgstr ""
-#: src/filemanager/hotlist.c:1616
+#: src/filemanager/hotlist.c:1619
msgid "Add to hotlist"
msgstr ""
-#: src/filemanager/info.c:128
+#: src/filemanager/info.c:124
#, c-format
msgid "Midnight Commander %s"
msgstr ""
-#: src/filemanager/info.c:150
+#: src/filemanager/info.c:146
#, c-format
msgid "File: %s"
msgstr ""
-#: src/filemanager/info.c:168
+#: src/filemanager/info.c:164
msgid "No node information"
msgstr ""
-#: src/filemanager/info.c:170 src/filemanager/info.c:172
-#: src/filemanager/info.c:175
+#: src/filemanager/info.c:166 src/filemanager/info.c:168
+#: src/filemanager/info.c:171
msgid "Free nodes:"
msgstr ""
-#: src/filemanager/info.c:183
+#: src/filemanager/info.c:179
msgid "No space information"
msgstr ""
-#: src/filemanager/info.c:190
+#: src/filemanager/info.c:186
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
-#: src/filemanager/info.c:197
+#: src/filemanager/info.c:193
#, c-format
msgid "Type: %s"
msgstr ""
-#: src/filemanager/info.c:198
+#: src/filemanager/info.c:194
msgid "non-local vfs"
msgstr ""
-#: src/filemanager/info.c:204
+#: src/filemanager/info.c:200
#, c-format
msgid "Device: %s"
msgstr ""
-#: src/filemanager/info.c:211
+#: src/filemanager/info.c:207
#, c-format
msgid "Filesystem: %s"
msgstr ""
-#: src/filemanager/info.c:218
+#: src/filemanager/info.c:214
#, c-format
msgid "Accessed: %s"
msgstr ""
-#: src/filemanager/info.c:224
+#: src/filemanager/info.c:220
#, c-format
msgid "Modified: %s"
msgstr ""
#. TRANSLATORS: Time of last status change as in stat(2) man.
-#: src/filemanager/info.c:233
+#: src/filemanager/info.c:229
#, c-format
msgid "Changed: %s"
msgstr ""
-#: src/filemanager/info.c:241
+#: src/filemanager/info.c:237
#, c-format
msgid "Dev. type: major %lu, minor %lu"
msgstr ""
-#: src/filemanager/info.c:248
+#: src/filemanager/info.c:244
#, c-format
msgid "Size: %s"
msgstr ""
-#: src/filemanager/info.c:250
+#: src/filemanager/info.c:246
#, c-format
msgid " (%lu block)"
msgid_plural " (%lu blocks)"
msgstr[0] ""
msgstr[1] ""
-#: src/filemanager/info.c:257
+#: src/filemanager/info.c:253
#, c-format
msgid "Owner: %s/%s"
msgstr ""
-#: src/filemanager/info.c:261
+#: src/filemanager/info.c:257
#, c-format
msgid "Links: %d"
msgstr ""
-#: src/filemanager/info.c:267 src/filemanager/info.c:283
+#: src/filemanager/info.c:263 src/filemanager/info.c:279
msgid "Attributes: not supported"
msgstr ""
-#: src/filemanager/info.c:276
+#: src/filemanager/info.c:272
#, c-format
msgid "Attributes: %s"
msgstr ""
-#: src/filemanager/info.c:278
+#: src/filemanager/info.c:274
msgid "Attributes: unavailable"
msgstr ""
-#: src/filemanager/info.c:288
+#: src/filemanager/info.c:284
#, c-format
msgid "Mode: %s (%04o)"
msgstr ""
-#: src/filemanager/info.c:293
+#: src/filemanager/info.c:289
#, c-format
msgid "Location: %Xh:%Xh"
msgstr ""
@@ -4533,242 +4487,253 @@
msgid "Layout"
msgstr ""
-#: src/filemanager/mountlist.c:908
+#: src/filemanager/mountlist.c:909
msgid "Memory exhausted!"
msgstr ""
#. TRANSLATORS: one single character to represent 'unsorted' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:161
+#: src/filemanager/panel.c:171
msgid "sort|u"
msgstr ""
-#: src/filemanager/panel.c:162
+#: src/filemanager/panel.c:172
msgid "&Unsorted"
msgstr ""
#. TRANSLATORS: one single character to represent 'name' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:171
+#: src/filemanager/panel.c:181
msgid "sort|n"
msgstr ""
-#: src/filemanager/panel.c:172
+#: src/filemanager/panel.c:182
msgid "&Name"
msgstr ""
#. TRANSLATORS: one single character to represent 'version' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:181
+#: src/filemanager/panel.c:191
msgid "sort|v"
msgstr ""
-#: src/filemanager/panel.c:182
+#: src/filemanager/panel.c:192
msgid "&Version"
msgstr ""
#. TRANSLATORS: one single character to represent 'extension' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:191
+#: src/filemanager/panel.c:201
msgid "sort|e"
msgstr ""
-#: src/filemanager/panel.c:192
+#: src/filemanager/panel.c:202
msgid "E&xtension"
msgstr ""
#. TRANSLATORS: one single character to represent 'size' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:201
+#: src/filemanager/panel.c:211
msgid "sort|s"
msgstr ""
-#: src/filemanager/panel.c:202
+#: src/filemanager/panel.c:212
msgid "&Size"
msgstr ""
-#: src/filemanager/panel.c:210
+#: src/filemanager/panel.c:220
msgid "Block Size"
msgstr ""
#. TRANSLATORS: one single character to represent 'Modify time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:227
+#: src/filemanager/panel.c:237
msgid "sort|m"
msgstr ""
-#: src/filemanager/panel.c:228
+#: src/filemanager/panel.c:238
msgid "&Modify time"
msgstr ""
#. TRANSLATORS: one single character to represent 'Access time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:237
+#: src/filemanager/panel.c:247
msgid "sort|a"
msgstr ""
-#: src/filemanager/panel.c:238
+#: src/filemanager/panel.c:248
msgid "&Access time"
msgstr ""
#. TRANSLATORS: one single character to represent 'Change time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:247
+#: src/filemanager/panel.c:257
msgid "sort|h"
msgstr ""
-#: src/filemanager/panel.c:248
+#: src/filemanager/panel.c:258
msgid "C&hange time"
msgstr ""
-#: src/filemanager/panel.c:264
+#: src/filemanager/panel.c:274
msgid "Perm"
msgstr ""
-#: src/filemanager/panel.c:272
+#: src/filemanager/panel.c:282
msgid "Nl"
msgstr ""
#. TRANSLATORS: one single character to represent 'inode' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
-#: src/filemanager/panel.c:280
+#: src/filemanager/panel.c:290
msgid "sort|i"
msgstr ""
-#: src/filemanager/panel.c:281
+#: src/filemanager/panel.c:291
msgid "&Inode"
msgstr ""
-#: src/filemanager/panel.c:289
+#: src/filemanager/panel.c:299
msgid "UID"
msgstr ""
-#: src/filemanager/panel.c:297
+#: src/filemanager/panel.c:307
msgid "GID"
msgstr ""
-#: src/filemanager/panel.c:305
+#: src/filemanager/panel.c:315
msgid "Owner"
msgstr ""
-#: src/filemanager/panel.c:313
+#: src/filemanager/panel.c:323
msgid "Group"
msgstr ""
-#: src/filemanager/panel.c:500
+#: src/filemanager/panel.c:509
msgid "[dev]"
msgstr ""
-#: src/filemanager/panel.c:513 src/filemanager/panel.c:1032
+#: src/filemanager/panel.c:522 src/filemanager/panel.c:1042
msgid "UP--DIR"
msgstr ""
-#: src/filemanager/panel.c:532
+#: src/filemanager/panel.c:541
msgid "SYMLINK"
msgstr ""
-#: src/filemanager/panel.c:535
+#: src/filemanager/panel.c:544
msgid "SUB-DIR"
msgstr ""
-#: src/filemanager/panel.c:1024
+#: src/filemanager/panel.c:1034
msgid "<readlink failed>"
msgstr ""
-#: src/filemanager/panel.c:1089
+#: src/filemanager/panel.c:1099
#, c-format
msgid "%s in %d file"
msgid_plural "%s in %d files"
msgstr[0] ""
msgstr[1] ""
-#: src/filemanager/panel.c:1292
+#: src/filemanager/panel.c:1302
msgid "Panelize"
msgstr ""
-#: src/filemanager/panel.c:1810
+#: src/filemanager/panel.c:1822
msgid "Unknown tag on display format:"
msgstr ""
-#: src/filemanager/panel.c:2539
+#: src/filemanager/panel.c:2554
msgid "&Files only"
msgstr ""
-#: src/filemanager/panel.c:2542
+#: src/filemanager/panel.c:2557
msgid "&Case sensitive"
msgstr ""
-#: src/filemanager/panel.c:2597
+#: src/filemanager/panel.c:2647
msgid "Select"
msgstr ""
-#: src/filemanager/panel.c:2605
+#: src/filemanager/panel.c:2656
msgid "Unselect"
msgstr ""
-#: src/filemanager/panel.c:2818
+#: src/filemanager/panel.c:2684
+msgid "Filter"
+msgstr ""
+
+#: src/filemanager/panel.c:2894
msgid "Do you really want to execute?"
msgstr ""
-#: src/filemanager/panel.c:3284 src/filemanager/panel.c:4409
-#: src/filemanager/panel.c:4457 src/viewer/actions_cmd.c:332
+#: src/filemanager/panel.c:3360 src/filemanager/panel.c:4540
+#: src/filemanager/panel.c:4588 src/viewer/actions_cmd.c:313
msgid "Cannot read directory contents"
msgstr ""
-#: src/filemanager/panel.c:4511
+#: src/filemanager/panel.c:4642
msgid "User supplied format looks invalid, reverting to default."
msgstr ""
-#: src/filemanager/panelize.c:142
+#: src/filemanager/panelize.c:143
msgid "&Add new"
msgstr ""
-#: src/filemanager/panelize.c:176 src/filemanager/panelize.c:367
+#: src/filemanager/panelize.c:177 src/filemanager/panelize.c:317
msgid "External panelize"
msgstr ""
-#: src/filemanager/panelize.c:186 src/filemanager/panelize.c:282
-#: src/filemanager/panelize.c:595 src/filemanager/panelize.c:649
+#: src/filemanager/panelize.c:187 src/filemanager/panelize.c:283
+#: src/filemanager/panelize.c:652 src/filemanager/panelize.c:706
msgid "Other command"
msgstr ""
-#: src/filemanager/panelize.c:190
+#: src/filemanager/panelize.c:191
msgid "Command"
msgstr ""
-#: src/filemanager/panelize.c:267
+#: src/filemanager/panelize.c:268
msgid "Add to external panelize"
msgstr ""
-#: src/filemanager/panelize.c:268
+#: src/filemanager/panelize.c:269
msgid "Enter command label:"
msgstr ""
-#: src/filemanager/panelize.c:315
-msgid "Cannot invoke command."
+#: src/filemanager/panelize.c:343 src/filemanager/panelize.c:349
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-#: src/filemanager/panelize.c:367
-msgid "Pipe close failed"
+#: src/filemanager/panelize.c:360
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
-#: src/filemanager/panelize.c:538
+#: src/filemanager/panelize.c:595
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
-#: src/filemanager/panelize.c:599
+#: src/filemanager/panelize.c:656
msgid "Modified git files"
msgstr ""
-#: src/filemanager/panelize.c:600
+#: src/filemanager/panelize.c:657
msgid "Find rejects after patching"
msgstr ""
-#: src/filemanager/panelize.c:602
+#: src/filemanager/panelize.c:659
msgid "Find *.orig after patching"
msgstr ""
-#: src/filemanager/panelize.c:604
+#: src/filemanager/panelize.c:661
msgid "Find SUID and SGID programs"
msgstr ""
@@ -4836,20 +4801,20 @@
msgid "Internal bug: Double start of link area"
msgstr ""
-#: src/help.c:634 src/help.c:1123
+#: src/help.c:634 src/help.c:1119
#, c-format
msgid "Cannot find node %s in help file"
msgstr ""
-#: src/help.c:1138
+#: src/help.c:1134
msgid "Help"
msgstr ""
-#: src/help.c:1166
+#: src/help.c:1164
msgid "ButtonBar|Index"
msgstr ""
-#: src/help.c:1167
+#: src/help.c:1165
msgid "ButtonBar|Prev"
msgstr ""
@@ -4911,25 +4876,25 @@
"key, or click with the mouse to define it. Move around with Tab."
msgstr ""
-#: src/main.c:272
+#: src/main.c:271
#, c-format
msgid ""
"Failed to run:\n"
"%s\n"
msgstr ""
-#: src/main.c:285
+#: src/main.c:284
msgid "Home directory path is not absolute"
msgstr ""
-#: src/main.c:411
+#: src/main.c:409
msgid ""
"GNU Midnight Commander\n"
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
-#: src/main.c:551
+#: src/main.c:543
#, c-format
msgid ""
"\n"
@@ -4953,194 +4918,199 @@
msgid "%b %e %H:%M"
msgstr ""
-#: src/setup.c:1290
+#: src/setup.c:1079
#, c-format
msgid ""
"Cannot save file %s:\n"
"%s"
msgstr ""
-#: src/subshell/common.c:1331
+#: src/subshell/common.c:1375
#, c-format
msgid "Cannot open named pipe %s\n"
msgstr ""
-#: src/subshell/common.c:1603
+#: src/subshell/common.c:1656
msgid "The shell is still active. Quit anyway?"
msgstr ""
-#: src/subshell/common.c:1722
+#: src/subshell/common.c:1783
#, c-format
msgid "Warning: Cannot change to %s.\n"
msgstr ""
-#: src/textconf.c:86
+#: src/textconf.c:87
msgid "With builtin Editor and Aspell support"
msgstr ""
-#: src/textconf.c:88
+#: src/textconf.c:89
msgid "With builtin Editor"
msgstr ""
-#: src/textconf.c:94
+#: src/textconf.c:95
msgid "With optional subshell support"
msgstr ""
-#: src/textconf.c:96
+#: src/textconf.c:97
msgid "With subshell support as default"
msgstr ""
-#: src/textconf.c:101
+#: src/textconf.c:102
msgid "With support for background operations"
msgstr ""
-#: src/textconf.c:105
+#: src/textconf.c:106
msgid "With mouse support on xterm and Linux console"
msgstr ""
-#: src/textconf.c:107
+#: src/textconf.c:108
msgid "With mouse support on xterm"
msgstr ""
-#: src/textconf.c:111
+#: src/textconf.c:112
msgid "With support for X11 events"
msgstr ""
-#: src/textconf.c:115
+#: src/textconf.c:116
msgid "With internationalization support"
msgstr ""
-#: src/textconf.c:119
+#: src/textconf.c:120
msgid "With multiple codepages support"
msgstr ""
-#: src/textconf.c:123
+#: src/textconf.c:124
msgid "With ext2fs attributes support"
msgstr ""
-#: src/textconf.c:143
+#: src/textconf.c:144
#, c-format
msgid "Built with GLib %d.%d.%d\n"
msgstr ""
-#: src/textconf.c:147
+#: src/textconf.c:148
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
msgstr ""
-#: src/textconf.c:150
+#: src/textconf.c:151
#, c-format
msgid "Built with ncurses %s\n"
msgstr ""
-#: src/textconf.c:152
+#: src/textconf.c:153
msgid "Built with ncurses (unknown version)"
msgstr ""
-#: src/textconf.c:156
+#: src/textconf.c:157
#, c-format
msgid "Built with ncursesw %s\n"
msgstr ""
-#: src/textconf.c:158
+#: src/textconf.c:159
msgid "Built with ncursesw (unknown version)"
msgstr ""
-#: src/textconf.c:168
-msgid "Virtual File Systems:"
+#: src/textconf.c:166
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
msgstr ""
#: src/textconf.c:174
+msgid "Virtual File Systems:"
+msgstr ""
+
+#: src/textconf.c:180
msgid "Data types:"
msgstr ""
-#: src/textconf.c:202
+#: src/textconf.c:208
msgid "Home directory:"
msgstr ""
-#: src/textconf.c:203
+#: src/textconf.c:209
msgid "Profile root directory:"
msgstr ""
-#: src/textconf.c:206
+#: src/textconf.c:212
msgid "System data"
msgstr ""
-#: src/textconf.c:208 src/textconf.c:226
+#: src/textconf.c:214 src/textconf.c:232
msgid "Config directory:"
msgstr ""
-#: src/textconf.c:209 src/textconf.c:227
+#: src/textconf.c:215 src/textconf.c:233
msgid "Data directory:"
msgstr ""
-#: src/textconf.c:211
+#: src/textconf.c:217
msgid "File extension handlers:"
msgstr ""
-#: src/textconf.c:214
+#: src/textconf.c:220
msgid "VFS plugins and scripts:"
msgstr ""
-#: src/textconf.c:224
+#: src/textconf.c:230
msgid "User data"
msgstr ""
-#: src/textconf.c:239
+#: src/textconf.c:245
msgid "Cache directory:"
msgstr ""
-#: src/usermenu.c:320
+#: src/usermenu.c:321
msgid "Debug"
msgstr ""
-#: src/usermenu.c:337
+#: src/usermenu.c:338
msgid "ERROR:"
msgstr ""
-#: src/usermenu.c:341
+#: src/usermenu.c:342
msgid "True:"
msgstr ""
-#: src/usermenu.c:343
+#: src/usermenu.c:344
msgid "False:"
msgstr ""
-#: src/usermenu.c:563
+#: src/usermenu.c:577
msgid "Error calling program"
msgstr ""
-#: src/usermenu.c:590
+#: src/usermenu.c:605
msgid "Warning -- ignoring file"
msgstr ""
-#: src/usermenu.c:591
+#: src/usermenu.c:606
#, c-format
msgid ""
"File %s is not owned by root or you or is world writable.\n"
"Using it may compromise your security"
msgstr ""
-#: src/usermenu.c:703
+#: src/usermenu.c:718
msgid "Format error on file Extensions File"
msgstr ""
-#: src/usermenu.c:704
+#: src/usermenu.c:719
#, c-format
msgid "The %%var macro has no default"
msgstr ""
-#: src/usermenu.c:705
+#: src/usermenu.c:720
#, c-format
msgid "The %%var macro has no variable"
msgstr ""
-#: src/usermenu.c:1101
+#: src/usermenu.c:1121
#, c-format
msgid "No suitable entries found in %s"
msgstr ""
-#: src/usermenu.c:1115
+#: src/usermenu.c:1135
msgid "User menu"
msgstr ""
@@ -5187,354 +5157,412 @@
"%s"
msgstr ""
-#: src/vfs/extfs/extfs.c:649
+#: src/vfs/extfs/extfs.c:691
+msgid "Inconsistent archive"
+msgstr ""
+
+#: src/vfs/extfs/extfs.c:740
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-#: src/vfs/extfs/extfs.c:654 src/vfs/extfs/extfs.c:659
-msgid "Inconsistent extfs archive"
+#: src/vfs/extfs/extfs.c:753 src/vfs/extfs/extfs.c:951
+#: src/vfs/extfs/extfs.c:961 src/vfs/extfs/extfs.c:966
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
-#: src/vfs/extfs/extfs.c:1442
+#: src/vfs/extfs/extfs.c:1558
#, c-format
msgid "Warning: cannot open %s directory\n"
msgstr ""
-#: src/vfs/fish/fish.c:383
+#: src/vfs/fish/fish.c:382
#, c-format
msgid "fish: Disconnecting from %s"
msgstr ""
-#: src/vfs/fish/fish.c:559
+#: src/vfs/fish/fish.c:567
msgid "fish: Waiting for initial line..."
msgstr ""
-#: src/vfs/fish/fish.c:569
+#: src/vfs/fish/fish.c:577
msgid "Sorry, we cannot do password authenticated connections for now."
msgstr ""
-#: src/vfs/fish/fish.c:577
+#: src/vfs/fish/fish.c:585
#, c-format
msgid "fish: Password is required for %s"
msgstr ""
-#: src/vfs/fish/fish.c:585
+#: src/vfs/fish/fish.c:593
msgid "fish: Sending password..."
msgstr ""
-#: src/vfs/fish/fish.c:622
+#: src/vfs/fish/fish.c:630
msgid "fish: Sending initial line..."
msgstr ""
-#: src/vfs/fish/fish.c:633
+#: src/vfs/fish/fish.c:641
msgid "fish: Handshaking version..."
msgstr ""
-#: src/vfs/fish/fish.c:644
+#: src/vfs/fish/fish.c:652
msgid "fish: Getting host info..."
msgstr ""
-#: src/vfs/fish/fish.c:766
+#: src/vfs/fish/fish.c:931
#, c-format
msgid "fish: Reading directory %s..."
msgstr ""
-#: src/vfs/fish/fish.c:952 src/vfs/ftpfs/ftpfs.c:1858
-#: src/vfs/undelfs/undelfs.c:392
+#: src/vfs/fish/fish.c:976 src/vfs/ftpfs/ftpfs.c:1918
+#: src/vfs/undelfs/undelfs.c:384
#, c-format
msgid "%s: done."
msgstr ""
-#: src/vfs/fish/fish.c:959 src/vfs/ftpfs/ftpfs.c:1805
-#: src/vfs/undelfs/undelfs.c:395
+#: src/vfs/fish/fish.c:983 src/vfs/ftpfs/ftpfs.c:1866
+#: src/vfs/undelfs/undelfs.c:387
#, c-format
msgid "%s: failure"
msgstr ""
-#: src/vfs/fish/fish.c:1017
+#: src/vfs/fish/fish.c:1041
#, c-format
msgid "fish: store %s: sending command..."
msgstr ""
-#: src/vfs/fish/fish.c:1041
+#: src/vfs/fish/fish.c:1065
msgid "fish: Local read failed, sending zeros"
msgstr ""
-#: src/vfs/fish/fish.c:1060
+#: src/vfs/fish/fish.c:1084
msgid "fish: storing file"
msgstr ""
-#: src/vfs/fish/fish.c:1130
+#: src/vfs/fish/fish.c:1154
msgid "Aborting transfer..."
msgstr ""
-#: src/vfs/fish/fish.c:1146
+#: src/vfs/fish/fish.c:1170
msgid "Error reported after abort."
msgstr ""
-#: src/vfs/fish/fish.c:1148
+#: src/vfs/fish/fish.c:1172
msgid "Aborted transfer would be successful."
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:590
+#: src/vfs/ftpfs/ftpfs.c:589
#, c-format
msgid "ftpfs: Disconnecting from %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:642
+#: src/vfs/ftpfs/ftpfs.c:641
#, c-format
msgid "FTP: Password required for %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:685
+#: src/vfs/ftpfs/ftpfs.c:684
msgid "ftpfs: sending login name"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:690
+#: src/vfs/ftpfs/ftpfs.c:689
msgid "ftpfs: sending user password"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:696
+#: src/vfs/ftpfs/ftpfs.c:695
#, c-format
msgid "FTP: Account required for user %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:698
+#: src/vfs/ftpfs/ftpfs.c:697
msgid "Account:"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:703
+#: src/vfs/ftpfs/ftpfs.c:702
msgid "ftpfs: sending user account"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:713
+#: src/vfs/ftpfs/ftpfs.c:712
msgid "ftpfs: logged in"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:726
+#: src/vfs/ftpfs/ftpfs.c:725
#, c-format
msgid "ftpfs: Login incorrect for user %s "
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:857
+#: src/vfs/ftpfs/ftpfs.c:861
msgid "ftpfs: Invalid host name."
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:903 src/vfs/ftpfs/ftpfs.c:919
+#: src/vfs/ftpfs/ftpfs.c:907 src/vfs/ftpfs/ftpfs.c:923
#, c-format
msgid "ftpfs: %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:926
+#: src/vfs/ftpfs/ftpfs.c:930
#, c-format
msgid "ftpfs: making connection to %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:936
+#: src/vfs/ftpfs/ftpfs.c:940
msgid "ftpfs: connection interrupted by user"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:938
+#: src/vfs/ftpfs/ftpfs.c:942
#, c-format
msgid "ftpfs: connection to server failed: %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:993
+#: src/vfs/ftpfs/ftpfs.c:997
#, c-format
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1305
+#: src/vfs/ftpfs/ftpfs.c:1260
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#: src/vfs/ftpfs/ftpfs.c:1323 src/vfs/ftpfs/ftpfs.c:1342
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#: src/vfs/ftpfs/ftpfs.c:1330
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+#: src/vfs/ftpfs/ftpfs.c:1347
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
+#: src/vfs/ftpfs/ftpfs.c:1365
msgid "ftpfs: invalid address family"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1313
+#: src/vfs/ftpfs/ftpfs.c:1373
#, c-format
msgid "ftpfs: could not create socket: %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1348
+#: src/vfs/ftpfs/ftpfs.c:1408
msgid "ftpfs: could not setup passive mode"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1468
+#: src/vfs/ftpfs/ftpfs.c:1533
msgid "ftpfs: aborting transfer."
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1472
+#: src/vfs/ftpfs/ftpfs.c:1537
#, c-format
msgid "ftpfs: abort error: %s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1480
+#: src/vfs/ftpfs/ftpfs.c:1545
msgid "ftpfs: abort failed"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1623 src/vfs/ftpfs/ftpfs.c:1746
+#: src/vfs/ftpfs/ftpfs.c:1688 src/vfs/ftpfs/ftpfs.c:1816
msgid "ftpfs: CWD failed."
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1632 src/vfs/ftpfs/ftpfs.c:1640
+#: src/vfs/ftpfs/ftpfs.c:1697 src/vfs/ftpfs/ftpfs.c:1705
msgid "ftpfs: couldn't resolve symlink"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1714
+#: src/vfs/ftpfs/ftpfs.c:1779
msgid "Resolving symlink..."
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1738
+#: src/vfs/ftpfs/ftpfs.c:1808
#, c-format
msgid "ftpfs: Reading FTP directory %s... %s%s"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1741
+#: src/vfs/ftpfs/ftpfs.c:1811
msgid "(strict rfc959)"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1741
+#: src/vfs/ftpfs/ftpfs.c:1811
msgid "(chdir first)"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1782
+#: src/vfs/ftpfs/ftpfs.c:1852
msgid "ftpfs: failed; nowhere to fallback to"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:1947
+#: src/vfs/ftpfs/ftpfs.c:2008
msgid "ftpfs: storing file"
msgstr ""
-#: src/vfs/ftpfs/ftpfs.c:2451
+#: src/vfs/ftpfs/ftpfs.c:2509
msgid ""
"~/.netrc file has incorrect mode\n"
"Remove password or correct mode"
msgstr ""
-#: src/vfs/sfs/sfs.c:443
+#: src/vfs/sfs/sfs.c:226 src/vfs/sfs/sfs.c:236 src/vfs/sfs/sfs.c:243
+#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#: src/vfs/sfs/sfs.c:461
#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
-#: src/vfs/sfs/sfs.c:473
+#: src/vfs/sfs/sfs.c:491
#, c-format
msgid ""
"Warning: Invalid line in %s:\n"
"%s\n"
msgstr ""
-#: src/vfs/sfs/sfs.c:490
+#: src/vfs/sfs/sfs.c:508
#, c-format
msgid ""
"Warning: Invalid flag %c in %s:\n"
"%s\n"
msgstr ""
-#: src/vfs/sftpfs/config_parser.c:234
+#: src/vfs/sftpfs/config_parser.c:232
#, c-format
msgid "sftp: an error occurred while reading %s: %s"
msgstr ""
-#: src/vfs/sftpfs/config_parser.c:338
+#: src/vfs/sftpfs/config_parser.c:336
msgid "sftp: Unable to get current user name."
msgstr ""
-#: src/vfs/sftpfs/connection.c:82 src/vfs/sftpfs/vfs_subclass.c:116
+#: src/vfs/sftpfs/connection.c:114 src/vfs/sftpfs/sftpfs.c:746
msgid "sftp: Invalid host name."
msgstr ""
-#: src/vfs/sftpfs/connection.c:114 src/vfs/sftpfs/connection.c:130
+#: src/vfs/sftpfs/connection.c:146 src/vfs/sftpfs/connection.c:186
#, c-format
msgid "sftp: %s"
msgstr ""
-#: src/vfs/sftpfs/connection.c:135
+#: src/vfs/sftpfs/connection.c:174
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
+#: src/vfs/sftpfs/connection.c:191
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
-#: src/vfs/sftpfs/connection.c:145
+#: src/vfs/sftpfs/connection.c:201
msgid "sftp: connection interrupted by user"
msgstr ""
-#: src/vfs/sftpfs/connection.c:147
+#: src/vfs/sftpfs/connection.c:203
#, c-format
msgid "sftp: connection to server failed: %s"
msgstr ""
-#: src/vfs/sftpfs/connection.c:281
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+#: src/vfs/sftpfs/connection.c:319
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-#: src/vfs/sftpfs/connection.c:286
-msgid "sftp: Passphrase is empty."
+#: src/vfs/sftpfs/connection.c:322
+msgid "sftp: unknown host key type:"
msgstr ""
-#: src/vfs/sftpfs/connection.c:391
+#: src/vfs/sftpfs/connection.c:379
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-#: src/vfs/sftpfs/connection.c:396
-msgid "sftp: Password is empty."
+#: src/vfs/sftpfs/connection.c:443
+msgid "sftp: cannot get the remote host key"
msgstr ""
-#: src/vfs/sftpfs/connection.c:475
-msgid "sftp: Failure establishing SSH session"
+#: src/vfs/sftpfs/connection.c:483
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-#: src/vfs/sftpfs/file.c:279
-msgid "sftp: No file handler data present for reading file"
+#: src/vfs/sftpfs/connection.c:490
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
-#: src/vfs/sftpfs/internal.c:105
+#: src/vfs/sftpfs/connection.c:512
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
-#: src/vfs/sftpfs/vfs_class.c:207
+#: src/vfs/sftpfs/connection.c:525
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-#: src/vfs/sftpfs/vfs_class.c:209
-msgid "sftp: Listing done."
+#: src/vfs/sftpfs/connection.c:552
+msgid "sftp: host key verification failed"
msgstr ""
-#: src/vfs/smbfs/smbfs.c:692
+#: src/vfs/sftpfs/connection.c:688
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-#: src/vfs/smbfs/smbfs.c:1321
-msgid "Authentication failed"
+#: src/vfs/sftpfs/connection.c:693
+msgid "sftp: Passphrase is empty."
msgstr ""
-#: src/vfs/smbfs/smbfs.c:1910
+#: src/vfs/sftpfs/connection.c:798
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#: src/vfs/smbfs/smbfs.c:1939
-#, c-format
-msgid "Error %s removing directory %s"
+#: src/vfs/sftpfs/connection.c:803
+msgid "sftp: Password is empty."
msgstr ""
-#: src/vfs/smbfs/smbfs.c:2069
-#, c-format
-msgid "%s opening remote file %s"
+#: src/vfs/sftpfs/connection.c:884
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+#: src/vfs/sftpfs/file.c:277
+msgid "sftp: No file handler data present for reading file"
msgstr ""
-#: src/vfs/smbfs/smbfs.c:2149
+#: src/vfs/sftpfs/internal.c:105
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
-#: src/vfs/smbfs/smbfs.c:2186
+#: src/vfs/sftpfs/sftpfs.c:218
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+#: src/vfs/sftpfs/sftpfs.c:220
+msgid "sftp: Listing done."
msgstr ""
#: src/vfs/tar/tar.c:350 src/vfs/tar/tar.c:373
@@ -5560,130 +5588,130 @@
"doesn't look like a tar archive."
msgstr ""
-#: src/vfs/undelfs/undelfs.c:131
+#: src/vfs/undelfs/undelfs.c:123
msgid "undelfs: error"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:248
+#: src/vfs/undelfs/undelfs.c:240
msgid "not enough memory"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:254
+#: src/vfs/undelfs/undelfs.c:246
msgid "while allocating block buffer"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:260
+#: src/vfs/undelfs/undelfs.c:252
#, c-format
msgid "open_inode_scan: %d"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:266
+#: src/vfs/undelfs/undelfs.c:258
#, c-format
msgid "while starting inode scan %d"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:273
+#: src/vfs/undelfs/undelfs.c:265
#, c-format
msgid "undelfs: loading deleted files information %d inodes"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:288
+#: src/vfs/undelfs/undelfs.c:280
#, c-format
msgid "while calling ext2_block_iterate %d"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:301
+#: src/vfs/undelfs/undelfs.c:293
msgid "no more memory while reallocating array"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:323
+#: src/vfs/undelfs/undelfs.c:315
#, c-format
msgid "while doing inode scan %d"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:374
+#: src/vfs/undelfs/undelfs.c:366
#, c-format
msgid "Cannot open file %s"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:377
+#: src/vfs/undelfs/undelfs.c:369
msgid "undelfs: reading inode bitmap..."
msgstr ""
-#: src/vfs/undelfs/undelfs.c:380
+#: src/vfs/undelfs/undelfs.c:372
#, c-format
msgid ""
"Cannot load inode bitmap from:\n"
"%s"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:383
+#: src/vfs/undelfs/undelfs.c:375
msgid "undelfs: reading block bitmap..."
msgstr ""
-#: src/vfs/undelfs/undelfs.c:386
+#: src/vfs/undelfs/undelfs.c:378
#, c-format
msgid ""
"Cannot load block bitmap from:\n"
"%s"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:410
+#: src/vfs/undelfs/undelfs.c:402
msgid "vfs_info is not fs!"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:461 src/vfs/undelfs/undelfs.c:685
+#: src/vfs/undelfs/undelfs.c:453 src/vfs/undelfs/undelfs.c:677
msgid "You have to chdir to extract files first"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:607
+#: src/vfs/undelfs/undelfs.c:599
msgid "while iterating over blocks"
msgstr ""
-#: src/vfs/undelfs/undelfs.c:729
+#: src/vfs/undelfs/undelfs.c:721
#, c-format
msgid "Cannot open file \"%s\""
msgstr ""
-#: src/vfs/undelfs/undelfs.c:823
+#: src/vfs/undelfs/undelfs.c:815
msgid "Ext2lib error"
msgstr ""
-#: src/viewer/actions_cmd.c:461
+#: src/viewer/actions_cmd.c:443
msgid "Invalid value"
msgstr ""
-#: src/viewer/actions_cmd.c:660
+#: src/viewer/actions_cmd.c:642
msgid "File was modified. Save with exit?"
msgstr ""
-#: src/viewer/actions_cmd.c:661
+#: src/viewer/actions_cmd.c:643
msgid "&Cancel quit"
msgstr ""
-#: src/viewer/actions_cmd.c:666
+#: src/viewer/actions_cmd.c:648
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file?"
msgstr ""
-#: src/viewer/dialogs.c:176
+#: src/viewer/dialogs.c:149
msgid "&Line number"
msgstr ""
-#: src/viewer/dialogs.c:177
+#: src/viewer/dialogs.c:150
msgid "Pe&rcents"
msgstr ""
-#: src/viewer/dialogs.c:178
+#: src/viewer/dialogs.c:151
msgid "&Decimal offset"
msgstr ""
-#: src/viewer/dialogs.c:179
+#: src/viewer/dialogs.c:152
msgid "He&xadecimal offset"
msgstr ""
-#: src/viewer/dialogs.c:214
+#: src/viewer/dialogs.c:188
msgid "Goto"
msgstr ""
@@ -5727,14 +5755,14 @@
msgid "ButtonBar|Format"
msgstr ""
-#: src/viewer/growbuf.c:202
+#: src/viewer/growbuf.c:212
#, c-format
msgid ""
"Failed to read data from child stdout:\n"
"%s"
msgstr ""
-#: src/viewer/hex.c:420
+#: src/viewer/hex.c:418
#, c-format
msgid ""
"Error while closing the file:\n"
@@ -5742,43 +5770,43 @@
"Data may have been written or not"
msgstr ""
-#: src/viewer/hex.c:428
+#: src/viewer/hex.c:426
#, c-format
msgid ""
"Cannot save file:\n"
"%s"
msgstr ""
-#: src/viewer/lib.c:391 src/viewer/lib.c:393
+#: src/viewer/lib.c:390 src/viewer/lib.c:392
msgid "View: "
msgstr ""
-#: src/viewer/mcviewer.c:334
+#: src/viewer/mcviewer.c:337
#, c-format
msgid ""
"Cannot open \"%s\"\n"
"%s"
msgstr ""
-#: src/viewer/mcviewer.c:364
+#: src/viewer/mcviewer.c:367
msgid "Cannot view: not a regular file"
msgstr ""
-#: src/viewer/mcviewer.c:399
+#: src/viewer/mcviewer.c:402
#, c-format
msgid ""
"Cannot open \"%s\" in parse mode\n"
"%s"
msgstr ""
-#: src/viewer/search.c:398
+#: src/viewer/search.c:450
msgid "Search done"
msgstr ""
-#: src/viewer/search.c:398
+#: src/viewer/search.c:450
msgid "Continue from beginning?"
msgstr ""
-#: tests/src/execute__execute_with_vfs_arg.c:156
+#: tests/src/execute__execute_with_vfs_arg.c:154
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
msgstr ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/mn.po
^
|
@@ -8,10 +8,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Shuree Nyam-Oidov <99shuree@gmail.com>, 2020\n"
"Language-Team: Mongolian (http://www.transifex.com/mc/mc/language/mn/)\n"
"Language: mn\n"
"MIME-Version: 1.0\n"
@@ -73,24 +73,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -165,10 +147,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -522,24 +504,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Анхааруулга"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr " %s ийн кэш лавлах хугацаа дууссан байна"
@@ -665,12 +638,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Тусгайлсан файл руу тэмдэглэх FTP диалог"
-msgid "Set debug level"
-msgstr "Дебаг түвшинг тодорхойлох"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Файл харагчыг ажиллуулах"
@@ -960,15 +927,6 @@
msgid "Two files are needed to compare"
msgstr "Хоёр файлд харьцуулалт хэрэгтэй"
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1001,6 +959,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Анхааруулга"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1009,14 +970,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Хайж байна %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1062,9 +1015,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1095,27 +1045,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1150,13 +1079,6 @@
msgid "&Local"
msgstr "&Локал"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1208,7 +1130,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1259,34 +1181,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Болих"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Солих"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "&Бүгд"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Алгасах"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Болих"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1577,12 +1499,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Солих"
+
+msgid "A&ll"
+msgstr "&Бүгд"
+
+msgid "&Skip"
+msgstr "&Алгасах"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Хайж байна %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1702,6 +1663,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2092,19 +2062,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s ийн Нууц үг"
-
-msgid "Domain:"
-msgstr "Домен:"
-
-msgid "Username:"
-msgstr "Хэрэглэгчийн нэр:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2308,12 +2265,6 @@
msgid "Cannot change directory"
msgstr "Хавтас руу шилжиж чадсангүй"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr "%s руу холбох:"
@@ -2417,9 +2368,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2454,14 +2402,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2471,8 +2429,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2707,6 +2665,15 @@
msgid "(stalled)"
msgstr "(гацсан)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Хадгалах"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2719,12 +2686,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Дутуу файл орж ирсэн байна. Хадгалах уу?"
-
-msgid "&Keep"
-msgstr "&Хадгалах"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2831,7 +2792,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2859,7 +2820,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2912,7 +2873,7 @@
msgstr "&Жагшаалтын формат"
msgid "&Sort order..."
-msgstr "Эрэмбэлэх &дараалал..."
+msgstr ""
msgid "&Filter..."
msgstr "&Шүүлт..."
@@ -2926,12 +2887,9 @@
msgid "S&hell link..."
msgstr "S&hell-холбоос..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B-холбоос..."
-
msgid "Paneli&ze"
msgstr "&Панелиз"
@@ -3143,6 +3101,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3305,7 +3266,7 @@
msgstr "Мэдээлэлийн зай алга"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3550,6 +3511,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3577,11 +3541,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Командыг биелүүлэх боломжгүй."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Урсгалыг хаахад алдаа гарлаа"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3832,6 +3803,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3957,16 +3932,22 @@
"Файлын төгсөлийн алдаа\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Алдаатай архив tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-" %s-архивыг нээж чадсангүй\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Алдаатай архив extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4082,6 +4063,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4133,6 +4129,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4166,6 +4168,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4177,62 +4182,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/nb.po
^
|
@@ -3,15 +3,16 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Kjell Cato Heskjestad <cato@heskjestad.xyz>, 2019-2020
+# heskjestad <cato@heskjestad.xyz>, 2021-2022
+# heskjestad <cato@heskjestad.xyz>, 2019-2021
# Slava Zanko <slavazanko@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: heskjestad <cato@heskjestad.xyz>, 2021-2022\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/mc/mc/language/"
"nb/)\n"
"Language: nb\n"
@@ -77,30 +78,6 @@
msgid "FATAL: not a directory:"
msgstr "FATALT: ikke en mappe:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Det oppstod en feil under migrering av brukers oppsett: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Migrerte det gamle oppsettet fra %s\n"
-"til Freedesktops anbefalte mapper.\n"
-"For mer informasjon, se\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Migrerte det gamle oppsettet fra %s\n"
-"til %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -188,12 +165,12 @@
msgid "True color not supported with ncurses."
msgstr "ncurses støtter ikke 24-biters farge"
-msgid "True color not supported in this slang version."
-msgstr "Denne versjonen av S-Lang støtter ikke 24-biters farge."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Denne terminalen ser ikke ut til å støtte 256 farger."
+msgid "True color not supported in this slang version."
+msgstr "Denne versjonen av S-Lang støtter ikke 24-biters farge."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Sett COLORTERM=truecolor hvis terminalen virkelig støtter 24-biters farge."
@@ -554,6 +531,9 @@
"Uventet feil i select() ved lesing av data fra barneprosess:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Klarte ikke lukke rørdeskriptor (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -562,18 +542,6 @@
"Uventet feil i waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Advarsel"
-
-msgid "Pipe failed"
-msgstr "pipe() mislyktes"
-
-msgid "Dup failed"
-msgstr "dup() mislyktes"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Klarte ikke «dup»e gammelt feilrør"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Mappehurtiglager utgått for %s"
@@ -701,12 +669,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Logg FTP-dialogen til angitt fil"
-msgid "Set debug level"
-msgstr "Velg feilsøkingsnivå"
-
-msgid "<integer>"
-msgstr "<heltall>"
-
msgid "Launches the file viewer on a file"
msgstr "Vis innholdet til en fil"
@@ -1044,15 +1006,6 @@
msgid "Two files are needed to compare"
msgstr "Trenger to filer for å sammenligne"
-msgid "Choose syntax highlighting"
-msgstr "Velg syntaksutheving"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Last gjeldende syntaks på nytt >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Laster: %3d%%"
@@ -1087,6 +1040,9 @@
"Fila «%s» er for stor.\n"
"Åpne den likevel?"
+msgid "Warning"
+msgstr "Advarsel"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Klarte ikke lese fra rør: %s"
@@ -1095,14 +1051,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Klarte ikke åpne lesetilgang til rør: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Søker %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Søker etter %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Fila har harde lenker. Koble fra før lagring?"
@@ -1148,9 +1096,6 @@
msgid "Save As"
msgstr "Lagre som"
-msgid "Collect completions"
-msgstr "Samle fullføringer"
-
msgid "&Quick save"
msgstr "&Rask lagring"
@@ -1181,27 +1126,6 @@
msgid "Cannot save file"
msgstr "Klarte ikke lagre fil"
-msgid "Delete macro"
-msgstr "Slett makro"
-
-msgid "Press macro hotkey:"
-msgstr "Trykk på makroens hurtigtast:"
-
-msgid "Macro not deleted"
-msgstr "Slettet ikke makro"
-
-msgid "Save macro"
-msgstr "Lagre makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Trykk på makroens nye hurtigtast:"
-
-msgid "Repeat last commands"
-msgstr "Gjenta siste kommandoer"
-
-msgid "Repeat times:"
-msgstr "Antall gjentakelser:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Bekreft lagring til: «%s»"
@@ -1236,13 +1160,6 @@
msgid "&Local"
msgstr "&Lokal"
-msgid "Replace"
-msgstr "Erstatt"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Erstattet %ld forekomster"
-
msgid "[NoName]"
msgstr "[Navnløs]"
@@ -1298,9 +1215,9 @@
msgid "Run sort"
msgstr "Kjør sortering"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Angi sorteringsalternativer (se manualside),\n"
+"Angi sorteringsalternativer (jf. «man 1 sort»),\n"
"og skill dem med blanktegn:"
msgid "Sort"
@@ -1353,35 +1270,35 @@
"Denne teksten er endret, men ikke lagret.\n"
"Endringene kasseres hvis du fortsetter."
-msgid "In se&lection"
-msgstr "I &utvalg"
+msgid "Cancel"
+msgstr "Avbryt"
-msgid "&Find all"
-msgstr "&Finn alle"
+msgid "Collect completions"
+msgstr "Samle fullføringer"
-msgid "Enter replacement string:"
-msgstr "Erstatt med:"
+msgid "NoName"
+msgstr "Navnløs"
-msgid "Replace with:"
-msgstr "Erstatt med:"
+msgid "Save macro"
+msgstr "Lagre makro"
-msgid "&Replace"
-msgstr "E&rstatt"
+msgid "Press the macro's new hotkey:"
+msgstr "Trykk på makroens nye hurtigtast:"
-msgid "A&ll"
-msgstr "A&lle"
+msgid "Delete macro"
+msgstr "Slett makro"
-msgid "&Skip"
-msgstr "&Hopp over"
+msgid "Press macro hotkey:"
+msgstr "Trykk på makroens hurtigtast:"
-msgid "Confirm replace"
-msgstr "Bekreft erstatning"
+msgid "Macro not deleted"
+msgstr "Slettet ikke makro"
-msgid "Cancel"
-msgstr "Avbryt"
+msgid "Repeat last commands"
+msgstr "Gjenta siste kommandoer"
-msgid "NoName"
-msgstr "Navnløs"
+msgid "Repeat times:"
+msgstr "Antall gjentakelser:"
msgid "&Open file..."
msgstr "&Åpne fil ..."
@@ -1671,6 +1588,45 @@
msgid "Editor options"
msgstr "Redigeringsinnstillinger"
+msgid "In se&lection"
+msgstr "I &utvalg"
+
+msgid "&Find all"
+msgstr "&Finn alle"
+
+msgid "Enter replacement string:"
+msgstr "Erstatt med:"
+
+msgid "Replace"
+msgstr "Erstatt"
+
+msgid "Replace with:"
+msgstr "Erstatt med:"
+
+msgid "&Replace"
+msgstr "E&rstatt"
+
+msgid "A&ll"
+msgstr "A&lle"
+
+msgid "&Skip"
+msgstr "&Hopp over"
+
+msgid "Confirm replace"
+msgstr "Bekreft erstatning"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Søker %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Søker etter %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Erstattet %ld forekomster"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1678,8 +1634,8 @@
"Et brukervennlig skriveprogram\n"
"skrevet for Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Opphavsrett (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Opphavsrett (C) 1996-2022 the Free Software Foundation"
msgid "About"
msgstr "Om"
@@ -1798,6 +1754,15 @@
msgid "Select language"
msgstr "Velg språk"
+msgid "Choose syntax highlighting"
+msgstr "Velg syntaksutheving"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Last gjeldende syntaks på nytt >"
+
msgid "Load syntax file"
msgstr "Last syntaksfil"
@@ -1991,7 +1956,7 @@
msgstr "Drakt:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Skygger"
msgid "Appearance"
msgstr "Presentasjonsdrakt"
@@ -2204,19 +2169,6 @@
msgstr "Bakgrunnsjobber"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Passord for \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domene:"
-
-msgid "Username:"
-msgstr "Brukernavn:"
-
-msgid "SMB authentication"
-msgstr "SMB-autentisering"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2285,7 +2237,7 @@
msgstr "Ikke COW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Direkte adgang til filer"
msgid "Casefolded file"
msgstr "Ikke versalsensitiv"
@@ -2426,12 +2378,6 @@
msgid "Cannot change directory"
msgstr " Klarte ikke bytte mappe"
-msgid "Filter"
-msgstr "Filtrer"
-
-msgid "Set expression for filtering filenames"
-msgstr "Skriv inn et filtreringsmønster for filnavn"
-
#, c-format
msgid "Link %s to:"
msgstr "Lag lenke fra %s til:"
@@ -2537,9 +2483,6 @@
msgid "Shell link to machine"
msgstr "Koble til skall"
-msgid "SMB link to machine"
-msgstr "Koble til SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Gjenopprett filer i et ext2-filsystem"
@@ -2578,17 +2521,30 @@
"Klarte ikke opprette midlertidig kommandofil\n"
"%s"
+msgid "Pipe failed"
+msgstr "pipe() mislyktes"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Fila %s er utdatert.\n"
+"Midnight Commandor bruker nå fila %s.\n"
+"Kopier ev. endringer i den gamle fila til den nye."
+
#, c-format
msgid " %s%s file error"
msgstr "Feil i fila %s%s "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formatet til fila %smc.ext ble endret i versjon 3.0. Det ser ut som om "
+"Formatet til fila %s%s ble endret i versjon 4.0. Det ser ut som om "
"installasjonen mislyktes. Hent en oppdatert kopi fra Midnight Commander-"
"pakken."
@@ -2598,11 +2554,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formatet til fila %s ble endret i versjon 3.0. Du kan enten hente det fra "
-"%smc.ext eller bruke fila som en eksempelfil."
+"Formatet til fila %s ble endret i versjon 4.0. Du kan enten hente det fra "
+"%s%s eller bruke fila som en eksempelfil."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopier"
@@ -2896,6 +2852,15 @@
msgid "(stalled)"
msgstr "(venter)"
+msgid "Incomplete file was retrieved"
+msgstr "Leste ufullstendig fil"
+
+msgid "&Keep"
+msgstr "&Behold"
+
+msgid "&Continue copy"
+msgstr "Fortsett &kopiering"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2912,12 +2877,6 @@
"Klarte ikke lukke målfila «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Leste ufullstendig fil. Beholde den?"
-
-msgid "&Keep"
-msgstr "&Behold"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3036,8 +2995,8 @@
msgstr "Bakgrunnsprosess: Fila finnes"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Filer behandlet: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Filer behandlet: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3064,8 +3023,8 @@
msgstr " Totalt: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Totalt: %s/%s "
+msgid " Total: %s / %s "
+msgstr " Totalt: %s / %s "
msgid "Source"
msgstr "Kilde"
@@ -3131,12 +3090,9 @@
msgid "S&hell link..."
msgstr "Koble til &skall ..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr "K&oble til SFTP ..."
-msgid "SM&B link..."
-msgstr "Koble til SM&B ..."
-
msgid "Paneli&ze"
msgstr "&Vis lagt til i panel"
@@ -3348,6 +3304,9 @@
msgid "&Find recursively"
msgstr "Søk i alle &undermapper"
+msgid "Follow s&ymlinks"
+msgstr "Følg s&ymlenker"
+
msgid "S&kip hidden"
msgstr "Hopp over &skjulte"
@@ -3514,8 +3473,8 @@
msgstr "Mangler info om ledig kapasitet"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Ledig kap.: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Ledig kap.: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3759,6 +3718,9 @@
msgid "Unselect"
msgstr "Fravelg"
+msgid "Filter"
+msgstr "Filtrer"
+
msgid "Do you really want to execute?"
msgstr "Vil du kjøre?"
@@ -3786,11 +3748,23 @@
msgid "Enter command label:"
msgstr "Angi kommandoetikett:"
-msgid "Cannot invoke command."
-msgstr "Klarte ikke kalle kommando."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Legg til eksternt i panel:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Klarte ikke lukke rør"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Legg til eksternt i panel:\n"
+"klarte ikke lese data fra barnets stdout:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Kan ikke kjøre «Legg til eksternt i panel» i ikke-lokal mappe"
@@ -4055,6 +4029,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Bruker ncursesw (ukjent versjon)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Bygget med libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Virtuelle filsystem:"
@@ -4180,16 +4158,27 @@
"Uventet slutt på fil\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inkonsistent tar-arkiv"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Klarte ikke åpne arkivet %s \n"
+"Klarte ikke åpne arkivet %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inkonsistent extfs-arkiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"EXTFS virtuelt filsystem:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4305,6 +4294,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Venter på å prøve igjen ... %d (Ctrl + G avbryter)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: klarte ikke slå opp navn fra adresse: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: forsøk ny tilkobling til tjener, forsøk %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: klarte ikke hente socket-navn: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: ny tilkobling til tjener mislyktes"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: ugyldig adressefamilie"
@@ -4358,6 +4362,14 @@
"Fjern passordet eller fiks rettighetene"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"SFS virtuelt filsystem:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Advarsel: fant ikke fila %s\n"
@@ -4391,6 +4403,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr "sftp: Klarte ikke konvertere den eksterne vertens IP til tekst"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: Oppretter tilkobling til %s"
@@ -4402,6 +4417,67 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: Tilkoblingen til tjeneren mislyktes: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: Fant vertsnøkkel med type som ikke støttes: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: Vertsnøkkel har ukjent type:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"%s (%s)\n"
+"ble permanent lagt til\n"
+"listen over kjente verter."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: Kan ikke hente den eksterne vertens nøkkel"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: Nøkkeltype støttes ikke; kan ikke kontrollere nøkkelen til ekstern vert"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: Kan ikke beregne sjekksum til vertens nøkkel"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Kan ikke fastslå \n"
+"autentisiteten til verten\n"
+"%s (%s)\n"
+"Sjekksummen til\n"
+"nøkkelen til %s er:\n"
+"SHA1: %s.\n"
+"Vil du legge den til listen over kjente verter og fortsette tilkobling?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"Fant %s (%s)\n"
+"i listen over kjente verter, men\n"
+"DET ER IKKE SAMSVAR MELLOM NØKLENE!\n"
+"DETTE KAN VÆRE ET MELLOMMANNS-ANGREP!\n"
+"Vil du virkelig legge den til i listen over kjente verter og fortsette "
+"tilkobling?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: Verifisering av vertsnøkkel mislyktes"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Skriv inn passfrase for %s"
@@ -4416,7 +4492,7 @@
msgid "sftp: Password is empty."
msgstr "sftp: Passordet er tomt."
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: failure establishing SSH session"
msgstr "sftp: Klarte ikke sette opp SSH-økt"
msgid "sftp: No file handler data present for reading file"
@@ -4434,33 +4510,6 @@
msgstr "sftp: Utlisting ferdig."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "klarte ikke koble til %s på nytt"
-
-msgid "Authentication failed"
-msgstr "Autentisering mislyktes"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Feilen «%s» oppstod under oppretting av mappa %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Feilen «%s» oppstod under sletting av mappa %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s ved åpning av ekstern fil %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s ved sletting av ekstern fil %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s ved endring av filnavn\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/nl.po
^
|
@@ -4,7 +4,7 @@
#
# Translators:
# flipthegreat <flipthegreat@hotmail.com>, 2011
-# Heimen Stoffels <vistausss@outlook.com>, 2013
+# Heimen Stoffels <vistausss@fastmail.com>, 2013
# Richard E. van der Luit <nippur@fedoraproject.org>, 2012-2015,2017,2020
# Slava Zanko <slavazanko@gmail.com>, 2011
# toniotonba <TonioTonBa@gmail.com>, 2011
@@ -13,10 +13,11 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Richard E. van der Luit <nippur@fedoraproject.org>, "
+"2012-2015,2017,2020\n"
"Language-Team: Dutch (http://www.transifex.com/mc/mc/language/nl/)\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
@@ -78,31 +79,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAAL: geen directory:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-"Er trad een fout op tijdens de migratie van de gebruikersinstellingen: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Uw oude instellingen zijn gemigreerd van %s\n"
-"naar de door Freedesktop aangeraden mappen.\n"
-"Voor meer info, zie\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Uw oude instellingen zijn gemigreerd van %s\n"
-"naar %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -191,12 +167,12 @@
msgid "True color not supported with ncurses."
msgstr "True color wordt in ncurses niet ondersteund."
-msgid "True color not supported in this slang version."
-msgstr "True color wordt in deze dialectversie niet ondersteund."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Je terminal lijkt 256-kleuren niet eens te ondersteunen. "
+msgid "True color not supported in this slang version."
+msgstr "True color wordt in deze dialectversie niet ondersteund."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Zet COLORTERM=truecolor indien de terminal daadwerkelijk true-colors "
@@ -558,6 +534,9 @@
"Onverwachte fout in select() reading data van een child process:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -566,18 +545,6 @@
"Onverwachte fout in waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Waarschuwing"
-
-msgid "Pipe failed"
-msgstr "Pijp mislukt"
-
-msgid "Dup failed"
-msgstr "Dup mislukt"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Fout bij het dup'ing van de oude pipe error"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Map-cache verlopen voor %s"
@@ -703,12 +670,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Schrijf FTP-log naar aangegeven bestand"
-msgid "Set debug level"
-msgstr "Debugniveau instellen"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Start de bestandviewer voor een bestand"
@@ -1041,15 +1002,6 @@
msgid "Two files are needed to compare"
msgstr "Er zijn twee bestanden nodig om te vergelijken"
-msgid "Choose syntax highlighting"
-msgstr "Kies syntax highlighting"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Herlaadt Huidige Syntax >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Laden: %3d%%"
@@ -1084,6 +1036,9 @@
"Bestand \"%s\" is te groot.\n"
"Toch openen?"
+msgid "Warning"
+msgstr "Waarschuwing"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Probleem bij het lezen van pipe: %s "
@@ -1092,14 +1047,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Openen van pipe voor lezen mislukt: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Zoeken %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Zoeken naar %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Bestand heeft harde links. Ontkoppelen voor het opslaan? "
@@ -1145,9 +1092,6 @@
msgid "Save As"
msgstr "Opslaan als"
-msgid "Collect completions"
-msgstr "Verzamelen uitkomsten"
-
msgid "&Quick save"
msgstr "&Snel opslaan "
@@ -1178,27 +1122,6 @@
msgid "Cannot save file"
msgstr "Kan bestand niet opslaan"
-msgid "Delete macro"
-msgstr "Verwijder macro"
-
-msgid "Press macro hotkey:"
-msgstr "Druk op een macro sneltoets"
-
-msgid "Macro not deleted"
-msgstr "Macro niet verwijderd"
-
-msgid "Save macro"
-msgstr "Macro opslaan"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Druk op de nieuwe sneltoets voor de macro:"
-
-msgid "Repeat last commands"
-msgstr "Herhaal laatste opdrachten"
-
-msgid "Repeat times:"
-msgstr "Aantal keren te herhalen:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Bevestig opslaan van bestand: \"%s\""
@@ -1233,13 +1156,6 @@
msgid "&Local"
msgstr "&Lokaal"
-msgid "Replace"
-msgstr "Vervang"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld vervangingen doorgevoerd"
-
msgid "[NoName]"
msgstr "[NoName]"
@@ -1293,8 +1209,8 @@
msgid "Run sort"
msgstr "Sorteren"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Geef sorteeropties (zie 'man'-pagina) gescheiden door spaties:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Sorteren"
@@ -1346,35 +1262,35 @@
"Deze tekst is veranderd zonder te zijn opgeslagen.\n"
"Doorgaan gooit alle wijzigingen weg."
-msgid "In se&lection"
-msgstr "In se&lectie"
+msgid "Cancel"
+msgstr "Annuleren"
-msgid "&Find all"
-msgstr "&Vind allemaal"
+msgid "Collect completions"
+msgstr "Verzamelen uitkomsten"
-msgid "Enter replacement string:"
-msgstr "Geef de vervangende string:"
+msgid "NoName"
+msgstr "NoName"
-msgid "Replace with:"
-msgstr "Vervangen met:"
+msgid "Save macro"
+msgstr "Macro opslaan"
-msgid "&Replace"
-msgstr "Ve&rvangen"
+msgid "Press the macro's new hotkey:"
+msgstr "Druk op de nieuwe sneltoets voor de macro:"
-msgid "A&ll"
-msgstr "A&lle"
+msgid "Delete macro"
+msgstr "Verwijder macro"
-msgid "&Skip"
-msgstr "Over&slaan"
+msgid "Press macro hotkey:"
+msgstr "Druk op een macro sneltoets"
-msgid "Confirm replace"
-msgstr "Vervangen bevestigen"
+msgid "Macro not deleted"
+msgstr "Macro niet verwijderd"
-msgid "Cancel"
-msgstr "Annuleren"
+msgid "Repeat last commands"
+msgstr "Herhaal laatste opdrachten"
-msgid "NoName"
-msgstr "NoName"
+msgid "Repeat times:"
+msgstr "Aantal keren te herhalen:"
msgid "&Open file..."
msgstr "&Open bestand..."
@@ -1664,6 +1580,45 @@
msgid "Editor options"
msgstr "Editor-opties"
+msgid "In se&lection"
+msgstr "In se&lectie"
+
+msgid "&Find all"
+msgstr "&Vind allemaal"
+
+msgid "Enter replacement string:"
+msgstr "Geef de vervangende string:"
+
+msgid "Replace"
+msgstr "Vervang"
+
+msgid "Replace with:"
+msgstr "Vervangen met:"
+
+msgid "&Replace"
+msgstr "Ve&rvangen"
+
+msgid "A&ll"
+msgstr "A&lle"
+
+msgid "&Skip"
+msgstr "Over&slaan"
+
+msgid "Confirm replace"
+msgstr "Vervangen bevestigen"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Zoeken %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Zoeken naar %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld vervangingen doorgevoerd"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1671,8 +1626,8 @@
"Een gebruikersvriendelijke tekstbewerker\n"
"geschreven voor de Midnight Commander"
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "Over"
@@ -1791,6 +1746,15 @@
msgid "Select language"
msgstr "Kies taal"
+msgid "Choose syntax highlighting"
+msgstr "Kies syntax highlighting"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Herlaadt Huidige Syntax >"
+
msgid "Load syntax file"
msgstr "Laad syntaxbestand"
@@ -2198,19 +2162,6 @@
msgstr "Achtergrondtaken"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Wachtwoord voor \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domein:"
-
-msgid "Username:"
-msgstr " Gebruikersnaam:"
-
-msgid "SMB authentication"
-msgstr "SMB-authenticatie"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2420,12 +2371,6 @@
msgid "Cannot change directory"
msgstr "Veranderen van map mislukt"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr " Zet expressie voor het filteren van bestandsnamen"
-
#, c-format
msgid "Link %s to:"
msgstr "%s verbinden met:"
@@ -2531,9 +2476,6 @@
msgid "Shell link to machine"
msgstr "Shell-link naar machine"
-msgid "SMB link to machine"
-msgstr "SMB-link naar machine"
-
msgid "Undelete files on an ext2 file system"
msgstr "Herstellen van gewiste bestanden op een ext2-bestandssysteem "
@@ -2572,19 +2514,26 @@
"Kan geen tijdelijk opdrachtbestand maken \n"
"%s "
+msgid "Pipe failed"
+msgstr "Pijp mislukt"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s bestandsfout "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Het formaat van het %smc.ext bestand is veranderd met versie 3.0. De "
-"installatie lijkt mislukt. Haal een nieuwe versie van het Midnight Commander-"
-"pakket op."
#, c-format
msgid "%s file error"
@@ -2592,12 +2541,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"De format van het %s bestand is veranderd met versie 3.0. U kunt de format "
-"bekijken in %smc.ext of dat bestand zelf gebruiken als voorbeeld van hoe u "
-"het nu moet schrijven."
msgid "DialogTitle|Copy"
msgstr "Kopiëren"
@@ -2892,6 +2838,15 @@
msgid "(stalled)"
msgstr "(geblokkeerd)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Behouden"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2908,12 +2863,6 @@
"Doelbestand \"%s\" kan niet gesloten worden \n"
"%s "
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Onvolledige bestand opgehaald. Wilt u het behouden?"
-
-msgid "&Keep"
-msgstr "&Behouden"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3032,8 +2981,8 @@
msgstr "Achtergrond proces: Bestand bestaat"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Verwerkte bestanden: %zu van %zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3060,8 +3009,8 @@
msgstr " Totaal: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Totaal: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Bron"
@@ -3113,7 +3062,7 @@
msgstr "&Lijstformaat..."
msgid "&Sort order..."
-msgstr "&Sorteervolgorde... "
+msgstr ""
msgid "&Filter..."
msgstr "&Filter... "
@@ -3127,11 +3076,8 @@
msgid "S&hell link..."
msgstr "S&hellverbinding... "
-msgid "S&FTP link..."
-msgstr "S&FTP-link..."
-
-msgid "SM&B link..."
-msgstr "SM&B-Verbinding..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Als vens&ter"
@@ -3344,6 +3290,9 @@
msgid "&Find recursively"
msgstr "&Vind recursief"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "S&la verborgen over"
@@ -3510,8 +3459,8 @@
msgstr "Geen informatie over schijfruimte"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Vrij ruimte: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3755,6 +3704,9 @@
msgid "Unselect"
msgstr "Selectie wissen"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Wilt u die opdracht echt uitvoeren? "
@@ -3783,11 +3735,18 @@
msgid "Enter command label:"
msgstr "Geef opdrachtlabel: "
-msgid "Cannot invoke command."
-msgstr "Opdracht oproepen mislukt."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Sluiten van pipe mislukt"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Uitvoeren extern venster is niet mogelijk in een niet-lokale map"
@@ -4054,6 +4013,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Built met ncursesw (onbekende versie)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtuele bestandssystemen (VFS):"
@@ -4180,16 +4143,22 @@
"Onverwacht einde van bestand in\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inconsistent tar-archief"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Kan archief %s niet openen\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inconsistent extfs-archief"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4306,6 +4275,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Aan het wachten op nieuwe poging... %d (Control-C om af te breken)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: Ongeldige adres familie"
@@ -4359,6 +4343,12 @@
"de modus"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Waarschuwing: bestand %s niet gevonden\n"
@@ -4392,6 +4382,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: aan het verbinden met %s"
@@ -4403,6 +4396,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: verbinding met server mislukt: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Geeft wachtwoordzin voor %s"
@@ -4417,8 +4454,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Wachtwoord is leeg."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: SHH-sessie openen is niet gelukt"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Geen gegevens over bestand aanwezig om bestand te kunnen lezen"
@@ -4435,33 +4472,6 @@
msgstr "sftp: Klaar met opsomming."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "opnieuw verbinden met %s mislukt"
-
-msgid "Authentication failed"
-msgstr "Authenticatie mislukt"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Fout %s bij het maken van map %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Fout %s bij het verwijderen van map %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "Fout %s bij het openen van remote bestand %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s verwijderen remote bestand %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s hernoemen bestanden\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/nl_BE.po
^
|
@@ -0,0 +1,4413 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the mc package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Midnight Commander\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Dutch (Belgium) (http://www.transifex.com/mc/mc/language/"
+"nl_BE/)\n"
+"Language: nl_BE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+msgid "Warning: cannot load codepages list"
+msgstr ""
+
+msgid "7-bit ASCII"
+msgstr ""
+
+#, c-format
+msgid "Cannot translate from %s to %s"
+msgstr ""
+
+msgid "Event system already initialized"
+msgstr ""
+
+msgid "Failed to initialize event system"
+msgstr ""
+
+msgid "Event system not initialized"
+msgstr ""
+
+msgid "Check input data! Some of parameters are NULL!"
+msgstr ""
+
+#, c-format
+msgid "Unable to create group '%s' for events!"
+msgstr ""
+
+#, c-format
+msgid "Unable to create event '%s'!"
+msgstr ""
+
+#, c-format
+msgid ""
+"File \"%s\" is already being edited.\n"
+"User: %s\n"
+"Process ID: %d"
+msgstr ""
+
+msgid "File locked"
+msgstr ""
+
+msgid "&Grab lock"
+msgstr ""
+
+msgid "&Ignore lock"
+msgstr ""
+
+#, c-format
+msgid "Cannot create %s directory"
+msgstr ""
+
+msgid "FATAL: not a directory:"
+msgstr ""
+
+msgid ""
+"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
+"hex)"
+msgstr ""
+
+msgid "Invalid character"
+msgstr ""
+
+msgid "Unmatched quotes character"
+msgstr ""
+
+#, c-format
+msgid ""
+"Hex pattern error at position %d:\n"
+"%s."
+msgstr ""
+
+msgid "Search string not found"
+msgstr ""
+
+msgid "Not implemented yet"
+msgstr ""
+
+msgid "Num of replace tokens not equal to num of found tokens"
+msgstr ""
+
+#, c-format
+msgid "Invalid token number %d"
+msgstr ""
+
+msgid "Regular expression error"
+msgstr ""
+
+msgid "No&rmal"
+msgstr ""
+
+msgid "Re&gular expression"
+msgstr ""
+
+msgid "He&xadecimal"
+msgstr ""
+
+msgid "Wil&dcard search"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to load '%s' skin.\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to parse '%s' skin.\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to use '%s' skin with true colors support:\n"
+"%s\n"
+"Default skin has been loaded"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unable to use '%s' skin with 256 colors support\n"
+"on non-256 colors terminal.\n"
+"Default skin has been loaded"
+msgstr ""
+
+msgid "True color not supported with ncurses."
+msgstr ""
+
+msgid "Your terminal doesn't even seem to support 256 colors."
+msgstr ""
+
+msgid "True color not supported in this slang version."
+msgstr ""
+
+msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
+msgstr ""
+
+msgid "Escape"
+msgstr ""
+
+msgid "Function key 1"
+msgstr ""
+
+msgid "Function key 2"
+msgstr ""
+
+msgid "Function key 3"
+msgstr ""
+
+msgid "Function key 4"
+msgstr ""
+
+msgid "Function key 5"
+msgstr ""
+
+msgid "Function key 6"
+msgstr ""
+
+msgid "Function key 7"
+msgstr ""
+
+msgid "Function key 8"
+msgstr ""
+
+msgid "Function key 9"
+msgstr ""
+
+msgid "Function key 10"
+msgstr ""
+
+msgid "Function key 11"
+msgstr ""
+
+msgid "Function key 12"
+msgstr ""
+
+msgid "Function key 13"
+msgstr ""
+
+msgid "Function key 14"
+msgstr ""
+
+msgid "Function key 15"
+msgstr ""
+
+msgid "Function key 16"
+msgstr ""
+
+msgid "Function key 17"
+msgstr ""
+
+msgid "Function key 18"
+msgstr ""
+
+msgid "Function key 19"
+msgstr ""
+
+msgid "Function key 20"
+msgstr ""
+
+msgid "Completion/M-tab"
+msgstr ""
+
+msgid "BackTab/S-tab"
+msgstr ""
+
+msgid "Backspace"
+msgstr ""
+
+msgid "Up arrow"
+msgstr ""
+
+msgid "Down arrow"
+msgstr ""
+
+msgid "Left arrow"
+msgstr ""
+
+msgid "Right arrow"
+msgstr ""
+
+msgid "Insert"
+msgstr ""
+
+msgid "Delete"
+msgstr ""
+
+msgid "Home"
+msgstr ""
+
+msgid "End key"
+msgstr ""
+
+msgid "Page Up"
+msgstr ""
+
+msgid "Page Down"
+msgstr ""
+
+msgid "/ on keypad"
+msgstr ""
+
+msgid "* on keypad"
+msgstr ""
+
+msgid "- on keypad"
+msgstr ""
+
+msgid "+ on keypad"
+msgstr ""
+
+msgid "Left arrow keypad"
+msgstr ""
+
+msgid "Right arrow keypad"
+msgstr ""
+
+msgid "Up arrow keypad"
+msgstr ""
+
+msgid "Down arrow keypad"
+msgstr ""
+
+msgid "Home on keypad"
+msgstr ""
+
+msgid "End on keypad"
+msgstr ""
+
+msgid "Page Down keypad"
+msgstr ""
+
+msgid "Page Up keypad"
+msgstr ""
+
+msgid "Insert on keypad"
+msgstr ""
+
+msgid "Delete on keypad"
+msgstr ""
+
+msgid "Enter on keypad"
+msgstr ""
+
+msgid "Function key 21"
+msgstr ""
+
+msgid "Function key 22"
+msgstr ""
+
+msgid "Function key 23"
+msgstr ""
+
+msgid "Function key 24"
+msgstr ""
+
+msgid "A1 key"
+msgstr ""
+
+msgid "C1 key"
+msgstr ""
+
+msgid "Asterisk"
+msgstr ""
+
+msgid "Minus"
+msgstr ""
+
+msgid "Plus"
+msgstr ""
+
+msgid "Dot"
+msgstr ""
+
+msgid "Less than"
+msgstr ""
+
+msgid "Great than"
+msgstr ""
+
+msgid "Equal"
+msgstr ""
+
+msgid "Comma"
+msgstr ""
+
+msgid "Apostrophe"
+msgstr ""
+
+msgid "Colon"
+msgstr ""
+
+msgid "Semicolon"
+msgstr ""
+
+msgid "Exclamation mark"
+msgstr ""
+
+msgid "Question mark"
+msgstr ""
+
+msgid "Ampersand"
+msgstr ""
+
+msgid "Dollar sign"
+msgstr ""
+
+msgid "Quotation mark"
+msgstr ""
+
+msgid "Percent sign"
+msgstr ""
+
+msgid "Caret"
+msgstr ""
+
+msgid "Tilda"
+msgstr ""
+
+msgid "Prime"
+msgstr ""
+
+msgid "Underline"
+msgstr ""
+
+msgid "Understrike"
+msgstr ""
+
+msgid "Pipe"
+msgstr ""
+
+msgid "Left parenthesis"
+msgstr ""
+
+msgid "Right parenthesis"
+msgstr ""
+
+msgid "Left bracket"
+msgstr ""
+
+msgid "Right bracket"
+msgstr ""
+
+msgid "Left brace"
+msgstr ""
+
+msgid "Right brace"
+msgstr ""
+
+msgid "Enter"
+msgstr ""
+
+msgid "Tab key"
+msgstr ""
+
+msgid "Space key"
+msgstr ""
+
+msgid "Slash key"
+msgstr ""
+
+msgid "Backslash key"
+msgstr ""
+
+msgid "Number sign #"
+msgstr ""
+
+#. TRANSLATORS: Please translate as in "at sign" (@).
+msgid "At sign"
+msgstr ""
+
+msgid "Ctrl"
+msgstr ""
+
+msgid "Alt"
+msgstr ""
+
+msgid "Shift"
+msgstr ""
+
+msgid "The TERM environment variable is unset!\n"
+msgstr ""
+
+msgid "Cannot check SIGWINCH pipe"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot create pipe for SIGWINCH: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Screen size %dx%d is not supported.\n"
+"Check the TERM environment variable.\n"
+msgstr ""
+
+msgid "B"
+msgstr ""
+
+msgid "kB"
+msgstr ""
+
+msgid "KiB"
+msgstr ""
+
+msgid "MB"
+msgstr ""
+
+msgid "MiB"
+msgstr ""
+
+msgid "GB"
+msgstr ""
+
+msgid "GiB"
+msgstr ""
+
+msgid "Cannot create pipe descriptor"
+msgstr ""
+
+msgid "Cannot create pipe streams"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected error in select() reading data from a child process:\n"
+"%s"
+msgstr ""
+
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected error in waitpid():\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Directory cache expired for %s"
+msgstr ""
+
+#, c-format
+msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
+msgstr ""
+
+#, c-format
+msgid "%s: %s: %s %lld bytes transferred"
+msgstr ""
+
+msgid "Starting linear transfer..."
+msgstr ""
+
+msgid "Getting file"
+msgstr ""
+
+msgid "Changes to file lost"
+msgstr ""
+
+#, c-format
+msgid "%s is not a directory\n"
+msgstr ""
+
+#, c-format
+msgid "Directory %s is not owned by you\n"
+msgstr ""
+
+#, c-format
+msgid "Cannot set correct permissions for directory %s\n"
+msgstr ""
+
+#, c-format
+msgid "Cannot create temporary directory %s: %s\n"
+msgstr ""
+
+#, c-format
+msgid "Temporary files will be created in %s\n"
+msgstr ""
+
+#, c-format
+msgid "Temporary files will not be created\n"
+msgstr ""
+
+msgid "Press any key to continue..."
+msgstr ""
+
+msgid "Cannot parse:"
+msgstr ""
+
+msgid "More parsing errors will be ignored."
+msgstr ""
+
+msgid "Internal error:"
+msgstr ""
+
+msgid "Password:"
+msgstr ""
+
+msgid "Screens"
+msgstr ""
+
+msgid "History"
+msgstr ""
+
+#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
+msgid "DialogTitle|History cleanup"
+msgstr ""
+
+msgid "Do you want clean this history?"
+msgstr ""
+
+msgid "&Yes"
+msgstr ""
+
+msgid "&No"
+msgstr ""
+
+msgid "&OK"
+msgstr ""
+
+msgid "&Cancel"
+msgstr ""
+
+msgid "Background process:"
+msgstr ""
+
+msgid "Error"
+msgstr ""
+
+#, c-format
+msgid "%s (%d)"
+msgstr ""
+
+msgid "&Abort"
+msgstr ""
+
+msgid "Displays the current version"
+msgstr ""
+
+msgid "Print data directory"
+msgstr ""
+
+msgid "Print extended info about used data directories"
+msgstr ""
+
+msgid "Print configure options"
+msgstr ""
+
+msgid "Print last working directory to specified file"
+msgstr ""
+
+msgid "<file>"
+msgstr ""
+
+msgid "Enables subshell support (default)"
+msgstr ""
+
+msgid "Disables subshell support"
+msgstr ""
+
+msgid "Log ftp dialog to specified file"
+msgstr ""
+
+msgid "Launches the file viewer on a file"
+msgstr ""
+
+msgid "Edit files"
+msgstr ""
+
+msgid "<file> ..."
+msgstr ""
+
+msgid "Forces xterm features"
+msgstr ""
+
+msgid "Disable X11 support"
+msgstr ""
+
+msgid "Tries to use an old highlight mouse tracking"
+msgstr ""
+
+msgid "Disable mouse support in text version"
+msgstr ""
+
+msgid "Tries to use termcap instead of terminfo"
+msgstr ""
+
+msgid "To run on slow terminals"
+msgstr ""
+
+msgid "Use stickchars to draw"
+msgstr ""
+
+msgid "Resets soft keys on HP terminals"
+msgstr ""
+
+msgid "Load definitions of key bindings from specified file"
+msgstr ""
+
+msgid "Don't load definitions of key bindings from file, use defaults"
+msgstr ""
+
+msgid "Requests to run in black and white"
+msgstr ""
+
+msgid "Request to run in color mode"
+msgstr ""
+
+msgid "Specifies a color configuration"
+msgstr ""
+
+msgid "<string>"
+msgstr ""
+
+msgid "Show mc with specified skin"
+msgstr ""
+
+#. TRANSLATORS: don't translate keywords
+msgid ""
+"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n"
+"\n"
+"{FORE}, {BACK} and {ATTR} can be omitted, and the default will be used\n"
+"\n"
+" Keywords:\n"
+" Global: errors, disabled, reverse, gauge, header\n"
+" input, inputmark, inputunchanged, commandlinemark\n"
+" bbarhotkey, bbarbutton, statusbar\n"
+" File display: normal, selected, marked, markselect\n"
+" Dialog boxes: dnormal, dfocus, dhotnormal, dhotfocus, errdhotnormal,\n"
+" errdhotfocus\n"
+" Menus: menunormal, menuhot, menusel, menuhotsel, menuinactive\n"
+" Popup menus: pmenunormal, pmenusel, pmenutitle\n"
+" Editor: editnormal, editbold, editmarked, editwhitespace,\n"
+" editlinestate, editbg, editframe, editframeactive\n"
+" editframedrag\n"
+" Viewer: viewnormal,viewbold, viewunderline, viewselected\n"
+" Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
+msgstr ""
+
+#. TRANSLATORS: don't translate color names and attributes
+msgid ""
+"Standard Colors:\n"
+" black, gray, red, brightred, green, brightgreen, brown,\n"
+" yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
+" brightcyan, lightgray and white\n"
+"\n"
+"Extended colors, when 256 colors are available:\n"
+" color16 to color255, or rgb000 to rgb555 and gray0 to gray23\n"
+"\n"
+"Attributes:\n"
+" bold, italic, underline, reverse, blink; append more with '+'\n"
+msgstr ""
+
+msgid "Color options"
+msgstr ""
+
+msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
+msgstr ""
+
+msgid "file"
+msgstr ""
+
+msgid "file1 file2"
+msgstr ""
+
+msgid "[this_dir] [other_panel_dir]"
+msgstr ""
+
+msgid ""
+"\n"
+"Please send any bug reports (including the output of 'mc -V')\n"
+"as tickets at www.midnight-commander.org\n"
+msgstr ""
+
+#, c-format
+msgid "GNU Midnight Commander %s\n"
+msgstr ""
+
+msgid "Main options"
+msgstr ""
+
+msgid "Terminal options"
+msgstr ""
+
+msgid "Arguments parse error!"
+msgstr ""
+
+msgid "No arguments given to the viewer."
+msgstr ""
+
+msgid "Two files are required to envoke the diffviewer."
+msgstr ""
+
+msgid "Background protocol error"
+msgstr ""
+
+msgid "Reading failed"
+msgstr ""
+
+msgid "Background process error"
+msgstr ""
+
+msgid "Unknown error in child"
+msgstr ""
+
+msgid "Child died unexpectedly"
+msgstr ""
+
+msgid ""
+"Background process sent us a request for more arguments\n"
+"than we can handle."
+msgstr ""
+
+msgid "&Dismiss"
+msgstr ""
+
+msgid "Enter search string:"
+msgstr ""
+
+msgid "Cas&e sensitive"
+msgstr ""
+
+msgid "&Backwards"
+msgstr ""
+
+msgid "&Whole words"
+msgstr ""
+
+msgid "&All charsets"
+msgstr ""
+
+msgid "Search"
+msgstr ""
+
+msgid "Search is disabled"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary diff file\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create backup file\n"
+"%s%s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary merge file\n"
+"%s"
+msgstr ""
+
+msgid "&Fastest (Assume large files)"
+msgstr ""
+
+msgid "&Minimal (Find a smaller set of change)"
+msgstr ""
+
+msgid "Diff algorithm"
+msgstr ""
+
+msgid "Diff extra options"
+msgstr ""
+
+msgid "&Ignore case"
+msgstr ""
+
+msgid "Ignore tab &expansion"
+msgstr ""
+
+msgid "Ignore &space change"
+msgstr ""
+
+msgid "Ignore all &whitespace"
+msgstr ""
+
+msgid "Strip &trailing carriage return"
+msgstr ""
+
+msgid "Diff Options"
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Edit is disabled"
+msgstr ""
+
+msgid "Goto line (left)"
+msgstr ""
+
+msgid "Goto line (right)"
+msgstr ""
+
+msgid "Enter line:"
+msgstr ""
+
+msgid "ButtonBar|Help"
+msgstr ""
+
+msgid "ButtonBar|Save"
+msgstr ""
+
+msgid "ButtonBar|Edit"
+msgstr ""
+
+msgid "ButtonBar|Merge"
+msgstr ""
+
+msgid "ButtonBar|Search"
+msgstr ""
+
+msgid "ButtonBar|Options"
+msgstr ""
+
+msgid "ButtonBar|Quit"
+msgstr ""
+
+msgid "Quit"
+msgstr ""
+
+msgid "File(s) was modified. Save with exit?"
+msgstr ""
+
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file(s)?"
+msgstr ""
+
+msgid "Diff:"
+msgstr ""
+
+#, c-format
+msgid "\"%s\" is a directory"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Diff viewer: invalid mode"
+msgstr ""
+
+msgid "Two files are needed to compare"
+msgstr ""
+
+#, c-format
+msgid "Loading: %3d%%"
+msgstr ""
+
+msgid "Loading..."
+msgstr ""
+
+#, c-format
+msgid "Cannot open %s for reading"
+msgstr ""
+
+msgid "Load file"
+msgstr ""
+
+#, c-format
+msgid "Error reading %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot get size/permissions for %s"
+msgstr ""
+
+#, c-format
+msgid "\"%s\" is not a regular file"
+msgstr ""
+
+#, c-format
+msgid ""
+"File \"%s\" is too large.\n"
+"Open it anyway?"
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+#, c-format
+msgid "Error reading from pipe: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open pipe for reading: %s"
+msgstr ""
+
+msgid "File has hard-links. Detach before saving?"
+msgstr ""
+
+msgid "The file has been modified in the meantime. Save anyway?"
+msgstr ""
+
+#, c-format
+msgid "Error writing to pipe: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open pipe for writing: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file for writing: %s"
+msgstr ""
+
+msgid "The file you are saving does not end with a newline."
+msgstr ""
+
+msgid "C&ontinue"
+msgstr ""
+
+msgid "&Do not change"
+msgstr ""
+
+msgid "&Unix format (LF)"
+msgstr ""
+
+msgid "&Windows/DOS format (CR LF)"
+msgstr ""
+
+msgid "&Macintosh format (CR)"
+msgstr ""
+
+msgid "Enter file name:"
+msgstr ""
+
+msgid "Change line breaks to:"
+msgstr ""
+
+msgid "Save As"
+msgstr ""
+
+msgid "&Quick save"
+msgstr ""
+
+msgid "&Safe save"
+msgstr ""
+
+msgid "&Do backups with following extension:"
+msgstr ""
+
+msgid "Check &POSIX new line"
+msgstr ""
+
+msgid "Edit Save Mode"
+msgstr ""
+
+msgid "Save as"
+msgstr ""
+
+msgid "Cannot save: destination is not a regular file"
+msgstr ""
+
+msgid "A file already exists with this name"
+msgstr ""
+
+msgid "&Overwrite"
+msgstr ""
+
+msgid "Cannot save file"
+msgstr ""
+
+#, c-format
+msgid "Confirm save file: \"%s\""
+msgstr ""
+
+msgid "Save file"
+msgstr ""
+
+msgid "&Save"
+msgstr ""
+
+msgid "Load"
+msgstr ""
+
+msgid "Syntax file edit"
+msgstr ""
+
+msgid "Which syntax file you want to edit?"
+msgstr ""
+
+msgid "&User"
+msgstr ""
+
+msgid "&System wide"
+msgstr ""
+
+msgid "Menu edit"
+msgstr ""
+
+msgid "Which menu file do you want to edit?"
+msgstr ""
+
+msgid "&Local"
+msgstr ""
+
+msgid "[NoName]"
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s was modified.\n"
+"Save before close?"
+msgstr ""
+
+msgid "Close file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file %s?"
+msgstr ""
+
+msgid "This function is not implemented"
+msgstr ""
+
+msgid "Copy to clipboard"
+msgstr ""
+
+msgid "Unable to save to file"
+msgstr ""
+
+msgid "Cut to clipboard"
+msgstr ""
+
+msgid "Goto line"
+msgstr ""
+
+msgid "Save block"
+msgstr ""
+
+msgid "Insert file"
+msgstr ""
+
+msgid "Cannot insert file"
+msgstr ""
+
+msgid "Sort block"
+msgstr ""
+
+msgid "You must first highlight a block of text"
+msgstr ""
+
+msgid "Run sort"
+msgstr ""
+
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
+
+msgid "Sort"
+msgstr ""
+
+msgid "Cannot execute sort command"
+msgstr ""
+
+#, c-format
+msgid "Sort returned non-zero: %s"
+msgstr ""
+
+msgid "Paste output of external command"
+msgstr ""
+
+msgid "Enter shell command(s):"
+msgstr ""
+
+msgid "External command"
+msgstr ""
+
+msgid "Cannot execute command"
+msgstr ""
+
+msgid "mail -s <subject> -c <cc> <to>"
+msgstr ""
+
+msgid "To"
+msgstr ""
+
+msgid "Subject"
+msgstr ""
+
+msgid "Copies to"
+msgstr ""
+
+msgid "Mail"
+msgstr ""
+
+msgid "Insert literal"
+msgstr ""
+
+msgid "Press any key:"
+msgstr ""
+
+msgid ""
+"Current text was modified without a file save.\n"
+"Continue discards these changes."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Collect completions"
+msgstr ""
+
+msgid "NoName"
+msgstr ""
+
+msgid "Save macro"
+msgstr ""
+
+msgid "Press the macro's new hotkey:"
+msgstr ""
+
+msgid "Delete macro"
+msgstr ""
+
+msgid "Press macro hotkey:"
+msgstr ""
+
+msgid "Macro not deleted"
+msgstr ""
+
+msgid "Repeat last commands"
+msgstr ""
+
+msgid "Repeat times:"
+msgstr ""
+
+msgid "&Open file..."
+msgstr ""
+
+msgid "&New"
+msgstr ""
+
+msgid "&Close"
+msgstr ""
+
+msgid "&History..."
+msgstr ""
+
+msgid "Save &as..."
+msgstr ""
+
+msgid "&Insert file..."
+msgstr ""
+
+msgid "Cop&y to file..."
+msgstr ""
+
+msgid "&User menu..."
+msgstr ""
+
+msgid "A&bout..."
+msgstr ""
+
+msgid "&Quit"
+msgstr ""
+
+msgid "&Undo"
+msgstr ""
+
+msgid "&Redo"
+msgstr ""
+
+msgid "&Toggle ins/overw"
+msgstr ""
+
+msgid "To&ggle mark"
+msgstr ""
+
+msgid "&Mark columns"
+msgstr ""
+
+msgid "Mark &all"
+msgstr ""
+
+msgid "Unmar&k"
+msgstr ""
+
+msgid "Cop&y"
+msgstr ""
+
+msgid "Mo&ve"
+msgstr ""
+
+msgid "&Delete"
+msgstr ""
+
+msgid "Co&py to clipfile"
+msgstr ""
+
+msgid "&Cut to clipfile"
+msgstr ""
+
+msgid "Pa&ste from clipfile"
+msgstr ""
+
+msgid "&Beginning"
+msgstr ""
+
+msgid "&End"
+msgstr ""
+
+msgid "&Search..."
+msgstr ""
+
+msgid "Search &again"
+msgstr ""
+
+msgid "&Replace..."
+msgstr ""
+
+msgid "&Toggle bookmark"
+msgstr ""
+
+msgid "&Next bookmark"
+msgstr ""
+
+msgid "&Prev bookmark"
+msgstr ""
+
+msgid "&Flush bookmarks"
+msgstr ""
+
+msgid "&Go to line..."
+msgstr ""
+
+msgid "&Toggle line state"
+msgstr ""
+
+msgid "Go to matching &bracket"
+msgstr ""
+
+msgid "Toggle s&yntax highlighting"
+msgstr ""
+
+msgid "&Find declaration"
+msgstr ""
+
+msgid "Back from &declaration"
+msgstr ""
+
+msgid "For&ward to declaration"
+msgstr ""
+
+msgid "Encod&ing..."
+msgstr ""
+
+msgid "&Refresh screen"
+msgstr ""
+
+msgid "&Start/Stop record macro"
+msgstr ""
+
+msgid "Delete macr&o..."
+msgstr ""
+
+msgid "Record/Repeat &actions"
+msgstr ""
+
+msgid "S&pell check"
+msgstr ""
+
+msgid "C&heck word"
+msgstr ""
+
+msgid "Change spelling &language..."
+msgstr ""
+
+msgid "&Mail..."
+msgstr ""
+
+msgid "Insert &literal..."
+msgstr ""
+
+msgid "Insert &date/time"
+msgstr ""
+
+msgid "&Format paragraph"
+msgstr ""
+
+msgid "&Sort..."
+msgstr ""
+
+msgid "&Paste output of..."
+msgstr ""
+
+msgid "&External formatter"
+msgstr ""
+
+msgid "&Move"
+msgstr ""
+
+msgid "&Resize"
+msgstr ""
+
+msgid "&Toggle fullscreen"
+msgstr ""
+
+msgid "&Next"
+msgstr ""
+
+msgid "&Previous"
+msgstr ""
+
+msgid "&List..."
+msgstr ""
+
+msgid "&General..."
+msgstr ""
+
+msgid "Save &mode..."
+msgstr ""
+
+msgid "Learn &keys..."
+msgstr ""
+
+msgid "Syntax &highlighting..."
+msgstr ""
+
+msgid "S&yntax file"
+msgstr ""
+
+msgid "&Menu file"
+msgstr ""
+
+msgid "&Save setup"
+msgstr ""
+
+msgid "&File"
+msgstr ""
+
+msgid "&Edit"
+msgstr ""
+
+msgid "&Search"
+msgstr ""
+
+msgid "&Command"
+msgstr ""
+
+msgid "For&mat"
+msgstr ""
+
+msgid "&Window"
+msgstr ""
+
+msgid "&Options"
+msgstr ""
+
+msgid "&None"
+msgstr ""
+
+msgid "&Dynamic paragraphing"
+msgstr ""
+
+msgid "Type &writer wrap"
+msgstr ""
+
+msgid "Wrap mode"
+msgstr ""
+
+msgid "Tabulation"
+msgstr ""
+
+msgid "&Fake half tabs"
+msgstr ""
+
+msgid "&Backspace through tabs"
+msgstr ""
+
+msgid "Fill tabs with &spaces"
+msgstr ""
+
+msgid "Tab spacing:"
+msgstr ""
+
+msgid "Other options"
+msgstr ""
+
+msgid "&Return does autoindent"
+msgstr ""
+
+msgid "Confir&m before saving"
+msgstr ""
+
+msgid "Save file &position"
+msgstr ""
+
+msgid "&Visible trailing spaces"
+msgstr ""
+
+msgid "Visible &tabs"
+msgstr ""
+
+msgid "Synta&x highlighting"
+msgstr ""
+
+msgid "C&ursor after inserted block"
+msgstr ""
+
+msgid "Pers&istent selection"
+msgstr ""
+
+msgid "Cursor be&yond end of line"
+msgstr ""
+
+msgid "&Group undo"
+msgstr ""
+
+msgid "Word wrap line length:"
+msgstr ""
+
+msgid "Editor options"
+msgstr ""
+
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
+msgid ""
+"A user friendly text editor\n"
+"written for the Midnight Commander."
+msgstr ""
+
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
+
+msgid "About"
+msgstr ""
+
+msgid "Open files"
+msgstr ""
+
+msgid "Edit: "
+msgstr ""
+
+msgid "ButtonBar|Mark"
+msgstr ""
+
+msgid "ButtonBar|Replac"
+msgstr ""
+
+msgid "ButtonBar|Copy"
+msgstr ""
+
+msgid "ButtonBar|Move"
+msgstr ""
+
+msgid "ButtonBar|Delete"
+msgstr ""
+
+msgid "ButtonBar|PullDn"
+msgstr ""
+
+msgid "Breton"
+msgstr ""
+
+msgid "Czech"
+msgstr ""
+
+msgid "Welsh"
+msgstr ""
+
+msgid "Danish"
+msgstr ""
+
+msgid "German"
+msgstr ""
+
+msgid "Greek"
+msgstr ""
+
+msgid "English"
+msgstr ""
+
+msgid "British English"
+msgstr ""
+
+msgid "Canadian English"
+msgstr ""
+
+msgid "American English"
+msgstr ""
+
+msgid "Esperanto"
+msgstr ""
+
+msgid "Spanish"
+msgstr ""
+
+msgid "Faroese"
+msgstr ""
+
+msgid "French"
+msgstr ""
+
+msgid "Italian"
+msgstr ""
+
+msgid "Dutch"
+msgstr ""
+
+msgid "Norwegian"
+msgstr ""
+
+msgid "Polish"
+msgstr ""
+
+msgid "Portuguese"
+msgstr ""
+
+msgid "Romanian"
+msgstr ""
+
+msgid "Russian"
+msgstr ""
+
+msgid "Slovak"
+msgstr ""
+
+msgid "Swedish"
+msgstr ""
+
+msgid "Ukrainian"
+msgstr ""
+
+msgid "&Add word"
+msgstr ""
+
+msgid "Language"
+msgstr ""
+
+msgid "Misspelled"
+msgstr ""
+
+msgid "Check word"
+msgstr ""
+
+msgid "Suggest"
+msgstr ""
+
+msgid "Select language"
+msgstr ""
+
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
+msgid "Load syntax file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open file %s\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Error in file %s on line %d"
+msgstr ""
+
+msgid ""
+"The Commander can't change to the directory that\n"
+"the subshell claims you are in. Perhaps you have\n"
+"deleted your working directory, or given yourself\n"
+"extra access permissions with the \"su\" command?"
+msgstr ""
+
+#, c-format
+msgid "Cannot fetch a local copy of %s"
+msgstr ""
+
+msgid "The shell is already running a command"
+msgstr ""
+
+msgid ""
+"Not an xterm or Linux console;\n"
+"the subshell cannot be toggled."
+msgstr ""
+
+msgid "Type 'exit' to return to the Midnight Commander"
+msgstr ""
+
+msgid "Set &all"
+msgstr ""
+
+msgid "S&kip"
+msgstr ""
+
+msgid "&Set"
+msgstr ""
+
+msgid "owner"
+msgstr ""
+
+msgid "group"
+msgstr ""
+
+msgid "other"
+msgstr ""
+
+msgid "Flag"
+msgstr ""
+
+#, c-format
+msgid "Permissions (octal): %o"
+msgstr ""
+
+msgid "Chown advanced command"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chmod \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "&Ignore"
+msgstr ""
+
+msgid "Ignore &all"
+msgstr ""
+
+msgid "&Retry"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "< Default >"
+msgstr ""
+
+msgid "Skins"
+msgstr ""
+
+msgid "Other 8 bit"
+msgstr ""
+
+msgid "Running"
+msgstr ""
+
+msgid "Stopped"
+msgstr ""
+
+msgid "&Never"
+msgstr ""
+
+msgid "On dum&b terminals"
+msgstr ""
+
+msgid "Alwa&ys"
+msgstr ""
+
+msgid "File operations"
+msgstr ""
+
+msgid "&Verbose operation"
+msgstr ""
+
+msgid "Compute tota&ls"
+msgstr ""
+
+msgid "Classic pro&gressbar"
+msgstr ""
+
+msgid "Mkdi&r autoname"
+msgstr ""
+
+msgid "&Preallocate space"
+msgstr ""
+
+msgid "Esc key mode"
+msgstr ""
+
+msgid "S&ingle press"
+msgstr ""
+
+msgid "Timeout:"
+msgstr ""
+
+msgid "Pause after run"
+msgstr ""
+
+msgid "Use internal edi&t"
+msgstr ""
+
+msgid "Use internal vie&w"
+msgstr ""
+
+msgid "A&sk new file name"
+msgstr ""
+
+msgid "Auto m&enus"
+msgstr ""
+
+msgid "&Drop down menus"
+msgstr ""
+
+msgid "S&hell patterns"
+msgstr ""
+
+msgid "Co&mplete: show all"
+msgstr ""
+
+msgid "Rotating d&ash"
+msgstr ""
+
+msgid "Cd follows lin&ks"
+msgstr ""
+
+msgid "Sa&fe delete"
+msgstr ""
+
+msgid "Safe overwrite"
+msgstr ""
+
+msgid "A&uto save setup"
+msgstr ""
+
+msgid "Configure options"
+msgstr ""
+
+msgid "Skin:"
+msgstr ""
+
+msgid "&Shadows"
+msgstr ""
+
+msgid "Appearance"
+msgstr ""
+
+msgid "Case &insensitive"
+msgstr ""
+
+msgid "Use panel sort mo&de"
+msgstr ""
+
+msgid "Show mi&ni-status"
+msgstr ""
+
+msgid "Use SI si&ze units"
+msgstr ""
+
+msgid "Mi&x all files"
+msgstr ""
+
+msgid "Show &backup files"
+msgstr ""
+
+msgid "Show &hidden files"
+msgstr ""
+
+msgid "&Fast dir reload"
+msgstr ""
+
+msgid "Ma&rk moves down"
+msgstr ""
+
+msgid "Re&verse files only"
+msgstr ""
+
+msgid "Simple s&wap"
+msgstr ""
+
+msgid "A&uto save panels setup"
+msgstr ""
+
+msgid "Navigation"
+msgstr ""
+
+msgid "L&ynx-like motion"
+msgstr ""
+
+msgid "Pa&ge scrolling"
+msgstr ""
+
+msgid "Center &scrolling"
+msgstr ""
+
+msgid "&Mouse page scrolling"
+msgstr ""
+
+msgid "File highlight"
+msgstr ""
+
+msgid "File &types"
+msgstr ""
+
+msgid "&Permissions"
+msgstr ""
+
+msgid "Quick search"
+msgstr ""
+
+msgid "Panel options"
+msgstr ""
+
+msgid "Information"
+msgstr ""
+
+msgid ""
+"Using the fast reload option may not reflect the exact\n"
+"directory contents. In this case you'll need to do a\n"
+"manual reload of the directory. See the man page for\n"
+"the details."
+msgstr ""
+
+msgid "&Full file list"
+msgstr ""
+
+msgid "&Brief file list:"
+msgstr ""
+
+msgid "&Long file list"
+msgstr ""
+
+msgid "&User defined:"
+msgstr ""
+
+msgid "columns"
+msgstr ""
+
+msgid "User &mini status"
+msgstr ""
+
+msgid "Listing format"
+msgstr ""
+
+msgid "Executable &first"
+msgstr ""
+
+msgid "&Reverse"
+msgstr ""
+
+msgid "Sort order"
+msgstr ""
+
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
+msgid "Confirmation|&Delete"
+msgstr ""
+
+msgid "Confirmation|O&verwrite"
+msgstr ""
+
+msgid "Confirmation|&Execute"
+msgstr ""
+
+msgid "Confirmation|E&xit"
+msgstr ""
+
+msgid "Confirmation|Di&rectory hotlist delete"
+msgstr ""
+
+msgid "Confirmation|&History cleanup"
+msgstr ""
+
+msgid "Confirmation"
+msgstr ""
+
+msgid "&UTF-8 output"
+msgstr ""
+
+msgid "&Full 8 bits output"
+msgstr ""
+
+msgid "&ISO 8859-1"
+msgstr ""
+
+msgid "7 &bits"
+msgstr ""
+
+msgid "F&ull 8 bits input"
+msgstr ""
+
+msgid "Display bits"
+msgstr ""
+
+msgid "Input / display codepage:"
+msgstr ""
+
+msgid "Directory tree"
+msgstr ""
+
+msgid "Timeout for freeing VFSs (sec):"
+msgstr ""
+
+msgid "FTP anonymous password:"
+msgstr ""
+
+msgid "FTP directory cache timeout (sec):"
+msgstr ""
+
+msgid "&Always use ftp proxy:"
+msgstr ""
+
+msgid "&Use ~/.netrc"
+msgstr ""
+
+msgid "Use &passive mode"
+msgstr ""
+
+msgid "Use passive mode over pro&xy"
+msgstr ""
+
+msgid "Virtual File System Setting"
+msgstr ""
+
+msgid "cd"
+msgstr ""
+
+msgid "Quick cd"
+msgstr ""
+
+msgid "Existing filename (filename symlink will point to):"
+msgstr ""
+
+msgid "Symbolic link filename:"
+msgstr ""
+
+msgid "Symbolic link"
+msgstr ""
+
+msgid "&Stop"
+msgstr ""
+
+msgid "&Resume"
+msgstr ""
+
+msgid "&Kill"
+msgstr ""
+
+msgid "Background jobs"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chdir to \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Secure deletion"
+msgstr ""
+
+msgid "Undelete"
+msgstr ""
+
+msgid "Synchronous updates"
+msgstr ""
+
+msgid "Synchronous directory updates"
+msgstr ""
+
+msgid "Immutable"
+msgstr ""
+
+msgid "Append only"
+msgstr ""
+
+msgid "No dump"
+msgstr ""
+
+msgid "No update atime"
+msgstr ""
+
+msgid "Compress"
+msgstr ""
+
+msgid "Compressed clusters"
+msgstr ""
+
+msgid "Compressed dirty file"
+msgstr ""
+
+msgid "Compression raw access"
+msgstr ""
+
+msgid "Encrypted inode"
+msgstr ""
+
+msgid "Journaled data"
+msgstr ""
+
+msgid "Indexed directory"
+msgstr ""
+
+msgid "No tail merging"
+msgstr ""
+
+msgid "Top of directory hierarchies"
+msgstr ""
+
+msgid "Inode uses extents"
+msgstr ""
+
+msgid "Huge_file"
+msgstr ""
+
+msgid "No COW"
+msgstr ""
+
+msgid "Direct access for files"
+msgstr ""
+
+msgid "Casefolded file"
+msgstr ""
+
+msgid "Inode has inline data"
+msgstr ""
+
+msgid "Project hierarchy"
+msgstr ""
+
+msgid "Verity protected inode"
+msgstr ""
+
+msgid "&Marked all"
+msgstr ""
+
+msgid "S&et marked"
+msgstr ""
+
+msgid "C&lear marked"
+msgstr ""
+
+msgid "Chattr command"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chattr \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot change attributes on non-local filesystems"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot get flags of \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "set &user ID on execution"
+msgstr ""
+
+msgid "set &group ID on execution"
+msgstr ""
+
+msgid "stick&y bit"
+msgstr ""
+
+msgid "&read by owner"
+msgstr ""
+
+msgid "&write by owner"
+msgstr ""
+
+msgid "e&xecute/search by owner"
+msgstr ""
+
+msgid "rea&d by group"
+msgstr ""
+
+msgid "write by grou&p"
+msgstr ""
+
+msgid "execu&te/search by group"
+msgstr ""
+
+msgid "read &by others"
+msgstr ""
+
+msgid "wr&ite by others"
+msgstr ""
+
+msgid "execute/searc&h by others"
+msgstr ""
+
+msgid "Name:"
+msgstr ""
+
+msgid "Permissions (octal):"
+msgstr ""
+
+msgid "Owner name:"
+msgstr ""
+
+msgid "Group name:"
+msgstr ""
+
+msgid "Chmod command"
+msgstr ""
+
+msgid "Permission"
+msgstr ""
+
+msgid "File"
+msgstr ""
+
+msgid "Set &groups"
+msgstr ""
+
+msgid "Set &users"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid "Owner name"
+msgstr ""
+
+msgid "Group name"
+msgstr ""
+
+msgid "Size"
+msgstr ""
+
+msgid "Chown command"
+msgstr ""
+
+msgid "User name"
+msgstr ""
+
+msgid "<Unknown user>"
+msgstr ""
+
+msgid "<Unknown group>"
+msgstr ""
+
+msgid "Enter machine name (F1 for details):"
+msgstr ""
+
+msgid "Files tagged, want to cd?"
+msgstr ""
+
+msgid "Cannot change directory"
+msgstr ""
+
+#, c-format
+msgid "Link %s to:"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+#, c-format
+msgid "link: %s"
+msgstr ""
+
+#, c-format
+msgid "symlink: %s"
+msgstr ""
+
+#, c-format
+msgid "Cannot chdir to \"%s\""
+msgstr ""
+
+msgid "View file"
+msgstr ""
+
+msgid "Filename:"
+msgstr ""
+
+msgid "Filtered view"
+msgstr ""
+
+msgid "Filter command and arguments:"
+msgstr ""
+
+msgid "Edit file"
+msgstr ""
+
+msgid "Create a new Directory"
+msgstr ""
+
+msgid "Enter directory name:"
+msgstr ""
+
+msgid "Extension file edit"
+msgstr ""
+
+msgid "Which extension file you want to edit?"
+msgstr ""
+
+msgid "&System Wide"
+msgstr ""
+
+msgid "Highlighting groups file edit"
+msgstr ""
+
+msgid "Which highlighting file you want to edit?"
+msgstr ""
+
+msgid "Compare directories"
+msgstr ""
+
+msgid "Select compare method:"
+msgstr ""
+
+msgid "&Quick"
+msgstr ""
+
+msgid "&Size only"
+msgstr ""
+
+msgid "&Thorough"
+msgstr ""
+
+msgid ""
+"Both panels should be in the listing mode\n"
+"to use this command"
+msgstr ""
+
+#, c-format
+msgid "'%s' is not a symbolic link"
+msgstr ""
+
+#, c-format
+msgid "Symlink '%s' points to:"
+msgstr ""
+
+msgid "Edit symlink"
+msgstr ""
+
+#, c-format
+msgid "edit symlink, unable to remove %s: %s"
+msgstr ""
+
+#, c-format
+msgid "edit symlink: %s"
+msgstr ""
+
+msgid "FTP to machine"
+msgstr ""
+
+msgid "SFTP to machine"
+msgstr ""
+
+msgid "Shell link to machine"
+msgstr ""
+
+msgid "Undelete files on an ext2 file system"
+msgstr ""
+
+msgid ""
+"Enter device (without /dev/) to undelete\n"
+"files on: (F1 for details)"
+msgstr ""
+
+msgid "Directory scanning"
+msgstr ""
+
+msgid "Setup"
+msgstr ""
+
+#, c-format
+msgid "Setup saved to %s"
+msgstr ""
+
+#, c-format
+msgid "Unable to save setup to %s"
+msgstr ""
+
+msgid "Cannot execute commands on non-local filesystems"
+msgstr ""
+
+msgid "Parameter"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create temporary command file\n"
+"%s"
+msgstr ""
+
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
+#, c-format
+msgid " %s%s file error"
+msgstr ""
+
+#, c-format
+msgid ""
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
+"Commander package."
+msgstr ""
+
+#, c-format
+msgid "%s file error"
+msgstr ""
+
+#, c-format
+msgid ""
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
+msgstr ""
+
+msgid "DialogTitle|Copy"
+msgstr ""
+
+msgid "DialogTitle|Move"
+msgstr ""
+
+msgid "DialogTitle|Delete"
+msgstr ""
+
+msgid "FileOperation|Copy"
+msgstr ""
+
+msgid "FileOperation|Move"
+msgstr ""
+
+msgid "FileOperation|Delete"
+msgstr ""
+
+#, no-c-format
+msgid "%o %f%n\"%s\"%m"
+msgstr ""
+
+#, no-c-format
+msgid "%o %d %f%m"
+msgstr ""
+
+msgid "files"
+msgstr ""
+
+msgid "directory"
+msgstr ""
+
+msgid "directories"
+msgstr ""
+
+msgid "files/directories"
+msgstr ""
+
+#. TRANSLATORS: keep leading space here to split words in Copy/Move dialog
+msgid " with source mask:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat hardlink source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target hardlink \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot create target hardlink \"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot read source link \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid ""
+"Cannot make stable symlinks across non-local filesystems:\n"
+"\n"
+"Option Stable Symlinks will be disabled"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target symlink \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\"\n"
+"and\n"
+"\"%s\"\n"
+"are the same directory"
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\"\n"
+"and\n"
+"\"%s\"\n"
+"are the same file"
+msgstr ""
+
+msgid "Ski&p all"
+msgstr ""
+
+#, c-format
+msgid ""
+"Directory \"%s\" not empty.\n"
+"Delete it recursively?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Background process:\n"
+"Directory \"%s\" not empty.\n"
+"Delete it recursively?"
+msgstr ""
+
+msgid "Non&e"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot remove file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot overwrite directory \"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot move file \"%s\" to \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot remove directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot overwrite directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot overwrite file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot move directory \"%s\" to \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot operate on \"..\"!"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create special file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chmod target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open source file \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Reget failed, about to overwrite file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot fstat source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot fstat target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot preallocate space for target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot read source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot write target file \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "(stalled)"
+msgstr ""
+
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot close source file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot close target file \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat source directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Source \"%s\" is not a directory\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot copy cyclic symbolic link\n"
+"\"%s\""
+msgstr ""
+
+#, c-format
+msgid ""
+"Destination \"%s\" must be a directory\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot create target directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot chown target directory \"%s\"\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Directories: %zu, total size: %s"
+msgstr ""
+
+msgid "Sorry, I could not put the job in background"
+msgstr ""
+
+msgid "S&uspend"
+msgstr ""
+
+msgid "Con&tinue"
+msgstr ""
+
+#, c-format
+msgid "%d:%02d.%02d"
+msgstr ""
+
+#, c-format
+msgid "ETA %s"
+msgstr ""
+
+#, c-format
+msgid "%.2f MB/s"
+msgstr ""
+
+#, c-format
+msgid "%.2f KB/s"
+msgstr ""
+
+#, c-format
+msgid "%ld B/s"
+msgstr ""
+
+msgid "New :"
+msgstr ""
+
+msgid "Existing:"
+msgstr ""
+
+msgid "Overwrite this file?"
+msgstr ""
+
+msgid "A&ppend"
+msgstr ""
+
+msgid "&Reget"
+msgstr ""
+
+msgid "Overwrite all files?"
+msgstr ""
+
+msgid "Don't overwrite with &zero length file"
+msgstr ""
+
+msgid "&Older"
+msgstr ""
+
+msgid "S&maller"
+msgstr ""
+
+msgid "&Size differs"
+msgstr ""
+
+msgid "File exists"
+msgstr ""
+
+msgid "Background process: File exists"
+msgstr ""
+
+#, c-format
+msgid "Files processed: %zu / %zu"
+msgstr ""
+
+#, c-format
+msgid "Files processed: %zu"
+msgstr ""
+
+#, c-format
+msgid "Time: %s %s"
+msgstr ""
+
+#, c-format
+msgid "Time: %s %s (%s)"
+msgstr ""
+
+#, c-format
+msgid "Time: %s"
+msgstr ""
+
+#, c-format
+msgid "Time: %s (%s)"
+msgstr ""
+
+#, c-format
+msgid " Total: %s "
+msgstr ""
+
+#, c-format
+msgid " Total: %s / %s "
+msgstr ""
+
+msgid "Source"
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "Deleting"
+msgstr ""
+
+msgid "&Using shell patterns"
+msgstr ""
+
+msgid "to:"
+msgstr ""
+
+msgid "Follow &links"
+msgstr ""
+
+msgid "Preserve &attributes"
+msgstr ""
+
+msgid "Di&ve into subdir if exists"
+msgstr ""
+
+msgid "&Stable symlinks"
+msgstr ""
+
+msgid "&Background"
+msgstr ""
+
+#, c-format
+msgid "Invalid source pattern '%s'"
+msgstr ""
+
+msgid "File listin&g"
+msgstr ""
+
+msgid "&Quick view"
+msgstr ""
+
+msgid "&Info"
+msgstr ""
+
+msgid "&Tree"
+msgstr ""
+
+msgid "&Listing format..."
+msgstr ""
+
+msgid "&Sort order..."
+msgstr ""
+
+msgid "&Filter..."
+msgstr ""
+
+msgid "&Encoding..."
+msgstr ""
+
+msgid "FT&P link..."
+msgstr ""
+
+msgid "S&hell link..."
+msgstr ""
+
+msgid "SFTP li&nk..."
+msgstr ""
+
+msgid "Paneli&ze"
+msgstr ""
+
+msgid "&Rescan"
+msgstr ""
+
+msgid "&View"
+msgstr ""
+
+msgid "Vie&w file..."
+msgstr ""
+
+msgid "&Filtered view"
+msgstr ""
+
+msgid "&Copy"
+msgstr ""
+
+msgid "C&hmod"
+msgstr ""
+
+msgid "&Link"
+msgstr ""
+
+msgid "&Symlink"
+msgstr ""
+
+msgid "Relative symlin&k"
+msgstr ""
+
+msgid "Edit s&ymlink"
+msgstr ""
+
+msgid "Ch&own"
+msgstr ""
+
+msgid "&Advanced chown"
+msgstr ""
+
+msgid "Cha&ttr"
+msgstr ""
+
+msgid "&Rename/Move"
+msgstr ""
+
+msgid "&Mkdir"
+msgstr ""
+
+msgid "&Quick cd"
+msgstr ""
+
+msgid "Select &group"
+msgstr ""
+
+msgid "U&nselect group"
+msgstr ""
+
+msgid "&Invert selection"
+msgstr ""
+
+msgid "E&xit"
+msgstr ""
+
+msgid "&User menu"
+msgstr ""
+
+msgid "&Directory tree"
+msgstr ""
+
+msgid "&Find file"
+msgstr ""
+
+msgid "S&wap panels"
+msgstr ""
+
+msgid "Switch &panels on/off"
+msgstr ""
+
+msgid "&Compare directories"
+msgstr ""
+
+msgid "C&ompare files"
+msgstr ""
+
+msgid "E&xternal panelize"
+msgstr ""
+
+msgid "Show directory s&izes"
+msgstr ""
+
+msgid "Command &history"
+msgstr ""
+
+msgid "Viewed/edited files hi&story"
+msgstr ""
+
+msgid "Di&rectory hotlist"
+msgstr ""
+
+msgid "&Active VFS list"
+msgstr ""
+
+msgid "&Background jobs"
+msgstr ""
+
+msgid "Screen lis&t"
+msgstr ""
+
+msgid "&Undelete files (ext2fs only)"
+msgstr ""
+
+msgid "&Listing format edit"
+msgstr ""
+
+msgid "Edit &extension file"
+msgstr ""
+
+msgid "Edit &menu file"
+msgstr ""
+
+msgid "Edit hi&ghlighting group file"
+msgstr ""
+
+msgid "&Configuration..."
+msgstr ""
+
+msgid "&Layout..."
+msgstr ""
+
+msgid "&Panel options..."
+msgstr ""
+
+msgid "C&onfirmation..."
+msgstr ""
+
+msgid "&Appearance..."
+msgstr ""
+
+msgid "&Display bits..."
+msgstr ""
+
+msgid "&Virtual FS..."
+msgstr ""
+
+msgid "Panels:"
+msgstr ""
+
+#, c-format
+msgid "You have %zu opened screen. Quit anyway?"
+msgid_plural "You have %zu opened screens. Quit anyway?"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "The Midnight Commander"
+msgstr ""
+
+msgid "Do you really want to quit the Midnight Commander?"
+msgstr ""
+
+msgid "&Above"
+msgstr ""
+
+msgid "&Left"
+msgstr ""
+
+msgid "&Below"
+msgstr ""
+
+msgid "&Right"
+msgstr ""
+
+msgid "ButtonBar|Menu"
+msgstr ""
+
+msgid "ButtonBar|View"
+msgstr ""
+
+msgid "ButtonBar|RenMov"
+msgstr ""
+
+msgid "ButtonBar|Mkdir"
+msgstr ""
+
+msgid "&Chdir"
+msgstr ""
+
+msgid "&Again"
+msgstr ""
+
+msgid "Pane&lize"
+msgstr ""
+
+msgid "&View - F3"
+msgstr ""
+
+msgid "&Edit - F4"
+msgstr ""
+
+#, c-format
+msgid "Found: %lu"
+msgstr ""
+
+msgid "Malformed regular expression"
+msgstr ""
+
+msgid "File name:"
+msgstr ""
+
+msgid "&Find recursively"
+msgstr ""
+
+msgid "Follow s&ymlinks"
+msgstr ""
+
+msgid "S&kip hidden"
+msgstr ""
+
+msgid "Content:"
+msgstr ""
+
+msgid "Sea&rch for content"
+msgstr ""
+
+msgid "Case sens&itive"
+msgstr ""
+
+msgid "A&ll charsets"
+msgstr ""
+
+msgid "Fir&st hit"
+msgstr ""
+
+msgid "Find File"
+msgstr ""
+
+msgid "Start at:"
+msgstr ""
+
+msgid "Ena&ble ignore directories:"
+msgstr ""
+
+#, c-format
+msgid "Grepping in %s"
+msgstr ""
+
+msgid "Finished"
+msgstr ""
+
+#, c-format
+msgid "Finished (ignored %zu directory)"
+msgid_plural "Finished (ignored %zu directories)"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "Find File: \"%s\". Content: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "Find File: \"%s\""
+msgstr ""
+
+msgid "Searching"
+msgstr ""
+
+msgid "Change &to"
+msgstr ""
+
+msgid "&Free VFSs now"
+msgstr ""
+
+msgid "&Refresh"
+msgstr ""
+
+msgid "&Add current"
+msgstr ""
+
+msgid "&Up"
+msgstr ""
+
+msgid "New &group"
+msgstr ""
+
+msgid "New &entry"
+msgstr ""
+
+msgid "&Insert"
+msgstr ""
+
+msgid "&Remove"
+msgstr ""
+
+msgid "Subgroup - press ENTER to see list"
+msgstr ""
+
+msgid "Active VFS directories"
+msgstr ""
+
+msgid "Directory hotlist"
+msgstr ""
+
+msgid "Top level group"
+msgstr ""
+
+msgid "Directory path"
+msgstr ""
+
+#, c-format
+msgid "Moving %s"
+msgstr ""
+
+msgid "Directory label"
+msgstr ""
+
+msgid "&Append"
+msgstr ""
+
+msgid "New hotlist entry"
+msgstr ""
+
+msgid "Directory label:"
+msgstr ""
+
+msgid "Directory path:"
+msgstr ""
+
+msgid "New hotlist group"
+msgstr ""
+
+msgid "Name of new group:"
+msgstr ""
+
+#, c-format
+msgid "Are you sure you want to remove entry \"%s\"?"
+msgstr ""
+
+#, c-format
+msgid ""
+"Group \"%s\" is not empty.\n"
+"Remove it?"
+msgstr ""
+
+msgid "Hotlist Load"
+msgstr ""
+
+#, c-format
+msgid ""
+"MC was unable to write %s file,\n"
+"your old hotlist entries were not deleted"
+msgstr ""
+
+#, c-format
+msgid "Label for \"%s\":"
+msgstr ""
+
+msgid "Add to hotlist"
+msgstr ""
+
+#, c-format
+msgid "Midnight Commander %s"
+msgstr ""
+
+#, c-format
+msgid "File: %s"
+msgstr ""
+
+msgid "No node information"
+msgstr ""
+
+msgid "Free nodes:"
+msgstr ""
+
+msgid "No space information"
+msgstr ""
+
+#, c-format
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
+
+#, c-format
+msgid "Type: %s"
+msgstr ""
+
+msgid "non-local vfs"
+msgstr ""
+
+#, c-format
+msgid "Device: %s"
+msgstr ""
+
+#, c-format
+msgid "Filesystem: %s"
+msgstr ""
+
+#, c-format
+msgid "Accessed: %s"
+msgstr ""
+
+#, c-format
+msgid "Modified: %s"
+msgstr ""
+
+#. TRANSLATORS: Time of last status change as in stat(2) man.
+#, c-format
+msgid "Changed: %s"
+msgstr ""
+
+#, c-format
+msgid "Dev. type: major %lu, minor %lu"
+msgstr ""
+
+#, c-format
+msgid "Size: %s"
+msgstr ""
+
+#, c-format
+msgid " (%lu block)"
+msgid_plural " (%lu blocks)"
+msgstr[0] ""
+msgstr[1] ""
+
+#, c-format
+msgid "Owner: %s/%s"
+msgstr ""
+
+#, c-format
+msgid "Links: %d"
+msgstr ""
+
+msgid "Attributes: not supported"
+msgstr ""
+
+#, c-format
+msgid "Attributes: %s"
+msgstr ""
+
+msgid "Attributes: unavailable"
+msgstr ""
+
+#, c-format
+msgid "Mode: %s (%04o)"
+msgstr ""
+
+#, c-format
+msgid "Location: %Xh:%Xh"
+msgstr ""
+
+msgid "&Equal split"
+msgstr ""
+
+msgid "&Menubar visible"
+msgstr ""
+
+msgid "Command &prompt"
+msgstr ""
+
+msgid "&Keybar visible"
+msgstr ""
+
+msgid "H&intbar visible"
+msgstr ""
+
+msgid "&XTerm window title"
+msgstr ""
+
+msgid "&Show free space"
+msgstr ""
+
+msgid "Panel split"
+msgstr ""
+
+msgid "Console output"
+msgstr ""
+
+msgid "&Vertical"
+msgstr ""
+
+msgid "&Horizontal"
+msgstr ""
+
+msgid "Output lines:"
+msgstr ""
+
+msgid "Layout"
+msgstr ""
+
+msgid "Memory exhausted!"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'unsorted' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|u"
+msgstr ""
+
+msgid "&Unsorted"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'name' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|n"
+msgstr ""
+
+msgid "&Name"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'version' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|v"
+msgstr ""
+
+msgid "&Version"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'extension' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|e"
+msgstr ""
+
+msgid "E&xtension"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'size' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|s"
+msgstr ""
+
+msgid "&Size"
+msgstr ""
+
+msgid "Block Size"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Modify time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|m"
+msgstr ""
+
+msgid "&Modify time"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Access time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|a"
+msgstr ""
+
+msgid "&Access time"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'Change time' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|h"
+msgstr ""
+
+msgid "C&hange time"
+msgstr ""
+
+msgid "Perm"
+msgstr ""
+
+msgid "Nl"
+msgstr ""
+
+#. TRANSLATORS: one single character to represent 'inode' sort mode
+#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
+msgid "sort|i"
+msgstr ""
+
+msgid "&Inode"
+msgstr ""
+
+msgid "UID"
+msgstr ""
+
+msgid "GID"
+msgstr ""
+
+msgid "Owner"
+msgstr ""
+
+msgid "Group"
+msgstr ""
+
+msgid "[dev]"
+msgstr ""
+
+msgid "UP--DIR"
+msgstr ""
+
+msgid "SYMLINK"
+msgstr ""
+
+msgid "SUB-DIR"
+msgstr ""
+
+msgid "<readlink failed>"
+msgstr ""
+
+#, c-format
+msgid "%s in %d file"
+msgid_plural "%s in %d files"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Panelize"
+msgstr ""
+
+msgid "Unknown tag on display format:"
+msgstr ""
+
+msgid "&Files only"
+msgstr ""
+
+msgid "&Case sensitive"
+msgstr ""
+
+msgid "Select"
+msgstr ""
+
+msgid "Unselect"
+msgstr ""
+
+msgid "Filter"
+msgstr ""
+
+msgid "Do you really want to execute?"
+msgstr ""
+
+msgid "Cannot read directory contents"
+msgstr ""
+
+msgid "User supplied format looks invalid, reverting to default."
+msgstr ""
+
+msgid "&Add new"
+msgstr ""
+
+msgid "External panelize"
+msgstr ""
+
+msgid "Other command"
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Add to external panelize"
+msgstr ""
+
+msgid "Enter command label:"
+msgstr ""
+
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+
+msgid "Cannot run external panelize in a non-local directory"
+msgstr ""
+
+msgid "Modified git files"
+msgstr ""
+
+msgid "Find rejects after patching"
+msgstr ""
+
+msgid "Find *.orig after patching"
+msgstr ""
+
+msgid "Find SUID and SGID programs"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open the %s file for writing:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid "Copy \"%s\" directory to:"
+msgstr ""
+
+#, c-format
+msgid "Move \"%s\" directory to:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot stat the destination\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Delete %s?"
+msgstr ""
+
+msgid "ButtonBar|Static"
+msgstr ""
+
+msgid "ButtonBar|Dynamc"
+msgstr ""
+
+msgid "ButtonBar|Rescan"
+msgstr ""
+
+msgid "ButtonBar|Forget"
+msgstr ""
+
+msgid "ButtonBar|Rmdir"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot write to the %s file:\n"
+"%s\n"
+msgstr ""
+
+msgid "Help file format error\n"
+msgstr ""
+
+msgid "Internal bug: Double start of link area"
+msgstr ""
+
+#, c-format
+msgid "Cannot find node %s in help file"
+msgstr ""
+
+msgid "Help"
+msgstr ""
+
+msgid "ButtonBar|Index"
+msgstr ""
+
+msgid "ButtonBar|Prev"
+msgstr ""
+
+msgid "Learn keys"
+msgstr ""
+
+msgid "Teach me a key"
+msgstr ""
+
+#, c-format
+msgid ""
+"Please press the %s\n"
+"and then wait until this message disappears.\n"
+"\n"
+"Then, press it again to see if OK appears\n"
+"next to its button.\n"
+"\n"
+"If you want to escape, press a single Escape key\n"
+"and wait as well."
+msgstr ""
+
+msgid "Cannot accept this key"
+msgstr ""
+
+#, c-format
+msgid "You have entered \"%s\""
+msgstr ""
+
+#. TRANSLATORS: This label appears near learned keys. Keep it short.
+msgid "OK"
+msgstr ""
+
+msgid ""
+"It seems that all your keys already\n"
+"work fine. That's great."
+msgstr ""
+
+msgid "&Discard"
+msgstr ""
+
+msgid ""
+"Great! You have a complete terminal database!\n"
+"All your keys work well."
+msgstr ""
+
+msgid ""
+"Press all the keys mentioned here. After you have done it, check\n"
+"which keys are not marked with OK. Press space on the missing\n"
+"key, or click with the mouse to define it. Move around with Tab."
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to run:\n"
+"%s\n"
+msgstr ""
+
+msgid "Home directory path is not absolute"
+msgstr ""
+
+msgid ""
+"GNU Midnight Commander\n"
+"is already running on this terminal.\n"
+"Subshell support will be disabled."
+msgstr ""
+
+#, c-format
+msgid ""
+"\n"
+"Failed while close:\n"
+"%s\n"
+msgstr ""
+
+msgid "Choose codepage"
+msgstr ""
+
+msgid "- < No translation >"
+msgstr ""
+
+msgid "%b %e %Y"
+msgstr ""
+
+msgid "%b %e %H:%M"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot save file %s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Cannot open named pipe %s\n"
+msgstr ""
+
+msgid "The shell is still active. Quit anyway?"
+msgstr ""
+
+#, c-format
+msgid "Warning: Cannot change to %s.\n"
+msgstr ""
+
+msgid "With builtin Editor and Aspell support"
+msgstr ""
+
+msgid "With builtin Editor"
+msgstr ""
+
+msgid "With optional subshell support"
+msgstr ""
+
+msgid "With subshell support as default"
+msgstr ""
+
+msgid "With support for background operations"
+msgstr ""
+
+msgid "With mouse support on xterm and Linux console"
+msgstr ""
+
+msgid "With mouse support on xterm"
+msgstr ""
+
+msgid "With support for X11 events"
+msgstr ""
+
+msgid "With internationalization support"
+msgstr ""
+
+msgid "With multiple codepages support"
+msgstr ""
+
+msgid "With ext2fs attributes support"
+msgstr ""
+
+#, c-format
+msgid "Built with GLib %d.%d.%d\n"
+msgstr ""
+
+#, c-format
+msgid "Built with S-Lang %s with terminfo database\n"
+msgstr ""
+
+#, c-format
+msgid "Built with ncurses %s\n"
+msgstr ""
+
+msgid "Built with ncurses (unknown version)"
+msgstr ""
+
+#, c-format
+msgid "Built with ncursesw %s\n"
+msgstr ""
+
+msgid "Built with ncursesw (unknown version)"
+msgstr ""
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
+msgid "Virtual File Systems:"
+msgstr ""
+
+msgid "Data types:"
+msgstr ""
+
+msgid "Home directory:"
+msgstr ""
+
+msgid "Profile root directory:"
+msgstr ""
+
+msgid "System data"
+msgstr ""
+
+msgid "Config directory:"
+msgstr ""
+
+msgid "Data directory:"
+msgstr ""
+
+msgid "File extension handlers:"
+msgstr ""
+
+msgid "VFS plugins and scripts:"
+msgstr ""
+
+msgid "User data"
+msgstr ""
+
+msgid "Cache directory:"
+msgstr ""
+
+msgid "Debug"
+msgstr ""
+
+msgid "ERROR:"
+msgstr ""
+
+msgid "True:"
+msgstr ""
+
+msgid "False:"
+msgstr ""
+
+msgid "Error calling program"
+msgstr ""
+
+msgid "Warning -- ignoring file"
+msgstr ""
+
+#, c-format
+msgid ""
+"File %s is not owned by root or you or is world writable.\n"
+"Using it may compromise your security"
+msgstr ""
+
+msgid "Format error on file Extensions File"
+msgstr ""
+
+#, c-format
+msgid "The %%var macro has no default"
+msgstr ""
+
+#, c-format
+msgid "The %%var macro has no variable"
+msgstr ""
+
+#, c-format
+msgid "No suitable entries found in %s"
+msgstr ""
+
+msgid "User menu"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Premature end of cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Inconsistent hardlinks of\n"
+"%s\n"
+"in cpio archive\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s contains duplicate entries! Skipping!"
+msgstr ""
+
+#, c-format
+msgid ""
+"Corrupted cpio header encountered in\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Unexpected end of file\n"
+"%s"
+msgstr ""
+
+msgid "Inconsistent archive"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open %s archive\n"
+"%s:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "Warning: cannot open %s directory\n"
+msgstr ""
+
+#, c-format
+msgid "fish: Disconnecting from %s"
+msgstr ""
+
+msgid "fish: Waiting for initial line..."
+msgstr ""
+
+msgid "Sorry, we cannot do password authenticated connections for now."
+msgstr ""
+
+#, c-format
+msgid "fish: Password is required for %s"
+msgstr ""
+
+msgid "fish: Sending password..."
+msgstr ""
+
+msgid "fish: Sending initial line..."
+msgstr ""
+
+msgid "fish: Handshaking version..."
+msgstr ""
+
+msgid "fish: Getting host info..."
+msgstr ""
+
+#, c-format
+msgid "fish: Reading directory %s..."
+msgstr ""
+
+#, c-format
+msgid "%s: done."
+msgstr ""
+
+#, c-format
+msgid "%s: failure"
+msgstr ""
+
+#, c-format
+msgid "fish: store %s: sending command..."
+msgstr ""
+
+msgid "fish: Local read failed, sending zeros"
+msgstr ""
+
+msgid "fish: storing file"
+msgstr ""
+
+msgid "Aborting transfer..."
+msgstr ""
+
+msgid "Error reported after abort."
+msgstr ""
+
+msgid "Aborted transfer would be successful."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Disconnecting from %s"
+msgstr ""
+
+#, c-format
+msgid "FTP: Password required for %s"
+msgstr ""
+
+msgid "ftpfs: sending login name"
+msgstr ""
+
+msgid "ftpfs: sending user password"
+msgstr ""
+
+#, c-format
+msgid "FTP: Account required for user %s"
+msgstr ""
+
+msgid "Account:"
+msgstr ""
+
+msgid "ftpfs: sending user account"
+msgstr ""
+
+msgid "ftpfs: logged in"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Login incorrect for user %s "
+msgstr ""
+
+msgid "ftpfs: Invalid host name."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: making connection to %s"
+msgstr ""
+
+msgid "ftpfs: connection interrupted by user"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: connection to server failed: %s"
+msgstr ""
+
+#, c-format
+msgid "Waiting to retry... %d (Control-G to cancel)"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
+msgid "ftpfs: invalid address family"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not create socket: %s"
+msgstr ""
+
+msgid "ftpfs: could not setup passive mode"
+msgstr ""
+
+msgid "ftpfs: aborting transfer."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: abort error: %s"
+msgstr ""
+
+msgid "ftpfs: abort failed"
+msgstr ""
+
+msgid "ftpfs: CWD failed."
+msgstr ""
+
+msgid "ftpfs: couldn't resolve symlink"
+msgstr ""
+
+msgid "Resolving symlink..."
+msgstr ""
+
+#, c-format
+msgid "ftpfs: Reading FTP directory %s... %s%s"
+msgstr ""
+
+msgid "(strict rfc959)"
+msgstr ""
+
+msgid "(chdir first)"
+msgstr ""
+
+msgid "ftpfs: failed; nowhere to fallback to"
+msgstr ""
+
+msgid "ftpfs: storing file"
+msgstr ""
+
+msgid ""
+"~/.netrc file has incorrect mode\n"
+"Remove password or correct mode"
+msgstr ""
+
+#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid "%s: Warning: file %s not found\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Warning: Invalid line in %s:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"Warning: Invalid flag %c in %s:\n"
+"%s\n"
+msgstr ""
+
+#, c-format
+msgid "sftp: an error occurred while reading %s: %s"
+msgstr ""
+
+msgid "sftp: Unable to get current user name."
+msgstr ""
+
+msgid "sftp: Invalid host name."
+msgstr ""
+
+#, c-format
+msgid "sftp: %s"
+msgstr ""
+
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
+#, c-format
+msgid "sftp: making connection to %s"
+msgstr ""
+
+msgid "sftp: connection interrupted by user"
+msgstr ""
+
+#, c-format
+msgid "sftp: connection to server failed: %s"
+msgstr ""
+
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
+#, c-format
+msgid "sftp: Enter passphrase for %s "
+msgstr ""
+
+msgid "sftp: Passphrase is empty."
+msgstr ""
+
+#, c-format
+msgid "sftp: Enter password for %s "
+msgstr ""
+
+msgid "sftp: Password is empty."
+msgstr ""
+
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
+msgstr ""
+
+#, c-format
+msgid "sftp: socket error: %s"
+msgstr ""
+
+#, c-format
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open tar archive\n"
+"%s"
+msgstr ""
+
+msgid "Inconsistent tar archive"
+msgstr ""
+
+msgid "Unexpected EOF on archive file"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s\n"
+"doesn't look like a tar archive."
+msgstr ""
+
+msgid "undelfs: error"
+msgstr ""
+
+msgid "not enough memory"
+msgstr ""
+
+msgid "while allocating block buffer"
+msgstr ""
+
+#, c-format
+msgid "open_inode_scan: %d"
+msgstr ""
+
+#, c-format
+msgid "while starting inode scan %d"
+msgstr ""
+
+#, c-format
+msgid "undelfs: loading deleted files information %d inodes"
+msgstr ""
+
+#, c-format
+msgid "while calling ext2_block_iterate %d"
+msgstr ""
+
+msgid "no more memory while reallocating array"
+msgstr ""
+
+#, c-format
+msgid "while doing inode scan %d"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file %s"
+msgstr ""
+
+msgid "undelfs: reading inode bitmap..."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot load inode bitmap from:\n"
+"%s"
+msgstr ""
+
+msgid "undelfs: reading block bitmap..."
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot load block bitmap from:\n"
+"%s"
+msgstr ""
+
+msgid "vfs_info is not fs!"
+msgstr ""
+
+msgid "You have to chdir to extract files first"
+msgstr ""
+
+msgid "while iterating over blocks"
+msgstr ""
+
+#, c-format
+msgid "Cannot open file \"%s\""
+msgstr ""
+
+msgid "Ext2lib error"
+msgstr ""
+
+msgid "Invalid value"
+msgstr ""
+
+msgid "File was modified. Save with exit?"
+msgstr ""
+
+msgid "&Cancel quit"
+msgstr ""
+
+msgid ""
+"Midnight Commander is being shut down.\n"
+"Save modified file?"
+msgstr ""
+
+msgid "&Line number"
+msgstr ""
+
+msgid "Pe&rcents"
+msgstr ""
+
+msgid "&Decimal offset"
+msgstr ""
+
+msgid "He&xadecimal offset"
+msgstr ""
+
+msgid "Goto"
+msgstr ""
+
+msgid "ButtonBar|Ascii"
+msgstr ""
+
+msgid "ButtonBar|HxSrch"
+msgstr ""
+
+msgid "ButtonBar|UnWrap"
+msgstr ""
+
+msgid "ButtonBar|Wrap"
+msgstr ""
+
+msgid "ButtonBar|Hex"
+msgstr ""
+
+msgid "ButtonBar|Goto"
+msgstr ""
+
+msgid "ButtonBar|Raw"
+msgstr ""
+
+msgid "ButtonBar|Parse"
+msgstr ""
+
+msgid "ButtonBar|Unform"
+msgstr ""
+
+msgid "ButtonBar|Format"
+msgstr ""
+
+#, c-format
+msgid ""
+"Failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+
+#, c-format
+msgid ""
+"Error while closing the file:\n"
+"%s\n"
+"Data may have been written or not"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot save file:\n"
+"%s"
+msgstr ""
+
+msgid "View: "
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open \"%s\"\n"
+"%s"
+msgstr ""
+
+msgid "Cannot view: not a regular file"
+msgstr ""
+
+#, c-format
+msgid ""
+"Cannot open \"%s\" in parse mode\n"
+"%s"
+msgstr ""
+
+msgid "Search done"
+msgstr ""
+
+msgid "Continue from beginning?"
+msgstr ""
+
+msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
+msgstr ""
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/pl.po
^
|
@@ -3,23 +3,24 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
-# Piotr Drąg <piotrdrag@gmail.com>, 2011-2020
+# Piotr Drąg <piotrdrag@gmail.com>, 2011-2022
# Slava Zanko <slavazanko@gmail.com>, 2011
+# Waldemar Stoczkowski, 2021
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 17:15+0000\n"
-"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>, 2011-2022\n"
"Language-Team: Polish (http://www.transifex.com/mc/mc/language/pl/)\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
-"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
-"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
+"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
+"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -78,30 +79,6 @@
msgid "FATAL: not a directory:"
msgstr "KRYTYCZNE: nie jest katalogiem:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Wystąpił błąd podczas migrowania ustawień użytkownika: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Poprzednie ustawienia użytkownika zostały przeniesione z %s\n"
-"do katalogów zalecanych przez freedesktop.org.\n"
-"Więcej informacji znajduje się na stronie\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Poprzednie ustawienia zostały przeniesione z %s\n"
-"do %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -191,12 +168,12 @@
msgid "True color not supported with ncurses."
msgstr "Kolory 24-bitowe nie są obsługiwane za pomocą biblioteki ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Kolory 24-bitowe nie są obsługiwane w tej wersji biblioteki S-Lang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Terminal nie obsługuje nawet 256 kolorów."
+msgid "True color not supported in this slang version."
+msgstr "Kolory 24-bitowe nie są obsługiwane w tej wersji biblioteki S-Lang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Należy ustawić „COLORTERM=truecolor”, jeśli terminal naprawdę obsługuje "
@@ -559,6 +536,9 @@
"potomnego:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Nie można zamknąć deskryptora potoku (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -567,18 +547,6 @@
"Nieoczekiwany błąd w waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Ostrzeżenie"
-
-msgid "Pipe failed"
-msgstr "Potok się nie powiódł"
-
-msgid "Dup failed"
-msgstr "Dup się nie powiodło"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Błąd podczas duplikowania poprzedniego potoku błędu"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Pamięć podręczna katalogu dla %s wygasła"
@@ -704,12 +672,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Zapisuje dziennik FTP do podanego pliku"
-msgid "Set debug level"
-msgstr "Ustawia poziom debugowania"
-
-msgid "<integer>"
-msgstr "<liczba-całkowita>"
-
msgid "Launches the file viewer on a file"
msgstr "Uruchamia podgląd pliku"
@@ -1047,15 +1009,6 @@
msgid "Two files are needed to compare"
msgstr "Wymagane są dwa pliki do porównania"
-msgid "Choose syntax highlighting"
-msgstr "Wybór wyróżniania składni"
-
-msgid "< Auto >"
-msgstr "< Automatycznie >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Ponownie wczytaj składnię >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Wczytywanie: %3d%%"
@@ -1090,6 +1043,9 @@
"Plik „%s” jest za duży.\n"
"Otworzyć go mimo to?"
+msgid "Warning"
+msgstr "Ostrzeżenie"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Błąd podczas odczytywania potoku: %s"
@@ -1098,14 +1054,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Nie można otworzyć potoku do odczytania: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Wyszukiwanie %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Wyszukiwanie %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Plik ma twarde dowiązania. Odłączyć przez zapisaniem?"
@@ -1151,9 +1099,6 @@
msgid "Save As"
msgstr "Zapisz jako"
-msgid "Collect completions"
-msgstr "Zbierz uzupełnianie"
-
msgid "&Quick save"
msgstr "Szybki &zapis"
@@ -1184,27 +1129,6 @@
msgid "Cannot save file"
msgstr "Nie można zapisać pliku"
-msgid "Delete macro"
-msgstr "Usuń makro"
-
-msgid "Press macro hotkey:"
-msgstr "Proszę nacisnąć skrót makra:"
-
-msgid "Macro not deleted"
-msgstr "Nie usunięto makra"
-
-msgid "Save macro"
-msgstr "Zapisz makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Proszę nacisnąć nowy skrót makra:"
-
-msgid "Repeat last commands"
-msgstr "Powtarza ostatnie polecenia"
-
-msgid "Repeat times:"
-msgstr "Czas powtórzeń:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Proszę potwierdzić zapis pliku: „%s”"
@@ -1239,13 +1163,6 @@
msgid "&Local"
msgstr "&Lokalne"
-msgid "Replace"
-msgstr "Zastąp"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Wykonano %ld zastąpień"
-
msgid "[NoName]"
msgstr "[BezNazwy]"
@@ -1301,10 +1218,10 @@
msgid "Run sort"
msgstr "Wykonaj polecenie sort"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Proszę podać opcje polecenia sort (proszę zobaczyć stronę man), rozdzielone "
-"spacjami: "
+"Proszę podać opcje polecenia sort (strona podręcznika sort(1) zawiera więcej "
+"informacji), rozdzielone spacjami:"
msgid "Sort"
msgstr "Posortuj"
@@ -1356,35 +1273,35 @@
"Bieżący tekst zmodyfikowano bez zapisania pliku.\n"
"Kontynuacja spowoduje ich odrzucenie."
-msgid "In se&lection"
-msgstr "W wy&branych"
+msgid "Cancel"
+msgstr "Anuluj"
-msgid "&Find all"
-msgstr "&Znajdź wszystkie"
+msgid "Collect completions"
+msgstr "Zbierz uzupełnianie"
-msgid "Enter replacement string:"
-msgstr "Zastępujący napis:"
+msgid "NoName"
+msgstr "BezNazwy"
-msgid "Replace with:"
-msgstr "Zastąpienie napisem:"
+msgid "Save macro"
+msgstr "Zapisz makro"
-msgid "&Replace"
-msgstr "&Zastąp"
+msgid "Press the macro's new hotkey:"
+msgstr "Proszę nacisnąć nowy skrót makra:"
-msgid "A&ll"
-msgstr "&Wszystkie"
+msgid "Delete macro"
+msgstr "Usuń makro"
-msgid "&Skip"
-msgstr "&Pomiń"
+msgid "Press macro hotkey:"
+msgstr "Proszę nacisnąć skrót makra:"
-msgid "Confirm replace"
-msgstr "Potwierdź zastąpienie"
+msgid "Macro not deleted"
+msgstr "Nie usunięto makra"
-msgid "Cancel"
-msgstr "Anuluj"
+msgid "Repeat last commands"
+msgstr "Powtarza ostatnie polecenia"
-msgid "NoName"
-msgstr "BezNazwy"
+msgid "Repeat times:"
+msgstr "Czas powtórzeń:"
msgid "&Open file..."
msgstr "&Otwórz plik…"
@@ -1674,6 +1591,45 @@
msgid "Editor options"
msgstr "Opcje edytora"
+msgid "In se&lection"
+msgstr "W wy&branych"
+
+msgid "&Find all"
+msgstr "&Znajdź wszystkie"
+
+msgid "Enter replacement string:"
+msgstr "Zastępujący napis:"
+
+msgid "Replace"
+msgstr "Zastąp"
+
+msgid "Replace with:"
+msgstr "Zastąpienie napisem:"
+
+msgid "&Replace"
+msgstr "&Zastąp"
+
+msgid "A&ll"
+msgstr "&Wszystkie"
+
+msgid "&Skip"
+msgstr "&Pomiń"
+
+msgid "Confirm replace"
+msgstr "Potwierdź zastąpienie"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Wyszukiwanie %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Wyszukiwanie %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Wykonano %ld zastąpień"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1681,8 +1637,8 @@
"Łatwy w obsłudze edytor tekstu,\n"
"napisany dla programu Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright © 1996-2020 Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright © 1996-2022 Free Software Foundation"
msgid "About"
msgstr "O programie"
@@ -1801,6 +1757,15 @@
msgid "Select language"
msgstr "Wybierz język"
+msgid "Choose syntax highlighting"
+msgstr "Wybór wyróżniania składni"
+
+msgid "< Auto >"
+msgstr "< Automatycznie >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Ponownie wczytaj składnię >"
+
msgid "Load syntax file"
msgstr "Wczytaj plik składni"
@@ -2206,19 +2171,6 @@
msgstr "Zadania w tle"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Hasło dla \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domena:"
-
-msgid "Username:"
-msgstr "Nazwa użytkownika:"
-
-msgid "SMB authentication"
-msgstr "Uwierzytelnianie SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2428,12 +2380,6 @@
msgid "Cannot change directory"
msgstr "Nie można zmienić katalogu"
-msgid "Filter"
-msgstr "Filtr"
-
-msgid "Set expression for filtering filenames"
-msgstr "Wyrażenie filtrujące nazwy plików"
-
#, c-format
msgid "Link %s to:"
msgstr "Dowiązanie %s do:"
@@ -2539,9 +2485,6 @@
msgid "Shell link to machine"
msgstr "Połączenie po powłoce z komputerem"
-msgid "SMB link to machine"
-msgstr "Połączenie SMB z komputerem"
-
msgid "Undelete files on an ext2 file system"
msgstr "Odtwórz pliki na systemie plików ext2"
@@ -2580,17 +2523,30 @@
"Nie można utworzyć tymczasowego pliku polecenia\n"
"%s"
+msgid "Pipe failed"
+msgstr "Potok się nie powiódł"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Plik %s jest przestarzały.\n"
+"Midnight Commander używa teraz pliku %s.\n"
+"Proszę skopiować wprowadzone zmiany z poprzedniego pliku do nowego."
+
#, c-format
msgid " %s%s file error"
msgstr " Błąd pliku %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Format pliku %smc.ext uległ zmianie wraz z wersją 3.0. Wygląda na to, że "
+"Format pliku %s%s uległ zmianie wraz z wersją 4.0. Wygląda na to, że "
"instalacja się nie powiodła. Proszę pobrać nową wersję tego pliku z pakietu "
"programu Midnight Commander."
@@ -2600,11 +2556,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Format pliku %s został zmieniony w wersji 3.0. Można skopiować go z %smc.ext "
-"lub użyć tego pliku jako przykład."
+"Format pliku %s został zmieniony w wersji 4.0. Można skopiować go z %s%s lub "
+"użyć tego pliku jako przykład."
msgid "DialogTitle|Copy"
msgstr "Kopiowanie"
@@ -2899,6 +2855,15 @@
msgid "(stalled)"
msgstr "(wstrzymany)"
+msgid "Incomplete file was retrieved"
+msgstr "Pobrano niepełny plik"
+
+msgid "&Keep"
+msgstr "&Zachowaj"
+
+msgid "&Continue copy"
+msgstr "&Kontynuuj kopiowanie"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2915,12 +2880,6 @@
"Nie można zamknąć pliku docelowego „%s”\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Pobrano niepełny plik. Zachować go?"
-
-msgid "&Keep"
-msgstr "&Zachowaj"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3039,7 +2998,7 @@
msgstr "Proces w tle: plik istnieje"
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr "Przetworzono pliki: %zu/%zu"
#, c-format
@@ -3067,7 +3026,7 @@
msgstr " Razem: %s "
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr " Razem: %s/%s "
msgid "Source"
@@ -3134,11 +3093,8 @@
msgid "S&hell link..."
msgstr "Połączenie po po&włoce…"
-msgid "S&FTP link..."
-msgstr "Połączenie S&FTP…"
-
-msgid "SM&B link..."
-msgstr "Połączenie SM&B…"
+msgid "SFTP li&nk..."
+msgstr "Połączenie SF&TP…"
msgid "Paneli&ze"
msgstr "Filtru&j"
@@ -3225,7 +3181,7 @@
msgstr "P&orównaj pliki"
msgid "E&xternal panelize"
-msgstr "Panele ze&wnętrzne"
+msgstr "Filtr ze&wnętrzny"
msgid "Show directory s&izes"
msgstr "Wyśw&ietl rozmiary katalogów"
@@ -3353,6 +3309,9 @@
msgid "&Find recursively"
msgstr "&Znajdź rekurencyjnie"
+msgid "Follow s&ymlinks"
+msgstr "Podążanie za dowiązaniami s&ymbolicznymi"
+
msgid "S&kip hidden"
msgstr "Pomiń u&kryte"
@@ -3522,7 +3481,7 @@
msgstr "Brak informacji o miejscu"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr "Wolne miejsce: %s/%s (%d%%)"
#, c-format
@@ -3771,6 +3730,9 @@
msgid "Unselect"
msgstr "Odznacz"
+msgid "Filter"
+msgstr "Filtr"
+
msgid "Do you really want to execute?"
msgstr "Na pewno wykonać?"
@@ -3798,11 +3760,23 @@
msgid "Enter command label:"
msgstr "Etykieta polecenia:"
-msgid "Cannot invoke command."
-msgstr "Nie można wywołać polecenia."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Filtr zewnętrzny:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Zamknięcie potoku się nie powiodło"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Filtr zewnętrzny:\n"
+"odczytanie danych z potomnego standardowego wyjścia się nie powiodło:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Filtr zewnętrzny można uruchamiać tylko w lokalnym katalogu"
@@ -4069,6 +4043,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Zbudowano za pomocą biblioteki ncursesw (nieznana wersja)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Zbudowano za pomocą biblioteki libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Wirtualne systemy plików:"
@@ -4194,16 +4172,27 @@
"Nieoczekiwany koniec pliku\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Niespójne archiwum tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
"Nie można otworzyć archiwum %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Niespójne archiwum extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Wirtualny system plików EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4319,6 +4308,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Oczekiwanie na ponowienie… %d (Ctrl-G anuluje)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: nie można wykonać tłumaczenia adresu na nazwę: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: próba ponownego połączenia z serwerem, %u. próba"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: nie można uzyskać nazwy gniazda: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: nie można ponownie połączyć się z serwerem"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: nieprawidłowa rodzina adresów"
@@ -4372,6 +4376,14 @@
"Proszę usunąć hasło lub poprawić tryb"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Wirtualny system plików SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: ostrzeżenie: nie odnaleziono pliku %s\n"
@@ -4405,6 +4417,11 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: konwersja adresu IP zdalnego komputera na formę tekstową się nie "
+"powiodła"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: tworzenie połączenia z %s"
@@ -4416,6 +4433,65 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: połączenie z serwerem się nie powiodło: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: odnaleziono klucz komputera o nieobsługiwanym typie: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: nieznany typ klucza komputera:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Trwale dodano\n"
+"%s (%s)\n"
+"do listy znanych komputerów."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: nie można uzyskać klucza zdalnego komputera"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: nieobsługiwany typ klucza, nie można sprawdzić klucza zdalnego "
+"komputera"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: nie można obliczyć sumy odcisku klucza komputera"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Autentyczność komputera\n"
+"%s (%s)\n"
+"nie może zostać ustalona.\n"
+"Suma odcisku klucza %s to\n"
+"SHA1:%s.\n"
+"Dodać go do listy znanych komputerów i kontynuować łączenie?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"znajduje się na liście znanych komputerów, ale\n"
+"KLUCZE SIĘ NIE ZGADZAJĄ! TO MOŻE BYĆ ATAK TYPU MITM!\n"
+"Na pewno dodać go do listy znanych komputerów i kontynuować łączenie?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: weryfikacja klucza komputera się nie powiodła"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: hasło dla %s "
@@ -4430,7 +4506,7 @@
msgid "sftp: Password is empty."
msgstr "sftp: hasło jest puste."
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: failure establishing SSH session"
msgstr "sftp: niepowodzenie podczas nawiązywania sesji SSH"
msgid "sftp: No file handler data present for reading file"
@@ -4448,33 +4524,6 @@
msgstr "sftp: ukończono wyświetlanie listy."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "ponowne połączenie z %s się nie powiodło"
-
-msgid "Authentication failed"
-msgstr "Uwierzytelnienie się nie powiodło"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Błąd %s podczas tworzenia katalogu %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Błąd %s podczas usuwania katalogu %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s podczas otwierania zdalnego pliku %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s podczas usuwania zdalnego pliku %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s podczas zmieniania nazw plików\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/pt.po
^
|
@@ -5,21 +5,23 @@
# Translators:
# Gilberto J <2101458@my.ipleiria.pt>, 2012
# Gilberto Jorge <gmj125@gmail.com>, 2012-2013
-# Gilberto Jorge <gmj125@gmail.com>, 2013-2020
+# Gilberto Jorge <gmj125@gmail.com>, 2013-2022
+# Peter J. Mello <admin@petermello.net>, 2021
# Slava Zanko <slavazanko@gmail.com>, 2011
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 16:53+0000\n"
-"Last-Translator: Gilberto Jorge <gmj125@gmail.com>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Gilberto Jorge <gmj125@gmail.com>, 2013-2022\n"
"Language-Team: Portuguese (http://www.transifex.com/mc/mc/language/pt/)\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
+"1000000 == 0 ? 1 : 2;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -78,30 +80,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: não é um diretório:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Ocorreu um erro ao migrar a configuração de utilizador: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"As suas antigas configurações foram migradas de %s\n"
-"para os dirs recomendados do Freedesktop.\n"
-"Para obter mais informação, por favor visite\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"As suas antigas configurações foram migradas de %s\n"
-"para %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -190,12 +168,12 @@
msgid "True color not supported with ncurses."
msgstr "True color não suportado com o ncurses."
-msgid "True color not supported in this slang version."
-msgstr "True color não suportado nesta versão slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "O seu terminal não parece suportar nem 256 cores."
+msgid "True color not supported in this slang version."
+msgstr "True color não suportado nesta versão slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Colocar COLORTERM=truecolor se o seu terminal suportar mesmo true colors."
@@ -556,6 +534,9 @@
"Erro inesperado em select() ao ler dados de um processo child:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Não é possível fechar o pipe descriptor (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -564,18 +545,6 @@
"Erro inesperado em waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Aviso"
-
-msgid "Pipe failed"
-msgstr "Falha de Pipe"
-
-msgid "Dup failed"
-msgstr "Falha de dup"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Erro dup'ing erro antigo de pipe"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache de diretório expirou para %s"
@@ -701,12 +670,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Registar diálogo de ftp para o ficheiro especificado"
-msgid "Set debug level"
-msgstr "Definir nível de depuração"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Executa o visualizador de ficheiros sobre um ficheiro"
@@ -1045,15 +1008,6 @@
msgid "Two files are needed to compare"
msgstr "São necessários dois ficheiros para a comparação"
-msgid "Choose syntax highlighting"
-msgstr "Escolha destaque de sintaxe"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Carrega Syntax Atual>"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "A carregar: %3d%%"
@@ -1088,6 +1042,9 @@
"O ficheiro \"%s\" é demasiado grande.\n"
"Deseja mesmo abrir?"
+msgid "Warning"
+msgstr "Aviso"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Erro ao ler do pipe: %s"
@@ -1096,14 +1053,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Não é possível abrir pipe para leitura: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "A procurar %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "A procurar %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Ficheiro tem hard-links. Separar antes de guardar?"
@@ -1149,9 +1098,6 @@
msgid "Save As"
msgstr "Guardar Como"
-msgid "Collect completions"
-msgstr "Recolher finalizações"
-
msgid "&Quick save"
msgstr "G&uardar rápido"
@@ -1182,27 +1128,6 @@
msgid "Cannot save file"
msgstr "Não é possível guardar ficheiro"
-msgid "Delete macro"
-msgstr "Apagar macro"
-
-msgid "Press macro hotkey:"
-msgstr "Pressione atalho de macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro não apagada"
-
-msgid "Save macro"
-msgstr "Guardar macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Pressione o novo atalho da macro:"
-
-msgid "Repeat last commands"
-msgstr "Repetir últimos comandos"
-
-msgid "Repeat times:"
-msgstr "Repetir vezes:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Confirmar gravação de ficheiro: \"%s\""
@@ -1237,13 +1162,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Substituir"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld substituições efetuadas"
-
msgid "[NoName]"
msgstr "[SemNome]"
@@ -1299,8 +1217,10 @@
msgid "Run sort"
msgstr "Excutar ordenar"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Insira opções de ordenar (ver manpage) separado por espaço branco:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
+"Introduza opções de ordenação (ver sort(1) manpage) separadas por espaço "
+"branco:"
msgid "Sort"
msgstr "Ordenar"
@@ -1352,35 +1272,35 @@
"O texto atual foi modificado sem guardar o ficheiro.\n"
"Continuar descarta as alterações."
-msgid "In se&lection"
-msgstr "Na se&leção"
+msgid "Cancel"
+msgstr "Cancelar"
-msgid "&Find all"
-msgstr "&Encontrar todos"
+msgid "Collect completions"
+msgstr "Recolher finalizações"
-msgid "Enter replacement string:"
-msgstr "Insira a string de substituição:"
+msgid "NoName"
+msgstr "SemNome"
-msgid "Replace with:"
-msgstr "Substituir com:"
+msgid "Save macro"
+msgstr "Guardar macro"
-msgid "&Replace"
-msgstr "&Substituir"
+msgid "Press the macro's new hotkey:"
+msgstr "Pressione o novo atalho da macro:"
-msgid "A&ll"
-msgstr "To&dos"
+msgid "Delete macro"
+msgstr "Apagar macro"
-msgid "&Skip"
-msgstr "&Saltar"
+msgid "Press macro hotkey:"
+msgstr "Pressione atalho de macro:"
-msgid "Confirm replace"
-msgstr "Confirmar substituição"
+msgid "Macro not deleted"
+msgstr "Macro não apagada"
-msgid "Cancel"
-msgstr "Cancelar"
+msgid "Repeat last commands"
+msgstr "Repetir últimos comandos"
-msgid "NoName"
-msgstr "SemNome"
+msgid "Repeat times:"
+msgstr "Repetir vezes:"
msgid "&Open file..."
msgstr "&Abrir ficheiro..."
@@ -1670,6 +1590,45 @@
msgid "Editor options"
msgstr "Opções de editor"
+msgid "In se&lection"
+msgstr "Na se&leção"
+
+msgid "&Find all"
+msgstr "&Encontrar todos"
+
+msgid "Enter replacement string:"
+msgstr "Insira a string de substituição:"
+
+msgid "Replace"
+msgstr "Substituir"
+
+msgid "Replace with:"
+msgstr "Substituir com:"
+
+msgid "&Replace"
+msgstr "&Substituir"
+
+msgid "A&ll"
+msgstr "To&dos"
+
+msgid "&Skip"
+msgstr "&Saltar"
+
+msgid "Confirm replace"
+msgstr "Confirmar substituição"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "A procurar %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "A procurar %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld substituições efetuadas"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1677,8 +1636,8 @@
"Um editor de texto amigo do utilizador\n"
"escrito para o Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 the Free Software Foundation"
msgid "About"
msgstr "Acerca"
@@ -1797,6 +1756,15 @@
msgid "Select language"
msgstr "Selecionar linguagem"
+msgid "Choose syntax highlighting"
+msgstr "Escolha destaque de sintaxe"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Carrega Syntax Atual>"
+
msgid "Load syntax file"
msgstr "Carregar ficheiro de sintaxe"
@@ -2203,19 +2171,6 @@
msgstr "Jobs em background"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Senha para \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domínio:"
-
-msgid "Username:"
-msgstr "Utilizador:"
-
-msgid "SMB authentication"
-msgstr "Autenticação SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2425,12 +2380,6 @@
msgid "Cannot change directory"
msgstr "Não é possível mudar de directório"
-msgid "Filter"
-msgstr "Filtrar"
-
-msgid "Set expression for filtering filenames"
-msgstr "Definir expressão para filtrar nomes de ficheiros"
-
#, c-format
msgid "Link %s to:"
msgstr "Ligar %s a:"
@@ -2536,9 +2485,6 @@
msgid "Shell link to machine"
msgstr "Ligação shell à máquina"
-msgid "SMB link to machine"
-msgstr "Ligação SMB à máquina"
-
msgid "Undelete files on an ext2 file system"
msgstr "Repor ficheiros num sistema de ficheiros ext2"
@@ -2577,18 +2523,31 @@
"Não é possível criar ficheiro de comando temporário\n"
"%s"
+msgid "Pipe failed"
+msgstr "Falha de Pipe"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Tem um ficheiro %s desactualizado.\n"
+"Midnight Commander agora usa ficheiro %s.\n"
+"Por favor copie as suas modificações do ficheiro antigo para o novo."
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s erro de ficheiro"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"O formato do ficheiro %smc.ext mudou com a versão 3.0. Parece que a "
-"instalação falhou. Por favor obtenha uma cópia recente do pacote do Midnight "
+"O formato do ficheiro %s%s foi alterado com a versão 4.0. Parece que a "
+"instalação falhou. Por favor obtenha uma cópia nova no pacote do Midnight "
"Commander."
#, c-format
@@ -2597,11 +2556,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"O formato do ficheiro %s mudou com a versão 3.0. Pode desejar copiá-lo de "
-"%smc.ext ou usar esse ficheiro como um exemplo de como o escrever."
+"O formato do ficheiro %s foi alterado com a versão 4.0. Pode querer copia-lo "
+"do %s%s ou usar esse ficheiro como um exemplo de como escreve-lo."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Copiar"
@@ -2896,6 +2855,15 @@
msgid "(stalled)"
msgstr "(estagnado)"
+msgid "Incomplete file was retrieved"
+msgstr "Foi obtido ficheiro incompleto"
+
+msgid "&Keep"
+msgstr "&Manter"
+
+msgid "&Continue copy"
+msgstr "&Continuar a copiar"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2912,12 +2880,6 @@
"Não é possível fechar o ficheiro alvo \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Foi obtido ficheiro incompleto. Ficar com ele?"
-
-msgid "&Keep"
-msgstr "&Manter"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3036,8 +2998,8 @@
msgstr "Processo em background: Ficheiro existe"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Ficheiros processados: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Ficheiros processados: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3064,8 +3026,8 @@
msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Total: %s/%s "
+msgid " Total: %s / %s "
+msgstr " Total: %s / %s "
msgid "Source"
msgstr "Fonte"
@@ -3117,7 +3079,7 @@
msgstr "Formato da &listagem..."
msgid "&Sort order..."
-msgstr "&Ordenação..."
+msgstr "Ordem de cla&ssificação..."
msgid "&Filter..."
msgstr "&Filtro..."
@@ -3131,11 +3093,8 @@
msgid "S&hell link..."
msgstr "Ligação s&hell..."
-msgid "S&FTP link..."
-msgstr "Ligação S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Ligação SM&B..."
+msgid "SFTP li&nk..."
+msgstr "Lig&ação SFTP..."
msgid "Paneli&ze"
msgstr "Em Pai&nel"
@@ -3289,6 +3248,7 @@
msgid_plural "You have %zu opened screens. Quit anyway?"
msgstr[0] "Tem %zu ecrã aberto. Terminar de qualquer modo?"
msgstr[1] "Tem %zu ecrãs abertos. Terminar de qualquer modo?"
+msgstr[2] "Tem %zu ecrãs abertos. Terminar de qualquer modo?"
msgid "The Midnight Commander"
msgstr "O Midnight Commander"
@@ -3348,6 +3308,9 @@
msgid "&Find recursively"
msgstr "Procurar &recursivamente"
+msgid "Follow s&ymlinks"
+msgstr "Seguir s&ymlinks"
+
msgid "S&kip hidden"
msgstr "Saltar esc&ondidos"
@@ -3387,6 +3350,7 @@
msgid_plural "Finished (ignored %zu directories)"
msgstr[0] "Terminado (%zu directório ignorado)"
msgstr[1] "Terminado (%zu directórios ignorados)"
+msgstr[2] "Terminado (%zu directórios ignorados)"
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
@@ -3514,8 +3478,8 @@
msgstr "Nenhuma informação de espaço"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Espaço livre: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Espaço livre: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3558,6 +3522,7 @@
msgid_plural " (%lu blocks)"
msgstr[0] " (%lu bloco)"
msgstr[1] " (%lu blocos)"
+msgstr[2] " (%lu blocos)"
#, c-format
msgid "Owner: %s/%s"
@@ -3740,6 +3705,7 @@
msgid_plural "%s in %d files"
msgstr[0] "%s em %d ficheiro"
msgstr[1] "%s em %d ficheiros"
+msgstr[2] "%s em %d ficheiros"
msgid "Panelize"
msgstr "Em Panel"
@@ -3759,6 +3725,9 @@
msgid "Unselect"
msgstr "Cancelar seleção"
+msgid "Filter"
+msgstr "Filtrar"
+
msgid "Do you really want to execute?"
msgstr "Deseja mesmo executar?"
@@ -3787,11 +3756,23 @@
msgid "Enter command label:"
msgstr "Adicionar a \"Exterior Em Painel\""
-msgid "Cannot invoke command."
-msgstr "Não é possível invocar comando."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Exterior Em Painel:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Falha no fecho de pipe"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Exterior Em Painel:\n"
+"falha ao ler dados a partir do stdout encaixado:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Não é possível executar \"Exterior Em Painel\" num diretório não local"
@@ -4057,6 +4038,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "Desenvolvido com ncursesw (versão desconhecida)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Compilado com libssh2 %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Sistemas de Ficheiros Virtuais:"
@@ -4182,16 +4167,27 @@
"Fim de ficheiro inesperado\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Arquivo tar inconsistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Não é possível abrir ficheiro %s\n"
+"Não é possível abrir arquivo %s\n"
+"%s;\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Ficheiro extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de ficheiro virtual EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4307,6 +4303,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Aguardando para repetir... %d (Control-G para cancelar)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: não foi possível a tradução endereço-para-nome: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: tentativa de reconexão ao servidor, tentativa %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: não foi possível obter o nome do socket: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: não foi possível reconectar ao servidor"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: endereço de família inválido"
@@ -4360,6 +4371,14 @@
"Remova a senha ou corrija o modo"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de ficheiro virtual SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Aviso: ficheiro %s não encontrado\n"
@@ -4393,6 +4412,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr "sftp: falha ao converter endereço IP de host remoto em forma de texto"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: a efetuar ligação a %s"
@@ -4404,6 +4426,65 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: falha na ligação ao servidor: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: encontrado host key de tipo não suportado: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: tipo de host key desconhecido:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Adicionado permanentemente\n"
+"%s (%s)\n"
+"à lista de hosts desconhecidos."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: não é possível obter o host key remoto"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: tipo de key não suportado, não foi possível verificar o host key remoto"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: não é possível processar o fingerprint hash do host key"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"A autenticidade do host\n"
+"%s (%s)\n"
+"não é possível estabelecer!\n"
+"%s a fingerprint hash da key é\n"
+"SHA1:%s.\n"
+"Pretende adicioná-la à lista de hosts conhecidos e continuar a conexão?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"foi encontrado na lista de hosts conhecidos mas\n"
+"AS KEYS NÃO SÃO IGUAIS! ISTO PODERÁ SER UM ATAQUE MITM!\n"
+"Tem a certeza que deseja adicioná-lo à lista de hosts conhecidos e continuar "
+"a conexão?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: verificação da host key falhou"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Insira a passphrase para %s "
@@ -4418,8 +4499,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Senha está vazia."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Falha ao estabelecer sessão SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: falha ao estabelecer sessão SSH"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Sem dados de uso de ficheiro presentes para ler ficheiro"
@@ -4436,33 +4517,6 @@
msgstr "sftp: Listagem efetuada."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "reconexão a %s falhou"
-
-msgid "Authentication failed"
-msgstr "Falha de autenticação"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Erro %s ao criar diretório %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Erro %s ao remover diretório %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s ao abrir ficheiro remoto %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s ao remover ficheiro remoto %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s ao renomear ficheiros\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/pt_BR.po
^
|
@@ -5,6 +5,7 @@
# Translators:
# Enrico Nicoletto <enrico.BR@gmx.co.uk>, 2013
# Heitor Adão Júnior <heitoradao@gmail.com>, 2017
+# marcelo cripe <marcelocripe@gmail.com>, 2022
# Mauro Hemerly Gazzani <mauro.hemerly@gmail.com>, 2017
# Rafael Fontenelle <rffontenelle@gmail.com>, 2012
# Slava Zanko <slavazanko@gmail.com>, 2011
@@ -12,44 +13,48 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: marcelo cripe <marcelocripe@gmail.com>, 2022\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/mc/mc/language/"
"pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
+"1000000 == 0 ? 1 : 2;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
-msgstr "Aviso: não foi possível carregar a lista de codepages"
+msgstr ""
+"Aviso: \n"
+"Não foi possível carregar a lista contendo as páginas de código"
msgid "7-bit ASCII"
-msgstr "ASCII 7-bit"
+msgstr "ASCII de 7 bits"
#, c-format
msgid "Cannot translate from %s to %s"
-msgstr "Não pode traduzir de %s para %s"
+msgstr "Não é possível traduzir de %s para %s"
msgid "Event system already initialized"
-msgstr "Evento do sistema já inicializado"
+msgstr "O evento do sistema já foi inicializado"
msgid "Failed to initialize event system"
-msgstr "Falha ao inicializar o evento do sistema"
+msgstr "Ocorreu uma falha ao inicializar o evento do sistema"
msgid "Event system not initialized"
-msgstr "Evento de sistema não inicializado"
+msgstr "O evento do sistema não foi inicializado"
msgid "Check input data! Some of parameters are NULL!"
-msgstr "Verifique o dado de entrada! Alguns parametros são NULL!"
+msgstr ""
+"Verifique o dado da entrada! Alguns parâmetros estão na condição NULL (NULO)!"
#, c-format
msgid "Unable to create group '%s' for events!"
-msgstr "Não foi possível criar o grupo '%s' para eventos!"
+msgstr "Não foi possível criar o grupo '%s' para os eventos!"
#, c-format
msgid "Unable to create event '%s'!"
@@ -61,7 +66,7 @@
"User: %s\n"
"Process ID: %d"
msgstr ""
-"Arquivo \"%s\" já está sendo editado. \n"
+"O arquivo \"%s\" já está sendo editado. \n"
"Usuário: %s \n"
"Processo Nº: %d"
@@ -69,76 +74,55 @@
msgstr "Arquivo bloqueado"
msgid "&Grab lock"
-msgstr "Pe&gar bloqueio"
+msgstr "Pe&gar o bloqueio"
msgid "&Ignore lock"
-msgstr "&Ignorar bloqueio"
+msgstr "&Ignorar o bloqueio"
#, c-format
msgid "Cannot create %s directory"
msgstr "Não foi possível criar o diretório %s"
msgid "FATAL: not a directory:"
-msgstr "FATAL: não é um diretório:"
-
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Um erro ocorreu enquanto migrava as configurações do usuário: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Suas configurações antigas foram migradas de %s\n"
-"para os diretórios recomendados de Freedesktop.\n"
-"Para objer mais informações, visite\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Suas configurações antigas foram migradas de %s\n"
-"para %s\n"
+msgstr "Ocorreu um ERRO FATAL porque não é um diretório:"
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
-msgstr "Número fora da faixa (deveria ser de 0<= n <= 0xFF, em hexadecimal)"
+msgstr ""
+"Número está fora da faixa (deve estar no intervalo de 0<= n <= 0xFF e "
+"expresso em hexadecimal)"
msgid "Invalid character"
-msgstr "Carácter inválido"
+msgstr "O caractere não é válido"
msgid "Unmatched quotes character"
-msgstr "número de aspas não equivalentes"
+msgstr "O número de aspas não são equivalentes"
#, c-format
msgid ""
"Hex pattern error at position %d:\n"
"%s."
msgstr ""
-"Erro de padrão hexa na posição %d:\n"
+"Erro no padrão hexadecimal na posição %d:\n"
"%s"
msgid "Search string not found"
-msgstr "Texto não encontrado"
+msgstr "O texto não foi encontrado"
msgid "Not implemented yet"
-msgstr "Ainda não implementado"
+msgstr "Ainda não foi implementado"
msgid "Num of replace tokens not equal to num of found tokens"
-msgstr "Número de tokens substituídos é igual ao número de tokens encontrados"
+msgstr ""
+"O número de fichas substituídas não é igual ao número de fichas encontradas"
#, c-format
msgid "Invalid token number %d"
-msgstr "Número de token inválido %d"
+msgstr "O número %d de ficha(s) não é válido"
msgid "Regular expression error"
-msgstr "Erro de expressão regular"
+msgstr "Erro na expressão regular"
msgid "No&rmal"
msgstr "No&rmal"
@@ -150,23 +134,23 @@
msgstr "He&xadecimal"
msgid "Wil&dcard search"
-msgstr "Procura por Wil&dcard"
+msgstr "Pesquisa por Curinga"
#, c-format
msgid ""
"Unable to load '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"Não é possível carregar a skin '%s' . \n"
-"Skin padrão foi carregado"
+"Não foi possível carregar a capa '%s' .\n"
+"A capa padrão foi carregada"
#, c-format
msgid ""
"Unable to parse '%s' skin.\n"
"Default skin has been loaded"
msgstr ""
-"Não é possível analisar a skin '%s' . \n"
-"Skin padrão foi carregado"
+"Não é possível analisar a capa '%s' . \n"
+"A capa padrão foi carregada"
#, c-format
msgid ""
@@ -174,9 +158,10 @@
"%s\n"
"Default skin has been loaded"
msgstr ""
-"Não foi possível usar a skin '%s' com suporte true colors:\n"
+"Não foi possível utilizar a capa '%s' com suporte a cores verdadeiras (true "
+"colors):\n"
"%s\n"
-"A skin padrão foi carregada"
+"A capa padrão foi carregada"
#, c-format
msgid ""
@@ -184,25 +169,29 @@
"on non-256 colors terminal.\n"
"Default skin has been loaded"
msgstr ""
-"Não foi possível usar a skin '%s' com suporte a 256 cores\n"
-"em um terminal não 256 cores.\n"
-"A skin padrão foi carregada"
+"Não foi possível utilizar a capa '%s' com suporte\n"
+"a 256 cores em um terminal não 256 cores.\n"
+"A capa padrão foi carregada"
msgid "True color not supported with ncurses."
-msgstr "True color não é suportado com ncurses."
-
-msgid "True color not supported in this slang version."
-msgstr "True color não é suportado na versão deste dialeto."
+msgstr ""
+"As cores verdadeiras (true colors) não são suportadas pelo com ncurses."
msgid "Your terminal doesn't even seem to support 256 colors."
-msgstr "Seu terminal nem parece que suporta 256 cores."
+msgstr "Seu terminal não parece possuir suporte para 256 cores."
+
+msgid "True color not supported in this slang version."
+msgstr ""
+"As cores verdadeiras (true colors) não são suportadas na versão deste "
+"dialeto."
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
-"Atribua COLORTERM=truecolor se seu terminal realmente suporta true colors."
+"Defina a opção COLORTERM=truecolor se o seu emulador de terminal realmente "
+"possui suporte as cores verdadeiras."
msgid "Escape"
-msgstr "Escape"
+msgstr "Escapar"
msgid "Function key 1"
msgstr "Tecla de função 1"
@@ -265,37 +254,37 @@
msgstr "Tecla de função 20"
msgid "Completion/M-tab"
-msgstr "Complemento/M-tab"
+msgstr "Complemento/M+Tab"
msgid "BackTab/S-tab"
-msgstr "BackTab/S-tab"
+msgstr "Backspace/S+Tab"
msgid "Backspace"
msgstr "Backspace"
msgid "Up arrow"
-msgstr "Seta cima"
+msgstr "Seta para cima"
msgid "Down arrow"
-msgstr "Seta baixo"
+msgstr "Seta para baixo"
msgid "Left arrow"
-msgstr "Seta esquerda"
+msgstr "Seta para esquerda"
msgid "Right arrow"
-msgstr "Seta direita"
+msgstr "Seta para direita"
msgid "Insert"
msgstr "Insert"
msgid "Delete"
-msgstr "Delete"
+msgstr "Excluir"
msgid "Home"
msgstr "Home"
msgid "End key"
-msgstr "Tecla de Fim"
+msgstr "End"
msgid "Page Up"
msgstr "Page Up"
@@ -304,49 +293,49 @@
msgstr "Page Down"
msgid "/ on keypad"
-msgstr "/ no keypad"
+msgstr "/ do teclado numérico"
msgid "* on keypad"
-msgstr "* no teclado numérico"
+msgstr "* do teclado numérico"
msgid "- on keypad"
-msgstr "- no teclado numérico"
+msgstr "- do teclado numérico"
msgid "+ on keypad"
-msgstr "+ no teclado numérico"
+msgstr "+ do teclado numérico"
msgid "Left arrow keypad"
-msgstr "Seta esquerda no teclado numérico"
+msgstr "Seta para esquerda do teclado numérico"
msgid "Right arrow keypad"
-msgstr "Seta direita no teclado numérico"
+msgstr "Seta para direita do teclado numérico"
msgid "Up arrow keypad"
-msgstr "seta acima no teclado numérico"
+msgstr "Seta para acima do teclado numérico"
msgid "Down arrow keypad"
-msgstr "Seta abaixo no teclado numérico"
+msgstr "Seta para baixo do teclado numérico"
msgid "Home on keypad"
-msgstr "Home no teclado numérico"
+msgstr "Home do teclado numérico"
msgid "End on keypad"
-msgstr "End no teclado numérico"
+msgstr "End do teclado numérico"
msgid "Page Down keypad"
-msgstr "Página abaixo no teclado numérico"
+msgstr "Page Down do teclado numérico"
msgid "Page Up keypad"
-msgstr "Página acima no teclado numérico"
+msgstr "Page Up do teclado numérico"
msgid "Insert on keypad"
-msgstr "Insert no teclado numérico"
+msgstr "Insert do teclado numérico"
msgid "Delete on keypad"
-msgstr "Apagar no teclado numérico"
+msgstr "Delete do teclado numérico"
msgid "Enter on keypad"
-msgstr "Enter no teclado numérico"
+msgstr "Enter do teclado numérico"
msgid "Function key 21"
msgstr "Tecla de função 21"
@@ -406,7 +395,7 @@
msgstr "Ponto de interrogação"
msgid "Ampersand"
-msgstr "Ampersand"
+msgstr "“E” comercial"
msgid "Dollar sign"
msgstr "Cifrão"
@@ -415,25 +404,25 @@
msgstr "Aspas"
msgid "Percent sign"
-msgstr "Símbolo percentagem"
+msgstr "Sinal de porcentagem"
msgid "Caret"
-msgstr "Circunflexo"
+msgstr "Acento circunflexo"
msgid "Tilda"
msgstr "Til"
msgid "Prime"
-msgstr "De primeiro"
+msgstr "Primeiro"
msgid "Underline"
msgstr "Sublinhado"
msgid "Understrike"
-msgstr "Tracado"
+msgstr "Riscado"
msgid "Pipe"
-msgstr "Bastão"
+msgstr "Canal"
msgid "Left parenthesis"
msgstr "Abrir parêntese "
@@ -448,10 +437,10 @@
msgstr "Fechar colchete"
msgid "Left brace"
-msgstr "Abrir Chave"
+msgstr "Abrir chave"
msgid "Right brace"
-msgstr "Fechar Chave"
+msgstr "Fechar chave"
msgid "Enter"
msgstr "Enter"
@@ -488,32 +477,38 @@
msgstr "A variável de ambiente TERM não foi definida!\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Não é possível verificar o canal do SIGWINCH"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Não é possível criar o canal para o SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Não é possível configurar o canal para a escrita no SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Não é possível configurar o final da leitura do canal do SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"Screen size %dx%d is not supported.\n"
"Check the TERM environment variable.\n"
msgstr ""
-"Tamanho da tela %d x %d não é suportado. \n"
+"O tamanho da tela %d x %d não é suportado. \n"
"Verifique a variável de ambiente TERM.\n"
msgid "B"
@@ -538,59 +533,51 @@
msgstr "GiB"
msgid "Cannot create pipe descriptor"
-msgstr "Não foi possível criar um pipe descriptor"
+msgstr "Não foi possível criar um descritivo do canal"
msgid "Cannot create pipe streams"
-msgstr "Não é possível criar pipe streams"
+msgstr "Não foi possível criar o fluxo do canal"
#, c-format
msgid ""
"Unexpected error in select() reading data from a child process:\n"
"%s"
msgstr ""
-"Erro não esperado em select() lendo dados de um processo filho:\n"
+"Ocorreu um erro inesperado no select() durante a leitura dos dados de um "
+"processo filho:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Não foi possível fechar o descritivo do canal (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-"Erro inesperado em waitpid():\n"
+"Ocorreu um erro inesperado no waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Aviso"
-
-msgid "Pipe failed"
-msgstr "Pipe falhou"
-
-msgid "Dup failed"
-msgstr "Dup falhou"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Erro ao dupar um error pipe antigo"
-
#, c-format
msgid "Directory cache expired for %s"
-msgstr "Cache de dir expirou para %s"
+msgstr "O diretório do cache expirou para %s"
#, c-format
msgid "%s: %s: %s %3d%% (%lld) bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %3d%% (%lld) bytes transferidos"
#, c-format
msgid "%s: %s: %s %lld bytes transferred"
-msgstr ""
+msgstr "%s: %s: %s %lld bytes transferidos"
msgid "Starting linear transfer..."
-msgstr "Iniciando transferência linear..."
+msgstr "Iniciando a transferência linear..."
msgid "Getting file"
-msgstr "Obtendo arquivo"
+msgstr "Obtendo o arquivo"
msgid "Changes to file lost"
-msgstr "Alterações no arquivo perdidas"
+msgstr "As alterações feitas no arquivo foram perdidas"
#, c-format
msgid "%s is not a directory\n"
@@ -598,35 +585,35 @@
#, c-format
msgid "Directory %s is not owned by you\n"
-msgstr "Diretório %s não é pertence a voçe\n"
+msgstr "O diretório %s não pertence a você\n"
#, c-format
msgid "Cannot set correct permissions for directory %s\n"
-msgstr "Não é possível definir permissões corretas para o diretório %s\n"
+msgstr "Não foi possível definir as permissões corretas para o diretório %s\n"
#, c-format
msgid "Cannot create temporary directory %s: %s\n"
-msgstr "Não é possível criar diretório temporário %s: %s\n"
+msgstr "Não foi possível criar o diretório temporário %s: %s\n"
#, c-format
msgid "Temporary files will be created in %s\n"
-msgstr "Arquivos temporários serão criados em %s\n"
+msgstr "Os arquivos temporários serão criados em %s\n"
#, c-format
msgid "Temporary files will not be created\n"
-msgstr "Arquivos temporários não será criado\n"
+msgstr "Os arquivos temporários não serão criados\n"
msgid "Press any key to continue..."
-msgstr "Pressione uma tecla para continuar..."
+msgstr "Pressione qualquer tecla para continuar..."
msgid "Cannot parse:"
-msgstr "Não foi possível verificar:"
+msgstr "Não foi possível analisar:"
msgid "More parsing errors will be ignored."
-msgstr "Mais erros de verificação serão ignorados."
+msgstr "Foram analisados mais erros e serão ignorados."
msgid "Internal error:"
-msgstr "Erro interno:"
+msgstr "Ocorreu um erro interno:"
msgid "Password:"
msgstr "Senha:"
@@ -639,10 +626,10 @@
#. TRANSLATORS: no need to translate 'DialogTitle', it's just a context prefix
msgid "DialogTitle|History cleanup"
-msgstr ""
+msgstr "Título da Caixa de Diálogo|Limpeza do Histórico"
msgid "Do you want clean this history?"
-msgstr "Você deseja limpar o histórico?"
+msgstr "Você quer limpar o histórico?"
msgid "&Yes"
msgstr "&Sim"
@@ -657,74 +644,69 @@
msgstr "&Cancelar"
msgid "Background process:"
-msgstr "Processo em segundo plano:"
+msgstr "Processo que está sendo executado em segundo plano:"
msgid "Error"
msgstr "Erro"
#, c-format
msgid "%s (%d)"
-msgstr ""
+msgstr "%s (%d)"
msgid "&Abort"
-msgstr "C&Ancelar"
+msgstr "&Sobre"
msgid "Displays the current version"
-msgstr "Mostra a versão atual"
+msgstr "Exibe a versão atual"
msgid "Print data directory"
-msgstr "Exibir dados do diretório"
+msgstr "Exibir os dados do diretório"
msgid "Print extended info about used data directories"
msgstr ""
+"Exibir as informações detalhadas sobre os dados utilizados nos diretórios"
msgid "Print configure options"
-msgstr "Opções de configuração de impressão"
+msgstr "Opções de configurações de impressão"
msgid "Print last working directory to specified file"
-msgstr "Exibir último diretório de trabalho para o arquivo especificado"
+msgstr "Exibir o último diretório de trabalho para o arquivo especificado"
msgid "<file>"
-msgstr ""
+msgstr "<file>"
msgid "Enables subshell support (default)"
-msgstr "Habilita suporte à sub interpretadores de comandos (padrão)"
+msgstr "Ativa o suporte ao sub interpretador de comandos (padrão)"
msgid "Disables subshell support"
-msgstr "Desabilita suporte à sub interpretadores de comandos"
+msgstr "Desativa o suporte ao sub interpretador de comandos"
msgid "Log ftp dialog to specified file"
-msgstr "Acessar diálogo FTP para um arquivo específico"
-
-msgid "Set debug level"
-msgstr "Definir nível de depuração"
-
-msgid "<integer>"
-msgstr ""
+msgstr "Acessar a caixa de diálogo do FTP para o arquivo especificado"
msgid "Launches the file viewer on a file"
-msgstr "Lança o visualizador de arquivos"
+msgstr "Inicia o visualizador de arquivos com um arquivo"
msgid "Edit files"
msgstr "Editar arquivos"
msgid "<file> ..."
-msgstr ""
+msgstr "<file> ..."
msgid "Forces xterm features"
-msgstr "Força recursos do xterm"
+msgstr "Força os recursos do xterm"
msgid "Disable X11 support"
-msgstr "Desabilitar suporte ao X11"
+msgstr "Desativar o suporte ao X11"
msgid "Tries to use an old highlight mouse tracking"
-msgstr ""
+msgstr "Tenta utilizar um rastreamento de seleção de um rato/mouse antigo"
msgid "Disable mouse support in text version"
-msgstr "Desabilita suporte à mouse em modo texto"
+msgstr "Desativa o suporte ao rato/mouse para o modo texto"
msgid "Tries to use termcap instead of terminfo"
-msgstr "tenta utilizar termcap ao invés de terminfo"
+msgstr "Tenta utilizar o termcap ao invés do terminfo"
msgid "To run on slow terminals"
msgstr "Para execução em terminais lentos"
@@ -733,28 +715,30 @@
msgstr "Utilizar caracteres de traço para desenhar"
msgid "Resets soft keys on HP terminals"
-msgstr "Reinicializa teclas em terminais HP"
+msgstr "Redefinir as teclas programáveis nos terminais da HP"
msgid "Load definitions of key bindings from specified file"
-msgstr "Carregar definições de vínculo de teclas do arquivo especificado"
+msgstr "Carregar as definições de vínculos das teclas do arquivo especificado"
msgid "Don't load definitions of key bindings from file, use defaults"
msgstr ""
+"Não carregar as definições de vínculos das teclas do arquivo, utilize os "
+"padrões"
msgid "Requests to run in black and white"
-msgstr "Requer execução em preto e branco"
+msgstr "Solicitação para execução em preto e branco"
msgid "Request to run in color mode"
-msgstr "Solicita para ser executado em cores"
+msgstr "Solicitação para execução em cores"
msgid "Specifies a color configuration"
msgstr "Especifica uma configuração de cores"
msgid "<string>"
-msgstr ""
+msgstr "<string>"
msgid "Show mc with specified skin"
-msgstr "Exibir mc com o tema especificado"
+msgstr "Exibir o Midnight Commander com o tema especificado"
#. TRANSLATORS: don't translate keywords
msgid ""
@@ -777,6 +761,25 @@
" Viewer: viewnormal,viewbold, viewunderline, viewselected\n"
" Help: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
msgstr ""
+"--colors KEYWORD={FORE},{BACK},{ATTR}:KEYWORD2=...\n"
+"\n"
+"{FORE}, {BACK} e {ATTR} podem ser omitidos e o padrão será utilizado\n"
+"\n"
+" Palavras-chave:\n"
+" Global: errors, disabled, reverse, gauge, header\n"
+" input, inputmark, inputunchanged, commandlinemark\n"
+" bbarhotkey, bbarbutton, statusbar\n"
+" Exibição de arquivo: normal, selected, marked, markselect\n"
+" Caixas de diálogo: dnormal, dfocus, dhotnormal, dhotfocus, "
+"errdhotnormal,\n"
+" errdhotfocus\n"
+" Menus: menunormal, menuhot, menusel, menuhotsel, menuinactive\n"
+" Caixas de diálogo dos menus: pmenunormal, pmenusel, pmenutitle\n"
+" Editor: editnormal, editbold, editmarked, editwhitespace,\n"
+" editlinestate, editbg, editframe, editframeactive\n"
+" editframedrag\n"
+" Visualizador: viewnormal,viewbold, viewunderline, viewselected\n"
+" Ajuda: helpnormal, helpitalic, helpbold, helplink, helpslink\n"
#. TRANSLATORS: don't translate color names and attributes
msgid ""
@@ -791,99 +794,118 @@
"Attributes:\n"
" bold, italic, underline, reverse, blink; append more with '+'\n"
msgstr ""
+"Cores Padrão:\n"
+" black, gray, red, brightred, green, brightgreen, brown,\n"
+" yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
+" brightcyan, lightgray e white\n"
+"\n"
+"A cores disponíveis quando ativado em 256 cores são:\n"
+" color16 a color255 ou rgb000 a rgb555 e gray0 a gray23\n"
+"\n"
+"Atributos:\n"
+" bold, italic, underline, reverse, blink; anexar mais opções com um sinal "
+"de '+'\n"
msgid "Color options"
msgstr "Opções de cores"
msgid "[+lineno] file1[:lineno] [file2[:lineno]...]"
-msgstr ""
+msgstr "[+linha no] arquivo 1 [:linha no] [arquivo 2[:linha no]...]"
msgid "file"
msgstr "arquivo"
msgid "file1 file2"
-msgstr ""
+msgstr "arquivo 1 arquivo 2"
msgid "[this_dir] [other_panel_dir]"
-msgstr "[esse_dir] [outro_painel_dir]"
+msgstr "[este_diretório] [outro_painel_do_diretório]"
msgid ""
"\n"
"Please send any bug reports (including the output of 'mc -V')\n"
"as tickets at www.midnight-commander.org\n"
msgstr ""
+"\n"
+"Se você identificar algum erro ou falha no Midnight Commander,\n"
+"por favor, nos envie o resultado do comando 'mc -V' em um\n"
+"emulador de terminal para a nossa página eletrônica\n"
+"www.midnight-commander.org.\n"
#, c-format
msgid "GNU Midnight Commander %s\n"
-msgstr "GNU Midnight Commander %s\n"
+msgstr "Midnight Commander do GNU %s\n"
msgid "Main options"
msgstr "Opções principais"
msgid "Terminal options"
-msgstr "Opções do Terminal"
+msgstr "Opções do terminal"
msgid "Arguments parse error!"
-msgstr ""
+msgstr "Ocorreu um erro na análise dos argumentos!"
msgid "No arguments given to the viewer."
-msgstr "Nenhum argumento passado para o visualizador"
+msgstr "Nenhum argumento foi passado para o visualizador"
msgid "Two files are required to envoke the diffviewer."
-msgstr "Dois arquivos são requeridos para evocar o diffviewer."
+msgstr ""
+"Dois arquivos são necessários para invocar o visualizador de diferenças "
+"diffviewer."
msgid "Background protocol error"
-msgstr "Erro no protocolo de plano de fundo"
+msgstr "Ocorreu um erro no protocolo que está sendo executado em segundo plano"
msgid "Reading failed"
-msgstr "Falhou a leitura"
+msgstr "Ocorreu uma falha na leitura"
msgid "Background process error"
-msgstr "Erro no processo de plano de fundo"
+msgstr "Ocorreu um erro no processo que está sendo executado em segundo plano"
msgid "Unknown error in child"
-msgstr "Erro desconhecido no child"
+msgstr "Ocorreu um erro desconhecido no child"
msgid "Child died unexpectedly"
-msgstr "child terminou inesperadamente"
+msgstr "O child foi finalizado inesperadamente"
msgid ""
"Background process sent us a request for more arguments\n"
"than we can handle."
msgstr ""
-"Processo de plano de fundo nos enviou um requisição por\n"
-"mais argumentos do que podemos lidar."
+"O processo que está sendo executado em segundo plano\n"
+"nos enviou um requisição por mais argumentos do que\n"
+"podemos lidar."
msgid "&Dismiss"
msgstr "&Dispensar"
msgid "Enter search string:"
-msgstr "Insira a string de pesquisa:"
+msgstr "Insira o termo da pesquisa:"
msgid "Cas&e sensitive"
-msgstr "Cas&e sensitive"
+msgstr "Dif&erenciar as letras maiúsculas das minúsculas"
msgid "&Backwards"
msgstr "&Para trás"
msgid "&Whole words"
-msgstr "Palavras inteiras"
+msgstr "Pala&vras inteiras"
msgid "&All charsets"
-msgstr "Todos os ch&arsets"
+msgstr "&Todos os caracteres"
msgid "Search"
-msgstr "Procurar"
+msgstr "Pesquisar"
msgid "Search is disabled"
-msgstr "Pesquisa está desabilitada"
+msgstr "A pesquisa está desativada"
#, c-format
msgid ""
"Cannot create temporary diff file\n"
"%s"
msgstr ""
-"Não foi possível criar arquivo diff temporário\n"
+"Não foi possível criar o arquivo diff temporário\n"
"%s"
#, c-format
@@ -892,7 +914,7 @@
"%s%s\n"
"%s"
msgstr ""
-"Não é possível criar arquivo backup\n"
+"Não é possível criar o arquivo de segurança\n"
"%s%s\n"
"%s"
@@ -901,44 +923,44 @@
"Cannot create temporary merge file\n"
"%s"
msgstr ""
-"Não foi possível criar arquivo merge temporário\n"
+"Não é possível criar o arquivo de mesclagem temporário\n"
"%s"
msgid "&Fastest (Assume large files)"
-msgstr ""
+msgstr "&Mais rápido (considere arquivos grandes)"
msgid "&Minimal (Find a smaller set of change)"
-msgstr "&Mínimo (Encontar o menor conjunto de mudança)"
+msgstr "&Mínimo (Encontra o menor conjunto de alterações)"
msgid "Diff algorithm"
-msgstr "Algoritmo do Diff"
+msgstr "Algoritmo do diff"
msgid "Diff extra options"
msgstr "Opções extras do diff"
msgid "&Ignore case"
-msgstr "&Ignorar case"
+msgstr "&Ignorar o case"
msgid "Ignore tab &expansion"
-msgstr "Ignorar tab &expansion"
+msgstr "Ignorar a aba de &expansão"
msgid "Ignore &space change"
-msgstr "Ignorar &space change"
+msgstr "Ignorar a alteração do e&spaço"
msgid "Ignore all &whitespace"
-msgstr "Ignorar todos os espaços em branco"
+msgstr "Ignorar todos os espaços em &branco"
msgid "Strip &trailing carriage return"
-msgstr ""
+msgstr "Descartar a &quebra de linha no final"
msgid "Diff Options"
-msgstr "Opções do Diff"
+msgstr "Opções do diff"
msgid "Edit"
msgstr "Editar"
msgid "Edit is disabled"
-msgstr "Edição está desabilitada"
+msgstr "A edição está desativada"
msgid "Goto line (left)"
msgstr "Ir para linha (esquerda)"
@@ -947,7 +969,7 @@
msgstr "Ir para linha (direita)"
msgid "Enter line:"
-msgstr "Insira linha:"
+msgstr "Inserir a linha:"
msgid "ButtonBar|Help"
msgstr "ButtonBar|Ajuda"
@@ -962,7 +984,7 @@
msgstr "ButtonBar|Mesclar"
msgid "ButtonBar|Search"
-msgstr "ButtonBar|Pesquisa"
+msgstr "ButtonBar|Pesquisar"
msgid "ButtonBar|Options"
msgstr "ButtonBar|Opções"
@@ -974,12 +996,14 @@
msgstr "Sair"
msgid "File(s) was modified. Save with exit?"
-msgstr "Arquivo(s) foram modificados. Salvar ao sair?"
+msgstr "O(s) arquivo(s) foi(ram) modificado(s). Você quer salvar e sair?"
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file(s)?"
msgstr ""
+"O Midnight Commander está sendo desligado. Você quer salvar o(s) arquivo(s) "
+"modificado(s)?"
msgid "Diff:"
msgstr "Diff:"
@@ -993,21 +1017,14 @@
"Cannot stat \"%s\"\n"
"%s"
msgstr ""
+"Não é possível efetuar o estado \"%s\"\n"
+"%s"
msgid "Diff viewer: invalid mode"
-msgstr "Diff viewer: modo inválido"
+msgstr "Visualizador do diff: o modo não é válido"
msgid "Two files are needed to compare"
-msgstr "Dois arquivos são necessários para comparar"
-
-msgid "Choose syntax highlighting"
-msgstr "Escolha sintaxe de realce"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Recarregar Sintaxe Atual >"
+msgstr "São necessários dois arquivos para fazer a comparação"
#, c-format
msgid "Loading: %3d%%"
@@ -1021,11 +1038,11 @@
msgstr "Não foi possível abrir %s para leitura"
msgid "Load file"
-msgstr "Abrir arquivo"
+msgstr "Abrir o arquivo"
#, c-format
msgid "Error reading %s"
-msgstr "Erro na leitura de %s"
+msgstr "Ocorreu um erro de leitura de %s"
#, c-format
msgid "Cannot get size/permissions for %s"
@@ -1041,164 +1058,132 @@
"Open it anyway?"
msgstr ""
"O arquivo \"%s\" é muito grande.\n"
-"Abrir mesmo assim?"
+"Você quer abri-lo mesmo assim?"
+
+msgid "Warning"
+msgstr "Aviso"
#, c-format
msgid "Error reading from pipe: %s"
-msgstr "Erro na leitura a partir do pipe: %s"
+msgstr "Ocorreu um erro de leitura a partir do canal: %s"
#, c-format
msgid "Cannot open pipe for reading: %s"
-msgstr "Não foi possível abrir pipe para leitura: %s"
-
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Procurando %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Examinando %s"
+msgstr "Não foi possível abrir o canal para leitura: %s"
msgid "File has hard-links. Detach before saving?"
-msgstr "Arquivo tem hard-links. Desatar antes de salvar?"
+msgstr ""
+"O arquivo tem vínculos físicos (hard-links). Você quer desvincular antes de "
+"salvar?"
msgid "The file has been modified in the meantime. Save anyway?"
-msgstr "O arquivo foi modificado enquanto usava. Salvar mesmo assim?"
+msgstr ""
+"O arquivo foi modificado enquanto estava sendo utilizado. Você quer salvar "
+"mesmo assim?"
#, c-format
msgid "Error writing to pipe: %s"
-msgstr "Erro na escrita para pipe: %s"
+msgstr "Ocorreu um erro de escrita para o canal: %s"
#, c-format
msgid "Cannot open pipe for writing: %s"
-msgstr "Não foi possível abrir pipe para escrita: %s"
+msgstr "Não foi possível abrir o canal para a escrita: %s"
#, c-format
msgid "Cannot open file for writing: %s"
-msgstr "Não foi possível abrir arquivo para escrita: %s"
+msgstr "Não foi possível abrir arquivo para a escrita: %s"
msgid "The file you are saving does not end with a newline."
-msgstr "O arquivo que você está salvando não termina com um newline."
+msgstr "O arquivo que você está salvando não termina com uma nova linha."
msgid "C&ontinue"
msgstr "C&ontinuar"
msgid "&Do not change"
-msgstr ""
+msgstr "&Não alterar"
msgid "&Unix format (LF)"
-msgstr "Formato &Unix (LF)"
+msgstr "Formato do &Unix (LF)"
msgid "&Windows/DOS format (CR LF)"
-msgstr "Formato &Windows/DOS (CR LF)"
+msgstr "Formato do &Windows/DOS (CR LF)"
msgid "&Macintosh format (CR)"
-msgstr "Formato &Macintosh (CR)"
+msgstr "Formato do &Macintosh (CR)"
msgid "Enter file name:"
msgstr "Insira nome do arquivo:"
msgid "Change line breaks to:"
-msgstr "Alterar término de linhas para:"
+msgstr "Altere o término das linhas ou as quebras de linha para:"
msgid "Save As"
msgstr "Salvar Como"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
-msgstr "&Quick save"
+msgstr "&Salvamento rápido"
msgid "&Safe save"
-msgstr "&Safe save"
+msgstr "&Salvamento seguro"
msgid "&Do backups with following extension:"
-msgstr "Faça backups com a seguinte extensão:"
+msgstr "&Faça cópias de segurança com a seguinte extensão:"
msgid "Check &POSIX new line"
-msgstr "Verificar nova linha &POSIX"
+msgstr "Verificar a nova linha &POSIX"
msgid "Edit Save Mode"
-msgstr "Editar Modo de Salvar"
+msgstr "Editar o Modo de Salvar"
msgid "Save as"
msgstr "Salvar como"
msgid "Cannot save: destination is not a regular file"
-msgstr ""
+msgstr "Não foi possível salvar: o destino não é um arquivo normal"
msgid "A file already exists with this name"
-msgstr "Um arquivo já existe com este nome de arquivo"
+msgstr "Já existe um arquivo com este nome de arquivo"
msgid "&Overwrite"
msgstr "&Sobrescrever"
msgid "Cannot save file"
-msgstr "Não foi possível salvar arquivo"
-
-msgid "Delete macro"
-msgstr "Deletar macro"
-
-msgid "Press macro hotkey:"
-msgstr "Pressione tecla de atalho da macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro não deletada"
-
-msgid "Save macro"
-msgstr "Salvar macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Pressione nova tecla de atalho da macro:"
-
-msgid "Repeat last commands"
-msgstr "Repetir últimos comandos"
-
-msgid "Repeat times:"
-msgstr "Número de repetições:"
+msgstr "Não foi possível salvar o arquivo"
#, c-format
msgid "Confirm save file: \"%s\""
-msgstr "Confirmar salvamento de arquivo: \"%s\""
+msgstr "Confirmar o salvamento do arquivo: \"%s\""
msgid "Save file"
-msgstr "Salvar arquivo"
+msgstr "Salvar o arquivo"
msgid "&Save"
-msgstr "&Gravar"
+msgstr "&Salvar"
msgid "Load"
msgstr "Carregar"
msgid "Syntax file edit"
-msgstr "Edição de arquivo de sintaxe"
+msgstr "Editar a sintaxe do arquivo"
msgid "Which syntax file you want to edit?"
-msgstr "Qual arquivo de sintaxe você deseja editar?"
+msgstr "Qual é a sintaxe do arquivo que você quer editar?"
msgid "&User"
msgstr "&Usuário"
msgid "&System wide"
-msgstr ""
+msgstr "&Sistema geral"
msgid "Menu edit"
msgstr "Menu Editar"
msgid "Which menu file do you want to edit?"
-msgstr "Qual arquivo de menu você deseja editar?"
+msgstr "Qual é o arquivo do menu você quer editar?"
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Substituir"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld substituições feitas"
-
msgid "[NoName]"
msgstr "[SemNome]"
@@ -1207,6 +1192,8 @@
"File %s was modified.\n"
"Save before close?"
msgstr ""
+"O arquivo %s foi modificado.\n"
+"Você quer salvá-lo antes de fechar o arquivo?"
msgid "Close file"
msgstr "Fechar arquivo"
@@ -1216,8 +1203,8 @@
"Midnight Commander is being shut down.\n"
"Save modified file %s?"
msgstr ""
-"Midnight Commander está fechando.\n"
-"Salvar a modificação no arquivo %s?"
+"O Midnight Commander está fechando.\n"
+"Você quer salvar a modificação feita no arquivo %s?"
msgid "This function is not implemented"
msgstr "Esta função não foi implementada"
@@ -1226,60 +1213,61 @@
msgstr "Copiar para a área de transferência"
msgid "Unable to save to file"
-msgstr "Não foi possível salvar para arquivo"
+msgstr "Não foi possível salvar no arquivo"
msgid "Cut to clipboard"
msgstr "Recortar para área de transferência"
msgid "Goto line"
-msgstr "Ir para linha"
+msgstr "Ir para a linha"
msgid "Save block"
-msgstr "Salvar bloco"
+msgstr "Salvar o bloco"
msgid "Insert file"
msgstr "Inserir linha"
msgid "Cannot insert file"
-msgstr "Não foi possível inserir arquivo"
+msgstr "Não foi possível inserir o arquivo"
msgid "Sort block"
-msgstr "Ordenar bloco"
+msgstr "Ordenar o bloco"
msgid "You must first highlight a block of text"
msgstr "Você deve primeiro selecionar um bloco de texto"
msgid "Run sort"
-msgstr "Executar sort"
+msgstr "Executar a ordenação do bloco de texto"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Insira opções do sort (veja manpage) separadamente por espaços em branco:"
+"Insira as opções de ordenação (consulte a página sort(1) do manual) "
+"separadas por espaços em branco:"
msgid "Sort"
msgstr "Ordenar"
msgid "Cannot execute sort command"
-msgstr "Não foi possível executar comando sort"
+msgstr "Não foi possível executar o comando sort (ordenar)"
#, c-format
msgid "Sort returned non-zero: %s"
-msgstr "Sort retornou não-zero: %s"
+msgstr "O comando sort retornou diferente de zero: %s"
msgid "Paste output of external command"
-msgstr "Colar saída de comando externo"
+msgstr "Colar a saída do comando externo"
msgid "Enter shell command(s):"
-msgstr "Digite comando(s) de shell:"
+msgstr "Insira o(s) comando(s) do shell:"
msgid "External command"
msgstr "Comando externo"
msgid "Cannot execute command"
-msgstr "Nãi é possível executar comando"
+msgstr "Não foi possível executar o comando"
msgid "mail -s <subject> -c <cc> <to>"
-msgstr ""
+msgstr "mail -s <subject> -c <cc> <to>"
msgid "To"
msgstr "Para"
@@ -1288,13 +1276,13 @@
msgstr "Assunto"
msgid "Copies to"
-msgstr ""
+msgstr "Copia para"
msgid "Mail"
msgstr " Correio"
msgid "Insert literal"
-msgstr "Inserir literal"
+msgstr "Inserir literalmente"
msgid "Press any key:"
msgstr "Pressione qualquer tecla:"
@@ -1303,36 +1291,38 @@
"Current text was modified without a file save.\n"
"Continue discards these changes."
msgstr ""
+"O texto atual foi modificado sem salvar o arquivo.\n"
+"Você quer continuar e descartar estas alterações."
-msgid "In se&lection"
-msgstr "Na se&leção"
+msgid "Cancel"
+msgstr "Cancelar"
-msgid "&Find all"
-msgstr ""
+msgid "Collect completions"
+msgstr "Coletar as finalizações"
-msgid "Enter replacement string:"
-msgstr "Informe a string de substituição:"
+msgid "NoName"
+msgstr "SemNome"
-msgid "Replace with:"
-msgstr "Substituir por:"
+msgid "Save macro"
+msgstr "Salvar o macro"
-msgid "&Replace"
-msgstr "&Substituir"
+msgid "Press the macro's new hotkey:"
+msgstr "Pressione a nova tecla de atalho do macro:"
-msgid "A&ll"
-msgstr " Tod&os "
+msgid "Delete macro"
+msgstr "Excluir o macro"
-msgid "&Skip"
-msgstr "&Ignorar"
+msgid "Press macro hotkey:"
+msgstr "Pressione a tecla de atalho do macro:"
-msgid "Confirm replace"
-msgstr "Confirmar substituição"
+msgid "Macro not deleted"
+msgstr "O macro não foi excluído"
-msgid "Cancel"
-msgstr "Cancelar"
+msgid "Repeat last commands"
+msgstr "Repetir os últimos comandos"
-msgid "NoName"
-msgstr "SemNome"
+msgid "Repeat times:"
+msgstr "Número de repetições:"
msgid "&Open file..."
msgstr "Abrir arquivo..."
@@ -1344,70 +1334,70 @@
msgstr "Fechar"
msgid "&History..."
-msgstr ""
+msgstr "&Histórico..."
msgid "Save &as..."
msgstr "Salvar &como..."
msgid "&Insert file..."
-msgstr "&Inserir arquivo..."
+msgstr "&Inserir um arquivo..."
msgid "Cop&y to file..."
-msgstr "Cop&yar para arquivo..."
+msgstr "Cop&yar para o arquivo..."
msgid "&User menu..."
-msgstr ""
+msgstr "Menu do &usuário..."
msgid "A&bout..."
msgstr "S&obre"
msgid "&Quit"
-msgstr "&Encerrar"
+msgstr "Sai&r"
msgid "&Undo"
-msgstr ""
+msgstr "Desfa&zer"
msgid "&Redo"
-msgstr ""
+msgstr "&Refazer"
msgid "&Toggle ins/overw"
-msgstr ""
+msgstr "Al&ternar entre inserir/substituir"
msgid "To&ggle mark"
-msgstr ""
+msgstr "A<ernar entre ligado/desligado"
msgid "&Mark columns"
-msgstr ""
+msgstr "&Marcar colunas"
msgid "Mark &all"
-msgstr "Marcar &todos"
+msgstr "M&arcar todos"
msgid "Unmar&k"
msgstr "Descmar&car"
msgid "Cop&y"
-msgstr "Cop&yar"
+msgstr "Cop&iar"
msgid "Mo&ve"
msgstr "Mo&ver"
msgid "&Delete"
-msgstr "&Apagar"
+msgstr "&Excluir"
msgid "Co&py to clipfile"
-msgstr "Co&piar para clipfile"
+msgstr "&Copiar para a área de transferência"
msgid "&Cut to clipfile"
-msgstr ""
+msgstr "&Recortar para a área de transferência"
msgid "Pa&ste from clipfile"
-msgstr ""
+msgstr "Co&lar para a área de transferência"
msgid "&Beginning"
-msgstr ""
+msgstr "&Início"
msgid "&End"
-msgstr ""
+msgstr "&Fim"
msgid "&Search..."
msgstr "&Pesquisar..."
@@ -1419,139 +1409,139 @@
msgstr "&Substituir..."
msgid "&Toggle bookmark"
-msgstr ""
+msgstr "&Alterar o favorito"
msgid "&Next bookmark"
-msgstr ""
+msgstr "Próxi&mo favorito"
msgid "&Prev bookmark"
-msgstr ""
+msgstr "Favorito a&nterior"
msgid "&Flush bookmarks"
-msgstr ""
+msgstr "L&impar os favoritos"
msgid "&Go to line..."
-msgstr ""
+msgstr "Ir p&ara a linha..."
msgid "&Toggle line state"
-msgstr ""
+msgstr "Al&terar o estado da linha"
msgid "Go to matching &bracket"
-msgstr ""
+msgstr "Ir para o &parêntese correspondente"
msgid "Toggle s&yntax highlighting"
-msgstr ""
+msgstr "Alterar a seleção da sinta&xe"
msgid "&Find declaration"
-msgstr ""
+msgstr "&Pesquisar o texto declarado"
msgid "Back from &declaration"
-msgstr ""
+msgstr "Voltar o texto &declarado"
msgid "For&ward to declaration"
-msgstr ""
+msgstr "Encaminhar o texto &declarado"
msgid "Encod&ing..."
msgstr "Cod&ificando..."
msgid "&Refresh screen"
-msgstr ""
+msgstr "&Recarregar a tela"
msgid "&Start/Stop record macro"
-msgstr ""
+msgstr "&Iniciar/Parar a gravação do macro"
msgid "Delete macr&o..."
-msgstr "Deletar macr&o..."
+msgstr "Excluir o macr&o..."
msgid "Record/Repeat &actions"
-msgstr "Gravar/Repetir &actions"
+msgstr "Gravar/Repetir as &ações"
msgid "S&pell check"
-msgstr ""
+msgstr "Verificar a or&tográfica"
msgid "C&heck word"
-msgstr ""
+msgstr "&Verificar a palavra"
msgid "Change spelling &language..."
-msgstr ""
+msgstr "A<erar o idioma..."
msgid "&Mail..."
-msgstr ""
+msgstr "&Correspondência..."
msgid "Insert &literal..."
-msgstr ""
+msgstr "Inserir &literal..."
msgid "Insert &date/time"
-msgstr ""
+msgstr "Inserir a &data/hora"
msgid "&Format paragraph"
-msgstr ""
+msgstr "&Formatar o parágrafo"
msgid "&Sort..."
-msgstr ""
+msgstr "O&rdenar..."
msgid "&Paste output of..."
-msgstr ""
+msgstr "Co&lar a saída de..."
msgid "&External formatter"
-msgstr ""
+msgstr "Formatador &externo"
msgid "&Move"
msgstr "&Mover"
msgid "&Resize"
-msgstr ""
+msgstr "&Redimensionar"
msgid "&Toggle fullscreen"
-msgstr ""
+msgstr "Al&terar para a tela inteira"
msgid "&Next"
-msgstr ""
+msgstr "Pró&ximo"
msgid "&Previous"
-msgstr ""
+msgstr "Ant&erior"
msgid "&List..."
-msgstr ""
+msgstr "&Listar..."
msgid "&General..."
-msgstr ""
+msgstr "&Geral..."
msgid "Save &mode..."
-msgstr ""
+msgstr "Salvar o &modo..."
msgid "Learn &keys..."
-msgstr ""
+msgstr "Aprender as te&clas..."
msgid "Syntax &highlighting..."
-msgstr "Realçar sinta&xe"
+msgstr "Selecionar a sinta&xe..."
msgid "S&yntax file"
-msgstr ""
+msgstr "Arquivo da s&intaxe"
msgid "&Menu file"
-msgstr ""
+msgstr "Arquivo do &menu"
msgid "&Save setup"
-msgstr "&Gravar configuração"
+msgstr "&Salvar as configurações"
msgid "&File"
msgstr "&Arquivo"
msgid "&Edit"
-msgstr ""
+msgstr "&Editar"
msgid "&Search"
-msgstr ""
+msgstr "&Pesquisar"
msgid "&Command"
-msgstr ""
+msgstr "&Comando"
msgid "For&mat"
-msgstr ""
+msgstr "For&matar"
msgid "&Window"
-msgstr ""
+msgstr "&Janela"
msgid "&Options"
msgstr "&Opções"
@@ -1560,75 +1550,116 @@
msgstr "&Nenhum"
msgid "&Dynamic paragraphing"
-msgstr ""
+msgstr "Parágrafos &dinâmicos"
msgid "Type &writer wrap"
-msgstr ""
+msgstr "Quebra da &máquina de escrever"
msgid "Wrap mode"
-msgstr "Modo Empacotado"
+msgstr "Modo de quebra"
msgid "Tabulation"
msgstr "Tabulação"
msgid "&Fake half tabs"
-msgstr "Meias tabulações &falsas"
+msgstr "&Fingir meias tabulações"
msgid "&Backspace through tabs"
-msgstr "&Retorna através das tabulações"
+msgstr "&Voltar um espaço através das tabulações"
msgid "Fill tabs with &spaces"
-msgstr "preencher tabulação com e&Spaços"
+msgstr "Preencher a tabulação com e&spaços"
msgid "Tab spacing:"
-msgstr "Espaçamento de Tab"
+msgstr "Espaçamento de Tab:"
msgid "Other options"
msgstr "Outras opções"
msgid "&Return does autoindent"
-msgstr "&Return faz auto identação"
+msgstr "Ente&r faz o recuo automático"
msgid "Confir&m before saving"
-msgstr "confir&Mar antes de Salvar"
+msgstr "Confir&mar antes de salvar"
msgid "Save file &position"
-msgstr ""
+msgstr "Salvar a &posição do arquivo"
msgid "&Visible trailing spaces"
-msgstr ""
+msgstr "&Espaços à direita visíveis"
msgid "Visible &tabs"
-msgstr ""
+msgstr "&Guias visíveis"
msgid "Synta&x highlighting"
-msgstr "Ressaltar sinta&xe"
+msgstr "Selecionar a sinta&xe"
msgid "C&ursor after inserted block"
-msgstr ""
+msgstr "Cursor após o bloco inserido"
msgid "Pers&istent selection"
-msgstr ""
+msgstr "Seleção pers&istente"
msgid "Cursor be&yond end of line"
-msgstr ""
+msgstr "Cursor para além do &fim da linha"
msgid "&Group undo"
-msgstr "Desfazer &grupo"
+msgstr "Desfazer o &grupo"
msgid "Word wrap line length:"
-msgstr ""
+msgstr "Comprimento da linha de quebra de linha:"
msgid "Editor options"
msgstr "Opções do editor"
+msgid "In se&lection"
+msgstr "Na se&leção"
+
+msgid "&Find all"
+msgstr "&Pesquisar todos"
+
+msgid "Enter replacement string:"
+msgstr "Informe o texto a ser substituído:"
+
+msgid "Replace"
+msgstr "Substituir"
+
+msgid "Replace with:"
+msgstr "Substituir por:"
+
+msgid "&Replace"
+msgstr "&Substituir"
+
+msgid "A&ll"
+msgstr " Tod&os "
+
+msgid "&Skip"
+msgstr "&Ignorar"
+
+msgid "Confirm replace"
+msgstr "Confirmar a substituição"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Procurando %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Examinando %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld substituições foram realizadas"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
+"Um editor de texto amigável\n"
+"escrito para o Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr ""
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Direitos de Autor (c) 1996-2022 a Fundação Free Software Foundation"
msgid "About"
msgstr "Sobre"
@@ -1652,28 +1683,28 @@
msgstr "ButtonBar|Mover"
msgid "ButtonBar|Delete"
-msgstr "ButtonBar|Deletar"
+msgstr "ButtonBar|Excluir"
msgid "ButtonBar|PullDn"
-msgstr ""
+msgstr "ButtonBar|Puxar para baixo"
msgid "Breton"
-msgstr ""
+msgstr "Bretão"
msgid "Czech"
-msgstr ""
+msgstr "Checo"
msgid "Welsh"
-msgstr ""
+msgstr "Galês"
msgid "Danish"
-msgstr ""
+msgstr "Dinamarquês"
msgid "German"
msgstr "Alemão"
msgid "Greek"
-msgstr ""
+msgstr "Greco"
msgid "English"
msgstr "Inglês"
@@ -1688,13 +1719,13 @@
msgstr "Inglês Americano"
msgid "Esperanto"
-msgstr ""
+msgstr "Esperanto"
msgid "Spanish"
msgstr "Espanhol"
msgid "Faroese"
-msgstr ""
+msgstr "Faroesa"
msgid "French"
msgstr "Francês"
@@ -1703,59 +1734,68 @@
msgstr "Italiano"
msgid "Dutch"
-msgstr ""
+msgstr "Holandês"
msgid "Norwegian"
-msgstr ""
+msgstr "Norueguês"
msgid "Polish"
-msgstr ""
+msgstr "Polonês"
msgid "Portuguese"
msgstr "Português"
msgid "Romanian"
-msgstr ""
+msgstr "Romeno"
msgid "Russian"
-msgstr ""
+msgstr "Russo"
msgid "Slovak"
-msgstr ""
+msgstr "Eslovaco"
msgid "Swedish"
-msgstr ""
+msgstr "Sueco"
msgid "Ukrainian"
-msgstr ""
+msgstr "Ucraniano"
msgid "&Add word"
msgstr "&Adicionar palavra"
msgid "Language"
-msgstr "Linguagem"
+msgstr "Idioma"
msgid "Misspelled"
-msgstr ""
+msgstr "Com erros ortográficos"
msgid "Check word"
-msgstr "Verificar palavra"
+msgstr "Verificar a palavra"
msgid "Suggest"
msgstr "Sugestão"
msgid "Select language"
-msgstr "Selecionar linguagem"
+msgstr "Selecionar idioma"
+
+msgid "Choose syntax highlighting"
+msgstr "Escolha o tipo de seleção da sintaxe"
+
+msgid "< Auto >"
+msgstr "< Automático >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Recarregar a Sintaxe Atual >"
msgid "Load syntax file"
-msgstr "Carregar sintaxe de arquivo"
+msgstr "Carregar a sintaxe do arquivo"
#, c-format
msgid ""
"Cannot open file %s\n"
"%s"
msgstr ""
-"Não foi possível abrir arquivo %s\n"
+"Não foi possível abrir o arquivo %s\n"
"%s"
#, c-format
@@ -1768,25 +1808,28 @@
"deleted your working directory, or given yourself\n"
"extra access permissions with the \"su\" command?"
msgstr ""
-"O Commander não pode alterar o diretório que a subshell\n"
-"afirma que você está em. Talvez você deletou seu\n"
-"diretório de trabalho, ou deu a você mesmo permissões\n"
-"de acesso extras com o comando \"su\"?"
+"O Commander não pode alterar o diretório que\n"
+"o subshell afirma que você está. Talvez você\n"
+"excluído o seu diretório de trabalho, ou deu a\n"
+"você mesmo as permissões extras de acesso\n"
+"com o comando \"su\"?"
#, c-format
msgid "Cannot fetch a local copy of %s"
-msgstr "Não foi possível adquirir uma cópia local de %s"
+msgstr "Não foi possível obter uma cópia local de %s"
msgid "The shell is already running a command"
-msgstr "A shell já está executando um comando"
+msgstr "O shell já está executando um comando"
msgid ""
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Não é um console xterm ou GNU/Linux;\n"
+"o subshell não pode ser alternado."
msgid "Type 'exit' to return to the Midnight Commander"
-msgstr ""
+msgstr "Insira o comando 'exit' para retornar ao Midnight Commander"
msgid "Set &all"
msgstr "Configurar &tudo"
@@ -1798,57 +1841,57 @@
msgstr "&Configurar"
msgid "owner"
-msgstr "Dono"
+msgstr "Proprietário"
msgid "group"
-msgstr "grupo"
+msgstr "Grupo"
msgid "other"
-msgstr "outro"
+msgstr "Outro"
msgid "Flag"
msgstr "Parâmetro"
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Permissões (octal): %o"
msgid "Chown advanced command"
-msgstr "Comando avançado de chown"
+msgstr "Comando avançado do chown"
#, c-format
msgid ""
"Cannot chmod \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar chmod \"%s\"\n"
+"Não foi possível executar o chmod \"%s\"\n"
"%s"
msgid "&Ignore"
-msgstr ""
+msgstr "&Ignorar"
msgid "Ignore &all"
-msgstr ""
+msgstr "Ignor&ar tudo"
msgid "&Retry"
-msgstr "&Tentar Novamente"
+msgstr "&Tentar novamente"
#, c-format
msgid ""
"Cannot chown \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar chown \"%s\"\n"
+"Não foi possível executar o chown \"%s\"\n"
"%s"
msgid "< Default >"
-msgstr ""
+msgstr "< Padrão >"
msgid "Skins"
-msgstr ""
+msgstr "Visual"
msgid "Other 8 bit"
-msgstr "Outro 8 bit"
+msgstr "Outros de 8 bit"
msgid "Running"
msgstr "Em execução"
@@ -1860,124 +1903,124 @@
msgstr "&Nunca"
msgid "On dum&b terminals"
-msgstr ""
+msgstr "Em terminais &burros"
msgid "Alwa&ys"
msgstr "Sem&pre"
msgid "File operations"
-msgstr ""
+msgstr "Operações no arquivo"
msgid "&Verbose operation"
-msgstr "Mostrar P&rogresso"
+msgstr "Exibir as informações de&talhadas"
msgid "Compute tota&ls"
-msgstr ""
+msgstr "Calcu&lar totais"
msgid "Classic pro&gressbar"
-msgstr ""
+msgstr "Barra de pro&gresso clássica"
msgid "Mkdi&r autoname"
-msgstr ""
+msgstr "Mkdi&r com nome automático"
msgid "&Preallocate space"
-msgstr ""
+msgstr "&Pré-alocar o espaço"
msgid "Esc key mode"
-msgstr ""
+msgstr "Modo da tecla Esc"
msgid "S&ingle press"
-msgstr ""
+msgstr "Um cl&ique"
msgid "Timeout:"
-msgstr ""
+msgstr "Tempo limite:"
msgid "Pause after run"
-msgstr ""
+msgstr "Pausar após executar"
msgid "Use internal edi&t"
-msgstr "Conteúdo:"
+msgstr "Utilizar a edição in&terna:"
msgid "Use internal vie&w"
-msgstr ""
+msgstr "Utilizar a visuali&zação interna"
msgid "A&sk new file name"
-msgstr ""
+msgstr "Per&guntar o novo nome do arquivo"
msgid "Auto m&enus"
-msgstr ""
+msgstr "M&enus automáticos"
msgid "&Drop down menus"
-msgstr "Menus &Suspensos"
+msgstr "Menus &suspensos"
msgid "S&hell patterns"
-msgstr ""
+msgstr "&Padrões do shell"
msgid "Co&mplete: show all"
-msgstr ""
+msgstr "Co&mpletar: exibir tudo"
msgid "Rotating d&ash"
-msgstr ""
+msgstr "Traço gir&atório"
msgid "Cd follows lin&ks"
-msgstr "Cd segue lin&ks"
+msgstr "O comando cd segue os lin&ks"
msgid "Sa&fe delete"
-msgstr ""
+msgstr "E&xcluir com segurança"
msgid "Safe overwrite"
-msgstr ""
+msgstr "Substituir com segurança"
msgid "A&uto save setup"
-msgstr ""
+msgstr "Config&urações de salvamento automático"
msgid "Configure options"
-msgstr "Configurar Opções"
+msgstr "Configurar as opções"
msgid "Skin:"
-msgstr "Skin:"
+msgstr "Visual:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Sombras"
msgid "Appearance"
msgstr "Aparência"
msgid "Case &insensitive"
-msgstr "Case &insensitive"
+msgstr "Não d&iferenciar maiúsculas de minúsculas"
msgid "Use panel sort mo&de"
-msgstr ""
+msgstr "Utilizar o mo&do de ordenação do painel"
msgid "Show mi&ni-status"
-msgstr ""
+msgstr "Exibir i&nformações resumidas"
msgid "Use SI si&ze units"
-msgstr ""
+msgstr "Utilizar as unidades de medida do SI"
msgid "Mi&x all files"
-msgstr ""
+msgstr "Misturar todos os arquivos"
msgid "Show &backup files"
-msgstr "Mostrar arquivos de &backup"
+msgstr "Exibir os arquivos da &cópia de segurança"
msgid "Show &hidden files"
-msgstr ""
+msgstr "Exibir os arquivos &ocultos"
msgid "&Fast dir reload"
-msgstr "Atualização &Rápida de Diretório"
+msgstr "&Recarregar o conteúdo do diretório"
msgid "Ma&rk moves down"
-msgstr ""
+msgstr "&Marcar e mover para baixo"
msgid "Re&verse files only"
-msgstr "Somente reverter arquivos"
+msgstr "Apenas re&verter os arquivos"
msgid "Simple s&wap"
-msgstr ""
+msgstr "Troca si&mples"
msgid "A&uto save panels setup"
-msgstr ""
+msgstr "Configurações de salvamento a&utomática dos painéis"
msgid "Navigation"
msgstr "Navegação"
@@ -1986,31 +2029,31 @@
msgstr "Movimentação similar ao L&ynx"
msgid "Pa&ge scrolling"
-msgstr ""
+msgstr "Deslocamento da pá&gina"
msgid "Center &scrolling"
-msgstr ""
+msgstr "De&slocamento central"
msgid "&Mouse page scrolling"
-msgstr ""
+msgstr "Desloca&mento da página com o rato/mouse"
msgid "File highlight"
-msgstr "Realce de arquivo"
+msgstr "Destaque de arquivos"
msgid "File &types"
-msgstr ""
+msgstr "&Tipos de arquivos"
msgid "&Permissions"
-msgstr ""
+msgstr "&Permissões"
msgid "Quick search"
msgstr "Pesquisa rápida"
msgid "Panel options"
-msgstr ""
+msgstr "Opções do painel"
msgid "Information"
-msgstr "Informação"
+msgstr "Informações"
msgid ""
"Using the fast reload option may not reflect the exact\n"
@@ -2018,15 +2061,21 @@
"manual reload of the directory. See the man page for\n"
"the details."
msgstr ""
+"Utilizando a opção para recarregar o conteúdo do\n"
+"diretório pode não refletir o exato conteúdo do\n"
+"diretório. Neste caso, você precisará fazer um\n"
+"recarregamento manual do conteúdo do diretório.\n"
+"Por favor, consulte a página do manual para obter\n"
+"mais informações."
msgid "&Full file list"
-msgstr "Lista &Completa"
+msgstr "Lista &completa dos arquivos"
msgid "&Brief file list:"
-msgstr ""
+msgstr "Lista &resumida dos arquivos:"
msgid "&Long file list"
-msgstr "Lista &Longa"
+msgstr "Lista &detalhada dos arquivos"
msgid "&User defined:"
msgstr "&Personalizada:"
@@ -2035,10 +2084,10 @@
msgstr "colunas"
msgid "User &mini status"
-msgstr ""
+msgstr "Exibir i&nformações resumidas do usuário"
msgid "Listing format"
-msgstr ""
+msgstr "Formato da lista"
msgid "Executable &first"
msgstr "Executáveis primeiro"
@@ -2054,28 +2103,28 @@
msgstr "Confirmação|E&xcluir"
msgid "Confirmation|O&verwrite"
-msgstr "Confirmação|Sobr&escrever"
+msgstr "Confirmação|Sobrescre&ver"
msgid "Confirmation|&Execute"
msgstr "Confirmação|&Executar"
msgid "Confirmation|E&xit"
-msgstr "Confirmação|S&air"
+msgstr "Confirmação|&Sair"
msgid "Confirmation|Di&rectory hotlist delete"
-msgstr ""
+msgstr "Confirmação|Excluir a lista de &atalhos do diretório"
msgid "Confirmation|&History cleanup"
-msgstr ""
+msgstr "Confirmação|&Limpar o histórico"
msgid "Confirmation"
msgstr "Confirmação"
msgid "&UTF-8 output"
-msgstr "&UTF-8 output"
+msgstr "Saída com o formato &UTF-8"
msgid "&Full 8 bits output"
-msgstr " Saída completa de 8 bits"
+msgstr "&Saída completa de 8 bits"
msgid "&ISO 8859-1"
msgstr "&ISO 8859-1"
@@ -2084,57 +2133,57 @@
msgstr "7 &bits"
msgid "F&ull 8 bits input"
-msgstr " Entrada completa de 8 bits "
+msgstr "&Entrada completa de 8 bits "
msgid "Display bits"
-msgstr ""
+msgstr "Exibir o bits"
msgid "Input / display codepage:"
-msgstr "Inserir / Exibir página de código:"
+msgstr "Inserir / Exibir a página de codificação:"
msgid "Directory tree"
msgstr "Árvore de diretórios"
msgid "Timeout for freeing VFSs (sec):"
-msgstr ""
+msgstr "Tempo limite para liberar o VFSs (seg):"
msgid "FTP anonymous password:"
-msgstr ""
+msgstr "Senha do FTP anônimo:"
msgid "FTP directory cache timeout (sec):"
-msgstr ""
+msgstr "Tempo limite de cache do diretório de FTP (seg):"
msgid "&Always use ftp proxy:"
-msgstr ""
+msgstr "&Sempre utilizar o proxy no FTP:"
msgid "&Use ~/.netrc"
-msgstr "&Usar ~/.netrc"
+msgstr "&Utilizar o ~/.netrc"
msgid "Use &passive mode"
-msgstr "Usar modo &passivo"
+msgstr "Utilizar o modo &passivo"
msgid "Use passive mode over pro&xy"
-msgstr ""
+msgstr "Utilizar o modo passivo sobre o pro&xy"
msgid "Virtual File System Setting"
-msgstr "Configurações de Virtual File System"
+msgstr "Configurações do Sistema de Arquivos Virtuais"
msgid "cd"
msgstr "cd"
msgid "Quick cd"
-msgstr " cd rápido "
+msgstr " Cd rápido "
msgid "Existing filename (filename symlink will point to):"
msgstr ""
-"Nome do arquivo existente (nome do arquivo para o qual a ligação irá "
-"apontar):"
+"Nome do arquivo existente (nome do arquivo para o qual o vínculo simbólico "
+"ou “symbolic link” irá apontar):"
msgid "Symbolic link filename:"
-msgstr "Nome do arquivo de ligação simbólica"
+msgstr "Nome do arquivo do vínculo simbólico"
msgid "Symbolic link"
-msgstr "Ligação Simbólica"
+msgstr "Vínculo simbólico"
msgid "&Stop"
msgstr "&Parar"
@@ -2146,176 +2195,171 @@
msgstr "&Finalizar"
msgid "Background jobs"
-msgstr ""
-
-#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Senha para \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domínio:"
-
-msgid "Username:"
-msgstr " Nome de usuário:"
-
-msgid "SMB authentication"
-msgstr ""
+msgstr "Trabalhos em segundo plano"
#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
msgstr ""
+"Não é possível o chdir para \"%s\"\n"
+"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Exclusão segura"
msgid "Undelete"
-msgstr ""
+msgstr "Desfazer a exclusão"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Atualizações síncronas"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Atualizações de diretório síncronas"
msgid "Immutable"
-msgstr ""
+msgstr "Imutável"
msgid "Append only"
-msgstr ""
+msgstr "Apenas anexar"
msgid "No dump"
-msgstr ""
+msgstr "Sem despejo"
msgid "No update atime"
-msgstr ""
+msgstr "Sem atualização de tempo"
msgid "Compress"
-msgstr ""
+msgstr "Comprimir"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Clusters comprimidos"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Arquivo sujo comprimido"
msgid "Compression raw access"
-msgstr ""
+msgstr "Acesso bruto da compressão"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Inode criptografado"
msgid "Journaled data"
-msgstr ""
+msgstr "Dados registrados"
msgid "Indexed directory"
-msgstr ""
+msgstr "Diretório indexado"
msgid "No tail merging"
-msgstr ""
+msgstr "Sem fusão da extremidade"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Hierarquias superiores do diretório"
msgid "Inode uses extents"
-msgstr ""
+msgstr "O inode utiliza as extensões"
msgid "Huge_file"
-msgstr ""
+msgstr "Arquivo_Enorme"
msgid "No COW"
-msgstr ""
+msgstr "Sem COW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Acesso direto aos arquivos"
msgid "Casefolded file"
-msgstr ""
+msgstr "Arquivo dobrado"
msgid "Inode has inline data"
-msgstr ""
+msgstr "O inode tem dados embutidos"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Hierarquia do projeto"
msgid "Verity protected inode"
-msgstr ""
+msgstr "O inode é protegido pelo verity"
msgid "&Marked all"
msgstr "Marcar &todos"
msgid "S&et marked"
-msgstr "Configurar &Marcado"
+msgstr "Configurar o item &selecionado"
msgid "C&lear marked"
-msgstr "Lim&peza marcada"
+msgstr "Lim&par o item &selecionado"
msgid "Chattr command"
-msgstr ""
+msgstr "Comando chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível o comando chattr \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
msgstr ""
+"Não é possível alterar os atributos nos sistemas de arquivos que não são "
+"locais"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível obter os parâmetros de \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
-msgstr ""
+msgstr "Configurar o ID do &usuário na execução"
msgid "set &group ID on execution"
-msgstr ""
+msgstr "Configurar o ID do &grupo na execução"
msgid "stick&y bit"
-msgstr ""
+msgstr "Sinali&zador de direito de acesso"
msgid "&read by owner"
-msgstr ""
+msgstr "&Lido pelo proprietário"
msgid "&write by owner"
-msgstr ""
+msgstr "&Escrito pelo proprietário"
msgid "e&xecute/search by owner"
-msgstr "e&xecutar/procurar por owner"
+msgstr "E&xecutar/procurar pelo proprietário"
msgid "rea&d by group"
-msgstr ""
+msgstr "Li&do pelo grupo"
msgid "write by grou&p"
-msgstr ""
+msgstr "Escri&to pelo grupo"
msgid "execu&te/search by group"
-msgstr ""
+msgstr "Exe&cutar/procurar pelo grupo"
msgid "read &by others"
-msgstr ""
+msgstr "Lido po&r outros"
msgid "wr&ite by others"
-msgstr ""
+msgstr "Escrito p&or outros"
msgid "execute/searc&h by others"
-msgstr ""
+msgstr "Executar/procurar &por outros"
msgid "Name:"
-msgstr ""
+msgstr "Nome:"
msgid "Permissions (octal):"
-msgstr ""
+msgstr "Permissões (octal):"
msgid "Owner name:"
-msgstr ""
+msgstr "Nome do proprietário:"
msgid "Group name:"
-msgstr ""
+msgstr "Nome do grupo:"
msgid "Chmod command"
msgstr "Comando chmod"
@@ -2327,16 +2371,16 @@
msgstr "Arquivo"
msgid "Set &groups"
-msgstr "COnfigurar &grupos"
+msgstr "Configurar os &grupos"
msgid "Set &users"
-msgstr "Configurar usuários"
+msgstr "Configurar os &usuários"
msgid "Name"
msgstr "Nome"
msgid "Owner name"
-msgstr "Nome do dono"
+msgstr "Nome do proprietário"
msgid "Group name"
msgstr "Nome do grupo"
@@ -2357,152 +2401,148 @@
msgstr "<Grupo desconhecido>"
msgid "Enter machine name (F1 for details):"
-msgstr "Insira nome da máquina (F1 para mais detalhes):"
+msgstr ""
+"Insira o nome da máquina (pressione a tecla F1 para obter mais informações):"
msgid "Files tagged, want to cd?"
-msgstr "Arquivos selecionados. Deseja mudar localização?"
+msgstr "Os arquivos estão selecionados. Você quer alterar a localização?"
msgid "Cannot change directory"
-msgstr " Impossível mudar de diretório"
-
-msgid "Filter"
-msgstr "Filtro"
-
-msgid "Set expression for filtering filenames"
-msgstr "Defina expressão para filtrar nome de arquivos"
+msgstr "Não é possível alterar o diretório"
#, c-format
msgid "Link %s to:"
-msgstr ""
+msgstr "Vínculo %s para:"
msgid "Link"
-msgstr "Link"
+msgstr "Vínculo"
#, c-format
msgid "link: %s"
-msgstr ""
+msgstr "Vínculo: %s"
#, c-format
msgid "symlink: %s"
-msgstr ""
+msgstr "Vínculo simbólico: %s"
#, c-format
msgid "Cannot chdir to \"%s\""
-msgstr "Não foi possível executar chdir para \"%s\""
+msgstr "Não foi possível executar o comando chdir para \"%s\""
msgid "View file"
-msgstr "Ver arquivo"
+msgstr "Visualizar o arquivo"
msgid "Filename:"
-msgstr "Nome de arquivo:"
+msgstr "Nome do arquivo:"
msgid "Filtered view"
msgstr "Visualização filtrada"
msgid "Filter command and arguments:"
-msgstr "comando e argumentos filtrados:"
+msgstr "Filtrar os comando e os argumentos:"
msgid "Edit file"
-msgstr ""
+msgstr "Editar o arquivo"
msgid "Create a new Directory"
msgstr "Criar um novo diretório"
msgid "Enter directory name:"
-msgstr "Insira nome de diretório"
+msgstr "Insira o nome do diretório"
msgid "Extension file edit"
-msgstr "Editar extensão de arquivos"
+msgstr "Editar a extensão do arquivo"
msgid "Which extension file you want to edit?"
-msgstr "Qual extensão de arquivo você quer editar?"
+msgstr "Qual a extensão do arquivo que você quer editar?"
msgid "&System Wide"
msgstr "&Todo o sistema"
msgid "Highlighting groups file edit"
-msgstr "Edição do arquivo de grupos de realce"
+msgstr "Editar o arquivo do grupo selecionado"
msgid "Which highlighting file you want to edit?"
-msgstr "Qual arquivo de realce você quer editar?"
+msgstr "Qual arquivo selecionado que você quer editar?"
msgid "Compare directories"
-msgstr "Comparar diretórios"
+msgstr "Comparar os diretórios"
msgid "Select compare method:"
-msgstr "Selecione métodos de comparação:"
+msgstr "Selecione o método de comparação:"
msgid "&Quick"
msgstr "&Rápido"
msgid "&Size only"
-msgstr "Apenas &tamanho"
+msgstr "Apenas por &tamanho"
msgid "&Thorough"
-msgstr "&Através"
+msgstr "&Minucioso"
msgid ""
"Both panels should be in the listing mode\n"
"to use this command"
msgstr ""
-"Ambos painéis deveriam estar no modo de\n"
-"listagem para usar este comando"
+"Ambos os painéis deveriam estar no modo\n"
+"de listagem para utilizar este comando"
#, c-format
msgid "'%s' is not a symbolic link"
-msgstr ""
+msgstr "'%s' não é um vínculo simbólico"
#, c-format
msgid "Symlink '%s' points to:"
-msgstr ""
+msgstr "O vínculo simbólico '%s' aponta para:"
msgid "Edit symlink"
-msgstr "Editar symlink"
+msgstr "Editar o vínculo simbólico"
#, c-format
msgid "edit symlink, unable to remove %s: %s"
-msgstr "Editar symlink, não foi possível remover %s: %s"
+msgstr "Ao editar o vínculo simbólico, não foi possível remover o %s: %s"
#, c-format
msgid "edit symlink: %s"
-msgstr "editar symlink: %s"
+msgstr "Editar o vínculo simbólico: %s"
msgid "FTP to machine"
-msgstr "FTP para máquina"
+msgstr "FTP para a máquina"
msgid "SFTP to machine"
-msgstr ""
+msgstr "SFTP para a máquina"
msgid "Shell link to machine"
-msgstr "Link de shell para máquina"
-
-msgid "SMB link to machine"
-msgstr ""
+msgstr "Vínculo do shell para a máquina"
msgid "Undelete files on an ext2 file system"
-msgstr ""
+msgstr "Recuperar arquivos excluídos em um sistema de arquivos ext2"
msgid ""
"Enter device (without /dev/) to undelete\n"
"files on: (F1 for details)"
msgstr ""
+"Insira o dispositivo (sem o /dev/) para\n"
+"recuperar o arquivos em: (pressione a\n"
+"tecla F1 para obter mais informações)"
msgid "Directory scanning"
-msgstr "Escaneando diretório"
+msgstr "Analisando o diretório"
msgid "Setup"
-msgstr "Configuração"
+msgstr "Configurações"
#, c-format
msgid "Setup saved to %s"
-msgstr ""
+msgstr "As configurações foram salvas em %s"
#, c-format
msgid "Unable to save setup to %s"
-msgstr ""
+msgstr "Não foi possível salvar as configurações em %s"
msgid "Cannot execute commands on non-local filesystems"
msgstr ""
+"Não é possível executar comandos em sistemas de arquivos que não são locais"
msgid "Parameter"
msgstr "Parâmetro"
@@ -2512,27 +2552,49 @@
"Cannot create temporary command file\n"
"%s"
msgstr ""
+"Não foi possível criar o arquivo do comando\n"
+"temporário%s"
+
+msgid "Pipe failed"
+msgstr "O canal falhou"
#, c-format
-msgid " %s%s file error"
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
msgstr ""
+"Você tem um arquivo %s desatualizado.\n"
+"O Midnight Commander agora utiliza o arquivo\n"
+"%s.\n"
+"Por favor, copie as suas modificações do arquivo\n"
+"antigo para o novo arquivo de configurações."
+
+#, c-format
+msgid " %s%s file error"
+msgstr "Ocorreu um erro no arquivo %s%s "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
+"O formato do arquivo %s %s mudou com a versão 4.0. Ao que parece a "
+"instalação falhou. Por favor, obtenha uma cópia do novo pacote do Midnight "
+"Commander."
#, c-format
msgid "%s file error"
-msgstr ""
+msgstr "Ocorreu um erro no arquivo %s"
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
+"O formato do arquivo %s mudou com a versão 4.0. Você pode querer copiá-lo de "
+"%s %s ou utilizar este arquivo como um exemplo de como escrevê-lo."
msgid "DialogTitle|Copy"
msgstr "TítuloDiálogo|Copiar"
@@ -2541,7 +2603,7 @@
msgstr "TítuloDiálogo|Mover"
msgid "DialogTitle|Delete"
-msgstr "TítuloDiálogo|Excluír"
+msgstr "TítuloDiálogo|Excluir"
msgid "FileOperation|Copy"
msgstr "OperacaoArquivo|Copiar"
@@ -2550,11 +2612,11 @@
msgstr "OperacaoArquivo|Mover"
msgid "FileOperation|Delete"
-msgstr "OperacaoArquivo|Excluír"
+msgstr "OperacaoArquivo|Excluir"
#, no-c-format
msgid "%o %f%n\"%s\"%m"
-msgstr ""
+msgstr "%o %f%n\"%s\"%m"
#, no-c-format
msgid "%o %d %f%m"
@@ -2581,23 +2643,28 @@
"Cannot stat hardlink source file \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível estabelecer o arquivo de origem do vínculo físico "
+"(hardlink) \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot create target hardlink \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível criar o vínculo físico (hardlink) de destino \"%s\"\n"
+"%s"
#, c-format
msgid "Cannot create target hardlink \"%s\""
-msgstr ""
+msgstr "Não foi possível criar o vínculo físico (hardlink) de destino \"%s\""
#, c-format
msgid ""
"Cannot read source link \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível ler o link fonte \"%s\"\n"
+"Não foi possível ler o vínculo (link) de origem \"%s\"\n"
"%s"
msgid ""
@@ -2605,13 +2672,17 @@
"\n"
"Option Stable Symlinks will be disabled"
msgstr ""
+"Não é possível criar os vínculos simbólicos estáveis em sistemas de arquivos "
+"que não são locais:\n"
+"\n"
+"A opção vínculos simbólicos (Symlinks) estáveis será desativada"
#, c-format
msgid ""
"Cannot create target symlink \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível criar alvo symlink \"%s\"\n"
+"Não foi possível criar o destino do vínculo simbólico (symlink) \"%s\"\n"
"%s"
#, c-format
@@ -2639,13 +2710,15 @@
"são o mesmo arquivo"
msgid "Ski&p all"
-msgstr ""
+msgstr "I&gnorar tudo"
#, c-format
msgid ""
"Directory \"%s\" not empty.\n"
"Delete it recursively?"
msgstr ""
+"O diretório \"%s\" não está vazio.\n"
+"Você quer excluir recursivamente?"
#, c-format
msgid ""
@@ -2653,6 +2726,9 @@
"Directory \"%s\" not empty.\n"
"Delete it recursively?"
msgstr ""
+"Processo que está sendo executado em segundo plano:\n"
+"O diretório \"%s\" não está vazio.\n"
+"Você quer excluir recursivamente?"
msgid "Non&e"
msgstr "&Nenhum"
@@ -2662,7 +2738,7 @@
"Cannot remove file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível remover arquivo \"%s\"\n"
+"Não foi possível remover o arquivo \"%s\"\n"
"%s"
#, c-format
@@ -2670,19 +2746,19 @@
"Cannot stat file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível pegar estado de arquivo \"%s\"\n"
+"Não foi possível obter o estado do arquivo \"%s\"\n"
"%s"
#, c-format
msgid "Cannot overwrite directory \"%s\""
-msgstr "Não foi possível sobrescrever diretório \"%s\""
+msgstr "Não foi possível sobrescrever o diretório \"%s\""
#, c-format
msgid ""
"Cannot move file \"%s\" to \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível mover arquivo \"%s\" para \"%s\"\n"
+"Não foi possível mover o arquivo \"%s\" para \"%s\"\n"
"%s"
#, c-format
@@ -2690,7 +2766,7 @@
"Cannot remove directory \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível remover diretório \"%s\"\n"
+"Não foi possível remover o diretório \"%s\"\n"
"%s"
#, c-format
@@ -2725,7 +2801,7 @@
"Cannot stat source file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível pegar estado de arquivo fonte \"%s\"\n"
+"Não foi possível obter o estado do arquivo de origem \"%s\"\n"
"%s"
#, c-format
@@ -2733,7 +2809,7 @@
"Cannot create special file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível criar arquivo especial \"%s\"\n"
+"Não foi possível criar o arquivo especial \"%s\"\n"
"%s"
#, c-format
@@ -2741,7 +2817,7 @@
"Cannot chown target file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar chown em arquivo alvo \"%s\"\n"
+"Não foi possível executar o chown no arquivo de destino \"%s\"\n"
"%s"
#, c-format
@@ -2757,18 +2833,18 @@
"Cannot open source file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível abrir arquivo fonte \"%s\"\n"
+"Não foi possível abrir arquivo de origem \"%s\"\n"
"%s"
msgid "Reget failed, about to overwrite file"
-msgstr "nova obtenção falhou, sobrescrever arquivo"
+msgstr "A nova obtenção falhou ao sobrescrever o arquivo"
#, c-format
msgid ""
"Cannot fstat source file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar fstat no arquivo fonte \"%s\"\n"
+"Não foi possível executar o fstat no arquivo de origem \"%s\"\n"
"%s"
#, c-format
@@ -2776,7 +2852,7 @@
"Cannot create target file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível criar arquivo alvo \"%s\"\n"
+"Não foi possível o criar arquivo no destino \"%s\"\n"
"%s"
#, c-format
@@ -2784,7 +2860,7 @@
"Cannot fstat target file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar fstat no arquivo alvo \"%s\"\n"
+"Não foi possível executar o fstat no arquivo de destino \"%s\"\n"
"%s"
#, c-format
@@ -2792,30 +2868,43 @@
"Cannot preallocate space for target file \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível pré-alocar o espaço para o arquivo de destino \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot read source file \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível ler o arquivo de origem \"%s\"\n"
+"%s"
#, c-format
msgid ""
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível escrever arquivo alvo \"%s\"\n"
+"Não foi possível escrever no arquivo de destino \"%s\"\n"
"%s"
msgid "(stalled)"
msgstr "(parado)"
+msgid "Incomplete file was retrieved"
+msgstr "O arquivo que está incompleto foi recuperado"
+
+msgid "&Keep"
+msgstr "&Manter"
+
+msgid "&Continue copy"
+msgstr "&Continuar a cópia"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível fechar arquivo fonte \"%s\"\n"
+"Não foi possível fechar o arquivo de origem \"%s\"\n"
"%s"
#, c-format
@@ -2823,21 +2912,15 @@
"Cannot close target file \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível fechar arquivo alvo \"%s\"\n"
+"Não foi possível fechar o arquivo de destino \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Arquivo incompleto foi recuperado. Manter ?"
-
-msgid "&Keep"
-msgstr "&Manter"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível adquirir estado do diretório \"%s\"\n"
+"Não foi possível obter o estado do diretório \"%s\"\n"
"%s"
#, c-format
@@ -2845,7 +2928,7 @@
"Source \"%s\" is not a directory\n"
"%s"
msgstr ""
-"Fonte \"%s\" não é um diretório\n"
+"A origem \"%s\" não é um diretório\n"
"%s"
#, c-format
@@ -2853,7 +2936,7 @@
"Cannot copy cyclic symbolic link\n"
"\"%s\""
msgstr ""
-"Não foi possível copiar link simbólico cíclico\n"
+"Não foi possível copiar vínculo simbólico cíclico\n"
"\"%s\""
#, c-format
@@ -2861,7 +2944,7 @@
"Destination \"%s\" must be a directory\n"
"%s"
msgstr ""
-"Destino \"%s\" deve ser um diretório\n"
+"O destino \"%s\" deve ser um diretório\n"
"%s"
#, c-format
@@ -2869,7 +2952,7 @@
"Cannot create target directory \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível criar um diretório alvo \"%s\"\n"
+"Não foi possível criar um diretório no destino \"%s\"\n"
"%s"
#, c-format
@@ -2877,18 +2960,20 @@
"Cannot chown target directory \"%s\"\n"
"%s"
msgstr ""
-"Não foi possível executar chown no diretório alvo \"%s\"\n"
+"Não foi possível executar o chown no diretório de destino \"%s\"\n"
"%s"
#, c-format
msgid "Directories: %zu, total size: %s"
-msgstr ""
+msgstr "Diretórios: %zu, tamanho total: %s"
msgid "Sorry, I could not put the job in background"
-msgstr "Desculpe, não consegui colocar o procesos em plano de fundo"
+msgstr ""
+"Desculpe-me, eu não consegui colocar o(s) processo(s) que está(ão) sendo "
+"executados em segundo plano"
msgid "S&uspend"
-msgstr ""
+msgstr "S&uspender"
msgid "Con&tinue"
msgstr "Con&tinuar"
@@ -2914,13 +2999,13 @@
msgstr "%ld B/s"
msgid "New :"
-msgstr ""
+msgstr "Novo :"
msgid "Existing:"
-msgstr ""
+msgstr "Saindo:"
msgid "Overwrite this file?"
-msgstr ""
+msgstr "Você quer substituir este arquivo?"
msgid "A&ppend"
msgstr "A&dicionar"
@@ -2929,57 +3014,58 @@
msgstr "&Obter novamente"
msgid "Overwrite all files?"
-msgstr ""
+msgstr "Você quer substituir todos os arquivo?"
msgid "Don't overwrite with &zero length file"
msgstr ""
+"Não sobrescrever o(s) arquivo(s) que possui(em) o tamanho igual a &zero"
msgid "&Older"
-msgstr ""
+msgstr "Antig&o"
msgid "S&maller"
-msgstr ""
+msgstr "Peq&ueno"
msgid "&Size differs"
-msgstr ""
+msgstr "&Diferenciar pelo tamanho"
msgid "File exists"
msgstr "Arquivo existe"
msgid "Background process: File exists"
-msgstr "Processo em plano de fundo: Arquivo existe"
+msgstr "Processo que está sendo executado em segundo plano: O arquivo existe"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr ""
+msgid "Files processed: %zu / %zu"
+msgstr "Arquivos processados: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
-msgstr ""
+msgstr "Arquivos processados: %zu"
#, c-format
msgid "Time: %s %s"
-msgstr ""
+msgstr "Hora: %s %s"
#, c-format
msgid "Time: %s %s (%s)"
-msgstr ""
+msgstr "Hora: %s %s (%s)"
#, c-format
msgid "Time: %s"
-msgstr ""
+msgstr "Hora: %s"
#, c-format
msgid "Time: %s (%s)"
-msgstr ""
+msgstr "Hora: %s (%s)"
#, c-format
msgid " Total: %s "
-msgstr ""
+msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr ""
+msgid " Total: %s / %s "
+msgstr " Total: %s / %s "
msgid "Source"
msgstr "Origem"
@@ -2988,299 +3074,298 @@
msgstr "Destino"
msgid "Deleting"
-msgstr ""
+msgstr "Excluindo"
msgid "&Using shell patterns"
-msgstr "&Usando máscaras de ambiente de trabalho"
+msgstr "&Utilizando os padrões do shell"
msgid "to:"
msgstr "para:"
msgid "Follow &links"
-msgstr ""
+msgstr "Seguir os &vínculos"
msgid "Preserve &attributes"
-msgstr ""
-"Ambos painéis deveriam estar no modo de\n"
-"listagem para usar este comando"
+msgstr "Preservar os &atributos"
msgid "Di&ve into subdir if exists"
-msgstr ""
+msgstr "Aprof&undar no subdiretório se existir"
msgid "&Stable symlinks"
-msgstr ""
+msgstr "&Vínculos simbólicos estáveis"
msgid "&Background"
msgstr "&Segundo plano"
#, c-format
msgid "Invalid source pattern '%s'"
-msgstr ""
+msgstr "O padrão de origem '%s' não é válido"
msgid "File listin&g"
-msgstr ""
+msgstr "Lista&gem de arquivos"
msgid "&Quick view"
-msgstr ""
+msgstr "Visualização &rápida"
msgid "&Info"
-msgstr ""
+msgstr "&Informações"
msgid "&Tree"
msgstr "&Árvore"
msgid "&Listing format..."
-msgstr ""
+msgstr "Formato da &listagem..."
msgid "&Sort order..."
-msgstr "&Ordem..."
+msgstr "&Ordem de classificação..."
msgid "&Filter..."
msgstr "&Filtro..."
msgid "&Encoding..."
-msgstr ""
+msgstr "&Codificação..."
msgid "FT&P link..."
-msgstr "Ligação FT&P..."
+msgstr "Vínculo do FT&P..."
msgid "S&hell link..."
-msgstr ""
-
-msgid "S&FTP link..."
-msgstr ""
+msgstr "Vínculo do S&hell.."
-msgid "SM&B link..."
-msgstr "Ligação SM&B..."
+msgid "SFTP li&nk..."
+msgstr "Ví&nculo do SFTP..."
msgid "Paneli&ze"
-msgstr ""
+msgstr "No pai&nel"
msgid "&Rescan"
-msgstr ""
+msgstr "Analisa&r novamente"
msgid "&View"
-msgstr ""
+msgstr "&Visualizar"
msgid "Vie&w file..."
-msgstr ""
+msgstr "Visual&izar o arquivo..."
msgid "&Filtered view"
-msgstr ""
+msgstr "Visualização &filtrada"
msgid "&Copy"
-msgstr ""
+msgstr "&Copiar"
msgid "C&hmod"
-msgstr ""
+msgstr "C&hmod"
msgid "&Link"
-msgstr ""
+msgstr "&Vínculo"
msgid "&Symlink"
-msgstr ""
+msgstr "Vínculo &simbólico"
msgid "Relative symlin&k"
-msgstr "Symlin&k relativo"
+msgstr "Vínculo simbólico &relativo"
msgid "Edit s&ymlink"
-msgstr "Editar s&ymlink"
+msgstr "Editar o vínculo s&imbólico"
msgid "Ch&own"
-msgstr ""
+msgstr "Ch&own"
msgid "&Advanced chown"
-msgstr "Chown &Avançado"
+msgstr "Chown &avançado"
msgid "Cha&ttr"
-msgstr ""
+msgstr "Cha&ttr"
msgid "&Rename/Move"
msgstr "&Renomear/Mover"
msgid "&Mkdir"
-msgstr ""
+msgstr "&Mkdir"
msgid "&Quick cd"
-msgstr ""
+msgstr "Cd &rápido"
msgid "Select &group"
-msgstr ""
+msgstr "Selecionar o &grupo"
msgid "U&nselect group"
-msgstr ""
+msgstr "Ca&ncelar a seleção do grupo"
msgid "&Invert selection"
-msgstr ""
+msgstr "&Inverter a seleção"
msgid "E&xit"
-msgstr ""
+msgstr "&Sair"
msgid "&User menu"
-msgstr ""
+msgstr "Menu do &usuário"
msgid "&Directory tree"
-msgstr "Arvore de &Diretórios"
+msgstr "Arvore de &diretórios"
msgid "&Find file"
-msgstr ""
+msgstr "&Pesquisar arquivo"
msgid "S&wap panels"
-msgstr ""
+msgstr "Tro&car painéis"
msgid "Switch &panels on/off"
-msgstr ""
+msgstr "Ligar/Desligar os &painéis"
msgid "&Compare directories"
-msgstr ""
+msgstr "&Comparar diretórios"
msgid "C&ompare files"
-msgstr ""
+msgstr "C&omparar arquivos"
msgid "E&xternal panelize"
-msgstr ""
+msgstr "Painéis e&xternos"
msgid "Show directory s&izes"
-msgstr ""
+msgstr "Ex&ibir o tamanho dos diretórios"
msgid "Command &history"
-msgstr ""
+msgstr "&Histórico de comandos"
msgid "Viewed/edited files hi&story"
-msgstr ""
+msgstr "Hi&stórico de arquivos visualizados ou editados"
msgid "Di&rectory hotlist"
-msgstr ""
+msgstr "Lista de di&retórios"
msgid "&Active VFS list"
-msgstr ""
+msgstr "&Lista de VFS ativos"
msgid "&Background jobs"
-msgstr ""
+msgstr "&Trabalhos em segundo plano"
msgid "Screen lis&t"
-msgstr ""
+msgstr "Lis&ta de telas"
msgid "&Undelete files (ext2fs only)"
-msgstr "&Recuperar arquivos (apenas ext2fs)"
+msgstr "&Recuperar os arquivos (apenas ext2fs)"
msgid "&Listing format edit"
-msgstr "Editar forma de &Listagem"
+msgstr "Editar o formato da &listagem"
msgid "Edit &extension file"
-msgstr "Editar &extensões de arquivo"
+msgstr "Editar a &extensão do arquivo"
msgid "Edit &menu file"
-msgstr "Editar &Menu de arquivo"
+msgstr "Editar o &menu de arquivo"
msgid "Edit hi&ghlighting group file"
-msgstr ""
+msgstr "Editar o arquivo de seleção do grupo"
msgid "&Configuration..."
-msgstr "&Configuração"
+msgstr "&Configurações..."
msgid "&Layout..."
-msgstr "&Layout..."
+msgstr "&Leiaute..."
msgid "&Panel options..."
-msgstr ""
+msgstr "Opções do &painel..."
msgid "C&onfirmation..."
-msgstr ""
+msgstr "C&onfirmação..."
msgid "&Appearance..."
-msgstr ""
+msgstr "&Aparência..."
msgid "&Display bits..."
-msgstr "&Mostrar Bits..."
+msgstr "&Exibir os bits..."
msgid "&Virtual FS..."
msgstr "Sistema de Arquivos &Virtual..."
msgid "Panels:"
-msgstr "Paineis"
+msgstr "Painéis:"
#, c-format
msgid "You have %zu opened screen. Quit anyway?"
msgid_plural "You have %zu opened screens. Quit anyway?"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Você tem %zu tela aberta. Você quer finalizar mesmo assim?"
+msgstr[1] "Você têm %zu telas abertas. Você quer finalizar mesmo assim?"
+msgstr[2] "Você têm %zu telas abertas. Você quer finalizar mesmo assim?"
msgid "The Midnight Commander"
msgstr "O Midnight Commander"
msgid "Do you really want to quit the Midnight Commander?"
-msgstr "Você deseja realmente sair do Midnight Commander?"
+msgstr "Você realmente quer sair do Midnight Commander?"
msgid "&Above"
-msgstr ""
+msgstr "&Acima"
msgid "&Left"
-msgstr ""
+msgstr "&Esquerda"
msgid "&Below"
-msgstr ""
+msgstr "A&baixo"
msgid "&Right"
-msgstr ""
+msgstr "Di&reita"
msgid "ButtonBar|Menu"
msgstr "ButtonBar|Menu"
msgid "ButtonBar|View"
-msgstr "ButtonBar|Ver"
+msgstr "ButtonBar|Visualizar"
msgid "ButtonBar|RenMov"
-msgstr "ButtonBar|RenMov"
+msgstr "ButtonBar|Renomear ou Mover"
msgid "ButtonBar|Mkdir"
-msgstr "ButtonBar|Mkdir"
+msgstr "ButtonBar|Criar um diretório"
msgid "&Chdir"
-msgstr "Alterar &Diretório"
+msgstr "Alterar o &diretório"
msgid "&Again"
msgstr "&Novamente"
msgid "Pane&lize"
-msgstr "Mostrar em Painé&is"
+msgstr "Exibir em Painé&is"
msgid "&View - F3"
-msgstr "&Ver - F3"
+msgstr "&Visualizar - F3"
msgid "&Edit - F4"
msgstr "&Editar - F4"
#, c-format
msgid "Found: %lu"
-msgstr ""
+msgstr "Foi encontrado: %lu"
msgid "Malformed regular expression"
-msgstr "Expressão regular malformulada"
+msgstr "A expressão regular foi mal formulada"
msgid "File name:"
-msgstr "Nome de arquivo:"
+msgstr "Nome do arquivo:"
msgid "&Find recursively"
-msgstr ""
+msgstr "&Pesquisar recursivamente"
+
+msgid "Follow s&ymlinks"
+msgstr "&Seguir os vínculos simbólicos"
msgid "S&kip hidden"
-msgstr ""
+msgstr "Ign&orar os ocultos"
msgid "Content:"
msgstr "Conteúdo:"
msgid "Sea&rch for content"
-msgstr ""
+msgstr "Pesquisa&r por conteúdo"
msgid "Case sens&itive"
-msgstr ""
+msgstr "D&iferenciar as letras maiúsculas das minúsculas"
msgid "A&ll charsets"
-msgstr ""
+msgstr "&Todos os conjuntos de caracteres"
msgid "Fir&st hit"
-msgstr ""
+msgstr "O pri&meiro encontrado"
msgid "Find File"
msgstr "Procurar arquivo"
@@ -3289,52 +3374,53 @@
msgstr "Iniciar em:"
msgid "Ena&ble ignore directories:"
-msgstr ""
+msgstr "&Ativar a opção de ignorar os diretórios:"
#, c-format
msgid "Grepping in %s"
msgstr "Localizando em %s"
msgid "Finished"
-msgstr "Terminado"
+msgstr "Finalizado"
#, c-format
msgid "Finished (ignored %zu directory)"
msgid_plural "Finished (ignored %zu directories)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Foi finalizado com %zu diretório ignorado"
+msgstr[1] "Foi finalizado com %zu diretórios ignorados"
+msgstr[2] "Foi finalizado com %zu diretórios ignorados"
#, c-format
msgid "Find File: \"%s\". Content: \"%s\""
-msgstr ""
+msgstr "Procurar o arquivo: \"%s\". Contendo: \"%s\""
#, c-format
msgid "Find File: \"%s\""
-msgstr ""
+msgstr "Procurar o arquivo: \"%s\""
msgid "Searching"
msgstr "Procurando"
msgid "Change &to"
-msgstr ""
+msgstr "&Alterar para"
msgid "&Free VFSs now"
-msgstr ""
+msgstr "Libertar o V&Fss agora"
msgid "&Refresh"
-msgstr ""
+msgstr "&Recarregar"
msgid "&Add current"
-msgstr "&Adicionar ao Atual"
+msgstr "&Adicionar ao atual"
msgid "&Up"
msgstr "&Acima"
msgid "New &group"
-msgstr ""
+msgstr "Novo &grupo"
msgid "New &entry"
-msgstr ""
+msgstr "Nova &entrada"
msgid "&Insert"
msgstr "&Inserir"
@@ -3343,26 +3429,26 @@
msgstr "&Remover"
msgid "Subgroup - press ENTER to see list"
-msgstr "Subgrupo - pressione ENTER para ver lista"
+msgstr "Subgrupo - pressione a tecla ENTER para visualizar a lista"
msgid "Active VFS directories"
-msgstr "Ativar diretório VFS"
+msgstr "Ativar o diretório VFS"
msgid "Directory hotlist"
-msgstr "Lista de diretório "
+msgstr "Lista de diretórios"
msgid "Top level group"
-msgstr ""
+msgstr "Grupo de nível superior"
msgid "Directory path"
msgstr "Caminho do diretório"
#, c-format
msgid "Moving %s"
-msgstr ""
+msgstr "Movendo %s"
msgid "Directory label"
-msgstr " Descrição do diretório"
+msgstr "Descrição do diretório"
msgid "&Append"
msgstr "&Adicionar"
@@ -3371,74 +3457,80 @@
msgstr "Nova entrada na lista "
msgid "Directory label:"
-msgstr ""
+msgstr " Descrição do diretório:"
msgid "Directory path:"
-msgstr ""
+msgstr "Caminho do diretório:"
msgid "New hotlist group"
-msgstr ""
+msgstr "Nova lista do grupo"
msgid "Name of new group:"
-msgstr ""
+msgstr "Nome do novo grupo:"
#, c-format
msgid "Are you sure you want to remove entry \"%s\"?"
-msgstr ""
+msgstr "Você tem certeza que quer remover a entrada \"%s\"?"
#, c-format
msgid ""
"Group \"%s\" is not empty.\n"
"Remove it?"
msgstr ""
+"O grupo \"%s\" não está vazio.\n"
+"Você quer removê-lo?"
msgid "Hotlist Load"
-msgstr ""
+msgstr "Carregar a lista"
#, c-format
msgid ""
"MC was unable to write %s file,\n"
"your old hotlist entries were not deleted"
msgstr ""
+"O Midnight Commander não conseguiu\n"
+"escrever ou gravar no arquivo %s, as\n"
+"suas entradas antigas da lista de favoritos\n"
+"não foram excluídas"
#, c-format
msgid "Label for \"%s\":"
msgstr "Descrição para \"%s\": "
msgid "Add to hotlist"
-msgstr ""
+msgstr "Adicionar à lista de favoritos"
#, c-format
msgid "Midnight Commander %s"
-msgstr "Midnight commander %s"
+msgstr "Midnight Commander %s"
#, c-format
msgid "File: %s"
msgstr "Arquivo: %s"
msgid "No node information"
-msgstr "Sem informação de nó"
+msgstr "Nenhuma informação do nó"
msgid "Free nodes:"
-msgstr ""
+msgstr "Nós livres:"
msgid "No space information"
-msgstr "Sem informações sobre espaço"
+msgstr "Nenhuma informação do espaço"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr ""
+msgid "Free space: %s / %s (%d%%)"
+msgstr " Espaço livre: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
-msgstr ""
+msgstr "Tipo: %s"
msgid "non-local vfs"
-msgstr "vfs não local"
+msgstr "VFS não local"
#, c-format
msgid "Device: %s"
-msgstr ""
+msgstr "Dispositivo: %s"
#, c-format
msgid "Filesystem: %s"
@@ -3446,83 +3538,84 @@
#, c-format
msgid "Accessed: %s"
-msgstr ""
+msgstr "Acessado: %s"
#, c-format
msgid "Modified: %s"
-msgstr ""
+msgstr "Modificado: %s"
#. TRANSLATORS: Time of last status change as in stat(2) man.
#, c-format
msgid "Changed: %s"
-msgstr ""
+msgstr "Alterado: %s"
#, c-format
msgid "Dev. type: major %lu, minor %lu"
-msgstr ""
+msgstr "Dev. tipo: maior %lu, menor %lu"
#, c-format
msgid "Size: %s"
-msgstr ""
+msgstr "Tamanho: %s"
#, c-format
msgid " (%lu block)"
msgid_plural " (%lu blocks)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] " (%lu bloco)"
+msgstr[1] " (%lu blocos)"
+msgstr[2] " (%lu blocos)"
#, c-format
msgid "Owner: %s/%s"
-msgstr ""
+msgstr "Proprietário: %s/%s"
#, c-format
msgid "Links: %d"
-msgstr "Links: %d"
+msgstr "Vínculos: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Atributos: não suportados"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Atributos: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Atributos: indisponíveis"
#, c-format
msgid "Mode: %s (%04o)"
-msgstr ""
+msgstr "Modo: %s (%04o)"
#, c-format
msgid "Location: %Xh:%Xh"
-msgstr ""
+msgstr "Localização: %Xh:%Xh"
msgid "&Equal split"
-msgstr "Dividir i&Gualmente"
+msgstr "Dividir i&gualmente"
msgid "&Menubar visible"
-msgstr "Barra de &menu visível"
+msgstr "Barra do &menu visível"
msgid "Command &prompt"
-msgstr "&Prompt de comando"
+msgstr "&Prompt de comandos"
msgid "&Keybar visible"
-msgstr "Barra de &Teclas visível"
+msgstr "Barra de &teclas visível"
msgid "H&intbar visible"
msgstr "Barra de dicas visível"
msgid "&XTerm window title"
-msgstr ""
+msgstr "Título de janela do &XTerm"
msgid "&Show free space"
-msgstr "Mostrar espaço livre"
+msgstr "Exibir o espaço livre"
msgid "Panel split"
-msgstr ""
+msgstr "Divisão do painel"
msgid "Console output"
-msgstr ""
+msgstr "Saída do console "
msgid "&Vertical"
msgstr "&Vertical"
@@ -3531,13 +3624,13 @@
msgstr "&Horizontal"
msgid "Output lines:"
-msgstr ""
+msgstr "Linhas de saída:"
msgid "Layout"
msgstr "Disposição"
msgid "Memory exhausted!"
-msgstr "Memória esgotada!"
+msgstr "A memória está esgotada!"
#. TRANSLATORS: one single character to represent 'unsorted' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
@@ -3580,7 +3673,7 @@
msgstr "&Tamanho"
msgid "Block Size"
-msgstr ""
+msgstr "Tamanho do bloco"
#. TRANSLATORS: one single character to represent 'Modify time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
@@ -3588,7 +3681,7 @@
msgstr "sort|m"
msgid "&Modify time"
-msgstr "&Hora de modificação"
+msgstr "&Hora da modificação"
#. TRANSLATORS: one single character to represent 'Access time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
@@ -3596,7 +3689,7 @@
msgstr "sort|a"
msgid "&Access time"
-msgstr "&Hora de acesso"
+msgstr "&Hora do acesso"
#. TRANSLATORS: one single character to represent 'Change time' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
@@ -3604,7 +3697,7 @@
msgstr "sort|h"
msgid "C&hange time"
-msgstr ""
+msgstr "Al&terar a hora"
msgid "Perm"
msgstr "Perm"
@@ -3615,7 +3708,7 @@
#. TRANSLATORS: one single character to represent 'inode' sort mode
#. TRANSLATORS: no need to translate 'sort', it's just a context prefix
msgid "sort|i"
-msgstr ""
+msgstr "sort|i"
msgid "&Inode"
msgstr "&Inode"
@@ -3627,43 +3720,44 @@
msgstr "GID"
msgid "Owner"
-msgstr "Dono"
+msgstr "Proprietário"
msgid "Group"
msgstr "Grupo"
msgid "[dev]"
-msgstr ""
+msgstr "[dev]"
msgid "UP--DIR"
-msgstr "UP--DIR"
+msgstr "DIRETÓRIO--ACIMA"
msgid "SYMLINK"
-msgstr "Você deseja realmente sair do Midnight Commander?"
+msgstr "VÍNCULO SIMBÓLICO"
msgid "SUB-DIR"
-msgstr "SUB-DIR"
+msgstr "SUBDIRETÓRIO"
msgid "<readlink failed>"
-msgstr "<erro ao ler ligação>"
+msgstr "<erro ao ler o vínculo>"
#, c-format
msgid "%s in %d file"
msgid_plural "%s in %d files"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s em %d arquivo"
+msgstr[1] "%s em %d arquivos"
+msgstr[2] "%s em %d arquivos"
msgid "Panelize"
-msgstr ""
+msgstr "No painel"
msgid "Unknown tag on display format:"
-msgstr ""
+msgstr "A descrição não é conhecida para o formato exibido:"
msgid "&Files only"
-msgstr "Apenas &arquivos"
+msgstr "Apenas os &arquivos"
msgid "&Case sensitive"
-msgstr ""
+msgstr "Diferen&ciar as letras maiúsculas das minúsculas"
msgid "Select"
msgstr "Selecionar"
@@ -3671,18 +3765,22 @@
msgid "Unselect"
msgstr "Desselecionar"
+msgid "Filter"
+msgstr "Filtro"
+
msgid "Do you really want to execute?"
-msgstr ""
+msgstr "Você realmente quer executar?"
msgid "Cannot read directory contents"
-msgstr ""
+msgstr "Não é possível ler o conteúdo do diretório"
msgid "User supplied format looks invalid, reverting to default."
msgstr ""
-"Formato disponibilizado pelo usuário parece inválido, voltando ao padrão."
+"O formato disponibilizado pelo usuário parece não ser válido, voltando para "
+"o formato padrão."
msgid "&Add new"
-msgstr "&Adicionar Novo"
+msgstr "&Adicionar novo"
msgid "External panelize"
msgstr "Painéis externos"
@@ -3694,90 +3792,107 @@
msgstr "Comando"
msgid "Add to external panelize"
-msgstr ""
+msgstr "Adicionar ao painel externo"
msgid "Enter command label:"
-msgstr ""
+msgstr "Insira a descrição do comando:"
-msgid "Cannot invoke command."
-msgstr "Impossível executar comando"
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Painel externo:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Falha ao fechar conector"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Painel externo:\n"
+"Ocorreu uma falha ao ler os dados do stdout filho:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
+"Não foi possível executar o painel externo em um diretório que não seja local"
msgid "Modified git files"
-msgstr ""
+msgstr "Arquivos do git modificados"
msgid "Find rejects after patching"
-msgstr "A busca foi rejeitada após a atualização"
+msgstr "A pesquisa foi rejeitada após a atualização"
msgid "Find *.orig after patching"
-msgstr " Procurar *.orig após atualização"
+msgstr "Pesquisar o arquivo *.orig após a atualização"
msgid "Find SUID and SGID programs"
-msgstr "Procurar programas SUID e SGID"
+msgstr "Pesquisar os programas SUID e SGID"
#, c-format
msgid ""
"Cannot open the %s file for writing:\n"
"%s\n"
msgstr ""
-"Impossivel abrir arquivo %s para escrita:\n"
+"Não é possível abrir o arquivo %s para \n"
+"escrita:\n"
"%s\n"
#, c-format
msgid "Copy \"%s\" directory to:"
-msgstr "Copiar diretório \"%s\" para:"
+msgstr "Copiar o diretório \"%s\" para:"
#, c-format
msgid "Move \"%s\" directory to:"
-msgstr "Mover diretório \"%s\" para:"
+msgstr "Mover o diretório \"%s\" para:"
#, c-format
msgid ""
"Cannot stat the destination\n"
"%s"
msgstr ""
+"Não é possível estabelecer o destino\n"
+"%s"
#, c-format
msgid "Delete %s?"
-msgstr ""
+msgstr "Você quer excluir %s?"
msgid "ButtonBar|Static"
-msgstr "ButtonBar|Estatística"
+msgstr "ButtonBar|Estatísticas"
msgid "ButtonBar|Dynamc"
-msgstr "ButtonBar|Dinamico"
+msgstr "ButtonBar|Dinâmico"
msgid "ButtonBar|Rescan"
-msgstr "ButtonBar|Rescan"
+msgstr "ButtonBar|Analisar"
msgid "ButtonBar|Forget"
msgstr "ButtonBar|Esquecer"
msgid "ButtonBar|Rmdir"
-msgstr "ButtonBar|Rmdir"
+msgstr "ButtonBar|Remover o diretório"
#, c-format
msgid ""
"Cannot write to the %s file:\n"
"%s\n"
msgstr ""
-"Impossível escrever para o arquivo %s :\n"
+"Não é possível escrever no arquivo %s :\n"
"%s\n"
msgid "Help file format error\n"
-msgstr ""
+msgstr "Erro no formato do arquivo de ajuda\n"
msgid "Internal bug: Double start of link area"
msgstr ""
+"Ocorreu um problema interno devido a inicialização de duas áreas de vínculo"
#, c-format
msgid "Cannot find node %s in help file"
-msgstr ""
+msgstr "Não é possível encontrar o nó %s no arquivo de ajuda"
msgid "Help"
msgstr "Ajuda"
@@ -3789,10 +3904,10 @@
msgstr "ButtonBar|Anterior"
msgid "Learn keys"
-msgstr "Aprender teclas"
+msgstr "Aprender a utilizar as teclas"
msgid "Teach me a key"
-msgstr ""
+msgstr "Ensine-me a utilizar uma tecla"
#, c-format
msgid ""
@@ -3805,21 +3920,21 @@
"If you want to escape, press a single Escape key\n"
"and wait as well."
msgstr ""
-"Por favor, pressione %s\n"
-"e espere até essa mensagem sumir.\n"
+"Por favor, pressione as teclas %s\n"
+"e aguarde até que esta mensagem desapareça.\n"
"\n"
-"então, pressione ela de novo para ver se OK aparece\n"
-"próximo ao botão.\n"
+"Em seguida, pressione as teclas novamente para\n"
+"verificar se o OK será exibido próximo ao botão.\n"
"\n"
-"Se quiser desistir, pressione um ESC simples\n"
-"e aguarde."
+"Se você quiser desistir, pressione a ESC ou\n"
+"Escapar e aguarde."
msgid "Cannot accept this key"
-msgstr ""
+msgstr "Não foi possível aceitar esta tecla"
#, c-format
msgid "You have entered \"%s\""
-msgstr ""
+msgstr "Você inseriu \"%s\""
#. TRANSLATORS: This label appears near learned keys. Keep it short.
msgid "OK"
@@ -3829,8 +3944,9 @@
"It seems that all your keys already\n"
"work fine. That's great."
msgstr ""
-"Parece que todas as teclas já estão funcionando \n"
-"adequadamente. OK!"
+"Parece que todas as teclas já estão\n"
+"funcionando adequadamente. Isso\n"
+"é ótimo."
msgid "&Discard"
msgstr "&Descartar"
@@ -3839,29 +3955,39 @@
"Great! You have a complete terminal database!\n"
"All your keys work well."
msgstr ""
-"Ótimo! Já temos um mapeamento de teclas completo!\n"
-"todas as teclas funcionam bem."
+"Ótimo! Você já tem um mapeamento de teclas completo!\n"
+"Todas as suas teclas funcionam bem."
msgid ""
"Press all the keys mentioned here. After you have done it, check\n"
"which keys are not marked with OK. Press space on the missing\n"
"key, or click with the mouse to define it. Move around with Tab."
msgstr ""
+"Pressione todas as teclas mencionadas aqui. Depois de fazer\n"
+"isso, verifique quais teclas não estão marcadas com o OK.\n"
+"Pressione a tecla de espaço sobre a tecla que falta ou clique\n"
+"sobre a tecla para defini-la. Você pode se movimentar com a\n"
+"tecla Tab ou Tabulação."
#, c-format
msgid ""
"Failed to run:\n"
"%s\n"
msgstr ""
+"Ocorreu uma falha ao executar:\n"
+"%s\n"
msgid "Home directory path is not absolute"
-msgstr ""
+msgstr "O caminho do diretório pessoal não é absoluto"
msgid ""
"GNU Midnight Commander\n"
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"O Midnight Commander do GNU já\n"
+"está sendo executado neste terminal.\n"
+"O suporte ao subshell será desativado."
#, c-format
msgid ""
@@ -3869,12 +3995,15 @@
"Failed while close:\n"
"%s\n"
msgstr ""
+"\n"
+"Ocorreu uma falha ao fechar:\n"
+"%s\n"
msgid "Choose codepage"
-msgstr ""
+msgstr "Escolha a página do código"
msgid "- < No translation >"
-msgstr ""
+msgstr "- < Sem tradução >"
msgid "%b %e %Y"
msgstr "%b %e %Y"
@@ -3887,157 +4016,166 @@
"Cannot save file %s:\n"
"%s"
msgstr ""
+"Não foi possível salvar o arquivo %s:\n"
+"%s"
#, c-format
msgid "Cannot open named pipe %s\n"
-msgstr "Não foi possível abrir conexão denominada %s\n"
+msgstr "Não foi possível abrir o canal de conexão denominado %s\n"
msgid "The shell is still active. Quit anyway?"
-msgstr ""
+msgstr "O shell ainda está ativo. Você quer finalizar mesmo assim?"
#, c-format
msgid "Warning: Cannot change to %s.\n"
-msgstr "Alerta: Impossível mudar para %s.\n"
+msgstr ""
+"Aviso:\n"
+"Não foi possível alterar para %s.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "Com o editor integrado e o suporte ao Aspell"
msgid "With builtin Editor"
-msgstr ""
+msgstr "Com o editor integrado"
msgid "With optional subshell support"
-msgstr ""
+msgstr "Com suporte opcional ao subshell"
msgid "With subshell support as default"
-msgstr ""
+msgstr "Com suporte padrão ao subshell"
msgid "With support for background operations"
-msgstr ""
+msgstr "Com suporte para as operações em segundo plano"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "Com suporte ao rato/mouse no console do xterm no GNU/Linux"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "Com suporte ao rato/mouse no xterm"
msgid "With support for X11 events"
-msgstr ""
+msgstr "Com suporte para os eventos do X11"
msgid "With internationalization support"
-msgstr ""
+msgstr "Com suporte à internacionalização"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "Com suporte a várias páginas de códigos"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "Com suporte aos atributos do ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
-msgstr ""
+msgstr "Construído com o GLib %d.%d.%d\n"
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "Construído com o S-Lang %s com o banco de dados do terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Construído com o ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Construído com o ncurses (de uma versão desconhecida)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "Construído com o ncurses %s\n"
msgid "Built with ncursesw (unknown version)"
-msgstr ""
+msgstr "Construído com o ncursesw (de uma versão desconhecida)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Construído com o libssh2 %d.%d.%d\n"
msgid "Virtual File Systems:"
-msgstr ""
+msgstr "Sistemas de Arquivos Virtuais:"
msgid "Data types:"
-msgstr ""
+msgstr "Tipos de dados:"
msgid "Home directory:"
-msgstr ""
+msgstr "Diretório pessoal:"
msgid "Profile root directory:"
-msgstr ""
+msgstr "Diretório do perfil do superusuário (root):"
msgid "System data"
-msgstr ""
+msgstr "Dados do sistema"
msgid "Config directory:"
-msgstr ""
+msgstr "Diretório de configurações:"
msgid "Data directory:"
-msgstr ""
+msgstr "Diretório de dados:"
msgid "File extension handlers:"
-msgstr ""
+msgstr "Manipuladores da extensão dos arquivos:"
msgid "VFS plugins and scripts:"
-msgstr ""
+msgstr "Extensões e códigos de programação do VFS:"
msgid "User data"
-msgstr ""
+msgstr "Dados do usuário"
msgid "Cache directory:"
-msgstr ""
+msgstr "Diretório de cache:"
msgid "Debug"
-msgstr ""
+msgstr "Depuração"
msgid "ERROR:"
-msgstr ""
+msgstr "ERRO:"
msgid "True:"
-msgstr ""
+msgstr "Verdadeiro:"
msgid "False:"
-msgstr ""
+msgstr "Falso:"
msgid "Error calling program"
-msgstr "Erro ao chamar programa"
+msgstr "Ocorreu um erro ao chamar o programa"
msgid "Warning -- ignoring file"
-msgstr ""
+msgstr "Aviso -- ignorando o arquivo"
#, c-format
msgid ""
"File %s is not owned by root or you or is world writable.\n"
"Using it may compromise your security"
msgstr ""
-"Arquivo %s não pertence ao superusuário ou a você ou pode\n"
-"ser escrito por todos.\n"
-"O seu uso pode comprometer a segurança"
+"O arquivo %s não pertence ao superusuário (root) ou\n"
+"a você ou pode ser escrito por todos.\n"
+"O seu uso pode comprometer a segurança do sistema\n"
+"operacional"
msgid "Format error on file Extensions File"
-msgstr ""
+msgstr "Ocorreu um erro no formato do arquivo das extensões dos arquivos"
#, c-format
msgid "The %%var macro has no default"
-msgstr ""
+msgstr "O macro %%var não tem o padrão "
#, c-format
msgid "The %%var macro has no variable"
-msgstr ""
+msgstr "O macro %%var não tem a variável "
#, c-format
msgid "No suitable entries found in %s"
-msgstr ""
+msgstr "Nenhuma entrada adequada foi encontrada em %s"
msgid "User menu"
-msgstr ""
+msgstr "Menu do usuário"
#, c-format
msgid ""
"Cannot open cpio archive\n"
"%s"
msgstr ""
-"Impossível abrir arquivo cpio\n"
+"Não foi possível abrir o arquivo cpio\n"
"%s"
#, c-format
@@ -4045,7 +4183,7 @@
"Premature end of cpio archive\n"
"%s"
msgstr ""
-"Final prematuro do arquivo cpio\n"
+"Ocorreu o fim prematuro do arquivo cpio\n"
"%s"
#, c-format
@@ -4055,7 +4193,7 @@
"in cpio archive\n"
"%s"
msgstr ""
-"Links físicos inconsistentes de\n"
+"Alguns vínculos físicos (hardlinks) estão inconsistentes em\n"
"%s\n"
"no arquivo cpio\n"
"%s"
@@ -4069,7 +4207,7 @@
"Corrupted cpio header encountered in\n"
"%s"
msgstr ""
-"Cabeçalho cpio corrompido encontrado em\n"
+"O cabeçalho do cpio está corrompido e pode ser encontrado em\n"
"%s"
#, c-format
@@ -4077,114 +4215,128 @@
"Unexpected end of file\n"
"%s"
msgstr ""
-"Fim de arquivo inesperado\n"
+"Ocorreu o fim inesperado do arquivo\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "O arquivo tar não é consistente"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Impossível abrir arquivo %s\n"
+"Não foi possível abrir o arquivo %s\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Arquivo extfs inconsistente"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de arquivos virtual EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
-msgstr "Aviso: Não pode abrir o diretório %s\n"
+msgstr ""
+"Aviso:\n"
+"Não foi possível abrir o diretório %s\n"
#, c-format
msgid "fish: Disconnecting from %s"
-msgstr "peixe: Desconectando de %s"
+msgstr "O fish foi desconectado de %s"
msgid "fish: Waiting for initial line..."
-msgstr "peixe: Aguardando pela linha inicial..."
+msgstr "O fish está aguardando a linha inicial..."
msgid "Sorry, we cannot do password authenticated connections for now."
-msgstr "Desculpe, impossível fazer autenticação de senha no momento."
+msgstr ""
+"Desculpe-me, não é possível fazer a autenticação por senha neste momento."
#, c-format
msgid "fish: Password is required for %s"
-msgstr "fish: A senha é necessária para %s"
+msgstr "O fish necessita da senha para %s"
msgid "fish: Sending password..."
-msgstr "peixe: Enviando senha..."
+msgstr "O fish está enviando a senha..."
msgid "fish: Sending initial line..."
-msgstr "peixe: Enviando linha inicial..."
+msgstr "O fish está enviando a linha inicial..."
msgid "fish: Handshaking version..."
-msgstr "peixe: versão de handshake..."
+msgstr "A versão de protocolo(handshacking) do fish..."
msgid "fish: Getting host info..."
-msgstr "fish: Obtendo informações do servidor ..."
+msgstr "O fish está obtendo as informações do hospedeiro..."
#, c-format
msgid "fish: Reading directory %s..."
-msgstr "peixe: Lendo diretório %s..."
+msgstr "O fish está lendo o diretório %s..."
#, c-format
msgid "%s: done."
-msgstr "%s: feito."
+msgstr "%s: foi concluído com sucesso."
#, c-format
msgid "%s: failure"
-msgstr "%s: falha"
+msgstr "%s: falhou durante o processo"
#, c-format
msgid "fish: store %s: sending command..."
-msgstr "peixe: armazenar %s: enviando comando..."
+msgstr "O fish armazenou %s e está enviando o comando..."
msgid "fish: Local read failed, sending zeros"
-msgstr "peixe: leitura local falhou, enviando zeros"
+msgstr "Ocorreu um erro no fish durante a leitura local e será enviado zeros"
msgid "fish: storing file"
-msgstr "fish: armazenando arquivos"
+msgstr "O fish está armazenando o(s) arquivo(s)"
msgid "Aborting transfer..."
-msgstr "Abortando transferência..."
+msgstr "Interrompendo a transferência..."
msgid "Error reported after abort."
-msgstr "Erro reportado depois de abortar."
+msgstr "O erro foi reportado depois será finalizado."
msgid "Aborted transfer would be successful."
-msgstr "Transferência abortada poderia ser bem sucedida."
+msgstr "A transferência foi interrompida, mas poderia ser bem sucedida."
#, c-format
msgid "ftpfs: Disconnecting from %s"
-msgstr "ftpfs: Desconectando de %s"
+msgstr "O ftpfs foi desconectando de %s"
#, c-format
msgid "FTP: Password required for %s"
-msgstr "FTP: Senha necessária para %s"
+msgstr "O FTP necessita de uma senha para %s"
msgid "ftpfs: sending login name"
-msgstr "ftpfs: enviando nome de login"
+msgstr "O ftpfs está enviando o nome de usuário"
msgid "ftpfs: sending user password"
-msgstr "ftpfs: enviando senha do usuário"
+msgstr "O ftpfs está enviando a senha do usuário"
#, c-format
msgid "FTP: Account required for user %s"
-msgstr "FTP: Conta necessários para o usuário %s"
+msgstr "O FTP necessita da conta do usuário para %s"
msgid "Account:"
msgstr "Conta:"
msgid "ftpfs: sending user account"
-msgstr "ftpfs: enviando a conta do usuário"
+msgstr "O ftpfs está enviando a conta do usuário"
msgid "ftpfs: logged in"
-msgstr "ftpfs: logado"
+msgstr "O ftpfs está autenticado"
#, c-format
msgid "ftpfs: Login incorrect for user %s "
-msgstr "ftpfs: Login incorreto para usuário %s "
+msgstr "A está autenticação do ftpfs não está correta para o usuário %s "
msgid "ftpfs: Invalid host name."
-msgstr "ftpfs: nome de host inválido."
+msgstr "O nome do hospedeiro para o ftpfs não é válido."
#, c-format
msgid "ftpfs: %s"
@@ -4192,81 +4344,112 @@
#, c-format
msgid "ftpfs: making connection to %s"
-msgstr "ftpfs: fazendo conexão para %s"
+msgstr "O ftpfs está estabelecendo a conexão para %s"
msgid "ftpfs: connection interrupted by user"
-msgstr "ftpfs: conexão interrompida pelo usuário"
+msgstr "A conexão do ftpfs foi interrompida pelo usuário"
#, c-format
msgid "ftpfs: connection to server failed: %s"
-msgstr "ftpfs: conexão para o servidor falhou: %s"
+msgstr "A conexão do ftpfs com o servidor falhou: %s"
#, c-format
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+"Aguardando para tentar novamente... %d(pressione as teclas Control+G para "
+"cancelar)"
+
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+"Não foi possível o ftpfs realizar a tradução do endereço para o nome: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+"O ftpfs está realizando a tentativa de reconectar ao servidor, tentativa %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "Não foi possível o ftpfs obter o nome do soquete: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "Não foi possível o ftpfs reconectar ao servidor"
msgid "ftpfs: invalid address family"
-msgstr "ftpfs: família de endereço inválido"
+msgstr "A família de endereço do ftpfs não é válida"
#, c-format
msgid "ftpfs: could not create socket: %s"
-msgstr "ftpfs: não foi possível criar socket: %s"
+msgstr "Não foi possível o ftpfs criar o soquete: %s"
msgid "ftpfs: could not setup passive mode"
-msgstr "ftpfs: não foi possível configurar modo passivo"
+msgstr "Não foi possível o ftpfs configurar modo passivo"
msgid "ftpfs: aborting transfer."
-msgstr "ftpfs: abortando transferência."
+msgstr "O ftpfs está interrompendo a transferência."
#, c-format
msgid "ftpfs: abort error: %s"
-msgstr "ftpfs: erro: %s"
+msgstr "Ocorreu um erro no ftpfs: %s"
msgid "ftpfs: abort failed"
-msgstr "ftpfs: cancelamento falhou"
+msgstr "O ftpfs falhou ao ser interrompido"
msgid "ftpfs: CWD failed."
-msgstr "ftpfs: CWD falhou."
+msgstr "O ftpfs falhou no CWD."
msgid "ftpfs: couldn't resolve symlink"
-msgstr "ftpfs: não é possível resolver ligação simbólica"
+msgstr "Não é possível o ftpfs resolver a vínculo simbólico"
msgid "Resolving symlink..."
-msgstr "Resolvendo ligações simbólicas..."
+msgstr "Resolvendo o vínculo simbólico..."
#, c-format
msgid "ftpfs: Reading FTP directory %s... %s%s"
-msgstr "ftpfs: Lendo diretório FTP %s... %s%s"
+msgstr "O ftpfs está lendo o diretório do FTP %s... %s%s"
msgid "(strict rfc959)"
-msgstr "(strict rfc959)"
+msgstr "(rfc959 estrito)"
msgid "(chdir first)"
-msgstr "(chdir primeiro)"
+msgstr "(primeiro o chdir)"
msgid "ftpfs: failed; nowhere to fallback to"
-msgstr "ftpfs: falha; não é possível voltar"
+msgstr "Ocorreu uma falha no ftpfs e não é possível voltar"
msgid "ftpfs: storing file"
-msgstr "ftpfs: armazenando arquivos"
+msgstr "O ftpfs está armazenando os arquivos"
msgid ""
"~/.netrc file has incorrect mode\n"
"Remove password or correct mode"
msgstr ""
-"~ /.netrc possui modo incorreto\n"
-"Remova senha ou ajuste modo "
+"O arquivo ~ /.netrc possui o modo incorreto\n"
+"Remova a senha ou corrija o modo"
+
+#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistema de arquivos virtuais SFS:\n"
+"%s"
#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
+"%s\n"
+"Aviso:\n"
+"O arquivo %s não foi encontrado\n"
#, c-format
msgid ""
"Warning: Invalid line in %s:\n"
"%s\n"
msgstr ""
-"Aviso: linha inválida em %s:\n"
+"Aviso:\n"
+"Existe uma linha que não é válida em %s:\n"
"%s\n"
#, c-format
@@ -4274,105 +4457,149 @@
"Warning: Invalid flag %c in %s:\n"
"%s\n"
msgstr ""
-"Aviso: etiqueta %c inválida em %s:\n"
+"Aviso:\n"
+"O parâmetro %c não é válido em %s:\n"
"%s\n"
#, c-format
msgid "sftp: an error occurred while reading %s: %s"
-msgstr ""
+msgstr "Ocorreu um erro no sftp durante a leitura de %s: %s"
msgid "sftp: Unable to get current user name."
-msgstr ""
+msgstr "Não foi possível o sftp obter o nome de usuário atual."
msgid "sftp: Invalid host name."
-msgstr ""
+msgstr "O nome do hospedeiro para o ftpfs não é válido."
#, c-format
msgid "sftp: %s"
+msgstr "sftp: %s"
+
+msgid "sftp: failed to convert remote host IP address into text form"
msgstr ""
+"O sftp falhou ao converter o endereço IP do hospedeiro remoto para o formato "
+"de texto"
#, c-format
msgid "sftp: making connection to %s"
-msgstr ""
+msgstr "O sftp está fazendo a conexão com %s"
msgid "sftp: connection interrupted by user"
-msgstr ""
+msgstr "A conexão do sftp foi interrompida pelo usuário"
#, c-format
msgid "sftp: connection to server failed: %s"
-msgstr ""
+msgstr "O sftp falhou na conexão com o servidor: %s"
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
+"A chave do hospedeiro do sftp foi encontrada em um formato que não é "
+"suportado pelo RSA1"
-msgid "sftp: Passphrase is empty."
-msgstr ""
+msgid "sftp: unknown host key type:"
+msgstr "O formato da chave do hospedeiro não é conhecida pelo sftp:"
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
+"Foi adicionado permanentemente\n"
+"%s (%s)\n"
+"à lista de hospedeiros conhecidos."
-msgid "sftp: Password is empty."
-msgstr ""
+msgid "sftp: cannot get the remote host key"
+msgstr "Não foi possível o sftp obter a chave do hospedeiro remoto"
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
+"O formato da chave não é suportado, não é possível o sftp verificar a chave "
+"do hospedeiro remoto"
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
+"Não foi possível o sftp processar o algoritmo da impressão digital da chave "
+"do hospedeiro"
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
+"A autenticidade do hospedeiro\n"
+"%s (%s)\n"
+"não pode ser estabelecida!\n"
+"O hash da impressão digital da chave %s é\n"
+"SHA1:%s.\n"
+"Você quer adicioná-lo à lista de hospedeiros conhecidos e continuar a "
+"conexão?"
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
+"%s (%s)\n"
+"foi encontrado na lista de hospedeiros conhecidos, mas as\n"
+"CHAVES NÃO CORRESPONDEM! ISTO PODE SER UM ATAQUE MITM!\n"
+"Tem certeza de que deseja adicioná-lo à lista de hospedeiros conhecidos e "
+"continuar conectando?"
-msgid "sftp: Listing done."
-msgstr ""
+msgid "sftp: host key verification failed"
+msgstr "O sftp falhou na verificação da chave do hospedeiro"
#, c-format
-msgid "reconnect to %s failed"
-msgstr "reconectar a %s falhou"
+msgid "sftp: Enter passphrase for %s "
+msgstr "Digite a senha do sftp para %s "
-msgid "Authentication failed"
-msgstr "Falha na autenticação"
+msgid "sftp: Passphrase is empty."
+msgstr "A senha do sftp está vazia ou em branco."
#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Erro %s criando diretório %s"
+msgid "sftp: Enter password for %s "
+msgstr "Insira a senha do sftp para %s "
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Erro %s removendo diretório %s"
+msgid "sftp: Password is empty."
+msgstr "A senha do sftp está vazia ou em branco."
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s abrindo arquivo remoto %s"
+msgid "sftp: failure establishing SSH session"
+msgstr "O sftp falhou ao estabelecer a sessão do SSH"
+
+msgid "sftp: No file handler data present for reading file"
+msgstr "O sftp falhou ao estabelecer a sessão do SSH"
#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s removendo arquivo remoto %s"
+msgid "sftp: socket error: %s"
+msgstr "Ocorreu um erro no soquete do sftp: %s"
#, c-format
-msgid "%s renaming files\n"
-msgstr "%s renomeando arquivos\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr "O sftp está listando (pressione as teclas Ctrl+G para pausar)... %s"
+
+msgid "sftp: Listing done."
+msgstr "A listagem do sftp foi concluída com sucesso."
#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
msgstr ""
-"Impossível abrir arquivo tar\n"
+"Não foi possível abrir arquivo tar\n"
"%s"
msgid "Inconsistent tar archive"
-msgstr "Arquivo inconsistente"
+msgstr "O arquivo tar não é consistente"
msgid "Unexpected EOF on archive file"
-msgstr "Fim de arquivo inesperado"
+msgstr "Ocorreu o fim inesperado do arquivo EOF (final do arquivo)"
#, c-format
msgid ""
@@ -4380,16 +4607,16 @@
"doesn't look like a tar archive."
msgstr ""
"%s\n"
-"não parece ser um arquivo 'tar'."
+"não parece ser um arquivo tar."
msgid "undelfs: error"
-msgstr "undelfs: erro"
+msgstr "Ocorreu um erro no undelfs"
msgid "not enough memory"
-msgstr "memória insuficiente"
+msgstr "A quantidade de memória não é suficiente"
msgid "while allocating block buffer"
-msgstr "ao alocar buffer de bloco"
+msgstr "Ao alocar o bloco de buffer"
#, c-format
msgid "open_inode_scan: %d"
@@ -4397,131 +4624,135 @@
#, c-format
msgid "while starting inode scan %d"
-msgstr "ao iniciar inode scan %d"
+msgstr "Ao iniciar a análise do inode %d"
#, c-format
msgid "undelfs: loading deleted files information %d inodes"
-msgstr "undelfs: carregando informação de arquivos excluídos inodes %d"
+msgstr ""
+"O undelfs está carregando as informações dos arquivos excluídos pelo inodes "
+"%d"
#, c-format
msgid "while calling ext2_block_iterate %d"
-msgstr "ao chamar ext2_block_iterate %d"
+msgstr "Ao chamar ext2_block_iterate %d"
msgid "no more memory while reallocating array"
-msgstr "faltou memória enquanto realocando vetor"
+msgstr "Faltou memória enquanto estava realocando o vetor"
#, c-format
msgid "while doing inode scan %d"
-msgstr "enquanto fazendo scan de inode %d"
+msgstr "Enquanto estava fazendo a análise do inode %d"
#, c-format
msgid "Cannot open file %s"
-msgstr "Não foi possível abrir arquivo %s"
+msgstr "Não foi possível abrir o arquivo %s"
msgid "undelfs: reading inode bitmap..."
-msgstr "undelfs: lendo mapa de bits do inode..."
+msgstr "O undelfs está lendo o mapa de bits do inode..."
#, c-format
msgid ""
"Cannot load inode bitmap from:\n"
"%s"
msgstr ""
-"Não foi possível carregar bitmap inode de:\n"
+"Não foi possível carregar o mapa de bits do inode de:\n"
"%s"
msgid "undelfs: reading block bitmap..."
-msgstr "undelfs: lendo mapa de bits do bloco..."
+msgstr "O undelfs está lendo o mapa de bits do bloco..."
#, c-format
msgid ""
"Cannot load block bitmap from:\n"
"%s"
msgstr ""
-"Não foi possível carregar bitmap bloco de:\n"
+"Não foi possível carregar o mapa de bits do bloco de:\n"
"%s"
msgid "vfs_info is not fs!"
-msgstr "vfs_info não é fs!"
+msgstr "O vfs_info não é o fs!"
msgid "You have to chdir to extract files first"
-msgstr "Você tem que executar chdir para extrair arquivos primeiro"
+msgstr "Você tem que executar o chdir para extrair os arquivos primeiro"
msgid "while iterating over blocks"
-msgstr "enquanto houver iteração sobre blocos"
+msgstr "Enquanto se faz a iteração sobre os blocos"
#, c-format
msgid "Cannot open file \"%s\""
-msgstr "Não foi possível arquivo arquivo \"%s\""
+msgstr "Não foi possível abrir o arquivo \"%s\""
msgid "Ext2lib error"
-msgstr "erro de Ext2lib"
+msgstr "Ocorreu um erro no Ext2lib"
msgid "Invalid value"
-msgstr ""
+msgstr "O valor não é válido"
msgid "File was modified. Save with exit?"
-msgstr "Arquivo foi modificado. Salvar e sair?"
+msgstr "O arquivo foi modificado. Você quer salvar e sair?"
msgid "&Cancel quit"
-msgstr "&Cancelar saida"
+msgstr "&Cancelar a saída"
msgid ""
"Midnight Commander is being shut down.\n"
"Save modified file?"
msgstr ""
-"Midnight Commander está sendo finalizado.\n"
-"Salvar arquivo modificado?"
+"O Midnight Commander está sendo finalizado.\n"
+"Você quer salvar as modificações do arquivo?"
msgid "&Line number"
-msgstr ""
+msgstr "&Número da linha"
msgid "Pe&rcents"
-msgstr ""
+msgstr "Po&rcentagens"
msgid "&Decimal offset"
-msgstr ""
+msgstr "Compensação &decimal"
msgid "He&xadecimal offset"
-msgstr ""
+msgstr "Compensação he&xadecimal"
msgid "Goto"
-msgstr "Vai Para"
+msgstr "Ir para"
msgid "ButtonBar|Ascii"
msgstr "ButtonBar|Ascii"
msgid "ButtonBar|HxSrch"
-msgstr "ButtonBar|HxSrch"
+msgstr "ButtonBar|Pesquisar hexadecimal"
msgid "ButtonBar|UnWrap"
-msgstr ""
+msgstr "ButtonBar|Desenrolar"
msgid "ButtonBar|Wrap"
-msgstr ""
+msgstr "ButtonBar|Enrolar"
msgid "ButtonBar|Hex"
-msgstr ""
+msgstr "ButtonBar|Hexadecimal"
msgid "ButtonBar|Goto"
-msgstr ""
+msgstr "ButtonBar|Ir para"
msgid "ButtonBar|Raw"
-msgstr ""
+msgstr "ButtonBar|Bruto"
msgid "ButtonBar|Parse"
-msgstr ""
+msgstr "ButtonBar|Analisar"
msgid "ButtonBar|Unform"
-msgstr ""
+msgstr "ButtonBar|Desenformar"
msgid "ButtonBar|Format"
-msgstr ""
+msgstr "ButtonBar|Formatar"
#, c-format
msgid ""
"Failed to read data from child stdout:\n"
"%s"
msgstr ""
+"Falha ao ler os dados do stdout filho:\n"
+"%s"
#, c-format
msgid ""
@@ -4529,36 +4760,45 @@
"%s\n"
"Data may have been written or not"
msgstr ""
+"Ocorreu um erro ao fechar o arquivo:\n"
+"%s\n"
+"Os dados podem ter sido escritos ou não"
#, c-format
msgid ""
"Cannot save file:\n"
"%s"
msgstr ""
+"Não foi possível salvar o arquivo:\n"
+"%s"
msgid "View: "
-msgstr ""
+msgstr "Visualizar:"
#, c-format
msgid ""
"Cannot open \"%s\"\n"
"%s"
msgstr ""
+"Não foi possível abrir \"%s\"\n"
+"%s"
msgid "Cannot view: not a regular file"
-msgstr ""
+msgstr "Não é possível visualizar porque não é um arquivo normal"
#, c-format
msgid ""
"Cannot open \"%s\" in parse mode\n"
"%s"
msgstr ""
+"Não foi possível abrir \"%s\" no modo de análise\n"
+"%s"
msgid "Search done"
-msgstr ""
+msgstr "A pesquisa foi concluída com sucesso"
msgid "Continue from beginning?"
-msgstr ""
+msgstr "Você quer continuar a partir do início?"
msgid "Cannot fetch a local copy of /ftp://some.host/editme.txt"
-msgstr ""
+msgstr "Não foi possível obter uma cópia local do /ftp://some.host/editme.txt"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ro.po
^
|
@@ -8,16 +8,17 @@
# 666ac67b8cef279621e9f9f0d4368bd5_672ede5, 2018
# 7ad110ef65cb8fea3e45887cffdf497a_28ca6f3 <3e77beb79c064caff61514bbc685d086_451299>, 2016
# Nicolae Crefelean, 2014,2019
+# Simona Iacob <s@zp1.net>, 2021-2022
# Slava Zanko <slavazanko@gmail.com>, 2011
# Sorin Sfirlogea, 2016
# Vitalie Ciubotaru <vitalie@ciubotaru.tk>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Simona Iacob <s@zp1.net>, 2021-2022\n"
"Language-Team: Romanian (http://www.transifex.com/mc/mc/language/ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
@@ -83,30 +84,6 @@
msgid "FATAL: not a directory:"
msgstr "FATAL: nu este un dosar:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "A apărut o eroare în timpul migrării setărilor de utilizator: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Vechile tale setări au fost migrate din %s\n"
-"în dosarele recomandate de Freedesktop.\n"
-"Pentru mai multe informații, te rog vizitează\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Vechile tale setări au fost migrate din %s\n"
-"în %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -195,12 +172,12 @@
msgid "True color not supported with ncurses."
msgstr "CULORI REALE nu sunt acceptate cu ncurses."
-msgid "True color not supported in this slang version."
-msgstr "CULORI REALE nu sunt acceptate în această versiune slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Terminalul dvs. nu pare ca nu suporta 256 de culori."
+msgid "True color not supported in this slang version."
+msgstr "CULORI REALE nu sunt acceptate în această versiune slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Setați COLORTERM=truecolor dacă terminalul dvs. suporta culori reale."
@@ -491,25 +468,31 @@
msgstr "Variabila de mediu TERM nu este setată!\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Nu se poate verifica conducta SIGWINCH"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Nu se poate crea conducta pentru SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Nu se poate configura capătul de scriere al conductei SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Nu se poate configura capătul de citire al conductei SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
@@ -554,6 +537,9 @@
"Eroare neașteptată în select() se accesează datele dintr-un proces copil :\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Nu se poate închide descriptorul de țeavă (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -562,18 +548,6 @@
"Eroare surpriza in waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Atenție"
-
-msgid "Pipe failed"
-msgstr "Pipe a eșuat"
-
-msgid "Dup failed"
-msgstr "Dup eșuat"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Eroare de dup a erorii vechi de pipe"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache-ul dosarelor a expirat pentru %s"
@@ -699,12 +673,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Înregistrează dialogul ftp în fișierul specificat"
-msgid "Set debug level"
-msgstr "Nivelul de depanare"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Lansează vizualizatorul pe un fișier"
@@ -1041,15 +1009,6 @@
msgid "Two files are needed to compare"
msgstr "Sunt necesare două fișiere pentru comparare"
-msgid "Choose syntax highlighting"
-msgstr "Alege sintaxa de evidenţiere"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Reîncarcă sintaxa curentă >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Se încarcă: %3d%%"
@@ -1084,6 +1043,9 @@
"Fișierul \"%s\" este prea mare.\n"
"Îl deschizi oricum?"
+msgid "Warning"
+msgstr "Atenție"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Eroare la citirea din pipe: %s"
@@ -1092,14 +1054,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Nu se poate deschide pipe pentru citire: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Caut %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Caut %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Fișierul are hard-links. Desprinzi înainte de a salva?"
@@ -1145,9 +1099,6 @@
msgid "Save As"
msgstr "Salvează ca"
-msgid "Collect completions"
-msgstr "Colecționează completări"
-
msgid "&Quick save"
msgstr "Salvare &rapidă"
@@ -1178,27 +1129,6 @@
msgid "Cannot save file"
msgstr "Nu se poate salva fișierul"
-msgid "Delete macro"
-msgstr "Șterge macro"
-
-msgid "Press macro hotkey:"
-msgstr "Apasă combinația de taste pentru macro:"
-
-msgid "Macro not deleted"
-msgstr "Macro nu a fost șters"
-
-msgid "Save macro"
-msgstr "Salvează macro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Apasă noua combinație de taste pentru macro:"
-
-msgid "Repeat last commands"
-msgstr "Repetă ultimele comenzi"
-
-msgid "Repeat times:"
-msgstr "Număr de repetări:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Confirmă salvarea fișierului: \"%s\""
@@ -1233,13 +1163,6 @@
msgid "&Local"
msgstr "&Local"
-msgid "Replace"
-msgstr "Înlocuiește"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld înlocuiri efectuate"
-
msgid "[NoName]"
msgstr "[FărăNume]"
@@ -1295,9 +1218,10 @@
msgid "Run sort"
msgstr "Rulează sortarea"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Introdu opțiunile de sortare (vezi pagina de manual) separate prin spațiu:"
+"Introduceți opțiunile de sortare (a se vedea pagina(1) de manual sort) "
+"separate prin spații albe:"
msgid "Sort"
msgstr "Sortare"
@@ -1349,35 +1273,35 @@
"Textul curent a fost modificat fără a se salva fișierul.\n"
"Dacă se continuă schimbările vor fi pierdute."
-msgid "In se&lection"
-msgstr "În se&lecție"
+msgid "Cancel"
+msgstr "Renunță"
-msgid "&Find all"
-msgstr "&Găsește tot"
+msgid "Collect completions"
+msgstr "Colecționează completări"
-msgid "Enter replacement string:"
-msgstr "Introdu șirul de înlocuire:"
+msgid "NoName"
+msgstr "FărăNume"
-msgid "Replace with:"
-msgstr "Înlocuiește cu:"
+msgid "Save macro"
+msgstr "Salvează macro"
-msgid "&Replace"
-msgstr "&Înlocuiește"
+msgid "Press the macro's new hotkey:"
+msgstr "Apasă noua combinație de taste pentru macro:"
-msgid "A&ll"
-msgstr "Toa&te"
+msgid "Delete macro"
+msgstr "Șterge macro"
-msgid "&Skip"
-msgstr "&Sar"
+msgid "Press macro hotkey:"
+msgstr "Apasă combinația de taste pentru macro:"
-msgid "Confirm replace"
-msgstr "Confirmă înlocuirea"
+msgid "Macro not deleted"
+msgstr "Macro nu a fost șters"
-msgid "Cancel"
-msgstr "Renunță"
+msgid "Repeat last commands"
+msgstr "Repetă ultimele comenzi"
-msgid "NoName"
-msgstr "FărăNume"
+msgid "Repeat times:"
+msgstr "Număr de repetări:"
msgid "&Open file..."
msgstr "D&eschide fișier..."
@@ -1389,7 +1313,7 @@
msgstr "În&chide"
msgid "&History..."
-msgstr ""
+msgstr "&Istoric..."
msgid "Save &as..."
msgstr "Salvează c&a..."
@@ -1667,6 +1591,45 @@
msgid "Editor options"
msgstr "Opțiuni editor"
+msgid "In se&lection"
+msgstr "În se&lecție"
+
+msgid "&Find all"
+msgstr "&Găsește tot"
+
+msgid "Enter replacement string:"
+msgstr "Introdu șirul de înlocuire:"
+
+msgid "Replace"
+msgstr "Înlocuiește"
+
+msgid "Replace with:"
+msgstr "Înlocuiește cu:"
+
+msgid "&Replace"
+msgstr "&Înlocuiește"
+
+msgid "A&ll"
+msgstr "Toa&te"
+
+msgid "&Skip"
+msgstr "&Sar"
+
+msgid "Confirm replace"
+msgstr "Confirmă înlocuirea"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Caut %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Caut %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld înlocuiri efectuate"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1674,8 +1637,8 @@
"Un editor de text ușor de utilizat\n"
"creat pentru Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr ""
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 Fundația pentru Software Liber"
msgid "About"
msgstr "Despre"
@@ -1794,6 +1757,15 @@
msgid "Select language"
msgstr "Selectează limba"
+msgid "Choose syntax highlighting"
+msgstr "Alege sintaxa de evidenţiere"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Reîncarcă sintaxa curentă >"
+
msgid "Load syntax file"
msgstr "Încarcă fișier de sintaxă"
@@ -1831,6 +1803,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Nu o consolă xterm sau Linux;\n"
+"subshell-ul nu poate fi comutat."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Tastați `exit' pentru a reveni în Midnight Commander"
@@ -1858,7 +1832,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Permisiuni (octal): %o"
msgid "Chown advanced command"
msgstr "Comandă avansată chown"
@@ -1985,7 +1959,7 @@
msgstr "Tematică:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Umbre"
msgid "Appearance"
msgstr "Aspect"
@@ -2198,19 +2172,6 @@
msgstr "Sarcini în fundal"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Parola pentru \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domeniu:"
-
-msgid "Username:"
-msgstr "Nume proprietar:"
-
-msgid "SMB authentication"
-msgstr "Autentificare SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2219,79 +2180,79 @@
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Ștergere securizată"
msgid "Undelete"
-msgstr ""
+msgstr "Anuleaza ștergerea"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Actualizări sincronizate"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Actualizări sincronizate ale directoarelor"
msgid "Immutable"
-msgstr ""
+msgstr "Imuabil"
msgid "Append only"
-msgstr ""
+msgstr "Doar adăugare"
msgid "No dump"
-msgstr ""
+msgstr "Nu se aruncă"
msgid "No update atime"
-msgstr ""
+msgstr "Nici o actualizare atime"
msgid "Compress"
-msgstr ""
+msgstr "Comprimare"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Clustere comprimate"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Fișier murdar comprimat"
msgid "Compression raw access"
-msgstr ""
+msgstr "Compresie acces brut"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Inode criptat"
msgid "Journaled data"
-msgstr ""
+msgstr "Date jurnalizate"
msgid "Indexed directory"
-msgstr ""
+msgstr "Director indexat"
msgid "No tail merging"
-msgstr ""
+msgstr "Nici o îmbinare a cozii"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Partea superioară a ierarhiilor de directoare"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Inode folosește extents"
msgid "Huge_file"
-msgstr ""
+msgstr "Huge_fișier"
msgid "No COW"
-msgstr ""
+msgstr "Fără COW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Acces direct pentru fișiere"
msgid "Casefolded file"
-msgstr ""
+msgstr "Dosar împăturit"
msgid "Inode has inline data"
-msgstr ""
+msgstr "Inode are date în linie"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Ierarhia proiectului"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Inode protejat de Verity"
msgid "&Marked all"
msgstr "&Tot marc."
@@ -2303,22 +2264,26 @@
msgstr "Şter&g marc."
msgid "Chattr command"
-msgstr ""
+msgstr "Comanda Chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Nu se poate chattr \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
-msgstr ""
+msgstr "Nu se pot modifica atributele pe sisteme de fișiere non-locale"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Nu se pot obține indicatorii de \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
msgstr "Setează ID &proprietar la executare"
@@ -2416,12 +2381,6 @@
msgid "Cannot change directory"
msgstr "Nu pot deschide directorul %s"
-msgid "Filter"
-msgstr "Filtru"
-
-msgid "Set expression for filtering filenames"
-msgstr "Folosește expresia pentru filtrarea numelor de fișiere"
-
#, c-format
msgid "Link %s to:"
msgstr "Leagă %s la:"
@@ -2527,9 +2486,6 @@
msgid "Shell link to machine"
msgstr "Legătură shell către mașina"
-msgid "SMB link to machine"
-msgstr "Legătură SMB către mașina"
-
msgid "Undelete files on an ext2 file system"
msgstr "Recuperare fișiere dintr-o partiție de tip ext2"
@@ -2568,18 +2524,32 @@
"Nu se poate crea fișierul temporar pentru linia de comandă\n"
"%s"
+msgid "Pipe failed"
+msgstr "Pipe a eșuat"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"Aveți un fișier neactualizat %s.\n"
+"Midnight Commander folosește acum %s fișierul.\n"
+"Vă rugăm să copiați modificările din fișierul vechi în cel nou."
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s eroare fișier"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formatul fișierului %smc.ext a fost schimbat în versiunea 3.0. Se pare că "
-"instalarea a eșuat. Te rog să obții o copie din pachetul Midnight Commander."
+"Formatul fișierului %s%s s-a schimbat odată cu versiunea 4.0. Se pare că "
+"instalarea a eșuat. Vă rugăm să obțineți o copie nouă din pachetul Midnight "
+"Commander."
#, c-format
msgid "%s file error"
@@ -2587,11 +2557,12 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formatul fișierului %s a fost schimbat în versiunea 3.0. Vei putea să îl "
-"copiezi din %smc.ext sau poți folosi acel fișier ca exemplu."
+"Formatul fișierului %s s-a schimbat odată cu versiunea 4.0. Este posibil să "
+"doriți să îl copiați de la%s%s sau să utilizați acest fișier ca exemplu de "
+"scriere."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Copiere"
@@ -2885,6 +2856,15 @@
msgid "(stalled)"
msgstr "(oprit)"
+msgid "Incomplete file was retrieved"
+msgstr "A fost recuperat un fișier incomplet"
+
+msgid "&Keep"
+msgstr "&Păstrează"
+
+msgid "&Continue copy"
+msgstr "&Continuați să copiați"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2901,12 +2881,6 @@
"Nu se poate închide fișierul destinație \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Fișierul a fost transferat incomplet. Îl păstrez?"
-
-msgid "&Keep"
-msgstr "&Păstrează"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3025,8 +2999,8 @@
msgstr "Sarcină în fundal: Fișierul există"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Fișiere procesate: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Fișiere prelucrate: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3053,8 +3027,8 @@
msgstr " Total: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Total: %s/%s "
+msgid " Total: %s / %s "
+msgstr " Total: %s / %s "
msgid "Source"
msgstr "Sursă"
@@ -3106,7 +3080,7 @@
msgstr "formatul de &listare "
msgid "&Sort order..."
-msgstr "&Ordinea sortării..."
+msgstr "&Ordinea de sortare..."
msgid "&Filter..."
msgstr "&Filtru..."
@@ -3120,11 +3094,8 @@
msgid "S&hell link..."
msgstr "Conectare s&hell..."
-msgid "S&FTP link..."
-msgstr "Conectare S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Conectare SM&B..."
+msgid "SFTP li&nk..."
+msgstr "SFTP li&nk..."
msgid "Paneli&ze"
msgstr "Paneli&zare"
@@ -3166,7 +3137,7 @@
msgstr "Chown &avansat"
msgid "Cha&ttr"
-msgstr ""
+msgstr "Cha&ttr"
msgid "&Rename/Move"
msgstr "&Redenumește/Mută"
@@ -3220,7 +3191,7 @@
msgstr "&Istoric comenzi"
msgid "Viewed/edited files hi&story"
-msgstr ""
+msgstr "Fișiere vizualizate/editate hi&story"
msgid "Di&rectory hotlist"
msgstr "Listă rapidă de dosa&re"
@@ -3338,6 +3309,9 @@
msgid "&Find recursively"
msgstr "&Caută recursiv"
+msgid "Follow s&ymlinks"
+msgstr "Urmăriți s&ymlinks"
+
msgid "S&kip hidden"
msgstr "Sări &peste ascunse"
@@ -3505,8 +3479,8 @@
msgstr "Nu există date despre spațiul folosit"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Spațiu liber: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Spațiul liber: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3560,14 +3534,14 @@
msgstr "Legături: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Atribute: nu este acceptat"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Atribute: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Atribute: indisponibil"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3752,6 +3726,9 @@
msgid "Unselect"
msgstr "Deselectează"
+msgid "Filter"
+msgstr "Filtru"
+
msgid "Do you really want to execute?"
msgstr "Chiar dorești să execuți?"
@@ -3780,11 +3757,23 @@
msgid "Enter command label:"
msgstr "Introdu eticheta comenzii:"
-msgid "Cannot invoke command."
-msgstr "Nu se poate rula comanda."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Panouri externe:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Închiderea pipe a eșuat"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Panouri externe:\n"
+"nu a reușit să citească datele din stdout-ul copil:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
msgstr "Nu se poate rula panelizarea externă într-un dosar care nu este local"
@@ -3950,6 +3939,9 @@
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"GNU Midnight Commander\n"
+"rulează deja pe acest terminal.\n"
+"Suportul pentru subshell-uri va fi dezactivat."
#, c-format
msgid ""
@@ -3993,37 +3985,37 @@
msgstr "Atenție: Nu se poate schimba în %s.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "Cu editor încorporat și suport Aspell"
msgid "With builtin Editor"
-msgstr ""
+msgstr "Cu editor încorporat"
msgid "With optional subshell support"
-msgstr ""
+msgstr "Cu suport opțional pentru subshell-uri"
msgid "With subshell support as default"
-msgstr ""
+msgstr "Cu suport pentru subshell-uri în mod implicit"
msgid "With support for background operations"
-msgstr ""
+msgstr "Cu suport pentru operațiuni în fundal"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "Cu suport pentru mouse pe xterm și consola Linux"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "Cu suport pentru mouse pe xterm"
msgid "With support for X11 events"
-msgstr ""
+msgstr "Cu suport pentru evenimente X11"
msgid "With internationalization support"
-msgstr ""
+msgstr "Cu suport pentru internaționalizare"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "Cu suport pentru mai multe pagini de cod"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "Cu suport pentru atributele ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
@@ -4031,21 +4023,25 @@
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "Construit cu S-Lang %s cu baza de date terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Construit cu ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Construit cu ncurses (versiune necunoscută)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "Construit cu ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
-msgstr ""
+msgstr "Construit cu ncursesw (versiune necunoscută)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Construit cu libssh2 %d.%d.%d\n"
msgid "Virtual File Systems:"
msgstr "Sistem virtual de fișiere:"
@@ -4172,16 +4168,27 @@
"Sfârșit de fișier (EOF) neașteptat\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Arhivă tar trunchiată"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Nu pot deschide arhiva %s\n"
+"Nu se poate deschide %s arhiva\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Arhivă extfs inconsistentă"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistem de fișiere virtuale EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4299,6 +4306,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Se reîncearcă... %d (Control-G pentru a renunța)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: nu a putut face traducerea de la adresă la nume: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: încercați să vă reconectați la server, încercați %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: nu a putut obține numele socket-ului: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: nu s-a putut reconecta la server"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: familie de adrese incorectă"
@@ -4352,6 +4374,14 @@
"Înlătură parola sau corectează permisiunile"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Sistem de fișiere virtuale SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Atenție: fișierul %s nu a fost găsit\n"
@@ -4385,6 +4415,11 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: nu a reușit să convertească adresa IP a gazdei la distanță în format "
+"text"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: se efectuează conectarea la %s"
@@ -4396,6 +4431,65 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: conectarea la server a eșuat: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: a fost găsită o cheie gazdă de tip neacceptat: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: gazdă necunoscută tip cheie:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Adăugat permanent\n"
+"%s (%s)\n"
+"la lista de gazde cunoscute."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: nu se poate obține cheia gazdei la distanță"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: tip de cheie neacceptat, nu se poate verifica cheia gazdei la distanță"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: nu poate calcula hash-ul de amprentă a cheii gazdă"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Autenticitatea găzduirii\n"
+"%s (%s)\n"
+"nu poate fi stabilită!\n"
+"%s hash-ul amprentei cheie este\n"
+"SHA1:%s.\n"
+"Doriți să o adăugați la lista de gazde cunoscute și să continuați conectarea?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"se găsește în lista de gazde cunoscute, dar\n"
+"CHEILE NU SE POTRIVESC! ACESTA AR PUTEA FI UN ATAC MITM!\n"
+"Sunteți sigur că doriți să o adăugați la lista de gazde cunoscute și să "
+"continuați conectarea?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: verificarea cheii gazdă a eșuat"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Introdu parola pentru %s "
@@ -4410,8 +4504,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Parola este goală."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Eroare la stabilirea unei sesiuni SSH"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: eșec la stabilirea sesiunii SSH"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Nu există date de manipulare a citirii fișierului"
@@ -4428,33 +4522,6 @@
msgstr "sftp: Afișarea a fost efectuată."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "reconectarea la %s a eșuat"
-
-msgid "Authentication failed"
-msgstr "Autentificarea a eșuat"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Eroare %s la crearea dosarului %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Eroare %s la ștergerea dosarului %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s se deschide fișierul de la distanță %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s se șterge fișierul de la distanță %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s se redenumesc fișierele\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ru.po
^
|
@@ -7,6 +7,7 @@
# AlexL <loginov.alex.valer@gmail.com>, 2015-2020
# Alex Tkachenko <alex@bcs.zp.ua>, 1998
# and Alex Tkachenko <alex@bcs.zp.ua>, 1998
+# Andrei Stepanov, 2023
# Andrew Borodin <aborodin@vmail.ru>, 2009-2012
# Andrew V. Samoilov <sav@bcs.zp.ua>, 1999,2014
# Anton Sergeevich Chumak <nightfast@yahoo.co.uk>, 2005
@@ -16,6 +17,7 @@
# Mr GreyWolf, 2016
# Mr.GreyWolf, 2016
# NaiLi (aka jamesjames) Rootaerc <theism@mail.ru>, 2012
+# Pavel Suravezhkin, 2022
# Piotr Drąg <piotrdrag@gmail.com>, 2018
# Sergey Panov <sipan@mit.edu>, 1999
# Simple88, 2016
@@ -25,18 +27,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Andrei Stepanov, 2023\n"
"Language-Team: Russian (http://www.transifex.com/mc/mc/language/ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
-"%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
+"(n%100>=11 && n%100<=14)? 2 : 3);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -95,30 +97,6 @@
msgid "FATAL: not a directory:"
msgstr "ОШИБКА: не является каталогом:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Произошла ошибка при переносе пользовательских настроек: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Ваши старые настройки перенесены из %s\n"
-"в каталоги, рекомендованные FreeDesktop.org.\n"
-"Для более полной информации посетите страницу\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Ваши старые настройки перенесены из %s\n"
-"в %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -208,12 +186,12 @@
msgid "True color not supported with ncurses."
msgstr "True Color не поддерживается ncurses."
-msgid "True color not supported in this slang version."
-msgstr "True Color не поддерживается в этой версии slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Кажется, ваш терминал не поддерживает даже 256 цветов."
+msgid "True color not supported in this slang version."
+msgstr "True Color не поддерживается в этой версии slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Установите COLORTERM=truecolor, если ваш терминал действительно поддерживает "
@@ -575,6 +553,9 @@
"Неожиданная ошибка в select() при чтении данных из дочернего процесса:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -583,18 +564,6 @@
"Неожиданная ошибка в waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Предупреждение"
-
-msgid "Pipe failed"
-msgstr "Сбой канала"
-
-msgid "Dup failed"
-msgstr "Сбой дублирования дескриптора"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Ошибка дублирования старого канала ошибок"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Кэш каталога устарел для %s"
@@ -720,12 +689,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Записывать диалог с FTP в заданный файл"
-msgid "Set debug level"
-msgstr "Установить уровень отладки"
-
-msgid "<integer>"
-msgstr "<целое число>"
-
msgid "Launches the file viewer on a file"
msgstr "Просматривать файл"
@@ -922,7 +885,7 @@
msgstr "Введите строку для поиска:"
msgid "Cas&e sensitive"
-msgstr "У&чёт регистра"
+msgstr "С у&чётом регистра"
msgid "&Backwards"
msgstr "&Назад"
@@ -1065,15 +1028,6 @@
msgid "Two files are needed to compare"
msgstr "Для сравнения необходимы два файла"
-msgid "Choose syntax highlighting"
-msgstr "Выбор цветовыделения синтаксиса"
-
-msgid "< Auto >"
-msgstr "< Автоматически >"
-
-msgid "< Reload Current Syntax >"
-msgstr "Перезагрузить текущее цветовыделение"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Загрузка: %3d%%"
@@ -1108,6 +1062,9 @@
"Файл \"%s\" слишком большой.\n"
"Всё равно открыть?"
+msgid "Warning"
+msgstr "Предупреждение"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Ошибка чтения из канала: %s"
@@ -1116,14 +1073,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Не удалось открыть канал для чтения: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Ищем %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Ищем %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Файл имеет жёсткие ссылки. Отсоединить перед сохранением?"
@@ -1169,9 +1118,6 @@
msgid "Save As"
msgstr "Сохранить как"
-msgid "Collect completions"
-msgstr "Поиск дополнений"
-
msgid "&Quick save"
msgstr "&Быстрое сохранение"
@@ -1202,27 +1148,6 @@
msgid "Cannot save file"
msgstr "Не удалось сохранить файл"
-msgid "Delete macro"
-msgstr "Удалить макрос"
-
-msgid "Press macro hotkey:"
-msgstr "Нажмите горячую клавишу для макроса:"
-
-msgid "Macro not deleted"
-msgstr "Макрос не удалён"
-
-msgid "Save macro"
-msgstr "Сохранить макрос"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Нажмите новую клавишу макроса:"
-
-msgid "Repeat last commands"
-msgstr "Повторить последние команды"
-
-msgid "Repeat times:"
-msgstr "Количество повторов:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Подтверждаете запись файла \"%s\"?"
@@ -1257,13 +1182,6 @@
msgid "&Local"
msgstr "&Местный"
-msgid "Replace"
-msgstr "Заменить"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Осуществлено подстановок: %ld"
-
msgid "[NoName]"
msgstr "[Без имени]"
@@ -1319,8 +1237,8 @@
msgid "Run sort"
msgstr "Выполнить сортировку"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Введите параметры сортировки (man sort(1)), разделённые пробелами:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr "Введите параметры сортировки (см. man sort(1)), разделённые пробелами:"
msgid "Sort"
msgstr "Сортировка"
@@ -1372,35 +1290,35 @@
"Текущий текст был изменён и не сохранён.\n"
"Продолжение операции приведёт к потере изменений."
-msgid "In se&lection"
-msgstr "В в&ыделенном"
+msgid "Cancel"
+msgstr "Прервать"
-msgid "&Find all"
-msgstr "На&йти всё"
+msgid "Collect completions"
+msgstr "Поиск дополнений"
-msgid "Enter replacement string:"
-msgstr "Введите текст для замены:"
+msgid "NoName"
+msgstr "Без имени"
-msgid "Replace with:"
-msgstr "Заменить на:"
+msgid "Save macro"
+msgstr "Сохранить макрос"
-msgid "&Replace"
-msgstr "&Заменить"
+msgid "Press the macro's new hotkey:"
+msgstr "Нажмите новую клавишу макроса:"
-msgid "A&ll"
-msgstr "&Все"
+msgid "Delete macro"
+msgstr "Удалить макрос"
-msgid "&Skip"
-msgstr "П&ропустить"
+msgid "Press macro hotkey:"
+msgstr "Нажмите горячую клавишу для макроса:"
-msgid "Confirm replace"
-msgstr "Подтвердить замену"
+msgid "Macro not deleted"
+msgstr "Макрос не удалён"
-msgid "Cancel"
-msgstr "Прервать"
+msgid "Repeat last commands"
+msgstr "Повторить последние команды"
-msgid "NoName"
-msgstr "Без имени"
+msgid "Repeat times:"
+msgstr "Количество повторов:"
msgid "&Open file..."
msgstr "&Открыть файл..."
@@ -1690,6 +1608,45 @@
msgid "Editor options"
msgstr "Настройки редактора"
+msgid "In se&lection"
+msgstr "В в&ыделенном"
+
+msgid "&Find all"
+msgstr "На&йти всё"
+
+msgid "Enter replacement string:"
+msgstr "Введите текст для замены:"
+
+msgid "Replace"
+msgstr "Заменить"
+
+msgid "Replace with:"
+msgstr "Заменить на:"
+
+msgid "&Replace"
+msgstr "&Заменить"
+
+msgid "A&ll"
+msgstr "&Все"
+
+msgid "&Skip"
+msgstr "П&ропустить"
+
+msgid "Confirm replace"
+msgstr "Подтвердить замену"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Ищем %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Ищем %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Осуществлено подстановок: %ld"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1697,8 +1654,8 @@
"Текстовый редактор с дружественным интерфейсом пользователя.\n"
"Создан для Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Copyright (C) 1996-2022 the Free Software Foundation"
msgid "About"
msgstr "О программе"
@@ -1817,6 +1774,15 @@
msgid "Select language"
msgstr "Выбор языка"
+msgid "Choose syntax highlighting"
+msgstr "Выбор цветовыделения синтаксиса"
+
+msgid "< Auto >"
+msgstr "< Автоматически >"
+
+msgid "< Reload Current Syntax >"
+msgstr "Перезагрузить текущее цветовыделение"
+
msgid "Load syntax file"
msgstr "Загрузить файл синтаксиса"
@@ -1854,6 +1820,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Это не консоль xterm или Linux;\n"
+"подоболочка не может быть переключена."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Введите exit для возврата в Midnight Commander"
@@ -1881,7 +1849,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Доступ (восьмеричный): %o"
msgid "Chown advanced command"
msgstr "Расширенная команда chown"
@@ -2008,13 +1976,13 @@
msgstr "Скин:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Тени"
msgid "Appearance"
msgstr "Оформление"
msgid "Case &insensitive"
-msgstr "Без &учета регистра"
+msgstr "Без &учёта регистра"
msgid "Use panel sort mo&de"
msgstr "&Использовать сортировку панели"
@@ -2221,19 +2189,6 @@
msgstr "Фоновые задания"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Пароль для \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Домен:"
-
-msgid "Username:"
-msgstr "Имя пользователя:"
-
-msgid "SMB authentication"
-msgstr "Идентификация SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2242,79 +2197,79 @@
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "Надёжное удаление"
msgid "Undelete"
-msgstr ""
+msgstr "Восстановить"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Синхронные обновления"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Синхронные обновления каталога"
msgid "Immutable"
-msgstr ""
+msgstr "Неизменный"
msgid "Append only"
-msgstr ""
+msgstr "Только добавить"
msgid "No dump"
-msgstr ""
+msgstr "Дампа нет"
msgid "No update atime"
-msgstr ""
+msgstr "Без обновления atime"
msgid "Compress"
-msgstr ""
+msgstr "Сжатие"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Сжатые кластеры"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Сжатый несохранённый файл"
msgid "Compression raw access"
-msgstr ""
+msgstr "Сжатие необработанного доступа"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Зашифрованный inode"
msgid "Journaled data"
-msgstr ""
+msgstr "Добавленные в журнал данные"
msgid "Indexed directory"
-msgstr ""
+msgstr "Проиндексированный каталог"
msgid "No tail merging"
-msgstr ""
+msgstr "Без слияния в конец"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Верх иерархии каталога"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Inode использует экстенты"
msgid "Huge_file"
-msgstr ""
+msgstr "Огромный_файл"
msgid "No COW"
-msgstr ""
+msgstr "Без COW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Прямой доступ для файлов"
msgid "Casefolded file"
-msgstr ""
+msgstr "Файл с игнорированием регистра"
msgid "Inode has inline data"
-msgstr ""
+msgstr "Inode имеет встроенные данные"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Иерархия проекта"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Истинность защищённого inode"
msgid "&Marked all"
msgstr "Отметить вс&ё"
@@ -2326,22 +2281,26 @@
msgstr "&Очистить помеченное"
msgid "Chattr command"
-msgstr ""
+msgstr "Команда chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Не удалось изменить атрибуты \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
-msgstr ""
+msgstr "Не удалось изменить атрибуты на нелокальной файловой системе"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Невозможно получить флаги \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
msgstr "присв. &UID при выполнении"
@@ -2383,7 +2342,7 @@
msgstr "Имя"
msgid "Permissions (octal):"
-msgstr "Доступ (восьмеричный)"
+msgstr "Доступ (восьмеричный):"
msgid "Owner name:"
msgstr "Владелец:"
@@ -2439,12 +2398,6 @@
msgid "Cannot change directory"
msgstr "Не удалось сменить каталог"
-msgid "Filter"
-msgstr "Фильтр"
-
-msgid "Set expression for filtering filenames"
-msgstr "Задайте выражение для выбора имен файлов"
-
#, c-format
msgid "Link %s to:"
msgstr "Создать ссылку с %s на:"
@@ -2550,9 +2503,6 @@
msgid "Shell link to machine"
msgstr "Shell-соединение с удалённой машиной"
-msgid "SMB link to machine"
-msgstr "SMB-соединение с удалённой с машиной"
-
msgid "Undelete files on an ext2 file system"
msgstr "Восстановление файлов на файловой системе ext2"
@@ -2578,7 +2528,7 @@
msgstr "Не удалось сохранить параметры в %s"
msgid "Cannot execute commands on non-local filesystems"
-msgstr "Не удалось выполнять команды на нелокальных файловых системах"
+msgstr "Не удалось выполнить команды на нелокальных файловых системах"
msgid "Parameter"
msgstr "Параметр"
@@ -2591,18 +2541,26 @@
"Не удалось создать временный командный файл\n"
"%s"
+msgid "Pipe failed"
+msgstr "Сбой канала"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr "ошибка файла %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Формат %smc.ext изменён с версии 3.0. Возможно, произошёл сбой при "
-"установке. Пожалуйста, возьмите свежую копию из пакета Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2610,11 +2568,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Формат файла %s изменён с версии 3.0. Вы можете либо скопировать его с %s/mc."
-"ext, либо использовать этот файл как пример и написать свой."
msgid "DialogTitle|Copy"
msgstr "Копирование"
@@ -2903,12 +2859,21 @@
"Cannot write target file \"%s\"\n"
"%s"
msgstr ""
-"ое удалось записать целевой файл \"%s\"\n"
+"Не удалось записать целевой файл \"%s\"\n"
"%s"
msgid "(stalled)"
msgstr "(застрял)"
+msgid "Incomplete file was retrieved"
+msgstr "Был получен неполный файл"
+
+msgid "&Keep"
+msgstr "&Сохранить"
+
+msgid "&Continue copy"
+msgstr "&Продолжить копирование"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2925,12 +2890,6 @@
"Не удалось закрыть целевой файл \"%s\"\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Был получен неполный файл. Сохранить?"
-
-msgid "&Keep"
-msgstr "&Сохранить"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3002,15 +2961,15 @@
#, c-format
msgid "%.2f MB/s"
-msgstr "%.2f Мб/с"
+msgstr "%.2f МБ/с"
#, c-format
msgid "%.2f KB/s"
-msgstr "%.2f кб/с"
+msgstr "%.2f кБ/с"
#, c-format
msgid "%ld B/s"
-msgstr "%ld б/с"
+msgstr "%ld Б/с"
msgid "New :"
msgstr "Новый :"
@@ -3049,7 +3008,7 @@
msgstr "Фоновый процесс: файл существует"
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr "Обработано файлов: %zu/%zu"
#, c-format
@@ -3077,14 +3036,14 @@
msgstr " Всего: %s "
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr " Всего: %s/%s "
msgid "Source"
msgstr "Источник"
msgid "Target"
-msgstr "Приемник"
+msgstr "Приёмник"
msgid "Deleting"
msgstr "Удаление"
@@ -3130,7 +3089,7 @@
msgstr "Фор&мат списка..."
msgid "&Sort order..."
-msgstr "Порядок &сортировки..."
+msgstr "Порядок &сортировки…"
msgid "&Filter..."
msgstr "&Фильтр..."
@@ -3144,11 +3103,8 @@
msgid "S&hell link..."
msgstr "S&hell-соединение..."
-msgid "S&FTP link..."
-msgstr "&SFTP-соединение..."
-
-msgid "SM&B link..."
-msgstr "SM&B-соединение..."
+msgid "SFTP li&nk..."
+msgstr "SFTP-соед&инение…"
msgid "Paneli&ze"
msgstr "Па&нелизация"
@@ -3190,7 +3146,7 @@
msgstr "Права (рас&ширенные)"
msgid "Cha&ttr"
-msgstr ""
+msgstr "Изменение а&трибутов"
msgid "&Rename/Move"
msgstr "Пере&именование"
@@ -3363,6 +3319,9 @@
msgid "&Find recursively"
msgstr "Найти ре&курсивно"
+msgid "Follow s&ymlinks"
+msgstr "Следуйте s&ymlinks"
+
msgid "S&kip hidden"
msgstr "Пропускать скр&ытые"
@@ -3531,7 +3490,7 @@
msgstr "Нет информации о пространстве"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr "Своб. место: %s/%s (%d%%)"
#, c-format
@@ -3587,14 +3546,14 @@
msgstr "Ссылок: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Атрибуты: не поддерживаются"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Атрибуты: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Атрибуты: недоступно"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3772,7 +3731,7 @@
msgstr "Только файлы"
msgid "&Case sensitive"
-msgstr "Учет ре&гистра"
+msgstr "С учётом ре&гистра"
msgid "Select"
msgstr "Отметить группу"
@@ -3780,6 +3739,9 @@
msgid "Unselect"
msgstr "Снять отметку"
+msgid "Filter"
+msgstr "Фильтр"
+
msgid "Do you really want to execute?"
msgstr "Вы действительно хотите выполнить это?"
@@ -3807,14 +3769,28 @@
msgid "Enter command label:"
msgstr "Введите название команды:"
-msgid "Cannot invoke command."
-msgstr "Не удалось выполнить команду."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Внешнее панелизирование:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Сбой закрытия канала"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Внешнее панелизирование:\n"
+"не удалось прочитать данные из дочернего stdout:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
-msgstr "Не удалось выполнить эту команду, находясь не в локальном каталоге"
+msgstr ""
+"Невозможно выполнить внешнее панелизирование, находясь не в локальном "
+"каталоге"
msgid "Modified git files"
msgstr "Изменённые файлы под контролем git"
@@ -3918,7 +3894,7 @@
"Пожалуйста, нажмите клавишу %s\n"
"и подождите, пока это сообщение пропадёт.\n"
"\n"
-"Затем нажмите её еще раз, чтобы убедиться,\n"
+"Затем нажмите её ещё раз, чтобы убедиться,\n"
"что справа от её названия появилось \"OK\".\n"
"\n"
"Если вы хотите прервать обучение, нажмите\n"
@@ -4015,7 +3991,7 @@
msgstr "Не удалось открыть именованный канал %s\n"
msgid "The shell is still active. Quit anyway?"
-msgstr "Оболочка всё еще активна. Всё равно выйти?"
+msgstr "Оболочка всё ещё активна. Всё равно выйти?"
#, c-format
msgid "Warning: Cannot change to %s.\n"
@@ -4052,7 +4028,7 @@
msgstr "С поддержкой многих кодировок"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "С поддержкой ext2fs атрибутов"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
@@ -4076,6 +4052,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr "С библиотекой ncursesw (версия неизвестна)"
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Скомпилирован с библиотекой libssh2 версии %d.%d.%d\n"
+
msgid "Virtual File Systems:"
msgstr "Виртуальная файловая система:"
@@ -4202,16 +4182,27 @@
"Неожиданный конец файла\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Несогласованный архив tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Не удалось открыть архив %s\n"
+"Невозможно открыть %s архив\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Несогласованный архив extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"EXTFS виртуальная файловая система:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4327,6 +4318,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Ожидание повтора попытки... %d (Control-G для отмены)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: не удалось переподключиться к серверу"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: неверный адрес системы."
@@ -4380,6 +4386,14 @@
"Удалите пароль или исправьте режим доступа/владения"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"SFS виртуальная файловая система:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Предупреждение: файл %s не найден\n"
@@ -4413,6 +4427,10 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: не удалось преобразовать IP-адрес удаленного хоста в текстовую форму"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: осуществляется соединение с %s"
@@ -4424,6 +4442,65 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: сбой соединения с сервером: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: найден ключ хоста неподдерживаемого типа: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: неизвестный тип ключа хоста:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Добавлено на постоянной основе\n"
+"%s (%s)\n"
+"к списку известных хостов."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: невозможно получить ключ удаленного хоста"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: неподдерживаемый тип ключа, невозможно проверить ключ удаленного хоста"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: невозможно вычислить хэш отпечатка ключа хоста"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Подлинность хоста\n"
+"%s (%s)\n"
+"не может быть установлена!\n"
+"%s хэш отпечатка ключа\n"
+"SHA1:%s.\n"
+"Вы хотите добавить его в список известных хостов и продолжить подключение?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"найден в списке известных хостов, но\n"
+"КЛЮЧИ НЕ СОВПАДАЮТ! ЭТО МОЖЕТ БЫТЬ MITM АТАКОЙ!\n"
+"Вы уверены, что хотите добавить его в список известных хостов и продолжить "
+"подключение?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: проверка ключа хоста не удалась"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: введите парольную фразу для %s "
@@ -4438,8 +4515,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: пароль пуст."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: сбой установки SSH-сессии"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: сбой при установлении SSH сессии"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: нет обработчика считываемого файла"
@@ -4456,33 +4533,6 @@
msgstr "sftp: Чтение списка файлов завершено."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "Сбой повторного соединения к %s"
-
-msgid "Authentication failed"
-msgstr "Сбой идентификации"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Ошибка %s при создании каталога %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Ошибка %s при удалении каталога %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s при открытии файла %s с удалённой машины"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s при удалении файла %s с удалённой машины"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s при переименовании файла\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/sk.po
^
|
@@ -14,10 +14,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: hualahyja, 2019\n"
"Language-Team: Slovak (http://www.transifex.com/mc/mc/language/sk/)\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
@@ -83,30 +83,6 @@
msgid "FATAL: not a directory:"
msgstr "CHYBA: nie je adresár:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Vyskytla sa chyba počas migrácie používateľských nastavení: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Vaše staré nastavenia boli migrované z %s\n"
-"do adresárov, ktoré odporúča Freedesktop.\n"
-"Ďalšie informácie nájdete na\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Vaše staré nastavenia boli migrované z %s\n"
-"to %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -194,12 +170,12 @@
msgid "True color not supported with ncurses."
msgstr "Režim True color nie je v ncurses podporovaný."
-msgid "True color not supported in this slang version."
-msgstr "Režim True color nie je podpora v tejto verzii slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Váš terminál asi nepodporuje ani 256 farieb."
+msgid "True color not supported in this slang version."
+msgstr "Režim True color nie je podpora v tejto verzii slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Ak váš terminál proporuje True color, nastavte COLORTERM=truecolor."
@@ -553,6 +529,9 @@
"Neočakávaná chyba v select() pri čítaní dát z procesu potomka:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -561,18 +540,6 @@
"Neočakávaná chyba vo waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Upozornenie"
-
-msgid "Pipe failed"
-msgstr "Pipe zlyhalo"
-
-msgid "Dup failed"
-msgstr "Dup zlyhalo"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Chyba pri duplikácii starej chybovej rúry"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Vyrovnávacia pamäť adresárov vypršala pre %s"
@@ -698,12 +665,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Zapisovať protokol dialógu ftp do súboru"
-msgid "Set debug level"
-msgstr "Nastaviť ladiacu úroveň"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Spustí prehliadač súborov na súbore"
@@ -1038,15 +999,6 @@
msgid "Two files are needed to compare"
msgstr "Porovnanie vyžaduje dva súbory"
-msgid "Choose syntax highlighting"
-msgstr "Vyberte zvýrazňovanie syntaxe"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Znovu načítať aktuálnu syntax >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Načítava sa: %3d%%"
@@ -1081,6 +1033,9 @@
"Súbor „%s“ je príliš veľký.\n"
"Otvoriť ho napriek tomu?"
+msgid "Warning"
+msgstr "Upozornenie"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Chyba pri čítaní z rúry: %s"
@@ -1089,14 +1044,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Nemožno otvoriť rúru na čítanie: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Hľadá sa %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Hľadanie %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Súbor má pevné odkazy. Odpojiť pred uložením?"
@@ -1142,9 +1089,6 @@
msgid "Save As"
msgstr "Uložiť ako"
-msgid "Collect completions"
-msgstr "Zhromaždiť doplnenia"
-
msgid "&Quick save"
msgstr "&Rýchle uloženie"
@@ -1175,27 +1119,6 @@
msgid "Cannot save file"
msgstr "Nemožno uložiť súbor"
-msgid "Delete macro"
-msgstr "Zmazať makro"
-
-msgid "Press macro hotkey:"
-msgstr "Stlačte kláv. skratku makra:"
-
-msgid "Macro not deleted"
-msgstr "Makro nebolo zmazané"
-
-msgid "Save macro"
-msgstr "Uložiť makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Stlačte novú kláv. skratku makra:"
-
-msgid "Repeat last commands"
-msgstr "Opakovať posledné príkazy"
-
-msgid "Repeat times:"
-msgstr "Opakovať koľkokrát:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Potvrďte uloženie súboru: „%s“"
@@ -1230,13 +1153,6 @@
msgid "&Local"
msgstr "&Miestny"
-msgid "Replace"
-msgstr "Nahradiť"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Vykonaných %ld náhrad"
-
msgid "[NoName]"
msgstr "[BezNázvu]"
@@ -1292,10 +1208,8 @@
msgid "Run sort"
msgstr "Spustiť zoradenie"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Zadajte možnosti zoradenia (pozri manuálovú stránku) oddelené netlačiteľnými "
-"znakmi:"
msgid "Sort"
msgstr "Zoradiť"
@@ -1347,35 +1261,35 @@
"Aktuálny text sa zmenil bez uloženia súboru.\n"
"Pokračovaním tieto zmeny zrušíte"
-msgid "In se&lection"
-msgstr "&Vo výbere"
+msgid "Cancel"
+msgstr "Zruš"
-msgid "&Find all"
-msgstr "&Nájsť všetky"
+msgid "Collect completions"
+msgstr "Zhromaždiť doplnenia"
-msgid "Enter replacement string:"
-msgstr "Nahradiť textom:"
+msgid "NoName"
+msgstr "BezNázvu"
-msgid "Replace with:"
-msgstr "Nahradiť textom:"
+msgid "Save macro"
+msgstr "Uložiť makro"
-msgid "&Replace"
-msgstr "&Nahradiť"
+msgid "Press the macro's new hotkey:"
+msgstr "Stlačte novú kláv. skratku makra:"
-msgid "A&ll"
-msgstr "&Všetko"
+msgid "Delete macro"
+msgstr "Zmazať makro"
-msgid "&Skip"
-msgstr "&Preskočiť"
+msgid "Press macro hotkey:"
+msgstr "Stlačte kláv. skratku makra:"
-msgid "Confirm replace"
-msgstr "Potvrdiť nahradenie"
+msgid "Macro not deleted"
+msgstr "Makro nebolo zmazané"
-msgid "Cancel"
-msgstr "Zruš"
+msgid "Repeat last commands"
+msgstr "Opakovať posledné príkazy"
-msgid "NoName"
-msgstr "BezNázvu"
+msgid "Repeat times:"
+msgstr "Opakovať koľkokrát:"
msgid "&Open file..."
msgstr "Otvoriť sú&bor..."
@@ -1665,6 +1579,45 @@
msgid "Editor options"
msgstr "Voľby editora"
+msgid "In se&lection"
+msgstr "&Vo výbere"
+
+msgid "&Find all"
+msgstr "&Nájsť všetky"
+
+msgid "Enter replacement string:"
+msgstr "Nahradiť textom:"
+
+msgid "Replace"
+msgstr "Nahradiť"
+
+msgid "Replace with:"
+msgstr "Nahradiť textom:"
+
+msgid "&Replace"
+msgstr "&Nahradiť"
+
+msgid "A&ll"
+msgstr "&Všetko"
+
+msgid "&Skip"
+msgstr "&Preskočiť"
+
+msgid "Confirm replace"
+msgstr "Potvrdiť nahradenie"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Hľadá sa %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Hľadanie %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Vykonaných %ld náhrad"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1672,7 +1625,7 @@
"Používateľsky prívetivý textový editor\n"
"napísaný pre Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1792,6 +1745,15 @@
msgid "Select language"
msgstr "Vybrať jazyk"
+msgid "Choose syntax highlighting"
+msgstr "Vyberte zvýrazňovanie syntaxe"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Znovu načítať aktuálnu syntax >"
+
msgid "Load syntax file"
msgstr "Načítať súbor so syntaxou"
@@ -2196,19 +2158,6 @@
msgstr "Úlohy v pozadí"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Heslo pre \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Doména:"
-
-msgid "Username:"
-msgstr "Meno použivateľa:"
-
-msgid "SMB authentication"
-msgstr "Autentifikácia SMB"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2414,12 +2363,6 @@
msgid "Cannot change directory"
msgstr "Nepodarilo sa zmeniť adresár"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr "Nastaviť výraz na filtrovanie názvov súborov"
-
#, c-format
msgid "Link %s to:"
msgstr "Odkazovať %s na:"
@@ -2525,9 +2468,6 @@
msgid "Shell link to machine"
msgstr "Pripojiť pomocou shellu"
-msgid "SMB link to machine"
-msgstr "Pripojiť pomocou SMB"
-
msgid "Undelete files on an ext2 file system"
msgstr "Obnoviť zmazané súbory na súborovom systéme ext2"
@@ -2566,18 +2506,26 @@
"Nemožno vytvoriť dočasný súbor príkazu\n"
"%s"
+msgid "Pipe failed"
+msgstr "Pipe zlyhalo"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s chyba v súbore"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formát súboru %smc.ext sa vo verzii 3.0 zmenil. Zdá sa, že inštalácia "
-"zlyhala. Prosím, stiahnite si novú kópiu z balíka Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2585,12 +2533,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formát súboru %smc.ext sa vo verzii 3.0 zmenil. Mali by ste si ho buď "
-"skopírovať z %smc.ext alebo použiť tento súbor ako príklad na jeho "
-"vytvorenie."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopírovať"
@@ -2881,6 +2826,15 @@
msgid "(stalled)"
msgstr "(zastavený)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "Po&nechať"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2897,12 +2851,6 @@
"Nemožno zatvoriť cieľový súbor „%s“\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Bol získaný neúplný súbor. Ponechať ho?"
-
-msgid "&Keep"
-msgstr "Po&nechať"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3021,8 +2969,8 @@
msgstr "Proces na pozadí: Súbor už existuje"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Spracovaných súborov: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3049,8 +2997,8 @@
msgstr " Celkom: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Celkom: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Zdroj"
@@ -3102,7 +3050,7 @@
msgstr "&Formát výpisu..."
msgid "&Sort order..."
-msgstr "&Poradie výpisu..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filter..."
@@ -3116,11 +3064,8 @@
msgid "S&hell link..."
msgstr "Pripojenie s&hell..."
-msgid "S&FTP link..."
-msgstr "Pripojenie S&FTP..."
-
-msgid "SM&B link..."
-msgstr "Pripojenie SM&B..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Paneli&zovať"
@@ -3335,6 +3280,9 @@
msgid "&Find recursively"
msgstr "&Hľadať rekurzívne"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "Pres&kočiť skryté"
@@ -3503,8 +3451,8 @@
msgstr "Žiadne informácie o mieste"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Voľné miesto: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3752,6 +3700,9 @@
msgid "Unselect"
msgstr "Zrušiť výber"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Skutočne chcete spustiť?"
@@ -3780,11 +3731,18 @@
msgid "Enter command label:"
msgstr "Zadajte označenie príkazu:"
-msgid "Cannot invoke command."
-msgstr "Nepodarilo sa vyvolať príkaz."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Neúspešné uzavretie rúry"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Nie je možné spustiť panelizáciu v adresári, ktorý nie je lokálny"
@@ -4048,6 +4006,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtuálne súborové systémy:"
@@ -4173,16 +4135,22 @@
"Neočakávaný koniec súboru\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Poškodený archív .tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Nepodarilo sa otvoriť archív %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Neúplný archív extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4298,6 +4266,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Čaká sa pred opakovaným pokusom... %d (Ctrl-G zruší)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: neplatná rodina adries"
@@ -4351,6 +4334,12 @@
"Odstráňte heslo alebo zmeňte práva"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Upozornenie: súbor %s nebol nájdený\n"
@@ -4384,6 +4373,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: vytváranie spojenia s %s"
@@ -4395,6 +4387,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: spojenie so serverom zlyhalo: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Zadajte heslo pre %s "
@@ -4409,8 +4445,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Heslo je prázdne."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Chyba pri vytváraní SSH spojenia"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Na čítanie súboru nie sú prítomné dáta obsluhy súboru"
@@ -4427,33 +4463,6 @@
msgstr "sftp: Výpis - hotovo."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "obnovenie pripojenia k %s zlyhalo"
-
-msgid "Authentication failed"
-msgstr "Autentifikácia zlyhala"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Chyba %s pri vytváraní adresára %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Chyba %s pri odstraňovaní adresára %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s pri otváraní vzdialeného súboru %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s pri odstraňovaní vzdialeného súboru %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s pri premenovávaní súborov\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/sl.po
^
|
@@ -9,17 +9,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Matej Urbančič <>, 2012\n"
"Language-Team: Slovenian (http://www.transifex.com/mc/mc/language/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
+"n%100==4 ? 2 : 3);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -78,24 +78,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -174,10 +156,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -531,24 +513,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Opozorilo"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Predpomnilnik imenika za %s je potekel"
@@ -674,12 +647,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Zapiše dnevnik ftp dialogov v določeno datoteko"
-msgid "Set debug level"
-msgstr "Nastavi stopnjo razhroščevanja"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Zažene pogled datoteke"
@@ -969,15 +936,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1010,6 +968,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Opozorilo"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1018,14 +979,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Iščem %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1071,9 +1024,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1104,27 +1054,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1159,13 +1088,6 @@
msgid "&Local"
msgstr "&Krajevno"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1217,7 +1139,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1268,34 +1190,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Prekliči"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Zamenjaj"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "&Vse"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "Pre&skoči"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Prekliči"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1586,12 +1508,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Zamenjaj"
+
+msgid "A&ll"
+msgstr "&Vse"
+
+msgid "&Skip"
+msgstr "Pre&skoči"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Iščem %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1711,6 +1672,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2101,19 +2071,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Geslo za \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domena:"
-
-msgid "Username:"
-msgstr "Uporabniško ime:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2317,12 +2274,6 @@
msgid "Cannot change directory"
msgstr "Ne morem spremeniti imenika"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr "Poveži %s na:"
@@ -2426,9 +2377,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2463,14 +2411,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2480,8 +2438,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2716,6 +2674,15 @@
msgid "(stalled)"
msgstr "(zastoj)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Obdrži"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2728,12 +2695,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Datoteka je bila prenešena nepopolno. Naj ostane?"
-
-msgid "&Keep"
-msgstr "&Obdrži"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2840,7 +2801,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2868,7 +2829,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2921,7 +2882,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "&Vrstni red..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filter..."
@@ -2935,12 +2896,9 @@
msgid "S&hell link..."
msgstr "&Lupinska povezava..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "SM&B povezava..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3154,6 +3112,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3318,7 +3279,7 @@
msgstr "Ni podatkov o prostoru"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3567,6 +3528,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3595,11 +3559,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Ne morem izvesti ukaza."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Zaprtje cevi neuspešno"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3850,6 +3821,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3975,16 +3950,22 @@
"Nepričakovan konec datoteke\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Nekonsistenten tar arhiv"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Ne morem odpreti arhiva %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Nekonsistenten extfs arhiv"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4101,6 +4082,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4152,6 +4148,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4185,6 +4187,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4196,62 +4201,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/sr.po
^
|
@@ -8,17 +8,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Serbian (http://www.transifex.com/mc/mc/language/sr/)\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
msgid "Warning: cannot load codepages list"
@@ -77,30 +77,6 @@
msgid "FATAL: not a directory:"
msgstr "КОБНО: није директоријум:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Дошло је до грешке приликом премештања корисникових подешавања: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Ваша стара подешавања су премештена из „%s“\n"
-"у директоријум који препоручује Фридесктоп.\n"
-"За више података, посетите\n"
-"„http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html“"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Ваша стара подешавања су премештена из „%s“\n"
-"у „%s“\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -182,10 +158,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -541,6 +517,9 @@
"Неочекивана грешка у функцији бирања података за читање из потпроцеса:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -549,18 +528,6 @@
"Неочекивана грешка у функцији чекања пид-а:\n"
"%s"
-msgid "Warning"
-msgstr "Упозорење"
-
-msgid "Pipe failed"
-msgstr "Сојка није успела"
-
-msgid "Dup failed"
-msgstr "Удвостручавање није успело"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Грешка удвостручавања старе спојке грешке"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Остава директоријума је истекла за %s"
@@ -686,12 +653,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Бележи садржај фтп прозорчета у задану датотеку"
-msgid "Set debug level"
-msgstr "Подешава ниво прочишћавања"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Покреће прегледач датотека над датотеком"
@@ -1025,15 +986,6 @@
msgid "Two files are needed to compare"
msgstr "Две датотеке су потребне за поређење"
-msgid "Choose syntax highlighting"
-msgstr "Изаберите истицање синтаксе"
-
-msgid "< Auto >"
-msgstr "< Самостално >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Учитај текућу синтаксу >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Учитавам: %3d%%"
@@ -1068,6 +1020,9 @@
"Датотека „%s“ је превелика.\n"
"Да је ипак отворим?"
+msgid "Warning"
+msgstr "Упозорење"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Грешка читања из спојке: %s"
@@ -1076,14 +1031,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Не могу да отворим спојку за читање: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Тражим „%s“: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Тражим „%s“"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Датотека има чврсте везе. Да је откачим пре чувања?"
@@ -1129,9 +1076,6 @@
msgid "Save As"
msgstr "Сачувај као"
-msgid "Collect completions"
-msgstr "Сакупи довршавања"
-
msgid "&Quick save"
msgstr "&Брзо сачувај"
@@ -1162,27 +1106,6 @@
msgid "Cannot save file"
msgstr "Не могу да сачувам датотеку"
-msgid "Delete macro"
-msgstr "Обриши макро"
-
-msgid "Press macro hotkey:"
-msgstr "Притисните макро пречицу:"
-
-msgid "Macro not deleted"
-msgstr "Макро није обрисан"
-
-msgid "Save macro"
-msgstr "Сачувај макро"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Притисните нову пречицу макроа:"
-
-msgid "Repeat last commands"
-msgstr "Понови последње наредбе"
-
-msgid "Repeat times:"
-msgstr "Времена понављања:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Потврди чување датотеке: „%s“"
@@ -1217,13 +1140,6 @@
msgid "&Local"
msgstr "&Месну"
-msgid "Replace"
-msgstr "Замени"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld одрађене замене"
-
msgid "[NoName]"
msgstr "[Без назива]"
@@ -1279,8 +1195,8 @@
msgid "Run sort"
msgstr "Покрени ређање"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Унесите опције ређања (видите странице упутства) одвојене празнинама:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Поређај"
@@ -1332,35 +1248,35 @@
"Текући текст је измењен без чувања датотеке.\n"
"Настављање ће одбацити ове измене."
-msgid "In se&lection"
-msgstr "У &избору"
+msgid "Cancel"
+msgstr "Откажи"
-msgid "&Find all"
-msgstr "&Нађи све"
+msgid "Collect completions"
+msgstr "Сакупи довршавања"
-msgid "Enter replacement string:"
-msgstr "Унесите ниску замене:"
+msgid "NoName"
+msgstr "Без назива"
-msgid "Replace with:"
-msgstr "Замени са:"
+msgid "Save macro"
+msgstr "Сачувај макро"
-msgid "&Replace"
-msgstr "&Замени"
+msgid "Press the macro's new hotkey:"
+msgstr "Притисните нову пречицу макроа:"
-msgid "A&ll"
-msgstr "&Све"
+msgid "Delete macro"
+msgstr "Обриши макро"
-msgid "&Skip"
-msgstr "&Прескочи"
+msgid "Press macro hotkey:"
+msgstr "Притисните макро пречицу:"
-msgid "Confirm replace"
-msgstr "Потврди замену"
+msgid "Macro not deleted"
+msgstr "Макро није обрисан"
-msgid "Cancel"
-msgstr "Откажи"
+msgid "Repeat last commands"
+msgstr "Понови последње наредбе"
-msgid "NoName"
-msgstr "Без назива"
+msgid "Repeat times:"
+msgstr "Времена понављања:"
msgid "&Open file..."
msgstr "&Отвори датотеку..."
@@ -1650,6 +1566,45 @@
msgid "Editor options"
msgstr "Опције уређивача"
+msgid "In se&lection"
+msgstr "У &избору"
+
+msgid "&Find all"
+msgstr "&Нађи све"
+
+msgid "Enter replacement string:"
+msgstr "Унесите ниску замене:"
+
+msgid "Replace"
+msgstr "Замени"
+
+msgid "Replace with:"
+msgstr "Замени са:"
+
+msgid "&Replace"
+msgstr "&Замени"
+
+msgid "A&ll"
+msgstr "&Све"
+
+msgid "&Skip"
+msgstr "&Прескочи"
+
+msgid "Confirm replace"
+msgstr "Потврди замену"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Тражим „%s“: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Тражим „%s“"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld одрађене замене"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1657,7 +1612,7 @@
"Уређивач текста наклоњен кориснику\n"
"написан за Поноћног наредника."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1777,6 +1732,15 @@
msgid "Select language"
msgstr "Изабери језик"
+msgid "Choose syntax highlighting"
+msgstr "Изаберите истицање синтаксе"
+
+msgid "< Auto >"
+msgstr "< Самостално >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Учитај текућу синтаксу >"
+
msgid "Load syntax file"
msgstr "Учитај датотеку синтаксе"
@@ -2181,19 +2145,6 @@
msgstr "Позадински послови"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Лозинка за „\\\\%s\\%s“"
-
-msgid "Domain:"
-msgstr "Домен:"
-
-msgid "Username:"
-msgstr "Корисник:"
-
-msgid "SMB authentication"
-msgstr "СМБ потврђивање идентитета"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2399,12 +2350,6 @@
msgid "Cannot change directory"
msgstr "Не могу да променим директоријум"
-msgid "Filter"
-msgstr "Пропусник"
-
-msgid "Set expression for filtering filenames"
-msgstr "Поставите израз за издвајање назива датотека"
-
#, c-format
msgid "Link %s to:"
msgstr "Повежите „%s“ са:"
@@ -2510,9 +2455,6 @@
msgid "Shell link to machine"
msgstr "Веза љуске на рачунар"
-msgid "SMB link to machine"
-msgstr "СМБ веза на рачунар"
-
msgid "Undelete files on an ext2 file system"
msgstr "Поништите брисање датотека на екст2 систему датотека"
@@ -2551,18 +2493,26 @@
"Не могу да направим привремену датотеку наредбе\n"
"%s"
+msgid "Pipe failed"
+msgstr "Сојка није успела"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s грешка датотеке"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Запис датотеке „%smc.ext“ је измењен издањем 3.0. Изгледа да инсталација "
-"није успела. Набавите најновији примерак из пакета Поноћног наредника."
#, c-format
msgid "%s file error"
@@ -2570,11 +2520,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Запис датотеке „%s“ је измењен издањем 3.0. Можда желите да је умножите из "
-"„%smc.ext“ или да користите ту датотеку као пример како је записати."
msgid "DialogTitle|Copy"
msgstr "Умножите"
@@ -2859,6 +2807,15 @@
msgid "(stalled)"
msgstr "(застој)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Задржи"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2875,12 +2832,6 @@
"Не могу да затворим циљну датотеку „%s“\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Датотека није у потпуности преузета. Да је задржим?"
-
-msgid "&Keep"
-msgstr "&Задржи"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2999,8 +2950,8 @@
msgstr "Позадински процес: Датотека постоји"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Обрађене датотеке: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3027,8 +2978,8 @@
msgstr " Укупно: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Укупно: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Извор"
@@ -3080,7 +3031,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "Редослед &ређања..."
+msgstr ""
msgid "&Filter..."
msgstr "&Пропусник..."
@@ -3094,11 +3045,8 @@
msgid "S&hell link..."
msgstr "Веза &љуске..."
-msgid "S&FTP link..."
-msgstr "&СФТП веза..."
-
-msgid "SM&B link..."
-msgstr "СМ&Б веза..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Претвори &у окно"
@@ -3312,6 +3260,9 @@
msgid "&Find recursively"
msgstr "Нађи &дубински"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "Прескочи &скривене"
@@ -3479,8 +3430,8 @@
msgstr "Нема података о простору"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Слободан простор: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3726,6 +3677,9 @@
msgid "Unselect"
msgstr "Поништите избор"
+msgid "Filter"
+msgstr "Пропусник"
+
msgid "Do you really want to execute?"
msgstr "Да ли стварно желите да извршите?"
@@ -3753,11 +3707,18 @@
msgid "Enter command label:"
msgstr "Унесите натпис наредбе:"
-msgid "Cannot invoke command."
-msgstr "Не могу да покренем наредбу."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Затварање спојке није успело"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -4021,6 +3982,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Виртуелни систем датотека:"
@@ -4146,16 +4111,22 @@
"Неочекивани крај датотеке\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Недоследна тар архива"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Не могу да отворим „%s“ архиву\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Недоследна екстсд архива"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4271,6 +4242,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Чекам да бих поново покушао... %d (Ктрл-Г да откажете)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: неисправна породица адресе"
@@ -4324,6 +4310,12 @@
"Уклоните лозинку или исправите режим"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Упозорење: нисам нашао датотеку „%s“\n"
@@ -4357,6 +4349,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: повезујем се са „%s“"
@@ -4368,6 +4363,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: повезивање са сервером није успело: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Унесите пропусну реч за „%s“ "
@@ -4382,7 +4421,7 @@
msgid "sftp: Password is empty."
msgstr "sftp: Лозинка је празна."
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: failure establishing SSH session"
msgstr ""
msgid "sftp: No file handler data present for reading file"
@@ -4400,33 +4439,6 @@
msgstr "sftp: Исписивање је готово."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "поновно повезивање на „%s“ није успело"
-
-msgid "Authentication failed"
-msgstr "Потврђивање идентитета није успело"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Грешка „%s“ прављења директоријума „%s“"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Грешка „%s“ уклањања директоријума „%s“"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "„%s“ отвара удаљену датотеку „%s“"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "„%s“ уклања удаљену датотеку „%s“"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "„%s“ преименује датотеке\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/sv.po
^
|
@@ -3,9 +3,11 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Alexander Kilian <alexander.kilian@gmail.com>, 2022
# Cybjit <cybjit@gmail.com>, 2012
# Cybjit <cybjit@gmail.com>, 2012
# Henrik Mattsson-Mårn <h@reglage.net>, 2016
+# Ingemar Karlsson <ingemar@ingk.se>, 2021
# Jonas Hultén <jonas@kollektivet.nu>, 2017
# Jörgen Städje <jorgen@qedata.se>, 2020
# MagnusHerrlin <m8618@abc.se>, 2016
@@ -15,10 +17,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Alexander Kilian <alexander.kilian@gmail.com>, 2022\n"
"Language-Team: Swedish (http://www.transifex.com/mc/mc/language/sv/)\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -83,30 +85,6 @@
msgid "FATAL: not a directory:"
msgstr "ALLVARLIGT FEL: inte en katalog:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Ett fel uppstod under migreringen av användarinställningar: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Dina gamla inställningar migrerades från %s\n"
-"till kataloger rekommenderade av Freedesktop.\n"
-"För att få mer information, besök\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Dina gamla inställningar blev migrerade från %s\n"
-"till %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -195,12 +173,12 @@
msgid "True color not supported with ncurses."
msgstr "Fullfärg stöds inte med ncurses."
-msgid "True color not supported in this slang version."
-msgstr "Fullfärg stöds inte i den här versionen av slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Din terminal verkar inte ens stödja 256 färger."
+msgid "True color not supported in this slang version."
+msgstr "Fullfärg stöds inte i den här versionen av slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "Sätt COLORTERM=truecolor om din terminal verkligen stödjer fullfärg."
@@ -554,6 +532,9 @@
"Oväntat fel i select() under läsning av data från en barnprocess:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -562,18 +543,6 @@
"Oväntat fel i waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Varning"
-
-msgid "Pipe failed"
-msgstr "Tunnel misslyckades"
-
-msgid "Dup failed"
-msgstr "Dup misslyckades"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Ett fel uppstod under duplicering av en gammal feltunnel"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Katalogcache för gammal för %s"
@@ -699,12 +668,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Logga ftpdialog till specificerad fil"
-msgid "Set debug level"
-msgstr "Ställ in felsökningsnivå"
-
-msgid "<integer>"
-msgstr "<heltal>"
-
msgid "Launches the file viewer on a file"
msgstr "Startar filvisaren"
@@ -1041,15 +1004,6 @@
msgid "Two files are needed to compare"
msgstr "Två filer behövs för att jämföra"
-msgid "Choose syntax highlighting"
-msgstr "Välj syntaxmarkering"
-
-msgid "< Auto >"
-msgstr "< Auto >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Ladda om nuvarande >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Laddar %3d%%"
@@ -1084,6 +1038,9 @@
"Filen \"%s\" är för stor.\n"
"Öppna ändå?"
+msgid "Warning"
+msgstr "Varning"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Fel vid lädning från tunnel: %s"
@@ -1092,14 +1049,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Tunnel kunde inte öppnas för läsning: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Söker %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Söker efter %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Filen har hårda länkar. Koppla loss innan sparning?"
@@ -1145,9 +1094,6 @@
msgid "Save As"
msgstr "Spara som"
-msgid "Collect completions"
-msgstr "Samlar in kompletteringar"
-
msgid "&Quick save"
msgstr "S&nabbspara"
@@ -1178,27 +1124,6 @@
msgid "Cannot save file"
msgstr "Kan inte spara fil"
-msgid "Delete macro"
-msgstr "Ta bort makro"
-
-msgid "Press macro hotkey:"
-msgstr "Tryck makro-snabbtangent:"
-
-msgid "Macro not deleted"
-msgstr "Makro togs inte bort"
-
-msgid "Save macro"
-msgstr "Spara makro"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Tryck på ny snabbtangent för makro:"
-
-msgid "Repeat last commands"
-msgstr "Repetera senaste kommandon"
-
-msgid "Repeat times:"
-msgstr "Repetitioner:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Bekräfta sparning av fil: \"%s\""
@@ -1233,13 +1158,6 @@
msgid "&Local"
msgstr "&Lokal"
-msgid "Replace"
-msgstr "Ersätt"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld ersättningar gjordes"
-
msgid "[NoName]"
msgstr "[Namnlös]"
@@ -1295,8 +1213,8 @@
msgid "Run sort"
msgstr "Kör sortering"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Mata in sorteringsflaggor (se man-sidan) separerade av blanksteg:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "Sortera"
@@ -1348,35 +1266,35 @@
"Nuvarande text har modifierats utan att sparas.\n"
"Fortsätt kastar bort dessa ändringar."
-msgid "In se&lection"
-msgstr "&I markerat"
+msgid "Cancel"
+msgstr "Avbryt"
-msgid "&Find all"
-msgstr "Hi&tta alla"
+msgid "Collect completions"
+msgstr "Samlar in kompletteringar"
-msgid "Enter replacement string:"
-msgstr "Ange ersättningssträng:"
+msgid "NoName"
+msgstr "Namnlös"
-msgid "Replace with:"
-msgstr "Ersätt med:"
+msgid "Save macro"
+msgstr "Spara makro"
-msgid "&Replace"
-msgstr "&Ersätt"
+msgid "Press the macro's new hotkey:"
+msgstr "Tryck på ny snabbtangent för makro:"
-msgid "A&ll"
-msgstr "A&lla"
+msgid "Delete macro"
+msgstr "Ta bort makro"
-msgid "&Skip"
-msgstr "&Hoppa över"
+msgid "Press macro hotkey:"
+msgstr "Tryck makro-snabbtangent:"
-msgid "Confirm replace"
-msgstr "Bekräfta ersätt"
+msgid "Macro not deleted"
+msgstr "Makro togs inte bort"
-msgid "Cancel"
-msgstr "Avbryt"
+msgid "Repeat last commands"
+msgstr "Repetera senaste kommandon"
-msgid "NoName"
-msgstr "Namnlös"
+msgid "Repeat times:"
+msgstr "Repetitioner:"
msgid "&Open file..."
msgstr "&Öppna fil..."
@@ -1666,6 +1584,45 @@
msgid "Editor options"
msgstr "Editoralternativ"
+msgid "In se&lection"
+msgstr "&I markerat"
+
+msgid "&Find all"
+msgstr "Hi&tta alla"
+
+msgid "Enter replacement string:"
+msgstr "Ange ersättningssträng:"
+
+msgid "Replace"
+msgstr "Ersätt"
+
+msgid "Replace with:"
+msgstr "Ersätt med:"
+
+msgid "&Replace"
+msgstr "&Ersätt"
+
+msgid "A&ll"
+msgstr "A&lla"
+
+msgid "&Skip"
+msgstr "&Hoppa över"
+
+msgid "Confirm replace"
+msgstr "Bekräfta ersätt"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Söker %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Söker efter %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld ersättningar gjordes"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1673,7 +1630,7 @@
"En användarvänlig texteditor\n"
"skriven för Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1793,6 +1750,15 @@
msgid "Select language"
msgstr "Välj språk"
+msgid "Choose syntax highlighting"
+msgstr "Välj syntaxmarkering"
+
+msgid "< Auto >"
+msgstr "< Auto >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Ladda om nuvarande >"
+
msgid "Load syntax file"
msgstr "Ladda syntax-fil"
@@ -1830,6 +1796,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Inte en xterm eller linux konsol;\n"
+"Subshell kan inte växlas."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Skriv 'exit' för att återvända till Midnight Commander"
@@ -1857,7 +1825,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Rättigheter (oktalt): 1%o"
msgid "Chown advanced command"
msgstr "Avancerat chown-kommando"
@@ -1984,7 +1952,7 @@
msgstr "Tema:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Shadows"
msgid "Appearance"
msgstr "Utseende"
@@ -2197,19 +2165,6 @@
msgstr "Bakgrundsjobb"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Lösenord för \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Domän:"
-
-msgid "Username:"
-msgstr "Användarnamn:"
-
-msgid "SMB authentication"
-msgstr "SMB-autentisering"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2218,55 +2173,55 @@
"%s"
msgid "Secure deletion"
-msgstr ""
+msgstr "säker radering"
msgid "Undelete"
-msgstr ""
+msgstr "Återställ"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Synkrona uppdateringar"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Synkrona kataloguppdateringar"
msgid "Immutable"
-msgstr ""
+msgstr "Oföränderlig"
msgid "Append only"
-msgstr ""
+msgstr "Lägg bara till"
msgid "No dump"
msgstr ""
msgid "No update atime"
-msgstr ""
+msgstr "Ingen uppdatering atime"
msgid "Compress"
-msgstr ""
+msgstr "Komprimera"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Komprimerade kluster"
msgid "Compressed dirty file"
msgstr ""
msgid "Compression raw access"
-msgstr ""
+msgstr "Rå åtkomst till komprimeringen"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Krypterad inode"
msgid "Journaled data"
msgstr ""
msgid "Indexed directory"
-msgstr ""
+msgstr "Indexerad katalog"
msgid "No tail merging"
msgstr ""
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "Toppen av katalog hierarkin"
msgid "Inode uses extents"
msgstr ""
@@ -2278,7 +2233,7 @@
msgstr ""
msgid "Direct access for files"
-msgstr ""
+msgstr "Direkt åtkomst för filer"
msgid "Casefolded file"
msgstr ""
@@ -2287,7 +2242,7 @@
msgstr ""
msgid "Project hierarchy"
-msgstr ""
+msgstr "Projekt hierarki"
msgid "Verity protected inode"
msgstr ""
@@ -2415,12 +2370,6 @@
msgid "Cannot change directory"
msgstr "Kan inte byta katalog"
-msgid "Filter"
-msgstr "Filter"
-
-msgid "Set expression for filtering filenames"
-msgstr "Ange uttryck för filnamnsfiltrering"
-
#, c-format
msgid "Link %s to:"
msgstr "Länka %s till:"
@@ -2526,9 +2475,6 @@
msgid "Shell link to machine"
msgstr "Shell-länk till maskin"
-msgid "SMB link to machine"
-msgstr "SMB-länk till maskin"
-
msgid "Undelete files on an ext2 file system"
msgstr "Återställ borttagna filer på ett ext2-filsystem"
@@ -2567,19 +2513,26 @@
"Skapandet av en temporär kommandofil misslyckades\n"
"%s"
+msgid "Pipe failed"
+msgstr "Tunnel misslyckades"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s filfel"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Formatet på filen %smc.ext har ändrats i version 3.0. Det verkar som att "
-"installationen har misslyckats. Hämta en ny kopia från Midnight Commander-"
-"paketet."
#, c-format
msgid "%s file error"
@@ -2587,11 +2540,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Formatet på filen %s har ändrats i version 3.0. Du kan antingen kopiera den "
-"från %smc.ext eller använda den filen som mall för hur den ska se ut."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Kopiera"
@@ -2885,6 +2836,15 @@
msgid "(stalled)"
msgstr "(avstannad)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Behåll"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2901,12 +2861,6 @@
"Stängning av målfilen \"%s\" misslyckades\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Den återhämtade filen är ofullständig. Behåll den ändå?"
-
-msgid "&Keep"
-msgstr "&Behåll"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3025,8 +2979,8 @@
msgstr "Bakgrundsprocessen: Filen finns"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Bearbetade filer: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3053,8 +3007,8 @@
msgstr " Totalt: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Totalt: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Källa"
@@ -3106,7 +3060,7 @@
msgstr "&Listformat..."
msgid "&Sort order..."
-msgstr "&Sorteringsordning..."
+msgstr ""
msgid "&Filter..."
msgstr "&Filter..."
@@ -3120,11 +3074,8 @@
msgid "S&hell link..."
msgstr "S&kallänk..."
-msgid "S&FTP link..."
-msgstr "SFTP-l&änk..."
-
-msgid "SM&B link..."
-msgstr "SM&B-länk..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Pa&nelisera"
@@ -3337,6 +3288,9 @@
msgid "&Find recursively"
msgstr "Sök i &underkataloger"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "Ignorera &dolda"
@@ -3503,8 +3457,8 @@
msgstr "Ingen information om ledigt utrymme"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Fritt utr: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3748,6 +3702,9 @@
msgid "Unselect"
msgstr "Avmarkera"
+msgid "Filter"
+msgstr "Filter"
+
msgid "Do you really want to execute?"
msgstr "Vill du verkligen exekvera?"
@@ -3775,11 +3732,18 @@
msgid "Enter command label:"
msgstr "Ange kommando-etikett:"
-msgid "Cannot invoke command."
-msgstr "Kan inte starta kommandot."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Stänga ner tunnel misslyckades"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Extern panelisering kan inte köras på en icke-lokal katalog"
@@ -3991,7 +3955,7 @@
msgstr ""
msgid "With builtin Editor"
-msgstr ""
+msgstr "Med inbyggd redigerare"
msgid "With optional subshell support"
msgstr ""
@@ -4042,6 +4006,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Virtuella filsystem:"
@@ -4167,16 +4135,22 @@
"Oväntat filslut\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Inkonsistensfel i tararkivet"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Kan inte öppna %s arkivet\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Inkonsistent extfsfil"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4292,6 +4266,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Väntar på att försöka igen... %d (Control-G för att avbryta)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: felaktig adressfamilj"
@@ -4345,6 +4334,12 @@
"Ta bort lösenordet eller korrigera läge"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Varning: filen %s hittades inte\n"
@@ -4378,6 +4373,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: kopplar upp mot %s"
@@ -4389,6 +4387,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: uppkoppling mot server misslyckades: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: okänd värd nyckel typ"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: kan inte få fjärr-värd nyckel"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: kan inte beräkna värd nyckelns fingeravtryck"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: värd nyckel verifiering fallerade"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Mata in lösenfras för %s "
@@ -4403,8 +4445,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Lösenordet är tomt."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Upprättandet av en SSH-session misslyckades"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Ingen filhanterardata existerar för läsning av filen"
@@ -4421,33 +4463,6 @@
msgstr "sftp: Listning klar."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "återuppkoppling till %s misslyckades"
-
-msgid "Authentication failed"
-msgstr "Autentisering misslyckades"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Fel %s under skapande av katalog %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Fel %s under borttagning av katalog %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s under öppnande av fjärrfil %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s under borttagning av fjärrfil %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s under omdöpning av filer\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/szl.po
^
|
@@ -6,10 +6,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Silesian (http://www.transifex.com/mc/mc/language/szl/)\n"
"Language: szl\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,20 +956,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3141,6 +3099,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3304,7 +3265,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3551,6 +3512,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3578,10 +3542,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3817,6 +3788,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3928,13 +3903,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4051,6 +4033,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4102,6 +4099,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4131,6 +4134,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4142,62 +4148,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/ta.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Tamil (http://www.transifex.com/mc/mc/language/ta/)\n"
"Language: ta\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "எச்சாிக்கை"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,6 +956,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "எச்சாிக்கை"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1006,14 +967,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr ""
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "ரத்து"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&மாற்று"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "அனைத்&தும்"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&தவிர்"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "ரத்து"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&மாற்று"
+
+msgid "A&ll"
+msgstr "அனைத்&தும்"
+
+msgid "&Skip"
+msgstr "&தவிர்"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2884,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3140,6 +3098,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3508,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,10 +3538,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3813,6 +3784,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3924,13 +3899,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4047,6 +4029,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4098,6 +4095,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4127,6 +4130,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4138,62 +4144,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/te.po
^
|
@@ -6,10 +6,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Telugu (http://www.transifex.com/mc/mc/language/te/)\n"
"Language: te\n"
"MIME-Version: 1.0\n"
@@ -71,24 +71,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +145,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +500,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +634,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +923,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +955,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1011,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1041,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1075,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1126,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1177,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1495,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1659,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2088,19 +2058,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2304,12 +2261,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2413,9 +2364,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2450,14 +2398,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2467,8 +2425,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2703,6 +2661,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2715,12 +2682,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2827,7 +2788,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2855,7 +2816,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2922,10 +2883,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3139,6 +3097,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3301,7 +3262,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3546,6 +3507,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3573,10 +3537,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3812,6 +3783,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3923,13 +3898,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4046,6 +4028,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4097,6 +4094,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4126,6 +4129,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4137,62 +4143,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/tr.po
^
|
@@ -13,10 +13,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Serdar Sağlam <teknomobil@msn.com>, 2019-2020\n"
"Language-Team: Turkish (http://www.transifex.com/mc/mc/language/tr/)\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
@@ -81,30 +81,6 @@
msgid "FATAL: not a directory:"
msgstr "ÖLÜMCÜL HATA: bir dizin değil:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Kullanıcı ayarları taşınırken hata oluştu: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Eski ayarlarınız %s dizininden \n"
-"Freedesktop önerilen dizinlerine taşındı.\n"
-"Daha fazla bilgi için, lütfen şu adresi ziyaret edin:\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Eski ayarlarınız %sden\n"
-"%s'e taşındı\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -186,12 +162,12 @@
msgid "True color not supported with ncurses."
msgstr "Gerçek renk ncurses ile desteklenmiyor."
-msgid "True color not supported in this slang version."
-msgstr "Gerçek renk bu slang sürümünde desteklenmiyor."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Uçbiriminiz 256 rengi bile desteklemiyor gibi görünüyor."
+msgid "True color not supported in this slang version."
+msgstr "Gerçek renk bu slang sürümünde desteklenmiyor."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
@@ -545,6 +521,9 @@
"Alt işlemden select() ile veri okurken beklenmeyen hata oluştu:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -553,18 +532,6 @@
"waitpid()'de beklenmedik hata:\n"
"%s"
-msgid "Warning"
-msgstr "Uyarı"
-
-msgid "Pipe failed"
-msgstr "Boru açılamadı"
-
-msgid "Dup failed"
-msgstr "Tekrar başarısız"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Eski hata borusu hata ikilemi"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Dizin arabelleğinde %s için zamanaşımı"
@@ -690,12 +657,6 @@
msgid "Log ftp dialog to specified file"
msgstr "ftp dialog günlüğünü belirtilen dosyaya yazar"
-msgid "Set debug level"
-msgstr "Hata ayıklama seviyesini ayarla"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Bir dosyayı dosya göstericide açar"
@@ -1030,15 +991,6 @@
msgid "Two files are needed to compare"
msgstr "İki dosya karşılaştırma gerektiriyor"
-msgid "Choose syntax highlighting"
-msgstr "Sözdizimi aydınlatma seç"
-
-msgid "< Auto >"
-msgstr "< Otomatik >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Mevcut Sözdizimini Yükle >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Yükleniyor: %3d%%"
@@ -1073,6 +1025,9 @@
"\"%s\" dosyası çok büyük.\n"
"Yine de açılsın mı?"
+msgid "Warning"
+msgstr "Uyarı"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Borudan okuma hatası: %s"
@@ -1081,14 +1036,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Boru okumak için açılamıyor: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Aranıyor %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "%s aranıyor"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Dosyanın sabit bağları var. Kaydetmeden önce ayrılsın mı?"
@@ -1134,9 +1081,6 @@
msgid "Save As"
msgstr "Farklı kaydet..."
-msgid "Collect completions"
-msgstr "Tamamlamaları topla"
-
msgid "&Quick save"
msgstr "&Çabuk kaydet"
@@ -1169,27 +1113,6 @@
msgid "Cannot save file"
msgstr "Dosyayı kaydedilemiyor"
-msgid "Delete macro"
-msgstr "Makroyu sil"
-
-msgid "Press macro hotkey:"
-msgstr "Makro tuşuna bas:"
-
-msgid "Macro not deleted"
-msgstr "Makro silinmedi"
-
-msgid "Save macro"
-msgstr "Makroyu kaydet"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Yeni Makro tuşuna basınız:"
-
-msgid "Repeat last commands"
-msgstr "1"
-
-msgid "Repeat times:"
-msgstr "Tekrar sayısı:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Dosya kaydetmeyi onayla: \"%s\""
@@ -1224,13 +1147,6 @@
msgid "&Local"
msgstr "Yere&l"
-msgid "Replace"
-msgstr "Yerleştir"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "%ld yerleştirme yapıldı"
-
msgid "[NoName]"
msgstr "[İsimsiz]"
@@ -1286,9 +1202,8 @@
msgid "Run sort"
msgstr "Sıralamayı çalıştır"
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
-"Sıralama seçeneklerini (man sayfasına bakınız) boşluklarla ayırarak veriniz:"
msgid "Sort"
msgstr "Sıralama"
@@ -1340,35 +1255,35 @@
"Mevcut metin kaydedilmemiş değişiklikler içeriyor\n"
"Bu değişiklikler yoksayılarak devam edilsin mi?."
-msgid "In se&lection"
-msgstr "Seçi&li kısımda"
+msgid "Cancel"
+msgstr "Vazgeç"
-msgid "&Find all"
-msgstr "&Tümünü bul"
+msgid "Collect completions"
+msgstr "Tamamlamaları topla"
-msgid "Enter replacement string:"
-msgstr "Yerleştirilecek metni verin:"
+msgid "NoName"
+msgstr "İsimsiz"
-msgid "Replace with:"
-msgstr "Bununla değiştir:"
+msgid "Save macro"
+msgstr "Makroyu kaydet"
-msgid "&Replace"
-msgstr "&Yerleştir"
+msgid "Press the macro's new hotkey:"
+msgstr "Yeni Makro tuşuna basınız:"
-msgid "A&ll"
-msgstr "&Tümü"
+msgid "Delete macro"
+msgstr "Makroyu sil"
-msgid "&Skip"
-msgstr "&Atla"
+msgid "Press macro hotkey:"
+msgstr "Makro tuşuna bas:"
-msgid "Confirm replace"
-msgstr "Yer değişikliğini onaylat"
+msgid "Macro not deleted"
+msgstr "Makro silinmedi"
-msgid "Cancel"
-msgstr "Vazgeç"
+msgid "Repeat last commands"
+msgstr "1"
-msgid "NoName"
-msgstr "İsimsiz"
+msgid "Repeat times:"
+msgstr "Tekrar sayısı:"
msgid "&Open file..."
msgstr "D&osyayı aç..."
@@ -1658,6 +1573,45 @@
msgid "Editor options"
msgstr "Düzenleyici seçenekleri"
+msgid "In se&lection"
+msgstr "Seçi&li kısımda"
+
+msgid "&Find all"
+msgstr "&Tümünü bul"
+
+msgid "Enter replacement string:"
+msgstr "Yerleştirilecek metni verin:"
+
+msgid "Replace"
+msgstr "Yerleştir"
+
+msgid "Replace with:"
+msgstr "Bununla değiştir:"
+
+msgid "&Replace"
+msgstr "&Yerleştir"
+
+msgid "A&ll"
+msgstr "&Tümü"
+
+msgid "&Skip"
+msgstr "&Atla"
+
+msgid "Confirm replace"
+msgstr "Yer değişikliğini onaylat"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Aranıyor %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "%s aranıyor"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "%ld yerleştirme yapıldı"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1665,7 +1619,7 @@
"Kullanıcı dostu bir metin düzenleyici\n"
"Midnight Commander için yazıldı"
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1787,6 +1741,15 @@
msgid "Select language"
msgstr "Dil seç"
+msgid "Choose syntax highlighting"
+msgstr "Sözdizimi aydınlatma seç"
+
+msgid "< Auto >"
+msgstr "< Otomatik >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Mevcut Sözdizimini Yükle >"
+
msgid "Load syntax file"
msgstr "Sözdizimi dosyasını yükle"
@@ -2192,19 +2155,6 @@
msgstr "Artalan İşleri"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s için parola"
-
-msgid "Domain:"
-msgstr "Alan adı: "
-
-msgid "Username:"
-msgstr "Kullanıcı: "
-
-msgid "SMB authentication"
-msgstr "SMB kimlik doğrulama"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2410,12 +2360,6 @@
msgid "Cannot change directory"
msgstr "Dizin değiştirilemedi"
-msgid "Filter"
-msgstr "Süzgeç"
-
-msgid "Set expression for filtering filenames"
-msgstr "Dosya isimlerini süzmede kullanılacak ifadeyi belirtin"
-
#, c-format
msgid "Link %s to:"
msgstr "%s bağı:"
@@ -2521,9 +2465,6 @@
msgid "Shell link to machine"
msgstr "Makinaya SSH bağ"
-msgid "SMB link to machine"
-msgstr "makinaya SMB bağ"
-
msgid "Undelete files on an ext2 file system"
msgstr "Bir ext2 dosya sistemi üzerinde silinen dosyaları kurtarır"
@@ -2562,18 +2503,26 @@
"Geçici komut dosyası oluşturulamıyor:\n"
" %s"
+msgid "Pipe failed"
+msgstr "Boru açılamadı"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s dosya hatası"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"%smc.ext dosyası sürüm 3.0 ile değişti. Kurulum başarısız görünüyor. Lütfen, "
-"Midnight Commander paketinden temiz bir kopyasıyla değiştirin."
#, c-format
msgid "%s file error"
@@ -2581,11 +2530,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Sürüm 3.0 ile ~/%s dosyası değişti. İster %smc.ext dosyasını kopyalayarak "
-"ister o dosyayı örnek alarak yeniden oluşturunuz."
msgid "DialogTitle|Copy"
msgstr "DiyalogBaşlığı|Kopyala"
@@ -2875,6 +2822,15 @@
msgid "(stalled)"
msgstr "(durakladı)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Koru"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2891,12 +2847,6 @@
"\"%s\" hedef dosyası kapatılamıyor \n"
" %s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr " Tamamlanmamış dosya alındı. Korunsun mu?"
-
-msgid "&Keep"
-msgstr "&Koru"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3015,8 +2965,8 @@
msgstr "Artalan süreç: Dosya var"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "İşlenen dosyalar: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3043,8 +2993,8 @@
msgstr " Toplam: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Toplam: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "Kaynak"
@@ -3096,7 +3046,7 @@
msgstr "&Listeleme biçimi..."
msgid "&Sort order..."
-msgstr "&Sıralama türü..."
+msgstr ""
msgid "&Filter..."
msgstr "&Süzgeç..."
@@ -3110,11 +3060,8 @@
msgid "S&hell link..."
msgstr "&SSH bağı..."
-msgid "S&FTP link..."
-msgstr "FT&P bağı..."
-
-msgid "SM&B link..."
-msgstr "S&MB bağı..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "Pane&lle"
@@ -3327,6 +3274,9 @@
msgid "&Find recursively"
msgstr "&özyinemeli bul"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "Gizlileri a&tla"
@@ -3493,8 +3443,8 @@
msgstr "Alan bilgileri yok"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Boş alan: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3738,6 +3688,9 @@
msgid "Unselect"
msgstr "Seçme"
+msgid "Filter"
+msgstr "Süzgeç"
+
msgid "Do you really want to execute?"
msgstr "Gerçekten çalıştırmak istiyor musunuz?"
@@ -3765,11 +3718,18 @@
msgid "Enter command label:"
msgstr "Komut yaftası:"
-msgid "Cannot invoke command."
-msgstr "komut hatırlatmaz."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Veri yolu kapatılamadı"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "Bir uzak dizine girilirken dış panalleme çalıştırılamaz"
@@ -4033,6 +3993,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "Sanal Dosya Sistemleri:"
@@ -4158,16 +4122,22 @@
"%s\n"
"dosyasının sonu belirsiz"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Tar arşivi düzgün değil"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"%s\n"
-"%s arşivini açamadı"
-msgid "Inconsistent extfs archive"
-msgstr "Kararsız extfs arşivi"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4284,6 +4254,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Yinelemek için bekleniyor... %d (iptal etmek için Ctrl-G)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: gereksiz adres ailesi"
@@ -4337,6 +4322,12 @@
"Ya parolayı silin ya da kipi düzeltin"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Uyarı: %s dosyası bulunamadı\n"
@@ -4370,6 +4361,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: %s'e bağlanılıyor"
@@ -4381,6 +4375,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: sunucuya bağlanma başarısız: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: %s için parola girin "
@@ -4395,8 +4433,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Parola boş."
-msgid "sftp: Failure establishing SSH session"
-msgstr "stp: SSH oturumu kurarken hata oluştu"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Dosya okumak için hiç dosya işleyici verisi mevcut değil "
@@ -4413,33 +4451,6 @@
msgstr "sftp: Listeleme yapıldı."
#, c-format
-msgid "reconnect to %s failed"
-msgstr "%s ile tekrar bağlantı kurulamadı"
-
-msgid "Authentication failed"
-msgstr "Kimlik denetimi başarısız oldu"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "%s %s dizinini yaratıyor"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "%s %s dizinini siliyor"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s karşıdaki %s dosyasını açıyor"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s karşıdaki %s dosyasını siliyor"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s dosyaları yeniden adlandırılıyor\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/uk.po
^
|
@@ -3,6 +3,9 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Andrij Mizyk <andm1zyk@proton.me>, 2022
+# 1057792d4be8b9c6cf7b64c224fea2c1_7fc5896, 2022
+# f977cb811fcf66493f48eac227fd7473_b98aa5d <2419f1d8d12d92441152e78ae3e3bde0_722180>, 2021-2022
# Andriy Il <toelik@ukr.net>, 2016-2017
# Andriy Smilyanets <smile.andriy@gmail.com>, 2019
# Oleksandr Natalenko <oleksandr@natalenko.name>, 2011, 2012
@@ -14,10 +17,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Andrij Mizyk <andm1zyk@proton.me>, 2022\n"
"Language-Team: Ukrainian (http://www.transifex.com/mc/mc/language/uk/)\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
@@ -57,7 +60,7 @@
#, c-format
msgid "Unable to create event '%s'!"
-msgstr "Не вдалося створити подію «%s."
+msgstr "Не вдалося створити подію '%s'!"
#, c-format
msgid ""
@@ -85,30 +88,6 @@
msgid "FATAL: not a directory:"
msgstr "Сталася помилка. Не є каталогом:"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "Під час перенесення користувацьких параметрів сталася помилка: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"Старі настройки перенесено з %s\n"
-"до каталогів, рекомендованих Freedesktop.\n"
-"Щоб отримати докладніші відомості, відвідайте веб-сторінку http://standards."
-"freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"Застарілі настройки переміщено з %s\n"
-"у %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -198,12 +177,12 @@
msgid "True color not supported with ncurses."
msgstr "Ncurses не підтримує 16М кольорів."
-msgid "True color not supported in this slang version."
-msgstr "True колір не підтримується в цій версії slang."
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "Не виглядає на те, що ваш термінал підтримує 256 кольорів."
+msgid "True color not supported in this slang version."
+msgstr "True колір не підтримується в цій версії slang."
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr ""
"Встановіть COLORTERM=truecolor якщо ваш термінал справді підтримує 16,7М "
@@ -496,25 +475,31 @@
msgstr "Змінна середовища TERM не встановлена!\n"
msgid "Cannot check SIGWINCH pipe"
-msgstr ""
+msgstr "Не вдалося перевірити канал SIGWINCH"
#, c-format
msgid ""
"\n"
"Cannot create pipe for SIGWINCH: %s (%d)\n"
msgstr ""
+"\n"
+"Не вдалося створити канал для SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure write end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Не вдалося налаштувати кінець запису каналу SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
"\n"
"Cannot configure read end of SIGWINCH pipe: %s (%d)\n"
msgstr ""
+"\n"
+"Не вдалося налаштувати кінець зчитування каналу SIGWINCH: %s (%d)\n"
#, c-format
msgid ""
@@ -531,19 +516,19 @@
msgstr "кБ"
msgid "KiB"
-msgstr "Кібібайт"
+msgstr "КіБ"
msgid "MB"
msgstr "Мб"
msgid "MiB"
-msgstr "Мебібайт"
+msgstr "МіБ"
msgid "GB"
msgstr "Гб"
msgid "GiB"
-msgstr "Гібібайт"
+msgstr "ГіБ"
msgid "Cannot create pipe descriptor"
msgstr "Не вдалося створити дескриптор каналу"
@@ -559,6 +544,9 @@
"Виникла несподівана помилка під час читання select() з підлеглого процесу:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr "Неможливо закрити дескриптор каналу (p == NULL)"
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -567,18 +555,6 @@
"Неочікувана помилка у waitpid():\n"
"%s"
-msgid "Warning"
-msgstr "Попередження"
-
-msgid "Pipe failed"
-msgstr "Сталася помилка каналу"
-
-msgid "Dup failed"
-msgstr "Сталася помилка дублювання дескриптора"
-
-msgid "Error dup'ing old error pipe"
-msgstr "Сталася помилка дублювання старого каналу помилок"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Кеш каталога застарів для %s"
@@ -704,12 +680,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Журналювати команди FTP у вказаний файл"
-msgid "Set debug level"
-msgstr "Встановити рівень відлагоджування"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "Запускає програму перегляду для файлу"
@@ -729,7 +699,7 @@
msgstr "Намагатися використовувати застаріле стеження за виділенням мишкою"
msgid "Disable mouse support in text version"
-msgstr "Вимкнути підтримку миші у текстовій версії"
+msgstr "Вимкнути підтримку миші в текстовій версії"
msgid "Tries to use termcap instead of terminfo"
msgstr "Пробує використовувати termcap замість terminfo"
@@ -1043,15 +1013,6 @@
msgid "Two files are needed to compare"
msgstr "Для порівняння необхідно вказати два файли"
-msgid "Choose syntax highlighting"
-msgstr "Оберіть підсвітку синтаксису"
-
-msgid "< Auto >"
-msgstr "< Авто >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Оновити поточний синтаксис >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "Завантаження: %3d%%"
@@ -1086,6 +1047,9 @@
"Файл «%s» надто великий\n"
"Все одно відкрити?"
+msgid "Warning"
+msgstr "Попередження"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "Сталася помилка читання з каналу: %s"
@@ -1094,14 +1058,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "Не вдалося відкрити канал для читання: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "Виконується пошук %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "Виконується пошук %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "Файл має жорсткі посилання. Відкріпити їх перед зберіганням?"
@@ -1147,9 +1103,6 @@
msgid "Save As"
msgstr "Зберегти як"
-msgid "Collect completions"
-msgstr "Зібрати доповнення"
-
msgid "&Quick save"
msgstr "&Швидке збереження"
@@ -1180,27 +1133,6 @@
msgid "Cannot save file"
msgstr "Не вдалося зберегти файл"
-msgid "Delete macro"
-msgstr "Видалити макрос"
-
-msgid "Press macro hotkey:"
-msgstr "Натисніть гарячу клавішу для макросу:"
-
-msgid "Macro not deleted"
-msgstr "Макрос не видалено"
-
-msgid "Save macro"
-msgstr "Зберегти макрос"
-
-msgid "Press the macro's new hotkey:"
-msgstr "Натисніть нову клавішу макросу:"
-
-msgid "Repeat last commands"
-msgstr "Повторити останні команди"
-
-msgid "Repeat times:"
-msgstr "Кількість повторень:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "Підтвердити запис файлу: «%s»"
@@ -1235,13 +1167,6 @@
msgid "&Local"
msgstr "&Місцевий"
-msgid "Replace"
-msgstr "Замінити"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "Виконано замін: %ld"
-
msgid "[NoName]"
msgstr "[БезНазви]"
@@ -1268,13 +1193,13 @@
msgstr "Цю функція ще не реалізовано"
msgid "Copy to clipboard"
-msgstr "Скопіювати у буфер"
+msgstr "Скопіювати в буфер"
msgid "Unable to save to file"
msgstr "Не вдалося зберегти у файл"
msgid "Cut to clipboard"
-msgstr "Вирізати у буфер"
+msgstr "Вирізати в буфер"
msgid "Goto line"
msgstr "Перейти на рядок"
@@ -1297,8 +1222,9 @@
msgid "Run sort"
msgstr "Виконати сортування"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "Введіть параметри сортування (див. man sort), розділені пробілами:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
+"Уведіть параметри сортування (див. man-сторінку sort(1)) розділені пробілами:"
msgid "Sort"
msgstr "Сортування"
@@ -1350,35 +1276,35 @@
"Поточний текст змінено і не збережено. \n"
"Продовження операції призведе до втрати змін."
-msgid "In se&lection"
-msgstr "У вид&іленні"
+msgid "Cancel"
+msgstr "Скасувати"
-msgid "&Find all"
-msgstr "&Знайти все"
+msgid "Collect completions"
+msgstr "Зібрати доповнення"
-msgid "Enter replacement string:"
-msgstr "Введіть рядок для заміни:"
+msgid "NoName"
+msgstr "БезНазви"
-msgid "Replace with:"
-msgstr "Замінити на:"
+msgid "Save macro"
+msgstr "Зберегти макрос"
-msgid "&Replace"
-msgstr "&Замінити"
+msgid "Press the macro's new hotkey:"
+msgstr "Натисніть нову клавішу макросу:"
-msgid "A&ll"
-msgstr "&Усі"
+msgid "Delete macro"
+msgstr "Видалити макрос"
-msgid "&Skip"
-msgstr "П&ропустити"
+msgid "Press macro hotkey:"
+msgstr "Натисніть гарячу клавішу для макросу:"
-msgid "Confirm replace"
-msgstr "Підтвердити заміну"
+msgid "Macro not deleted"
+msgstr "Макрос не видалено"
-msgid "Cancel"
-msgstr "Скасувати"
+msgid "Repeat last commands"
+msgstr "Повторити останні команди"
-msgid "NoName"
-msgstr "БезНазви"
+msgid "Repeat times:"
+msgstr "Кількість повторень:"
msgid "&Open file..."
msgstr "&Відкрити файл…"
@@ -1668,6 +1594,45 @@
msgid "Editor options"
msgstr "Параметри редактора"
+msgid "In se&lection"
+msgstr "У вид&іленні"
+
+msgid "&Find all"
+msgstr "&Знайти все"
+
+msgid "Enter replacement string:"
+msgstr "Введіть рядок для заміни:"
+
+msgid "Replace"
+msgstr "Замінити"
+
+msgid "Replace with:"
+msgstr "Замінити на:"
+
+msgid "&Replace"
+msgstr "&Замінити"
+
+msgid "A&ll"
+msgstr "&Усі"
+
+msgid "&Skip"
+msgstr "П&ропустити"
+
+msgid "Confirm replace"
+msgstr "Підтвердити заміну"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "Виконується пошук %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "Виконується пошук %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "Виконано замін: %ld"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1675,8 +1640,8 @@
"Дружній до користувача редактор тексту\n"
"написаний для Midnight Commander."
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr ""
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr "Авторські права (C) 1996-2022 Фонд вільного програмного забезпечення"
msgid "About"
msgstr "Про програму"
@@ -1795,6 +1760,15 @@
msgid "Select language"
msgstr "Вибрати мову"
+msgid "Choose syntax highlighting"
+msgstr "Оберіть підсвітку синтаксису"
+
+msgid "< Auto >"
+msgstr "< Авто >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Оновити поточний синтаксис >"
+
msgid "Load syntax file"
msgstr "Завантажити файл синтаксису"
@@ -1831,6 +1805,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"Це не xterm чи консоль Linux;\n"
+"підоболонку не можливо перемкнути."
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "Введіть 'exit', щоб повернутися до Midnight Commander"
@@ -1858,7 +1834,7 @@
#, c-format
msgid "Permissions (octal): %o"
-msgstr ""
+msgstr "Дозволи (шістнад.): %o"
msgid "Chown advanced command"
msgstr "Розширена зміна власника"
@@ -1922,10 +1898,10 @@
msgstr "Підраховувати за&гальний розмір"
msgid "Classic pro&gressbar"
-msgstr "Класична панель прогресу"
+msgstr "Класична панель &поступу"
msgid "Mkdi&r autoname"
-msgstr "Автоіменування нових каталогів"
+msgstr "Авто&йменування нових каталогів"
msgid "&Preallocate space"
msgstr "&Зарезервувати місце"
@@ -1961,7 +1937,7 @@
msgstr "Шаблони &oболонки"
msgid "Co&mplete: show all"
-msgstr "Доп&овнення: показувати усі"
+msgstr "Доп&овнення: показувати всі"
msgid "Rotating d&ash"
msgstr "Обе&pтовий індикатор"
@@ -1985,7 +1961,7 @@
msgstr "Шкіра:"
msgid "&Shadows"
-msgstr ""
+msgstr "&Тіні"
msgid "Appearance"
msgstr "Вигляд"
@@ -2003,7 +1979,7 @@
msgstr "&Використовувати розміри системи СІ"
msgid "Mi&x all files"
-msgstr "Змішати &усі файли"
+msgstr "Змішати в&сі файли"
msgid "Show &backup files"
msgstr "Показувати ре&зервні файли"
@@ -2170,7 +2146,7 @@
msgstr "Параметри віртуальної файлової системи"
msgid "cd"
-msgstr "Перейти у"
+msgstr "cd"
msgid "Quick cd"
msgstr "Швидка зміна каталогу"
@@ -2197,19 +2173,6 @@
msgstr "Фонові завдання"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Пароль для \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Домен:"
-
-msgid "Username:"
-msgstr "Ім’я користувача:"
-
-msgid "SMB authentication"
-msgstr "SMB(самба) автентифікація"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2218,79 +2181,79 @@
"%s "
msgid "Secure deletion"
-msgstr ""
+msgstr "Безпечне видалення"
msgid "Undelete"
-msgstr ""
+msgstr "Відновлення після видалення"
msgid "Synchronous updates"
-msgstr ""
+msgstr "Синхронне оновлення"
msgid "Synchronous directory updates"
-msgstr ""
+msgstr "Синхронне оновлення каталогу"
msgid "Immutable"
-msgstr ""
+msgstr "Незмінюваний"
msgid "Append only"
-msgstr ""
+msgstr "Лише дозапис"
msgid "No dump"
-msgstr ""
+msgstr "Не піддається рез. копіюванню"
msgid "No update atime"
-msgstr ""
+msgstr "Не оновлювати запис atime"
msgid "Compress"
-msgstr ""
+msgstr "Стиснення"
msgid "Compressed clusters"
-msgstr ""
+msgstr "Стиснені кластери"
msgid "Compressed dirty file"
-msgstr ""
+msgstr "Стиснення поганих файлів"
msgid "Compression raw access"
-msgstr ""
+msgstr "Дозвіл стиснення raw"
msgid "Encrypted inode"
-msgstr ""
+msgstr "Зашифрований інфовузол"
msgid "Journaled data"
-msgstr ""
+msgstr "Журнальовані дані"
msgid "Indexed directory"
-msgstr ""
+msgstr "Індексований каталог"
msgid "No tail merging"
-msgstr ""
+msgstr "Не обʼєднувати кінцівки"
msgid "Top of directory hierarchies"
-msgstr ""
+msgstr "На верху ієрархії каталогів"
msgid "Inode uses extents"
-msgstr ""
+msgstr "Інфовузол використовує екстенти"
msgid "Huge_file"
-msgstr ""
+msgstr "Великий_файл"
msgid "No COW"
-msgstr ""
+msgstr "Не CoW"
msgid "Direct access for files"
-msgstr ""
+msgstr "Прямий доступ до файлів"
msgid "Casefolded file"
-msgstr ""
+msgstr "Не чутливий до регістру файл"
msgid "Inode has inline data"
-msgstr ""
+msgstr "Інфовузол має вбудовані дані"
msgid "Project hierarchy"
-msgstr ""
+msgstr "Ієрархія проєкту"
msgid "Verity protected inode"
-msgstr ""
+msgstr "Істинність захищеного інфовузла"
msgid "&Marked all"
msgstr "Вст. пом&iч."
@@ -2302,22 +2265,26 @@
msgstr "&Вим. поміч."
msgid "Chattr command"
-msgstr ""
+msgstr "Команда chattr"
#, c-format
msgid ""
"Cannot chattr \"%s\"\n"
"%s"
msgstr ""
+"Не вдалося змінити атрибути \"%s\"\n"
+"%s"
msgid "Cannot change attributes on non-local filesystems"
-msgstr ""
+msgstr "Не можливо змінити атрибути на нелокальних файлових системах"
#, c-format
msgid ""
"Cannot get flags of \"%s\"\n"
"%s"
msgstr ""
+"Не вдалося отримати прапорець \"%s\"\n"
+"%s"
msgid "set &user ID on execution"
msgstr "встановити ID &користувача на виконання"
@@ -2415,12 +2382,6 @@
msgid "Cannot change directory"
msgstr "Не вдалося змінити каталог"
-msgid "Filter"
-msgstr "Фільтр"
-
-msgid "Set expression for filtering filenames"
-msgstr "Задати вираз для відбору назв файлів"
-
#, c-format
msgid "Link %s to:"
msgstr "Створити посилання на %s:"
@@ -2526,9 +2487,6 @@
msgid "Shell link to machine"
msgstr "Shell-з’єднання з віддаленою машиною"
-msgid "SMB link to machine"
-msgstr "SMB-з’єднання з віддаленою машиною"
-
msgid "Undelete files on an ext2 file system"
msgstr "Відновлення файлів на файловій системі ext2"
@@ -2567,18 +2525,31 @@
"Не вдалося створити тимчасовий командний файл\n"
"%s"
+msgid "Pipe failed"
+msgstr "Сталася помилка каналу"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+"У вас застарів файл %s.\n"
+"Midnight Commander зараз використовує файл %s.\n"
+"Скопіюйте свою модифікацію старого файлу у новий."
+
#, c-format
msgid " %s%s file error"
msgstr " Сталася помилка файлу %s%s"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"Формат файлу %smc.ext було змінено у версіі 3.0. Схоже що стався збій при "
-"встановленні. Будь ласка, візьміть свіжу копію із пакету Midnight Commander."
+"Формат файлу %s%s змінено у версії 4.0. Схоже, що інсталяція завершилася "
+"невдало. Будь ласка, отримайте свіжу копію з пакунка Midnight Commander."
#, c-format
msgid "%s file error"
@@ -2586,11 +2557,11 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"Формат файлу %s змінився у версії 3.0. Можна або скопіювати його з %smc.ext, "
-"або використати вказаний файл як приклад для створення нового."
+"Формат файлу %s змінено у версії 4.0. Ви можете скопіювати його з %s%s або "
+"використати цей файл як приклад для написання."
msgid "DialogTitle|Copy"
msgstr "DialogTitle|Копіювання"
@@ -2883,6 +2854,15 @@
msgid "(stalled)"
msgstr "(простоювання)"
+msgid "Incomplete file was retrieved"
+msgstr "Отримано неповний файл"
+
+msgid "&Keep"
+msgstr "За&лишити"
+
+msgid "&Continue copy"
+msgstr "&Продовжити копіювання"
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2899,12 +2879,6 @@
"Не вдалося закрити цільовий файл «%s»\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Отримано неповний файл. Залишити його?"
-
-msgid "&Keep"
-msgstr "За&лишити"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2996,7 +2970,7 @@
msgstr "Замістити цей файл?"
msgid "A&ppend"
-msgstr "Дописати у &кінець"
+msgstr "Дописати в &кінець"
msgid "&Reget"
msgstr "Пере&читати"
@@ -3023,8 +2997,8 @@
msgstr "Фоновий процес: файл існує"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "Файлів оброблено: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr "Файлів оброблено: %zu / %zu"
#, c-format
msgid "Files processed: %zu"
@@ -3051,8 +3025,8 @@
msgstr " Усього: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " Усього: %s/%s "
+msgid " Total: %s / %s "
+msgstr "Усього: %s / %s "
msgid "Source"
msgstr "Джерело"
@@ -3104,7 +3078,7 @@
msgstr "&Формат списку"
msgid "&Sort order..."
-msgstr "Порядок &сортування…"
+msgstr "&Порядок сортування..."
msgid "&Filter..."
msgstr "&Фільтр…"
@@ -3118,11 +3092,8 @@
msgid "S&hell link..."
msgstr "&Shell-з’єднання…"
-msgid "S&FTP link..."
-msgstr "S&FTP-з’єднання…"
-
-msgid "SM&B link..."
-msgstr "&SMB-з’єднання…"
+msgid "SFTP li&nk..."
+msgstr "SFTP-&зʼєднання"
msgid "Paneli&ze"
msgstr "Панелі&зувати"
@@ -3140,7 +3111,7 @@
msgstr "Фі&льтрований перегляд"
msgid "&Copy"
-msgstr "Ско&піювати"
+msgstr "С&копіювати"
msgid "C&hmod"
msgstr "З&міна прав"
@@ -3158,19 +3129,19 @@
msgstr "Ред&агувати символьне посилання"
msgid "Ch&own"
-msgstr "Змі&на власника"
+msgstr "Зміна &власника"
msgid "&Advanced chown"
-msgstr "Пр&ава (розширені) "
+msgstr "Права (р&озширені) "
msgid "Cha&ttr"
-msgstr ""
+msgstr "Зміна а&трибутів"
msgid "&Rename/Move"
-msgstr "&Перейменувати/перемістити"
+msgstr "Пере&йменувати/перемістити"
msgid "&Mkdir"
-msgstr "&Створити каталог"
+msgstr "Створ&ити каталог"
msgid "&Quick cd"
msgstr "&Швидка зміна каталогу"
@@ -3337,6 +3308,9 @@
msgid "&Find recursively"
msgstr "&Шукати рекурсивно"
+msgid "Follow s&ymlinks"
+msgstr "Переходити за с&имв. посиланнями"
+
msgid "S&kip hidden"
msgstr "П&ропускати приховані"
@@ -3505,8 +3479,8 @@
msgstr "Немає відомостей про простір"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "Вільне місце: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr "Вільний простір: %s / %s (%d%%)"
#, c-format
msgid "Type: %s"
@@ -3561,14 +3535,14 @@
msgstr "Посилань: %d"
msgid "Attributes: not supported"
-msgstr ""
+msgstr "Атрибути: не підтримуються"
#, c-format
msgid "Attributes: %s"
-msgstr ""
+msgstr "Атрибути: %s"
msgid "Attributes: unavailable"
-msgstr ""
+msgstr "Атрибути: не дозволені"
#, c-format
msgid "Mode: %s (%04o)"
@@ -3597,7 +3571,7 @@
msgstr "Заголовок вікна &xterm"
msgid "&Show free space"
-msgstr "Показати об'єм вільноно місця"
+msgstr "Показати обʼєм вільного місця"
msgid "Panel split"
msgstr "Розбиття панелей"
@@ -3754,6 +3728,9 @@
msgid "Unselect"
msgstr "Зняти відмітку"
+msgid "Filter"
+msgstr "Фільтр"
+
msgid "Do you really want to execute?"
msgstr "Справді виконати?"
@@ -3782,14 +3759,26 @@
msgid "Enter command label:"
msgstr "Введіть мітку команди: "
-msgid "Cannot invoke command."
-msgstr "Не вдалося викликати команду."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
+"Зовнішнє панелізування:\n"
+"%s"
-msgid "Pipe close failed"
-msgstr "Сталася помилка закриття каналу"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
+"Зовнішнє панелізування:\n"
+"не вдалося прочитати дані з підбуфера виводу:\n"
+"%s"
msgid "Cannot run external panelize in a non-local directory"
-msgstr "Не вдалося виконати зовнішню панелізацію у нелокальному каталозі"
+msgstr "Не вдалося виконати зовнішнє панелізування в нелокальному каталозі"
msgid "Modified git files"
msgstr "Змінені файли git"
@@ -3891,10 +3880,10 @@
"and wait as well."
msgstr ""
"Натисніть клавішу %s\n"
-"і почекайте, доки це повідомлення пропаде.\n"
+"і почекайте, доки це повідомлення зникне.\n"
"\n"
-"Потім натисніть її ще раз, щоб пересвідчитися,\n"
-"що поруч з її назвою з’явилася мітка «OK».\n"
+"Потім натисніть її ще раз, щоб переконатися,\n"
+"що поруч із її назвою з’явилася мітка «OK».\n"
"\n"
"Якщо необхідно скасувати навчання, натисніть\n"
"клавішу Esc і також зачекайте."
@@ -3952,6 +3941,9 @@
"is already running on this terminal.\n"
"Subshell support will be disabled."
msgstr ""
+"GNU Midnight Commander\n"
+"вже запущено в цьому терміналі\n"
+"підтримку підоболонки буде вимкнено."
#, c-format
msgid ""
@@ -3995,37 +3987,37 @@
msgstr "Попередження: не вдалося змінити на %s.\n"
msgid "With builtin Editor and Aspell support"
-msgstr ""
+msgstr "Із вбудованим редактором і підтримкою Aspell"
msgid "With builtin Editor"
-msgstr ""
+msgstr "Із вбудованим редактором"
msgid "With optional subshell support"
-msgstr ""
+msgstr "Із необовʼязковою підтримкою підоболонки"
msgid "With subshell support as default"
-msgstr ""
+msgstr "Із підтримкою підоболонки за замовчуванням"
msgid "With support for background operations"
-msgstr ""
+msgstr "Із підтримкою фонових операцій"
msgid "With mouse support on xterm and Linux console"
-msgstr ""
+msgstr "Із підтримкою миші в xterm та консолях Linux"
msgid "With mouse support on xterm"
-msgstr ""
+msgstr "Із підтримкою миші в xterm"
msgid "With support for X11 events"
-msgstr ""
+msgstr "Із підтримкою подій X11"
msgid "With internationalization support"
-msgstr ""
+msgstr "Із підтримкою інтернаціоналізації"
msgid "With multiple codepages support"
-msgstr ""
+msgstr "Із підтримкою кількох кодових сторінок"
msgid "With ext2fs attributes support"
-msgstr ""
+msgstr "Із підтримкою атрибутів ext2fs"
#, c-format
msgid "Built with GLib %d.%d.%d\n"
@@ -4033,21 +4025,25 @@
#, c-format
msgid "Built with S-Lang %s with terminfo database\n"
-msgstr ""
+msgstr "Зібрано зі S-Lang %s з базою даних terminfo\n"
#, c-format
msgid "Built with ncurses %s\n"
-msgstr ""
+msgstr "Зібрано з ncurses %s\n"
msgid "Built with ncurses (unknown version)"
-msgstr ""
+msgstr "Зібрано з ncurses (невідома версія)"
#, c-format
msgid "Built with ncursesw %s\n"
-msgstr ""
+msgstr "Зібрано з ncursesw %s\n"
msgid "Built with ncursesw (unknown version)"
-msgstr ""
+msgstr "Зібрано з ncursesw (невідома версія)"
+
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr "Зібрано з libssh2 %d.%d.%d\n"
msgid "Virtual File Systems:"
msgstr "Віртуальні файлові системи:"
@@ -4174,16 +4170,27 @@
"Виявлено неочікуваний кінець файлу\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Виявлено неузгоджений архів tar"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Не вдалося відкрити архів %s\n"
+"Не можливо відкрити %s архів\n"
+"%s:\n"
"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Виявлено неузгоджений архів extfs"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
+"Віртуальна файлова система EXTFS:\n"
+"%s"
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4299,6 +4306,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "Очікування повторення… %d (щоб скасувати, натисніть Ctrl+G)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr "ftpfs: не можливо перекласти адресу на назву: %s"
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr "ftpfs: спробуйте перезʼєднатися зі сервером, спроба %u"
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr "ftpfs: не можливо отримати назву сокета: %s"
+
+msgid "ftpfs: could not reconnect to server"
+msgstr "ftpfs: не можливо перезʼєднатися з сервером"
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: виявлено неправильний рід адреси"
@@ -4352,6 +4374,14 @@
"Видаліть пароль або змініть режим"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+"Віртуальна файлова система SFS:\n"
+"%s"
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: Попередження: файл %s не знайдено\n"
@@ -4379,12 +4409,17 @@
msgstr "sftp: Неможливо отримати ім’я поточного користувача."
msgid "sftp: Invalid host name."
-msgstr "sftp: Неправильне ім’я хоста."
+msgstr "sftp: Неправильна назва хоста."
#, c-format
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+"sftp: не вдалося перетворити IP-адресу віддаленого компʼютера в текстовий "
+"формат"
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: з’єднання з %s"
@@ -4396,6 +4431,66 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: з’єдання з сервером невдале: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr "sftp: знайдено ключ господаря непідтримуваного типу: RSA1"
+
+msgid "sftp: unknown host key type:"
+msgstr "sftp: невідомий тип ключа господаря:"
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+"Додано на постійно\n"
+"%s (%s)\n"
+"до списку відомих господарів."
+
+msgid "sftp: cannot get the remote host key"
+msgstr "sftp: не можливо отримати віддалений ключ господаря"
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+"sftp: непідтримуваний тип ключа, не можливо перевірити віддалений ключ "
+"господаря"
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr "sftp: не можливо вирахувати hash-суму відбитка ключа господаря"
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+"Справжність господаря\n"
+"%s (%s)\n"
+"не можливо визначити!\n"
+"hash-сума відбитка ключа %s\n"
+"SHA1: %s.\n"
+"Бажаєте додати її до списку відомих господарів і продовжити зʼєднання?"
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+"%s (%s)\n"
+"знайдено у списку відомих господарів, але\n"
+"КЛЮЧІ НЕ СПІВПАДАЮТЬ! ЦЕ МОЖЕ БУТИ АТАКОЮ MITM!\n"
+"Ви впевнені, що хочете додати його до списку відомих господарів і продовжити "
+"зʼєднання?"
+
+msgid "sftp: host key verification failed"
+msgstr "sftp: не вдалося перевірити ключ господаря"
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: Введіть ключову фразу для %s "
@@ -4410,8 +4505,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: Пароль порожній."
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: Невдача при встановленні SSH сесії"
+msgid "sftp: failure establishing SSH session"
+msgstr "sftp: невдале встановлення сеансу SSH"
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: Немає даних про оброблювач для читання файлу"
@@ -4428,35 +4523,6 @@
msgstr "sftp: Створення списку завершено."
#, c-format
-msgid "reconnect to %s failed"
-msgstr ""
-"сталася помилка повторного з’єднання з %s\n"
-" "
-
-msgid "Authentication failed"
-msgstr "Сталася помилка авторизації "
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "Сталася помилка %s створення каталогу %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "Сталася помилка %s видалення каталогу %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s відкриває віддалений файл %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s видаляє віддалений файл %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s перейменовує файли\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/uz.po
^
|
@@ -1,20 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the mc package.
-#
+#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2020-12-31 16:34+0300\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Uzbek (http://www.transifex.com/mc/mc/language/uz/)\n"
+"Language: uz\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: uz\n"
"Plural-Forms: nplurals=1; plural=0;\n"
# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
@@ -71,24 +71,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -163,10 +145,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -518,24 +500,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr ""
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -661,12 +634,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr ""
@@ -956,15 +923,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -997,20 +955,15 @@
"Open it anyway?"
msgstr ""
-#, c-format
-msgid "Error reading from pipe: %s"
-msgstr ""
-
-#, c-format
-msgid "Cannot open pipe for reading: %s"
+msgid "Warning"
msgstr ""
#, c-format
-msgid "Searching %s: %3d%%"
+msgid "Error reading from pipe: %s"
msgstr ""
#, c-format
-msgid "Searching %s"
+msgid "Cannot open pipe for reading: %s"
msgstr ""
msgid "File has hard-links. Detach before saving?"
@@ -1058,9 +1011,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1091,27 +1041,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1146,13 +1075,6 @@
msgid "&Local"
msgstr ""
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1204,7 +1126,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1255,34 +1177,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
+msgid "Cancel"
msgstr ""
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
+msgid "Press the macro's new hotkey:"
msgstr ""
-msgid "A&ll"
+msgid "Delete macro"
msgstr ""
-msgid "&Skip"
+msgid "Press macro hotkey:"
msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
+msgid "Repeat last commands"
msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1573,12 +1495,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr ""
+
+msgid "A&ll"
+msgstr ""
+
+msgid "&Skip"
+msgstr ""
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr ""
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1698,6 +1659,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -1990,8 +1960,7 @@
msgid "Sort order"
msgstr ""
-#. TRANSLATORS: no need to translate 'Confirmation', it's just a context
-#. prefix
+#. TRANSLATORS: no need to translate 'Confirmation', it's just a context prefix
msgid "Confirmation|&Delete"
msgstr ""
@@ -2089,19 +2058,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr ""
-
-msgid "Domain:"
-msgstr ""
-
-msgid "Username:"
-msgstr ""
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2261,6 @@
msgid "Cannot change directory"
msgstr ""
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2364,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2398,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2425,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2661,15 @@
msgid "(stalled)"
msgstr ""
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr ""
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2682,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr ""
-
-msgid "&Keep"
-msgstr ""
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2788,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2816,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2923,10 +2883,7 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
-msgstr ""
-
-msgid "SM&B link..."
+msgid "SFTP li&nk..."
msgstr ""
msgid "Paneli&ze"
@@ -3139,6 +3096,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3300,7 +3260,7 @@
msgstr ""
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3543,6 +3503,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3570,10 +3533,17 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
msgstr ""
-msgid "Pipe close failed"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
msgstr ""
msgid "Cannot run external panelize in a non-local directory"
@@ -3809,6 +3779,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3920,13 +3894,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4043,6 +4024,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4094,6 +4090,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4123,6 +4125,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4134,62 +4139,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/vi.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Vietnamese (http://www.transifex.com/mc/mc/language/vi/)\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -521,24 +503,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Cảnh báo"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "Cache thư mục hết hạn cho %s"
@@ -664,12 +637,6 @@
msgid "Log ftp dialog to specified file"
msgstr "Ghi hội thoại FTP vào một tập tin"
-msgid "Set debug level"
-msgstr "Đặt mức độ tìm sửa lỗi (debug)"
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Xem tập tin"
@@ -959,15 +926,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr "< Tự động >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< Nạp lại cú pháp hiện thời >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -1000,6 +958,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Cảnh báo"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1008,14 +969,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Tìm %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1061,9 +1014,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1094,27 +1044,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1149,13 +1078,6 @@
msgid "&Local"
msgstr "&Nội bộ máy"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1207,7 +1129,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1258,34 +1180,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Hủy bỏ"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Thay thế"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "&Tất cả"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Bỏ qua"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Hủy bỏ"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1576,12 +1498,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Thay thế"
+
+msgid "A&ll"
+msgstr "&Tất cả"
+
+msgid "&Skip"
+msgstr "&Bỏ qua"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Tìm %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1701,6 +1662,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr "< Tự động >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< Nạp lại cú pháp hiện thời >"
+
msgid "Load syntax file"
msgstr ""
@@ -2091,19 +2061,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Mật khẩu cho \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Miền (domain):"
-
-msgid "Username:"
-msgstr "Tên người dùng:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2307,12 +2264,6 @@
msgid "Cannot change directory"
msgstr "Không thay đổi được thư mục"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr "Tạo liên kết tới %s:"
@@ -2416,9 +2367,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2453,14 +2401,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s lỗi tập tin "
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2470,8 +2428,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2706,6 +2664,15 @@
msgid "(stalled)"
msgstr "(bị nhốt)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Giữ"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2718,12 +2685,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Nhận được tập tin không đầy đủ. Giữ tập tin?"
-
-msgid "&Keep"
-msgstr "&Giữ"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2830,7 +2791,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2858,7 +2819,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2911,7 +2872,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "t&Hứ tự sắp xếp..."
+msgstr ""
msgid "&Filter..."
msgstr "&Lọc tập tin..."
@@ -2925,12 +2886,9 @@
msgid "S&hell link..."
msgstr "kết nối &Shell..."
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "kết nối SM&B..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3141,6 +3099,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr "Không có thông tin về khoảng trống"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3545,6 +3506,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3573,11 +3537,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Không thực hiện được câu lệnh."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Đóng đường ống không thành công"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3828,6 +3799,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3953,16 +3928,22 @@
"Kết thúc tập tin không mong đợi\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "Tập tin tar không thích hợp"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"Không mở được tập tin nén %s\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "Tập tin nén extfs không thích hợp"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4078,6 +4059,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4129,6 +4125,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4162,6 +4164,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4173,62 +4178,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/wa.po
^
|
@@ -7,10 +7,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Slava Zanko <slavazanko@gmail.com>, 2011\n"
"Language-Team: Walloon (http://www.transifex.com/mc/mc/language/wa/)\n"
"Language: wa\n"
"MIME-Version: 1.0\n"
@@ -72,24 +72,6 @@
msgid "FATAL: not a directory:"
msgstr ""
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -164,10 +146,10 @@
msgid "True color not supported with ncurses."
msgstr ""
-msgid "True color not supported in this slang version."
+msgid "Your terminal doesn't even seem to support 256 colors."
msgstr ""
-msgid "Your terminal doesn't even seem to support 256 colors."
+msgid "True color not supported in this slang version."
msgstr ""
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
@@ -519,24 +501,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "Advertixhmint"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr ""
@@ -662,12 +635,6 @@
msgid "Log ftp dialog to specified file"
msgstr ""
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "Enonder li håyneu di fitchî so on fitchî"
@@ -957,15 +924,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr ""
-
-msgid "< Reload Current Syntax >"
-msgstr ""
-
#, c-format
msgid "Loading: %3d%%"
msgstr ""
@@ -998,6 +956,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "Advertixhmint"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1006,14 +967,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr ""
-
-#, c-format
-msgid "Searching %s"
-msgstr "Dji cwîr %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1059,9 +1012,6 @@
msgid "Save As"
msgstr ""
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr ""
@@ -1092,27 +1042,6 @@
msgid "Cannot save file"
msgstr ""
-msgid "Delete macro"
-msgstr ""
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr ""
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr ""
-
-msgid "Repeat times:"
-msgstr ""
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr ""
@@ -1147,13 +1076,6 @@
msgid "&Local"
msgstr "&Locå"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr ""
@@ -1205,7 +1127,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1256,34 +1178,34 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr ""
+msgid "Cancel"
+msgstr "Rinoncî"
-msgid "&Find all"
+msgid "Collect completions"
msgstr ""
-msgid "Enter replacement string:"
+msgid "NoName"
msgstr ""
-msgid "Replace with:"
+msgid "Save macro"
msgstr ""
-msgid "&Replace"
-msgstr "&Mete el Plaece"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "A&ll"
-msgstr "&Tertos"
+msgid "Delete macro"
+msgstr ""
-msgid "&Skip"
-msgstr "&Passer"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Confirm replace"
+msgid "Macro not deleted"
msgstr ""
-msgid "Cancel"
-msgstr "Rinoncî"
+msgid "Repeat last commands"
+msgstr ""
-msgid "NoName"
+msgid "Repeat times:"
msgstr ""
msgid "&Open file..."
@@ -1574,12 +1496,51 @@
msgid "Editor options"
msgstr ""
+msgid "In se&lection"
+msgstr ""
+
+msgid "&Find all"
+msgstr ""
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr ""
+
+msgid "&Replace"
+msgstr "&Mete el Plaece"
+
+msgid "A&ll"
+msgstr "&Tertos"
+
+msgid "&Skip"
+msgstr "&Passer"
+
+msgid "Confirm replace"
+msgstr ""
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr ""
+
+#, c-format
+msgid "Searching %s"
+msgstr "Dji cwîr %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1699,6 +1660,15 @@
msgid "Select language"
msgstr ""
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr ""
+
+msgid "< Reload Current Syntax >"
+msgstr ""
+
msgid "Load syntax file"
msgstr ""
@@ -2089,19 +2059,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "Mot di passe po \\\\%s\\%s"
-
-msgid "Domain:"
-msgstr "Dominne:"
-
-msgid "Username:"
-msgstr "No di l' ûzeu:"
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2305,12 +2262,6 @@
msgid "Cannot change directory"
msgstr "Dji n' sai candjî di ridant"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr ""
@@ -2414,9 +2365,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2451,14 +2399,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2468,8 +2426,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2704,6 +2662,15 @@
msgid "(stalled)"
msgstr "(a djok)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "&Wårder"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2716,12 +2683,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "Dj' a rapexhî on fitchî nén etir. El fåt-i wårder?"
-
-msgid "&Keep"
-msgstr "&Wårder"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2828,7 +2789,7 @@
msgstr ""
#, c-format
-msgid "Files processed: %zu/%zu"
+msgid "Files processed: %zu / %zu"
msgstr ""
#, c-format
@@ -2856,7 +2817,7 @@
msgstr ""
#, c-format
-msgid " Total: %s/%s "
+msgid " Total: %s / %s "
msgstr ""
msgid "Source"
@@ -2909,7 +2870,7 @@
msgstr ""
msgid "&Sort order..."
-msgstr "Ôrde po &Relire..."
+msgstr ""
msgid "&Filter..."
msgstr "&Passete..."
@@ -2923,12 +2884,9 @@
msgid "S&hell link..."
msgstr ""
-msgid "S&FTP link..."
+msgid "SFTP li&nk..."
msgstr ""
-msgid "SM&B link..."
-msgstr "Loyén SM&B..."
-
msgid "Paneli&ze"
msgstr ""
@@ -3140,6 +3098,9 @@
msgid "&Find recursively"
msgstr ""
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr ""
@@ -3302,7 +3263,7 @@
msgstr "Nole informåcion so li stindeye"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3547,6 +3508,9 @@
msgid "Unselect"
msgstr ""
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr ""
@@ -3574,11 +3538,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "Dji n' sai enonder li cmande."
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "Li cloyaedje del bûze a fwait berwete"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3830,6 +3801,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr ""
@@ -3946,13 +3921,20 @@
"%s"
msgstr ""
+msgid "Inconsistent archive"
+msgstr ""
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-msgid "Inconsistent extfs archive"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
msgstr ""
#, c-format
@@ -4069,6 +4051,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr ""
@@ -4120,6 +4117,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr ""
@@ -4149,6 +4152,9 @@
msgid "sftp: %s"
msgstr ""
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr ""
@@ -4160,62 +4166,79 @@
msgid "sftp: connection to server failed: %s"
msgstr ""
-#, c-format
-msgid "sftp: Enter passphrase for %s "
+msgid "sftp: found host key of unsupported type: RSA1"
msgstr ""
-msgid "sftp: Passphrase is empty."
+msgid "sftp: unknown host key type:"
msgstr ""
#, c-format
-msgid "sftp: Enter password for %s "
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
msgstr ""
-msgid "sftp: Password is empty."
+msgid "sftp: cannot get the remote host key"
msgstr ""
-msgid "sftp: Failure establishing SSH session"
+msgid "sftp: unsupported key type, can't check remote host key"
msgstr ""
-msgid "sftp: No file handler data present for reading file"
+msgid "sftp: can't compute host key fingerprint hash"
msgstr ""
#, c-format
-msgid "sftp: socket error: %s"
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
msgstr ""
#, c-format
-msgid "sftp: (Ctrl-G break) Listing... %s"
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
msgstr ""
-msgid "sftp: Listing done."
+msgid "sftp: host key verification failed"
msgstr ""
#, c-format
-msgid "reconnect to %s failed"
+msgid "sftp: Enter passphrase for %s "
msgstr ""
-msgid "Authentication failed"
+msgid "sftp: Passphrase is empty."
msgstr ""
#, c-format
-msgid "Error %s creating directory %s"
+msgid "sftp: Enter password for %s "
msgstr ""
-#, c-format
-msgid "Error %s removing directory %s"
+msgid "sftp: Password is empty."
msgstr ""
-#, c-format
-msgid "%s opening remote file %s"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
+
+msgid "sftp: No file handler data present for reading file"
msgstr ""
#, c-format
-msgid "%s removing remote file %s"
+msgid "sftp: socket error: %s"
msgstr ""
#, c-format
-msgid "%s renaming files\n"
+msgid "sftp: (Ctrl-G break) Listing... %s"
+msgstr ""
+
+msgid "sftp: Listing done."
msgstr ""
#, c-format
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/zh_CN.po
^
|
@@ -3,10 +3,11 @@
# This file is distributed under the same license as the mc package.
#
# Translators:
+# Gurbuzguven <6mehmet6@gmail.com>, 2021
# Jacques Yip <cong-ye@163.com>, 2017
# Jake Li <gnozil@gmail.com>, 2012
# Kenneth Cheung <zjhken01@163.com>, 2018
-# liushuyu011 <liushuyu011@gmail.com>, 2016,2019
+# shuyu liu <liushuyu011@gmail.com>, 2016,2019
# Mingcong Bai <jeffbai@aosc.xyz>, 2016,2018
# qingxianhao <qinghao1@foxmail.com>, 2012
# qingxianhao <qinghao1@foxmail.com>, 2012
@@ -16,10 +17,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: Gurbuzguven <6mehmet6@gmail.com>, 2021\n"
"Language-Team: Chinese (China) (http://www.transifex.com/mc/mc/language/"
"zh_CN/)\n"
"Language: zh_CN\n"
@@ -85,30 +86,6 @@
msgid "FATAL: not a directory:"
msgstr "严重错误: 不是一个目录: "
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "迁移用户设置时发生了一个错误: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-"您的旧设置被从 %s 迁移\n"
-"到 Freedesktop 推荐目录。\n"
-"更多信息,请访问\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-"您的旧设置被从 %s 迁移\n"
-"到 %s\n"
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -195,12 +172,12 @@
msgid "True color not supported with ncurses."
msgstr "ncurses 不支持真色彩模式"
-msgid "True color not supported in this slang version."
-msgstr "此 slang 版本不支持真色彩模式"
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "你的终端连 256 色都不支持"
+msgid "True color not supported in this slang version."
+msgstr "此 slang 版本不支持真色彩模式"
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "如果你的终端真的支持真色彩的话,请设置环境变量 COLORTERM=truecolor"
@@ -554,6 +531,9 @@
"使用 select() 从子进程读取数据时发生未知错误:\n"
"%s"
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
@@ -562,18 +542,6 @@
"位于 waitpid() 中未预期的错误:\n"
"%s"
-msgid "Warning"
-msgstr "警告"
-
-msgid "Pipe failed"
-msgstr "管道失败"
-
-msgid "Dup failed"
-msgstr "复制失败"
-
-msgid "Error dup'ing old error pipe"
-msgstr "复制原有出错管道时发生错误"
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "%s 的目录缓存已过期"
@@ -699,12 +667,6 @@
msgid "Log ftp dialog to specified file"
msgstr "记录 ftp 对话到指定的文件"
-msgid "Set debug level"
-msgstr "设置调试级别"
-
-msgid "<integer>"
-msgstr "<integer>"
-
msgid "Launches the file viewer on a file"
msgstr "在文件上启动文件查看器"
@@ -1037,15 +999,6 @@
msgid "Two files are needed to compare"
msgstr "比较时需要两个文件"
-msgid "Choose syntax highlighting"
-msgstr "选择语法突出显示"
-
-msgid "< Auto >"
-msgstr "<自动>"
-
-msgid "< Reload Current Syntax >"
-msgstr "<重新加载当前语法>"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "正在载入: %3d%%"
@@ -1080,6 +1033,9 @@
"文件“%s”体积过大。\n"
"仍然打开?"
+msgid "Warning"
+msgstr "警告"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr "读取管道时发生错误: %s"
@@ -1088,14 +1044,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr "无法打开管道读取: %s"
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "正在搜索 %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "正在搜索 %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr "文件有硬链接。保存文件前分离该链接吗?"
@@ -1141,9 +1089,6 @@
msgid "Save As"
msgstr "另存为"
-msgid "Collect completions"
-msgstr "收集补全"
-
msgid "&Quick save"
msgstr "快速保存(&Q)"
@@ -1174,27 +1119,6 @@
msgid "Cannot save file"
msgstr "无法保存文件"
-msgid "Delete macro"
-msgstr "删除宏"
-
-msgid "Press macro hotkey:"
-msgstr "按下宏热键: "
-
-msgid "Macro not deleted"
-msgstr "宏没有删除"
-
-msgid "Save macro"
-msgstr "保存宏"
-
-msgid "Press the macro's new hotkey:"
-msgstr "为该宏按下新热键: "
-
-msgid "Repeat last commands"
-msgstr "重复上一个命令"
-
-msgid "Repeat times:"
-msgstr "重复次数: "
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "确认保存文件:“%s”"
@@ -1229,13 +1153,6 @@
msgid "&Local"
msgstr "本地(&L)"
-msgid "Replace"
-msgstr "替换"
-
-#, c-format
-msgid "%ld replacements made"
-msgstr "替换了 %ld 处"
-
msgid "[NoName]"
msgstr "[未命名]"
@@ -1291,8 +1208,8 @@
msgid "Run sort"
msgstr "运行 sort"
-msgid "Enter sort options (see manpage) separated by whitespace:"
-msgstr "输入排序选项(查看 manpage)用空格分隔: "
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
+msgstr ""
msgid "Sort"
msgstr "排序"
@@ -1344,35 +1261,35 @@
"当前文字被修改但没有保存。\n"
"选择继续将丢失这些修改。"
-msgid "In se&lection"
-msgstr "在选择区域(&L)"
+msgid "Cancel"
+msgstr "取消"
-msgid "&Find all"
-msgstr "查找全部(&F)"
+msgid "Collect completions"
+msgstr "收集补全"
-msgid "Enter replacement string:"
-msgstr "输入替换字符串: "
+msgid "NoName"
+msgstr "未命名"
-msgid "Replace with:"
-msgstr "替换为: "
+msgid "Save macro"
+msgstr "保存宏"
-msgid "&Replace"
-msgstr "替换(&R)"
+msgid "Press the macro's new hotkey:"
+msgstr "为该宏按下新热键: "
-msgid "A&ll"
-msgstr "全部(&L)"
+msgid "Delete macro"
+msgstr "删除宏"
-msgid "&Skip"
-msgstr "跳过(&S)"
+msgid "Press macro hotkey:"
+msgstr "按下宏热键: "
-msgid "Confirm replace"
-msgstr "确认替换"
+msgid "Macro not deleted"
+msgstr "宏没有删除"
-msgid "Cancel"
-msgstr "取消"
+msgid "Repeat last commands"
+msgstr "重复上一个命令"
-msgid "NoName"
-msgstr "未命名"
+msgid "Repeat times:"
+msgstr "重复次数: "
msgid "&Open file..."
msgstr "打开文件(&O)..."
@@ -1384,7 +1301,7 @@
msgstr "关闭(&C)"
msgid "&History..."
-msgstr ""
+msgstr "&历史记录..."
msgid "Save &as..."
msgstr "另存为(&A)..."
@@ -1662,6 +1579,45 @@
msgid "Editor options"
msgstr "编辑器选项"
+msgid "In se&lection"
+msgstr "在选择区域(&L)"
+
+msgid "&Find all"
+msgstr "查找全部(&F)"
+
+msgid "Enter replacement string:"
+msgstr "输入替换字符串: "
+
+msgid "Replace"
+msgstr "替换"
+
+msgid "Replace with:"
+msgstr "替换为: "
+
+msgid "&Replace"
+msgstr "替换(&R)"
+
+msgid "A&ll"
+msgstr "全部(&L)"
+
+msgid "&Skip"
+msgstr "跳过(&S)"
+
+msgid "Confirm replace"
+msgstr "确认替换"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "正在搜索 %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "正在搜索 %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr "替换了 %ld 处"
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
@@ -1669,7 +1625,7 @@
"为 Midnight Commander 编写的\n"
"一个界面友好的文本编辑器。"
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
msgstr ""
msgid "About"
@@ -1789,6 +1745,15 @@
msgid "Select language"
msgstr "选择语言"
+msgid "Choose syntax highlighting"
+msgstr "选择语法突出显示"
+
+msgid "< Auto >"
+msgstr "<自动>"
+
+msgid "< Reload Current Syntax >"
+msgstr "<重新加载当前语法>"
+
msgid "Load syntax file"
msgstr "加载语法文件"
@@ -1825,6 +1790,8 @@
"Not an xterm or Linux console;\n"
"the subshell cannot be toggled."
msgstr ""
+"不是一个 xterm 或 Linux 控制台;\n"
+"无法切换subshell窗口。"
msgid "Type 'exit' to return to the Midnight Commander"
msgstr "输入 'exit' 返回 Midnight Commander"
@@ -2191,19 +2158,6 @@
msgstr "后台任务"
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s 的密码"
-
-msgid "Domain:"
-msgstr "域: "
-
-msgid "Username:"
-msgstr "用户名: "
-
-msgid "SMB authentication"
-msgstr "SMB 认证"
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2409,12 +2363,6 @@
msgid "Cannot change directory"
msgstr "无法改变目录"
-msgid "Filter"
-msgstr "过滤"
-
-msgid "Set expression for filtering filenames"
-msgstr "设置过滤文件名的表达式"
-
#, c-format
msgid "Link %s to:"
msgstr "链接 %s 到: "
@@ -2520,9 +2468,6 @@
msgid "Shell link to machine"
msgstr "Shell 链接到主机"
-msgid "SMB link to machine"
-msgstr "SMB 链接到主机"
-
msgid "Undelete files on an ext2 file system"
msgstr "反删除 ext2 文件系统上的文件"
@@ -2561,18 +2506,26 @@
"无法创建临时命令文件\n"
"%s"
+msgid "Pipe failed"
+msgstr "管道失败"
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr " %s%s 文件错误"
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
-"文件 %smc.ext 的格式在3.0版本时已经被修改。似乎安装有错误。请获取新的"
-"Midnight Commander软件包。"
#, c-format
msgid "%s file error"
@@ -2580,11 +2533,9 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
-"%s 文件的格式在 3.0 版中已经改变。您可以或者将 %smc.ext 文件复制过来,或者将"
-"其为作为范本撰写您自己的版本。"
msgid "DialogTitle|Copy"
msgstr "DialogTitle|复制"
@@ -2876,6 +2827,15 @@
msgid "(stalled)"
msgstr "(暂停)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "保留(&K)"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2892,12 +2852,6 @@
"无法关闭目标文件“%s”\n"
"%s"
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "文件没有完整获取。保留它吗?"
-
-msgid "&Keep"
-msgstr "保留(&K)"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -3016,8 +2970,8 @@
msgstr "后台进程: 文件已存在"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "已处理文件: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -3044,8 +2998,8 @@
msgstr " 总共: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " 总共: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "来源"
@@ -3097,7 +3051,7 @@
msgstr "列表格式(&L)…"
msgid "&Sort order..."
-msgstr "排序(&S)..."
+msgstr ""
msgid "&Filter..."
msgstr "过滤(&F)..."
@@ -3111,11 +3065,8 @@
msgid "S&hell link..."
msgstr "S&hell 链接..."
-msgid "S&FTP link..."
-msgstr "SFTP 链接(&S)..."
-
-msgid "SM&B link..."
-msgstr "SMB 链接(&B)..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr "面板化(&Z)"
@@ -3327,6 +3278,9 @@
msgid "&Find recursively"
msgstr "递归查找(&F)"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "跳过隐藏(&K)"
@@ -3492,8 +3446,8 @@
msgstr "没有空间信息"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
-msgstr "空余空间: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
+msgstr ""
#, c-format
msgid "Type: %s"
@@ -3735,6 +3689,9 @@
msgid "Unselect"
msgstr "取消选择"
+msgid "Filter"
+msgstr "过滤"
+
msgid "Do you really want to execute?"
msgstr "您真的要执行吗?"
@@ -3762,11 +3719,18 @@
msgid "Enter command label:"
msgstr "输入命令标签: "
-msgid "Cannot invoke command."
-msgstr "无法调用命令。"
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "关闭管道失败"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr "在非本地目录无法执行外部面板"
@@ -4029,6 +3993,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "虚拟文件系统: "
@@ -4154,16 +4122,22 @@
"异常的文件结束\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "不完整的 tar 档案文件"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"无法打开 %s 档案\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "不完整的 extfs 档案"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4279,6 +4253,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr "等待重试... %d (Ctrl-G 取消)"
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: 无效的地址族"
@@ -4332,6 +4321,12 @@
"删除密码或者改正权限"
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: 警告: 文件 %s 没有找到\n"
@@ -4365,6 +4360,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: 正在连接 %s"
@@ -4376,6 +4374,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: 连接服务器失败: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: 请输入 %s 的密码"
@@ -4390,8 +4432,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: 密码为空。"
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: SSH 会话建立失败"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: 读取的文件没有指定处理程序"
@@ -4408,33 +4450,6 @@
msgstr "sftp: 列出完毕。"
#, c-format
-msgid "reconnect to %s failed"
-msgstr "重新连接 %s 失败"
-
-msgid "Authentication failed"
-msgstr "验证失败"
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr "创建目录 %s 时出错 %s"
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr "删除目录 %s 时出错 %s"
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s 正在打开远程文件 %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s 正在删除远程文件 %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s 正在重命名文件\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/po/zh_TW.po
^
|
@@ -8,10 +8,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Midnight Commander\n"
-"Report-Msgid-Bugs-To: http://www.midnight-commander.org/\n"
-"POT-Creation-Date: 2021-01-10 13:15+0100\n"
-"PO-Revision-Date: 2020-12-31 14:19+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"Report-Msgid-Bugs-To: https://www.midnight-commander.org/\n"
+"POT-Creation-Date: 2023-01-14 20:00+0100\n"
+"PO-Revision-Date: 2010-12-29 10:19+0000\n"
+"Last-Translator: linwebs <thomas881114@gmail.com>, 2020\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/mc/mc/language/"
"zh_TW/)\n"
"Language: zh_TW\n"
@@ -77,24 +77,6 @@
msgid "FATAL: not a directory:"
msgstr "錯誤: 不是一個目錄"
-#, c-format
-msgid "An error occurred while migrating user settings: %s"
-msgstr "遷移使用者設定時發生錯誤: %s"
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to Freedesktop recommended dirs.\n"
-"To get more info, please visit\n"
-"http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html"
-msgstr ""
-
-#, c-format
-msgid ""
-"Your old settings were migrated from %s\n"
-"to %s\n"
-msgstr ""
-
msgid ""
"Number out of range (should be in byte range, 0 <= n <= 0xFF, expressed in "
"hex)"
@@ -181,12 +163,12 @@
msgid "True color not supported with ncurses."
msgstr "ncurses 不支援真實色彩。"
-msgid "True color not supported in this slang version."
-msgstr "這個 slang 的版本不支援真實色彩。"
-
msgid "Your terminal doesn't even seem to support 256 colors."
msgstr "您的終端機看起來不支援256色的色彩"
+msgid "True color not supported in this slang version."
+msgstr "這個 slang 的版本不支援真實色彩。"
+
msgid "Set COLORTERM=truecolor if your terminal really supports true colors."
msgstr "若您的終端機支援真實色彩,請設定 COLORTERM = truecolor"
@@ -538,24 +520,15 @@
"%s"
msgstr ""
+msgid "Cannot close pipe descriptor (p == NULL)"
+msgstr ""
+
#, c-format
msgid ""
"Unexpected error in waitpid():\n"
"%s"
msgstr ""
-msgid "Warning"
-msgstr "警告"
-
-msgid "Pipe failed"
-msgstr ""
-
-msgid "Dup failed"
-msgstr ""
-
-msgid "Error dup'ing old error pipe"
-msgstr ""
-
#, c-format
msgid "Directory cache expired for %s"
msgstr "%s 的路徑快取過期"
@@ -681,12 +654,6 @@
msgid "Log ftp dialog to specified file"
msgstr "紀錄 FTP 對話框到特定檔案"
-msgid "Set debug level"
-msgstr ""
-
-msgid "<integer>"
-msgstr ""
-
msgid "Launches the file viewer on a file"
msgstr "開啟檔案檢視器來檢視檔案"
@@ -978,15 +945,6 @@
msgid "Two files are needed to compare"
msgstr ""
-msgid "Choose syntax highlighting"
-msgstr ""
-
-msgid "< Auto >"
-msgstr "< 自動 >"
-
-msgid "< Reload Current Syntax >"
-msgstr "< 重新讀取當前語法 >"
-
#, c-format
msgid "Loading: %3d%%"
msgstr "讀取中: %3d%%"
@@ -1019,6 +977,9 @@
"Open it anyway?"
msgstr ""
+msgid "Warning"
+msgstr "警告"
+
#, c-format
msgid "Error reading from pipe: %s"
msgstr ""
@@ -1027,14 +988,6 @@
msgid "Cannot open pipe for reading: %s"
msgstr ""
-#, c-format
-msgid "Searching %s: %3d%%"
-msgstr "搜尋 %s: %3d%%"
-
-#, c-format
-msgid "Searching %s"
-msgstr "搜尋 %s"
-
msgid "File has hard-links. Detach before saving?"
msgstr ""
@@ -1080,9 +1033,6 @@
msgid "Save As"
msgstr "儲存為"
-msgid "Collect completions"
-msgstr ""
-
msgid "&Quick save"
msgstr "快速儲存"
@@ -1113,27 +1063,6 @@
msgid "Cannot save file"
msgstr "無法儲存檔案"
-msgid "Delete macro"
-msgstr "刪除巨集"
-
-msgid "Press macro hotkey:"
-msgstr ""
-
-msgid "Macro not deleted"
-msgstr "巨集未被刪除"
-
-msgid "Save macro"
-msgstr ""
-
-msgid "Press the macro's new hotkey:"
-msgstr ""
-
-msgid "Repeat last commands"
-msgstr "重複最後的指令"
-
-msgid "Repeat times:"
-msgstr "重複次數:"
-
#, c-format
msgid "Confirm save file: \"%s\""
msgstr "確認儲存的檔案: \"%s\""
@@ -1168,13 +1097,6 @@
msgid "&Local"
msgstr "本地"
-msgid "Replace"
-msgstr ""
-
-#, c-format
-msgid "%ld replacements made"
-msgstr ""
-
msgid "[NoName]"
msgstr "[無名稱]"
@@ -1226,7 +1148,7 @@
msgid "Run sort"
msgstr ""
-msgid "Enter sort options (see manpage) separated by whitespace:"
+msgid "Enter sort options (see sort(1) manpage) separated by whitespace:"
msgstr ""
msgid "Sort"
@@ -1277,35 +1199,35 @@
"Continue discards these changes."
msgstr ""
-msgid "In se&lection"
-msgstr "在選擇中"
-
-msgid "&Find all"
-msgstr "尋找全部"
+msgid "Cancel"
+msgstr "取消"
-msgid "Enter replacement string:"
+msgid "Collect completions"
msgstr ""
-msgid "Replace with:"
-msgstr "取代:"
+msgid "NoName"
+msgstr "無名稱"
-msgid "&Replace"
-msgstr "替換"
+msgid "Save macro"
+msgstr ""
-msgid "A&ll"
-msgstr "全部"
+msgid "Press the macro's new hotkey:"
+msgstr ""
-msgid "&Skip"
-msgstr "跳過"
+msgid "Delete macro"
+msgstr "刪除巨集"
-msgid "Confirm replace"
-msgstr "確認取代"
+msgid "Press macro hotkey:"
+msgstr ""
-msgid "Cancel"
-msgstr "取消"
+msgid "Macro not deleted"
+msgstr "巨集未被刪除"
-msgid "NoName"
-msgstr "無名稱"
+msgid "Repeat last commands"
+msgstr "重複最後的指令"
+
+msgid "Repeat times:"
+msgstr "重複次數:"
msgid "&Open file..."
msgstr "開啟檔案"
@@ -1595,13 +1517,52 @@
msgid "Editor options"
msgstr "編輯器選項"
+msgid "In se&lection"
+msgstr "在選擇中"
+
+msgid "&Find all"
+msgstr "尋找全部"
+
+msgid "Enter replacement string:"
+msgstr ""
+
+msgid "Replace"
+msgstr ""
+
+msgid "Replace with:"
+msgstr "取代:"
+
+msgid "&Replace"
+msgstr "替換"
+
+msgid "A&ll"
+msgstr "全部"
+
+msgid "&Skip"
+msgstr "跳過"
+
+msgid "Confirm replace"
+msgstr "確認取代"
+
+#, c-format
+msgid "Searching %s: %3d%%"
+msgstr "搜尋 %s: %3d%%"
+
+#, c-format
+msgid "Searching %s"
+msgstr "搜尋 %s"
+
+#, c-format
+msgid "%ld replacements made"
+msgstr ""
+
msgid ""
"A user friendly text editor\n"
"written for the Midnight Commander."
msgstr ""
-msgid "Copyright (C) 1996-2020 the Free Software Foundation"
-msgstr "版權所有(C) 1996-2020 自由軟體基金會"
+msgid "Copyright (C) 1996-2022 the Free Software Foundation"
+msgstr ""
msgid "About"
msgstr "關於"
@@ -1720,6 +1681,15 @@
msgid "Select language"
msgstr "選取語言"
+msgid "Choose syntax highlighting"
+msgstr ""
+
+msgid "< Auto >"
+msgstr "< 自動 >"
+
+msgid "< Reload Current Syntax >"
+msgstr "< 重新讀取當前語法 >"
+
msgid "Load syntax file"
msgstr ""
@@ -2114,19 +2084,6 @@
msgstr ""
#, c-format
-msgid "Password for \\\\%s\\%s"
-msgstr "\\\\%s\\%s 的密碼"
-
-msgid "Domain:"
-msgstr "網域: "
-
-msgid "Username:"
-msgstr "使用者名稱: "
-
-msgid "SMB authentication"
-msgstr ""
-
-#, c-format
msgid ""
"Cannot chdir to \"%s\"\n"
"%s"
@@ -2332,12 +2289,6 @@
msgid "Cannot change directory"
msgstr "無法改變目錄"
-msgid "Filter"
-msgstr ""
-
-msgid "Set expression for filtering filenames"
-msgstr ""
-
#, c-format
msgid "Link %s to:"
msgstr "連結 %s 到:"
@@ -2441,9 +2392,6 @@
msgid "Shell link to machine"
msgstr ""
-msgid "SMB link to machine"
-msgstr ""
-
msgid "Undelete files on an ext2 file system"
msgstr ""
@@ -2478,14 +2426,24 @@
"%s"
msgstr ""
+msgid "Pipe failed"
+msgstr ""
+
+#, c-format
+msgid ""
+"You have an outdated %s file.\n"
+"Midnight Commander now uses %s file.\n"
+"Please copy your modifications of the old file to the new one."
+msgstr ""
+
#, c-format
msgid " %s%s file error"
msgstr ""
#, c-format
msgid ""
-"The format of the %smc.ext file has changed with version 3.0. It seems that "
-"the installation failed. Please fetch a fresh copy from the Midnight "
+"The format of the %s%s file has changed with version 4.0. It seems that the "
+"installation has failed. Please fetch a fresh copy from the Midnight "
"Commander package."
msgstr ""
@@ -2495,8 +2453,8 @@
#, c-format
msgid ""
-"The format of the %s file has changed with version 3.0. You may either want "
-"to copy it from %smc.ext or use that file as an example of how to write it."
+"The format of the %s file has changed with version 4.0. You may either want "
+"to copy it from %s%s or use that file as an example of how to write it."
msgstr ""
msgid "DialogTitle|Copy"
@@ -2739,6 +2697,15 @@
msgid "(stalled)"
msgstr "(暫停了)"
+msgid "Incomplete file was retrieved"
+msgstr ""
+
+msgid "&Keep"
+msgstr "保留"
+
+msgid "&Continue copy"
+msgstr ""
+
#, c-format
msgid ""
"Cannot close source file \"%s\"\n"
@@ -2751,12 +2718,6 @@
"%s"
msgstr ""
-msgid "Incomplete file was retrieved. Keep it?"
-msgstr "抓回的檔案不完全,要保留嗎?"
-
-msgid "&Keep"
-msgstr "保留"
-
#, c-format
msgid ""
"Cannot stat source directory \"%s\"\n"
@@ -2863,8 +2824,8 @@
msgstr "背景處理程序: 檔案已存在"
#, c-format
-msgid "Files processed: %zu/%zu"
-msgstr "檔案處理程序: %zu/%zu"
+msgid "Files processed: %zu / %zu"
+msgstr ""
#, c-format
msgid "Files processed: %zu"
@@ -2891,8 +2852,8 @@
msgstr " 總共: %s "
#, c-format
-msgid " Total: %s/%s "
-msgstr " 總共: %s/%s "
+msgid " Total: %s / %s "
+msgstr ""
msgid "Source"
msgstr "來源"
@@ -2944,7 +2905,7 @@
msgstr "列表格式..."
msgid "&Sort order..."
-msgstr "排列順序..."
+msgstr ""
msgid "&Filter..."
msgstr "過濾器..."
@@ -2958,11 +2919,8 @@
msgid "S&hell link..."
msgstr "連結 Shell..."
-msgid "S&FTP link..."
-msgstr "連結 SFTP..."
-
-msgid "SM&B link..."
-msgstr "連結 SMB..."
+msgid "SFTP li&nk..."
+msgstr ""
msgid "Paneli&ze"
msgstr ""
@@ -3174,6 +3132,9 @@
msgid "&Find recursively"
msgstr "遞迴尋找"
+msgid "Follow s&ymlinks"
+msgstr ""
+
msgid "S&kip hidden"
msgstr "跳過隱藏"
@@ -3337,7 +3298,7 @@
msgstr "沒有空間資訊"
#, c-format
-msgid "Free space: %s/%s (%d%%)"
+msgid "Free space: %s / %s (%d%%)"
msgstr ""
#, c-format
@@ -3580,6 +3541,9 @@
msgid "Unselect"
msgstr "取消選取"
+msgid "Filter"
+msgstr ""
+
msgid "Do you really want to execute?"
msgstr "您真的想要執行?"
@@ -3607,11 +3571,18 @@
msgid "Enter command label:"
msgstr ""
-msgid "Cannot invoke command."
-msgstr "無法呼叫指令。"
+#, c-format
+msgid ""
+"External panelize:\n"
+"%s"
+msgstr ""
-msgid "Pipe close failed"
-msgstr "管線關閉失敗"
+#, c-format
+msgid ""
+"External panelize:\n"
+"failed to read data from child stdout:\n"
+"%s"
+msgstr ""
msgid "Cannot run external panelize in a non-local directory"
msgstr ""
@@ -3867,6 +3838,10 @@
msgid "Built with ncursesw (unknown version)"
msgstr ""
+#, c-format
+msgid "Built with libssh2 %d.%d.%d\n"
+msgstr ""
+
msgid "Virtual File Systems:"
msgstr "虛擬檔案系統:"
@@ -3992,16 +3967,22 @@
"未預期的檔案結束\n"
"%s"
+#, fuzzy
+msgid "Inconsistent archive"
+msgstr "不完整的 tar 檔案集"
+
#, c-format
msgid ""
"Cannot open %s archive\n"
+"%s:\n"
"%s"
msgstr ""
-"無法開啟 %s 檔案集\n"
-"%s"
-msgid "Inconsistent extfs archive"
-msgstr "不完整的 extfs 檔案集"
+#, c-format
+msgid ""
+"EXTFS virtual file system:\n"
+"%s"
+msgstr ""
#, c-format
msgid "Warning: cannot open %s directory\n"
@@ -4117,6 +4098,21 @@
msgid "Waiting to retry... %d (Control-G to cancel)"
msgstr ""
+#, c-format
+msgid "ftpfs: could not make address-to-name translation: %s"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: try reconnect to server, attempt %u"
+msgstr ""
+
+#, c-format
+msgid "ftpfs: could not get socket name: %s"
+msgstr ""
+
+msgid "ftpfs: could not reconnect to server"
+msgstr ""
+
msgid "ftpfs: invalid address family"
msgstr "ftpfs: 無效的家庭地址"
@@ -4168,6 +4164,12 @@
msgstr ""
#, c-format
+msgid ""
+"SFS virtual file system:\n"
+"%s"
+msgstr ""
+
+#, c-format
msgid "%s: Warning: file %s not found\n"
msgstr "%s: 警告: 未發現檔案 %s\n"
@@ -4201,6 +4203,9 @@
msgid "sftp: %s"
msgstr "sftp: %s"
+msgid "sftp: failed to convert remote host IP address into text form"
+msgstr ""
+
#, c-format
msgid "sftp: making connection to %s"
msgstr "sftp: 建立連接到 %s"
@@ -4212,6 +4217,50 @@
msgid "sftp: connection to server failed: %s"
msgstr "sftp: 連接到伺服器錯誤: %s"
+msgid "sftp: found host key of unsupported type: RSA1"
+msgstr ""
+
+msgid "sftp: unknown host key type:"
+msgstr ""
+
+#, c-format
+msgid ""
+"Permanently added\n"
+"%s (%s)\n"
+"to the list of known hosts."
+msgstr ""
+
+msgid "sftp: cannot get the remote host key"
+msgstr ""
+
+msgid "sftp: unsupported key type, can't check remote host key"
+msgstr ""
+
+msgid "sftp: can't compute host key fingerprint hash"
+msgstr ""
+
+#, c-format
+msgid ""
+"The authenticity of host\n"
+"%s (%s)\n"
+"can't be established!\n"
+"%s key fingerprint hash is\n"
+"SHA1:%s.\n"
+"Do you want to add it to the list of known hosts and continue connecting?"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s (%s)\n"
+"is found in the list of known hosts but\n"
+"KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+"Are you sure you want to add it to the list of known hosts and continue "
+"connecting?"
+msgstr ""
+
+msgid "sftp: host key verification failed"
+msgstr ""
+
#, c-format
msgid "sftp: Enter passphrase for %s "
msgstr "sftp: 輸入 %s 的驗證密碼"
@@ -4226,8 +4275,8 @@
msgid "sftp: Password is empty."
msgstr "sftp: 密碼為空。"
-msgid "sftp: Failure establishing SSH session"
-msgstr "sftp: 建立 SSH 連接失敗"
+msgid "sftp: failure establishing SSH session"
+msgstr ""
msgid "sftp: No file handler data present for reading file"
msgstr "sftp: 讀取檔案時沒有處理程序資料"
@@ -4244,33 +4293,6 @@
msgstr "sftp: 列表完成。"
#, c-format
-msgid "reconnect to %s failed"
-msgstr ""
-
-msgid "Authentication failed"
-msgstr ""
-
-#, c-format
-msgid "Error %s creating directory %s"
-msgstr ""
-
-#, c-format
-msgid "Error %s removing directory %s"
-msgstr ""
-
-#, c-format
-msgid "%s opening remote file %s"
-msgstr "%s 開啟遠端檔案中 %s"
-
-#, c-format
-msgid "%s removing remote file %s"
-msgstr "%s 移除遠端檔案中 %s"
-
-#, c-format
-msgid "%s renaming files\n"
-msgstr "%s 重新命名檔案中\n"
-
-#, c-format
msgid ""
"Cannot open tar archive\n"
"%s"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/Makefile.am
^
|
@@ -52,12 +52,14 @@
$(DIFFLIB) $(EDITLIB) $(SUBSHELLLIB)
mc_LDADD = \
- libinternal.la \
- $(top_builddir)/lib/libmc.la
+ libinternal.la
-if ENABLE_VFS_SMB
-# this is a hack for linking with own samba library in simple way
-mc_LDADD += vfs/smbfs/helpers/libsamba.a
+if ENABLE_MCLIB
+libinternal_la_LIBADD += \
+ $(top_builddir)/lib/libmc.la
+else
+mc_LDADD += \
+ $(top_builddir)/lib/libmc.la
endif
SRC_mc_conssaver = \
@@ -75,7 +77,7 @@
file_history.c file_history.h \
help.c help.h \
history.h \
- keybind-defaults.c keybind-defaults.h \
+ keymap.c keymap.h \
learn.c learn.h \
setup.c setup.h \
textconf.c textconf.h \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/args.c
^
|
@@ -1,7 +1,7 @@
/*
Handle command line arguments.
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -34,10 +34,6 @@
#include "lib/vfs/vfs.h"
#include "lib/util.h" /* x_basename() */
-#ifdef ENABLE_VFS_SMB
-#include "src/vfs/smbfs/smbfs.h" /* smbfs_set_debugf() */
-#endif
-
#include "src/textconf.h"
#include "src/args.h"
@@ -65,11 +61,6 @@
/* keymap file */
char *mc_args__keymap_file = NULL;
-/* Debug level */
-#ifdef ENABLE_VFS_SMB
-int mc_args__debug_level = 0;
-#endif
-
void *mc_run_param0 = NULL;
char *mc_run_param1 = NULL;
@@ -169,14 +160,6 @@
N_("<file>")
},
#endif /* ENABLE_VFS_FTP */
-#ifdef ENABLE_VFS_SMB
- {
- "debuglevel", 'D', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT,
- &mc_args__debug_level,
- N_("Set debug level"),
- N_("<integer>")
- },
-#endif /* ENABLE_VFS_SMB */
{
/* handle arguments manually */
@@ -191,11 +174,10 @@
"edit", 'e', G_OPTION_FLAG_IN_MAIN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK,
(gpointer) parse_mc_e_argument,
N_("Edit files"),
- N_("<file> ...") },
+ N_("<file> ...")
+ },
- {
- NULL, '\0', 0, 0, NULL, NULL, NULL /* Complete struct initialization */
- }
+ G_OPTION_ENTRY_NULL
/* *INDENT-ON* */
};
@@ -278,9 +260,7 @@
NULL
},
- {
- NULL, '\0', 0, 0, NULL, NULL, NULL /* Complete struct initialization */
- }
+ G_OPTION_ENTRY_NULL
/* *INDENT-ON* */
};
@@ -320,9 +300,7 @@
N_("<string>")
},
- {
- NULL, '\0', 0, 0, NULL, NULL, NULL /* Complete struct initialization */
- }
+ G_OPTION_ENTRY_NULL
/* *INDENT-ON* */
};
@@ -333,9 +311,10 @@
static gchar *mc_args__loc__header_string = NULL;
static gchar *mc_args__loc__usage_string = NULL;
+/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
-
/* --------------------------------------------------------------------------------------------- */
+
static void
mc_args_clean_temp_help_strings (void)
{
@@ -350,7 +329,7 @@
static GOptionGroup *
mc_args_new_color_group (void)
{
-/* *INDENT-OFF* */
+ /* *INDENT-OFF* */
/* FIXME: to preserve translations, lines should be split. */
mc_args__loc__colors_string = g_strdup_printf ("%s\n%s",
/* TRANSLATORS: don't translate keywords */
@@ -380,7 +359,7 @@
"Attributes:\n"
" bold, italic, underline, reverse, blink; append more with '+'\n")
);
-/* *INDENT-ON* */
+ /* *INDENT-ON* */
return g_option_group_new ("color", mc_args__loc__colors_string,
_("Color options"), NULL, NULL);
@@ -427,7 +406,8 @@
("\n"
"Please send any bug reports (including the output of 'mc -V')\n"
"as tickets at www.midnight-commander.org\n"));
- mc_args__loc__header_string = g_strdup_printf (_("GNU Midnight Commander %s\n"), VERSION);
+ mc_args__loc__header_string =
+ g_strdup_printf (_("GNU Midnight Commander %s\n"), mc_global.mc_version);
g_option_context_set_description (context, mc_args__loc__footer_string);
g_option_context_set_summary (context, mc_args__loc__header_string);
@@ -599,12 +579,12 @@
if (mc_stat (tmp_vpath, &st) == -1 && mc_stat (fname_vpath, &st) != -1)
{
arg = mcedit_arg_vpath_new (fname_vpath, atoi (p));
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
else
{
arg = mcedit_arg_vpath_new (tmp_vpath, 0);
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
}
g_free (fname);
@@ -790,26 +770,16 @@
mc_global.tty.use_subshell = FALSE;
#endif /* ENABLE_SUBSHELL */
-#ifdef ENABLE_VFS_SMB
- if (mc_args__debug_level != 0)
- smbfs_set_debug (mc_args__debug_level);
-#endif /* ENABLE_VFS_SMB */
-
+#ifdef ENABLE_VFS_FTP
if (mc_args__netfs_logfile != NULL)
{
vfs_path_t *vpath;
-#ifdef ENABLE_VFS_FTP
+
vpath = vfs_path_from_str ("ftp://");
mc_setctl (vpath, VFS_SETCTL_LOGFILE, (void *) mc_args__netfs_logfile);
- vfs_path_free (vpath);
-#endif /* ENABLE_VFS_FTP */
-#ifdef ENABLE_VFS_SMB
- vpath = vfs_path_from_str ("smb://");
- mc_setctl (vpath, VFS_SETCTL_LOGFILE, (void *) mc_args__netfs_logfile);
- vfs_path_free (vpath);
-#endif /* ENABLE_VFS_SMB */
- (void) vpath;
+ vfs_path_free (vpath, TRUE);
}
+#endif /* ENABLE_VFS_FTP */
tmp = (argc > 0) ? argv[1] : NULL;
@@ -867,7 +837,7 @@
void
mcedit_arg_free (mcedit_arg_t * arg)
{
- vfs_path_free (arg->file_vpath);
+ vfs_path_free (arg->file_vpath, TRUE);
g_free (arg);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/args.h
^
|
@@ -25,9 +25,6 @@
extern char *mc_args__last_wd_file;
extern char *mc_args__netfs_logfile;
extern char *mc_args__keymap_file;
-#ifdef ENABLE_VFS_SMB
-extern int mc_args__debug_level;
-#endif
/*
* MC_RUN_FULL: dir for left panel
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/background.c
^
|
@@ -2,7 +2,7 @@
/* Background support.
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
@@ -281,10 +281,10 @@
if (to_child_fd == -1)
message (D_ERROR, background_process_error, "%s", _("Unknown error in child"));
-
- /* Handle the call */
- if (type == Return_Integer)
+ else if (type == Return_Integer)
{
+ /* Handle the call */
+
int result = 0;
if (have_ctx == 0)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/clipboard.c
^
|
@@ -1,7 +1,7 @@
/*
Util for external clipboard.
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
@@ -109,7 +109,7 @@
if (clipboard_paste_path == NULL || clipboard_paste_path[0] == '\0')
return TRUE;
- p = mc_popen (clipboard_paste_path, NULL);
+ p = mc_popen (clipboard_paste_path, TRUE, TRUE, NULL);
if (p == NULL)
return TRUE; /* don't show error message */
@@ -146,7 +146,7 @@
fname_vpath = mc_config_get_full_vpath (EDIT_HOME_CLIP_FILE);
file = mc_open (fname_vpath, clip_open_flags, clip_open_mode);
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
if (file < 0)
break;
@@ -186,7 +186,7 @@
fname_vpath = mc_config_get_full_vpath (EDIT_HOME_CLIP_FILE);
file = mc_open (fname_vpath, clip_open_flags, clip_open_mode);
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
if (file == -1)
return TRUE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/cons.handler.c
^
|
@@ -1,7 +1,7 @@
/*
Client interface for General purpose Linux console save/restore server
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -241,7 +241,13 @@
return;
}
/* Send command to the console handler */
- status = write (pipefd1[1], &action, 1);
+ {
+ /* Convert enum (i.e. int) to char to write the correct value
+ * (the least byte) regardless of machine endianness. */
+ char act = (char) action;
+
+ status = write (pipefd1[1], &act, 1);
+ }
if (action != CONSOLE_DONE)
{
/* Wait the console handler to do its job */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/consaver/cons.saver.c
^
|
@@ -11,7 +11,7 @@
Partly rewritten by Jakub Jelinek <jakub@redhat.com>.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/diffviewer/Makefile.am
^
|
@@ -6,5 +6,3 @@
ydiff.c ydiff.h
AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(PCRE_CPPFLAGS)
-
-libdiffviewer_la_LIBADD = ../../lib/libmc.la
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/diffviewer/search.c
^
|
@@ -1,12 +1,12 @@
/*
Search functions for diffviewer.
- Copyright (C) 2010-2020
+ Copyright (C) 2010-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2010.
- Andrew Borodin <aborodin@vmail.ru>, 2012
+ Andrew Borodin <aborodin@vmail.ru>, 2012-2022
This file is part of the Midnight Commander.
@@ -101,9 +101,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 58 };
+
quick_dialog_t qdlg = {
- -1, -1, 58,
- N_("Search"), "[Input Line Keys]",
+ r, N_("Search"), "[Input Line Keys]",
quick_widgets, NULL, NULL
};
@@ -112,7 +113,7 @@
g_strfreev (list_of_types);
- if ((qd_result == B_CANCEL) || (exp == NULL) || (exp[0] == '\0'))
+ if (qd_result == B_CANCEL || exp[0] == '\0')
{
g_free (exp);
return FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/diffviewer/ydiff.c
^
|
@@ -1,13 +1,13 @@
/*
File difference viewer
- Copyright (C) 2007-2020
+ Copyright (C) 2007-2022
Free Software Foundation, Inc.
Written by:
Daniel Borca <dborca@yahoo.com>, 2007
Slava Zanko <slavazanko@gmail.com>, 2010, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2010, 2012, 2013, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2022
Ilia Maslakov <il.smind@gmail.com>, 2010
This file is part of the Midnight Commander.
@@ -28,8 +28,10 @@
#include <config.h>
+
#include <ctype.h>
#include <errno.h>
+#include <stddef.h> /* ptrdiff_t */
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -55,7 +57,7 @@
#include "src/filemanager/layout.h" /* Needed for get_current_index and get_other_panel */
#include "src/execute.h" /* toggle_subshell() */
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "src/setup.h"
#include "src/history.h"
#ifdef HAVE_CHARSET
@@ -176,8 +178,8 @@
_("Cannot create temporary diff file\n%s"), unix_error_string (errno));
return -1;
}
- *name = g_strdup (vfs_path_as_str (diff_file_name));
- vfs_path_free (diff_file_name);
+
+ *name = vfs_path_free (diff_file_name, FALSE);
return fd;
}
@@ -2250,7 +2252,7 @@
(void) res;
}
mc_unlink (merge_file_name_vpath);
- vfs_path_free (merge_file_name_vpath);
+ vfs_path_free (merge_file_name_vpath, TRUE);
}
}
@@ -2274,9 +2276,9 @@
{
Widget *w = WIDGET (dview);
- dview->height = w->lines - 1;
- dview->half1 = w->cols / 2;
- dview->half2 = w->cols - dview->half1;
+ dview->height = w->rect.lines - 1;
+ dview->half1 = w->rect.cols / 2;
+ dview->half2 = w->rect.cols - dview->half1;
dview_compute_split (dview, 0);
}
@@ -2377,9 +2379,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 56 };
+
quick_dialog_t qdlg = {
- -1, -1, 56,
- N_("Diff Options"), "[Diff Options]",
+ r, N_("Diff Options"), "[Diff Options]",
quick_widgets, NULL, NULL
};
@@ -2774,7 +2777,7 @@
vpath = vfs_path_from_str (dview->label[ord]);
path = vfs_path_to_str_flags (vpath, 0, VPF_STRIP_HOME | VPF_STRIP_PASSWORD);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
buf = str_term_trim (path, filename_width);
if (ord == DIFF_LEFT)
tty_printf ("%s%-*s %6d+%-4d Col %-4d ", dview->merged[ord] ? "* " : " ", filename_width,
@@ -2905,7 +2908,7 @@
tmp_vpath = vfs_path_from_str (dview->file[ord]);
edit_file_at_line (tmp_vpath, use_internal_edit, linenum);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
widget_set_state (h, WST_MODAL, h_modal);
@@ -3441,6 +3444,7 @@
Widget *w;
WDialog *dview_dlg;
Widget *dw;
+ WRect r;
WGroup *g;
/* Create dialog and widgets, put them on the dialog */
@@ -3449,17 +3453,19 @@
"[Diff Viewer]", NULL);
dw = WIDGET (dview_dlg);
widget_want_tab (dw, TRUE);
+ r = dw->rect;
g = GROUP (dview_dlg);
dview = g_new0 (WDiff, 1);
w = WIDGET (dview);
- widget_init (w, dw->y, dw->x, dw->lines - 1, dw->cols, dview_callback, dview_mouse_callback);
+ r.lines--;
+ widget_init (w, &r, dview_callback, dview_mouse_callback);
w->options |= WOP_SELECTABLE;
w->keymap = diff_map;
group_add_widget_autopos (g, w, WPOS_KEEP_ALL, NULL);
- w = WIDGET (buttonbar_new (TRUE));
+ w = WIDGET (buttonbar_new ());
group_add_widget_autopos (g, w, w->pos_flags, NULL);
dview_dlg->get_title = dview_get_title;
@@ -3470,7 +3476,7 @@
dlg_run (dview_dlg);
if (error != 0 || widget_get_state (dw, WST_CLOSED))
- dlg_destroy (dview_dlg);
+ widget_destroy (dw);
return error == 0 ? 1 : 0;
}
@@ -3510,7 +3516,7 @@
changed = (mtime != st##n.st_mtime); \
} \
mc_ungetlocalcopy (file##n, real_file##n, changed); \
- vfs_path_free (real_file##n); \
+ vfs_path_free (real_file##n, TRUE); \
} \
} \
while (0)
@@ -3533,22 +3539,24 @@
const WPanel *panel1 = (const WPanel *) f1;
file0 =
- vfs_path_append_new (panel0->cwd_vpath, selection (panel0)->fname, (char *) NULL);
+ vfs_path_append_new (panel0->cwd_vpath, selection (panel0)->fname->str,
+ (char *) NULL);
is_dir0 = S_ISDIR (selection (panel0)->st.st_mode);
if (is_dir0)
{
message (D_ERROR, MSG_ERROR, _("\"%s\" is a directory"),
- path_trunc (selection (panel0)->fname, 30));
+ path_trunc (selection (panel0)->fname->str, 30));
goto ret;
}
file1 =
- vfs_path_append_new (panel1->cwd_vpath, selection (panel1)->fname, (char *) NULL);
+ vfs_path_append_new (panel1->cwd_vpath, selection (panel1)->fname->str,
+ (char *) NULL);
is_dir1 = S_ISDIR (selection (panel1)->st.st_mode);
if (is_dir1)
{
message (D_ERROR, MSG_ERROR, _("\"%s\" is a directory"),
- path_trunc (selection (panel1)->fname, 30));
+ path_trunc (selection (panel1)->fname->str, 30));
goto ret;
}
break;
@@ -3631,8 +3639,8 @@
message (D_ERROR, MSG_ERROR, _("Two files are needed to compare"));
ret:
- vfs_path_free (file1);
- vfs_path_free (file0);
+ vfs_path_free (file1, TRUE);
+ vfs_path_free (file0, TRUE);
return (rv != 0);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/Makefile.am
^
|
@@ -8,15 +8,16 @@
libedit_la_SOURCES = \
bookmark.c \
- choosesyntax.c \
edit-impl.h \
edit.c edit.h \
+ editcomplete.c editcomplete.h \
editbuffer.c editbuffer.h \
editcmd.c \
- editcmd_dialogs.c editcmd_dialogs.h \
editdraw.c \
+ editmacros.c editmacros.h \
editmenu.c \
editoptions.c \
+ editsearch.c editsearch.h \
editwidget.c editwidget.h \
etags.c etags.h \
format.c \
@@ -25,8 +26,7 @@
if USE_ASPELL
if HAVE_GMODULE
libedit_la_SOURCES += \
- spell.c spell.h \
- spell_dialogs.c spell_dialogs.h
+ spell.c spell.h
endif
endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/bookmark.c
^
|
@@ -1,7 +1,7 @@
/*
Editor book mark handling
- Copyright (C) 2001-2020
+ Copyright (C) 2001-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/edit-impl.h
^
|
@@ -136,8 +136,7 @@
/*** declarations of public functions ************************************************************/
-gboolean edit_add_window (WDialog * h, int y, int x, int lines, int cols,
- const vfs_path_t * f, long fline);
+gboolean edit_add_window (WDialog * h, const WRect * r, const vfs_path_t * f, long fline);
WEdit *find_editor (const WDialog * h);
gboolean edit_widget_is_editor (const Widget * w);
gboolean edit_drop_hotkey_menu (WDialog * h, int key);
@@ -181,11 +180,11 @@
const vfs_path_t * filename_vpath);
gboolean edit_save_confirm_cmd (WEdit * edit);
gboolean edit_save_as_cmd (WEdit * edit);
-WEdit *edit_init (WEdit * edit, int y, int x, int lines, int cols,
- const vfs_path_t * filename_vpath, long line);
+WEdit *edit_init (WEdit * edit, const WRect * r, const vfs_path_t * filename_vpath, long line);
gboolean edit_clean (WEdit * edit);
gboolean edit_ok_to_exit (WEdit * edit);
gboolean edit_load_cmd (WDialog * h);
+gboolean edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath, long line);
gboolean edit_load_file_from_history (WDialog * h);
gboolean edit_load_syntax_file (WDialog * h);
gboolean edit_load_menu_file (WDialog * h);
@@ -195,20 +194,6 @@
void edit_mark_current_line_cmd (WEdit * edit);
void edit_set_markers (WEdit * edit, off_t m1, off_t m2, long c1, long c2);
void edit_push_markers (WEdit * edit);
-void edit_replace_cmd (WEdit * edit, gboolean again);
-void edit_search_cmd (WEdit * edit, gboolean again);
-mc_search_cbret_t edit_search_cmd_callback (const void *user_data, gsize char_offset,
- int *current_char);
-mc_search_cbret_t edit_search_update_callback (const void *user_data, gsize char_offset);
-
-void edit_complete_word_cmd (WEdit * edit);
-void edit_get_match_keyword_cmd (WEdit * edit);
-
-#ifdef HAVE_ASPELL
-int edit_suggest_current_word (WEdit * edit);
-void edit_spellcheck_file (WEdit * edit);
-void edit_set_spell_lang (void);
-#endif
gboolean edit_save_block (WEdit * edit, const char *filename, off_t start, off_t finish);
gboolean edit_save_block_cmd (WEdit * edit);
@@ -238,20 +223,12 @@
int edit_sort_cmd (WEdit * edit);
int edit_ext_cmd (WEdit * edit);
-int edit_store_macro_cmd (WEdit * edit);
-gboolean edit_load_macro_cmd (WEdit * edit);
-void edit_delete_macro_cmd (WEdit * edit);
-gboolean edit_repeat_macro_cmd (WEdit * edit);
-
gboolean edit_copy_to_X_buf_cmd (WEdit * edit);
gboolean edit_cut_to_X_buf_cmd (WEdit * edit);
gboolean edit_paste_from_X_buf_cmd (WEdit * edit);
void edit_select_codepage_cmd (WEdit * edit);
void edit_insert_literal_cmd (WEdit * edit);
-gboolean edit_execute_macro (WEdit * edit, int hotkey);
-void edit_begin_end_macro_cmd (WEdit * edit);
-void edit_begin_end_repeat_cmd (WEdit * edit);
void edit_paste_from_history (WEdit * edit);
@@ -260,6 +237,7 @@
void edit_load_syntax (WEdit * edit, GPtrArray * pnames, const char *type);
void edit_free_syntax_rules (WEdit * edit);
int edit_get_syntax_color (WEdit * edit, off_t byte_index);
+void edit_syntax_dialog (WEdit * edit);
void book_mark_insert (WEdit * edit, long line, int c);
gboolean book_mark_query_color (WEdit * edit, long line, int c);
@@ -274,13 +252,14 @@
gboolean edit_line_is_blank (WEdit * edit, long line);
gboolean is_break_char (char c);
void edit_options_dialog (WDialog * h);
-void edit_syntax_dialog (WEdit * edit);
void edit_mail_dialog (WEdit * edit);
void format_paragraph (WEdit * edit, gboolean force);
/* either command or char_for_insertion must be passed as -1 */
void edit_execute_cmd (WEdit * edit, long command, int char_for_insertion);
+int editcmd_dialog_raw_key_query (const char *heading, const char *query, gboolean cancel);
+
/*** inline functions ****************************************************************************/
/**
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/edit.c
^
|
@@ -1,13 +1,13 @@
/*
Editor low level data handling and cursor fundamentals.
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer 1996, 1997
Ilia Maslakov <il.smind@gmail.com> 2009, 2010, 2011
- Andrew Borodin <aborodin@vmail.ru> 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru> 2012-2022
This file is part of the Midnight Commander.
@@ -64,10 +64,14 @@
#include "src/usermenu.h" /* user_menu_cmd() */
#include "src/setup.h" /* option_tab_spacing */
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "edit-impl.h"
#include "editwidget.h"
+#include "editsearch.h"
+#include "editcomplete.h" /* edit_complete_word_cmd() */
+#include "editmacros.h"
+#include "etags.h" /* edit_get_match_keyword_cmd() */
#ifdef HAVE_ASPELL
#include "spell.h"
#endif
@@ -156,12 +160,15 @@
if (rsm->first)
{
- int wd_width;
Widget *lw = WIDGET (ssm->label);
+ WRect r;
- wd_width = MAX (wd->cols, lw->cols + 6);
- widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width);
- widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols);
+ r = wd->rect;
+ r.cols = MAX (r.cols, lw->rect.cols + 6);
+ widget_set_size_rect (wd, &r);
+ r = lw->rect;
+ r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2;
+ widget_set_size_rect (lw, &r);
rsm->first = FALSE;
}
@@ -493,7 +500,7 @@
}
edit_move_to_prev_col (edit, edit_buffer_get_current_bol (&edit->buffer));
- edit_move_display (edit, line - (WIDGET (edit)->lines / 2));
+ edit_move_display (edit, line - (WIDGET (edit)->rect.lines / 2));
}
/* --------------------------------------------------------------------------------------------- */
@@ -817,7 +824,7 @@
edit_end_page (WEdit * edit)
{
edit_update_curs_row (edit);
- edit_move_down (edit, WIDGET (edit)->lines - edit->curs_row - 1, FALSE);
+ edit_move_down (edit, WIDGET (edit)->rect.lines - edit->curs_row - 1, FALSE);
}
@@ -848,7 +855,7 @@
edit_move_down (edit, edit->buffer.lines - edit->curs_row, FALSE);
edit->start_display = edit->buffer.size;
edit->start_line = edit->buffer.lines;
- edit_scroll_upward (edit, WIDGET (edit)->lines - 1);
+ edit_scroll_upward (edit, WIDGET (edit)->rect.lines - 1);
edit->force |= REDRAW_PAGE;
}
}
@@ -1549,7 +1556,7 @@
break;
/* count lines if searching downward */
if (inc > 0 && a == '\n')
- if (n++ >= WIDGET (edit)->lines - edit->curs_row) /* out of screen */
+ if (n++ >= WIDGET (edit)->rect.lines - edit->curs_row) /* out of screen */
break;
}
/* count bracket depth */
@@ -1801,7 +1808,7 @@
fclose (fd);
}
g_free (block_file);
- vfs_path_free (block_file_vpath);
+ vfs_path_free (block_file_vpath, TRUE);
edit_cursor_move (edit, curs - edit->buffer.curs1);
edit->force |= REDRAW_PAGE;
@@ -2074,8 +2081,7 @@
*/
WEdit *
-edit_init (WEdit * edit, int y, int x, int lines, int cols, const vfs_path_t * filename_vpath,
- long line)
+edit_init (WEdit * edit, const WRect * r, const vfs_path_t * filename_vpath, long line)
{
gboolean to_free = FALSE;
@@ -2100,11 +2106,12 @@
else
{
Widget *w;
+
edit = g_malloc0 (sizeof (WEdit));
to_free = TRUE;
w = WIDGET (edit);
- widget_init (w, y, x, lines, cols, NULL, NULL);
+ widget_init (w, r, NULL, NULL);
w->options |= WOP_SELECTABLE | WOP_TOP_SELECT | WOP_WANT_CURSOR;
w->keymap = editor_map;
w->ext_keymap = editor_x_map;
@@ -2202,10 +2209,9 @@
g_free (edit->undo_stack);
g_free (edit->redo_stack);
- vfs_path_free (edit->filename_vpath);
- vfs_path_free (edit->dir_vpath);
- mc_search_free (edit->search);
- g_free (edit->last_search_string);
+ vfs_path_free (edit->filename_vpath, TRUE);
+ vfs_path_free (edit->dir_vpath, TRUE);
+ edit_search_deinit (edit);
#ifdef HAVE_CHARSET
if (edit->converter != str_cnv_from_term)
@@ -2238,7 +2244,7 @@
e->fullscreen = edit->fullscreen;
e->loc_prev = edit->loc_prev;
- if (edit_init (e, w->y, w->x, w->lines, w->cols, filename_vpath, line) == NULL)
+ if (edit_init (e, &w->rect, filename_vpath, line) == NULL)
{
g_free (e);
return FALSE;
@@ -2895,7 +2901,7 @@
{
long lines_below;
- lines_below = edit->buffer.lines - edit->start_line - (WIDGET (edit)->lines - 1);
+ lines_below = edit->buffer.lines - edit->start_line - (WIDGET (edit)->rect.lines - 1);
if (lines_below > 0)
{
if (i > lines_below)
@@ -3247,7 +3253,7 @@
void
edit_execute_cmd (WEdit * edit, long command, int char_for_insertion)
{
- Widget *w = WIDGET (edit);
+ WRect *w = &WIDGET (edit)->rect;
if (command == CK_WindowFullscreen)
{
@@ -3930,7 +3936,7 @@
edit_begin_end_repeat_cmd (edit);
break;
case CK_ExtendedKeyMap:
- w->ext_mode = TRUE;
+ WIDGET (edit)->ext_mode = TRUE;
break;
default:
break;
@@ -4027,7 +4033,7 @@
edit_stack_free (void)
{
for (edit_stack_iterator = 0; edit_stack_iterator < MAX_HISTORY_MOVETO; edit_stack_iterator++)
- vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath);
+ vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editbuffer.c
^
|
@@ -1,7 +1,7 @@
/*
Editor text keep buffer.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -31,6 +31,7 @@
#include <config.h>
+#include <ctype.h> /* isdigit() */
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
@@ -431,6 +432,58 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * Find first character of current word
+ *
+ * @param buf editor buffer
+ * @param word_start position of first character of current word
+ * @param word_len length of current word
+ *
+ * @return TRUE if first character of word is found and this character is not 1) a digit and
+ * 2) a begin of file, FALSE otherwise
+ */
+
+gboolean
+edit_buffer_find_word_start (const edit_buffer_t * buf, off_t * word_start, gsize * word_len)
+{
+ int c;
+ off_t i;
+
+ /* return if at begin of file */
+ if (buf->curs1 <= 0)
+ return FALSE;
+
+ c = edit_buffer_get_previous_byte (buf);
+ /* return if not at end or in word */
+ if (is_break_char (c))
+ return FALSE;
+
+ /* search start of word */
+ for (i = 1;; i++)
+ {
+ int last;
+
+ last = c;
+ c = edit_buffer_get_byte (buf, buf->curs1 - i - 1);
+
+ if (is_break_char (c))
+ {
+ /* return if word starts with digit */
+ if (isdigit (last))
+ return FALSE;
+
+ break;
+ }
+ }
+
+ /* success */
+ *word_start = buf->curs1 - i; /* start found */
+ *word_len = (gsize) i;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* Basic low level single character buffer alterations and movements at the cursor: insert character
* at the cursor position and move right.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editbuffer.h
^
|
@@ -48,6 +48,8 @@
off_t edit_buffer_get_eol (const edit_buffer_t * buf, off_t current);
GString *edit_buffer_get_word_from_pos (const edit_buffer_t * buf, off_t start_pos, off_t * start,
gsize * cut);
+gboolean edit_buffer_find_word_start (const edit_buffer_t * buf, off_t * word_start,
+ gsize * word_len);
void edit_buffer_insert (edit_buffer_t * buf, int c);
void edit_buffer_insert_ahead (edit_buffer_t * buf, int c);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editcmd.c
^
|
@@ -1,12 +1,12 @@
/*
Editor high level editing commands
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer, 1996, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2012-2014
+ Andrew Borodin <aborodin@vmail.ru>, 2012-2022
Ilia Maslakov <il.smind@gmail.com>, 2012
This file is part of the Midnight Commander.
@@ -48,8 +48,6 @@
#include "lib/global.h"
#include "lib/tty/tty.h"
#include "lib/tty/key.h" /* XCTRL */
-#include "lib/mcconfig.h"
-#include "lib/skin.h"
#include "lib/strutil.h" /* utf string functions */
#include "lib/fileloc.h"
#include "lib/lock.h"
@@ -67,16 +65,11 @@
#ifdef HAVE_CHARSET
#include "src/selcodepage.h"
#endif
-#include "src/keybind-defaults.h"
#include "src/util.h" /* check_for_default() */
#include "edit-impl.h"
#include "editwidget.h"
-#include "editcmd_dialogs.h"
-#ifdef HAVE_ASPELL
-#include "spell.h"
-#include "spell_dialogs.h"
-#endif
+#include "editsearch.h"
#include "etags.h"
/*** global variables ****************************************************************************/
@@ -96,19 +89,8 @@
#define TEMP_BUF_LEN 1024
-#define MAX_WORD_COMPLETIONS 100 /* in listbox */
-
/*** file scope type declarations ****************************************************************/
-typedef struct
-{
- simple_status_msg_t status_msg; /* base class */
-
- gboolean first;
- WEdit *edit;
- off_t offset;
-} edit_search_status_msg_t;
-
/*** file scope variables ************************************************************************/
static unsigned long edit_save_mode_radio_id, edit_save_mode_input_id;
@@ -117,35 +99,6 @@
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
-static int
-edit_search_status_update_cb (status_msg_t * sm)
-{
- simple_status_msg_t *ssm = SIMPLE_STATUS_MSG (sm);
- edit_search_status_msg_t *esm = (edit_search_status_msg_t *) sm;
- Widget *wd = WIDGET (sm->dlg);
-
- if (verbose)
- label_set_textv (ssm->label, _("Searching %s: %3d%%"), esm->edit->last_search_string,
- edit_buffer_calc_percent (&esm->edit->buffer, esm->offset));
- else
- label_set_textv (ssm->label, _("Searching %s"), esm->edit->last_search_string);
-
- if (esm->first)
- {
- int wd_width;
- Widget *lw = WIDGET (ssm->label);
-
- wd_width = MAX (wd->cols, lw->cols + 6);
- widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width);
- widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols);
- esm->first = FALSE;
- }
-
- return status_msg_common_update (sm);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
static cb_ret_t
edit_save_mode_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
{
@@ -240,7 +193,7 @@
edit->skip_detach_prompt = 1;
break;
default:
- vfs_path_free (real_filename_vpath);
+ vfs_path_free (real_filename_vpath, TRUE);
return -1;
}
}
@@ -256,7 +209,7 @@
_("&Yes"), _("&Cancel"));
if (rv != 0)
{
- vfs_path_free (real_filename_vpath);
+ vfs_path_free (real_filename_vpath, TRUE);
return -1;
}
}
@@ -279,7 +232,7 @@
g_free (saveprefix);
if (savename_vpath == NULL)
{
- vfs_path_free (real_filename_vpath);
+ vfs_path_free (real_filename_vpath, TRUE);
return 0;
}
/* FIXME:
@@ -394,7 +347,7 @@
g_free (tmp_store_filename);
ok = (mc_rename (real_filename_vpath, tmp_vpath) != -1);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
if (!ok)
goto error_save;
}
@@ -402,16 +355,16 @@
if (this_save_mode != EDIT_QUICK_SAVE && mc_rename (savename_vpath, real_filename_vpath) == -1)
goto error_save;
- vfs_path_free (real_filename_vpath);
- vfs_path_free (savename_vpath);
+ vfs_path_free (real_filename_vpath, TRUE);
+ vfs_path_free (savename_vpath, TRUE);
return 1;
error_save:
/* FIXME: Is this safe ?
* if (this_save_mode != EDIT_QUICK_SAVE)
* mc_unlink (savename);
*/
- vfs_path_free (real_filename_vpath);
- vfs_path_free (savename_vpath);
+ vfs_path_free (real_filename_vpath, TRUE);
+ vfs_path_free (savename_vpath, TRUE);
return 0;
}
@@ -456,9 +409,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 64 };
+
quick_dialog_t qdlg = {
- -1, -1, 64,
- N_("Save As"), "[Save File As]",
+ r, N_("Save As"), "[Save File As]",
quick_widgets, NULL, NULL
};
@@ -509,23 +463,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-/**
- * Load file content
- *
- * @param h screen the owner of editor window
- * @param vpath vfs file path
- * @return TRUE if file content was successfully loaded, FALSE otherwise
- */
-
-static inline gboolean
-edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath)
-{
- Widget *w = WIDGET (h);
-
- return edit_add_window (h, w->y + 1, w->x, w->lines - 2, w->cols, vpath, 0);
-}
-
-/* --------------------------------------------------------------------------------------------- */
static void
edit_delete_column_of_text (WEdit * edit)
@@ -635,407 +572,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-/**
- * Get EOL symbol for searching.
- *
- * @param edit editor object
- * @return EOL symbol
- */
-
-static inline char
-edit_search_get_current_end_line_char (const WEdit * edit)
-{
- switch (edit->lb)
- {
- case LB_MAC:
- return '\r';
- default:
- return '\n';
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Checking if search condition have BOL(^) or EOL ($) regexp special characters.
- *
- * @param search search object
- * @return result of checks.
- */
-
-static edit_search_line_t
-edit_get_search_line_type (mc_search_t * search)
-{
- edit_search_line_t search_line_type = 0;
-
- if (search->search_type != MC_SEARCH_T_REGEX)
- return search_line_type;
-
- if (*search->original == '^')
- search_line_type |= AT_START_LINE;
-
- if (search->original[search->original_len - 1] == '$')
- search_line_type |= AT_END_LINE;
- return search_line_type;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Calculating the start position of next line.
- *
- * @param buf editor buffer object
- * @param current_pos current position
- * @param max_pos max position
- * @param end_string_symbol end of line symbol
- * @return start position of next line
- */
-
-static off_t
-edit_calculate_start_of_next_line (const edit_buffer_t * buf, off_t current_pos, off_t max_pos,
- char end_string_symbol)
-{
- off_t i;
-
- for (i = current_pos; i < max_pos; i++)
- {
- current_pos++;
- if (edit_buffer_get_byte (buf, i) == end_string_symbol)
- break;
- }
-
- return current_pos;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Calculating the end position of previous line.
- *
- * @param buf editor buffer object
- * @param current_pos current position
- * @param end_string_symbol end of line symbol
- * @return end position of previous line
- */
-
-static off_t
-edit_calculate_end_of_previous_line (const edit_buffer_t * buf, off_t current_pos,
- char end_string_symbol)
-{
- off_t i;
-
- for (i = current_pos - 1; i >= 0; i--)
- if (edit_buffer_get_byte (buf, i) == end_string_symbol)
- break;
-
- return i;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Calculating the start position of previous line.
- *
- * @param buf editor buffer object
- * @param current_pos current position
- * @param end_string_symbol end of line symbol
- * @return start position of previous line
- */
-
-static inline off_t
-edit_calculate_start_of_previous_line (const edit_buffer_t * buf, off_t current_pos,
- char end_string_symbol)
-{
- current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
- current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
-
- return (current_pos + 1);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Calculating the start position of current line.
- *
- * @param buf editor buffer object
- * @param current_pos current position
- * @param end_string_symbol end of line symbol
- * @return start position of current line
- */
-
-static inline off_t
-edit_calculate_start_of_current_line (const edit_buffer_t * buf, off_t current_pos,
- char end_string_symbol)
-{
- current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
-
- return (current_pos + 1);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Fixing (if needed) search start position if 'only in selection' option present.
- *
- * @param edit editor object
- */
-
-static void
-edit_search_fix_search_start_if_selection (WEdit * edit)
-{
- off_t start_mark = 0;
- off_t end_mark = 0;
-
- if (!edit_search_options.only_in_selection)
- return;
-
- if (!eval_marks (edit, &start_mark, &end_mark))
- return;
-
- if (edit_search_options.backwards)
- {
- if (edit->search_start > end_mark || edit->search_start <= start_mark)
- edit->search_start = end_mark;
- }
- else
- {
- if (edit->search_start < start_mark || edit->search_start >= end_mark)
- edit->search_start = start_mark;
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gboolean
-editcmd_find (edit_search_status_msg_t * esm, gsize * len)
-{
- WEdit *edit = esm->edit;
- off_t search_start = edit->search_start;
- off_t search_end;
- off_t start_mark = 0;
- off_t end_mark = edit->buffer.size;
- char end_string_symbol;
-
- end_string_symbol = edit_search_get_current_end_line_char (edit);
-
- /* prepare for search */
- if (edit_search_options.only_in_selection)
- {
- if (!eval_marks (edit, &start_mark, &end_mark))
- {
- mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
- return FALSE;
- }
-
- /* fix the start and the end of search block positions */
- if ((edit->search_line_type & AT_START_LINE) != 0
- && (start_mark != 0
- || edit_buffer_get_byte (&edit->buffer, start_mark - 1) != end_string_symbol))
- start_mark =
- edit_calculate_start_of_next_line (&edit->buffer, start_mark, edit->buffer.size,
- end_string_symbol);
-
- if ((edit->search_line_type & AT_END_LINE) != 0
- && (end_mark - 1 != edit->buffer.size
- || edit_buffer_get_byte (&edit->buffer, end_mark) != end_string_symbol))
- end_mark =
- edit_calculate_end_of_previous_line (&edit->buffer, end_mark, end_string_symbol);
-
- if (start_mark >= end_mark)
- {
- mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
- return FALSE;
- }
- }
- else if (edit_search_options.backwards)
- end_mark = MAX (1, edit->buffer.curs1) - 1;
-
- /* search */
- if (edit_search_options.backwards)
- {
- /* backward search */
- search_end = end_mark;
-
- if ((edit->search_line_type & AT_START_LINE) != 0)
- search_start =
- edit_calculate_start_of_current_line (&edit->buffer, search_start,
- end_string_symbol);
-
- while (search_start >= start_mark)
- {
- gboolean ok;
-
- if (search_end > (off_t) (search_start + edit->search->original_len)
- && mc_search_is_fixed_search_str (edit->search))
- search_end = search_start + edit->search->original_len;
-
- ok = mc_search_run (edit->search, (void *) esm, search_start, search_end, len);
-
- if (ok && edit->search->normal_offset == search_start)
- return TRUE;
-
- /* We abort the search in case of a pattern error, or if the user aborts
- the search. In other words: in all cases except "string not found". */
- if (!ok && edit->search->error != MC_SEARCH_E_NOTFOUND)
- return FALSE;
-
- if ((edit->search_line_type & AT_START_LINE) != 0)
- search_start =
- edit_calculate_start_of_previous_line (&edit->buffer, search_start,
- end_string_symbol);
- else
- search_start--;
- }
-
- mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
- return FALSE;
- }
-
- /* forward search */
- if ((edit->search_line_type & AT_START_LINE) != 0 && search_start != start_mark)
- search_start =
- edit_calculate_start_of_next_line (&edit->buffer, search_start, end_mark,
- end_string_symbol);
-
- return mc_search_run (edit->search, (void *) esm, search_start, end_mark, len);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static char *
-edit_replace_cmd__conv_to_display (const char *str)
-{
-#ifdef HAVE_CHARSET
- GString *tmp;
-
- tmp = str_convert_to_display (str);
- if (tmp != NULL)
- {
- if (tmp->len != 0)
- return g_string_free (tmp, FALSE);
- g_string_free (tmp, TRUE);
- }
-#endif
- return g_strdup (str);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static char *
-edit_replace_cmd__conv_to_input (char *str)
-{
-#ifdef HAVE_CHARSET
- GString *tmp;
-
- tmp = str_convert_to_input (str);
- if (tmp->len != 0)
- return g_string_free (tmp, FALSE);
- g_string_free (tmp, TRUE);
-#endif
- return g_strdup (str);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-edit_show_search_error (const WEdit * edit, const char *title)
-{
- if (edit->search->error == MC_SEARCH_E_NOTFOUND)
- edit_query_dialog (title, _(STR_E_NOTFOUND));
- else if (edit->search->error_str != NULL)
- edit_query_dialog (title, edit->search->error_str);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-edit_do_search (WEdit * edit)
-{
- edit_search_status_msg_t esm;
- gsize len = 0;
-
- if (edit->search == NULL)
- edit->search_start = edit->buffer.curs1;
-
- edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
-
- esm.first = TRUE;
- esm.edit = edit;
- esm.offset = edit->search_start;
-
- status_msg_init (STATUS_MSG (&esm), _("Search"), 1.0, simple_status_msg_init_cb,
- edit_search_status_update_cb, NULL);
-
- if (search_create_bookmark)
- {
- gboolean found = FALSE;
- long l = 0, l_last = -1;
- long q = 0;
-
- search_create_bookmark = FALSE;
- book_mark_flush (edit, -1);
-
- while (mc_search_run (edit->search, (void *) &esm, q, edit->buffer.size, &len))
- {
- if (!found)
- edit->search_start = edit->search->normal_offset;
- found = TRUE;
-
- l += edit_buffer_count_lines (&edit->buffer, q, edit->search->normal_offset);
- if (l != l_last)
- book_mark_insert (edit, l, BOOK_MARK_FOUND_COLOR);
- l_last = l;
- q = edit->search->normal_offset + 1;
- }
-
- if (!found)
- edit_error_dialog (_("Search"), _(STR_E_NOTFOUND));
- else
- edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
- }
- else
- {
- if (edit->found_len != 0 && edit->search_start == edit->found_start + 1
- && edit_search_options.backwards)
- edit->search_start--;
-
- if (edit->found_len != 0 && edit->search_start == edit->found_start - 1
- && !edit_search_options.backwards)
- edit->search_start++;
-
- if (editcmd_find (&esm, &len))
- {
- edit->found_start = edit->search_start = edit->search->normal_offset;
- edit->found_len = len;
- edit->over_col = 0;
- edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
- edit_scroll_screen_over_cursor (edit);
- if (edit_search_options.backwards)
- edit->search_start--;
- else
- edit->search_start++;
- }
- else
- {
- edit->search_start = edit->buffer.curs1;
- edit_show_search_error (edit, _("Search"));
- }
- }
-
- status_msg_deinit (STATUS_MSG (&esm));
-
- edit->force |= REDRAW_COMPLETELY;
- edit_scroll_screen_over_cursor (edit);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-edit_search (WEdit * edit)
-{
- if (editcmd_dialog_search_show (edit))
- {
- edit->search_line_type = edit_get_search_line_type (edit->search);
- edit_search_fix_search_start_if_selection (edit);
- edit_do_search (edit);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
/** Return a null terminated length of text. Result must be g_free'd */
static unsigned char *
@@ -1128,215 +664,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-/** find first character of current word */
-
-static gboolean
-edit_find_word_start (const edit_buffer_t * buf, off_t * word_start, gsize * word_len)
-{
- int c;
- off_t i;
-
- /* return if at begin of file */
- if (buf->curs1 <= 0)
- return FALSE;
-
- c = edit_buffer_get_previous_byte (buf);
- /* return if not at end or in word */
- if (is_break_char (c))
- return FALSE;
-
- /* search start of word to be completed */
- for (i = 1;; i++)
- {
- int last;
-
- last = c;
- c = edit_buffer_get_byte (buf, buf->curs1 - i - 1);
-
- if (is_break_char (c))
- {
- /* return if word starts with digit */
- if (isdigit (last))
- return FALSE;
-
- break;
- }
- }
-
- /* success */
- *word_start = buf->curs1 - i; /* start found */
- *word_len = (gsize) i;
-
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/**
- * Get current word under cursor
- *
- * @param esm status message window
- * @param srch mc_search object
- * @param word_start start word position
- *
- * @return newly allocated string or NULL if no any words under cursor
- */
-
-static char *
-edit_collect_completions_get_current_word (edit_search_status_msg_t * esm, mc_search_t * srch,
- off_t word_start)
-{
- WEdit *edit = esm->edit;
- gsize len = 0;
- off_t i;
- GString *temp;
-
- if (!mc_search_run (srch, (void *) esm, word_start, edit->buffer.size, &len))
- return NULL;
-
- temp = g_string_sized_new (len);
-
- for (i = 0; i < (off_t) len; i++)
- {
- int chr;
-
- chr = edit_buffer_get_byte (&edit->buffer, word_start + i);
- if (!isspace (chr))
- g_string_append_c (temp, chr);
- }
-
- return g_string_free (temp, temp->len == 0);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** collect the possible completions */
-
-static gsize
-edit_collect_completions (WEdit * edit, off_t word_start, gsize word_len,
- char *match_expr, GString ** compl, gsize * num)
-{
- gsize len = 0;
- gsize max_len = 0;
- gsize i;
- int skip;
- GString *temp;
- mc_search_t *srch;
- off_t last_byte, start = -1;
- char *current_word;
- gboolean entire_file;
- edit_search_status_msg_t esm;
-
-#ifdef HAVE_CHARSET
- srch = mc_search_new (match_expr, cp_source);
-#else
- srch = mc_search_new (match_expr, NULL);
-#endif
- if (srch == NULL)
- return 0;
-
- entire_file =
- mc_config_get_bool (mc_global.main_config, CONFIG_APP_SECTION,
- "editor_wordcompletion_collect_entire_file", 0);
-
- last_byte = entire_file ? edit->buffer.size : word_start;
-
- srch->search_type = MC_SEARCH_T_REGEX;
- srch->is_case_sensitive = TRUE;
- srch->search_fn = edit_search_cmd_callback;
- srch->update_fn = edit_search_update_callback;
-
- esm.first = TRUE;
- esm.edit = edit;
- esm.offset = entire_file ? 0 : word_start;
-
- status_msg_init (STATUS_MSG (&esm), _("Collect completions"), 1.0, simple_status_msg_init_cb,
- edit_search_status_update_cb, NULL);
-
- current_word = edit_collect_completions_get_current_word (&esm, srch, word_start);
-
- temp = g_string_new ("");
-
- /* collect max MAX_WORD_COMPLETIONS completions */
- while (mc_search_run (srch, (void *) &esm, start + 1, last_byte, &len))
- {
- g_string_set_size (temp, 0);
- start = srch->normal_offset;
-
- /* add matched completion if not yet added */
- for (i = 0; i < len; i++)
- {
- skip = edit_buffer_get_byte (&edit->buffer, start + i);
- if (isspace (skip))
- continue;
-
- /* skip current word */
- if (start + (off_t) i == word_start)
- break;
-
- g_string_append_c (temp, skip);
- }
-
- if (temp->len == 0)
- continue;
-
- if (current_word != NULL && strcmp (current_word, temp->str) == 0)
- continue;
-
- skip = 0;
-
- for (i = 0; i < *num; i++)
- {
- if (strncmp
- ((char *) &compl[i]->str[word_len],
- (char *) &temp->str[word_len], MAX (len, compl[i]->len) - word_len) == 0)
- {
- GString *this = compl[i];
-
- for (++i; i < *num; i++)
- compl[i - 1] = compl[i];
- compl[*num - 1] = this;
-
- skip = 1;
- break; /* skip it, already added */
- }
- }
- if (skip != 0)
- continue;
-
- if (*num == MAX_WORD_COMPLETIONS)
- {
- g_string_free (compl[0], TRUE);
- for (i = 1; i < *num; i++)
- compl[i - 1] = compl[i];
- (*num)--;
- }
-#ifdef HAVE_CHARSET
- {
- GString *recoded;
-
- recoded = str_convert_to_display (temp->str);
- if (recoded->len != 0)
- g_string_assign (temp, recoded->str);
-
- g_string_free (recoded, TRUE);
- }
-#endif
- compl[(*num)++] = g_string_new_len (temp->str, temp->len);
- start += len;
-
- /* note the maximal length needed for the completion dialog */
- if (len > max_len)
- max_len = len;
- }
-
- status_msg_deinit (STATUS_MSG (&esm));
- mc_search_free (srch);
- g_string_free (temp, TRUE);
- g_free (current_word);
-
- return max_len;
-}
-
-/* --------------------------------------------------------------------------------------------- */
static void
edit_insert_column_of_text (WEdit * edit, unsigned char *data, off_t size, long width,
@@ -1392,90 +719,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-
-static int
-edit_macro_comparator (gconstpointer * macro1, gconstpointer * macro2)
-{
- const macros_t *m1 = (const macros_t *) macro1;
- const macros_t *m2 = (const macros_t *) macro2;
-
- return m1->hotkey - m2->hotkey;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
-edit_macro_sort_by_hotkey (void)
-{
- if (macros_list != NULL && macros_list->len != 0)
- g_array_sort (macros_list, (GCompareFunc) edit_macro_comparator);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static gboolean
-edit_get_macro (WEdit * edit, int hotkey, const macros_t ** macros, guint * indx)
-{
- const macros_t *array_start = &g_array_index (macros_list, struct macros_t, 0);
- macros_t *result;
- macros_t search_macro;
-
- (void) edit;
-
- search_macro.hotkey = hotkey;
- result = bsearch (&search_macro, macros_list->data, macros_list->len,
- sizeof (macros_t), (GCompareFunc) edit_macro_comparator);
-
- if (result != NULL && result->macro != NULL)
- {
- *indx = (result - array_start);
- *macros = result;
- return TRUE;
- }
- *indx = 0;
- return FALSE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** returns FALSE on error */
-
-static gboolean
-edit_delete_macro (WEdit * edit, int hotkey)
-{
- mc_config_t *macros_config = NULL;
- const char *section_name = "editor";
- gchar *macros_fname;
- guint indx;
- char *skeyname;
- const macros_t *macros = NULL;
-
- /* clear array of actions for current hotkey */
- while (edit_get_macro (edit, hotkey, ¯os, &indx))
- {
- if (macros->macro != NULL)
- g_array_free (macros->macro, TRUE);
- macros = NULL;
- g_array_remove_index (macros_list, indx);
- edit_macro_sort_by_hotkey ();
- }
-
- macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
- macros_config = mc_config_init (macros_fname, FALSE);
- g_free (macros_fname);
-
- if (macros_config == NULL)
- return FALSE;
-
- skeyname = lookup_key_by_code (hotkey);
- while (mc_config_del_key (macros_config, section_name, skeyname))
- ;
- g_free (skeyname);
- mc_config_save_file (macros_config, NULL);
- mc_config_deinit (macros_config);
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
/**
* Callback for the iteration of objects in the 'editors' array.
* Toggle syntax highlighting in editor object.
@@ -1500,29 +743,22 @@
}
/* --------------------------------------------------------------------------------------------- */
-/**
- * Insert autocompleted word into editor.
- *
- * @param edit editor object
- * @param completion word for completion
- * @param word_len offset from beginning for insert
- */
-static void
-edit_complete_word_insert_recoded_completion (WEdit * edit, char *completion, gsize word_len)
+static cb_ret_t
+editcmd_dialog_raw_key_query_cb (Widget * w, Widget * sender, widget_msg_t msg, int parm,
+ void *data)
{
-#ifdef HAVE_CHARSET
- GString *temp;
+ WDialog *h = DIALOG (w);
- temp = str_convert_to_input (completion);
-
- for (completion = temp->str + word_len; *completion != '\0'; completion++)
- edit_insert (edit, *completion);
- g_string_free (temp, TRUE);
-#else
- for (completion += word_len; *completion != '\0'; completion++)
- edit_insert (edit, *completion);
-#endif
+ switch (msg)
+ {
+ case MSG_KEY:
+ h->ret_value = parm;
+ dlg_stop (h);
+ return MSG_HANDLED;
+ default:
+ return dlg_default_callback (w, sender, msg, parm, data);
+ }
}
/* --------------------------------------------------------------------------------------------- */
@@ -1630,9 +866,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 38 };
+
quick_dialog_t qdlg = {
- -1, -1, 38,
- N_("Edit Save Mode"), "[Edit Save Mode]",
+ r, N_("Edit Save Mode"), "[Edit Save Mode]",
quick_widgets, edit_save_mode_callback, NULL
};
@@ -1649,7 +886,7 @@
void
edit_set_filename (WEdit * edit, const vfs_path_t * name_vpath)
{
- vfs_path_free (edit->filename_vpath);
+ vfs_path_free (edit->filename_vpath, TRUE);
edit->filename_vpath = vfs_path_clone (name_vpath);
if (edit->dir_vpath == NULL)
@@ -1717,7 +954,7 @@
if (different_filename)
/* Allow user to write into saved (under another name) file
* even if original file had r/o user permissions. */
- edit->stat1.st_mode |= S_IWRITE;
+ edit->stat1.st_mode |= S_IWUSR;
rv = edit_save_file (edit, exp_vpath);
switch (rv)
@@ -1757,276 +994,11 @@
}
ret:
- vfs_path_free (exp_vpath);
+ vfs_path_free (exp_vpath, TRUE);
edit->force |= REDRAW_COMPLETELY;
return ret;
}
-/* {{{ Macro stuff starts here */
-/* --------------------------------------------------------------------------------------------- */
-
-void
-edit_delete_macro_cmd (WEdit * edit)
-{
- int hotkey;
-
- hotkey = editcmd_dialog_raw_key_query (_("Delete macro"), _("Press macro hotkey:"), TRUE);
-
- if (hotkey != 0 && !edit_delete_macro (edit, hotkey))
- message (D_ERROR, _("Delete macro"), _("Macro not deleted"));
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/** returns FALSE on error */
-gboolean
-edit_execute_macro (WEdit * edit, int hotkey)
-{
- gboolean res = FALSE;
-
- if (hotkey != 0)
- {
- const macros_t *macros;
- guint indx;
-
- if (edit_get_macro (edit, hotkey, ¯os, &indx) &&
- macros->macro != NULL && macros->macro->len != 0)
- {
- guint i;
-
- edit->force |= REDRAW_PAGE;
-
- for (i = 0; i < macros->macro->len; i++)
- {
- const macro_action_t *m_act;
-
- m_act = &g_array_index (macros->macro, struct macro_action_t, i);
- edit_execute_cmd (edit, m_act->action, m_act->ch);
- res = TRUE;
- }
- }
- }
-
- return res;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-/** returns FALSE on error */
-gboolean
-edit_store_macro_cmd (WEdit * edit)
-{
- int i;
- int hotkey;
- GString *marcros_string;
- mc_config_t *macros_config = NULL;
- const char *section_name = "editor";
- gchar *macros_fname;
- GArray *macros; /* current macro */
- int tmp_act;
- gboolean have_macro = FALSE;
- char *skeyname = NULL;
-
- hotkey =
- editcmd_dialog_raw_key_query (_("Save macro"), _("Press the macro's new hotkey:"), TRUE);
- if (hotkey == ESC_CHAR)
- return FALSE;
-
- tmp_act = keybind_lookup_keymap_command (WIDGET (edit)->keymap, hotkey);
-
- /* return FALSE if try assign macro into restricted hotkeys */
- if (tmp_act == CK_MacroStartRecord
- || tmp_act == CK_MacroStopRecord || tmp_act == CK_MacroStartStopRecord)
- return FALSE;
-
- edit_delete_macro (edit, hotkey);
-
- macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
- macros_config = mc_config_init (macros_fname, FALSE);
- g_free (macros_fname);
-
- if (macros_config == NULL)
- return FALSE;
-
- edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
-
- marcros_string = g_string_sized_new (250);
- macros = g_array_new (TRUE, FALSE, sizeof (macro_action_t));
-
- skeyname = lookup_key_by_code (hotkey);
-
- for (i = 0; i < macro_index; i++)
- {
- macro_action_t m_act;
- const char *action_name;
-
- action_name = keybind_lookup_actionname (record_macro_buf[i].action);
-
- if (action_name == NULL)
- break;
-
- m_act.action = record_macro_buf[i].action;
- m_act.ch = record_macro_buf[i].ch;
- g_array_append_val (macros, m_act);
- have_macro = TRUE;
- g_string_append_printf (marcros_string, "%s:%i;", action_name,
- (int) record_macro_buf[i].ch);
- }
-
- if (!have_macro)
- mc_config_del_key (macros_config, section_name, skeyname);
- else
- {
- macros_t macro;
-
- macro.hotkey = hotkey;
- macro.macro = macros;
- g_array_append_val (macros_list, macro);
- mc_config_set_string (macros_config, section_name, skeyname, marcros_string->str);
- }
-
- g_free (skeyname);
- edit_macro_sort_by_hotkey ();
-
- g_string_free (marcros_string, TRUE);
- mc_config_save_file (macros_config, NULL);
- mc_config_deinit (macros_config);
- return TRUE;
-}
-
- /* --------------------------------------------------------------------------------------------- */
-
-gboolean
-edit_repeat_macro_cmd (WEdit * edit)
-{
- int i, j;
- char *f;
- long count_repeat;
- char *error = NULL;
-
- f = input_dialog (_("Repeat last commands"), _("Repeat times:"), MC_HISTORY_EDIT_REPEAT, NULL,
- INPUT_COMPLETE_NONE);
- if (f == NULL || *f == '\0')
- {
- g_free (f);
- return FALSE;
- }
-
- count_repeat = strtol (f, &error, 0);
-
- if (*error != '\0')
- {
- g_free (f);
- return FALSE;
- }
-
- g_free (f);
-
- edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
- edit->force |= REDRAW_PAGE;
-
- for (j = 0; j < count_repeat; j++)
- for (i = 0; i < macro_index; i++)
- edit_execute_cmd (edit, record_macro_buf[i].action, record_macro_buf[i].ch);
-
- edit_update_screen (edit);
- return TRUE;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** return FALSE on error */
-
-gboolean
-edit_load_macro_cmd (WEdit * edit)
-{
- mc_config_t *macros_config = NULL;
- gchar **profile_keys, **keys;
- gchar **values, **curr_values;
- const char *section_name = "editor";
- gchar *macros_fname;
-
- (void) edit;
-
- if (macros_list == NULL || macros_list->len != 0)
- return FALSE;
-
- macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
- macros_config = mc_config_init (macros_fname, TRUE);
- g_free (macros_fname);
-
- if (macros_config == NULL)
- return FALSE;
-
- keys = mc_config_get_keys (macros_config, section_name, NULL);
-
- for (profile_keys = keys; *profile_keys != NULL; profile_keys++)
- {
- int hotkey;
- gboolean have_macro = FALSE;
- GArray *macros;
- macros_t macro;
-
- macros = g_array_new (TRUE, FALSE, sizeof (macro_action_t));
- values = mc_config_get_string_list (macros_config, section_name, *profile_keys, NULL);
- hotkey = lookup_key (*profile_keys, NULL);
-
- for (curr_values = values; *curr_values != NULL && *curr_values[0] != '\0'; curr_values++)
- {
- char **macro_pair = NULL;
-
- macro_pair = g_strsplit (*curr_values, ":", 2);
- if (macro_pair != NULL)
- {
- macro_action_t m_act;
- if (macro_pair[0] == NULL || macro_pair[0][0] == '\0')
- m_act.action = 0;
- else
- {
- m_act.action = keybind_lookup_action (macro_pair[0]);
- MC_PTR_FREE (macro_pair[0]);
- }
- if (macro_pair[1] == NULL || macro_pair[1][0] == '\0')
- m_act.ch = -1;
- else
- {
- m_act.ch = strtol (macro_pair[1], NULL, 0);
- MC_PTR_FREE (macro_pair[1]);
- }
- if (m_act.action != 0)
- {
- /* a shell command */
- if ((m_act.action / CK_PipeBlock (0)) == 1)
- {
- m_act.action = CK_PipeBlock (0) + (m_act.ch > 0 ? m_act.ch : 0);
- m_act.ch = -1;
- }
- g_array_append_val (macros, m_act);
- have_macro = TRUE;
- }
- g_strfreev (macro_pair);
- macro_pair = NULL;
- }
- }
-
- if (have_macro)
- {
- macro.hotkey = hotkey;
- macro.macro = macros;
- g_array_append_val (macros_list, macro);
- }
-
- g_strfreev (values);
- }
-
- g_strfreev (keys);
- mc_config_deinit (macros_config);
- edit_macro_sort_by_hotkey ();
-
- return TRUE;
-}
-
-/* }}} Macro stuff end here */
-
/* --------------------------------------------------------------------------------------------- */
/** returns TRUE on success */
@@ -2077,8 +1049,8 @@
vfs_path_t *exp_vpath;
exp_vpath = vfs_path_from_str (exp);
- ret = edit_load_file_from_filename (h, exp_vpath);
- vfs_path_free (exp_vpath);
+ ret = edit_load_file_from_filename (h, exp_vpath, 0);
+ vfs_path_free (exp_vpath, TRUE);
}
g_free (exp);
@@ -2088,6 +1060,27 @@
/* --------------------------------------------------------------------------------------------- */
/**
+ * Load file content
+ *
+ * @param h screen the owner of editor window
+ * @param vpath vfs file path
+ * @param line line number
+ *
+ * @return TRUE if file content was successfully loaded, FALSE otherwise
+ */
+
+gboolean
+edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath, long line)
+{
+ WRect r = WIDGET (h)->rect;
+
+ rect_grow (&r, -1, 0);
+
+ return edit_add_window (h, &r, vpath, line);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
* Show history od edited or viewed files and open selected file.
*
* @return TRUE on success, FALSE otherwise.
@@ -2106,8 +1099,8 @@
vfs_path_t *exp_vpath;
exp_vpath = vfs_path_from_str (exp);
- ret = edit_load_file_from_filename (h, exp_vpath);
- vfs_path_free (exp_vpath);
+ ret = edit_load_file_from_filename (h, exp_vpath, 0);
+ vfs_path_free (exp_vpath, TRUE);
}
g_free (exp);
@@ -2135,27 +1128,27 @@
_("&User"), _("&System wide"));
extdir_vpath =
- vfs_path_build_filename (mc_global.sysconfig_dir, "syntax", "Syntax", (char *) NULL);
+ vfs_path_build_filename (mc_global.sysconfig_dir, EDIT_SYNTAX_FILE, (char *) NULL);
if (!exist_file (vfs_path_get_last_path_str (extdir_vpath)))
{
- vfs_path_free (extdir_vpath);
+ vfs_path_free (extdir_vpath, TRUE);
extdir_vpath =
- vfs_path_build_filename (mc_global.share_data_dir, "syntax", "Syntax", (char *) NULL);
+ vfs_path_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_FILE, (char *) NULL);
}
if (dir == 0)
{
vfs_path_t *user_syntax_file_vpath;
- user_syntax_file_vpath = mc_config_get_full_vpath (EDIT_HOME_SYNTAX_FILE);
+ user_syntax_file_vpath = mc_config_get_full_vpath (EDIT_SYNTAX_FILE);
check_for_default (extdir_vpath, user_syntax_file_vpath);
- ret = edit_load_file_from_filename (h, user_syntax_file_vpath);
- vfs_path_free (user_syntax_file_vpath);
+ ret = edit_load_file_from_filename (h, user_syntax_file_vpath, 0);
+ vfs_path_free (user_syntax_file_vpath, TRUE);
}
else if (dir == 1)
- ret = edit_load_file_from_filename (h, extdir_vpath);
+ ret = edit_load_file_from_filename (h, extdir_vpath, 0);
- vfs_path_free (extdir_vpath);
+ vfs_path_free (extdir_vpath, TRUE);
return ret;
}
@@ -2184,7 +1177,7 @@
vfs_path_build_filename (mc_global.sysconfig_dir, EDIT_GLOBAL_MENU, (char *) NULL);
if (!exist_file (vfs_path_get_last_path_str (menufile_vpath)))
{
- vfs_path_free (menufile_vpath);
+ vfs_path_free (menufile_vpath, TRUE);
menufile_vpath =
vfs_path_build_filename (mc_global.share_data_dir, EDIT_GLOBAL_MENU, (char *) NULL);
}
@@ -2207,21 +1200,21 @@
vfs_path_build_filename (mc_global.sysconfig_dir, EDIT_GLOBAL_MENU, (char *) NULL);
if (!exist_file (vfs_path_get_last_path_str (buffer_vpath)))
{
- vfs_path_free (buffer_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
buffer_vpath =
vfs_path_build_filename (mc_global.share_data_dir, EDIT_GLOBAL_MENU, (char *) NULL);
}
break;
default:
- vfs_path_free (menufile_vpath);
+ vfs_path_free (menufile_vpath, TRUE);
return FALSE;
}
- ret = edit_load_file_from_filename (h, buffer_vpath);
+ ret = edit_load_file_from_filename (h, buffer_vpath, 0);
- vfs_path_free (buffer_vpath);
- vfs_path_free (menufile_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
+ vfs_path_free (menufile_vpath, TRUE);
return ret;
}
@@ -2257,7 +1250,7 @@
{
edit = find_editor (DIALOG (g));
if (edit != NULL)
- widget_select (w);
+ widget_select (WIDGET (edit));
}
}
@@ -2503,335 +1496,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-/** call with edit = 0 before shutdown to close memory leaks */
-
-void
-edit_replace_cmd (WEdit * edit, gboolean again)
-{
- /* 1 = search string, 2 = replace with */
- static char *saved1 = NULL; /* saved default[123] */
- static char *saved2 = NULL;
- char *input1 = NULL; /* user input from the dialog */
- char *input2 = NULL;
- GString *input2_str = NULL;
- char *disp1 = NULL;
- char *disp2 = NULL;
- long times_replaced = 0;
- gboolean once_found = FALSE;
- edit_search_status_msg_t esm;
-
- if (edit == NULL)
- {
- MC_PTR_FREE (saved1);
- MC_PTR_FREE (saved2);
- return;
- }
-
- edit->force |= REDRAW_COMPLETELY;
-
- if (again && saved1 == NULL && saved2 == NULL)
- again = FALSE;
-
- if (again)
- {
- input1 = g_strdup (saved1 != NULL ? saved1 : "");
- input2 = g_strdup (saved2 != NULL ? saved2 : "");
- }
- else
- {
- char *tmp_inp1, *tmp_inp2;
-
- disp1 = edit_replace_cmd__conv_to_display (saved1 != NULL ? saved1 : "");
- disp2 = edit_replace_cmd__conv_to_display (saved2 != NULL ? saved2 : "");
-
- edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
-
- editcmd_dialog_replace_show (edit, disp1, disp2, &input1, &input2);
-
- g_free (disp1);
- g_free (disp2);
-
- if (input1 == NULL || *input1 == '\0')
- {
- edit->force = REDRAW_COMPLETELY;
- goto cleanup;
- }
-
- tmp_inp1 = input1;
- tmp_inp2 = input2;
- input1 = edit_replace_cmd__conv_to_input (input1);
- input2 = edit_replace_cmd__conv_to_input (input2);
- g_free (tmp_inp1);
- g_free (tmp_inp2);
-
- g_free (saved1);
- saved1 = g_strdup (input1);
- g_free (saved2);
- saved2 = g_strdup (input2);
-
- mc_search_free (edit->search);
- edit->search = NULL;
- }
-
- input2_str = g_string_new (input2);
-
- if (edit->search == NULL)
- {
-#ifdef HAVE_CHARSET
- edit->search = mc_search_new (input1, cp_source);
-#else
- edit->search = mc_search_new (input1, NULL);
-#endif
- if (edit->search == NULL)
- {
- edit->search_start = edit->buffer.curs1;
- goto cleanup;
- }
- edit->search->search_type = edit_search_options.type;
-#ifdef HAVE_CHARSET
- edit->search->is_all_charsets = edit_search_options.all_codepages;
-#endif
- edit->search->is_case_sensitive = edit_search_options.case_sens;
- edit->search->whole_words = edit_search_options.whole_words;
- edit->search->search_fn = edit_search_cmd_callback;
- edit->search->update_fn = edit_search_update_callback;
- edit->search_line_type = edit_get_search_line_type (edit->search);
- edit_search_fix_search_start_if_selection (edit);
- }
-
- if (edit->found_len != 0 && edit->search_start == edit->found_start + 1
- && edit_search_options.backwards)
- edit->search_start--;
-
- if (edit->found_len != 0 && edit->search_start == edit->found_start - 1
- && !edit_search_options.backwards)
- edit->search_start++;
-
- esm.first = TRUE;
- esm.edit = edit;
- esm.offset = edit->search_start;
-
- status_msg_init (STATUS_MSG (&esm), _("Search"), 1.0, simple_status_msg_init_cb,
- edit_search_status_update_cb, NULL);
-
- do
- {
- gsize len = 0;
-
- if (!editcmd_find (&esm, &len))
- {
- if (!(edit->search->error == MC_SEARCH_E_OK ||
- (once_found && edit->search->error == MC_SEARCH_E_NOTFOUND)))
- edit_show_search_error (edit, _("Search"));
- break;
- }
-
- once_found = TRUE;
-
- edit->search_start = edit->search->normal_offset;
- /* returns negative on not found or error in pattern */
-
- if (edit->search_start >= 0 && edit->search_start < edit->buffer.size)
- {
- gsize i;
- GString *repl_str;
-
- edit->found_start = edit->search_start;
- i = edit->found_len = len;
-
- edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
- edit_scroll_screen_over_cursor (edit);
-
- if (edit->replace_mode == 0)
- {
- long l;
- int prompt;
-
- l = edit->curs_row - WIDGET (edit)->lines / 3;
- if (l > 0)
- edit_scroll_downward (edit, l);
- if (l < 0)
- edit_scroll_upward (edit, -l);
-
- edit_scroll_screen_over_cursor (edit);
- edit->force |= REDRAW_PAGE;
- edit_render_keypress (edit);
-
- /*so that undo stops at each query */
- edit_push_key_press (edit);
- /* and prompt 2/3 down */
- disp1 = edit_replace_cmd__conv_to_display (saved1);
- disp2 = edit_replace_cmd__conv_to_display (saved2);
- prompt = editcmd_dialog_replace_prompt_show (edit, disp1, disp2, -1, -1);
- g_free (disp1);
- g_free (disp2);
-
- if (prompt == B_REPLACE_ALL)
- edit->replace_mode = 1;
- else if (prompt == B_SKIP_REPLACE)
- {
- if (edit_search_options.backwards)
- edit->search_start--;
- else
- edit->search_start++;
- continue; /* loop */
- }
- else if (prompt == B_CANCEL)
- {
- edit->replace_mode = -1;
- break; /* loop */
- }
- }
-
- repl_str = mc_search_prepare_replace_str (edit->search, input2_str);
-
- if (edit->search->error != MC_SEARCH_E_OK)
- {
- edit_show_search_error (edit, _("Replace"));
- if (repl_str != NULL)
- g_string_free (repl_str, TRUE);
- break;
- }
-
- /* delete then insert new */
- for (i = 0; i < len; i++)
- edit_delete (edit, TRUE);
-
- for (i = 0; i < repl_str->len; i++)
- edit_insert (edit, repl_str->str[i]);
-
- edit->found_len = repl_str->len;
- g_string_free (repl_str, TRUE);
- times_replaced++;
-
- /* so that we don't find the same string again */
- if (edit_search_options.backwards)
- edit->search_start--;
- else
- {
- edit->search_start += edit->found_len + (len == 0 ? 1 : 0);
-
- if (edit->search_start >= edit->buffer.size)
- break;
- }
-
- edit_scroll_screen_over_cursor (edit);
- }
- else
- {
- /* try and find from right here for next search */
- edit->search_start = edit->buffer.curs1;
- edit_update_curs_col (edit);
-
- edit->force |= REDRAW_PAGE;
- edit_render_keypress (edit);
-
- if (times_replaced == 0)
- query_dialog (_("Replace"), _(STR_E_NOTFOUND), D_NORMAL, 1, _("&OK"));
- break;
- }
- }
- while (edit->replace_mode >= 0);
-
- status_msg_deinit (STATUS_MSG (&esm));
- edit_scroll_screen_over_cursor (edit);
- edit->force |= REDRAW_COMPLETELY;
- edit_render_keypress (edit);
-
- if (edit->replace_mode == 1 && times_replaced != 0)
- message (D_NORMAL, _("Replace"), _("%ld replacements made"), times_replaced);
-
- cleanup:
- g_free (input1);
- g_free (input2);
- if (input2_str != NULL)
- g_string_free (input2_str, TRUE);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-mc_search_cbret_t
-edit_search_cmd_callback (const void *user_data, gsize char_offset, int *current_char)
-{
- WEdit *edit = ((const edit_search_status_msg_t *) user_data)->edit;
-
- *current_char = edit_buffer_get_byte (&edit->buffer, (off_t) char_offset);
-
- return MC_SEARCH_CB_OK;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-mc_search_cbret_t
-edit_search_update_callback (const void *user_data, gsize char_offset)
-{
- status_msg_t *sm = STATUS_MSG (user_data);
-
- ((edit_search_status_msg_t *) sm)->offset = (off_t) char_offset;
-
- return (sm->update (sm) == B_CANCEL ? MC_SEARCH_CB_ABORT : MC_SEARCH_CB_OK);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-edit_search_cmd (WEdit * edit, gboolean again)
-{
- if (edit == NULL)
- return;
-
- if (!again)
- edit_search (edit);
- else if (edit->last_search_string != NULL)
- edit_do_search (edit);
- else
- {
- /* find last search string in history */
- GList *history;
-
- history = mc_config_history_get (MC_HISTORY_SHARED_SEARCH);
- if (history != NULL && history->data != NULL)
- {
- edit->last_search_string = (char *) history->data;
- history->data = NULL;
- history = g_list_first (history);
- g_list_free_full (history, g_free);
-
-#ifdef HAVE_CHARSET
- edit->search = mc_search_new (edit->last_search_string, cp_source);
-#else
- edit->search = mc_search_new (edit->last_search_string, NULL);
-#endif
- if (edit->search == NULL)
- {
- /* if not... then ask for an expression */
- MC_PTR_FREE (edit->last_search_string);
- edit_search (edit);
- }
- else
- {
- edit->search->search_type = edit_search_options.type;
-#ifdef HAVE_CHARSET
- edit->search->is_all_charsets = edit_search_options.all_codepages;
-#endif
- edit->search->is_case_sensitive = edit_search_options.case_sens;
- edit->search->whole_words = edit_search_options.whole_words;
- edit->search->search_fn = edit_search_cmd_callback;
- edit->search->update_fn = edit_search_update_callback;
- edit->search_line_type = edit_get_search_line_type (edit->search);
- edit_do_search (edit);
- }
- }
- else
- {
- /* if not... then ask for an expression */
- MC_PTR_FREE (edit->last_search_string);
- edit_search (edit);
- }
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
/**
* Check if it's OK to close the file. If there are unsaved changes, ask user.
*
@@ -2909,7 +1573,7 @@
vpath = vfs_path_from_str (filename);
file = mc_open (vpath, O_CREAT | O_WRONLY | O_TRUNC,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH | O_BINARY);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (file == -1)
return FALSE;
@@ -3027,7 +1691,7 @@
mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_file_from_ext_clip", NULL);
tmp = mc_config_get_full_vpath (EDIT_HOME_CLIP_FILE);
ret = (edit_insert_file (edit, tmp) >= 0);
- vfs_path_free (tmp);
+ vfs_path_free (tmp, TRUE);
return ret;
}
@@ -3065,7 +1729,7 @@
if (l < 0)
l = edit->buffer.lines + l + 2;
- edit_move_display (edit, l - WIDGET (edit)->lines / 2 - 1);
+ edit_move_display (edit, l - WIDGET (edit)->rect.lines / 2 - 1);
edit_move_to_line (edit, l - 1);
edit->force |= REDRAW_COMPLETELY;
@@ -3131,7 +1795,7 @@
exp_vpath = vfs_path_from_str (exp);
ret = (edit_insert_file (edit, exp_vpath) >= 0);
- vfs_path_free (exp_vpath);
+ vfs_path_free (exp_vpath, TRUE);
if (!ret)
edit_error_dialog (_("Insert file"), get_sys_error (_("Cannot insert file")));
@@ -3164,7 +1828,7 @@
g_free (tmp);
exp = input_dialog (_("Run sort"),
- _("Enter sort options (see manpage) separated by whitespace:"),
+ _("Enter sort options (see sort(1) manpage) separated by whitespace:"),
MC_HISTORY_EDIT_SORT, INPUT_LAST_TEXT, INPUT_COMPLETE_NONE);
if (exp == NULL)
@@ -3208,7 +1872,7 @@
tmp_vpath = mc_config_get_full_vpath (EDIT_HOME_TEMP_FILE);
edit_insert_file (edit, tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
return 0;
@@ -3256,7 +1920,7 @@
tmp_vpath = mc_config_get_full_vpath (EDIT_HOME_TEMP_FILE);
edit_insert_file (edit, tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
return 0;
@@ -3305,9 +1969,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 50 };
+
quick_dialog_t qdlg = {
- -1, -1, 50,
- N_("Mail"), "[Input Line Keys]",
+ r, N_("Mail"), "[Input Line Keys]",
quick_widgets, NULL, NULL
};
@@ -3322,76 +1987,6 @@
/* --------------------------------------------------------------------------------------------- */
-/*******************/
-/* Word Completion */
-/*******************/
-
-/**
- * Complete current word using regular expression search
- * backwards beginning at the current cursor position.
- */
-
-void
-edit_complete_word_cmd (WEdit * edit)
-{
- gsize i, max_len, word_len = 0, num_compl = 0;
- off_t word_start = 0;
- GString *match_expr;
- GString *compl[MAX_WORD_COMPLETIONS]; /* completions */
-
- /* search start of word to be completed */
- if (!edit_find_word_start (&edit->buffer, &word_start, &word_len))
- return;
-
- /* prepare match expression */
- /* match_expr = g_strdup_printf ("\\b%.*s[a-zA-Z_0-9]+", word_len, bufpos); */
- match_expr = g_string_new ("(^|\\s+|\\b)");
- for (i = 0; i < word_len; i++)
- g_string_append_c (match_expr, edit_buffer_get_byte (&edit->buffer, word_start + i));
- g_string_append (match_expr,
- "[^\\s\\.=\\+\\[\\]\\(\\)\\,\\;\\:\\\"\\'\\-\\?\\/\\|\\\\\\{\\}\\*\\&\\^\\%%\\$#@\\!]+");
-
- /* collect the possible completions */
- /* start search from begin to end of file */
- max_len =
- edit_collect_completions (edit, word_start, word_len, match_expr->str, (GString **) & compl,
- &num_compl);
-
- if (num_compl > 0)
- {
- /* insert completed word if there is only one match */
- if (num_compl == 1)
- edit_complete_word_insert_recoded_completion (edit, compl[0]->str, word_len);
- /* more than one possible completion => ask the user */
- else
- {
- char *curr_compl;
-
- /* !!! usually only a beep is expected and when <ALT-TAB> is !!! */
- /* !!! pressed again the selection dialog pops up, but that !!! */
- /* !!! seems to require a further internal state !!! */
- /*tty_beep (); */
-
- /* let the user select the preferred completion */
- curr_compl = editcmd_dialog_completion_show (edit, max_len,
- (GString **) & compl, num_compl);
-
- if (curr_compl != NULL)
- {
- edit_complete_word_insert_recoded_completion (edit, curr_compl, word_len);
- g_free (curr_compl);
- }
- }
- }
-
- g_string_free (match_expr, TRUE);
- /* release memory before return */
- for (i = 0; i < num_compl; i++)
- g_string_free (compl[i], TRUE);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
#ifdef HAVE_CHARSET
void
edit_select_codepage_cmd (WEdit * edit)
@@ -3418,34 +2013,6 @@
/* --------------------------------------------------------------------------------------------- */
-void
-edit_begin_end_macro_cmd (WEdit * edit)
-{
- /* edit is a pointer to the widget */
- if (edit != NULL)
- {
- long command = macro_index < 0 ? CK_MacroStartRecord : CK_MacroStopRecord;
-
- edit_execute_key_command (edit, command, -1);
- }
-}
-
- /* --------------------------------------------------------------------------------------------- */
-
-void
-edit_begin_end_repeat_cmd (WEdit * edit)
-{
- /* edit is a pointer to the widget */
- if (edit != NULL)
- {
- long command = macro_index < 0 ? CK_RepeatStartRecord : CK_RepeatStopRecord;
-
- edit_execute_key_command (edit, command, -1);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
gboolean
edit_load_forward_cmd (WEdit * edit)
{
@@ -3502,210 +2069,45 @@
/* --------------------------------------------------------------------------------------------- */
-void
-edit_get_match_keyword_cmd (WEdit * edit)
-{
- gsize word_len = 0, max_len = 0;
- int num_def = 0;
- gsize i;
- off_t word_start = 0;
- GString *match_expr;
- char *path = NULL;
- char *ptr = NULL;
- char *tagfile = NULL;
-
- etags_hash_t def_hash[MAX_DEFINITIONS];
-
- for (i = 0; i < MAX_DEFINITIONS; i++)
- def_hash[i].filename = NULL;
-
- /* search start of word to be completed */
- if (!edit_find_word_start (&edit->buffer, &word_start, &word_len))
- return;
-
- /* prepare match expression */
- match_expr = g_string_sized_new (word_len);
- for (i = 0; i < word_len; i++)
- g_string_append_c (match_expr, edit_buffer_get_byte (&edit->buffer, word_start + i));
-
- ptr = g_get_current_dir ();
- path = g_strconcat (ptr, PATH_SEP_STR, (char *) NULL);
- g_free (ptr);
-
- /* Recursive search file 'TAGS' in parent dirs */
- do
- {
- ptr = g_path_get_dirname (path);
- g_free (path);
- path = ptr;
- g_free (tagfile);
- tagfile = mc_build_filename (path, TAGS_NAME, (char *) NULL);
- if (tagfile != NULL && exist_file (tagfile))
- break;
- }
- while (strcmp (path, PATH_SEP_STR) != 0);
-
- if (tagfile != NULL)
- {
- num_def =
- etags_set_definition_hash (tagfile, path, match_expr->str, (etags_hash_t *) & def_hash);
- g_free (tagfile);
- }
- g_free (path);
+/* gets a raw key from the keyboard. Passing cancel = 1 draws
+ a cancel button thus allowing c-c etc. Alternatively, cancel = 0
+ will return the next key pressed. ctrl-a (=B_CANCEL), ctrl-g, ctrl-c,
+ and Esc are cannot returned */
- max_len = MAX_WIDTH_DEF_DIALOG;
- word_len = 0;
- if (num_def > 0)
- editcmd_dialog_select_definition_show (edit, match_expr->str, max_len, word_len,
- (etags_hash_t *) & def_hash, num_def);
- g_string_free (match_expr, TRUE);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-#ifdef HAVE_ASPELL
int
-edit_suggest_current_word (WEdit * edit)
+editcmd_dialog_raw_key_query (const char *heading, const char *query, gboolean cancel)
{
- gsize cut_len = 0;
- gsize word_len = 0;
- off_t word_start = 0;
- int retval = B_SKIP_WORD;
- GString *match_word;
-
- /* search start of word to spell check */
- match_word = edit_buffer_get_word_from_pos (&edit->buffer, edit->buffer.curs1, &word_start,
- &cut_len);
- word_len = match_word->len;
-
-#ifdef HAVE_CHARSET
- if (mc_global.source_codepage >= 0 && mc_global.source_codepage != mc_global.display_codepage)
- {
- GString *tmp_word;
-
- tmp_word = str_convert_to_display (match_word->str);
- g_string_free (match_word, TRUE);
- match_word = tmp_word;
+ int w, wq;
+ int y = 2;
+ WDialog *raw_dlg;
+ WGroup *g;
+
+ w = str_term_width1 (heading) + 6;
+ wq = str_term_width1 (query);
+ w = MAX (w, wq + 3 * 2 + 1 + 2);
+
+ raw_dlg =
+ dlg_create (TRUE, 0, 0, cancel ? 7 : 5, w, WPOS_CENTER | WPOS_TRYUP, FALSE, dialog_colors,
+ editcmd_dialog_raw_key_query_cb, NULL, NULL, heading);
+ g = GROUP (raw_dlg);
+ widget_want_tab (WIDGET (raw_dlg), TRUE);
+
+ group_add_widget (g, label_new (y, 3, query));
+ group_add_widget (g,
+ input_new (y++, 3 + wq + 1, input_colors, w - (6 + wq + 1), "", 0,
+ INPUT_COMPLETE_NONE));
+ if (cancel)
+ {
+ group_add_widget (g, hline_new (y++, -1, -1));
+ /* Button w/o hotkey to allow use any key as raw or macro one */
+ group_add_widget_autopos (g, button_new (y, 1, B_CANCEL, NORMAL_BUTTON, _("Cancel"), NULL),
+ WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL);
}
-#endif
- if (!aspell_check (match_word->str, (int) word_len))
- {
- GArray *suggest;
- unsigned int res;
- guint i;
- suggest = g_array_new (TRUE, FALSE, sizeof (char *));
-
- res = aspell_suggest (suggest, match_word->str, (int) word_len);
- if (res != 0)
- {
- char *new_word = NULL;
+ w = dlg_run (raw_dlg);
+ widget_destroy (WIDGET (raw_dlg));
- edit->found_start = word_start;
- edit->found_len = word_len;
- edit->force |= REDRAW_PAGE;
- edit_scroll_screen_over_cursor (edit);
- edit_render_keypress (edit);
-
- retval = spell_dialog_spell_suggest_show (edit, match_word->str, &new_word, suggest);
- edit_cursor_move (edit, word_len - cut_len);
-
- if (retval == B_ENTER && new_word != NULL)
- {
- char *cp_word;
-
-#ifdef HAVE_CHARSET
- if (mc_global.source_codepage >= 0 &&
- (mc_global.source_codepage != mc_global.display_codepage))
- {
- GString *tmp_word;
-
- tmp_word = str_convert_to_input (new_word);
- g_free (new_word);
- new_word = g_string_free (tmp_word, FALSE);
- }
-#endif
- cp_word = new_word;
- for (i = 0; i < word_len; i++)
- edit_backspace (edit, TRUE);
- for (; *new_word; new_word++)
- edit_insert (edit, *new_word);
- g_free (cp_word);
- }
- else if (retval == B_ADD_WORD)
- aspell_add_to_dict (match_word->str, (int) word_len);
- }
-
- for (i = 0; i < suggest->len; i++)
- {
- char *cur_sugg_word;
-
- cur_sugg_word = g_array_index (suggest, char *, i);
- g_free (cur_sugg_word);
- }
- g_array_free (suggest, TRUE);
- edit->found_start = 0;
- edit->found_len = 0;
- }
-
- g_string_free (match_word, TRUE);
-
- return retval;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-edit_spellcheck_file (WEdit * edit)
-{
- if (edit->buffer.curs_line > 0)
- {
- edit_cursor_move (edit, -edit->buffer.curs1);
- edit_move_to_prev_col (edit, 0);
- edit_update_curs_row (edit);
- }
-
- do
- {
- int c1, c2;
-
- c2 = edit_buffer_get_current_byte (&edit->buffer);
-
- do
- {
- if (edit->buffer.curs1 >= edit->buffer.size)
- return;
-
- c1 = c2;
- edit_cursor_move (edit, 1);
- c2 = edit_buffer_get_current_byte (&edit->buffer);
- }
- while (is_break_char (c1) || is_break_char (c2));
- }
- while (edit_suggest_current_word (edit) != B_CANCEL);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-edit_set_spell_lang (void)
-{
- GArray *lang_list;
-
- lang_list = g_array_new (TRUE, FALSE, sizeof (char *));
- if (aspell_get_lang_list (lang_list) != 0)
- {
- char *lang;
-
- lang = spell_dialog_lang_list_show (lang_list);
- if (lang != NULL)
- {
- (void) aspell_set_lang (lang);
- g_free (lang);
- }
- }
- aspell_array_clean (lang_list);
+ return (cancel && (w == ESC_CHAR || w == B_CANCEL)) ? 0 : w;
}
-#endif /* HAVE_ASPELL */
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editcomplete.c
^
|
@@ -0,0 +1,475 @@
+/*
+ Editor word completion engine
+
+ Copyright (C) 2021-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Andrew Borodin <aborodin@vmail.ru>, 2021-2022
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <ctype.h> /* isspace() */
+#include <string.h>
+
+#include "lib/global.h"
+#include "lib/search.h"
+#include "lib/strutil.h"
+#ifdef HAVE_CHARSET
+#include "lib/charsets.h" /* str_convert_to_input() */
+#endif
+#include "lib/tty/tty.h" /* LINES, COLS */
+#include "lib/widget.h"
+
+#include "src/setup.h" /* verbose */
+
+#include "editwidget.h"
+#include "edit-impl.h"
+#include "editsearch.h"
+
+#include "editcomplete.h"
+
+/*** global variables ****************************************************************************/
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/*** file scope variables ************************************************************************/
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Get current word under cursor
+ *
+ * @param esm status message window
+ * @param srch mc_search object
+ * @param word_start start word position
+ *
+ * @return newly allocated string or NULL if no any words under cursor
+ */
+
+static GString *
+edit_collect_completions_get_current_word (edit_search_status_msg_t * esm, mc_search_t * srch,
+ off_t word_start)
+{
+ WEdit *edit = esm->edit;
+ gsize len = 0;
+ GString *temp = NULL;
+
+ if (mc_search_run (srch, (void *) esm, word_start, edit->buffer.size, &len))
+ {
+ off_t i;
+
+ for (i = 0; i < (off_t) len; i++)
+ {
+ int chr;
+
+ chr = edit_buffer_get_byte (&edit->buffer, word_start + i);
+ if (!isspace (chr))
+ {
+ if (temp == NULL)
+ temp = g_string_sized_new (len);
+
+ g_string_append_c (temp, chr);
+ }
+ }
+ }
+
+ return temp;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * collect the possible completions from one buffer
+ */
+
+static void
+edit_collect_completion_from_one_buffer (gboolean active_buffer, GQueue ** compl,
+ mc_search_t * srch, edit_search_status_msg_t * esm,
+ off_t word_start, gsize word_len, off_t last_byte,
+ GString * current_word, int *max_width)
+{
+ GString *temp = NULL;
+ gsize len = 0;
+ off_t start = -1;
+
+ while (mc_search_run (srch, (void *) esm, start + 1, last_byte, &len))
+ {
+ gsize i;
+ int width;
+
+ if (temp == NULL)
+ temp = g_string_sized_new (8);
+ else
+ g_string_set_size (temp, 0);
+
+ start = srch->normal_offset;
+
+ /* add matched completion if not yet added */
+ for (i = 0; i < len; i++)
+ {
+ int ch;
+
+ ch = edit_buffer_get_byte (&esm->edit->buffer, start + i);
+ if (isspace (ch))
+ continue;
+
+ /* skip current word */
+ if (start + (off_t) i == word_start)
+ break;
+
+ g_string_append_c (temp, ch);
+ }
+
+ if (temp->len == 0)
+ continue;
+
+ if (current_word != NULL && g_string_equal (current_word, temp))
+ continue;
+
+ if (*compl == NULL)
+ *compl = g_queue_new ();
+ else
+ {
+ GList *l;
+
+ for (l = g_queue_peek_head_link (*compl); l != NULL; l = g_list_next (l))
+ {
+ GString *s = (GString *) l->data;
+
+ /* skip if already added */
+ if (strncmp (s->str + word_len, temp->str + word_len,
+ MAX (len, s->len) - word_len) == 0)
+ break;
+ }
+
+ if (l != NULL)
+ {
+ /* resort completion in main buffer only:
+ * these completions must be at the top of list in the completion dialog */
+ if (!active_buffer && l != g_queue_peek_tail_link (*compl))
+ {
+ /* move to the end */
+ g_queue_unlink (*compl, l);
+ g_queue_push_tail_link (*compl, l);
+ }
+
+ continue;
+ }
+ }
+
+#ifdef HAVE_CHARSET
+ {
+ GString *recoded;
+
+ recoded = str_convert_to_display (temp->str);
+ if (recoded->len != 0)
+ mc_g_string_copy (temp, recoded);
+
+ g_string_free (recoded, TRUE);
+ }
+#endif
+ if (active_buffer)
+ g_queue_push_tail (*compl, temp);
+ else
+ g_queue_push_head (*compl, temp);
+
+ start += len;
+
+ /* note the maximal length needed for the completion dialog */
+ width = str_term_width1 (temp->str);
+ *max_width = MAX (*max_width, width);
+
+ temp = NULL;
+ }
+
+ if (temp != NULL)
+ g_string_free (temp, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * collect the possible completions from all buffers
+ */
+
+static GQueue *
+edit_collect_completions (WEdit * edit, off_t word_start, gsize word_len,
+ const char *match_expr, int *max_width)
+{
+ GQueue *compl = NULL;
+ mc_search_t *srch;
+ off_t last_byte;
+ GString *current_word;
+ gboolean entire_file, all_files;
+ edit_search_status_msg_t esm;
+
+#ifdef HAVE_CHARSET
+ srch = mc_search_new (match_expr, cp_source);
+#else
+ srch = mc_search_new (match_expr, NULL);
+#endif
+ if (srch == NULL)
+ return NULL;
+
+ entire_file =
+ mc_config_get_bool (mc_global.main_config, CONFIG_APP_SECTION,
+ "editor_wordcompletion_collect_entire_file", FALSE);
+
+ last_byte = entire_file ? edit->buffer.size : word_start;
+
+ srch->search_type = MC_SEARCH_T_REGEX;
+ srch->is_case_sensitive = TRUE;
+ srch->search_fn = edit_search_cmd_callback;
+ srch->update_fn = edit_search_update_callback;
+
+ esm.first = TRUE;
+ esm.edit = edit;
+ esm.offset = entire_file ? 0 : word_start;
+
+ status_msg_init (STATUS_MSG (&esm), _("Collect completions"), 1.0, simple_status_msg_init_cb,
+ edit_search_status_update_cb, NULL);
+
+ current_word = edit_collect_completions_get_current_word (&esm, srch, word_start);
+
+ *max_width = 0;
+
+ /* collect completions from current buffer at first */
+ edit_collect_completion_from_one_buffer (TRUE, &compl, srch, &esm, word_start, word_len,
+ last_byte, current_word, max_width);
+
+ /* collect completions from other buffers */
+ all_files =
+ mc_config_get_bool (mc_global.main_config, CONFIG_APP_SECTION,
+ "editor_wordcompletion_collect_all_files", TRUE);
+ if (all_files)
+ {
+ const WGroup *owner = CONST_GROUP (CONST_WIDGET (edit)->owner);
+ gboolean saved_verbose;
+ GList *w;
+
+ /* don't show incorrect percentage in edit_search_status_update_cb() */
+ saved_verbose = verbose;
+ verbose = FALSE;
+
+ for (w = owner->widgets; w != NULL; w = g_list_next (w))
+ {
+ Widget *ww = WIDGET (w->data);
+ WEdit *e;
+
+ if (!edit_widget_is_editor (ww))
+ continue;
+
+ e = (WEdit *) ww;
+
+ if (e == edit)
+ continue;
+
+ /* search in entire file */
+ word_start = 0;
+ last_byte = e->buffer.size;
+ esm.edit = e;
+ esm.offset = 0;
+
+ edit_collect_completion_from_one_buffer (FALSE, &compl, srch, &esm, word_start,
+ word_len, last_byte, current_word, max_width);
+ }
+
+ verbose = saved_verbose;
+ }
+
+ status_msg_deinit (STATUS_MSG (&esm));
+ mc_search_free (srch);
+ if (current_word != NULL)
+ g_string_free (current_word, TRUE);
+
+ return compl;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Insert autocompleted word into editor.
+ *
+ * @param edit editor object
+ * @param completion word for completion
+ * @param word_len offset from beginning for insert
+ */
+
+static void
+edit_complete_word_insert_recoded_completion (WEdit * edit, char *completion, gsize word_len)
+{
+#ifdef HAVE_CHARSET
+ GString *temp;
+
+ temp = str_convert_to_input (completion);
+
+ for (completion = temp->str + word_len; *completion != '\0'; completion++)
+ edit_insert (edit, *completion);
+ g_string_free (temp, TRUE);
+#else
+ for (completion += word_len; *completion != '\0'; completion++)
+ edit_insert (edit, *completion);
+#endif
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_completion_string_free (gpointer data)
+{
+ g_string_free ((GString *) data, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+/* let the user select its preferred completion */
+
+/* Public function for unit tests */
+char *
+edit_completion_dialog_show (const WEdit * edit, GQueue * compl, int max_width)
+{
+ const WRect *we = &CONST_WIDGET (edit)->rect;
+ int start_x, start_y, offset;
+ char *curr = NULL;
+ WDialog *compl_dlg;
+ WListbox *compl_list;
+ int compl_dlg_h; /* completion dialog height */
+ int compl_dlg_w; /* completion dialog width */
+ GList *i;
+
+ /* calculate the dialog metrics */
+ compl_dlg_h = g_queue_get_length (compl) + 2;
+ compl_dlg_w = max_width + 4;
+ start_x = we->x + edit->curs_col + edit->start_col + EDIT_TEXT_HORIZONTAL_OFFSET +
+ (edit->fullscreen ? 0 : 1) + option_line_state_width;
+ start_y = we->y + edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1;
+
+ if (start_x < 0)
+ start_x = 0;
+ if (start_x < we->x + 1)
+ start_x = we->x + 1 + option_line_state_width;
+ if (compl_dlg_w > COLS)
+ compl_dlg_w = COLS;
+ if (compl_dlg_h > LINES - 2)
+ compl_dlg_h = LINES - 2;
+
+ offset = start_x + compl_dlg_w - COLS;
+ if (offset > 0)
+ start_x -= offset;
+ offset = start_y + compl_dlg_h - LINES;
+ if (offset > 0)
+ start_y -= offset;
+
+ /* create the dialog */
+ compl_dlg =
+ dlg_create (TRUE, start_y, start_x, compl_dlg_h, compl_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
+ dialog_colors, NULL, NULL, "[Completion]", NULL);
+
+ /* create the listbox */
+ compl_list = listbox_new (1, 1, compl_dlg_h - 2, compl_dlg_w - 2, FALSE, NULL);
+
+ /* fill the listbox with the completions in the reverse order */
+ for (i = g_queue_peek_tail_link (compl); i != NULL; i = g_list_previous (i))
+ listbox_add_item (compl_list, LISTBOX_APPEND_AT_END, 0, ((GString *) i->data)->str, NULL,
+ FALSE);
+
+ group_add_widget (GROUP (compl_dlg), compl_list);
+
+ /* pop up the dialog and apply the chosen completion */
+ if (dlg_run (compl_dlg) == B_ENTER)
+ {
+ listbox_get_current (compl_list, &curr, NULL);
+ curr = g_strdup (curr);
+ }
+
+ /* destroy dialog before return */
+ widget_destroy (WIDGET (compl_dlg));
+
+ return curr;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Complete current word using regular expression search
+ * backwards beginning at the current cursor position.
+ */
+
+void
+edit_complete_word_cmd (WEdit * edit)
+{
+ off_t word_start = 0;
+ gsize word_len = 0;
+ GString *match_expr;
+ gsize i;
+ GQueue *compl; /* completions: list of GString* */
+ int max_width;
+
+ /* search start of word to be completed */
+ if (!edit_buffer_find_word_start (&edit->buffer, &word_start, &word_len))
+ return;
+
+ /* prepare match expression */
+ /* match_expr = g_strdup_printf ("\\b%.*s[a-zA-Z_0-9]+", word_len, bufpos); */
+ match_expr = g_string_new ("(^|\\s+|\\b)");
+ for (i = 0; i < word_len; i++)
+ g_string_append_c (match_expr, edit_buffer_get_byte (&edit->buffer, word_start + i));
+ g_string_append (match_expr,
+ "[^\\s\\.=\\+\\[\\]\\(\\)\\,\\;\\:\\\"\\'\\-\\?\\/\\|\\\\\\{\\}\\*\\&\\^\\%%\\$#@\\!]+");
+
+ /* collect possible completions */
+ compl = edit_collect_completions (edit, word_start, word_len, match_expr->str, &max_width);
+
+ g_string_free (match_expr, TRUE);
+
+ if (compl == NULL)
+ return;
+
+ if (g_queue_get_length (compl) == 1)
+ {
+ /* insert completed word if there is only one match */
+
+ GString *curr_compl;
+
+ curr_compl = (GString *) g_queue_peek_head (compl);
+ edit_complete_word_insert_recoded_completion (edit, curr_compl->str, word_len);
+ }
+ else
+ {
+ /* more than one possible completion => ask the user */
+
+ char *curr_compl;
+
+ /* let the user select the preferred completion */
+ curr_compl = edit_completion_dialog_show (edit, compl, max_width);
+ if (curr_compl != NULL)
+ {
+ edit_complete_word_insert_recoded_completion (edit, curr_compl, word_len);
+ g_free (curr_compl);
+ }
+ }
+
+ g_queue_free_full (compl, edit_completion_string_free);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editcomplete.h
^
|
@@ -0,0 +1,21 @@
+#ifndef MC__EDIT_COMPLETE_H
+#define MC__EDIT_COMPLETE_H
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/*** enums ***************************************************************************************/
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+/*** global variables defined in .c file *********************************************************/
+
+/*** declarations of public functions ************************************************************/
+
+/* Public function for unit tests */
+char *edit_completion_dialog_show (const WEdit * edit, GQueue * compl, int max_width);
+
+void edit_complete_word_cmd (WEdit * edit);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__EDIT_COMPLETE_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editdraw.c
^
|
@@ -1,12 +1,12 @@
/*
Editor text drawing.
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer, 1996, 1997
- Andrew Borodin <aborodin@vmail.ru> 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru> 2012-2022
Slava Zanko <slavazanko@gmail.com>, 2013
This file is part of the Midnight Commander.
@@ -189,7 +189,7 @@
edit_status_fullscreen (WEdit * edit, int color)
{
Widget *h = WIDGET (WIDGET (edit)->owner);
- const int w = h->cols;
+ const int w = h->rect.cols;
const int gap = 3; /* between the filename and the status */
const int right_gap = 5; /* at the right end of the screen */
const int preferred_fname_len = 16;
@@ -254,7 +254,7 @@
{
Widget *w = WIDGET (edit);
int y, x;
- int cols = w->cols;
+ int cols = w->rect.cols;
tty_setcolor (STATUSBAR_COLOR);
@@ -275,11 +275,11 @@
#endif
edit_move (2, 0);
- tty_printf ("[%s]", str_term_trim (fname, w->cols - 8 - 6));
+ tty_printf ("[%s]", str_term_trim (fname, w->rect.cols - 8 - 6));
}
tty_getyx (&y, &x);
- x -= w->x;
+ x -= w->rect.x;
x += 4;
if (x + 6 <= cols - 2 - 6)
{
@@ -292,7 +292,7 @@
if (cols > 30)
{
- edit_move (2, w->lines - 1);
+ edit_move (2, w->rect.lines - 1);
tty_printf ("%3ld %5ld/%ld %6ld/%ld",
edit->curs_col + edit->over_col,
edit->buffer.curs_line + 1, edit->buffer.lines + 1, (long) edit->buffer.curs1,
@@ -306,7 +306,7 @@
*/
if (cols > 46)
{
- edit_move (32, w->lines - 1);
+ edit_move (32, w->rect.lines - 1);
if (edit->buffer.curs1 >= edit->buffer.size)
tty_print_string ("[<EOF> ]");
#ifdef HAVE_CHARSET
@@ -348,12 +348,12 @@
/* draw a frame around edit area */
tty_setcolor (color);
/* draw double frame for active window if skin supports that */
- tty_draw_box (w->y, w->x, w->lines, w->cols, !active);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, !active);
/* draw a drag marker */
if (edit->drag_state == MCEDIT_DRAG_NONE)
{
tty_setcolor (EDITOR_FRAME_DRAG);
- widget_gotoyx (w, w->lines - 1, w->cols - 1);
+ widget_gotoyx (w, w->rect.lines - 1, w->rect.cols - 1);
tty_print_alt_char (ACS_LRCORNER, TRUE);
}
}
@@ -374,9 +374,9 @@
tty_setcolor (color);
if (edit->fullscreen)
- widget_gotoyx (w->owner, 0, WIDGET (w->owner)->cols - 6);
+ widget_gotoyx (w->owner, 0, WIDGET (w->owner)->rect.cols - 6);
else
- widget_gotoyx (w, 0, w->cols - 8);
+ widget_gotoyx (w, 0, w->rect.cols - 8);
g_snprintf (tmp, sizeof (tmp), "[%s][%s]", edit_window_state_char, edit_window_close_char);
tty_print_string (tmp);
}
@@ -412,25 +412,25 @@
len = end_col + 1 - start_col;
wrap_start = option_word_wrap_line_length + edit->start_col;
- if (len > 0 && w->y + y >= 0)
+ if (len > 0 && w->rect.y + y >= 0)
{
if (!show_right_margin || wrap_start > end_col)
- tty_draw_hline (w->y + y, w->x + x1, ' ', len);
+ tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', len);
else if (wrap_start < 0)
{
tty_setcolor (EDITOR_RIGHT_MARGIN_COLOR);
- tty_draw_hline (w->y + y, w->x + x1, ' ', len);
+ tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', len);
}
else
{
if (wrap_start > 0)
- tty_draw_hline (w->y + y, w->x + x1, ' ', wrap_start);
+ tty_draw_hline (w->rect.y + y, w->rect.x + x1, ' ', wrap_start);
len -= wrap_start;
if (len > 0)
{
tty_setcolor (EDITOR_RIGHT_MARGIN_COLOR);
- tty_draw_hline (w->y + y, w->x + x1 + wrap_start, ' ', len);
+ tty_draw_hline (w->rect.y + y, w->rect.x + x1 + wrap_start, ' ', len);
}
}
}
@@ -507,12 +507,11 @@
line_s *p = line;
off_t q;
int col, start_col_real;
- int color;
int abn_style;
int book_mark = 0;
char line_stat[LINE_STATE_WIDTH + 1] = "\0";
- if (row > w->lines - 1 - EDIT_TEXT_VERTICAL_OFFSET - 2 * (edit->fullscreen ? 0 : 1))
+ if (row > w->rect.lines - 1 - EDIT_TEXT_VERTICAL_OFFSET - 2 * (edit->fullscreen ? 0 : 1))
return;
if (book_mark_query_color (edit, edit->start_line + row, BOOK_MARK_COLOR))
@@ -529,11 +528,10 @@
if (!edit->fullscreen)
{
end_col--;
- if (w->x + w->cols <= WIDGET (w->owner)->cols)
+ if (w->rect.x + w->rect.cols <= WIDGET (w->owner)->rect.cols)
end_col--;
}
- color = edit_get_syntax_color (edit, b - 1);
q = edit_move_forward3 (edit, b, start_col - edit->start_col, 0);
col = (int) edit_move_forward3 (edit, b, 0, q);
start_col_real = col + edit->start_col;
@@ -623,6 +621,8 @@
p->style |= book_mark << 16;
else
{
+ int color;
+
color = edit_get_syntax_color (edit, q);
p->style |= color << 16;
}
@@ -844,8 +844,9 @@
static long prev_curs_row = 0;
static off_t prev_curs = 0;
- Widget *w = WIDGET (edit);
- Widget *wh = WIDGET (w->owner);
+ Widget *we = WIDGET (edit);
+ Widget *wh = WIDGET (we->owner);
+ WRect *w = &we->rect;
int force = edit->force;
int y1, x1, y2, x2;
@@ -853,24 +854,24 @@
/* draw only visible region */
- last_line = wh->y + wh->lines - 1;
+ last_line = wh->rect.y + wh->rect.lines - 1;
y1 = w->y;
if (y1 > last_line - 1 /* buttonbar */ )
return;
- last_column = wh->x + wh->cols - 1;
+ last_column = wh->rect.x + wh->rect.cols - 1;
x1 = w->x;
if (x1 > last_column)
return;
y2 = w->y + w->lines - 1;
- if (y2 < wh->y + 1 /* menubar */ )
+ if (y2 < wh->rect.y + 1 /* menubar */ )
return;
x2 = w->x + w->cols - 1;
- if (x2 < wh->x)
+ if (x2 < wh->rect.x)
return;
if ((force & REDRAW_IN_BOUNDS) == 0)
@@ -880,17 +881,17 @@
if (y2 <= last_line - 1 /* buttonbar */ )
end_row = w->lines - 1;
- else if (y1 >= wh->y + 1 /* menubar */ )
- end_row = wh->lines - 1 - y1 - 1;
+ else if (y1 >= wh->rect.y + 1 /* menubar */ )
+ end_row = wh->rect.lines - 1 - y1 - 1;
else
- end_row = start_row + wh->lines - 1 - 1;
+ end_row = start_row + wh->rect.lines - 1 - 1;
if (x2 <= last_column)
end_column = w->cols - 1;
- else if (x1 >= wh->x)
- end_column = wh->cols - 1 - x1;
+ else if (x1 >= wh->rect.x)
+ end_column = wh->rect.cols - 1 - x1;
else
- end_column = start_column + wh->cols - 1;
+ end_column = start_column + wh->rect.cols - 1;
}
/*
@@ -921,10 +922,9 @@
{
long upto;
- row = start_row;
b = edit->start_display;
upto = MIN (curs_row - 1, end_row);
- while (row <= upto)
+ for (row = start_row; row <= upto; row++)
{
if (key_pending (edit))
return;
@@ -1050,7 +1050,7 @@
void
edit_scroll_screen_over_cursor (WEdit * edit)
{
- Widget *w = WIDGET (edit);
+ WRect *w = &WIDGET (edit)->rect;
long p;
long outby;
@@ -1059,16 +1059,11 @@
if (w->lines <= 0 || w->cols <= 0)
return;
- w->lines -= EDIT_TEXT_VERTICAL_OFFSET;
- w->cols -= EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width;
+ rect_resize (w, -EDIT_TEXT_VERTICAL_OFFSET,
+ -(EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width));
if (!edit->fullscreen)
- {
- w->x++;
- w->cols -= 2;
- w->y++;
- w->lines -= 2;
- }
+ rect_grow (w, -1, -1);
r_extreme = EDIT_RIGHT_EXTREME;
l_extreme = EDIT_LEFT_EXTREME;
@@ -1116,15 +1111,10 @@
edit_scroll_upward (edit, outby);
edit_update_curs_row (edit);
- w->lines += EDIT_TEXT_VERTICAL_OFFSET;
- w->cols += EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width;
+ rect_resize (w, EDIT_TEXT_VERTICAL_OFFSET,
+ EDIT_TEXT_HORIZONTAL_OFFSET + option_line_state_width);
if (!edit->fullscreen)
- {
- w->x--;
- w->cols += 2;
- w->y--;
- w->lines += 2;
- }
+ rect_grow (w, 1, 1);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editmacros.c
^
|
@@ -0,0 +1,433 @@
+/*
+ Editor macros engine
+
+ Copyright (C) 2001-2022
+ Free Software Foundation, Inc.
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "lib/global.h"
+#include "lib/mcconfig.h"
+#include "lib/tty/key.h" /* lookup_key*() */
+#include "lib/keybind.h" /* keybind_lookup_actionname() */
+#include "lib/fileloc.h"
+
+#include "src/setup.h" /* macro_action_t */
+#include "src/history.h" /* MC_HISTORY_EDIT_REPEAT */
+
+#include "editwidget.h"
+
+#include "editmacros.h"
+
+/*** global variables ****************************************************************************/
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/*** file scope variables ************************************************************************/
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static int
+edit_macro_comparator (gconstpointer * macro1, gconstpointer * macro2)
+{
+ const macros_t *m1 = (const macros_t *) macro1;
+ const macros_t *m2 = (const macros_t *) macro2;
+
+ return m1->hotkey - m2->hotkey;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_macro_sort_by_hotkey (void)
+{
+ if (macros_list != NULL && macros_list->len != 0)
+ g_array_sort (macros_list, (GCompareFunc) edit_macro_comparator);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static int
+edit_get_macro (WEdit * edit, int hotkey)
+{
+ macros_t *array_start;
+ macros_t *result;
+ macros_t search_macro = {
+ .hotkey = hotkey
+ };
+
+ (void) edit;
+
+ result = bsearch (&search_macro, macros_list->data, macros_list->len,
+ sizeof (macros_t), (GCompareFunc) edit_macro_comparator);
+
+ if (result == NULL || result->macro == NULL)
+ return (-1);
+
+ array_start = &g_array_index (macros_list, struct macros_t, 0);
+
+ return (int) (result - array_start);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/** returns FALSE on error */
+static gboolean
+edit_delete_macro (WEdit * edit, int hotkey)
+{
+ mc_config_t *macros_config = NULL;
+ const char *section_name = "editor";
+ gchar *macros_fname;
+ int indx;
+ char *skeyname;
+
+ /* clear array of actions for current hotkey */
+ while ((indx = edit_get_macro (edit, hotkey)) != -1)
+ {
+ macros_t *macros;
+
+ macros = &g_array_index (macros_list, struct macros_t, indx);
+ g_array_free (macros->macro, TRUE);
+ g_array_remove_index (macros_list, indx);
+ }
+
+ macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
+ macros_config = mc_config_init (macros_fname, FALSE);
+ g_free (macros_fname);
+
+ if (macros_config == NULL)
+ return FALSE;
+
+ skeyname = lookup_key_by_code (hotkey);
+ while (mc_config_del_key (macros_config, section_name, skeyname))
+ ;
+ g_free (skeyname);
+ mc_config_save_file (macros_config, NULL);
+ mc_config_deinit (macros_config);
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+/** returns FALSE on error */
+gboolean
+edit_store_macro_cmd (WEdit * edit)
+{
+ int i;
+ int hotkey;
+ GString *macros_string = NULL;
+ const char *section_name = "editor";
+ gchar *macros_fname;
+ GArray *macros = NULL;
+ int tmp_act;
+ mc_config_t *macros_config;
+ char *skeyname;
+
+ hotkey =
+ editcmd_dialog_raw_key_query (_("Save macro"), _("Press the macro's new hotkey:"), TRUE);
+ if (hotkey == ESC_CHAR)
+ return FALSE;
+
+ tmp_act = keybind_lookup_keymap_command (WIDGET (edit)->keymap, hotkey);
+ /* return FALSE if try assign macro into restricted hotkeys */
+ if (tmp_act == CK_MacroStartRecord
+ || tmp_act == CK_MacroStopRecord || tmp_act == CK_MacroStartStopRecord)
+ return FALSE;
+
+ edit_delete_macro (edit, hotkey);
+
+ macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
+ macros_config = mc_config_init (macros_fname, FALSE);
+ g_free (macros_fname);
+
+ if (macros_config == NULL)
+ return FALSE;
+
+ edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
+
+ skeyname = lookup_key_by_code (hotkey);
+
+ for (i = 0; i < macro_index; i++)
+ {
+ macro_action_t m_act;
+ const char *action_name;
+
+ action_name = keybind_lookup_actionname (record_macro_buf[i].action);
+ if (action_name == NULL)
+ break;
+
+ if (macros == NULL)
+ {
+ macros = g_array_new (TRUE, FALSE, sizeof (macro_action_t));
+ macros_string = g_string_sized_new (250);
+ }
+
+ m_act.action = record_macro_buf[i].action;
+ m_act.ch = record_macro_buf[i].ch;
+ g_array_append_val (macros, m_act);
+ g_string_append_printf (macros_string, "%s:%i;", action_name, (int) record_macro_buf[i].ch);
+ }
+
+ if (macros == NULL)
+ mc_config_del_key (macros_config, section_name, skeyname);
+ else
+ {
+ macros_t macro;
+
+ macro.hotkey = hotkey;
+ macro.macro = macros;
+ g_array_append_val (macros_list, macro);
+ mc_config_set_string (macros_config, section_name, skeyname, macros_string->str);
+ }
+
+ g_free (skeyname);
+
+ edit_macro_sort_by_hotkey ();
+
+ if (macros_string != NULL)
+ g_string_free (macros_string, TRUE);
+ mc_config_save_file (macros_config, NULL);
+ mc_config_deinit (macros_config);
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/** return FALSE on error */
+
+gboolean
+edit_load_macro_cmd (WEdit * edit)
+{
+ mc_config_t *macros_config = NULL;
+ gchar **profile_keys, **keys;
+ gchar **values, **curr_values;
+ const char *section_name = "editor";
+ gchar *macros_fname;
+
+ (void) edit;
+
+ if (macros_list == NULL || macros_list->len != 0)
+ return FALSE;
+
+ macros_fname = mc_config_get_full_path (MC_MACRO_FILE);
+ macros_config = mc_config_init (macros_fname, TRUE);
+ g_free (macros_fname);
+
+ if (macros_config == NULL)
+ return FALSE;
+
+ keys = mc_config_get_keys (macros_config, section_name, NULL);
+
+ for (profile_keys = keys; *profile_keys != NULL; profile_keys++)
+ {
+ int hotkey;
+ GArray *macros = NULL;
+ macros_t macro;
+
+ values = mc_config_get_string_list (macros_config, section_name, *profile_keys, NULL);
+ hotkey = lookup_key (*profile_keys, NULL);
+
+ for (curr_values = values; *curr_values != NULL && *curr_values[0] != '\0'; curr_values++)
+ {
+ char **macro_pair;
+
+ macro_pair = g_strsplit (*curr_values, ":", 2);
+
+ if (macro_pair != NULL)
+ {
+ macro_action_t m_act = {
+ .action = 0,
+ .ch = -1
+ };
+
+ if (macro_pair[0] != NULL && macro_pair[0][0] != '\0')
+ m_act.action = keybind_lookup_action (macro_pair[0]);
+
+ if (macro_pair[1] != NULL && macro_pair[1][0] != '\0')
+ m_act.ch = strtol (macro_pair[1], NULL, 0);
+
+ if (m_act.action != 0)
+ {
+ /* a shell command */
+ if ((m_act.action / CK_PipeBlock (0)) == 1)
+ {
+ m_act.action = CK_PipeBlock (0);
+ if (m_act.ch > 0)
+ m_act.action += m_act.ch;
+ m_act.ch = -1;
+ }
+
+ if (macros == NULL)
+ macros = g_array_new (TRUE, FALSE, sizeof (m_act));
+
+ g_array_append_val (macros, m_act);
+ }
+
+ g_strfreev (macro_pair);
+ }
+ }
+
+ if (macros != NULL)
+ {
+ macro.hotkey = hotkey;
+ macro.macro = macros;
+ g_array_append_val (macros_list, macro);
+ }
+
+ g_strfreev (values);
+ }
+
+ g_strfreev (keys);
+ mc_config_deinit (macros_config);
+ edit_macro_sort_by_hotkey ();
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_delete_macro_cmd (WEdit * edit)
+{
+ int hotkey;
+
+ hotkey = editcmd_dialog_raw_key_query (_("Delete macro"), _("Press macro hotkey:"), TRUE);
+
+ if (hotkey != 0 && !edit_delete_macro (edit, hotkey))
+ message (D_ERROR, _("Delete macro"), _("Macro not deleted"));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+gboolean
+edit_repeat_macro_cmd (WEdit * edit)
+{
+ gboolean ok;
+ char *f;
+ long count_repeat = 0;
+
+ f = input_dialog (_("Repeat last commands"), _("Repeat times:"), MC_HISTORY_EDIT_REPEAT, NULL,
+ INPUT_COMPLETE_NONE);
+ ok = (f != NULL && *f != '\0');
+
+ if (ok)
+ {
+ char *error = NULL;
+
+ count_repeat = strtol (f, &error, 0);
+
+ ok = (*error == '\0');
+ }
+
+ g_free (f);
+
+ if (ok)
+ {
+ int i, j;
+
+ edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
+ edit->force |= REDRAW_PAGE;
+
+ for (j = 0; j < count_repeat; j++)
+ for (i = 0; i < macro_index; i++)
+ edit_execute_cmd (edit, record_macro_buf[i].action, record_macro_buf[i].ch);
+
+ edit_update_screen (edit);
+ }
+
+ return ok;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/** returns FALSE on error */
+gboolean
+edit_execute_macro (WEdit * edit, int hotkey)
+{
+ gboolean res = FALSE;
+
+ if (hotkey != 0)
+ {
+ int indx;
+
+ indx = edit_get_macro (edit, hotkey);
+ if (indx != -1)
+ {
+ const macros_t *macros;
+
+ macros = &g_array_index (macros_list, struct macros_t, indx);
+ if (macros->macro->len != 0)
+ {
+ guint i;
+
+ edit->force |= REDRAW_PAGE;
+
+ for (i = 0; i < macros->macro->len; i++)
+ {
+ const macro_action_t *m_act;
+
+ m_act = &g_array_index (macros->macro, struct macro_action_t, i);
+ edit_execute_cmd (edit, m_act->action, m_act->ch);
+ res = TRUE;
+ }
+ }
+ }
+ }
+
+ return res;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_begin_end_macro_cmd (WEdit * edit)
+{
+ /* edit is a pointer to the widget */
+ if (edit != NULL)
+ {
+ long command = macro_index < 0 ? CK_MacroStartRecord : CK_MacroStopRecord;
+
+ edit_execute_key_command (edit, command, -1);
+ }
+}
+
+ /* --------------------------------------------------------------------------------------------- */
+
+void
+edit_begin_end_repeat_cmd (WEdit * edit)
+{
+ /* edit is a pointer to the widget */
+ if (edit != NULL)
+ {
+ long command = macro_index < 0 ? CK_RepeatStartRecord : CK_RepeatStopRecord;
+
+ edit_execute_key_command (edit, command, -1);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editmacros.h
^
|
@@ -0,0 +1,24 @@
+#ifndef MC__EDIT_MACROS_H
+#define MC__EDIT_MACROS_H 1
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/*** enums ***************************************************************************************/
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+/*** global variables defined in .c file *********************************************************/
+
+/*** declarations of public functions ************************************************************/
+
+int edit_store_macro_cmd (WEdit * edit);
+gboolean edit_load_macro_cmd (WEdit * edit);
+void edit_delete_macro_cmd (WEdit * edit);
+gboolean edit_repeat_macro_cmd (WEdit * edit);
+gboolean edit_execute_macro (WEdit * edit, int hotkey);
+void edit_begin_end_macro_cmd (WEdit * edit);
+void edit_begin_end_repeat_cmd (WEdit * edit);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__EDIT_MACROS_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editoptions.c
^
|
@@ -1,12 +1,12 @@
/*
Editor options dialog box
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer, 1996, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2012
+ Andrew Borodin <aborodin@vmail.ru>, 2012-2022
This file is part of the Midnight Commander.
@@ -184,9 +184,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 74 };
+
quick_dialog_t qdlg = {
- -1, -1, 74,
- N_("Editor options"), "[Editor options]",
+ r, N_("Editor options"), "[Editor options]",
quick_widgets, NULL, NULL
};
@@ -199,7 +200,7 @@
if (!option_cursor_beyond_eol)
g_list_foreach (GROUP (h)->widgets, edit_reset_over_col, NULL);
- if (p != NULL)
+ if (*p != '\0')
{
option_word_wrap_line_length = atoi (p);
if (option_word_wrap_line_length <= 0)
@@ -207,7 +208,7 @@
g_free (p);
}
- if (q != NULL)
+ if (*q != '\0')
{
option_tab_spacing = atoi (q);
if (option_tab_spacing <= 0)
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editsearch.c
^
|
@@ -0,0 +1,1034 @@
+/*
+ Search & replace engine of MCEditor.
+
+ Copyright (C) 2021-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Andrew Borodin <aborodin@vmail.ru>, 2021-2022
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include <assert.h>
+
+#include "lib/global.h"
+#include "lib/search.h"
+#include "lib/mcconfig.h" /* mc_config_history_get */
+#ifdef HAVE_CHARSET
+#include "lib/charsets.h" /* cp_source */
+#endif
+#include "lib/util.h"
+#include "lib/widget.h"
+#include "lib/skin.h" /* BOOK_MARK_FOUND_COLOR */
+
+#include "src/history.h" /* MC_HISTORY_SHARED_SEARCH */
+#include "src/setup.h" /* verbose */
+
+#include "edit-impl.h"
+#include "editwidget.h"
+
+#include "editsearch.h"
+
+/*** global variables ****************************************************************************/
+
+edit_search_options_t edit_search_options = {
+ .type = MC_SEARCH_T_NORMAL,
+ .case_sens = FALSE,
+ .backwards = FALSE,
+ .only_in_selection = FALSE,
+ .whole_words = FALSE,
+ .all_codepages = FALSE
+};
+
+/*** file scope macro definitions ****************************************************************/
+
+#define B_REPLACE_ALL (B_USER+1)
+#define B_REPLACE_ONE (B_USER+2)
+#define B_SKIP_REPLACE (B_USER+3)
+
+/*** file scope type declarations ****************************************************************/
+
+/*** file scope variables ************************************************************************/
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+edit_dialog_search_show (WEdit * edit)
+{
+ char *search_text;
+ size_t num_of_types = 0;
+ gchar **list_of_types;
+ int dialog_result;
+
+ list_of_types = mc_search_get_types_strings_array (&num_of_types);
+
+ {
+ quick_widget_t quick_widgets[] = {
+ /* *INDENT-OFF* */
+ QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, INPUT_LAST_TEXT,
+ MC_HISTORY_SHARED_SEARCH, &search_text, NULL, FALSE, FALSE,
+ INPUT_COMPLETE_NONE),
+ QUICK_SEPARATOR (TRUE),
+ QUICK_START_COLUMNS,
+ QUICK_RADIO (num_of_types, (const char **) list_of_types,
+ (int *) &edit_search_options.type, NULL),
+ QUICK_NEXT_COLUMN,
+ QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL),
+ QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL),
+ QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL),
+ QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL),
+#ifdef HAVE_CHARSET
+ QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL),
+#endif
+ QUICK_STOP_COLUMNS,
+ QUICK_START_BUTTONS (TRUE, TRUE),
+ QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL),
+ QUICK_BUTTON (N_("&Find all"), B_USER, NULL, NULL),
+ QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL),
+ QUICK_END
+ /* *INDENT-ON* */
+ };
+
+ WRect r = { -1, -1, 0, 58 };
+
+ quick_dialog_t qdlg = {
+ r, N_("Search"), "[Input Line Keys]",
+ quick_widgets, NULL, NULL
+ };
+
+ dialog_result = quick_dialog (&qdlg);
+ }
+
+ g_strfreev (list_of_types);
+
+ if (dialog_result == B_CANCEL || search_text[0] == '\0')
+ {
+ g_free (search_text);
+ return FALSE;
+ }
+
+ if (dialog_result == B_USER)
+ search_create_bookmark = TRUE;
+
+#ifdef HAVE_CHARSET
+ {
+ GString *tmp;
+
+ tmp = str_convert_to_input (search_text);
+ g_free (search_text);
+ search_text = g_string_free (tmp, FALSE);
+ }
+#endif
+
+ edit_search_deinit (edit);
+ edit->last_search_string = search_text;
+
+ return edit_search_init (edit, edit->last_search_string);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_dialog_replace_show (WEdit * edit, const char *search_default, const char *replace_default,
+ /*@out@ */ char **search_text, /*@out@ */ char **replace_text)
+{
+ size_t num_of_types = 0;
+ gchar **list_of_types;
+
+ if ((search_default == NULL) || (*search_default == '\0'))
+ search_default = INPUT_LAST_TEXT;
+
+ list_of_types = mc_search_get_types_strings_array (&num_of_types);
+
+ {
+ quick_widget_t quick_widgets[] = {
+ /* *INDENT-OFF* */
+ QUICK_LABELED_INPUT (N_("Enter search string:"), input_label_above, search_default,
+ MC_HISTORY_SHARED_SEARCH, search_text, NULL, FALSE, FALSE,
+ INPUT_COMPLETE_NONE),
+ QUICK_LABELED_INPUT (N_("Enter replacement string:"), input_label_above, replace_default,
+ "replace", replace_text, NULL, FALSE, FALSE, INPUT_COMPLETE_NONE),
+ QUICK_SEPARATOR (TRUE),
+ QUICK_START_COLUMNS,
+ QUICK_RADIO (num_of_types, (const char **) list_of_types,
+ (int *) &edit_search_options.type, NULL),
+ QUICK_NEXT_COLUMN,
+ QUICK_CHECKBOX (N_("Cas&e sensitive"), &edit_search_options.case_sens, NULL),
+ QUICK_CHECKBOX (N_("&Backwards"), &edit_search_options.backwards, NULL),
+ QUICK_CHECKBOX (N_("In se&lection"), &edit_search_options.only_in_selection, NULL),
+ QUICK_CHECKBOX (N_("&Whole words"), &edit_search_options.whole_words, NULL),
+#ifdef HAVE_CHARSET
+ QUICK_CHECKBOX (N_("&All charsets"), &edit_search_options.all_codepages, NULL),
+#endif
+ QUICK_STOP_COLUMNS,
+ QUICK_BUTTONS_OK_CANCEL,
+ QUICK_END
+ /* *INDENT-ON* */
+ };
+
+ WRect r = { -1, -1, 0, 58 };
+
+ quick_dialog_t qdlg = {
+ r, N_("Replace"), "[Input Line Keys]",
+ quick_widgets, NULL, NULL
+ };
+
+ if (quick_dialog (&qdlg) != B_CANCEL)
+ edit->replace_mode = 0;
+ else
+ {
+ *replace_text = NULL;
+ *search_text = NULL;
+ }
+ }
+
+ g_strfreev (list_of_types);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static int
+edit_dialog_replace_prompt_show (WEdit * edit, char *from_text, char *to_text, int xpos, int ypos)
+{
+ Widget *w = WIDGET (edit);
+
+ /* dialog size */
+ int dlg_height = 10;
+ int dlg_width;
+
+ char tmp[BUF_MEDIUM];
+ char *repl_from, *repl_to;
+ int retval;
+
+ if (xpos == -1)
+ xpos = w->rect.x + option_line_state_width + 1;
+ if (ypos == -1)
+ ypos = w->rect.y + w->rect.lines / 2;
+ /* Sometimes menu can hide replaced text. I don't like it */
+ if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + dlg_height - 1))
+ ypos -= dlg_height;
+
+ dlg_width = WIDGET (w->owner)->rect.cols - xpos - 1;
+
+ g_snprintf (tmp, sizeof (tmp), "\"%s\"", from_text);
+ repl_from = g_strdup (str_trunc (tmp, dlg_width - 7));
+
+ g_snprintf (tmp, sizeof (tmp), "\"%s\"", to_text);
+ repl_to = g_strdup (str_trunc (tmp, dlg_width - 7));
+
+ {
+ quick_widget_t quick_widgets[] = {
+ /* *INDENT-OFF* */
+ QUICK_LABEL (repl_from, NULL),
+ QUICK_LABEL (N_("Replace with:"), NULL),
+ QUICK_LABEL (repl_to, NULL),
+ QUICK_START_BUTTONS (TRUE, TRUE),
+ QUICK_BUTTON (N_("&Replace"), B_ENTER, NULL, NULL),
+ QUICK_BUTTON (N_("A&ll"), B_REPLACE_ALL, NULL, NULL),
+ QUICK_BUTTON (N_("&Skip"), B_SKIP_REPLACE, NULL, NULL),
+ QUICK_BUTTON (N_("&Cancel"), B_CANCEL, NULL, NULL),
+ QUICK_END
+ /* *INDENT-ON* */
+ };
+
+ WRect r = { ypos, xpos, 0, -1 };
+
+ quick_dialog_t qdlg = {
+ r, N_("Confirm replace"), NULL,
+ quick_widgets, NULL, NULL
+ };
+
+ retval = quick_dialog (&qdlg);
+ }
+
+ g_free (repl_from);
+ g_free (repl_to);
+
+ return retval;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Get EOL symbol for searching.
+ *
+ * @param edit editor object
+ * @return EOL symbol
+ */
+
+static inline char
+edit_search_get_current_end_line_char (const WEdit * edit)
+{
+ switch (edit->lb)
+ {
+ case LB_MAC:
+ return '\r';
+ default:
+ return '\n';
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Checking if search condition have BOL(^) or EOL ($) regexp special characters.
+ *
+ * @param search search object
+ * @return result of checks.
+ */
+
+static edit_search_line_t
+edit_get_search_line_type (mc_search_t * search)
+{
+ edit_search_line_t search_line_type = 0;
+
+ if (search->search_type != MC_SEARCH_T_REGEX)
+ return search_line_type;
+
+ if (search->original.str->str[0] == '^')
+ search_line_type |= AT_START_LINE;
+
+ if (search->original.str->str[search->original.str->len - 1] == '$')
+ search_line_type |= AT_END_LINE;
+ return search_line_type;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Calculating the start position of next line.
+ *
+ * @param buf editor buffer object
+ * @param current_pos current position
+ * @param max_pos max position
+ * @param end_string_symbol end of line symbol
+ * @return start position of next line
+ */
+
+static off_t
+edit_calculate_start_of_next_line (const edit_buffer_t * buf, off_t current_pos, off_t max_pos,
+ char end_string_symbol)
+{
+ off_t i;
+
+ for (i = current_pos; i < max_pos; i++)
+ {
+ current_pos++;
+ if (edit_buffer_get_byte (buf, i) == end_string_symbol)
+ break;
+ }
+
+ return current_pos;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Calculating the end position of previous line.
+ *
+ * @param buf editor buffer object
+ * @param current_pos current position
+ * @param end_string_symbol end of line symbol
+ * @return end position of previous line
+ */
+
+static off_t
+edit_calculate_end_of_previous_line (const edit_buffer_t * buf, off_t current_pos,
+ char end_string_symbol)
+{
+ off_t i;
+
+ for (i = current_pos - 1; i >= 0; i--)
+ if (edit_buffer_get_byte (buf, i) == end_string_symbol)
+ break;
+
+ return i;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Calculating the start position of previous line.
+ *
+ * @param buf editor buffer object
+ * @param current_pos current position
+ * @param end_string_symbol end of line symbol
+ * @return start position of previous line
+ */
+
+static inline off_t
+edit_calculate_start_of_previous_line (const edit_buffer_t * buf, off_t current_pos,
+ char end_string_symbol)
+{
+ current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
+ current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
+
+ return (current_pos + 1);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Calculating the start position of current line.
+ *
+ * @param buf editor buffer object
+ * @param current_pos current position
+ * @param end_string_symbol end of line symbol
+ * @return start position of current line
+ */
+
+static inline off_t
+edit_calculate_start_of_current_line (const edit_buffer_t * buf, off_t current_pos,
+ char end_string_symbol)
+{
+ current_pos = edit_calculate_end_of_previous_line (buf, current_pos, end_string_symbol);
+
+ return (current_pos + 1);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Fixing (if needed) search start position if 'only in selection' option present.
+ *
+ * @param edit editor object
+ */
+
+static void
+edit_search_fix_search_start_if_selection (WEdit * edit)
+{
+ off_t start_mark = 0;
+ off_t end_mark = 0;
+
+ if (!edit_search_options.only_in_selection)
+ return;
+
+ if (!eval_marks (edit, &start_mark, &end_mark))
+ return;
+
+ if (edit_search_options.backwards)
+ {
+ if (edit->search_start > end_mark || edit->search_start <= start_mark)
+ edit->search_start = end_mark;
+ }
+ else
+ {
+ if (edit->search_start < start_mark || edit->search_start >= end_mark)
+ edit->search_start = start_mark;
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+edit_find (edit_search_status_msg_t * esm, gsize * len)
+{
+ WEdit *edit = esm->edit;
+ off_t search_start = edit->search_start;
+ off_t search_end;
+ off_t start_mark = 0;
+ off_t end_mark = edit->buffer.size;
+ char end_string_symbol;
+
+ end_string_symbol = edit_search_get_current_end_line_char (edit);
+
+ /* prepare for search */
+ if (edit_search_options.only_in_selection)
+ {
+ if (!eval_marks (edit, &start_mark, &end_mark))
+ {
+ mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
+ return FALSE;
+ }
+
+ /* fix the start and the end of search block positions */
+ if ((edit->search_line_type & AT_START_LINE) != 0
+ && (start_mark != 0
+ || edit_buffer_get_byte (&edit->buffer, start_mark - 1) != end_string_symbol))
+ start_mark =
+ edit_calculate_start_of_next_line (&edit->buffer, start_mark, edit->buffer.size,
+ end_string_symbol);
+
+ if ((edit->search_line_type & AT_END_LINE) != 0
+ && (end_mark - 1 != edit->buffer.size
+ || edit_buffer_get_byte (&edit->buffer, end_mark) != end_string_symbol))
+ end_mark =
+ edit_calculate_end_of_previous_line (&edit->buffer, end_mark, end_string_symbol);
+
+ if (start_mark >= end_mark)
+ {
+ mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
+ return FALSE;
+ }
+ }
+ else if (edit_search_options.backwards)
+ end_mark = MAX (1, edit->buffer.curs1) - 1;
+
+ /* search */
+ if (edit_search_options.backwards)
+ {
+ /* backward search */
+ search_end = end_mark;
+
+ if ((edit->search_line_type & AT_START_LINE) != 0)
+ search_start =
+ edit_calculate_start_of_current_line (&edit->buffer, search_start,
+ end_string_symbol);
+
+ while (search_start >= start_mark)
+ {
+ gboolean ok;
+
+ if (search_end > (off_t) (search_start + edit->search->original.str->len)
+ && mc_search_is_fixed_search_str (edit->search))
+ search_end = search_start + edit->search->original.str->len;
+
+ ok = mc_search_run (edit->search, (void *) esm, search_start, search_end, len);
+
+ if (ok && edit->search->normal_offset == search_start)
+ return TRUE;
+
+ /* We abort the search in case of a pattern error, or if the user aborts
+ the search. In other words: in all cases except "string not found". */
+ if (!ok && edit->search->error != MC_SEARCH_E_NOTFOUND)
+ return FALSE;
+
+ if ((edit->search_line_type & AT_START_LINE) != 0)
+ search_start =
+ edit_calculate_start_of_previous_line (&edit->buffer, search_start,
+ end_string_symbol);
+ else
+ search_start--;
+ }
+
+ mc_search_set_error (edit->search, MC_SEARCH_E_NOTFOUND, "%s", _(STR_E_NOTFOUND));
+ return FALSE;
+ }
+
+ /* forward search */
+ if ((edit->search_line_type & AT_START_LINE) != 0 && search_start != start_mark)
+ search_start =
+ edit_calculate_start_of_next_line (&edit->buffer, search_start, end_mark,
+ end_string_symbol);
+
+ return mc_search_run (edit->search, (void *) esm, search_start, end_mark, len);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static char *
+edit_replace_cmd__conv_to_display (const char *str)
+{
+#ifdef HAVE_CHARSET
+ GString *tmp;
+
+ tmp = str_convert_to_display (str);
+ if (tmp != NULL)
+ {
+ if (tmp->len != 0)
+ return g_string_free (tmp, FALSE);
+ g_string_free (tmp, TRUE);
+ }
+#endif
+ return g_strdup (str);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static char *
+edit_replace_cmd__conv_to_input (char *str)
+{
+#ifdef HAVE_CHARSET
+ GString *tmp;
+
+ tmp = str_convert_to_input (str);
+ if (tmp->len != 0)
+ return g_string_free (tmp, FALSE);
+ g_string_free (tmp, TRUE);
+#endif
+ return g_strdup (str);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_show_search_error (const WEdit * edit, const char *title)
+{
+ if (edit->search->error == MC_SEARCH_E_NOTFOUND)
+ edit_query_dialog (title, _(STR_E_NOTFOUND));
+ else if (edit->search->error_str != NULL)
+ edit_query_dialog (title, edit->search->error_str);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_do_search (WEdit * edit)
+{
+ edit_search_status_msg_t esm;
+ gsize len = 0;
+
+ /* This shouldn't happen */
+ assert (edit->search != NULL);
+
+ edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
+
+ esm.first = TRUE;
+ esm.edit = edit;
+ esm.offset = edit->search_start;
+
+ status_msg_init (STATUS_MSG (&esm), _("Search"), 1.0, simple_status_msg_init_cb,
+ edit_search_status_update_cb, NULL);
+
+ if (search_create_bookmark)
+ {
+ gboolean found = FALSE;
+ long l = 0, l_last = -1;
+ long q = 0;
+
+ search_create_bookmark = FALSE;
+ book_mark_flush (edit, -1);
+
+ while (mc_search_run (edit->search, (void *) &esm, q, edit->buffer.size, &len))
+ {
+ if (!found)
+ edit->search_start = edit->search->normal_offset;
+ found = TRUE;
+
+ l += edit_buffer_count_lines (&edit->buffer, q, edit->search->normal_offset);
+ if (l != l_last)
+ book_mark_insert (edit, l, BOOK_MARK_FOUND_COLOR);
+ l_last = l;
+ q = edit->search->normal_offset + 1;
+ }
+
+ if (!found)
+ edit_error_dialog (_("Search"), _(STR_E_NOTFOUND));
+ else
+ edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
+ }
+ else
+ {
+ if (edit->found_len != 0 && edit->search_start == edit->found_start + 1
+ && edit_search_options.backwards)
+ edit->search_start--;
+
+ if (edit->found_len != 0 && edit->search_start == edit->found_start - 1
+ && !edit_search_options.backwards)
+ edit->search_start++;
+
+ if (edit_find (&esm, &len))
+ {
+ edit->found_start = edit->search_start = edit->search->normal_offset;
+ edit->found_len = len;
+ edit->over_col = 0;
+ edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
+ edit_scroll_screen_over_cursor (edit);
+ if (edit_search_options.backwards)
+ edit->search_start--;
+ else
+ edit->search_start++;
+ }
+ else
+ {
+ edit->search_start = edit->buffer.curs1;
+ edit_show_search_error (edit, _("Search"));
+ }
+ }
+
+ status_msg_deinit (STATUS_MSG (&esm));
+
+ edit->force |= REDRAW_COMPLETELY;
+ edit_scroll_screen_over_cursor (edit);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+edit_search (WEdit * edit)
+{
+ if (edit_dialog_search_show (edit))
+ {
+ edit->search_line_type = edit_get_search_line_type (edit->search);
+ edit_search_fix_search_start_if_selection (edit);
+ edit_do_search (edit);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+gboolean
+edit_search_init (WEdit * edit, const char *str)
+{
+#ifdef HAVE_CHARSET
+ edit->search = mc_search_new (str, cp_source);
+#else
+ edit->search = mc_search_new (str, NULL);
+#endif
+
+ if (edit->search == NULL)
+ return FALSE;
+
+ edit->search->search_type = edit_search_options.type;
+#ifdef HAVE_CHARSET
+ edit->search->is_all_charsets = edit_search_options.all_codepages;
+#endif
+ edit->search->is_case_sensitive = edit_search_options.case_sens;
+ edit->search->whole_words = edit_search_options.whole_words;
+ edit->search->search_fn = edit_search_cmd_callback;
+ edit->search->update_fn = edit_search_update_callback;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_search_deinit (WEdit * edit)
+{
+ mc_search_free (edit->search);
+ g_free (edit->last_search_string);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+mc_search_cbret_t
+edit_search_cmd_callback (const void *user_data, gsize char_offset, int *current_char)
+{
+ WEdit *edit = ((const edit_search_status_msg_t *) user_data)->edit;
+
+ *current_char = edit_buffer_get_byte (&edit->buffer, (off_t) char_offset);
+
+ return MC_SEARCH_CB_OK;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+mc_search_cbret_t
+edit_search_update_callback (const void *user_data, gsize char_offset)
+{
+ status_msg_t *sm = STATUS_MSG (user_data);
+
+ ((edit_search_status_msg_t *) sm)->offset = (off_t) char_offset;
+
+ return (sm->update (sm) == B_CANCEL ? MC_SEARCH_CB_ABORT : MC_SEARCH_CB_OK);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+int
+edit_search_status_update_cb (status_msg_t * sm)
+{
+ simple_status_msg_t *ssm = SIMPLE_STATUS_MSG (sm);
+ edit_search_status_msg_t *esm = (edit_search_status_msg_t *) sm;
+ Widget *wd = WIDGET (sm->dlg);
+
+ if (verbose)
+ label_set_textv (ssm->label, _("Searching %s: %3d%%"), esm->edit->last_search_string,
+ edit_buffer_calc_percent (&esm->edit->buffer, esm->offset));
+ else
+ label_set_textv (ssm->label, _("Searching %s"), esm->edit->last_search_string);
+
+ if (esm->first)
+ {
+ Widget *lw = WIDGET (ssm->label);
+ WRect r;
+
+ r = wd->rect;
+ r.cols = MAX (r.cols, lw->rect.cols + 6);
+ widget_set_size_rect (wd, &r);
+ r = lw->rect;
+ r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2;
+ widget_set_size_rect (lw, &r);
+ esm->first = FALSE;
+ }
+
+ return status_msg_common_update (sm);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_search_cmd (WEdit * edit, gboolean again)
+{
+ if (!again)
+ edit_search (edit);
+ else if (edit->last_search_string != NULL)
+ edit_do_search (edit);
+ else
+ {
+ /* find last search string in history */
+ GList *history;
+
+ history = mc_config_history_get (MC_HISTORY_SHARED_SEARCH);
+ if (history != NULL)
+ {
+ /* FIXME: is it possible that history->data == NULL? */
+ edit->last_search_string = (char *) history->data;
+ history->data = NULL;
+ history = g_list_first (history);
+ g_list_free_full (history, g_free);
+
+ if (edit_search_init (edit, edit->last_search_string))
+ {
+ edit_do_search (edit);
+ return;
+ }
+
+ /* found, but cannot init search */
+ MC_PTR_FREE (edit->last_search_string);
+ }
+
+ /* if not... then ask for an expression */
+ edit_search (edit);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/** call with edit = 0 before shutdown to close memory leaks */
+
+void
+edit_replace_cmd (WEdit * edit, gboolean again)
+{
+ /* 1 = search string, 2 = replace with */
+ static char *saved1 = NULL; /* saved default[123] */
+ static char *saved2 = NULL;
+ char *input1 = NULL; /* user input from the dialog */
+ char *input2 = NULL;
+ GString *input2_str = NULL;
+ char *disp1 = NULL;
+ char *disp2 = NULL;
+ long times_replaced = 0;
+ gboolean once_found = FALSE;
+ edit_search_status_msg_t esm;
+
+ if (edit == NULL)
+ {
+ MC_PTR_FREE (saved1);
+ MC_PTR_FREE (saved2);
+ return;
+ }
+
+ edit->force |= REDRAW_COMPLETELY;
+
+ if (again && saved1 == NULL && saved2 == NULL)
+ again = FALSE;
+
+ if (again)
+ {
+ input1 = g_strdup (saved1 != NULL ? saved1 : "");
+ input2 = g_strdup (saved2 != NULL ? saved2 : "");
+ }
+ else
+ {
+ char *tmp_inp1, *tmp_inp2;
+
+ disp1 = edit_replace_cmd__conv_to_display (saved1 != NULL ? saved1 : "");
+ disp2 = edit_replace_cmd__conv_to_display (saved2 != NULL ? saved2 : "");
+
+ edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
+
+ edit_dialog_replace_show (edit, disp1, disp2, &input1, &input2);
+
+ g_free (disp1);
+ g_free (disp2);
+
+ if (input1 == NULL || *input1 == '\0')
+ {
+ edit->force = REDRAW_COMPLETELY;
+ goto cleanup;
+ }
+
+ tmp_inp1 = input1;
+ tmp_inp2 = input2;
+ input1 = edit_replace_cmd__conv_to_input (input1);
+ input2 = edit_replace_cmd__conv_to_input (input2);
+ g_free (tmp_inp1);
+ g_free (tmp_inp2);
+
+ g_free (saved1);
+ saved1 = g_strdup (input1);
+ g_free (saved2);
+ saved2 = g_strdup (input2);
+
+ mc_search_free (edit->search);
+ edit->search = NULL;
+ }
+
+ input2_str = g_string_new (input2);
+
+ if (edit->search == NULL)
+ {
+ if (edit_search_init (edit, input1))
+ edit_search_fix_search_start_if_selection (edit);
+ else
+ {
+ edit->search_start = edit->buffer.curs1;
+ goto cleanup;
+ }
+ }
+
+ if (edit->found_len != 0 && edit->search_start == edit->found_start + 1
+ && edit_search_options.backwards)
+ edit->search_start--;
+
+ if (edit->found_len != 0 && edit->search_start == edit->found_start - 1
+ && !edit_search_options.backwards)
+ edit->search_start++;
+
+ esm.first = TRUE;
+ esm.edit = edit;
+ esm.offset = edit->search_start;
+
+ status_msg_init (STATUS_MSG (&esm), _("Search"), 1.0, simple_status_msg_init_cb,
+ edit_search_status_update_cb, NULL);
+
+ do
+ {
+ gsize len = 0;
+
+ if (!edit_find (&esm, &len))
+ {
+ if (!(edit->search->error == MC_SEARCH_E_OK ||
+ (once_found && edit->search->error == MC_SEARCH_E_NOTFOUND)))
+ edit_show_search_error (edit, _("Search"));
+ break;
+ }
+
+ once_found = TRUE;
+
+ edit->search_start = edit->search->normal_offset;
+ /* returns negative on not found or error in pattern */
+
+ if (edit->search_start >= 0 && edit->search_start < edit->buffer.size)
+ {
+ gsize i;
+ GString *repl_str;
+
+ edit->found_start = edit->search_start;
+ edit->found_len = len;
+
+ edit_cursor_move (edit, edit->search_start - edit->buffer.curs1);
+ edit_scroll_screen_over_cursor (edit);
+
+ if (edit->replace_mode == 0)
+ {
+ long l;
+ int prompt;
+
+ l = edit->curs_row - WIDGET (edit)->rect.lines / 3;
+ if (l > 0)
+ edit_scroll_downward (edit, l);
+ if (l < 0)
+ edit_scroll_upward (edit, -l);
+
+ edit_scroll_screen_over_cursor (edit);
+ edit->force |= REDRAW_PAGE;
+ edit_render_keypress (edit);
+
+ /*so that undo stops at each query */
+ edit_push_key_press (edit);
+ /* and prompt 2/3 down */
+ disp1 = edit_replace_cmd__conv_to_display (saved1);
+ disp2 = edit_replace_cmd__conv_to_display (saved2);
+ prompt = edit_dialog_replace_prompt_show (edit, disp1, disp2, -1, -1);
+ g_free (disp1);
+ g_free (disp2);
+
+ if (prompt == B_REPLACE_ALL)
+ edit->replace_mode = 1;
+ else if (prompt == B_SKIP_REPLACE)
+ {
+ if (edit_search_options.backwards)
+ edit->search_start--;
+ else
+ edit->search_start++;
+ continue; /* loop */
+ }
+ else if (prompt == B_CANCEL)
+ {
+ edit->replace_mode = -1;
+ break; /* loop */
+ }
+ }
+
+ repl_str = mc_search_prepare_replace_str (edit->search, input2_str);
+
+ if (edit->search->error != MC_SEARCH_E_OK)
+ {
+ edit_show_search_error (edit, _("Replace"));
+ if (repl_str != NULL)
+ g_string_free (repl_str, TRUE);
+ break;
+ }
+
+ /* delete then insert new */
+ for (i = 0; i < len; i++)
+ edit_delete (edit, TRUE);
+
+ for (i = 0; i < repl_str->len; i++)
+ edit_insert (edit, repl_str->str[i]);
+
+ edit->found_len = repl_str->len;
+ g_string_free (repl_str, TRUE);
+ times_replaced++;
+
+ /* so that we don't find the same string again */
+ if (edit_search_options.backwards)
+ edit->search_start--;
+ else
+ {
+ edit->search_start += edit->found_len + (len == 0 ? 1 : 0);
+
+ if (edit->search_start >= edit->buffer.size)
+ break;
+ }
+
+ edit_scroll_screen_over_cursor (edit);
+ }
+ else
+ {
+ /* try and find from right here for next search */
+ edit->search_start = edit->buffer.curs1;
+ edit_update_curs_col (edit);
+
+ edit->force |= REDRAW_PAGE;
+ edit_render_keypress (edit);
+
+ if (times_replaced == 0)
+ query_dialog (_("Replace"), _(STR_E_NOTFOUND), D_NORMAL, 1, _("&OK"));
+ break;
+ }
+ }
+ while (edit->replace_mode >= 0);
+
+ status_msg_deinit (STATUS_MSG (&esm));
+ edit_scroll_screen_over_cursor (edit);
+ edit->force |= REDRAW_COMPLETELY;
+ edit_render_keypress (edit);
+
+ if (edit->replace_mode == 1 && times_replaced != 0)
+ message (D_NORMAL, _("Replace"), _("%ld replacements made"), times_replaced);
+
+ cleanup:
+ g_free (input1);
+ g_free (input2);
+ if (input2_str != NULL)
+ g_string_free (input2_str, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editsearch.h
^
|
@@ -0,0 +1,36 @@
+#ifndef MC__EDIT_SEARCH_H
+#define MC__EDIT_SEARCH_H 1
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/*** enums ***************************************************************************************/
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+typedef struct
+{
+ simple_status_msg_t status_msg; /* base class */
+
+ gboolean first;
+ WEdit *edit;
+ off_t offset;
+} edit_search_status_msg_t;
+
+/*** global variables defined in .c file *********************************************************/
+
+/*** declarations of public functions ************************************************************/
+
+gboolean edit_search_init (WEdit * edit, const char *s);
+void edit_search_deinit (WEdit * edit);
+
+mc_search_cbret_t edit_search_cmd_callback (const void *user_data, gsize char_offset,
+ int *current_char);
+mc_search_cbret_t edit_search_update_callback (const void *user_data, gsize char_offset);
+int edit_search_status_update_cb (status_msg_t * sm);
+
+void edit_search_cmd (WEdit * edit, gboolean again);
+void edit_replace_cmd (WEdit * edit, gboolean again);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__EDIT_SEARCH_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editwidget.c
^
|
@@ -1,12 +1,12 @@
/*
Editor initialisation and callback handler.
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer, 1996, 1997
- Andrew Borodin <aborodin@vmail.ru> 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru> 2012-2022
This file is part of the Midnight Commander.
@@ -55,7 +55,7 @@
#include "lib/charsets.h"
#endif
-#include "src/keybind-defaults.h" /* keybind_lookup_keymap_command() */
+#include "src/keymap.h" /* keybind_lookup_keymap_command() */
#include "src/setup.h" /* home_dir */
#include "src/execute.h" /* toggle_subshell() */
#include "src/filemanager/cmd.h" /* save_setup_cmd() */
@@ -64,6 +64,7 @@
#include "edit-impl.h"
#include "editwidget.h"
+#include "editmacros.h" /* edit_execute_macro() */
#ifdef HAVE_ASPELL
#include "spell.h"
#endif
@@ -96,7 +97,9 @@
static void
edit_dlg_init (void)
{
- if (edit_dlg_init_refcounter == 0)
+ edit_dlg_init_refcounter++;
+
+ if (edit_dlg_init_refcounter == 1)
{
edit_window_state_char = mc_skin_get ("widget-editor", "window-state-char", "*");
edit_window_close_char = mc_skin_get ("widget-editor", "window-close-char", "X");
@@ -105,8 +108,6 @@
aspell_init ();
#endif
}
-
- edit_dlg_init_refcounter++;
}
/* --------------------------------------------------------------------------------------------- */
@@ -117,10 +118,7 @@
static void
edit_dlg_deinit (void)
{
- if (edit_dlg_init_refcounter != 0)
- edit_dlg_init_refcounter--;
-
- if (edit_dlg_init_refcounter == 0)
+ if (edit_dlg_init_refcounter == 1)
{
g_free (edit_window_state_char);
g_free (edit_window_close_char);
@@ -129,6 +127,9 @@
aspell_clean ();
#endif
}
+
+ if (edit_dlg_init_refcounter != 0)
+ edit_dlg_init_refcounter--;
}
/* --------------------------------------------------------------------------------------------- */
@@ -139,31 +140,40 @@
static void
edit_about (void)
{
- quick_widget_t quick_widgets[] = {
- /* *INDENT-OFF* */
- QUICK_LABEL ("MCEdit " VERSION, NULL),
- QUICK_SEPARATOR (TRUE),
- QUICK_LABEL (N_("A user friendly text editor\n"
- "written for the Midnight Commander."), NULL),
- QUICK_SEPARATOR (FALSE),
- QUICK_LABEL (N_("Copyright (C) 1996-2020 the Free Software Foundation"), NULL),
- QUICK_START_BUTTONS (TRUE, TRUE),
+ char *ver;
+
+ ver = g_strdup_printf ("MCEdit %s", mc_global.mc_version);
+
+ {
+ quick_widget_t quick_widgets[] = {
+ /* *INDENT-OFF* */
+ QUICK_LABEL (ver, NULL),
+ QUICK_SEPARATOR (TRUE),
+ QUICK_LABEL (N_("A user friendly text editor\n"
+ "written for the Midnight Commander."), NULL),
+ QUICK_SEPARATOR (FALSE),
+ QUICK_LABEL (N_("Copyright (C) 1996-2022 the Free Software Foundation"), NULL),
+ QUICK_START_BUTTONS (TRUE, TRUE),
QUICK_BUTTON (N_("&OK"), B_ENTER, NULL, NULL),
- QUICK_END
- /* *INDENT-ON* */
- };
-
- quick_dialog_t qdlg = {
- -1, -1, 40,
- N_("About"), "[Internal File Editor]",
- quick_widgets, NULL, NULL
- };
-
- quick_widgets[0].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
- quick_widgets[2].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
- quick_widgets[4].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
+ QUICK_END
+ /* *INDENT-ON* */
+ };
+
+ WRect r = { -1, -1, 0, 40 };
+
+ quick_dialog_t qdlg = {
+ r, N_("About"), "[Internal File Editor]",
+ quick_widgets, NULL, NULL
+ };
+
+ quick_widgets[0].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
+ quick_widgets[2].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
+ quick_widgets[4].pos_flags = WPOS_KEEP_TOP | WPOS_CENTER_HORZ;
- (void) quick_dialog (&qdlg);
+ (void) quick_dialog (&qdlg);
+ }
+
+ g_free (ver);
}
/* --------------------------------------------------------------------------------------------- */
@@ -207,8 +217,10 @@
static void
edit_window_move (WEdit * edit, long command)
{
- Widget *w = WIDGET (edit);
- Widget *wh = WIDGET (w->owner);
+ Widget *we = WIDGET (edit);
+ Widget *wo = WIDGET (we->owner);
+ WRect *w = &we->rect;
+ const WRect *wh = &wo->rect;
switch (command)
{
@@ -221,7 +233,7 @@
w->y++;
break;
case CK_Left:
- if (w->x + w->cols > wh->x)
+ if (w->x + wh->cols > wh->x)
w->x--;
break;
case CK_Right:
@@ -233,7 +245,7 @@
}
edit->force |= REDRAW_PAGE;
- widget_draw (WIDGET (w->owner));
+ widget_draw (wo);
}
/* --------------------------------------------------------------------------------------------- */
@@ -247,8 +259,10 @@
static void
edit_window_resize (WEdit * edit, long command)
{
- Widget *w = WIDGET (edit);
- Widget *wh = WIDGET (w->owner);
+ Widget *we = WIDGET (edit);
+ Widget *wo = WIDGET (we->owner);
+ WRect *w = &we->rect;
+ const WRect *wh = &wo->rect;
switch (command)
{
@@ -273,7 +287,7 @@
}
edit->force |= REDRAW_COMPLETELY;
- widget_draw (WIDGET (w->owner));
+ widget_draw (wo);
}
/* --------------------------------------------------------------------------------------------- */
@@ -323,7 +337,8 @@
vfs_path_as_str (e->filename_vpath));
listbox_add_item (listbox->list, LISTBOX_APPEND_AT_END, get_hotkey (i++),
- str_term_trim (fname, WIDGET (listbox->list)->cols - 2), e, FALSE);
+ str_term_trim (fname, WIDGET (listbox->list)->rect.cols - 2), e,
+ FALSE);
g_free (fname);
}
@@ -382,13 +397,12 @@
edit_dialog_command_execute (WDialog * h, long command)
{
WGroup *g = GROUP (h);
- Widget *wh = WIDGET (h);
cb_ret_t ret = MSG_HANDLED;
switch (command)
{
case CK_EditNew:
- edit_add_window (h, wh->y + 1, wh->x, wh->lines - 2, wh->cols, NULL, 0);
+ edit_load_file_from_filename (h, NULL, 0);
break;
case CK_EditFile:
edit_load_cmd (h);
@@ -485,7 +499,7 @@
/* --------------------------------------------------------------------------------------------- */
/*
* Translate the keycode into either 'command' or 'char_for_insertion'.
- * 'command' is one of the editor commands from cmddef.h.
+ * 'command' is one of the editor commands from lib/keybind.h.
*/
static gboolean
@@ -507,12 +521,12 @@
#else
int c;
- if (edit->charpoint >= 4)
+ if (edit->charpoint >= MB_LEN_MAX)
{
edit->charpoint = 0;
edit->charbuf[edit->charpoint] = '\0';
}
- if (edit->charpoint < 4)
+ if (edit->charpoint < MB_LEN_MAX)
{
edit->charbuf[edit->charpoint++] = x_key;
edit->charbuf[edit->charpoint] = '\0';
@@ -521,7 +535,7 @@
/* input from 8-bit locale */
if (!mc_global.utf8_display)
{
- /* source in 8-bit codeset */
+ /* source is in 8-bit codeset */
c = convert_from_input_c (x_key);
if (is_printable (c))
@@ -547,7 +561,7 @@
if (edit->utf8)
{
- /* source in UTF-8 codeset */
+ /* source is in UTF-8 codeset */
if (res < 0)
{
char_for_insertion = x_key;
@@ -567,7 +581,7 @@
/* 8-bit source */
if (res < 0)
{
- /* not finised multibyte input (in meddle multibyte utf-8 char) */
+ /* not finished multibyte input (we're in the middle of multibyte utf-8 char) */
goto fin;
}
@@ -580,7 +594,7 @@
goto fin;
}
- /* unprinteble utf input, skip it */
+ /* non-printable utf-8 input, skip it */
edit->charbuf[0] = '\0';
edit->charpoint = 0;
}
@@ -822,7 +836,7 @@
edit_quit (h);
return MSG_HANDLED;
- case MSG_END:
+ case MSG_DESTROY:
edit_dlg_deinit ();
return MSG_HANDLED;
@@ -872,7 +886,7 @@
top = l;
/* Handle fullscreen/close buttons in the top line */
- x = w->cols - 6;
+ x = w->rect.cols - 6;
if (top != NULL && event->x >= x)
{
@@ -910,17 +924,10 @@
switch (msg)
{
case MSG_INIT:
- {
- Widget *wo = WIDGET (w->owner);
-
- w->y = wo->y + 1;
- w->x = wo->x;
- w->lines = wo->lines - 2;
- w->cols = wo->cols;
- w->pos_flags |= WPOS_KEEP_ALL;
-
- return MSG_HANDLED;
- }
+ w->rect = WIDGET (w->owner)->rect;
+ rect_grow (&w->rect, -1, 0);
+ w->pos_flags |= WPOS_KEEP_ALL;
+ return MSG_HANDLED;
default:
return background_callback (w, sender, msg, parm, data);
@@ -1006,7 +1013,8 @@
edit_mouse_handle_move_resize (Widget * w, mouse_msg_t msg, mouse_event_t * event)
{
WEdit *edit = (WEdit *) (w);
- Widget *h = WIDGET (w->owner);
+ WRect *r = &w->rect;
+ const WRect *h = &CONST_WIDGET (w->owner)->rect;
int global_x, global_y;
if (msg == MSG_MOUSE_UP)
@@ -1028,8 +1036,8 @@
return;
/* Convert point to global coordinates for easier calculations. */
- global_x = event->x + w->x;
- global_y = event->y + w->y;
+ global_x = event->x + r->x;
+ global_y = event->y + r->y;
/* Clamp the point to the dialog's client area. */
global_y = CLAMP (global_y, h->y + 1, h->y + h->lines - 2); /* Status line, buttonbar */
@@ -1037,13 +1045,13 @@
if (edit->drag_state == MCEDIT_DRAG_MOVE)
{
- w->y = global_y;
- w->x = global_x - edit->drag_state_start;
+ r->y = global_y;
+ r->x = global_x - edit->drag_state_start;
}
else if (edit->drag_state == MCEDIT_DRAG_RESIZE)
{
- w->lines = MAX (WINDOW_MIN_LINES, global_y - w->y + 1);
- w->cols = MAX (WINDOW_MIN_COLS, global_x - w->x + 1);
+ r->lines = MAX (WINDOW_MIN_LINES, global_y - r->y + 1);
+ r->cols = MAX (WINDOW_MIN_COLS, global_x - r->x + 1);
}
edit->force |= REDRAW_COMPLETELY; /* Not really needed as WEdit's MSG_DRAW already does this. */
@@ -1070,7 +1078,7 @@
/* location of 'Close' and 'Toggle fullscreen' pictograms */
int close_x, toggle_fullscreen_x;
- close_x = (w->cols - 1) - dx - 1;
+ close_x = (w->rect.cols - 1) - dx - 1;
toggle_fullscreen_x = close_x - 3;
if (edit->drag_state != MCEDIT_DRAG_NONE)
@@ -1084,7 +1092,7 @@
* system channel it to the overlapping buttonbar instead. We have to do
* this because a WEdit has the WOP_TOP_SELECT flag, which makes it above
* the buttonbar in Z-order. */
- if (msg == MSG_MOUSE_DOWN && (event->y + w->y == LINES - 1))
+ if (msg == MSG_MOUSE_DOWN && (event->y + w->rect.y == LINES - 1))
{
event->result.abort = TRUE;
return;
@@ -1115,7 +1123,7 @@
break;
}
- if (event->y == w->lines - 1 && event->x == w->cols - 1)
+ if (event->y == w->rect.lines - 1 && event->x == w->rect.cols - 1)
{
/* bottom-right corner -- start window resize */
edit_execute_cmd (edit, CK_WindowResize, -1);
@@ -1246,15 +1254,16 @@
edit_dlg->bg =
WIDGET (background_new
- (1, 0, wd->lines - 2, wd->cols, EDITOR_BACKGROUND, ' ', edit_dialog_bg_callback));
+ (1, 0, wd->rect.lines - 2, wd->rect.cols, EDITOR_BACKGROUND, ' ',
+ edit_dialog_bg_callback));
group_add_widget (g, edit_dlg->bg);
- menubar = menubar_new (NULL, TRUE);
+ menubar = menubar_new (NULL);
w = WIDGET (menubar);
group_add_widget_autopos (g, w, w->pos_flags, NULL);
edit_init_menu (menubar);
- w = WIDGET (buttonbar_new (TRUE));
+ w = WIDGET (buttonbar_new ());
group_add_widget_autopos (g, w, w->pos_flags, NULL);
for (file = files; file != NULL; file = g_list_next (file))
@@ -1262,8 +1271,7 @@
mcedit_arg_t *f = (mcedit_arg_t *) file->data;
gboolean f_ok;
- f_ok = edit_add_window (edit_dlg, wd->y + 1, wd->x, wd->lines - 2, wd->cols, f->file_vpath,
- f->line_number);
+ f_ok = edit_load_file_from_filename (edit_dlg, f->file_vpath, f->line_number);
/* at least one file has been opened succefully */
ok = ok || f_ok;
}
@@ -1272,7 +1280,7 @@
dlg_run (edit_dlg);
if (!ok || widget_get_state (wd, WST_CLOSED))
- dlg_destroy (edit_dlg);
+ widget_destroy (wd);
return ok;
}
@@ -1343,9 +1351,7 @@
void
edit_save_size (WEdit * edit)
{
- Widget *w = WIDGET (edit);
-
- rect_init (&edit->loc_prev, w->y, w->x, w->lines, w->cols);
+ edit->loc_prev = WIDGET (edit)->rect;
}
/* --------------------------------------------------------------------------------------------- */
@@ -1364,12 +1370,12 @@
*/
gboolean
-edit_add_window (WDialog * h, int y, int x, int lines, int cols, const vfs_path_t * f, long fline)
+edit_add_window (WDialog * h, const WRect * r, const vfs_path_t * f, long fline)
{
WEdit *edit;
Widget *w;
- edit = edit_init (NULL, y, x, lines, cols, f, fline);
+ edit = edit_init (NULL, r, f, fline);
if (edit == NULL)
return FALSE;
@@ -1421,7 +1427,7 @@
* make a subsequent mouse drag pull the frame from its middle.
* (We can instead choose '0' to pull it from the corner.)
*/
- edit->drag_state_start = w->cols / 2;
+ edit->drag_state_start = w->rect.cols / 2;
ret = TRUE;
break;
case CK_WindowResize:
@@ -1526,10 +1532,12 @@
}
else
{
- Widget *h = WIDGET (w->owner);
+ WRect r;
edit_save_size (edit);
- widget_set_size (w, h->y + 1, h->x, h->lines - 2, h->cols);
+ r = WIDGET (w->owner)->rect;
+ rect_grow (&r, -1, 0);
+ widget_set_size_rect (w, &r);
/* follow screen size on resize */
w->pos_flags = WPOS_KEEP_ALL;
edit->force |= REDRAW_PAGE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/editwidget.h
^
|
@@ -5,6 +5,8 @@
#ifndef MC__EDIT_WIDGET_H
#define MC__EDIT_WIDGET_H
+#include <limits.h> /* MB_LEN_MAX */
+
#include "lib/search.h" /* mc_search_t */
#include "lib/widget.h" /* Widget */
@@ -80,7 +82,7 @@
/* multibyte support */
gboolean utf8; /* It's multibyte file codeset */
GIConv converter;
- char charbuf[4 + 1];
+ char charbuf[MB_LEN_MAX + 1];
int charpoint;
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/etags.c
^
|
@@ -6,12 +6,13 @@
or, if etags utility not installed:
$ find . -type f -name "*.[ch]" | ctags --c-kinds=+p --fields=+iaS --extra=+q -e -L-
- Copyright (C) 2009-2020
+ Copyright (C) 2009-2022
Free Software Foundation, Inc.
Written by:
Ilia Maslakov <il.smind@gmail.com>, 2009
Slava Zanko <slavazanko@gmail.com>, 2009
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2022
This file is part of the Midnight Commander.
@@ -31,15 +32,19 @@
#include <config.h>
-#include <stdlib.h>
+#include <ctype.h>
#include <stdio.h>
-#include <inttypes.h>
+#include <stdlib.h>
#include <string.h>
-#include <ctype.h>
#include "lib/global.h"
+#include "lib/fileloc.h" /* TAGS_NAME */
+#include "lib/tty/tty.h" /* LINES, COLS */
+#include "lib/strutil.h"
#include "lib/util.h" /* canonicalize_pathname() */
+#include "editwidget.h"
+
#include "etags.h"
/*** global variables ****************************************************************************/
@@ -50,9 +55,25 @@
/*** file scope variables ************************************************************************/
+static int def_max_width;
+
+/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
+static void
+etags_hash_free (gpointer data)
+{
+ etags_hash_t *hash = (etags_hash_t *) data;
+
+ g_free (hash->filename);
+ g_free (hash->fullpath);
+ g_free (hash->short_define);
+ g_free (hash);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
static gboolean
parse_define (const char *buf, char **long_name, char **short_name, long *line)
{
@@ -62,16 +83,15 @@
in_longname,
in_shortname,
in_shortname_first_char,
- in_line, finish
+ in_line,
+ finish
} def_state = in_longname;
/* *INDENT-ON* */
- static char longdef[LONG_DEF_LEN];
- static char shortdef[SHORT_DEF_LEN];
- static char linedef[LINE_DEF_LEN];
- int nlong = 0;
- int nshort = 0;
- int nline = 0;
+ GString *longdef = NULL;
+ GString *shortdef = NULL;
+ GString *linedef = NULL;
+
char c = *buf;
while (!(c == '\0' || c == '\n'))
@@ -80,98 +100,99 @@
{
case in_longname:
if (c == 0x01)
- {
def_state = in_line;
- }
else if (c == 0x7F)
- {
def_state = in_shortname;
- }
else
{
- if (nlong < LONG_DEF_LEN - 1)
- {
- longdef[nlong++] = c;
- }
+ if (longdef == NULL)
+ longdef = g_string_sized_new (32);
+
+ g_string_append_c (longdef, c);
}
break;
+
case in_shortname_first_char:
if (isdigit (c))
{
- nshort = 0;
+ if (shortdef == NULL)
+ shortdef = g_string_sized_new (32);
+ else
+ g_string_set_size (shortdef, 0);
+
buf--;
def_state = in_line;
}
else if (c == 0x01)
- {
def_state = in_line;
- }
else
{
- if (nshort < SHORT_DEF_LEN - 1)
- {
- shortdef[nshort++] = c;
- def_state = in_shortname;
- }
+ if (shortdef == NULL)
+ shortdef = g_string_sized_new (32);
+
+ g_string_append_c (shortdef, c);
+ def_state = in_shortname;
}
break;
+
case in_shortname:
if (c == 0x01)
- {
def_state = in_line;
- }
else if (c == '\n')
- {
def_state = finish;
- }
else
{
- if (nshort < SHORT_DEF_LEN - 1)
- {
- shortdef[nshort++] = c;
- }
+ if (shortdef == NULL)
+ shortdef = g_string_sized_new (32);
+
+ g_string_append_c (shortdef, c);
}
break;
+
case in_line:
if (c == ',' || c == '\n')
- {
def_state = finish;
- }
else if (isdigit (c))
{
- if (nline < LINE_DEF_LEN - 1)
- {
- linedef[nline++] = c;
- }
+ if (linedef == NULL)
+ linedef = g_string_sized_new (32);
+
+ g_string_append_c (linedef, c);
}
break;
+
case finish:
- longdef[nlong] = '\0';
- shortdef[nshort] = '\0';
- linedef[nline] = '\0';
- *long_name = longdef;
- *short_name = shortdef;
- *line = atol (linedef);
+ *long_name = longdef == NULL ? NULL : g_string_free (longdef, FALSE);
+ *short_name = shortdef == NULL ? NULL : g_string_free (shortdef, FALSE);
+
+ if (linedef == NULL)
+ *line = 0;
+ else
+ {
+ *line = atol (linedef->str);
+ g_string_free (linedef, TRUE);
+ }
return TRUE;
+
default:
break;
}
+
buf++;
c = *buf;
}
+
*long_name = NULL;
*short_name = NULL;
*line = 0;
+
return FALSE;
}
/* --------------------------------------------------------------------------------------------- */
-/*** public functions ****************************************************************************/
-/* --------------------------------------------------------------------------------------------- */
-int
-etags_set_definition_hash (const char *tagfile, const char *start_path,
- const char *match_func, etags_hash_t * def_hash)
+static GPtrArray *
+etags_set_definition_hash (const char *tagfile, const char *start_path, const char *match_func)
{
/* *INDENT-OFF* */
enum
@@ -184,30 +205,25 @@
FILE *f;
char buf[BUF_LARGE];
-
- char *chekedstr = NULL;
-
- int num = 0; /* returned value */
char *filename = NULL;
+ GPtrArray *ret = NULL;
- if (!match_func || !tagfile)
- return 0;
+ if (match_func == NULL || tagfile == NULL)
+ return NULL;
/* open file with positions */
f = fopen (tagfile, "r");
if (f == NULL)
- return 0;
+ return NULL;
- while (fgets (buf, sizeof (buf), f))
- {
+ while (fgets (buf, sizeof (buf), f) != NULL)
switch (state)
{
case start:
if (buf[0] == 0x0C)
- {
state = in_filename;
- }
break;
+
case in_filename:
{
size_t pos;
@@ -218,43 +234,234 @@
state = in_define;
break;
}
+
case in_define:
if (buf[0] == 0x0C)
- {
state = in_filename;
- break;
- }
- /* check if the filename matches the define pos */
- chekedstr = strstr (buf, match_func);
- if (chekedstr)
- {
- char *longname = NULL;
- char *shortname = NULL;
- long line = 0;
+ else
+ {
+ char *chekedstr;
- parse_define (chekedstr, &longname, &shortname, &line);
- if (num < MAX_DEFINITIONS - 1)
+ /* check if the filename matches the define pos */
+ chekedstr = strstr (buf, match_func);
+ if (chekedstr != NULL)
{
- def_hash[num].filename_len = strlen (filename);
- def_hash[num].fullpath =
- mc_build_filename (start_path, filename, (char *) NULL);
-
- canonicalize_pathname (def_hash[num].fullpath);
- def_hash[num].filename = g_strdup (filename);
- def_hash[num].short_define = g_strdup (shortname ? shortname : longname);
- def_hash[num].line = line;
- num++;
+ char *longname = NULL;
+ char *shortname = NULL;
+ etags_hash_t *def_hash;
+
+ def_hash = g_new (etags_hash_t, 1);
+
+ def_hash->fullpath = mc_build_filename (start_path, filename, (char *) NULL);
+ canonicalize_pathname (def_hash->fullpath);
+ def_hash->filename = g_strdup (filename);
+
+ def_hash->line = 0;
+
+ parse_define (chekedstr, &longname, &shortname, &def_hash->line);
+
+ if (shortname != NULL && *shortname != '\0')
+ {
+ def_hash->short_define = shortname;
+ g_free (longname);
+ }
+ else
+ {
+ def_hash->short_define = longname;
+ g_free (shortname);
+ }
+
+ if (ret == NULL)
+ ret = g_ptr_array_new_with_free_func (etags_hash_free);
+
+ g_ptr_array_add (ret, def_hash);
}
}
break;
+
default:
break;
}
- }
g_free (filename);
fclose (f);
- return num;
+
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+editcmd_dialog_select_definition_add (gpointer data, gpointer user_data)
+{
+ etags_hash_t *def_hash = (etags_hash_t *) data;
+ WListbox *def_list = (WListbox *) user_data;
+ char *label_def;
+ int def_width;
+
+ label_def =
+ g_strdup_printf ("%s -> %s:%ld", def_hash->short_define, def_hash->filename,
+ def_hash->line);
+ listbox_add_item (def_list, LISTBOX_APPEND_AT_END, 0, label_def, def_hash, FALSE);
+ def_width = str_term_width1 (label_def);
+ g_free (label_def);
+ def_max_width = MAX (def_max_width, def_width);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/* let the user select where function definition */
+
+static void
+editcmd_dialog_select_definition_show (WEdit * edit, char *match_expr, GPtrArray * def_hash)
+{
+ const WRect *w = &CONST_WIDGET (edit)->rect;
+ int start_x, start_y, offset;
+ char *curr = NULL;
+ WDialog *def_dlg;
+ WListbox *def_list;
+ int def_dlg_h; /* dialog height */
+ int def_dlg_w; /* dialog width */
+
+ /* calculate the dialog metrics */
+ def_dlg_h = def_hash->len + 2;
+ def_dlg_w = COLS - 2; /* will be clarified later */
+ start_x = w->x + edit->curs_col + edit->start_col + EDIT_TEXT_HORIZONTAL_OFFSET +
+ (edit->fullscreen ? 0 : 1) + option_line_state_width;
+ start_y = w->y + edit->curs_row + EDIT_TEXT_VERTICAL_OFFSET + (edit->fullscreen ? 0 : 1) + 1;
+
+ if (start_x < 0)
+ start_x = 0;
+ if (start_x < w->x + 1)
+ start_x = w->x + 1 + option_line_state_width;
+
+ if (def_dlg_h > LINES - 2)
+ def_dlg_h = LINES - 2;
+
+ offset = start_y + def_dlg_h - LINES;
+ if (offset > 0)
+ start_y -= (offset + 1);
+
+ def_dlg = dlg_create (TRUE, start_y, start_x, def_dlg_h, def_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
+ dialog_colors, NULL, NULL, "[Definitions]", match_expr);
+ def_list = listbox_new (1, 1, def_dlg_h - 2, def_dlg_w - 2, FALSE, NULL);
+ group_add_widget_autopos (GROUP (def_dlg), def_list, WPOS_KEEP_ALL, NULL);
+
+ /* fill the listbox with the completions and get the maximim width */
+ def_max_width = 0;
+ g_ptr_array_foreach (def_hash, editcmd_dialog_select_definition_add, def_list);
+
+ /* adjust dialog width */
+ def_dlg_w = def_max_width + 4;
+ offset = start_x + def_dlg_w - COLS;
+ if (offset > 0)
+ start_x -= offset;
+
+ widget_set_size (WIDGET (def_dlg), start_y, start_x, def_dlg_h, def_dlg_w);
+
+ /* pop up the dialog and apply the chosen completion */
+ if (dlg_run (def_dlg) == B_ENTER)
+ {
+ etags_hash_t *curr_def = NULL;
+ gboolean do_moveto = FALSE;
+
+ listbox_get_current (def_list, &curr, (void **) &curr_def);
+
+ if (!edit->modified)
+ do_moveto = TRUE;
+ else if (!edit_query_dialog2
+ (_("Warning"),
+ _("Current text was modified without a file save.\n"
+ "Continue discards these changes."), _("C&ontinue"), _("&Cancel")))
+ {
+ edit->force |= REDRAW_COMPLETELY;
+ do_moveto = TRUE;
+ }
+
+ if (curr != NULL && do_moveto && edit_stack_iterator + 1 < MAX_HISTORY_MOVETO)
+ {
+ vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath, TRUE);
+
+ /* Is file path absolute? Prepend with dir_vpath if necessary */
+ if (edit->filename_vpath != NULL && edit->filename_vpath->relative
+ && edit->dir_vpath != NULL)
+ edit_history_moveto[edit_stack_iterator].filename_vpath =
+ vfs_path_append_vpath_new (edit->dir_vpath, edit->filename_vpath, NULL);
+ else
+ edit_history_moveto[edit_stack_iterator].filename_vpath =
+ vfs_path_clone (edit->filename_vpath);
+
+ edit_history_moveto[edit_stack_iterator].line = edit->start_line + edit->curs_row + 1;
+ edit_stack_iterator++;
+ vfs_path_free (edit_history_moveto[edit_stack_iterator].filename_vpath, TRUE);
+ edit_history_moveto[edit_stack_iterator].filename_vpath =
+ vfs_path_from_str ((char *) curr_def->fullpath);
+ edit_history_moveto[edit_stack_iterator].line = curr_def->line;
+ edit_reload_line (edit, edit_history_moveto[edit_stack_iterator].filename_vpath,
+ edit_history_moveto[edit_stack_iterator].line);
+ }
+ }
+
+ /* destroy dialog before return */
+ widget_destroy (WIDGET (def_dlg));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_get_match_keyword_cmd (WEdit * edit)
+{
+ gsize word_len = 0;
+ gsize i;
+ off_t word_start = 0;
+ GString *match_expr;
+ char *path = NULL;
+ char *ptr = NULL;
+ char *tagfile = NULL;
+ GPtrArray *def_hash = NULL;
+
+ /* search start of word to be completed */
+ if (!edit_buffer_find_word_start (&edit->buffer, &word_start, &word_len))
+ return;
+
+ /* prepare match expression */
+ match_expr = g_string_sized_new (word_len);
+ for (i = 0; i < word_len; i++)
+ g_string_append_c (match_expr, edit_buffer_get_byte (&edit->buffer, word_start + i));
+
+ ptr = g_get_current_dir ();
+ path = g_strconcat (ptr, PATH_SEP_STR, (char *) NULL);
+ g_free (ptr);
+
+ /* Recursive search file 'TAGS' in parent dirs */
+ do
+ {
+ ptr = g_path_get_dirname (path);
+ g_free (path);
+ path = ptr;
+ g_free (tagfile);
+ tagfile = mc_build_filename (path, TAGS_NAME, (char *) NULL);
+ if (tagfile != NULL && exist_file (tagfile))
+ break;
+ }
+ while (strcmp (path, PATH_SEP_STR) != 0);
+
+ if (tagfile != NULL)
+ {
+ def_hash = etags_set_definition_hash (tagfile, path, match_expr->str);
+ g_free (tagfile);
+ }
+ g_free (path);
+
+ if (def_hash != NULL)
+ {
+ editcmd_dialog_select_definition_show (edit, match_expr->str, def_hash);
+
+ g_ptr_array_free (def_hash, TRUE);
+ }
+
+ g_string_free (match_expr, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/etags.h
^
|
@@ -1,26 +1,16 @@
#ifndef MC__EDIT_ETAGS_H
#define MC__EDIT_ETAGS_H 1
-#include <sys/types.h> /* size_t */
-#include "lib/global.h" /* include <glib.h> */
-
/*** typedefs(not structures) and defined constants **********************************************/
-#define MAX_WIDTH_DEF_DIALOG 60 /* max width def dialog */
-#define MAX_DEFINITIONS 60 /* count found entries show */
-#define SHORT_DEF_LEN 30
-#define LONG_DEF_LEN 40
-#define LINE_DEF_LEN 16
-
/*** enums ***************************************************************************************/
/*** structures declarations (and typedefs of structures)*****************************************/
typedef struct etags_hash_struct
{
- size_t filename_len;
- char *fullpath;
char *filename;
+ char *fullpath;
char *short_define;
long line;
} etags_hash_t;
@@ -29,9 +19,8 @@
/*** declarations of public functions ************************************************************/
-
-int etags_set_definition_hash (const char *tagfile, const char *start_path,
- const char *match_func, etags_hash_t * def_hash);
+void edit_get_match_keyword_cmd (WEdit * edit);
/*** inline functions ****************************************************************************/
+
#endif /* MC__EDIT_ETAGS_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/format.c
^
|
@@ -1,7 +1,7 @@
/*
Dynamic paragraph formatting.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Copyright (C) 1996 Paul Sheer
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/spell.c
^
|
@@ -1,11 +1,13 @@
/*
Editor spell checker
- Copyright (C) 2012-2020
+ Copyright (C) 2012-2022
Free Software Foundation, Inc.
Written by:
Ilia Maslakov <il.smind@gmail.com>, 2012
+ Andrew Borodin <aborodin@vmail.ru>, 2013, 2021
+
This file is part of the Midnight Commander.
@@ -34,16 +36,21 @@
#include "lib/charsets.h"
#endif
#include "lib/strutil.h"
+#include "lib/tty/tty.h" /* COLS, LINES */
#include "src/setup.h"
-#include "edit-impl.h"
+#include "editwidget.h"
+
#include "spell.h"
/*** global variables ****************************************************************************/
/*** file scope macro definitions ****************************************************************/
+#define B_SKIP_WORD (B_USER+3)
+#define B_ADD_WORD (B_USER+4)
+
/*** file scope type declarations ****************************************************************/
typedef struct aspell_struct
@@ -564,3 +571,282 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+int
+edit_suggest_current_word (WEdit * edit)
+{
+ gsize cut_len = 0;
+ gsize word_len = 0;
+ off_t word_start = 0;
+ int retval = B_SKIP_WORD;
+ GString *match_word;
+
+ /* search start of word to spell check */
+ match_word = edit_buffer_get_word_from_pos (&edit->buffer, edit->buffer.curs1, &word_start,
+ &cut_len);
+ word_len = match_word->len;
+
+#ifdef HAVE_CHARSET
+ if (mc_global.source_codepage >= 0 && mc_global.source_codepage != mc_global.display_codepage)
+ {
+ GString *tmp_word;
+
+ tmp_word = str_convert_to_display (match_word->str);
+ g_string_free (match_word, TRUE);
+ match_word = tmp_word;
+ }
+#endif
+ if (!aspell_check (match_word->str, (int) word_len))
+ {
+ GArray *suggest;
+ unsigned int res;
+ guint i;
+
+ suggest = g_array_new (TRUE, FALSE, sizeof (char *));
+
+ res = aspell_suggest (suggest, match_word->str, (int) word_len);
+ if (res != 0)
+ {
+ char *new_word = NULL;
+
+ edit->found_start = word_start;
+ edit->found_len = word_len;
+ edit->force |= REDRAW_PAGE;
+ edit_scroll_screen_over_cursor (edit);
+ edit_render_keypress (edit);
+
+ retval = spell_dialog_spell_suggest_show (edit, match_word->str, &new_word, suggest);
+ edit_cursor_move (edit, word_len - cut_len);
+
+ if (retval == B_ENTER && new_word != NULL)
+ {
+ char *cp_word;
+
+#ifdef HAVE_CHARSET
+ if (mc_global.source_codepage >= 0 &&
+ (mc_global.source_codepage != mc_global.display_codepage))
+ {
+ GString *tmp_word;
+
+ tmp_word = str_convert_to_input (new_word);
+ g_free (new_word);
+ new_word = g_string_free (tmp_word, FALSE);
+ }
+#endif
+ cp_word = new_word;
+ for (i = 0; i < word_len; i++)
+ edit_backspace (edit, TRUE);
+ for (; *new_word; new_word++)
+ edit_insert (edit, *new_word);
+ g_free (cp_word);
+ }
+ else if (retval == B_ADD_WORD)
+ aspell_add_to_dict (match_word->str, (int) word_len);
+ }
+
+ for (i = 0; i < suggest->len; i++)
+ {
+ char *cur_sugg_word;
+
+ cur_sugg_word = g_array_index (suggest, char *, i);
+ g_free (cur_sugg_word);
+ }
+ g_array_free (suggest, TRUE);
+ edit->found_start = 0;
+ edit->found_len = 0;
+ }
+
+ g_string_free (match_word, TRUE);
+
+ return retval;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_spellcheck_file (WEdit * edit)
+{
+ if (edit->buffer.curs_line > 0)
+ {
+ edit_cursor_move (edit, -edit->buffer.curs1);
+ edit_move_to_prev_col (edit, 0);
+ edit_update_curs_row (edit);
+ }
+
+ do
+ {
+ int c1, c2;
+
+ c2 = edit_buffer_get_current_byte (&edit->buffer);
+
+ do
+ {
+ if (edit->buffer.curs1 >= edit->buffer.size)
+ return;
+
+ c1 = c2;
+ edit_cursor_move (edit, 1);
+ c2 = edit_buffer_get_current_byte (&edit->buffer);
+ }
+ while (is_break_char (c1) || is_break_char (c2));
+ }
+ while (edit_suggest_current_word (edit) != B_CANCEL);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_set_spell_lang (void)
+{
+ GArray *lang_list;
+
+ lang_list = g_array_new (TRUE, FALSE, sizeof (char *));
+ if (aspell_get_lang_list (lang_list) != 0)
+ {
+ char *lang;
+
+ lang = spell_dialog_lang_list_show (lang_list);
+ if (lang != NULL)
+ {
+ (void) aspell_set_lang (lang);
+ g_free (lang);
+ }
+ }
+ aspell_array_clean (lang_list);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Show suggests for the current word.
+ *
+ * @param edit Editor object
+ * @param word Word for spell check
+ * @param new_word Word to replace the incorrect word
+ * @param suggest Array of suggests for current word
+ * @return code of pressed button
+ */
+
+int
+spell_dialog_spell_suggest_show (WEdit * edit, const char *word, char **new_word, GArray * suggest)
+{
+
+ int sug_dlg_h = 14; /* dialog height */
+ int sug_dlg_w = 29; /* dialog width */
+ int xpos, ypos;
+ char *lang_label;
+ char *word_label;
+ unsigned int i;
+ int res;
+ char *curr = NULL;
+ WDialog *sug_dlg;
+ WGroup *g;
+ WListbox *sug_list;
+ int max_btn_len = 0;
+ int replace_len;
+ int skip_len;
+ int cancel_len;
+ WButton *add_btn;
+ WButton *replace_btn;
+ WButton *skip_btn;
+ WButton *cancel_button;
+ int word_label_len;
+
+ /* calculate the dialog metrics */
+ xpos = (COLS - sug_dlg_w) / 2;
+ ypos = (LINES - sug_dlg_h) * 2 / 3;
+
+ /* Sometimes menu can hide replaced text. I don't like it */
+ if ((edit->curs_row >= ypos - 1) && (edit->curs_row <= ypos + sug_dlg_h - 1))
+ ypos -= sug_dlg_h;
+
+ add_btn = button_new (5, 28, B_ADD_WORD, NORMAL_BUTTON, _("&Add word"), 0);
+ replace_btn = button_new (7, 28, B_ENTER, NORMAL_BUTTON, _("&Replace"), 0);
+ replace_len = button_get_len (replace_btn);
+ skip_btn = button_new (9, 28, B_SKIP_WORD, NORMAL_BUTTON, _("&Skip"), 0);
+ skip_len = button_get_len (skip_btn);
+ cancel_button = button_new (11, 28, B_CANCEL, NORMAL_BUTTON, _("&Cancel"), 0);
+ cancel_len = button_get_len (cancel_button);
+
+ max_btn_len = MAX (replace_len, skip_len);
+ max_btn_len = MAX (max_btn_len, cancel_len);
+
+ lang_label = g_strdup_printf ("%s: %s", _("Language"), aspell_get_lang ());
+ word_label = g_strdup_printf ("%s: %s", _("Misspelled"), word);
+ word_label_len = str_term_width1 (word_label) + 5;
+
+ sug_dlg_w += max_btn_len;
+ sug_dlg_w = MAX (sug_dlg_w, word_label_len) + 1;
+
+ sug_dlg = dlg_create (TRUE, ypos, xpos, sug_dlg_h, sug_dlg_w, WPOS_KEEP_DEFAULT, TRUE,
+ dialog_colors, NULL, NULL, "[ASpell]", _("Check word"));
+ g = GROUP (sug_dlg);
+
+ group_add_widget (g, label_new (1, 2, lang_label));
+ group_add_widget (g, label_new (3, 2, word_label));
+
+ group_add_widget (g, groupbox_new (4, 2, sug_dlg_h - 5, 25, _("Suggest")));
+
+ sug_list = listbox_new (5, 2, sug_dlg_h - 7, 24, FALSE, NULL);
+ for (i = 0; i < suggest->len; i++)
+ listbox_add_item (sug_list, LISTBOX_APPEND_AT_END, 0, g_array_index (suggest, char *, i),
+ NULL, FALSE);
+ group_add_widget (g, sug_list);
+
+ group_add_widget (g, add_btn);
+ group_add_widget (g, replace_btn);
+ group_add_widget (g, skip_btn);
+ group_add_widget (g, cancel_button);
+
+ res = dlg_run (sug_dlg);
+ if (res == B_ENTER)
+ {
+ char *tmp = NULL;
+ listbox_get_current (sug_list, &curr, NULL);
+
+ if (curr != NULL)
+ tmp = g_strdup (curr);
+ *new_word = tmp;
+ }
+
+ widget_destroy (WIDGET (sug_dlg));
+ g_free (lang_label);
+ g_free (word_label);
+
+ return res;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Show dialog to select language for spell check.
+ *
+ * @param languages Array of available languages
+ * @return name of choosed language
+ */
+
+char *
+spell_dialog_lang_list_show (GArray * languages)
+{
+
+ int lang_dlg_h = 12; /* dialog height */
+ int lang_dlg_w = 30; /* dialog width */
+ char *selected_lang = NULL;
+ unsigned int i;
+ int res;
+ Listbox *lang_list;
+
+ /* Create listbox */
+ lang_list = create_listbox_window_centered (-1, -1, lang_dlg_h, lang_dlg_w,
+ _("Select language"), "[ASpell]");
+
+ for (i = 0; i < languages->len; i++)
+ LISTBOX_APPEND_TEXT (lang_list, 0, g_array_index (languages, char *, i), NULL, FALSE);
+
+ res = run_listbox (lang_list);
+ if (res >= 0)
+ selected_lang = g_strdup (g_array_index (languages, char *, (unsigned int) res));
+
+ return selected_lang;
+
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/spell.h
^
|
@@ -23,6 +23,14 @@
gboolean aspell_set_lang (const char *lang);
gboolean aspell_add_to_dict (const char *word, const int word_size);
+int edit_suggest_current_word (WEdit * edit);
+void edit_spellcheck_file (WEdit * edit);
+void edit_set_spell_lang (void);
+
+int spell_dialog_spell_suggest_show (WEdit * edit, const char *word, char **new_word,
+ GArray * suggest);
+char *spell_dialog_lang_list_show (GArray * languages);
+
/*** inline functions ****************************************************************************/
#endif /* MC__EDIT_ASPELL_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/editor/syntax.c
^
|
@@ -1,14 +1,15 @@
/*
Editor syntax highlighting.
- Copyright (C) 1996-2020
+ Copyright (C) 1996-2022
Free Software Foundation, Inc.
Written by:
Paul Sheer, 1998
+ Leonard den Ottolander <leonard den ottolander nl>, 2005, 2006
Egmont Koblinger <egmont@gmail.com>, 2010
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013, 2014
+ Andrew Borodin <aborodin@vmail.ru>, 2013, 2014, 2021
This file is part of the Midnight Commander.
@@ -56,10 +57,10 @@
#include "lib/global.h"
#include "lib/search.h" /* search engine */
#include "lib/skin.h"
-#include "lib/fileloc.h" /* EDIT_HOME_DIR, EDIT_HOME_SYNTAX_FILE */
+#include "lib/fileloc.h" /* EDIT_SYNTAX_DIR, EDIT_SYNTAX_FILE */
#include "lib/strutil.h" /* utf string functions */
#include "lib/util.h"
-#include "lib/widget.h" /* message() */
+#include "lib/widget.h" /* Listbox, message() */
#include "edit-impl.h"
#include "editwidget.h"
@@ -91,6 +92,10 @@
#define ARGS_LEN 1024
+#define MAX_ENTRY_LEN 40
+#define LIST_LINES 14
+#define N_DFLT_ENTRIES 2
+
/*** file scope type declarations ****************************************************************/
typedef struct
@@ -520,7 +525,6 @@
if (e >= end && (_rule.keyword == 0 || keyword_foundright))
{
_rule.end = e;
- found_right = TRUE;
_rule.border = RULE_ON_LEFT_BORDER;
_rule._context = count;
if (!r->between_delimiters && _rule.keyword == 0)
@@ -883,20 +887,14 @@
g_free (error_file_name);
error_file_name =
- g_build_filename (mc_config_get_data_path (), EDIT_HOME_DIR, filename, (char *) NULL);
- f = fopen (error_file_name, "r");
- if (f != NULL)
- return f;
-
- g_free (error_file_name);
- error_file_name = g_build_filename (mc_global.sysconfig_dir, "syntax", filename, (char *) NULL);
+ g_build_filename (mc_config_get_data_path (), EDIT_SYNTAX_DIR, filename, (char *) NULL);
f = fopen (error_file_name, "r");
if (f != NULL)
return f;
g_free (error_file_name);
error_file_name =
- g_build_filename (mc_global.share_data_dir, "syntax", filename, (char *) NULL);
+ g_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_DIR, filename, (char *) NULL);
return fopen (error_file_name, "r");
}
@@ -1266,7 +1264,7 @@
f = fopen (syntax_file, "r");
if (f == NULL)
{
- lib_file = g_build_filename (mc_global.share_data_dir, "syntax", "Syntax", (char *) NULL);
+ lib_file = g_build_filename (mc_global.share_data_dir, EDIT_SYNTAX_FILE, (char *) NULL);
f = fopen (lib_file, "r");
g_free (lib_file);
if (f == NULL)
@@ -1407,6 +1405,40 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static int
+pstrcmp (const void *p1, const void *p2)
+{
+ return strcmp (*(char *const *) p1, *(char *const *) p2);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static int
+exec_edit_syntax_dialog (const GPtrArray * names, const char *current_syntax)
+{
+ size_t i;
+ Listbox *syntaxlist;
+
+ syntaxlist = create_listbox_window (LIST_LINES, MAX_ENTRY_LEN,
+ _("Choose syntax highlighting"), NULL);
+ LISTBOX_APPEND_TEXT (syntaxlist, 'A', _("< Auto >"), NULL, FALSE);
+ LISTBOX_APPEND_TEXT (syntaxlist, 'R', _("< Reload Current Syntax >"), NULL, FALSE);
+
+ for (i = 0; i < names->len; i++)
+ {
+ const char *name;
+
+ name = g_ptr_array_index (names, i);
+ LISTBOX_APPEND_TEXT (syntaxlist, 0, name, NULL, FALSE);
+ if (current_syntax != NULL && strcmp (name, current_syntax) == 0)
+ listbox_select_entry (syntaxlist->list, i + N_DFLT_ENTRIES);
+ }
+
+ return run_listbox (syntaxlist);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -1483,7 +1515,7 @@
if (edit != NULL && edit->filename_vpath == NULL)
return;
- f = mc_config_get_full_path (EDIT_HOME_SYNTAX_FILE);
+ f = mc_config_get_full_path (EDIT_SYNTAX_FILE);
if (edit != NULL)
r = edit_read_syntax_file (edit, pnames, f, vfs_path_as_str (edit->filename_vpath),
get_first_editor_line (edit),
@@ -1517,3 +1549,56 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+void
+edit_syntax_dialog (WEdit * edit)
+{
+ GPtrArray *names;
+ int syntax;
+
+ names = g_ptr_array_new ();
+
+ /* We fill the list of syntax files every time the editor is invoked.
+ Instead we could save the list to a file and update it once the syntax
+ file gets updated (either by testing or by explicit user command). */
+ edit_load_syntax (NULL, names, NULL);
+ g_ptr_array_sort (names, pstrcmp);
+
+ syntax = exec_edit_syntax_dialog (names, edit->syntax_type);
+ if (syntax >= 0)
+ {
+ gboolean force_reload = FALSE;
+ char *current_syntax;
+ gboolean old_auto_syntax;
+
+ current_syntax = g_strdup (edit->syntax_type);
+ old_auto_syntax = option_auto_syntax;
+
+ switch (syntax)
+ {
+ case 0: /* auto syntax */
+ option_auto_syntax = TRUE;
+ break;
+ case 1: /* reload current syntax */
+ force_reload = TRUE;
+ break;
+ default:
+ option_auto_syntax = FALSE;
+ g_free (edit->syntax_type);
+ edit->syntax_type = g_strdup (g_ptr_array_index (names, syntax - N_DFLT_ENTRIES));
+ }
+
+ /* Load or unload syntax rules if the option has changed */
+ if (force_reload || (option_auto_syntax && !old_auto_syntax) || old_auto_syntax ||
+ (current_syntax != NULL && edit->syntax_type != NULL &&
+ strcmp (current_syntax, edit->syntax_type) != 0))
+ edit_load_syntax (edit, NULL, edit->syntax_type);
+
+ g_free (current_syntax);
+ }
+
+ g_ptr_array_foreach (names, (GFunc) g_free, NULL);
+ g_ptr_array_free (names, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/events_init.c
^
|
@@ -1,7 +1,7 @@
/*
Event callbacks initialization
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/events_init.h
^
|
@@ -12,7 +12,7 @@
/*** declarations of public functions ************************************************************/
-gboolean events_init (GError **);
+gboolean events_init (GError ** mcerror);
/*** inline functions ****************************************************************************/
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/execute.c
^
|
@@ -1,7 +1,7 @@
/*
Execution routines for GNU Midnight Commander
- Copyright (C) 2003-2020
+ Copyright (C) 2003-2022
Free Software Foundation, Inc.
Written by:
@@ -220,7 +220,7 @@
*/
mc_stat (*localcopy_vpath, &st);
mc_ungetlocalcopy (filename_vpath, *localcopy_vpath, *mtime != st.st_mtime);
- vfs_path_free (*localcopy_vpath);
+ vfs_path_free (*localcopy_vpath, TRUE);
*localcopy_vpath = NULL;
}
}
@@ -356,7 +356,7 @@
if (new_dir_vpath != NULL)
{
do_possible_cd (new_dir_vpath);
- vfs_path_free (new_dir_vpath);
+ vfs_path_free (new_dir_vpath, TRUE);
}
#endif /* ENABLE_SUBSHELL */
@@ -364,7 +364,7 @@
if (old_vfs_dir_vpath != NULL)
{
mc_chdir (old_vfs_dir_vpath);
- vfs_path_free (old_vfs_dir_vpath);
+ vfs_path_free (old_vfs_dir_vpath, TRUE);
}
if (mc_global.mc_run_mode == MC_RUN_FULL)
@@ -558,7 +558,7 @@
vfs_setup_cwd ();
}
- vfs_path_free (new_dir_vpath);
+ vfs_path_free (new_dir_vpath, TRUE);
#endif /* ENABLE_SUBSHELL */
if (mc_global.mc_run_mode == MC_RUN_FULL)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/file_history.c
^
|
@@ -1,11 +1,11 @@
/*
Load and show history of edited and viewed files
- Copyright (C) 2020
+ Copyright (C) 2020-2022
Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2019.
+ Andrew Borodin <aborodin@vmail.ru>, 2019-2022
This file is part of the Midnight Commander.
@@ -217,7 +217,7 @@
file_list = g_list_last (file_list);
- history_descriptor_init (&hd, w->y, w->x, file_list, 0);
+ history_descriptor_init (&hd, w->rect.y, w->rect.x, file_list, 0);
/* redefine list-specific functions */
hd.create = file_history_create_item;
hd.release = file_history_release_item;
@@ -229,7 +229,10 @@
/* Has history cleaned up or not? */
if (len != g_list_length (hd.list))
+ {
+ hd.list = g_list_reverse (hd.list);
file_history_list_write (hd.list);
+ }
g_list_free_full (hd.list, (GDestroyNotify) file_history_free_item);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/Makefile.am
^
|
@@ -38,5 +38,3 @@
AM_CPPFLAGS += @EXT2FS_CFLAGS@ @E2P_CFLAGS@
endif
-
-libmcfilemanager_la_LIBADD = ../../lib/libmc.la
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/achown.c
^
|
@@ -1,7 +1,7 @@
/*
Chown-advanced command -- for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -542,22 +542,22 @@
if (is_owner)
{
title = _("owner");
- lxx = WIDGET (b_user)->x + 1;
+ lxx = WIDGET (b_user)->rect.x + 1;
}
else
{
title = _("group");
- lxx = WIDGET (b_group)->x + 1;
+ lxx = WIDGET (b_group)->rect.x + 1;
}
chl_dlg =
- dlg_create (TRUE, wh->y - 1, lxx, wh->lines + 2, 17, WPOS_KEEP_DEFAULT, TRUE,
+ dlg_create (TRUE, wh->rect.y - 1, lxx, wh->rect.lines + 2, 17, WPOS_KEEP_DEFAULT, TRUE,
dialog_colors, chl_callback, NULL, "[Advanced Chown]", title);
/* get new listboxes */
chl_list =
- listbox_new (1, 1, WIDGET (chl_dlg)->lines - 2, WIDGET (chl_dlg)->cols - 2, FALSE,
- NULL);
+ listbox_new (1, 1, WIDGET (chl_dlg)->rect.lines - 2, WIDGET (chl_dlg)->rect.cols - 2,
+ FALSE, NULL);
listbox_add_item (chl_list, LISTBOX_APPEND_AT_END, 0, "<Unknown>", NULL, FALSE);
if (is_owner)
{
@@ -642,7 +642,7 @@
}
/* Here we used to redraw the window */
- dlg_destroy (chl_dlg);
+ widget_destroy (WIDGET (chl_dlg));
}
while (chl_end);
@@ -782,14 +782,15 @@
group_add_widget (ch_grp, hline_new (y++, -1, -1));
advanced_chown_but[i].id = group_add_widget (ch_grp,
button_new (y,
- WIDGET (ch_dlg)->cols / 2 -
+ WIDGET (ch_dlg)->rect.cols / 2 -
advanced_chown_but[i].len,
advanced_chown_but[i].ret_cmd,
advanced_chown_but[i].flags,
advanced_chown_but[i].text, NULL));
i++;
advanced_chown_but[i].id = group_add_widget (ch_grp,
- button_new (y, WIDGET (ch_dlg)->cols / 2 + 1,
+ button_new (y,
+ WIDGET (ch_dlg)->rect.cols / 2 + 1,
advanced_chown_but[i].ret_cmd,
advanced_chown_but[i].flags,
advanced_chown_but[i].text, NULL));
@@ -800,14 +801,14 @@
group_add_widget (ch_grp, hline_new (y++, -1, -1));
advanced_chown_but[i].id = group_add_widget (ch_grp,
button_new (y,
- WIDGET (ch_dlg)->cols / 2 -
+ WIDGET (ch_dlg)->rect.cols / 2 -
advanced_chown_but[i].len,
advanced_chown_but[i].ret_cmd,
advanced_chown_but[i].flags,
advanced_chown_but[i].text, NULL));
i++;
advanced_chown_but[i].id = group_add_widget (ch_grp,
- button_new (y, WIDGET (ch_dlg)->cols / 2 + 1,
+ button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1,
advanced_chown_but[i].ret_cmd,
advanced_chown_but[i].flags,
advanced_chown_but[i].text, NULL));
@@ -829,7 +830,7 @@
/* --------------------------------------------------------------------------------------------- */
-static const char *
+static const GString *
next_file (const WPanel * panel)
{
while (!panel->dir.list[current_file].f.marked)
@@ -951,10 +952,10 @@
do
{
- const char *fname;
+ const GString *fname;
fname = next_file (panel);
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
ok = (mc_stat (vpath, sf) == 0);
if (!ok)
@@ -975,7 +976,7 @@
(ch_flags[10] == '+') ? a_gid : (gid_t) (-1));
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
while (ok && panel->marked != 0);
}
@@ -1004,7 +1005,7 @@
{ /* do while any files remaining */
vfs_path_t *vpath;
WDialog *ch_dlg;
- const char *fname;
+ const GString *fname;
int result;
int file_idx;
@@ -1018,11 +1019,11 @@
else
fname = selection (panel)->fname; /* single file */
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
if (mc_stat (vpath, &sf_stat) != 0)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
break;
}
@@ -1032,7 +1033,7 @@
file_idx = files_on_begin == 1 ? 1 : (files_on_begin - panel->marked + 1);
label_set_textv (l_filename, "%s (%d/%d)",
- str_fit_to_term (fname, WIDGET (ch_dlg)->cols - 20, J_LEFT_FIT),
+ str_fit_to_term (fname->str, WIDGET (ch_dlg)->rect.cols - 20, J_LEFT_FIT),
file_idx, files_on_begin);
update_ownership ();
@@ -1050,12 +1051,12 @@
/* single or last file */
if (mc_chmod (vpath, get_mode ()) == -1)
message (D_ERROR, MSG_ERROR, _("Cannot chmod \"%s\"\n%s"),
- fname, unix_error_string (errno));
+ fname->str, unix_error_string (errno));
/* call mc_chown only, if mc_chmod didn't fail */
else if (mc_chown
(vpath, (ch_flags[9] == '+') ? sf_stat.st_uid : (uid_t) (-1),
(ch_flags[10] == '+') ? sf_stat.st_gid : (gid_t) (-1)) == -1)
- message (D_ERROR, MSG_ERROR, _("Cannot chown \"%s\"\n%s"), fname,
+ message (D_ERROR, MSG_ERROR, _("Cannot chown \"%s\"\n%s"), fname->str,
unix_error_string (errno));
end_chown = TRUE;
@@ -1089,9 +1090,9 @@
need_update = TRUE;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
- dlg_destroy (ch_dlg);
+ widget_destroy (WIDGET (ch_dlg));
}
while (panel->marked != 0 && !end_chown);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/boxes.c
^
|
@@ -1,13 +1,13 @@
/*
Some misc dialog boxes for the program.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
Miguel de Icaza, 1994, 1995
Jakub Jelinek, 1995
- Andrew Borodin <aborodin@vmail.ru>, 2009-2015
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -52,9 +52,6 @@
#ifdef ENABLE_VFS_FTP
#include "src/vfs/ftpfs/ftpfs.h"
#endif /* ENABLE_VFS_FTP */
-#ifdef ENABLE_VFS_SMB
-#include "src/vfs/smbfs/smbfs.h"
-#endif /* ENABLE_VFS_SMB */
#include "lib/util.h" /* Q_() */
#include "lib/widget.h"
@@ -192,13 +189,11 @@
case MSG_RESIZE:
{
WDialog *d = DIALOG (w);
- Widget *wd = WIDGET (d->data);
- int y, x;
- WRect r;
-
- y = wd->y + (wd->lines - w->lines) / 2;
- x = wd->x + wd->cols / 2;
- rect_init (&r, y, x, w->lines, w->cols);
+ const WRect *wd = &WIDGET (d->data)->rect;
+ WRect r = w->rect;
+
+ r.y = wd->y + (wd->lines - r.lines) / 2;
+ r.x = wd->x + wd->cols / 2;
return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
}
@@ -267,7 +262,7 @@
button_set_text (button, str_fit_to_term (skin_label, 20, J_LEFT_FIT));
}
- dlg_destroy (skin_dlg);
+ widget_destroy (WIDGET (skin_dlg));
return 0;
}
@@ -280,7 +275,9 @@
switch (msg)
{
case MSG_INIT:
+#ifdef ENABLE_SHADOWS
if (!tty_use_colors ())
+#endif
{
Widget *shadow;
@@ -406,15 +403,16 @@
{
case MSG_RESIZE:
{
- WRect r;
+ WRect r = w->rect;
Widget *bar;
- rect_init (&r, w->y, w->x, LINES - 9, COLS - 20);
+ r.lines = LINES - 9;
+ r.cols = COLS - 20;
dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
bar = WIDGET (find_buttonbar (h));
- bar->x = 0;
- bar->y = LINES - 1;
+ bar->rect.x = 0;
+ bar->rect.y = LINES - 1;
return MSG_HANDLED;
}
@@ -592,9 +590,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 60 };
+
quick_dialog_t qdlg = {
- -1, -1, 60,
- N_("Configure options"), "[Configuration]",
+ r, N_("Configure options"), "[Configuration]",
quick_widgets, configure_callback, NULL
};
@@ -613,7 +612,12 @@
#endif
if (quick_dialog (&qdlg) == B_ENTER)
- old_esc_mode_timeout = atoi (time_out_new);
+ {
+ if (time_out_new[0] == '\0')
+ old_esc_mode_timeout = 0;
+ else
+ old_esc_mode_timeout = atoi (time_out_new);
+ }
g_free (time_out_new);
}
@@ -645,9 +649,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 54 };
+
quick_dialog_t qdlg = {
- -1, -1, 54,
- N_("Appearance"), "[Appearance]",
+ r, N_("Appearance"), "[Appearance]",
quick_widgets, appearance_box_callback, NULL
};
@@ -725,9 +730,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 60 };
+
quick_dialog_t qdlg = {
- -1, -1, 60,
- N_("Panel options"), "[Panel options]",
+ r, N_("Panel options"), "[Panel options]",
quick_widgets, NULL, NULL
};
@@ -801,9 +807,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 48 };
+
quick_dialog_t qdlg = {
- -1, -1, 48,
- N_("Listing format"), "[Listing Format...]",
+ r, N_("Listing format"), "[Listing Format...]",
quick_widgets, panel_listing_callback, NULL
};
@@ -891,9 +898,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 40 };
+
quick_dialog_t qdlg = {
- -1, -1, 40,
- N_("Sort order"), "[Sort Order...]",
+ r, N_("Sort order"), "[Sort Order...]",
quick_widgets, NULL, NULL
};
@@ -930,9 +938,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 46 };
+
quick_dialog_t qdlg = {
- -1, -1, 46,
- N_("Confirmation"), "[Confirmation]",
+ r, N_("Confirmation"), "[Confirmation]",
quick_widgets, NULL, NULL
};
@@ -965,9 +974,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 46 };
+
quick_dialog_t qdlg = {
- -1, -1, 46,
- _("Display bits"), "[Display bits]",
+ r, _("Display bits"), "[Display bits]",
quick_widgets, NULL, NULL
};
@@ -1023,9 +1033,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 46 };
+
quick_dialog_t qdlg = {
- -1, -1, 46,
- N_("Display bits"), "[Display bits]",
+ r, N_("Display bits"), "[Display bits]",
quick_widgets, NULL, NULL
};
@@ -1079,14 +1090,14 @@
g = GROUP (dlg);
wd = WIDGET (dlg);
- mytree = tree_new (2, 2, wd->lines - 6, wd->cols - 5, FALSE);
+ mytree = tree_new (2, 2, wd->rect.lines - 6, wd->rect.cols - 5, FALSE);
group_add_widget_autopos (g, mytree, WPOS_KEEP_ALL, NULL);
- group_add_widget_autopos (g, hline_new (wd->lines - 4, 1, -1), WPOS_KEEP_BOTTOM, NULL);
- bar = buttonbar_new (TRUE);
+ group_add_widget_autopos (g, hline_new (wd->rect.lines - 4, 1, -1), WPOS_KEEP_BOTTOM, NULL);
+ bar = buttonbar_new ();
group_add_widget (g, bar);
/* restore ButtonBar coordinates after add_widget() */
- WIDGET (bar)->x = 0;
- WIDGET (bar)->y = LINES - 1;
+ WIDGET (bar)->rect.x = 0;
+ WIDGET (bar)->rect.y = LINES - 1;
if (dlg_run (dlg) == B_ENTER)
{
@@ -1096,7 +1107,7 @@
val = g_strdup (vfs_path_as_str (selected_name));
}
- dlg_destroy (dlg);
+ widget_destroy (wd);
return val;
}
@@ -1150,9 +1161,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 56 };
+
quick_dialog_t qdlg = {
- -1, -1, 56,
- N_("Virtual File System Setting"), "[Virtual FS]",
+ r, N_("Virtual File System Setting"), "[Virtual FS]",
quick_widgets,
#ifdef ENABLE_VFS_FTP
confvfs_callback,
@@ -1170,7 +1182,10 @@
if (quick_dialog (&qdlg) != B_CANCEL)
{
/* cppcheck-suppress uninitvar */
- vfs_timeout = atoi (ret_timeout);
+ if (ret_timeout[0] == '\0')
+ vfs_timeout = 0;
+ else
+ vfs_timeout = atoi (ret_timeout);
g_free (ret_timeout);
if (vfs_timeout < 0 || vfs_timeout > 10000)
@@ -1183,7 +1198,10 @@
/* cppcheck-suppress uninitvar */
ftpfs_proxy_host = ret_ftp_proxy;
/* cppcheck-suppress uninitvar */
- ftpfs_directory_timeout = atoi (ret_directory_timeout);
+ if (ret_directory_timeout[0] == '\0')
+ ftpfs_directory_timeout = 0;
+ else
+ ftpfs_directory_timeout = atoi (ret_directory_timeout);
g_free (ret_directory_timeout);
#endif
}
@@ -1206,9 +1224,10 @@
QUICK_END
};
+ WRect r = { w->rect.y + w->rect.lines - 6, w->rect.x, 0, w->rect.cols };
+
quick_dialog_t qdlg = {
- w->y + w->lines - 6, w->x, w->cols,
- N_("Quick cd"), "[Quick cd]",
+ r, N_("Quick cd"), "[Quick cd]",
quick_widgets, NULL, NULL
};
@@ -1235,9 +1254,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 64 };
+
quick_dialog_t qdlg = {
- -1, -1, 64,
- N_("Symbolic link"), "[File Menu]",
+ r, N_("Symbolic link"), "[File Menu]",
quick_widgets, NULL, NULL
};
@@ -1315,71 +1335,8 @@
}
(void) dlg_run (jobs_dlg);
- dlg_destroy (jobs_dlg);
+ widget_destroy (WIDGET (jobs_dlg));
}
#endif /* ENABLE_BACKGROUND */
/* --------------------------------------------------------------------------------------------- */
-
-#ifdef ENABLE_VFS_SMB
-struct smb_authinfo *
-vfs_smb_get_authinfo (const char *host, const char *share, const char *domain, const char *user)
-{
- char *label;
- struct smb_authinfo *return_value = NULL;
-
- if (domain == NULL)
- domain = "";
- if (user == NULL)
- user = "";
-
- label = g_strdup_printf (_("Password for \\\\%s\\%s"), host, share);
-
- {
- char *ret_domain, *ret_user, *ret_password;
-
- quick_widget_t quick_widgets[] = {
- /* *INDENT-OFF* */
- QUICK_LABEL (label, NULL),
- QUICK_SEPARATOR (TRUE),
- QUICK_START_COLUMNS,
- QUICK_LABEL (N_("Domain:"), NULL),
- QUICK_SEPARATOR (FALSE),
- QUICK_LABEL (N_("Username:"), NULL),
- QUICK_SEPARATOR (FALSE),
- QUICK_LABEL (N_("Password:"), NULL),
- QUICK_NEXT_COLUMN,
- QUICK_INPUT (domain, "auth_domain", &ret_domain, NULL, FALSE, FALSE, INPUT_COMPLETE_HOSTNAMES),
- QUICK_SEPARATOR (FALSE),
- QUICK_INPUT (user, "auth_name", &ret_user, NULL, FALSE, FALSE, INPUT_COMPLETE_USERNAMES),
- QUICK_SEPARATOR (FALSE),
- QUICK_INPUT ("", "auth_password", &ret_password, NULL, TRUE, FALSE, INPUT_COMPLETE_NONE),
- QUICK_STOP_COLUMNS,
- QUICK_BUTTONS_OK_CANCEL,
- QUICK_END
- /* *INDENT-ON* */
- };
-
- quick_dialog_t qdlg = {
- -1, -1, 40,
- N_("SMB authentication"), "[Smb Authinfo]",
- quick_widgets, NULL, NULL
- };
-
- if (quick_dialog (&qdlg) != B_CANCEL)
- {
- return_value = vfs_smb_authinfo_new (host, share, ret_domain, ret_user, ret_password);
-
- g_free (ret_domain);
- g_free (ret_user);
- g_free (ret_password);
- }
- }
-
- g_free (label);
-
- return return_value;
-}
-#endif /* ENABLE_VFS_SMB */
-
-/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/cd.c
^
|
@@ -1,7 +1,7 @@
/*
cd_to() function.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -196,7 +196,7 @@
r_vpath = vfs_path_build_filename (p, path, (char *) NULL);
result = panel_cd (current_panel, r_vpath, cd_parse_command);
- vfs_path_free (r_vpath);
+ vfs_path_free (r_vpath, TRUE);
}
*s = c;
p = s + 1;
@@ -247,7 +247,7 @@
current_panel->cwd_vpath =
vfs_path_vtokens_get (tmp_vpath, 0, vfs_path_tokens_count (tmp_vpath) - 1);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
sync_tree (current_panel->cwd_vpath);
}
@@ -261,7 +261,7 @@
sync_tree (new_vpath);
}
- vfs_path_free (new_vpath);
+ vfs_path_free (new_vpath, TRUE);
}
else
{
@@ -289,7 +289,7 @@
g_free (d);
}
- vfs_path_free (q_vpath);
+ vfs_path_free (q_vpath, TRUE);
g_string_free (s_path, TRUE);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/chattr.c
^
|
@@ -1,11 +1,11 @@
/*
Chattr command -- for the Midnight Commander
- Copyright (C) 2020
+ Copyright (C) 2020-2022
Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -46,7 +46,7 @@
#include "lib/vfs/vfs.h"
#include "lib/widget.h"
-#include "src/keybind-defaults.h" /* chattr_map */
+#include "src/keymap.h" /* chattr_map */
#include "cmd.h" /* chattr_cmd(), chattr_get_as_str() */
@@ -178,7 +178,6 @@
{ FS_NOCOW_FL, 'C', N_("No COW"), FALSE, FALSE },
#ifdef FS_DAX_FL
/* added in v1.45.7
- TODO: clarify version after ext2fsprogs release
ext2fsprogs 1dd48bc23c3776df76459aff0c7723fff850ea45 2020-07-28 */
{ FS_DAX_FL, 'x', N_("Direct access for files"), FALSE, FALSE },
#endif
@@ -295,19 +294,19 @@
color = COLOR_NORMAL;
tty_setcolor (color);
- if (w->cols > fat->filename_width)
+ if (w->rect.cols > fat->filename_width)
{
- widget_gotoyx (w, 0, (w->cols - fat->filename_width) / 2);
+ widget_gotoyx (w, 0, (w->rect.cols - fat->filename_width) / 2);
tty_print_string (fat->filename);
}
else
{
widget_gotoyx (w, 0, 0);
- tty_print_string (str_trunc (fat->filename, w->cols));
+ tty_print_string (str_trunc (fat->filename, w->rect.cols));
}
/* hope that w->cols is greater than check_attr_num */
- widget_gotoyx (w, 1, (w->cols - check_attr_num) / 2);
+ widget_gotoyx (w, 1, (w->rect.cols - check_attr_num) / 2);
for (i = 0; i < check_attr_num; i++)
{
/* Do not set new color for each symbol. Try to use previous color. */
@@ -335,14 +334,14 @@
case MSG_RESIZE:
{
- Widget *wo = WIDGET (w->owner);
+ const WRect *wo = &CONST_WIDGET (w->owner)->rect;
widget_default_callback (w, sender, msg, parm, data);
/* intially file name may be wider than screen */
if (fat->filename_width > wo->cols - wx * 2)
{
- w->x = wo->x + wx;
- w->cols = wo->cols - wx * 2;
+ w->rect.x = wo->x + wx;
+ w->rect.cols = wo->cols - wx * 2;
}
return MSG_HANDLED;
}
@@ -361,14 +360,15 @@
static WFileAttrText *
fileattrtext_new (int y, int x, const char *filename, unsigned long attr)
{
+ WRect r = { y, x, 2, 1 };
WFileAttrText *fat;
- int width, cols;
+ int width;
width = str_term_width1 (filename);
- cols = MAX (width, (int) check_attr_num);
+ r.cols = MAX (width, (int) check_attr_num);
fat = g_new (WFileAttrText, 1);
- widget_init (WIDGET (fat), y, x, 2, cols, fileattrtext_callback, NULL);
+ widget_init (WIDGET (fat), &r, fileattrtext_callback, NULL);
fat->filename = g_strdup (filename);
fat->filename_width = width;
@@ -395,7 +395,7 @@
Widget *w;
/* find checkbox */
- w = WIDGET (g_list_nth_data (GROUP (cb)->widgets, Id - cb->top));
+ w = WIDGET (g_list_nth_data (CONST_GROUP (cb)->widgets, Id - cb->top));
check_attr[Id].selected = !check_attr[Id].selected;
@@ -414,27 +414,27 @@
int i;
/* Are we at the top? */
- widget_gotoyx (w, 0, w->cols);
+ widget_gotoyx (w, 0, w->rect.cols);
if (cb->top == 0)
tty_print_one_vline (TRUE);
else
tty_print_char ('^');
- max_line = w->lines - 1;
+ max_line = w->rect.lines - 1;
/* Are we at the bottom? */
- widget_gotoyx (w, max_line, w->cols);
- if (cb->top + w->lines == check_attr_mod_num || w->lines >= check_attr_mod_num)
+ widget_gotoyx (w, max_line, w->rect.cols);
+ if (cb->top + w->rect.lines == check_attr_mod_num || w->rect.lines >= check_attr_mod_num)
tty_print_one_vline (TRUE);
else
tty_print_char ('v');
/* Now draw the nice relative pointer */
- line = 1 + (cb->pos * (w->lines - 2)) / check_attr_mod_num;
+ line = 1 + (cb->pos * (w->rect.lines - 2)) / check_attr_mod_num;
for (i = 1; i < max_line; i++)
{
- widget_gotoyx (w, i, w->cols);
+ widget_gotoyx (w, i, w->rect.cols);
if (i != line)
tty_print_one_vline (TRUE);
else
@@ -454,14 +454,14 @@
colors = widget_get_colors (w);
tty_setcolor (colors[DLG_COLOR_NORMAL]);
- tty_fill_region (w->y, w->x - 1, w->lines, w->cols + 1, ' ');
+ tty_fill_region (w->rect.y, w->rect.x - 1, w->rect.lines, w->rect.cols + 1, ' ');
/* redraw checkboxes */
group_default_callback (w, NULL, MSG_DRAW, 0, NULL);
/* draw scrollbar */
tty_setcolor (colors[DLG_COLOR_NORMAL]);
- if (!mc_global.tty.slow_terminal && check_attr_mod_num > w->lines)
+ if (!mc_global.tty.slow_terminal && check_attr_mod_num > w->rect.lines)
chattrboxes_draw_scrollbar (cb);
/* mark selected checkboxes */
@@ -512,7 +512,7 @@
int i;
GList *l;
- for (i = cb->top, l = GROUP (cb)->widgets; l != NULL; i++, l = g_list_next (l))
+ for (i = cb->top, l = CONST_GROUP (cb)->widgets; l != NULL; i++, l = g_list_next (l))
{
int m;
@@ -526,7 +526,7 @@
static cb_ret_t
chattrboxes_down (WChattrBoxes * cb)
{
- if (cb->pos == cb->top + WIDGET (cb)->lines - 1)
+ if (cb->pos == cb->top + WIDGET (cb)->rect.lines - 1)
{
/* We are on the last checkbox.
Keep this position. */
@@ -571,7 +571,7 @@
}
else
{
- int i = WIDGET (cb)->lines;
+ int i = WIDGET (cb)->rect.lines;
checkboxes_save_state (cb);
@@ -609,7 +609,7 @@
checkboxes_save_state (cb);
cb->pos = check_attr_mod_num - 1;
- cb->top = cb->pos - WIDGET (cb)->lines + 1;
+ cb->top = cb->pos - WIDGET (cb)->rect.lines + 1;
l = g_list_last (GROUP (cb)->widgets);
chattrboxes_rename (cb);
widget_select (WIDGET (l->data));
@@ -667,7 +667,7 @@
}
else
{
- int i = WIDGET (cb)->lines;
+ int i = WIDGET (cb)->rect.lines;
checkboxes_save_state (cb);
@@ -877,21 +877,38 @@
/* --------------------------------------------------------------------------------------------- */
static WChattrBoxes *
-chattrboxes_new (int y, int x, int height, int width)
+chattrboxes_new (const WRect * r)
{
WChattrBoxes *cb;
Widget *w;
-
- if (height <= 0)
- height = 1;
+ WGroup *cbg;
+ int i;
cb = g_new0 (WChattrBoxes, 1);
w = WIDGET (cb);
- group_init (GROUP (cb), y, x, height, width, chattrboxes_callback, chattrboxes_mouse_callback);
+ cbg = GROUP (cb);
+ group_init (cbg, r, chattrboxes_callback, chattrboxes_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR;
w->mouse_handler = chattrboxes_handle_mouse_event;
w->keymap = chattr_map;
+ /* create checkboxes */
+ for (i = 0; i < r->lines; i++)
+ {
+ int m;
+ WCheck *check;
+
+ m = check_attr_mod[i];
+
+ check = check_new (i, 0, check_attr[m].state, NULL);
+ group_add_widget (cbg, check);
+ }
+
+ chattrboxes_rename (cb);
+
+ /* select first checkbox */
+ cbg->current = cbg->widgets;
+
return cb;
}
@@ -945,7 +962,7 @@
static WDialog *
chattr_dlg_create (WPanel * panel, const char *fname, unsigned long attr)
{
- const Widget *mw = CONST_WIDGET (midnight_dlg);
+ Widget *mw = WIDGET (WIDGET (panel)->owner);
gboolean single_set;
WDialog *ch_dlg;
int lines, cols;
@@ -953,9 +970,10 @@
size_t i;
int y;
Widget *dw;
- WGroup *dg, *cbg;
+ WGroup *dg;
WChattrBoxes *cb;
const int cb_scrollbar_width = 1;
+ WRect r;
/* prepate to set up checkbox states */
for (i = 0; i < check_attr_num; i++)
@@ -969,11 +987,11 @@
if (!single_set)
lines += 3;
- if (lines >= mw->lines - 2)
+ if (lines >= mw->rect.lines - 2)
{
int dl;
- dl = lines - (mw->lines - 2);
+ dl = lines - (mw->rect.lines - 2);
lines -= dl;
checkboxes_lines -= dl;
}
@@ -987,35 +1005,25 @@
y = 2;
file_attr = fileattrtext_new (y, wx, fname, attr);
group_add_widget_autopos (dg, file_attr, WPOS_KEEP_TOP | WPOS_CENTER_HORZ, NULL);
- y += WIDGET (file_attr)->lines;
+ y += WIDGET (file_attr)->rect.lines;
group_add_widget (dg, hline_new (y++, -1, -1));
- if (cols < WIDGET (file_attr)->cols)
+ if (cols < WIDGET (file_attr)->rect.cols)
{
- cols = WIDGET (file_attr)->cols;
- cols = MIN (cols, mw->cols - wx * 2);
- widget_set_size (dw, dw->y, dw->x, lines, cols + wx * 2);
+ r = dw->rect;
+ cols = WIDGET (file_attr)->rect.cols;
+ cols = MIN (cols, mw->rect.cols - wx * 2);
+ r.cols = cols + wx * 2;
+ r.lines = lines;
+ widget_set_size_rect (dw, &r);
}
- cb = chattrboxes_new (y++, wx, checkboxes_lines, cols);
- cbg = GROUP (cb);
+ checkboxes_lines = MIN (check_attr_mod_num, checkboxes_lines);
+ rect_init (&r, y++, wx, checkboxes_lines > 0 ? checkboxes_lines : 1, cols);
+ cb = chattrboxes_new (&r);
group_add_widget_autopos (dg, cb, WPOS_KEEP_TOP | WPOS_KEEP_HORZ, NULL);
- /* create checkboxes */
- for (i = 0; i < (size_t) check_attr_mod_num && i < (size_t) checkboxes_lines; i++)
- {
- int m;
- WCheck *check;
-
- m = check_attr_mod[i];
-
- check = check_new (i, 0, check_attr[m].state, NULL);
- group_add_widget (cbg, check);
- }
-
- chattrboxes_rename (cb);
-
- y += i - 1;
+ y += checkboxes_lines - 1;
cols = 0;
for (i = single_set ? (BUTTONS - 2) : 0; i < BUTTONS; i++)
@@ -1023,43 +1031,50 @@
if (i == 0 || i == BUTTONS - 2)
group_add_widget (dg, hline_new (y++, -1, -1));
- chattr_but[i].button = WIDGET (button_new (y, dw->cols / 2 + 1 - chattr_but[i].width,
+ chattr_but[i].button = WIDGET (button_new (y, dw->rect.cols / 2 + 1 - chattr_but[i].width,
chattr_but[i].ret_cmd, chattr_but[i].flags,
chattr_but[i].text, NULL));
group_add_widget (dg, chattr_but[i].button);
i++;
- chattr_but[i].button = WIDGET (button_new (y++, dw->cols / 2 + 2, chattr_but[i].ret_cmd,
- chattr_but[i].flags, chattr_but[i].text, NULL));
+ chattr_but[i].button =
+ WIDGET (button_new (y++, dw->rect.cols / 2 + 2, chattr_but[i].ret_cmd,
+ chattr_but[i].flags, chattr_but[i].text, NULL));
group_add_widget (dg, chattr_but[i].button);
/* two buttons in a row */
- cols = MAX (cols, chattr_but[i - 1].button->cols + 1 + chattr_but[i].button->cols);
+ cols =
+ MAX (cols, chattr_but[i - 1].button->rect.cols + 1 + chattr_but[i].button->rect.cols);
}
/* adjust dialog size and button positions */
cols += 6;
- if (cols > dw->cols)
+ if (cols > dw->rect.cols)
{
- widget_set_size (dw, dw->y, dw->x, lines, cols);
+ r = dw->rect;
+ r.lines = lines;
+ r.cols = cols;
+ widget_set_size_rect (dw, &r);
/* dialog center */
- cols = dw->x + dw->cols / 2 + 1;
+ cols = dw->rect.x + dw->rect.cols / 2 + 1;
for (i = single_set ? (BUTTONS - 2) : 0; i < BUTTONS; i++)
{
Widget *b;
b = chattr_but[i++].button;
- widget_set_size (b, b->y, cols - b->cols, b->lines, b->cols);
+ r = b->rect;
+ r.x = cols - r.cols;
+ widget_set_size_rect (b, &r);
b = chattr_but[i].button;
- widget_set_size (b, b->y, cols + 1, b->lines, b->cols);
+ r = b->rect;
+ r.x = cols + 1;
+ widget_set_size_rect (b, &r);
}
}
- /* select first checkbox */
- cbg->current = cbg->widgets;
widget_select (WIDGET (cb));
return ch_dlg;
@@ -1077,7 +1092,7 @@
/* --------------------------------------------------------------------------------------------- */
-static const char *
+static const GString *
next_file (const WPanel * panel)
{
while (!panel->dir.list[current_file].f.marked)
@@ -1159,10 +1174,10 @@
do
{
- const char *fname;
+ const GString *fname;
fname = next_file (panel);
- ok = (fgetflags (fname, &m) == 0);
+ ok = (fgetflags (fname->str, &m) == 0);
if (!ok)
{
@@ -1175,10 +1190,10 @@
}
else
{
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
flags = m;
ok = do_chattr (panel, vpath, m);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
}
while (ok && panel->marked != 0);
@@ -1203,7 +1218,8 @@
{ /* do while any files remaining */
vfs_path_t *vpath;
WDialog *ch_dlg;
- const char *fname, *fname2;
+ const GString *fname;
+ const char *fname2;
size_t i;
int result;
@@ -1224,22 +1240,22 @@
else
fname = selection (panel)->fname; /* single file */
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
fname2 = vfs_path_as_str (vpath);
if (fgetflags (fname2, &flags) != 0)
{
- message (D_ERROR, MSG_ERROR, _("Cannot get flags of \"%s\"\n%s"), fname,
+ message (D_ERROR, MSG_ERROR, _("Cannot get flags of \"%s\"\n%s"), fname->str,
unix_error_string (errno));
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
break;
}
flags_changed = FALSE;
- ch_dlg = chattr_dlg_create (panel, fname, flags);
+ ch_dlg = chattr_dlg_create (panel, fname->str, flags);
result = dlg_run (ch_dlg);
- dlg_destroy (ch_dlg);
+ widget_destroy (WIDGET (ch_dlg));
switch (result)
{
@@ -1254,7 +1270,7 @@
{
/* single or last file */
if (fsetflags (fname2, flags) == -1 && !ignore_all)
- message (D_ERROR, MSG_ERROR, _("Cannot chattr \"%s\"\n%s"), fname,
+ message (D_ERROR, MSG_ERROR, _("Cannot chattr \"%s\"\n%s"), fname->str,
unix_error_string (errno));
end_chattr = TRUE;
}
@@ -1324,7 +1340,7 @@
need_update = TRUE;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
while (panel->marked != 0 && !end_chattr);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/chmod.c
^
|
@@ -1,7 +1,7 @@
/*
Chmod command -- for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -209,8 +209,8 @@
for (i = 0; i < BUTTONS_PERM; i++)
chmod_draw_select (h, i);
- y = WIDGET (file_gb)->y + 1;
- x = WIDGET (file_gb)->x + 2;
+ y = WIDGET (file_gb)->rect.y + 1;
+ x = WIDGET (file_gb)->rect.x + 2;
tty_gotoyx (y, x);
tty_print_string (file_info_labels[0]);
@@ -372,11 +372,11 @@
for (; i < BUTTONS - 2; i++)
{
y = lines - chmod_but[i].y;
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chmod_but[i].len,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chmod_but[i].len,
chmod_but[i].ret_cmd, chmod_but[i].flags,
chmod_but[i].text, NULL));
i++;
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1,
chmod_but[i].ret_cmd, chmod_but[i].flags,
chmod_but[i].text, NULL));
}
@@ -385,11 +385,11 @@
i = BUTTONS - 2;
y = lines - chmod_but[i].y;
group_add_widget (g, hline_new (y - 1, -1, -1));
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chmod_but[i].len,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chmod_but[i].len,
chmod_but[i].ret_cmd, chmod_but[i].flags, chmod_but[i].text,
NULL));
i++;
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, chmod_but[i].ret_cmd,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, chmod_but[i].ret_cmd,
chmod_but[i].flags, chmod_but[i].text, NULL));
/* select first checkbox */
@@ -410,7 +410,7 @@
/* --------------------------------------------------------------------------------------------- */
-static const char *
+static const GString *
next_file (const WPanel * panel)
{
while (!panel->dir.list[current_file].f.marked)
@@ -492,10 +492,10 @@
do
{
- const char *fname;
+ const GString *fname;
fname = next_file (panel);
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
ok = (mc_stat (vpath, sf) == 0);
if (!ok)
@@ -514,7 +514,7 @@
ok = do_chmod (panel, vpath, sf);
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
while (ok && panel->marked != 0);
}
@@ -539,7 +539,7 @@
vfs_path_t *vpath;
WDialog *ch_dlg;
struct stat sf_stat;
- const char *fname;
+ const GString *fname;
int i, result;
do_refresh ();
@@ -552,17 +552,17 @@
else
fname = selection (panel)->fname; /* single file */
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
if (mc_stat (vpath, &sf_stat) != 0)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
break;
}
ch_mode = sf_stat.st_mode;
- ch_dlg = chmod_dlg_create (panel, fname, &sf_stat);
+ ch_dlg = chmod_dlg_create (panel, fname->str, &sf_stat);
result = dlg_run (ch_dlg);
switch (result)
@@ -578,7 +578,7 @@
{
/* single or last file */
if (mc_chmod (vpath, ch_mode) == -1 && !ignore_all)
- message (D_ERROR, MSG_ERROR, _("Cannot chmod \"%s\"\n%s"), fname,
+ message (D_ERROR, MSG_ERROR, _("Cannot chmod \"%s\"\n%s"), fname->str,
unix_error_string (errno));
end_chmod = TRUE;
}
@@ -648,9 +648,9 @@
need_update = TRUE;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
- dlg_destroy (ch_dlg);
+ widget_destroy (WIDGET (ch_dlg));
}
while (panel->marked != 0 && !end_chmod);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/chown.c
^
|
@@ -1,7 +1,7 @@
/*
Chown command -- for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -258,11 +258,11 @@
i = BUTTONS - 2;
y = lines - chown_but[i].y;
group_add_widget (g, hline_new (y - 1, -1, -1));
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 - chown_but[i].len,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 - chown_but[i].len,
chown_but[i].ret_cmd, chown_but[i].flags, chown_but[i].text,
NULL));
i++;
- group_add_widget (g, button_new (y, WIDGET (ch_dlg)->cols / 2 + 1, chown_but[i].ret_cmd,
+ group_add_widget (g, button_new (y, WIDGET (ch_dlg)->rect.cols / 2 + 1, chown_but[i].ret_cmd,
chown_but[i].flags, chown_but[i].text, NULL));
/* select first listbox */
@@ -283,7 +283,7 @@
/* --------------------------------------------------------------------------------------------- */
-static const char *
+static const GString *
next_file (const WPanel * panel)
{
while (!panel->dir.list[current_file].f.marked)
@@ -362,11 +362,11 @@
do
{
- const char *fname;
+ const GString *fname;
struct stat sf;
fname = next_file (panel);
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
ok = (mc_stat (vpath, &sf) == 0);
if (!ok)
@@ -381,7 +381,7 @@
else
ok = do_chown (panel, vpath, u, g);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
while (ok && panel->marked != 0);
}
@@ -406,7 +406,7 @@
vfs_path_t *vpath;
WDialog *ch_dlg;
struct stat sf_stat;
- const char *fname;
+ const GString *fname;
int result;
char buffer[BUF_TINY];
uid_t new_user = (uid_t) (-1);
@@ -422,11 +422,11 @@
else
fname = selection (panel)->fname; /* single file */
- vpath = vfs_path_from_str (fname);
+ vpath = vfs_path_from_str (fname->str);
if (mc_stat (vpath, &sf_stat) != 0)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
break;
}
@@ -436,7 +436,7 @@
listbox_select_entry (l_user, listbox_search_text (l_user, get_owner (sf_stat.st_uid)));
listbox_select_entry (l_group, listbox_search_text (l_group, get_group (sf_stat.st_gid)));
- chown_label (0, str_trunc (fname, GW - 4));
+ chown_label (0, str_trunc (fname->str, GW - 4));
chown_label (1, str_trunc (get_owner (sf_stat.st_uid), GW - 4));
chown_label (2, str_trunc (get_group (sf_stat.st_gid), GW - 4));
size_trunc_len (buffer, GW - 4, sf_stat.st_size, 0, panels_options.kilobyte_si);
@@ -473,7 +473,7 @@
/* single or last file */
if (mc_chown (vpath, new_user, new_group) == -1)
message (D_ERROR, MSG_ERROR, _("Cannot chown \"%s\"\n%s"),
- fname, unix_error_string (errno));
+ fname->str, unix_error_string (errno));
end_chown = TRUE;
}
else if (!try_chown (vpath, new_user, new_group))
@@ -537,9 +537,9 @@
need_update = TRUE;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
- dlg_destroy (ch_dlg);
+ widget_destroy (WIDGET (ch_dlg));
}
while (panel->marked != 0 && !end_chown);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/cmd.c
^
|
@@ -2,11 +2,11 @@
Routines invoked by a function key
They normally operate on the current panel.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2013-2015
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -80,10 +80,8 @@
#endif
#include "fileopctx.h"
-#include "file.h" /* file operation routines */
#include "filenot.h"
#include "hotlist.h" /* hotlist_show() */
-#include "panel.h" /* WPanel */
#include "tree.h" /* tree_chdir() */
#include "filemanager.h" /* change_panel() */
#include "command.h" /* cmdline */
@@ -140,10 +138,10 @@
_("&Yes"), _("&No")) != 0)
return;
- fname_vpath = vfs_path_from_str (selection (panel)->fname);
+ fname_vpath = vfs_path_from_str (selection (panel)->fname->str);
if (!panel_cd (panel, fname_vpath, cd_exact))
message (D_ERROR, MSG_ERROR, _("Cannot change directory"));
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
}
else
{
@@ -151,9 +149,9 @@
vfs_path_t *filename_vpath;
file_idx = panel->selected;
- filename_vpath = vfs_path_from_str (panel->dir.list[file_idx].fname);
+ filename_vpath = vfs_path_from_str (panel->dir.list[file_idx].fname->str);
view_file (filename_vpath, plain_view, use_internal_view);
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
repaint_screen ();
@@ -169,40 +167,6 @@
/* --------------------------------------------------------------------------------------------- */
-static void
-set_panel_filter_to (WPanel * p, char *filter)
-{
- MC_PTR_FREE (p->filter);
-
- /* Three ways to clear filter: NULL, "", "*" */
- if (filter == NULL || filter[0] == '\0' || (filter[0] == '*' && filter[1] == '\0'))
- g_free (filter);
- else
- p->filter = filter;
- reread_cmd ();
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Set a given panel filter expression */
-
-static void
-set_panel_filter (WPanel * p)
-{
- char *reg_exp;
- const char *x;
-
- x = p->filter != NULL ? p->filter : easy_patterns ? "*" : ".";
-
- reg_exp = input_dialog_help (_("Filter"),
- _("Set expression for filtering filenames"),
- "[Filter...]", MC_HISTORY_FM_PANEL_FILTER, x, FALSE,
- INPUT_COMPLETE_FILENAMES);
- if (reg_exp != NULL)
- set_panel_filter_to (p, reg_exp);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
static int
compare_files (const vfs_path_t * vpath1, const vfs_path_t * vpath2, off_t size)
{
@@ -266,7 +230,7 @@
/* --------------------------------------------------------------------------------------------- */
static void
-compare_dir (WPanel * panel, WPanel * other, enum CompareMode mode)
+compare_dir (WPanel * panel, const WPanel * other, enum CompareMode mode)
{
int i, j;
@@ -279,6 +243,7 @@
for (i = 0; i < panel->dir.len; i++)
{
file_entry_t *source = &panel->dir.list[i];
+ const char *source_fname;
/* Default: unmarked */
file_mark (panel, i, 0);
@@ -287,10 +252,22 @@
if (S_ISDIR (source->st.st_mode))
continue;
+ source_fname = source->fname->str;
+ if (panel->is_panelized)
+ source_fname = x_basename (source_fname);
+
/* Search the corresponding entry from the other panel */
for (j = 0; j < other->dir.len; j++)
- if (strcmp (source->fname, other->dir.list[j].fname) == 0)
+ {
+ const char *other_fname;
+
+ other_fname = other->dir.list[j].fname->str;
+ if (other->is_panelized)
+ other_fname = x_basename (other_fname);
+
+ if (strcmp (source_fname, other_fname) == 0)
break;
+ }
if (j >= other->dir.len)
/* Not found -> mark */
@@ -329,12 +306,14 @@
{
vfs_path_t *src_name, *dst_name;
- src_name = vfs_path_append_new (panel->cwd_vpath, source->fname, (char *) NULL);
- dst_name = vfs_path_append_new (other->cwd_vpath, target->fname, (char *) NULL);
+ src_name =
+ vfs_path_append_new (panel->cwd_vpath, source->fname->str, (char *) NULL);
+ dst_name =
+ vfs_path_append_new (other->cwd_vpath, target->fname->str, (char *) NULL);
if (compare_files (src_name, dst_name, source->st.st_size))
do_file_mark (panel, i, 1);
- vfs_path_free (src_name);
- vfs_path_free (dst_name);
+ vfs_path_free (src_name, TRUE);
+ vfs_path_free (dst_name, TRUE);
}
}
} /* for (i ...) */
@@ -364,7 +343,7 @@
dest_vpath = vfs_path_from_str (dest);
if (mc_link (fname_vpath, dest_vpath) == -1)
message (D_ERROR, MSG_ERROR, _("link: %s"), unix_error_string (errno));
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
}
else
{
@@ -384,14 +363,14 @@
char *s_str;
s_str = diff_two_paths (other_panel->cwd_vpath, s);
- vfs_path_free (s);
+ vfs_path_free (s, TRUE);
s = vfs_path_from_str_flags (s_str, VPF_NO_CANON);
g_free (s_str);
}
symlink_box (s, d, &dest, &src);
- vfs_path_free (d);
- vfs_path_free (s);
+ vfs_path_free (d, TRUE);
+ vfs_path_free (s, TRUE);
if (dest == NULL || *dest == '\0' || src == NULL || *src == '\0')
goto cleanup;
@@ -403,14 +382,14 @@
s = vfs_path_from_str (src);
if (mc_symlink (dest_vpath, s) == -1)
message (D_ERROR, MSG_ERROR, _("symlink: %s"), unix_error_string (errno));
- vfs_path_free (s);
+ vfs_path_free (s, TRUE);
}
update_panels (UP_OPTIMIZE, UP_KEEPSEL);
repaint_screen ();
cleanup:
- vfs_path_free (dest_vpath);
+ vfs_path_free (dest_vpath, TRUE);
g_free (src);
g_free (dest);
}
@@ -467,7 +446,7 @@
if (save_type != view_listing)
create_panel (MENU_PANEL_IDX, save_type);
}
- vfs_path_free (cd_vpath);
+ vfs_path_free (cd_vpath, TRUE);
}
g_free (cd_path);
@@ -626,7 +605,7 @@
filename =
input_expand_dialog (_("View file"), _("Filename:"),
- MC_HISTORY_FM_VIEW_FILE, selection (panel)->fname,
+ MC_HISTORY_FM_VIEW_FILE, selection (panel)->fname->str,
INPUT_COMPLETE_FILENAMES);
if (filename == NULL)
return;
@@ -634,7 +613,7 @@
vpath = vfs_path_from_str (filename);
g_free (filename);
view_file (vpath, FALSE, use_internal_view);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -654,9 +633,9 @@
const char *initial_command;
if (input_is_empty (cmdline))
- initial_command = selection (panel)->fname;
+ initial_command = selection (panel)->fname->str;
else
- initial_command = cmdline->buffer;
+ initial_command = input_get_ctext (cmdline);
command =
input_dialog (_("Filtered view"),
@@ -716,10 +695,10 @@
{
vfs_path_t *fname;
- fname = vfs_path_from_str (selection (panel)->fname);
+ fname = vfs_path_from_str (selection (panel)->fname->str);
if (regex_command (fname, "Edit") == 0)
do_edit (fname);
- vfs_path_free (fname);
+ vfs_path_free (fname, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -730,10 +709,10 @@
{
vfs_path_t *fname;
- fname = vfs_path_from_str (selection (panel)->fname);
+ fname = vfs_path_from_str (selection (panel)->fname->str);
if (regex_command (fname, "Edit") == 0)
edit_file_at_line (fname, TRUE, 1);
- vfs_path_free (fname);
+ vfs_path_free (fname, TRUE);
}
#endif
@@ -764,67 +743,7 @@
#endif
do_edit (fname_vpath);
- vfs_path_free (fname_vpath);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked by F5. Copy, default to the other panel. */
-
-void
-copy_cmd (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_COPY, FALSE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked by F6. Move/rename, default to the other panel, ignore marks. */
-
-void
-rename_cmd (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_MOVE, FALSE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked by F15. Copy, default to the same panel, ignore marks. */
-
-void
-copy_cmd_local (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_COPY, TRUE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked by F16. Move/rename, default to the same panel. */
-
-void
-rename_cmd_local (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_MOVE, TRUE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
+ vfs_path_free (fname_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -836,8 +755,8 @@
const char *name = "";
/* If 'on' then automatically fills name with current selected item name */
- if (auto_fill_mkdir_name && !DIR_IS_DOTDOT (selection (panel)->fname))
- name = selection (panel)->fname;
+ if (auto_fill_mkdir_name && !DIR_IS_DOTDOT (selection (panel)->fname->str))
+ name = selection (panel)->fname->str;
dir =
input_expand_dialog (_("Create a new Directory"),
@@ -873,7 +792,7 @@
select_item (panel);
}
- vfs_path_free (absdir);
+ vfs_path_free (absdir, TRUE);
}
g_free (dir);
}
@@ -881,50 +800,6 @@
/* --------------------------------------------------------------------------------------------- */
void
-delete_cmd (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_DELETE, FALSE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked by F18. Remove selected file, regardless of marked files. */
-
-void
-delete_cmd_local (WPanel * panel)
-{
- save_cwds_stat ();
-
- if (panel_operate (panel, OP_DELETE, TRUE))
- {
- update_panels (UP_OPTIMIZE, UP_KEEPSEL);
- repaint_screen ();
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-/** Invoked from the left/right menus */
-
-void
-filter_cmd (void)
-{
- if (SELECTED_IS_PANEL)
- {
- WPanel *p;
-
- p = MENU_PANEL;
- set_panel_filter (p);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
reread_cmd (void)
{
panel_update_flags_t flag = UP_ONLY_CURRENT;
@@ -950,29 +825,29 @@
_("Which extension file you want to edit?"), D_NORMAL, 2,
_("&User"), _("&System Wide"));
- extdir_vpath = vfs_path_build_filename (mc_global.sysconfig_dir, MC_LIB_EXT, (char *) NULL);
+ extdir_vpath = vfs_path_build_filename (mc_global.sysconfig_dir, MC_EXT_FILE, (char *) NULL);
if (dir == 0)
{
vfs_path_t *buffer_vpath;
- buffer_vpath = mc_config_get_full_vpath (MC_FILEBIND_FILE);
+ buffer_vpath = mc_config_get_full_vpath (MC_EXT_FILE);
check_for_default (extdir_vpath, buffer_vpath);
do_edit (buffer_vpath);
- vfs_path_free (buffer_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
}
else if (dir == 1)
{
if (!exist_file (vfs_path_get_last_path_str (extdir_vpath)))
{
- vfs_path_free (extdir_vpath);
+ vfs_path_free (extdir_vpath, TRUE);
extdir_vpath =
- vfs_path_build_filename (mc_global.share_data_dir, MC_LIB_EXT, (char *) NULL);
+ vfs_path_build_filename (mc_global.share_data_dir, MC_EXT_FILE, (char *) NULL);
}
do_edit (extdir_vpath);
}
- vfs_path_free (extdir_vpath);
+ vfs_path_free (extdir_vpath, TRUE);
flush_extension_file ();
}
@@ -996,7 +871,7 @@
if (!exist_file (vfs_path_get_last_path_str (menufile_vpath)))
{
- vfs_path_free (menufile_vpath);
+ vfs_path_free (menufile_vpath, TRUE);
menufile_vpath =
vfs_path_build_filename (mc_global.share_data_dir, MC_GLOBAL_MENU, (char *) NULL);
}
@@ -1019,21 +894,21 @@
vfs_path_build_filename (mc_global.sysconfig_dir, MC_GLOBAL_MENU, (char *) NULL);
if (!exist_file (vfs_path_get_last_path_str (buffer_vpath)))
{
- vfs_path_free (buffer_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
buffer_vpath =
vfs_path_build_filename (mc_global.share_data_dir, MC_GLOBAL_MENU, (char *) NULL);
}
break;
default:
- vfs_path_free (menufile_vpath);
+ vfs_path_free (menufile_vpath, TRUE);
return;
}
do_edit (buffer_vpath);
- vfs_path_free (buffer_vpath);
- vfs_path_free (menufile_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
+ vfs_path_free (menufile_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1059,20 +934,20 @@
buffer_vpath = mc_config_get_full_vpath (MC_FHL_INI_FILE);
check_for_default (fhlfile_vpath, buffer_vpath);
do_edit (buffer_vpath);
- vfs_path_free (buffer_vpath);
+ vfs_path_free (buffer_vpath, TRUE);
}
else if (dir == 1)
{
if (!exist_file (vfs_path_get_last_path_str (fhlfile_vpath)))
{
- vfs_path_free (fhlfile_vpath);
+ vfs_path_free (fhlfile_vpath, TRUE);
fhlfile_vpath =
vfs_path_build_filename (mc_global.sysconfig_dir, MC_FHL_INI_FILE, (char *) NULL);
}
do_edit (fhlfile_vpath);
}
- vfs_path_free (fhlfile_vpath);
+ vfs_path_free (fhlfile_vpath, TRUE);
/* refresh highlighting rules */
mc_fhl_free (&mc_filehighlight);
mc_filehighlight = mc_fhl_new (TRUE);
@@ -1095,7 +970,7 @@
vpath = vfs_path_from_str (target);
tree_chdir (the_tree, vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
else
{
@@ -1105,7 +980,7 @@
deprecated_vpath = vfs_path_from_str_flags (target, VPF_USE_DEPRECATED_PARSER);
deprecated_path = vfs_path_as_str (deprecated_vpath);
cd_to (deprecated_path);
- vfs_path_free (deprecated_vpath);
+ vfs_path_free (deprecated_vpath, TRUE);
}
g_free (target);
@@ -1127,7 +1002,7 @@
target_vpath = vfs_path_from_str (target);
if (!panel_cd (current_panel, target_vpath, cd_exact))
message (D_ERROR, MSG_ERROR, _("Cannot change directory"));
- vfs_path_free (target_vpath);
+ vfs_path_free (target_vpath, TRUE);
g_free (target);
}
#endif /* ENABLE_VFS */
@@ -1197,7 +1072,7 @@
void
link_cmd (link_type_t link_type)
{
- char *filename = selection (current_panel)->fname;
+ const char *filename = selection (current_panel)->fname->str;
if (filename != NULL)
do_link (link_type, filename);
@@ -1212,7 +1087,7 @@
const char *p;
fe = selection (current_panel);
- p = fe->fname;
+ p = fe->fname->str;
if (!S_ISLNK (fe->st.st_mode))
message (D_ERROR, MSG_ERROR, _("'%s' is not a symbolic link"), p);
@@ -1253,10 +1128,10 @@
if (mc_symlink (dest_vpath, p_vpath) == -1)
message (D_ERROR, MSG_ERROR, _("edit symlink: %s"),
unix_error_string (errno));
- vfs_path_free (dest_vpath);
+ vfs_path_free (dest_vpath, TRUE);
}
- vfs_path_free (p_vpath);
+ vfs_path_free (p_vpath, TRUE);
update_panels (UP_OPTIMIZE, UP_KEEPSEL);
repaint_screen ();
@@ -1327,17 +1202,6 @@
/* --------------------------------------------------------------------------------------------- */
-#ifdef ENABLE_VFS_SMB
-void
-smblink_cmd (void)
-{
- nice_cd (_("SMB link to machine"), _(machine_str),
- "[SMB File System]", ":smblink_cmd: SMB link to machine ", "smb://", 0, TRUE);
-}
-#endif /* ENABLE_VFS_SMB */
-
-/* --------------------------------------------------------------------------------------------- */
-
#ifdef ENABLE_VFS_UNDELFS
void
undelete_cmd (void)
@@ -1377,7 +1241,7 @@
{
const file_entry_t *entry = &panel->dir.list[panel->selected];
- if ((S_ISDIR (entry->st.st_mode) && DIR_IS_DOTDOT (entry->fname)) || panel->dirs_marked)
+ if ((S_ISDIR (entry->st.st_mode) && DIR_IS_DOTDOT (entry->fname->str)) || panel->dirs_marked)
dirsizes_cmd (panel);
else
single_dirsize_cmd (panel);
@@ -1390,7 +1254,7 @@
{
file_entry_t *entry = &panel->dir.list[panel->selected];
- if (S_ISDIR (entry->st.st_mode) && !DIR_IS_DOTDOT (entry->fname))
+ if (S_ISDIR (entry->st.st_mode) && !DIR_IS_DOTDOT (entry->fname->str))
{
size_t dir_count = 0;
size_t count = 0;
@@ -1398,7 +1262,7 @@
dirsize_status_msg_t dsm;
vfs_path_t *p;
- p = vfs_path_from_str (entry->fname);
+ p = vfs_path_from_str (entry->fname->str);
memset (&dsm, 0, sizeof (dsm));
status_msg_init (STATUS_MSG (&dsm), _("Directory scanning"), 0, dirsize_status_init_cb,
@@ -1410,7 +1274,7 @@
entry->f.dir_size_computed = 1;
}
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
status_msg_deinit (STATUS_MSG (&dsm));
}
@@ -1441,7 +1305,7 @@
for (i = 0; i < panel->dir.len; i++)
if (S_ISDIR (panel->dir.list[i].st.st_mode)
&& ((panel->dirs_marked != 0 && panel->dir.list[i].f.marked)
- || panel->dirs_marked == 0) && !DIR_IS_DOTDOT (panel->dir.list[i].fname))
+ || panel->dirs_marked == 0) && !DIR_IS_DOTDOT (panel->dir.list[i].fname->str))
{
vfs_path_t *p;
size_t dir_count = 0;
@@ -1449,9 +1313,9 @@
uintmax_t total = 0;
gboolean ok;
- p = vfs_path_from_str (panel->dir.list[i].fname);
+ p = vfs_path_from_str (panel->dir.list[i].fname->str);
ok = compute_dir_size (p, &dsm, &dir_count, &count, &total, FALSE) != FILE_CONT;
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
if (ok)
break;
@@ -1485,7 +1349,7 @@
else
message (D_ERROR, _("Setup"), _("Unable to save setup to %s"), path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1526,7 +1390,7 @@
p = PANEL (get_panel_widget (MENU_PANEL_IDX));
p->is_panelized = FALSE;
- set_panel_filter_to (p, NULL); /* including panel reload */
+ panel_set_filter (p, NULL); /* including panel reload */
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/cmd.h
^
|
@@ -9,6 +9,7 @@
#include "lib/global.h"
+#include "file.h" /* panel_operate() */
#include "panel.h"
/*** typedefs(not structures) and defined constants **********************************************/
@@ -37,9 +38,6 @@
#ifdef ENABLE_VFS_FISH
void fishlink_cmd (void);
#endif
-#ifdef ENABLE_VFS_SMB
-void smblink_cmd (void);
-#endif
void undelete_cmd (void);
void help_cmd (void);
void smart_dirsize_cmd (WPanel * panel);
@@ -59,14 +57,7 @@
#ifdef USE_INTERNAL_EDIT
void edit_cmd_force_internal (const WPanel * panel);
#endif
-void copy_cmd (WPanel * panel);
-void copy_cmd_local (WPanel * panel);
-void rename_cmd (WPanel * panel);
-void rename_cmd_local (WPanel * panel);
void mkdir_cmd (WPanel * panel);
-void delete_cmd (WPanel * panel);
-void delete_cmd_local (WPanel * panel);
-void filter_cmd (void);
void reread_cmd (void);
void vfs_list (WPanel * panel);
void ext_cmd (void);
@@ -107,5 +98,75 @@
/* find.c */
void find_cmd (WPanel * panel);
+/* --------------------------------------------------------------------------------------------- */
/*** inline functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Copy, default to the other panel.
+ */
+
+static inline void
+copy_cmd (WPanel * panel)
+{
+ panel_operate (panel, OP_COPY, FALSE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Copy, default to the same panel, ignore marks.
+ */
+
+static inline void
+copy_cmd_local (WPanel * panel)
+{
+ panel_operate (panel, OP_COPY, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Move/rename, default to the other panel.
+ */
+
+static inline void
+rename_cmd (WPanel * panel)
+{
+ panel_operate (panel, OP_MOVE, FALSE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Move/rename, default to the same panel, ignore marks.
+ */
+
+static inline void
+rename_cmd_local (WPanel * panel)
+{
+ panel_operate (panel, OP_MOVE, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Remove.
+ */
+
+static inline void
+delete_cmd (WPanel * panel)
+{
+ panel_operate (panel, OP_DELETE, FALSE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Remove, ignore marks.
+ */
+
+static inline void
+delete_cmd_local (WPanel * panel)
+{
+ panel_operate (panel, OP_DELETE, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
#endif /* MC__CMD_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/command.c
^
|
@@ -4,12 +4,12 @@
with all the magic of the command input line, we depend on some
help from the program's callback.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2011-2022
This file is part of the Midnight Commander.
@@ -81,11 +81,13 @@
static cb_ret_t
enter (WInput * lc_cmdline)
{
- char *cmd = lc_cmdline->buffer;
+ const char *cmd;
if (!command_prompt)
return MSG_HANDLED;
+ cmd = input_get_ctext (lc_cmdline);
+
/* Any initial whitespace should be removed at this point */
while (whiteness (*cmd))
cmd++;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/dir.c
^
|
@@ -1,12 +1,12 @@
/*
Directory routines
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -117,6 +117,20 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static inline int
+compare_by_names (file_entry_t * a, file_entry_t * b)
+{
+ /* create key if does not exist, key will be freed after sorting */
+ if (a->sort_key == NULL)
+ a->sort_key = str_create_key_for_filename (a->fname->str, case_sensitive);
+ if (b->sort_key == NULL)
+ b->sort_key = str_create_key_for_filename (b->fname->str, case_sensitive);
+
+ return key_collate (a->sort_key, b->sort_key);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/**
* clear keys, should be call after sorting is finished.
*/
@@ -145,10 +159,11 @@
*/
static gboolean
-handle_dirent (struct vfs_dirent *dp, const char *fltr, struct stat *buf1, gboolean * link_to_dir,
- gboolean * stale_link)
+handle_dirent (struct vfs_dirent *dp, const file_filter_t * filter, struct stat *buf1,
+ gboolean * link_to_dir, gboolean * stale_link)
{
vfs_path_t *vpath;
+ gboolean ok = TRUE;
if (DIR_IS_DOT (dp->d_name) || DIR_IS_DOTDOT (dp->d_name))
return FALSE;
@@ -174,10 +189,17 @@
/* A link to a file or a directory? */
*link_to_dir = file_is_symlink_to_dir (vpath, buf1, stale_link);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
- return (S_ISDIR (buf1->st_mode) || *link_to_dir || fltr == NULL
- || mc_search (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB));
+ if (filter != NULL && filter->handler != NULL)
+ {
+ gboolean files_only = (filter->flags & SELECT_FILES_ONLY) != 0;
+
+ ok = ((S_ISDIR (buf1->st_mode) || *link_to_dir) && files_only)
+ || mc_search_run (filter->handler, dp->d_name, 0, strlen (dp->d_name), NULL);
+ }
+
+ return ok;
}
/* --------------------------------------------------------------------------------------------- */
@@ -199,7 +221,7 @@
tmp_vpath = vfs_path_append_new (vpath, "..", (char *) NULL);
ret = mc_stat (tmp_vpath, st) == 0;
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
}
@@ -294,8 +316,7 @@
return FALSE;
fentry = &list->list[list->len];
- fentry->fnamelen = strlen (fname);
- fentry->fname = g_strndup (fname, fentry->fnamelen);
+ fentry->fname = g_string_new (fname);
fentry->f.marked = 0;
fentry->f.link_to_dir = link_to_dir ? 1 : 0;
fentry->f.stale_link = stale_link ? 1 : 0;
@@ -329,15 +350,7 @@
int bd = MY_ISDIR (b);
if (ad == bd || panels_options.mix_all_files)
- {
- /* create key if does not exist, key will be freed after sorting */
- if (a->sort_key == NULL)
- a->sort_key = str_create_key_for_filename (a->fname, case_sensitive);
- if (b->sort_key == NULL)
- b->sort_key = str_create_key_for_filename (b->fname, case_sensitive);
-
- return key_collate (a->sort_key, b->sort_key);
- }
+ return compare_by_names (a, b);
return bd - ad;
}
@@ -351,7 +364,15 @@
int bd = MY_ISDIR (b);
if (ad == bd || panels_options.mix_all_files)
- return filevercmp (a->fname, b->fname) * reverse;
+ {
+ int result;
+
+ result = filevercmp (a->fname->str, b->fname->str);
+ if (result != 0)
+ return result * reverse;
+
+ return compare_by_names (a, b);
+ }
return bd - ad;
}
@@ -369,15 +390,15 @@
int r;
if (a->second_sort_key == NULL)
- a->second_sort_key = str_create_key (extension (a->fname), case_sensitive);
+ a->second_sort_key = str_create_key (extension (a->fname->str), case_sensitive);
if (b->second_sort_key == NULL)
- b->second_sort_key = str_create_key (extension (b->fname), case_sensitive);
+ b->second_sort_key = str_create_key (extension (b->fname->str), case_sensitive);
r = str_key_collate (a->second_sort_key, b->second_sort_key, case_sensitive);
if (r != 0)
return r * reverse;
- return sort_name (a, b);
+ return compare_by_names (a, b);
}
return bd - ad;
@@ -398,7 +419,7 @@
if (result != 0)
return result * reverse;
- return sort_name (a, b);
+ return compare_by_names (a, b);
}
return bd - ad;
@@ -419,7 +440,7 @@
if (result != 0)
return result * reverse;
- return sort_name (a, b);
+ return compare_by_names (a, b);
}
return bd - ad;
@@ -440,7 +461,7 @@
if (result != 0)
return result * reverse;
- return sort_name (a, b);
+ return compare_by_names (a, b);
}
return bd - ad;
@@ -475,7 +496,7 @@
if (result != 0)
return result * reverse;
- return sort_name (a, b);
+ return compare_by_names (a, b);
}
return bd - ad;
@@ -493,7 +514,7 @@
/* If there is an ".." entry the caller must take care to
ensure that it occupies the first list element. */
- dot_dot_found = DIR_IS_DOTDOT (fentry->fname) ? 1 : 0;
+ dot_dot_found = DIR_IS_DOTDOT (fentry->fname->str) ? 1 : 0;
reverse = sort_op->reverse ? -1 : 1;
case_sensitive = sort_op->case_sensitive ? 1 : 0;
exec_first = sort_op->exec_first;
@@ -516,7 +537,8 @@
file_entry_t *fentry;
fentry = &list->list[i];
- MC_PTR_FREE (fentry->fname);
+ g_string_free (fentry->fname, TRUE);
+ fentry->fname = NULL;
}
list->len = 0;
@@ -536,7 +558,7 @@
file_entry_t *fentry;
fentry = &list->list[i];
- g_free (fentry->fname);
+ g_string_free (fentry->fname, TRUE);
}
MC_PTR_FREE (list->list);
@@ -561,8 +583,7 @@
fentry = &list->list[0];
memset (fentry, 0, sizeof (*fentry));
- fentry->fnamelen = 2;
- fentry->fname = g_strndup ("..", fentry->fnamelen);
+ fentry->fname = g_string_new ("..");
fentry->f.link_to_dir = 0;
fentry->f.stale_link = 0;
fentry->f.dir_size_computed = 0;
@@ -592,7 +613,7 @@
vpath = vfs_path_from_str (path);
if (mc_lstat (vpath, buf1) == -1)
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return FALSE;
}
@@ -612,7 +633,7 @@
*stale_link = TRUE;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return TRUE;
}
@@ -621,7 +642,7 @@
gboolean
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort,
- const dir_sort_options_t * sort_op, const char *fltr)
+ const dir_sort_options_t * sort_op, const file_filter_t * filter)
{
DIR *dirp;
struct vfs_dirent *dp;
@@ -658,7 +679,7 @@
if (list->callback != NULL)
list->callback (DIR_READ, dp);
- if (!handle_dirent (dp, fltr, &st, &link_to_dir, &stale_link))
+ if (!handle_dirent (dp, filter, &st, &link_to_dir, &stale_link))
continue;
if (!dir_list_append (list, dp->d_name, &st, link_to_dir, stale_link))
@@ -690,11 +711,11 @@
}
/* --------------------------------------------------------------------------------------------- */
-/** If fltr is null, then it is a match */
+/** If filter is null, then it is a match */
gboolean
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort,
- const dir_sort_options_t * sort_op, const char *fltr)
+ const dir_sort_options_t * sort_op, const file_filter_t * filter)
{
DIR *dirp;
struct vfs_dirent *dp;
@@ -726,8 +747,7 @@
fentry = &list->list[i];
dfentry = &dir_copy.list[i];
- dfentry->fnamelen = fentry->fnamelen;
- dfentry->fname = g_strndup (fentry->fname, fentry->fnamelen);
+ dfentry->fname = mc_g_string_dup (fentry->fname);
dfentry->f.marked = fentry->f.marked;
dfentry->f.dir_size_computed = fentry->f.dir_size_computed;
dfentry->f.link_to_dir = fentry->f.link_to_dir;
@@ -736,7 +756,7 @@
dfentry->second_sort_key = NULL;
if (fentry->f.marked)
{
- g_hash_table_insert (marked_files, dfentry->fname, dfentry);
+ g_hash_table_insert (marked_files, dfentry->fname->str, dfentry);
marked_cnt++;
}
}
@@ -758,6 +778,7 @@
if (!dir_list_init (list))
{
dir_list_free_list (&dir_copy);
+ mc_closedir (dirp);
return FALSE;
}
@@ -777,7 +798,7 @@
if (list->callback != NULL)
list->callback (DIR_READ, dp);
- if (!handle_dirent (dp, fltr, &st, &link_to_dir, &stale_link))
+ if (!handle_dirent (dp, filter, &st, &link_to_dir, &stale_link))
continue;
if (!dir_list_append (list, dp->d_name, &st, link_to_dir, stale_link))
@@ -815,3 +836,14 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+void
+file_filter_clear (file_filter_t * filter)
+{
+ MC_PTR_FREE (filter->value);
+ mc_search_free (filter->handler);
+ filter->handler = NULL;
+ /* keep filter->flags */
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/dir.h
^
|
@@ -8,6 +8,7 @@
#include <sys/stat.h>
#include "lib/global.h"
+#include "lib/search.h"
#include "lib/util.h"
#include "lib/vfs/vfs.h"
@@ -23,6 +24,16 @@
DIR_CLOSE
} dir_list_cb_state_t;
+/* selection flags */
+typedef enum
+{
+ SELECT_FILES_ONLY = 1 << 0,
+ SELECT_MATCH_CASE = 1 << 1,
+ SELECT_SHELL_PATTERNS = 1 << 2
+} select_flags_t;
+
+#define FILE_FILTER_DEFAULT_FLAGS (SELECT_FILES_ONLY | SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS)
+
/* dir_list callback */
typedef void (*dir_list_cb_fn) (dir_list_cb_state_t state, void *data);
@@ -51,6 +62,14 @@
gboolean exec_first; /**< executables are at top of list */
} dir_sort_options_t;
+/* filter */
+typedef struct
+{
+ char *value;
+ mc_search_t *handler;
+ select_flags_t flags;
+} file_filter_t;
+
/*** global variables defined in .c file *********************************************************/
/*** declarations of public functions ************************************************************/
@@ -60,9 +79,9 @@
gboolean link_to_dir, gboolean stale_link);
gboolean dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort,
- const dir_sort_options_t * sort_op, const char *fltr);
+ const dir_sort_options_t * sort_op, const file_filter_t * filter);
gboolean dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort,
- const dir_sort_options_t * sort_op, const char *fltr);
+ const dir_sort_options_t * sort_op, const file_filter_t * filter);
void dir_list_sort (dir_list * list, GCompareFunc sort, const dir_sort_options_t * sort_op);
gboolean dir_list_init (dir_list * list);
void dir_list_clean (dir_list * list);
@@ -83,6 +102,8 @@
gboolean if_link_is_exe (const vfs_path_t * full_name, const file_entry_t * file);
+void file_filter_clear (file_filter_t * filter);
+
/*** inline functions ****************************************************************************/
static inline gboolean
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/ext.c
^
|
@@ -1,7 +1,7 @@
/*
Extension dependent execution.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -50,7 +50,9 @@
#include "lib/charsets.h" /* get_codepage_index */
#endif
+#ifdef USE_FILE_CMD
#include "src/setup.h" /* use_file_to_check_type */
+#endif
#include "src/execute.h"
#include "src/history.h"
#include "src/usermenu.h"
@@ -71,10 +73,12 @@
/*** file scope macro definitions ****************************************************************/
-#ifdef FILE_L
-#define FILE_CMD "file -L -z "
+#ifdef USE_FILE_CMD
+#ifdef FILE_B
+#define FILE_CMD "file -z " FILE_B FILE_S FILE_L
#else
-#define FILE_CMD "file -z "
+#define FILE_CMD "file -z " FILE_S FILE_L
+#endif
#endif
/*** file scope type declarations ****************************************************************/
@@ -87,7 +91,8 @@
* With this we avoid loading/parsing the file each time we
* need it
*/
-static char *data = NULL;
+static mc_config_t *ext_ini = NULL;
+static gchar **ext_ini_groups = NULL;
static vfs_path_t *localfilecopy_vpath = NULL;
static char buffer[BUF_1K];
@@ -99,6 +104,9 @@
static gboolean written_nonspace = FALSE;
static gboolean do_local_copy = FALSE;
+static const char *descr_group = "mc.ext.ini";
+static const char *default_group = "Default";
+
/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -109,7 +117,7 @@
if (script_vpath != NULL)
{
(void) mc_unlink (script_vpath);
- vfs_path_free (script_vpath);
+ vfs_path_free (script_vpath, TRUE);
}
}
@@ -129,7 +137,7 @@
has_changed = localmtime != mystat.st_mtime;
}
mc_ungetlocalcopy (filename_vpath, localfilecopy_vpath, has_changed);
- vfs_path_free (localfilecopy_vpath);
+ vfs_path_free (localfilecopy_vpath, TRUE);
localfilecopy_vpath = NULL;
}
@@ -276,7 +284,6 @@
else
{
int i;
- char *v;
i = check_format_view (lc_data);
if (i != 0)
@@ -297,8 +304,10 @@
}
else
{
+ char *v;
+
i = check_format_var (lc_data, &v);
- if (i > 0 && v != NULL)
+ if (i > 0)
{
g_string_append (shell_string, v);
g_free (v);
@@ -407,7 +416,7 @@
p_vpath = vfs_path_from_str_flags (pbuffer, VPF_NO_CANON);
panel_cd (panel, p_vpath, cd_parse_command);
- vfs_path_free (p_vpath);
+ vfs_path_free (p_vpath, TRUE);
}
@@ -423,8 +432,6 @@
FILE *cmd_file;
char *cmd = NULL;
- g_return_val_if_fail (lc_data != NULL, NULL);
-
pbuffer = NULL;
localmtime = 0;
quote_func = name_quote;
@@ -458,6 +465,7 @@
{
message (D_ERROR, MSG_ERROR,
_("Cannot create temporary command file\n%s"), unix_error_string (errno));
+ g_string_free (shell_string, TRUE);
goto ret;
}
@@ -537,6 +545,7 @@
* NOTES: buf is null-terminated string.
*/
+#ifdef USE_FILE_CMD
static int
get_popen_information (const char *cmd_file, const char *args, char *buf, int buflen)
{
@@ -640,13 +649,9 @@
mc_return_val_if_error (mcerror, FALSE);
- if (!use_file_to_check_type)
- return FALSE;
-
if (!*have_type)
{
vfs_path_t *localfile_vpath;
- const char *realname; /* name used with "file" */
#ifdef HAVE_CHARSET
static char encoding_id[21]; /* CSISO51INISCYRILLIC -- 20 */
@@ -664,7 +669,6 @@
return FALSE;
}
- realname = vfs_path_get_last_path_str (localfile_vpath);
#ifdef HAVE_CHARSET
got_encoding_data = is_autodetect_codeset_enabled
@@ -694,33 +698,39 @@
if (got_data > 0)
{
char *pp;
- size_t real_len;
pp = strchr (content_string, '\n');
if (pp != NULL)
*pp = '\0';
- real_len = strlen (realname);
-
- if (strncmp (content_string, realname, real_len) == 0)
+#ifndef FILE_B
{
- /* Skip "realname: " */
- content_shift = real_len;
- if (content_string[content_shift] == ':')
+ const char *real_name; /* name used with "file" */
+ size_t real_len;
+
+ real_name = vfs_path_get_last_path_str (localfile_vpath);
+ real_len = strlen (real_name);
+
+ if (strncmp (content_string, real_name, real_len) == 0)
{
+ /* Skip "real_name: " */
+ content_shift = real_len;
+
/* Solaris' file prints tab(s) after ':' */
- for (content_shift++; whitespace (content_string[content_shift]);
- content_shift++)
- ;
+ if (content_string[content_shift] == ':')
+ for (content_shift++; whitespace (content_string[content_shift]);
+ content_shift++)
+ ;
}
}
+#endif /* FILE_B */
}
else
{
/* No data */
content_string[0] = '\0';
}
- vfs_path_free (localfile_vpath);
+ vfs_path_free (localfile_vpath, TRUE);
}
if (got_data == -1)
@@ -749,6 +759,100 @@
return found;
}
+#endif /* USE_FILE_CMD */
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+check_old_extension_file (void)
+{
+ char *extension_old_file;
+
+ extension_old_file = mc_config_get_full_path (MC_EXT_OLD_FILE);
+ if (exist_file (extension_old_file))
+ message (D_ERROR, _("Warning"),
+ _("You have an outdated %s file.\nMidnight Commander now uses %s file.\n"
+ "Please copy your modifications of the old file to the new one."),
+ extension_old_file, MC_EXT_FILE);
+ g_free (extension_old_file);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+load_extension_file (void)
+{
+ char *extension_file;
+ gboolean mc_user_ext = TRUE;
+ gboolean home_error = FALSE;
+
+ extension_file = mc_config_get_full_path (MC_EXT_FILE);
+ if (!exist_file (extension_file))
+ {
+ g_free (extension_file);
+
+ check_old_extension_file ();
+
+ check_stock_mc_ext:
+ extension_file = mc_build_filename (mc_global.sysconfig_dir, MC_EXT_FILE, (char *) NULL);
+ if (!exist_file (extension_file))
+ {
+ g_free (extension_file);
+ extension_file =
+ mc_build_filename (mc_global.share_data_dir, MC_EXT_FILE, (char *) NULL);
+ if (!exist_file (extension_file))
+ MC_PTR_FREE (extension_file);
+ }
+ mc_user_ext = FALSE;
+ }
+
+ if (extension_file != NULL)
+ {
+ ext_ini = mc_config_init (extension_file, TRUE);
+ g_free (extension_file);
+ }
+ if (ext_ini == NULL)
+ return FALSE;
+
+ /* Check version */
+ if (!mc_config_has_group (ext_ini, descr_group))
+ {
+ flush_extension_file ();
+
+ if (!mc_user_ext)
+ {
+ char *title;
+
+ title = g_strdup_printf (_(" %s%s file error"), mc_global.sysconfig_dir, MC_EXT_FILE);
+ message (D_ERROR, title,
+ _("The format of the %s%s file has changed with version 4.0. "
+ "It seems that the installation has failed. Please fetch a fresh copy "
+ "from the Midnight Commander package."),
+ mc_global.sysconfig_dir, MC_EXT_FILE);
+ g_free (title);
+ return FALSE;
+ }
+
+ home_error = TRUE;
+ goto check_stock_mc_ext;
+ }
+
+ if (home_error)
+ {
+ char *title;
+
+ extension_file = mc_config_get_full_path (MC_EXT_FILE);
+ title = g_strdup_printf (_("%s file error"), extension_file);
+ message (D_ERROR, title,
+ _("The format of the %s file has changed with version 4.0. You may either want "
+ "to copy it from %s%s or use that file as an example of how to write it."),
+ extension_file, mc_global.sysconfig_dir, MC_EXT_FILE);
+ g_free (extension_file);
+ g_free (title);
+ }
+
+ return TRUE;
+}
/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
@@ -757,7 +861,11 @@
void
flush_extension_file (void)
{
- MC_PTR_FREE (data);
+ g_strfreev (ext_ini_groups);
+ ext_ini_groups = NULL;
+
+ mc_config_deinit (ext_ini);
+ ext_ini = NULL;
}
/* --------------------------------------------------------------------------------------------- */
@@ -779,17 +887,19 @@
regex_command_for (void *target, const vfs_path_t * filename_vpath, const char *action,
vfs_path_t ** script_vpath)
{
- char *p, *q, *r, c;
const char *filename;
- size_t file_len;
+ size_t filename_len;
gboolean found = FALSE;
gboolean error_flag = FALSE;
int ret = 0;
struct stat mystat;
int view_at_line_number = 0;
- char *include_target = NULL;
- size_t include_target_len = 0;
+#ifdef USE_FILE_CMD
gboolean have_type = FALSE; /* Flag used by regex_check_type() */
+#endif
+ char **group_iter;
+ char *include_group = NULL;
+ const char *current_group;
if (filename_vpath == NULL)
return 0;
@@ -804,249 +914,170 @@
action = "View";
}
- if (data == NULL)
+ if (ext_ini == NULL && !load_extension_file ())
+ return 0;
+
+ mc_stat (filename_vpath, &mystat);
+
+ filename = vfs_path_get_last_path_str (filename_vpath);
+ filename = x_basename (filename);
+ filename_len = strlen (filename);
+
+ if (ext_ini_groups == NULL)
+ ext_ini_groups = mc_config_get_groups (ext_ini, NULL);
+
+ /* find matched type, regex or shell pattern */
+ for (group_iter = ext_ini_groups; *group_iter != NULL && !found; group_iter++)
{
- char *extension_file;
- gboolean mc_user_ext = TRUE;
- gboolean home_error = FALSE;
+ enum
+ {
+ TYPE_UNUSED,
+ TYPE_NOT_FOUND,
+ TYPE_FOUND
+ } type_state = TYPE_UNUSED;
+
+ const gchar *g = *group_iter;
+ gchar *pattern;
+ gboolean ignore_case;
- extension_file = mc_config_get_full_path (MC_FILEBIND_FILE);
- if (!exist_file (extension_file))
+ if (strcmp (g, descr_group) == 0 || strncmp (g, "Include/", 8) == 0
+ || strcmp (g, default_group) == 0)
+ continue;
+
+ /* The "Directory" parameter is a special case: if it's present then
+ "Type", "Regex", and "Shell" parameters are ignored */
+ pattern = mc_config_get_string_raw (ext_ini, g, "Directory", NULL);
+ if (pattern != NULL)
{
- g_free (extension_file);
- check_stock_mc_ext:
- extension_file = mc_build_filename (mc_global.sysconfig_dir, MC_LIB_EXT, (char *) NULL);
- if (!exist_file (extension_file))
- {
- g_free (extension_file);
- extension_file =
- mc_build_filename (mc_global.share_data_dir, MC_LIB_EXT, (char *) NULL);
- }
- mc_user_ext = FALSE;
- }
+ found = S_ISDIR (mystat.st_mode)
+ && mc_search (pattern, DEFAULT_CHARSET, vfs_path_as_str (filename_vpath),
+ MC_SEARCH_T_REGEX);
+ g_free (pattern);
- g_file_get_contents (extension_file, &data, NULL, NULL);
- g_free (extension_file);
- if (data == NULL)
- return 0;
+ continue; /* stop if found */
+ }
- if (strstr (data, "default/") == NULL)
+#ifdef USE_FILE_CMD
+ if (use_file_to_check_type)
{
- if (strstr (data, "regex/") == NULL && strstr (data, "shell/") == NULL &&
- strstr (data, "type/") == NULL)
+ pattern = mc_config_get_string_raw (ext_ini, g, "Type", NULL);
+ if (pattern != NULL)
{
- MC_PTR_FREE (data);
+ GError *mcerror = NULL;
- if (!mc_user_ext)
- {
- char *title;
+ ignore_case = mc_config_get_bool (ext_ini, g, "TypeIgnoreCase", FALSE);
+ type_state =
+ regex_check_type (filename_vpath, pattern, ignore_case, &have_type, &mcerror)
+ ? TYPE_FOUND : TYPE_NOT_FOUND;
+ g_free (pattern);
- title = g_strdup_printf (_(" %s%s file error"),
- mc_global.sysconfig_dir, MC_LIB_EXT);
- message (D_ERROR, title, _("The format of the %smc.ext "
- "file has changed with version 3.0. It seems that "
- "the installation failed. Please fetch a fresh "
- "copy from the Midnight Commander package."),
- mc_global.sysconfig_dir);
- g_free (title);
- return 0;
- }
+ if (mc_error_message (&mcerror, NULL))
+ error_flag = TRUE; /* leave it if file cannot be opened */
- home_error = TRUE;
- goto check_stock_mc_ext;
+ if (type_state == TYPE_NOT_FOUND)
+ continue;
}
}
+#endif /* USE_FILE_CMD */
- if (home_error)
+ pattern = mc_config_get_string_raw (ext_ini, g, "Regex", NULL);
+ if (pattern != NULL)
{
- char *filebind_filename;
- char *title;
-
- filebind_filename = mc_config_get_full_path (MC_FILEBIND_FILE);
- title = g_strdup_printf (_("%s file error"), filebind_filename);
- message (D_ERROR, title,
- _("The format of the %s file has "
- "changed with version 3.0. You may either want to copy "
- "it from %smc.ext or use that file as an example of how to write it."),
- filebind_filename, mc_global.sysconfig_dir);
- g_free (filebind_filename);
- g_free (title);
- }
- }
-
- mc_stat (filename_vpath, &mystat);
+ mc_search_t *search;
- filename = vfs_path_get_last_path_str (filename_vpath);
- filename = x_basename (filename);
- file_len = strlen (filename);
+ ignore_case = mc_config_get_bool (ext_ini, g, "RegexIgnoreCase", FALSE);
+ search = mc_search_new (pattern, DEFAULT_CHARSET);
+ g_free (pattern);
- for (p = data; *p != '\0'; p++)
- {
- for (q = p; whitespace (*q); q++)
- ;
- if (*q == '\n' || *q == '\0')
- p = q; /* empty line */
- if (*p == '#') /* comment */
- while (*p != '\0' && *p != '\n')
- p++;
- if (*p == '\n')
- continue;
- if (*p == '\0')
- break;
- if (p == q)
- {
- /* i.e. starts in the first column, should be keyword/descNL */
- gboolean case_insense;
-
- found = FALSE;
- q = strchr (p, '\n');
- if (q == NULL)
- q = strchr (p, '\0');
- c = *q;
- *q = '\0';
- if (include_target != NULL)
+ if (search != NULL)
{
- if ((strncmp (p, "include/", 8) == 0)
- && (strncmp (p + 8, include_target, include_target_len) == 0))
- found = TRUE;
+ search->search_type = MC_SEARCH_T_REGEX;
+ search->is_case_sensitive = !ignore_case;
+ found = mc_search_run (search, filename, 0, filename_len, NULL);
+ mc_search_free (search);
}
- else if (strncmp (p, "regex/", 6) == 0)
- {
- mc_search_t *search;
- p += 6;
- case_insense = (strncmp (p, "i/", 2) == 0);
- if (case_insense)
- p += 2;
-
- search = mc_search_new (p, DEFAULT_CHARSET);
- if (search != NULL)
- {
- search->search_type = MC_SEARCH_T_REGEX;
- search->is_case_sensitive = !case_insense;
- found = mc_search_run (search, filename, 0, file_len, NULL);
- mc_search_free (search);
- }
- }
- else if (strncmp (p, "directory/", 10) == 0)
- {
- if (S_ISDIR (mystat.st_mode)
- && mc_search (p + 10, DEFAULT_CHARSET, vfs_path_as_str (filename_vpath),
- MC_SEARCH_T_REGEX))
- found = TRUE;
- }
- else if (strncmp (p, "shell/", 6) == 0)
+ found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND);
+ }
+ else
+ {
+ pattern = mc_config_get_string_raw (ext_ini, g, "Shell", NULL);
+ if (pattern != NULL)
{
- int (*cmp_func) (const char *s1, const char *s2, size_t n) = strncmp;
+ int (*cmp_func) (const char *s1, const char *s2, size_t n);
+ size_t pattern_len;
- p += 6;
- case_insense = (strncmp (p, "i/", 2) == 0);
- if (case_insense)
- {
- p += 2;
- cmp_func = strncasecmp;
- }
-
- if (*p == '.' && file_len >= (size_t) (q - p))
- {
- if (cmp_func (p, filename + file_len - (q - p), q - p) == 0)
- found = TRUE;
- }
+ ignore_case = mc_config_get_bool (ext_ini, g, "ShellIgnoreCase", FALSE);
+ cmp_func = ignore_case ? strncasecmp : strncmp;
+ pattern_len = strlen (pattern);
+
+ if (*pattern == '.' && filename_len >= pattern_len)
+ found =
+ cmp_func (pattern, filename + filename_len - pattern_len, pattern_len) == 0;
else
- {
- if ((size_t) (q - p) == file_len && cmp_func (p, filename, file_len) == 0)
- found = TRUE;
- }
- }
- else if (strncmp (p, "type/", 5) == 0)
- {
- GError *mcerror = NULL;
+ found = pattern_len == filename_len
+ && cmp_func (pattern, filename, filename_len) == 0;
- p += 5;
+ g_free (pattern);
- case_insense = (strncmp (p, "i/", 2) == 0);
- if (case_insense)
- p += 2;
-
- found = regex_check_type (filename_vpath, p, case_insense, &have_type, &mcerror);
- if (mc_error_message (&mcerror, NULL))
- error_flag = TRUE; /* leave it if file cannot be opened */
+ found = found && (type_state == TYPE_UNUSED || type_state == TYPE_FOUND);
}
- else if (strncmp (p, "default/", 8) == 0)
- found = TRUE;
-
- *q = c;
+ else
+ found = type_state == TYPE_FOUND;
}
- else
- { /* List of actions */
- p = q;
- q = strchr (p, '\n');
- if (q == NULL)
- q = strchr (p, '\0');
- if (found && !error_flag)
- {
- r = strchr (p, '=');
- if (r != NULL)
- {
- c = *r;
- *r = '\0';
- if (strcmp (p, "Include") == 0)
- {
- char *t;
+ }
- include_target = p + 8;
- t = strchr (include_target, '\n');
+ /* group is found, process actions */
+ if (found)
+ {
+ char *include_value;
- if (t != NULL)
- include_target_len = (size_t) (t - include_target);
- else
- include_target_len = strlen (include_target);
+ group_iter--;
- *r = c;
- p = q;
- found = FALSE;
-
- if (*p == '\0')
- break;
- continue;
- }
+ /* "Include" parameter has the highest priority over any actions */
+ include_value = mc_config_get_string_raw (ext_ini, *group_iter, "Include", NULL);
+ if (include_value != NULL)
+ {
+ /* find "Include/include_value" group */
+ include_group = g_strconcat ("Include/", include_value, (char *) NULL);
+ g_free (include_value);
+ found = mc_config_has_group (ext_ini, include_group);
+ }
+ }
- if (strcmp (action, p) != 0)
- *r = c;
- else
- {
- *r = c;
+ if (found)
+ current_group = include_group != NULL ? include_group : *group_iter;
+ else
+ {
+ current_group = default_group;
+ found = mc_config_has_group (ext_ini, current_group);
+ }
- for (p = r + 1; whitespace (*p); p++)
- ;
+ if (found && !error_flag)
+ {
+ gchar *action_value;
- /* Empty commands just stop searching
- * through, they don't do anything
- */
- if (p < q)
- {
- vfs_path_t *sv;
+ action_value = mc_config_get_string_raw (ext_ini, current_group, action, NULL);
+ /* Empty commands just stop searching through, they don't do anything */
+ if (action_value != NULL && *action_value != '\0')
+ {
+ vfs_path_t *sv;
- sv = exec_extension (current_panel, target, filename_vpath, r + 1,
- view_at_line_number);
- if (script_vpath != NULL)
- *script_vpath = sv;
- else
- exec_cleanup_script (sv);
+ sv = exec_extension (current_panel, target, filename_vpath, action_value,
+ view_at_line_number);
+ if (script_vpath != NULL)
+ *script_vpath = sv;
+ else
+ exec_cleanup_script (sv);
- ret = 1;
- }
- break;
- }
- }
- }
+ ret = 1;
}
- p = q;
- if (*p == '\0')
- break;
+ g_free (action_value);
}
+ g_free (include_group);
+
return (error_flag ? -1 : ret);
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/file.c
^
|
@@ -1,7 +1,7 @@
/*
File management.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -11,7 +11,7 @@
Jakub Jelinek, 1995, 1996
Norbert Warmuth, 1997
Pavel Machek, 1998
- Andrew Borodin <aborodin@vmail.ru>, 2011-2014
+ Andrew Borodin <aborodin@vmail.ru>, 2011-2022
The copy code was based in GNU's cp, and was written by:
Torbjorn Granlund, David MacKenzie, and Jim Meyering.
@@ -101,6 +101,8 @@
#define FILEOP_UPDATE_INTERVAL 2
#define FILEOP_STALLING_INTERVAL 4
+#define FILEOP_UPDATE_INTERVAL_US (FILEOP_UPDATE_INTERVAL * G_USEC_PER_SEC)
+#define FILEOP_STALLING_INTERVAL_US (FILEOP_STALLING_INTERVAL * G_USEC_PER_SEC)
/*** file scope type declarations ****************************************************************/
@@ -119,9 +121,11 @@
/* Status of the destination file */
typedef enum
{
- DEST_NONE = 0, /* Not created */
- DEST_SHORT = 1, /* Created, not fully copied */
- DEST_FULL = 2 /* Created, fully copied */
+ DEST_NONE = 0, /**< Not created */
+ DEST_SHORT_QUERY, /**< Created, not fully copied, query to do */
+ DEST_SHORT_KEEP, /**< Created, not fully copied, keep it */
+ DEST_SHORT_DELETE, /**< Created, not fully copied, delete it */
+ DEST_FULL /**< Created, fully copied */
} dest_status_t;
/* Status of hard link creation */
@@ -180,7 +184,7 @@
static GSList *linklist = NULL;
/* the files-to-be-erased list */
-static GSList *erase_list = NULL;
+static GQueue *erase_list = NULL;
/*
* In copy_dir_dir we use two additional single linked lists: The first -
@@ -204,28 +208,36 @@
status_msg_t *sm = STATUS_MSG (dsm);
Widget *wd = WIDGET (sm->dlg);
int y, x;
+ WRect r;
- y = wd->y + 5;
- x = wd->x;
+ y = wd->rect.y + 5;
+ x = wd->rect.x;
if (!dsm->allow_skip)
{
/* single button: "Abort" */
- x += (wd->cols - dsm->abort_button->cols) / 2;
- widget_set_size (dsm->abort_button, y, x,
- dsm->abort_button->lines, dsm->abort_button->cols);
+ x += (wd->rect.cols - dsm->abort_button->rect.cols) / 2;
+ r = dsm->abort_button->rect;
+ r.y = y;
+ r.x = x;
+ widget_set_size_rect (dsm->abort_button, &r);
}
else
{
/* two buttons: "Abort" and "Skip" */
int cols;
- cols = dsm->abort_button->cols + dsm->skip_button->cols + 1;
- x += (wd->cols - cols) / 2;
- widget_set_size (dsm->abort_button, y, x, dsm->abort_button->lines,
- dsm->abort_button->cols);
- x += dsm->abort_button->cols + 1;
- widget_set_size (dsm->skip_button, y, x, dsm->skip_button->lines, dsm->skip_button->cols);
+ cols = dsm->abort_button->rect.cols + dsm->skip_button->rect.cols + 1;
+ x += (wd->rect.cols - cols) / 2;
+ r = dsm->abort_button->rect;
+ r.y = y;
+ r.x = x;
+ widget_set_size_rect (dsm->abort_button, &r);
+ x += dsm->abort_button->rect.cols + 1;
+ r = dsm->skip_button->rect;
+ r.y = y;
+ r.x = x;
+ widget_set_size_rect (dsm->skip_button, &r);
}
}
@@ -298,14 +310,25 @@
{
struct link *lp = (struct link *) data;
- vfs_path_free (lp->src_vpath);
- vfs_path_free (lp->dst_vpath);
+ vfs_path_free (lp->src_vpath, TRUE);
+ vfs_path_free (lp->dst_vpath, TRUE);
g_free (lp);
}
/* --------------------------------------------------------------------------------------------- */
static inline void *
+free_erase_list (GQueue * lp)
+{
+ if (lp != NULL)
+ g_queue_free_full (lp, free_link);
+
+ return NULL;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline void *
free_linklist (GSList * lp)
{
g_slist_free_full (lp, free_link);
@@ -476,27 +499,28 @@
/* --------------------------------------------------------------------------------------------- */
/**
- * Duplicate the contents of the symbolic link src_path in dst_path.
+ * Duplicate the contents of the symbolic link src_vpath in dst_vpath.
* Try to make a stable symlink if the option "stable symlink" was
* set in the file mask dialog.
* If dst_path is an existing symlink it will be deleted silently
- * (upper levels take already care of existing files at dst_path).
+ * (upper levels take already care of existing files at dst_vpath).
*/
static FileProgressStatus
-make_symlink (file_op_context_t * ctx, const char *src_path, const char *dst_path)
+make_symlink (file_op_context_t * ctx, const vfs_path_t * src_vpath, const vfs_path_t * dst_vpath)
{
+ const char *src_path;
+ const char *dst_path;
char link_target[MC_MAXPATHLEN];
int len;
FileProgressStatus return_status;
struct stat dst_stat;
- vfs_path_t *src_vpath;
- vfs_path_t *dst_vpath;
gboolean dst_is_symlink;
vfs_path_t *link_target_vpath = NULL;
- src_vpath = vfs_path_from_str (src_path);
- dst_vpath = vfs_path_from_str (dst_path);
+ src_path = vfs_path_as_str (src_vpath);
+ dst_path = vfs_path_as_str (dst_vpath);
+
dst_is_symlink = (mc_lstat (dst_vpath, &dst_stat) == 0) && S_ISLNK (dst_stat.st_mode);
retry_src_readlink:
@@ -553,8 +577,8 @@
g_free (s);
tmp_vpath2 = vfs_path_from_str (link_target);
s = diff_two_paths (tmp_vpath1, tmp_vpath2);
- vfs_path_free (tmp_vpath1);
- vfs_path_free (tmp_vpath2);
+ vfs_path_free (tmp_vpath1, TRUE);
+ vfs_path_free (tmp_vpath2, TRUE);
if (s != NULL)
{
g_strlcpy (link_target, s, sizeof (link_target));
@@ -562,7 +586,7 @@
}
}
g_free (p);
- vfs_path_free (q);
+ vfs_path_free (q, TRUE);
}
}
link_target_vpath = vfs_path_from_str_flags (link_target, VPF_NO_CANON);
@@ -598,9 +622,7 @@
}
ret:
- vfs_path_free (src_vpath);
- vfs_path_free (dst_vpath);
- vfs_path_free (link_target_vpath);
+ vfs_path_free (link_target_vpath, TRUE);
return return_status;
}
@@ -666,7 +688,7 @@
}
}
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
mc_closedir (dir);
@@ -706,9 +728,9 @@
vfs_path_t *p;
FileProgressStatus status;
- p = vfs_path_append_new (panel->cwd_vpath, fe->fname, (char *) NULL);
+ p = vfs_path_append_new (panel->cwd_vpath, fe->fname->str, (char *) NULL);
status = do_compute_dir_size (p, sm, &dir_count, ret_count, ret_total, stat_func);
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
if (status != FILE_CONT)
return status;
@@ -799,25 +821,26 @@
static FileProgressStatus
progress_update_one (file_op_total_context_t * tctx, file_op_context_t * ctx, off_t add)
{
- struct timeval tv_current;
- static struct timeval tv_start = { 0, 0 };
+ gint64 tv_current;
+ static gint64 tv_start = -1;
tctx->progress_count++;
tctx->progress_bytes += (uintmax_t) add;
- if (tv_start.tv_sec == 0)
- {
- gettimeofday (&tv_start, (struct timezone *) NULL);
- }
- gettimeofday (&tv_current, (struct timezone *) NULL);
- if ((tv_current.tv_sec - tv_start.tv_sec) > FILEOP_UPDATE_INTERVAL)
+ tv_current = g_get_monotonic_time ();
+
+ if (tv_start < 0)
+ tv_start = tv_current;
+
+ if (tv_current - tv_start > FILEOP_UPDATE_INTERVAL_US)
{
if (verbose && ctx->dialog_type == FILEGUI_DIALOG_MULTI_ITEM)
{
file_progress_show_count (ctx, tctx->progress_count, ctx->progress_count);
file_progress_show_total (tctx, ctx, tctx->progress_bytes, TRUE);
}
- tv_start.tv_sec = tv_current.tv_sec;
+
+ tv_start = tv_current;
}
return check_progress_buttons (ctx);
@@ -831,10 +854,39 @@
char *msg;
int result = 0;
const char *head_msg;
+ int width_a, width_b, width;
head_msg = mode == Foreground ? MSG_ERROR : _("Background process error");
- msg = g_strdup_printf (fmt, a, b);
+ width_a = str_term_width1 (a);
+ width_b = str_term_width1 (b);
+ width = COLS - 8;
+
+ if (width_a > width)
+ {
+ if (width_b > width)
+ {
+ char *s;
+
+ s = g_strndup (str_trunc (a, width), width);
+ b = str_trunc (b, width);
+ msg = g_strdup_printf (fmt, s, b);
+ g_free (s);
+ }
+ else
+ {
+ a = str_trunc (a, width);
+ msg = g_strdup_printf (fmt, a, b);
+ }
+ }
+ else
+ {
+ if (width_b > width)
+ b = str_trunc (b, width);
+
+ msg = g_strdup_printf (fmt, a, b);
+ }
+
result = query_dialog (head_msg, msg, D_ERROR, 2, _("&Skip"), _("&Abort"));
g_free (msg);
do_refresh ();
@@ -1099,32 +1151,27 @@
static void
copy_file_file_display_progress (file_op_total_context_t * tctx, file_op_context_t * ctx,
- struct timeval tv_current, struct timeval tv_transfer_start,
- off_t file_size, off_t n_read_total)
+ gint64 tv_current, gint64 tv_transfer_start, off_t file_size,
+ off_t file_part)
{
- long dt;
+ gint64 dt;
- /* 1. Update rotating dash after some time */
+ /* Update rotating dash after some time */
rotate_dash (TRUE);
- /* 3. Compute ETA */
- dt = (tv_current.tv_sec - tv_transfer_start.tv_sec);
+ /* Compute ETA */
+ dt = (tv_current - tv_transfer_start) / G_USEC_PER_SEC;
- if (n_read_total == 0)
+ if (file_part == 0)
ctx->eta_secs = 0.0;
else
- {
- ctx->eta_secs = ((dt / (double) n_read_total) * file_size) - dt;
- ctx->bps = n_read_total / ((dt < 1) ? 1 : dt);
- }
+ ctx->eta_secs = ((dt / (double) file_part) * file_size) - dt;
- /* 4. Compute BPS rate */
- ctx->bps_time = (tv_current.tv_sec - tv_transfer_start.tv_sec);
- if (ctx->bps_time < 1)
- ctx->bps_time = 1;
- ctx->bps = n_read_total / ctx->bps_time;
+ /* Compute BPS rate */
+ ctx->bps_time = MAX (1, dt);
+ ctx->bps = file_part / ctx->bps_time;
- /* 5. Compute total ETA and BPS */
+ /* Compute total ETA and BPS */
if (ctx->progress_bytes != 0)
{
uintmax_t remain_bytes;
@@ -1132,10 +1179,10 @@
remain_bytes = ctx->progress_bytes - tctx->copied_bytes;
#if 1
{
- int total_secs = tv_current.tv_sec - tctx->transfer_start.tv_sec;
+ gint64 total_secs;
- if (total_secs < 1)
- total_secs = 1;
+ total_secs = (tv_current - tctx->transfer_start) / G_USEC_PER_SEC;
+ total_secs = MAX (1, total_secs);
tctx->bps = tctx->copied_bytes / total_secs;
tctx->eta_secs = (tctx->bps != 0) ? remain_bytes / tctx->bps : 0;
@@ -1249,9 +1296,18 @@
{
if (S_ISLNK (src_stat.st_mode) && ctx->stable_symlinks)
{
- return_status = make_symlink (ctx, s, d);
+ return_status = make_symlink (ctx, src_vpath, dst_vpath);
if (return_status == FILE_CONT)
+ {
+ if (ctx->preserve)
+ {
+ mc_timesbuf_t times;
+
+ get_times (&src_stat, ×);
+ mc_utime (dst_vpath, ×);
+ }
goto retry_src_remove;
+ }
goto ret;
}
@@ -1330,8 +1386,8 @@
return_status = progress_update_one (tctx, ctx, src_stat.st_size);
ret:
- vfs_path_free (src_vpath);
- vfs_path_free (dst_vpath);
+ vfs_path_free (src_vpath, TRUE);
+ vfs_path_free (dst_vpath, TRUE);
return return_status;
}
@@ -1424,14 +1480,14 @@
if (mc_lstat (tmp_vpath, &buf) != 0)
{
mc_closedir (reading);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
return FILE_RETRY;
}
if (S_ISDIR (buf.st_mode))
return_status = recursive_erase (tctx, ctx, tmp_vpath);
else
return_status = erase_file (tctx, ctx, tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
mc_closedir (reading);
@@ -1451,9 +1507,19 @@
}
/* --------------------------------------------------------------------------------------------- */
-/** Return -1 on error, 1 if there are no entries besides "." and ".."
- in the directory path points to, 0 else. */
-
+/**
+ * Check if directory is empty or not.
+ *
+ * @param vpath directory handler
+ *
+ * @returns -1 on error,
+ * 1 if there are no entries besides "." and ".." in the directory path points to,
+ * 0 else.
+ *
+ * ATTENTION! Be carefull when modifying this function (like commit 25e419ba0886f)!
+ * Some implementations of readdir() in MC VFS (for example, vfs_s_readdir(), whuch is uded
+ * in FISH) don't return "." and ".." entries.
+ */
static int
check_dir_is_empty (const vfs_path_t * vpath)
{
@@ -1511,16 +1577,17 @@
/* Reset progress count before delete to avoid counting files twice */
tctx->progress_count = tctx->prev_progress_count;
- while (erase_list != NULL && *status != FILE_ABORT)
+ while (!g_queue_is_empty (erase_list) && *status != FILE_ABORT)
{
- struct link *lp = (struct link *) erase_list->data;
+ struct link *lp;
+
+ lp = (struct link *) g_queue_pop_head (erase_list);
if (S_ISDIR (lp->st_mode))
*status = erase_dir_iff_empty (ctx, lp->src_vpath, tctx->progress_count);
else
*status = erase_file (tctx, ctx, lp->src_vpath);
- erase_list = g_slist_remove (erase_list, lp);
free_link (lp);
}
@@ -1555,7 +1622,6 @@
gboolean move_over = FALSE;
gboolean dstat_ok;
vfs_path_t *src_vpath, *dst_vpath;
- gboolean calc_total = FALSE;
src_vpath = vfs_path_from_str (s);
dst_vpath = vfs_path_from_str (d);
@@ -1589,7 +1655,7 @@
tmp = dst_vpath;
dst_vpath = vfs_path_append_new (dst_vpath, x_basename (s), (char *) NULL);
- vfs_path_free (tmp);
+ vfs_path_free (tmp, TRUE);
}
d = vfs_path_as_str (dst_vpath);
@@ -1609,8 +1675,6 @@
FILEGUI_DIALOG_MULTI_ITEM);
if (return_status != FILE_CONT)
goto ret;
-
- calc_total = TRUE;
}
return_status = copy_dir_dir (tctx, ctx, s, d, FALSE, TRUE, TRUE, NULL);
@@ -1657,7 +1721,7 @@
}
/* Failed because of filesystem boundary -> copy dir instead */
- if (panel != NULL && !calc_total)
+ if (panel != NULL)
{
/* In case of single directory, calculate totals. In case of many directories,
totals are calcuated already. */
@@ -1692,10 +1756,10 @@
erase_dir_after_copy (tctx, ctx, src_vpath, &return_status);
ret:
- erase_list = free_linklist (erase_list);
+ erase_list = free_erase_list (erase_list);
ret_fast:
- vfs_path_free (src_vpath);
- vfs_path_free (dst_vpath);
+ vfs_path_free (src_vpath, TRUE);
+ vfs_path_free (dst_vpath, TRUE);
return return_status;
}
@@ -1727,10 +1791,10 @@
for (i = 0; i < panel->dir.len; i++)
if (panel->dir.list[i].f.marked)
- return panel->dir.list[i].fname;
+ return panel->dir.list[i].fname->str;
}
- return panel->dir.list[panel->selected].fname;
+ return panel->dir.list[panel->selected].fname->str;
}
/* --------------------------------------------------------------------------------------------- */
@@ -1742,7 +1806,7 @@
gboolean ok;
if (force_single)
- source = selection (panel)->fname;
+ source = selection (panel)->fname->str;
else
source = panel_get_file (panel);
@@ -1776,7 +1840,7 @@
}
}
- vfs_path_free (source_vpath);
+ vfs_path_free (source_vpath, TRUE);
}
return ok ? source : NULL;
@@ -2056,7 +2120,7 @@
}
}
- vfs_path_free (src_vpath);
+ vfs_path_free (src_vpath, TRUE);
return value;
}
@@ -2126,7 +2190,7 @@
}
}
- vfs_path_free (src_vpath);
+ vfs_path_free (src_vpath, TRUE);
return value;
}
@@ -2209,7 +2273,7 @@
gboolean dst_exists = FALSE, appending = FALSE;
off_t file_size = -1;
FileProgressStatus return_status, temp_status;
- struct timeval tv_transfer_start;
+ gint64 tv_transfer_start;
dest_status_t dst_status = DEST_NONE;
int open_flags;
vfs_path_t *src_vpath = NULL, *dst_vpath = NULL;
@@ -2286,6 +2350,8 @@
}
}
+ get_times (&src_stat, ×);
+
if (!ctx->do_append)
{
/* Check the hardlinks */
@@ -2309,7 +2375,9 @@
if (S_ISLNK (src_stat.st_mode))
{
- return_status = make_symlink (ctx, src_path, dst_path);
+ return_status = make_symlink (ctx, src_vpath, dst_vpath);
+ if (return_status == FILE_CONT && ctx->preserve)
+ mc_utime (dst_vpath, ×);
goto ret_fast;
}
@@ -2366,11 +2434,12 @@
}
return_status = FILE_CONT;
+ mc_utime (dst_vpath, ×);
goto ret_fast;
}
}
- gettimeofday (&tv_transfer_start, (struct timezone *) NULL);
+ tv_transfer_start = g_get_monotonic_time ();
while ((src_desc = mc_open (src_vpath, O_RDONLY | O_LINEAR)) < 0 && !ctx->skip_all)
{
@@ -2411,7 +2480,6 @@
src_mode = src_stat.st_mode;
src_uid = src_stat.st_uid;
src_gid = src_stat.st_gid;
- get_times (&src_stat, ×);
file_size = src_stat.st_size;
open_flags = O_WRONLY;
@@ -2442,7 +2510,8 @@
goto ret;
}
- dst_status = DEST_SHORT; /* file opened, but not fully copied */
+ /* file opened, but not fully copied */
+ dst_status = DEST_SHORT_QUERY;
appending = ctx->do_append;
ctx->do_append = FALSE;
@@ -2510,7 +2579,7 @@
ctx->eta_secs = 0.0;
ctx->bps = 0;
- if (tctx->bps == 0 || (file_size / (tctx->bps)) > FILEOP_UPDATE_INTERVAL)
+ if (tctx->bps == 0 || (file_size / tctx->bps) > FILEOP_UPDATE_INTERVAL)
file_progress_show (ctx, 0, file_size, "", TRUE);
else
file_progress_show (ctx, 1, 1, "", TRUE);
@@ -2520,9 +2589,10 @@
if (return_status == FILE_CONT)
{
size_t bufsize;
- off_t n_read_total = 0;
- struct timeval tv_current, tv_last_update, tv_last_input;
- int secs, update_secs;
+ off_t file_part = 0;
+ gint64 tv_current, tv_last_update;
+ gint64 tv_last_input = 0;
+ gint64 usecs, update_usecs;
const char *stalled_msg = "";
gboolean is_first_time = TRUE;
@@ -2552,15 +2622,15 @@
if (n_read == 0)
break;
- gettimeofday (&tv_current, NULL);
+ tv_current = g_get_monotonic_time ();
if (n_read > 0)
{
char *t = buf;
- n_read_total += n_read;
+ file_part += n_read;
- gettimeofday (&tv_last_input, NULL);
+ tv_last_input = tv_current;
/* dst_write */
while ((n_written = mc_write (dest_desc, t, (size_t) n_read)) < n_read)
@@ -2599,26 +2669,24 @@
}
}
- tctx->copied_bytes = tctx->progress_bytes + n_read_total + ctx->do_reget;
+ tctx->copied_bytes = tctx->progress_bytes + file_part + ctx->do_reget;
- secs = (tv_current.tv_sec - tv_last_update.tv_sec);
- update_secs = (tv_current.tv_sec - tv_last_input.tv_sec);
+ usecs = tv_current - tv_last_update;
+ update_usecs = tv_current - tv_last_input;
- if (is_first_time || secs > FILEOP_UPDATE_INTERVAL)
+ if (is_first_time || usecs > FILEOP_UPDATE_INTERVAL_US)
{
- copy_file_file_display_progress (tctx, ctx,
- tv_current,
- tv_transfer_start, file_size, n_read_total);
+ copy_file_file_display_progress (tctx, ctx, tv_current, tv_transfer_start,
+ file_size, file_part);
tv_last_update = tv_current;
}
is_first_time = FALSE;
- if (update_secs > FILEOP_STALLING_INTERVAL)
+ if (update_usecs > FILEOP_STALLING_INTERVAL_US)
stalled_msg = _("(stalled)");
- force_update =
- (tv_current.tv_sec - tctx->transfer_start.tv_sec) > FILEOP_UPDATE_INTERVAL;
+ force_update = (tv_current - tctx->transfer_start) > FILEOP_UPDATE_INTERVAL_US;
if (verbose && ctx->dialog_type == FILEGUI_DIALOG_MULTI_ITEM)
{
@@ -2626,20 +2694,41 @@
file_progress_show_total (tctx, ctx, tctx->copied_bytes, force_update);
}
- file_progress_show (ctx, n_read_total + ctx->do_reget, file_size, stalled_msg,
+ file_progress_show (ctx, file_part + ctx->do_reget, file_size, stalled_msg,
force_update);
mc_refresh ();
return_status = check_progress_buttons (ctx);
-
if (return_status != FILE_CONT)
{
- mc_refresh ();
- goto ret;
+ int query_res;
+
+ query_res =
+ query_dialog (Q_ ("DialogTitle|Copy"),
+ _("Incomplete file was retrieved"), D_ERROR, 3,
+ _("&Delete"), _("&Keep"), _("&Continue copy"));
+
+ switch (query_res)
+ {
+ case 0:
+ /* delete */
+ dst_status = DEST_SHORT_DELETE;
+ goto ret;
+
+ case 1:
+ /* keep */
+ dst_status = DEST_SHORT_KEEP;
+ goto ret;
+
+ default:
+ /* continue copy */
+ break;
+ }
}
}
- dst_status = DEST_FULL; /* copy successful, don't remove target file */
+ /* copy successful */
+ dst_status = DEST_FULL;
}
ret:
@@ -2669,13 +2758,15 @@
break;
}
- if (dst_status == DEST_SHORT)
+ if (dst_status == DEST_SHORT_QUERY)
{
/* Query to remove short file */
- if (query_dialog (Q_ ("DialogTitle|Copy"), _("Incomplete file was retrieved. Keep it?"),
+ if (query_dialog (Q_ ("DialogTitle|Copy"), _("Incomplete file was retrieved"),
D_ERROR, 2, _("&Delete"), _("&Keep")) == 0)
mc_unlink (dst_vpath);
}
+ else if (dst_status == DEST_SHORT_DELETE)
+ mc_unlink (dst_vpath);
else if (dst_status == DEST_FULL && !appending)
{
/* Copy has succeeded */
@@ -2727,8 +2818,8 @@
return_status = progress_update_one (tctx, ctx, file_size);
ret_fast:
- vfs_path_free (src_vpath);
- vfs_path_free (dst_vpath);
+ vfs_path_free (src_vpath, TRUE);
+ vfs_path_free (dst_vpath, TRUE);
return return_status;
}
@@ -2874,7 +2965,7 @@
tmp = dst_vpath;
dst_vpath = vfs_path_append_new (dst_vpath, x_basename (s), (char *) NULL);
- vfs_path_free (tmp);
+ vfs_path_free (tmp, TRUE);
}
else
@@ -2976,10 +3067,13 @@
{
if (ctx->erase_at_end)
{
+ if (erase_list == NULL)
+ erase_list = g_queue_new ();
+
lp = g_new0 (struct link, 1);
lp->src_vpath = tmp_vpath;
lp->st_mode = dst_stat.st_mode;
- erase_list = g_slist_append (erase_list, lp);
+ g_queue_push_tail (erase_list, lp);
tmp_vpath = NULL;
}
else if (S_ISDIR (dst_stat.st_mode))
@@ -2987,7 +3081,7 @@
else
return_status = erase_file (tctx, ctx, tmp_vpath);
}
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
mc_closedir (reading);
@@ -3011,8 +3105,8 @@
free_link (parent_dirs->data);
g_slist_free_1 (parent_dirs);
ret_fast:
- vfs_path_free (src_vpath);
- vfs_path_free (dst_vpath);
+ vfs_path_free (src_vpath, TRUE);
+ vfs_path_free (dst_vpath, TRUE);
return return_status;
}
@@ -3073,6 +3167,7 @@
dirsize_status_msg_t *dsm = (dirsize_status_msg_t *) sm;
WGroup *gd = GROUP (sm->dlg);
Widget *wd = WIDGET (sm->dlg);
+ WRect r = wd->rect;
const char *b1_name = N_("&Abort");
const char *b2_name = N_("&Skip");
@@ -3103,7 +3198,9 @@
widget_select (dsm->skip_button);
}
- widget_set_size (wd, wd->y, wd->x, 8, ui_width);
+ r.lines = 8;
+ r.cols = ui_width;
+ widget_set_size_rect (wd, &r);
dirsize_status_locate_buttons (dsm);
}
@@ -3114,22 +3211,25 @@
{
dirsize_status_msg_t *dsm = (dirsize_status_msg_t *) sm;
Widget *wd = WIDGET (sm->dlg);
+ WRect r = wd->rect;
/* update second (longer label) */
label_set_textv (dsm->count_size, _("Directories: %zu, total size: %s"),
dsm->dir_count, size_trunc_sep (dsm->total_size, panels_options.kilobyte_si));
/* enlarge dialog if required */
- if (WIDGET (dsm->count_size)->cols + 6 > wd->cols)
+ if (WIDGET (dsm->count_size)->rect.cols + 6 > r.cols)
{
- widget_set_size (wd, wd->y, wd->x, wd->lines, WIDGET (dsm->count_size)->cols + 6);
+ r.cols = WIDGET (dsm->count_size)->rect.cols + 6;
+ widget_set_size_rect (wd, &r);
dirsize_status_locate_buttons (dsm);
widget_draw (wd);
/* TODO: ret rid of double redraw */
}
/* adjust first label */
- label_set_text (dsm->dirname, str_trunc (vfs_path_as_str (dsm->dirname_vpath), wd->cols - 6));
+ label_set_text (dsm->dirname,
+ str_trunc (vfs_path_as_str (dsm->dirname_vpath), wd->rect.cols - 6));
switch (status_msg_common_update (sm))
{
@@ -3218,6 +3318,8 @@
linklist = free_linklist (linklist);
dest_dirs = free_linklist (dest_dirs);
+ save_cwds_stat ();
+
if (single_entry)
{
source = check_single_entry (panel, force_single, &src_stat);
@@ -3249,7 +3351,7 @@
}
tctx = file_op_total_context_new ();
- gettimeofday (&tctx->transfer_start, (struct timezone *) NULL);
+ tctx->transfer_start = g_get_monotonic_time ();
#ifdef ENABLE_BACKGROUND
/* Did the user select to do a background operation? */
@@ -3269,7 +3371,7 @@
mc_setctl (panel->cwd_vpath, VFS_SETCTL_FORGET, NULL);
mc_setctl (dest_vpath, VFS_SETCTL_FORGET, NULL);
- vfs_path_free (dest_vpath);
+ vfs_path_free (dest_vpath, TRUE);
g_free (dest);
/* file_op_context_destroy (ctx); */
return FALSE;
@@ -3315,7 +3417,7 @@
vpath = vfs_path_from_str (PATH_SEP_STR);
chdir_retcode = mc_chdir (vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (chdir_retcode < 0)
{
ret_val = FALSE;
@@ -3366,7 +3468,7 @@
if (!panel->dir.list[i].f.marked)
continue; /* Skip the unmarked ones */
- source2 = panel->dir.list[i].fname;
+ source2 = panel->dir.list[i].fname->str;
src_stat = panel->dir.list[i].st;
value = operate_one_file (panel, operation, tctx, ctx, source2, &src_stat, dest);
@@ -3400,7 +3502,7 @@
{
tmp_vpath = vfs_path_from_str (save_cwd);
mc_setctl (tmp_vpath, VFS_SETCTL_STALE_DATA, NULL);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
g_free (save_cwd);
}
@@ -3408,14 +3510,14 @@
{
tmp_vpath = vfs_path_from_str (save_dest);
mc_setctl (tmp_vpath, VFS_SETCTL_STALE_DATA, NULL);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
g_free (save_dest);
}
linklist = free_linklist (linklist);
dest_dirs = free_linklist (dest_dirs);
g_free (dest);
- vfs_path_free (dest_vpath);
+ vfs_path_free (dest_vpath, TRUE);
MC_PTR_FREE (ctx->dest_mask);
#ifdef ENABLE_BACKGROUND
@@ -3435,6 +3537,8 @@
file_op_total_context_destroy (tctx);
ret_fast:
+ /* update panels before redraw screen in file_op_total_context_destroy() */
+ update_panels (UP_OPTIMIZE, UP_KEEPSEL);
file_op_context_destroy (ctx);
return ret_val;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/filegui.c
^
|
@@ -10,7 +10,7 @@
Janne Kukonlehto added much error recovery to them for being used
in an interactive program.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -21,7 +21,7 @@
Norbert Warmuth, 1997
Pavel Machek, 1998
Slava Zanko, 2009, 2010, 2011, 2012, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2011, 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
This file is part of the Midnight Commander.
@@ -168,8 +168,8 @@
/*** file scope macro definitions ****************************************************************/
-#define truncFileString(dlg, s) str_trunc (s, WIDGET (dlg)->cols - 10)
-#define truncFileStringSecure(dlg, s) path_trunc (s, WIDGET (dlg)->cols - 10)
+#define truncFileString(dlg, s) str_trunc (s, WIDGET (dlg)->rect.cols - 10)
+#define truncFileStringSecure(dlg, s) path_trunc (s, WIDGET (dlg)->rect.cols - 10)
/*** file scope type declarations ****************************************************************/
@@ -380,6 +380,27 @@
/* --------------------------------------------------------------------------------------------- */
+static cb_ret_t
+file_ui_op_dlg_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
+{
+ switch (msg)
+ {
+ case MSG_ACTION:
+ /* Do not close the dialog because the query dialog will be shown */
+ if (parm == CK_Cancel)
+ {
+ DIALOG (w)->ret_value = FILE_ABORT; /* for check_progress_buttons() */
+ return MSG_HANDLED;
+ }
+ return MSG_NOT_HANDLED;
+
+ default:
+ return dlg_default_callback (w, sender, msg, parm, data);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
/* The dialog layout:
*
* +---------------------- File exists -----------------------+
@@ -403,8 +424,9 @@
overwrite_query_dialog (file_op_context_t * ctx, enum OperationMode mode)
{
#define W(i) dlg_widgets[i].widget
-#define WX(i) W(i)->x
-#define WCOLS(i) W(i)->cols
+#define WX(i) W(i)->rect.x
+#define WY(i) W(i)->rect.y
+#define WCOLS(i) W(i)->rect.cols
#define NEW_LABEL(i, text) \
W(i) = WIDGET (label_new (dlg_widgets[i].y, dlg_widgets[i].x, text))
@@ -492,6 +514,7 @@
vfs_path_t *p;
char *s1;
+ const char *cs1;
char s2[BUF_SMALL];
int w, bw1, bw2;
unsigned short i;
@@ -522,14 +545,14 @@
p = vfs_path_from_str (ui->src_filename);
s1 = vfs_path_to_str_flags (p, 0, VPF_STRIP_HOME | VPF_STRIP_PASSWORD);
NEW_LABEL (1, s1);
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
g_free (s1);
/* new file size */
size_trunc_len (s2, sizeof (s2), ui->src_stat->st_size, 0, panels_options.kilobyte_si);
NEW_LABEL (2, s2);
/* new file modification date & time */
- s1 = (char *) file_date (ui->src_stat->st_mtime);
- NEW_LABEL (3, s1);
+ cs1 = file_date (ui->src_stat->st_mtime);
+ NEW_LABEL (3, cs1);
/* existing file */
NEW_LABEL (4, dlg_widgets[4].text);
@@ -537,14 +560,14 @@
p = vfs_path_from_str (ui->tgt_filename);
s1 = vfs_path_to_str_flags (p, 0, VPF_STRIP_HOME | VPF_STRIP_PASSWORD);
NEW_LABEL (5, s1);
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
g_free (s1);
/* existing file size */
size_trunc_len (s2, sizeof (s2), ui->dst_stat->st_size, 0, panels_options.kilobyte_si);
NEW_LABEL (6, s2);
/* existing file modification date & time */
- s1 = (char *) file_date (ui->dst_stat->st_mtime);
- NEW_LABEL (7, s1);
+ cs1 = file_date (ui->dst_stat->st_mtime);
+ NEW_LABEL (7, cs1);
/* will "Append" and "Reget" buttons be in the dialog? */
do_append = !S_ISDIR (ui->dst_stat->st_mode);
@@ -642,7 +665,7 @@
/* file info */
for (i = 0; i <= 7; i++)
ADD_LABEL (i);
- group_add_widget (g, hline_new (W (7)->y - wd->y + 1, -1, -1));
+ group_add_widget (g, hline_new (WY (7) - wd->rect.y + 1, -1, -1));
/* label & buttons */
ADD_LABEL (8); /* Overwrite this file? */
@@ -652,14 +675,14 @@
ADD_BUTTON (11); /* Append */
if (do_reget)
ADD_BUTTON (12); /* Reget */
- group_add_widget (g, hline_new (W (10)->y - wd->y + 1, -1, -1));
+ group_add_widget (g, hline_new (WY (10) - wd->rect.y + 1, -1, -1));
/* label & buttons */
ADD_LABEL (13); /* Overwrite all files? */
group_add_widget (g, dlg_widgets[14].widget);
for (i = 15; i <= 19; i++)
ADD_BUTTON (i);
- group_add_widget (g, hline_new (W (19)->y - wd->y + 1, -1, -1));
+ group_add_widget (g, hline_new (WY (19) - wd->rect.y + 1, -1, -1));
ADD_BUTTON (20); /* Abort */
@@ -670,7 +693,7 @@
if (result != B_CANCEL)
ui->dont_overwrite_with_zero = CHECK (dlg_widgets[14].widget)->state;
- dlg_destroy (ui->replace_dlg);
+ widget_destroy (wd);
return (result == B_CANCEL) ? REPLACE_ABORT : (replace_action_t) result;
@@ -721,9 +744,9 @@
buttons_width += progress_buttons[i].len;
button_set_text (BUTTON (progress_buttons[i].w), progress_buttons[i].text);
- progress_buttons[0].w->x = w->x + (w->cols - buttons_width) / 2;
- progress_buttons[i].w->x = progress_buttons[0].w->x + progress_buttons[0].len + 1;
- progress_buttons[3].w->x = progress_buttons[i].w->x + progress_buttons[i].len + 1;
+ progress_buttons[0].w->rect.x = w->rect.x + (w->rect.cols - buttons_width) / 2;
+ progress_buttons[i].w->rect.x = progress_buttons[0].w->rect.x + progress_buttons[0].len + 1;
+ progress_buttons[3].w->rect.x = progress_buttons[i].w->rect.x + progress_buttons[i].len + 1;
}
/* --------------------------------------------------------------------------------------------- */
@@ -804,6 +827,7 @@
int buttons_width;
int dlg_width = 58, dlg_height = 17;
int y = 2, x = 3;
+ WRect r;
if (ctx == NULL || ctx->ui != NULL)
return;
@@ -825,9 +849,8 @@
ui = ctx->ui;
ui->replace_result = REPLACE_YES;
- ui->op_dlg =
- dlg_create (TRUE, 0, 0, dlg_height, dlg_width, WPOS_CENTER, FALSE, dialog_colors, NULL,
- NULL, NULL, op_names[ctx->operation]);
+ ui->op_dlg = dlg_create (TRUE, 0, 0, dlg_height, dlg_width, WPOS_CENTER, FALSE, dialog_colors,
+ file_ui_op_dlg_callback, NULL, NULL, op_names[ctx->operation]);
w = WIDGET (ui->op_dlg);
g = GROUP (ui->op_dlg);
@@ -928,7 +951,10 @@
progress_buttons[3].len;
/* adjust dialog sizes */
- widget_set_size (w, w->y, w->x, y + 3, MAX (COLS * 2 / 3, buttons_width + 6));
+ r = w->rect;
+ r.lines = y + 3;
+ r.cols = MAX (COLS * 2 / 3, buttons_width + 6);
+ widget_set_size_rect (w, &r);
place_progress_buttons (ui->op_dlg, FALSE);
@@ -949,7 +975,7 @@
file_op_context_ui_t *ui = (file_op_context_ui_t *) ctx->ui;
dlg_run_done (ui->op_dlg);
- dlg_destroy (ui->op_dlg);
+ widget_destroy (WIDGET (ui->op_dlg));
MC_PTR_FREE (ctx->ui);
}
}
@@ -1018,7 +1044,7 @@
return;
if (ctx->progress_totals_computed)
- label_set_textv (ui->total_files_processed_label, _("Files processed: %zu/%zu"), done,
+ label_set_textv (ui->total_files_processed_label, _("Files processed: %zu / %zu"), done,
total);
else
label_set_textv (ui->total_files_processed_label, _("Files processed: %zu"), done);
@@ -1056,11 +1082,11 @@
if (ui->time_label != NULL)
{
- struct timeval tv_current;
+ gint64 tv_current;
char buffer4[BUF_TINY];
- gettimeofday (&tv_current, NULL);
- file_frmt_time (buffer2, tv_current.tv_sec - tctx->transfer_start.tv_sec);
+ tv_current = g_get_monotonic_time ();
+ file_frmt_time (buffer2, (tv_current - tctx->transfer_start) / G_USEC_PER_SEC);
if (ctx->progress_totals_computed)
{
@@ -1094,7 +1120,7 @@
else
{
size_trunc_len (buffer3, 5, ctx->progress_bytes, 0, panels_options.kilobyte_si);
- hline_set_textv (ui->total_bytes_label, _(" Total: %s/%s "), buffer2, buffer3);
+ hline_set_textv (ui->total_bytes_label, _(" Total: %s / %s "), buffer2, buffer3);
}
}
}
@@ -1269,15 +1295,15 @@
/* --------------------------------------------------------------------------------------------- */
char *
-file_mask_dialog (file_op_context_t * ctx, FileOperation operation,
- gboolean only_one,
+file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean only_one,
const char *format, const void *text, const char *def_text, gboolean * do_bg)
{
size_t fmd_xlen;
vfs_path_t *vpath;
gboolean source_easy_patterns = easy_patterns;
char fmd_buf[BUF_MEDIUM];
- char *dest_dir, *tmp;
+ char *dest_dir = NULL;
+ char *tmp;
char *def_text_secure;
if (ctx == NULL)
@@ -1291,7 +1317,7 @@
/* filter out a possible password from def_text */
vpath = vfs_path_from_str_flags (def_text, only_one ? VPF_NO_CANON : VPF_NONE);
tmp = vfs_path_to_str_flags (vpath, 0, VPF_STRIP_PASSWORD);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (source_easy_patterns)
def_text_secure = strutils_glob_escape (tmp);
@@ -1329,22 +1355,23 @@
}
{
- char *source_mask, *orig_mask;
+ char *source_mask = NULL;
+ char *orig_mask;
int val;
struct stat buf;
quick_widget_t quick_widgets[] = {
/* *INDENT-OFF* */
- QUICK_LABELED_INPUT (fmd_buf, input_label_above,
- easy_patterns ? "*" : "^(.*)$", "input-def", &source_mask,
- NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES),
+ QUICK_LABELED_INPUT (fmd_buf, input_label_above, easy_patterns ? "*" : "^(.*)$",
+ "input-def", &source_mask, NULL, FALSE, FALSE,
+ INPUT_COMPLETE_FILENAMES),
QUICK_START_COLUMNS,
QUICK_SEPARATOR (FALSE),
QUICK_NEXT_COLUMN,
QUICK_CHECKBOX (N_("&Using shell patterns"), &source_easy_patterns, NULL),
QUICK_STOP_COLUMNS,
- QUICK_LABELED_INPUT (N_("to:"), input_label_above,
- def_text_secure, "input2", &dest_dir, NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES),
+ QUICK_LABELED_INPUT (N_("to:"), input_label_above, def_text_secure, "input2", &dest_dir,
+ NULL, FALSE, FALSE, INPUT_COMPLETE_FILENAMES),
QUICK_SEPARATOR (TRUE),
QUICK_START_COLUMNS,
QUICK_CHECKBOX (N_("Follow &links"), &ctx->follow_links, NULL),
@@ -1363,55 +1390,56 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, fmd_xlen };
+
quick_dialog_t qdlg = {
- -1, -1, fmd_xlen,
- op_names[operation], "[Mask Copy/Rename]",
+ r, op_names[operation], "[Mask Copy/Rename]",
quick_widgets, NULL, NULL
};
- ask_file_mask:
- val = quick_dialog_skip (&qdlg, 4);
-
- if (val == B_CANCEL)
+ while (TRUE)
{
- g_free (def_text_secure);
- return NULL;
- }
+ val = quick_dialog_skip (&qdlg, 4);
+
+ if (val == B_CANCEL)
+ {
+ g_free (def_text_secure);
+ return NULL;
+ }
- ctx->stat_func = ctx->follow_links ? mc_stat : mc_lstat;
+ ctx->stat_func = ctx->follow_links ? mc_stat : mc_lstat;
- if (ctx->op_preserve)
- {
- ctx->preserve = TRUE;
- ctx->umask_kill = 0777777;
- ctx->preserve_uidgid = (geteuid () == 0);
- }
- else
- {
- mode_t i2;
+ if (ctx->op_preserve)
+ {
+ ctx->preserve = TRUE;
+ ctx->umask_kill = 0777777;
+ ctx->preserve_uidgid = (geteuid () == 0);
+ }
+ else
+ {
+ mode_t i2;
- ctx->preserve = ctx->preserve_uidgid = FALSE;
- i2 = umask (0);
- umask (i2);
- ctx->umask_kill = i2 ^ 0777777;
- }
+ ctx->preserve = ctx->preserve_uidgid = FALSE;
+ i2 = umask (0);
+ umask (i2);
+ ctx->umask_kill = i2 ^ 0777777;
+ }
- if ((dest_dir == NULL) || (*dest_dir == '\0'))
- {
- g_free (def_text_secure);
- g_free (source_mask);
- g_free (dest_dir);
- return NULL;
- }
+ if (*dest_dir == '\0')
+ {
+ g_free (def_text_secure);
+ g_free (source_mask);
+ g_free (dest_dir);
+ return NULL;
+ }
- ctx->search_handle = mc_search_new (source_mask, NULL);
+ ctx->search_handle = mc_search_new (source_mask, NULL);
+ if (ctx->search_handle != NULL)
+ break;
- if (ctx->search_handle == NULL)
- {
message (D_ERROR, MSG_ERROR, _("Invalid source pattern '%s'"), source_mask);
- g_free (dest_dir);
- g_free (source_mask);
- goto ask_file_mask;
+ MC_PTR_FREE (dest_dir);
+ MC_PTR_FREE (source_mask);
}
g_free (def_text_secure);
@@ -1456,7 +1484,7 @@
dest_dir = g_strdup ("./");
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (val == B_USER)
*do_bg = TRUE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/filegui.h
^
|
@@ -22,10 +22,9 @@
filegui_dialog_type_t dialog_type);
void file_op_context_destroy_ui (file_op_context_t * ctx);
-char *file_mask_dialog (file_op_context_t * ctx, FileOperation operation,
- gboolean only_one,
- const char *format, const void *text,
- const char *def_text, gboolean * do_bg);
+char *file_mask_dialog (file_op_context_t * ctx, FileOperation operation, gboolean only_one,
+ const char *format, const void *text, const char *def_text,
+ gboolean * do_bg);
FileProgressStatus check_progress_buttons (file_op_context_t * ctx);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/filemanager.c
^
|
@@ -1,14 +1,14 @@
/*
Main dialog (file panels) of the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
Miguel de Icaza, 1994, 1995, 1996, 1997
Janne Kukonlehto, 1994, 1995
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2012, 2013, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Slava Zanko <slavazanko@gmail.com>, 2013
This file is part of the Midnight Commander.
@@ -61,7 +61,7 @@
#include "src/execute.h" /* toggle_subshell */
#include "src/setup.h" /* variables */
#include "src/learn.h" /* learn_keys() */
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "lib/fileloc.h" /* MC_FILEPOS_FILE */
#include "lib/keybind.h"
#include "lib/event.h"
@@ -135,7 +135,7 @@
static void
stop_dialogs (void)
{
- dlg_stop (midnight_dlg);
+ dlg_stop (filemanager);
if (top_dlg != NULL)
dlg_stop (DIALOG (top_dlg->data));
@@ -148,14 +148,14 @@
{
char *sel_dir;
- sel_dir = tree_box (selection (current_panel)->fname);
+ sel_dir = tree_box (selection (current_panel)->fname->str);
if (sel_dir != NULL)
{
vfs_path_t *sel_vdir;
sel_vdir = vfs_path_from_str (sel_dir);
panel_cd (current_panel, sel_vdir, cd_exact);
- vfs_path_free (sel_vdir);
+ vfs_path_free (sel_vdir, TRUE);
g_free (sel_dir);
}
}
@@ -212,10 +212,7 @@
entries = g_list_prepend (entries, menu_entry_create (_("S&hell link..."), CK_ConnectFish));
#endif
#ifdef ENABLE_VFS_SFTP
- entries = g_list_prepend (entries, menu_entry_create (_("S&FTP link..."), CK_ConnectSftp));
-#endif
-#ifdef ENABLE_VFS_SMB
- entries = g_list_prepend (entries, menu_entry_create (_("SM&B link..."), CK_ConnectSmb));
+ entries = g_list_prepend (entries, menu_entry_create (_("SFTP li&nk..."), CK_ConnectSftp));
#endif
entries = g_list_prepend (entries, menu_entry_create (_("Paneli&ze"), CK_Panelize));
entries = g_list_prepend (entries, menu_separator_create ());
@@ -663,7 +660,7 @@
else
vpath = vfs_path_append_new (original_dir, other_dir, (char *) NULL);
mc_chdir (vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
create_panel (other_index, other_mode);
@@ -679,7 +676,7 @@
else
vpath = vfs_path_append_new (original_dir, current_dir, (char *) NULL);
mc_chdir (vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
create_panel (current_index, current_mode);
@@ -690,7 +687,7 @@
else
current_panel = left_panel;
- vfs_path_free (original_dir);
+ vfs_path_free (original_dir, TRUE);
#ifdef ENABLE_VFS
mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_other_panel_timestamp, NULL, NULL);
@@ -724,7 +721,7 @@
if (!IS_PATH_SEP (cwd_vpath_str[strlen (cwd_vpath_str) - 1]))
command_insert (cmdline, PATH_SEP_STR, FALSE);
- vfs_path_free (cwd_vpath);
+ vfs_path_free (cwd_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -740,9 +737,10 @@
vfs_path_t *vpath;
int i;
- vpath = vfs_path_append_new (panel->cwd_vpath, selection (panel)->fname, (char *) NULL);
+ vpath =
+ vfs_path_append_new (panel->cwd_vpath, selection (panel)->fname->str, (char *) NULL);
i = mc_readlink (vpath, buffer, sizeof (buffer) - 1);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (i > 0)
{
@@ -790,7 +788,7 @@
tmp = vfs_path_as_str (selected_name);
}
else
- tmp = selection (current_panel)->fname;
+ tmp = selection (current_panel)->fname->str;
command_insert (cmdline, tmp, TRUE);
}
@@ -810,12 +808,12 @@
for (i = 0; i < panel->dir.len; i++)
{
if (panel->dir.list[i].f.marked)
- command_insert (cmdline, panel->dir.list[i].fname, TRUE);
+ command_insert (cmdline, panel->dir.list[i].fname->str, TRUE);
}
}
else
{
- command_insert (cmdline, panel->dir.list[panel->selected].fname, TRUE);
+ command_insert (cmdline, panel->dir.list[panel->selected].fname->str, TRUE);
}
input_enable_update (cmdline);
}
@@ -858,11 +856,6 @@
#endif /* HAVE_CHARSET */
#endif /* HAVE_SLANG */
-#ifdef ENABLE_SUBSHELL
- if (mc_global.tty.use_subshell)
- add_select_channel (mc_global.tty.subshell_pty, load_prompt, NULL);
-#endif /* !ENABLE_SUBSHELL */
-
if ((tty_baudrate () < 9600) || mc_global.tty.slow_terminal)
verbose = FALSE;
}
@@ -881,7 +874,7 @@
vpath = vfs_path_from_str (d);
ret = mc_chdir (vpath);
(void) ret;
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
g_free (d);
}
@@ -906,18 +899,18 @@
static void
create_file_manager (void)
{
- Widget *w = WIDGET (midnight_dlg);
- WGroup *g = GROUP (midnight_dlg);
+ Widget *w = WIDGET (filemanager);
+ WGroup *g = GROUP (filemanager);
w->keymap = filemanager_map;
w->ext_keymap = filemanager_x_map;
- midnight_dlg->get_shortcut = midnight_get_shortcut;
- midnight_dlg->get_title = midnight_get_title;
+ filemanager->get_shortcut = midnight_get_shortcut;
+ filemanager->get_title = midnight_get_title;
/* allow rebind tab */
widget_want_tab (w, TRUE);
- the_menubar = menubar_new (NULL, menubar_visible);
+ the_menubar = menubar_new (NULL);
group_add_widget (g, the_menubar);
init_menu ();
@@ -928,7 +921,7 @@
the_hint = label_new (0, 0, 0);
the_hint->transparent = TRUE;
the_hint->auto_adjust_cols = 0;
- WIDGET (the_hint)->cols = COLS;
+ WIDGET (the_hint)->rect.cols = COLS;
group_add_widget (g, the_hint);
cmdline = command_new (0, 0, 0);
@@ -938,9 +931,16 @@
the_prompt->transparent = TRUE;
group_add_widget (g, the_prompt);
- the_bar = buttonbar_new (mc_global.keybar_visible);
+ the_bar = buttonbar_new ();
group_add_widget (g, the_bar);
midnight_set_buttonbar (the_bar);
+
+#ifdef ENABLE_SUBSHELL
+ /* Must be done after creation of cmdline and promt widgets to avoid potential
+ NULL dereference in load_prompt() -> ... -> setup_cmdline() -> label_set_text(). */
+ if (mc_global.tty.use_subshell)
+ add_select_channel (mc_global.tty.subshell_pty, load_prompt, NULL);
+#endif /* !ENABLE_SUBSHELL */
}
/* --------------------------------------------------------------------------------------------- */
@@ -955,7 +955,7 @@
if (!vfs_file_is_local (vpath) || g_path_is_absolute (filename))
return vpath;
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return vfs_path_append_new (vfs_get_raw_current_dir (), filename, (char *) NULL);
}
@@ -985,7 +985,7 @@
vpath = prepend_cwd_on_local ((char *) mc_run_param0);
ret = view_file (vpath, FALSE, TRUE);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
break;
}
#ifdef USE_DIFF_VIEW
@@ -1008,7 +1008,7 @@
char *s;
int act;
- s = show_file_history (WIDGET (midnight_dlg), &act);
+ s = show_file_history (WIDGET (filemanager), &act);
if (s != NULL)
{
vfs_path_t *s_vpath;
@@ -1038,7 +1038,7 @@
}
g_free (s);
- vfs_path_free (s_vpath);
+ vfs_path_free (s_vpath, TRUE);
}
}
@@ -1240,9 +1240,6 @@
case CK_ExternalPanelize:
external_panelize ();
break;
- case CK_Filter:
- filter_cmd ();
- break;
case CK_ViewFiltered:
view_filtered_cmd (current_panel);
break;
@@ -1264,11 +1261,6 @@
sftplink_cmd ();
break;
#endif
-#ifdef ENABLE_VFS_SMB
- case CK_ConnectSmb:
- smblink_cmd ();
- break;
-#endif /* ENABLE_VFS_SMB */
case CK_Panelize:
cd_panelize_cmd ();
break;
@@ -1365,7 +1357,8 @@
case CK_Select:
case CK_Unselect:
case CK_SelectInvert:
- res = send_message (current_panel, midnight_dlg, MSG_ACTION, command, NULL);
+ case CK_Filter:
+ res = send_message (current_panel, filemanager, MSG_ACTION, command, NULL);
break;
case CK_Shell:
toggle_subshell ();
@@ -1377,7 +1370,7 @@
sort_cmd ();
break;
case CK_ExtendedKeyMap:
- WIDGET (midnight_dlg)->ext_mode = TRUE;
+ WIDGET (filemanager)->ext_mode = TRUE;
break;
case CK_Suspend:
mc_event_raise (MCEVENT_GROUP_CORE, "suspend", NULL);
@@ -1467,12 +1460,12 @@
static gboolean
handle_cmdline_enter (void)
{
- size_t i;
+ const char *s;
- for (i = 0; cmdline->buffer[i] != '\0' && whitespace (cmdline->buffer[i]); i++)
+ for (s = input_get_ctext (cmdline); *s != '\0' && whitespace (*s); s++)
;
- if (cmdline->buffer[i] != '\0')
+ if (*s != '\0')
{
send_message (cmdline, NULL, MSG_KEY, '\n', NULL);
return TRUE;
@@ -1512,7 +1505,7 @@
return MSG_HANDLED;
case MSG_RESIZE:
- widget_adjust_position (w->pos_flags, &w->y, &w->x, &w->lines, &w->cols);
+ widget_adjust_position (w->pos_flags, &w->rect);
setup_panels ();
menubar_arrange (the_menubar);
return MSG_HANDLED;
@@ -1557,14 +1550,13 @@
{
/* Special treatement, since the input line will eat them */
if (parm == '+')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_Select, NULL);
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_Select, NULL);
if (parm == '\\' || parm == '-')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_Unselect,
- NULL);
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_Unselect, NULL);
if (parm == '*')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_SelectInvert,
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_SelectInvert,
NULL);
}
else if (!command_prompt || input_is_empty (cmdline))
@@ -1573,14 +1565,13 @@
* first char on input line
*/
if (parm == '+')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_Select, NULL);
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_Select, NULL);
if (parm == '\\' || parm == '-')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_Unselect,
- NULL);
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_Unselect, NULL);
if (parm == '*')
- return send_message (current_panel, midnight_dlg, MSG_ACTION, CK_SelectInvert,
+ return send_message (current_panel, filemanager, MSG_ACTION, CK_SelectInvert,
NULL);
}
}
@@ -1617,7 +1608,7 @@
/* Handle shortcuts, menu, and buttonbar. */
return midnight_execute_cmd (sender, parm);
- case MSG_END:
+ case MSG_DESTROY:
panel_deinit ();
return MSG_HANDLED;
@@ -1636,7 +1627,7 @@
menu_set_name (left_menu, panels_layout.horizontal_split ? _("&Above") : _("&Left"));
menu_set_name (right_menu, panels_layout.horizontal_split ? _("&Below") : _("&Right"));
menubar_arrange (the_menubar);
- menubar_set_visible (the_menubar, menubar_visible);
+ widget_set_visibility (WIDGET (the_menubar), menubar_visible);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1644,7 +1635,7 @@
void
midnight_set_buttonbar (WButtonBar * b)
{
- Widget *w = WIDGET (midnight_dlg);
+ Widget *w = WIDGET (filemanager);
buttonbar_set_label (b, 1, Q_ ("ButtonBar|Help"), w->keymap, NULL);
buttonbar_set_label (b, 2, Q_ ("ButtonBar|Menu"), w->keymap, NULL);
@@ -1669,7 +1660,7 @@
static const gint64 update_period = 60 * G_USEC_PER_SEC;
static gint64 tv = 0;
- char *data, *result = NULL, *eop;
+ char *data, *result, *eop;
size_t len, start;
GIConv conv;
@@ -1708,19 +1699,18 @@
/* hint files are stored in utf-8 */
/* try convert hint file from utf-8 to terminal encoding */
conv = str_crt_conv_from ("UTF-8");
- if (conv != INVALID_CONV)
+ if (conv == INVALID_CONV)
+ result = g_strndup (data + start, len - start);
+ else
{
GString *buffer;
+ gboolean nok;
buffer = g_string_sized_new (len - start);
- if (str_convert (conv, &data[start], buffer) != ESTR_FAILURE)
- result = g_string_free (buffer, FALSE);
- else
- g_string_free (buffer, TRUE);
+ nok = (str_convert (conv, data + start, buffer) == ESTR_FAILURE);
+ result = g_string_free (buffer, nok);
str_close_conv (conv);
}
- else
- result = g_strndup (data + start, len - start);
g_free (data);
return result;
@@ -1759,7 +1749,7 @@
{
char text[BUF_SMALL];
- g_snprintf (text, sizeof (text), _("GNU Midnight Commander %s\n"), VERSION);
+ g_snprintf (text, sizeof (text), _("GNU Midnight Commander %s\n"), mc_global.mc_version);
set_hintbar (text);
}
}
@@ -1775,7 +1765,7 @@
change_panel (void)
{
input_complete_free (cmdline);
- group_select_next_widget (GROUP (midnight_dlg));
+ group_select_next_widget (GROUP (filemanager));
return current_panel;
}
@@ -1816,8 +1806,8 @@
edit_stack_init ();
#endif
- midnight_dlg = dlg_create (FALSE, 0, 0, 1, 1, WPOS_FULLSCREEN, FALSE, dialog_colors,
- midnight_callback, NULL, "[main]", NULL);
+ filemanager = dlg_create (FALSE, 0, 0, 1, 1, WPOS_FULLSCREEN, FALSE, dialog_colors,
+ midnight_callback, NULL, "[main]", NULL);
/* Check if we were invoked as an editor or file viewer */
if (mc_global.mc_run_mode != MC_RUN_FULL)
@@ -1828,19 +1818,19 @@
else
{
/* We only need the first idle event to show user menu after start */
- widget_idle (WIDGET (midnight_dlg), TRUE);
+ widget_idle (WIDGET (filemanager), TRUE);
setup_mc ();
mc_filehighlight = mc_fhl_new (TRUE);
create_file_manager ();
- (void) dlg_run (midnight_dlg);
+ (void) dlg_run (filemanager);
mc_fhl_free (&mc_filehighlight);
ret = TRUE;
- /* dlg_destroy destroys even current_panel->cwd_vpath, so we have to save a copy :) */
+ /* widget_destroy destroys even current_panel->cwd_vpath, so we have to save a copy :) */
if (mc_args__last_wd_file != NULL && vfs_current_is_local ())
last_wd_string = g_strdup (vfs_path_as_str (current_panel->cwd_vpath));
@@ -1854,7 +1844,7 @@
mc_global.midnight_shutdown = TRUE;
dialog_switch_shutdown ();
done_mc ();
- dlg_destroy (midnight_dlg);
+ widget_destroy (WIDGET (filemanager));
current_panel = NULL;
#ifdef USE_INTERNAL_EDIT
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/filenot.c
^
|
@@ -3,7 +3,7 @@
tree about the changes made to the directory
structure.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Author:
@@ -94,7 +94,7 @@
q = vfs_path_append_new (vpath, "..", (char *) NULL);
result = my_mkdir_rec (q, mode);
- vfs_path_free (q);
+ vfs_path_free (q, TRUE);
if (result == 0)
result = mc_mkdir (vpath, mode);
@@ -117,7 +117,7 @@
vfs_path_t *my_s;
my_s = get_absolute_name (vpath);
- vfs_path_free (my_s);
+ vfs_path_free (my_s, TRUE);
}
return result;
}
@@ -138,9 +138,9 @@
vfs_path_t *my_s;
my_s = get_absolute_name (vpath);
- vfs_path_free (my_s);
+ vfs_path_free (my_s, TRUE);
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return result;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/fileopctx.c
^
|
@@ -1,7 +1,7 @@
/*
File operation contexts for the Midnight Commander
- Copyright (C) 1999-2020
+ Copyright (C) 1999-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/fileopctx.h
^
|
@@ -10,7 +10,6 @@
#include <sys/stat.h>
#include <sys/types.h>
-#include <sys/time.h>
#include <inttypes.h> /* uintmax_t */
#include "lib/global.h"
@@ -171,7 +170,7 @@
uintmax_t copied_bytes;
size_t bps;
size_t bps_count;
- struct timeval transfer_start;
+ gint64 transfer_start;
double eta_secs;
gboolean ask_overwrite;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/find.c
^
|
@@ -1,13 +1,13 @@
/*
Find file command for the Midnight Commander
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
Miguel de Icaza, 1995
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -90,6 +90,7 @@
gboolean file_case_sens;
gboolean file_pattern;
gboolean find_recurs;
+ gboolean follow_symlinks;
gboolean skip_hidden;
gboolean file_all_charsets;
@@ -132,6 +133,7 @@
static WCheck *file_case_sens_cbox; /* "case sensitive" checkbox */
static WCheck *file_pattern_cbox; /* File name is glob or regexp */
static WCheck *recursively_cbox;
+static WCheck *follow_sym_cbox;
static WCheck *skip_hidden_cbox;
static WCheck *content_case_sens_cbox; /* "case sensitive" checkbox */
static WCheck *content_regexp_cbox; /* "find regular expression" checkbox */
@@ -201,7 +203,7 @@
static WListbox *find_list; /* Listbox with the file list */
static find_file_options_t options = {
- TRUE, TRUE, TRUE, FALSE, FALSE,
+ TRUE, TRUE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, NULL
};
@@ -286,6 +288,8 @@
mc_config_get_bool (mc_global.main_config, "FindFile", "file_shell_pattern", TRUE);
options.find_recurs =
mc_config_get_bool (mc_global.main_config, "FindFile", "file_find_recurs", TRUE);
+ options.follow_symlinks =
+ mc_config_get_bool (mc_global.main_config, "FindFile", "follow_symlinks", FALSE);
options.skip_hidden =
mc_config_get_bool (mc_global.main_config, "FindFile", "file_skip_hidden", FALSE);
options.file_all_charsets =
@@ -319,6 +323,8 @@
mc_config_set_bool (mc_global.main_config, "FindFile", "file_shell_pattern",
options.file_pattern);
mc_config_set_bool (mc_global.main_config, "FindFile", "file_find_recurs", options.find_recurs);
+ mc_config_set_bool (mc_global.main_config, "FindFile", "follow_symlinks",
+ options.follow_symlinks);
mc_config_set_bool (mc_global.main_config, "FindFile", "file_skip_hidden", options.skip_hidden);
mc_config_set_bool (mc_global.main_config, "FindFile", "file_all_charsets",
options.file_all_charsets);
@@ -495,7 +501,7 @@
/* check filename regexp */
if (!file_pattern_cbox->state && !input_is_empty (in_name)
- && !find_check_regexp (in_name->buffer))
+ && !find_check_regexp (input_get_ctext (in_name)))
{
/* Don't stop the dialog */
widget_set_state (w, WST_ACTIVE, TRUE);
@@ -505,7 +511,8 @@
}
/* check content regexp */
- if (content_regexp_cbox->state && !content_is_empty && !find_check_regexp (in_with->buffer))
+ if (content_regexp_cbox->state && !content_is_empty
+ && !find_check_regexp (input_get_ctext (in_with)))
{
/* Don't stop the dialog */
widget_set_state (w, WST_ACTIVE, TRUE);
@@ -563,9 +570,9 @@
/* Size of the find parameters window */
#ifdef HAVE_CHARSET
- const int lines = 18;
+ const int lines = 19;
#else
- const int lines = 17;
+ const int lines = 18;
#endif
int cols = 68;
@@ -574,6 +581,7 @@
/* file name */
const char *file_name_label = N_("File name:");
const char *file_recurs_label = N_("&Find recursively");
+ const char *file_follow_symlinks = N_("Follow s&ymlinks");
const char *file_pattern_label = N_("&Using shell patterns");
#ifdef HAVE_CHARSET
const char *file_all_charsets_label = N_("&All charsets");
@@ -606,6 +614,7 @@
file_name_label = _(file_name_label);
file_recurs_label = _(file_recurs_label);
+ file_follow_symlinks = _(file_follow_symlinks);
file_pattern_label = _(file_pattern_label);
#ifdef HAVE_CHARSET
file_all_charsets_label = _(file_all_charsets_label);
@@ -634,6 +643,7 @@
/* widget widths */
cw = str_term_width1 (file_name_label);
cw = max (cw, str_term_width1 (file_recurs_label) + 4);
+ cw = max (cw, str_term_width1 (file_follow_symlinks) + 4);
cw = max (cw, str_term_width1 (file_pattern_label) + 4);
#ifdef HAVE_CHARSET
cw = max (cw, str_term_width1 (file_all_charsets_label) + 4);
@@ -716,6 +726,9 @@
recursively_cbox = check_new (y1++, x1, options.find_recurs, file_recurs_label);
group_add_widget (g, recursively_cbox);
+ follow_sym_cbox = check_new (y1++, x1, options.follow_symlinks, file_follow_symlinks);
+ group_add_widget (g, follow_sym_cbox);
+
file_pattern_cbox = check_new (y1++, x1, options.file_pattern, file_pattern_label);
group_add_widget (g, file_pattern_cbox);
@@ -770,21 +783,21 @@
case B_TREE:
{
- char *temp_dir;
+ const char *start_cstr;
+ const char *temp_dir;
+
+ start_cstr = input_get_ctext (in_start);
- temp_dir = in_start->buffer;
- if (*temp_dir == '\0' || DIR_IS_DOT (temp_dir))
- temp_dir = g_strdup (vfs_path_as_str (panel->cwd_vpath));
+ if (input_is_empty (in_start) || DIR_IS_DOT (start_cstr))
+ temp_dir = vfs_path_as_str (panel->cwd_vpath);
else
- temp_dir = g_strdup (temp_dir);
+ temp_dir = start_cstr;
if (in_start_dir != INPUT_LAST_TEXT)
g_free (in_start_dir);
in_start_dir = tree_box (temp_dir);
if (in_start_dir == NULL)
- in_start_dir = temp_dir;
- else
- g_free (temp_dir);
+ in_start_dir = g_strdup (temp_dir);
input_assign_text (in_start, in_start_dir);
@@ -805,19 +818,20 @@
options.content_first_hit = content_first_hit_cbox->state;
options.content_whole_words = content_whole_words_cbox->state;
options.find_recurs = recursively_cbox->state;
+ options.follow_symlinks = follow_sym_cbox->state;
options.file_pattern = file_pattern_cbox->state;
options.file_case_sens = file_case_sens_cbox->state;
options.skip_hidden = skip_hidden_cbox->state;
options.ignore_dirs_enable = ignore_dirs_cbox->state;
g_free (options.ignore_dirs);
- options.ignore_dirs = g_strdup (in_ignore->buffer);
+ options.ignore_dirs = input_get_text (in_ignore);
- *content = !input_is_empty (in_with) ? g_strdup (in_with->buffer) : NULL;
- if (!input_is_empty (in_name))
- *pattern = g_strdup (in_name->buffer);
- else
+ *content = !input_is_empty (in_with) ? input_get_text (in_with) : NULL;
+ if (input_is_empty (in_name))
*pattern = g_strdup (options.file_pattern ? "*" : ".*");
- *start_dir = !input_is_empty (in_start) ? in_start->buffer : (char *) ".";
+ else
+ *pattern = input_get_text (in_name);
+ *start_dir = (char *) (!input_is_empty (in_start) ? input_get_ctext (in_start) : ".");
if (in_start_dir != INPUT_LAST_TEXT)
g_free (in_start_dir);
in_start_dir = g_strdup (*start_dir);
@@ -848,10 +862,10 @@
}
if (!options.ignore_dirs_enable || input_is_empty (in_ignore)
- || DIR_IS_DOT (in_ignore->buffer))
+ || DIR_IS_DOT (input_get_ctext (in_ignore)))
*ignore_dirs = NULL;
else
- *ignore_dirs = g_strdup (in_ignore->buffer);
+ *ignore_dirs = input_get_text (in_ignore);
find_save_options ();
@@ -859,7 +873,7 @@
}
}
- dlg_destroy (find_dlg);
+ widget_destroy (WIDGET (find_dlg));
return return_value;
}
@@ -881,12 +895,20 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static void
+queue_dir_free (gpointer data)
+{
+ vfs_path_free ((vfs_path_t *) data, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/** Remove all the items from the stack */
static void
clear_stack (void)
{
- g_queue_clear_full (&dir_queue, (GDestroyNotify) vfs_path_free);
+ g_queue_clear_full (&dir_queue, queue_dir_free);
}
/* --------------------------------------------------------------------------------------------- */
@@ -996,12 +1018,12 @@
if (mc_stat (vpath, &s) != 0 || !S_ISREG (s.st_mode))
{
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return FALSE;
}
file_fd = mc_open (vpath, O_RDONLY);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (file_fd == -1)
return FALSE;
@@ -1012,7 +1034,7 @@
if (s.st_size >= MIN_REFRESH_FILE_SIZE || (tv - last_refresh) > MAX_REFRESH_INTERVAL)
{
g_snprintf (buffer, sizeof (buffer), _("Grepping in %s"), filename);
- status_update (str_trunc (buffer, WIDGET (h)->cols - 8));
+ status_update (str_trunc (buffer, WIDGET (h)->rect.cols - 8));
mc_refresh ();
last_refresh = tv;
status_updated = TRUE;
@@ -1106,7 +1128,7 @@
/* if we add results for a file, we have to ensure that
name of this file is shown in status bar */
g_snprintf (result, sizeof (result), _("Grepping in %s"), filename);
- status_update (str_trunc (result, WIDGET (h)->cols - 8));
+ status_update (str_trunc (result, WIDGET (h)->rect.cols - 8));
mc_refresh ();
last_refresh = tv;
status_updated = TRUE;
@@ -1234,7 +1256,7 @@
colors = widget_get_colors (w);
tty_setcolor (colors[DLG_COLOR_NORMAL]);
- widget_gotoyx (h, w->lines - 7, w->cols - 4);
+ widget_gotoyx (h, w->rect.lines - 7, w->rect.cols - 4);
tty_print_char (show ? rotating_dash[pos] : ' ');
pos = (pos + 1) % sizeof (rotating_dash);
mc_refresh ();
@@ -1313,7 +1335,7 @@
break;
}
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
ignore_count++;
}
@@ -1325,11 +1347,11 @@
char buffer[BUF_MEDIUM];
g_snprintf (buffer, sizeof (buffer), _("Searching %s"), directory);
- status_update (str_trunc (directory, WIDGET (h)->cols - 8));
+ status_update (str_trunc (directory, WIDGET (h)->rect.cols - 8));
}
dirp = mc_opendir (tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
} /* while (!dirp) */
/* skip invalid filenames */
@@ -1358,13 +1380,19 @@
else
{
vfs_path_t *tmp_vpath;
+ int stat_res;
tmp_vpath = vfs_path_build_filename (directory, dp->d_name, (char *) NULL);
- if (mc_lstat (tmp_vpath, &tmp_stat) == 0 && S_ISDIR (tmp_stat.st_mode))
+ if (options.follow_symlinks)
+ stat_res = mc_stat (tmp_vpath, &tmp_stat);
+ else
+ stat_res = mc_lstat (tmp_vpath, &tmp_stat);
+
+ if (stat_res == 0 && S_ISDIR (tmp_stat.st_mode))
push_directory (tmp_vpath);
else
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
}
@@ -1434,7 +1462,7 @@
else
view_file_at_line (fullname_vpath, unparsed_view, use_internal_view, line, search_start,
search_end);
- vfs_path_free (fullname_vpath);
+ vfs_path_free (fullname_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1459,7 +1487,7 @@
static void
find_calc_button_locations (const WDialog * h, gboolean all_buttons)
{
- const int cols = CONST_WIDGET (h)->cols;
+ const int cols = CONST_WIDGET (h)->rect.cols;
int l1, l2;
@@ -1495,10 +1523,10 @@
g_snprintf (title, sizeof (title), _("Find File: \"%s\""), find_pattern);
title_len = str_term_width1 (title);
- if (title_len > WIDGET (h)->cols - 6)
+ if (title_len > WIDGET (h)->rect.cols - 6)
{
/* title is too wide, truncate it */
- title_len = WIDGET (h)->cols - 6;
+ title_len = WIDGET (h)->rect.cols - 6;
title_len = str_column_to_pos (title, title_len);
title_len -= 3; /* reserve space for three dots */
title_len = str_offset_to_pos (title, title_len);
@@ -1519,7 +1547,7 @@
find_calc_button_locations (h, all_buttons);
for (i = 0; i < fbuts_num; i++)
- fbuts[i].button->x = CONST_WIDGET (h)->x + fbuts[i].x;
+ fbuts[i].button->rect.x = CONST_WIDGET (h)->rect.x + fbuts[i].x;
}
/* --------------------------------------------------------------------------------------------- */
@@ -1528,9 +1556,10 @@
find_resize (WDialog * h)
{
Widget *w = WIDGET (h);
- WRect r;
+ WRect r = w->rect;
- rect_init (&r, w->y, w->x, LINES - 4, COLS - 16);
+ r.lines = LINES - 4;
+ r.cols = COLS - 16;
dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
find_adjust_header (h);
find_relocate_buttons (h, TRUE);
@@ -1664,7 +1693,7 @@
y = 2;
find_list = listbox_new (y, 2, lines - 10, cols - 4, FALSE, NULL);
group_add_widget_autopos (g, find_list, WPOS_KEEP_ALL, NULL);
- y += WIDGET (find_list)->lines;
+ y += WIDGET (find_list)->rect.lines;
group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL);
@@ -1740,8 +1769,10 @@
static void
kill_gui (void)
{
- widget_idle (WIDGET (find_dlg), FALSE);
- dlg_destroy (find_dlg);
+ Widget *w = WIDGET (find_dlg);
+
+ widget_idle (w, FALSE);
+ widget_destroy (w);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1824,14 +1855,13 @@
/* don't add files more than once to the panel */
if (!content_is_empty && list->len != 0
- && strcmp (list->list[list->len - 1].fname, p) == 0)
+ && strcmp (list->list[list->len - 1].fname->str, p) == 0)
{
g_free (name);
continue;
}
- list->list[list->len].fnamelen = strlen (p);
- list->list[list->len].fname = g_strndup (p, list->list[list->len].fnamelen);
+ list->list[list->len].fname = g_string_new (p);
list->list[list->len].f.marked = 0;
list->list[list->len].f.link_to_dir = link_to_dir ? 1 : 0;
list->list[list->len].f.stale_link = stale_link ? 1 : 0;
@@ -1903,7 +1933,7 @@
dirname_vpath = vfs_path_from_str (dirname);
panel_cd (panel, dirname_vpath, cd_exact);
- vfs_path_free (dirname_vpath);
+ vfs_path_free (dirname_vpath, TRUE);
if (filename != NULL)
try_to_select (panel,
filename + (content_pattern != NULL
@@ -1915,7 +1945,7 @@
filename_vpath = vfs_path_from_str (filename);
panel_cd (panel, filename_vpath, cd_exact);
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/hotlist.c
^
|
@@ -1,7 +1,7 @@
/*
Directory hotlist -- for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -9,7 +9,7 @@
Janne Kukonlehto, 1995
Andrej Borsenkow, 1996
Norbert Warmuth, 1997
- Andrew Borodin <aborodin@vmail.ru>, 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2012-2022
Janne did the original Hotlist code, Andrej made the groupable
hotlist; the move hotlist and revamped the file format and made
@@ -254,11 +254,11 @@
p = g_strconcat (" ", current_group->label, " ", (char *) NULL);
if (hotlist_state.moving)
- groupbox_set_title (movelist_group, str_trunc (p, w->cols - 2));
+ groupbox_set_title (movelist_group, str_trunc (p, w->rect.cols - 2));
else
{
- groupbox_set_title (hotlist_group, str_trunc (p, w->cols - 2));
- label_set_text (pname, str_trunc (text, w->cols));
+ groupbox_set_title (hotlist_group, str_trunc (p, w->rect.cols - 2));
+ label_set_text (pname, str_trunc (text, w->rect.cols));
}
g_free (p);
}
@@ -350,7 +350,7 @@
hotlist_state.moving = FALSE;
listbox_get_current (l_movelist, NULL, (void **) &moveto_item);
moveto_group = current_group;
- dlg_destroy (movelist_dlg);
+ widget_destroy (WIDGET (movelist_dlg));
current_group = saved;
if (ret == B_CANCEL)
return 0;
@@ -609,9 +609,10 @@
case MSG_RESIZE:
{
- WRect r;
+ WRect r = w->rect;
- rect_init (&r, w->y, w->x, LINES - (h == hotlist_dlg ? 2 : 6), COLS - 6);
+ r.lines = LINES - (h == hotlist_dlg ? 2 : 6);
+ r.cols = COLS - 6;
return dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
}
@@ -789,8 +790,8 @@
group_add_widget_autopos (g, hotlist_widget, WPOS_KEEP_ALL, NULL);
l_hotlist =
- listbox_new (y + 1, UX + 1, hotlist_widget->lines - 2, hotlist_widget->cols - 2, FALSE,
- hotlist_listbox_callback);
+ listbox_new (y + 1, UX + 1, hotlist_widget->rect.lines - 2, hotlist_widget->rect.cols - 2,
+ FALSE, hotlist_listbox_callback);
/* Fill the hotlist with the active VFS or the hotlist */
#ifdef ENABLE_VFS
@@ -807,14 +808,14 @@
/* insert before groupbox to view scrollbar */
group_add_widget_autopos (g, l_hotlist, WPOS_KEEP_ALL, NULL);
- y += hotlist_widget->lines;
+ y += hotlist_widget->rect.lines;
- path_box = groupbox_new (y, UX, 3, hotlist_widget->cols, _("Directory path"));
+ path_box = groupbox_new (y, UX, 3, hotlist_widget->rect.cols, _("Directory path"));
group_add_widget_autopos (g, path_box, WPOS_KEEP_BOTTOM | WPOS_KEEP_HORZ, NULL);
pname = label_new (y + 1, UX + 2, "");
group_add_widget_autopos (g, pname, WPOS_KEEP_BOTTOM | WPOS_KEEP_LEFT, NULL);
- y += WIDGET (path_box)->lines;
+ y += WIDGET (path_box)->rect.lines;
group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL);
@@ -861,13 +862,13 @@
group_add_widget_autopos (g, movelist_widget, WPOS_KEEP_ALL, NULL);
l_movelist =
- listbox_new (y + 1, UX + 1, movelist_widget->lines - 2, movelist_widget->cols - 2, FALSE,
- hotlist_listbox_callback);
+ listbox_new (y + 1, UX + 1, movelist_widget->rect.lines - 2, movelist_widget->rect.cols - 2,
+ FALSE, hotlist_listbox_callback);
fill_listbox (l_movelist);
/* insert before groupbox to view scrollbar */
group_add_widget_autopos (g, l_movelist, WPOS_KEEP_ALL, NULL);
- y += movelist_widget->lines;
+ y += movelist_widget->rect.lines;
group_add_widget_autopos (g, hline_new (y++, -1, -1), WPOS_KEEP_BOTTOM, NULL);
@@ -891,7 +892,7 @@
static void
hotlist_done (void)
{
- dlg_destroy (hotlist_dlg);
+ widget_destroy (WIDGET (hotlist_dlg));
l_hotlist = NULL;
#if 0
update_panels (UP_OPTIMIZE, UP_KEEPSEL);
@@ -1017,9 +1018,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 64 };
+
quick_dialog_t qdlg = {
- -1, -1, 64,
- header, help,
+ r, header, help,
quick_widgets, NULL, NULL
};
@@ -1079,9 +1081,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 64 };
+
quick_dialog_t qdlg = {
- -1, -1, 64,
- header, "[Hotlist]",
+ r, header, "[Hotlist]",
quick_widgets, NULL, NULL
};
@@ -1210,7 +1213,6 @@
add2hotlist (mc_config_get_string (mc_global.main_config, group_section, *profile_keys, ""),
g_strdup (*profile_keys), HL_TYPE_GROUP, LISTBOX_APPEND_AT_END);
- g_free (group_section);
g_strfreev (keys);
keys = mc_config_get_keys (mc_global.main_config, grp->directory, NULL);
@@ -1219,6 +1221,7 @@
add2hotlist (mc_config_get_string (mc_global.main_config, group_section, *profile_keys, ""),
g_strdup (*profile_keys), HL_TYPE_ENTRY, LISTBOX_APPEND_AT_END);
+ g_free (group_section);
g_strfreev (keys);
for (current = grp->head; current; current = current->next)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/info.c
^
|
@@ -1,12 +1,12 @@
/*
Panel managing.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -63,10 +63,6 @@
/*** file scope macro definitions ****************************************************************/
-#ifndef VERSION
-#define VERSION "undefined"
-#endif
-
/*** file scope type declarations ****************************************************************/
struct WInfo
@@ -93,16 +89,16 @@
tty_set_normal_attrs ();
tty_setcolor (NORMAL_COLOR);
widget_erase (w);
- tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE);
- widget_gotoyx (w, 0, (w->cols - len - 2) / 2);
+ widget_gotoyx (w, 0, (w->rect.cols - len - 2) / 2);
tty_printf (" %s ", title);
widget_gotoyx (w, 2, 0);
tty_print_alt_char (ACS_LTEE, FALSE);
- widget_gotoyx (w, 2, w->cols - 1);
+ widget_gotoyx (w, 2, w->rect.cols - 1);
tty_print_alt_char (ACS_RTEE, FALSE);
- tty_draw_hline (w->y + 2, w->x + 1, ACS_HLINE, w->cols - 2);
+ tty_draw_hline (w->rect.y + 2, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2);
}
/* --------------------------------------------------------------------------------------------- */
@@ -110,7 +106,7 @@
static void
info_show_info (WInfo * info)
{
- Widget *w = WIDGET (info);
+ const WRect *w = &CONST_WIDGET (info)->rect;
static int i18n_adjust = 0;
static const char *file_label;
GString *buff;
@@ -125,7 +121,7 @@
tty_setcolor (MARKED_COLOR);
widget_gotoyx (w, 1, 3);
- tty_printf (_("Midnight Commander %s"), VERSION);
+ tty_printf (_("Midnight Commander %s"), mc_global.mc_version);
if (!info->ready)
return;
@@ -167,11 +163,11 @@
(myfs_stats.nfree == (uintmax_t) (-1) && myfs_stats.nodes == (uintmax_t) (-1)))
tty_print_string (_("No node information"));
else if (myfs_stats.nfree == (uintmax_t) (-1))
- tty_printf ("%s -/%" PRIuMAX, _("Free nodes:"), myfs_stats.nodes);
+ tty_printf ("%s - / %" PRIuMAX, _("Free nodes:"), myfs_stats.nodes);
else if (myfs_stats.nodes == (uintmax_t) (-1))
- tty_printf ("%s %" PRIuMAX "/-", _("Free nodes:"), myfs_stats.nfree);
+ tty_printf ("%s %" PRIuMAX " / -", _("Free nodes:"), myfs_stats.nfree);
else
- tty_printf ("%s %" PRIuMAX "/%" PRIuMAX " (%d%%)",
+ tty_printf ("%s %" PRIuMAX " / %" PRIuMAX " (%d%%)",
_("Free nodes:"),
myfs_stats.nfree, myfs_stats.nodes,
myfs_stats.nodes == 0 ? 0 :
@@ -187,7 +183,7 @@
size_trunc_len (buffer1, 5, myfs_stats.avail, 1, panels_options.kilobyte_si);
size_trunc_len (buffer2, 5, myfs_stats.total, 1, panels_options.kilobyte_si);
- tty_printf (_("Free space: %s/%s (%d%%)"), buffer1, buffer2,
+ tty_printf (_("Free space: %s / %s (%d%%)"), buffer1, buffer2,
myfs_stats.total == 0 ? 0 :
(int) (100 * (long double) myfs_stats.avail / myfs_stats.total));
}
@@ -270,14 +266,14 @@
vfs_path_t *vpath;
unsigned long attr;
- vpath = vfs_path_from_str (current_panel->dir.list[current_panel->selected].fname);
+ vpath = vfs_path_from_str (current_panel->dir.list[current_panel->selected].fname->str);
if (fgetflags (vfs_path_as_str (vpath), &attr) == 0)
tty_printf (_("Attributes: %s"), chattr_get_as_str (attr));
else
tty_print_string (_("Attributes: unavailable"));
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
#else
tty_print_string (_("Attributes: not supported"));
@@ -297,7 +293,7 @@
const char *fname;
widget_gotoyx (w, 3, 2);
- fname = current_panel->dir.list[current_panel->selected].fname;
+ fname = current_panel->dir.list[current_panel->selected].fname->str;
str_printf (buff, file_label, str_trunc (fname, w->cols - i18n_adjust));
tty_print_string (buff->str);
}
@@ -366,12 +362,13 @@
WInfo *
info_new (int y, int x, int lines, int cols)
{
+ WRect r = { y, x, lines, cols };
WInfo *info;
Widget *w;
info = g_new (struct WInfo, 1);
w = WIDGET (info);
- widget_init (w, y, x, lines, cols, info_callback, NULL);
+ widget_init (w, &r, info_callback, NULL);
return info;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/layout.c
^
|
@@ -1,13 +1,13 @@
/*
Panel layout module for the Midnight Commander
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
Janne Kukonlehto, 1995
Miguel de Icaza, 1995
- Andrew Borodin <aborodin@vmail.ru>, 2011, 2012, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2011-2022
Slava Zanko <slavazanko@gmail.com>, 2013
Avi Kelman <patcherton.fixesthings@gmail.com>, 2013
@@ -213,7 +213,7 @@
}
else
{
- int md_cols = CONST_WIDGET (midnight_dlg)->cols;
+ int md_cols = CONST_WIDGET (filemanager)->rect.cols;
if (layout->vertical_equal)
layout->left_panel_size = md_cols / 2;
@@ -251,7 +251,7 @@
if (panels_layout.horizontal_split)
tty_printf ("%03d", height - panels_layout.top_panel_size);
else
- tty_printf ("%03d", CONST_WIDGET (midnight_dlg)->cols - panels_layout.left_panel_size);
+ tty_printf ("%03d", CONST_WIDGET (filemanager)->rect.cols - panels_layout.left_panel_size);
widget_gotoyx (h, 6, 12);
tty_print_char ('=');
@@ -352,7 +352,7 @@
{
case MSG_POST_KEY:
{
- const Widget *mw = CONST_WIDGET (midnight_dlg);
+ const Widget *mw = CONST_WIDGET (filemanager);
gboolean _menubar_visible, _command_prompt, _keybar_visible, _message_visible;
_menubar_visible = check_options[1].widget->state;
@@ -362,7 +362,7 @@
if (mc_global.tty.console_flag == '\0')
height =
- mw->lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) -
+ mw->rect.lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) -
(_menubar_visible ? 1 : 0) - _output_lines - (_message_visible ? 1 : 0);
else
{
@@ -371,7 +371,7 @@
if (_output_lines < 0)
_output_lines = 0;
height =
- mw->lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) -
+ mw->rect.lines - (_keybar_visible ? 1 : 0) - (_command_prompt ? 1 : 0) -
(_menubar_visible ? 1 : 0) - _output_lines - (_message_visible ? 1 : 0);
minimum = MINHEIGHT * (1 + (panels_layout.horizontal_split ? 1 : 0));
if (height < minimum)
@@ -412,7 +412,7 @@
{
eq = panels_layout.vertical_equal;
if (eq)
- panels_layout.left_panel_size = CONST_WIDGET (midnight_dlg)->cols / 2;
+ panels_layout.left_panel_size = CONST_WIDGET (filemanager)->rect.cols / 2;
}
widget_disable (WIDGET (bleft_widget), eq);
@@ -659,7 +659,7 @@
saved_dir_vpath = vfs_path_from_str (panels[idx].last_saved_dir);
new_widget = panel_sized_with_dir_new (p_name, y, x, lines, cols, saved_dir_vpath);
- vfs_path_free (saved_dir_vpath);
+ vfs_path_free (saved_dir_vpath, TRUE);
}
else
new_widget = panel_sized_new (p_name, y, x, lines, cols);
@@ -740,7 +740,7 @@
else
layout_restore ();
- dlg_destroy (layout_dlg);
+ widget_destroy (WIDGET (layout_dlg));
layout_change ();
do_refresh ();
}
@@ -750,7 +750,7 @@
void
panel_update_cols (Widget * widget, panel_display_t frame_size)
{
- const Widget *mw = CONST_WIDGET (midnight_dlg);
+ const Widget *mw = CONST_WIDGET (filemanager);
int cols, x;
/* don't touch panel if it is not in dialog yet */
@@ -761,28 +761,28 @@
if (panels_layout.horizontal_split)
{
- widget->cols = mw->cols;
+ widget->rect.cols = mw->rect.cols;
return;
}
if (frame_size == frame_full)
{
- cols = mw->cols;
- x = mw->x;
+ cols = mw->rect.cols;
+ x = mw->rect.x;
}
else if (widget == get_panel_widget (0))
{
cols = panels_layout.left_panel_size;
- x = mw->x;
+ x = mw->rect.x;
}
else
{
- cols = mw->cols - panels_layout.left_panel_size;
- x = mw->x + panels_layout.left_panel_size;
+ cols = mw->rect.cols - panels_layout.left_panel_size;
+ x = mw->rect.x + panels_layout.left_panel_size;
}
- widget->cols = cols;
- widget->x = x;
+ widget->rect.cols = cols;
+ widget->rect.x = x;
}
/* --------------------------------------------------------------------------------------------- */
@@ -816,12 +816,21 @@
* +--------+------------------------------------------------------+
*/
- const Widget *mw = CONST_WIDGET (midnight_dlg);
+ Widget *mw = WIDGET (filemanager);
+ const WRect *r = &CONST_WIDGET (mw)->rect;
int start_y;
+ gboolean active;
+ WRect rb;
+
+ active = widget_get_state (mw, WST_ACTIVE);
+
+ /* lock the group to avoid many redraws */
+ if (active)
+ widget_set_state (mw, WST_SUSPENDED, TRUE);
/* iniitial height of panels */
height =
- mw->lines - (menubar_visible ? 1 : 0) - (mc_global.message_visible ? 1 : 0) -
+ r->lines - (menubar_visible ? 1 : 0) - (mc_global.message_visible ? 1 : 0) -
(command_prompt ? 1 : 0) - (mc_global.keybar_visible ? 1 : 0);
if (mc_global.tty.console_flag != '\0')
@@ -840,11 +849,13 @@
}
}
- widget_set_size (WIDGET (the_menubar), mw->y, mw->x, 1, mw->cols);
- menubar_set_visible (the_menubar, menubar_visible);
+ rb = *r;
+ rb.lines = 1;
+ widget_set_size_rect (WIDGET (the_menubar), &rb);
+ widget_set_visibility (WIDGET (the_menubar), menubar_visible);
check_split (&panels_layout);
- start_y = mw->y + (menubar_visible ? 1 : 0);
+ start_y = r->y + (menubar_visible ? 1 : 0);
/* update columns first... */
panel_do_cols (0);
@@ -853,30 +864,27 @@
/* ...then rows and origin */
if (panels_layout.horizontal_split)
{
- widget_set_size (panels[0].widget, start_y, mw->x, panels_layout.top_panel_size,
- panels[0].widget->cols);
- widget_set_size (panels[1].widget, start_y + panels_layout.top_panel_size, mw->x,
- height - panels_layout.top_panel_size, panels[1].widget->cols);
+ widget_set_size (panels[0].widget, start_y, r->x, panels_layout.top_panel_size,
+ panels[0].widget->rect.cols);
+ widget_set_size (panels[1].widget, start_y + panels_layout.top_panel_size, r->x,
+ height - panels_layout.top_panel_size, panels[1].widget->rect.cols);
}
else
{
- widget_set_size (panels[0].widget, start_y, mw->x, height, panels[0].widget->cols);
- widget_set_size (panels[1].widget, start_y, panels[1].widget->x, height,
- panels[1].widget->cols);
+ widget_set_size (panels[0].widget, start_y, r->x, height, panels[0].widget->rect.cols);
+ widget_set_size (panels[1].widget, start_y, panels[1].widget->rect.x, height,
+ panels[1].widget->rect.cols);
}
- if (mc_global.message_visible)
- widget_set_size (WIDGET (the_hint), height + start_y, mw->x, 1, mw->cols);
- else
- /* make invisible */
- widget_set_size (WIDGET (the_hint), 0, 0, 0, 0);
+ widget_set_size (WIDGET (the_hint), height + start_y, r->x, 1, r->cols);
+ widget_set_visibility (WIDGET (the_hint), mc_global.message_visible);
/* Output window */
if (mc_global.tty.console_flag != '\0' && output_lines != 0)
{
unsigned char end_line;
- end_line = mw->lines - (mc_global.keybar_visible ? 1 : 0) - 1;
+ end_line = r->lines - (mc_global.keybar_visible ? 1 : 0) - 1;
output_start_y = end_line - (command_prompt ? 1 : 0) - output_lines + 1;
show_console_contents (output_start_y, end_line - output_lines, end_line);
}
@@ -891,15 +899,24 @@
else
{
/* make invisible */
- widget_set_size (WIDGET (cmdline), 0, 0, 0, 0);
- widget_set_size (WIDGET (the_prompt), mw->lines, mw->cols, 0, 0);
+ widget_hide (WIDGET (cmdline));
+ widget_hide (WIDGET (the_prompt));
}
- widget_set_size (WIDGET (the_bar), mw->lines - 1, mw->x, mc_global.keybar_visible ? 1 : 0,
- mw->cols);
- buttonbar_set_visible (the_bar, mc_global.keybar_visible);
+ rb = *r;
+ rb.y = r->lines - 1;
+ rb.lines = 1;
+ widget_set_size_rect (WIDGET (the_bar), &rb);
+ widget_set_visibility (WIDGET (the_bar), mc_global.keybar_visible);
update_xterm_title_path ();
+
+ /* unlock */
+ if (active)
+ {
+ widget_set_state (mw, WST_ACTIVE, TRUE);
+ widget_draw (mw);
+ }
}
/* --------------------------------------------------------------------------------------------- */
@@ -956,19 +973,26 @@
/* --------------------------------------------------------------------------------------------- */
-
void
setup_cmdline (void)
{
- const Widget *mw = CONST_WIDGET (midnight_dlg);
+ const Widget *mw = CONST_WIDGET (filemanager);
+ const WRect *r = &mw->rect;
int prompt_width;
int y;
char *tmp_prompt = (char *) mc_prompt;
+ if (!command_prompt)
+ return;
+
#ifdef ENABLE_SUBSHELL
if (mc_global.tty.use_subshell)
{
- tmp_prompt = g_string_free (subshell_prompt, FALSE);
+ /* Workaround: avoid crash on FreeBSD (see ticket #4213 for details) */
+ if (subshell_prompt != NULL)
+ tmp_prompt = g_string_free (subshell_prompt, FALSE);
+ else
+ tmp_prompt = g_strdup (mc_prompt);
(void) strip_ctrl_codes (tmp_prompt);
}
#endif
@@ -976,11 +1000,11 @@
prompt_width = str_term_width1 (tmp_prompt);
/* Check for prompts too big */
- if (mw->cols > 8 && prompt_width > mw->cols - 8)
+ if (r->cols > 8 && prompt_width > r->cols - 8)
{
int prompt_len;
- prompt_width = mw->cols - 8;
+ prompt_width = r->cols - 8;
prompt_len = str_offset_to_pos (tmp_prompt, prompt_width);
tmp_prompt[prompt_len] = '\0';
}
@@ -994,11 +1018,14 @@
}
#endif
- y = mw->lines - 1 - (mc_global.keybar_visible ? 1 : 0);
+ y = r->lines - 1 - (mc_global.keybar_visible ? 1 : 0);
- widget_set_size (WIDGET (the_prompt), y, mw->x, 1, prompt_width);
+ widget_set_size (WIDGET (the_prompt), y, r->x, 1, prompt_width);
label_set_text (the_prompt, mc_prompt);
- widget_set_size (WIDGET (cmdline), y, mw->x + prompt_width, 1, mw->cols - prompt_width);
+ widget_set_size (WIDGET (cmdline), y, r->x + prompt_width, 1, r->cols - prompt_width);
+
+ widget_show (WIDGET (the_prompt));
+ widget_show (WIDGET (cmdline));
}
/* --------------------------------------------------------------------------------------------- */
@@ -1031,7 +1058,7 @@
/* update with 10 FPS rate */
static const gint64 delay = G_USEC_PER_SEC / 10;
- const Widget *w = CONST_WIDGET (midnight_dlg);
+ const Widget *w = CONST_WIDGET (filemanager);
if (!nice_rotating_dash || (ok_to_refresh <= 0))
return;
@@ -1039,7 +1066,7 @@
if (show && !mc_time_elapsed (×tamp, delay))
return;
- widget_gotoyx (w, menubar_visible != 0 ? 1 : 0, w->cols - 1);
+ widget_gotoyx (w, menubar_visible ? 1 : 0, w->rect.cols - 1);
tty_setcolor (NORMAL_COLOR);
if (!show)
@@ -1091,7 +1118,7 @@
void
create_panel (int num, panel_view_mode_t type)
{
- int x = 0, y = 0, cols = 0, lines = 0;
+ WRect r = { 0, 0, 0, 0 };
unsigned int the_other = 0; /* Index to the other panel */
const char *file_name = NULL; /* For Quick view */
Widget *new_widget = NULL, *old_widget = NULL;
@@ -1118,27 +1145,24 @@
Widget *w = panels[num].widget;
WPanel *panel = PANEL (w);
- x = w->x;
- y = w->y;
- cols = w->cols;
- lines = w->lines;
+ r = w->rect;
old_widget = w;
old_type = panels[num].type;
if (old_type == view_listing && panel->frame_size == frame_full && type != view_listing)
{
- int md_cols = CONST_WIDGET (midnight_dlg)->cols;
+ int md_cols = CONST_WIDGET (filemanager)->rect.cols;
if (panels_layout.horizontal_split)
{
- cols = md_cols;
- x = 0;
+ r.cols = md_cols;
+ r.x = 0;
}
else
{
- cols = md_cols - panels_layout.left_panel_size;
+ r.cols = md_cols - panels_layout.left_panel_size;
if (num == 1)
- x = panels_layout.left_panel_size;
+ r.x = panels_layout.left_panel_size;
}
}
}
@@ -1156,23 +1180,24 @@
gboolean last_was_panel;
last_was_panel = old_widget != NULL && get_panel_type (num) != view_listing;
- new_widget = restore_into_right_dir_panel (num, last_was_panel, y, x, lines, cols);
+ new_widget =
+ restore_into_right_dir_panel (num, last_was_panel, r.y, r.x, r.lines, r.cols);
break;
}
case view_info:
- new_widget = WIDGET (info_new (y, x, lines, cols));
+ new_widget = WIDGET (info_new (r.y, r.x, r.lines, r.cols));
break;
case view_tree:
- new_widget = WIDGET (tree_new (y, x, lines, cols, TRUE));
+ new_widget = WIDGET (tree_new (r.y, r.x, r.lines, r.cols, TRUE));
break;
case view_quick:
- new_widget = WIDGET (mcview_new (y, x, lines, cols, TRUE));
+ new_widget = WIDGET (mcview_new (r.y, r.x, r.lines, r.cols, TRUE));
the_other_panel = PANEL (panels[the_other].widget);
if (the_other_panel != NULL)
- file_name = the_other_panel->dir.list[the_other_panel->selected].fname;
+ file_name = the_other_panel->dir.list[the_other_panel->selected].fname->str;
else
file_name = "";
@@ -1198,8 +1223,8 @@
if (old_type == view_listing)
{
/* save and write directory history of panel
- * ... and other histories of midnight_dlg */
- dlg_save_history (midnight_dlg);
+ * ... and other histories of filemanager */
+ dlg_save_history (filemanager);
}
widget_replace (old_widget, new_widget);
@@ -1214,7 +1239,7 @@
{
ev_history_load_save_t event_data = { NULL, new_widget };
- mc_event_raise (midnight_dlg->event_group, MCEVENT_HISTORY_LOAD, &event_data);
+ mc_event_raise (filemanager->event_group, MCEVENT_HISTORY_LOAD, &event_data);
}
if (num == 0)
@@ -1275,6 +1300,7 @@
panelswap (selected);
panelswap (is_panelized);
panelswap (dir_stat);
+ panelswap (sort_field);
#undef panelswap
panel1->quick_search.active = FALSE;
@@ -1300,7 +1326,7 @@
else
{
WPanel *tmp_panel;
- int x, y, cols, lines;
+ WRect r;
int tmp_type;
tmp_panel = right_panel;
@@ -1324,20 +1350,9 @@
}
}
- x = panels[0].widget->x;
- y = panels[0].widget->y;
- cols = panels[0].widget->cols;
- lines = panels[0].widget->lines;
-
- panels[0].widget->x = panels[1].widget->x;
- panels[0].widget->y = panels[1].widget->y;
- panels[0].widget->cols = panels[1].widget->cols;
- panels[0].widget->lines = panels[1].widget->lines;
-
- panels[1].widget->x = x;
- panels[1].widget->y = y;
- panels[1].widget->cols = cols;
- panels[1].widget->lines = lines;
+ r = panels[0].widget->rect;
+ panels[0].widget->rect = panels[1].widget->rect;
+ panels[1].widget->rect = r;
tmp_widget = panels[0].widget;
panels[0].widget = panels[1].widget;
@@ -1474,7 +1489,7 @@
return ret;
/* Don't actually change the prompt if it's invisible */
- if (top_dlg != NULL && DIALOG (top_dlg->data) == midnight_dlg && command_prompt)
+ if (top_dlg != NULL && DIALOG (top_dlg->data) == filemanager && command_prompt)
{
setup_cmdline ();
@@ -1482,7 +1497,7 @@
* tty_get_event channels, the prompt updating does not take place
* automatically: force a cursor update and a screen refresh
*/
- widget_update_cursor (WIDGET (midnight_dlg));
+ widget_update_cursor (WIDGET (filemanager));
mc_refresh ();
ret = TRUE;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/listmode.c
^
|
@@ -1,7 +1,7 @@
/*
Directory panel listing format editor -- for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -273,7 +273,7 @@
static void
listmode_done (WDialog * h)
{
- dlg_destroy (h);
+ widget_destroy (WIDGET (h));
if (0)
update_panels (UP_OPTIMIZE, UP_KEEPSEL);
repaint_screen ();
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/mountlist.c
^
|
@@ -1,7 +1,7 @@
/*
Return a list of mounted file systems
- Copyright (C) 1991-2020
+ Copyright (C) 1991-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -205,6 +205,7 @@
|| strcmp (Fs_type, "debugfs") == 0 \
|| strcmp (Fs_type, "devpts") == 0 \
|| strcmp (Fs_type, "fusectl") == 0 \
+ || strcmp (Fs_type, "fuse.portal") == 0 \
|| strcmp (Fs_type, "mqueue") == 0 \
|| strcmp (Fs_type, "rpc_pipefs") == 0 \
|| strcmp (Fs_type, "sysfs") == 0 \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/panel.c
^
|
@@ -1,14 +1,14 @@
/*
Panel managing.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
Miguel de Icaza, 1995
Timur Bakeyev, 1997, 1999
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013-2016
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -60,7 +60,8 @@
#ifdef HAVE_CHARSET
#include "src/selcodepage.h" /* select_charset (), SELECT_CHARSET_NO_TRANSLATE */
#endif
-#include "src/keybind-defaults.h" /* global_keymap_t */
+#include "src/keymap.h" /* global_keymap_t */
+#include "src/history.h"
#ifdef ENABLE_SUBSHELL
#include "src/subshell/subshell.h" /* do_subshell_chdir() */
#endif
@@ -117,6 +118,15 @@
#define MARKED_SELECTED 3
#define STATUS 5
+/* select/unselect dialog results */
+#define SELECT_RESET ((mc_search_t *)(-1))
+#define SELECT_ERROR ((mc_search_t *)(-2))
+
+/* mouse position relative to file list */
+#define MOUSE_UPPER_FILE_LIST (-1)
+#define MOUSE_BELOW_FILE_LIST (-2)
+#define MOUSE_AFTER_LAST_FILE (-3)
+
/*** file scope type declarations ****************************************************************/
typedef enum
@@ -402,7 +412,7 @@
panel_lines (const WPanel * p)
{
/* 3 lines are: top frame, column header, botton frame */
- return (CONST_WIDGET (p)->lines - 3 - (panels_options.show_mini_info ? 2 : 0));
+ return (CONST_WIDGET (p)->rect.lines - 3 - (panels_options.show_mini_info ? 2 : 0));
}
/* --------------------------------------------------------------------------------------------- */
@@ -455,8 +465,7 @@
{
(void) len;
- g_string_set_size (string_file_name_buffer, 0);
- g_string_append_len (string_file_name_buffer, fe->fname, fe->fnamelen);
+ mc_g_string_copy (string_file_name_buffer, fe->fname);
return string_file_name_buffer->str;
}
@@ -509,7 +518,7 @@
static char buffer[BUF_TINY];
/* Don't ever show size of ".." since we don't calculate it */
- if (DIR_IS_DOTDOT (fe->fname))
+ if (DIR_IS_DOTDOT (fe->fname->str))
return _("UP--DIR");
#ifdef HAVE_STRUCT_STAT_ST_RDEV
@@ -531,7 +540,7 @@
if (S_ISLNK (fe->st.st_mode) && !link_isdir (fe))
return _("SYMLINK");
- if ((S_ISDIR (fe->st.st_mode) || link_isdir (fe)) && !DIR_IS_DOTDOT (fe->fname))
+ if ((S_ISDIR (fe->st.st_mode) || link_isdir (fe)) && !DIR_IS_DOTDOT (fe->fname->str))
return _("SUB-DIR");
return string_file_size (fe, len);
@@ -901,7 +910,7 @@
/* --------------------------------------------------------------------------------------------- */
static void
-repaint_file (WPanel * panel, int file_index, gboolean mv, int attr, gboolean isstatus)
+repaint_file (WPanel * panel, int file_index, int attr, gboolean isstatus)
{
Widget *w = WIDGET (panel);
@@ -914,7 +923,7 @@
int fln = 0;
panel_is_split = !isstatus && panel->list_cols > 1;
- width = w->cols - 2;
+ width = w->rect.cols - 2;
if (panel_is_split)
{
@@ -924,14 +933,14 @@
offset = width * nth_column;
if (nth_column + 1 >= panel->list_cols)
- width = w->cols - offset - 2;
+ width = w->rect.cols - offset - 2;
}
/* Nothing to paint */
if (width <= 0)
return;
- if (mv)
+ if (!isstatus)
{
ypos = file_index - panel->top_file;
@@ -950,7 +959,7 @@
tty_print_one_vline (TRUE);
}
- if (ret_frm != FILENAME_NOSCROLL && mv)
+ if (!isstatus && ret_frm != FILENAME_NOSCROLL)
{
if (!panel_is_split && fln > 0)
{
@@ -987,7 +996,7 @@
{
Widget *w = WIDGET (panel);
- if (!panels_options.show_mini_info)
+ if (!panels_options.show_mini_info || panel->selected < 0)
return;
widget_gotoyx (w, panel_lines (panel) + 3, 1);
@@ -996,7 +1005,8 @@
{
tty_setcolor (INPUT_COLOR);
tty_print_char ('/');
- tty_print_string (str_fit_to_term (panel->quick_search.buffer->str, w->cols - 3, J_LEFT));
+ tty_print_string (str_fit_to_term
+ (panel->quick_search.buffer->str, w->rect.cols - 3, J_LEFT));
return;
}
@@ -1010,30 +1020,30 @@
int len;
lc_link_vpath =
- vfs_path_append_new (panel->cwd_vpath, panel->dir.list[panel->selected].fname,
+ vfs_path_append_new (panel->cwd_vpath, panel->dir.list[panel->selected].fname->str,
(char *) NULL);
len = mc_readlink (lc_link_vpath, link_target, MC_MAXPATHLEN - 1);
- vfs_path_free (lc_link_vpath);
+ vfs_path_free (lc_link_vpath, TRUE);
if (len > 0)
{
link_target[len] = 0;
tty_print_string ("-> ");
- tty_print_string (str_fit_to_term (link_target, w->cols - 5, J_LEFT_FIT));
+ tty_print_string (str_fit_to_term (link_target, w->rect.cols - 5, J_LEFT_FIT));
}
else
- tty_print_string (str_fit_to_term (_("<readlink failed>"), w->cols - 2, J_LEFT));
+ tty_print_string (str_fit_to_term (_("<readlink failed>"), w->rect.cols - 2, J_LEFT));
}
- else if (DIR_IS_DOTDOT (panel->dir.list[panel->selected].fname))
+ else if (DIR_IS_DOTDOT (panel->dir.list[panel->selected].fname->str))
{
/* FIXME:
* while loading directory (dir_list_load() and dir_list_reload()),
* the actual stat info about ".." directory isn't got;
* so just don't display incorrect info about ".." directory */
- tty_print_string (str_fit_to_term (_("UP--DIR"), w->cols - 2, J_LEFT));
+ tty_print_string (str_fit_to_term (_("UP--DIR"), w->rect.cols - 2, J_LEFT));
}
else
/* Default behavior */
- repaint_file (panel, panel->selected, FALSE, STATUS, TRUE);
+ repaint_file (panel, panel->selected, STATUS, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1058,7 +1068,7 @@
color += (panel->selected == i + panel->top_file && panel->active);
}
- repaint_file (panel, i + panel->top_file, TRUE, color, FALSE);
+ repaint_file (panel, i + panel->top_file, color, FALSE);
}
tty_set_normal_attrs ();
@@ -1079,7 +1089,7 @@
return;
buf = size_only ? b_bytes : buffer;
- cols = w->cols - 2;
+ cols = w->rect.cols - 2;
g_strlcpy (b_bytes, size_trunc_sep (panel->total, panels_options.kilobyte_si),
sizeof (b_bytes));
@@ -1094,7 +1104,7 @@
if (x < 0)
/* center in panel */
- x = (w->cols - str_term_width1 (buf)) / 2 - 1;
+ x = (w->rect.cols - str_term_width1 (buf)) / 2 - 1;
/*
* y == panel_lines (panel) + 2 for mini_info_separator
@@ -1118,7 +1128,7 @@
y = panel_lines (panel) + 2;
tty_setcolor (NORMAL_COLOR);
- tty_draw_hline (w->y + y, w->x + 1, ACS_HLINE, w->cols - 2);
+ tty_draw_hline (w->rect.y + y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2);
/* Status displays total marked size.
* Centered in panel, full format. */
display_total_marked_size (panel, y, -1, FALSE);
@@ -1162,10 +1172,10 @@
panels_options.kilobyte_si);
size_trunc_len (buffer2, sizeof (buffer2) - 1, myfs_stats.total, 1,
panels_options.kilobyte_si);
- g_snprintf (tmp, sizeof (tmp), " %s/%s (%d%%) ", buffer1, buffer2,
+ g_snprintf (tmp, sizeof (tmp), " %s / %s (%d%%) ", buffer1, buffer2,
myfs_stats.total == 0 ? 0 :
(int) (100 * (long double) myfs_stats.avail / myfs_stats.total));
- widget_gotoyx (w, w->lines - 1, w->cols - 2 - (int) strlen (tmp));
+ widget_gotoyx (w, w->rect.lines - 1, w->rect.cols - 2 - (int) strlen (tmp));
tty_setcolor (NORMAL_COLOR);
tty_print_string (tmp);
}
@@ -1222,7 +1232,7 @@
return_path =
vfs_path_to_str_flags (last_vpath, 0,
VPF_STRIP_HOME | VPF_STRIP_PASSWORD | VPF_HIDE_CHARSET);
- vfs_path_free (last_vpath);
+ vfs_path_free (last_vpath, TRUE);
return return_path;
}
@@ -1260,7 +1270,7 @@
gchar *tmp;
set_colors (panel);
- tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE);
if (panels_options.show_mini_info)
{
@@ -1270,7 +1280,7 @@
widget_gotoyx (w, y, 0);
tty_print_alt_char (ACS_LTEE, FALSE);
- widget_gotoyx (w, y, w->cols - 1);
+ widget_gotoyx (w, y, w->rect.cols - 1);
tty_print_alt_char (ACS_RTEE, FALSE);
}
@@ -1281,7 +1291,7 @@
tmp = g_strdup_printf ("%s[%s]%s", tmp, panel_history_show_list_char,
panel_history_next_item_char);
- widget_gotoyx (w, 0, w->cols - 6);
+ widget_gotoyx (w, 0, w->rect.cols - 6);
tty_print_string (tmp);
g_free (tmp);
@@ -1307,7 +1317,7 @@
tty_setcolor (REVERSE_COLOR);
tmp = panel_correct_path_to_show (panel);
- tty_printf (" %s ", str_term_trim (tmp, MIN (MAX (w->cols - 12, 0), w->cols)));
+ tty_printf (" %s ", str_term_trim (tmp, MIN (MAX (w->rect.cols - 12, 0), w->rect.cols)));
g_free (tmp);
if (!panels_options.show_mini_info)
@@ -1323,7 +1333,7 @@
size_trunc_sep (panel->dir.list[panel->selected].st.st_size,
panels_options.kilobyte_si));
tty_setcolor (NORMAL_COLOR);
- widget_gotoyx (w, w->lines - 1, 4);
+ widget_gotoyx (w, w->rect.lines - 1, 4);
tty_print_string (buffer);
}
}
@@ -1331,7 +1341,7 @@
{
/* Show total size of marked files
* In the bottom of panel, display size only. */
- display_total_marked_size (panel, w->lines - 1, 2, TRUE);
+ display_total_marked_size (panel, w->rect.lines - 1, 2, TRUE);
}
}
@@ -1493,6 +1503,8 @@
}
g_free (p->dir_history.name);
+ file_filter_clear (&p->filter);
+
g_slist_free_full (p->format, (GDestroyNotify) format_item_free);
g_slist_free_full (p->status_format, (GDestroyNotify) format_item_free);
@@ -1506,8 +1518,8 @@
g_string_free (p->quick_search.buffer, TRUE);
g_string_free (p->quick_search.prev_buffer, TRUE);
- vfs_path_free (p->lwd_vpath);
- vfs_path_free (p->cwd_vpath);
+ vfs_path_free (p->lwd_vpath, TRUE);
+ vfs_path_free (p->cwd_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1565,7 +1577,7 @@
widget_gotoyx (w, 1, 1);
tty_getyx (&y, &x);
tty_setcolor (NORMAL_COLOR);
- tty_draw_hline (y, x, ' ', w->cols - 2);
+ tty_draw_hline (y, x, ' ', w->rect.cols - 2);
format_txt = g_string_new ("");
@@ -1588,10 +1600,10 @@
g_string_append (format_txt, fi->title);
- if (panel->filter != NULL && strcmp (fi->id, "name") == 0)
+ if (panel->filter.handler != NULL && strcmp (fi->id, "name") == 0)
{
g_string_append (format_txt, " [");
- g_string_append (format_txt, panel->filter);
+ g_string_append (format_txt, panel->filter.value);
g_string_append (format_txt, "]");
}
@@ -1841,7 +1853,7 @@
panel->dirty = TRUE;
- usable_columns = WIDGET (panel)->cols - 2;
+ usable_columns = WIDGET (panel)->rect.cols - 2;
/* Status needn't to be split */
if (!isstatus)
{
@@ -1985,7 +1997,7 @@
up_dir = vfs_path_from_str ("..");
panel_cd (panel, up_dir, cd_exact);
- vfs_path_free (up_dir);
+ vfs_path_free (up_dir, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -2006,9 +2018,9 @@
{
vfs_path_t *vpath;
- vpath = vfs_path_from_str (selection (panel)->fname);
+ vpath = vfs_path_from_str (selection (panel)->fname->str);
panel_cd (panel, vpath, cd_exact);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return MSG_HANDLED;
}
}
@@ -2036,7 +2048,7 @@
static inline void
unselect_item (WPanel * panel)
{
- repaint_file (panel, panel->selected, TRUE, 2 * selection (panel)->f.marked, FALSE);
+ repaint_file (panel, panel->selected, 2 * selection (panel)->f.marked, FALSE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -2045,7 +2057,7 @@
static void
panel_select_ext_cmd (WPanel * panel)
{
- char *filename;
+ GString *filename;
gboolean do_select;
char *reg_exp, *cur_file_ext;
mc_search_t *search;
@@ -2057,7 +2069,7 @@
do_select = !selection (panel)->f.marked;
- cur_file_ext = strutils_regex_escape (extension (filename));
+ cur_file_ext = strutils_regex_escape (extension (filename->str));
if (cur_file_ext[0] != '\0')
reg_exp = g_strconcat ("^.*\\.", cur_file_ext, "$", (char *) NULL);
else
@@ -2073,10 +2085,10 @@
{
file_entry_t *file_entry = &panel->dir.list[i];
- if (DIR_IS_DOTDOT (file_entry->fname) || S_ISDIR (file_entry->st.st_mode))
+ if (DIR_IS_DOTDOT (file_entry->fname->str) || S_ISDIR (file_entry->st.st_mode))
continue;
- if (!mc_search_run (search, file_entry->fname, 0, file_entry->fnamelen, NULL))
+ if (!mc_search_run (search, file_entry->fname->str, 0, file_entry->fname->len, NULL))
continue;
do_file_mark (panel, i, do_select ? 1 : 0);
@@ -2268,35 +2280,39 @@
cd_up_dir (panel);
else
{
- char *fname = panel->dir.list[panel->selected].fname;
+ GString *fname = panel->dir.list[panel->selected].fname;
const char *bname;
vfs_path_t *dname_vpath;
- if (g_path_is_absolute (fname))
- fname = g_strdup (fname);
+ if (g_path_is_absolute (fname->str))
+ fname = mc_g_string_dup (fname);
else
- fname =
- mc_build_filename (vfs_path_as_str (panelized_panel.root_vpath), fname,
+ {
+ char *fname2;
+
+ fname2 =
+ mc_build_filename (vfs_path_as_str (panelized_panel.root_vpath), fname->str,
(char *) NULL);
- bname = x_basename (fname);
+ fname = g_string_new (fname2);
+ g_free (fname2);
+ }
+
+ bname = x_basename (fname->str);
- if (bname == fname)
+ if (bname == fname->str)
dname_vpath = vfs_path_from_str (".");
else
{
- char *dname;
-
- dname = g_strndup (fname, bname - fname);
- dname_vpath = vfs_path_from_str (dname);
- g_free (dname);
+ g_string_truncate (fname, bname - fname->str);
+ dname_vpath = vfs_path_from_str (fname->str);
}
panel_cd (panel, dname_vpath, cd_exact);
try_to_select (panel, bname);
- vfs_path_free (dname_vpath);
- g_free (fname);
+ vfs_path_free (dname_vpath, TRUE);
+ g_string_free (fname, TRUE);
}
}
@@ -2335,9 +2351,9 @@
{
vfs_path_t *vpath;
- vpath = vfs_path_from_str (selection (panel)->fname);
+ vpath = vfs_path_from_str (selection (panel)->fname->str);
panel_cd (panel, vpath, cd_exact);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
}
@@ -2519,17 +2535,16 @@
/* --------------------------------------------------------------------------------------------- */
-static void
-panel_select_unselect_files (WPanel * panel, const char *title, const char *history_name,
- gboolean do_select)
-{
- gboolean files_only = (panels_options.select_flags & SELECT_FILES_ONLY) != 0;
- gboolean case_sens = (panels_options.select_flags & SELECT_MATCH_CASE) != 0;
- gboolean shell_patterns = (panels_options.select_flags & SELECT_SHELL_PATTERNS) != 0;
+static mc_search_t *
+panel_select_unselect_files_dialog (select_flags_t * flags, const char *title,
+ const char *history_name, const char *help_section, char **str)
+{
+ gboolean files_only = (*flags & SELECT_FILES_ONLY) != 0;
+ gboolean case_sens = (*flags & SELECT_MATCH_CASE) != 0;
+ gboolean shell_patterns = (*flags & SELECT_SHELL_PATTERNS) != 0;
char *reg_exp;
mc_search_t *search;
- int i;
quick_widget_t quick_widgets[] = {
/* *INDENT-OFF* */
@@ -2545,19 +2560,22 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 50 };
+
quick_dialog_t qdlg = {
- -1, -1, 50,
- title, "[Select/Unselect Files]",
+ r, title, help_section,
quick_widgets, NULL, NULL
};
if (quick_dialog (&qdlg) == B_CANCEL)
- return;
+ return NULL;
- if (reg_exp == NULL || *reg_exp == '\0')
+ if (*reg_exp == '\0')
{
g_free (reg_exp);
- return;
+ if (str != NULL)
+ *str = NULL;
+ return SELECT_RESET;
}
search = mc_search_new (reg_exp, NULL);
@@ -2565,28 +2583,60 @@
search->is_entire_line = TRUE;
search->is_case_sensitive = case_sens;
+ if (str != NULL)
+ *str = reg_exp;
+ else
+ g_free (reg_exp);
+
+ if (!mc_search_prepare (search))
+ {
+ message (D_ERROR, MSG_ERROR, _("Malformed regular expression"));
+ mc_search_free (search);
+ return SELECT_ERROR;
+ }
+
+ /* result flags */
+ *flags = 0;
+ if (case_sens)
+ *flags |= SELECT_MATCH_CASE;
+ if (files_only)
+ *flags |= SELECT_FILES_ONLY;
+ if (shell_patterns)
+ *flags |= SELECT_SHELL_PATTERNS;
+
+ return search;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+panel_select_unselect_files (WPanel * panel, const char *title, const char *history_name,
+ const char *help_section, gboolean do_select)
+{
+ mc_search_t *search;
+ gboolean files_only;
+ int i;
+
+ search = panel_select_unselect_files_dialog (&panels_options.select_flags, title, history_name,
+ help_section, NULL);
+ if (search == NULL || search == SELECT_RESET || search == SELECT_ERROR)
+ return;
+
+ files_only = (panels_options.select_flags & SELECT_FILES_ONLY) != 0;
+
for (i = 0; i < panel->dir.len; i++)
{
- if (DIR_IS_DOTDOT (panel->dir.list[i].fname))
+ if (DIR_IS_DOTDOT (panel->dir.list[i].fname->str))
continue;
if (S_ISDIR (panel->dir.list[i].st.st_mode) && files_only)
continue;
- if (mc_search_run (search, panel->dir.list[i].fname, 0, panel->dir.list[i].fnamelen, NULL))
+ if (mc_search_run
+ (search, panel->dir.list[i].fname->str, 0, panel->dir.list[i].fname->len, NULL))
do_file_mark (panel, i, do_select ? 1 : 0);
}
mc_search_free (search);
- g_free (reg_exp);
-
- /* result flags */
- panels_options.select_flags = 0;
- if (case_sens)
- panels_options.select_flags |= SELECT_MATCH_CASE;
- if (files_only)
- panels_options.select_flags |= SELECT_FILES_ONLY;
- if (shell_patterns)
- panels_options.select_flags |= SELECT_SHELL_PATTERNS;
}
/* --------------------------------------------------------------------------------------------- */
@@ -2594,7 +2644,8 @@
static void
panel_select_files (WPanel * panel)
{
- panel_select_unselect_files (panel, _("Select"), ":select_cmd: Select ", TRUE);
+ panel_select_unselect_files (panel, _("Select"), MC_HISTORY_FM_PANEL_SELECT,
+ "[Select/Unselect Files]", TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -2602,7 +2653,8 @@
static void
panel_unselect_files (WPanel * panel)
{
- panel_select_unselect_files (panel, _("Unselect"), ":unselect_cmd: Unselect ", FALSE);
+ panel_select_unselect_files (panel, _("Unselect"), MC_HISTORY_FM_PANEL_UNSELECT,
+ "[Select/Unselect Files]", FALSE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -2622,6 +2674,26 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static void
+panel_do_set_filter (WPanel * panel)
+{
+ file_filter_t ff = {.value = NULL,.handler = NULL,.flags = panel->filter.flags };
+
+ ff.handler =
+ panel_select_unselect_files_dialog (&ff.flags, _("Filter"), MC_HISTORY_FM_PANEL_FILTER,
+ "[Filter...]", &ff.value);
+
+ if (ff.handler == NULL || ff.handler == SELECT_ERROR)
+ return;
+
+ if (ff.handler == SELECT_RESET)
+ ff.handler = NULL;
+
+ panel_set_filter (panel, &ff);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/** Incremental search of a file name in the panel.
* @param panel instance of WPanel structure
* @param c_code key code
@@ -2702,7 +2774,8 @@
break;
wrapped = TRUE;
}
- if (mc_search_run (search, panel->dir.list[i].fname, 0, panel->dir.list[i].fnamelen, NULL))
+ if (mc_search_run
+ (search, panel->dir.list[i].fname->str, 0, panel->dir.list[i].fname->len, NULL))
{
sel = i;
is_found = TRUE;
@@ -2756,7 +2829,6 @@
panel->quick_search.ch[0] = '\0';
panel->quick_search.chpoint = 0;
display_mini_info (panel);
- mc_refresh ();
}
}
@@ -2765,6 +2837,9 @@
static void
stop_search (WPanel * panel)
{
+ if (!panel->quick_search.active)
+ return;
+
panel->quick_search.active = FALSE;
/* if user overrdied search string, we need to store it
@@ -2781,6 +2856,7 @@
static gboolean
do_enter_on_file_entry (WPanel * panel, file_entry_t * fe)
{
+ const char *fname = fe->fname->str;
vfs_path_t *full_name_vpath;
gboolean ok;
@@ -2792,25 +2868,25 @@
{
vfs_path_t *fname_vpath;
- fname_vpath = vfs_path_from_str (fe->fname);
+ fname_vpath = vfs_path_from_str (fname);
if (!panel_cd (panel, fname_vpath, cd_exact))
message (D_ERROR, MSG_ERROR, _("Cannot change directory"));
- vfs_path_free (fname_vpath);
+ vfs_path_free (fname_vpath, TRUE);
return TRUE;
}
- full_name_vpath = vfs_path_append_new (panel->cwd_vpath, fe->fname, (char *) NULL);
+ full_name_vpath = vfs_path_append_new (panel->cwd_vpath, fname, (char *) NULL);
/* Try associated command */
ok = regex_command (full_name_vpath, "Open") != 0;
- vfs_path_free (full_name_vpath);
+ vfs_path_free (full_name_vpath, TRUE);
if (ok)
return TRUE;
/* Check if the file is executable */
- full_name_vpath = vfs_path_append_new (panel->cwd_vpath, fe->fname, (char *) NULL);
+ full_name_vpath = vfs_path_append_new (panel->cwd_vpath, fname, (char *) NULL);
ok = (is_exe (fe->st.st_mode) && if_link_is_exe (full_name_vpath, fe));
- vfs_path_free (full_name_vpath);
+ vfs_path_free (full_name_vpath, TRUE);
if (!ok)
return FALSE;
@@ -2824,9 +2900,9 @@
int ret;
vfs_path_t *tmp_vpath;
- tmp_vpath = vfs_path_append_new (vfs_get_raw_current_dir (), fe->fname, (char *) NULL);
+ tmp_vpath = vfs_path_append_new (vfs_get_raw_current_dir (), fname, (char *) NULL);
ret = mc_setctl (tmp_vpath, VFS_SETCTL_RUN, NULL);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
/* We took action only if the dialog was shown or the execution was successful */
return confirm_execute || (ret == 0);
}
@@ -2834,7 +2910,7 @@
{
char *tmp, *cmd;
- tmp = name_quote (fe->fname, FALSE);
+ tmp = name_quote (fname, FALSE);
cmd = g_strconcat (".", PATH_SEP_STR, tmp, (char *) NULL);
g_free (tmp);
shell_execute (cmd, 0);
@@ -2882,7 +2958,7 @@
create_panel (get_other_index (), view_listing);
if (S_ISDIR (entry->st.st_mode) || link_isdir (entry))
- new_dir_vpath = vfs_path_append_new (panel->cwd_vpath, entry->fname, (char *) NULL);
+ new_dir_vpath = vfs_path_append_new (panel->cwd_vpath, entry->fname->str, (char *) NULL);
else
{
new_dir_vpath = vfs_path_append_new (panel->cwd_vpath, "..", (char *) NULL);
@@ -2891,7 +2967,7 @@
p = change_panel ();
panel_cd (p, new_dir_vpath, cd_exact);
- vfs_path_free (new_dir_vpath);
+ vfs_path_free (new_dir_vpath, TRUE);
if (sel_entry)
try_to_select (p, sel_entry);
@@ -2918,7 +2994,7 @@
/* try to select current filename on the other panel */
if (!panel->is_panelized)
- try_to_select (other_panel, selection (panel)->fname);
+ try_to_select (other_panel, selection (panel)->fname->str);
}
/* --------------------------------------------------------------------------------------------- */
@@ -2940,13 +3016,13 @@
if (!S_ISLNK (panel->dir.list[panel->selected].st.st_mode))
return;
- i = readlink (selection (panel)->fname, buffer, MC_MAXPATHLEN - 1);
+ i = readlink (selection (panel)->fname->str, buffer, MC_MAXPATHLEN - 1);
if (i < 0)
return;
- panel_fname_vpath = vfs_path_from_str (selection (panel)->fname);
+ panel_fname_vpath = vfs_path_from_str (selection (panel)->fname->str);
ok = (mc_stat (panel_fname_vpath, &st) >= 0);
- vfs_path_free (panel_fname_vpath);
+ vfs_path_free (panel_fname_vpath, TRUE);
if (!ok)
return;
@@ -2973,7 +3049,7 @@
cpanel = change_panel ();
panel_cd (cpanel, new_dir_vpath, cd_exact);
- vfs_path_free (new_dir_vpath);
+ vfs_path_free (new_dir_vpath, TRUE);
(void) change_panel ();
move_down (panel);
@@ -3268,7 +3344,7 @@
panel_set_lwd (panel, panel->cwd_vpath);
input_complete_free (cmdline);
- vfs_path_free (panel->cwd_vpath);
+ vfs_path_free (panel->cwd_vpath, TRUE);
vfs_setup_cwd ();
panel->cwd_vpath = vfs_path_clone (vfs_get_raw_current_dir ());
@@ -3280,7 +3356,7 @@
panel_clean_dir (panel);
if (!dir_list_load (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine,
- &panel->sort_info, panel->filter))
+ &panel->sort_info, &panel->filter))
message (D_ERROR, MSG_ERROR, _("Cannot read directory contents"));
try_to_select (panel, get_parent_dir_name (panel->cwd_vpath, olddir_vpath));
@@ -3289,7 +3365,7 @@
panel->dirty = TRUE;
update_xterm_title_path ();
- vfs_path_free (olddir_vpath);
+ vfs_path_free (olddir_vpath, TRUE);
return TRUE;
}
@@ -3313,7 +3389,7 @@
data_vpath = vfs_path_from_str ((char *) next->data);
ok = panel_do_cd_int (panel, data_vpath, cd_exact);
- vfs_path_free (data_vpath);
+ vfs_path_free (data_vpath, TRUE);
panel->dir_history.current = next;
}
/* skip directories that present in history but absent in file system */
@@ -3340,7 +3416,7 @@
data_vpath = vfs_path_from_str ((char *) prev->data);
ok = panel_do_cd_int (panel, data_vpath, cd_exact);
- vfs_path_free (data_vpath);
+ vfs_path_free (data_vpath, TRUE);
panel->dir_history.current = prev;
}
/* skip directories that present in history but absent in file system */
@@ -3359,8 +3435,8 @@
pos = g_list_position (panel->dir_history.current, panel->dir_history.list);
- history_descriptor_init (&hd, WIDGET (panel)->y, WIDGET (panel)->x, panel->dir_history.list,
- (int) pos);
+ history_descriptor_init (&hd, WIDGET (panel)->rect.y, WIDGET (panel)->rect.x,
+ panel->dir_history.list, (int) pos);
history_show (&hd);
panel->dir_history.list = hd.list;
@@ -3374,7 +3450,7 @@
directory_history_add (panel, panel->cwd_vpath);
else
message (D_ERROR, MSG_ERROR, _("Cannot change directory"));
- vfs_path_free (s_vpath);
+ vfs_path_free (s_vpath, TRUE);
g_free (hd.text);
}
@@ -3468,6 +3544,9 @@
case CK_Unselect:
panel_unselect_files (panel);
break;
+ case CK_Filter:
+ panel_do_set_filter (panel);
+ break;
case CK_PageDown:
next_page (panel);
break;
@@ -3737,19 +3816,30 @@
/* --------------------------------------------------------------------------------------------- */
-static gboolean
-mark_if_marking (WPanel * panel, const mouse_event_t * event)
+static void
+mark_if_marking (WPanel * panel, const mouse_event_t * event, int previous_selected)
{
- if ((event->buttons & GPM_B_RIGHT) != 0)
+ if ((event->buttons & GPM_B_RIGHT) == 0)
+ return;
+
+ if (event->msg == MSG_MOUSE_DOWN)
+ mouse_toggle_mark (panel);
+ else
{
- if (event->msg == MSG_MOUSE_DOWN)
- mouse_toggle_mark (panel);
- else
+ int psel, sel1, sel2;
+
+ psel = panel->selected;
+ sel1 = MIN (previous_selected, panel->selected);
+ sel2 = MAX (previous_selected, panel->selected);
+
+ for (; sel1 <= sel2; sel1++)
+ {
+ panel->selected = sel1;
mouse_set_mark (panel);
- return TRUE;
- }
+ }
- return FALSE;
+ panel->selected = psel;
+ }
}
/* --------------------------------------------------------------------------------------------- */
@@ -3812,27 +3902,27 @@
static int
panel_mouse_is_on_item (const WPanel * panel, int y, int x)
{
- int last;
+ int lines, col_width, col;
if (y < 0)
- return (-1);
+ return MOUSE_UPPER_FILE_LIST;
- last = panel->dir.len - 1;
- y += panel->top_file;
+ lines = panel_lines (panel);
+ if (y >= lines)
+ return MOUSE_BELOW_FILE_LIST;
- if (y > last)
- return (-1);
+ col_width = (CONST_WIDGET (panel)->rect.cols - 2) / panel->list_cols;
+ /* column where mouse is */
+ col = x / col_width;
- if (panel->list_cols > 1)
- {
- int width, lines;
+ y += panel->top_file + lines * col;
- width = (WIDGET (panel)->cols - 2) / panel->list_cols;
- lines = panel_lines (panel);
- y += lines * (x / width);
- }
+ /* are we below or in the next column of last file? */
+ if (y > panel->dir.len)
+ return MOUSE_AFTER_LAST_FILE;
- return (y > last ? -1 : y);
+ /* we are on item of the file file; return an index to select a file */
+ return y;
}
/* --------------------------------------------------------------------------------------------- */
@@ -3854,15 +3944,15 @@
if (event->x == 1)
/* "<" button */
directory_history_prev (panel);
- else if (event->x == w->cols - 2)
+ else if (event->x == w->rect.cols - 2)
/* ">" button */
directory_history_next (panel);
- else if (event->x >= w->cols - 5 && event->x <= w->cols - 3)
+ else if (event->x >= w->rect.cols - 5 && event->x <= w->rect.cols - 3)
/* "^" button */
directory_history_list (panel);
- else if (event->x == w->cols - 6)
+ else if (event->x == w->rect.cols - 6)
/* "." button show/hide hidden files */
- send_message (midnight_dlg, NULL, MSG_ACTION, CK_ShowHidden, NULL);
+ send_message (filemanager, NULL, MSG_ACTION, CK_ShowHidden, NULL);
else
{
/* no other events on 1st line, return MOU_UNHANDLED */
@@ -3887,10 +3977,27 @@
case MSG_MOUSE_DRAG:
{
int my_index;
+ int previous_selected;
my_index = panel_mouse_is_on_item (panel, event->y - 2, event->x);
- if (my_index >= 0)
+ previous_selected = panel->selected;
+
+ switch (my_index)
{
+ case MOUSE_UPPER_FILE_LIST:
+ move_up (panel);
+ mark_if_marking (panel, event, previous_selected);
+ break;
+
+ case MOUSE_BELOW_FILE_LIST:
+ move_down (panel);
+ mark_if_marking (panel, event, previous_selected);
+ break;
+
+ case MOUSE_AFTER_LAST_FILE:
+ break; /* do nothing */
+
+ default:
if (my_index != panel->selected)
{
unselect_item (panel);
@@ -3898,8 +4005,8 @@
select_item (panel);
}
- /* This one is new */
- mark_if_marking (panel, event);
+ mark_if_marking (panel, event, previous_selected);
+ break;
}
}
break;
@@ -3960,16 +4067,16 @@
{
vfs_path_t *vpath;
- vpath = vfs_path_from_str (list->list[i].fname);
+ vpath = vfs_path_from_str (list->list[i].fname->str);
if (mc_lstat (vpath, &list->list[i].st) != 0)
- g_free (list->list[i].fname);
+ g_string_free (list->list[i].fname, TRUE);
else
{
if (j != i)
list->list[j] = list->list[i];
j++;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
if (j == 0)
dir_list_init (list);
@@ -4002,7 +4109,8 @@
if (free_pointer)
{
- my_current_file = g_strdup (panel->dir.list[panel->selected].fname);
+ my_current_file = g_strndup (panel->dir.list[panel->selected].fname->str,
+ panel->dir.list[panel->selected].fname->len);
current_file = my_current_file;
}
@@ -4043,7 +4151,7 @@
{
panel->dirty = TRUE;
panel->selected = i;
- panel->top_file = panel->selected - (WIDGET (panel)->lines - 2) / 2;
+ panel->top_file = panel->selected - (WIDGET (panel)->rect.lines - 2) / 2;
if (panel->top_file < 0)
panel->top_file = 0;
}
@@ -4075,7 +4183,7 @@
/* Search that subdir or filename without prefix (if not panelized panel), select it if found */
for (i = 0; i < panel->dir.len; i++)
{
- if (strcmp (subdir, panel->dir.list[i].fname) == 0)
+ if (strcmp (subdir, panel->dir.list[i].fname->str) == 0)
{
do_select (panel, i);
g_free (subdir);
@@ -4120,7 +4228,7 @@
if (current_panel->marked == 0)
mc_event_raise (MCEVENT_GROUP_CORE, "clipboard_text_to_file",
- (gpointer) selection (current_panel)->fname);
+ (gpointer) selection (current_panel)->fname->str);
else
{
int i;
@@ -4132,7 +4240,8 @@
{ /* Skip the unmarked ones */
if (first)
{
- flist = g_strdup (current_panel->dir.list[i].fname);
+ flist = g_strndup (current_panel->dir.list[i].fname->str,
+ current_panel->dir.list[i].fname->len);
first = FALSE;
}
else
@@ -4141,7 +4250,8 @@
char *tmp;
tmp =
- g_strconcat (flist, "\n", current_panel->dir.list[i].fname, (char *) NULL);
+ g_strconcat (flist, "\n", current_panel->dir.list[i].fname->str,
+ (char *) NULL);
g_free (flist);
flist = tmp;
}
@@ -4170,13 +4280,16 @@
/* check if path contains only '/' */
panel_cwd_path = vfs_path_as_str (cwd_vpath);
if (panel_cwd_path != NULL && IS_PATH_SEP (panel_cwd_path[0]) && panel_cwd_path[1] == '\0')
+ {
+ vfs_path_free (cwd_vpath, TRUE);
return NULL;
+ }
tmp_vpath = vfs_path_vtokens_get (cwd_vpath, 0, -1);
- vfs_path_free (cwd_vpath);
+ vfs_path_free (cwd_vpath, TRUE);
cwd_vpath =
vfs_path_build_filename (PATH_SEP_STR, vfs_path_as_str (tmp_vpath), (char *) NULL);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
return cwd_vpath;
@@ -4255,7 +4368,7 @@
{
if (vpath != panel->cwd_vpath) /* check if new vpath is not the panel->cwd_vpath object */
{
- vfs_path_free (panel->cwd_vpath);
+ vfs_path_free (panel->cwd_vpath, TRUE);
panel->cwd_vpath = vfs_path_clone (vpath);
}
}
@@ -4273,7 +4386,7 @@
{
if (vpath != panel->lwd_vpath) /* check if new vpath is not the panel->lwd_vpath object */
{
- vfs_path_free (panel->lwd_vpath);
+ vfs_path_free (panel->lwd_vpath, TRUE);
panel->lwd_vpath = vfs_path_clone (vpath);
}
}
@@ -4290,6 +4403,7 @@
WPanel *
panel_sized_empty_new (const char *panel_name, int y, int x, int lines, int cols)
{
+ WRect r = { y, x, lines, cols };
WPanel *panel;
Widget *w;
char *section;
@@ -4297,7 +4411,7 @@
panel = g_new0 (WPanel, 1);
w = WIDGET (panel);
- widget_init (w, y, x, lines, cols, panel_callback, panel_mouse_callback);
+ widget_init (w, &r, panel_callback, panel_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_TOP_SELECT;
w->keymap = panel_map;
@@ -4315,6 +4429,8 @@
panel->list_format = list_full;
panel->user_format = g_strdup (DEFAULT_USER_FORMAT);
+ panel->filter.flags = FILE_FILTER_DEFAULT_FLAGS;
+
for (i = 0; i < LIST_FORMATS; i++)
panel->user_status_format[i] = g_strdup (DEFAULT_USER_FORMAT);
@@ -4340,6 +4456,21 @@
panel_load_setup (panel, section);
g_free (section);
+ if (panel->filter.value != NULL)
+ {
+ gboolean case_sens = (panel->filter.flags & SELECT_MATCH_CASE) != 0;
+ gboolean shell_patterns = (panel->filter.flags & SELECT_SHELL_PATTERNS) != 0;
+
+ panel->filter.handler = mc_search_new (panel->filter.value, NULL);
+ panel->filter.handler->search_type = shell_patterns ? MC_SEARCH_T_GLOB : MC_SEARCH_T_REGEX;
+ panel->filter.handler->is_entire_line = TRUE;
+ panel->filter.handler->is_case_sensitive = case_sens;
+
+ /* FIXME: silent check -- do not display an error message */
+ if (!mc_search_prepare (panel->filter.handler))
+ file_filter_clear (&panel->filter);
+ }
+
/* Load format strings */
err = set_panel_formats (panel);
if (err != 0)
@@ -4399,13 +4530,13 @@
panel->codepage = SELECT_CHARSET_NO_TRANSLATE;
#endif
vfs_setup_cwd ();
- vfs_path_free (panel->cwd_vpath);
+ vfs_path_free (panel->cwd_vpath, TRUE);
panel->cwd_vpath = vfs_path_clone (vfs_get_raw_current_dir ());
}
/* Load the default format */
if (!dir_list_load (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine,
- &panel->sort_info, panel->filter))
+ &panel->sort_info, &panel->filter))
message (D_ERROR, MSG_ERROR, _("Cannot read directory contents"));
/* Restore old right path */
@@ -4416,7 +4547,7 @@
tmp_vpath = vfs_path_from_str (curdir);
mc_chdir (tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
(void) err;
}
g_free (curdir);
@@ -4438,7 +4569,7 @@
return;
cwd_vpath = panel_recursive_cd_to_parent (panel->cwd_vpath);
- vfs_path_free (panel->cwd_vpath);
+ vfs_path_free (panel->cwd_vpath, TRUE);
if (cwd_vpath == NULL)
{
@@ -4453,7 +4584,7 @@
show_dir (panel);
if (!dir_list_reload (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine,
- &panel->sort_info, panel->filter))
+ &panel->sort_info, &panel->filter))
message (D_ERROR, MSG_ERROR, _("Cannot read directory contents"));
panel->dirty = TRUE;
@@ -4525,6 +4656,22 @@
/* --------------------------------------------------------------------------------------------- */
+void
+panel_set_filter (WPanel * panel, const file_filter_t * filter)
+{
+ MC_PTR_FREE (panel->filter.value);
+ mc_search_free (panel->filter.handler);
+ panel->filter.handler = NULL;
+
+ /* NULL to clear filter */
+ if (filter != NULL)
+ panel->filter = *filter;
+
+ reread_cmd ();
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
/* Select current item and readjust the panel */
void
select_item (WPanel * panel)
@@ -4588,7 +4735,7 @@
return;
/* Only '..' can't be marked, '.' isn't visible */
- if (DIR_IS_DOTDOT (panel->dir.list[idx].fname))
+ if (DIR_IS_DOTDOT (panel->dir.list[idx].fname->str))
return;
file_mark (panel, idx, mark);
@@ -4656,18 +4803,20 @@
panel_re_sort (WPanel * panel)
{
char *filename;
+ file_entry_t *fe;
int i;
if (panel == NULL)
return;
- filename = g_strdup (selection (panel)->fname);
+ fe = selection (panel);
+ filename = g_strndup (fe->fname->str, fe->fname->len);
unselect_item (panel);
dir_list_sort (&panel->dir, panel->sort_field->sort_routine, &panel->sort_info);
panel->selected = -1;
for (i = panel->dir.len; i != 0; i--)
- if (strcmp (panel->dir.list[i - 1].fname, filename) == 0)
+ if (strcmp (panel->dir.list[i - 1].fname->str, filename) == 0)
{
panel->selected = i - 1;
break;
@@ -4694,7 +4843,8 @@
{
char *current_file;
- current_file = g_strdup (panel->dir.list[panel->selected].fname);
+ current_file = g_strndup (panel->dir.list[panel->selected].fname->str,
+ panel->dir.list[panel->selected].fname->len);
panel_reload (panel);
try_to_select (panel, current_file);
g_free (current_file);
@@ -4734,7 +4884,7 @@
cd_path_vpath = remove_encoding_from_path (panel->cwd_vpath);
panel_do_cd (panel, cd_path_vpath, cd_parse_command);
show_dir (panel);
- vfs_path_free (cd_path_vpath);
+ vfs_path_free (cd_path_vpath, TRUE);
return;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/panel.h
^
|
@@ -49,16 +49,7 @@
UP_ONLY_CURRENT = 2
} panel_update_flags_t;
-/* selection flags */
-typedef enum
-{
- SELECT_FILES_ONLY = 1 << 0,
- SELECT_MATCH_CASE = 1 << 1,
- SELECT_SHELL_PATTERNS = 1 << 2
-} panel_select_flags_t;
-
/* run mode and params */
-
enum cd_enum
{
cd_parse_command,
@@ -129,7 +120,7 @@
gboolean user_mini_status; /* Is user_status_format used */
char *user_status_format[LIST_FORMATS]; /* User format for status line */
- char *filter; /* File name filter */
+ file_filter_t filter; /* File name filter */
struct
{
@@ -179,6 +170,8 @@
void update_panels (panel_update_flags_t flags, const char *current_file);
int set_panel_formats (WPanel * p);
+void panel_set_filter (WPanel * panel, const file_filter_t * filter);
+
void try_to_select (WPanel * panel, const char *name);
void unmark_files (WPanel * panel);
@@ -192,12 +185,12 @@
gboolean panel_cd (WPanel * panel, const vfs_path_t * new_dir_vpath, enum cd_enum cd_type);
gsize panel_get_num_of_sortable_fields (void);
-char **panel_get_sortable_fields (gsize *);
-const panel_field_t *panel_get_field_by_id (const char *);
-const panel_field_t *panel_get_field_by_title (const char *);
-const panel_field_t *panel_get_field_by_title_hotkey (const char *);
+char **panel_get_sortable_fields (gsize * array_size);
+const panel_field_t *panel_get_field_by_id (const char *name);
+const panel_field_t *panel_get_field_by_title (const char *name);
+const panel_field_t *panel_get_field_by_title_hotkey (const char *name);
gsize panel_get_num_of_user_possible_fields (void);
-char **panel_get_user_possible_fields (gsize *);
+char **panel_get_user_possible_fields (gsize * array_size);
void panel_set_cwd (WPanel * panel, const vfs_path_t * vpath);
void panel_set_lwd (WPanel * panel, const vfs_path_t * vpath);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/panelize.c
^
|
@@ -1,12 +1,13 @@
/*
External panelize
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
Janne Kukonlehto, 1995
Jakub Jelinek, 1995
+ Andrew Borodin <aborodin@vmail.ru> 2011-2022
This file is part of the Midnight Commander.
@@ -186,7 +187,7 @@
listbox_select_entry (l_panelize, listbox_search_text (l_panelize, _("Other command")));
group_add_widget (g, l_panelize);
- y += WIDGET (l_panelize)->lines + 1;
+ y += WIDGET (l_panelize)->rect.lines + 1;
group_add_widget (g, label_new (y++, UX, _("Command")));
pname =
input_new (y++, UX, input_colors, panelize_cols - UX * 2, "", "in",
@@ -217,7 +218,7 @@
static void
panelize_done (void)
{
- dlg_destroy (panelize_dlg);
+ widget_destroy (WIDGET (panelize_dlg));
repaint_screen ();
}
@@ -270,7 +271,7 @@
if (label == NULL || *label == '\0')
g_free (label);
else
- add2panelize (label, g_strdup (pname->buffer));
+ add2panelize (label, input_get_text (pname));
}
}
@@ -306,15 +307,18 @@
do_external_panelize (char *command)
{
dir_list *list = ¤t_panel->dir;
- FILE *external;
+ mc_pipe_t *external;
+ GError *error = NULL;
+ GString *remain_file_name = NULL;
- open_error_pipe ();
- external = popen (command, "r");
+ external = mc_popen (command, TRUE, TRUE, &error);
if (external == NULL)
{
- close_error_pipe (D_ERROR, _("Cannot invoke command."));
+ message (D_ERROR, _("External panelize"), "%s", error->message);
+ g_error_free (error);
return;
}
+
/* Clear the counters and the directory list */
panel_clean_dir (current_panel);
@@ -324,48 +328,110 @@
while (TRUE)
{
- char line[MC_MAXPATHLEN];
- size_t len;
- char *name;
- gboolean link_to_dir, stale_link;
- struct stat st;
+ GString *line;
+ gboolean ok;
+
+ /* init buffers before call of mc_pread() */
+ external->out.len = MC_PIPE_BUFSIZE;
+ external->err.len = MC_PIPE_BUFSIZE;
+ external->err.null_term = TRUE;
+
+ mc_pread (external, &error);
- clearerr (external);
- if (fgets (line, sizeof (line), external) == NULL)
+ if (error != NULL)
{
- if (ferror (external) != 0 && errno == EINTR)
- continue;
+ message (D_ERROR, MSG_ERROR, _("External panelize:\n%s"), error->message);
+ g_error_free (error);
break;
}
- len = strlen (line);
- if (line[len - 1] == '\n')
- line[len - 1] = '\0';
- if (line[0] == '\0')
- continue;
+ if (external->err.len > 0)
+ message (D_ERROR, MSG_ERROR, _("External panelize:\n%s"), external->err.buf);
- name = line;
- if (line[0] == '.' && IS_PATH_SEP (line[1]))
- name += 2;
+ if (external->out.len == MC_PIPE_STREAM_EOF)
+ break;
- if (!handle_path (name, &st, &link_to_dir, &stale_link))
+ if (external->out.len == 0)
continue;
- if (!dir_list_append (list, name, &st, link_to_dir, stale_link))
+ if (external->out.len == MC_PIPE_ERROR_READ)
+ {
+ message (D_ERROR, MSG_ERROR,
+ _("External panelize:\nfailed to read data from child stdout:\n%s"),
+ unix_error_string (external->out.error));
break;
+ }
+
+ ok = TRUE;
+
+ while (ok && (line = mc_pstream_get_string (&external->out)) != NULL)
+ {
+ char *name;
+ gboolean link_to_dir, stale_link;
+ struct stat st;
+
+ /* handle a \n-separated file list */
+
+ if (line->str[line->len - 1] == '\n')
+ {
+ /* entire file name or last chunk */
+
+ g_string_truncate (line, line->len - 1);
+
+ /* join filename chunks */
+ if (remain_file_name != NULL)
+ {
+ g_string_append_len (remain_file_name, line->str, line->len);
+ g_string_free (line, TRUE);
+ line = remain_file_name;
+ remain_file_name = NULL;
+ }
+ }
+ else
+ {
+ /* first or middle chunk of file name */
+
+ if (remain_file_name == NULL)
+ remain_file_name = line;
+ else
+ {
+ g_string_append_len (remain_file_name, line->str, line->len);
+ g_string_free (line, TRUE);
+ }
- file_mark (current_panel, list->len - 1, 0);
+ continue;
+ }
+
+ name = line->str;
+
+ if (name[0] == '.' && IS_PATH_SEP (name[1]))
+ name += 2;
+
+ if (handle_path (name, &st, &link_to_dir, &stale_link))
+ {
+ ok = dir_list_append (list, name, &st, link_to_dir, stale_link);
+
+ if (ok)
+ {
+ file_mark (current_panel, list->len - 1, 0);
+
+ if ((list->len & 31) == 0)
+ rotate_dash (TRUE);
+ }
+ }
- if ((list->len & 31) == 0)
- rotate_dash (TRUE);
+ g_string_free (line, TRUE);
+ }
}
+ if (remain_file_name != NULL)
+ g_string_free (remain_file_name, TRUE);
+
+ mc_pclose (external, NULL);
+
current_panel->is_panelized = TRUE;
panelize_absolutize_if_needed (current_panel);
- if (pclose (external) < 0)
- message (D_NORMAL, _("External panelize"), _("Pipe close failed"));
- close_error_pipe (D_NORMAL, NULL);
try_to_select (current_panel, NULL);
panel_re_sort (current_panel);
rotate_dash (FALSE);
@@ -396,24 +462,17 @@
for (i = 0; i < panelized_panel.list.len; i++)
{
- if (panelized_same || DIR_IS_DOTDOT (panelized_panel.list.list[i].fname))
- {
- list->list[i].fnamelen = panelized_panel.list.list[i].fnamelen;
- list->list[i].fname = g_strndup (panelized_panel.list.list[i].fname,
- panelized_panel.list.list[i].fnamelen);
- }
+ if (panelized_same || DIR_IS_DOTDOT (panelized_panel.list.list[i].fname->str))
+ list->list[i].fname = mc_g_string_dup (panelized_panel.list.list[i].fname);
else
{
vfs_path_t *tmp_vpath;
- const char *fname;
tmp_vpath =
- vfs_path_append_new (panelized_panel.root_vpath, panelized_panel.list.list[i].fname,
- (char *) NULL);
- fname = vfs_path_as_str (tmp_vpath);
- list->list[i].fnamelen = strlen (fname);
- list->list[i].fname = g_strndup (fname, list->list[i].fnamelen);
- vfs_path_free (tmp_vpath);
+ vfs_path_append_new (panelized_panel.root_vpath,
+ panelized_panel.list.list[i].fname->str, (char *) NULL);
+ list->list[i].fname = g_string_new (vfs_path_as_str (tmp_vpath));
+ vfs_path_free (tmp_vpath, TRUE);
}
list->list[i].f.link_to_dir = panelized_panel.list.list[i].f.link_to_dir;
list->list[i].f.stale_link = panelized_panel.list.list[i].f.stale_link;
@@ -441,7 +500,7 @@
void
panelize_change_root (const vfs_path_t * new_root)
{
- vfs_path_free (panelized_panel.root_vpath);
+ vfs_path_free (panelized_panel.root_vpath, TRUE);
panelized_panel.root_vpath = vfs_path_clone (new_root);
}
@@ -466,9 +525,7 @@
for (i = 0; i < panel->dir.len; i++)
{
- panelized_panel.list.list[i].fnamelen = list->list[i].fnamelen;
- panelized_panel.list.list[i].fname =
- g_strndup (list->list[i].fname, list->list[i].fnamelen);
+ panelized_panel.list.list[i].fname = mc_g_string_dup (list->list[i].fname);
panelized_panel.list.list[i].f.link_to_dir = list->list[i].f.link_to_dir;
panelized_panel.list.list[i].f.stale_link = list->list[i].f.stale_link;
panelized_panel.list.list[i].f.dir_size_computed = list->list[i].f.dir_size_computed;
@@ -505,7 +562,7 @@
/* Note: We don't support mixing of absolute and relative paths, which is
* why it's ok for us to check only the 1st entry. */
- if (list->len > 1 && g_path_is_absolute (list->list[1].fname))
+ if (list->len > 1 && g_path_is_absolute (list->list[1].fname->str))
{
vfs_path_t *root;
@@ -513,7 +570,7 @@
panel_set_cwd (panel, root);
if (panel == current_panel)
mc_chdir (root);
- vfs_path_free (root);
+ vfs_path_free (root, TRUE);
}
}
@@ -567,8 +624,8 @@
{
char *cmd;
- cmd = g_strdup (pname->buffer);
- dlg_destroy (panelize_dlg);
+ cmd = input_get_text (pname);
+ widget_destroy (WIDGET (panelize_dlg));
do_external_panelize (cmd);
g_free (cmd);
repaint_screen ();
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/tree.c
^
|
@@ -6,7 +6,7 @@
created and destroyed. This is required for the future vfs layer,
it will be possible to have tree views over virtual file systems.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Norbert Warmuth, 1997
Miguel de Icaza, 1996, 1999
Slava Zanko <slavazanko@gmail.com>, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2013, 2014, 2016
+ Andrew Borodin <aborodin@vmail.ru>, 2013-2022
This file is part of the Midnight Commander.
@@ -56,7 +56,7 @@
#include "lib/event.h" /* mc_event_raise() */
#include "src/setup.h" /* confirm_delete, panels_options */
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "src/history.h"
#include "dir.h"
@@ -82,8 +82,8 @@
/*** file scope macro definitions ****************************************************************/
-#define tlines(t) (t->is_panel ? WIDGET (t)->lines - 2 - \
- (panels_options.show_mini_info ? 2 : 0) : WIDGET (t)->lines)
+#define tlines(t) (t->is_panel ? WIDGET (t)->rect.lines - 2 - \
+ (panels_options.show_mini_info ? 2 : 0) : WIDGET (t)->rect.lines)
/*** file scope type declarations ****************************************************************/
@@ -212,7 +212,7 @@
tree->selected_ptr = tree->store->tree_first;
vpath = vfs_path_from_str (mc_config_get_home_dir ());
tree_chdir (tree, vpath);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -237,7 +237,7 @@
{
/* Show search string */
tty_setcolor (INPUT_COLOR);
- tty_draw_hline (w->y + line, w->x + 1, ' ', tree_cols);
+ tty_draw_hline (w->rect.y + line, w->rect.x + 1, ' ', tree_cols);
widget_gotoyx (w, line, 1);
tty_print_char (PATH_SEP);
tty_print_string (str_fit_to_term (tree->search_buffer->str, tree_cols - 2, J_LEFT_FIT));
@@ -251,7 +251,7 @@
colors = widget_get_colors (w);
tty_setcolor (tree->is_panel ? NORMAL_COLOR : colors[DLG_COLOR_NORMAL]);
- tty_draw_hline (w->y + line, w->x + 1, ' ', tree_cols);
+ tty_draw_hline (w->rect.y + line, w->rect.x + 1, ' ', tree_cols);
widget_gotoyx (w, line, 1);
tty_print_string (str_fit_to_term
(vfs_path_as_str (tree->selected_ptr->name), tree_cols, J_LEFT_FIT));
@@ -272,7 +272,7 @@
/* Initialize */
tree_lines = tlines (tree);
- tree_cols = w->cols;
+ tree_cols = w->rect.cols;
widget_gotoyx (w, y, x);
if (tree->is_panel)
@@ -339,7 +339,7 @@
tty_setcolor (tree->is_panel ? NORMAL_COLOR : colors[DLG_COLOR_NORMAL]);
/* Move to the beginning of the line */
- tty_draw_hline (w->y + y + i, w->x + x, ' ', tree_cols);
+ tty_draw_hline (w->rect.y + y + i, w->rect.x + x, ' ', tree_cols);
if (current == NULL)
continue;
@@ -689,7 +689,7 @@
ret = mc_chdir (old_vpath);
(void) ret;
}
- vfs_path_free (old_vpath);
+ vfs_path_free (old_vpath, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -785,7 +785,7 @@
file_op_context_destroy (ctx);
ret:
- vfs_path_free (dest_vpath);
+ vfs_path_free (dest_vpath, TRUE);
g_free (dest);
}
@@ -1127,21 +1127,21 @@
const char *title = _("Directory tree");
const int len = str_term_width1 (title);
- tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE);
- widget_gotoyx (w, 0, (w->cols - len - 2) / 2);
+ widget_gotoyx (w, 0, (w->rect.cols - len - 2) / 2);
tty_printf (" %s ", title);
if (panels_options.show_mini_info)
{
int y;
- y = w->lines - 3;
+ y = w->rect.lines - 3;
widget_gotoyx (w, y, 0);
tty_print_alt_char (ACS_LTEE, FALSE);
- widget_gotoyx (w, y, w->cols - 1);
+ widget_gotoyx (w, y, w->rect.cols - 1);
tty_print_alt_char (ACS_RTEE, FALSE);
- tty_draw_hline (w->y + y, w->x + 1, ACS_HLINE, w->cols - 2);
+ tty_draw_hline (w->rect.y + y, w->rect.x + 1, ACS_HLINE, w->rect.cols - 2);
}
}
}
@@ -1225,7 +1225,7 @@
{
case MSG_MOUSE_DOWN:
/* rest of the upper frame - call menu */
- if (tree->is_panel && event->y == WIDGET (w->owner)->y)
+ if (tree->is_panel && event->y == WIDGET (w->owner)->rect.y)
{
/* return MOU_UNHANDLED */
event->result.abort = TRUE;
@@ -1280,13 +1280,14 @@
WTree *
tree_new (int y, int x, int lines, int cols, gboolean is_panel)
{
+ WRect r = { y, x, lines, cols };
WTree *tree;
Widget *w;
tree = g_new (WTree, 1);
w = WIDGET (tree);
- widget_init (w, y, x, lines, cols, tree_callback, tree_mouse_callback);
+ widget_init (w, &r, tree_callback, tree_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_TOP_SELECT;
w->keymap = tree_map;
@@ -1297,7 +1298,7 @@
tree_store_add_entry_remove_hook (remove_callback, tree);
tree->tree_shown = NULL;
tree->search_buffer = g_string_sized_new (MC_MAXPATHLEN);
- tree->topdiff = w->lines / 2;
+ tree->topdiff = w->rect.lines / 2;
tree->searching = FALSE;
load_tree (tree);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/filemanager/treestore.c
^
|
@@ -8,7 +8,7 @@
created and destroyed. This is required for the future vfs layer,
it will be possible to have tree views over virtual file systems.
- Copyright (C) 1999-2020
+ Copyright (C) 1999-2022
Free Software Foundation, Inc.
Written by:
@@ -276,10 +276,10 @@
tmp_vpath = vfs_path_from_str (oldname);
e = tree_store_add_entry (tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
e->scanned = scanned;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
}
}
@@ -293,7 +293,7 @@
e = tree_store_add_entry (vpath);
e->scanned = scanned;
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
g_strlcpy (oldname, lc_name, sizeof (oldname));
}
g_free (lc_name);
@@ -310,7 +310,7 @@
tmp_vpath = vfs_path_from_str (PATH_SEP_STR);
tree_store_add_entry (tmp_vpath);
tree_store_rescan (tmp_vpath);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
ts.loaded = TRUE;
}
@@ -520,7 +520,7 @@
ts.tree_last = entry->prev;
/* Free the memory used by the entry */
- vfs_path_free (entry->name);
+ vfs_path_free (entry->name, TRUE);
g_free (entry);
return ret;
@@ -586,6 +586,14 @@
}
/* --------------------------------------------------------------------------------------------- */
+
+static void
+queue_vpath_free (gpointer data)
+{
+ vfs_path_free ((vfs_path_t *) data, TRUE);
+}
+
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -759,7 +767,7 @@
ts.add_queue_vpath = g_list_prepend (ts.add_queue_vpath, name);
}
else
- vfs_path_free (name);
+ vfs_path_free (name, TRUE);
/* Clear the deletion mark from the subdirectory and its children */
base = current;
@@ -880,10 +888,10 @@
/* get the stuff in the scan order */
the_queue = g_list_reverse (ts.add_queue_vpath);
ts.add_queue_vpath = NULL;
- vfs_path_free (ts.check_name);
+ vfs_path_free (ts.check_name, TRUE);
ts.check_name = NULL;
- g_list_free_full (the_queue, (GDestroyNotify) vfs_path_free);
+ g_list_free_full (the_queue, queue_vpath_free);
}
/* --------------------------------------------------------------------------------------------- */
@@ -919,7 +927,7 @@
tmp_vpath = vfs_path_append_new (vpath, dp->d_name, (char *) NULL);
if (mc_lstat (tmp_vpath, &buf) != -1 && S_ISDIR (buf.st_mode))
tree_store_mark_checked (dp->d_name);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
}
mc_closedir (dirp);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/help.c
^
|
@@ -1,7 +1,7 @@
/*
Hypertext file browser.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -65,7 +65,7 @@
#include "lib/widget.h"
#include "lib/event-types.h"
-#include "keybind-defaults.h"
+#include "keymap.h"
#include "help.h"
/*** global variables ****************************************************************************/
@@ -512,8 +512,8 @@
break;
case CHAR_VERSION:
widget_gotoyx (h, line + 2, col + 2);
- tty_print_string (VERSION);
- col += str_term_width1 (VERSION);
+ tty_print_string (mc_global.mc_version);
+ col += str_term_width1 (mc_global.mc_version);
break;
case CHAR_FONT_BOLD:
tty_setcolor (HELP_BOLD_COLOR);
@@ -564,8 +564,8 @@
#ifndef HAVE_SLANG
tty_print_char (acs_map[c]);
#else
- SLsmg_draw_object (WIDGET (h)->y + line + 2, WIDGET (h)->x + col + 2,
- c);
+ SLsmg_draw_object (WIDGET (h)->rect.y + line + 2,
+ WIDGET (h)->rect.x + col + 2, c);
#endif
col++;
}
@@ -882,10 +882,11 @@
{
Widget *w = WIDGET (h);
WButtonBar *bb;
- WRect r;
+ WRect r = w->rect;
help_lines = MIN (LINES - 4, MAX (2 * LINES / 3, 18));
- rect_init (&r, w->y, w->x, help_lines + 4, HELP_WINDOW_WIDTH + 4);
+ r.lines = help_lines + 4;
+ r.cols = HELP_WINDOW_WIDTH + 4;
dlg_default_callback (w, NULL, MSG_RESIZE, 0, &r);
bb = find_buttonbar (h);
widget_set_size (WIDGET (bb), LINES - 1, 0, 1, COLS);
@@ -940,26 +941,20 @@
translate_file (char *filedata)
{
GIConv conv;
- GString *translated_data;
-
- /* initial allocation for largest whole help file */
- translated_data = g_string_sized_new (32 * 1024);
conv = str_crt_conv_from ("UTF-8");
-
- if (conv == INVALID_CONV)
- g_string_free (translated_data, TRUE);
- else
+ if (conv != INVALID_CONV)
{
+ GString *translated_data;
+ gboolean nok;
+
g_free (fdata);
- if (str_convert (conv, filedata, translated_data) != ESTR_FAILURE)
- fdata = g_string_free (translated_data, FALSE);
- else
- {
- fdata = NULL;
- g_string_free (translated_data, TRUE);
- }
+ /* initial allocation for largest whole help file */
+ translated_data = g_string_sized_new (32 * 1024);
+ nok = (str_convert (conv, filedata, translated_data) == ESTR_FAILURE);
+ fdata = g_string_free (translated_data, nok);
+
str_close_conv (conv);
}
}
@@ -973,7 +968,7 @@
{
case MSG_RESIZE:
widget_default_callback (w, NULL, MSG_RESIZE, 0, data);
- w->lines = help_lines;
+ w->rect.lines = help_lines;
return MSG_HANDLED;
default:
@@ -1052,12 +1047,12 @@
/* --------------------------------------------------------------------------------------------- */
static Widget *
-mousedispatch_new (int y, int x, int yl, int xl)
+mousedispatch_new (const WRect * r)
{
Widget *w;
w = g_new0 (Widget, 1);
- widget_init (w, y, x, yl, xl, md_callback, help_mouse_callback);
+ widget_init (w, r, md_callback, help_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_WANT_CURSOR;
return w;
@@ -1087,6 +1082,7 @@
char *hlpfile = NULL;
char *filedata;
ev_help_t *event_data = (ev_help_t *) data;
+ WRect r = { 1, 1, 1, 1 };
(void) event_group_name;
(void) event_name;
@@ -1153,14 +1149,16 @@
history[history_ptr].link = selected_item;
}
- help_bar = buttonbar_new (TRUE);
- WIDGET (help_bar)->y -= wh->y;
- WIDGET (help_bar)->x -= wh->x;
-
- md = mousedispatch_new (1, 1, help_lines, HELP_WINDOW_WIDTH - 2);
+ help_bar = buttonbar_new ();
+ WIDGET (help_bar)->rect.y -= wh->rect.y;
+ WIDGET (help_bar)->rect.x -= wh->rect.x;
+
+ r.lines = help_lines;
+ r.cols = HELP_WINDOW_WIDTH - 2;
+ md = mousedispatch_new (&r);
group_add_widget (g, md);
- group_add_widget (g, help_bar);
+ group_add_widget (g, help_bar); /* FIXME */
buttonbar_set_label (help_bar, 1, Q_ ("ButtonBar|Help"), wh->keymap, NULL);
buttonbar_set_label (help_bar, 2, Q_ ("ButtonBar|Index"), wh->keymap, NULL);
@@ -1175,7 +1173,7 @@
dlg_run (whelp);
interactive_display_finish ();
- dlg_destroy (whelp);
+ widget_destroy (wh);
return TRUE;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/history.h
^
|
@@ -26,6 +26,8 @@
#define MC_HISTORY_FM_TREE_MOVE "mc.fm.tree-move"
#define MC_HISTORY_FM_PANELIZE_ADD "mc.fm.panelize.add"
#define MC_HISTORY_FM_FILTERED_VIEW "mc.fm.filtered-view"
+#define MC_HISTORY_FM_PANEL_SELECT ":select_cmd: Select "
+#define MC_HISTORY_FM_PANEL_UNSELECT ":select_cmd: Unselect "
#define MC_HISTORY_FM_PANEL_FILTER "mc.fm.panel-filter"
#define MC_HISTORY_FM_MENU_EXEC_PARAM "mc.fm.menu.exec.parameter"
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/keymap.c
^
|
@@ -0,0 +1,989 @@
+/*
+ Default values and initialization of keybinding engine
+
+ Copyright (C) 2009-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Vitja Makarov, 2005
+ Ilia Maslakov <il.smind@gmail.com>, 2009, 2010
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2021
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "lib/global.h"
+
+#include "lib/fileloc.h"
+#include "lib/keybind.h"
+#include "lib/mcconfig.h" /* mc_config_t */
+#include "lib/util.h"
+#include "lib/widget.h" /* dialog_map, input_map, listbox_map, menu_map, radio_map */
+
+#include "args.h" /* mc_args__keymap_file */
+
+#include "keymap.h"
+
+/*** global variables ****************************************************************************/
+
+GArray *filemanager_keymap = NULL;
+GArray *filemanager_x_keymap = NULL;
+GArray *panel_keymap = NULL;
+GArray *dialog_keymap = NULL;
+GArray *menu_keymap = NULL;
+GArray *input_keymap = NULL;
+GArray *listbox_keymap = NULL;
+GArray *radio_keymap = NULL;
+GArray *tree_keymap = NULL;
+GArray *help_keymap = NULL;
+#ifdef ENABLE_EXT2FS_ATTR
+GArray *chattr_keymap = NULL;
+#endif
+#ifdef USE_INTERNAL_EDIT
+GArray *editor_keymap = NULL;
+GArray *editor_x_keymap = NULL;
+#endif
+GArray *viewer_keymap = NULL;
+GArray *viewer_hex_keymap = NULL;
+#ifdef USE_DIFF_VIEW
+GArray *diff_keymap = NULL;
+#endif
+
+const global_keymap_t *filemanager_map = NULL;
+const global_keymap_t *filemanager_x_map = NULL;
+const global_keymap_t *panel_map = NULL;
+const global_keymap_t *tree_map = NULL;
+const global_keymap_t *help_map = NULL;
+#ifdef ENABLE_EXT2FS_ATTR
+const global_keymap_t *chattr_map = NULL;
+#endif
+#ifdef USE_INTERNAL_EDIT
+const global_keymap_t *editor_map = NULL;
+const global_keymap_t *editor_x_map = NULL;
+#endif
+const global_keymap_t *viewer_map = NULL;
+const global_keymap_t *viewer_hex_map = NULL;
+#ifdef USE_DIFF_VIEW
+const global_keymap_t *diff_map = NULL;
+#endif
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/* default keymaps in ini (key=value) format */
+typedef struct global_keymap_ini_t
+{
+ const char *key;
+ const char *value;
+} global_keymap_ini_t;
+
+/*** file scope variables ************************************************************************/
+
+/* midnight */
+static const global_keymap_ini_t default_filemanager_keymap[] = {
+ {"ChangePanel", "tab; ctrl-i"},
+ {"Help", "f1"},
+ {"UserMenu", "f2"},
+ {"View", "f3"},
+ {"Edit", "f4"},
+ {"Copy", "f5"},
+ {"Move", "f6"},
+ {"MakeDir", "f7"},
+ {"Delete", "f8"},
+ {"Menu", "f9"},
+ {"Quit", "f10"},
+ {"MenuLastSelected", "f19"},
+ {"QuitQuiet", "f20"},
+ {"History", "alt-h"},
+ {"EditorViewerHistory", "alt-shift-e"},
+ {"DirSize", "ctrl-space"},
+ /* Copy useful information to the command line */
+ {"PutCurrentPath", "alt-a"},
+ {"PutOtherPath", "alt-shift-a"},
+ {"PutCurrentSelected", "alt-enter; ctrl-enter"},
+ {"PutCurrentFullSelected", "ctrl-shift-enter"},
+ {"CdQuick", "alt-c"},
+ /* To access the directory hotlist */
+ {"HotList", "ctrl-backslash"},
+ /* Suspend */
+ {"Suspend", "ctrl-z"},
+ /* The filtered view command */
+ {"ViewFiltered", "alt-exclamation"},
+ /* Find file */
+ {"Find", "alt-question"},
+ /* Panel refresh */
+ {"Reread", "ctrl-r"},
+ /* Switch listing between long, user defined and full formats */
+ /* Swap panels */
+ {"Swap", "ctrl-u"},
+ /* Resize panels */
+ {"SplitEqual", "alt-equal"},
+ {"SplitMore", "alt-shift-right"},
+ {"SplitLess", "alt-shift-left"},
+ /* View output */
+ {"Shell", "ctrl-o"},
+ {"ShowHidden", "alt-dot"},
+ {"SplitVertHoriz", "alt-comma"},
+ {"ExtendedKeyMap", "ctrl-x"},
+ /* Select/unselect group */
+ {"Select", "kpplus"},
+ {"Unselect", "kpminus"},
+ {"SelectInvert", "kpasterisk"},
+ /* List of screens */
+ {"ScreenList", "alt-prime"},
+ {NULL, NULL}
+};
+
+static const global_keymap_ini_t default_filemanager_x_keymap[] = {
+ {"CompareDirs", "d"},
+#ifdef USE_DIFF_VIEW
+ {"CompareFiles", "ctrl-d"},
+#endif /* USE_DIFF_VIEW */
+#ifdef ENABLE_VFS
+ {"VfsList", "a"},
+#endif /* ENABLE_VFS */
+ {"PutCurrentPath", "p"},
+ {"PutOtherPath", "ctrl-p"},
+ {"PutCurrentTagged", "t"},
+ {"PutOtherTagged", "ctrl-t"},
+ {"ChangeMode", "c"},
+ {"ChangeOwn", "o"},
+#ifdef ENABLE_EXT2FS_ATTR
+ {"ChangeAttributes", "e"},
+#endif /* ENABLE_EXT2FS_ATTR */
+ {"PutCurrentLink", "r"},
+ {"PutOtherLink", "ctrl-r"},
+ {"Link", "l"},
+ {"LinkSymbolic", "s"},
+ {"LinkSymbolicRelative", "v"},
+ {"LinkSymbolicEdit", "ctrl-s"},
+ {"PanelInfo", "i"},
+ {"PanelQuickView", "q"},
+ {"HotListAdd", "h"},
+#ifdef ENABLE_BACKGROUND
+ {"Jobs", "j"},
+#endif /* ENABLE_BACKGROUND */
+ {"ExternalPanelize", "!"},
+ {NULL, NULL}
+};
+
+/* panel */
+static const global_keymap_ini_t default_panel_keymap[] = {
+ {"CycleListingFormat", "alt-t"},
+ {"PanelOtherCd", "alt-o"},
+ {"PanelOtherCdLink", "alt-l"},
+ {"CopySingle", "f15"},
+ {"DeleteSingle", "f18"},
+ {"Enter", "enter"},
+ {"EditNew", "f14"},
+ {"MoveSingle", "f16"},
+ {"SelectInvert", "alt-asterisk"},
+ {"Select", "alt-plus"},
+ {"Unselect", "alt-minus"},
+ {"ViewRaw", "f13"},
+ {"CdChild", "ctrl-pgdn"},
+ {"CdParent", "ctrl-pgup"},
+ {"History", "alt-shift-h"},
+ {"HistoryNext", "alt-u"},
+ {"HistoryPrev", "alt-y"},
+ {"BottomOnScreen", "alt-j"},
+ {"MiddleOnScreen", "alt-r"},
+ {"TopOnScreen", "alt-g"},
+ {"Mark", "insert; ctrl-t"},
+ {"MarkDown", "shift-down"},
+ {"MarkUp", "shift-up"},
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"Left", "left"},
+ {"Right", "right"},
+ {"Top", "alt-lt; home; a1"},
+ {"Bottom", "alt-gt; end; c1"},
+ {"PageDown", "pgdn; ctrl-v"},
+ {"PageUp", "pgup; alt-v"},
+#ifdef HAVE_CHARSET
+ {"SelectCodepage", "alt-e"},
+#endif
+ {"Search", "ctrl-s; alt-s"},
+ {"PanelOtherSync", "alt-i"},
+ {NULL, NULL}
+};
+
+/* dialog */
+static const global_keymap_ini_t default_dialog_keymap[] = {
+ {"Ok", "enter"},
+ {"Cancel", "f10; esc; ctrl-g"},
+ {"Up", "up; left"},
+ {"Down", "down; right"},
+#if 0
+ {"Left", "up; left"},
+ {"Right", "down; right"},
+#endif
+ {"Help", "f1"},
+ {"Suspend", "ctrl-z"},
+ {"Refresh", "ctrl-l"},
+ {"ScreenList", "alt-prime"},
+ {"ScreenNext", "alt-rbrace"},
+ {"ScreenPrev", "alt-lbrace"},
+ {NULL, NULL}
+};
+
+/* menubar */
+static const global_keymap_ini_t default_menu_keymap[] = {
+ {"Help", "f1"},
+ {"Left", "left; ctrl-b"},
+ {"Right", "right; ctrl-f"},
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"Home", "home; alt-lt; ctrl-a"},
+ {"End", "end; alt-gt; ctrl-e"},
+ {"Enter", "enter"},
+ {"Quit", "f10; ctrl-g; esc"},
+ {NULL, NULL}
+};
+
+/* input line */
+static const global_keymap_ini_t default_input_keymap[] = {
+ /* Motion */
+ {"Home", "ctrl-a; alt-lt; home; a1"},
+ {"End", "ctrl-e; alt-gt; end; c1"},
+ {"Left", "left; alt-left; ctrl-b"},
+ {"Right", "right; alt-right; ctrl-f"},
+ {"WordLeft", "ctrl-left; alt-b"},
+ {"WordRight", "ctrl-right; alt-f"},
+ /* Mark */
+ {"MarkLeft", "shift-left"},
+ {"MarkRight", "shift-right"},
+ {"MarkToWordBegin", "ctrl-shift-left"},
+ {"MarkToWordEnd", "ctrl-shift-right"},
+ {"MarkToHome", "shift-home"},
+ {"MarkToEnd", "shift-end"},
+ /* Editing */
+ {"Backspace", "backspace; ctrl-h"},
+ {"Delete", "delete; ctrl-d"},
+ {"DeleteToWordEnd", "alt-d"},
+ {"DeleteToWordBegin", "alt-backspace"},
+ /* Region manipulation */
+ {"Remove", "ctrl-w"},
+ {"Store", "alt-w"},
+ {"Yank", "ctrl-y"},
+ {"DeleteToEnd", "ctrl-k"},
+ /* History */
+ {"History", "alt-h"},
+ {"HistoryPrev", "alt-p; ctrl-down"},
+ {"HistoryNext", "alt-n; ctrl-up"},
+ /* Completion */
+ {"Complete", "alt-tab"},
+ {NULL, NULL}
+};
+
+/* listbox */
+static const global_keymap_ini_t default_listbox_keymap[] = {
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"Top", "home; alt-lt; a1"},
+ {"Bottom", "end; alt-gt; c1"},
+ {"PageUp", "pgup; alt-v"},
+ {"PageDown", "pgdn; ctrl-v"},
+ {"Delete", "delete; d"},
+ {"Clear", "shift-delete; shift-d"},
+ {"View", "f3"},
+ {"Edit", "f4"},
+ {"Enter", "enter"},
+ {NULL, NULL}
+};
+
+/* radio */
+static const global_keymap_ini_t default_radio_keymap[] = {
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"Top", "home; alt-lt; a1"},
+ {"Bottom", "end; alt-gt; c1"},
+ {"Select", "space"},
+ {NULL, NULL}
+};
+
+/* tree */
+static const global_keymap_ini_t default_tree_keymap[] = {
+ {"Help", "f1"},
+ {"Rescan", "f2; ctrl-r"},
+ {"Forget", "f3"},
+ {"ToggleNavigation", "f4"},
+ {"Copy", "f5"},
+ {"Move", "f6"},
+#if 0
+ {"MakeDir", "f7"},
+#endif
+ {"Delete", "f8; delete"},
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"Left", "left"},
+ {"Right", "right"},
+ {"Top", "home; alt-lt; a1"},
+ {"Bottom", "end; alt-gt; c1"},
+ {"PageUp", "pgup; alt-v"},
+ {"PageDown", "pgdn; ctrl-v"},
+ {"Enter", "enter"},
+ {"Search", "ctrl-s; alt-s"},
+ {NULL, NULL}
+};
+
+/* help */
+static const global_keymap_ini_t default_help_keymap[] = {
+ {"Help", "f1"},
+ {"Index", "f2; c"},
+ {"Back", "f3; left; l"},
+ {"Quit", "f10; esc"},
+ {"Up", "up; ctrl-p"},
+ {"Down", "down; ctrl-n"},
+ {"PageDown", "f; space; pgdn; ctrl-v"},
+ {"PageUp", "b; pgup; alt-v; backspace"},
+ {"HalfPageDown", "d"},
+ {"HalfPageUp", "u"},
+ {"Top", "home; ctrl-home; ctrl-pgup; a1; alt-lt; g"},
+ {"Bottom", "end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
+ {"Enter", "right; enter"},
+ {"LinkNext", "tab"},
+ {"LinkPrev", "alt-tab"},
+ {"NodeNext", "n"},
+ {"NodePrev", "p"},
+ {NULL, NULL}
+};
+
+#ifdef ENABLE_EXT2FS_ATTR
+/* chattr dialog */
+static const global_keymap_ini_t default_chattr_keymap[] = {
+ {"Up", "up; left; ctrl-p"},
+ {"Down", "down; right; ctrl-n"},
+ {"Top", "home; alt-lt; a1"},
+ {"Bottom", "end; alt-gt; c1"},
+ {"PageUp", "pgup; alt-v"},
+ {"PageDown", "pgdn; ctrl-v"},
+ {"Mark", "t; shift-t"},
+ {"MarkAndDown", "insert"},
+ {NULL, NULL}
+};
+#endif /* ENABLE_EXT2FS_ATTR */
+
+#ifdef USE_INTERNAL_EDIT
+static const global_keymap_ini_t default_editor_keymap[] = {
+ {"Enter", "enter"},
+ {"Return", "shift-enter; ctrl-enter; ctrl-shift-enter"}, /* useful for pasting multiline text */
+ {"Tab", "tab; shift-tab; ctrl-tab; ctrl-shift-tab"}, /* ditto */
+ {"BackSpace", "backspace; ctrl-h"},
+ {"Delete", "delete; ctrl-d"},
+ {"Left", "left"},
+ {"Right", "right"},
+ {"Up", "up"},
+ {"Down", "down"},
+ {"Home", "home"},
+ {"End", "end"},
+ {"PageUp", "pgup"},
+ {"PageDown", "pgdn"},
+ {"WordLeft", "ctrl-left; ctrl-z"},
+ {"WordRight", "ctrl-right; ctrl-x"},
+ {"InsertOverwrite", "insert"},
+ {"Help", "f1"},
+ {"Save", "f2"},
+ {"Mark", "f3"},
+ {"Replace", "f4"},
+ {"Copy", "f5"},
+ {"Move", "f6"},
+ {"Search", "f7"},
+ {"Remove", "f8; ctrl-delete"},
+ {"Menu", "f9"},
+ {"Quit", "f10; esc"},
+ {"UserMenu", "f11"},
+ {"SaveAs", "f12; ctrl-f2"},
+ {"MarkColumn", "f13"},
+ {"ReplaceContinue", "f14; ctrl-f4"},
+ {"InsertFile", "f15"},
+ {"SearchContinue", "f17; ctrl-f7"},
+ {"EditNew", "ctrl-n"},
+ {"DeleteToWordBegin", "alt-backspace"},
+ {"DeleteToWordEnd", "alt-d"},
+ {"DeleteLine", "ctrl-y"},
+ {"DeleteToEnd", "ctrl-k"},
+ {"Undo", "ctrl-u; ctrl-backspace"},
+ {"Redo", "alt-r"},
+#ifdef HAVE_CHARSET
+ {"SelectCodepage", "alt-e"},
+#endif
+ {"Goto", "alt-l; alt-shift-l"},
+ {"Refresh", "ctrl-l"},
+ {"Shell", "ctrl-o"},
+ {"Top", "ctrl-home; ctrl-pgup; alt-lt"},
+ {"Bottom", "ctrl-end; ctrl-pgdn; alt-gt"},
+ {"TopOnScreen", "ctrl-pgup"},
+ {"BottomOnScreen", "ctrl-pgdn"},
+ {"ScrollUp", "ctrl-up"},
+ {"ScrollDown", "ctrl-down"},
+ {"Store", "ctrl-insert"},
+ {"Paste", "shift-insert"},
+ {"Cut", "shift-delete"},
+ {"BlockSave", "ctrl-f"},
+ {"MarkLeft", "shift-left"},
+ {"MarkRight", "shift-right"},
+ {"MarkUp", "shift-up"},
+ {"MarkDown", "shift-down"},
+ {"MarkPageUp", "shift-pgup"},
+ {"MarkPageDown", "shift-pgdn"},
+ {"MarkToWordBegin", "ctrl-shift-left"},
+ {"MarkToWordEnd", "ctrl-shift-right"},
+ {"MarkToHome", "shift-home"},
+ {"MarkToEnd", "shift-end"},
+ {"MarkToFileBegin", "ctrl-shift-home"},
+ {"MarkToFileEnd", "ctrl-shift-end"},
+ {"MarkToPageBegin", "ctrl-shift-pgup"},
+ {"MarkToPageEnd", "ctrl-shift-pgdn"},
+ {"MarkScrollUp", "ctrl-shift-up"},
+ {"MarkScrollDown", "ctrl-shift-down"},
+ {"MarkColumnLeft", "alt-left"},
+ {"MarkColumnRight", "alt-right"},
+ {"MarkColumnUp", "alt-up"},
+ {"MarkColumnDown", "alt-down"},
+ {"MarkColumnPageUp", "alt-pgup"},
+ {"MarkColumnPageDown", "alt-pgdn"},
+ {"InsertLiteral", "ctrl-q"},
+ {"Complete", "alt-tab"},
+ {"MatchBracket", "alt-b"},
+ {"ParagraphFormat", "alt-p"},
+ {"Bookmark", "alt-k"},
+ {"BookmarkFlush", "alt-o"},
+ {"BookmarkNext", "alt-j"},
+ {"BookmarkPrev", "alt-i"},
+ {"MacroStartStopRecord", "ctrl-r"},
+ {"MacroExecute", "ctrl-a"},
+ {"ShowNumbers", "alt-n"},
+ {"ShowTabTws", "alt-underline"},
+ {"SyntaxOnOff", "ctrl-s"},
+ {"Find", "alt-enter"},
+ {"FilePrev", "alt-minus"},
+ {"FileNext", "alt-plus"},
+ {"Sort", "alt-t"},
+ {"Mail", "alt-m"},
+ {"ExternalCommand", "alt-u"},
+#ifdef HAVE_ASPELL
+ {"SpellCheckCurrentWord", "ctrl-p"},
+#endif
+ {"ExtendedKeyMap", "ctrl-x"},
+ {NULL, NULL}
+};
+
+/* emacs keyboard layout emulation */
+static const global_keymap_ini_t default_editor_x_keymap[] = {
+ {NULL, NULL}
+};
+#endif /* USE_INTERNAL_EDIT */
+
+/* viewer */
+static const global_keymap_ini_t default_viewer_keymap[] = {
+ {"Help", "f1"},
+ {"WrapMode", "f2"},
+ {"Quit", "f3; f10; q; esc"},
+ {"HexMode", "f4"},
+ {"Goto", "f5"},
+ {"Search", "f7"},
+ {"SearchContinue", "f17; n"},
+ {"MagicMode", "f8"},
+ {"NroffMode", "f9"},
+ {"Home", "ctrl-a"},
+ {"End", "ctrl-e"},
+ {"Left", "h; left"},
+ {"Right", "l; right"},
+ {"LeftQuick", "ctrl-left"},
+ {"RightQuick", "ctrl-right"},
+ {"Up", "k; y; insert; up; ctrl-p"},
+ {"Down", "j; e; delete; down; enter; ctrl-n"},
+ {"PageDown", "f; space; pgdn; ctrl-v"},
+ {"PageUp", "b; pgup; alt-v; backspace"},
+ {"HalfPageDown", "d"},
+ {"HalfPageUp", "u"},
+ {"Top", "home; ctrl-home; ctrl-pgup; a1; alt-lt; g"},
+ {"Bottom", "end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
+ {"BookmarkGoto", "m"},
+ {"Bookmark", "r"},
+ {"FileNext", "ctrl-f"},
+ {"FilePrev", "ctrl-b"},
+#ifdef HAVE_CHARSET
+ {"SelectCodepage", "alt-e"},
+#endif
+ {"Shell", "ctrl-o"},
+ {"Ruler", "alt-r"},
+ {"SearchForward", "slash"},
+ {"SearchBackward", "question"},
+ {"SearchForwardContinue", "ctrl-s"},
+ {"SearchBackwardContinue", "ctrl-r"},
+ {"SearchOppositeContinue", "shift-n"},
+ {"History", "alt-shift-e"},
+ {NULL, NULL}
+};
+
+/* hex viewer */
+static const global_keymap_ini_t default_viewer_hex_keymap[] = {
+ {"Help", "f1"},
+ {"HexEditMode", "f2"},
+ {"Quit", "f3; f10; q; esc"},
+ {"HexMode", "f4"},
+ {"Goto", "f5"},
+ {"Save", "f6"},
+ {"Search", "f7"},
+ {"SearchContinue", "f17; n"},
+ {"MagicMode", "f8"},
+ {"NroffMode", "f9"},
+ {"ToggleNavigation", "tab"},
+ {"Home", "ctrl-a; home"},
+ {"End", "ctrl-e; end"},
+ {"Left", "b; left"},
+ {"Right", "f; right"},
+ {"Up", "k; y; up"},
+ {"Down", "j; delete; down"},
+ {"PageDown", "pgdn; ctrl-v"},
+ {"PageUp", "pgup; alt-v"},
+ {"Top", "ctrl-home; ctrl-pgup; a1; alt-lt; g"},
+ {"Bottom", "ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g"},
+#ifdef HAVE_CHARSET
+ {"SelectCodepage", "alt-e"},
+#endif
+ {"Shell", "ctrl-o"},
+ {"SearchForward", "slash"},
+ {"SearchBackward", "question"},
+ {"SearchForwardContinue", "ctrl-s"},
+ {"SearchBackwardContinue", "ctrl-r"},
+ {"SearchOppositeContinue", "shift-n"},
+ {"History", "alt-shift-e"},
+ {NULL, NULL}
+};
+
+#ifdef USE_DIFF_VIEW
+/* diff viewer */
+static const global_keymap_ini_t default_diff_keymap[] = {
+ {"ShowSymbols", "alt-s; s"},
+ {"ShowNumbers", "alt-n; l"},
+ {"SplitFull", "f"},
+ {"SplitEqual", "equal"},
+ {"SplitMore", "gt"},
+ {"SplitLess", "lt"},
+ {"Tab2", "2"},
+ {"Tab3", "3"},
+ {"Tab4", "4"},
+ {"Tab8", "8"},
+ {"Swap", "ctrl-u"},
+ {"Redo", "ctrl-r"},
+ {"HunkNext", "n; enter; space"},
+ {"HunkPrev", "p; backspace"},
+ {"Goto", "g; shift-g"},
+ {"Save", "f2"},
+ {"Edit", "f4"},
+ {"EditOther", "f14"},
+ {"Merge", "f5"},
+ {"MergeOther", "f15"},
+ {"Search", "f7"},
+ {"SearchContinue", "f17"},
+ {"Options", "f9"},
+ {"Top", "ctrl-home"},
+ {"Bottom", "ctrl-end"},
+ {"Down", "down"},
+ {"Up", "up"},
+ {"LeftQuick", "ctrl-left"},
+ {"RightQuick", "ctrl-right"},
+ {"Left", "left"},
+ {"Right", "right"},
+ {"PageDown", "pgdn"},
+ {"PageUp", "pgup"},
+ {"Home", "home"},
+ {"End", "end"},
+ {"Help", "f1"},
+ {"Quit", "f10; q; shift-q; esc"},
+#ifdef HAVE_CHARSET
+ {"SelectCodepage", "alt-e"},
+#endif
+ {"Shell", "ctrl-o"},
+ {NULL, NULL}
+};
+#endif
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/*** file scope variables ************************************************************************/
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+create_default_keymap_section (mc_config_t * keymap, const char *section,
+ const global_keymap_ini_t * k)
+{
+ size_t i;
+
+ for (i = 0; k[i].key != NULL; i++)
+ mc_config_set_string_raw (keymap, section, k[i].key, k[i].value);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static mc_config_t *
+create_default_keymap (void)
+{
+ mc_config_t *keymap;
+
+ keymap = mc_config_init (NULL, TRUE);
+
+ create_default_keymap_section (keymap, KEYMAP_SECTION_FILEMANAGER, default_filemanager_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_FILEMANAGER_EXT,
+ default_filemanager_x_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_PANEL, default_panel_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_DIALOG, default_dialog_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_MENU, default_menu_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_INPUT, default_input_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_LISTBOX, default_listbox_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_RADIO, default_radio_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_TREE, default_tree_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_HELP, default_help_keymap);
+#ifdef ENABLE_EXT2FS_ATTR
+ create_default_keymap_section (keymap, KEYMAP_SECTION_HELP, default_chattr_keymap);
+#endif
+#ifdef USE_INTERNAL_EDIT
+ create_default_keymap_section (keymap, KEYMAP_SECTION_EDITOR, default_editor_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_EDITOR_EXT, default_editor_x_keymap);
+#endif
+ create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER, default_viewer_keymap);
+ create_default_keymap_section (keymap, KEYMAP_SECTION_VIEWER_HEX, default_viewer_hex_keymap);
+#ifdef USE_DIFF_VIEW
+ create_default_keymap_section (keymap, KEYMAP_SECTION_DIFFVIEWER, default_diff_keymap);
+#endif
+
+ return keymap;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+load_keymap_from_section (const char *section_name, GArray * keymap, mc_config_t * cfg)
+{
+ gchar **profile_keys, **keys;
+
+ if (section_name == NULL)
+ return;
+
+ keys = mc_config_get_keys (cfg, section_name, NULL);
+
+ for (profile_keys = keys; *profile_keys != NULL; profile_keys++)
+ {
+ gchar **values;
+
+ values = mc_config_get_string_list (cfg, section_name, *profile_keys, NULL);
+ if (values != NULL)
+ {
+ long action;
+
+ action = keybind_lookup_action (*profile_keys);
+ if (action > 0)
+ {
+ gchar **curr_values;
+
+ for (curr_values = values; *curr_values != NULL; curr_values++)
+ keybind_cmd_bind (keymap, *curr_values, action);
+ }
+
+ g_strfreev (values);
+ }
+ }
+
+ g_strfreev (keys);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Get name of config file.
+ *
+ * @param subdir If not NULL, config is also searched in specified subdir.
+ * @param config_file_name If relative, file if searched in standard paths.
+ *
+ * @return newly allocated string with config name or NULL if file is not found.
+ */
+
+static char *
+load_setup_get_full_config_name (const char *subdir, const char *config_file_name)
+{
+ /*
+ TODO: IMHO, in future, this function shall be placed in mcconfig module.
+ */
+ char *lc_basename, *ret;
+ char *file_name;
+
+ if (config_file_name == NULL)
+ return NULL;
+
+ /* check for .keymap suffix */
+ if (g_str_has_suffix (config_file_name, ".keymap"))
+ file_name = g_strdup (config_file_name);
+ else
+ file_name = g_strconcat (config_file_name, ".keymap", (char *) NULL);
+
+ canonicalize_pathname (file_name);
+
+ if (g_path_is_absolute (file_name))
+ return file_name;
+
+ lc_basename = g_path_get_basename (file_name);
+ g_free (file_name);
+
+ if (lc_basename == NULL)
+ return NULL;
+
+ if (subdir != NULL)
+ ret = g_build_filename (mc_config_get_path (), subdir, lc_basename, (char *) NULL);
+ else
+ ret = g_build_filename (mc_config_get_path (), lc_basename, (char *) NULL);
+
+ if (exist_file (ret))
+ {
+ g_free (lc_basename);
+ canonicalize_pathname (ret);
+ return ret;
+ }
+ g_free (ret);
+
+ if (subdir != NULL)
+ ret = g_build_filename (mc_global.share_data_dir, subdir, lc_basename, (char *) NULL);
+ else
+ ret = g_build_filename (mc_global.share_data_dir, lc_basename, (char *) NULL);
+
+ g_free (lc_basename);
+
+ if (exist_file (ret))
+ {
+ canonicalize_pathname (ret);
+ return ret;
+ }
+
+ g_free (ret);
+ return NULL;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ Create new mc_config object from specified ini-file or
+ append data to existing mc_config object from ini-file
+*/
+
+static void
+load_setup_init_config_from_file (mc_config_t ** config, const char *fname, gboolean read_only)
+{
+ /*
+ TODO: IMHO, in future, this function shall be placed in mcconfig module.
+ */
+ if (exist_file (fname))
+ {
+ if (*config != NULL)
+ mc_config_read_file (*config, fname, read_only, TRUE);
+ else
+ *config = mc_config_init (fname, read_only);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static mc_config_t *
+load_setup_get_keymap_profile_config (gboolean load_from_file)
+{
+ /*
+ TODO: IMHO, in future, this function shall be placed in mcconfig module.
+ */
+ mc_config_t *keymap_config;
+ char *share_keymap, *sysconfig_keymap;
+ char *fname, *fname2;
+
+ /* 0) Create default keymap */
+ keymap_config = create_default_keymap ();
+ if (!load_from_file)
+ return keymap_config;
+
+ /* load and merge global keymaps */
+
+ /* 1) /usr/share/mc (mc_global.share_data_dir) */
+ share_keymap = g_build_filename (mc_global.share_data_dir, GLOBAL_KEYMAP_FILE, (char *) NULL);
+ load_setup_init_config_from_file (&keymap_config, share_keymap, TRUE);
+
+ /* 2) /etc/mc (mc_global.sysconfig_dir) */
+ sysconfig_keymap =
+ g_build_filename (mc_global.sysconfig_dir, GLOBAL_KEYMAP_FILE, (char *) NULL);
+ load_setup_init_config_from_file (&keymap_config, sysconfig_keymap, TRUE);
+
+ /* then load and merge one of user-defined keymap */
+
+ /* 3) --keymap=<keymap> */
+ fname = load_setup_get_full_config_name (NULL, mc_args__keymap_file);
+ if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
+ {
+ load_setup_init_config_from_file (&keymap_config, fname, TRUE);
+ goto done;
+ }
+ g_free (fname);
+
+ /* 4) getenv("MC_KEYMAP") */
+ fname = load_setup_get_full_config_name (NULL, g_getenv ("MC_KEYMAP"));
+ if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
+ {
+ load_setup_init_config_from_file (&keymap_config, fname, TRUE);
+ goto done;
+ }
+
+ MC_PTR_FREE (fname);
+
+ /* 5) main config; [Midnight Commander] -> keymap */
+ fname2 = mc_config_get_string (mc_global.main_config, CONFIG_APP_SECTION, "keymap", NULL);
+ if (fname2 != NULL && *fname2 != '\0')
+ fname = load_setup_get_full_config_name (NULL, fname2);
+ g_free (fname2);
+ if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
+ {
+ load_setup_init_config_from_file (&keymap_config, fname, TRUE);
+ goto done;
+ }
+ g_free (fname);
+
+ /* 6) ${XDG_CONFIG_HOME}/mc/mc.keymap */
+ fname = mc_config_get_full_path (GLOBAL_KEYMAP_FILE);
+ load_setup_init_config_from_file (&keymap_config, fname, TRUE);
+
+ done:
+ g_free (fname);
+ g_free (sysconfig_keymap);
+ g_free (share_keymap);
+
+ return keymap_config;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+void
+keymap_load (gboolean load_from_file)
+{
+ /*
+ * Load keymap from GLOBAL_KEYMAP_FILE before ${XDG_CONFIG_HOME}/mc/mc.keymap, so that the user
+ * definitions override global settings.
+ */
+ mc_config_t *mc_global_keymap;
+
+ mc_global_keymap = load_setup_get_keymap_profile_config (load_from_file);
+
+ if (mc_global_keymap != NULL)
+ {
+#define LOAD_KEYMAP(s,km) \
+ km##_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t)); \
+ load_keymap_from_section (KEYMAP_SECTION_##s, km##_keymap, mc_global_keymap)
+
+ LOAD_KEYMAP (FILEMANAGER, filemanager);
+ LOAD_KEYMAP (FILEMANAGER_EXT, filemanager_x);
+ LOAD_KEYMAP (PANEL, panel);
+ LOAD_KEYMAP (DIALOG, dialog);
+ LOAD_KEYMAP (MENU, menu);
+ LOAD_KEYMAP (INPUT, input);
+ LOAD_KEYMAP (LISTBOX, listbox);
+ LOAD_KEYMAP (RADIO, radio);
+ LOAD_KEYMAP (TREE, tree);
+ LOAD_KEYMAP (HELP, help);
+#ifdef ENABLE_EXT2FS_ATTR
+ LOAD_KEYMAP (CHATTR, chattr);
+#endif
+#ifdef USE_INTERNAL_EDIT
+ LOAD_KEYMAP (EDITOR, editor);
+ LOAD_KEYMAP (EDITOR_EXT, editor_x);
+#endif
+ LOAD_KEYMAP (VIEWER, viewer);
+ LOAD_KEYMAP (VIEWER_HEX, viewer_hex);
+#ifdef USE_DIFF_VIEW
+ LOAD_KEYMAP (DIFFVIEWER, diff);
+#endif
+
+#undef LOAD_KEYMAP
+ mc_config_deinit (mc_global_keymap);
+ }
+
+#define SET_MAP(m) \
+ m##_map = (global_keymap_t *) m##_keymap->data
+
+ SET_MAP (filemanager);
+ SET_MAP (filemanager_x);
+ SET_MAP (panel);
+ SET_MAP (dialog);
+ SET_MAP (menu);
+ SET_MAP (input);
+ SET_MAP (listbox);
+ SET_MAP (radio);
+ SET_MAP (tree);
+ SET_MAP (help);
+#ifdef ENABLE_EXT2FS_ATTR
+ SET_MAP (chattr);
+#endif
+#ifdef USE_INTERNAL_EDIT
+ SET_MAP (editor);
+ SET_MAP (editor_x);
+#endif
+ SET_MAP (viewer);
+ SET_MAP (viewer_hex);
+#ifdef USE_DIFF_VIEW
+ SET_MAP (diff);
+#endif
+
+#undef SET_MAP
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+keymap_free (void)
+{
+#define FREE_KEYMAP(km) \
+ if (km##_keymap != NULL) \
+ g_array_free (km##_keymap, TRUE)
+
+ FREE_KEYMAP (filemanager);
+ FREE_KEYMAP (filemanager_x);
+ FREE_KEYMAP (panel);
+ FREE_KEYMAP (dialog);
+ FREE_KEYMAP (menu);
+ FREE_KEYMAP (input);
+ FREE_KEYMAP (listbox);
+ FREE_KEYMAP (radio);
+ FREE_KEYMAP (tree);
+ FREE_KEYMAP (help);
+#ifdef ENABLE_EXT2FS_ATTR
+ FREE_KEYMAP (chattr);
+#endif
+#ifdef USE_INTERNAL_EDIT
+ FREE_KEYMAP (editor);
+ FREE_KEYMAP (editor_x);
+#endif
+ FREE_KEYMAP (viewer);
+ FREE_KEYMAP (viewer_hex);
+#ifdef USE_DIFF_VIEW
+ FREE_KEYMAP (diff);
+#endif
+
+#undef FREE_KEYMAP
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/keymap.h
^
|
@@ -0,0 +1,64 @@
+#ifndef MC__KEYBIND_DEFAULTS_H
+#define MC__KEYBIND_DEFAULTS_H
+
+#include "lib/global.h"
+#include "lib/keybind.h" /* global_keymap_t */
+#include "lib/mcconfig.h" /* mc_config_t */
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/*** enums ***************************************************************************************/
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+/*** global variables defined in .c file *********************************************************/
+
+extern GArray *filemanager_keymap;
+extern GArray *filemanager_x_keymap;
+extern GArray *panel_keymap;
+extern GArray *dialog_keymap;
+extern GArray *menu_keymap;
+extern GArray *input_keymap;
+extern GArray *listbox_keymap;
+extern GArray *radio_keymap;
+extern GArray *tree_keymap;
+extern GArray *help_keymap;
+#ifdef ENABLE_EXT2FS_ATTR
+extern GArray *chattr_keymap;
+#endif
+#ifdef USE_INTERNAL_EDIT
+extern GArray *editor_keymap;
+extern GArray *editor_x_keymap;
+#endif
+extern GArray *viewer_keymap;
+extern GArray *viewer_hex_keymap;
+#ifdef USE_DIFF_VIEW
+extern GArray *diff_keymap;
+#endif
+
+extern const global_keymap_t *filemanager_map;
+extern const global_keymap_t *filemanager_x_map;
+extern const global_keymap_t *panel_map;
+extern const global_keymap_t *tree_map;
+extern const global_keymap_t *help_map;
+#ifdef ENABLE_EXT2FS_ATTR
+extern const global_keymap_t *chattr_map;
+#endif
+#ifdef USE_INTERNAL_EDIT
+extern const global_keymap_t *editor_map;
+extern const global_keymap_t *editor_x_map;
+#endif
+extern const global_keymap_t *viewer_map;
+extern const global_keymap_t *viewer_hex_map;
+#ifdef USE_DIFF_VIEW
+extern const global_keymap_t *diff_map;
+#endif
+
+/*** declarations of public functions ************************************************************/
+
+void keymap_load (gboolean load_from_file);
+void keymap_free (void);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__KEYBIND_DEFAULTS_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/learn.c
^
|
@@ -1,7 +1,7 @@
/*
Learn keys
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -105,7 +105,7 @@
*/
gboolean seq_ok = FALSE;
- if (*seq != '\0' && strcmp (seq, "\\e") != 0 && strcmp (seq, "\\e\\e") != 0
+ if (strcmp (seq, "\\e") != 0 && strcmp (seq, "\\e\\e") != 0
&& strcmp (seq, "^m") != 0 && strcmp (seq, "^i") != 0
&& (seq[1] != '\0' || *seq < ' ' || *seq > '~'))
{
@@ -122,7 +122,7 @@
}
dlg_run_done (d);
- dlg_destroy (d);
+ widget_destroy (WIDGET (d));
widget_select (learnkeys[action - B_USER].button);
@@ -343,7 +343,7 @@
static void
learn_done (void)
{
- dlg_destroy (learn_dlg);
+ widget_destroy (WIDGET (learn_dlg));
repaint_screen ();
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/main.c
^
|
@@ -1,7 +1,7 @@
/*
Main program for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -70,6 +70,7 @@
#ifdef ENABLE_SUBSHELL
#include "subshell/subshell.h"
#endif
+#include "keymap.h"
#include "setup.h" /* load_setup() */
#ifdef HAVE_CHARSET
@@ -248,8 +249,6 @@
main (int argc, char *argv[])
{
GError *mcerror = NULL;
- gboolean config_migrated = FALSE;
- char *config_migrate_msg = NULL;
int exit_code = EXIT_FAILURE;
mc_global.run_from_parent_mc = !check_sid ();
@@ -298,7 +297,6 @@
goto startup_exit_falure;
mc_config_init_config_paths (&mcerror);
- config_migrated = mc_config_migrate_from_old_place (&mcerror, &config_migrate_msg);
if (mcerror != NULL)
{
mc_event_deinit (NULL);
@@ -342,7 +340,7 @@
saved_other_dir = buffer;
else
g_free (buffer);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* check terminal type
@@ -384,7 +382,7 @@
/* Removing this from the X code let's us type C-c */
load_key_defs ();
- load_keymap_defs (!mc_args__nokeymap);
+ keymap_load (!mc_args__nokeymap);
#ifdef USE_INTERNAL_EDIT
macros_list = g_array_new (TRUE, FALSE, sizeof (macros_t));
@@ -448,12 +446,6 @@
/* subshell_prompt is NULL here */
mc_prompt = (geteuid () == 0) ? "# " : "$ ";
-
- if (config_migrated)
- {
- message (D_ERROR, _("Warning"), "%s", config_migrate_msg);
- g_free (config_migrate_msg);
- }
}
/* Program main loop */
@@ -469,7 +461,7 @@
/* Save the tree store */
(void) tree_store_save ();
- free_keymap_defs ();
+ keymap_free ();
/* Virtual File System shutdown */
vfs_shut ();
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/man2hlp/man2hlp.in
^
|
@@ -1,4 +1,4 @@
-#! @PERL@ -w
+#! @PERL_FOR_BUILD@ -w
#
# Man page to help file converter
# Copyright (C) 1994, 1995, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -205,6 +205,7 @@
my $len; # The length of current word
my $backslash_flag = 0;
my $font_change_flag = 0;
+ my $quotes_flag = 0;
# Skipping lines?
return if $skip_flag;
@@ -247,6 +248,28 @@
# Attempt to handle backslash quoting
foreach (split //, $buffer)
{
+ # handle quotes: \(lq, \(rq, \(dq
+ if ($quotes_flag != 0)
+ {
+ if (($_ eq 'l' || $_ eq 'r' || $_ eq 'd') && $quotes_flag == 1)
+ {
+ # continue quotes handling
+ $quotes_flag = 2;
+ next;
+ }
+ elsif ($_ eq 'q' && $quotes_flag == 2)
+ {
+ # finish quotes handling
+ $quotes_flag = 0;
+ print $f_out '"';
+ next;
+ }
+ else
+ {
+ print $f_out '(' . $_;
+ print_error "Syntax error: unsupported \\(" . $_ . " command";
+ }
+ }
# handle \fR, \fB, \fI and \fP commands
if ($font_change_flag)
{
@@ -271,6 +294,12 @@
$font_change_flag = 0;
next;
}
+ if ($_ eq '(' && $backslash_flag)
+ {
+ $quotes_flag = 1;
+ $backslash_flag = 0;
+ next;
+ }
if ($_ eq 'f' && $backslash_flag)
{
$font_change_flag = 1;
@@ -284,6 +313,7 @@
}
$backslash_flag = 0;
$font_change_flag = 0;
+ $quotes_flag = 0;
print $f_out $_;
}
# Increase column
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/selcodepage.c
^
|
@@ -3,7 +3,7 @@
Copyright (C) 2001 Walery Studennikov <despair@sama.ru>
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/setup.c
^
|
@@ -1,7 +1,7 @@
/*
Setup loading/saving.
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -40,7 +40,6 @@
#include "lib/fileloc.h"
#include "lib/timefmt.h"
#include "lib/util.h"
-#include "lib/widget.h"
#ifdef ENABLE_VFS_FTP
#include "src/vfs/ftpfs/ftpfs.h"
@@ -64,7 +63,6 @@
#include "args.h"
#include "execute.h" /* pause_after_run */
#include "clipboard.h"
-#include "keybind-defaults.h" /* keybind_lookup_action */
#ifdef HAVE_CHARSET
#include "selcodepage.h"
@@ -166,8 +164,10 @@
/* If set and you don't have subshell support, then C-o will give you a shell */
gboolean output_starts_shell = FALSE;
+#ifdef USE_FILE_CMD
/* If set, we execute the file command to check the file type */
gboolean use_file_to_check_type = TRUE;
+#endif
gboolean verbose = TRUE;
@@ -317,7 +317,9 @@
{ "old_esc_mode", &old_esc_mode },
{ "cd_symlinks", &mc_global.vfs.cd_symlinks },
{ "show_all_if_ambiguous", &mc_global.widget.show_all_if_ambiguous },
+#ifdef USE_FILE_CMD
{ "use_file_to_guess_type", &use_file_to_check_type },
+#endif
{ "alternate_plus_minus", &mc_global.tty.alternate_plus_minus },
{ "only_leading_plus_minus", &only_leading_plus_minus },
{ "show_output_starts_shell", &output_starts_shell },
@@ -438,90 +440,8 @@
};
/* *INDENT-ON* */
-/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
-
-/**
- * Get name of config file.
- *
- * @param subdir If not NULL, config is also searched in specified subdir.
- * @param config_file_name If relative, file if searched in standard paths.
- *
- * @return newly allocated string with config name or NULL if file is not found.
- */
-
-static char *
-load_setup_get_full_config_name (const char *subdir, const char *config_file_name)
-{
- /*
- TODO: IMHO, in future, this function shall be placed in mcconfig module.
- */
- char *lc_basename, *ret;
- char *file_name;
-
- if (config_file_name == NULL)
- return NULL;
-
- /* check for .keymap suffix */
- if (g_str_has_suffix (config_file_name, ".keymap"))
- file_name = g_strdup (config_file_name);
- else
- file_name = g_strconcat (config_file_name, ".keymap", (char *) NULL);
-
- canonicalize_pathname (file_name);
-
- if (g_path_is_absolute (file_name))
- return file_name;
-
- lc_basename = g_path_get_basename (file_name);
- g_free (file_name);
-
- if (lc_basename == NULL)
- return NULL;
-
- if (subdir != NULL)
- ret = g_build_filename (mc_config_get_path (), subdir, lc_basename, (char *) NULL);
- else
- ret = g_build_filename (mc_config_get_path (), lc_basename, (char *) NULL);
-
- if (exist_file (ret))
- {
- g_free (lc_basename);
- canonicalize_pathname (ret);
- return ret;
- }
- g_free (ret);
-
- if (subdir != NULL)
- ret = g_build_filename (mc_global.sysconfig_dir, subdir, lc_basename, (char *) NULL);
- else
- ret = g_build_filename (mc_global.sysconfig_dir, lc_basename, (char *) NULL);
-
- if (exist_file (ret))
- {
- g_free (lc_basename);
- canonicalize_pathname (ret);
- return ret;
- }
- g_free (ret);
-
- if (subdir != NULL)
- ret = g_build_filename (mc_global.share_data_dir, subdir, lc_basename, (char *) NULL);
- else
- ret = g_build_filename (mc_global.share_data_dir, lc_basename, (char *) NULL);
-
- g_free (lc_basename);
-
- if (exist_file (ret))
- {
- canonicalize_pathname (ret);
- return ret;
- }
-
- g_free (ret);
- return NULL;
-}
-
+/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
static const char *
@@ -586,27 +506,6 @@
}
/* --------------------------------------------------------------------------------------------- */
-/**
- Create new mc_config object from specified ini-file or
- append data to existing mc_config object from ini-file
-*/
-
-static void
-load_setup_init_config_from_file (mc_config_t ** config, const char *fname, gboolean read_only)
-{
- /*
- TODO: IMHO, in future, this function shall be placed in mcconfig module.
- */
- if (exist_file (fname))
- {
- if (*config != NULL)
- mc_config_read_file (*config, fname, read_only, TRUE);
- else
- *config = mc_config_init (fname, read_only);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
static void
load_config (void)
@@ -765,116 +664,6 @@
/* --------------------------------------------------------------------------------------------- */
static void
-load_keymap_from_section (const char *section_name, GArray * keymap, mc_config_t * cfg)
-{
- gchar **profile_keys, **keys;
-
- if (section_name == NULL)
- return;
-
- keys = mc_config_get_keys (cfg, section_name, NULL);
-
- for (profile_keys = keys; *profile_keys != NULL; profile_keys++)
- {
- gchar **values;
-
- values = mc_config_get_string_list (cfg, section_name, *profile_keys, NULL);
- if (values != NULL)
- {
- long action;
-
- action = keybind_lookup_action (*profile_keys);
- if (action > 0)
- {
- gchar **curr_values;
-
- for (curr_values = values; *curr_values != NULL; curr_values++)
- keybind_cmd_bind (keymap, *curr_values, action);
- }
-
- g_strfreev (values);
- }
- }
-
- g_strfreev (keys);
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static mc_config_t *
-load_setup_get_keymap_profile_config (gboolean load_from_file)
-{
- /*
- TODO: IMHO, in future, this function shall be placed in mcconfig module.
- */
- mc_config_t *keymap_config;
- char *share_keymap, *sysconfig_keymap;
- char *fname, *fname2;
-
- /* 0) Create default keymap */
- keymap_config = create_default_keymap ();
- if (!load_from_file)
- return keymap_config;
-
- /* load and merge global keymaps */
-
- /* 1) /usr/share/mc (mc_global.share_data_dir) */
- share_keymap = g_build_filename (mc_global.share_data_dir, GLOBAL_KEYMAP_FILE, (char *) NULL);
- load_setup_init_config_from_file (&keymap_config, share_keymap, TRUE);
-
- /* 2) /etc/mc (mc_global.sysconfig_dir) */
- sysconfig_keymap =
- g_build_filename (mc_global.sysconfig_dir, GLOBAL_KEYMAP_FILE, (char *) NULL);
- load_setup_init_config_from_file (&keymap_config, sysconfig_keymap, TRUE);
-
- /* then load and merge one of user-defined keymap */
-
- /* 3) --keymap=<keymap> */
- fname = load_setup_get_full_config_name (NULL, mc_args__keymap_file);
- if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
- {
- load_setup_init_config_from_file (&keymap_config, fname, TRUE);
- goto done;
- }
- g_free (fname);
-
- /* 4) getenv("MC_KEYMAP") */
- fname = load_setup_get_full_config_name (NULL, g_getenv ("MC_KEYMAP"));
- if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
- {
- load_setup_init_config_from_file (&keymap_config, fname, TRUE);
- goto done;
- }
-
- MC_PTR_FREE (fname);
-
- /* 5) main config; [Midnight Commander] -> keymap */
- fname2 = mc_config_get_string (mc_global.main_config, CONFIG_APP_SECTION, "keymap", NULL);
- if (fname2 != NULL && *fname2 != '\0')
- fname = load_setup_get_full_config_name (NULL, fname2);
- g_free (fname2);
- if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0)
- {
- load_setup_init_config_from_file (&keymap_config, fname, TRUE);
- goto done;
- }
- g_free (fname);
-
- /* 6) ${XDG_CONFIG_HOME}/mc/mc.keymap */
- fname = mc_config_get_full_path (GLOBAL_KEYMAP_FILE);
- load_setup_init_config_from_file (&keymap_config, fname, TRUE);
-
- done:
- g_free (fname);
- g_free (sysconfig_keymap);
- g_free (share_keymap);
-
- return keymap_config;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-static void
panel_save_type (const char *section, panel_view_mode_t type)
{
size_t i;
@@ -1293,7 +1082,6 @@
}
}
-
/* --------------------------------------------------------------------------------------------- */
void
@@ -1339,116 +1127,6 @@
/* --------------------------------------------------------------------------------------------- */
void
-load_keymap_defs (gboolean load_from_file)
-{
- /*
- * Load keymap from GLOBAL_KEYMAP_FILE before ${XDG_CONFIG_HOME}/mc/mc.keymap, so that the user
- * definitions override global settings.
- */
- mc_config_t *mc_global_keymap;
-
- mc_global_keymap = load_setup_get_keymap_profile_config (load_from_file);
-
- if (mc_global_keymap != NULL)
- {
-#define LOAD_KEYMAP(s,km) \
- km##_keymap = g_array_new (TRUE, FALSE, sizeof (global_keymap_t)); \
- load_keymap_from_section (KEYMAP_SECTION_##s, km##_keymap, mc_global_keymap)
-
- LOAD_KEYMAP (FILEMANAGER, filemanager);
- LOAD_KEYMAP (FILEMANAGER_EXT, filemanager_x);
- LOAD_KEYMAP (PANEL, panel);
- LOAD_KEYMAP (DIALOG, dialog);
- LOAD_KEYMAP (MENU, menu);
- LOAD_KEYMAP (INPUT, input);
- LOAD_KEYMAP (LISTBOX, listbox);
- LOAD_KEYMAP (RADIO, radio);
- LOAD_KEYMAP (TREE, tree);
- LOAD_KEYMAP (HELP, help);
-#ifdef ENABLE_EXT2FS_ATTR
- LOAD_KEYMAP (CHATTR, chattr);
-#endif
-#ifdef USE_INTERNAL_EDIT
- LOAD_KEYMAP (EDITOR, editor);
- LOAD_KEYMAP (EDITOR_EXT, editor_x);
-#endif
- LOAD_KEYMAP (VIEWER, viewer);
- LOAD_KEYMAP (VIEWER_HEX, viewer_hex);
-#ifdef USE_DIFF_VIEW
- LOAD_KEYMAP (DIFFVIEWER, diff);
-#endif
-
-#undef LOAD_KEYMAP
- mc_config_deinit (mc_global_keymap);
- }
-
-#define SET_MAP(m) \
- m##_map = (global_keymap_t *) m##_keymap->data
-
- SET_MAP (filemanager);
- SET_MAP (filemanager_x);
- SET_MAP (panel);
- SET_MAP (dialog);
- SET_MAP (menu);
- SET_MAP (input);
- SET_MAP (listbox);
- SET_MAP (radio);
- SET_MAP (tree);
- SET_MAP (help);
-#ifdef ENABLE_EXT2FS_ATTR
- SET_MAP (chattr);
-#endif
-#ifdef USE_INTERNAL_EDIT
- SET_MAP (editor);
- SET_MAP (editor_x);
-#endif
- SET_MAP (viewer);
- SET_MAP (viewer_hex);
-#ifdef USE_DIFF_VIEW
- SET_MAP (diff);
-#endif
-
-#undef SET_MAP
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-free_keymap_defs (void)
-{
-#define FREE_KEYMAP(km) \
- if (km##_keymap != NULL) \
- g_array_free (km##_keymap, TRUE)
-
- FREE_KEYMAP (filemanager);
- FREE_KEYMAP (filemanager_x);
- FREE_KEYMAP (panel);
- FREE_KEYMAP (dialog);
- FREE_KEYMAP (menu);
- FREE_KEYMAP (input);
- FREE_KEYMAP (listbox);
- FREE_KEYMAP (radio);
- FREE_KEYMAP (tree);
- FREE_KEYMAP (help);
-#ifdef ENABLE_EXT2FS_ATTR
- FREE_KEYMAP (chattr);
-#endif
-#ifdef USE_INTERNAL_EDIT
- FREE_KEYMAP (editor);
- FREE_KEYMAP (editor_x);
-#endif
- FREE_KEYMAP (viewer);
- FREE_KEYMAP (viewer_hex);
-#ifdef USE_DIFF_VIEW
- FREE_KEYMAP (diff);
-#endif
-
-#undef FREE_KEYMAP
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
panel_load_setup (WPanel * panel, const char *section)
{
size_t i;
@@ -1503,6 +1181,12 @@
panel->user_mini_status =
mc_config_get_bool (mc_global.panels_config, section, "user_mini_status", FALSE);
+
+ panel->filter.value =
+ mc_config_get_string (mc_global.panels_config, section, "filter_value", NULL);
+ panel->filter.flags =
+ mc_config_get_int (mc_global.panels_config, section, "filter_flags",
+ (int) FILE_FILTER_DEFAULT_FLAGS);
}
/* --------------------------------------------------------------------------------------------- */
@@ -1542,6 +1226,14 @@
mc_config_set_bool (mc_global.panels_config, section, "user_mini_status",
panel->user_mini_status);
+
+ /* do not save the default filter */
+ if (panel->filter.handler != NULL)
+ mc_config_set_string (mc_global.panels_config, section, "filter_value",
+ panel->filter.value);
+ else
+ mc_config_del_key (mc_global.panels_config, section, "filter_value");
+ mc_config_set_int (mc_global.panels_config, section, "filter_flags", (int) panel->filter.flags);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/setup.h
^
|
@@ -54,7 +54,7 @@
gboolean permission_mode; /* If TRUE, we use permission hilighting */
qsearch_mode_t qsearch_mode; /* Quick search mode */
gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */
- panel_select_flags_t select_flags; /* Select/unselect file flags */
+ select_flags_t select_flags; /* Select/unselect file flags */
} panels_options_t;
typedef struct macro_action_t
@@ -96,7 +96,9 @@
extern int cd_symlinks;
extern gboolean auto_fill_mkdir_name;
extern gboolean output_starts_shell;
+#ifdef USE_FILE_CMD
extern gboolean use_file_to_check_type;
+#endif
extern gboolean file_op_compute_totals;
extern gboolean editor_ask_filename_before_edit;
@@ -153,9 +155,6 @@
char *load_anon_passwd (void);
#endif /* ENABLE_VFS_FTP */
-void load_keymap_defs (gboolean load_from_file);
-void free_keymap_defs (void);
-
void panel_load_setup (WPanel * panel, const char *section);
void panel_save_setup (WPanel * panel, const char *section);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/subshell/common.c
^
|
@@ -1,7 +1,7 @@
/*
Concurrent shell support for the Midnight Commander
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -97,6 +97,7 @@
#include "lib/global.h"
+#include "lib/fileloc.h"
#include "lib/unixcompat.h"
#include "lib/tty/tty.h" /* LINES */
#include "lib/tty/key.h" /* XCTRL */
@@ -148,7 +149,7 @@
#define FORK_FAILURE 69 /* Arbitrary */
/* Length of the buffer for all I/O with the subshell */
-#define PTY_BUFFER_SIZE BUF_SMALL /* Arbitrary; but keep it >= 80 */
+#define PTY_BUFFER_SIZE BUF_MEDIUM /* Arbitrary; but keep it >= 80 */
/*** file scope type declarations ****************************************************************/
@@ -200,11 +201,6 @@
/* Flag to indicate if the subshell supports the persistent buffer feature. */
static gboolean use_persistent_buffer = FALSE;
-/* Flag to indicate if the contents of the subshell command line need to be cleared before */
-/* executing a command. This should only end up set to true if there is some sort of error. */
-/* This allows us to recover gracefully from an error. */
-static gboolean subshell_should_clear_command_line = FALSE;
-
/* This is the local variable where the subshell prompt is stored while we are working on it. */
static GString *subshell_prompt_temp_buffer = NULL;
@@ -271,7 +267,6 @@
init_subshell_child (const char *pty_name)
{
char *init_file = NULL;
- char *putenv_str = NULL;
pid_t mc_sid;
(void) pty_name;
@@ -323,7 +318,7 @@
{
case SHELL_BASH:
/* Do we have a custom init file ~/.local/share/mc/bashrc? */
- init_file = mc_config_get_full_path ("bashrc");
+ init_file = mc_config_get_full_path (MC_BASHRC_FILE);
/* Otherwise use ~/.bashrc */
if (!exist_file (init_file))
@@ -340,12 +335,9 @@
{
char *input_file;
- input_file = mc_config_get_full_path ("inputrc");
+ input_file = mc_config_get_full_path (MC_INPUTRC_FILE);
if (exist_file (input_file))
- {
- putenv_str = g_strconcat ("INPUTRC=", input_file, (char *) NULL);
- putenv (putenv_str);
- }
+ g_setenv ("INPUTRC", input_file, TRUE);
g_free (input_file);
}
@@ -354,7 +346,7 @@
case SHELL_ASH_BUSYBOX:
case SHELL_DASH:
/* Do we have a custom init file ~/.local/share/mc/ashrc? */
- init_file = mc_config_get_full_path ("ashrc");
+ init_file = mc_config_get_full_path (MC_ASHRC_FILE);
/* Otherwise use ~/.profile */
if (!exist_file (init_file))
@@ -364,15 +356,30 @@
}
/* Put init file to ENV variable used by ash */
- putenv_str = g_strconcat ("ENV=", init_file, (char *) NULL);
- putenv (putenv_str);
- /* Do not use "g_free (putenv_str)" here, otherwise ENV will be undefined! */
+ g_setenv ("ENV", init_file, TRUE);
break;
- /* TODO: Find a way to pass initfile to TCSH, ZSH and FISH */
- case SHELL_TCSH:
case SHELL_ZSH:
+ /* ZDOTDIR environment variable is the only way to point zsh
+ * to an other rc file than the default. */
+
+ /* Don't overwrite $ZDOTDIR */
+ if (g_getenv ("ZDOTDIR") != NULL)
+ {
+ /* Do we have a custom init file ~/.local/share/mc/.zshrc?
+ * Otherwise use standard ~/.zshrc */
+ init_file = mc_config_get_full_path (MC_ZSHRC_FILE);
+ if (exist_file (init_file))
+ {
+ /* Set ZDOTDIR to ~/.local/share/mc */
+ g_setenv ("ZDOTDIR", mc_config_get_data_path (), TRUE);
+ }
+ }
+ break;
+
+ /* TODO: Find a way to pass initfile to TCSH and FISH */
+ case SHELL_TCSH:
case SHELL_FISH:
break;
@@ -416,7 +423,6 @@
/* Use -g to exclude cmds beginning with space from history
* and -Z to use the line editor on non-interactive term */
execl (mc_global.shell->path, "zsh", "-Z", "-g", (char *) NULL);
-
break;
case SHELL_ASH_BUSYBOX:
@@ -432,7 +438,6 @@
/* If we get this far, everything failed miserably */
g_free (init_file);
- g_free (putenv_str);
my_exit (FORK_FAILURE);
}
@@ -723,7 +728,7 @@
return;
if (subshell_prompt_temp_buffer->len != 0)
- g_string_assign (subshell_prompt, subshell_prompt_temp_buffer->str);
+ mc_g_string_copy (subshell_prompt, subshell_prompt_temp_buffer);
setup_cmdline ();
}
@@ -742,9 +747,9 @@
struct timeval *wptr;
should_read_new_subshell_prompt = FALSE;
- subshell_should_clear_command_line = FALSE;
- /* we wait up to 10 seconds if fail_on_error, forever otherwise */
+ /* have more than enough time to run subshell:
+ wait up to 10 second if fail_on_error, forever otherwise */
wtime.tv_sec = 10;
wtime.tv_usec = 0;
wptr = fail_on_error ? &wtime : NULL;
@@ -868,9 +873,17 @@
if (subshell_ready && !read_command_line_buffer (FALSE))
{
/* If we got here, some unforseen error must have occurred. */
+ if (mc_global.shell->type != SHELL_FISH)
+ {
+ write_all (mc_global.tty.subshell_pty, "\003", 1);
+ subshell_state = RUNNING_COMMAND;
+ if (feed_subshell (QUIETLY, TRUE))
+ if (read_command_line_buffer (FALSE))
+ return TRUE;
+ }
+ subshell_state = ACTIVE;
flush_subshell (0, VISIBLY);
input_assign_text (cmdline, "");
- subshell_should_clear_command_line = TRUE;
}
}
@@ -1250,6 +1263,37 @@
}
/* --------------------------------------------------------------------------------------------- */
+/**
+ * This function checks the pipe from which we receive data about the current working directory.
+ * If there is any data waiting, we clear it.
+ */
+
+static void
+clear_cwd_pipe (void)
+{
+ fd_set read_set;
+ struct timeval wtime = { 0, 0 };
+ int maxfdp;
+
+ FD_ZERO (&read_set);
+ FD_SET (subshell_pipe[READ], &read_set);
+ maxfdp = subshell_pipe[READ];
+
+ if (select (maxfdp + 1, &read_set, NULL, NULL, &wtime) > 0
+ && FD_ISSET (subshell_pipe[READ], &read_set))
+ {
+ if (read (subshell_pipe[READ], subshell_cwd, sizeof (subshell_cwd)) <= 0)
+ {
+ tcsetattr (STDOUT_FILENO, TCSANOW, &shell_mode);
+ fprintf (stderr, "read (subshell_pipe[READ]...): %s\r\n", unix_error_string (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ synchronize ();
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@@ -1419,21 +1463,23 @@
if (use_persistent_buffer)
{
+ const char *s;
size_t i;
int pos;
+ s = input_get_ctext (cmdline);
+
/* Check to make sure there are no non text characters in the command buffer,
* such as tab, or newline, as this could cause problems. */
- for (i = 0; cmdline->buffer[i] != '\0'; i++)
- if ((unsigned char) cmdline->buffer[i] < 32
- || (unsigned char) cmdline->buffer[i] == 127)
- cmdline->buffer[i] = ' ';
+ for (i = 0; i < cmdline->buffer->len; i++)
+ if ((unsigned char) s[i] < 32 || (unsigned char) s[i] == 127)
+ g_string_overwrite_len (cmdline->buffer, i, " ", 1);
/* Write the command buffer to the subshell. */
- write_all (mc_global.tty.subshell_pty, cmdline->buffer, strlen (cmdline->buffer));
+ write_all (mc_global.tty.subshell_pty, s, cmdline->buffer->len);
/* Put the cursor in the correct place in the subshell. */
- pos = str_length (cmdline->buffer) - cmdline->point;
+ pos = str_length (s) - cmdline->point;
for (i = 0; i < (size_t) pos; i++)
write_all (mc_global.tty.subshell_pty, ESC_STR "[D", 3);
}
@@ -1445,14 +1491,18 @@
/* data is there, but only if we are using one of the shells that */
/* doesn't support keeping command buffer contents, OR if there was */
/* some sort of error. */
- if (!use_persistent_buffer || subshell_should_clear_command_line)
+ if (use_persistent_buffer)
+ clear_cwd_pipe ();
+ else
{
- write_all (mc_global.tty.subshell_pty, "\003", 1);
- subshell_state = RUNNING_COMMAND;
- /* We need to call feed_subshell here if we are using fish, because of a quirk
- * in the behavioral of that particular shell. */
+ /* We don't need to call feed_subshell here if we are using fish, because of a
+ * quirk in the behavior of that particular shell. */
if (mc_global.shell->type != SHELL_FISH)
+ {
+ write_all (mc_global.tty.subshell_pty, "\003", 1);
+ subshell_state = RUNNING_COMMAND;
feed_subshell (QUIETLY, FALSE);
+ }
}
if (how == QUIETLY)
@@ -1657,12 +1707,16 @@
/* If we are using a shell that doesn't support persistent command buffer, we need to clear
* the command prompt before we send the cd command. */
- if (!use_persistent_buffer || subshell_should_clear_command_line)
+ if (!use_persistent_buffer)
{
write_all (mc_global.tty.subshell_pty, "\003", 1);
subshell_state = RUNNING_COMMAND;
if (mc_global.shell->type != SHELL_FISH)
- feed_subshell (QUIETLY, FALSE);
+ if (!feed_subshell (QUIETLY, TRUE))
+ {
+ subshell_state = ACTIVE;
+ return;
+ }
}
/* The initial space keeps this out of the command history (in bash
because we set "HISTCONTROL=ignorespace") */
@@ -1693,7 +1747,11 @@
write_all (mc_global.tty.subshell_pty, "\n", 1);
subshell_state = RUNNING_COMMAND;
- feed_subshell (QUIETLY, FALSE);
+ if (!feed_subshell (QUIETLY, TRUE))
+ {
+ subshell_state = ACTIVE;
+ return;
+ }
if (subshell_alive)
{
@@ -1735,7 +1793,7 @@
* type a space and press return. */
write_all (mc_global.tty.subshell_pty, " \n", 2);
subshell_state = RUNNING_COMMAND;
- feed_subshell (QUIETLY, FALSE);
+ feed_subshell (QUIETLY, TRUE);
}
update_subshell_prompt = FALSE;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/subshell/proxyfunc.c
^
|
@@ -1,7 +1,7 @@
/*
Proxy functions for getting access to public variables into 'filemanager' module.
- Copyright (C) 2015-2020
+ Copyright (C) 2015-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/textconf.c
^
|
@@ -1,7 +1,7 @@
/*
Print features specific for this build
- Copyright (C) 2000-2020
+ Copyright (C) 2000-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -30,6 +30,10 @@
#include <stdio.h>
#include <sys/types.h>
+#if defined (ENABLE_VFS) && defined(ENABLE_VFS_SFTP)
+#include <libssh2.h>
+#endif /* ENABLE_VFS_SFTP && ENABLE_VFS */
+
#include "lib/global.h"
#include "lib/fileloc.h"
#include "lib/mcconfig.h"
@@ -72,9 +76,6 @@
#ifdef ENABLE_VFS_FISH
"fish",
#endif
-#ifdef ENABLE_VFS_SMB
- "smbfs",
-#endif /* ENABLE_VFS_SMB */
NULL
};
#endif /* ENABLE_VFS */
@@ -138,7 +139,7 @@
{
size_t i;
- printf (_("GNU Midnight Commander %s\n"), VERSION);
+ printf (_("GNU Midnight Commander %s\n"), mc_global.mc_version);
printf (_("Built with GLib %d.%d.%d\n"),
GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
@@ -161,6 +162,11 @@
#error "Cannot compile mc without S-Lang or ncurses"
#endif /* !HAVE_SLANG && !USE_NCURSES */
+#if defined (ENABLE_VFS) && defined(ENABLE_VFS_SFTP)
+ printf (_("Built with libssh2 %d.%d.%d\n"),
+ LIBSSH2_VERSION_MAJOR, LIBSSH2_VERSION_MINOR, LIBSSH2_VERSION_PATCH);
+#endif /* ENABLE_VFS_SFTP && ENABLE_VFS */
+
for (i = 0; features[i] != NULL; i++)
puts (_(features[i]));
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/util.c
^
|
@@ -1,7 +1,7 @@
/*
Various non-library utilities
- Copyright (C) 2003-2020
+ Copyright (C) 2003-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/Makefile.am
^
|
@@ -36,11 +36,6 @@
libmc_vfs_la_LIBADD += sfs/libvfs-sfs.la
endif
-if ENABLE_VFS_SMB
-SUBDIRS += smbfs
-libmc_vfs_la_LIBADD += smbfs/libvfs-smbfs.la
-endif
-
if ENABLE_VFS_TAR
SUBDIRS += tar
libmc_vfs_la_LIBADD += tar/libvfs-tar.la
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/cpio/cpio.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System: GNU Tar file system.
- Copyright (C) 2000-2020
+ Copyright (C) 2000-2022
Free Software Foundation, Inc.
Written by:
@@ -254,7 +254,7 @@
s = g_strconcat (super->name, decompress_extension (type), (char *) NULL);
tmp_vpath = vfs_path_from_str_flags (s, VPF_NO_CANON);
fd = mc_open (tmp_vpath, O_RDONLY);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
if (fd == -1)
{
message (D_ERROR, MSG_ERROR, _("Cannot open cpio archive\n%s"), s);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/extfs/extfs.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System: External file system.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -254,7 +254,7 @@
*q = '\0';
if (DIR_IS_DOTDOT (p))
- pent = pent->dir->ent;
+ pent = pent->dir != NULL ? pent->dir->ent : NULL;
else
{
GList *pl;
@@ -364,8 +364,8 @@
mc_stat (local_name_vpath, &my);
mc_ungetlocalcopy (name_vpath, local_name_vpath,
archive->local_stat.st_mtime != my.st_mtime);
- vfs_path_free (local_name_vpath);
- vfs_path_free (name_vpath);
+ vfs_path_free (local_name_vpath, TRUE);
+ vfs_path_free (name_vpath, TRUE);
g_free (archive->local_name);
}
}
@@ -392,12 +392,128 @@
/* --------------------------------------------------------------------------------------------- */
-static FILE *
-extfs_open_archive (int fstype, const char *name, struct extfs_super_t **pparc)
+static int
+extfs_add_file (struct extfs_super_t *archive, const char *file_name)
+{
+ struct vfs_s_super *super = VFS_SUPER (archive);
+ struct stat hstat;
+ char *current_file_name = NULL, *current_link_name = NULL;
+ int ret = 0;
+
+ if (vfs_parse_ls_lga (file_name, &hstat, ¤t_file_name, ¤t_link_name, NULL))
+ {
+ char *cfn = current_file_name;
+
+ if (*cfn != '\0')
+ {
+ struct vfs_s_entry *entry;
+ struct vfs_s_entry *pent = NULL;
+ struct vfs_s_inode *inode;
+ char *p, *q;
+
+ cfn = extfs_skip_leading_dotslash (cfn);
+ if (IS_PATH_SEP (*cfn))
+ cfn++;
+ p = strchr (cfn, '\0');
+ if (p != cfn && IS_PATH_SEP (p[-1]))
+ p[-1] = '\0';
+ p = strrchr (cfn, PATH_SEP);
+ if (p == NULL)
+ {
+ p = cfn;
+ q = strchr (cfn, '\0');
+ }
+ else
+ {
+ *(p++) = '\0';
+ q = cfn;
+ }
+
+ if (*q != '\0')
+ {
+ pent = extfs_find_entry (super->root, q, FL_MKDIR);
+ if (pent == NULL)
+ {
+ ret = -1;
+ goto done;
+ }
+ }
+
+ if (pent != NULL)
+ {
+ entry = extfs_entry_new (super->me, p, pent->ino);
+ entry->dir = pent->ino;
+ g_queue_push_tail (pent->ino->subdir, entry);
+ }
+ else
+ {
+ entry = extfs_entry_new (super->me, p, super->root);
+ entry->dir = super->root;
+ g_queue_push_tail (super->root->subdir, entry);
+ }
+
+ if (!S_ISLNK (hstat.st_mode) && (current_link_name != NULL))
+ {
+ pent = extfs_find_entry (super->root, current_link_name, FL_NONE);
+ if (pent == NULL)
+ {
+ ret = -1;
+ goto done;
+ }
+
+ pent->ino->st.st_nlink++;
+ entry->ino = pent->ino;
+ }
+ else
+ {
+ struct stat st;
+
+ memset (&st, 0, sizeof (st));
+ st.st_ino = super->ino_usage++;
+ st.st_nlink = 1;
+ st.st_dev = archive->rdev;
+ st.st_mode = hstat.st_mode;
+#ifdef HAVE_STRUCT_STAT_ST_RDEV
+ st.st_rdev = hstat.st_rdev;
+#endif
+ st.st_uid = hstat.st_uid;
+ st.st_gid = hstat.st_gid;
+ st.st_size = hstat.st_size;
+ st.st_mtime = hstat.st_mtime;
+ st.st_atime = hstat.st_atime;
+ st.st_ctime = hstat.st_ctime;
+
+ if (current_link_name == NULL && S_ISLNK (hstat.st_mode))
+ st.st_mode &= ~S_IFLNK; /* You *DON'T* want to do this always */
+
+ inode = vfs_s_new_inode (super->me, super, &st);
+ inode->ent = entry;
+ entry->ino = inode;
+
+ if (current_link_name != NULL && S_ISLNK (hstat.st_mode))
+ {
+ inode->linkname = current_link_name;
+ current_link_name = NULL;
+ }
+ }
+ }
+
+ done:
+ g_free (current_file_name);
+ g_free (current_link_name);
+ }
+
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static mc_pipe_t *
+extfs_open_archive (int fstype, const char *name, struct extfs_super_t **pparc, GError ** error)
{
const extfs_plugin_info_t *info;
static dev_t archive_counter = 0;
- FILE *result = NULL;
+ mc_pipe_t *result = NULL;
mode_t mode;
char *cmd;
struct stat mystat;
@@ -432,27 +548,22 @@
vfs_path_get_last_path_str (local_name_vpath) : tmp, (char *) NULL);
g_free (tmp);
- open_error_pipe ();
- result = popen (cmd, "r");
+ result = mc_popen (cmd, TRUE, TRUE, error);
g_free (cmd);
+
if (result == NULL)
{
- close_error_pipe (D_ERROR, NULL);
if (local_name_vpath != NULL)
{
mc_ungetlocalcopy (name_vpath, local_name_vpath, FALSE);
- vfs_path_free (local_name_vpath);
+ vfs_path_free (local_name_vpath, TRUE);
}
goto ret;
}
-#ifdef ___QNXNTO__
- setvbuf (result, NULL, _IONBF, 0);
-#endif
-
current_archive = extfs_super_new (vfs_extfs_ops, name, local_name_vpath, fstype);
current_archive->rdev = archive_counter++;
- vfs_path_free (local_name_vpath);
+ vfs_path_free (local_name_vpath, TRUE);
mode = mystat.st_mode & 07777;
if (mode & 0400)
@@ -475,7 +586,7 @@
*pparc = current_archive;
ret:
- vfs_path_free (name_vpath);
+ vfs_path_free (name_vpath, TRUE);
return result;
}
@@ -486,120 +597,98 @@
*/
static int
-extfs_read_archive (FILE * extfsd, struct extfs_super_t *current_archive)
+extfs_read_archive (mc_pipe_t * pip, struct extfs_super_t *archive, GError ** error)
{
int ret = 0;
- char *buffer;
- struct vfs_s_super *super = VFS_SUPER (current_archive);
-
- buffer = g_malloc (BUF_4K);
+ GString *buffer;
+ GString *err_msg = NULL;
+ GString *remain_file_name = NULL;
- while (fgets (buffer, BUF_4K, extfsd) != NULL)
+ while (ret != -1)
{
- struct stat hstat;
- char *current_file_name = NULL, *current_link_name = NULL;
+ /* init buffers before call of mc_pread() */
+ pip->out.len = MC_PIPE_BUFSIZE;
+ pip->err.len = MC_PIPE_BUFSIZE;
- if (vfs_parse_ls_lga (buffer, &hstat, ¤t_file_name, ¤t_link_name, NULL))
+ mc_pread (pip, error);
+
+ if (*error != NULL)
+ return (-1);
+
+ if (pip->err.len > 0)
{
- struct vfs_s_entry *entry, *pent = NULL;
- struct vfs_s_inode *inode;
- char *p, *q, *cfn = current_file_name;
+ /* join errors/warnings */
+ if (err_msg == NULL)
+ err_msg = g_string_new_len (pip->err.buf, pip->err.len);
+ else
+ {
+ if (err_msg->str[err_msg->len - 1] != '\n')
+ g_string_append_c (err_msg, '\n');
+ g_string_append_len (err_msg, pip->err.buf, pip->err.len);
+ }
+ }
+
+ if (pip->out.len == MC_PIPE_STREAM_EOF)
+ break;
- if (*cfn != '\0')
+ if (pip->out.len == 0)
+ continue;
+
+ if (pip->out.len == MC_PIPE_ERROR_READ)
+ return (-1);
+
+ while (ret != -1 && (buffer = mc_pstream_get_string (&pip->out)) != NULL)
+ {
+ /* handle a \n-separated file list */
+
+ if (buffer->str[buffer->len - 1] == '\n')
{
- cfn = extfs_skip_leading_dotslash (cfn);
- if (IS_PATH_SEP (*cfn))
- cfn++;
- p = strchr (cfn, '\0');
- if (p != cfn && IS_PATH_SEP (p[-1]))
- p[-1] = '\0';
- p = strrchr (cfn, PATH_SEP);
- if (p == NULL)
- {
- p = cfn;
- q = strchr (cfn, '\0');
- }
- else
- {
- *(p++) = '\0';
- q = cfn;
- }
+ /* entire file name or last chunk */
- if (*q != '\0')
- {
- pent = extfs_find_entry (super->root, q, FL_MKDIR);
- if (pent == NULL)
- {
- ret = -1;
- break;
- }
- }
+ g_string_truncate (buffer, buffer->len - 1);
- if (pent != NULL)
+ /* join filename chunks */
+ if (remain_file_name != NULL)
{
- entry = extfs_entry_new (super->me, p, pent->ino);
- entry->dir = pent->ino;
- g_queue_push_tail (pent->ino->subdir, entry);
+ g_string_append_len (remain_file_name, buffer->str, buffer->len);
+ g_string_free (buffer, TRUE);
+ buffer = remain_file_name;
+ remain_file_name = NULL;
}
- else
- {
- entry = extfs_entry_new (super->me, p, super->root);
- entry->dir = super->root;
- g_queue_push_tail (super->root->subdir, entry);
- }
-
- if (!S_ISLNK (hstat.st_mode) && (current_link_name != NULL))
- {
- pent = extfs_find_entry (super->root, current_link_name, FL_NONE);
- if (pent == NULL)
- {
- ret = -1;
- break;
- }
+ }
+ else
+ {
+ /* first or middle chunk of file name */
- pent->ino->st.st_nlink++;
- entry->ino = pent->ino;
- }
+ if (remain_file_name == NULL)
+ remain_file_name = buffer;
else
{
- struct stat st;
-
- memset (&st, 0, sizeof (st));
- st.st_ino = super->ino_usage++;
- st.st_nlink = 1;
- st.st_dev = current_archive->rdev;
- st.st_mode = hstat.st_mode;
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
- st.st_rdev = hstat.st_rdev;
-#endif
- st.st_uid = hstat.st_uid;
- st.st_gid = hstat.st_gid;
- st.st_size = hstat.st_size;
- st.st_mtime = hstat.st_mtime;
- st.st_atime = hstat.st_atime;
- st.st_ctime = hstat.st_ctime;
-
- if (current_link_name == NULL && S_ISLNK (hstat.st_mode))
- st.st_mode &= ~S_IFLNK; /* You *DON'T* want to do this always */
-
- inode = vfs_s_new_inode (super->me, super, &st);
- inode->ent = entry;
- entry->ino = inode;
-
- if (current_link_name != NULL && S_ISLNK (hstat.st_mode))
- {
- inode->linkname = current_link_name;
- current_link_name = NULL;
- }
+ g_string_append_len (remain_file_name, buffer->str, buffer->len);
+ g_string_free (buffer, TRUE);
}
+
+ continue;
}
- g_free (current_file_name);
- g_free (current_link_name);
+ ret = extfs_add_file (archive, buffer->str);
+
+ g_string_free (buffer, TRUE);
}
}
- g_free (buffer);
+ if (remain_file_name != NULL)
+ g_string_free (remain_file_name, TRUE);
+
+ if (err_msg != NULL)
+ {
+ if (*error == NULL)
+ mc_propagate_error (error, 0, "%s", err_msg->str);
+
+ g_string_free (err_msg, TRUE);
+ }
+ else if (ret == -1)
+ mc_propagate_error (error, 0, "%s", _("Inconsistent archive"));
return ret;
}
@@ -635,33 +724,37 @@
extfs_open_and_read_archive (int fstype, const char *name, struct extfs_super_t **archive)
{
int result = -1;
- FILE *extfsd;
struct extfs_super_t *a;
+ mc_pipe_t *pip;
+ GError *error = NULL;
+
+ pip = extfs_open_archive (fstype, name, archive, &error);
- extfsd = extfs_open_archive (fstype, name, archive);
a = *archive;
- if (extfsd == NULL)
+ if (pip == NULL)
{
const extfs_plugin_info_t *info;
info = &g_array_index (extfs_plugins, extfs_plugin_info_t, fstype);
- message (D_ERROR, MSG_ERROR, _("Cannot open %s archive\n%s"), info->prefix, name);
- }
- else if (extfs_read_archive (extfsd, a) != 0)
- {
- pclose (extfsd);
- close_error_pipe (D_ERROR, _("Inconsistent extfs archive"));
- }
- else if (pclose (extfsd) != 0)
- {
- VFS_SUPER (a)->me->free (VFS_SUPER (a));
- close_error_pipe (D_ERROR, _("Inconsistent extfs archive"));
+ message (D_ERROR, MSG_ERROR, _("Cannot open %s archive\n%s:\n%s"), info->prefix, name,
+ error->message);
+ g_error_free (error);
}
else
{
- close_error_pipe (D_ERROR, NULL);
- result = 0;
+ result = extfs_read_archive (pip, a, &error);
+
+ if (result != 0)
+ VFS_SUPER (a)->me->free (VFS_SUPER (a));
+
+ if (error != NULL)
+ {
+ message (D_ERROR, MSG_ERROR, _("EXTFS virtual file system:\n%s"), error->message);
+ g_error_free (error);
+ }
+
+ mc_pclose (pip, NULL);
}
return result;
@@ -796,7 +889,7 @@
if (archive->local_name != NULL)
archive_name = archive->local_name;
else
- archive_name = VFS_SUPER (archive)->name;
+ archive_name = CONST_VFS_SUPER (archive)->name;
if (archive_name == NULL || *archive_name == '\0')
return g_strdup ("no_archive_name");
@@ -809,7 +902,7 @@
vpath = vfs_path_from_str (archive_name);
path_element = vfs_path_get_by_index (vpath, -1);
ret_str = g_strdup (path_element->path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return ret_str;
}
}
@@ -827,7 +920,9 @@
char *archive_name, *quoted_archive_name;
const extfs_plugin_info_t *info;
char *cmd;
- int retval;
+ int retval = 0;
+ GError *error = NULL;
+ mc_pipe_t *pip;
file = extfs_get_path_from_entry (entry);
quoted_file = name_quote (file, FALSE);
@@ -847,10 +942,31 @@
g_free (quoted_localname);
g_free (quoted_archive_name);
- open_error_pipe ();
- retval = my_system (EXECUTE_AS_SHELL, mc_global.shell->path, cmd);
+ /* don't read stdout */
+ pip = mc_popen (cmd, FALSE, TRUE, &error);
g_free (cmd);
- close_error_pipe (D_ERROR, NULL);
+
+ if (pip == NULL)
+ {
+ message (D_ERROR, MSG_ERROR, _("EXTFS virtual file system:\n%s"), error->message);
+ g_error_free (error);
+ return (-1);
+ }
+
+ pip->err.null_term = TRUE;
+
+ mc_pread (pip, &error);
+ if (error != NULL)
+ {
+ message (D_ERROR, MSG_ERROR, _("EXTFS virtual file system:\n%s"), error->message);
+ g_error_free (error);
+ retval = -1;
+ }
+ else if (pip->err.len > 0)
+ message (D_ERROR, MSG_ERROR, _("EXTFS virtual file system:\n%s"), pip->err.buf);
+
+ mc_pclose (pip, NULL);
+
return retval;
}
@@ -930,12 +1046,12 @@
&& extfs_cmd (" copyout ", archive, entry, local_filename))
{
unlink (local_filename);
- vfs_path_free (local_filename_vpath);
+ vfs_path_free (local_filename_vpath, TRUE);
my_errno = EIO;
return NULL;
}
entry->ino->localname = g_strdup (local_filename);
- vfs_path_free (local_filename_vpath);
+ vfs_path_free (local_filename_vpath, TRUE);
}
local_handle = open (entry->ino->localname, NO_LINEAR (flags), mode);
@@ -1454,10 +1570,8 @@
g_snprintf (fullname, sizeof (fullname), "%s" PATH_SEP_STR "%s", dirname, filename);
- if ((stat (fullname, &s) == 0)
- && S_ISREG (s.st_mode) && !S_ISDIR (s.st_mode)
- && (((s.st_mode & S_IXOTH) != 0) ||
- ((s.st_mode & S_IXUSR) != 0) || ((s.st_mode & S_IXGRP) != 0)))
+ if ((stat (fullname, &s) == 0) && S_ISREG (s.st_mode) && !S_ISDIR (s.st_mode)
+ && is_exe (s.st_mode))
{
int f;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/extfs/helpers/iso9660.in
^
|
@@ -93,7 +93,11 @@
# tested to comply with isoinfo 2.0's output
test_iso () {
- which isoinfo 2>/dev/null || (echo "isoinfo not found" >&2; return 1)
+ ISOINFO=$(which isoinfo 2>/dev/null)
+ if test -z "$ISOINFO"; then
+ echo "isoinfo not found" >&2
+ return 1
+ fi
CHARSET=$(locale charmap 2>/dev/null)
if test -z "$CHARSET"; then
@@ -101,16 +105,16 @@
fi
if test -n "$CHARSET"; then
CHARSET=$(echo "$CHARSET" | tr '[A-Z]' '[a-z]' | sed -e 's/^iso-/iso/')
- isoinfo -j $CHARSET -i /dev/null 2>&1 | grep "Iconv not yet supported\|Unknown charset" >/dev/null && CHARSET=
+ $ISOINFO -j $CHARSET -i /dev/null 2>&1 | grep "Iconv not yet supported\|Unknown charset" >/dev/null && CHARSET=
fi
if test -n "$CHARSET"; then
JOLIET_OPT="-j $CHARSET -J"
else
JOLIET_OPT="-J"
fi
- ISOINFO="isoinfo -R"
- ISOINFO_D_I="$(isoinfo -d -i "$1" 2>/dev/null)"
+ ISOINFO_D_I="$($ISOINFO -d -i "$1" 2>/dev/null)"
+ ISOINFO="$ISOINFO -R"
echo "$ISOINFO_D_I" | grep "UCS level 1\|NO Joliet" > /dev/null || ISOINFO="$ISOINFO $JOLIET_OPT"
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/extfs/helpers/u7z
^
|
@@ -17,7 +17,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-P7ZIP=`which 7z 2>/dev/null` || P7ZIP=`which 7za 2>/dev/null` || P7ZIP=`which 7zr 2>/dev/null` || P7ZIP=""
+P7ZIP=`which 7z 2>/dev/null` \
+ || P7ZIP=`which 7zz 2>/dev/null` \
+ || P7ZIP=`which 7za 2>/dev/null` \
+ || P7ZIP=`which 7zr 2>/dev/null` \
+ || P7ZIP=""
# Let the test framework hook in:
P7ZIP=${MC_TEST_EXTFS_LIST_CMD:-$P7ZIP}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/extfs/helpers/urar.in
^
|
@@ -113,7 +113,7 @@
mcrarfs_list ()
{
- [ x$UNRAR_VERSION = x5 ] && mcrar5fs_list "$@" || mcrar4fs_list "$@"
+ [ x$UNRAR_VERSION = x6 -o x$UNRAR_VERSION = x5 ] && mcrar5fs_list "$@" || mcrar4fs_list "$@"
}
mcrarfs_copyin ()
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/fish/fish.c
^
|
@@ -2,13 +2,13 @@
Virtual File System: FISH implementation for transfering files over
shell connections.
- Copyright (C) 1998-2020
+ Copyright (C) 1998-2022
Free Software Foundation, Inc.
Written by:
Pavel Machek, 1998
Michal Svec, 2000
- Andrew Borodin <aborodin@vmail.ru>, 2010-2019
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2022
Slava Zanko <slavazanko@gmail.com>, 2010, 2013
Ilia Maslakov <il.smind@gmail.com>, 2010
@@ -379,13 +379,21 @@
fish_super_t *fish_super = FISH_SUPER (super);
if ((fish_super->sockw != -1) || (fish_super->sockr != -1))
- {
vfs_print_message (_("fish: Disconnecting from %s"), super->name ? super->name : "???");
+
+ if (fish_super->sockw != -1)
+ {
fish_command (me, super, NONE, "#BYE\nexit\n", -1);
close (fish_super->sockw);
+ fish_super->sockw = -1;
+ }
+
+ if (fish_super->sockr != -1)
+ {
close (fish_super->sockr);
- fish_super->sockw = fish_super->sockr = -1;
+ fish_super->sockr = -1;
}
+
g_free (fish_super->scr_ls);
g_free (fish_super->scr_exists);
g_free (fish_super->scr_mkdir);
@@ -746,8 +754,165 @@
/* --------------------------------------------------------------------------------------------- */
+static void
+fish_parse_ls (char *buffer, struct vfs_s_entry *ent)
+{
+#define ST ent->ino->st
+
+ buffer++;
+
+ switch (buffer[-1])
+ {
+ case ':':
+ {
+ char *filename;
+ char *filename_bound;
+ char *temp;
+
+ filename = buffer;
+
+ if (strcmp (filename, "\".\"") == 0 || strcmp (filename, "\"..\"") == 0)
+ break; /* We'll do "." and ".." ourselves */
+
+ filename_bound = filename + strlen (filename);
+
+ if (S_ISLNK (ST.st_mode))
+ {
+ char *linkname;
+ char *linkname_bound;
+ /* we expect: "escaped-name" -> "escaped-name"
+ // -> cannot occur in filenames,
+ // because it will be escaped to -\> */
+
+
+ linkname_bound = filename_bound;
+
+ if (*filename == '"')
+ ++filename;
+
+ linkname = strstr (filename, "\" -> \"");
+ if (linkname == NULL)
+ {
+ /* broken client, or smth goes wrong */
+ linkname = filename_bound;
+ if (filename_bound > filename && *(filename_bound - 1) == '"')
+ --filename_bound; /* skip trailing " */
+ }
+ else
+ {
+ filename_bound = linkname;
+ linkname += 6; /* strlen ("\" -> \"") */
+ if (*(linkname_bound - 1) == '"')
+ --linkname_bound; /* skip trailing " */
+ }
+
+ ent->name = g_strndup (filename, filename_bound - filename);
+ temp = ent->name;
+ ent->name = strutils_shell_unescape (ent->name);
+ g_free (temp);
+
+ ent->ino->linkname = g_strndup (linkname, linkname_bound - linkname);
+ temp = ent->ino->linkname;
+ ent->ino->linkname = strutils_shell_unescape (ent->ino->linkname);
+ g_free (temp);
+ }
+ else
+ {
+ /* we expect: "escaped-name" */
+ if (filename_bound - filename > 2)
+ {
+ /*
+ there is at least 2 "
+ and we skip them
+ */
+ if (*filename == '"')
+ ++filename;
+ if (*(filename_bound - 1) == '"')
+ --filename_bound;
+ }
+
+ ent->name = g_strndup (filename, filename_bound - filename);
+ temp = ent->name;
+ ent->name = strutils_shell_unescape (ent->name);
+ g_free (temp);
+ }
+ break;
+ }
+
+ case 'S':
+ ST.st_size = (off_t) g_ascii_strtoll (buffer, NULL, 10);
+ break;
+
+ case 'P':
+ {
+ size_t skipped;
+
+ vfs_parse_filemode (buffer, &skipped, &ST.st_mode);
+ break;
+ }
+
+ case 'R':
+ {
+ /*
+ raw filemode:
+ we expect: Roctal-filemode octal-filetype uid.gid
+ */
+ size_t skipped;
+
+ vfs_parse_raw_filemode (buffer, &skipped, &ST.st_mode);
+ break;
+ }
+
+ case 'd':
+ vfs_split_text (buffer);
+ if (vfs_parse_filedate (0, &ST.st_ctime) == 0)
+ break;
+ ST.st_atime = ST.st_mtime = ST.st_ctime;
+#ifdef HAVE_STRUCT_STAT_ST_MTIM
+ ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0;
+#endif
+ break;
+
+ case 'D':
+ {
+ struct tm tim;
+
+ memset (&tim, 0, sizeof (tim));
+ /* cppcheck-suppress invalidscanf */
+ if (sscanf (buffer, "%d %d %d %d %d %d", &tim.tm_year, &tim.tm_mon,
+ &tim.tm_mday, &tim.tm_hour, &tim.tm_min, &tim.tm_sec) != 6)
+ break;
+ ST.st_atime = ST.st_mtime = ST.st_ctime = mktime (&tim);
+#ifdef HAVE_STRUCT_STAT_ST_MTIM
+ ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0;
+#endif
+ }
+ break;
+
+ case 'E':
+ {
+ int maj, min;
+
+ /* cppcheck-suppress invalidscanf */
+ if (sscanf (buffer, "%d,%d", &maj, &min) != 2)
+ break;
+#ifdef HAVE_STRUCT_STAT_ST_RDEV
+ ST.st_rdev = makedev (maj, min);
+#endif
+ }
+ break;
+
+ default:
+ break;
+ }
+
+#undef ST
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
static int
-fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path)
+fish_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path)
{
struct vfs_s_super *super = dir->super;
char buffer[BUF_8K] = "\0";
@@ -765,7 +930,7 @@
vfs_print_message (_("fish: Reading directory %s..."), remote_path);
- dir->timestamp = g_get_real_time () + fish_directory_timeout * G_USEC_PER_SEC;
+ dir->timestamp = g_get_monotonic_time () + fish_directory_timeout * G_USEC_PER_SEC;
quoted_path = strutils_shell_escape (remote_path);
(void) fish_command_v (me, super, NONE, FISH_SUPER (super)->scr_ls, "FISH_FILENAME=%s;\n",
@@ -794,154 +959,13 @@
}
if (strncmp (buffer, "### ", 4) == 0)
break;
- if (buffer[0] == '\0')
- {
- if (ent->name != NULL)
- {
- vfs_s_insert_entry (me, dir, ent);
- ent = vfs_s_generate_entry (me, NULL, dir, 0);
- }
- continue;
- }
-#define ST ent->ino->st
-
- switch (buffer[0])
+ if (buffer[0] != '\0')
+ fish_parse_ls (buffer, ent);
+ else if (ent->name != NULL)
{
- case ':':
- {
- char *temp;
- char *data_start = buffer + 1;
- char *filename = data_start;
- char *filename_bound;
-
- filename_bound = filename + strlen (filename);
-
- if (strcmp (data_start, "\".\"") == 0 || strcmp (data_start, "\"..\"") == 0)
- break; /* We'll do "." and ".." ourselves */
-
- if (S_ISLNK (ST.st_mode))
- {
- char *linkname;
- char *linkname_bound;
- /* we expect: "escaped-name" -> "escaped-name"
- // -> cannot occur in filenames,
- // because it will be escaped to -\> */
-
-
- linkname_bound = filename_bound;
-
- if (*filename == '"')
- ++filename;
-
- linkname = strstr (filename, "\" -> \"");
- if (linkname == NULL)
- {
- /* broken client, or smth goes wrong */
- linkname = filename_bound;
- if (filename_bound > filename && *(filename_bound - 1) == '"')
- --filename_bound; /* skip trailing " */
- }
- else
- {
- filename_bound = linkname;
- linkname += 6; /* strlen ("\" -> \"") */
- if (*(linkname_bound - 1) == '"')
- --linkname_bound; /* skip trailing " */
- }
-
- ent->name = g_strndup (filename, filename_bound - filename);
- temp = ent->name;
- ent->name = strutils_shell_unescape (ent->name);
- g_free (temp);
-
- ent->ino->linkname = g_strndup (linkname, linkname_bound - linkname);
- temp = ent->ino->linkname;
- ent->ino->linkname = strutils_shell_unescape (ent->ino->linkname);
- g_free (temp);
- }
- else
- {
- /* we expect: "escaped-name" */
- if (filename_bound - filename > 2)
- {
- /*
- there is at least 2 "
- and we skip them
- */
- if (*filename == '"')
- ++filename;
- if (*(filename_bound - 1) == '"')
- --filename_bound;
- }
- ent->name = g_strndup (filename, filename_bound - filename);
- temp = ent->name;
- ent->name = strutils_shell_unescape (ent->name);
- g_free (temp);
- }
- break;
- }
- case 'S':
- ST.st_size = (off_t) g_ascii_strtoll (buffer + 1, NULL, 10);
- break;
- case 'P':
- {
- size_t skipped;
-
- vfs_parse_filemode (buffer + 1, &skipped, &ST.st_mode);
- break;
- }
- case 'R':
- {
- /*
- raw filemode:
- we expect: Roctal-filemode octal-filetype uid.gid
- */
- size_t skipped;
-
- vfs_parse_raw_filemode (buffer + 1, &skipped, &ST.st_mode);
- break;
- }
- case 'd':
- {
- vfs_split_text (buffer + 1);
- if (vfs_parse_filedate (0, &ST.st_ctime) == 0)
- break;
- ST.st_atime = ST.st_mtime = ST.st_ctime;
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0;
-#endif
- }
- break;
- case 'D':
- {
- struct tm tim;
-
- memset (&tim, 0, sizeof (tim));
- /* cppcheck-suppress invalidscanf */
- if (sscanf (buffer + 1, "%d %d %d %d %d %d", &tim.tm_year, &tim.tm_mon,
- &tim.tm_mday, &tim.tm_hour, &tim.tm_min, &tim.tm_sec) != 6)
- break;
- ST.st_atime = ST.st_mtime = ST.st_ctime = mktime (&tim);
-#ifdef HAVE_STRUCT_STAT_ST_MTIM
- ST.st_atim.tv_nsec = ST.st_mtim.tv_nsec = ST.st_ctim.tv_nsec = 0;
-#endif
- }
- break;
- case 'E':
- {
- int maj, min;
-
- /* cppcheck-suppress invalidscanf */
- if (sscanf (buffer + 1, "%d,%d", &maj, &min) != 2)
- break;
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
- ST.st_rdev = makedev (maj, min);
-#endif
- }
- break;
- default:
- break;
+ vfs_s_insert_entry (me, dir, ent);
+ ent = vfs_s_generate_entry (me, NULL, dir, 0);
}
}
@@ -1662,29 +1686,25 @@
if (fh->ino->localname == NULL)
{
- vfs_path_t *vpath;
+ vfs_path_t *vpath = NULL;
int tmp_handle;
tmp_handle = vfs_mkstemps (&vpath, me->name, fh->ino->ent->name);
if (tmp_handle == -1)
- {
- vfs_path_free (vpath);
- goto fail;
- }
- fh->ino->localname = g_strdup (vfs_path_as_str (vpath));
- vfs_path_free (vpath);
+ return (-1);
+
+ fh->ino->localname = vfs_path_free (vpath, FALSE);
close (tmp_handle);
}
return 0;
}
+
if (fh->ino->localname == NULL && vfs_s_retrieve_file (me, fh->ino) == -1)
- goto fail;
+ return (-1);
+
if (fh->ino->localname == NULL)
vfs_die ("retrieve_file failed to fill in localname");
return 0;
-
- fail:
- return -1;
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/fish/fishdef.h
^
|
@@ -77,11 +77,11 @@
/* default 'utime' script */
#define FISH_UTIME_DEF_CONTENT "" \
"#UTIME \"$FISH_TOUCHATIME_W_NSEC\" \"$FISH_TOUCHMTIME_W_NSEC\" $FISH_FILENAME\n" \
-"if TZ=UTC touch -m -d \"$FISH_TOUCHMTIME_W_NSEC\" \"/${FISH_FILENAME}\" 2>/dev/null && \\\n" \
-" TZ=UTC touch -a -d \"$FISH_TOUCHATIME_W_NSEC\" \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
+"if TZ=UTC touch -h -m -d \"$FISH_TOUCHMTIME_W_NSEC\" \"/${FISH_FILENAME}\" 2>/dev/null && \\\n" \
+" TZ=UTC touch -h -a -d \"$FISH_TOUCHATIME_W_NSEC\" \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
-"elif TZ=UTC touch -m -t $FISH_TOUCHMTIME \"/${FISH_FILENAME}\" 2>/dev/null && \\\n" \
-" TZ=UTC touch -a -t $FISH_TOUCHATIME \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
+"elif TZ=UTC touch -h -m -t $FISH_TOUCHMTIME \"/${FISH_FILENAME}\" 2>/dev/null && \\\n" \
+" TZ=UTC touch -h -a -t $FISH_TOUCHATIME \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"elif [ -n \"$FISH_HAVE_PERL\" ] && \\\n" \
" perl -e 'utime '$FISH_FILEATIME','$FISH_FILEMTIME',@ARGV;' \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/fish/helpers/utime
^
|
@@ -1,9 +1,9 @@
#UTIME "$FISH_TOUCHATIME_W_NSEC" "$FISH_TOUCHMTIME_W_NSEC" "$FISH_FILENAME"
-if TZ=UTC touch -m -d "$FISH_TOUCHMTIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null && \
- TZ=UTC touch -a -d "$FISH_TOUCHATIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null; then
+if TZ=UTC touch -h -m -d "$FISH_TOUCHMTIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null && \
+ TZ=UTC touch -h -a -d "$FISH_TOUCHATIME_W_NSEC" "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
-elif TZ=UTC touch -m -t $FISH_TOUCHMTIME "/${FISH_FILENAME}" 2>/dev/null && \
- TZ=UTC touch -a -t $FISH_TOUCHATIME "/${FISH_FILENAME}" 2>/dev/null; then
+elif TZ=UTC touch -h -m -t $FISH_TOUCHMTIME "/${FISH_FILENAME}" 2>/dev/null && \
+ TZ=UTC touch -h -a -t $FISH_TOUCHATIME "/${FISH_FILENAME}" 2>/dev/null; then
echo "### 000"
elif [ -n "$FISH_HAVE_PERL" ] &&
perl -e 'utime '$FISH_FILEATIME','$FISH_FILEMTIME',@ARGV;' "/${FISH_FILENAME}" 2>/dev/null; then
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/ftpfs/Makefile.am
^
|
@@ -4,4 +4,5 @@
noinst_LTLIBRARIES = libvfs-ftpfs.la
libvfs_ftpfs_la_SOURCES = \
- ftpfs.c ftpfs.h
+ ftpfs.c ftpfs.h \
+ ftpfs_parse_ls.c
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/ftpfs/ftpfs.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System: FTP file system.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -12,7 +12,7 @@
Pavel Machek, 1998
Yury V. Zaytsev, 2010
Slava Zanko <slavazanko@gmail.com>, 2010, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2010
+ Andrew Borodin <aborodin@vmail.ru>, 2010-2022
This file is part of the Midnight Commander.
@@ -233,7 +233,6 @@
/*** file scope variables ************************************************************************/
-static int ftpfs_errno;
static int code;
static char reply_str[80];
@@ -782,7 +781,6 @@
static gboolean
ftpfs_check_proxy (const char *host)
{
- GSList *npe;
if (ftpfs_proxy_host == NULL || *ftpfs_proxy_host == '\0' || host == NULL || *host == '\0')
return FALSE; /* sanity check */
@@ -796,29 +794,35 @@
if (strchr (host, '.') == NULL)
return FALSE;
- ftpfs_load_no_proxy_list ();
- for (npe = no_proxy; npe != NULL; npe = g_slist_next (npe))
+ if (no_proxy == NULL)
{
- const char *domain = (const char *) npe->data;
+ GSList *npe;
- if (domain[0] == '.')
- {
- size_t ld, lh;
+ ftpfs_load_no_proxy_list ();
- ld = strlen (domain);
- lh = strlen (host);
+ for (npe = no_proxy; npe != NULL; npe = g_slist_next (npe))
+ {
+ const char *domain = (const char *) npe->data;
- while (ld != 0 && lh != 0 && host[lh - 1] == domain[ld - 1])
+ if (domain[0] == '.')
{
- ld--;
- lh--;
- }
+ size_t ld, lh;
- if (ld == 0)
+ ld = strlen (domain);
+ lh = strlen (host);
+
+ while (ld != 0 && lh != 0 && host[lh - 1] == domain[ld - 1])
+ {
+ ld--;
+ lh--;
+ }
+
+ if (ld == 0)
+ return FALSE;
+ }
+ else if (g_ascii_strcasecmp (host, domain) == 0)
return FALSE;
}
- else if (g_ascii_strcasecmp (host, domain) == 0)
- return FALSE;
}
return TRUE;
@@ -855,7 +859,7 @@
if (super->path_element->host == NULL || *super->path_element->host == '\0')
{
vfs_print_message ("%s", _("ftpfs: Invalid host name."));
- ftpfs_errno = EINVAL;
+ me->verrno = EINVAL;
return (-1);
}
@@ -902,7 +906,7 @@
tty_disable_interrupt_key ();
vfs_print_message (_("ftpfs: %s"), gai_strerror (e));
g_free (host);
- ftpfs_errno = EINVAL;
+ me->verrno = EINVAL;
return (-1);
}
@@ -919,7 +923,7 @@
vfs_print_message (_("ftpfs: %s"), unix_error_string (errno));
g_free (host);
freeaddrinfo (res);
- ftpfs_errno = errno;
+ me->verrno = errno;
return (-1);
}
@@ -929,7 +933,7 @@
if (connect (my_socket, curr_res->ai_addr, curr_res->ai_addrlen) >= 0)
break;
- ftpfs_errno = errno;
+ me->verrno = errno;
close (my_socket);
if (errno == EINTR && tty_got_interrupt ())
@@ -994,7 +998,7 @@
sleep (1);
if (tty_got_interrupt ())
{
- /* ftpfs_errno = E; */
+ /* me->verrno = E; */
tty_disable_interrupt_key ();
return 0;
}
@@ -1095,7 +1099,7 @@
}
}
- ftpfs_errno = EIO;
+ me->verrno = EIO;
return NULL;
}
@@ -1233,12 +1237,29 @@
if (addr == NULL)
ERRNOR (ENOMEM, -1);
- if (getnameinfo
- ((struct sockaddr *) &data_addr, data_addrlen, addr, NI_MAXHOST, NULL, 0,
- NI_NUMERICHOST) != 0)
+ res =
+ getnameinfo ((struct sockaddr *) &data_addr, data_addrlen, addr, NI_MAXHOST, NULL, 0,
+ NI_NUMERICHOST);
+ if (res != 0)
{
+ const char *err_str;
+
g_free (addr);
- ERRNOR (EIO, -1);
+
+ if (res == EAI_SYSTEM)
+ {
+ me->verrno = errno;
+ err_str = unix_error_string (me->verrno);
+ }
+ else
+ {
+ me->verrno = EIO;
+ err_str = gai_strerror (res);
+ }
+
+ vfs_print_message (_("ftpfs: could not make address-to-name translation: %s"), err_str);
+
+ return (-1);
}
/* If we are talking to an IPV4 server, try PORT, and, only if it fails, go for EPRT */
@@ -1279,18 +1300,57 @@
ftpfs_init_data_socket (struct vfs_class *me, struct vfs_s_super *super,
struct sockaddr_storage *data_addr, socklen_t * data_addrlen)
{
+ const unsigned int attempts = 10;
+ unsigned int i;
ftp_super_t *ftp_super = FTP_SUPER (super);
int result;
- memset (data_addr, 0, sizeof (*data_addr));
- *data_addrlen = sizeof (*data_addr);
+ for (i = 0; i < attempts; i++)
+ {
+ memset (data_addr, 0, sizeof (*data_addr));
+ *data_addrlen = sizeof (*data_addr);
- if (ftp_super->use_passive_connection)
- result = getpeername (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen);
- else
- result = getsockname (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen);
+ if (ftp_super->use_passive_connection)
+ {
+ result = getpeername (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen);
+ if (result == 0)
+ break;
+
+ me->verrno = errno;
+
+ if (me->verrno == ENOTCONN)
+ {
+ vfs_print_message (_("ftpfs: try reconnect to server, attempt %u"), i);
+ if (ftpfs_reconnect (me, super))
+ continue; /* get name of new socket */
+ }
+ else
+ {
+ /* error -- stop loop */
+ vfs_print_message (_("ftpfs: could not get socket name: %s"),
+ unix_error_string (me->verrno));
+ }
+ }
+ else
+ {
+ result = getsockname (ftp_super->sock, (struct sockaddr *) data_addr, data_addrlen);
+ if (result == 0)
+ break;
+
+ me->verrno = errno;
- if (result == -1)
+ vfs_print_message (_("ftpfs: try reconnect to server, attempt %u"), i);
+ if (ftpfs_reconnect (me, super))
+ continue; /* get name of new socket */
+
+ /* error -- stop loop */
+ vfs_print_message ("%s", _("ftpfs: could not reconnect to server"));
+ }
+
+ i = attempts;
+ }
+
+ if (i >= attempts)
return (-1);
switch (data_addr->ss_family)
@@ -1307,11 +1367,11 @@
}
result = socket (data_addr->ss_family, SOCK_STREAM, IPPROTO_TCP);
-
if (result < 0)
{
- vfs_print_message (_("ftpfs: could not create socket: %s"), unix_error_string (errno));
- return (-1);
+ me->verrno = errno;
+ vfs_print_message (_("ftpfs: could not create socket: %s"), unix_error_string (me->verrno));
+ result = -1;
}
return result;
@@ -1360,10 +1420,15 @@
if (data_sock < 0)
return (-1);
- if ((bind (data_sock, (struct sockaddr *) &data_addr, data_addrlen) == 0) &&
- (getsockname (data_sock, (struct sockaddr *) &data_addr, &data_addrlen) == 0) &&
- (listen (data_sock, 1) == 0) &&
- (ftpfs_setup_active (me, super, data_addr, data_addrlen) != 0))
+ if ((bind (data_sock, (struct sockaddr *) &data_addr, data_addrlen) != 0) ||
+ (getsockname (data_sock, (struct sockaddr *) &data_addr, &data_addrlen) != 0) ||
+ (listen (data_sock, 1) != 0))
+ {
+ close (data_sock);
+ ERRNOR (errno, -1);
+ }
+
+ if (ftpfs_setup_active (me, super, data_addr, data_addrlen) != 0)
return data_sock;
close (data_sock);
@@ -1374,7 +1439,7 @@
ftp_super->proxy !=
NULL ? ftpfs_use_passive_connections_over_proxy : ftpfs_use_passive_connections;
- ftpfs_errno = EIO;
+ me->verrno = EIO;
return (-1);
}
@@ -1407,7 +1472,7 @@
if (j != CONTINUE)
{
close (s);
- return (-1);
+ ERRNOR (EIO, -1);
}
}
@@ -1440,7 +1505,7 @@
tty_enable_interrupt_key ();
data = accept (s, (struct sockaddr *) &from, &fromlen);
if (data < 0)
- ftpfs_errno = errno;
+ me->verrno = errno;
tty_disable_interrupt_key ();
close (s);
if (data < 0)
@@ -1493,14 +1558,14 @@
gint64 start_tim;
char buf[BUF_8K];
- start_tim = g_get_real_time ();
+ start_tim = g_get_monotonic_time ();
/* flush the remaining data */
while (read (dsock, buf, sizeof (buf)) > 0)
{
gint64 tim;
- tim = g_get_real_time ();
+ tim = g_get_monotonic_time ();
if (tim > start_tim + ABORT_TIMEOUT)
{
@@ -1723,13 +1788,18 @@
/* --------------------------------------------------------------------------------------------- */
static int
-ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, char *remote_path)
+ftpfs_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path)
{
- struct vfs_s_entry *ent;
struct vfs_s_super *super = dir->super;
ftp_super_t *ftp_super = FTP_SUPER (super);
- int sock, num_entries = 0;
+ int sock;
+ char lc_buffer[BUF_8K];
+ int res;
gboolean cd_first;
+ GSList *dirlist = NULL;
+ GSList *entlist;
+ GSList *iter;
+ int err_count = 0;
cd_first = ftpfs_first_cd_then_ls || (ftp_super->strict == RFC_STRICT)
|| (strchr (remote_path, ' ') != NULL);
@@ -1742,12 +1812,12 @@
if (cd_first && ftpfs_chdir_internal (me, super, remote_path) != COMPLETE)
{
- ftpfs_errno = ENOENT;
+ me->verrno = ENOENT;
vfs_print_message ("%s", _("ftpfs: CWD failed."));
return (-1);
}
- dir->timestamp = g_get_real_time () + ftpfs_directory_timeout * G_USEC_PER_SEC;
+ dir->timestamp = g_get_monotonic_time () + ftpfs_directory_timeout * G_USEC_PER_SEC;
if (ftp_super->strict == RFC_STRICT)
sock = ftpfs_open_data_connection (me, super, "LIST", 0, TYPE_ASCII, 0);
@@ -1760,7 +1830,7 @@
char *path;
/* Trailing "/." is necessary if remote_path is a symlink */
- path = mc_build_filename (remote_path, ".", (char *) NULL);
+ path = g_strconcat (remote_path, PATH_SEP_STR ".", (char *) NULL);
sock = ftpfs_open_data_connection (me, super, "LIST -la", path, TYPE_ASCII, 0);
g_free (path);
}
@@ -1783,25 +1853,16 @@
ERRNOR (EACCES, -1);
}
- vfs_parse_ls_lga_init ();
-
- while (TRUE)
+ /* read full directory list, then parse it */
+ while ((res = vfs_s_get_line_interruptible (me, lc_buffer, sizeof (lc_buffer), sock)) != 0)
{
- int i;
- size_t count_spaces = 0;
- int res;
- char lc_buffer[BUF_8K] = "\0";
-
- res = vfs_s_get_line_interruptible (me, lc_buffer, sizeof (lc_buffer), sock);
- if (res == 0)
- break;
-
if (res == EINTR)
{
me->verrno = ECONNRESET;
close (sock);
ftp_super->ctl_connection_busy = FALSE;
ftpfs_get_reply (me, ftp_super->sock, NULL, 0);
+ g_slist_free_full (dirlist, g_free);
vfs_print_message (_("%s: failure"), me->name);
return (-1);
}
@@ -1813,28 +1874,19 @@
fflush (me->logfile);
}
- ent = vfs_s_generate_entry (me, NULL, dir, 0);
- i = ent->ino->st.st_nlink;
-
- if (!vfs_parse_ls_lga
- (lc_buffer, &ent->ino->st, &ent->name, &ent->ino->linkname, &count_spaces))
- vfs_s_free_entry (me, ent);
- else
- {
- ent->ino->st.st_nlink = i; /* Ouch, we need to preserve our counts :-( */
- num_entries++;
- vfs_s_store_filename_leading_spaces (ent, count_spaces);
- vfs_s_insert_entry (me, dir, ent);
- }
+ dirlist = g_slist_prepend (dirlist, g_strdup (lc_buffer));
}
close (sock);
ftp_super->ctl_connection_busy = FALSE;
me->verrno = E_REMOTE;
if ((ftpfs_get_reply (me, ftp_super->sock, NULL, 0) != COMPLETE))
+ {
+ g_slist_free_full (dirlist, g_free);
goto fallback;
+ }
- if (num_entries == 0 && !cd_first)
+ if (dirlist == NULL && !cd_first)
{
/* The LIST command may produce an empty output. In such scenario
it is not clear whether this is caused by 'remote_path' being
@@ -1850,7 +1902,15 @@
goto again;
}
- vfs_s_normalize_filename_leading_spaces (dir, vfs_parse_ls_lga_get_final_spaces ());
+ /* parse server's reply */
+ dirlist = g_slist_reverse (dirlist); /* restore order */
+ entlist = ftpfs_parse_long_list (me, dir, dirlist, &err_count);
+ g_slist_free_full (dirlist, g_free);
+
+ for (iter = entlist; iter != NULL; iter = g_slist_next (iter))
+ vfs_s_insert_entry (me, dir, VFS_ENTRY (iter->data));
+
+ g_slist_free (entlist);
if (ftp_super->strict == RFC_AUTODETECT)
ftp_super->strict = RFC_DARING;
@@ -1885,6 +1945,7 @@
if (fstat (h, &s) == -1)
{
+ me->verrno = errno;
close (h);
return (-1);
}
@@ -1913,12 +1974,12 @@
{
if (errno != EINTR)
{
- ftpfs_errno = errno;
+ me->verrno = errno;
goto error_return;
}
if (tty_got_interrupt ())
{
- ftpfs_errno = EINTR;
+ me->verrno = EINTR;
goto error_return;
}
}
@@ -1935,7 +1996,7 @@
if (errno == EINTR && !tty_got_interrupt ())
continue;
- ftpfs_errno = errno;
+ me->verrno = errno;
goto error_return;
}
@@ -2148,7 +2209,7 @@
(void) owner;
(void) group;
- ftpfs_errno = EPERM;
+ me->verrno = EPERM;
return (-1);
#else
/* Everyone knows it is not possible to chown remotely, so why bother them.
@@ -2197,7 +2258,7 @@
g_free (p);
if (r != COMPLETE)
- ftpfs_errno = EIO;
+ me->verrno = EIO;
else
{
g_free (ftp_super->current_dir);
@@ -2280,13 +2341,10 @@
handle = vfs_mkstemps (&vpath, me->name, fh->ino->ent->name);
if (handle == -1)
- {
- vfs_path_free (vpath);
return (-1);
- }
+
close (handle);
- fh->ino->localname = g_strdup (vfs_path_as_str (vpath));
- vfs_path_free (vpath);
+ fh->ino->localname = vfs_path_free (vpath, FALSE);
ftp->append = (flags & O_APPEND) != 0;
}
return 0;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/ftpfs/ftpfs.h
^
|
@@ -6,6 +6,8 @@
#ifndef MC__VFS_FTPFS_H
#define MC__VFS_FTPFS_H
+#include "lib/vfs/xdirentry.h"
+
/*** typedefs(not structures) and defined constants **********************************************/
#define FTP_INET 1
@@ -37,6 +39,8 @@
void ftpfs_init_passwd (void);
void vfs_init_ftpfs (void);
+GSList *ftpfs_parse_long_list (struct vfs_class *me, struct vfs_s_inode *dir, GSList * buf,
+ int *err_ret);
/*** inline functions ****************************************************************************/
#endif
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/ftpfs/ftpfs_parse_ls.c
^
|
@@ -0,0 +1,1237 @@
+/*
+ Virtual File System: FTP file system
+
+ Copyright (C) 2015-2022
+ The Free Software Foundation, Inc.
+
+ Written by: Andrew Borodin <aborodin@vmail.ru>, 2013
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * \brief Source: Virtual File System: FTP file system
+ * \author Andrew Borodin
+ * \date 2015
+ *
+ * Parser of ftp long file list (reply to "LIST -la" command).
+ * Borrowed from lftp project (http://http://lftp.yar.ru/).
+ * Author of original lftp code: Alexander V. Lukyanov (lav@yars.free.net)
+ */
+
+#include <config.h>
+
+#include <ctype.h> /* isdigit() */
+#include <stdio.h> /* sscanf() */
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h> /* mode_t */
+#include <time.h>
+#include <unistd.h>
+#include <sys/types.h>
+
+#include "lib/global.h"
+
+#include "lib/vfs/vfs.h"
+#include "lib/vfs/utilvfs.h"
+
+#include "ftpfs.h"
+
+/*** global variables ****************************************************************************/
+
+/*** file scope macro definitions ****************************************************************/
+
+#define number_of_parsers 7
+
+#define NO_SIZE ((off_t) (-1L))
+#define NO_DATE ((time_t) (-1L))
+
+#define FIRST_TOKEN strtok (line, " \t")
+#define NEXT_TOKEN strtok (NULL, " \t")
+#define FIRST_TOKEN_R strtok_r (line, " \t", &next)
+#define NEXT_TOKEN_R strtok_r (NULL, " \t", &next)
+
+#define ERR2 do { (*err)++; return FALSE; } while (FALSE)
+
+/*** file scope type declarations ****************************************************************/
+
+typedef enum
+{
+ UNKNOWN = 0,
+ DIRECTORY,
+ SYMLINK,
+ NORMAL
+} filetype;
+
+typedef gboolean (*ftpfs_line_parser) (char *line, struct stat * s, char **filename,
+ char **linkname, int *err);
+
+/* formard declarations */
+static gboolean ftpfs_parse_long_list_UNIX (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_NT (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_EPLF (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_MLSD (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_AS400 (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_OS2 (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+static gboolean ftpfs_parse_long_list_MacWebStar (char *line, struct stat *s, char **filename,
+ char **linkname, int *err);
+
+/*** file scope variables ************************************************************************/
+
+static time_t rawnow;
+static struct tm now;
+
+static ftpfs_line_parser line_parsers[number_of_parsers] = {
+ ftpfs_parse_long_list_UNIX,
+ ftpfs_parse_long_list_NT,
+ ftpfs_parse_long_list_EPLF,
+ ftpfs_parse_long_list_MLSD,
+ ftpfs_parse_long_list_AS400,
+ ftpfs_parse_long_list_OS2,
+ ftpfs_parse_long_list_MacWebStar
+};
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static inline uid_t
+ftpfs_get_uid (const char *s)
+{
+ uid_t u;
+
+ if (*s < '0' || *s > '9')
+ u = vfs_finduid (s);
+ else
+ u = (uid_t) atol (s);
+
+ return u;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gid_t
+ftpfs_get_gid (const char *s)
+{
+ gid_t g;
+
+ if (*s < '0' || *s > '9')
+ g = vfs_findgid (s);
+ else
+ g = (gid_t) atol (s);
+
+ return g;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static void
+ftpfs_init_time (void)
+{
+ time (&rawnow);
+ now = *localtime (&rawnow);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static int
+guess_year (int month, int day, int hour, int minute)
+{
+ int year;
+
+ (void) hour;
+ (void) minute;
+
+ year = now.tm_year + 1900;
+
+ if (month * 32 + day > now.tm_mon * 32 + now.tm_mday + 6)
+ year--;
+
+ return year;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+parse_year_or_time (const char *year_or_time, int *year, int *hour, int *minute)
+{
+ if (year_or_time[2] == ':')
+ {
+ if (sscanf (year_or_time, "%2d:%2d", hour, minute) != 2)
+ return FALSE;
+
+ *year = -1;
+ }
+ else
+ {
+ if (sscanf (year_or_time, "%d", year) != 1)
+ return FALSE;
+
+ *hour = *minute = 0;
+ }
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* Converts struct tm to time_t, assuming the data in tm is UTC rather
+ than local timezone (mktime assumes the latter).
+
+ Contributed by Roger Beeman <beeman@cisco.com>, with the help of
+ Mark Baushke <mdb@cisco.com> and the rest of the Gurus at CISCO. */
+static time_t
+mktime_from_utc (const struct tm *t)
+{
+ struct tm tc;
+ time_t tl, tb;
+
+ memcpy (&tc, t, sizeof (struct tm));
+
+ /* UTC times are never DST; if we say -1, we'll introduce odd localtime-
+ * dependant errors. */
+
+ tc.tm_isdst = 0;
+
+ tl = mktime (&tc);
+ if (tl == -1)
+ return (-1);
+
+ tb = mktime (gmtime (&tl));
+
+ return (tl <= tb ? (tl + (tl - tb)) : (tl - (tb - tl)));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static time_t
+ftpfs_convert_date (const char *s)
+{
+ struct tm tm;
+ int year, month, day, hour, minute, second;
+ int skip = 0;
+ int n;
+
+ memset (&tm, 0, sizeof (tm));
+
+ n = sscanf (s, "%4d%n", &year, &skip);
+
+ /* try to workaround server's y2k bug *
+ * I hope in the next 300 years the y2k bug will be finally fixed :) */
+ if (n == 1 && year >= 1910 && year <= 1930)
+ {
+ n = sscanf (s, "%5d%n", &year, &skip);
+ year = year - 19100 + 2000;
+ }
+
+ if (n != 1)
+ return NO_DATE;
+
+ n = sscanf (s + skip, "%2d%2d%2d%2d%2d", &month, &day, &hour, &minute, &second);
+
+ if (n != 5)
+ return NO_DATE;
+
+ tm.tm_year = year - 1900;
+ tm.tm_mon = month - 1;
+ tm.tm_mday = day;
+ tm.tm_hour = hour;
+ tm.tm_min = minute;
+ tm.tm_sec = second;
+
+ return mktime_from_utc (&tm);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ -rwxr-xr-x 1 lav root 4771 Sep 12 1996 install-sh
+ -rw-r--r-- 1 lav root 1349 Feb 2 14:10 lftp.lsm
+ drwxr-xr-x 4 lav root 1024 Feb 22 15:32 lib
+ lrwxrwxrwx 1 lav root 33 Feb 14 17:45 ltconfig -> /usr/share/libtool/ltconfig
+
+ NOTE: group may be missing.
+ */
+
+static gboolean
+parse_ls_line (char *line, struct stat *s, char **filename, char **linkname)
+{
+ char *next = NULL;
+ char *t;
+ mode_t type, mode = 0;
+ char *group_or_size;
+ struct tm date;
+ const char *day_of_month;
+ gboolean year_anomaly = FALSE;
+ char *name;
+
+ /* parse perms */
+ t = FIRST_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+
+ if (!vfs_parse_filetype (t, NULL, &type))
+ return FALSE;
+
+ if (vfs_parse_fileperms (t + 1, NULL, &mode))
+ mode |= type;
+
+ s->st_mode = mode;
+
+ /* link count */
+ t = NEXT_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+ s->st_nlink = atol (t);
+
+ /* user */
+ t = NEXT_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+
+ s->st_uid = ftpfs_get_uid (t);
+
+ /* group or size */
+ group_or_size = NEXT_TOKEN_R;
+
+ /* size or month */
+ t = NEXT_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+ if (isdigit ((unsigned char) *t))
+ {
+ /* it's size, so the previous was group: */
+ long long size;
+ int n;
+
+ s->st_gid = ftpfs_get_gid (group_or_size);
+
+ if (sscanf (t, "%lld%n", &size, &n) == 1 && t[n] == '\0')
+ s->st_size = (off_t) size;
+ t = NEXT_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+ }
+ else
+ {
+ /* it was month, so the previous was size: */
+ long long size;
+ int n;
+
+ if (sscanf (group_or_size, "%lld%n", &size, &n) == 1 && group_or_size[n] == '\0')
+ s->st_size = (off_t) size;
+ }
+
+#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
+ s->st_blksize = 512;
+#endif
+#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
+ s->st_blocks = (s->st_size + 511) / 512;
+#endif
+
+ memset (&date, 0, sizeof (date));
+
+ if (!vfs_parse_month (t, &date))
+ date.tm_mon = 0;
+
+ day_of_month = NEXT_TOKEN_R;
+ if (day_of_month == NULL)
+ return FALSE;
+ date.tm_mday = atoi (day_of_month);
+
+ /* time or year */
+ t = NEXT_TOKEN_R;
+ if (t == NULL)
+ return FALSE;
+ date.tm_isdst = -1;
+ date.tm_hour = date.tm_min = 0;
+ date.tm_sec = 30;
+
+ if (sscanf (t, "%2d:%2d", &date.tm_hour, &date.tm_min) == 2)
+ date.tm_year = guess_year (date.tm_mon, date.tm_mday, date.tm_hour, date.tm_min) - 1900;
+ else
+ {
+ if (day_of_month + strlen (day_of_month) + 1 == t)
+ year_anomaly = TRUE;
+ date.tm_year = atoi (t) - 1900;
+ /* We don't know the hour. Set it to something other than 0, or
+ * DST -1 will end up changing the date. */
+ date.tm_hour = 12;
+ date.tm_min = 0;
+ date.tm_sec = 0;
+ }
+
+ s->st_mtime = mktime (&date);
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+
+ name = strtok_r (NULL, "", &next);
+ if (name == NULL)
+ return FALSE;
+
+ /* there are ls which output extra space after year. */
+ if (year_anomaly && *name == ' ')
+ name++;
+
+ if (!S_ISLNK (s->st_mode))
+ *linkname = NULL;
+ else
+ {
+ char *arrow;
+
+ for (arrow = name; (arrow = strstr (arrow, " -> ")) != NULL; arrow++)
+ if (arrow != name && arrow[4] != '\0')
+ {
+ *arrow = '\0';
+ *linkname = g_strdup (arrow + 4);
+ break;
+ }
+ }
+
+ *filename = g_strdup (name);
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+ftpfs_parse_long_list_UNIX (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ int tmp;
+ gboolean ret;
+
+ if (sscanf (line, "total %d", &tmp) == 1)
+ return FALSE;
+
+ if (strncasecmp (line, "Status of ", 10) == 0)
+ return FALSE; /* STAT output. */
+ if (strchr ("bcpsD", line[0]) != NULL) /* block, char, pipe, socket, Door. */
+ return FALSE;
+
+ ret = parse_ls_line (line, s, filename, linkname);
+ if (!ret)
+ (*err)++;
+
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ 07-13-98 09:06PM <DIR> aix
+ 07-13-98 09:06PM <DIR> hpux
+ 07-13-98 09:06PM <DIR> linux
+ 07-13-98 09:06PM <DIR> ncr
+ 07-13-98 09:06PM <DIR> solaris
+ 03-18-98 06:01AM 2109440 nlxb318e.tar
+ 07-02-98 11:17AM 13844 Whatsnew.txt
+ */
+
+static gboolean
+ftpfs_parse_long_list_NT (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ char *t;
+ int month, day, year, hour, minute;
+ char am;
+ struct tm tms;
+ long long size;
+
+ t = FIRST_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (sscanf (t, "%2d-%2d-%2d", &month, &day, &year) != 3)
+ ERR2;
+ if (year >= 70)
+ year += 1900;
+ else
+ year += 2000;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ am = 'A'; /* AM/PM is optional */
+ if (sscanf (t, "%2d:%2d%c", &hour, &minute, &am) < 2)
+ ERR2;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ if (am == 'P') /* PM - after noon */
+ {
+ hour += 12;
+ if (hour == 24)
+ hour = 0;
+ }
+
+ tms.tm_sec = 30; /* seconds after the minute [0, 61] */
+ tms.tm_min = minute; /* minutes after the hour [0, 59] */
+ tms.tm_hour = hour; /* hour since midnight [0, 23] */
+ tms.tm_mday = day; /* day of the month [1, 31] */
+ tms.tm_mon = month - 1; /* months since January [0, 11] */
+ tms.tm_year = year - 1900; /* years since 1900 */
+ tms.tm_isdst = -1;
+
+
+ s->st_mtime = mktime (&tms);
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+
+ if (strcmp (t, "<DIR>") == 0)
+ s->st_mode = S_IFDIR;
+ else
+ {
+ s->st_mode = S_IFREG;
+ if (sscanf (t, "%lld", &size) != 1)
+ ERR2;
+ s->st_size = (off_t) size;
+ }
+
+ t = strtok (NULL, "");
+ if (t == NULL)
+ ERR2;
+ while (*t == ' ')
+ t++;
+ if (*t == '\0')
+ ERR2;
+
+ *filename = g_strdup (t);
+ *linkname = NULL;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ +i774.71425,m951188401,/, users
+ +i774.49602,m917883130,r,s79126, jgr_www2.exe
+
+ starts with +
+ comma separated
+ first character of field is type:
+ i - ?
+ m - modification time
+ / - means directory
+ r - means plain file
+ s - size
+ up - permissions in octal
+ \t - file name follows.
+ */
+
+static gboolean
+ftpfs_parse_long_list_EPLF (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ size_t len;
+ const char *b;
+ const char *name = NULL;
+ size_t name_len = 0;
+ off_t size = NO_SIZE;
+ time_t date = NO_DATE;
+ long date_l;
+ long long size_ll;
+ gboolean dir = FALSE;
+ gboolean type_known = FALSE;
+ int perms = -1;
+ const char *scan;
+ ssize_t scan_len;
+
+ len = strlen (line);
+ b = line;
+
+ if (len < 2 || b[0] != '+')
+ ERR2;
+
+ scan = b + 1;
+ scan_len = len - 1;
+
+ while (scan != NULL && scan_len > 0)
+ {
+ const char *comma;
+
+ switch (*scan)
+ {
+ case '\t': /* the rest is file name. */
+ name = scan + 1;
+ name_len = scan_len - 1;
+ scan = NULL;
+ break;
+ case 's':
+ if (sscanf (scan + 1, "%lld", &size_ll) != 1)
+ break;
+ size = size_ll;
+ break;
+ case 'm':
+ if (sscanf (scan + 1, "%ld", &date_l) != 1)
+ break;
+ date = date_l;
+ break;
+ case '/':
+ dir = TRUE;
+ type_known = TRUE;
+ break;
+ case 'r':
+ dir = FALSE;
+ type_known = TRUE;
+ break;
+ case 'i':
+ break;
+ case 'u':
+ if (scan[1] == 'p') /* permissions. */
+ if (sscanf (scan + 2, "%o", (unsigned int *) &perms) != 1)
+ perms = -1;
+ break;
+ default:
+ name = NULL;
+ scan = NULL;
+ break;
+ }
+ if (scan == NULL || scan_len == 0)
+ break;
+
+ comma = (const char *) memchr (scan, ',', scan_len);
+ if (comma == NULL)
+ break;
+
+ scan_len -= comma + 1 - scan;
+ scan = comma + 1;
+ }
+
+ if (name == NULL || !type_known)
+ ERR2;
+
+ *filename = g_strndup (name, name_len);
+ *linkname = NULL;
+
+ if (size != NO_SIZE)
+ s->st_size = size;
+ if (date != NO_DATE)
+ {
+ s->st_mtime = date;
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+ }
+ if (type_known)
+ s->st_mode = dir ? S_IFDIR : S_IFREG;
+ if (perms != -1)
+ s->st_mode |= perms; /* FIXME */
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*
+ Type=cdir;Modify=20021029173810;Perm=el;Unique=BP8AAjJufAA; /
+ Type=pdir;Modify=20021029173810;Perm=el;Unique=BP8AAjJufAA; ..
+ Type=dir;Modify=20010118144705;Perm=e;Unique=BP8AAjNufAA; bin
+ Type=dir;Modify=19981021003019;Perm=el;Unique=BP8AAlhufAA; pub
+ Type=file;Size=12303;Modify=19970124132601;Perm=r;Unique=BP8AAo9ufAA; mailserv.FAQ
+ modify=20161215062118;perm=flcdmpe;type=dir;UNIX.group=503;UNIX.mode=0700; directory-name
+ modify=20161213121618;perm=adfrw;size=6369064;type=file;UNIX.group=503;UNIX.mode=0644; file-name
+ modify=20120103123744;perm=adfrw;size=11;type=OS.unix=symlink;UNIX.group=0;UNIX.mode=0777; www
+ */
+
+static gboolean
+ftpfs_parse_long_list_MLSD (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ const char *name = NULL;
+ off_t size = NO_SIZE;
+ time_t date = NO_DATE;
+ const char *owner = NULL;
+ const char *group = NULL;
+ filetype type = UNKNOWN;
+ int perms = -1;
+ char *space;
+ char *tok;
+
+ space = strstr (line, "; ");
+ if (space != NULL)
+ {
+ name = space + 2;
+ *space = '\0';
+ }
+ else
+ {
+ /* NcFTPd does not put a semicolon after last fact, workaround it. */
+ space = strchr (line, ' ');
+ if (space == NULL)
+ ERR2;
+ name = space + 1;
+ *space = '\0';
+ }
+
+ for (tok = strtok (line, ";"); tok != NULL; tok = strtok (NULL, ";"))
+ {
+ if (strcasecmp (tok, "Type=cdir") == 0
+ || strcasecmp (tok, "Type=pdir") == 0 || strcasecmp (tok, "Type=dir") == 0)
+ {
+ type = DIRECTORY;
+ continue;
+ }
+ if (strcasecmp (tok, "Type=file") == 0)
+ {
+ type = NORMAL;
+ continue;
+ }
+ if (strcasecmp (tok, "Type=OS.unix=symlink") == 0)
+ {
+ type = SYMLINK;
+ continue;
+ }
+ if (strncasecmp (tok, "Modify=", 7) == 0)
+ {
+ date = ftpfs_convert_date (tok + 7);
+ continue;
+ }
+ if (strncasecmp (tok, "Size=", 5) == 0)
+ {
+ long long size_ll;
+
+ if (sscanf (tok + 5, "%lld", &size_ll) == 1)
+ size = size_ll;
+ continue;
+ }
+ if (strncasecmp (tok, "Perm=", 5) == 0)
+ {
+ perms = 0;
+ for (tok += 5; *tok != '\0'; tok++)
+ {
+ switch (g_ascii_tolower (*tok))
+ {
+ case 'e':
+ perms |= 0111;
+ break;
+ case 'l':
+ perms |= 0444;
+ break;
+ case 'r':
+ perms |= 0444;
+ break;
+ case 'c':
+ perms |= 0200;
+ break;
+ case 'w':
+ perms |= 0200;
+ break;
+ default:
+ break;
+ }
+ }
+ continue;
+ }
+ if (strncasecmp (tok, "UNIX.mode=", 10) == 0)
+ {
+ if (sscanf (tok + 10, "%o", (unsigned int *) &perms) != 1)
+ perms = -1;
+ continue;
+ }
+ if (strncasecmp (tok, "UNIX.owner=", 11) == 0)
+ {
+ owner = tok + 11;
+ continue;
+ }
+ if (strncasecmp (tok, "UNIX.group=", 11) == 0)
+ {
+ group = tok + 11;
+ continue;
+ }
+ if (strncasecmp (tok, "UNIX.uid=", 9) == 0)
+ {
+ if (owner == NULL)
+ owner = tok + 9;
+ continue;
+ }
+ if (strncasecmp (tok, "UNIX.gid=", 9) == 0)
+ {
+ if (group == NULL)
+ group = tok + 9;
+ continue;
+ }
+ }
+ if (name == NULL || name[0] == '\0' || type == UNKNOWN)
+ ERR2;
+
+ *filename = g_strdup (name);
+ *linkname = NULL;
+
+ if (size != NO_SIZE)
+ s->st_size = size;
+ if (date != NO_DATE)
+ {
+ s->st_mtime = date;
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+ }
+ switch (type)
+ {
+ case DIRECTORY:
+ s->st_mode = S_IFDIR;
+ break;
+ case SYMLINK:
+ s->st_mode = S_IFLNK;
+ break;
+ case NORMAL:
+ s->st_mode = S_IFREG;
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+ if (perms != -1)
+ s->st_mode |= perms; /* FIXME */
+ if (owner != NULL)
+ s->st_uid = ftpfs_get_uid (owner);
+ if (group != NULL)
+ s->st_gid = ftpfs_get_gid (group);
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ ASUSER 8192 04/26/05 13:54:16 *DIR dir/
+ ASUSER 8192 04/26/05 13:57:34 *DIR dir1/
+ ASUSER 365255 02/28/01 15:41:40 *STMF readme.txt
+ ASUSER 8489625 03/18/03 09:37:00 *STMF saved.zip
+ ASUSER 365255 02/28/01 15:41:40 *STMF unist.old
+ */
+
+static gboolean
+ftpfs_parse_long_list_AS400 (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ char *t;
+ char *user;
+ long long size;
+ int month, day, year, hour, minute, second;
+ struct tm tms;
+ time_t mtime;
+ mode_t type;
+ char *slash;
+
+ t = FIRST_TOKEN;
+ if (t == NULL)
+ ERR2;
+ user = t;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (sscanf (t, "%lld", &size) != 1)
+ ERR2;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (sscanf (t, "%2d/%2d/%2d", &month, &day, &year) != 3)
+ ERR2;
+ if (year >= 70)
+ year += 1900;
+ else
+ year += 2000;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (sscanf (t, "%2d:%2d:%2d", &hour, &minute, &second) != 3)
+ ERR2;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ tms.tm_sec = second; /* seconds after the minute [0, 61] */
+ tms.tm_min = minute; /* minutes after the hour [0, 59] */
+ tms.tm_hour = hour; /* hour since midnight [0, 23] */
+ tms.tm_mday = day; /* day of the month [1, 31] */
+ tms.tm_mon = month - 1; /* months since January [0, 11] */
+ tms.tm_year = year - 1900; /* years since 1900 */
+ tms.tm_isdst = -1;
+ mtime = mktime (&tms);
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (strcmp (t, "*DIR") == 0)
+ type = S_IFDIR;
+ else
+ type = S_IFREG;
+
+ t = strtok (NULL, "");
+ if (t == NULL)
+ ERR2;
+ while (*t == ' ')
+ t++;
+ if (*t == '\0')
+ ERR2;
+
+ *linkname = NULL;
+
+ slash = strchr (t, '/');
+ if (slash != NULL)
+ {
+ if (slash == t)
+ return FALSE;
+
+ *slash = '\0';
+ type = S_IFDIR;
+ if (slash[1] != '\0')
+ {
+ *filename = g_strdup (t);
+ s->st_mode = type; /* FIXME */
+ return TRUE;
+ }
+ }
+
+ *filename = g_strdup (t);
+ s->st_mode = type;
+ s->st_size = (off_t) size;
+ s->st_mtime = mtime;
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+ s->st_uid = ftpfs_get_uid (user);
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ 0 DIR 06-27-96 11:57 PROTOCOL
+ 169 11-29-94 09:20 SYSLEVEL.MPT
+ */
+
+static gboolean
+ftpfs_parse_long_list_OS2 (char *line, struct stat *s, char **filename, char **linkname, int *err)
+{
+ char *t;
+ long long size;
+ int month, day, year, hour, minute;
+ struct tm tms;
+
+ t = FIRST_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ if (sscanf (t, "%lld", &size) != 1)
+ ERR2;
+ s->st_size = (off_t) size;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ s->st_mode = S_IFREG;
+ if (strcmp (t, "DIR") == 0)
+ {
+ s->st_mode = S_IFDIR;
+ t = NEXT_TOKEN;
+
+ if (t == NULL)
+ ERR2;
+ }
+
+ if (sscanf (t, "%2d-%2d-%2d", &month, &day, &year) != 3)
+ ERR2;
+ if (year >= 70)
+ year += 1900;
+ else
+ year += 2000;
+
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (sscanf (t, "%2d:%2d", &hour, &minute) != 3)
+ ERR2;
+
+ tms.tm_sec = 30; /* seconds after the minute [0, 61] */
+ tms.tm_min = minute; /* minutes after the hour [0, 59] */
+ tms.tm_hour = hour; /* hour since midnight [0, 23] */
+ tms.tm_mday = day; /* day of the month [1, 31] */
+ tms.tm_mon = month - 1; /* months since January [0, 11] */
+ tms.tm_year = year - 1900; /* years since 1900 */
+ tms.tm_isdst = -1;
+ s->st_mtime = mktime (&tms);
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+
+ t = strtok (NULL, "");
+ if (t == NULL)
+ ERR2;
+ while (*t == ' ')
+ t++;
+ if (*t == '\0')
+ ERR2;
+ *filename = g_strdup (t);
+ *linkname = NULL;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static gboolean
+ftpfs_parse_long_list_MacWebStar (char *line, struct stat *s, char **filename,
+ char **linkname, int *err)
+{
+ char *t;
+ mode_t type, mode;
+ struct tm date;
+ const char *day_of_month;
+ char *name;
+
+ t = FIRST_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ if (!vfs_parse_filetype (t, NULL, &type))
+ ERR2;
+
+ s->st_mode = type;
+
+ if (!vfs_parse_fileperms (t + 1, NULL, &mode))
+ ERR2;
+ /* permissions are meaningless here. */
+
+ /* "folder" or 0 */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ if (strcmp (t, "folder") != 0)
+ {
+ long long size;
+
+ /* size? */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ /* size */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (!isdigit ((unsigned char) *t))
+ ERR2;
+
+ if (sscanf (t, "%lld", &size) == 1)
+ s->st_size = (off_t) size;
+ }
+ else
+ {
+ /* ?? */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ }
+
+ /* month */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+
+ memset (&date, 0, sizeof (date));
+
+ if (!vfs_parse_month (t, &date))
+ ERR2;
+
+ day_of_month = NEXT_TOKEN;
+ if (day_of_month == NULL)
+ ERR2;
+
+ date.tm_mday = atoi (day_of_month);
+
+ /* time or year */
+ t = NEXT_TOKEN;
+ if (t == NULL)
+ ERR2;
+ if (!parse_year_or_time (t, &date.tm_year, &date.tm_hour, &date.tm_min))
+ ERR2;
+
+ date.tm_isdst = -1;
+ date.tm_sec = 30;
+ if (date.tm_year == -1)
+ date.tm_year = guess_year (date.tm_mon, date.tm_mday, date.tm_hour, date.tm_min) - 1900;
+ else
+ date.tm_hour = 12;
+
+ s->st_mtime = mktime (&date);
+ /* Use resulting time value */
+ s->st_atime = s->st_ctime = s->st_mtime;
+
+ name = strtok (NULL, "");
+ if (name == NULL)
+ ERR2;
+
+ /* no symlinks on Mac, but anyway. */
+ if (!S_ISLNK (s->st_mode))
+ *linkname = NULL;
+ else
+ {
+ char *arrow;
+
+ for (arrow = name; (arrow = strstr (arrow, " -> ")) != NULL; arrow++)
+ if (arrow != name && arrow[4] != '\0')
+ {
+ *arrow = '\0';
+ *linkname = g_strdup (arrow + 4);
+ break;
+ }
+ }
+
+ *filename = g_strdup (name);
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+GSList *
+ftpfs_parse_long_list (struct vfs_class * me, struct vfs_s_inode * dir, GSList * buf, int *err_ret)
+{
+ int err[number_of_parsers];
+ GSList *set[number_of_parsers]; /* arrays of struct vfs_s_entry */
+ size_t i;
+ GSList *bufp;
+ ftpfs_line_parser guessed_parser = NULL;
+ GSList **the_set = NULL;
+ int *the_err = NULL;
+ int *best_err1 = &err[0];
+ int *best_err2 = &err[1];
+
+ ftpfs_init_time ();
+
+ if (err_ret != NULL)
+ *err_ret = 0;
+
+ memset (&err, 0, sizeof (err));
+ memset (&set, 0, sizeof (set));
+
+ for (bufp = buf; bufp != NULL; bufp = g_slist_next (bufp))
+ {
+ char *b = (char *) bufp->data;
+ size_t blen;
+
+ blen = strlen (b);
+
+ if (b[blen - 1] == '\r')
+ {
+ b[blen - 1] = '\0';
+ blen--;
+ }
+
+ if (blen == 0)
+ continue;
+
+ if (guessed_parser == NULL)
+ {
+ for (i = 0; i < number_of_parsers; i++)
+ {
+ struct vfs_s_entry *info;
+ gboolean ok;
+ char *tmp_line;
+ int nlink;
+
+ /* parser can clobber the line - work on a copy */
+ tmp_line = g_strndup (b, blen);
+
+ info = vfs_s_generate_entry (me, NULL, dir, 0);
+ nlink = info->ino->st.st_nlink;
+ ok = (*line_parsers[i]) (tmp_line, &info->ino->st, &info->name,
+ &info->ino->linkname, &err[i]);
+ if (ok && strchr (info->name, '/') == NULL)
+ {
+ info->ino->st.st_nlink = nlink; /* Ouch, we need to preserve our counts :-( */
+ set[i] = g_slist_prepend (set[i], info);
+ }
+ else
+ vfs_s_free_entry (me, info);
+
+ g_free (tmp_line);
+
+ if (*best_err1 > err[i])
+ best_err1 = &err[i];
+ if (*best_err2 > err[i] && best_err1 != &err[i])
+ best_err2 = &err[i];
+
+ if (*best_err1 > 16)
+ goto leave; /* too many errors with best parser. */
+ }
+
+ if (*best_err2 > (*best_err1 + 1) * 16)
+ {
+ i = (size_t) (best_err1 - err);
+ guessed_parser = line_parsers[i];
+ the_set = &set[i];
+ the_err = &err[i];
+ }
+ }
+ else
+ {
+ struct vfs_s_entry *info;
+ gboolean ok;
+ char *tmp_line;
+ int nlink;
+
+ /* parser can clobber the line - work on a copy */
+ tmp_line = g_strndup (b, blen);
+
+ info = vfs_s_generate_entry (me, NULL, dir, 0);
+ nlink = info->ino->st.st_nlink;
+ ok = guessed_parser (tmp_line, &info->ino->st, &info->name, &info->ino->linkname,
+ the_err);
+ if (ok && strchr (info->name, '/') == NULL)
+ {
+ info->ino->st.st_nlink = nlink; /* Ouch, we need to preserve our counts :-( */
+ *the_set = g_slist_prepend (*the_set, info);
+ }
+ else
+ vfs_s_free_entry (me, info);
+
+ g_free (tmp_line);
+ }
+ }
+
+ if (the_set == NULL)
+ {
+ i = best_err1 - err;
+ the_set = &set[i];
+ the_err = &err[i];
+ }
+
+ leave:
+ for (i = 0; i < number_of_parsers; i++)
+ if (&set[i] != the_set)
+ {
+ for (bufp = set[i]; bufp != NULL; bufp = g_slist_next (bufp))
+ vfs_s_free_entry (me, VFS_ENTRY (bufp->data));
+
+ g_slist_free (set[i]);
+ }
+
+ if (err_ret != NULL && the_err != NULL)
+ *err_ret = *the_err;
+
+ return the_set != NULL ? g_slist_reverse (*the_set) : NULL;
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/local/local.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System: local file system.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -200,7 +200,7 @@
path_element = vfs_path_get_by_index (vpath, -1);
#ifdef HAVE_UTIMENSAT
- ret = utimensat (AT_FDCWD, path_element->path, *times, 0);
+ ret = utimensat (AT_FDCWD, path_element->path, *times, AT_SYMLINK_NOFOLLOW);
#else
ret = utime (path_element->path, times);
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/plugins_init.c
^
|
@@ -1,7 +1,7 @@
/*
Init VFS plugins.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -55,17 +55,13 @@
#endif
#ifdef ENABLE_VFS_SFTP
-#include "sftpfs/init.h"
+#include "sftpfs/sftpfs.h"
#endif
#ifdef ENABLE_VFS_SFS
#include "sfs/sfs.h"
#endif
-#ifdef ENABLE_VFS_SMB
-#include "smbfs/smbfs.h"
-#endif
-
#ifdef ENABLE_VFS_TAR
#include "tar/tar.h"
#endif
@@ -122,10 +118,6 @@
#ifdef ENABLE_VFS_FISH
vfs_init_fish ();
#endif /* ENABLE_VFS_FISH */
-#ifdef ENABLE_VFS_SMB
- vfs_init_smbfs ();
-#endif /* ENABLE_VFS_SMB */
-
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sfs/sfs.c
^
|
@@ -1,7 +1,7 @@
/*
Single File fileSystem
- Copyright (C) 1998-2020
+ Copyright (C) 1998-2022
Free Software Foundation, Inc.
Written by:
@@ -140,6 +140,8 @@
vfs_path_t *pname; /* name of parent archive */
char *pqname; /* name of parent archive, quoted */
const vfs_path_element_t *path_element;
+ mc_pipe_t *pip;
+ GError *error = NULL;
path_element = vfs_path_get_by_index (vpath, -1);
pname = vfs_path_clone (vpath);
@@ -152,7 +154,7 @@
if ((sfs_info[w].flags & F_1) == 0
&& strcmp (vfs_path_get_last_path_str (pname), PATH_SEP_STR) != 0)
{
- vfs_path_free (pname);
+ vfs_path_free (pname, TRUE);
return (-1);
}
@@ -166,15 +168,15 @@
s = mc_getlocalcopy (pname);
if (s == NULL)
{
- vfs_path_free (pname);
+ vfs_path_free (pname, TRUE);
return (-1);
}
pqname = name_quote (vfs_path_get_last_path_str (s), FALSE);
- vfs_path_free (s);
+ vfs_path_free (s, TRUE);
}
- vfs_path_free (pname);
+ vfs_path_free (pname, TRUE);
for (s_iter = sfs_info[w].command; *s_iter != '\0'; s_iter++)
{
@@ -216,14 +218,31 @@
}
g_free (pqname);
- open_error_pipe ();
- if (my_system (EXECUTE_AS_SHELL, "/bin/sh", pad))
+
+ /* don't read stdout */
+ pip = mc_popen (pad, FALSE, TRUE, &error);
+ if (pip == NULL)
{
- close_error_pipe (D_ERROR, NULL);
+ message (D_ERROR, MSG_ERROR, _("SFS virtual file system:\n%s"), error->message);
+ g_error_free (error);
return (-1);
}
- close_error_pipe (D_NORMAL, NULL);
+ pip->err.null_term = TRUE;
+
+ mc_pread (pip, &error);
+ if (error != NULL)
+ {
+ message (D_ERROR, MSG_ERROR, _("SFS virtual file system:\n%s"), error->message);
+ g_error_free (error);
+ mc_pclose (pip, NULL);
+ return (-1);
+ }
+
+ if (pip->err.len > 0)
+ message (D_ERROR, MSG_ERROR, _("SFS virtual file system:\n%s"), pip->err.buf);
+
+ mc_pclose (pip, NULL);
return 0; /* OK */
}
@@ -259,16 +278,15 @@
{
cf = g_new (cachedfile, 1);
cf->name = g_strdup (vfs_path_as_str (vpath));
- cf->cache = g_strdup (vfs_path_as_str (cache_vpath));
+ cf->cache = vfs_path_free (cache_vpath, FALSE);
head = g_slist_prepend (head, cf);
- vfs_path_free (cache_vpath);
vfs_stamp_create (vfs_sfs_ops, (cachedfile *) head->data);
return cf->cache;
}
mc_unlink (cache_vpath);
- vfs_path_free (cache_vpath);
+ vfs_path_free (cache_vpath, TRUE);
return "/I_MUST_NOT_EXIST";
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/Makefile.am
^
|
@@ -8,7 +8,5 @@
connection.c \
dir.c \
file.c \
- init.c init.h \
internal.c internal.h \
- vfs_class.c \
- vfs_subclass.c
+ sftpfs.c sftpfs.h
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/config_parser.c
^
|
@@ -1,7 +1,7 @@
/* Virtual File System: SFTP file system.
The SSH config parser
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -120,14 +120,12 @@
sftpfs_correct_file_name (const char *filename)
{
vfs_path_t *vpath;
- char *ret_value;
+ char *fn;
- ret_value = tilde_expand (filename);
- vpath = vfs_path_from_str (ret_value);
- g_free (ret_value);
- ret_value = g_strdup (vfs_path_as_str (vpath));
- vfs_path_free (vpath);
- return ret_value;
+ fn = tilde_expand (filename);
+ vpath = vfs_path_from_str (fn);
+ g_free (fn);
+ return vfs_path_free (vpath, FALSE);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/connection.c
^
|
@@ -1,7 +1,7 @@
/* Virtual File System: SFTP file system.
The internal functions: connections
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -42,6 +42,8 @@
#include "lib/util.h"
#include "lib/tty/tty.h" /* tty_enable_interrupt_key () */
#include "lib/vfs/utilvfs.h"
+#include "lib/mcconfig.h" /* mc_config_get_home_dir () */
+#include "lib/widget.h" /* query_dialog () */
#include "internal.h"
@@ -49,10 +51,37 @@
/*** file scope macro definitions ****************************************************************/
+#define SHA1_DIGEST_LENGTH 20
+
/*** file scope type declarations ****************************************************************/
/*** file scope variables ************************************************************************/
+#ifdef LIBSSH2_KNOWNHOST_KEY_ED25519
+static const char *const hostkey_method_ssh_ed25519 = "ssh-ed25519";
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_521
+static const char *const hostkey_method_ssh_ecdsa_521 = "ecdsa-sha2-nistp521";
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_384
+static const char *const hostkey_method_ssh_ecdsa_384 = "ecdsa-sha2-nistp384";
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_256
+static const char *const hostkey_method_ssh_ecdsa_256 = "ecdsa-sha2-nistp256";
+#endif
+static const char *const hostkey_method_ssh_rsa = "ssh-rsa";
+static const char *const hostkey_method_ssh_dss = "ssh-dss";
+
+/**
+ *
+ * The current implementation of know host key checking has following limitations:
+ *
+ * - Only plain-text entries are supported (`HashKnownHosts no` OpenSSH option)
+ * - Only HEX-encoded SHA1 fingerprint display is supported (`FingerprintHash` OpenSSH option)
+ * - Resolved IP addresses are *not* saved/validated along with the hostnames
+ *
+ */
+
static const char *kbi_passwd = NULL;
static const struct vfs_s_super *kbi_super = NULL;
@@ -70,9 +99,12 @@
static int
sftpfs_open_socket (struct vfs_s_super *super, GError ** mcerror)
{
+ sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
struct addrinfo hints, *res = NULL, *curr_res;
int my_socket = 0;
char port[BUF_TINY];
+ static char address_ipv4[INET_ADDRSTRLEN];
+ static char address_ipv6[INET6_ADDRSTRLEN];
int e;
mc_return_val_if_error (mcerror, LIBSSH2_INVALID_SOCKET);
@@ -120,6 +152,30 @@
{
int save_errno;
+ switch (curr_res->ai_addr->sa_family)
+ {
+ case AF_INET:
+ sftpfs_super->ip_address =
+ inet_ntop (AF_INET, &((struct sockaddr_in *) curr_res->ai_addr)->sin_addr,
+ address_ipv4, INET_ADDRSTRLEN);
+ break;
+ case AF_INET6:
+ sftpfs_super->ip_address =
+ inet_ntop (AF_INET6, &((struct sockaddr_in6 *) curr_res->ai_addr)->sin6_addr,
+ address_ipv6, INET6_ADDRSTRLEN);
+ break;
+ default:
+ sftpfs_super->ip_address = NULL;
+ }
+
+ if (sftpfs_super->ip_address == NULL)
+ {
+ mc_propagate_error (mcerror, 0, "%s",
+ _("sftp: failed to convert remote host IP address into text form"));
+ my_socket = LIBSSH2_INVALID_SOCKET;
+ goto ret;
+ }
+
my_socket = socket (curr_res->ai_family, curr_res->ai_socktype, curr_res->ai_protocol);
if (my_socket < 0)
@@ -161,8 +217,359 @@
}
/* --------------------------------------------------------------------------------------------- */
+
/**
- * Recognize authenticaion types supported by remote side and filling internal 'super' structure by
+ * Read ~/.ssh/known_hosts file.
+ *
+ * @param super connection data
+ * @param mcerror pointer to the error handler
+ * @return TRUE on success, FALSE otherwise
+ *
+ * Thanks the Curl project for the code used in this function.
+ */
+static gboolean
+sftpfs_read_known_hosts (struct vfs_s_super *super, GError ** mcerror)
+{
+ sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
+ struct libssh2_knownhost *store = NULL;
+ int rc;
+ gboolean found = FALSE;
+
+ sftpfs_super->known_hosts = libssh2_knownhost_init (sftpfs_super->session);
+ if (sftpfs_super->known_hosts == NULL)
+ goto err;
+
+ sftpfs_super->known_hosts_file =
+ mc_build_filename (mc_config_get_home_dir (), ".ssh", "known_hosts", (char *) NULL);
+ rc = libssh2_knownhost_readfile (sftpfs_super->known_hosts, sftpfs_super->known_hosts_file,
+ LIBSSH2_KNOWNHOST_FILE_OPENSSH);
+ if (rc > 0)
+ {
+ const char *kh_name_end = NULL;
+
+ while (!found && libssh2_knownhost_get (sftpfs_super->known_hosts, &store, store) == 0)
+ {
+ /* For non-standard ports, the name will be enclosed in
+ * square brackets, followed by a colon and the port */
+ if (store == NULL)
+ continue;
+
+ if (store->name == NULL)
+ found = TRUE;
+ else if (store->name[0] != '[')
+ found = strcmp (store->name, super->path_element->host) == 0;
+ else
+ {
+ int port;
+
+ kh_name_end = strstr (store->name, "]:");
+ if (kh_name_end == NULL)
+ /* Invalid host pattern */
+ continue;
+
+ port = (int) g_ascii_strtoll (kh_name_end + 2, NULL, 10);
+ if (port == super->path_element->port)
+ {
+ size_t kh_name_size;
+
+ kh_name_size = strlen (store->name) - 1 - strlen (kh_name_end);
+ found = strncmp (store->name + 1, super->path_element->host, kh_name_size) == 0;
+ }
+ }
+ }
+ }
+
+ if (found)
+ {
+ int mask;
+ const char *hostkey_method = NULL;
+
+ mask = store->typemask & LIBSSH2_KNOWNHOST_KEY_MASK;
+
+ switch (mask)
+ {
+#ifdef LIBSSH2_KNOWNHOST_KEY_ED25519
+ case LIBSSH2_KNOWNHOST_KEY_ED25519:
+ hostkey_method = hostkey_method_ssh_ed25519;
+ break;
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_521
+ case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
+ hostkey_method = hostkey_method_ssh_ecdsa_521;
+ break;
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_384
+ case LIBSSH2_KNOWNHOST_KEY_ECDSA_384:
+ hostkey_method = hostkey_method_ssh_ecdsa_384;
+ break;
+#endif
+#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_256
+ case LIBSSH2_KNOWNHOST_KEY_ECDSA_256:
+ hostkey_method = hostkey_method_ssh_ecdsa_256;
+ break;
+#endif
+ case LIBSSH2_KNOWNHOST_KEY_SSHRSA:
+ hostkey_method = hostkey_method_ssh_rsa;
+ break;
+ case LIBSSH2_KNOWNHOST_KEY_SSHDSS:
+ hostkey_method = hostkey_method_ssh_dss;
+ break;
+ case LIBSSH2_KNOWNHOST_KEY_RSA1:
+ mc_propagate_error (mcerror, 0, "%s",
+ _("sftp: found host key of unsupported type: RSA1"));
+ return FALSE;
+ default:
+ mc_propagate_error (mcerror, 0, "%s %u", _("sftp: unknown host key type:"),
+ (unsigned int) mask);
+ return FALSE;
+ }
+
+ rc = libssh2_session_method_pref (sftpfs_super->session, LIBSSH2_METHOD_HOSTKEY,
+ hostkey_method);
+ if (rc < 0)
+ goto err;
+ }
+
+ return TRUE;
+
+ err:
+ {
+ int sftp_errno;
+
+ sftp_errno = libssh2_session_last_errno (sftpfs_super->session);
+ sftpfs_ssherror_to_gliberror (sftpfs_super, sftp_errno, mcerror);
+ }
+ return FALSE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Write new host + key pair to the ~/.ssh/known_hosts file.
+ *
+ * @param super connection data
+ * @param remote_key he key for the remote host
+ * @param remote_key_len length of @remote_key
+ * @param type_mask info about format of host name, key and key type
+ * @return 0 on success, regular libssh2 error code otherwise
+ *
+ * Thanks the Curl project for the code used in this function.
+ */
+static int
+sftpfs_update_known_hosts (struct vfs_s_super *super, const char *remote_key, size_t remote_key_len,
+ int type_mask)
+{
+ sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
+ int rc;
+
+ /* add this host + key pair */
+ rc = libssh2_knownhost_addc (sftpfs_super->known_hosts, super->path_element->host, NULL,
+ remote_key, remote_key_len, NULL, 0, type_mask, NULL);
+ if (rc < 0)
+ return rc;
+
+ /* write the entire in-memory list of known hosts to the known_hosts file */
+ rc = libssh2_knownhost_writefile (sftpfs_super->known_hosts, sftpfs_super->known_hosts_file,
+ LIBSSH2_KNOWNHOST_FILE_OPENSSH);
+
+ if (rc < 0)
+ return rc;
+
+ (void) message (D_NORMAL, _("Information"),
+ _("Permanently added\n%s (%s)\nto the list of known hosts."),
+ super->path_element->host, sftpfs_super->ip_address);
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Compute and return readable host key fingerprint hash.
+ *
+ * @param session libssh2 session handle
+ * @return pointer to static buffer on success, NULL otherwise
+ */
+static const char *
+sftpfs_compute_fingerprint_hash (LIBSSH2_SESSION * session)
+{
+ static char result[SHA1_DIGEST_LENGTH * 3 + 1]; /* "XX:" for each byte, and EOL */
+ const char *fingerprint;
+ size_t i;
+
+ /* The fingerprint points to static storage (!), don't free() it. */
+ fingerprint = libssh2_hostkey_hash (session, LIBSSH2_HOSTKEY_HASH_SHA1);
+ if (fingerprint == NULL)
+ return NULL;
+
+ for (i = 0; i < SHA1_DIGEST_LENGTH && i * 3 < sizeof (result) - 1; i++)
+ g_snprintf ((gchar *) (result + i * 3), 4, "%02x:", (guint8) fingerprint[i]);
+
+ /* remove last ":" */
+ result[i * 3 - 1] = '\0';
+
+ return result;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/**
+ * Process host info found in ~/.ssh/known_hosts file.
+ *
+ * @param super connection data
+ * @param mcerror pointer to the error handler
+ * @return TRUE on success, FALSE otherwise
+ *
+ * Thanks the Curl project for the code used in this function.
+ */
+static gboolean
+sftpfs_process_known_host (struct vfs_s_super *super, GError ** mcerror)
+{
+ sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
+ const char *remote_key;
+ const char *key_type;
+ const char *fingerprint_hash;
+ size_t remote_key_len = 0;
+ int remote_key_type = LIBSSH2_HOSTKEY_TYPE_UNKNOWN;
+ int keybit = 0;
+ struct libssh2_knownhost *host = NULL;
+ int rc;
+ char *msg = NULL;
+ gboolean handle_query = FALSE;
+
+ remote_key = libssh2_session_hostkey (sftpfs_super->session, &remote_key_len, &remote_key_type);
+ if (remote_key == NULL || remote_key_len == 0
+ || remote_key_type == LIBSSH2_HOSTKEY_TYPE_UNKNOWN)
+ {
+ mc_propagate_error (mcerror, 0, "%s", _("sftp: cannot get the remote host key"));
+ return FALSE;
+ }
+
+ switch (remote_key_type)
+ {
+ case LIBSSH2_HOSTKEY_TYPE_RSA:
+ keybit = LIBSSH2_KNOWNHOST_KEY_SSHRSA;
+ key_type = "RSA";
+ break;
+ case LIBSSH2_HOSTKEY_TYPE_DSS:
+ keybit = LIBSSH2_KNOWNHOST_KEY_SSHDSS;
+ key_type = "DSS";
+ break;
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
+ keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_256;
+ key_type = "ECDSA";
+ break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_384
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
+ keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_384;
+ key_type = "ECDSA";
+ break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_521
+ case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
+ keybit = LIBSSH2_KNOWNHOST_KEY_ECDSA_521;
+ key_type = "ECDSA";
+ break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
+ case LIBSSH2_HOSTKEY_TYPE_ED25519:
+ keybit = LIBSSH2_KNOWNHOST_KEY_ED25519;
+ key_type = "ED25519";
+ break;
+#endif
+ default:
+ mc_propagate_error (mcerror, 0, "%s",
+ _("sftp: unsupported key type, can't check remote host key"));
+ return FALSE;
+ }
+
+ fingerprint_hash = sftpfs_compute_fingerprint_hash (sftpfs_super->session);
+ if (fingerprint_hash == NULL)
+ {
+ mc_propagate_error (mcerror, 0, "%s", _("sftp: can't compute host key fingerprint hash"));
+ return FALSE;
+ }
+
+ rc = libssh2_knownhost_checkp (sftpfs_super->known_hosts, super->path_element->host,
+ super->path_element->port, remote_key, remote_key_len,
+ LIBSSH2_KNOWNHOST_TYPE_PLAIN | LIBSSH2_KNOWNHOST_KEYENC_RAW |
+ keybit, &host);
+
+ switch (rc)
+ {
+ default:
+ case LIBSSH2_KNOWNHOST_CHECK_FAILURE:
+ /* something prevented the check to be made */
+ goto err;
+
+ case LIBSSH2_KNOWNHOST_CHECK_MATCH:
+ /* host + key pair matched -- OK */
+ break;
+
+ case LIBSSH2_KNOWNHOST_CHECK_NOTFOUND:
+ /* no host match was found -- add it to the known_hosts file */
+ msg = g_strdup_printf (_("The authenticity of host\n%s (%s)\ncan't be established!\n"
+ "%s key fingerprint hash is\nSHA1:%s.\n"
+ "Do you want to add it to the list of known hosts and continue connecting?"),
+ super->path_element->host, sftpfs_super->ip_address,
+ key_type, fingerprint_hash);
+ /* Select "No" initially */
+ query_set_sel (2);
+ rc = query_dialog (_("Warning"), msg, D_NORMAL, 3, _("&Yes"), _("&Ignore"), _("&No"));
+ g_free (msg);
+ handle_query = TRUE;
+ break;
+
+ case LIBSSH2_KNOWNHOST_CHECK_MISMATCH:
+ msg = g_strdup_printf (_("%s (%s)\nis found in the list of known hosts but\n"
+ "KEYS DO NOT MATCH! THIS COULD BE A MITM ATTACK!\n"
+ "Are you sure you want to add it to the list of known hosts and continue connecting?"),
+ super->path_element->host, sftpfs_super->ip_address);
+ /* Select "No" initially */
+ query_set_sel (2);
+ rc = query_dialog (MSG_ERROR, msg, D_ERROR, 3, _("&Yes"), _("&Ignore"), _("&No"));
+ g_free (msg);
+ handle_query = TRUE;
+ break;
+ }
+
+ if (handle_query)
+ switch (rc)
+ {
+ case 0:
+ /* Yes: add this host + key pair, continue connecting */
+ if (sftpfs_update_known_hosts (super, remote_key, remote_key_len,
+ LIBSSH2_KNOWNHOST_TYPE_PLAIN
+ | LIBSSH2_KNOWNHOST_KEYENC_RAW | keybit) < 0)
+ goto err;
+ break;
+ case 1:
+ /* Ignore: do not add this host + key pair, continue connecting anyway */
+ break;
+ case 2:
+ default:
+ mc_propagate_error (mcerror, 0, "%s", _("sftp: host key verification failed"));
+ /* No: abort connection */
+ goto err;
+ }
+
+ return TRUE;
+
+ err:
+ {
+ int sftp_errno;
+
+ sftp_errno = libssh2_session_last_errno (sftpfs_super->session);
+ sftpfs_ssherror_to_gliberror (sftpfs_super, sftp_errno, mcerror);
+ }
+
+ return FALSE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Recognize authentication types supported by remote side and filling internal 'super' structure by
* proper enum's values.
*
* @param super connection data
@@ -461,28 +868,25 @@
if (sftpfs_super->session == NULL)
return (-1);
+ if (!sftpfs_read_known_hosts (super, mcerror))
+ return (-1);
+
/* ... start it up. This will trade welcome banners, exchange keys,
* and setup crypto, compression, and MAC layers
*/
-#if LIBSSH2_VERSION_NUM < 0x010208
- rc = libssh2_session_startup (sftpfs_super->session, sftpfs_super->socket_handle);
-#else
- rc = libssh2_session_handshake (sftpfs_super->session,
- (libssh2_socket_t) sftpfs_super->socket_handle);
-#endif
+ while ((rc =
+ libssh2_session_handshake (sftpfs_super->session,
+ (libssh2_socket_t) sftpfs_super->socket_handle)) ==
+ LIBSSH2_ERROR_EAGAIN)
+ ;
if (rc != 0)
{
- mc_propagate_error (mcerror, rc, "%s", _("sftp: Failure establishing SSH session"));
+ mc_propagate_error (mcerror, rc, "%s", _("sftp: failure establishing SSH session"));
return (-1);
}
- /* At this point we havn't yet authenticated. The first thing to do
- * is check the hostkey's fingerprint against our known hosts Your app
- * may have it hard coded, may go to a file, may present it to the
- * user, that's your call
- */
- sftpfs_super->fingerprint =
- libssh2_hostkey_hash (sftpfs_super->session, LIBSSH2_HOSTKEY_HASH_SHA1);
+ if (!sftpfs_process_known_host (super, mcerror))
+ return (-1);
if (!sftpfs_recognize_auth_types (super))
{
@@ -539,7 +943,13 @@
sftpfs_super->agent = NULL;
}
- sftpfs_super->fingerprint = NULL;
+ if (sftpfs_super->known_hosts != NULL)
+ {
+ libssh2_knownhost_free (sftpfs_super->known_hosts);
+ sftpfs_super->known_hosts = NULL;
+ }
+
+ MC_PTR_FREE (sftpfs_super->known_hosts_file);
if (sftpfs_super->session != NULL)
{
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/dir.c
^
|
@@ -1,7 +1,7 @@
/* Virtual File System: SFTP file system.
The internal functions: dirs
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -70,6 +70,7 @@
sftpfs_super_t *sftpfs_super;
const vfs_path_element_t *path_element;
LIBSSH2_SFTP_HANDLE *handle;
+ const GString *fixfname;
mc_return_val_if_error (mcerror, NULL);
@@ -80,16 +81,14 @@
sftpfs_super = SFTP_SUPER (super);
+ fixfname = sftpfs_fix_filename (path_element->path);
+
while (TRUE)
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
int libssh_errno;
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
handle =
- libssh2_sftp_open_ex (sftpfs_super->sftp_session, fixfname, fixfname_len, 0, 0,
+ libssh2_sftp_open_ex (sftpfs_super->sftp_session, fixfname->str, fixfname->len, 0, 0,
LIBSSH2_SFTP_OPENDIR);
if (handle != NULL)
break;
@@ -178,6 +177,7 @@
struct vfs_s_super *super;
sftpfs_super_t *sftpfs_super;
const vfs_path_element_t *path_element;
+ const GString *fixfname;
mc_return_val_if_error (mcerror, -1);
@@ -193,14 +193,12 @@
if (sftpfs_super->sftp_session == NULL)
return -1;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
- res = libssh2_sftp_mkdir_ex (sftpfs_super->sftp_session, fixfname, fixfname_len, mode);
+ res =
+ libssh2_sftp_mkdir_ex (sftpfs_super->sftp_session, fixfname->str, fixfname->len, mode);
if (res >= 0)
break;
@@ -228,6 +226,7 @@
struct vfs_s_super *super;
sftpfs_super_t *sftpfs_super;
const vfs_path_element_t *path_element;
+ const GString *fixfname;
mc_return_val_if_error (mcerror, -1);
@@ -243,14 +242,11 @@
if (sftpfs_super->sftp_session == NULL)
return -1;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
- res = libssh2_sftp_rmdir_ex (sftpfs_super->sftp_session, fixfname, fixfname_len);
+ res = libssh2_sftp_rmdir_ex (sftpfs_super->sftp_session, fixfname->str, fixfname->len);
if (res >= 0)
break;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/file.c
^
|
@@ -1,7 +1,7 @@
/* Virtual File System: SFTP file system.
The internal functions: files
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -131,11 +131,12 @@
sftpfs_file_handler_t *file = SFTP_FILE_HANDLER (fh);
sftpfs_super_t *super = SFTP_SUPER (fh->ino->super);
char *name;
+ const GString *fixfname;
(void) mode;
mc_return_val_if_error (mcerror, FALSE);
- name = vfs_s_fullpath (sftpfs_class, fh->ino);
+ name = vfs_s_fullpath (vfs_sftpfs_ops, fh->ino);
if (name == NULL)
return FALSE;
@@ -156,17 +157,15 @@
else
sftp_open_flags = LIBSSH2_FXF_READ;
+ fixfname = sftpfs_fix_filename (name);
+
while (TRUE)
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
int libssh_errno;
- fixfname = sftpfs_fix_filename (name, &fixfname_len);
-
file->handle =
- libssh2_sftp_open_ex (super->sftp_session, fixfname, fixfname_len, sftp_open_flags,
- sftp_open_mode, LIBSSH2_SFTP_OPENFILE);
+ libssh2_sftp_open_ex (super->sftp_session, fixfname->str, fixfname->len,
+ sftp_open_flags, sftp_open_mode, LIBSSH2_SFTP_OPENFILE);
if (file->handle != NULL)
break;
@@ -175,7 +174,6 @@
{
sftpfs_ssherror_to_gliberror (super, libssh_errno, mcerror);
g_free (name);
- g_free (file);
return FALSE;
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/internal.c
^
|
@@ -1,7 +1,7 @@
/* Virtual File System: SFTP file system.
The internal functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -142,19 +142,17 @@
const vfs_path_t * vpath, GError ** mcerror, int stat_type,
LIBSSH2_SFTP_ATTRIBUTES * attrs)
{
+ const GString *fixfname;
int res;
if (!sftpfs_op_init (super, path_element, vpath, mcerror))
return -1;
+ fixfname = sftpfs_fix_filename ((*path_element)->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len;
-
- fixfname = sftpfs_fix_filename ((*path_element)->path, &fixfname_len);
-
- res = libssh2_sftp_stat_ex ((*super)->sftp_session, fixfname, fixfname_len,
+ res = libssh2_sftp_stat_ex ((*super)->sftp_session, fixfname->str, fixfname->len,
stat_type, attrs);
if (res >= 0)
break;
@@ -236,12 +234,11 @@
* @return pointer to string that contains the file name with leading slash
*/
-const char *
-sftpfs_fix_filename (const char *file_name, unsigned int *length)
+const GString *
+sftpfs_fix_filename (const char *file_name)
{
g_string_printf (sftpfs_filename_buffer, "%c%s", PATH_SEP, file_name);
- *length = sftpfs_filename_buffer->len;
- return sftpfs_filename_buffer->str;
+ return sftpfs_filename_buffer;
}
/* --------------------------------------------------------------------------------------------- */
@@ -348,20 +345,18 @@
{
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element = NULL;
+ const GString *fixfname;
int res;
if (!sftpfs_op_init (&super, &path_element, vpath, mcerror))
return -1;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
res =
- libssh2_sftp_symlink_ex (super->sftp_session, fixfname, fixfname_len, buf, size,
+ libssh2_sftp_symlink_ex (super->sftp_session, fixfname->str, fixfname->len, buf, size,
LIBSSH2_SFTP_READLINK);
if (res >= 0)
break;
@@ -390,6 +385,9 @@
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element1;
const vfs_path_element_t *path_element2 = NULL;
+ const char *path1;
+ size_t path1_len;
+ const GString *ctmp_path;
char *tmp_path;
unsigned int tmp_path_len;
int res;
@@ -397,21 +395,19 @@
if (!sftpfs_op_init (&super, &path_element2, vpath2, mcerror))
return -1;
- tmp_path = (char *) sftpfs_fix_filename (path_element2->path, &tmp_path_len);
- tmp_path = g_strndup (tmp_path, tmp_path_len);
+ ctmp_path = sftpfs_fix_filename (path_element2->path);
+ tmp_path = g_strndup (ctmp_path->str, ctmp_path->len);
+ tmp_path_len = ctmp_path->len;
path_element1 = vfs_path_get_by_index (vpath1, -1);
+ path1 = path_element1->path;
+ path1_len = strlen (path1);
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element1->path, &fixfname_len);
-
res =
- libssh2_sftp_symlink_ex (super->sftp_session, fixfname, fixfname_len, tmp_path,
- tmp_path_len, LIBSSH2_SFTP_SYMLINK);
+ libssh2_sftp_symlink_ex (super->sftp_session, path1, path1_len, tmp_path, tmp_path_len,
+ LIBSSH2_SFTP_SYMLINK);
if (res >= 0)
break;
@@ -444,24 +440,23 @@
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element = NULL;
LIBSSH2_SFTP_ATTRIBUTES attrs;
+ const GString *fixfname;
int res;
res = sftpfs_stat_init (&super, &path_element, vpath, mcerror, LIBSSH2_SFTP_LSTAT, &attrs);
if (res < 0)
return res;
+ attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
attrs.atime = atime;
attrs.mtime = mtime;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
res =
- libssh2_sftp_stat_ex (super->sftp_session, fixfname, fixfname_len,
+ libssh2_sftp_stat_ex (super->sftp_session, fixfname->str, fixfname->len,
LIBSSH2_SFTP_SETSTAT, &attrs);
if (res >= 0)
break;
@@ -499,23 +494,22 @@
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element = NULL;
LIBSSH2_SFTP_ATTRIBUTES attrs;
+ const GString *fixfname;
int res;
res = sftpfs_stat_init (&super, &path_element, vpath, mcerror, LIBSSH2_SFTP_LSTAT, &attrs);
if (res < 0)
return res;
+ attrs.flags = LIBSSH2_SFTP_ATTR_PERMISSIONS;
attrs.permissions = mode;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
res =
- libssh2_sftp_stat_ex (super->sftp_session, fixfname, fixfname_len,
+ libssh2_sftp_stat_ex (super->sftp_session, fixfname->str, fixfname->len,
LIBSSH2_SFTP_SETSTAT, &attrs);
if (res >= 0)
break;
@@ -551,19 +545,17 @@
{
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element = NULL;
+ const GString *fixfname;
int res;
if (!sftpfs_op_init (&super, &path_element, vpath, mcerror))
return -1;
+ fixfname = sftpfs_fix_filename (path_element->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element->path, &fixfname_len);
-
- res = libssh2_sftp_unlink_ex (super->sftp_session, fixfname, fixfname_len);
+ res = libssh2_sftp_unlink_ex (super->sftp_session, fixfname->str, fixfname->len);
if (res >= 0)
break;
@@ -591,27 +583,27 @@
sftpfs_super_t *super = NULL;
const vfs_path_element_t *path_element1;
const vfs_path_element_t *path_element2 = NULL;
+ const GString *ctmp_path;
char *tmp_path;
unsigned int tmp_path_len;
+ const GString *fixfname;
int res;
if (!sftpfs_op_init (&super, &path_element2, vpath2, mcerror))
return -1;
- tmp_path = (char *) sftpfs_fix_filename (path_element2->path, &tmp_path_len);
- tmp_path = g_strndup (tmp_path, tmp_path_len);
+ ctmp_path = sftpfs_fix_filename (path_element2->path);
+ tmp_path = g_strndup (ctmp_path->str, ctmp_path->len);
+ tmp_path_len = ctmp_path->len;
path_element1 = vfs_path_get_by_index (vpath1, -1);
+ fixfname = sftpfs_fix_filename (path_element1->path);
+
do
{
- const char *fixfname;
- unsigned int fixfname_len = 0;
-
- fixfname = sftpfs_fix_filename (path_element1->path, &fixfname_len);
-
res =
- libssh2_sftp_rename_ex (super->sftp_session, fixfname, fixfname_len, tmp_path,
+ libssh2_sftp_rename_ex (super->sftp_session, fixfname->str, fixfname->len, tmp_path,
tmp_path_len, LIBSSH2_SFTP_SYMLINK);
if (res >= 0)
break;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/internal.h
^
|
@@ -42,6 +42,9 @@
sftpfs_auth_type_t auth_type;
sftpfs_auth_type_t config_auth_type;
+ LIBSSH2_KNOWNHOSTS *known_hosts;
+ char *known_hosts_file;
+
LIBSSH2_SESSION *session;
LIBSSH2_SFTP *sftp_session;
@@ -51,7 +54,7 @@
char *privkey;
int socket_handle;
- const char *fingerprint;
+ const char *ip_address;
vfs_path_element_t *original_connection_info;
} sftpfs_super_t;
@@ -59,12 +62,10 @@
extern GString *sftpfs_filename_buffer;
extern struct vfs_s_subclass sftpfs_subclass;
-extern struct vfs_class *sftpfs_class;
+extern struct vfs_class *vfs_sftpfs_ops;
/*** declarations of public functions ************************************************************/
-void sftpfs_init_class (void);
-void sftpfs_init_subclass (void);
void sftpfs_init_config_variables_patterns (void);
void sftpfs_deinit_config_variables_patterns (void);
@@ -72,7 +73,7 @@
void sftpfs_ssherror_to_gliberror (sftpfs_super_t * super, int libssh_errno, GError ** mcerror);
gboolean sftpfs_waitsocket (sftpfs_super_t * super, int sftp_res, GError ** mcerror);
-const char *sftpfs_fix_filename (const char *file_name, unsigned int *length);
+const GString *sftpfs_fix_filename (const char *file_name);
void sftpfs_attr_to_stat (const LIBSSH2_SFTP_ATTRIBUTES * attrs, struct stat *s);
int sftpfs_lstat (const vfs_path_t * vpath, struct stat *buf, GError ** mcerror);
int sftpfs_stat (const vfs_path_t * vpath, struct stat *buf, GError ** mcerror);
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/sftpfs.c
^
|
@@ -0,0 +1,867 @@
+/* Virtual File System: SFTP file system.
+ The interface function
+
+ Copyright (C) 2011-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Ilia Maslakov <il.smind@gmail.com>, 2011
+ Slava Zanko <slavazanko@gmail.com>, 2011-2013
+ Andrew Borodin <aborodin@vmail.ru>, 2021-2022
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h> /* memset() */
+
+#include "lib/global.h"
+#include "lib/vfs/netutil.h"
+#include "lib/vfs/utilvfs.h"
+#include "lib/vfs/gc.h"
+#include "lib/widget.h"
+#include "lib/tty/tty.h" /* tty_enable_interrupt_key () */
+
+#include "internal.h"
+
+#include "sftpfs.h"
+
+/*** global variables ****************************************************************************/
+
+struct vfs_s_subclass sftpfs_subclass;
+struct vfs_class *vfs_sftpfs_ops = VFS_CLASS (&sftpfs_subclass); /* used in file.c */
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/*** file scope variables ************************************************************************/
+
+/* --------------------------------------------------------------------------------------------- */
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for VFS-class init action.
+ *
+ * @param me structure of VFS class
+ */
+
+static int
+sftpfs_cb_init (struct vfs_class *me)
+{
+ (void) me;
+
+ if (libssh2_init (0) != 0)
+ return 0;
+
+ sftpfs_filename_buffer = g_string_new ("");
+ sftpfs_init_config_variables_patterns ();
+ return 1;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for VFS-class deinit action.
+ *
+ * @param me structure of VFS class
+ */
+
+static void
+sftpfs_cb_done (struct vfs_class *me)
+{
+ (void) me;
+
+ sftpfs_deinit_config_variables_patterns ();
+ g_string_free (sftpfs_filename_buffer, TRUE);
+ libssh2_exit ();
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for opening file.
+ *
+ * @param vpath path to file
+ * @param flags flags (see man 2 open)
+ * @param mode mode (see man 2 open)
+ * @return file data handler if success, NULL otherwise
+ */
+
+static void *
+sftpfs_cb_open (const vfs_path_t * vpath, int flags, mode_t mode)
+{
+ vfs_file_handler_t *fh;
+ const vfs_path_element_t *path_element;
+ struct vfs_s_super *super;
+ const char *path_super;
+ struct vfs_s_inode *path_inode;
+ GError *mcerror = NULL;
+ gboolean is_changed = FALSE;
+
+ path_element = vfs_path_get_by_index (vpath, -1);
+
+ path_super = vfs_s_get_path (vpath, &super, 0);
+ if (path_super == NULL)
+ return NULL;
+
+ path_inode = vfs_s_find_inode (path_element->class, super, path_super, LINK_FOLLOW, FL_NONE);
+ if (path_inode != NULL && ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)))
+ {
+ path_element->class->verrno = EEXIST;
+ return NULL;
+ }
+
+ if (path_inode == NULL)
+ {
+ char *dirname, *name;
+ struct vfs_s_entry *ent;
+ struct vfs_s_inode *dir;
+
+ dirname = g_path_get_dirname (path_super);
+ name = g_path_get_basename (path_super);
+ dir = vfs_s_find_inode (path_element->class, super, dirname, LINK_FOLLOW, FL_DIR);
+ if (dir == NULL)
+ {
+ g_free (dirname);
+ g_free (name);
+ return NULL;
+ }
+ ent = vfs_s_generate_entry (path_element->class, name, dir, 0755);
+ path_inode = ent->ino;
+ vfs_s_insert_entry (path_element->class, dir, ent);
+ g_free (dirname);
+ g_free (name);
+ is_changed = TRUE;
+ }
+
+ if (S_ISDIR (path_inode->st.st_mode))
+ {
+ path_element->class->verrno = EISDIR;
+ return NULL;
+ }
+
+ fh = sftpfs_fh_new (path_inode, is_changed);
+
+ if (!sftpfs_open_file (fh, flags, mode, &mcerror))
+ {
+ mc_error_message (&mcerror, NULL);
+ g_free (fh);
+ return NULL;
+ }
+
+ vfs_rmstamp (path_element->class, (vfsid) super);
+ super->fd_usage++;
+ fh->ino->st.st_nlink++;
+ return fh;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for opening directory.
+ *
+ * @param vpath path to directory
+ * @return directory data handler if success, NULL otherwise
+ */
+
+static void *
+sftpfs_cb_opendir (const vfs_path_t * vpath)
+{
+ GError *mcerror = NULL;
+ void *ret_value;
+
+ /* reset interrupt flag */
+ tty_got_interrupt ();
+
+ ret_value = sftpfs_opendir (vpath, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return ret_value;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for reading directory entry.
+ *
+ * @param data directory data handler
+ * @return information about direntry if success, NULL otherwise
+ */
+
+static struct vfs_dirent *
+sftpfs_cb_readdir (void *data)
+{
+ GError *mcerror = NULL;
+ struct vfs_dirent *sftpfs_dirent;
+
+ if (tty_got_interrupt ())
+ {
+ tty_disable_interrupt_key ();
+ return NULL;
+ }
+
+ sftpfs_dirent = sftpfs_readdir (data, &mcerror);
+ if (!mc_error_message (&mcerror, NULL))
+ {
+ if (sftpfs_dirent != NULL)
+ vfs_print_message (_("sftp: (Ctrl-G break) Listing... %s"), sftpfs_dirent->d_name);
+ else
+ vfs_print_message ("%s", _("sftp: Listing done."));
+ }
+
+ return sftpfs_dirent;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for closing directory.
+ *
+ * @param data directory data handler
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_closedir (void *data)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_closedir (data, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for lstat VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @param buf buffer for store stat-info
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_lstat (const vfs_path_t * vpath, struct stat *buf)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_lstat (vpath, buf, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for stat VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @param buf buffer for store stat-info
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_stat (const vfs_path_t * vpath, struct stat *buf)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_stat (vpath, buf, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for fstat VFS-function.
+ *
+ * @param data file data handler
+ * @param buf buffer for store stat-info
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_fstat (void *data, struct stat *buf)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_fstat (data, buf, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for readlink VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @param buf buffer for store stat-info
+ * @param size buffer size
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_readlink (const vfs_path_t * vpath, char *buf, size_t size)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_readlink (vpath, buf, size, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for utime VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @param times access and modification time to set
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_utime (const vfs_path_t * vpath, mc_timesbuf_t * times)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+#ifdef HAVE_UTIMENSAT
+ time_t atime = (*times)[0].tv_sec;
+ time_t mtime = (*times)[1].tv_sec;
+#else
+ time_t atime = times->actime;
+ time_t mtime = times->modtime;
+#endif
+
+ rc = sftpfs_utime (vpath, atime, mtime, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for symlink VFS-function.
+ *
+ * @param vpath1 path to file or directory
+ * @param vpath2 path to symlink
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_symlink (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_symlink (vpath1, vpath2, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for symlink VFS-function.
+ *
+ * @param vpath unused
+ * @param mode unused
+ * @param dev unused
+ * @return always 0
+ */
+
+static int
+sftpfs_cb_mknod (const vfs_path_t * vpath, mode_t mode, dev_t dev)
+{
+ (void) vpath;
+ (void) mode;
+ (void) dev;
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for link VFS-function.
+ *
+ * @param vpath1 unused
+ * @param vpath2 unused
+ * @return always 0
+ */
+
+static int
+sftpfs_cb_link (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
+{
+ (void) vpath1;
+ (void) vpath2;
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for chown VFS-function.
+ *
+ * @param vpath unused
+ * @param owner unused
+ * @param group unused
+ * @return always 0
+ */
+
+static int
+sftpfs_cb_chown (const vfs_path_t * vpath, uid_t owner, gid_t group)
+{
+ (void) vpath;
+ (void) owner;
+ (void) group;
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for reading file content.
+ *
+ * @param data file data handler
+ * @param buffer buffer for data
+ * @param count data size
+ * @return 0 if success, negative value otherwise
+ */
+
+static ssize_t
+sftpfs_cb_read (void *data, char *buffer, size_t count)
+{
+ int rc;
+ GError *mcerror = NULL;
+ vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
+
+ if (tty_got_interrupt ())
+ {
+ tty_disable_interrupt_key ();
+ return 0;
+ }
+
+ rc = sftpfs_read_file (fh, buffer, count, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for writing file content.
+ *
+ * @param data file data handler
+ * @param buf buffer for data
+ * @param count data size
+ * @return 0 if success, negative value otherwise
+ */
+
+static ssize_t
+sftpfs_cb_write (void *data, const char *buf, size_t nbyte)
+{
+ int rc;
+ GError *mcerror = NULL;
+ vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
+
+ rc = sftpfs_write_file (fh, buf, nbyte, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for close file.
+ *
+ * @param data file data handler
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_close (void *data)
+{
+ int rc;
+ GError *mcerror = NULL;
+ struct vfs_s_super *super = VFS_FILE_HANDLER_SUPER (data);
+ vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
+
+ super->fd_usage--;
+ if (super->fd_usage == 0)
+ vfs_stamp_create (vfs_sftpfs_ops, super);
+
+ rc = sftpfs_close_file (fh, &mcerror);
+ mc_error_message (&mcerror, NULL);
+
+ if (fh->handle != -1)
+ close (fh->handle);
+
+ vfs_s_free_inode (vfs_sftpfs_ops, fh->ino);
+
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for chmod VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @param mode mode (see man 2 open)
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_chmod (const vfs_path_t * vpath, mode_t mode)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_chmod (vpath, mode, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for mkdir VFS-function.
+ *
+ * @param vpath path directory
+ * @param mode mode (see man 2 open)
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_mkdir (const vfs_path_t * vpath, mode_t mode)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_mkdir (vpath, mode, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for rmdir VFS-function.
+ *
+ * @param vpath path directory
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_rmdir (const vfs_path_t * vpath)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_rmdir (vpath, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for lseek VFS-function.
+ *
+ * @param data file data handler
+ * @param offset file offset
+ * @param whence method of seek (at begin, at current, at end)
+ * @return 0 if success, negative value otherwise
+ */
+
+static off_t
+sftpfs_cb_lseek (void *data, off_t offset, int whence)
+{
+ off_t ret_offset;
+ vfs_file_handler_t *fh = VFS_FILE_HANDLER (data);
+ GError *mcerror = NULL;
+
+ ret_offset = sftpfs_lseek (fh, offset, whence, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return ret_offset;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for unlink VFS-function.
+ *
+ * @param vpath path to file or directory
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_unlink (const vfs_path_t * vpath)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_unlink (vpath, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for rename VFS-function.
+ *
+ * @param vpath1 path to source file or directory
+ * @param vpath2 path to destination file or directory
+ * @return 0 if success, negative value otherwise
+ */
+
+static int
+sftpfs_cb_rename (const vfs_path_t * vpath1, const vfs_path_t * vpath2)
+{
+ int rc;
+ GError *mcerror = NULL;
+
+ rc = sftpfs_rename (vpath1, vpath2, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return rc;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for errno VFS-function.
+ *
+ * @param me unused
+ * @return value of errno global variable
+ */
+
+static int
+sftpfs_cb_errno (struct vfs_class *me)
+{
+ (void) me;
+
+ return errno;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for fill_names VFS function.
+ * Add SFTP connections to the 'Active VFS connections' list
+ *
+ * @param me unused
+ * @param func callback function for adding SFTP-connection to list of active connections
+ */
+
+static void
+sftpfs_cb_fill_names (struct vfs_class *me, fill_names_f func)
+{
+ GList *iter;
+
+ (void) me;
+
+ for (iter = sftpfs_subclass.supers; iter != NULL; iter = g_list_next (iter))
+ {
+ const struct vfs_s_super *super = (const struct vfs_s_super *) iter->data;
+ char *name;
+
+ name = vfs_path_element_build_pretty_path_str (super->path_element);
+
+ func (name);
+ g_free (name);
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for checking if connection is equal to existing connection.
+ *
+ * @param vpath_element path element with connetion data
+ * @param super data with exists connection
+ * @param vpath unused
+ * @param cookie unused
+ * @return TRUE if connections is equal, FALSE otherwise
+ */
+
+static gboolean
+sftpfs_archive_same (const vfs_path_element_t * vpath_element, struct vfs_s_super *super,
+ const vfs_path_t * vpath, void *cookie)
+{
+ int result;
+ vfs_path_element_t *orig_connect_info;
+
+ (void) vpath;
+ (void) cookie;
+
+ orig_connect_info = SFTP_SUPER (super)->original_connection_info;
+
+ result = ((g_strcmp0 (vpath_element->host, orig_connect_info->host) == 0)
+ && (g_strcmp0 (vpath_element->user, orig_connect_info->user) == 0)
+ && (vpath_element->port == orig_connect_info->port));
+
+ return result;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static struct vfs_s_super *
+sftpfs_new_archive (struct vfs_class *me)
+{
+ sftpfs_super_t *arch;
+
+ arch = g_new0 (sftpfs_super_t, 1);
+ arch->base.me = me;
+ arch->base.name = g_strdup (PATH_SEP_STR);
+ arch->auth_type = NONE;
+ arch->config_auth_type = NONE;
+ arch->socket_handle = LIBSSH2_INVALID_SOCKET;
+
+ return VFS_SUPER (arch);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for opening new connection.
+ *
+ * @param super connection data
+ * @param vpath unused
+ * @param vpath_element path element with connetion data
+ * @return 0 if success, -1 otherwise
+ */
+
+static int
+sftpfs_open_archive (struct vfs_s_super *super, const vfs_path_t * vpath,
+ const vfs_path_element_t * vpath_element)
+{
+ GError *mcerror = NULL;
+ sftpfs_super_t *sftpfs_super = SFTP_SUPER (super);
+ int ret_value;
+
+ (void) vpath;
+
+ if (vpath_element->host == NULL || *vpath_element->host == '\0')
+ {
+ vfs_print_message ("%s", _("sftp: Invalid host name."));
+ vpath_element->class->verrno = EPERM;
+ return -1;
+ }
+
+ sftpfs_super->original_connection_info = vfs_path_element_clone (vpath_element);
+ super->path_element = vfs_path_element_clone (vpath_element);
+
+ sftpfs_fill_connection_data_from_config (super, &mcerror);
+ if (mc_error_message (&mcerror, &ret_value))
+ {
+ vpath_element->class->verrno = ret_value;
+ return -1;
+ }
+
+ super->root =
+ vfs_s_new_inode (vpath_element->class, super,
+ vfs_s_default_stat (vpath_element->class, S_IFDIR | 0755));
+
+ ret_value = sftpfs_open_connection (super, &mcerror);
+ mc_error_message (&mcerror, NULL);
+ return ret_value;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for closing connection.
+ *
+ * @param me unused
+ * @param super connection data
+ */
+
+static void
+sftpfs_free_archive (struct vfs_class *me, struct vfs_s_super *super)
+{
+ GError *mcerror = NULL;
+
+ (void) me;
+
+ sftpfs_close_connection (super, "Normal Shutdown", &mcerror);
+
+ vfs_path_element_free (SFTP_SUPER (super)->original_connection_info);
+
+ mc_error_message (&mcerror, NULL);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Callback for getting directory content.
+ *
+ * @param me unused
+ * @param dir unused
+ * @param remote_path unused
+ * @return always 0
+ */
+
+static int
+sftpfs_cb_dir_load (struct vfs_class *me, struct vfs_s_inode *dir, const char *remote_path)
+{
+ (void) me;
+ (void) dir;
+ (void) remote_path;
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+/**
+ * Initialization of SFTP Virtual File Sysytem.
+ */
+
+void
+vfs_init_sftpfs (void)
+{
+ tcp_init ();
+
+ vfs_init_subclass (&sftpfs_subclass, "sftpfs", VFSF_NOLINKS | VFSF_REMOTE, "sftp");
+
+ vfs_sftpfs_ops->init = sftpfs_cb_init;
+ vfs_sftpfs_ops->done = sftpfs_cb_done;
+
+ vfs_sftpfs_ops->fill_names = sftpfs_cb_fill_names;
+
+ vfs_sftpfs_ops->opendir = sftpfs_cb_opendir;
+ vfs_sftpfs_ops->readdir = sftpfs_cb_readdir;
+ vfs_sftpfs_ops->closedir = sftpfs_cb_closedir;
+ vfs_sftpfs_ops->mkdir = sftpfs_cb_mkdir;
+ vfs_sftpfs_ops->rmdir = sftpfs_cb_rmdir;
+
+ vfs_sftpfs_ops->stat = sftpfs_cb_stat;
+ vfs_sftpfs_ops->lstat = sftpfs_cb_lstat;
+ vfs_sftpfs_ops->fstat = sftpfs_cb_fstat;
+ vfs_sftpfs_ops->readlink = sftpfs_cb_readlink;
+ vfs_sftpfs_ops->symlink = sftpfs_cb_symlink;
+ vfs_sftpfs_ops->link = sftpfs_cb_link;
+ vfs_sftpfs_ops->utime = sftpfs_cb_utime;
+ vfs_sftpfs_ops->mknod = sftpfs_cb_mknod;
+ vfs_sftpfs_ops->chown = sftpfs_cb_chown;
+ vfs_sftpfs_ops->chmod = sftpfs_cb_chmod;
+
+ vfs_sftpfs_ops->open = sftpfs_cb_open;
+ vfs_sftpfs_ops->read = sftpfs_cb_read;
+ vfs_sftpfs_ops->write = sftpfs_cb_write;
+ vfs_sftpfs_ops->close = sftpfs_cb_close;
+ vfs_sftpfs_ops->lseek = sftpfs_cb_lseek;
+ vfs_sftpfs_ops->unlink = sftpfs_cb_unlink;
+ vfs_sftpfs_ops->rename = sftpfs_cb_rename;
+ vfs_sftpfs_ops->ferrno = sftpfs_cb_errno;
+
+ sftpfs_subclass.archive_same = sftpfs_archive_same;
+ sftpfs_subclass.new_archive = sftpfs_new_archive;
+ sftpfs_subclass.open_archive = sftpfs_open_archive;
+ sftpfs_subclass.free_archive = sftpfs_free_archive;
+ sftpfs_subclass.fh_new = sftpfs_fh_new;
+ sftpfs_subclass.dir_load = sftpfs_cb_dir_load;
+
+ vfs_register_class (vfs_sftpfs_ops);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/sftpfs/sftpfs.h
^
|
@@ -0,0 +1,23 @@
+/**
+ * \file
+ * \brief Header: SFTP FS
+ */
+
+#ifndef MC__VFS_SFTPFS_H
+#define MC__VFS_SFTPFS_H
+
+/*** typedefs(not structures) and defined constants **********************************************/
+
+/*** enums ***************************************************************************************/
+
+/*** structures declarations (and typedefs of structures)*****************************************/
+
+/*** global variables defined in .c file *********************************************************/
+
+/*** declarations of public functions ************************************************************/
+
+void vfs_init_sftpfs (void);
+
+/*** inline functions ****************************************************************************/
+
+#endif /* MC__VFS_SFTPFS_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/tar/tar.c
^
|
@@ -1,7 +1,7 @@
/*
Virtual File System: GNU Tar file system.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -368,7 +368,7 @@
s = g_strconcat (archive->name, decompress_extension (type), (char *) NULL);
tmp_vpath = vfs_path_from_str_flags (s, VPF_NO_CANON);
result = mc_open (tmp_vpath, O_RDONLY);
- vfs_path_free (tmp_vpath);
+ vfs_path_free (tmp_vpath, TRUE);
if (result == -1)
message (D_ERROR, MSG_ERROR, _("Cannot open tar archive\n%s"), s);
g_free (s);
@@ -565,11 +565,11 @@
case TAR_POSIX:
case TAR_GNU:
/* *INDENT-OFF* */
- st->st_uid = *header->header.uname
- ? vfs_finduid (header->header.uname)
+ st->st_uid = *header->header.uname != '\0'
+ ? (uid_t) vfs_finduid (header->header.uname)
: tar_from_oct (8, header->header.uid);
- st->st_gid = *header->header.gname
- ? vfs_findgid (header->header.gname)
+ st->st_gid = *header->header.gname != '\0'
+ ? (gid_t) vfs_findgid (header->header.gname)
: tar_from_oct (8,header->header.gid);
/* *INDENT-ON* */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/vfs/undelfs/undelfs.c
^
|
@@ -7,7 +7,7 @@
Parts of this program were taken from the lsdel.c and dump.c files
written by Ted Ts'o (tytso@mit.edu) for the ext2fs package.
- Copyright (C) 1995-2020
+ Copyright (C) 1995-2022
Free Software Foundation, Inc.
Written by:
@@ -49,15 +49,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h> /* memset() */
-
-#ifdef HAVE_EXT2FS_EXT2_FS_H
#include <ext2fs/ext2_fs.h>
-#else
-/* asm/types.h defines its own umode_t */
-#undef umode_t
-#include <linux/ext2_fs.h>
-#endif
-
#include <ext2fs/ext2fs.h>
#include <ctype.h>
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/Makefile.am
^
|
@@ -10,7 +10,6 @@
display.c \
growbuf.c \
hex.c \
- inlines.h \
internal.h \
lib.c \
mcviewer.c \
@@ -20,5 +19,3 @@
search.c
AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(PCRE_CPPFLAGS)
-
-libmcviewer_la_LIBADD = ../../lib/libmc.la
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/actions_cmd.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Callback function for some actions (hotkeys, menu)
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -67,7 +67,7 @@
#include "src/history.h"
#include "src/file_history.h" /* show_file_history() */
#include "src/execute.h"
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "internal.h"
@@ -89,7 +89,7 @@
if (view->ext_script != NULL)
{
mc_unlink (view->ext_script);
- vfs_path_free (view->ext_script);
+ vfs_path_free (view->ext_script, TRUE);
view->ext_script = NULL;
}
}
@@ -141,45 +141,26 @@
GList *history;
history = mc_config_history_get (MC_HISTORY_SHARED_SEARCH);
- if (history != NULL && history->data != NULL)
+ if (history != NULL)
{
- view->last_search_string = (gchar *) g_strdup (history->data);
+ /* FIXME: is it possible that history->data == NULL? */
+ view->last_search_string = (gchar *) history->data;
+ history->data = NULL;
history = g_list_first (history);
g_list_free_full (history, g_free);
-#ifdef HAVE_CHARSET
- view->search = mc_search_new (view->last_search_string, cp_source);
-#else
- view->search = mc_search_new (view->last_search_string, NULL);
-#endif
- view->search_nroff_seq = mcview_nroff_seq_new (view);
-
- if (view->search == NULL)
- {
- /* if not... then ask for an expression */
- MC_PTR_FREE (view->last_search_string);
- mcview_search (view, TRUE);
- }
- else
+ if (mcview_search_init (view))
{
- view->search->search_type = mcview_search_options.type;
-#ifdef HAVE_CHARSET
- view->search->is_all_charsets = mcview_search_options.all_codepages;
-#endif
- view->search->is_case_sensitive = mcview_search_options.case_sens;
- view->search->whole_words = mcview_search_options.whole_words;
- view->search->search_fn = mcview_search_cmd_callback;
- view->search->update_fn = mcview_search_update_cmd_callback;
-
mcview_search (view, FALSE);
+ return;
}
- }
- else
- {
- /* if not... then ask for an expression */
+
+ /* found, but cannot init search */
MC_PTR_FREE (view->last_search_string);
- mcview_search (view, TRUE);
}
+
+ /* if not... then ask for an expression */
+ mcview_search (view, TRUE);
}
}
@@ -211,7 +192,7 @@
mcview_done (view);
mcview_init (view);
- mcview_load (view, 0, panel->dir.list[panel->selected].fname, 0, 0, 0);
+ mcview_load (view, 0, panel->dir.list[panel->selected].fname->str, 0, 0, 0);
mcview_display (view);
}
@@ -321,7 +302,7 @@
{
const file_entry_t *fe = &view->dir->list[i];
- if (fname_len == fe->fnamelen && strncmp (fname, fe->fname, fname_len) == 0)
+ if (fname_len == fe->fname->len && strncmp (fname, fe->fname->str, fname_len) == 0)
break;
}
@@ -374,13 +355,14 @@
dir_idx = view->dir_idx;
view->dir = NULL;
view->dir_idx = NULL;
- vfile = vfs_path_append_new (view->workdir_vpath, dir->list[*dir_idx].fname, (char *) NULL);
+ vfile =
+ vfs_path_append_new (view->workdir_vpath, dir->list[*dir_idx].fname->str, (char *) NULL);
mcview_done (view);
mcview_remove_ext_script (view);
mcview_init (view);
if (regex_command_for (view, vfile, "View", &ext_script) == 0)
mcview_load (view, NULL, vfs_path_as_str (vfile), 0, 0, 0);
- vfs_path_free (vfile);
+ vfs_path_free (vfile, TRUE);
view->dir = dir;
view->dir_idx = dir_idx;
view->ext_script = ext_script;
@@ -528,16 +510,16 @@
mcview_move_down (view, 1);
break;
case CK_HalfPageUp:
- mcview_move_up (view, (view->data_area.height + 1) / 2);
+ mcview_move_up (view, (view->data_area.lines + 1) / 2);
break;
case CK_HalfPageDown:
- mcview_move_down (view, (view->data_area.height + 1) / 2);
+ mcview_move_down (view, (view->data_area.lines + 1) / 2);
break;
case CK_PageUp:
- mcview_move_up (view, view->data_area.height);
+ mcview_move_up (view, view->data_area.lines);
break;
case CK_PageDown:
- mcview_move_down (view, view->data_area.height);
+ mcview_move_down (view, view->data_area.lines);
break;
case CK_Top:
mcview_moveto_top (view);
@@ -619,7 +601,7 @@
return MSG_HANDLED;
#ifdef MC_ENABLE_DEBUGGING_CODE
- if (c == 't')
+ if (key == 't')
{ /* mnemonic: "test" */
mcview_ccache_dump (view);
return MSG_HANDLED;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/ascii.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for plain view
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009-2014
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
Rewritten almost from scratch by:
Egmont Koblinger <egmont@gmail.com>, 2014
@@ -573,12 +573,9 @@
mcview_display_line (WView * view, mcview_state_machine_t * state, int row,
gboolean * paragraph_ended, off_t * linewidth)
{
- const screen_dimen left = view->data_area.left;
- const screen_dimen top = view->data_area.top;
- const screen_dimen width = view->data_area.width;
- const screen_dimen height = view->data_area.height;
+ const WRect *r = &view->data_area;
off_t dpy_text_column = view->mode_flags.wrap ? 0 : view->dpy_text_column;
- screen_dimen col = 0;
+ int col = 0;
int cs[1 + MAX_COMBINING_CHARS];
char str[(1 + MAX_COMBINING_CHARS) * UTF8_CHAR_LEN + 1];
int i, j;
@@ -586,7 +583,7 @@
if (paragraph_ended != NULL)
*paragraph_ended = TRUE;
- if (!view->mode_flags.wrap && (row < 0 || row >= (int) height) && linewidth == NULL)
+ if (!view->mode_flags.wrap && (row < 0 || row >= r->lines) && linewidth == NULL)
{
/* Optimization: Fast forward to the end of the line, rather than carefully
* parsing and then not actually displaying it. */
@@ -655,7 +652,7 @@
/* In wrap mode only: We're done with this row if the character sequence wouldn't fit.
* Except if at the first column, because then it wouldn't fit in the next row either.
* In this extreme case let the unwrapped code below do its best to display it. */
- if (view->mode_flags.wrap && (off_t) col + charwidth > dpy_text_column + (off_t) width
+ if (view->mode_flags.wrap && (off_t) col + charwidth > dpy_text_column + (off_t) r->cols
&& col > 0)
{
*state = state_saved;
@@ -667,14 +664,14 @@
}
/* Display, unless outside of the viewport. */
- if (row >= 0 && row < (int) height)
+ if (row >= 0 && row < r->lines)
{
if ((off_t) col >= dpy_text_column &&
- (off_t) col + charwidth <= dpy_text_column + (off_t) width)
+ (off_t) col + charwidth <= dpy_text_column + (off_t) r->cols)
{
/* The combining character sequence fits entirely in the viewport. Print it. */
tty_setcolor (color);
- widget_gotoyx (view, top + row, left + ((off_t) col - dpy_text_column));
+ widget_gotoyx (view, r->y + row, r->x + ((off_t) col - dpy_text_column));
if (cs[0] == '\t')
{
for (i = 0; i < charwidth; i++)
@@ -700,22 +697,22 @@
* or spaces with the correct attributes for partial Tabs. */
tty_setcolor (color);
for (i = dpy_text_column;
- i < (off_t) col + charwidth && i < dpy_text_column + (off_t) width; i++)
+ i < (off_t) col + charwidth && i < dpy_text_column + (off_t) r->cols; i++)
{
- widget_gotoyx (view, top + row, left + (i - dpy_text_column));
+ widget_gotoyx (view, r->y + row, r->x + (i - dpy_text_column));
tty_print_anychar ((cs[0] == '\t') ? ' ' : PARTIAL_CJK_AT_LEFT_MARGIN);
}
}
- else if ((off_t) col < dpy_text_column + (off_t) width &&
- (off_t) col + charwidth > dpy_text_column + (off_t) width)
+ else if ((off_t) col < dpy_text_column + (off_t) r->cols &&
+ (off_t) col + charwidth > dpy_text_column + (off_t) r->cols)
{
/* The combining character sequence would cross the right edge of the viewport
* and we're not wrapping. Print replacement character(s),
* or spaces with the correct attributes for partial Tabs. */
tty_setcolor (color);
- for (i = col; i < dpy_text_column + (off_t) width; i++)
+ for (i = col; i < dpy_text_column + (off_t) r->cols; i++)
{
- widget_gotoyx (view, top + row, left + (i - dpy_text_column));
+ widget_gotoyx (view, r->y + row, r->x + (i - dpy_text_column));
tty_print_anychar ((cs[0] == '\t') ? ' ' : PARTIAL_CJK_AT_RIGHT_MARGIN);
}
}
@@ -724,7 +721,7 @@
col += charwidth;
state->unwrapped_column += charwidth;
- if (!view->mode_flags.wrap && (off_t) col >= dpy_text_column + (off_t) width
+ if (!view->mode_flags.wrap && (off_t) col >= dpy_text_column + (off_t) r->cols
&& linewidth == NULL)
{
/* Optimization: Fast forward to the end of the line, rather than carefully
@@ -767,7 +764,6 @@
static int
mcview_display_paragraph (WView * view, mcview_state_machine_t * state, int row)
{
- const screen_dimen height = view->data_area.height;
int lines = 0;
while (TRUE)
@@ -778,11 +774,11 @@
if (paragraph_ended)
return lines;
- if (row < (int) height)
+ if (row < view->data_area.lines)
{
row++;
/* stop if bottom of screen reached */
- if (row >= (int) height)
+ if (row >= view->data_area.lines)
return lines;
}
}
@@ -848,9 +844,7 @@
void
mcview_display_text (WView * view)
{
- const screen_dimen left = view->data_area.left;
- const screen_dimen top = view->data_area.top;
- const screen_dimen height = view->data_area.height;
+ const WRect *r = &view->data_area;
int row;
mcview_state_machine_t state;
gboolean again;
@@ -872,7 +866,7 @@
state = view->dpy_state_top;
}
- for (row = 0; row < (int) height; row += n)
+ for (row = 0; row < r->lines; row += n)
{
n = mcview_display_paragraph (view, &state, row);
if (n == 0)
@@ -884,7 +878,7 @@
* charset change or enabling nroff. */
if ((view->mode_flags.wrap ? view->dpy_state_top.offset : view->dpy_start) > 0)
{
- mcview_ascii_move_up (view, height - row);
+ mcview_ascii_move_up (view, r->lines - row);
again = TRUE;
}
break;
@@ -898,9 +892,9 @@
tty_setcolor (VIEW_NORMAL_COLOR);
if (mcview_show_eof != NULL && mcview_show_eof[0] != '\0')
- while (row < (int) height)
+ while (row < r->lines)
{
- widget_gotoyx (view, top + row, left);
+ widget_gotoyx (view, r->y + row, r->x);
/* TODO: should make it no wider than the viewport */
tty_print_string (mcview_show_eof);
row++;
@@ -1002,7 +996,7 @@
* Normally we'd jump to the next paragraph and reset paragraph_skip_lines. But for
* walking backwards this is exactly what we need. */
view->dpy_paragraph_skip_lines =
- mcview_display_paragraph (view, &view->dpy_state_top, view->data_area.height);
+ mcview_display_paragraph (view, &view->dpy_state_top, view->data_area.lines);
view->force_max = -1;
}
@@ -1038,7 +1032,7 @@
/* Get the width of the topmost paragraph. */
mcview_state_machine_init (&state, view->dpy_start);
mcview_display_line (view, &state, -1, NULL, &linewidth);
- view->dpy_text_column = mcview_offset_doz (linewidth, (off_t) view->data_area.width);
+ view->dpy_text_column = DOZ (linewidth, (off_t) view->data_area.cols);
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/coord_cache.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for work with coordinate cache (ccache)
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -49,7 +49,7 @@
#include <config.h>
-#include <string.h> /* memmove() */
+#include <string.h> /* memset() */
#ifdef MC_ENABLE_DEBUGGING_CODE
#include <inttypes.h> /* uintmax_t */
#endif
@@ -65,37 +65,27 @@
#define VIEW_COORD_CACHE_GRANUL 1024
#define CACHE_CAPACITY_DELTA 64
+#define coord_cache_index(c, i) ((coord_cache_entry_t *) g_ptr_array_index ((c), (i)))
+
/*** file scope type declarations ****************************************************************/
typedef gboolean (*cmp_func_t) (const coord_cache_entry_t * a, const coord_cache_entry_t * b);
/*** file scope variables ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
/* insert new cache entry into the cache */
-static void
-mcview_ccache_add_entry (coord_cache_t * cache, size_t pos, const coord_cache_entry_t * entry)
+static inline void
+mcview_ccache_add_entry (GPtrArray * cache, const coord_cache_entry_t * entry)
{
- if ((cache == NULL) || (entry == NULL))
- return;
-
- pos = MIN (pos, cache->size);
-
- /* increase cache capacity if needed */
- if (cache->size == cache->capacity)
- {
- cache->capacity += CACHE_CAPACITY_DELTA;
- cache->cache = g_realloc (cache->cache, cache->capacity * sizeof (*cache->cache));
- }
-
- /* insert new entry */
- if (pos != cache->size)
- memmove (cache->cache[pos + 1], cache->cache[pos],
- (cache->size - pos) * sizeof (*cache->cache));
- cache->cache[pos] = g_memdup (entry, sizeof (*entry));
- cache->size++;
+#if GLIB_CHECK_VERSION (2, 68, 0)
+ g_ptr_array_add (cache, g_memdup2 (entry, sizeof (*entry)));
+#else
+ g_ptr_array_add (cache, g_memdup (entry, sizeof (*entry)));
+#endif
}
/* --------------------------------------------------------------------------------------------- */
@@ -120,7 +110,6 @@
return FALSE;
}
-
/* --------------------------------------------------------------------------------------------- */
static gboolean
@@ -135,7 +124,6 @@
return FALSE;
}
-
/* --------------------------------------------------------------------------------------------- */
/** Find and return the index of the last cache entry that is
* smaller than ''coord'', according to the criterion ''sort_by''. */
@@ -144,7 +132,7 @@
mcview_ccache_find (WView * view, const coord_cache_entry_t * coord, cmp_func_t cmp_func)
{
size_t base = 0;
- size_t limit = view->coord_cache->size;
+ size_t limit = view->coord_cache->len;
g_assert (limit != 0);
@@ -153,17 +141,20 @@
size_t i;
i = base + limit / 2;
- if (cmp_func (coord, view->coord_cache->cache[i]))
+ if (cmp_func (coord, coord_cache_index (view->coord_cache, i)))
{
/* continue the search in the lower half of the cache */
+ ;
}
else
{
/* continue the search in the upper half of the cache */
base = i;
}
+
limit = (limit + 1) / 2;
}
+
return base;
}
@@ -171,38 +162,6 @@
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
-coord_cache_t *
-coord_cache_new (void)
-{
- coord_cache_t *cache;
-
- cache = g_new (coord_cache_t, 1);
- cache->size = 0;
- cache->capacity = CACHE_CAPACITY_DELTA;
- cache->cache = g_malloc0 (cache->capacity * sizeof (*cache->cache));
-
- return cache;
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
-void
-coord_cache_free (coord_cache_t * cache)
-{
- if (cache != NULL)
- {
- size_t i;
-
- for (i = 0; i < cache->size; i++)
- g_free (cache->cache[i]);
-
- g_free (cache->cache);
- g_free (cache);
- }
-}
-
-/* --------------------------------------------------------------------------------------------- */
-
#ifdef MC_ENABLE_DEBUGGING_CODE
void
@@ -211,7 +170,7 @@
FILE *f;
off_t offset, line, column, nextline_offset, filesize;
guint i;
- const coord_cache_t *cache = view->coord_cache;
+ const GPtrArray *cache = view->coord_cache;
g_assert (cache != NULL);
@@ -220,20 +179,22 @@
f = fopen ("mcview-ccache.out", "w");
if (f == NULL)
return;
+
(void) setvbuf (f, NULL, _IONBF, 0);
/* cache entries */
- for (i = 0; i < cache->size; i++)
+ for (i = 0; i < cache->len; i++)
{
+ coord_cache_entry_t *e;
+
+ e = coord_cache_index (cache, i);
(void) fprintf (f,
"entry %8u offset %8" PRIuMAX
" line %8" PRIuMAX " column %8" PRIuMAX
" nroff_column %8" PRIuMAX "\n",
(unsigned int) i,
- (uintmax_t) cache->cache[i]->cc_offset,
- (uintmax_t) cache->cache[i]->cc_line,
- (uintmax_t) cache->cache[i]->cc_column,
- (uintmax_t) cache->cache[i]->cc_nroff_column);
+ (uintmax_t) e->cc_offset, (uintmax_t) e->cc_line, (uintmax_t) e->cc_column,
+ (uintmax_t) e->cc_nroff_column);
}
(void) fprintf (f, "\n");
@@ -281,7 +242,7 @@
mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_type lookup_what)
{
size_t i;
- coord_cache_t *cache;
+ GPtrArray *cache;
coord_cache_entry_t current, next, entry;
enum ccache_type sorter;
off_t limit;
@@ -295,17 +256,14 @@
} nroff_state;
if (view->coord_cache == NULL)
- view->coord_cache = coord_cache_new ();
+ view->coord_cache = g_ptr_array_new_full (CACHE_CAPACITY_DELTA, g_free);
cache = view->coord_cache;
- if (cache->size == 0)
+ if (cache->len == 0)
{
- current.cc_offset = 0;
- current.cc_line = 0;
- current.cc_column = 0;
- current.cc_nroff_column = 0;
- mcview_ccache_add_entry (cache, 0, ¤t);
+ memset (¤t, 0, sizeof (current));
+ mcview_ccache_add_entry (cache, ¤t);
}
sorter = (lookup_what == CCACHE_OFFSET) ? CCACHE_LINECOL : CCACHE_OFFSET;
@@ -317,7 +275,6 @@
else
cmp_func = mcview_coord_cache_entry_less_plain;
-
tty_enable_interrupt_key ();
retry:
@@ -325,9 +282,9 @@
i = mcview_ccache_find (view, coord, cmp_func);
/* now i points to the lower neighbor in the cache */
- current = *cache->cache[i];
- if (i + 1 < view->coord_cache->size)
- limit = cache->cache[i + 1]->cc_offset;
+ current = *coord_cache_index (cache, i);
+ if (i + 1 < view->coord_cache->len)
+ limit = coord_cache_index (cache, i + 1)->cc_offset;
else
limit = current.cc_offset + VIEW_COORD_CACHE_GRANUL;
@@ -340,20 +297,11 @@
if (!mcview_get_byte (view, current.cc_offset, &c))
break;
- if (!cmp_func (¤t, coord))
- {
- if (lookup_what == CCACHE_OFFSET && view->mode_flags.nroff
- && nroff_state != NROFF_START)
- {
- /* don't break here */
- }
- else
- {
- break;
- }
- }
+ if (!cmp_func (¤t, coord) &&
+ (lookup_what != CCACHE_OFFSET || !view->mode_flags.nroff || nroff_state == NROFF_START))
+ break;
- /* Provide useful default values for ''next'' */
+ /* Provide useful default values for 'next' */
next.cc_offset = current.cc_offset + 1;
next.cc_line = current.cc_line;
next.cc_column = current.cc_column + 1;
@@ -381,29 +329,23 @@
next.cc_column = 0;
next.cc_nroff_column = 0;
}
-
}
else if (nroff_state == NROFF_BACKSPACE)
- {
next.cc_nroff_column = current.cc_nroff_column - 1;
-
- }
else if (c == '\t')
{
next.cc_column = mcview_offset_rounddown (current.cc_column, 8) + 8;
next.cc_nroff_column = mcview_offset_rounddown (current.cc_nroff_column, 8) + 8;
-
}
else if (c == '\n')
{
next.cc_line = current.cc_line + 1;
next.cc_column = 0;
next.cc_nroff_column = 0;
-
}
else
{
- /* Use all default values from above */
+ ; /* Use all default values from above */
}
switch (nroff_state)
@@ -428,9 +370,9 @@
entry = next;
}
- if (i + 1 == cache->size && entry.cc_offset != cache->cache[i]->cc_offset)
+ if (i + 1 == cache->len && entry.cc_offset != coord_cache_index (cache, i)->cc_offset)
{
- mcview_ccache_add_entry (cache, cache->size, &entry);
+ mcview_ccache_add_entry (cache, &entry);
if (!tty_got_interrupt ())
goto retry;
@@ -439,9 +381,7 @@
tty_disable_interrupt_key ();
if (lookup_what == CCACHE_OFFSET)
- {
coord->cc_offset = current.cc_offset;
- }
else
{
coord->cc_line = current.cc_line;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/datasource.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Functions for datasources
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -385,7 +385,7 @@
mcview_close_datasource (view);
- p = mc_popen (command, &error);
+ p = mc_popen (command, TRUE, TRUE, &error);
if (p == NULL)
{
mcview_display (view);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/dialogs.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for paint dialogs
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2012
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -52,14 +52,6 @@
/*** global variables ****************************************************************************/
-mcview_search_options_t mcview_search_options = {
- .type = MC_SEARCH_T_NORMAL,
- .case_sens = FALSE,
- .backwards = FALSE,
- .whole_words = FALSE,
- .all_codepages = FALSE
-};
-
/*** file scope macro definitions ****************************************************************/
/*** file scope type declarations ****************************************************************/
@@ -106,9 +98,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 58 };
+
quick_dialog_t qdlg = {
- -1, -1, 58,
- N_("Search"), "[Input Line Keys]",
+ r, N_("Search"), "[Input Line Keys]",
quick_widgets, NULL, NULL
};
@@ -117,7 +110,7 @@
g_strfreev (list_of_types);
- if ((qd_result == B_CANCEL) || (exp == NULL) || (exp[0] == '\0'))
+ if (qd_result == B_CANCEL || exp[0] == '\0')
{
g_free (exp);
return FALSE;
@@ -133,30 +126,10 @@
}
#endif
- g_free (view->last_search_string);
+ mcview_search_deinit (view);
view->last_search_string = exp;
- mcview_nroff_seq_free (&view->search_nroff_seq);
- mc_search_free (view->search);
-
-#ifdef HAVE_CHARSET
- view->search = mc_search_new (view->last_search_string, cp_source);
-#else
- view->search = mc_search_new (view->last_search_string, NULL);
-#endif
- view->search_nroff_seq = mcview_nroff_seq_new (view);
- if (view->search != NULL)
- {
- view->search->search_type = mcview_search_options.type;
-#ifdef HAVE_CHARSET
- view->search->is_all_charsets = mcview_search_options.all_codepages;
-#endif
- view->search->is_case_sensitive = mcview_search_options.case_sens;
- view->search->whole_words = mcview_search_options.whole_words;
- view->search->search_fn = mcview_search_cmd_callback;
- view->search->update_fn = mcview_search_update_cmd_callback;
- }
- return (view->search != NULL);
+ return mcview_search_init (view);
}
/* --------------------------------------------------------------------------------------------- */
@@ -209,9 +182,10 @@
/* *INDENT-ON* */
};
+ WRect r = { -1, -1, 0, 40 };
+
quick_dialog_t qdlg = {
- -1, -1, 40,
- N_("Goto"), "[Input Line Keys]",
+ r, N_("Goto"), "[Input Line Keys]",
quick_widgets, NULL, NULL
};
@@ -222,7 +196,7 @@
*offset = -1;
/* check input line value */
- res = (qd_result != B_CANCEL && exp != NULL && exp[0] != '\0');
+ res = (qd_result != B_CANCEL && exp[0] != '\0');
if (res)
{
int base = (current_goto_type == MC_VIEW_GOTO_OFFSET_HEX) ? 16 : 10;
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/display.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for whow info on display
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009, 2010
This file is part of the Midnight Commander.
@@ -48,7 +48,7 @@
#endif
#include "src/setup.h" /* panels_options */
-#include "src/keybind-defaults.h"
+#include "src/keymap.h"
#include "internal.h"
@@ -132,9 +132,10 @@
percent = mcview_calc_percent (view, p);
if (percent >= 0)
{
- const screen_dimen top = view->status_area.top;
- const screen_dimen right = view->status_area.left + view->status_area.width;
+ int top = view->status_area.y;
+ int right;
+ right = view->status_area.x + view->status_area.cols;
widget_gotoyx (view, top, right - 4);
tty_printf ("%3d%%", percent);
/* avoid cursor wrapping in NCurses-base MC */
@@ -147,26 +148,23 @@
static void
mcview_display_status (WView * view)
{
- const screen_dimen top = view->status_area.top;
- const screen_dimen left = view->status_area.left;
- const screen_dimen width = view->status_area.width;
- const screen_dimen height = view->status_area.height;
+ const WRect *r = &view->status_area;
const char *file_label;
- if (height < 1)
+ if (r->lines < 1)
return;
tty_setcolor (STATUSBAR_COLOR);
- tty_draw_hline (WIDGET (view)->y + top, WIDGET (view)->x + left, ' ', width);
+ tty_draw_hline (WIDGET (view)->rect.y + r->y, WIDGET (view)->rect.x + r->x, ' ', r->cols);
file_label =
view->filename_vpath != NULL ?
vfs_path_get_last_path_str (view->filename_vpath) : view->command != NULL ?
view->command : "";
- if (width > 40)
+ if (r->cols > 40)
{
- widget_gotoyx (view, top, width - 32);
+ widget_gotoyx (view, r->y, r->cols - 32);
if (view->mode_flags.hex)
tty_printf ("0x%08" PRIxMAX, (uintmax_t) view->hex_cursor);
else
@@ -184,12 +182,12 @@
"");
}
}
- widget_gotoyx (view, top, left);
- if (width > 40)
- tty_print_string (str_fit_to_term (file_label, width - 34, J_LEFT_FIT));
+ widget_gotoyx (view, r->y, r->x);
+ if (r->cols > 40)
+ tty_print_string (str_fit_to_term (file_label, r->cols - 34, J_LEFT_FIT));
else
- tty_print_string (str_fit_to_term (file_label, width - 5, J_LEFT_FIT));
- if (width > 26)
+ tty_print_string (str_fit_to_term (file_label, r->cols - 5, J_LEFT_FIT));
+ if (r->cols > 26)
mcview_display_percent (view, view->mode_flags.hex ? view->hex_cursor : view->dpy_end);
}
@@ -258,18 +256,18 @@
void
mcview_compute_areas (WView * view)
{
- struct area view_area;
- screen_dimen height, rest, y;
+ WRect view_area;
+ int height, rest, y;
/* The viewer is surrounded by a frame of size view->dpy_frame_size.
* Inside that frame, there are: The status line (at the top),
* the data area and an optional ruler, which is shown above or
* below the data area. */
- view_area.top = view->dpy_frame_size;
- view_area.left = view->dpy_frame_size;
- view_area.height = mcview_dimen_doz (WIDGET (view)->lines, 2 * view->dpy_frame_size);
- view_area.width = mcview_dimen_doz (WIDGET (view)->cols, 2 * view->dpy_frame_size);
+ view_area.y = view->dpy_frame_size;
+ view_area.x = view->dpy_frame_size;
+ view_area.lines = DOZ (WIDGET (view)->rect.lines, 2 * view->dpy_frame_size);
+ view_area.cols = DOZ (WIDGET (view)->rect.cols, 2 * view->dpy_frame_size);
/* Most coordinates of the areas equal those of the whole viewer */
view->status_area = view_area;
@@ -277,36 +275,36 @@
view->data_area = view_area;
/* Compute the heights of the areas */
- rest = view_area.height;
+ rest = view_area.lines;
height = MIN (rest, 1);
- view->status_area.height = height;
+ view->status_area.lines = height;
rest -= height;
height = (ruler == RULER_NONE || view->mode_flags.hex) ? 0 : 2;
height = MIN (rest, height);
- view->ruler_area.height = height;
+ view->ruler_area.lines = height;
rest -= height;
- view->data_area.height = rest;
+ view->data_area.lines = rest;
/* Compute the position of the areas */
- y = view_area.top;
+ y = view_area.y;
- view->status_area.top = y;
- y += view->status_area.height;
+ view->status_area.y = y;
+ y += view->status_area.lines;
if (ruler == RULER_TOP)
{
- view->ruler_area.top = y;
- y += view->ruler_area.height;
+ view->ruler_area.y = y;
+ y += view->ruler_area.lines;
}
- view->data_area.top = y;
- y += view->data_area.height;
+ view->data_area.y = y;
+ y += view->data_area.lines;
if (ruler == RULER_BOTTOM)
- view->ruler_area.top = y;
+ view->ruler_area.y = y;
}
/* --------------------------------------------------------------------------------------------- */
@@ -314,7 +312,7 @@
void
mcview_update_bytes_per_line (WView * view)
{
- const screen_dimen cols = view->data_area.width;
+ int cols = view->data_area.cols;
int bytes;
if (cols < 9 + 17)
@@ -357,7 +355,7 @@
tty_setcolor (VIEW_NORMAL_COLOR);
widget_erase (w);
if (view->dpy_frame_size != 0)
- tty_draw_box (w->y, w->x, w->lines, w->cols, FALSE);
+ tty_draw_box (w->rect.y, w->rect.x, w->rect.lines, w->rect.cols, FALSE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -366,36 +364,33 @@
mcview_display_ruler (WView * view)
{
static const char ruler_chars[] = "|----*----";
- const screen_dimen top = view->ruler_area.top;
- const screen_dimen left = view->ruler_area.left;
- const screen_dimen width = view->ruler_area.width;
- const screen_dimen height = view->ruler_area.height;
- const screen_dimen line_row = (ruler == RULER_TOP) ? 0 : 1;
- const screen_dimen nums_row = (ruler == RULER_TOP) ? 1 : 0;
+ const WRect *r = &view->ruler_area;
+ const int line_row = (ruler == RULER_TOP) ? 0 : 1;
+ const int nums_row = (ruler == RULER_TOP) ? 1 : 0;
char r_buff[10];
off_t cl;
- screen_dimen c;
+ int c;
- if (ruler == RULER_NONE || height < 1)
+ if (ruler == RULER_NONE || r->lines < 1)
return;
tty_setcolor (VIEW_BOLD_COLOR);
- for (c = 0; c < width; c++)
+ for (c = 0; c < r->cols; c++)
{
cl = view->dpy_text_column + c;
- if (line_row < height)
+ if (line_row < r->lines)
{
- widget_gotoyx (view, top + line_row, left + c);
+ widget_gotoyx (view, r->y + line_row, r->x + c);
tty_print_char (ruler_chars[cl % 10]);
}
if ((cl != 0) && (cl % 10) == 0)
{
g_snprintf (r_buff, sizeof (r_buff), "%" PRIuMAX, (uintmax_t) cl);
- if (nums_row < height)
+ if (nums_row < r->lines)
{
- widget_gotoyx (view, top + nums_row, left + c - 1);
+ widget_gotoyx (view, r->y + nums_row, r->x + c - 1);
tty_print_string (r_buff);
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/growbuf.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for work with growing bufers
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -186,6 +186,16 @@
view->pipe_first_err_msg = FALSE;
mcview_show_error (view, sp->err.buf);
+
+ /* when switch from parse to raw mode and back,
+ * do not close the already closed pipe (see call to mcview_growbuf_done below).
+ * return from here since (sp == view->ds_stdio_pipe) would now be invalid.
+ * NOTE: this check was removed by ticket #4103 but the above call to
+ * mcview_show_error triggers the stdio pipe handle to be closed:
+ * mcview_close_datasource -> mcview_growbuf_done
+ */
+ if (view->ds_stdio_pipe == NULL)
+ return;
}
if (sp->out.len > 0)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/hex.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for hex view
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2009
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -96,21 +96,17 @@
void
mcview_display_hex (WView * view)
{
- const screen_dimen top = view->data_area.top;
- const screen_dimen left = view->data_area.left;
- const screen_dimen height = view->data_area.height;
- const screen_dimen width = view->data_area.width;
- const int ngroups = view->bytes_per_line / 4;
+ const WRect *r = &view->data_area;
+ int ngroups = view->bytes_per_line / 4;
/* 8 characters are used for the file offset, and every hex group
* takes 13 characters. Starting at width of 80 columns, the groups
* are separated by an extra vertical line. Starting at width of 81,
* there is an extra space before the text column. There is always a
* mostly empty column on the right, to allow overflowing CJKs.
*/
- const screen_dimen text_start = 8 + 13 * ngroups +
- ((width < 80) ? 0 : (width == 80) ? (ngroups - 1) : (ngroups - 1 + 1));
+ int text_start;
- int row;
+ int row = 0;
off_t from;
mark_t boldflag_byte = MARK_NORMAL;
mark_t boldflag_char = MARK_NORMAL;
@@ -123,12 +119,14 @@
char hex_buff[10]; /* A temporary buffer for sprintf and mvwaddstr */
+ text_start = 8 + 13 * ngroups +
+ ((r->cols < 80) ? 0 : (r->cols == 80) ? (ngroups - 1) : (ngroups - 1 + 1));
+
mcview_display_clean (view);
/* Find the first displayable changed byte */
/* In UTF-8 mode, go back by 1 or maybe 2 lines to handle continuation bytes properly. */
from = view->dpy_start;
- row = 0;
#ifdef HAVE_CHARSET
if (view->utf8)
{
@@ -149,20 +147,20 @@
curr = curr->next;
}
- for (; mcview_get_byte (view, from, NULL) && row < (int) height; row++)
+ for (; mcview_get_byte (view, from, NULL) && row < r->lines; row++)
{
- screen_dimen col = 0;
+ int col = 0;
int bytes; /* Number of bytes already printed on the line */
/* Print the hex offset */
if (row >= 0)
{
- size_t i;
+ int i;
g_snprintf (hex_buff, sizeof (hex_buff), "%08" PRIXMAX " ", (uintmax_t) from);
- widget_gotoyx (view, top + row, left);
+ widget_gotoyx (view, r->y + row, r->x);
tty_setcolor (VIEW_BOLD_COLOR);
- for (i = 0; col < width && hex_buff[i] != '\0'; col++, i++)
+ for (i = 0; col < r->cols && hex_buff[i] != '\0'; col++, i++)
tty_print_char (hex_buff[i]);
tty_setcolor (VIEW_NORMAL_COLOR);
}
@@ -276,13 +274,13 @@
view->hexview_in_text ? VIEW_SELECTED_COLOR : VIEW_UNDERLINED_COLOR);
/* Print the hex number */
- widget_gotoyx (view, top + row, left + col);
- if (col < width)
+ widget_gotoyx (view, r->y + row, r->x + col);
+ if (col < r->cols)
{
tty_print_char (hex_char[c / 16]);
col += 1;
}
- if (col < width)
+ if (col < r->cols)
{
tty_print_char (hex_char[c % 16]);
col += 1;
@@ -292,7 +290,7 @@
tty_setcolor (VIEW_NORMAL_COLOR);
if (bytes != view->bytes_per_line - 1)
{
- if (col < width)
+ if (col < r->cols)
{
tty_print_char (' ');
col += 1;
@@ -301,12 +299,12 @@
/* After every four bytes, print a group separator */
if (bytes % 4 == 3)
{
- if (view->data_area.width >= 80 && col < width)
+ if (view->data_area.cols >= 80 && col < r->cols)
{
tty_print_one_vline (TRUE);
col += 1;
}
- if (col < width)
+ if (col < r->cols)
{
tty_print_char (' ');
col += 1;
@@ -347,9 +345,9 @@
}
/* Print corresponding character on the text side */
- if (text_start + bytes < width)
+ if (text_start + bytes < r->cols)
{
- widget_gotoyx (view, top + row, left + text_start + bytes);
+ widget_gotoyx (view, r->y + row, r->x + text_start + bytes);
#ifdef HAVE_CHARSET
if (view->utf8)
tty_print_anychar (ch);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/internal.h
^
|
@@ -1,6 +1,7 @@
#ifndef MC__VIEWER_INTERNAL_H
#define MC__VIEWER_INTERNAL_H
+#include <limits.h> /* CHAR_BIT */
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
@@ -11,17 +12,17 @@
#include "lib/widget.h"
#include "lib/vfs/vfs.h" /* vfs_path_t */
-#include "src/keybind-defaults.h" /* global_keymap_t */
+#include "src/keymap.h" /* global_keymap_t */
#include "src/filemanager/dir.h" /* dir_list */
#include "mcviewer.h"
/*** typedefs(not structures) and defined constants **********************************************/
-typedef unsigned char byte;
+#define OFF_T_BITWIDTH ((unsigned int) (sizeof (off_t) * CHAR_BIT - 1))
+#define OFFSETTYPE_MAX (((off_t) 1 << (OFF_T_BITWIDTH - 1)) - 1)
-/* A width or height on the screen */
-typedef unsigned int screen_dimen;
+typedef unsigned char byte;
/*** enums ***************************************************************************************/
@@ -58,12 +59,6 @@
byte value;
};
-struct area
-{
- screen_dimen top, left;
- screen_dimen height, width;
-};
-
/* A cache entry for mapping offsets into line/column pairs and vice versa.
* cc_offset, cc_line, and cc_column are the 0-based values of the offset,
* line and column of that cache entry. cc_nroff_column is the column
@@ -77,13 +72,6 @@
off_t cc_nroff_column;
} coord_cache_entry_t;
-typedef struct
-{
- size_t size;
- size_t capacity;
- coord_cache_entry_t **cache;
-} coord_cache_t;
-
/* TODO: find a better name. This is not actually a "state machine",
* but a "state machine's state", but that sounds silly.
* Could be parser_state, formatter_state... */
@@ -149,10 +137,10 @@
gboolean utf8; /* It's multibyte file codeset */
#endif
- coord_cache_t *coord_cache; /* Cache for mapping offsets to cursor positions */
+ GPtrArray *coord_cache; /* Cache for mapping offsets to cursor positions */
/* Display information */
- screen_dimen dpy_frame_size; /* Size of the frame surrounding the real viewer */
+ int dpy_frame_size; /* Size of the frame surrounding the real viewer */
off_t dpy_start; /* Offset of the displayed data (start of the paragraph in non-hex mode) */
off_t dpy_end; /* Offset after the displayed data */
off_t dpy_paragraph_skip_lines; /* Extra lines to skip in wrap mode */
@@ -161,12 +149,12 @@
gboolean dpy_wrap_dirty; /* dpy_state_top needs to be recomputed */
off_t dpy_text_column; /* Number of skipped columns in non-wrap
* text mode */
- screen_dimen cursor_col; /* Cursor column */
- screen_dimen cursor_row; /* Cursor row */
+ int cursor_col; /* Cursor column */
+ int cursor_row; /* Cursor row */
struct hexedit_change_node *change_list; /* Linked list of changes */
- struct area status_area; /* Where the status line is displayed */
- struct area ruler_area; /* Where the ruler is displayed */
- struct area data_area; /* Where the data is displayed */
+ WRect status_area; /* Where the status line is displayed */
+ WRect ruler_area; /* Where the ruler is displayed */
+ WRect data_area; /* Where the data is displayed */
ssize_t force_max; /* Force a max offset, or -1 */
@@ -232,16 +220,12 @@
void *data);
/* ascii.c: */
-void mcview_display_text (WView *);
+void mcview_display_text (WView * view);
void mcview_state_machine_init (mcview_state_machine_t *, off_t);
-void mcview_ascii_move_down (WView *, off_t);
-void mcview_ascii_move_up (WView *, off_t);
-void mcview_ascii_moveto_bol (WView *);
-void mcview_ascii_moveto_eol (WView *);
-
-/* coord_cache.c: */
-coord_cache_t *coord_cache_new (void);
-void coord_cache_free (coord_cache_t * cache);
+void mcview_ascii_move_down (WView * view, off_t lines);
+void mcview_ascii_move_up (WView * view, off_t lines);
+void mcview_ascii_moveto_bol (WView * view);
+void mcview_ascii_moveto_eol (WView * view);
#ifdef MC_ENABLE_DEBUGGING_CODE
void mcview_ccache_dump (WView * view);
@@ -250,21 +234,21 @@
void mcview_ccache_lookup (WView * view, coord_cache_entry_t * coord, enum ccache_type lookup_what);
/* datasource.c: */
-void mcview_set_datasource_none (WView *);
-off_t mcview_get_filesize (WView *);
+void mcview_set_datasource_none (WView * view);
+off_t mcview_get_filesize (WView * view);
void mcview_update_filesize (WView * view);
-char *mcview_get_ptr_file (WView *, off_t);
-char *mcview_get_ptr_string (WView *, off_t);
+char *mcview_get_ptr_file (WView * view, off_t byte_index);
+char *mcview_get_ptr_string (WView * view, off_t byte_index);
gboolean mcview_get_utf (WView * view, off_t byte_index, int *ch, int *ch_len);
-gboolean mcview_get_byte_string (WView *, off_t, int *);
-gboolean mcview_get_byte_none (WView *, off_t, int *);
-void mcview_set_byte (WView *, off_t, byte);
-void mcview_file_load_data (WView *, off_t);
-void mcview_close_datasource (WView *);
-void mcview_set_datasource_file (WView *, int, const struct stat *);
-gboolean mcview_load_command_output (WView *, const char *);
-void mcview_set_datasource_vfs_pipe (WView *, int);
-void mcview_set_datasource_string (WView *, const char *);
+gboolean mcview_get_byte_string (WView * view, off_t byte_index, int *retval);
+gboolean mcview_get_byte_none (WView * view, off_t byte_index, int *retval);
+void mcview_set_byte (WView * view, off_t offset, byte b);
+void mcview_file_load_data (WView * view, off_t byte_index);
+void mcview_close_datasource (WView * view);
+void mcview_set_datasource_file (WView * view, int fd, const struct stat *st);
+gboolean mcview_load_command_output (WView * view, const char *command);
+void mcview_set_datasource_vfs_pipe (WView * view, int fd);
+void mcview_set_datasource_string (WView * view, const char *s);
/* dialog.c: */
gboolean mcview_dialog_search (WView * view);
@@ -284,16 +268,16 @@
void mcview_growbuf_done (WView * view);
void mcview_growbuf_free (WView * view);
off_t mcview_growbuf_filesize (WView * view);
-void mcview_growbuf_read_until (WView * view, off_t p);
-gboolean mcview_get_byte_growing_buffer (WView * view, off_t p, int *);
-char *mcview_get_ptr_growing_buffer (WView * view, off_t p);
+void mcview_growbuf_read_until (WView * view, off_t ofs);
+gboolean mcview_get_byte_growing_buffer (WView * view, off_t byte_index, int *retval);
+char *mcview_get_ptr_growing_buffer (WView * view, off_t byte_index);
/* hex.c: */
void mcview_display_hex (WView * view);
gboolean mcview_hexedit_save_changes (WView * view);
void mcview_toggle_hexedit_mode (WView * view);
void mcview_hexedit_free_change_list (WView * view);
-void mcview_enqueue_change (struct hexedit_change_node **, struct hexedit_change_node *);
+void mcview_enqueue_change (struct hexedit_change_node **head, struct hexedit_change_node *node);
/* lib.c: */
void mcview_toggle_magic_mode (WView * view);
@@ -313,38 +297,175 @@
int mcview_calc_percent (WView * view, off_t p);
/* move.c */
-void mcview_move_up (WView *, off_t);
-void mcview_move_down (WView *, off_t);
-void mcview_move_left (WView *, off_t);
-void mcview_move_right (WView *, off_t);
-void mcview_moveto_top (WView *);
-void mcview_moveto_bottom (WView *);
-void mcview_moveto_bol (WView *);
-void mcview_moveto_eol (WView *);
-void mcview_moveto_offset (WView *, off_t);
-void mcview_moveto (WView *, off_t, off_t);
-void mcview_coord_to_offset (WView *, off_t *, off_t, off_t);
-void mcview_offset_to_coord (WView *, off_t *, off_t *, off_t);
-void mcview_place_cursor (WView *);
-void mcview_moveto_match (WView *);
+void mcview_move_up (WView * view, off_t lines);
+void mcview_move_down (WView * view, off_t lines);
+void mcview_move_left (WView * view, off_t columns);
+void mcview_move_right (WView * view, off_t columns);
+void mcview_moveto_top (WView * view);
+void mcview_moveto_bottom (WView * view);
+void mcview_moveto_bol (WView * view);
+void mcview_moveto_eol (WView * view);
+void mcview_moveto_offset (WView * view, off_t offset);
+void mcview_moveto (WView * view, off_t, off_t col);
+void mcview_coord_to_offset (WView * view, off_t * ret_offset, off_t line, off_t column);
+void mcview_offset_to_coord (WView * view, off_t * ret_line, off_t * ret_column, off_t offset);
+void mcview_place_cursor (WView * view);
+void mcview_moveto_match (WView * view);
/* nroff.c: */
-int mcview__get_nroff_real_len (WView * view, off_t, off_t p);
-mcview_nroff_t *mcview_nroff_seq_new_num (WView * view, off_t p);
+int mcview__get_nroff_real_len (WView * view, off_t start, off_t length);
+mcview_nroff_t *mcview_nroff_seq_new_num (WView * view, off_t lc_index);
mcview_nroff_t *mcview_nroff_seq_new (WView * view);
-void mcview_nroff_seq_free (mcview_nroff_t **);
-nroff_type_t mcview_nroff_seq_info (mcview_nroff_t *);
-int mcview_nroff_seq_next (mcview_nroff_t *);
-int mcview_nroff_seq_prev (mcview_nroff_t *);
+void mcview_nroff_seq_free (mcview_nroff_t ** nroff);
+nroff_type_t mcview_nroff_seq_info (mcview_nroff_t * nroff);
+int mcview_nroff_seq_next (mcview_nroff_t * nroff);
+int mcview_nroff_seq_prev (mcview_nroff_t * nroff);
/* search.c: */
+gboolean mcview_search_init (WView * view);
+void mcview_search_deinit (WView * view);
mc_search_cbret_t mcview_search_cmd_callback (const void *user_data, gsize char_offset,
int *current_char);
mc_search_cbret_t mcview_search_update_cmd_callback (const void *user_data, gsize char_offset);
void mcview_do_search (WView * view, off_t want_search_start);
+/* --------------------------------------------------------------------------------------------- */
/*** inline functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+static inline off_t
+mcview_offset_rounddown (off_t a, off_t b)
+{
+ g_assert (b != 0);
+ return a - a % b;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* {{{ Simple Primitive Functions for WView }}} */
+static inline gboolean
+mcview_is_in_panel (WView * view)
+{
+ return (view->dpy_frame_size != 0);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gboolean
+mcview_may_still_grow (WView * view)
+{
+ return (view->growbuf_in_use && !view->growbuf_finished);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* returns TRUE if the idx lies in the half-open interval
+ * [offset; offset + size), FALSE otherwise.
+ */
+static inline gboolean
+mcview_already_loaded (off_t offset, off_t idx, size_t size)
+{
+ return (offset <= idx && idx - offset < (off_t) size);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gboolean
+mcview_get_byte_file (WView * view, off_t byte_index, int *retval)
+{
+ g_assert (view->datasource == DS_FILE);
+
+ mcview_file_load_data (view, byte_index);
+ if (mcview_already_loaded (view->ds_file_offset, byte_index, view->ds_file_datalen))
+ {
+ if (retval)
+ *retval = view->ds_file_data[byte_index - view->ds_file_offset];
+ return TRUE;
+ }
+ if (retval)
+ *retval = -1;
+ return FALSE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gboolean
+mcview_get_byte (WView * view, off_t offset, int *retval)
+{
+ switch (view->datasource)
+ {
+ case DS_STDIO_PIPE:
+ case DS_VFS_PIPE:
+ return mcview_get_byte_growing_buffer (view, offset, retval);
+ case DS_FILE:
+ return mcview_get_byte_file (view, offset, retval);
+ case DS_STRING:
+ return mcview_get_byte_string (view, offset, retval);
+ case DS_NONE:
+ return mcview_get_byte_none (view, offset, retval);
+ default:
+ return FALSE;
+ }
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gboolean
+mcview_get_byte_indexed (WView * view, off_t base, off_t ofs, int *retval)
+{
+ if (base <= OFFSETTYPE_MAX - ofs)
+ return mcview_get_byte (view, base + ofs, retval);
+
+ if (retval != NULL)
+ *retval = -1;
+
+ return FALSE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline int
+mcview_count_backspaces (WView * view, off_t offset)
+{
+ int backspaces = 0;
+ int c;
+
+ while (offset >= 2 * backspaces && mcview_get_byte (view, offset - 2 * backspaces, &c)
+ && c == '\b')
+ backspaces++;
+
+ return backspaces;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline gboolean
+mcview_is_nroff_sequence (WView * view, off_t offset)
+{
+ int c0, c1, c2;
+
+ /* The following commands are ordered to speed up the calculation. */
+
+ if (!mcview_get_byte_indexed (view, offset, 1, &c1) || c1 != '\b')
+ return FALSE;
+
+ if (!mcview_get_byte_indexed (view, offset, 0, &c0) || !g_ascii_isprint (c0))
+ return FALSE;
+
+ if (!mcview_get_byte_indexed (view, offset, 2, &c2) || !g_ascii_isprint (c2))
+ return FALSE;
+
+ return (c0 == c2 || c0 == '_' || (c0 == '+' && c2 == 'o'));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static inline void
+mcview_growbuf_read_all_data (WView * view)
+{
+ mcview_growbuf_read_until (view, OFFSETTYPE_MAX);
+}
-#include "inlines.h"
+/* --------------------------------------------------------------------------------------------- */
#endif /* MC__VIEWER_INTERNAL_H */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/lib.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Common finctions (used from some other mcviewer functions)
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013, 2014
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -217,17 +217,17 @@
/* Free memory used by the viewer */
/* view->widget needs no destructor */
- vfs_path_free (view->filename_vpath);
+ vfs_path_free (view->filename_vpath, TRUE);
view->filename_vpath = NULL;
- vfs_path_free (view->workdir_vpath);
+ vfs_path_free (view->workdir_vpath, TRUE);
view->workdir_vpath = NULL;
MC_PTR_FREE (view->command);
mcview_close_datasource (view);
/* the growing buffer is freed with the datasource */
- coord_cache_free (view->coord_cache);
- view->coord_cache = NULL;
+ if (view->coord_cache != NULL)
+ view->coord_cache = (GPtrArray *) g_ptr_array_free (view->coord_cache, TRUE);
if (view->converter == INVALID_CONV)
view->converter = str_cnv_from_term;
@@ -238,10 +238,9 @@
view->converter = str_cnv_from_term;
}
- mc_search_free (view->search);
+ mcview_search_deinit (view);
view->search = NULL;
- MC_PTR_FREE (view->last_search_string);
- mcview_nroff_seq_free (&view->search_nroff_seq);
+ view->last_search_string = NULL;
mcview_hexedit_free_change_list (view);
if (mc_global.mc_run_mode == MC_RUN_VIEWER && view->dir != NULL)
@@ -399,12 +398,10 @@
int
mcview_calc_percent (WView * view, off_t p)
{
- const screen_dimen right = view->status_area.left + view->status_area.width;
- const screen_dimen height = view->status_area.height;
off_t filesize;
int percent;
- if (height < 1 || right < 4)
+ if (view->status_area.cols < 1 || (view->status_area.x + view->status_area.cols) < 4)
return (-1);
if (mcview_may_still_grow (view))
return (-1);
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/mcviewer.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Interface functions
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009, 2013
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -89,6 +89,7 @@
mcview_mouse_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event)
{
WView *view = (WView *) w;
+ const WRect *r = &view->data_area;
gboolean ok = TRUE;
switch (msg)
@@ -96,7 +97,7 @@
case MSG_MOUSE_DOWN:
if (mcview_is_in_panel (view))
{
- if (event->y == WIDGET (w->owner)->y)
+ if (event->y == WIDGET (w->owner)->rect.y)
{
/* return MOU_UNHANDLED */
event->result.abort = TRUE;
@@ -117,16 +118,16 @@
if (!view->mode_flags.wrap)
{
/* Scrolling left and right */
- screen_dimen x;
+ int x;
x = event->x + 1; /* FIXME */
- if (x < view->data_area.width * 1 / 4)
+ if (x < r->cols * 1 / 4)
{
mcview_move_left (view, 1);
event->result.repeat = msg == MSG_MOUSE_DOWN;
}
- else if (x < view->data_area.width * 3 / 4)
+ else if (x < r->cols * 3 / 4)
{
/* ignore the click */
ok = FALSE;
@@ -140,20 +141,20 @@
else
{
/* Scrolling up and down */
- screen_dimen y;
+ int y;
y = event->y + 1; /* FIXME */
- if (y < view->data_area.top + view->data_area.height * 1 / 3)
+ if (y < r->y + r->lines * 1 / 3)
{
if (mcview_mouse_move_pages)
- mcview_move_up (view, view->data_area.height / 2);
+ mcview_move_up (view, r->lines / 2);
else
mcview_move_up (view, 1);
event->result.repeat = msg == MSG_MOUSE_DOWN;
}
- else if (y < view->data_area.top + view->data_area.height * 2 / 3)
+ else if (y < r->y + r->lines * 2 / 3)
{
/* ignore the click */
ok = FALSE;
@@ -161,7 +162,7 @@
else
{
if (mcview_mouse_move_pages)
- mcview_move_down (view, view->data_area.height / 2);
+ mcview_move_down (view, r->lines / 2);
else
mcview_move_down (view, 1);
@@ -194,12 +195,14 @@
WView *
mcview_new (int y, int x, int lines, int cols, gboolean is_panel)
{
+ WRect r = { y, x, lines, cols };
WView *view;
Widget *w;
view = g_new0 (WView, 1);
w = WIDGET (view);
- widget_init (w, y, x, lines, cols, mcview_callback, mcview_mouse_callback);
+
+ widget_init (w, &r, mcview_callback, mcview_mouse_callback);
w->options |= WOP_SELECTABLE | WOP_TOP_SELECT;
w->keymap = viewer_map;
@@ -247,10 +250,10 @@
g = GROUP (view_dlg);
- lc_mcview = mcview_new (vw->y, vw->x, vw->lines - 1, vw->cols, FALSE);
+ lc_mcview = mcview_new (vw->rect.y, vw->rect.x, vw->rect.lines - 1, vw->rect.cols, FALSE);
group_add_widget_autopos (g, lc_mcview, WPOS_KEEP_ALL, NULL);
- b = WIDGET (buttonbar_new (TRUE));
+ b = WIDGET (buttonbar_new ());
group_add_widget_autopos (g, b, b->pos_flags, NULL);
view_dlg->get_title = mcview_get_title;
@@ -265,7 +268,7 @@
dlg_stop (view_dlg);
if (widget_get_state (vw, WST_CLOSED))
- dlg_destroy (view_dlg);
+ widget_destroy (vw);
return succeeded;
}
@@ -288,7 +291,7 @@
/* get working dir */
if (file != NULL && file[0] != '\0')
{
- vfs_path_free (view->workdir_vpath);
+ vfs_path_free (view->workdir_vpath, TRUE);
if (!g_path_is_absolute (file))
{
@@ -296,7 +299,7 @@
p = vfs_path_clone (vfs_get_raw_current_dir ());
view->workdir_vpath = vfs_path_append_new (p, file, (char *) NULL);
- vfs_path_free (p);
+ vfs_path_free (p, TRUE);
}
else
{
@@ -335,9 +338,9 @@
file, unix_error_string (errno));
mcview_close_datasource (view);
mcview_show_error (view, tmp);
- vfs_path_free (view->filename_vpath);
+ vfs_path_free (view->filename_vpath, TRUE);
view->filename_vpath = NULL;
- vfs_path_free (view->workdir_vpath);
+ vfs_path_free (view->workdir_vpath, TRUE);
view->workdir_vpath = NULL;
goto finish;
}
@@ -350,9 +353,9 @@
file, unix_error_string (errno));
mcview_close_datasource (view);
mcview_show_error (view, tmp);
- vfs_path_free (view->filename_vpath);
+ vfs_path_free (view->filename_vpath, TRUE);
view->filename_vpath = NULL;
- vfs_path_free (view->workdir_vpath);
+ vfs_path_free (view->workdir_vpath, TRUE);
view->workdir_vpath = NULL;
goto finish;
}
@@ -362,9 +365,9 @@
mc_close (fd);
mcview_close_datasource (view);
mcview_show_error (view, _("Cannot view: not a regular file"));
- vfs_path_free (view->filename_vpath);
+ vfs_path_free (view->filename_vpath, TRUE);
view->filename_vpath = NULL;
- vfs_path_free (view->workdir_vpath);
+ vfs_path_free (view->workdir_vpath, TRUE);
view->workdir_vpath = NULL;
goto finish;
}
@@ -392,7 +395,7 @@
vpath1 = vfs_path_from_str (tmp_filename);
g_free (tmp_filename);
fd1 = mc_open (vpath1, O_RDONLY | O_NONBLOCK);
- vfs_path_free (vpath1);
+ vfs_path_free (vpath1, TRUE);
if (fd1 == -1)
{
@@ -457,7 +460,7 @@
view->hexedit_lownibble = FALSE;
view->hexview_in_text = FALSE;
view->change_list = NULL;
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
return retval;
}
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/move.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Functions for handle cursor movement
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009, 2010
This file is part of the Midnight Commander.
@@ -77,7 +77,7 @@
off_t topleft = view->dpy_start;
off_t displaysize;
- displaysize = view->data_area.height * bytes;
+ displaysize = view->data_area.lines * bytes;
if (topleft + displaysize <= cursor)
topleft = mcview_offset_rounddown (cursor, bytes) - (displaysize - bytes);
if (cursor < topleft)
@@ -94,11 +94,13 @@
mcview_movement_fixups (WView * view, gboolean reset_search)
{
mcview_scroll_to_cursor (view);
+
if (reset_search)
{
view->search_start = view->mode_flags.hex ? view->hex_cursor : view->dpy_start;
view->search_end = view->search_start;
}
+
view->dirty++;
}
@@ -109,29 +111,28 @@
void
mcview_move_up (WView * view, off_t lines)
{
- if (view->mode_flags.hex)
+ if (!view->mode_flags.hex)
+ mcview_ascii_move_up (view, lines);
+ else
{
- off_t bytes = lines * view->bytes_per_line;
+ off_t bytes;
+
+ bytes = lines * view->bytes_per_line;
- if (view->hex_cursor >= bytes)
+ if (view->hex_cursor < bytes)
+ view->hex_cursor %= view->bytes_per_line;
+ else
{
view->hex_cursor -= bytes;
if (view->hex_cursor < view->dpy_start)
{
- view->dpy_start = mcview_offset_doz (view->dpy_start, bytes);
+ view->dpy_start = DOZ (view->dpy_start, bytes);
view->dpy_paragraph_skip_lines = 0;
view->dpy_wrap_dirty = TRUE;
}
}
- else
- {
- view->hex_cursor %= view->bytes_per_line;
- }
- }
- else
- {
- mcview_ascii_move_up (view, lines);
}
+
mcview_movement_fixups (view, TRUE);
}
@@ -144,15 +145,18 @@
last_byte = mcview_get_filesize (view);
- if (view->mode_flags.hex)
+ if (!view->mode_flags.hex)
+ mcview_ascii_move_down (view, lines);
+ else
{
off_t i, limit;
- limit = mcview_offset_doz (last_byte, (off_t) view->bytes_per_line);
+ limit = DOZ (last_byte, (off_t) view->bytes_per_line);
for (i = 0; i < lines && view->hex_cursor < limit; i++)
{
view->hex_cursor += view->bytes_per_line;
+
if (lines != 1)
{
view->dpy_start += view->bytes_per_line;
@@ -161,10 +165,7 @@
}
}
}
- else
- {
- mcview_ascii_move_down (view, lines);
- }
+
mcview_movement_fixups (view, TRUE);
}
@@ -180,16 +181,16 @@
g_assert (columns == 1);
if (view->hexview_in_text || !view->hexedit_lownibble)
- {
if (view->hex_cursor > 0)
view->hex_cursor--;
- }
+
if (!view->hexview_in_text)
if (old_cursor > 0 || view->hexedit_lownibble)
view->hexedit_lownibble = !view->hexedit_lownibble;
}
else if (!view->mode_flags.wrap)
- view->dpy_text_column = mcview_offset_doz (view->dpy_text_column, columns);
+ view->dpy_text_column = DOZ (view->dpy_text_column, columns);
+
mcview_movement_fixups (view, FALSE);
}
@@ -203,23 +204,22 @@
off_t last_byte;
off_t old_cursor = view->hex_cursor;
- last_byte = mcview_offset_doz (mcview_get_filesize (view), 1);
+ last_byte = mcview_get_filesize (view);
+ last_byte = DOZ (last_byte, 1);
g_assert (columns == 1);
if (view->hexview_in_text || view->hexedit_lownibble)
- {
if (view->hex_cursor < last_byte)
view->hex_cursor++;
- }
+
if (!view->hexview_in_text)
if (old_cursor < last_byte || !view->hexedit_lownibble)
view->hexedit_lownibble = !view->hexedit_lownibble;
}
else if (!view->mode_flags.wrap)
- {
view->dpy_text_column += columns;
- }
+
mcview_movement_fixups (view, FALSE);
}
@@ -252,17 +252,15 @@
if (view->mode_flags.hex)
{
- view->hex_cursor = mcview_offset_doz (filesize, 1);
+ view->hex_cursor = DOZ (filesize, 1);
mcview_movement_fixups (view, TRUE);
}
else
{
- const off_t datalines = view->data_area.height;
-
view->dpy_start = filesize;
view->dpy_paragraph_skip_lines = 0;
view->dpy_wrap_dirty = TRUE;
- mcview_move_up (view, datalines);
+ mcview_move_up (view, view->data_area.lines);
}
}
@@ -271,15 +269,14 @@
void
mcview_moveto_bol (WView * view)
{
- if (view->mode_flags.hex)
+ if (!view->mode_flags.hex)
+ mcview_ascii_moveto_bol (view);
+ else
{
view->hex_cursor -= view->hex_cursor % view->bytes_per_line;
view->dpy_text_column = 0;
}
- else
- {
- mcview_ascii_moveto_bol (view);
- }
+
mcview_movement_fixups (view, TRUE);
}
@@ -290,25 +287,23 @@
{
off_t bol;
- if (view->mode_flags.hex)
+ if (!view->mode_flags.hex)
+ mcview_ascii_moveto_eol (view);
+ else
{
off_t filesize;
bol = mcview_offset_rounddown (view->hex_cursor, view->bytes_per_line);
- if (mcview_get_byte_indexed (view, bol, view->bytes_per_line - 1, NULL) == TRUE)
- {
+
+ if (mcview_get_byte_indexed (view, bol, view->bytes_per_line - 1, NULL))
view->hex_cursor = bol + view->bytes_per_line - 1;
- }
else
{
filesize = mcview_get_filesize (view);
- view->hex_cursor = mcview_offset_doz (filesize, 1);
+ view->hex_cursor = DOZ (filesize, 1);
}
}
- else
- {
- mcview_ascii_moveto_eol (view);
- }
+
mcview_movement_fixups (view, FALSE);
}
@@ -330,6 +325,7 @@
view->dpy_paragraph_skip_lines = 0;
view->dpy_wrap_dirty = TRUE;
}
+
mcview_movement_fixups (view, TRUE);
}
@@ -377,12 +373,13 @@
void
mcview_place_cursor (WView * view)
{
- const screen_dimen top = view->data_area.top;
- const screen_dimen left = view->data_area.left;
- screen_dimen col = view->cursor_col;
+ const WRect *r = &view->data_area;
+ int col = view->cursor_col;
+
if (!view->hexview_in_text && view->hexedit_lownibble)
col++;
- widget_gotoyx (view, top + view->cursor_row, left + col);
+
+ widget_gotoyx (view, r->y + view->cursor_row, r->x + col);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/nroff.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Functions for searching in nroff-like view
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/src/viewer/search.c
^
|
@@ -2,7 +2,7 @@
Internal file viewer for the Midnight Commander
Function for search data
- Copyright (C) 1994-2020
+ Copyright (C) 1994-2022
Free Software Foundation, Inc.
Written by:
@@ -14,7 +14,7 @@
Pavel Machek, 1998
Roland Illig <roland.illig@gmx.de>, 2004, 2005
Slava Zanko <slavazanko@google.com>, 2009
- Andrew Borodin <aborodin@vmail.ru>, 2009, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2009-2022
Ilia Maslakov <il.smind@gmail.com>, 2009
This file is part of the Midnight Commander.
@@ -37,6 +37,9 @@
#include "lib/global.h"
#include "lib/strutil.h"
+#ifdef HAVE_CHARSET
+#include "lib/charsets.h" /* cp_source */
+#endif
#include "lib/widget.h"
#include "src/setup.h"
@@ -45,6 +48,14 @@
/*** global variables ****************************************************************************/
+mcview_search_options_t mcview_search_options = {
+ .type = MC_SEARCH_T_NORMAL,
+ .case_sens = FALSE,
+ .backwards = FALSE,
+ .whole_words = FALSE,
+ .all_codepages = FALSE
+};
+
/*** file scope macro definitions ****************************************************************/
/*** file scope type declarations ****************************************************************/
@@ -86,12 +97,15 @@
if (vsm->first)
{
- int wd_width;
Widget *lw = WIDGET (ssm->label);
+ WRect r;
- wd_width = MAX (wd->cols, lw->cols + 6);
- widget_set_size (wd, wd->y, wd->x, wd->lines, wd_width);
- widget_set_size (lw, lw->y, wd->x + (wd->cols - lw->cols) / 2, lw->lines, lw->cols);
+ r = wd->rect;
+ r.cols = MAX (r.cols, lw->rect.cols + 6);
+ widget_set_size_rect (wd, &r);
+ r = lw->rect;
+ r.x = wd->rect.x + (wd->rect.cols - r.cols) / 2;
+ widget_set_size_rect (lw, &r);
vsm->first = FALSE;
}
@@ -141,9 +155,9 @@
view->search_nroff_seq->index = search_start;
mcview_nroff_seq_info (view->search_nroff_seq);
- if (search_end > search_start + (off_t) view->search->original_len
+ if (search_end > search_start + (off_t) view->search->original.str->len
&& mc_search_is_fixed_search_str (view->search))
- search_end = search_start + view->search->original_len;
+ search_end = search_start + view->search->original.str->len;
ok = mc_search_run (view->search, (void *) ssm, search_start, search_end, len);
if (ok && view->search->normal_offset == search_start)
@@ -198,6 +212,44 @@
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
+gboolean
+mcview_search_init (WView * view)
+{
+#ifdef HAVE_CHARSET
+ view->search = mc_search_new (view->last_search_string, cp_source);
+#else
+ view->search = mc_search_new (view->last_search_string, NULL);
+#endif
+
+ view->search_nroff_seq = mcview_nroff_seq_new (view);
+
+ if (view->search == NULL)
+ return FALSE;
+
+ view->search->search_type = mcview_search_options.type;
+#ifdef HAVE_CHARSET
+ view->search->is_all_charsets = mcview_search_options.all_codepages;
+#endif
+ view->search->is_case_sensitive = mcview_search_options.case_sens;
+ view->search->whole_words = mcview_search_options.whole_words;
+ view->search->search_fn = mcview_search_cmd_callback;
+ view->search->update_fn = mcview_search_update_cmd_callback;
+
+ return TRUE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+void
+mcview_search_deinit (WView * view)
+{
+ mc_search_free (view->search);
+ g_free (view->last_search_string);
+ mcview_nroff_seq_free (&view->search_nroff_seq);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
mc_search_cbret_t
mcview_search_cmd_callback (const void *user_data, gsize char_offset, int *current_char)
{
@@ -357,7 +409,7 @@
if (view->growbuf_in_use)
growbufsize = mcview_growbuf_filesize (view);
else
- growbufsize = view->search->original_len;
+ growbufsize = view->search->original.str->len;
if (mcview_find (&vsm, search_start, mcview_get_filesize (view), &match_len))
{
@@ -373,7 +425,7 @@
if (view->search->error != MC_SEARCH_E_NOTFOUND)
break;
- search_start = growbufsize - view->search->original_len;
+ search_start = growbufsize - view->search->original.str->len;
}
while (search_start > 0 && mcview_may_still_grow (view));
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/Makefile.am
^
|
@@ -20,6 +20,7 @@
mc_build_filename \
name_quote \
serialize \
+ utilunix__mc_pstream_get_string \
utilunix__my_system_fork_fail \
utilunix__my_system_fork_child_shell \
utilunix__my_system_fork_child \
@@ -46,6 +47,9 @@
serialize_SOURCES = \
serialize.c
+utilunix__mc_pstream_get_string_SOURCES = \
+ utilunix__mc_pstream_get_string.c
+
utilunix__my_system_fork_fail_SOURCES = \
utilunix__my_system-fork_fail.c
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/library_independ.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - check if library is independ to $(topsrc)/src directory
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -43,22 +43,15 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
tcase_add_test (tc_core, test_library_independ);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/mc_build_filename.c
^
|
@@ -1,7 +1,7 @@
/*
lib - mc_build_filename() function testing
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -134,11 +134,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -146,13 +144,7 @@
mctest_add_parameterized_test (tc_core, test_mc_build_filename, test_mc_build_filename_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "mc_build_filename.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/mc_realpath.c
^
|
@@ -1,7 +1,7 @@
/*
lib - realpath
- Copyright (C) 2017-2020
+ Copyright (C) 2017-2022
Free Software Foundation, Inc.
Written by:
@@ -109,12 +109,10 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
char *cwd;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* writable directory where check creates temporary files */
cwd = g_get_current_dir ();
@@ -127,13 +125,7 @@
mctest_add_parameterized_test (tc_core, realpath_test, data_source);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "mc_realpath.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/mcconfig/config_string.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - check mcconfig submodule. read and write config files
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -56,7 +56,7 @@
if (!mc_config_save_file (mc_config, &error))
{
- fail ("Unable to save config file: %s", error->message);
+ ck_abort_msg ("Unable to save config file: %s", error->message);
g_error_free (error);
}
@@ -238,11 +238,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -251,13 +249,7 @@
tcase_add_test (tc_core, emulate__learn_save);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "config_string.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/mcconfig/user_configs_path.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - check mcconfig submodule. Get full paths to user's config files.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -37,15 +37,9 @@
#define HOME_DIR "/home/testuser"
-#if MC_HOMEDIR_XDG
#define CONF_MAIN HOME_DIR PATH_SEP_STR ".config"
#define CONF_DATA HOME_DIR PATH_SEP_STR ".local" PATH_SEP_STR "share"
#define CONF_CACHE HOME_DIR PATH_SEP_STR ".cache"
-#else
-#define CONF_MAIN HOME_DIR
-#define CONF_DATA CONF_MAIN
-#define CONF_CACHE CONF_MAIN
-#endif
/* --------------------------------------------------------------------------------------------- */
@@ -54,11 +48,9 @@
setup (void)
{
g_setenv ("HOME", HOME_DIR, TRUE);
-#if MC_HOMEDIR_XDG
g_setenv ("XDG_CONFIG_HOME", CONF_MAIN, TRUE);
g_setenv ("XDG_DATA_HOME", CONF_DATA, TRUE);
g_setenv ("XDG_CACHE_HOME", CONF_CACHE, TRUE);
-#endif
str_init_strings ("UTF-8");
vfs_init ();
vfs_init_localfs ();
@@ -105,8 +97,8 @@
MC_USERMENU_FILE
},
{ /* 5. */
- CONF_MAIN,
- EDIT_HOME_SYNTAX_FILE
+ CONF_DATA,
+ EDIT_SYNTAX_FILE
},
{ /* 6. */
CONF_MAIN,
@@ -118,7 +110,7 @@
},
{ /* 8. */
CONF_MAIN,
- MC_FILEBIND_FILE
+ MC_EXT_FILE
},
{ /* 9. */
CONF_DATA,
@@ -130,49 +122,53 @@
},
{ /* 11. */
CONF_DATA,
- "ashrc"
+ MC_ASHRC_FILE
},
{ /* 12. */
CONF_DATA,
- "bashrc"
+ MC_BASHRC_FILE
},
{ /* 13. */
CONF_DATA,
- "inputrc"
+ MC_INPUTRC_FILE
},
{ /* 14. */
CONF_DATA,
- MC_EXTFS_DIR
+ MC_ZSHRC_FILE
},
{ /* 15. */
CONF_DATA,
- MC_HISTORY_FILE
+ MC_EXTFS_DIR
},
{ /* 16. */
CONF_DATA,
- MC_FILEPOS_FILE
+ MC_HISTORY_FILE
},
{ /* 17. */
CONF_DATA,
- EDIT_HOME_CLIP_FILE
+ MC_FILEPOS_FILE
},
{ /* 18. */
CONF_DATA,
- MC_MACRO_FILE
+ EDIT_HOME_CLIP_FILE
},
{ /* 19. */
+ CONF_DATA,
+ MC_MACRO_FILE
+ },
+ { /* 20. */
CONF_CACHE,
"mc.log"
},
- { /* 20. */
+ { /* 21. */
CONF_CACHE,
MC_TREESTORE_FILE
},
- { /* 21. */
+ { /* 22. */
CONF_CACHE,
EDIT_HOME_TEMP_FILE
},
- { /* 22. */
+ { /* 23. */
CONF_CACHE,
EDIT_HOME_BLOCK_FILE
},
@@ -211,11 +207,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -223,13 +217,7 @@
mctest_add_parameterized_test (tc_core, test_user_config_paths, test_user_config_paths_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "user_configs_path.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/name_quote.c
^
|
@@ -1,7 +1,7 @@
/*
lib - Quote file names
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -128,11 +128,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -141,13 +139,7 @@
mctest_add_parameterized_test (tc_core, name_quote_test, data_source2);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "name_quote.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/glob_prepare_replace_str.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for processing esc sequences in replace string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -94,24 +94,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_glob_prepare_replace_str,
test_glob_prepare_replace_str_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "glob_prepare_replace_str.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/glob_translate_to_regex.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for processing esc sequences in replace string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -106,24 +106,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_glob_translate_to_regex,
test_glob_translate_to_regex_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "glob_translate_to_regex.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/hex_translate_to_regex.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for hex pattern parsing
- Copyright (C) 2017-2020
+ Copyright (C) 2017-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -151,7 +151,7 @@
/* *INDENT-ON* */
{
GString *tmp, *dest_str;
- mc_search_hex_parse_error_t error;
+ mc_search_hex_parse_error_t error = MC_SEARCH_HEX_E_OK;
/* given */
tmp = g_string_new (data->input_value);
@@ -168,9 +168,7 @@
g_string_free (dest_str, TRUE);
}
else
- {
- mctest_assert_int_eq (error, data->expected_error);
- }
+ ck_assert_int_eq (error, data->expected_error);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -181,24 +179,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_hex_translate_to_regex,
test_hex_translate_to_regex_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "hex_translate_to_regex.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/regex_process_escape_sequence.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for processing esc sequences in replace string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -140,24 +140,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_regex_process_escape_sequence,
test_regex_process_escape_sequence_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "regex_process_escape_sequence.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/regex_replace_esc_seq.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for processing esc sequences in replace string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -32,9 +32,10 @@
/* --------------------------------------------------------------------------------------------- */
#define test_helper_check_valid_data( a, b, c, d, e, f ) \
{ \
- fail_unless( a == b, "ret_value != %s", (b) ? "TRUE": "FALSE" ); \
- fail_unless( c == d, "skip_len(%d) != %d", c, d ); \
- if (f!=0) fail_unless( e == f, "ret(%d) != %d", e, f ); \
+ ck_assert_msg (a == b, "ret_value != %s", (b) ? "TRUE": "FALSE"); \
+ ck_assert_msg (c == d, "skip_len(%d) != %d", c, d); \
+ if (f != 0) \
+ ck_assert_msg (e == f, "ret(%d) != %d", e, f); \
}
#define test_helper_handle_esc_seq( pos, r, skip, flag ) \
@@ -195,9 +196,9 @@
&actual_flags);
/* then */
- mctest_assert_int_eq (actual_result, data->expected_result);
- mctest_assert_int_eq (actual_skipped_len, data->expected_skipped_len);
- mctest_assert_int_eq (actual_flags, data->expected_flags);
+ ck_assert_int_eq (actual_result, data->expected_result);
+ ck_assert_int_eq (actual_skipped_len, data->expected_skipped_len);
+ ck_assert_int_eq (actual_flags, data->expected_flags);
g_string_free (replace_str, TRUE);
}
@@ -210,24 +211,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_regex_replace_esc_seq_prepare,
test_regex_replace_esc_seq_prepare_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "regex_replace_esc_seq.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/search/translate_replace_glob_to_regex.c
^
|
@@ -1,7 +1,7 @@
/*
libmc - checks for processing esc sequences in replace string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -83,24 +83,16 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_translate_replace_glob_to_regex,
test_translate_replace_glob_to_regex_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "translate_replace_glob_to_regex.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/serialize.c
^
|
@@ -1,7 +1,7 @@
/*
lib - common serialize/deserialize functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -162,7 +162,7 @@
/* then */
mctest_assert_null (actual_result);
- mctest_assert_int_eq (error->code, data->expected_error_code);
+ ck_assert_int_eq (error->code, data->expected_error_code);
mctest_assert_str_eq (error->message, data->expected_error_string);
}
/* *INDENT-OFF* */
@@ -300,7 +300,7 @@
/* then */
mctest_assert_null (actual_result);
- mctest_assert_int_eq (error->code, data->expected_error_code);
+ ck_assert_int_eq (error->code, data->expected_error_code);
mctest_assert_str_eq (error->message, data->expected_error_string);
}
/* *INDENT-OFF* */
@@ -331,9 +331,9 @@
mctest_assert_str_eq (actual_value, "some value ");
g_free (actual_value);
- mctest_assert_int_eq (mc_config_get_bool (actual, "group2", "param1", FALSE), TRUE);
+ mctest_assert_true (mc_config_get_bool (actual, "group2", "param1", FALSE));
- mctest_assert_int_eq (mc_config_get_int (actual, "group2", "param2", 0), 123456);
+ ck_assert_int_eq (mc_config_get_int (actual, "group2", "param2", 0), 123456);
actual_value = mc_config_get_string_raw (actual, "group3", "param1", "");
mctest_assert_str_eq (actual_value, "::bla-bla::");
@@ -343,9 +343,9 @@
mctest_assert_str_eq (actual_value, "bla-:p1:w:v2:12:g3:123:bla-bla\n");
g_free (actual_value);
- mctest_assert_int_eq (mc_config_get_bool (actual, "group4", "param1", TRUE), FALSE);
+ mctest_assert_false (mc_config_get_bool (actual, "group4", "param1", TRUE));
- mctest_assert_int_eq (mc_config_get_int (actual, "group4", "param2", 0), 654321);
+ ck_assert_int_eq (mc_config_get_int (actual, "group4", "param2", 0), 654321);
mc_config_deinit (actual);
}
@@ -359,11 +359,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -383,13 +381,7 @@
tcase_add_test (tc_core, test_deserialize_config);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "serialize.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/strutil/filevercmp.c
^
|
@@ -1,7 +1,7 @@
/*
lib/strutil - tests for lib/strutil/fileverscmp function.
- Copyright (C) 2019-2020
+ Copyright (C) 2019-2022
Free Software Foundation, Inc.
Written by:
@@ -28,6 +28,7 @@
#include "tests/mctest.h"
#include "lib/strutil.h"
+#include "lib/util.h" /* _GL_CMP() */
/* --------------------------------------------------------------------------------------------- */
@@ -50,7 +51,41 @@
static int
sign (int n)
{
- return ((n < 0) ? -1 : (n == 0) ? 0 : 1);
+ return _GL_CMP (n, 0);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+ * Return filevercmp (a, a), checking that a similar result is gotten after replacing all '\1's
+ * with '\0's and calling filenvercmp with the embedded '\0's.
+ */
+static int
+test_filevercmp (char const *a, char const *b)
+{
+ int result;
+ char buffer[BUF_1K];
+ size_t alen, blen;
+ size_t i;
+ int nresult;
+
+ result = filevercmp (a, b);
+
+ alen = strlen (a);
+ blen = strlen (b);
+
+ ck_assert_int_le (alen + blen, sizeof (buffer));
+ memcpy (buffer, a, alen);
+ memcpy (buffer + alen, b, blen);
+
+ for (i = 0; i < alen + blen; i++)
+ if (buffer[i] == '\1')
+ buffer[i] = '\0';
+
+ nresult = filenvercmp (buffer, alen, buffer + alen, blen);
+ ck_assert_int_eq (sign (nresult), sign (result));
+
+ return result;
}
/* --------------------------------------------------------------------------------------------- */
@@ -69,7 +104,6 @@
{ "a", "a", 0 },
{ "a", "b", -1 },
{ "b", "a", 1 },
- { "a0", "a", 1 },
{ "00", "01", -1 },
{ "01", "010", -1 },
{ "9", "10", -1 },
@@ -91,7 +125,7 @@
actual_result = filevercmp (data->s1, data->s2);
/* then */
- mctest_assert_int_eq (sign (actual_result), sign (data->expected_result));
+ ck_assert_int_eq (sign (actual_result), sign (data->expected_result));
}
/* *INDENT-OFF* */
END_TEST
@@ -118,6 +152,11 @@
".zz",
".zz.~1~",
".zz.0",
+ ".\1",
+ ".\1.txt",
+ ".\1x",
+ ".\1x\1",
+ ".\1.0",
"0",
"9",
"A",
@@ -128,6 +167,10 @@
"a.b",
"a.bc~",
"a.bc",
+ "a+",
+ "a.",
+ "a..a",
+ "a.+",
"b~",
"b",
"gcc-c++-10.fc9.tar.gz",
@@ -157,6 +200,13 @@
"zz",
"zz.~1~",
"zz.0",
+ "zz.0.txt",
+ "\1",
+ "\1.txt",
+ "\1x",
+ "\1x\1",
+ "\1.0",
+ "#\1.b#",
"#.b#"
};
@@ -175,14 +225,14 @@
const char *j = filevercmp_test_ds2[_j];
int result;
- result = filevercmp (i, j);
+ result = test_filevercmp (i, j);
if (result < 0)
- ck_assert_int_eq (! !((size_t) _i < _j), 1);
- else if (0 < result)
- ck_assert_int_eq (! !(_j < (size_t) _i), 1);
+ ck_assert_int_lt ((size_t) _i, _j);
+ else if (result > 0)
+ ck_assert_int_gt ((size_t) _i, _j);
else
- ck_assert_int_eq (! !(_j == (size_t) _i), 1);
+ ck_assert_int_eq ((size_t) _i, _j);
}
}
/* *INDENT-OFF* */
@@ -215,11 +265,11 @@
result = filevercmp (i, j);
if (result < 0)
- ck_assert_int_eq (! !((size_t) _i < _j), 1);
- else if (0 < result)
- ck_assert_int_eq (! !(_j < (size_t) _i), 1);
+ ck_assert_int_lt ((size_t) _i, _j);
+ else if (result > 0)
+ ck_assert_int_gt ((size_t) _i, _j);
else
- ck_assert_int_eq (! !(_j == (size_t) _i), 1);
+ ck_assert_int_eq ((size_t) _i, _j);
}
}
/* *INDENT-OFF* */
@@ -253,27 +303,85 @@
result = filevercmp (i, j);
if (result < 0)
- ck_assert_int_eq (! !((size_t) _i < _j), 1);
- else if (0 < result)
- ck_assert_int_eq (! !(_j < (size_t) _i), 1);
+ ck_assert_int_lt ((size_t) _i, _j);
+ else if (result > 0)
+ ck_assert_int_gt ((size_t) _i, _j);
else
- ck_assert_int_eq (! !(_j == (size_t) _i), 1);
+ ck_assert_int_eq ((size_t) _i, _j);
}
}
/* *INDENT-OFF* */
END_TEST
/* *INDENT-ON* */
+
+/* @DataSource("filevercmp_test_ds5") */
+/* Testcases are taken from Gnulib */
+static const char *filevercmp_test_ds5[] = {
+ "a",
+ "a0",
+ "a0000",
+ NULL,
+ "a\1c-27.txt",
+ "a\1c-027.txt",
+ "a\1c-00000000000000000000000000000000000000000000000000000027.txt",
+ NULL,
+ ".a\1c-27.txt",
+ ".a\1c-027.txt",
+ ".a\1c-00000000000000000000000000000000000000000000000000000027.txt",
+ NULL,
+ "a\1c-",
+ "a\1c-0",
+ "a\1c-00",
+ NULL,
+ ".a\1c-",
+ ".a\1c-0",
+ ".a\1c-00",
+ NULL,
+ "a\1c-0.txt",
+ "a\1c-00.txt",
+ NULL,
+ ".a\1c-1\1.txt",
+ ".a\1c-001\1.txt",
+ NULL
+};
+
+const size_t filevercmp_test_ds5_len = G_N_ELEMENTS (filevercmp_test_ds5);
+
+/* @Test(dataSource = "filevercmp_test_ds5") */
+/* *INDENT-OFF* */
+START_TEST (filevercmp_test5)
+/* *INDENT-ON* */
+{
+ size_t ii;
+
+ for (ii = 0; ii < filevercmp_test_ds5_len; ii++)
+ for (; filevercmp_test_ds5[ii] != NULL; ii++)
+ {
+ const char *i = filevercmp_test_ds5[ii];
+ size_t jj;
+
+ for (jj = ii; filevercmp_test_ds5[jj] != NULL; jj++)
+ {
+ const char *j = filevercmp_test_ds5[jj];
+
+ ck_assert_int_eq (test_filevercmp (i, j), 0);
+ ck_assert_int_eq (test_filevercmp (j, i), 0);
+ }
+ }
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
/* --------------------------------------------------------------------------------------------- */
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -282,15 +390,10 @@
tcase_add_loop_test (tc_core, filevercmp_test2, 0, filevercmp_test_ds2_len);
tcase_add_loop_test (tc_core, filevercmp_test3, 0, filevercmp_test_ds3_len);
tcase_add_loop_test (tc_core, filevercmp_test4, 0, filevercmp_test_ds4_len);
+ tcase_add_test (tc_core, filevercmp_test5);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "filevercmp.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/strutil/parse_integer.c
^
|
@@ -1,7 +1,7 @@
/*
lib/strutil - tests for lib/strutil/parse_integer function.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -130,9 +130,9 @@
actual_result = parse_integer (data->haystack, &invalid);
/* then */
- fail_unless (invalid == data->invalid && actual_result == data->expected_result,
- "actial ( %" PRIuMAX ") not equal to\nexpected (%" PRIuMAX ")",
- actual_result, data->expected_result);
+ ck_assert_msg (invalid == data->invalid && actual_result == data->expected_result,
+ "actial ( %" PRIuMAX ") not equal to\nexpected (%" PRIuMAX ")",
+ actual_result, data->expected_result);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -143,11 +143,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -155,13 +153,7 @@
mctest_add_parameterized_test (tc_core, parse_integer_test, parse_integer_test_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "parse_integer.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/strutil/replace__str_replace_all.c
^
|
@@ -1,7 +1,7 @@
/*
lib/strutil - tests for lib/strutil/replace:str_replace_all() function.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -170,11 +170,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -182,13 +180,7 @@
mctest_add_parameterized_test (tc_core, str_replace_all_test, str_replace_all_test_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "replace__str_replace_all.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/strutil/str_verscmp.c
^
|
@@ -2,7 +2,7 @@
lib/strutil - tests for lib/strutil/str_verscmp function.
Testcases are taken from Gnulib.
- Copyright (C) 2020
+ Copyright (C) 2019-2022
Free Software Foundation, Inc.
Written by:
@@ -29,6 +29,7 @@
#include "tests/mctest.h"
#include "lib/strutil.h"
+#include "lib/util.h" /* _GL_CMP() */
/* --------------------------------------------------------------------------------------------- */
@@ -58,7 +59,7 @@
static int
sign (int n)
{
- return ((n < 0) ? -1 : (n == 0) ? 0 : 1);
+ return _GL_CMP (n, 0);
}
/* --------------------------------------------------------------------------------------------- */
@@ -108,7 +109,7 @@
actual_result = str_verscmp (data->s1, data->s2);
/* then */
- mctest_assert_int_eq (sign (actual_result), sign (data->expected_result));
+ ck_assert_int_eq (sign (actual_result), sign (data->expected_result));
}
/* *INDENT-OFF* */
END_TEST
@@ -119,11 +120,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -131,13 +130,7 @@
mctest_add_parameterized_test (tc_core, str_verscmp_test, str_verscmp_test_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "str_verscmp.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/utilunix__mc_pstream_get_string.c
^
|
@@ -0,0 +1,396 @@
+/*
+ lib - Read string from mc_pipe_stream
+
+ Copyright (C) 2021-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Andrew Borodin <aborodin@vmail.ru>, 2021
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define TEST_SUITE_NAME "/lib/util"
+
+#include "tests/mctest.h"
+
+#include "lib/util.h"
+
+/* --------------------------------------------------------------------------------------------- */
+
+#define MAX_CHUNKS 8
+
+/* --------------------------------------------------------------------------------------------- */
+
+static mc_pipe_stream_t stream;
+
+static char etalon_long_file_list[BUF_1K];
+static size_t etalon_long_file_list_pos;
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @Before */
+static void
+setup (void)
+{
+}
+
+/* @After */
+static void
+teardown (void)
+{
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @DataSource("data_source") */
+/* *INDENT-OFF* */
+static const struct data_source
+{
+ /* input */
+ const char *buf; /* string to read */
+
+ /* output */
+ int pos[MAX_CHUNKS]; /* ps.pos values */
+ const char *str[MAX_CHUNKS]; /* chunks */
+ size_t len[MAX_CHUNKS]; /* chunk lengths */
+}
+data_source[] =
+{
+ /* 0 */
+ {
+ .buf = "",
+ .pos = { 0 },
+ .str = { "" },
+ .len = { 0 }
+ },
+ /* 1 */
+ {
+ .buf = "\n",
+ .pos = { 0, 1 },
+ .str = { "\n" },
+ .len = { 1, 0 }
+ },
+ /* 2 */
+ {
+ .buf = "\\\n",
+ .pos = { 0, 2 },
+ .str = { "\\\n" },
+ .len = { 2, 0 }
+ },
+ /* 3 */
+ {
+ .buf = "\\\\\n",
+ .pos = { 0, 3 },
+ .str = { "\\\\\n" },
+ .len = { 3, 0 }
+ },
+ /* 4 */
+ {
+ .buf = "\\\\\\\n",
+ .pos = { 0, 4 },
+ .str = { "\\\\\\\n" },
+ .len = { 4, 0 }
+ },
+ /* 5 */
+ {
+ .buf = "\\\\\\\\\n",
+ .pos = { 0, 5 },
+ .str = { "\\\\\\\\\n" },
+ .len = { 5, 0 }
+ },
+ /* 6 */
+ {
+ .buf = "12345",
+ .pos = { 0, 5 },
+ .str = { "12345" },
+ .len = { 5, 0 }
+ },
+ /* 7 */
+ {
+ .buf = "12345\n",
+ .pos = { 0, 6 },
+ .str = { "12345\n" },
+ .len = { 6, 0 }
+ },
+ /* 8 */
+ {
+ .buf = "12345\\\n",
+ .pos = { 0, 7 },
+ .str = { "12345\\\n" },
+ .len = { 7, 0 }
+ },
+ /* 9 */
+ {
+ .buf = "12345\\\\\n",
+ .pos = { 0, 8 },
+ .str = { "12345\\\\\n" },
+ .len = { 8, 0 }
+ },
+ /* 10 */
+ {
+ .buf = "12345\nabcd",
+ .pos = { 0, 6, 10 },
+ .str = { "12345\n", "abcd" },
+ .len = { 6, 4, 0 }
+ },
+ /* 11 */
+ {
+ .buf = "12345\\\nabcd",
+ .pos = { 0, 11 },
+ .str = { "12345\\\nabcd" },
+ .len = { 11, 0 }
+ },
+ /* 12 */
+ {
+ .buf = "12345\\\\\nabcd",
+ .pos = { 0, 8, 12 },
+ .str = { "12345\\\\\n", "abcd" },
+ .len = { 8, 4, 0 }
+ },
+ /* 13 */
+ {
+ .buf = "12345\\\\\\\nabcd",
+ .pos = { 0, 13 },
+ .str = { "12345\\\\\\\nabcd" },
+ .len = { 13, 0 }
+ },
+ /* 14 */
+ {
+ .buf = "12345\\\\\\\\\nabcd",
+ .pos = { 0, 10, 14 },
+ .str = { "12345\\\\\\\\\n", "abcd" },
+ .len = { 10, 4, 0 }
+ },
+ /* 15 */
+ {
+ .buf = "12345\nabcd\n",
+ .pos = { 0, 6, 11 },
+ .str = { "12345\n", "abcd\n" },
+ .len = { 6, 5, 0 }
+ },
+ /* 16 */
+ {
+ .buf = "12345\nabcd\n~!@#$%^",
+ .pos = { 0, 6, 11, 18 },
+ .str = { "12345\n", "abcd\n", "~!@#$%^" },
+ .len = { 6, 5, 7, 0 }
+ },
+ /* 17 */
+ {
+ .buf = "12345\nabcd\n~!@#$%^\n",
+ .pos = { 0, 6, 11, 19 },
+ .str = { "12345\n", "abcd\n", "~!@#$%^\n" },
+ .len = { 6, 5, 8, 0 }
+ }
+};
+/* *INDENT-ON* */
+
+/* @Test(dataSource = "data_source") */
+/* *INDENT-OFF* */
+START_PARAMETRIZED_TEST (mc_pstream_get_string_test, data_source)
+/* *INDENT-ON* */
+{
+ /* given */
+ int j = 0;
+
+ /* when */
+ memset (&stream, 0, sizeof (stream));
+ stream.len = strlen (data->buf);
+ memmove (&stream.buf, data->buf, stream.len);
+
+ /* then */
+ do
+ {
+ GString *ret;
+
+ ck_assert_int_eq (stream.pos, data->pos[j]);
+
+ ret = mc_pstream_get_string (&stream);
+ if (ret == NULL)
+ break;
+
+ ck_assert_int_eq (ret->len, data->len[j]);
+ mctest_assert_str_eq (ret->str, data->str[j]);
+
+ g_string_free (ret, TRUE);
+
+ j++;
+ }
+ while (TRUE);
+}
+/* *INDENT-OFF* */
+END_PARAMETRIZED_TEST
+/* *INDENT-ON* */
+
+/* --------------------------------------------------------------------------------------------- */
+
+static mc_pipe_t *
+test_mc_popen (void)
+{
+ mc_pipe_t *p;
+
+ p = g_try_new0 (mc_pipe_t, 1);
+ /* make less than sizeof (etalon_long_file_list) */
+ p->out.len = 128;
+
+ etalon_long_file_list_pos = 0;
+
+ return p;
+}
+
+static void
+test_mc_pread (mc_pipe_t * p)
+{
+ size_t len;
+
+ p->out.pos = 0;
+
+ if (etalon_long_file_list_pos >= sizeof (etalon_long_file_list))
+ {
+ etalon_long_file_list_pos = sizeof (etalon_long_file_list);
+ p->out.len = MC_PIPE_STREAM_EOF;
+ return;
+ }
+
+ len = sizeof (etalon_long_file_list) - etalon_long_file_list_pos;
+ len = MIN (len, (size_t) p->out.len);
+ memmove (p->out.buf, etalon_long_file_list + etalon_long_file_list_pos, len);
+ p->out.len = (ssize_t) len;
+
+ etalon_long_file_list_pos += len;
+}
+
+/* *INDENT-OFF* */
+START_TEST (mc_pstream_get_long_file_list_test)
+/* *INDENT-ON* */
+
+{
+ /* given */
+ GString *result_long_file_list = NULL;
+ mc_pipe_t *pip;
+ GString *remain_file_name = NULL;
+
+ /* when */
+ /* fill the list */
+ memset (etalon_long_file_list, 'a', sizeof (etalon_long_file_list) - 1);
+ /* create an \n-separated list */
+ etalon_long_file_list[5] = '\n';
+ etalon_long_file_list[25] = '\n';
+ etalon_long_file_list[50] = '\n';
+ etalon_long_file_list[75] = '\n';
+ etalon_long_file_list[127] = '\n';
+ etalon_long_file_list[200] = '\n';
+ etalon_long_file_list[310] = '\n';
+ etalon_long_file_list[325] = '\n';
+ etalon_long_file_list[360] = '\n';
+ etalon_long_file_list[512] = '\n';
+ etalon_long_file_list[701] = '\n';
+ etalon_long_file_list[725] = '\n';
+ etalon_long_file_list[800] = '\n';
+ etalon_long_file_list[sizeof (etalon_long_file_list) - 2] = '\n';
+ etalon_long_file_list[sizeof (etalon_long_file_list) - 1] = '\0';
+
+ /* then */
+ /* read file list */
+ pip = test_mc_popen ();
+
+ while (TRUE)
+ {
+ GString *line;
+
+ test_mc_pread (pip);
+
+ if (pip->out.len == MC_PIPE_STREAM_EOF)
+ break;
+
+ while ((line = mc_pstream_get_string (&pip->out)) != NULL)
+ {
+ /* handle an \n-separated file list */
+
+ if (line->str[line->len - 1] == '\n')
+ {
+ /* entire file name or last chunk */
+
+ g_string_truncate (line, line->len - 1);
+
+ /* join filename chunks */
+ if (remain_file_name != NULL)
+ {
+ g_string_append_len (remain_file_name, line->str, line->len);
+ g_string_free (line, TRUE);
+ line = remain_file_name;
+ remain_file_name = NULL;
+ }
+ }
+ else
+ {
+ /* first or middle chunk of file name */
+ if (remain_file_name == NULL)
+ remain_file_name = line;
+ else
+ {
+ g_string_append_len (remain_file_name, line->str, line->len);
+ g_string_free (line, TRUE);
+ }
+
+ line = NULL;
+ }
+
+ /* collect file names to assemble the result string */
+ if (line == NULL)
+ continue;
+
+ if (result_long_file_list == NULL)
+ result_long_file_list = line;
+ else
+ {
+ g_string_append_len (result_long_file_list, line->str, line->len);
+ g_string_free (line, TRUE);
+ }
+
+ g_string_append_c (result_long_file_list, '\n');
+ }
+ }
+
+ mctest_assert_str_eq (etalon_long_file_list, result_long_file_list->str);
+ g_string_free (result_long_file_list, TRUE);
+
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* --------------------------------------------------------------------------------------------- */
+
+int
+main (void)
+{
+ TCase *tc_core;
+
+ tc_core = tcase_create ("Core");
+
+ tcase_add_checked_fixture (tc_core, setup, teardown);
+
+ /* Add new tests here: *************** */
+ mctest_add_parameterized_test (tc_core, mc_pstream_get_string_test, data_source);
+ tcase_add_test (tc_core, mc_pstream_get_long_file_list_test);
+ /* *********************************** */
+
+ return mctest_run_all (tc_core);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/utilunix__my_system-common.c
^
|
@@ -1,7 +1,7 @@
/*
lib - common code for testing lib/utilinux:my_system() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -239,32 +239,32 @@
#define VERIFY_SIGACTION__ACT_IGNORED(_pntr) { \
struct sigaction *_act = (struct sigaction *) _pntr; \
mctest_assert_ptr_eq (_act->sa_handler, SIG_IGN); \
- mctest_assert_int_eq (_act->sa_flags, 0); \
+ ck_assert_int_eq (_act->sa_flags, 0); \
}
#define VERIFY_SIGACTION__IS_RESTORED(oldact_idx, act_idx) { \
struct sigaction *_oldact = (struct sigaction *) g_ptr_array_index(sigaction_oldact__captured, oldact_idx); \
struct sigaction *_act = (struct sigaction *) g_ptr_array_index(sigaction_act__captured, act_idx); \
- fail_unless (memcmp(_oldact, _act, sizeof(struct sigaction)) == 0, \
+ ck_assert_msg (memcmp(_oldact, _act, sizeof(struct sigaction)) == 0, \
"sigaction(): oldact[%d] should be equals to act[%d]", oldact_idx, act_idx); \
}
/* @Verify */
#define VERIFY_SIGACTION_CALLS() { \
- mctest_assert_int_eq (sigaction_signum__captured->len, 6); \
+ ck_assert_int_eq (sigaction_signum__captured->len, 6); \
\
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 0)), SIGINT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 1)), SIGQUIT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 2)), SIGTSTP); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 3)), SIGINT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 4)), SIGQUIT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 5)), SIGTSTP); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 0)), SIGINT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 1)), SIGQUIT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 2)), SIGTSTP); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 3)), SIGINT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 4)), SIGQUIT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(sigaction_signum__captured, 5)), SIGTSTP); \
\
VERIFY_SIGACTION__ACT_IGNORED(g_ptr_array_index(sigaction_act__captured, 0)); \
VERIFY_SIGACTION__ACT_IGNORED(g_ptr_array_index(sigaction_act__captured, 1)); \
{ \
struct sigaction *_act = g_ptr_array_index(sigaction_act__captured, 2); \
- fail_unless (memcmp (_act, &startup_handler, sizeof(struct sigaction)) == 0, \
+ ck_assert_msg (memcmp (_act, &startup_handler, sizeof(struct sigaction)) == 0, \
"The 'act' in third call to sigaction() should be equals to startup_handler"); \
} \
\
@@ -272,11 +272,11 @@
VERIFY_SIGACTION__IS_RESTORED (1, 4); \
VERIFY_SIGACTION__IS_RESTORED (2, 5); \
\
- fail_unless (g_ptr_array_index(sigaction_oldact__captured, 3) == NULL, \
+ ck_assert_msg (g_ptr_array_index(sigaction_oldact__captured, 3) == NULL, \
"oldact in fourth call to sigaction() should be NULL"); \
- fail_unless (g_ptr_array_index(sigaction_oldact__captured, 4) == NULL, \
+ ck_assert_msg (g_ptr_array_index(sigaction_oldact__captured, 4) == NULL, \
"oldact in fifth call to sigaction() should be NULL"); \
- fail_unless (g_ptr_array_index(sigaction_oldact__captured, 5) == NULL, \
+ ck_assert_msg (g_ptr_array_index(sigaction_oldact__captured, 5) == NULL, \
"oldact in sixth call to sigaction() should be NULL"); \
}
@@ -289,11 +289,11 @@
/* @Verify */
#define VERIFY_SIGNAL_CALLS() { \
- mctest_assert_int_eq (signal_signum__captured->len, 4); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 0)), SIGINT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 1)), SIGQUIT); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 2)), SIGTSTP); \
- mctest_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 3)), SIGCHLD); \
+ ck_assert_int_eq (signal_signum__captured->len, 4); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 0)), SIGINT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 1)), SIGQUIT); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 2)), SIGTSTP); \
+ ck_assert_int_eq (*((int *) g_ptr_array_index(signal_signum__captured, 3)), SIGCHLD); \
\
VERIFY_SIGNAL_HANDLER_IS_SIG_DFL (0); \
VERIFY_SIGNAL_HANDLER_IS_SIG_DFL (1); \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/utilunix__my_system-fork_child.c
^
|
@@ -1,7 +1,7 @@
/*
lib - tests lib/utilinux:my_system() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -46,19 +46,19 @@
actual_value = my_system (0, "/bin/some-command", "some parameter");
/* then */
- mctest_assert_int_eq (actual_value, 0);
+ ck_assert_int_eq (actual_value, 0);
VERIFY_SIGACTION_CALLS ();
VERIFY_SIGNAL_CALLS ();
mctest_assert_str_eq (execvp__file__captured, "/bin/some-command");
- mctest_assert_int_eq (execvp__args__captured->len, 2);
+ ck_assert_int_eq (execvp__args__captured->len, 2);
mctest_assert_str_eq (g_ptr_array_index (execvp__args__captured, 0), "/bin/some-command");
mctest_assert_str_eq (g_ptr_array_index (execvp__args__captured, 1), "some parameter");
/* All exec* calls is mocked, so call to _exit() function with 127 status code it's a normal situation */
- mctest_assert_int_eq (my_exit__status__captured, 127);
+ ck_assert_int_eq (my_exit__status__captured, 127);
}
/* *INDENT-OFF* */
END_TEST
@@ -69,11 +69,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -81,13 +79,7 @@
tcase_add_test (tc_core, fork_child);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "utilinux__my_system-fork_child.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/utilunix__my_system-fork_child_shell.c
^
|
@@ -1,7 +1,7 @@
/*
lib - tests lib/utilinux:my_system() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -46,20 +46,20 @@
actual_value = my_system (EXECUTE_AS_SHELL, "/bin/shell", "some command");
/* then */
- mctest_assert_int_eq (actual_value, 0);
+ ck_assert_int_eq (actual_value, 0);
VERIFY_SIGACTION_CALLS ();
VERIFY_SIGNAL_CALLS ();
mctest_assert_str_eq (execvp__file__captured, "/bin/shell");
- mctest_assert_int_eq (execvp__args__captured->len, 3);
+ ck_assert_int_eq (execvp__args__captured->len, 3);
mctest_assert_str_eq (g_ptr_array_index (execvp__args__captured, 0), "/bin/shell");
mctest_assert_str_eq (g_ptr_array_index (execvp__args__captured, 1), "-c");
mctest_assert_str_eq (g_ptr_array_index (execvp__args__captured, 2), "some command");
/* All exec* calls is mocked, so call to _exit() function with 127 status code it's a normal situation */
- mctest_assert_int_eq (my_exit__status__captured, 127);
+ ck_assert_int_eq (my_exit__status__captured, 127);
}
/* *INDENT-OFF* */
END_TEST
@@ -70,11 +70,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -82,13 +80,7 @@
tcase_add_test (tc_core, fork_child_as_shell);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "utilinux__my_system-fork_child_shell.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/utilunix__my_system-fork_fail.c
^
|
@@ -1,7 +1,7 @@
/*
lib - tests lib/utilinux:my_system() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -50,11 +50,11 @@
actual_value = my_system (0, NULL, NULL);
/* then */
- mctest_assert_int_eq (actual_value, -1);
+ ck_assert_int_eq (actual_value, -1);
VERIFY_SIGACTION_CALLS ();
- mctest_assert_int_eq (signal_signum__captured->len, 0);
+ ck_assert_int_eq (signal_signum__captured->len, 0);
}
/* *INDENT-OFF* */
END_TEST
@@ -65,11 +65,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -77,13 +75,7 @@
tcase_add_test (tc_core, fork_fail);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "utilinux__my_system-fork_fail.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/canonicalize_pathname.c
^
|
@@ -1,7 +1,7 @@
/*
lib - canonicalize path
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -187,11 +187,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -199,13 +197,7 @@
mctest_add_parameterized_test (tc_core, test_canonicalize_path, test_canonicalize_path_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "canonicalize_pathname.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/current_dir.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - manipulate with current directory
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -172,7 +172,7 @@
mctest_assert_str_eq (actual_cd_path, data->expected_cd_path);
g_free (actual_cd_path);
}
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
vfs_unregister_class (vfs_test_ops);
}
@@ -185,12 +185,10 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
char *cwd;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* writable directory where check creates temporary files */
cwd = g_get_current_dir ();
@@ -203,13 +201,7 @@
mctest_add_parameterized_test (tc_core, test_cd, test_cd_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "current_dir.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/path_cmp.c
^
|
@@ -1,6 +1,6 @@
/* lib/vfs - vfs_path_t compare functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -135,10 +135,10 @@
actual_result = vfs_path_equal (vpath1, vpath2);
/* then */
- mctest_assert_int_eq (actual_result, data->expected_result);
+ ck_assert_int_eq (actual_result, data->expected_result);
- vfs_path_free (vpath1);
- vfs_path_free (vpath2);
+ vfs_path_free (vpath1, TRUE);
+ vfs_path_free (vpath2, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -223,10 +223,10 @@
actual_result = vfs_path_equal_len (vpath1, vpath2, data->input_length);
/* then */
- mctest_assert_int_eq (actual_result, data->expected_result);
+ ck_assert_int_eq (actual_result, data->expected_result);
- vfs_path_free (vpath1);
- vfs_path_free (vpath2);
+ vfs_path_free (vpath1, TRUE);
+ vfs_path_free (vpath2, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -237,11 +237,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -250,13 +248,7 @@
mctest_add_parameterized_test (tc_core, test_path_equal_len, test_path_equal_len_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "path_cmp.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/path_len.c
^
|
@@ -1,6 +1,6 @@
/* lib/vfs - tests for vfspath_len() function.
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -113,9 +113,9 @@
actual_length = vfs_path_len (vpath);
/* then */
- mctest_assert_int_eq (actual_length, data->expected_length);
+ ck_assert_int_eq (actual_length, data->expected_length);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -126,11 +126,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -138,13 +136,7 @@
mctest_add_parameterized_test (tc_core, test_path_length, test_path_length_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "path_len.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/path_manipulations.c
^
|
@@ -1,6 +1,6 @@
/* lib/vfs - test vfs_path_t manipulation functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -160,9 +160,9 @@
tokens_count = vfs_path_tokens_count (vpath);
/* then */
- mctest_assert_int_eq (tokens_count, data->expected_token_count);
+ ck_assert_int_eq (tokens_count, data->expected_token_count);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -291,7 +291,7 @@
mctest_assert_str_eq (actual_path, data->expected_path);
g_free (actual_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -343,12 +343,12 @@
vpath3 = vfs_path_append_vpath_new (vpath1, vpath2, NULL);
/* then */
- mctest_assert_int_eq (vfs_path_elements_count (vpath3), data->expected_element_count);
+ ck_assert_int_eq (vfs_path_elements_count (vpath3), data->expected_element_count);
mctest_assert_str_eq (vfs_path_as_str (vpath3), data->expected_path);
- vfs_path_free (vpath1);
- vfs_path_free (vpath2);
- vfs_path_free (vpath3);
+ vfs_path_free (vpath1, TRUE);
+ vfs_path_free (vpath2, TRUE);
+ vfs_path_free (vpath3, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -391,11 +391,11 @@
vpath = vfs_path_from_str_flags (data->input_path, VPF_NO_CANON);
/* then */
- mctest_assert_int_eq (vpath->relative, TRUE);
+ mctest_assert_true (vpath->relative);
mctest_assert_str_eq (vfs_path_get_last_path_str (vpath), data->expected_last_path_in_element);
mctest_assert_str_eq (vfs_path_as_str (vpath), data->expected_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -418,13 +418,13 @@
cloned_vpath = vfs_path_clone (vpath);
/* then */
- mctest_assert_int_eq (cloned_vpath->relative, TRUE);
+ mctest_assert_true (cloned_vpath->relative);
mctest_assert_str_eq (vfs_path_get_last_path_str (cloned_vpath),
data->expected_last_path_in_element);
mctest_assert_str_eq (vfs_path_as_str (cloned_vpath), data->expected_path);
- vfs_path_free (vpath);
- vfs_path_free (cloned_vpath);
+ vfs_path_free (vpath, TRUE);
+ vfs_path_free (cloned_vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -435,11 +435,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -454,13 +452,7 @@
test_vfs_path_relative_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "path_manipulations.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/path_recode.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - vfs_path_t charset recode functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -154,7 +154,7 @@
mctest_assert_str_eq (element->path, data->expected_element_path);
mctest_assert_str_eq (vpath_str, data->expected_recoded_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
test_deinit_vfs ();
}
/* *INDENT-OFF* */
@@ -256,7 +256,7 @@
mctest_assert_str_eq (str_path, data->expected_path);
g_free (str_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
test_deinit_vfs ();
}
/* *INDENT-OFF* */
@@ -268,11 +268,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -281,13 +279,7 @@
mctest_add_parameterized_test (tc_core, test_path_to_str_flags, test_path_to_str_flags_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "path_recode.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/path_serialize.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - vfs_path_t serialize/deserialize functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -144,7 +144,7 @@
vpath = vfs_path_from_str_flags (ETALON_PATH_STR, VPF_USE_DEPRECATED_PARSER);
serialized_vpath = vfs_path_serialize (vpath, &error);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
if (error != NULL)
g_error_free (error);
@@ -174,7 +174,7 @@
mctest_assert_ptr_ne (vpath, NULL);
mctest_assert_str_eq (vfs_path_as_str (vpath), ETALON_PATH_URL_STR);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
@@ -186,11 +186,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -199,13 +197,7 @@
tcase_add_test (tc_core, test_path_deserialize);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "path_serialize.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/relative_cd.c
^
|
@@ -1,6 +1,6 @@
/* lib/vfs - test vfs_path_t manipulation functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -64,7 +64,7 @@
static void
test_chdir__deinit (void)
{
- vfs_path_free (test_chdir__vpath__captured);
+ vfs_path_free (test_chdir__vpath__captured, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -146,10 +146,10 @@
{
const vfs_path_element_t *element;
- mctest_assert_int_eq (actual_result, 0);
+ ck_assert_int_eq (actual_result, 0);
element = vfs_path_get_by_index (vpath, -1);
mctest_assert_str_eq (element->path, data->expected_element_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
}
/* *INDENT-OFF* */
@@ -173,7 +173,7 @@
/* when */
vpath = vfs_path_from_str ("/test1://some.host/dir");
path_element = vfs_path_element_clone (vfs_path_get_by_index (vpath, -1));
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
last_vpath = vfs_path_new ();
last_vpath->relative = TRUE;
@@ -186,7 +186,7 @@
/* then */
mctest_assert_str_eq (filtered_path, "test1://some.host/dir");
- vfs_path_free (last_vpath);
+ vfs_path_free (last_vpath, TRUE);
g_free (filtered_path);
}
/* *INDENT-OFF* */
@@ -198,12 +198,10 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
char *cwd;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* writable directory where check creates temporary files */
cwd = g_get_current_dir ();
@@ -217,13 +215,7 @@
tcase_add_test (tc_core, test_vpath_to_str_filter);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "relative_cd.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/tempdir.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - manipulations with temp files and dirs
- Copyright (C) 2012-2020
+ Copyright (C) 2012-2022
Free Software Foundation, Inc.
Written by:
@@ -78,8 +78,8 @@
env_tmpdir = g_getenv ("MC_TMPDIR");
/* then */
- fail_unless (g_file_test (tmpdir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR),
- "\nNo such directory: %s\n", tmpdir);
+ ck_assert_msg (g_file_test (tmpdir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR),
+ "\nNo such directory: %s\n", tmpdir);
mctest_assert_str_eq (env_tmpdir, tmpdir);
}
/* *INDENT-OFF* */
@@ -104,15 +104,15 @@
/* then */
close (fd);
- mctest_assert_int_ne (fd, -1);
- fail_unless (g_file_test
- (vfs_path_as_str (pname_vpath), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR),
- "\nNo such file: %s\n", vfs_path_as_str (pname_vpath));
+ ck_assert_int_ne (fd, -1);
+ ck_assert_msg (g_file_test
+ (vfs_path_as_str (pname_vpath), G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR),
+ "\nNo such file: %s\n", vfs_path_as_str (pname_vpath));
unlink (vfs_path_as_str (pname_vpath));
- fail_unless (strncmp (vfs_path_as_str (pname_vpath), begin_pname, strlen (begin_pname)) == 0,
- "\nstart of %s should be equal to %s\n", vfs_path_as_str (pname_vpath),
- begin_pname);
- vfs_path_free (pname_vpath);
+ ck_assert_msg (strncmp (vfs_path_as_str (pname_vpath), begin_pname, strlen (begin_pname)) == 0,
+ "\nstart of %s should be equal to %s\n", vfs_path_as_str (pname_vpath),
+ begin_pname);
+ vfs_path_free (pname_vpath, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -123,11 +123,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -136,13 +134,7 @@
tcase_add_test (tc_core, test_mc_mkstemps);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "tempdir.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_adjust_stat.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_adjust_stat() functionality
- Copyright (C) 2017-2020
+ Copyright (C) 2017-2022
Free Software Foundation, Inc.
Written by:
@@ -177,9 +177,9 @@
vfs_adjust_stat (&expected_stat);
/* then */
- mctest_assert_int_eq (data->etalon_stat.st_blocks, expected_stat.st_blocks);
+ ck_assert_int_eq (data->etalon_stat.st_blocks, expected_stat.st_blocks);
#else
- mctest_assert_int_eq (0, 0);
+ ck_assert_int_eq (0, 0);
#endif /* HAVE_STRUCT_STAT_ST_BLOCKS */
}
/* *INDENT-OFF* */
@@ -191,23 +191,15 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
mctest_add_parameterized_test (tc_core, test_vfs_adjust_stat, test_vfs_adjust_stat_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_adjust_stat.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_get_encoding.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_get_encoding() functionality
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -143,11 +143,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -155,13 +153,7 @@
mctest_add_parameterized_test (tc_core, test_vfs_get_encoding, test_vfs_get_encoding_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_get_encoding.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_parse_ls_lga.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_parse_ls_lga() functionality
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -274,37 +274,37 @@
vfs_parse_ls_lga (data->input_string, &test_stat, &filename, &linkname, &filepos);
/* then */
- mctest_assert_int_eq (actual_result, data->expected_result);
+ ck_assert_int_eq (actual_result, data->expected_result);
mctest_assert_str_eq (filename, data->expected_filename);
mctest_assert_str_eq (linkname, data->expected_linkname);
- mctest_assert_int_eq (etalon_stat.st_dev, test_stat.st_dev);
- mctest_assert_int_eq (etalon_stat.st_ino, test_stat.st_ino);
- mctest_assert_int_eq (etalon_stat.st_mode, test_stat.st_mode);
- mctest_assert_int_eq (etalon_stat.st_uid, test_stat.st_uid);
- mctest_assert_int_eq (etalon_stat.st_gid, test_stat.st_gid);
+ ck_assert_int_eq (etalon_stat.st_dev, test_stat.st_dev);
+ ck_assert_int_eq (etalon_stat.st_ino, test_stat.st_ino);
+ ck_assert_int_eq (etalon_stat.st_mode, test_stat.st_mode);
+ ck_assert_int_eq (etalon_stat.st_uid, test_stat.st_uid);
+ ck_assert_int_eq (etalon_stat.st_gid, test_stat.st_gid);
#ifdef HAVE_STRUCT_STAT_ST_RDEV
- mctest_assert_int_eq (etalon_stat.st_rdev, test_stat.st_rdev);
+ ck_assert_int_eq (etalon_stat.st_rdev, test_stat.st_rdev);
#endif
- mctest_assert_int_eq (etalon_stat.st_size, test_stat.st_size);
+ ck_assert_int_eq (etalon_stat.st_size, test_stat.st_size);
#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
- mctest_assert_int_eq (etalon_stat.st_blksize, test_stat.st_blksize);
+ ck_assert_int_eq (etalon_stat.st_blksize, test_stat.st_blksize);
#endif
#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
- mctest_assert_int_eq (etalon_stat.st_blocks, test_stat.st_blocks);
+ ck_assert_int_eq (etalon_stat.st_blocks, test_stat.st_blocks);
#endif
/* FIXME: these commented checks are related to time zone!
- mctest_assert_int_eq (etalon_stat.st_atime, test_stat.st_atime);
- mctest_assert_int_eq (etalon_stat.st_mtime, test_stat.st_mtime);
- mctest_assert_int_eq (etalon_stat.st_ctime, test_stat.st_ctime);
+ ck_assert_int_eq (etalon_stat.st_atime, test_stat.st_atime);
+ ck_assert_int_eq (etalon_stat.st_mtime, test_stat.st_mtime);
+ ck_assert_int_eq (etalon_stat.st_ctime, test_stat.st_ctime);
*/
#ifdef HAVE_STRUCT_STAT_ST_MTIM
- mctest_assert_int_eq (0, test_stat.st_atim.tv_nsec);
- mctest_assert_int_eq (0, test_stat.st_mtim.tv_nsec);
- mctest_assert_int_eq (0, test_stat.st_ctim.tv_nsec);
+ ck_assert_int_eq (0, test_stat.st_atim.tv_nsec);
+ ck_assert_int_eq (0, test_stat.st_mtim.tv_nsec);
+ ck_assert_int_eq (0, test_stat.st_ctim.tv_nsec);
#endif
}
@@ -365,7 +365,7 @@
if (! vfs_parse_ls_lga (ls_output,\
&ent[ent_index]->ino->st, &ent[ent_index]->name, &ent[ent_index]->ino->linkname, &filepos))\
{\
- fail ("An error occurred while parse ls output");\
+ ck_abort_msg ("An error occurred while parse ls output");\
return;\
}\
vfs_s_store_filename_leading_spaces (ent[ent_index], filepos);\
@@ -408,11 +408,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -422,13 +420,7 @@
tcase_add_test (tc_core, test_vfs_parse_ls_lga_unaligned);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_parse_ls_lga.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_path_from_str_flags.c
^
|
@@ -1,6 +1,6 @@
/* lib/vfs - test vfs_path_from_str_flags() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -98,7 +98,7 @@
/* then */
mctest_assert_str_eq (actual_result->str, data->expected_result);
- vfs_path_free (actual_result);
+ vfs_path_free (actual_result, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -109,11 +109,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -121,13 +119,7 @@
mctest_add_parameterized_test (tc_core, test_strip_home, test_strip_home_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_path_from_str_flags.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_path_string_convert.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - get vfs_path_t from string
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -182,12 +182,12 @@
path_element = vfs_path_get_by_index (vpath, -1);
/* then */
- mctest_assert_int_eq (vpath_len, data->expected_elements_count);
+ ck_assert_int_eq (vpath_len, data->expected_elements_count);
mctest_assert_str_eq (actual_result, data->expected_result);
mctest_assert_ptr_eq (path_element->class, data->expected_vfs_class);
mctest_assert_str_eq (path_element->path, data->expected_element_path);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -269,7 +269,7 @@
mctest_assert_str_eq (actual_result, data->expected_result);
g_free (actual_result);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -302,7 +302,7 @@
mctest_assert_not_null (element->encoding);
mctest_assert_str_eq (result, ETALON_STR);
- vfs_path_free (vpath);
+ vfs_path_free (vpath, TRUE);
}
/* *INDENT-OFF* */
@@ -314,11 +314,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -331,13 +329,7 @@
#endif
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_path_string_convert.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_prefix_to_class.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_prefix_to_class() functionality
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -154,11 +154,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -166,13 +164,7 @@
mctest_add_parameterized_test (tc_core, test_vfs_prefix_to_class, test_vfs_prefix_to_class_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_prefix_to_class.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_s_get_path.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_s_get_path() function
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -152,11 +152,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -164,13 +162,7 @@
tcase_add_test (tc_core, test_vfs_s_get_path);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_s_get_path.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_setup_cwd.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_setup_cwd() functionality
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -140,11 +140,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -153,13 +151,7 @@
test_vfs_setup_cwd_symlink_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_setup_cwd.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/vfs/vfs_split.c
^
|
@@ -1,7 +1,7 @@
/*
lib/vfs - test vfs_split() functionality
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -191,11 +191,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -203,13 +201,7 @@
mctest_add_parameterized_test (tc_core, test_vfs_split, test_vfs_split_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "vfs_split.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/Makefile.am
^
|
@@ -19,7 +19,8 @@
complete_engine \
hotkey_equal \
group_init_destroy \
- widget_find_by_id
+ widget_find_by_id \
+ widget_make_global_local
check_PROGRAMS = $(TESTS)
@@ -34,3 +35,6 @@
widget_find_by_id_SOURCES = \
widget_find_by_id.c
+
+widget_make_global_local_SOURCES = \
+ widget_make_global_local.c
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/complete_engine.c
^
|
@@ -1,7 +1,7 @@
/*
lib/widget - tests for autocomplete feature
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -198,19 +198,17 @@
/* given */
WInput *w_input;
- w_input = g_new (WInput, 1);
- w_input->buffer = g_strdup (data->input_buffer);
+ w_input = input_new (1, 1, NULL, 100, data->input_buffer, NULL, data->input_completion_flags);
w_input->point = data->input_point;
- w_input->completion_flags = data->input_completion_flags;
/* when */
complete_engine_fill_completions (w_input);
/* then */
mctest_assert_str_eq (try_complete__text__captured, data->input_buffer);
- mctest_assert_int_eq (try_complete__lc_start__captured, data->expected_start);
- mctest_assert_int_eq (try_complete__lc_end__captured, data->expected_end);
- mctest_assert_int_eq (try_complete__flags__captured, data->input_completion_flags);
+ ck_assert_int_eq (try_complete__lc_start__captured, data->expected_start);
+ ck_assert_int_eq (try_complete__lc_end__captured, data->expected_end);
+ ck_assert_int_eq (try_complete__flags__captured, data->input_completion_flags);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -221,11 +219,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -234,13 +230,7 @@
test_complete_engine_fill_completions_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "complete_engine.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/group_init_destroy.c
^
|
@@ -1,11 +1,11 @@
/*
libmc - checks for initialization and deinitialization of WGroup widget
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -31,6 +31,8 @@
#include "lib/widget.h"
+#include "tests/mctest.h"
+
/* --------------------------------------------------------------------------------------------- */
static int ref = 0;
@@ -83,47 +85,56 @@
{
WGroup *g, *g0;
Widget *w0;
+ WRect r;
g = g_new0 (WGroup, 1);
- group_init (g, 0, 0, 20, 20, group_callback, NULL);
+ rect_init (&r, 0, 0, 20, 20);
+ group_init (g, &r, group_callback, NULL);
g0 = g_new0 (WGroup, 1);
- group_init (g0, 0, 0, 10, 10, group_callback, NULL);
+ rect_init (&r, 0, 0, 10, 10);
+ group_init (g0, &r, group_callback, NULL);
group_add_widget (g, g0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 0, 0, 5, 5, widget_callback, NULL);
+ rect_init (&r, 0, 0, 5, 5);
+ widget_init (w0, &r, widget_callback, NULL);
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 5, 5, 5, 5, widget_callback, NULL);
+ rect_init (&r, 5, 5, 5, 5);
+ widget_init (w0, &r, widget_callback, NULL);
group_add_widget (g0, w0);
g0 = g_new0 (WGroup, 1);
- group_init (g0, 10, 10, 10, 10, group_callback, NULL);
+ rect_init (&r, 10, 10, 10, 10);
+ group_init (g0, &r, group_callback, NULL);
group_add_widget (g, g0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 10, 10, 5, 5, widget_callback, NULL);
+ rect_init (&r, 10, 10, 5, 5);
+ widget_init (w0, &r, widget_callback, NULL);
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 15, 15, 5, 5, widget_callback, NULL);
+ rect_init (&r, 15, 15, 5, 5);
+ widget_init (w0, &r, widget_callback, NULL);
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 5, 5, 10, 10, widget_callback, NULL);
+ rect_init (&r, 5, 5, 10, 10);
+ widget_init (w0, &r, widget_callback, NULL);
group_add_widget (g, w0);
- fail_unless (w0->id == 7, "last id (%d) != 7", ref);
+ ck_assert_msg (w0->id == 7, "last id (%d) != 7", ref);
send_message (g, NULL, MSG_INIT, 0, NULL);
- fail_unless (ref == 8, "ref (%d) != 8", ref);
+ ck_assert_msg (ref == 8, "ref (%d) != 8", ref);
widget_destroy (WIDGET (g));
- fail_unless (ref == 0, "ref (%d) != 0", ref);
+ ck_assert_msg (ref == 0, "ref (%d) != 0", ref);
}
/* *INDENT-OFF* */
END_TEST
@@ -134,23 +145,15 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
tcase_add_test (tc_core, test_group_init_deinit);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "group_init_deinit.log");
- srunner_run_all (sr, CK_NORMAL);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? 0 : 1;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/hotkey_equal.c
^
|
@@ -1,7 +1,7 @@
/*
lib/widget - tests for hotkey comparision
- Copyright (C) 2019-2020
+ Copyright (C) 2019-2022
Free Software Foundation, Inc.
Written by:
@@ -140,7 +140,7 @@
result = hotkey_equal (data->hotkey1, data->hotkey2);
/* then */
- mctest_assert_int_eq (result, data->expected_result);
+ ck_assert_int_eq (result, data->expected_result);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -151,11 +151,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -163,13 +161,7 @@
mctest_add_parameterized_test (tc_core, test_hotkey_equal, test_hotkey_equal_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "hotkey_equal.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/widget_find_by_id.c
^
|
@@ -1,11 +1,11 @@
/*
libmc - checks for search widget with requested ID
- Copyright (C) 2020
+ Copyright (C) 2020-2022
The Free Software Foundation, Inc.
Written by:
- Andrew Borodin <aborodin@vmail.ru>, 2020
+ Andrew Borodin <aborodin@vmail.ru>, 2020-2022
This file is part of the Midnight Commander.
@@ -31,6 +31,8 @@
#include "lib/widget.h"
+#include "tests/mctest.h"
+
/* --------------------------------------------------------------------------------------------- */
/* *INDENT-OFF* */
@@ -39,49 +41,58 @@
{
WGroup *g, *g0;
Widget *w0;
+ WRect r;
g = g_new0 (WGroup, 1);
- group_init (g, 0, 0, 20, 20, NULL, NULL); /* ID = 0 */
+ rect_init (&r, 0, 0, 20, 20);
+ group_init (g, &r, NULL, NULL); /* ID = 0 */
g0 = g_new0 (WGroup, 1);
- group_init (g0, 0, 0, 10, 10, NULL, NULL); /* ID = 1 */
+ rect_init (&r, 0, 0, 10, 10);
+ group_init (g0, &r, NULL, NULL); /* ID = 1 */
group_add_widget (g, g0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 0, 0, 5, 5, widget_default_callback, NULL); /* ID = 2 */
+ rect_init (&r, 0, 0, 5, 5);
+ widget_init (w0, &r, widget_default_callback, NULL); /* ID = 2 */
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 5, 5, 5, 5, widget_default_callback, NULL); /* ID = 3 */
+ rect_init (&r, 5, 5, 5, 5);
+ widget_init (w0, &r, widget_default_callback, NULL); /* ID = 3 */
group_add_widget (g0, w0);
g0 = g_new0 (WGroup, 1);
- group_init (g0, 10, 10, 10, 10, NULL, NULL); /* ID = 4 */
+ rect_init (&r, 10, 10, 10, 10);
+ group_init (g0, &r, NULL, NULL); /* ID = 4 */
group_add_widget (g, g0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 10, 10, 5, 5, widget_default_callback, NULL); /* ID = 5 */
+ rect_init (&r, 10, 10, 5, 5);
+ widget_init (w0, &r, widget_default_callback, NULL); /* ID = 5 */
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 15, 15, 5, 5, widget_default_callback, NULL); /* ID = 6 */
+ rect_init (&r, 15, 15, 5, 5);
+ widget_init (w0, &r, widget_default_callback, NULL); /* ID = 6 */
group_add_widget (g0, w0);
w0 = g_new0 (Widget, 1);
- widget_init (w0, 5, 5, 10, 10, widget_default_callback, NULL); /* ID = 7 */
+ rect_init (&r, 5, 5, 10, 10);
+ widget_init (w0, &r, widget_default_callback, NULL); /* ID = 7 */
group_add_widget (g, w0);
w0 = WIDGET (g);
- fail_unless (widget_find_by_id (w0, 0) != NULL, "Not found ID=0");
- fail_unless (widget_find_by_id (w0, 1) != NULL, "Not found ID=1");
- fail_unless (widget_find_by_id (w0, 2) != NULL, "Not found ID=2");
- fail_unless (widget_find_by_id (w0, 3) != NULL, "Not found ID=3");
- fail_unless (widget_find_by_id (w0, 4) != NULL, "Not found ID=4");
- fail_unless (widget_find_by_id (w0, 5) != NULL, "Not found ID=5");
- fail_unless (widget_find_by_id (w0, 6) != NULL, "Not found ID=6");
- fail_unless (widget_find_by_id (w0, 7) != NULL, "Not found ID=7");
- fail_unless (widget_find_by_id (w0, 8) == NULL, "Found ID=8");
+ ck_assert_msg (widget_find_by_id (w0, 0) != NULL, "Not found ID=0");
+ ck_assert_msg (widget_find_by_id (w0, 1) != NULL, "Not found ID=1");
+ ck_assert_msg (widget_find_by_id (w0, 2) != NULL, "Not found ID=2");
+ ck_assert_msg (widget_find_by_id (w0, 3) != NULL, "Not found ID=3");
+ ck_assert_msg (widget_find_by_id (w0, 4) != NULL, "Not found ID=4");
+ ck_assert_msg (widget_find_by_id (w0, 5) != NULL, "Not found ID=5");
+ ck_assert_msg (widget_find_by_id (w0, 6) != NULL, "Not found ID=6");
+ ck_assert_msg (widget_find_by_id (w0, 7) != NULL, "Not found ID=7");
+ ck_assert_msg (widget_find_by_id (w0, 8) == NULL, "Found ID=8");
send_message (g, NULL, MSG_INIT, 0, NULL);
widget_destroy (w0);
@@ -95,23 +106,15 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
/* Add new tests here: *************** */
tcase_add_test (tc_core, test_widget_find_by_id);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "widget_find_by_id.log");
- srunner_run_all (sr, CK_NORMAL);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? 0 : 1;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/widget/widget_make_global_local.c
^
|
@@ -0,0 +1,145 @@
+/*
+ libmc - checks for search widget with requested ID
+
+ Copyright (C) 2021-2022
+ The Free Software Foundation, Inc.
+
+ Written by:
+ Andrew Borodin <aborodin@vmail.ru>, 2021-2022
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define TEST_SUITE_NAME "lib/widget"
+
+#include <config.h>
+
+#include <check.h>
+
+#include "lib/widget.h"
+
+#include "tests/mctest.h"
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* *INDENT-OFF* */
+START_TEST (test_widget_make_global_local)
+/* *INDENT-ON* */
+{
+ WRect r;
+ WGroup *g0, *g1, *g2;
+ Widget *w0, *w1, *w2;
+
+ /* top level group */
+ g0 = g_new0 (WGroup, 1);
+ rect_init (&r, 20, 20, 40, 40);
+ group_init (g0, &r, NULL, NULL);
+
+ /* g0 child */
+ w0 = g_new0 (Widget, 1);
+ rect_init (&r, 1, 1, 5, 5);
+ widget_init (w0, &r, widget_default_callback, NULL);
+ group_add_widget (g0, w0);
+
+ /* g0 child */
+ g1 = g_new0 (WGroup, 1);
+ rect_init (&r, 5, 5, 30, 30);
+ group_init (g1, &r, NULL, NULL);
+
+ /* g1 child */
+ w1 = g_new0 (Widget, 1);
+ rect_init (&r, 5, 5, 10, 10);
+ widget_init (w1, &r, widget_default_callback, NULL);
+ group_add_widget (g1, w1);
+
+ /* g1 child */
+ g2 = g_new0 (WGroup, 1);
+ rect_init (&r, 15, 15, 20, 20);
+ group_init (g2, &r, NULL, NULL);
+ group_add_widget (g1, g2);
+
+ /* g2 child */
+ w2 = g_new0 (Widget, 1);
+ rect_init (&r, 15, 15, 5, 5);
+ widget_init (w2, &r, widget_default_callback, NULL);
+ group_add_widget (g2, w2);
+
+ /* g0 child */
+ group_add_widget (g0, g1);
+
+ /* test global coordinates */
+ /* w0 is a member of g0 */
+ ck_assert_int_eq (w0->rect.y, 21);
+ ck_assert_int_eq (w0->rect.x, 21);
+ /* g1 is a member of g0 */
+ ck_assert_int_eq (WIDGET (g1)->rect.y, 25);
+ ck_assert_int_eq (WIDGET (g1)->rect.x, 25);
+ /* w1 is a member of g1 */
+ ck_assert_int_eq (w1->rect.y, 30);
+ ck_assert_int_eq (w1->rect.x, 30);
+ /* g2 is a member of g1 */
+ ck_assert_int_eq (WIDGET (g2)->rect.y, 40);
+ ck_assert_int_eq (WIDGET (g2)->rect.x, 40);
+ /* w2 is a member of g2 */
+ ck_assert_int_eq (w2->rect.y, 55);
+ ck_assert_int_eq (w2->rect.x, 55);
+
+ group_remove_widget (w0);
+ group_remove_widget (g1);
+
+ /* test local coordinates */
+ /* w0 is not a member of g0 */
+ ck_assert_int_eq (w0->rect.y, 1);
+ ck_assert_int_eq (w0->rect.x, 1);
+
+ /* g1 is not a member of g0 */
+ ck_assert_int_eq (WIDGET (g1)->rect.y, 5);
+ ck_assert_int_eq (WIDGET (g1)->rect.x, 5);
+ /* w1 is a member of g1 */
+ ck_assert_int_eq (w1->rect.y, 10);
+ ck_assert_int_eq (w1->rect.x, 10);
+ /* g2 is not a member of g1 */
+ ck_assert_int_eq (WIDGET (g2)->rect.y, 20);
+ ck_assert_int_eq (WIDGET (g2)->rect.x, 20);
+ /* w2 is a member of g2 */
+ ck_assert_int_eq (w2->rect.y, 35);
+ ck_assert_int_eq (w2->rect.x, 35);
+
+ widget_destroy (w0);
+ widget_destroy (WIDGET (g1));
+ widget_destroy (WIDGET (g0));
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* --------------------------------------------------------------------------------------------- */
+
+int
+main (void)
+{
+ TCase *tc_core;
+
+ tc_core = tcase_create ("Core");
+
+ /* Add new tests here: *************** */
+ tcase_add_test (tc_core, test_widget_make_global_local);
+ /* *********************************** */
+
+ return mctest_run_all (tc_core);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/lib/x_basename.c
^
|
@@ -1,7 +1,7 @@
/*
lib - x_basename() function testing
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -112,11 +112,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -124,13 +122,7 @@
mctest_add_parameterized_test (tc_core, test_x_basename, test_x_basename_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "x_basename.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/mctest.h
^
|
@@ -17,14 +17,6 @@
g_assert_cmpstr (actual_result, ==, etalon_result); \
}
-#define mctest_assert_int_eq(actual_result, etalon_result) { \
- ck_assert_int_eq (actual_result, etalon_result); \
-}
-
-#define mctest_assert_int_ne(actual_result, etalon_result) { \
- ck_assert_int_ne (actual_result, etalon_result); \
-}
-
#define mctest_assert_ptr_eq(actual_pointer, etalon_pointer) { \
ck_assert_msg ( actual_pointer == etalon_pointer, \
"%s(%p) pointer should be equal to %s(%p)\n", \
@@ -63,7 +55,7 @@
#define mctest_assert_false(actual_pointer) { \
ck_assert_msg( \
(int) actual_pointer == 0, \
- "%s variable should be TRUE", #actual_pointer \
+ "%s variable should be FALSE", #actual_pointer \
); \
}
@@ -88,4 +80,22 @@
/*** inline functions ****************************************************************************/
+static inline int
+mctest_run_all (TCase * tc_core)
+{
+ Suite *s;
+ SRunner *sr;
+ int number_failed;
+
+ s = suite_create (TEST_SUITE_NAME);
+ suite_add_tcase (s, tc_core);
+ sr = srunner_create (s);
+ srunner_set_log (sr, "-");
+ srunner_run_all (sr, CK_ENV);
+ number_failed = srunner_ntests_failed (sr);
+ srunner_free (sr);
+
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
#endif /* MC__TEST */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/Makefile.am
^
|
@@ -18,11 +18,6 @@
$(top_builddir)/src/libinternal.la \
$(top_builddir)/lib/libmc.la
-if ENABLE_VFS_SMB
-# this is a hack for linking with own samba library in simple way
-LIBS += $(top_builddir)/src/vfs/smbfs/helpers/libsamba.a
-endif
-
if ENABLE_MCLIB
LIBS += $(GLIB_LIBS)
endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/editor/Makefile.am
^
|
@@ -14,11 +14,6 @@
$(top_builddir)/lib/libmc.la \
@PCRE_LIBS@
-if ENABLE_VFS_SMB
-# this is a hack for linking with own samba library in simple way
-LIBS += $(top_builddir)/src/vfs/smbfs/helpers/libsamba.a
-endif
-
if ENABLE_MCLIB
LIBS += $(GLIB_LIBS)
endif
@@ -26,10 +21,10 @@
EXTRA_DIST = mc.charsets test-data.txt.in
TESTS = \
- editcmd__edit_complete_word_cmd
+ edit_complete_word_cmd
check_PROGRAMS = $(TESTS)
-editcmd__edit_complete_word_cmd_SOURCES = \
- editcmd__edit_complete_word_cmd.c
+edit_complete_word_cmd_SOURCES = \
+ edit_complete_word_cmd.c
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/editor/edit_complete_word_cmd.c
^
|
@@ -0,0 +1,401 @@
+/*
+ src/editor - tests for edit_complete_word_cmd() function
+
+ Copyright (C) 2013-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Slava Zanko <slavazanko@gmail.com>, 2013
+ Andrew Borodin <aborodin@vmail.ru>, 2021-2022
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define TEST_SUITE_NAME "/src/editor"
+
+#include "tests/mctest.h"
+
+#include <ctype.h>
+
+#ifdef HAVE_CHARSET
+#include "lib/charsets.h"
+#endif
+#include "lib/strutil.h"
+
+#include "src/vfs/local/local.c"
+#ifdef HAVE_CHARSET
+#include "src/selcodepage.h"
+#endif
+#include "src/editor/editwidget.h"
+#include "src/editor/editmacros.h" /* edit_load_macro_cmd() */
+#include "src/editor/editcomplete.h"
+
+static WGroup owner;
+static WEdit *test_edit;
+
+/* --------------------------------------------------------------------------------------------- */
+/* @Mock */
+void
+mc_refresh (void)
+{
+}
+
+/* --------------------------------------------------------------------------------------------- */
+/* @Mock */
+void
+edit_load_syntax (WEdit * _edit, GPtrArray * _pnames, const char *_type)
+{
+ (void) _edit;
+ (void) _pnames;
+ (void) _type;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @Mock */
+int
+edit_get_syntax_color (WEdit * _edit, off_t _byte_index)
+{
+ (void) _edit;
+ (void) _byte_index;
+
+ return 0;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @Mock */
+gboolean
+edit_load_macro_cmd (WEdit * _edit)
+{
+ (void) _edit;
+
+ return FALSE;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @CapturedValue */
+static const WEdit *edit_completion_dialog_show__edit;
+/* @CapturedValue */
+static int edit_completion_dialog_show__max_width;
+/* @CapturedValue */
+static GQueue *edit_completion_dialog_show__compl;
+
+/* @ThenReturnValue */
+static char *edit_completion_dialog_show__return_value;
+
+/* @Mock */
+char *
+edit_completion_dialog_show (const WEdit * edit, GQueue * compl, int max_width)
+{
+
+ edit_completion_dialog_show__edit = edit;
+ edit_completion_dialog_show__max_width = max_width;
+
+ {
+ GList *i;
+
+ edit_completion_dialog_show__compl = g_queue_new ();
+
+ for (i = g_queue_peek_tail_link (compl); i != NULL; i = g_list_previous (i))
+ {
+ GString *s = (GString *) i->data;
+
+ g_queue_push_tail (edit_completion_dialog_show__compl, mc_g_string_dup (s));
+ }
+ }
+
+ return edit_completion_dialog_show__return_value;
+}
+
+static void
+edit_completion_dialog_show__init (void)
+{
+ edit_completion_dialog_show__edit = NULL;
+ edit_completion_dialog_show__max_width = 0;
+ edit_completion_dialog_show__compl = NULL;
+ edit_completion_dialog_show__return_value = NULL;
+}
+
+static void
+edit_completion_dialog_show__string_free (gpointer data)
+{
+ g_string_free ((GString *) data, TRUE);
+}
+
+static void
+edit_completion_dialog_show__deinit (void)
+{
+ if (edit_completion_dialog_show__compl != NULL)
+ g_queue_free_full (edit_completion_dialog_show__compl,
+ edit_completion_dialog_show__string_free);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @Before */
+static void
+my_setup (void)
+{
+ WRect r;
+
+ str_init_strings (NULL);
+
+ vfs_init ();
+ vfs_init_localfs ();
+ vfs_setup_work_dir ();
+
+#ifdef HAVE_CHARSET
+ mc_global.sysconfig_dir = (char *) TEST_SHARE_DIR;
+ load_codepages_list ();
+#endif /* HAVE_CHARSET */
+
+ mc_global.main_config = mc_config_init ("edit_complete_word_cmd.ini", FALSE);
+ mc_config_set_bool (mc_global.main_config, CONFIG_APP_SECTION,
+ "editor_wordcompletion_collect_all_files", TRUE);
+
+ option_filesize_threshold = (char *) "64M";
+
+ rect_init (&r, 0, 0, 24, 80);
+ test_edit = edit_init (NULL, &r, vfs_path_from_str ("test-data.txt"), 1);
+ memset (&owner, 0, sizeof (owner));
+ group_add_widget (&owner, WIDGET (test_edit));
+ edit_completion_dialog_show__init ();
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @After */
+static void
+my_teardown (void)
+{
+ edit_completion_dialog_show__deinit ();
+ edit_clean (test_edit);
+ group_remove_widget (test_edit);
+ g_free (test_edit);
+
+ mc_config_deinit (mc_global.main_config);
+
+#ifdef HAVE_CHARSET
+ free_codepages_list ();
+#endif /* HAVE_CHARSET */
+
+ vfs_shut ();
+
+ str_uninit_strings ();
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+#ifdef HAVE_CHARSET
+/* @DataSource("test_autocomplete_ds") */
+/* *INDENT-OFF* */
+static const struct test_autocomplete_ds
+{
+ off_t input_position;
+ const char *input_system_code_page;
+ int input_source_codepage_id;
+ const char *input_editor_code_page;
+ int input_display_codepage_id;
+ const char *input_completed_word;
+
+ int expected_max_width;
+ int expected_compl_word_count;
+ int input_completed_word_start_pos;
+ const char *expected_completed_word;
+} test_autocomplete_ds[] =
+{
+ { /* 0. */
+ 102,
+ "KOI8-R",
+ 0,
+ "UTF-8",
+ 1,
+ "ÑÑйÑÑкен",
+
+ 16,
+ 2,
+ 98,
+ "ÑÑйÑÑкен"
+ },
+ { /* 1. */
+ 138,
+ "UTF-8",
+ 1,
+ "KOI8-R",
+ 0,
+ "ÜßÊÃÕËÅÎ",
+
+ 8,
+ 2,
+ 136,
+ "ÜßÊÃÕËÅÎ"
+ },
+};
+/* *INDENT-ON* */
+
+/* @Test(dataSource = "test_autocomplete_ds") */
+/* *INDENT-OFF* */
+START_PARAMETRIZED_TEST (test_autocomplete, test_autocomplete_ds)
+/* *INDENT-ON* */
+{
+ /* given */
+ edit_completion_dialog_show__return_value = g_strdup (data->input_completed_word);
+
+
+ mc_global.source_codepage = data->input_source_codepage_id;
+ mc_global.display_codepage = data->input_display_codepage_id;
+ cp_source = data->input_editor_code_page;
+ cp_display = data->input_system_code_page;
+
+ do_set_codepage (0);
+ edit_set_codeset (test_edit);
+
+ /* when */
+ edit_cursor_move (test_edit, data->input_position);
+ edit_complete_word_cmd (test_edit);
+
+ /* then */
+ mctest_assert_ptr_eq (edit_completion_dialog_show__edit, test_edit);
+ ck_assert_int_eq (g_queue_get_length (edit_completion_dialog_show__compl),
+ data->expected_compl_word_count);
+ ck_assert_int_eq (edit_completion_dialog_show__max_width, data->expected_max_width);
+
+ {
+ off_t i = 0;
+ GString *actual_completed_str;
+
+ actual_completed_str = g_string_new ("");
+
+ while (TRUE)
+ {
+ int chr;
+
+ chr =
+ edit_buffer_get_byte (&test_edit->buffer,
+ data->input_completed_word_start_pos + i++);
+ if (isspace (chr))
+ break;
+ g_string_append_c (actual_completed_str, chr);
+ }
+ mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word);
+ g_string_free (actual_completed_str, TRUE);
+ }
+}
+/* *INDENT-OFF* */
+END_PARAMETRIZED_TEST
+/* *INDENT-ON* */
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @DataSource("test_autocomplete_single_ds") */
+/* *INDENT-OFF* */
+static const struct test_autocomplete_single_ds
+{
+ off_t input_position;
+ const char *input_system_code_page;
+ int input_source_codepage_id;
+ const char *input_editor_code_page;
+ int input_display_codepage_id;
+
+ int input_completed_word_start_pos;
+
+ const char *expected_completed_word;
+} test_autocomplete_single_ds[] =
+{
+ { /* 0. */
+ 146,
+ "UTF-8",
+ 1,
+ "KOI8-R",
+ 0,
+
+ 145,
+ "ÆÙ×Á"
+ },
+};
+/* *INDENT-ON* */
+
+/* @Test(dataSource = "test_autocomplete_single_ds") */
+/* *INDENT-OFF* */
+START_PARAMETRIZED_TEST (test_autocomplete_single, test_autocomplete_single_ds)
+/* *INDENT-ON* */
+{
+ /* given */
+ mc_global.source_codepage = data->input_source_codepage_id;
+ mc_global.display_codepage = data->input_display_codepage_id;
+ cp_source = data->input_editor_code_page;
+ cp_display = data->input_system_code_page;
+
+ do_set_codepage (0);
+ edit_set_codeset (test_edit);
+
+ /* when */
+ edit_cursor_move (test_edit, data->input_position);
+ edit_complete_word_cmd (test_edit);
+
+ /* then */
+ {
+ off_t i = 0;
+ GString *actual_completed_str;
+
+ actual_completed_str = g_string_new ("");
+
+ while (TRUE)
+ {
+ int chr;
+
+ chr =
+ edit_buffer_get_byte (&test_edit->buffer,
+ data->input_completed_word_start_pos + i++);
+ if (isspace (chr))
+ break;
+ g_string_append_c (actual_completed_str, chr);
+ }
+ mctest_assert_str_eq (actual_completed_str->str, data->expected_completed_word);
+ g_string_free (actual_completed_str, TRUE);
+ }
+}
+/* *INDENT-OFF* */
+END_PARAMETRIZED_TEST
+/* *INDENT-ON* */
+
+
+#endif /* HAVE_CHARSET */
+
+/* --------------------------------------------------------------------------------------------- */
+
+int
+main (void)
+{
+ TCase *tc_core;
+
+ tc_core = tcase_create ("Core");
+
+ tcase_add_checked_fixture (tc_core, my_setup, my_teardown);
+
+ /* Add new tests here: *************** */
+#ifdef HAVE_CHARSET
+ mctest_add_parameterized_test (tc_core, test_autocomplete, test_autocomplete_ds);
+ mctest_add_parameterized_test (tc_core, test_autocomplete_single, test_autocomplete_single_ds);
+#endif /* HAVE_CHARSET */
+ /* *********************************** */
+
+ return mctest_run_all (tc_core);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/editor/test-data.txt.in
^
|
@@ -1,4 +1,4 @@
-****************** START:editcmd__edit_complete_word_cmd.c
+****************** START:edit_complete_word_cmd.c
--- UTF-8:
@@ -17,4 +17,4 @@
ÆÙ×Á
Æ
-****************** END:editcmd__edit_complete_word_cmd.c
+****************** END:edit_complete_word_cmd.c
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/execute__common.c
^
|
@@ -1,7 +1,7 @@
/*
Common code for testing functions in src/execute.c file.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
@@ -54,9 +54,16 @@
}
static void
+vpath_captured_free (gpointer data, gpointer user_data)
+{
+ (void) user_data;
+ vfs_path_free ((vfs_path_t *) data, TRUE);
+}
+
+static void
vfs_file_is_local__deinit (void)
{
- g_ptr_array_foreach (vfs_file_is_local__vpath__captured, (GFunc) vfs_path_free, NULL);
+ g_ptr_array_foreach (vfs_file_is_local__vpath__captured, vpath_captured_free, NULL);
g_ptr_array_free (vfs_file_is_local__vpath__captured, TRUE);
}
@@ -119,7 +126,7 @@
static void
mc_getlocalcopy__deinit (void)
{
- vfs_path_free (mc_getlocalcopy__pathname_vpath__captured);
+ vfs_path_free (mc_getlocalcopy__pathname_vpath__captured, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -192,7 +199,7 @@
static void
mc_stat__deinit (void)
{
- g_ptr_array_foreach (mc_stat__vpath__captured, (GFunc) vfs_path_free, NULL);
+ g_ptr_array_foreach (mc_stat__vpath__captured, vpath_captured_free, NULL);
g_ptr_array_free (mc_stat__vpath__captured, TRUE);
mc_stat__vpath__captured = NULL;
}
@@ -228,8 +235,8 @@
static void
mc_ungetlocalcopy__deinit (void)
{
- vfs_path_free (mc_ungetlocalcopy__pathname_vpath__captured);
- vfs_path_free (mc_ungetlocalcopy__local_vpath__captured);
+ vfs_path_free (mc_ungetlocalcopy__pathname_vpath__captured, TRUE);
+ vfs_path_free (mc_ungetlocalcopy__local_vpath__captured, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/execute__execute_external_editor_or_viewer.c
^
|
@@ -1,7 +1,7 @@
/*
src - tests for execute_external_editor_or_viewer() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -32,7 +32,8 @@
/* --------------------------------------------------------------------------------------------- */
char *execute_get_external_cmd_opts_from_config (const char *command,
- const vfs_path_t * filename_vpath, int start_line);
+ const vfs_path_t * filename_vpath,
+ long start_line);
/* @CapturedValue */
static char *execute_external_cmd_opts__command__captured;
@@ -47,7 +48,7 @@
/* @Mock */
char *
execute_get_external_cmd_opts_from_config (const char *command, const vfs_path_t * filename_vpath,
- int start_line)
+ long start_line)
{
execute_external_cmd_opts__command__captured = g_strdup (command);
execute_external_cmd_opts__filename_vpath__captured = vfs_path_clone (filename_vpath);
@@ -68,7 +69,7 @@
execute_get_external_cmd_opts_from_config__deinit (void)
{
g_free (execute_external_cmd_opts__command__captured);
- vfs_path_free (execute_external_cmd_opts__filename_vpath__captured);
+ vfs_path_free (execute_external_cmd_opts__filename_vpath__captured, TRUE);
}
/* --------------------------------------------------------------------------------------------- */
@@ -155,15 +156,14 @@
/* check call to execute_get_external_cmd_opts_from_config() */
mctest_assert_str_eq (execute_external_cmd_opts__command__captured, "editor_or_viewer");
- mctest_assert_int_eq (vfs_path_equal
- (execute_external_cmd_opts__filename_vpath__captured, filename_vpath),
- TRUE);
- mctest_assert_int_eq (execute_external_cmd_opts__start_line__captured, 123);
+ mctest_assert_true (vfs_path_equal
+ (execute_external_cmd_opts__filename_vpath__captured, filename_vpath));
+ ck_assert_int_eq (execute_external_cmd_opts__start_line__captured, 123);
/* check call to do_executev() */
mctest_assert_str_eq (do_executev__lc_shell__captured, "editor_or_viewer");
- mctest_assert_int_eq (do_executev__flags__captured, EXECUTE_INTERNAL);
- mctest_assert_int_eq (do_executev__argv__captured->len, 7);
+ ck_assert_int_eq (do_executev__flags__captured, EXECUTE_INTERNAL);
+ ck_assert_int_eq (do_executev__argv__captured->len, 7);
mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 0),
"param 1 with spaces");
@@ -174,7 +174,7 @@
mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 5), "/path/to/file.txt");
mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 6), "+123");
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -185,11 +185,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, my_setup, my_teardown);
@@ -197,13 +195,7 @@
tcase_add_test (tc_core, do_open_external_editor_or_viewer);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "execute__execute_external_editor_or_viewer.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/execute__execute_get_external_cmd_opts_from_config.c
^
|
@@ -1,7 +1,7 @@
/*
src - tests for execute_external_editor_or_viewer() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -33,7 +33,8 @@
#include "src/vfs/local/local.c"
char *execute_get_external_cmd_opts_from_config (const char *command,
- const vfs_path_t * filename_vpath, int start_line);
+ const vfs_path_t * filename_vpath,
+ long start_line);
/* --------------------------------------------------------------------------------------------- */
@@ -175,7 +176,7 @@
mctest_assert_str_eq (g_ptr_array_index (mc_config_get_string__default_value__captured, 0),
NULL);
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
/* *INDENT-OFF* */
@@ -187,11 +188,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -200,13 +199,7 @@
check_subtitute_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "execute__execute_get_external_cmd_opts_from_config.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/execute__execute_with_vfs_arg.c
^
|
@@ -1,7 +1,7 @@
/*
src - tests for execute_with_vfs_arg() function
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -65,20 +65,19 @@
mctest_assert_str_eq (do_execute__lc_shell__captured, "cmd_for_local_file");
mctest_assert_str_eq (do_execute__command__captured, data->input_path);
- mctest_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
+ ck_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
{
const vfs_path_t *tmp_vpath;
tmp_vpath = (data->input_path == NULL) ? vfs_get_raw_current_dir () : filename_vpath;
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
- tmp_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0), tmp_vpath));
}
- mctest_assert_int_eq (do_execute__flags__captured, EXECUTE_INTERNAL);
- fail_unless (mc_getlocalcopy__pathname_vpath__captured == NULL,
- "\nFunction mc_getlocalcopy() shouldn't be called!");
+ ck_assert_int_eq (do_execute__flags__captured, EXECUTE_INTERNAL);
+ ck_assert_msg (mc_getlocalcopy__pathname_vpath__captured == NULL,
+ "\nFunction mc_getlocalcopy() shouldn't be called!");
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -104,17 +103,17 @@
mctest_assert_str_eq (do_execute__lc_shell__captured, NULL);
mctest_assert_str_eq (do_execute__command__captured, NULL);
- mctest_assert_int_eq (vfs_file_is_local__vpath__captured->len, 2);
+ ck_assert_int_eq (vfs_file_is_local__vpath__captured->len, 2);
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
- vfs_get_raw_current_dir ()), TRUE);
- fail_unless (g_ptr_array_index (vfs_file_is_local__vpath__captured, 1) == NULL,
- "\nParameter for second call to vfs_file_is_local() should be NULL!");
- fail_unless (mc_getlocalcopy__pathname_vpath__captured == NULL,
- "\nFunction mc_getlocalcopy() shouldn't be called!");
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
+ vfs_get_raw_current_dir ()));
+ ck_assert_msg (g_ptr_array_index (vfs_file_is_local__vpath__captured, 1) == NULL,
+ "\nParameter for second call to vfs_file_is_local() should be NULL!");
+ ck_assert_msg (mc_getlocalcopy__pathname_vpath__captured == NULL,
+ "\nFunction mc_getlocalcopy() shouldn't be called!");
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -142,21 +141,20 @@
mctest_assert_str_eq (do_execute__lc_shell__captured, NULL);
mctest_assert_str_eq (do_execute__command__captured, NULL);
- mctest_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
+ ck_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
- filename_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
+ filename_vpath));
- mctest_assert_int_eq (vfs_path_equal
- (mc_getlocalcopy__pathname_vpath__captured, filename_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal (mc_getlocalcopy__pathname_vpath__captured, filename_vpath));
mctest_assert_str_eq (message_title__captured, _("Error"));
mctest_assert_str_eq (message_text__captured,
_("Cannot fetch a local copy of /ftp://some.host/editme.txt"));
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -186,31 +184,29 @@
mctest_assert_str_eq (do_execute__lc_shell__captured, "cmd_for_remote_file");
mctest_assert_str_eq (do_execute__command__captured, "/tmp/blabla-editme.txt");
- mctest_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
+ ck_assert_int_eq (vfs_file_is_local__vpath__captured->len, 1);
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
- filename_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (vfs_file_is_local__vpath__captured, 0),
+ filename_vpath));
- mctest_assert_int_eq (vfs_path_equal
- (mc_getlocalcopy__pathname_vpath__captured, filename_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal (mc_getlocalcopy__pathname_vpath__captured, filename_vpath));
- mctest_assert_int_eq (mc_stat__vpath__captured->len, 2);
+ ck_assert_int_eq (mc_stat__vpath__captured->len, 2);
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (mc_stat__vpath__captured, 0), local_vpath), TRUE);
- mctest_assert_int_eq (vfs_path_equal
- (g_ptr_array_index (mc_stat__vpath__captured, 0),
- g_ptr_array_index (mc_stat__vpath__captured, 1)), TRUE);
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (mc_stat__vpath__captured, 0), local_vpath));
+ mctest_assert_true (vfs_path_equal
+ (g_ptr_array_index (mc_stat__vpath__captured, 0),
+ g_ptr_array_index (mc_stat__vpath__captured, 1)));
- mctest_assert_int_eq (vfs_path_equal
- (mc_ungetlocalcopy__pathname_vpath__captured, filename_vpath), TRUE);
+ mctest_assert_true (vfs_path_equal
+ (mc_ungetlocalcopy__pathname_vpath__captured, filename_vpath));
- mctest_assert_int_eq (vfs_path_equal (mc_ungetlocalcopy__local_vpath__captured, local_vpath),
- TRUE);
+ mctest_assert_true (vfs_path_equal (mc_ungetlocalcopy__local_vpath__captured, local_vpath));
- vfs_path_free (filename_vpath);
- vfs_path_free (local_vpath);
+ vfs_path_free (filename_vpath, TRUE);
+ vfs_path_free (local_vpath, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -221,11 +217,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -236,13 +230,7 @@
tcase_add_test (tc_core, the_file_is_remote);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "execute__execute_with_vfs_arg.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/Makefile.am
^
|
@@ -15,11 +15,6 @@
$(top_builddir)/lib/libmc.la \
@PCRE_LIBS@
-if ENABLE_VFS_SMB
-# this is a hack for linking with own samba library in simple way
-LIBS += $(top_builddir)/src/vfs/smbfs/helpers/libsamba.a
-endif
-
if ENABLE_MCLIB
LIBS += $(GLIB_LIBS)
endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/cd_to.c
^
|
@@ -1,7 +1,7 @@
/*
src/filemanager - tests for cd_to() function
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -97,7 +97,7 @@
static void
teardown (void)
{
- vfs_path_free (do_cd__new_dir_vpath__captured);
+ vfs_path_free (do_cd__new_dir_vpath__captured, TRUE);
vfs_shut ();
str_uninit_strings ();
}
@@ -147,7 +147,7 @@
/* then */
mctest_assert_str_eq (mc_config_get_home_dir__return_value,
vfs_path_as_str (do_cd__new_dir_vpath__captured));
- mctest_assert_int_eq (do_cd__cd_type__captured, cd_parse_command);
+ ck_assert_int_eq (do_cd__cd_type__captured, cd_parse_command);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -158,11 +158,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -170,13 +168,7 @@
mctest_add_parameterized_test (tc_core, test_empty_mean_home, test_empty_mean_home_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "cd_to.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/examine_cd.c
^
|
@@ -1,7 +1,7 @@
/*
src/filemanager - examine_cd() function testing
- Copyright (C) 2012-2020
+ Copyright (C) 2012-2022
Free Software Foundation, Inc.
Written by:
@@ -75,7 +75,7 @@
#define check_examine_cd(input, etalon) \
{ \
result = examine_cd (input); \
- fail_unless (strcmp (result->str, etalon) == 0, \
+ ck_assert_msg (strcmp (result->str, etalon) == 0, \
"\ninput (%s)\nactial (%s) not equal to\netalon (%s)", input, result->str, etalon); \
g_string_free (result, TRUE); \
}
@@ -128,11 +128,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -140,14 +138,7 @@
tcase_add_test (tc_core, test_examine_cd);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "examine_cd.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
-
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/exec_get_export_variables_ext.c
^
|
@@ -1,7 +1,7 @@
/*
src/filemanager - filemanager functions
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -76,16 +76,16 @@
current_panel->selected = 0;
current_panel->dir.len = 3;
- current_panel->dir.list[0].fname = (char *) "selected file.txt";
- current_panel->dir.list[1].fname = (char *) "tagged file1.txt";
+ current_panel->dir.list[0].fname = g_string_new ("selected file.txt");
+ current_panel->dir.list[1].fname = g_string_new ("tagged file1.txt");
current_panel->dir.list[1].f.marked = TRUE;
- current_panel->dir.list[2].fname = (char *) "tagged file2.txt";
+ current_panel->dir.list[2].fname = g_string_new ("tagged file2.txt");
current_panel->dir.list[2].f.marked = TRUE;
/* when */
filename_vpath = vfs_path_from_str ("/tmp/blabla.txt");
actual_string = exec_get_export_variables (filename_vpath);
- vfs_path_free (filename_vpath);
+ vfs_path_free (filename_vpath, TRUE);
/* then */
expected_string = "\
@@ -103,6 +103,9 @@
mctest_assert_str_eq (actual_string->str, expected_string);
g_string_free (actual_string, TRUE);
+ g_string_free (current_panel->dir.list[0].fname, TRUE);
+ g_string_free (current_panel->dir.list[1].fname, TRUE);
+ g_string_free (current_panel->dir.list[2].fname, TRUE);
}
/* *INDENT-OFF* */
END_TEST
@@ -113,11 +116,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -125,13 +126,7 @@
tcase_add_test (tc_core, sanitize_variables);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "exec_get_export_variables_ext.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/filegui_is_wildcarded.c
^
|
@@ -1,7 +1,7 @@
/*
src/filemanager - tests for is_wildcarded() function
- Copyright (C) 2011-2020
+ Copyright (C) 2011-2022
Free Software Foundation, Inc.
Written by:
@@ -132,7 +132,7 @@
/* when */
actual_result = is_wildcarded (data->input_value);
/* then */
- mctest_assert_int_eq (actual_result, data->expected_result);
+ ck_assert_int_eq (actual_result, data->expected_result);
}
/* *INDENT-OFF* */
END_PARAMETRIZED_TEST
@@ -143,11 +143,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -155,13 +153,7 @@
mctest_add_parameterized_test (tc_core, test_is_wildcarded, test_is_wildcarded_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "filegui_is_wildcarded.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/filemanager/get_random_hint.c
^
|
@@ -2,7 +2,7 @@
src/filemanager - filemanager functions.
Tests for getting random hints.
- Copyright (C) 2013-2020
+ Copyright (C) 2013-2022
Free Software Foundation, Inc.
Written by:
@@ -163,11 +163,9 @@
int
main (void)
{
- int number_failed;
+ TCase *tc_core;
- Suite *s = suite_create (TEST_SUITE_NAME);
- TCase *tc_core = tcase_create ("Core");
- SRunner *sr;
+ tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
@@ -176,13 +174,7 @@
mctest_add_parameterized_test (tc_core, get_random, get_random_ds);
/* *********************************** */
- suite_add_tcase (s, tc_core);
- sr = srunner_create (s);
- srunner_set_log (sr, "get_random_hint.log");
- srunner_run_all (sr, CK_ENV);
- number_failed = srunner_ntests_failed (sr);
- srunner_free (sr);
- return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return mctest_run_all (tc_core);
}
/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/Makefile.am
^
|
@@ -4,3 +4,7 @@
if ENABLE_VFS_EXTFS
SUBDIRS += extfs
endif
+
+if ENABLE_VFS_FTP
+SUBDIRS += ftpfs
+endif
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/Makefile.am
^
|
@@ -72,9 +72,9 @@
data/urar.v4,v3.env_vars \
data/urar.v4,v3.input \
data/urar.v4,v3.output \
- data/urar.v5.env_vars \
- data/urar.v5.input \
- data/urar.v5.output \
+ data/urar.v6,v5.env_vars \
+ data/urar.v6,v5.input \
+ data/urar.v6,v5.output \
data/uzip.README \
data/uzip.with-zipinfo.env_vars \
data/uzip.with-zipinfo.input \
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/lslR.README
^
|
@@ -1,7 +1,7 @@
The inputs were taken from:
- http://www.midnight-commander.org/ticket/1921
+ https://www.midnight-commander.org/ticket/1921
These inputs are supposed to cover:
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/urar.README
^
|
@@ -4,10 +4,10 @@
echo hello > 'filename with spaces.txt'
rar a archive.rar 'filename with spaces.txt' ...
-Our 'urar' supports two listing formats: that of version 5, and that of
-version 4.
+Our 'urar' supports two listing formats: that of versions 6 and 5, and that of
+versions 4 and 3.
-'urar.v5.input' was created with "unrar vt -c- -cfg- archive.rar" using
+'urar.v6,v5.input' was created with "unrar vt -c- -cfg- archive.rar" using
unrar 5.30.
'urar.v4,v3.input' was created with "unrar v -c- -cfg- archive.rar" using
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/urar.v6,v5.env_vars
^
|
(renamed from mc/tests/src/vfs/extfs/helpers-list/data/urar.v5.env_vars)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/urar.v6,v5.input
^
|
(renamed from mc/tests/src/vfs/extfs/helpers-list/data/urar.v5.input)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/urar.v6,v5.output
^
|
(renamed from mc/tests/src/vfs/extfs/helpers-list/data/urar.v5.output)
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/data/uzoo.README
^
|
@@ -1,7 +1,7 @@
The input file was created by running "zoo lq" on the archive at:
- http://www.midnight-commander.org/ticket/3696
+ https://www.midnight-commander.org/ticket/3696
Known bugs in our uzoo:
- It doesn't support filenames with spaces.
|
[-]
[+]
|
Changed |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/extfs/helpers-list/mc_parse_ls_l.c
^
|
@@ -1,7 +1,7 @@
/*
A parser for file-listings formatted like 'ls -l'.
- Copyright (C) 2016-2020
+ Copyright (C) 2016-2022
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
@@ -83,7 +83,7 @@
NULL},
{"format", 'f', 0, G_OPTION_ARG_CALLBACK, parse_format_name_argument,
"Output format. Default: ls.", "<ls|yaml>"},
- {NULL, '\0', 0, 0, NULL, NULL, NULL} /* Make the compiler shut up by initializing everything. */
+ G_OPTION_ENTRY_NULL
};
/*** file scope functions ************************************************************************/
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/Makefile.am
^
|
@@ -0,0 +1,32 @@
+PACKAGE_STRING = "/src/vfs/ftpfs"
+
+AM_CPPFLAGS = \
+ $(GLIB_CFLAGS) \
+ -DTEST_DATA_DIR=\"$(abs_srcdir)/data\" \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/lib/vfs \
+ @CHECK_CFLAGS@
+
+AM_LDFLAGS = @TESTS_LDFLAGS@
+
+LIBS = @CHECK_LIBS@ \
+ $(top_builddir)/src/libinternal.la \
+ $(top_builddir)/lib/libmc.la
+
+if ENABLE_MCLIB
+LIBS += $(GLIB_LIBS)
+endif
+
+EXTRA_DIST = \
+ data/aix_list.input \
+ data/aix_list.output \
+ data/ms_list.input \
+ data/ms_list.output
+
+TESTS = \
+ ftpfs_parse_long_list
+
+check_PROGRAMS = $(TESTS)
+
+ftpfs_parse_long_list_SOURCES = \
+ ftpfs_parse_long_list.c
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/data/aix_list.input
^
|
@@ -0,0 +1,96 @@
+-rw-rw---- 1 darkna promak 6624 Jun 26 10:21 ${plktmp}ddd
+-rw-rw---- 1 brydro promak 0 Mar 11 2007 *
+drwxrws--- 3 promak promak 256 Oct 01 2007 .cpan
+-rwxr----- 1 promak promak 879 Aug 13 2009 .profile
+-rw------- 1 promak promak 6344 Jul 05 00:11 .sh_history
+drwx--S--- 2 promak promak 256 Jan 23 2009 .ssh
+-rw------- 1 promak promak 277 Jun 30 00:41 .vi_history
+drwxrwsrwx 21 promak promak 4096 Dec 22 2010 A
+drwxrws--- 104 promak promak 16384 May 25 20:37 JP
+drwxrws--- 3 promak promak 4096 Feb 01 14:43 MDM
+drwx--x--- 2 promak promak 256 Mar 12 2007 Mail
+drwxrws--- 22 promak promak 4096 Jun 28 18:09 N
+drwxrws--- 26 promak promak 4096 May 25 23:20 O
+drwxrws--- 10 promak promak 4096 Jun 21 10:18 PB
+drwxrws--- 4 promak promak 4096 Aug 12 2009 S
+drwxr-s--- 13 promak promak 4096 Nov 26 2009 TECH
+-rw-rw---- 1 matpil promak 0 Jul 05 09:10 TMP_FILED
+-rw-rw---- 1 promak promak 2808 Sep 05 2011 ala.txt
+-rw-rw---- 1 promak promak 228 Apr 16 2009 archiwum.log
+drwxr-s--- 2 promak promak 256 Mar 23 2011 bin
+-rw-rw---- 1 brydro promak 69 Apr 25 14:23 brydro20120425122315.txt
+-rw-rw---- 1 darkna promak 0 Jul 03 08:15 core
+-rw-rw---- 1 promak promak 2664 Jul 31 2007 dupadupa.sql
+-rwxr-x--- 1 promak promak 7340 Aug 25 2007 dupkop.sh
+-rw-rw---- 1 promak promak 16365 Jul 19 2010 duppppa
+drwxr-s--- 2 promak promak 256 Jun 22 2011 err.log
+-rw-rw---- 1 promak promak 0 Mar 12 2007 err_bkx
+drwxr-s--- 2 promak promak 4096 Aug 12 2009 etc
+-rw-rw-r-- 1 promak promak 94 Feb 21 09:18 ftp594398.cfg
+-rw-r----- 1 promak promak 2855 Apr 22 2009 goenv_arch
+-rw-r----- 1 promak promak 2875 Aug 12 2009 goenv_nsdr
+-rw-r----- 1 promak promak 2821 Aug 12 2009 goenv_optksg
+-rw-r----- 1 promak promak 10691433 Mar 01 14:22 ike.elg
+-rw-rw---- 1 promak promak 32136 Mar 20 11:14 index.html
+drwxrws--- 65 promak promak 4096 Mar 01 12:38 jkk
+-rw-r----- 1 promak promak 55 Feb 22 2011 jkk.awk
+-rw-rw---- 1 matpil promak 64 Jul 04 19:19 jkk.log
+-rw-rw---- 1 promak promak 338 Mar 12 2007 jkkver.sh
+-rw-rw---- 1 matpil promak 12 Jun 13 12:37 jpdatatmp.txt
+-rw-rw---- 1 promak promak 132 Jun 25 2010 jpsir.log
+-rw-r----- 1 promak promak 3 Mar 12 2007 koniecstrony
+-rw-rw-rw- 1 promak promak 64 Jul 04 17:38 ksg_kart_drw.unl
+-rw-rw---- 1 promak promak 190 Aug 17 2009 ksg_kartpw.test.unl
+drwxr-s--- 2 promak promak 256 Aug 28 2009 libsh
+drwxr-xr-x 2 root system 256 Mar 06 2007 lost+found
+-rw-rw---- 1 matpil promak 69 Mar 27 19:57 matpil20120327175745.txt
+-rw-rw---- 1 matpil promak 81 May 14 19:57 matpil20120514175733.txt
+-rw------- 1 promak promak 10743 Aug 13 2009 mbox
+-rwxr-x--- 1 promak promak 68 Mar 12 2007 odproappl
+-rw-rw---- 1 promak promak 83 Nov 19 2010 papier_notow.sql
+-rw-rw-r-- 1 promak promak 1785 Jun 14 2011 plikwyj.txt
+-rw-r--r-- 1 promak promak 8477579 Jul 02 23:24 proappl.err
+-rwx------ 1 promak promak 1957 Aug 24 2009 proappl.sh
+-rwx------ 1 promak promak 674 Mar 12 2007 proappl2f80
+-rwx------ 1 promak promak 9272 Mar 28 2007 prokop.bkp
+-rwx------ 1 promak promak 1107611 Jul 04 22:57 prokop.log
+-rw-r--r-- 1 promak promak 20194873 Jul 04 23:23 prokop.promak
+-rwxr-x--- 1 promak promak 8769 May 09 18:17 prokop.sh
+-rwx------ 1 promak promak 8072 Jun 26 2010 prokop.sh.old
+-rw-r--r-- 1 promak promak 345415 Jun 30 22:25 prokop.wsunle
+-rwx------ 1 promak promak 6004 Mar 12 2007 prokop2
+-rwx------ 1 promak promak 6169 Mar 12 2007 prokopF50
+-rwx------ 1 promak promak 6156 Mar 12 2007 prokopF80
+-rw-rw---- 1 promak promak 0 Aug 12 2010 promak
+-rwx------ 1 promak promak 201476 Jul 04 23:06 promak.log
+-rw-rw---- 1 promak promak 4594135 Aug 12 2009 promak_pliki.txt
+-rw-r--r-- 1 promak promak 222319 Jul 05 09:05 promonusr.err
+-rwx------ 1 promak promak 334 Apr 22 2009 promonusr.sh
+-rw-r--r-- 1 promak promak 7058202 Jul 05 06:07 prostat.err
+-rwx------ 1 promak promak 525 Sep 19 2009 prostat.sh
+-rw-r--r-- 1 promak promak 536893 Jul 04 19:15 prowsunle.err
+-rwx------ 1 promak promak 868 Nov 27 2008 prowsunle.sh
+-rw-rw---- 1 barros promak 0 Jul 14 2010 salda_z_bazy
+-rw-rw---- 1 promak promak 1932 Jun 19 13:00 smit.log
+-rw-rw---- 1 promak promak 908 Jun 19 13:00 smit.script
+-rw-rw---- 1 promak promak 1174 Jun 19 13:00 smit.transaction
+-rw-rw-rw- 1 promak promak 613 Jun 20 2011 sqexplain.out
+-rwxr-xr-x 1 promak promak 45 Mar 12 2007 srozl.sh
+-rwxr-x--- 1 promak promak 1602 Aug 12 2009 taruj.sh
+-rw-rw---- 1 darkna promak 1270950 Jan 23 16:41 tax_dznk_nz.unl
+drwxrws--- 14 promak promak 4096 Aug 04 2009 temp
+drwxrwx--- 3 promak promak 4096 Mar 23 2011 tmp
+-rw-rw---- 1 promak promak 75 Jul 22 2010 tmp_drw_pwnul.unl
+-rw-rw-rw- 1 promak promak 104 Jul 04 17:38 tmp_konta4nik.unl
+-rw-rw-rw- 1 promak promak 196 Jun 11 09:29 tmpa_drw_portfel09:29:44.774
+-rw-rw-rw- 1 promak promak 196 Jun 11 09:29 tmpa_drw_portfel09:29:44.967
+-rw-rw-rw- 1 promak promak 0 Jun 11 09:29 tmpa_drw_portfel_pw09:29:44.774
+-rw-rw-rw- 1 promak promak 0 Jun 11 09:29 tmpa_drw_portfel_pw09:29:44.967
+-rw-rw-rw- 1 promak promak 3293 Jun 11 09:29 tmpa_drw_pw09:29:44.774
+-rw-rw-rw- 1 promak promak 3293 Jun 11 09:29 tmpa_drw_pw09:29:44.967
+-rwxr-x--- 1 promak promak 1562 Dec 04 2009 ws_go
+-rwxr-x--- 1 promak promak 406 Aug 14 2009 ws_off
+-rw-rw---- 1 promak promak 41803 Jun 30 22:13 wsunle.log
+-rw-r--r-- 1 promak promak 1601 Apr 04 2007 wsunload.err
+-rw-rw---- 1 promak promak 129 Mar 29 2011 zagraniczne.log
+-rw-r----- 1 promak promak 57 Mar 12 2007 zrestartuj_informixa
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/data/aix_list.output
^
|
@@ -0,0 +1,96 @@
+${plktmp}ddd
+*
+.cpan
+.profile
+.sh_history
+.ssh
+.vi_history
+A
+JP
+MDM
+Mail
+N
+O
+PB
+S
+TECH
+TMP_FILED
+ala.txt
+archiwum.log
+bin
+brydro20120425122315.txt
+core
+dupadupa.sql
+dupkop.sh
+duppppa
+err.log
+err_bkx
+etc
+ftp594398.cfg
+goenv_arch
+goenv_nsdr
+goenv_optksg
+ike.elg
+index.html
+jkk
+jkk.awk
+jkk.log
+jkkver.sh
+jpdatatmp.txt
+jpsir.log
+koniecstrony
+ksg_kart_drw.unl
+ksg_kartpw.test.unl
+libsh
+lost+found
+matpil20120327175745.txt
+matpil20120514175733.txt
+mbox
+odproappl
+papier_notow.sql
+plikwyj.txt
+proappl.err
+proappl.sh
+proappl2f80
+prokop.bkp
+prokop.log
+prokop.promak
+prokop.sh
+prokop.sh.old
+prokop.wsunle
+prokop2
+prokopF50
+prokopF80
+promak
+promak.log
+promak_pliki.txt
+promonusr.err
+promonusr.sh
+prostat.err
+prostat.sh
+prowsunle.err
+prowsunle.sh
+salda_z_bazy
+smit.log
+smit.script
+smit.transaction
+sqexplain.out
+srozl.sh
+taruj.sh
+tax_dznk_nz.unl
+temp
+tmp
+tmp_drw_pwnul.unl
+tmp_konta4nik.unl
+tmpa_drw_portfel09:29:44.774
+tmpa_drw_portfel09:29:44.967
+tmpa_drw_portfel_pw09:29:44.774
+tmpa_drw_portfel_pw09:29:44.967
+tmpa_drw_pw09:29:44.774
+tmpa_drw_pw09:29:44.967
+ws_go
+ws_off
+wsunle.log
+wsunload.err
+zagraniczne.log
+zrestartuj_informixa
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/data/ms_list.input
^
|
@@ -0,0 +1,11 @@
+10-15-13 10:08AM <DIR> analytics
+05-27-14 05:16AM <DIR> aspnet_client
+11-20-14 12:36PM 161645801 DiscIntercity.tsv
+11-20-14 12:47PM 2031110 DiscLocal.tsv
+03-22-15 01:15PM <DIR> INC0023508
+12-23-14 12:35PM 3403603000 Initial_KPI_20141223_62808477.CSV
+10-14-13 04:07PM <DIR> segment
+11-20-14 02:54AM 399282436 SSUnlimAll.tsv
+10-14-13 04:07PM <DIR> subscriber
+03-22-15 05:51PM <DIR> tmp
+11-20-14 11:45AM 773305597 UnlimOnnet.tsv
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/data/ms_list.output
^
|
@@ -0,0 +1,11 @@
+analytics
+aspnet_client
+DiscIntercity.tsv
+DiscLocal.tsv
+INC0023508
+Initial_KPI_20141223_62808477.CSV
+segment
+SSUnlimAll.tsv
+subscriber
+tmp
+UnlimOnnet.tsv
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/tests/src/vfs/ftpfs/ftpfs_parse_long_list.c
^
|
@@ -0,0 +1,167 @@
+/* src/vfs/ftpfs - tests for ftpfs_parse_long_list() function.
+
+ Copyright (C) 2021-2022
+ Free Software Foundation, Inc.
+
+ Written by:
+ Andrew Borodin <aborodin@vmail.ru>, 2021
+
+ This file is part of the Midnight Commander.
+
+ The Midnight Commander is free software: you can redistribute it
+ and/or modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ The Midnight Commander is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define TEST_SUITE_NAME "/src/vfs/ftpfs"
+
+#include "tests/mctest.h"
+
+#include <stdio.h>
+
+#include "direntry.c"
+#include "src/vfs/ftpfs/ftpfs_parse_ls.c"
+
+/* --------------------------------------------------------------------------------------------- */
+
+static struct vfs_s_subclass ftpfs_subclass;
+static struct vfs_class *me = VFS_CLASS (&ftpfs_subclass);
+
+static struct vfs_s_super *super;
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @Before */
+static void
+setup (void)
+{
+ vfs_init_subclass (&ftpfs_subclass, "ftpfs", VFSF_NOLINKS | VFSF_REMOTE | VFSF_USETMP, "ftp");
+
+ super = vfs_s_new_super (me);
+ super->name = g_strdup (PATH_SEP_STR);
+ super->root = vfs_s_new_inode (me, super, vfs_s_default_stat (me, S_IFDIR | 0755));
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @After */
+static void
+teardown (void)
+{
+ vfs_s_free_super (me, super);
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+static GSList *
+read_list (const char *fname)
+{
+ FILE *f;
+ char buf[BUF_MEDIUM];
+ GSList *ret = NULL;
+
+ f = fopen (fname, "r");
+ if (f == NULL)
+ return NULL;
+
+ while (fgets (buf, sizeof (buf), f) != NULL)
+ ret = g_slist_prepend (ret, g_strdup (buf));
+
+ fclose (f);
+
+ return ret;
+}
+
+/* --------------------------------------------------------------------------------------------- */
+
+/* @DataSource("test_ftpfs_parse_long_list_ds") */
+/* *INDENT-OFF* */
+static const struct test_ftpfs_parse_long_list_ds
+{
+ const char *name;
+} test_ftpfs_parse_long_list_ds[] =
+{
+ { /* 0. Ticket #2841 */
+ "aix"
+ },
+ { /* 1. Ticket #3174 */
+ "ms"
+ }
+};
+/* *INDENT-ON* */
+
+/* @Test(dataSource = "test_ftpfs_parse_long_list_ds") */
+/* *INDENT-OFF* */
+START_PARAMETRIZED_TEST (test_ftpfs_parse_long_list, test_ftpfs_parse_long_list_ds)
+/* *INDENT-ON* */
+{
+ /* given */
+ char *name;
+ GSList *input, *parsed, *output;
+ GSList *parsed_iter, *output_iter;
+ int err_count;
+
+ /* when */
+ name = g_strdup_printf ("%s/%s_list.input", TEST_DATA_DIR, data->name);
+ input = read_list (name);
+ g_free (name);
+ mctest_assert_not_null (input);
+
+ name = g_strdup_printf ("%s/%s_list.output", TEST_DATA_DIR, data->name);
+ output = read_list (name);
+ g_free (name);
+ mctest_assert_not_null (output);
+
+ parsed = ftpfs_parse_long_list (me, super->root, input, &err_count);
+
+ /* then */
+ for (parsed_iter = parsed, output_iter = output;
+ parsed_iter != NULL && output_iter != NULL;
+ parsed_iter = g_slist_next (parsed_iter), output_iter = g_slist_next (output_iter))
+ mctest_assert_str_eq (VFS_ENTRY (parsed_iter->data)->name, (char *) output_iter->data);
+
+ mctest_assert_null (parsed_iter);
+ mctest_assert_null (output_iter);
+
+ for (parsed_iter = parsed, output_iter = output; parsed_iter != NULL;
+ parsed_iter = g_slist_next (parsed_iter))
+ vfs_s_free_entry (me, VFS_ENTRY (parsed_iter->data));
+
+ g_slist_free (parsed);
+
+ g_slist_free_full (input, g_free);
+ g_slist_free_full (output, g_free);
+}
+/* *INDENT-OFF* */
+END_PARAMETRIZED_TEST
+/* *INDENT-ON* */
+
+/* --------------------------------------------------------------------------------------------- */
+
+int
+main (void)
+{
+ TCase *tc_core;
+
+ tc_core = tcase_create ("Core");
+
+ tcase_add_checked_fixture (tc_core, setup, teardown);
+
+ /* Add new tests here: *************** */
+ mctest_add_parameterized_test (tc_core, test_ftpfs_parse_long_list,
+ test_ftpfs_parse_long_list_ds);
+ /* *********************************** */
+
+ return mctest_run_all (tc_core);
+}
+
+/* --------------------------------------------------------------------------------------------- */
|
[-]
[+]
|
Added |
_service:tar_git:mc-4.8.29.tar.gz/mc/version.sh
^
|
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+# Midnight Commander - calculate current version
+#
+# Copyright (C) 2009, 2010, 2013
+# The Free Software Foundation, Inc.
+#
+# Written by:
+# Slava Zanko <slavazanko@gmail.com>, 2009, 2010, 2013
+# Stan. S. Krupoderov <pashelper@gmail.com>, 2009
+# Sergei Trofimovich <slyfox@inbox.ru>, 2009
+# Oswald Buddenhagen <ossi@kde.org>, 2009
+#
+# This file is part of the Midnight Commander.
+#
+# The Midnight Commander is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the License,
+# or (at your option) any later version.
+#
+# The Midnight Commander is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#*** include section (source functions, for example) *******************
+
+#*** file scope functions **********************************************
+
+mc_print_version(){
+
+ if [ ! -f "${VERSION_FILE}" \
+ -o "${PREV_MC_VERSION}" != "${CURR_MC_VERSION}" ]
+ then
+ cat >"${VERSION_FILE}" <<EOF
+#ifndef MC_CURRENT_VERSION
+/* This is an autogenerated file. Don't edit! */
+#define MC_CURRENT_VERSION "${CURR_MC_VERSION}"
+#endif
+EOF
+ fi
+ echo "${SHOR_MC_VERSION}"
+ exit
+}
+
+#*** main code *********************************************************
+
+if [ -z "$1" ]
+ then
+ echo "usage: $0 <toplevel-source-dir>"
+ exit 1
+fi
+
+src_top_dir="$1"
+
+VERSION_FILE="${src_top_dir}/mc-version.h"
+PREV_MC_VERSION="unknown"
+CURR_MC_VERSION="${PREV_MC_VERSION}"
+SHOR_MC_VERSION="${PREV_MC_VERSION}"
+
+if [ -r "${VERSION_FILE}" ]
+ then
+ PREV_MC_VERSION=`sed -n 's/^#define MC_CURRENT_VERSION "\(.*\)"$/\1/p' "${VERSION_FILE}"`
+ CURR_MC_VERSION="${PREV_MC_VERSION}"
+ SHOR_MC_VERSION="${PREV_MC_VERSION}"
+fi
+
+git_head=`git --git-dir "${src_top_dir}/.git" rev-parse --verify HEAD 2>/dev/null`
+[ -z "${git_head}" ] && mc_print_version
+
+# try to store sha1
+CURR_MC_VERSION="${git_head}"
+SHOR_MC_VERSION="${CURR_MC_VERSION}"
+
+new_version=`git --git-dir "${src_top_dir}/.git" describe --always 2>/dev/null`
+[ -z "${new_version}" ] && mc_print_version
+
+# store pretty tagged version
+CURR_MC_VERSION="${new_version}"
+SHOR_MC_VERSION="${CURR_MC_VERSION}"
+
+# stop full rebuild by using not-exact git version string in config.h, see #2252, #4266
+SHOR_MC_VERSION=`git --git-dir "${src_top_dir}/.git" describe --always --abbrev=0 2>/dev/null`-git
+
+mc_print_version
|