aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2021-07-07 22:11:55 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-07 22:11:55 +0000
commitb4cd36027ce499bb685faa09cbc07350aa708a70 (patch)
treefc7c7ded748b8ecb4c225470cf1c584b5891b71f
parentf494e4720633ae9019bc8a2fb30edd09b22351dd (diff)
parent292878fd3b6e2c6891b83de2579dde503c93fdaf (diff)
downloade2fsprogs-b4cd36027ce499bb685faa09cbc07350aa708a70.tar.gz
Merge changes from topic "e2fsprogs-1.46.2" am: 2ef8644c0c am: 63cf8c6437 am: 4c2f84d4d0 am: 292878fd3b
Original change: https://android-review.googlesource.com/c/platform/external/e2fsprogs/+/1738203 Change-Id: Ibd9bd221b53ca6203b67fe3a99cb636288af3e2f
-rw-r--r--.release-checklist13
-rw-r--r--ABOUT-NLS1682
-rw-r--r--Android.bp2
-rw-r--r--MCONFIG.in28
-rw-r--r--Makefile.in13
-rw-r--r--README2
-rw-r--r--README.version4
l---------RELEASE-NOTES2
-rw-r--r--acinclude.m44
-rw-r--r--aclocal.m43934
-rwxr-xr-x[-rw-r--r--]config/config.guess361
-rwxr-xr-xconfig/config.rpath2
-rwxr-xr-x[-rw-r--r--]config/config.sub2466
-rwxr-xr-xconfigure5637
-rw-r--r--configure.ac142
-rw-r--r--contrib/ext4-ioc.c98
-rw-r--r--contrib/fallocate.c4
-rwxr-xr-xcontrib/jbd2-resync.sh19
-rw-r--r--debian/changelog209
-rw-r--r--debian/compat2
-rw-r--r--debian/control32
-rw-r--r--debian/e2fslibs-dev.postinst26
-rw-r--r--debian/e2fslibs-dev.postrm32
-rw-r--r--debian/e2fslibs-dev.preinst27
-rw-r--r--debian/libext2fs2.symbols28
-rwxr-xr-xdebian/rules10
-rw-r--r--debian/tests/control6
-rwxr-xr-xdebian/tests/fuse2fs37
-rwxr-xr-xdebian/tests/smoke32
-rw-r--r--debugfs/Makefile.in19
-rw-r--r--debugfs/debugfs.c135
-rw-r--r--debugfs/debugfs.h6
-rw-r--r--debugfs/do_journal.c149
-rw-r--r--debugfs/dump.c6
-rw-r--r--debugfs/e2freefrag.c6
-rw-r--r--debugfs/extent_inode.c14
-rw-r--r--debugfs/filefrag.c12
-rw-r--r--debugfs/htree.c48
-rw-r--r--debugfs/icheck.c6
-rw-r--r--debugfs/journal.c143
-rw-r--r--debugfs/logdump.c286
-rw-r--r--debugfs/ls.c8
-rw-r--r--debugfs/lsdel.c6
-rw-r--r--debugfs/recovery.c385
-rw-r--r--debugfs/revoke.c213
-rw-r--r--debugfs/set_fields.c12
-rw-r--r--debugfs/unused.c2
-rw-r--r--debugfs/util.c58
-rw-r--r--debugfs/zap.c50
-rw-r--r--doc/Makefile.in1
-rw-r--r--doc/RelNotes/v1.41.13145
-rw-r--r--doc/RelNotes/v1.41.1431
-rw-r--r--doc/RelNotes/v1.45.5.txt88
-rw-r--r--doc/RelNotes/v1.45.6.txt62
-rw-r--r--doc/RelNotes/v1.45.7.txt96
-rw-r--r--doc/RelNotes/v1.46.0.txt108
-rw-r--r--doc/RelNotes/v1.46.1.txt41
-rw-r--r--doc/RelNotes/v1.46.2.txt64
-rw-r--r--doc/libext2fs.texinfo8
-rw-r--r--e2fsck/Android.bp1
-rw-r--r--e2fsck/Makefile.in170
-rw-r--r--e2fsck/badblocks.c3
-rw-r--r--e2fsck/dirinfo.c37
-rw-r--r--e2fsck/dx_dirinfo.c20
-rw-r--r--e2fsck/e2fsck.8.in4
-rw-r--r--e2fsck/e2fsck.c10
-rw-r--r--e2fsck/e2fsck.h93
-rw-r--r--e2fsck/ea_refcount.c41
-rw-r--r--e2fsck/emptydir.c14
-rw-r--r--e2fsck/encrypted_files.c458
-rw-r--r--e2fsck/extend.c9
-rw-r--r--e2fsck/extents.c200
-rw-r--r--e2fsck/iscan.c147
-rw-r--r--e2fsck/jfs_user.h73
-rw-r--r--e2fsck/journal.c782
-rw-r--r--e2fsck/logfile.c2
-rw-r--r--e2fsck/message.c12
-rw-r--r--e2fsck/pass1.c165
-rw-r--r--e2fsck/pass1b.c29
-rw-r--r--e2fsck/pass2.c224
-rw-r--r--e2fsck/pass4.c20
-rw-r--r--e2fsck/pass5.c2
-rw-r--r--e2fsck/problem.c63
-rw-r--r--e2fsck/problem.h28
-rw-r--r--e2fsck/recovery.c385
-rw-r--r--e2fsck/region.c33
-rw-r--r--e2fsck/rehash.c196
-rw-r--r--e2fsck/revoke.c213
-rw-r--r--e2fsck/scantest.c4
-rw-r--r--e2fsck/super.c6
-rw-r--r--e2fsck/unix.c76
-rw-r--r--e2fsck/util.c58
-rw-r--r--e2fsprogs.lsm10
-rw-r--r--e2fsprogs.spec2
-rw-r--r--ext2ed/Makefile.in1
-rw-r--r--intl/Makefile.in547
-rw-r--r--intl/VERSION1
-rw-r--r--intl/bindtextdom.c362
-rw-r--r--intl/config.charset608
-rw-r--r--intl/dcgettext.c56
-rw-r--r--intl/dcigettext.c1222
-rw-r--r--intl/dcngettext.c57
-rw-r--r--intl/dgettext.c58
-rw-r--r--intl/dngettext.c59
-rw-r--r--intl/eval-plural.h108
-rw-r--r--intl/explodename.c185
-rw-r--r--intl/finddomain.c192
-rw-r--r--intl/gettext.c63
-rw-r--r--intl/gettextP.h215
-rw-r--r--intl/gmo.h149
-rw-r--r--intl/hash-string.h48
-rw-r--r--intl/intl-compat.c131
-rw-r--r--intl/l10nflist.c422
-rw-r--r--intl/libgettext.h182
-rw-r--r--intl/libgnuintl.h.in383
-rw-r--r--intl/loadinfo.h145
-rw-r--r--intl/loadmsgcat.c1418
-rw-r--r--intl/localcharset.c397
-rw-r--r--intl/localcharset.h42
-rw-r--r--intl/locale.alias78
-rw-r--r--intl/localealias.c414
-rw-r--r--intl/localename.c1142
-rw-r--r--intl/log.c98
-rw-r--r--intl/ngettext.c65
-rw-r--r--intl/os2compat.c98
-rw-r--r--intl/os2compat.h46
-rw-r--r--intl/osdep.c24
-rw-r--r--intl/plural-exp.c154
-rw-r--r--intl/plural-exp.h118
-rw-r--r--intl/plural.c1490
-rw-r--r--intl/plural.y381
-rw-r--r--intl/printf-args.c119
-rw-r--r--intl/printf-args.h137
-rw-r--r--intl/printf-parse.c535
-rw-r--r--intl/printf-parse.h75
-rw-r--r--intl/printf.c371
-rw-r--r--intl/ref-add.sin31
-rw-r--r--intl/ref-del.sin26
-rw-r--r--intl/relocatable.c449
-rw-r--r--intl/relocatable.h77
-rw-r--r--intl/textdomain.c141
-rw-r--r--intl/vasnprintf.c884
-rw-r--r--intl/vasnprintf.h61
-rw-r--r--intl/vasnwprintf.h46
-rw-r--r--intl/wprintf-parse.h75
-rw-r--r--intl/xsize.h109
-rw-r--r--lib/blkid/Makefile.in1
-rw-r--r--lib/blkid/probe.c2
-rw-r--r--lib/config.h.in363
-rw-r--r--lib/e2p/Android.bp1
-rw-r--r--lib/e2p/Makefile.in23
-rw-r--r--lib/e2p/e2p.h5
-rw-r--r--lib/e2p/errcode.c46
-rw-r--r--lib/e2p/feature.c32
-rw-r--r--lib/e2p/fgetflags.c55
-rw-r--r--lib/e2p/fsetflags.c49
-rw-r--r--lib/e2p/ljs.c35
-rw-r--r--lib/e2p/ls.c97
-rw-r--r--lib/e2p/pf.c3
-rw-r--r--lib/et/Makefile.in1
-rw-r--r--lib/et/error_message.c13
-rw-r--r--lib/ext2fs/Makefile.in28
-rw-r--r--lib/ext2fs/bitmaps.c3
-rw-r--r--lib/ext2fs/blkmap64_ba.c2
-rw-r--r--lib/ext2fs/blkmap64_rb.c47
-rw-r--r--lib/ext2fs/blknum.c93
-rw-r--r--lib/ext2fs/closefs.c29
-rw-r--r--lib/ext2fs/compiler.h22
-rw-r--r--lib/ext2fs/csum.c79
-rw-r--r--lib/ext2fs/dirhash.c4
-rw-r--r--lib/ext2fs/expanddir.c5
-rw-r--r--lib/ext2fs/ext2_err.c6
-rw-r--r--lib/ext2fs/ext2_err.et.in6
-rw-r--r--lib/ext2fs/ext2_err.h2
-rw-r--r--lib/ext2fs/ext2_fs.h29
-rw-r--r--lib/ext2fs/ext2_io.h3
-rw-r--r--lib/ext2fs/ext2fs.h122
-rw-r--r--lib/ext2fs/ext2fsP.h5
-rw-r--r--lib/ext2fs/ext_attr.c75
-rw-r--r--lib/ext2fs/extent.c67
-rw-r--r--lib/ext2fs/fallocate.c28
-rw-r--r--lib/ext2fs/fast_commit.h203
-rw-r--r--lib/ext2fs/fiemap.h16
-rw-r--r--lib/ext2fs/gen_bitmap.c4
-rw-r--r--lib/ext2fs/gen_bitmap64.c61
-rw-r--r--lib/ext2fs/imager.c51
-rw-r--r--lib/ext2fs/initialize.c94
-rw-r--r--lib/ext2fs/inode.c11
-rw-r--r--lib/ext2fs/inode_io.c12
-rw-r--r--lib/ext2fs/io_manager.c6
-rw-r--r--lib/ext2fs/ismounted.c83
-rw-r--r--lib/ext2fs/jfs_compat.h52
-rw-r--r--lib/ext2fs/kernel-jbd.h286
-rw-r--r--lib/ext2fs/kernel-list.h4
-rw-r--r--lib/ext2fs/link.c549
-rw-r--r--lib/ext2fs/mkdir.c22
-rw-r--r--lib/ext2fs/mkjournal.c111
-rw-r--r--lib/ext2fs/mmp.c30
-rw-r--r--lib/ext2fs/nls_utf8.c62
-rw-r--r--lib/ext2fs/openfs.c19
-rw-r--r--lib/ext2fs/progress.c4
-rw-r--r--lib/ext2fs/punch.c4
-rw-r--r--lib/ext2fs/qcow2.c10
-rw-r--r--lib/ext2fs/qcow2.h4
-rw-r--r--lib/ext2fs/rbtree.h12
-rw-r--r--lib/ext2fs/read_bb_file.c6
-rw-r--r--lib/ext2fs/res_gdt.c4
-rw-r--r--lib/ext2fs/rw_bitmaps.c347
-rw-r--r--lib/ext2fs/sparse_io.c4
-rw-r--r--lib/ext2fs/swapfs.c16
-rw-r--r--lib/ext2fs/symlink.c22
-rw-r--r--lib/ext2fs/test_io.c6
-rw-r--r--lib/ext2fs/tst_bitmaps.c4
-rw-r--r--lib/ext2fs/tst_iscan.c6
-rw-r--r--lib/ext2fs/tst_libext2fs.c3
-rw-r--r--lib/ext2fs/tst_super_size.c5
-rw-r--r--lib/ext2fs/undo_io.c2
-rw-r--r--lib/ext2fs/unix_io.c289
-rw-r--r--lib/ext2fs/unlink.c6
-rw-r--r--lib/ss/Makefile.in1
-rw-r--r--lib/support/Makefile.in1
-rw-r--r--lib/support/dict.c22
-rw-r--r--lib/support/dict.h4
-rw-r--r--lib/support/mkquota.c7
-rw-r--r--lib/support/plausible.c12
-rw-r--r--lib/support/quotaio_v2.c3
-rw-r--r--lib/support/sort_r.h321
-rw-r--r--lib/uuid/Makefile.in1
-rw-r--r--misc/Makefile.in62
-rw-r--r--misc/badblocks.c21
-rw-r--r--misc/chattr.1.in125
-rw-r--r--misc/chattr.c5
-rw-r--r--misc/check_fuzzer.c61
-rw-r--r--misc/create_inode.c48
-rw-r--r--misc/default_profile.c3
-rw-r--r--misc/dumpe2fs.c52
-rw-r--r--misc/e2freefrag.c6
-rw-r--r--misc/e2fuzz.c21
-rw-r--r--misc/e2image.8.in7
-rw-r--r--misc/e2image.c38
-rw-r--r--misc/e2label.c2
-rw-r--r--misc/e2undo.c34
-rw-r--r--misc/e4crypt.8.in4
-rw-r--r--misc/e4crypt.c18
-rw-r--r--misc/e4defrag.c70
-rw-r--r--misc/ext4.5.in16
-rw-r--r--misc/filefrag.8.in12
-rw-r--r--misc/filefrag.c111
-rw-r--r--misc/findsuper.c9
-rw-r--r--misc/fuse2fs.1.in3
-rw-r--r--misc/fuse2fs.c71
-rw-r--r--misc/mk_hugefiles.c8
-rw-r--r--misc/mke2fs.8.in42
-rw-r--r--misc/mke2fs.c211
-rw-r--r--misc/mke2fs.conf.in3
-rw-r--r--misc/profile-to-c.awk1
-rw-r--r--misc/tune2fs.8.in65
-rw-r--r--misc/tune2fs.c356
-rw-r--r--misc/util.c66
-rw-r--r--misc/util.h4
-rw-r--r--po/Makefile.in.in219
-rw-r--r--po/Makevars30
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/Rules-quot15
-rw-r--r--po/cs.gmobin183772 -> 183759 bytes
-rw-r--r--po/cs.po1923
-rw-r--r--po/de.gmobin178516 -> 176656 bytes
-rw-r--r--po/e2fsprogs.pot2076
-rw-r--r--po/es.gmobin189231 -> 189231 bytes
-rw-r--r--po/es.po1930
-rw-r--r--po/fr.gmobin182759 -> 184966 bytes
-rw-r--r--po/fr.po1943
-rw-r--r--po/ms.gmobin18347 -> 24591 bytes
-rw-r--r--po/ms.po566
-rw-r--r--po/nl.gmobin160685 -> 176854 bytes
-rw-r--r--po/nl.po138
-rw-r--r--po/pl.gmobin180438 -> 180438 bytes
-rw-r--r--po/pl.po1917
-rw-r--r--po/pt.gmobin179062 -> 179065 bytes
-rw-r--r--po/pt.po1961
-rw-r--r--po/sr.gmobin225599 -> 238693 bytes
-rw-r--r--po/sr.po3128
-rw-r--r--po/sv.gmobin175700 -> 175700 bytes
-rw-r--r--po/sv.po1919
-rw-r--r--po/uk.gmobin243338 -> 243338 bytes
-rw-r--r--po/uk.po1925
-rw-r--r--po/vi.gmobin185097 -> 189306 bytes
-rw-r--r--po/zh_CN.gmobin153006 -> 156666 bytes
-rw-r--r--po/zh_CN.po2650
-rw-r--r--resize/Makefile.in3
-rw-r--r--resize/extent.c11
-rw-r--r--resize/main.c33
-rw-r--r--resize/online.c3
-rw-r--r--resize/resize2fs.c75
-rw-r--r--resize/test_extent.c7
-rw-r--r--scrub/Makefile.in1
-rw-r--r--scrub/e2scrub.in4
-rw-r--r--scrub/e2scrub_all.in37
-rw-r--r--tests/Makefile.in1
-rw-r--r--tests/d_corrupt_journal_nr_users/expect6
-rw-r--r--tests/f_bad_encryption/expect.1125
-rw-r--r--tests/f_bad_encryption/expect.27
-rw-r--r--tests/f_bad_encryption/image.gzbin0 -> 2265 bytes
-rwxr-xr-xtests/f_bad_encryption/mkimage.sh169
-rw-r--r--tests/f_bad_encryption/name1
-rw-r--r--tests/f_bad_fname/expect.122
-rw-r--r--tests/f_bad_fname/expect.27
-rw-r--r--tests/f_bad_fname/image.gzbin0 -> 802 bytes
-rw-r--r--tests/f_bad_fname/name1
-rw-r--r--tests/f_badjour_indblks/imagebin8388608 -> 0 bytes
-rw-r--r--tests/f_bb_in_bb/expect.12
-rw-r--r--tests/f_dir_bad_csum/expect.18
-rw-r--r--tests/f_jnl_errno/expect.06
-rw-r--r--tests/f_large_dir/expect10
-rw-r--r--tests/f_large_dir/script27
-rw-r--r--tests/f_large_dir_csum/expect32
-rw-r--r--tests/f_large_dir_csum/is_slow_test0
-rw-r--r--tests/f_large_dir_csum/name1
-rw-r--r--tests/f_large_dir_csum/script84
-rw-r--r--tests/f_many_subdirs/expect.147
-rw-r--r--tests/f_many_subdirs/expect.27
-rw-r--r--tests/f_many_subdirs/image.gzbin0 -> 1816025 bytes
-rw-r--r--tests/f_many_subdirs/name1
-rw-r--r--tests/f_mmp/script11
-rw-r--r--tests/f_mmp_garbage/script11
-rw-r--r--tests/f_opt_extent/expect6
-rw-r--r--tests/f_rebuild_csum_rootdir/expect.13
-rw-r--r--tests/f_recnect_bad/expect.15
-rw-r--r--tests/f_resize_inode_meta_bg/expect.19
-rw-r--r--tests/f_short_encrypted_dirent/expect.12
-rw-r--r--tests/f_short_encrypted_dirent/expect.22
-rw-r--r--tests/f_short_encrypted_dirent/image.gzbin925 -> 1008 bytes
-rw-r--r--tests/f_uninit_bad_free_inodes/expect.125
-rw-r--r--tests/f_uninit_bad_free_inodes/expect.27
-rw-r--r--tests/f_uninit_bad_free_inodes/image.gzbin0 -> 114234 bytes
-rw-r--r--tests/f_uninit_bad_free_inodes/name1
-rw-r--r--tests/f_uninit_blk_used_not_set/expect.134
-rw-r--r--tests/f_uninit_blk_used_not_set/expect.27
-rw-r--r--tests/f_uninit_blk_used_not_set/image.gzbin0 -> 56712 bytes
-rw-r--r--tests/f_uninit_blk_used_not_set/name1
-rw-r--r--tests/f_uninit_checksum_bad/expect.129
-rw-r--r--tests/f_uninit_checksum_bad/expect.27
-rw-r--r--tests/f_uninit_checksum_bad/image.gzbin0 -> 42374 bytes
-rw-r--r--tests/f_uninit_checksum_bad/name1
-rw-r--r--tests/f_uninit_disable/expect.110
-rw-r--r--tests/f_uninit_disable/expect.27
-rw-r--r--tests/f_uninit_disable/image.gzbin0 -> 10792 bytes
-rw-r--r--tests/f_uninit_disable/name1
-rw-r--r--tests/f_uninit_enable/expect.110
-rw-r--r--tests/f_uninit_enable/expect.27
-rw-r--r--tests/f_uninit_enable/image.gzbin0 -> 10787 bytes
-rw-r--r--tests/f_uninit_enable/name1
-rw-r--r--tests/f_uninit_inode_past_unused/expect.127
-rw-r--r--tests/f_uninit_inode_past_unused/expect.27
-rw-r--r--tests/f_uninit_inode_past_unused/image.gzbin0 -> 10929 bytes
-rw-r--r--tests/f_uninit_inode_past_unused/name1
-rw-r--r--tests/f_uninit_restart_fsck/expect.136
-rw-r--r--tests/f_uninit_restart_fsck/expect.27
-rw-r--r--tests/f_uninit_restart_fsck/image.gzbin0 -> 91233 bytes
-rw-r--r--tests/f_uninit_restart_fsck/name1
-rw-r--r--tests/f_uninit_set_inode_not_set/expect.125
-rw-r--r--tests/f_uninit_set_inode_not_set/expect.27
-rw-r--r--tests/f_uninit_set_inode_not_set/image.gzbin0 -> 115285 bytes
-rw-r--r--tests/f_uninit_set_inode_not_set/name1
-rw-r--r--tests/filter.sed1
-rw-r--r--tests/i_bitmaps/expect8
-rw-r--r--tests/j_corrupt_journal_block/expect2
-rw-r--r--tests/j_ext_dumpe2fs/expect6
-rw-r--r--tests/j_recover_fast_commit/commands4
-rw-r--r--tests/j_recover_fast_commit/expect22
-rw-r--r--tests/j_recover_fast_commit/image.gzbin0 -> 3595 bytes
-rwxr-xr-xtests/j_recover_fast_commit/script26
-rw-r--r--tests/m_64bit_flexbg/expect.11
-rw-r--r--tests/m_bigjournal/expect.17
-rw-r--r--tests/m_dasd_bs/expect.11
-rw-r--r--tests/m_desc_size_128/expect.11
-rw-r--r--tests/m_extent_journal/expect.17
-rw-r--r--tests/m_image_mmp/script11
-rw-r--r--tests/m_large_file/expect.11
-rw-r--r--tests/m_meta_bg/expect.11
-rw-r--r--tests/m_minrootdir/expect1
-rw-r--r--tests/m_mmp/expect.11
-rw-r--r--tests/m_mmp/script10
-rw-r--r--tests/m_mmp_bad_csum/script10
-rw-r--r--tests/m_mmp_bad_magic/script10
-rw-r--r--tests/m_no_opt/expect.11
-rw-r--r--tests/m_quota/expect.11
-rw-r--r--tests/m_raid_opt/expect.11
-rw-r--r--tests/m_resize_inode_meta_bg/expect.17
-rw-r--r--tests/m_root_owner/expect.11
-rw-r--r--tests/m_rootdir/expect7
-rw-r--r--tests/m_rootdir_acl/expect119
-rw-r--r--tests/m_rootdir_acl/output.sed5
-rw-r--r--tests/m_rootdir_acl/script98
-rw-r--r--tests/m_std/expect.11
-rw-r--r--tests/m_uninit/expect.11
-rw-r--r--tests/progs/Makefile.in1
-rw-r--r--tests/r_32to64bit/expect14
-rw-r--r--tests/r_32to64bit_meta/expect7
-rw-r--r--tests/r_32to64bit_move_itable/expect11
-rw-r--r--tests/r_64to32bit/expect9
-rw-r--r--tests/r_64to32bit_meta/expect7
-rw-r--r--tests/r_inline_xattr/expect4
-rw-r--r--tests/r_inline_xattr/script8
-rw-r--r--tests/r_move_itable_nostride/expect6
-rw-r--r--tests/r_move_itable_realloc/expect6
-rw-r--r--tests/t_disable_mcsum/expect6
-rw-r--r--tests/t_disable_mcsum_noinitbg/expect8
-rw-r--r--tests/t_disable_mcsum_yesinitbg/expect6
-rw-r--r--tests/t_enable_mcsum/expect12
-rw-r--r--tests/t_enable_mcsum_ext3/expect12
-rw-r--r--tests/t_enable_mcsum_initbg/expect12
-rw-r--r--tests/t_iexpand_full/expect6
-rw-r--r--tests/t_iexpand_mcsum/expect6
-rw-r--r--tests/t_mmp_1on/script11
-rw-r--r--tests/t_mmp_2off/script15
-rw-r--r--tests/t_mmp_fail/is_slow_test0
-rw-r--r--tests/t_mmp_fail/name1
-rw-r--r--tests/t_mmp_fail/script44
-rw-r--r--tests/t_write_subdirectory/name1
-rw-r--r--tests/t_write_subdirectory/script29
-rw-r--r--tests/u_bounce_io/expect.1106
-rw-r--r--tests/u_bounce_io/script9
-rw-r--r--util/Makefile.in1
-rw-r--r--util/gcc-wall-cleanup23
-rw-r--r--util/static-analysis-cleanup20
-rw-r--r--version.h4
427 files changed, 28200 insertions, 36651 deletions
diff --git a/.release-checklist b/.release-checklist
index c8a6fc2f..276dd8ab 100644
--- a/.release-checklist
+++ b/.release-checklist
@@ -2,19 +2,18 @@
2) "make check"!!!
-3) Use "git log" to assemble release notes.
+3) Use "git log" to assemble release notes and update RELEASE-NOTES symlink.
-4) Run "(cd po; make e2fsprogs.pot-update)" to update the translation template.
-
-5) Update files which contain version information
+4) Update files which contain version information
version.h
README
- RELEASE-NOTES
e2fsprogs.lsm
e2fsprogs.spec
doc/libext2fs.texinfo (three places)
-6) Make source distribution
+5) Run "(cd po; make e2fsprogs.pot-update)" to update the translation template.
+
+6) Make source tarfile
-7) Adjust sizes in e2fsprogs-VER.lsm; rebuild source files; rebuild RPM files
+7) Adjust sizes in e2fsprogs-VER.lsm; rebuild source files; regenerate source tarfile
diff --git a/ABOUT-NLS b/ABOUT-NLS
index d528f9c8..3cc82865 100644
--- a/ABOUT-NLS
+++ b/ABOUT-NLS
@@ -1,402 +1,1348 @@
-Notes on the Free Translation Project
-*************************************
+1 Notes on the Free Translation Project
+***************************************
- Free software is going international! The Free Translation Project
-is a way to get maintainers of free software, translators, and users all
-together, so that will gradually become able to speak many languages.
-A few packages already provide translations for their messages.
+Free software is going international! The Free Translation Project is a
+way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages. A few packages already provide translations for their
+messages.
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
+ If you found this 'ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU 'gettext' internally,
itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
+need to install GNU 'gettext' prior to configuring, installing or using
this package with messages translated.
Installers will find here some useful hints. These notes also
explain how users should proceed for getting the programs to use the
available translations. They tell how people wanting to contribute and
-work at translations should contact the appropriate team.
+work on translations can contact the appropriate team.
- When reporting bugs in the `intl/' directory or bugs which may be
-related to internationalization, you should tell about the version of
-`gettext' which is used. The information can be found in the
-`intl/VERSION' file, in internationalized packages.
+1.1 INSTALL Matters
+===================
-Quick configuration advice
-==========================
-
- If you want to exploit the full power of internationalization, you
-should configure it using
-
- ./configure --with-included-gettext
-
-to force usage of internationalizing routines provided within this
-package, despite the existence of internationalizing capabilities in the
-operating system where this package is being installed. So far, only
-the `gettext' implementation in the GNU C library version 2 provides as
-many features (such as locale alias, message inheritance, automatic
-charset conversion or plural form handling) as the implementation here.
-It is also not possible to offer this additional functionality on top
-of a `catgets' implementation. Future versions of GNU `gettext' will
-very likely convey even more functionality. So it might be a good idea
-to change to GNU `gettext' as soon as possible.
-
- So you need _not_ provide this option if you are using GNU libc 2 or
-you have installed a recent copy of the GNU gettext package with the
-included `libintl'.
-
-INSTALL Matters
-===============
-
- Some packages are "localizable" when properly installed; the
-programs they contain can be made to speak your own native language.
-Most such packages use GNU `gettext'. Other packages have their own
-ways to internationalization, predating GNU `gettext'.
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language. Most such
+packages use GNU 'gettext'. Other packages have their own ways to
+internationalization, predating GNU 'gettext'.
By default, this package will be installed to allow translation of
messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. If not, the GNU `gettext' own
-library will be used. This library is wholly contained within this
-package, usually in the `intl/' subdirectory, so prior installation of
-the GNU `gettext' package is _not_ required. Installers may use
-special options at configuration time for changing the default
-behaviour. The commands:
-
- ./configure --with-included-gettext
- ./configure --disable-nls
-
-will respectively bypass any pre-existing `gettext' to use the
-internationalizing routines provided within this package, or else,
-_totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl.a' file and
-will decide to use this. This might be not what is desirable. You
-should use the more recent version of the GNU `gettext' library. I.e.
-if the file `intl/VERSION' shows that the library which comes with this
-package is more recent, you should use
+provides the GNU 'gettext' functions. Installers may use special
+options at configuration time for changing the default behaviour. The
+command:
- ./configure --with-included-gettext
+ ./configure --disable-nls
-to prevent auto-detection.
+will _totally_ disable translation of messages.
- The configuration process will not test for the `catgets' function
-and therefore it will not be used. The reason is that even an
-emulation of `gettext' on top of `catgets' could not provide all the
-extensions of the GNU `gettext' library.
+ When you already have GNU 'gettext' installed on your system and run
+configure without an option for your new package, 'configure' will
+probably detect the previously built and installed 'libintl' library and
+will decide to use it. If not, you may have to to use the
+'--with-libintl-prefix' option to tell 'configure' where to look for it.
- Internationalized packages have usually many `po/LL.po' files, where
+ Internationalized packages usually have many 'po/LL.po' files, where
LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
+translations have been forbidden at 'configure' time by using the
+'--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable 'LINGUAS'
may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
+'LINGUAS' should then contain a space separated list of two-letter
codes, stating which languages are allowed.
-Using This Package
-==================
+1.2 Using This Package
+======================
- As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
-and `CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
+As a user, if your language has been installed for this package, you
+only have to set the 'LANG' environment variable to the appropriate
+'LL_CC' combination. If you happen to have the 'LC_ALL' or some other
+'LC_xxx' environment variables set, you should unset them before setting
+'LANG', otherwise the setting of 'LANG' will not have the desired
+effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is
+an ISO 3166 two-letter country code. For example, let's suppose that
+you speak German and live in Germany. At the shell prompt, merely
+execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in
+'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your
+'.login' or '.profile' file, once and for all.
You might think that the country code specification is redundant.
But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
+example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The
country code serves to distinguish the dialects.
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your country by running the command
-`locale -a | grep '^LL''.
+ The locale naming convention of 'LL_CC', with 'LL' denoting the
+language and 'CC' denoting the country, is the one use on systems based
+on GNU libc. On other systems, some variations of this scheme are used,
+such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales
+supported by your system for your language by running the command
+'locale -a | grep '^LL''.
Not all programs have translations for all languages. By default, an
English message is shown in place of a nonexistent translation. If you
understand other languages, you can set up a priority list of languages.
This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
+'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG'
+for the purpose of message handling, but you still need to have 'LANG'
set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+system libraries. For example, some Swedish users who would rather read
+translations in German than English for when Swedish is not available,
+set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'.
+
+ Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from 'no' to 'nb' recently (in 2003). During the
+transition period, while some message catalogs for this language are
+installed under 'nb' and some older ones under 'no', it's recommended
+for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and
+older translations are used.
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
+ In the 'LANGUAGE' environment variable, but not in the 'LANG'
+environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to
+denote the language's main dialect. For example, 'de' is equivalent to
+'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese
+as spoken in Portugal) in this context.
-Translating Teams
-=================
+1.3 Translating Teams
+=====================
- For the Free Translation Project to be a success, we need interested
+For the Free Translation Project to be a success, we need interested
people who like their own language and write it well, and who are also
able to synergize with other translators speaking the same language.
Each translation team has its own mailing list. The up-to-date list of
teams can be found at the Free Translation Project's homepage,
-`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
-area.
+'http://translationproject.org/', in the "Teams" area.
If you'd like to volunteer to _work_ at translating messages, you
should become a member of the translating team for your own language.
The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
+'-request' appended. For example, speakers of Swedish can send a
+message to 'sv-request@li.org', having this message body:
subscribe
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `translation@iro.umontreal.ca' to reach the
+ Keep in mind that team members are expected to participate _actively_
+in translations, or at solving translational difficulties, rather than
+merely lurking around. If your team does not exist yet and you want to
+start one, or if you are unsure about what to do or how to get started,
+please write to 'coordinator@translationproject.org' to reach the
coordinator for all translator teams.
The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skill are praised more than
-programming skill, here.
+the terminology in use. Proven linguistic skills are praised more than
+programming skills, here.
-Available Packages
-==================
+1.4 Available Packages
+======================
- Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of August
-2002. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
+Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of Jun 2014.
+The matrix shows, in regard of each package, for which languages PO
+files have been submitted to translation coordination, with a
translation percentage of at least 50%.
- Ready PO files be bg ca cs da de el en eo es et fi fr
- +----------------------------------------+
- a2ps | [] [] [] [] |
- ap-utils | |
- bash | [] [] [] [] |
- bfd | [] [] |
- binutils | [] [] |
- bison | [] [] [] [] |
- clisp | |
- clisp | [] [] [] [] |
- clisplow | |
- cpio | [] [] [] [] |
- darkstat | () |
- diffutils | [] [] [] [] [] [] |
- enscript | [] [] |
- error | [] [] [] |
- fetchmail | [] () [] [] [] () |
- fileutils | [] [] [] [] [] |
- findutils | [] [] [] [] [] [] |
- flex | [] [] [] [] [] |
- gas | [] [] |
- gawk | [] [] [] |
- gcal | [] [] |
- gcc | [] [] |
- gettext | [] [] [] [] [] |
- gnupg | [] [] [] [] [] [] [] |
- gprof | [] [] |
- gpsdrive | () () () () () |
- grep | [] [] [] [] [] [] [] [] |
- gretl | [] |
- gthumb | () () () |
- hello | [] [] [] [] [] [] [] [] [] |
- id-utils | [] [] [] |
- indent | [] [] [] [] [] |
- jpilot | () [] [] [] |
- jwhois | [] [] |
- kbd | [] [] [] |
- ld | [] [] |
- libc | [] [] [] [] [] [] [] [] |
- libiconv | [] [] [] [] |
- lifelines | () () |
- lilypond | [] [] |
- lingoteach | [] [] |
- lingoteach_lessons| () () |
- lynx | [] [] [] [] [] |
- m4 | [] [] [] [] [] |
- make | [] [] [] [] |
- man-db | [] () () [] () () |
- mysecretdiary | [] [] [] |
- nano | [] () [] [] [] [] |
- nano_1_0 | [] () [] [] [] [] |
- opcodes | [] [] [] |
- parted | [] [] [] [] [] |
- ptx | [] [] [] [] [] [] [] |
- python | |
- recode | [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] [] [] [] |
- sh-utils | [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] |
- sketch | () [] () |
- soundtracker | [] [] [] |
- sp | [] |
- tar | [] [] [] [] [] [] |
- texinfo | [] [] [] [] [] |
- textutils | [] [] [] [] [] |
- util-linux | [] [] [] [] [] [] |
- vorbis-tools | [] |
- wastesedge | |
- wdiff | [] [] [] [] [] [] |
- wget | [] [] [] [] [] [] [] [] [] [] |
- +----------------------------------------+
- be bg ca cs da de el en eo es et fi fr
- 0 2 19 10 30 44 9 1 12 44 17 6 53
-
- gl he hr hu id it ja ko lv nb nl nn
- +-------------------------------------+
- a2ps | () () [] |
- ap-utils | |
- bash | [] |
- bfd | [] |
- binutils | [] |
- bison | [] [] [] [] |
- clisp | |
- clisp | [] |
- clisplow | |
- cpio | [] [] [] [] |
- darkstat | |
- diffutils | [] [] [] [] [] |
- enscript | [] [] |
- error | [] |
- fetchmail | [] |
- fileutils | [] [] [] |
- findutils | [] [] [] [] [] [] [] [] |
- flex | [] |
- gas | |
- gawk | [] |
- gcal | |
- gcc | [] |
- gettext | [] [] |
- gnupg | [] [] [] [] |
- gprof | [] |
- gpsdrive | [] () () |
- grep | [] [] [] [] [] [] [] |
- gretl | |
- gthumb | () () |
- hello | [] [] [] [] [] [] [] [] [] [] [] [] |
- id-utils | [] [] |
- indent | [] [] [] [] |
- jpilot | () () |
- jwhois | [] [] |
- kbd | |
- ld | |
- libc | [] [] [] [] |
- libiconv | [] [] [] |
- lifelines | |
- lilypond | [] |
- lingoteach | [] |
- lingoteach_lessons| |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] |
- make | [] [] [] [] [] [] |
- man-db | () () |
- mysecretdiary | [] |
- nano | [] [] [] [] |
- nano_1_0 | [] [] [] [] [] |
- opcodes | [] [] |
- parted | [] [] [] |
- ptx | [] [] [] [] [] |
- python | |
- recode | [] [] [] |
- sed | [] [] [] [] [] [] [] [] |
- sh-utils | [] [] [] |
- sharutils | [] [] [] |
- sketch | () |
- soundtracker | [] [] |
- sp | |
- tar | [] [] [] [] [] [] |
- texinfo | [] [] [] |
- textutils | [] [] [] [] |
- util-linux | () [] |
- vorbis-tools | [] |
- wastesedge | |
- wdiff | [] [] [] |
- wget | [] [] [] [] [] [] |
- +-------------------------------------+
- gl he hr hu id it ja ko lv nb nl nn
- 23 9 12 19 16 13 26 9 1 7 19 3
-
- no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
- +----------------------------------------------+
- a2ps | () () () [] [] [] [] [] | 10
- ap-utils | () | 0
- bash | [] | 6
- bfd | [] [] | 5
- binutils | [] [] | 5
- bison | [] [] [] [] | 12
- clisp | | 0
- clisp | | 5
- clisplow | | 0
- cpio | [] [] [] [] | 12
- darkstat | [] [] () () | 2
- diffutils | [] [] [] [] [] [] | 17
- enscript | [] [] [] [] | 8
- error | [] [] [] | 7
- fetchmail | () () [] | 6
- fileutils | [] [] [] [] [] [] | 14
- findutils | [] [] [] [] [] [] [] | 21
- flex | [] [] [] | 9
- gas | [] | 3
- gawk | [] [] | 6
- gcal | [] [] | 4
- gcc | [] | 4
- gettext | [] [] [] [] [] [] | 13
- gnupg | [] [] [] | 14
- gprof | [] [] | 5
- gpsdrive | [] [] | 3
- grep | [] [] [] [] [] | 20
- gretl | | 1
- gthumb | () () [] | 1
- hello | [] [] [] [] [] [] [] | 28
- id-utils | [] [] [] [] | 9
- indent | [] [] [] [] [] | 14
- jpilot | () () [] [] | 5
- jwhois | [] () () [] [] | 7
- kbd | [] [] | 5
- ld | [] [] | 4
- libc | [] [] [] [] [] [] | 18
- libiconv | [] [] [] [] [] | 12
- lifelines | [] | 1
- lilypond | [] | 4
- lingoteach | [] [] | 5
- lingoteach_lessons| () | 0
- lynx | [] [] [] [] | 13
- m4 | [] [] [] [] | 13
- make | [] [] [] [] [] | 15
- man-db | | 3
- mysecretdiary | [] [] [] | 7
- nano | [] [] [] [] | 13
- nano_1_0 | [] [] [] [] | 14
- opcodes | [] [] [] | 8
- parted | [] [] [] [] | 12
- ptx | [] [] [] [] [] [] [] | 19
- python | | 0
- recode | [] [] [] [] [] [] | 15
- sed | [] [] [] [] [] [] | 24
- sh-utils | [] [] | 9
- sharutils | [] [] [] [] | 14
- sketch | [] () [] | 4
- soundtracker | [] | 6
- sp | | 1
- tar | [] [] [] [] [] [] [] | 19
- texinfo | [] [] | 10
- textutils | [] [] [] [] [] | 14
- util-linux | [] [] [] | 10
- vorbis-tools | [] | 3
- wastesedge | | 0
- wdiff | [] [] [] [] [] | 14
- wget | [] [] [] [] [] [] [] [] | 24
- +----------------------------------------------+
- 37 teams no pl pt pt_BR ru sk sl sv tr uk zh_CN zh_TW
- 68 domains 4 15 2 28 28 12 10 49 43 4 1 9 609
+ Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs
+ +---------------------------------------------------+
+ a2ps | [] [] [] |
+ aegis | |
+ anubis | |
+ aspell | [] [] [] |
+ bash | [] [] [] |
+ bfd | |
+ binutils | [] |
+ bison | |
+ bison-runtime | [] |
+ buzztrax | [] |
+ ccd2cue | |
+ ccide | |
+ cflow | |
+ clisp | |
+ coreutils | [] [] |
+ cpio | |
+ cppi | |
+ cpplib | [] |
+ cryptsetup | [] |
+ datamash | |
+ denemo | [] [] |
+ dfarc | [] |
+ dialog | [] [] [] |
+ dico | |
+ diffutils | [] |
+ dink | [] |
+ direvent | |
+ doodle | [] |
+ dos2unix | |
+ dos2unix-man | |
+ e2fsprogs | [] [] |
+ enscript | [] |
+ exif | [] |
+ fetchmail | [] [] |
+ findutils | [] |
+ flex | [] |
+ freedink | [] [] |
+ fusionforge | |
+ gas | |
+ gawk | [] |
+ gcal | [] |
+ gcc | |
+ gdbm | |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] [] |
+ gjay | |
+ glunarclock | [] [] [] |
+ gnubiff | [] |
+ gnubik | [] |
+ gnucash | () () [] |
+ gnuchess | |
+ gnulib | [] |
+ gnunet | |
+ gnunet-gtk | |
+ gold | |
+ gphoto2 | [] |
+ gprof | [] |
+ gramadoir | |
+ grep | [] [] [] |
+ grub | [] |
+ gsasl | |
+ gss | |
+ gst-plugins-bad | [] [] |
+ gst-plugins-base | [] [] [] |
+ gst-plugins-good | [] [] [] |
+ gst-plugins-ugly | [] [] [] |
+ gstreamer | [] [] [] [] |
+ gtick | [] |
+ gtkam | [] [] |
+ gtkspell | [] [] [] [] [] |
+ guix | |
+ guix-packages | |
+ gutenprint | [] |
+ hello | [] |
+ help2man | |
+ help2man-texi | |
+ hylafax | |
+ idutils | |
+ iso_15924 | [] |
+ iso_3166 | [] [] [] [] [] [] [] [] [] [] |
+ iso_3166_2 | |
+ iso_4217 | [] |
+ iso_639 | [] [] [] [] [] [] [] [] [] |
+ iso_639_3 | [] [] |
+ iso_639_5 | |
+ jwhois | |
+ kbd | [] |
+ klavaro | [] [] [] [] [] |
+ ld | [] |
+ leafpad | [] [] [] [] |
+ libc | [] [] [] |
+ libexif | () |
+ libextractor | |
+ libgnutls | [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] |
+ libgsasl | |
+ libiconv | [] [] |
+ libidn | [] |
+ liferea | [] [] [] [] |
+ lilypond | [] [] |
+ lordsawar | [] |
+ lprng | |
+ lynx | [] [] |
+ m4 | [] |
+ mailfromd | |
+ mailutils | |
+ make | [] |
+ man-db | [] [] |
+ man-db-manpages | |
+ midi-instruments | [] [] [] |
+ minicom | [] |
+ mkisofs | [] |
+ myserver | [] |
+ nano | [] [] [] |
+ opcodes | |
+ parted | [] |
+ pies | |
+ pnmixer | |
+ popt | [] |
+ procps-ng | |
+ procps-ng-man | |
+ psmisc | [] |
+ pspp | [] |
+ pushover | [] |
+ pwdutils | |
+ pyspread | |
+ radius | [] |
+ recode | [] [] [] |
+ recutils | |
+ rpm | |
+ rush | |
+ sarg | |
+ sed | [] [] [] [] |
+ sharutils | [] |
+ shishi | |
+ skribilo | |
+ solfege | [] [] |
+ solfege-manual | |
+ spotmachine | |
+ sudo | [] [] |
+ sudoers | [] [] |
+ sysstat | [] |
+ tar | [] [] [] |
+ texinfo | [] [] |
+ texinfo_document | [] [] |
+ tigervnc | [] |
+ tin | |
+ tin-man | |
+ tracgoogleappsa... | |
+ trader | |
+ util-linux | [] |
+ ve | |
+ vice | |
+ vmm | |
+ vorbis-tools | [] |
+ wastesedge | |
+ wcd | |
+ wcd-man | |
+ wdiff | [] [] |
+ wget | [] |
+ wyslij-po | |
+ xboard | |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] |
+ +---------------------------------------------------+
+ af am an ar as ast az be bg bn bn_IN bs ca crh cs
+ 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74
+
+ da de el en en_GB en_ZA eo es et eu fa fi fr
+ +--------------------------------------------------+
+ a2ps | [] [] [] [] [] [] [] [] [] |
+ aegis | [] [] [] [] |
+ anubis | [] [] [] [] [] |
+ aspell | [] [] [] [] [] [] [] |
+ bash | [] [] [] |
+ bfd | [] [] [] [] |
+ binutils | [] [] [] |
+ bison | [] [] [] [] [] [] [] [] |
+ bison-runtime | [] [] [] [] [] [] [] [] |
+ buzztrax | [] [] [] [] |
+ ccd2cue | [] [] [] [] |
+ ccide | [] [] [] [] [] [] |
+ cflow | [] [] [] [] [] |
+ clisp | [] [] [] [] [] |
+ coreutils | [] [] [] [] [] |
+ cpio | [] [] [] [] [] |
+ cppi | [] [] [] [] [] |
+ cpplib | [] [] [] [] [] [] |
+ cryptsetup | [] [] [] [] [] |
+ datamash | [] [] [] [] |
+ denemo | [] |
+ dfarc | [] [] [] [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] [] |
+ dico | [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ dink | [] [] [] [] [] [] |
+ direvent | [] [] [] [] |
+ doodle | [] [] [] [] |
+ dos2unix | [] [] [] [] [] |
+ dos2unix-man | [] [] [] |
+ e2fsprogs | [] [] [] [] [] |
+ enscript | [] [] [] [] [] [] |
+ exif | [] [] [] [] [] [] |
+ fetchmail | [] () [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] [] [] |
+ flex | [] [] [] [] [] [] |
+ freedink | [] [] [] [] [] [] [] [] |
+ fusionforge | [] [] [] |
+ gas | [] [] [] |
+ gawk | [] [] [] [] [] |
+ gcal | [] [] [] [] |
+ gcc | [] |
+ gdbm | [] [] [] [] [] |
+ gettext-examples | [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] |
+ gjay | [] [] [] [] |
+ glunarclock | [] [] [] [] [] |
+ gnubiff | () [] [] () |
+ gnubik | [] [] [] [] [] |
+ gnucash | [] () () () () () () |
+ gnuchess | [] [] [] [] |
+ gnulib | [] [] [] [] [] [] [] |
+ gnunet | [] |
+ gnunet-gtk | [] |
+ gold | [] [] [] |
+ gphoto2 | [] () [] [] |
+ gprof | [] [] [] [] [] [] |
+ gramadoir | [] [] [] [] [] |
+ grep | [] [] [] [] [] [] [] |
+ grub | [] [] [] [] [] |
+ gsasl | [] [] [] [] [] |
+ gss | [] [] [] [] [] |
+ gst-plugins-bad | [] [] [] |
+ gst-plugins-base | [] [] [] [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] [] |
+ gst-plugins-ugly | [] [] [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] [] [] |
+ gtick | [] () [] [] [] |
+ gtkam | [] () [] [] [] [] |
+ gtkspell | [] [] [] [] [] [] [] [] |
+ guix | [] [] |
+ guix-packages | |
+ gutenprint | [] [] [] [] |
+ hello | [] [] [] [] [] [] [] [] |
+ help2man | [] [] [] [] [] [] [] |
+ help2man-texi | [] [] [] |
+ hylafax | [] [] |
+ idutils | [] [] [] [] [] |
+ iso_15924 | [] () [] [] () [] () |
+ iso_3166 | [] () [] [] [] [] () [] () |
+ iso_3166_2 | [] () () () |
+ iso_4217 | [] () [] [] [] () [] () |
+ iso_639 | [] () [] [] () [] () |
+ iso_639_3 | () () () |
+ iso_639_5 | () () () |
+ jwhois | [] [] [] [] [] |
+ kbd | [] [] [] [] [] [] |
+ klavaro | [] [] [] [] [] [] [] |
+ ld | [] [] [] [] |
+ leafpad | [] [] [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] [] () [] [] |
+ libextractor | [] |
+ libgnutls | [] [] [] [] |
+ libgphoto2 | [] () [] |
+ libgphoto2_port | [] () [] [] [] [] |
+ libgsasl | [] [] [] [] [] |
+ libiconv | [] [] [] [] [] [] [] |
+ libidn | [] [] [] [] [] |
+ liferea | [] () [] [] [] [] [] |
+ lilypond | [] [] [] [] [] [] |
+ lordsawar | [] [] |
+ lprng | |
+ lynx | [] [] [] [] [] [] |
+ m4 | [] [] [] [] [] [] |
+ mailfromd | [] |
+ mailutils | [] [] [] [] |
+ make | [] [] [] [] [] |
+ man-db | [] [] [] [] |
+ man-db-manpages | [] [] |
+ midi-instruments | [] [] [] [] [] [] [] [] [] |
+ minicom | [] [] [] [] [] |
+ mkisofs | [] [] [] |
+ myserver | [] [] [] [] |
+ nano | [] [] [] [] [] [] [] |
+ opcodes | [] [] [] [] [] |
+ parted | [] [] [] |
+ pies | [] |
+ pnmixer | [] [] |
+ popt | [] [] [] [] [] [] |
+ procps-ng | [] [] |
+ procps-ng-man | [] [] |
+ psmisc | [] [] [] [] [] [] [] |
+ pspp | [] [] [] |
+ pushover | () [] [] [] |
+ pwdutils | [] [] [] |
+ pyspread | [] [] [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] |
+ recutils | [] [] [] [] |
+ rpm | [] [] [] [] [] |
+ rush | [] [] [] |
+ sarg | [] [] |
+ sed | [] [] [] [] [] [] [] [] |
+ sharutils | [] [] [] [] |
+ shishi | [] [] [] |
+ skribilo | [] [] [] |
+ solfege | [] [] [] [] [] [] [] [] |
+ solfege-manual | [] [] [] [] [] |
+ spotmachine | [] [] [] [] [] |
+ sudo | [] [] [] [] [] [] |
+ sudoers | [] [] [] [] [] [] |
+ sysstat | [] [] [] [] [] [] |
+ tar | [] [] [] [] [] [] [] |
+ texinfo | [] [] [] [] [] |
+ texinfo_document | [] [] [] [] |
+ tigervnc | [] [] [] [] [] [] |
+ tin | [] [] [] [] |
+ tin-man | [] |
+ tracgoogleappsa... | [] [] [] [] [] |
+ trader | [] [] [] [] [] [] |
+ util-linux | [] [] [] [] |
+ ve | [] [] [] [] [] |
+ vice | () () () |
+ vmm | [] [] |
+ vorbis-tools | [] [] [] [] |
+ wastesedge | [] |
+ wcd | [] [] [] [] |
+ wcd-man | [] |
+ wdiff | [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] |
+ wyslij-po | [] [] [] [] |
+ xboard | [] [] [] [] |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] [] [] [] |
+ +--------------------------------------------------+
+ da de el en en_GB en_ZA eo es et eu fa fi fr
+ 119 131 32 1 6 0 94 95 22 13 4 102 139
+
+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+ +-------------------------------------------------+
+ a2ps | [] [] [] [] |
+ aegis | [] |
+ anubis | [] [] [] [] |
+ aspell | [] [] [] [] [] |
+ bash | [] [] [] [] |
+ bfd | [] [] |
+ binutils | [] [] [] |
+ bison | [] |
+ bison-runtime | [] [] [] [] [] [] [] [] |
+ buzztrax | |
+ ccd2cue | [] |
+ ccide | [] [] |
+ cflow | [] [] [] |
+ clisp | |
+ coreutils | [] [] |
+ cpio | [] [] [] [] [] [] |
+ cppi | [] [] [] [] [] |
+ cpplib | [] [] |
+ cryptsetup | [] |
+ datamash | |
+ denemo | [] |
+ dfarc | [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] [] [] |
+ dico | |
+ diffutils | [] [] [] [] |
+ dink | [] |
+ direvent | [] |
+ doodle | [] [] |
+ dos2unix | [] [] |
+ dos2unix-man | |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] |
+ exif | [] [] [] [] [] [] |
+ fetchmail | [] [] [] |
+ findutils | [] [] [] [] [] [] [] |
+ flex | [] |
+ freedink | [] [] [] [] |
+ fusionforge | |
+ gas | [] |
+ gawk | [] () [] |
+ gcal | |
+ gcc | |
+ gdbm | |
+ gettext-examples | [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] |
+ gjay | [] |
+ glunarclock | [] [] [] [] [] [] |
+ gnubiff | [] [] () |
+ gnubik | [] [] [] |
+ gnucash | () () () () () |
+ gnuchess | |
+ gnulib | [] [] [] [] [] |
+ gnunet | |
+ gnunet-gtk | |
+ gold | [] [] |
+ gphoto2 | [] [] [] [] |
+ gprof | [] [] [] [] |
+ gramadoir | [] [] [] |
+ grep | [] [] [] [] [] [] [] |
+ grub | [] [] [] |
+ gsasl | [] [] [] [] [] |
+ gss | [] [] [] [] [] |
+ gst-plugins-bad | [] [] [] |
+ gst-plugins-base | [] [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] |
+ gst-plugins-ugly | [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] |
+ gtick | [] [] [] [] [] |
+ gtkam | [] [] [] [] [] |
+ gtkspell | [] [] [] [] [] [] [] [] [] [] |
+ guix | |
+ guix-packages | |
+ gutenprint | [] [] [] |
+ hello | [] [] [] [] [] |
+ help2man | [] [] [] |
+ help2man-texi | |
+ hylafax | [] |
+ idutils | [] [] |
+ iso_15924 | [] [] [] [] [] [] |
+ iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ iso_3166_2 | [] [] |
+ iso_4217 | [] [] [] [] [] [] |
+ iso_639 | [] [] [] [] [] [] [] [] [] |
+ iso_639_3 | [] [] |
+ iso_639_5 | |
+ jwhois | [] [] [] [] |
+ kbd | [] [] [] |
+ klavaro | [] [] [] [] [] |
+ ld | [] [] [] [] |
+ leafpad | [] [] [] [] [] [] [] () |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | |
+ libgnutls | [] |
+ libgphoto2 | [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | [] [] [] [] [] [] [] |
+ libidn | [] [] [] [] |
+ liferea | [] [] [] [] [] |
+ lilypond | [] |
+ lordsawar | |
+ lprng | [] |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] [] |
+ mailfromd | |
+ mailutils | |
+ make | [] [] [] [] |
+ man-db | [] [] |
+ man-db-manpages | [] [] |
+ midi-instruments | [] [] [] [] [] [] [] [] [] |
+ minicom | [] [] [] |
+ mkisofs | [] [] |
+ myserver | [] |
+ nano | [] [] [] [] [] [] |
+ opcodes | [] [] [] |
+ parted | [] [] [] [] [] |
+ pies | |
+ pnmixer | [] [] |
+ popt | [] [] [] [] [] [] [] [] [] [] |
+ procps-ng | |
+ procps-ng-man | |
+ psmisc | [] [] [] [] |
+ pspp | [] [] |
+ pushover | [] |
+ pwdutils | [] |
+ pyspread | |
+ radius | [] |
+ recode | [] [] [] [] [] [] [] |
+ recutils | |
+ rpm | [] |
+ rush | [] |
+ sarg | |
+ sed | [] [] [] [] [] [] [] |
+ sharutils | |
+ shishi | |
+ skribilo | [] |
+ solfege | [] [] |
+ solfege-manual | |
+ spotmachine | |
+ sudo | [] [] [] [] |
+ sudoers | [] [] [] |
+ sysstat | [] [] [] [] |
+ tar | [] [] [] [] [] [] |
+ texinfo | [] [] [] |
+ texinfo_document | [] [] [] |
+ tigervnc | |
+ tin | |
+ tin-man | |
+ tracgoogleappsa... | [] [] [] [] |
+ trader | [] [] |
+ util-linux | [] |
+ ve | [] |
+ vice | () () |
+ vmm | |
+ vorbis-tools | [] [] |
+ wastesedge | [] |
+ wcd | |
+ wcd-man | |
+ wdiff | [] [] [] |
+ wget | [] [] [] [] |
+ wyslij-po | [] [] [] |
+ xboard | |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] [] [] |
+ +-------------------------------------------------+
+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk
+ 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3
+
+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl
+ +--------------------------------------------------+
+ a2ps | [] [] |
+ aegis | [] |
+ anubis | [] [] [] |
+ aspell | [] [] |
+ bash | [] [] |
+ bfd | |
+ binutils | |
+ bison | [] |
+ bison-runtime | [] [] [] [] [] [] |
+ buzztrax | |
+ ccd2cue | |
+ ccide | [] [] |
+ cflow | [] |
+ clisp | [] |
+ coreutils | [] [] |
+ cpio | [] |
+ cppi | |
+ cpplib | [] |
+ cryptsetup | [] |
+ datamash | [] [] |
+ denemo | |
+ dfarc | [] [] |
+ dialog | [] [] [] [] [] [] |
+ dico | |
+ diffutils | [] [] [] |
+ dink | [] |
+ direvent | [] |
+ doodle | [] |
+ dos2unix | [] [] |
+ dos2unix-man | [] |
+ e2fsprogs | [] |
+ enscript | [] |
+ exif | [] [] [] |
+ fetchmail | [] |
+ findutils | [] [] |
+ flex | [] |
+ freedink | [] [] |
+ fusionforge | |
+ gas | |
+ gawk | [] |
+ gcal | |
+ gcc | |
+ gdbm | |
+ gettext-examples | [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] |
+ gjay | |
+ glunarclock | [] [] |
+ gnubiff | [] |
+ gnubik | [] [] |
+ gnucash | () () () () () () () [] |
+ gnuchess | [] [] |
+ gnulib | [] |
+ gnunet | |
+ gnunet-gtk | |
+ gold | |
+ gphoto2 | [] |
+ gprof | [] [] |
+ gramadoir | [] |
+ grep | [] [] |
+ grub | [] [] [] |
+ gsasl | [] |
+ gss | |
+ gst-plugins-bad | [] [] [] |
+ gst-plugins-base | [] [] [] |
+ gst-plugins-good | [] [] [] [] |
+ gst-plugins-ugly | [] [] [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] |
+ gtkam | [] [] |
+ gtkspell | [] [] [] [] [] [] [] |
+ guix | |
+ guix-packages | |
+ gutenprint | [] |
+ hello | [] [] [] |
+ help2man | [] |
+ help2man-texi | |
+ hylafax | [] |
+ idutils | [] |
+ iso_15924 | () [] [] |
+ iso_3166 | [] [] [] () [] [] [] [] [] [] |
+ iso_3166_2 | () [] |
+ iso_4217 | () [] [] [] |
+ iso_639 | [] [] () [] [] [] [] |
+ iso_639_3 | [] () [] |
+ iso_639_5 | () |
+ jwhois | [] [] |
+ kbd | [] |
+ klavaro | [] [] |
+ ld | |
+ leafpad | [] [] [] [] [] |
+ libc | [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgnutls | [] [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] |
+ libgsasl | [] |
+ libiconv | [] [] |
+ libidn | [] |
+ liferea | [] [] [] |
+ lilypond | [] |
+ lordsawar | |
+ lprng | |
+ lynx | [] |
+ m4 | [] |
+ mailfromd | |
+ mailutils | |
+ make | [] [] |
+ man-db | [] |
+ man-db-manpages | [] |
+ midi-instruments | [] [] [] [] [] [] [] |
+ minicom | [] |
+ mkisofs | [] |
+ myserver | |
+ nano | [] [] [] |
+ opcodes | [] |
+ parted | [] [] |
+ pies | |
+ pnmixer | [] |
+ popt | [] [] [] [] [] |
+ procps-ng | |
+ procps-ng-man | |
+ psmisc | [] |
+ pspp | [] [] |
+ pushover | |
+ pwdutils | [] |
+ pyspread | |
+ radius | [] |
+ recode | [] [] |
+ recutils | [] |
+ rpm | [] |
+ rush | [] |
+ sarg | |
+ sed | [] [] |
+ sharutils | [] |
+ shishi | |
+ skribilo | |
+ solfege | [] [] |
+ solfege-manual | [] |
+ spotmachine | [] |
+ sudo | [] [] [] |
+ sudoers | [] [] [] |
+ sysstat | [] [] |
+ tar | [] [] [] |
+ texinfo | [] |
+ texinfo_document | [] |
+ tigervnc | [] |
+ tin | |
+ tin-man | |
+ tracgoogleappsa... | [] [] [] |
+ trader | [] |
+ util-linux | [] |
+ ve | [] |
+ vice | [] |
+ vmm | [] |
+ vorbis-tools | [] |
+ wastesedge | [] |
+ wcd | [] |
+ wcd-man | [] |
+ wdiff | [] |
+ wget | [] [] |
+ wyslij-po | [] |
+ xboard | [] |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] |
+ +--------------------------------------------------+
+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl
+ 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125
+
+ nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr
+ +------------------------------------------------+
+ a2ps | [] [] [] [] [] [] [] |
+ aegis | [] [] |
+ anubis | [] [] [] |
+ aspell | [] [] [] [] [] [] [] |
+ bash | [] [] [] [] [] [] |
+ bfd | [] [] |
+ binutils | [] [] |
+ bison | [] [] [] |
+ bison-runtime | [] [] [] [] [] [] [] [] |
+ buzztrax | [] |
+ ccd2cue | [] [] |
+ ccide | [] [] [] |
+ cflow | [] [] [] |
+ clisp | [] |
+ coreutils | [] [] [] [] |
+ cpio | [] [] [] |
+ cppi | [] [] [] |
+ cpplib | [] [] [] |
+ cryptsetup | [] [] [] |
+ datamash | [] [] |
+ denemo | |
+ dfarc | [] [] [] |
+ dialog | [] [] [] [] [] [] [] |
+ dico | [] |
+ diffutils | [] [] [] |
+ dink | |
+ direvent | [] [] [] |
+ doodle | [] [] |
+ dos2unix | [] [] [] [] |
+ dos2unix-man | [] [] |
+ e2fsprogs | [] |
+ enscript | [] [] [] [] [] [] |
+ exif | [] [] [] [] [] [] |
+ fetchmail | [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ freedink | [] [] [] [] [] |
+ fusionforge | |
+ gas | |
+ gawk | [] |
+ gcal | |
+ gcc | |
+ gdbm | [] [] [] |
+ gettext-examples | [] [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] [] [] |
+ gjay | [] |
+ glunarclock | [] [] [] [] [] [] |
+ gnubiff | [] |
+ gnubik | [] [] [] [] |
+ gnucash | () () () () () [] |
+ gnuchess | [] [] |
+ gnulib | [] [] [] [] [] |
+ gnunet | |
+ gnunet-gtk | |
+ gold | |
+ gphoto2 | [] [] [] [] [] |
+ gprof | [] [] [] [] |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] |
+ grub | [] [] [] [] [] |
+ gsasl | [] [] [] |
+ gss | [] [] [] [] |
+ gst-plugins-bad | [] [] [] [] [] |
+ gst-plugins-base | [] [] [] [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] [] |
+ gst-plugins-ugly | [] [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] [] [] |
+ gtick | [] [] [] [] [] |
+ gtkam | [] [] [] [] [] [] |
+ gtkspell | [] [] [] [] [] [] [] [] [] |
+ guix | |
+ guix-packages | |
+ gutenprint | [] [] |
+ hello | [] [] [] [] [] [] |
+ help2man | [] [] [] [] |
+ help2man-texi | [] |
+ hylafax | |
+ idutils | [] [] [] |
+ iso_15924 | [] () [] [] [] [] |
+ iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] |
+ iso_3166_2 | [] () [] |
+ iso_4217 | [] [] () [] [] [] [] [] |
+ iso_639 | [] [] [] () [] [] [] [] [] [] |
+ iso_639_3 | [] () |
+ iso_639_5 | () [] |
+ jwhois | [] [] [] [] |
+ kbd | [] [] |
+ klavaro | [] [] [] [] [] |
+ ld | |
+ leafpad | [] [] [] [] [] [] [] [] |
+ libc | [] [] [] |
+ libexif | [] () [] |
+ libextractor | [] |
+ libgnutls | [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] [] [] [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | [] [] [] [] [] |
+ libidn | [] [] [] |
+ liferea | [] [] [] [] () [] [] |
+ lilypond | |
+ lordsawar | |
+ lprng | [] |
+ lynx | [] [] |
+ m4 | [] [] [] [] [] |
+ mailfromd | [] |
+ mailutils | [] |
+ make | [] [] [] |
+ man-db | [] [] [] |
+ man-db-manpages | [] [] [] |
+ midi-instruments | [] [] [] [] [] [] [] [] |
+ minicom | [] [] [] [] |
+ mkisofs | [] [] [] |
+ myserver | [] [] |
+ nano | [] [] [] [] [] [] |
+ opcodes | |
+ parted | [] [] [] [] [] [] |
+ pies | [] |
+ pnmixer | [] |
+ popt | [] [] [] [] [] [] |
+ procps-ng | [] |
+ procps-ng-man | [] |
+ psmisc | [] [] [] [] |
+ pspp | [] [] |
+ pushover | |
+ pwdutils | [] |
+ pyspread | [] [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] [] |
+ recutils | [] [] |
+ rpm | [] |
+ rush | [] [] [] |
+ sarg | [] [] |
+ sed | [] [] [] [] [] [] [] [] |
+ sharutils | [] [] [] |
+ shishi | [] [] |
+ skribilo | [] |
+ solfege | [] [] [] |
+ solfege-manual | [] [] |
+ spotmachine | [] [] |
+ sudo | [] [] [] [] [] [] |
+ sudoers | [] [] [] [] |
+ sysstat | [] [] [] [] [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] |
+ texinfo_document | [] [] |
+ tigervnc | [] [] [] |
+ tin | [] |
+ tin-man | |
+ tracgoogleappsa... | [] [] [] [] |
+ trader | [] [] |
+ util-linux | [] [] |
+ ve | [] [] [] |
+ vice | |
+ vmm | |
+ vorbis-tools | [] [] [] |
+ wastesedge | |
+ wcd | |
+ wcd-man | |
+ wdiff | [] [] [] [] [] |
+ wget | [] [] [] [] [] |
+ wyslij-po | [] [] [] [] |
+ xboard | [] [] [] |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] |
+ +------------------------------------------------+
+ nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr
+ 7 3 6 114 1 12 88 32 82 3 40 45 7 101
+
+ sv sw ta te tg th tr uk ur vi wa wo zh_CN
+ +----------------------------------------------+
+ a2ps | [] [] [] [] [] |
+ aegis | [] |
+ anubis | [] [] [] [] |
+ aspell | [] [] [] [] [] |
+ bash | [] [] [] [] |
+ bfd | [] [] [] |
+ binutils | [] [] [] |
+ bison | [] [] [] [] |
+ bison-runtime | [] [] [] [] [] [] |
+ buzztrax | [] [] [] |
+ ccd2cue | [] [] [] |
+ ccide | [] [] [] [] |
+ cflow | [] [] [] [] |
+ clisp | |
+ coreutils | [] [] [] |
+ cpio | [] [] [] [] [] |
+ cppi | [] [] [] [] |
+ cpplib | [] [] [] [] [] |
+ cryptsetup | [] [] [] |
+ datamash | [] [] [] |
+ denemo | [] |
+ dfarc | [] [] |
+ dialog | [] [] [] [] [] [] |
+ dico | [] |
+ diffutils | [] [] [] [] [] |
+ dink | [] |
+ direvent | [] [] |
+ doodle | [] [] |
+ dos2unix | [] [] [] [] |
+ dos2unix-man | [] [] [] |
+ e2fsprogs | [] [] [] [] |
+ enscript | [] [] [] [] |
+ exif | [] [] [] [] [] |
+ fetchmail | [] [] [] [] |
+ findutils | [] [] [] [] [] |
+ flex | [] [] [] [] |
+ freedink | [] [] [] |
+ fusionforge | |
+ gas | [] |
+ gawk | [] [] [] |
+ gcal | [] [] [] |
+ gcc | [] |
+ gdbm | [] [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] |
+ gjay | [] [] [] |
+ glunarclock | [] [] [] [] |
+ gnubiff | [] [] |
+ gnubik | [] [] [] [] |
+ gnucash | () () () () [] |
+ gnuchess | [] [] [] |
+ gnulib | [] [] [] [] |
+ gnunet | |
+ gnunet-gtk | |
+ gold | [] [] |
+ gphoto2 | [] [] [] [] |
+ gprof | [] [] [] [] |
+ gramadoir | [] [] [] |
+ grep | [] [] [] [] [] |
+ grub | [] [] [] [] |
+ gsasl | [] [] [] [] |
+ gss | [] [] [] |
+ gst-plugins-bad | [] [] [] [] [] |
+ gst-plugins-base | [] [] [] [] [] |
+ gst-plugins-good | [] [] [] [] [] |
+ gst-plugins-ugly | [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] |
+ gtick | [] [] [] |
+ gtkam | [] [] [] [] |
+ gtkspell | [] [] [] [] [] [] [] |
+ guix | |
+ guix-packages | |
+ gutenprint | [] [] [] [] |
+ hello | [] [] [] [] [] [] |
+ help2man | [] [] [] |
+ help2man-texi | [] |
+ hylafax | [] |
+ idutils | [] [] [] |
+ iso_15924 | [] () [] [] () [] |
+ iso_3166 | [] [] () [] [] () [] [] |
+ iso_3166_2 | () [] [] () [] |
+ iso_4217 | [] () [] [] () [] |
+ iso_639 | [] [] [] () [] [] () [] [] |
+ iso_639_3 | [] () [] [] () |
+ iso_639_5 | () [] () |
+ jwhois | [] [] [] [] |
+ kbd | [] [] [] [] |
+ klavaro | [] [] [] [] [] [] |
+ ld | [] [] [] [] [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] [] () |
+ libextractor | [] [] |
+ libgnutls | [] [] [] [] |
+ libgphoto2 | [] [] [] |
+ libgphoto2_port | [] [] [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | [] [] [] [] [] |
+ libidn | () [] [] [] |
+ liferea | [] [] [] [] [] |
+ lilypond | [] |
+ lordsawar | |
+ lprng | [] |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] |
+ mailfromd | [] [] |
+ mailutils | [] |
+ make | [] [] [] [] |
+ man-db | [] [] [] |
+ man-db-manpages | [] [] |
+ midi-instruments | [] [] [] [] [] [] |
+ minicom | [] [] |
+ mkisofs | [] [] [] |
+ myserver | [] |
+ nano | [] [] [] [] |
+ opcodes | [] [] [] |
+ parted | [] [] [] [] [] |
+ pies | [] [] |
+ pnmixer | [] [] [] |
+ popt | [] [] [] [] [] [] [] |
+ procps-ng | [] [] |
+ procps-ng-man | [] |
+ psmisc | [] [] [] [] |
+ pspp | [] [] [] |
+ pushover | [] |
+ pwdutils | [] [] |
+ pyspread | [] |
+ radius | [] [] |
+ recode | [] [] [] [] |
+ recutils | [] [] [] |
+ rpm | [] [] [] [] |
+ rush | [] [] |
+ sarg | |
+ sed | [] [] [] [] [] |
+ sharutils | [] [] [] [] |
+ shishi | [] [] |
+ skribilo | [] [] |
+ solfege | [] [] [] [] |
+ solfege-manual | [] |
+ spotmachine | [] [] [] |
+ sudo | [] [] [] [] [] |
+ sudoers | [] [] [] [] |
+ sysstat | [] [] [] [] [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] |
+ texinfo_document | [] |
+ tigervnc | [] [] [] |
+ tin | [] |
+ tin-man | |
+ tracgoogleappsa... | [] [] [] [] [] |
+ trader | [] |
+ util-linux | [] [] [] [] |
+ ve | [] [] [] [] |
+ vice | () () |
+ vmm | |
+ vorbis-tools | [] [] |
+ wastesedge | |
+ wcd | [] [] [] |
+ wcd-man | [] |
+ wdiff | [] [] [] [] |
+ wget | [] [] [] |
+ wyslij-po | [] [] |
+ xboard | [] [] |
+ xdg-user-dirs | [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] |
+ +----------------------------------------------+
+ sv sw ta te tg th tr uk ur vi wa wo zh_CN
+ 106 1 4 3 0 13 51 115 1 125 7 1 100
+
+ zh_HK zh_TW
+ +-------------+
+ a2ps | | 30
+ aegis | | 9
+ anubis | | 19
+ aspell | | 29
+ bash | [] | 23
+ bfd | | 11
+ binutils | | 12
+ bison | [] | 18
+ bison-runtime | [] | 38
+ buzztrax | | 9
+ ccd2cue | | 10
+ ccide | | 17
+ cflow | | 16
+ clisp | | 10
+ coreutils | | 18
+ cpio | | 20
+ cppi | | 17
+ cpplib | [] | 19
+ cryptsetup | | 14
+ datamash | | 11
+ denemo | | 5
+ dfarc | | 17
+ dialog | [] | 42
+ dico | | 6
+ diffutils | | 22
+ dink | | 10
+ direvent | | 11
+ doodle | | 12
+ dos2unix | [] | 18
+ dos2unix-man | | 9
+ e2fsprogs | | 15
+ enscript | | 21
+ exif | | 27
+ fetchmail | | 19
+ findutils | | 29
+ flex | [] | 19
+ freedink | | 24
+ fusionforge | | 3
+ gas | | 5
+ gawk | | 13
+ gcal | | 8
+ gcc | | 2
+ gdbm | | 10
+ gettext-examples | [] [] | 40
+ gettext-runtime | [] [] | 35
+ gettext-tools | [] | 24
+ gjay | | 9
+ glunarclock | [] | 27
+ gnubiff | | 9
+ gnubik | | 19
+ gnucash | () | 6
+ gnuchess | | 11
+ gnulib | | 23
+ gnunet | | 1
+ gnunet-gtk | | 1
+ gold | | 7
+ gphoto2 | [] | 19
+ gprof | | 21
+ gramadoir | | 14
+ grep | [] | 31
+ grub | | 21
+ gsasl | [] | 19
+ gss | | 17
+ gst-plugins-bad | | 21
+ gst-plugins-base | | 27
+ gst-plugins-good | | 32
+ gst-plugins-ugly | | 34
+ gstreamer | [] | 32
+ gtick | | 19
+ gtkam | | 24
+ gtkspell | [] [] | 48
+ guix | | 2
+ guix-packages | | 0
+ gutenprint | | 15
+ hello | [] | 30
+ help2man | | 18
+ help2man-texi | | 5
+ hylafax | | 5
+ idutils | | 14
+ iso_15924 | [] | 23
+ iso_3166 | [] [] | 58
+ iso_3166_2 | | 9
+ iso_4217 | [] [] | 28
+ iso_639 | [] [] | 46
+ iso_639_3 | | 10
+ iso_639_5 | | 2
+ jwhois | [] | 20
+ kbd | | 17
+ klavaro | | 30
+ ld | [] | 15
+ leafpad | [] | 39
+ libc | [] | 24
+ libexif | | 10
+ libextractor | | 5
+ libgnutls | | 13
+ libgphoto2 | | 10
+ libgphoto2_port | [] | 19
+ libgsasl | | 18
+ libiconv | [] | 29
+ libidn | | 17
+ liferea | | 29
+ lilypond | | 11
+ lordsawar | | 3
+ lprng | | 3
+ lynx | | 19
+ m4 | [] | 22
+ mailfromd | | 4
+ mailutils | | 6
+ make | | 19
+ man-db | | 15
+ man-db-manpages | | 10
+ midi-instruments | [] | 43
+ minicom | [] | 17
+ mkisofs | | 13
+ myserver | | 9
+ nano | [] | 30
+ opcodes | | 12
+ parted | [] | 23
+ pies | | 4
+ pnmixer | | 9
+ popt | [] | 36
+ procps-ng | | 5
+ procps-ng-man | | 4
+ psmisc | [] | 22
+ pspp | | 13
+ pushover | | 6
+ pwdutils | | 8
+ pyspread | | 6
+ radius | | 9
+ recode | | 31
+ recutils | | 10
+ rpm | [] | 13
+ rush | | 10
+ sarg | | 4
+ sed | [] | 35
+ sharutils | | 13
+ shishi | | 7
+ skribilo | | 7
+ solfege | | 21
+ solfege-manual | | 9
+ spotmachine | | 11
+ sudo | | 26
+ sudoers | | 22
+ sysstat | | 23
+ tar | [] | 30
+ texinfo | | 17
+ texinfo_document | | 13
+ tigervnc | | 14
+ tin | [] | 7
+ tin-man | | 1
+ tracgoogleappsa... | [] | 22
+ trader | | 12
+ util-linux | | 13
+ ve | | 14
+ vice | | 1
+ vmm | | 3
+ vorbis-tools | | 13
+ wastesedge | | 3
+ wcd | | 8
+ wcd-man | | 3
+ wdiff | [] | 23
+ wget | | 21
+ wyslij-po | | 14
+ xboard | | 10
+ xdg-user-dirs | [] [] | 68
+ xkeyboard-config | [] | 28
+ +-------------+
+ 89 teams zh_HK zh_TW
+ 166 domains 7 42 2809
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
@@ -404,32 +1350,30 @@ used for implementing regional variants of languages, or language
dialects.
For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If August 2002 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
-matrix with full percentage details can be found at
-`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
-
-Using `gettext' in new packages
-===============================
-
- If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
+which it applies should also have been internationalized and distributed
+as such by its maintainer. There might be an observable lag between the
+mere existence a PO file and its wide availability in a distribution.
+
+ If Jun 2014 seems to be old, you may fetch a more recent copy of this
+'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix
+with full percentage details can be found at
+'http://translationproject.org/extra/matrix.html'.
+
+1.5 Using 'gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU 'gettext' in your
+package. Of course you have to respect the GNU Lesser General Public
+License which covers the use of the GNU 'gettext' library. This means
+in particular that even non-free programs can use 'libintl' as a shared
+library, whereas only free software can use 'libintl' as a static
+library or use modified versions of 'libintl'.
Once the sources are changed appropriately and the setup can handle
-to use of `gettext' the only thing missing are the translations. The
+the use of 'gettext' the only thing missing are the translations. The
Free Translation Project is also available for packages which are not
developed inside the GNU project. Therefore the information given above
applies also for every other Free Software Project. Contact
-`translation@iro.umontreal.ca' to make the `.pot' files available to
-the translation teams.
-
+'coordinator@translationproject.org' to make the '.pot' files available
+to the translation teams.
diff --git a/Android.bp b/Android.bp
index f9c3b6f8..fa2d0153 100644
--- a/Android.bp
+++ b/Android.bp
@@ -42,7 +42,7 @@ license {
cc_defaults {
name: "e2fsprogs-defaults",
- cflags: ["-Wall", "-Werror"],
+ cflags: ["-Wall", "-Werror", "-Wno-pointer-arith"],
target: {
darwin: {
// Still has unfixed/unsuppressed warnings.
diff --git a/MCONFIG.in b/MCONFIG.in
index d24f7ef2..3fede36d 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -2,6 +2,8 @@
all::
+all-static::
+
check::
fullcheck::
@@ -84,19 +86,21 @@ SYSTEMD_SYSTEM_UNIT_DIR = @systemd_system_unit_dir@
SANITIZER_CFLAGS = @lto_cflags@ @ubsan_cflags@ @addrsan_cflags@ @threadsan_cflags@
SANITIZER_LDFLAGS = @lto_ldflags@ @ubsan_ldflags@ @addrsan_ldflags@ @threadsan_ldflags@
-CC = @CC@
+CC = @PTHREAD_CC@
BUILD_CC = @BUILD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
CFLAGS = @CFLAGS@
CFLAGS_SHLIB = @CFLAGS_SHLIB@
CFLAGS_STLIB = @CFLAGS_STLIB@
CPPFLAGS = @INCLUDES@
-ALL_CFLAGS = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_SHLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_STLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_STLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-LDFLAGS = $(SANITIZER_LDFLAGS) @LDFLAGS@
-LDFLAGS_SHLIB = $(SANITIZER_LDFLAGS) @LDFLAGS_SHLIB@
+ALL_CFLAGS = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_SHLIB) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_STLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_STLIB) $(PTHREAD_CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+LDFLAGS = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS@
+LDFLAGS_SHLIB = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS_SHLIB@
ALL_LDFLAGS = $(LDFLAGS) @LDFLAG_DYNAMIC@
-LDFLAGS_STATIC = $(SANITIZER_LDFLAGS) @LDFLAGS_STATIC@
+LDFLAGS_STATIC = $(SANITIZER_LDFLAGS) $(PTHREAD_CFLAGS) @LDFLAGS_STATIC@
BUILD_CFLAGS = $(SANITIZER_CFLAGS) @BUILD_CFLAGS@
BUILD_LDFLAGS = $(SANITIZER_LDFLAGS) @BUILD_LDFLAGS@
RDYNAMIC = @RDYNAMIC@
@@ -121,7 +125,6 @@ LDCONFIG = @LDCONFIG@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-MKDIR_P = @MKDIR_P@
#
# Library definitions
@@ -137,7 +140,7 @@ LIBFUSE = @FUSE_LIB@
LIBSUPPORT = $(LIBINTL) $(LIB)/libsupport@STATIC_LIB_EXT@
LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
LIBINTL = @LIBINTL@
-SYSLIBS = @LIBS@
+SYSLIBS = @LIBS@ @PTHREAD_LIBS@
DEPLIBSS = $(LIB)/libss@LIB_EXT@
DEPLIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@
DEPLIBUUID = @DEPLIBUUID@
@@ -213,8 +216,7 @@ DEP_INSTALL_SYMLINK = $(top_builddir)/util/install-symlink \
# Run make gcc-wall to do a build with warning messages.
#
#
-WFLAGS= -std=gnu99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE \
- -pedantic $(WFLAGS_EXTRA) \
+WFLAGS= -std=gnu99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE $(WFLAGS_EXTRA) \
-Wall -W -Wwrite-strings -Wpointer-arith \
-Wcast-qual -Wcast-align -Wno-variadic-macros \
-Wstrict-prototypes -Wmissing-prototypes \
@@ -224,14 +226,14 @@ WFLAGS= -std=gnu99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE \
-UENABLE_NLS
gcc-wall-new:
- ($(MAKE) CFLAGS_WARN="$(WFLAGS)" > /dev/null) 2>&1 | sed -f $(top_srcdir)/util/gcc-wall-cleanup
+ ($(MAKE) CFLAGS_WARN="$(WFLAGS)" > /dev/null) 2>&1
gcc-wall:
$(MAKE) clean > /dev/null
$(MAKE) gcc-wall-new
static-check:
- ($(MAKE) C=1 V=1 CFLAGS="$(ALL_CFLAGS) $(WFLAGS)") 2>&1 | sed -f $(top_srcdir)/util/static-analysis-cleanup
+ ($(MAKE) C=1 V=1 CFLAGS="$(ALL_CFLAGS) $(WFLAGS)") 2>&1
static-check-all:
$(MAKE) clean > /dev/null
diff --git a/Makefile.in b/Makefile.in
index b951c017..d412dfbc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -4,6 +4,7 @@ VPATH = @srcdir@
top_builddir = .
my_dir = .
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -19,7 +20,7 @@ INSTALL = @INSTALL@
@ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs
LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \
- $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) intl
+ $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR)
PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po \
$(E2SCRUB_DIR)
@@ -36,6 +37,10 @@ all:: subs
@ALL_CMT@ $(MAKE) progs
@ALL_CMT@ $(MAKE) docs
+all-static::
+ $(MAKE) libs
+@ALL_CMT@ $(MAKE) static-progs
+
subs: $(DEP_SUBSTITUTE)
@for i in $(SUBS) ; do if test -d `dirname $$i` ; \
then $(MAKE) $$i || exit $$? ; fi ; done
@@ -44,6 +49,7 @@ subs: $(DEP_SUBSTITUTE)
@(if test -d lib/support ; then cd lib/support && $(MAKE) prof_err.h; fi)
progs: all-progs-recursive
+static-progs: all-static-progs-recursive
libs: all-libs-recursive
all-progs-recursive all-libs-recursive:: subs
@@ -97,8 +103,9 @@ all-progs-recursive install-progs-recursive install-strip-progs-recursive \
uninstall-progs-recursive coverage.txt-progs-recursive:: all-libs-recursive
-@ALL_CMT@all-progs-recursive install-progs-recursive install-strip-progs-recursive \
-@ALL_CMT@ uninstall-progs-recursive coverage.txt-progs-recursive:: all-libs-recursive
+@ALL_CMT@all-progs-recursive all-static-progs-recursive install-progs-recursive \
+@ALL_CMT@ install-strip-progs-recursive uninstall-progs-recursive \
+@ALL_CMT@ coverage.txt-progs-recursive:: all-libs-recursive
@ALL_CMT@ @for subdir in $(PROG_SUBDIRS); do \
@ALL_CMT@ if test -d $$subdir ; then \
@ALL_CMT@ target=`echo $@|$(SED) 's/-progs-recursive//'`; \
diff --git a/README b/README
index d39c08ec..fa4d9970 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
- This is the new version (1.45.4) of the second extended file
+ This is the new version (1.46.2) of the second extended file
system management programs.
From time to time, I release new versions of e2fsprogs, to fix
diff --git a/README.version b/README.version
index 5a93d431..cec90d50 100644
--- a/README.version
+++ b/README.version
@@ -1,3 +1,3 @@
-URL: https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.45.4/e2fsprogs-1.45.4.tar.gz
-Version: 1.45.4
+URL: https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.2/e2fsprogs-1.46.2.tar.gz
+Version: 1.46.2
BugComponent: 95221
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index ae6a5a33..a0e8f570 120000
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1 +1 @@
-doc/RelNotes/v1.45.4.txt \ No newline at end of file
+doc/RelNotes/v1.46.2.txt \ No newline at end of file
diff --git a/acinclude.m4 b/acinclude.m4
index 0b91745e..13b1e022 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -158,10 +158,6 @@ dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' ot
AC_DEFUN([AX_CHECK_MOUNT_OPT], [__AX_CHECK_MOUNT_OPT(m4_tolower([$1]),m4_toupper([$1]))])
AC_DEFUN([__AX_CHECK_MOUNT_OPT],
[
- AS_IF([test "x$ac_cv_header_sys_mount_h" = x],
- [AC_CHECK_HEADERS([sys/mount.h])])
- AS_IF([test "x$ac_cv_header_sys_mount_h" = xno],
- [AC_MSG_FAILURE([error: sys/mount.h not present on your system!])])
AS_ECHO_N("checking for mount '$1' option... ")
AC_TRY_COMPILE(
[#include <sys/mount.h>],
diff --git a/aclocal.m4 b/aclocal.m4
index 394e90d2..0f39d301 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -12,249 +12,505 @@
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-# codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2013 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.
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+# This macro figures out how to build C programs using POSIX threads. It
+# sets the PTHREAD_LIBS output variable to the threads library and linker
+# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+# flags that are needed. (The user can also force certain compiler
+# flags/libs to be tested by setting these environment variables.)
+#
+# Also sets PTHREAD_CC to any special C compiler that is needed for
+# multi-threaded programs (defaults to the value of CC otherwise). (This
+# is necessary on AIX to use the special cc_r compiler alias.)
+#
+# NOTE: You are assumed to not only compile your program with these flags,
+# but also to link with them as well. For example, you might link with
+# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+# If you are only building threaded programs, you may wish to use these
+# variables in your default LIBS, CFLAGS, and CC:
+#
+# LIBS="$PTHREAD_LIBS $LIBS"
+# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+# CC="$PTHREAD_CC"
+#
+# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
+# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
+# PTHREAD_CFLAGS.
+#
+# ACTION-IF-FOUND is a list of shell commands to run if a threads library
+# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+# is not found. If ACTION-IF-FOUND is not specified, the default action
+# will define HAVE_PTHREAD.
+#
+# Please let the authors know if this macro fails on any platform, or if
+# you have any other suggestions or comments. This macro was based on work
+# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+# Alejandro Forero Cuervo to the autoconf macro repository. We are also
+# grateful for the helpful feedback of numerous users.
+#
+# Updated for Autoconf 2.68 by Daniel Richard G.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
+#
+# 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 program 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 <https://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
+
+#serial 24
+
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
+AC_LANG_PUSH([C])
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on Tru64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+ ax_pthread_save_CC="$CC"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
+ AC_MSG_RESULT([$ax_pthread_ok])
+ if test "x$ax_pthread_ok" = "xno"; then
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+ fi
+ CC="$ax_pthread_save_CC"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+fi
-dnl From Bruno Haible.
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try. Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important. Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+# other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+# (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+# doesn't hurt to check since this sometimes defines pthreads and
+# -D_REENTRANT too), HP C (must be checked before -lpthread, which
+# is present but should not be used directly; and before -mthreads,
+# because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case $host_os in
+
+ freebsd*)
+
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+ ;;
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <langinfo.h>]],
- [[char* cs = nl_langinfo(CODESET); return !cs;]])],
- [am_cv_langinfo_codeset=yes],
- [am_cv_langinfo_codeset=no])
+ hpux*)
+
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+ # multi-threading and also sets -lpthread."
+
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+ ;;
+
+ openedition*)
+
+ # IBM z/OS requires a feature-test macro to be defined in order to
+ # enable POSIX threads at all, so give the user a hint if this is
+ # not set. (We don't define these ourselves, as they can affect
+ # other portions of the system API in unpredictable ways.)
+
+ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+ [
+# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+ AX_PTHREAD_ZOS_MISSING
+# endif
+ ],
+ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+ ;;
+
+ solaris*)
+
+ # On Solaris (at least, for some versions), libc contains stubbed
+ # (non-functional) versions of the pthreads routines, so link-based
+ # tests will erroneously succeed. (N.B.: The stubs are missing
+ # pthread_cleanup_push, or rather a function called by this macro,
+ # so we could check for that, but who knows whether they'll stub
+ # that too in a future libc.) So we'll check first for the
+ # standard Solaris way of linking pthreads (-mt -lpthread).
+
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
+ ;;
+esac
+
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
+
+AS_IF([test "x$GCC" = "xyes"],
+ [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
+
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
+
+case $host_os in
+ darwin* | hpux* | linux* | osf* | solaris*)
+ ax_pthread_check_macro="_REENTRANT"
+ ;;
+
+ aix*)
+ ax_pthread_check_macro="_THREAD_SAFE"
+ ;;
+
+ *)
+ ax_pthread_check_macro="--"
+ ;;
+esac
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
+ [ax_pthread_check_cond=0],
+ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
+
+# Are we compiling with Clang?
+
+AC_CACHE_CHECK([whether $CC is Clang],
+ [ax_cv_PTHREAD_CLANG],
+ [ax_cv_PTHREAD_CLANG=no
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
+ if test "x$GCC" = "xyes"; then
+ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+# if defined(__clang__) && defined(__llvm__)
+ AX_PTHREAD_CC_IS_CLANG
+# endif
+ ],
+ [ax_cv_PTHREAD_CLANG=yes])
+ fi
])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+ # Clang takes -pthread; it has never supported any other flag
+
+ # (Note 1: This will need to be revisited if a system that Clang
+ # supports has POSIX threads in a separate library. This tends not
+ # to be the way of modern systems, but it's conceivable.)
+
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
+ # to get POSIX threads support; the API is always present and
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
+ # -pthread does define _REENTRANT, and while the Darwin headers
+ # ignore this macro, third-party headers might not.)
+
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS=
+
+ ax_pthread_ok=yes
+
+ # However, older versions of Clang make a point of warning the user
+ # that, in an invocation where only linking and no compilation is
+ # taking place, the -pthread option has no effect ("argument unused
+ # during compilation"). They expect -pthread to be passed in only
+ # when source code is being compiled.
+ #
+ # Problem is, this is at odds with the way Automake and most other
+ # C build frameworks function, which is that the same flags used in
+ # compilation (CFLAGS) are also used in linking. Many systems
+ # supported by AX_PTHREAD require exactly this for POSIX threads
+ # support, and in fact it is often not straightforward to specify a
+ # flag that is used only in the compilation phase and not in
+ # linking. Such a scenario is extremely rare in practice.
+ #
+ # Even though use of the -pthread flag in linking would only print
+ # a warning, this can be a nuisance for well-run software projects
+ # that build with -Werror. So if the active version of Clang has
+ # this misfeature, we search for an option to squash it.
+
+ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+ # Create an alternate version of $ac_link that compiles and
+ # links in two steps (.c -> .o, .o -> exe) instead of one
+ # (.c -> exe), because the warning occurs only in the second
+ # step
+ ax_pthread_save_ac_link="$ac_link"
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+ ac_link="$ax_pthread_save_ac_link"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+ [ac_link="$ax_pthread_2step_ac_link"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+ [break])
+ ])
+ done
+ ac_link="$ax_pthread_save_ac_link"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+ ])
-dnl 'extern inline' a la ISO C99.
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+ no | unknown) ;;
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+ esac
-dnl Copyright 2012-2013 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.
+fi # $ax_pthread_clang = yes
-AC_DEFUN([gl_EXTERN_INLINE],
-[
- AH_VERBATIM([extern_inline],
-[/* Please see the Gnulib manual for how to use these macros.
-
- Suppress extern inline with HP-UX cc, as it appears to be broken; see
- <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
-
- Suppress extern inline with Sun C in standards-conformance mode, as it
- mishandles inline functions that call each other. E.g., for 'inline void f
- (void) { } inline void g (void) { f (); }', c99 incorrectly complains
- 'reference to static identifier "f" in extern inline function'.
- This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
-
- Suppress the use of extern inline on Apple's platforms, as Libc at least
- through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g.,
- <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
- Perhaps Apple will fix this some day. */
-#if ((__GNUC__ \
- ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
- : (199901L <= __STDC_VERSION__ \
- && !defined __HP_cc \
- && !(defined __SUNPRO_C && __STDC__))) \
- && !defined __APPLE__)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
- && !defined __APPLE__)
-# if __GNUC_GNU_INLINE__
- /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
-# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-# else
-# define _GL_INLINE extern inline
-# endif
-# define _GL_EXTERN_INLINE extern
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-# define _GL_INLINE_HEADER_CONST_PRAGMA
-# else
-# define _GL_INLINE_HEADER_CONST_PRAGMA \
- _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-# endif
- /* Suppress GCC's bogus "no previous prototype for 'FOO'"
- and "no previous declaration for 'FOO'" diagnostics,
- when FOO is an inline function in the header; see
- <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>. */
-# define _GL_INLINE_HEADER_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
- _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
- _GL_INLINE_HEADER_CONST_PRAGMA
-# define _GL_INLINE_HEADER_END \
- _Pragma ("GCC diagnostic pop")
-#else
-# define _GL_INLINE_HEADER_BEGIN
-# define _GL_INLINE_HEADER_END
-#endif])
-])
+ case $ax_pthread_try_flag in
+ none)
+ AC_MSG_CHECKING([whether pthreads work without any flags])
+ ;;
-# fcntl-o.m4 serial 4
-dnl Copyright (C) 2006, 2009-2013 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.
+ -mt,pthread)
+ AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
+ PTHREAD_CFLAGS="-mt"
+ PTHREAD_LIBS="-lpthread"
+ ;;
-dnl Written by Paul Eggert.
+ -*)
+ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
+ ;;
-# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
-# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
-# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
-AC_DEFUN([gl_FCNTL_O_FLAGS],
-[
- dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
- dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
- dnl AC_GNU_SOURCE.
- m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
- [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
- [AC_REQUIRE([AC_GNU_SOURCE])])
-
- AC_CHECK_HEADERS_ONCE([unistd.h])
- AC_CHECK_FUNCS_ONCE([symlink])
- AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
- [AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <sys/types.h>
- #include <sys/stat.h>
- #if HAVE_UNISTD_H
- # include <unistd.h>
- #else /* on Windows with MSVC */
- # include <io.h>
- # include <stdlib.h>
- # defined sleep(n) _sleep ((n) * 1000)
- #endif
- #include <fcntl.h>
- #ifndef O_NOATIME
- #define O_NOATIME 0
- #endif
- #ifndef O_NOFOLLOW
- #define O_NOFOLLOW 0
- #endif
- static int const constants[] =
- {
- O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
- O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
- };
- ]],
- [[
- int result = !constants;
- #if HAVE_SYMLINK
- {
- static char const sym[] = "conftest.sym";
- if (symlink ("/dev/null", sym) != 0)
- result |= 2;
- else
- {
- int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
- if (fd >= 0)
- {
- close (fd);
- result |= 4;
- }
- }
- if (unlink (sym) != 0 || symlink (".", sym) != 0)
- result |= 2;
- else
- {
- int fd = open (sym, O_RDONLY | O_NOFOLLOW);
- if (fd >= 0)
- {
- close (fd);
- result |= 4;
- }
- }
- unlink (sym);
- }
- #endif
- {
- static char const file[] = "confdefs.h";
- int fd = open (file, O_RDONLY | O_NOATIME);
- if (fd < 0)
- result |= 8;
- else
- {
- struct stat st0;
- if (fstat (fd, &st0) != 0)
- result |= 16;
- else
- {
- char c;
- sleep (1);
- if (read (fd, &c, 1) != 1)
- result |= 24;
- else
- {
- if (close (fd) != 0)
- result |= 32;
- else
- {
- struct stat st1;
- if (stat (file, &st1) != 0)
- result |= 40;
- else
- if (st0.st_atime != st1.st_atime)
- result |= 64;
- }
- }
- }
- }
- }
- return result;]])],
- [gl_cv_header_working_fcntl_h=yes],
- [case $? in #(
- 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
- 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
- 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
- *) gl_cv_header_working_fcntl_h='no';;
- esac],
- [gl_cv_header_working_fcntl_h=cross-compiling])])
-
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
- AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
- [Define to 1 if O_NOATIME works.])
+ pthread-config)
+ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
+ AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
+ PTHREAD_CFLAGS="`pthread-config --cflags`"
+ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+ ;;
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
- AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
- [Define to 1 if O_NOFOLLOW works.])
-])
+ *)
+ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
+ ;;
+ esac
+
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+
+ # Check for various functions. We must include pthread.h,
+ # since some functions may be macros. (On the Sequent, we
+ # need a special flag -Kthread to make this header compile.)
+ # We check for pthread_join because it is in -lpthread on IRIX
+ # while pthread_create is in libc. We check for pthread_attr_init
+ # due to DEC craziness with -lpthreads. We check for
+ # pthread_cleanup_push because it is one of the few pthread
+ # functions on Solaris that doesn't have a non-functional libc stub.
+ # We try pthread_create on general principles.
+
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+# if $ax_pthread_check_cond
+# error "$ax_pthread_check_macro must be defined"
+# endif
+ static void routine(void *a) { a = 0; }
+ static void *start_routine(void *a) { return a; }],
+ [pthread_t th; pthread_attr_t attr;
+ pthread_create(&th, 0, start_routine, 0);
+ pthread_join(th, 0);
+ pthread_attr_init(&attr);
+ pthread_cleanup_push(routine, 0);
+ pthread_cleanup_pop(0) /* ; */])],
+ [ax_pthread_ok=yes],
+ [])
+
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+
+ AC_MSG_RESULT([$ax_pthread_ok])
+ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
+
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = "xyes"; then
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+
+ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+ AC_CACHE_CHECK([for joinable pthread attribute],
+ [ax_cv_PTHREAD_JOINABLE_ATTR],
+ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [int attr = $ax_pthread_attr; return attr /* ; */])],
+ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+ [])
+ done
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+ [$ax_cv_PTHREAD_JOINABLE_ATTR],
+ [Define to necessary symbol if this constant
+ uses a non-standard name on your system.])
+ ax_pthread_joinable_attr_defined=yes
+ ])
+
+ AC_CACHE_CHECK([whether more special flags are required for pthreads],
+ [ax_cv_PTHREAD_SPECIAL_FLAGS],
+ [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+ case $host_os in
+ solaris*)
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+ ;;
+ esac
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+ test "x$ax_pthread_special_flags_added" != "xyes"],
+ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+ ax_pthread_special_flags_added=yes])
+
+ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
+ [ax_cv_PTHREAD_PRIO_INHERIT],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+ [[int i = PTHREAD_PRIO_INHERIT;]])],
+ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+ [ax_cv_PTHREAD_PRIO_INHERIT=no])
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"],
+ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
+ ax_pthread_prio_inherit_defined=yes
+ ])
+
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+
+ # More AIX lossage: compile with *_r variant
+ if test "x$GCC" != "xyes"; then
+ case $host_os in
+ aix*)
+ AS_CASE(["x/$CC"],
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+ [#handle absolute path differently from PATH based program lookup
+ AS_CASE(["x$CC"],
+ [x/*],
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+ ;;
+ esac
+ fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test "x$ax_pthread_ok" = "xyes"; then
+ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
+ :
+else
+ ax_pthread_ok=no
+ $2
+fi
+AC_LANG_POP
+])dnl AX_PTHREAD
-# gettext.m4 serial 66 (gettext-0.18.2)
-dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# gettext.m4 serial 71 (gettext-0.20.2)
+dnl Copyright (C) 1995-2014, 2016, 2018-2020 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.
dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
@@ -264,15 +520,13 @@ dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
dnl Macro to add for using GNU gettext.
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl default (if it is not specified or empty) is 'no-libtool'.
-dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl INTLSYMBOL must be one of 'external', 'use-libtool'.
+dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and
+dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'.
dnl If INTLSYMBOL is 'use-libtool', then a libtool library
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
dnl depending on --{enable,disable}-{shared,static} and on the presence of
-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl $(top_builddir)/intl/libintl.a will be created.
+dnl AM-DISABLE-SHARED).
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
dnl implementations (in libc or libintl) without the ngettext() function
dnl will be ignored. If NEEDSYMBOL is specified and is
@@ -301,19 +555,17 @@ dnl
AC_DEFUN([AM_GNU_GETTEXT],
[
dnl Argument checking.
- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], ,
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
+])])])])
ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
- [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
+ [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported.
+])])
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])])
define([gt_included_intl],
- ifelse([$1], [external],
- ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
- [yes]))
- define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+ ifelse([$1], [external], [no], [yes]))
gt_NEEDS_INIT
AM_GNU_GETTEXT_NEED([$2])
@@ -335,8 +587,7 @@ AC_DEFUN([AM_GNU_GETTEXT],
dnl again, outside any 'if'. There are two solutions:
dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
- dnl documented, we avoid it.
+ dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
ifelse(gt_included_intl, yes, , [
AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
])
@@ -405,13 +656,18 @@ changequote([,])dnl
[AC_LANG_PROGRAM(
[[
#include <libintl.h>
-$gt_revision_test_code
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
]],
[[
bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
]])],
[eval "$gt_func_gnugettext_libc=yes"],
[eval "$gt_func_gnugettext_libc=no"])])
@@ -437,17 +693,22 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_b
[AC_LANG_PROGRAM(
[[
#include <libintl.h>
-$gt_revision_test_code
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
]],
[[
bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
]])],
[eval "$gt_func_gnugettext_libintl=yes"],
[eval "$gt_func_gnugettext_libintl=no"])
@@ -458,17 +719,22 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
[AC_LANG_PROGRAM(
[[
#include <libintl.h>
-$gt_revision_test_code
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
]],
[[
bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
]])],
[LIBINTL="$LIBINTL $LIBICONV"
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
@@ -507,8 +773,8 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
dnl Mark actions used to generate GNU NLS library.
BUILD_INCLUDED_LIBINTL=yes
USE_INCLUDED_LIBINTL=yes
- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD"
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
fi
@@ -576,43 +842,14 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
fi
ifelse(gt_included_intl, yes, [
- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
- dnl to 'yes' because some of the testsuite requires it.
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
+ dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes'
+ dnl because some of the testsuite requires it.
+ BUILD_INCLUDED_LIBINTL=yes
dnl Make all variables we use known to autoconf.
AC_SUBST([BUILD_INCLUDED_LIBINTL])
AC_SUBST([USE_INCLUDED_LIBINTL])
AC_SUBST([CATOBJEXT])
-
- dnl For backward compatibility. Some configure.ins may be using this.
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- dnl For backward compatibility. Some Makefiles may be using this.
- DATADIRNAME=share
- AC_SUBST([DATADIRNAME])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INSTOBJEXT=.mo
- AC_SUBST([INSTOBJEXT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- GENCAT=gencat
- AC_SUBST([GENCAT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLOBJS=
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
- AC_SUBST([INTLOBJS])
-
- dnl Enable libtool support if the surrounding package wishes it.
- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
])
dnl For backward compatibility. Some Makefiles may be using this.
@@ -644,75 +881,689 @@ AC_DEFUN([AM_GNU_GETTEXT_NEED],
dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-# glibc2.m4 serial 3
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
-dnl 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.
-# Test for the GNU C Library, version 2.0 or newer.
-# From Bruno Haible.
+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])
-AC_DEFUN([gt_GLIBC2],
- [
- AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
- [ac_cv_gnu_library_2],
- [AC_EGREP_CPP([Lucky GNU user],
- [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2) && !defined __UCLIBC__
- Lucky GNU user
- #endif
-#endif
- ],
- [ac_cv_gnu_library_2=yes],
- [ac_cv_gnu_library_2=no])
- ]
- )
- AC_SUBST([GLIBC2])
- GLIBC2="$ac_cv_gnu_library_2"
- ]
-)
-
-# glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
-dnl Inc.
+# host-cpu-c-abi.m4 serial 13
+dnl Copyright (C) 2002-2020 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.
-# Test for the GNU C Library, version 2.1 or newer, or uClibc.
-# From Bruno Haible.
+dnl From Bruno Haible and Sam Steingold.
-AC_DEFUN([gl_GLIBC21],
- [
- AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
- [ac_cv_gnu_library_2_1],
- [AC_EGREP_CPP([Lucky],
- [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl will not run on SPARC CPUs and vice versa. They have different
+dnl instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl different argument passing and return conventions for C functions, and
+dnl although the instruction set of 'mips' is a large subset of the
+dnl instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl different sizes for the C types like 'int' and 'void *', and although
+dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl determine the endianness through preprocessor symbols:
+dnl - 'arm': test __ARMEL__.
+dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl assembly language source files use such instructions, you will
+dnl need to make the distinction.
+dnl - Speed of execution of the common instruction set is reasonable across
+dnl the entire family of CPUs. If you have assembly language source files
+dnl that are optimized for particular CPU types (like GNU gmp has), you
+dnl will need to make the distinction.
+dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_C_ASM])
+ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+ [case "$host_cpu" in
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=i386
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=x86_64-x32],
+ [gl_cv_host_cpu_c_abi=x86_64])],
+ [gl_cv_host_cpu_c_abi=i386])
+ ;;
+
+changequote(,)dnl
+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=alpha
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __aarch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=arm64-ilp32],
+ [gl_cv_host_cpu_c_abi=arm64])],
+ [# Don't distinguish little-endian and big-endian arm, since they
+ # don't require different machine code for simple operations and
+ # since the user can distinguish them through the preprocessor
+ # defines __ARMEL__ vs. __ARMEB__.
+ # But distinguish arm which passes floating-point arguments and
+ # return values in integer registers (r0, r1, ...) - this is
+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+ # passes them in float registers (s0, s1, ...) and double registers
+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+ # sets the preprocessor defines __ARM_PCS (for the first case) and
+ # __ARM_PCS_VFP (for the second case), but older GCC does not.
+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+ # Look for a reference to the register d0 in the .s file.
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+ gl_cv_host_cpu_c_abi=armhf
+ else
+ gl_cv_host_cpu_c_abi=arm
+ fi
+ rm -f conftest*
+ ])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=hppa64],
+ [gl_cv_host_cpu_c_abi=hppa])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=ia64-ilp32],
+ [gl_cv_host_cpu_c_abi=ia64])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mips64],
+ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (_MIPS_SIM == _ABIN32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mipsn32],
+ [gl_cv_host_cpu_c_abi=mips])])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+ # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _CALL_ELF && _CALL_ELF == 2
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+ [gl_cv_host_cpu_c_abi=powerpc64])
+ ],
+ [gl_cv_host_cpu_c_abi=powerpc])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi=powerpc
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 2 architectures (with variants): rv32* and rv64*.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if __riscv_xlen == 64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [cpu=riscv64],
+ [cpu=riscv32])
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [main_abi=lp64],
+ [main_abi=ilp32])
+ # Float ABIs:
+ # __riscv_float_abi_double:
+ # 'float' and 'double' are passed in floating-point registers.
+ # __riscv_float_abi_single:
+ # 'float' are passed in floating-point registers.
+ # __riscv_float_abi_soft:
+ # No values are passed in floating-point registers.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_double
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=d],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_single
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=f],
+ [float_abi=''])
+ ])
+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=s390x],
+ [gl_cv_host_cpu_c_abi=s390])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=sparc64],
+ [gl_cv_host_cpu_c_abi=sparc])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi="$host_cpu"
+ ;;
+ esac
+ ])
+
+ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+ AC_SUBST([HOST_CPU])
+ AC_SUBST([HOST_CPU_C_ABI])
+
+ # This was
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+ # earlier, but KAI C++ 3.2d doesn't like this.
+ sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+ AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
#endif
-#ifdef __UCLIBC__
- Lucky user
+#ifndef __sh__
+#undef __sh__
#endif
- ],
- [ac_cv_gnu_library_2_1=yes],
- [ac_cv_gnu_library_2_1=no])
- ]
- )
- AC_SUBST([GLIBC21])
- GLIBC21="$ac_cv_gnu_library_2_1"
- ]
-)
-
-# iconv.m4 serial 18 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2007-2013 Free Software Foundation, Inc.
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
+
+
+dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
+dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
+dnl one, or to 'unknown' if unknown.
+dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
+AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
+ [if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ case "$host_cpu" in
+
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh[1234] | sh[1234]e[lb] \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ # CPUs that only support a 64-bit ABI.
+changequote(,)dnl
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=yes],
+ [gl_cv_host_cpu_c_abi_32bit=no])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ ;;
+ esac
+ fi
+ ])
+
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+])
+
+# iconv.m4 serial 21
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2020 Free Software Foundation,
+dnl 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.
@@ -785,27 +1636,33 @@ AC_DEFUN([AM_ICONV_LINK],
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
+ am_cv_func_iconv_works=no
+ for ac_iconv_const in '' 'const'; do
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
#include <iconv.h>
#include <string.h>
-int main ()
-{
- int result = 0;
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+ ]],
+ [[int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
returns. */
{
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
if (cd_utf8_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\342\202\254"; /* EURO SIGN */
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
result |= 1;
@@ -818,14 +1675,14 @@ int main ()
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
if (cd_ascii_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\263";
+ static ICONV_CONST char input[] = "\263";
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_ascii_to_88591,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
result |= 2;
@@ -837,14 +1694,14 @@ int main ()
iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304";
+ static ICONV_CONST char input[] = "\304";
static char buf[2] = { (char)0xDE, (char)0xAD };
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = 1;
char *outptr = buf;
size_t outbytesleft = 1;
size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
result |= 4;
@@ -857,14 +1714,14 @@ int main ()
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
char buf[50];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
result |= 8;
@@ -874,27 +1731,36 @@ int main ()
#endif
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- result |= 16;
+ {
+ /* Try standardized names. */
+ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+ /* Try IRIX, OSF/1 names. */
+ iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+ /* Try AIX names. */
+ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+ /* Try HP-UX names. */
+ iconv_t cd4 = iconv_open ("utf8", "eucJP");
+ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+ result |= 16;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd3 != (iconv_t)(-1))
+ iconv_close (cd3);
+ if (cd4 != (iconv_t)(-1))
+ iconv_close (cd4);
+ }
return result;
-}]])],
- [am_cv_func_iconv_works=yes],
- [am_cv_func_iconv_works=no],
- [
-changequote(,)dnl
- case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac
-changequote([,])dnl
- ])
+]])],
+ [am_cv_func_iconv_works=yes], ,
+ [case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac])
+ test "$am_cv_func_iconv_works" = no || break
+ done
LIBS="$am_save_LIBS"
])
case "$am_cv_func_iconv_works" in
@@ -968,399 +1834,42 @@ size_t iconv();
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
AC_MSG_RESULT([
$am_cv_proto_iconv])
- AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
- [Define as const if the declaration of iconv() needs const.])
- dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
- m4_ifdef([gl_ICONV_H_DEFAULTS],
- [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
- if test -n "$am_cv_proto_iconv_arg1"; then
- ICONV_CONST="const"
- fi
- ])
- fi
-])
-
-# intdiv0.m4 serial 6 (gettext-0.18.2)
-dnl Copyright (C) 2002, 2007-2008, 2010-2013 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gt_INTDIV0],
-[
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
- gt_cv_int_divbyzero_sigfpe,
- [
- gt_cv_int_divbyzero_sigfpe=
-changequote(,)dnl
- case "$host_os" in
- macos* | darwin[6-9]* | darwin[1-9][0-9]*)
- # On Mac OS X 10.2 or newer, just assume the same as when cross-
- # compiling. If we were to perform the real test, 1 Crash Report
- # dialog window would pop up.
- case "$host_cpu" in
- i[34567]86 | x86_64)
- gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
- esac
- ;;
- esac
-changequote([,])dnl
- if test -z "$gt_cv_int_divbyzero_sigfpe"; then
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-sigfpe_handler (int sig)
-{
- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
- exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
- signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
- signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL. */
-#if defined (__sparc__) && defined (__linux__)
- signal (SIGILL, sigfpe_handler);
-#endif
-
- z = x / y;
- nan = y / y;
- exit (2);
-}
-]])],
- [gt_cv_int_divbyzero_sigfpe=yes],
- [gt_cv_int_divbyzero_sigfpe=no],
- [
- # Guess based on the CPU.
-changequote(,)dnl
- case "$host_cpu" in
- alpha* | i[34567]86 | x86_64 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
-changequote([,])dnl
- ])
- fi
- ])
- case "$gt_cv_int_divbyzero_sigfpe" in
- *yes) value=1;;
- *) value=0;;
- esac
- AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
- [Define if integer division by zero raises signal SIGFPE.])
-])
-
-# intl.m4 serial 25 (gettext-0.18.3)
-dnl Copyright (C) 1995-2013 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
-
-AC_PREREQ([2.60])
-
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
-[
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AC_PROG_MKDIR_P])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([gt_GLIBC2])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([gl_VISIBILITY])dnl
- AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
- AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
- AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
- AC_REQUIRE([gt_TYPE_WINT_T])dnl
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gt_TYPE_INTMAX_T])
- AC_REQUIRE([gt_PRINTF_POSIX])
- AC_REQUIRE([gl_GLIBC21])dnl
- AC_REQUIRE([gl_XSIZE])dnl
- AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
- AC_REQUIRE([gt_INTL_MACOSX])dnl
- AC_REQUIRE([gl_EXTERN_INLINE])dnl
-
- dnl Support for automake's --enable-silent-rules.
- case "$enable_silent_rules" in
- yes) INTL_DEFAULT_VERBOSITY=0;;
- no) INTL_DEFAULT_VERBOSITY=1;;
- *) INTL_DEFAULT_VERBOSITY=1;;
- esac
- AC_SUBST([INTL_DEFAULT_VERBOSITY])
-
- AC_CHECK_TYPE([ptrdiff_t], ,
- [AC_DEFINE([ptrdiff_t], [long],
- [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
- ])
- AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
- AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
- snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
-
- dnl Use the _snprintf function only if it is declared (because on NetBSD it
- dnl is defined as a weak alias of snprintf; we prefer to use the latter).
- AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
-
- dnl Use the *_unlocked functions only if they are declared.
- dnl (because some of them were defined without being declared in Solaris
- dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
- dnl on Solaris 2.5.1 to run on Solaris 2.6).
- AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
-
- case $gt_cv_func_printf_posix in
- *yes) HAVE_POSIX_PRINTF=1 ;;
- *) HAVE_POSIX_PRINTF=0 ;;
- esac
- AC_SUBST([HAVE_POSIX_PRINTF])
- if test "$ac_cv_func_asprintf" = yes; then
- HAVE_ASPRINTF=1
- else
- HAVE_ASPRINTF=0
- fi
- AC_SUBST([HAVE_ASPRINTF])
- if test "$ac_cv_func_snprintf" = yes; then
- HAVE_SNPRINTF=1
else
- HAVE_SNPRINTF=0
- fi
- AC_SUBST([HAVE_SNPRINTF])
- if test "$ac_cv_func_newlocale" = yes; then
- HAVE_NEWLOCALE=1
- else
- HAVE_NEWLOCALE=0
- fi
- AC_SUBST([HAVE_NEWLOCALE])
- if test "$ac_cv_func_wprintf" = yes; then
- HAVE_WPRINTF=1
- else
- HAVE_WPRINTF=0
- fi
- AC_SUBST([HAVE_WPRINTF])
-
- AM_LANGINFO_CODESET
- gt_LC_MESSAGES
-
- dnl Compilation on mingw and Cygwin needs special Makefile rules, because
- dnl 1. when we install a shared library, we must arrange to export
- dnl auxiliary pointer variables for every exported variable,
- dnl 2. when we install a shared library and a static library simultaneously,
- dnl the include file specifies __declspec(dllimport) and therefore we
- dnl must arrange to define the auxiliary pointer variables for the
- dnl exported variables _also_ in the static library.
- if test "$enable_shared" = yes; then
- case "$host_os" in
- mingw* | cygwin*) is_woe32dll=yes ;;
- *) is_woe32dll=no ;;
- esac
- else
- is_woe32dll=no
- fi
- WOE32DLL=$is_woe32dll
- AC_SUBST([WOE32DLL])
-
- dnl On mingw and Cygwin, we can activate special Makefile rules which add
- dnl version information to the shared libraries and executables.
- case "$host_os" in
- mingw* | cygwin*) is_woe32=yes ;;
- *) is_woe32=no ;;
- esac
- WOE32=$is_woe32
- AC_SUBST([WOE32])
- if test $WOE32 = yes; then
- dnl Check for a program that compiles Windows resource files.
- AC_CHECK_TOOL([WINDRES], [windres])
- fi
-
- dnl Determine whether when creating a library, "-lc" should be passed to
- dnl libtool or not. On many platforms, it is required for the libtool option
- dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
- dnl in the *.la files - makes it impossible to create multithreaded programs,
- dnl because libtool also reorders the -lc to come before the -pthread, and
- dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
- case "$host_os" in
- hpux*) LTLIBC="" ;;
- *) LTLIBC="-lc" ;;
- esac
- AC_SUBST([LTLIBC])
-
- dnl Rename some macros and functions used for locking.
- AH_BOTTOM([
-#define __libc_lock_t gl_lock_t
-#define __libc_lock_define gl_lock_define
-#define __libc_lock_define_initialized gl_lock_define_initialized
-#define __libc_lock_init gl_lock_init
-#define __libc_lock_lock gl_lock_lock
-#define __libc_lock_unlock gl_lock_unlock
-#define __libc_lock_recursive_t gl_recursive_lock_t
-#define __libc_lock_define_recursive gl_recursive_lock_define
-#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
-#define __libc_lock_init_recursive gl_recursive_lock_init
-#define __libc_lock_lock_recursive gl_recursive_lock_lock
-#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
-#define glthread_in_use libintl_thread_in_use
-#define glthread_lock_init_func libintl_lock_init_func
-#define glthread_lock_lock_func libintl_lock_lock_func
-#define glthread_lock_unlock_func libintl_lock_unlock_func
-#define glthread_lock_destroy_func libintl_lock_destroy_func
-#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
-#define glthread_rwlock_init_func libintl_rwlock_init_func
-#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
-#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
-#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
-#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
-#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
-#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
-#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
-#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
-#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
-#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
-#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
-#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
-#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
-#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
-#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
-#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
-#define glthread_once_func libintl_once_func
-#define glthread_once_singlethreaded libintl_once_singlethreaded
-#define glthread_once_multithreaded libintl_once_multithreaded
-])
-])
-
-
-dnl Checks for the core files of the intl subdirectory:
-dnl dcigettext.c
-dnl eval-plural.h
-dnl explodename.c
-dnl finddomain.c
-dnl gettextP.h
-dnl gmo.h
-dnl hash-string.h hash-string.c
-dnl l10nflist.c
-dnl libgnuintl.h.in (except the *printf stuff)
-dnl loadinfo.h
-dnl loadmsgcat.c
-dnl localealias.c
-dnl log.c
-dnl plural-exp.h plural-exp.c
-dnl plural.y
-dnl Used by libglocale.
-AC_DEFUN([gt_INTL_SUBDIR_CORE],
-[
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
- AC_REQUIRE([gt_INTDIV0])dnl
- AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
- AC_REQUIRE([gt_INTTYPES_PRI])dnl
- AC_REQUIRE([gl_LOCK])dnl
-
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
- [[]])],
- [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
- [Define to 1 if the compiler understands __builtin_expect.])])
-
- AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
- AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
- stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
- argz_stringify argz_next __fsetlocking])
-
- dnl Use the *_unlocked functions only if they are declared.
- dnl (because some of them were defined without being declared in Solaris
- dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
- dnl on Solaris 2.5.1 to run on Solaris 2.6).
- AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
-
- AM_ICONV
-
- dnl intl/plural.c is generated from intl/plural.y. It requires bison,
- dnl because plural.y uses bison specific features. It requires at least
- dnl bison-1.26 because earlier versions generate a plural.c that doesn't
- dnl compile.
- dnl bison is only needed for the maintainer (who touches plural.y). But in
- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
- dnl the rule in general Makefile. Now, some people carelessly touch the
- dnl files or have a broken "make" program, hence the plural.c rule will
- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
- dnl present or too old.
- AC_CHECK_PROGS([INTLBISON], [bison])
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
- else
- dnl Found it, now check the version.
- AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- AC_MSG_RESULT([$ac_prog_version])
- fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
+ dnl When compiling GNU libiconv on a system that does not have iconv yet,
+ dnl pick the POSIX compliant declaration without 'const'.
+ am_cv_proto_iconv_arg1=""
fi
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+ [Define as const if the declaration of iconv() needs const.])
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ fi
+ ])
])
-# intlmacosx.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# intlmacosx.m4 serial 8 (gettext-0.20.2)
+dnl Copyright (C) 2004-2014, 2016, 2019-2020 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.
dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Checks for special options needed on Mac OS X.
dnl Defines INTL_MACOSX_LIBS.
AC_DEFUN([gt_INTL_MACOSX],
[
- dnl Check for API introduced in Mac OS X 10.2.
+ dnl Check for API introduced in Mac OS X 10.4.
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
[gt_cv_func_CFPreferencesCopyAppValue],
[gt_save_LIBS="$LIBS"
@@ -1376,176 +1885,39 @@ AC_DEFUN([gt_INTL_MACOSX],
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
fi
- dnl Check for API introduced in Mac OS X 10.3.
- AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+ dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent,
+ dnl because in macOS 10.13.4 it has the following behaviour:
+ dnl When two or more languages are specified in the
+ dnl "System Preferences > Language & Region > Preferred Languages" panel,
+ dnl it returns en_CC where CC is the territory (even when English is not among
+ dnl the preferred languages!). What we want instead is what
+ dnl CFLocaleCopyCurrent returned in earlier macOS releases and what
+ dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
+ dnl first among the preferred languages and CC is the territory.
+ AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <CoreFoundation/CFLocale.h>]],
- [[CFLocaleCopyCurrent();]])],
- [gt_cv_func_CFLocaleCopyCurrent=yes],
- [gt_cv_func_CFLocaleCopyCurrent=no])
+ [[CFLocaleCopyPreferredLanguages();]])],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
- [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
+ [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
fi
INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
AC_SUBST([INTL_MACOSX_LIBS])
])
-# intmax.m4 serial 6 (gettext-0.18.2)
-dnl Copyright (C) 2002-2005, 2008-2013 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.
-
-dnl From Bruno Haible.
-dnl Test whether the system has the 'intmax_t' type, but don't attempt to
-dnl find a replacement if it is lacking.
-
-AC_DEFUN([gt_TYPE_INTMAX_T],
-[
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
- ]],
- [[intmax_t x = -1;
- return !x;]])],
- [gt_cv_c_intmax_t=yes],
- [gt_cv_c_intmax_t=no])])
- if test $gt_cv_c_intmax_t = yes; then
- AC_DEFINE([HAVE_INTMAX_T], [1],
- [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
- fi
-])
-
-# inttypes-pri.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1997-2002, 2006, 2008-2013 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.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.53])
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values. This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
- AC_CHECK_HEADERS([inttypes.h])
- if test $ac_cv_header_inttypes_h = yes; then
- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
- [gt_cv_inttypes_pri_broken],
- [
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
- ]],
- [[]])],
- [gt_cv_inttypes_pri_broken=no],
- [gt_cv_inttypes_pri_broken=yes])
- ])
- fi
- if test "$gt_cv_inttypes_pri_broken" = yes; then
- AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
- [Define if <inttypes.h> exists and defines unusable PRI* macros.])
- PRI_MACROS_BROKEN=1
- else
- PRI_MACROS_BROKEN=0
- fi
- AC_SUBST([PRI_MACROS_BROKEN])
-])
-
-# inttypes_h.m4 serial 10
-dnl Copyright (C) 1997-2004, 2006, 2008-2013 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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
-[
- AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <sys/types.h>
-#include <inttypes.h>
- ]],
- [[uintmax_t i = (uintmax_t) -1; return !i;]])],
- [gl_cv_header_inttypes_h=yes],
- [gl_cv_header_inttypes_h=no])])
- if test $gl_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
- [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-
-# lcmessage.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1995-2002, 2004-2005, 2008-2013 Free Software Foundation,
-dnl 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.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([gt_LC_MESSAGES],
-[
- AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <locale.h>]],
- [[return LC_MESSAGES]])],
- [gt_cv_val_LC_MESSAGES=yes],
- [gt_cv_val_LC_MESSAGES=no])])
- if test $gt_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE([HAVE_LC_MESSAGES], [1],
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
-])
-
-# lib-ld.m4 serial 6
-dnl Copyright (C) 1996-2003, 2009-2013 Free Software Foundation, Inc.
+# lib-ld.m4 serial 9
+dnl Copyright (C) 1996-2003, 2009-2020 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.
@@ -1593,86 +1965,135 @@ if test "${PATH_SEPARATOR+set}" != set; then
}
fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
+if test -n "$LD"; then
+ AC_MSG_CHECKING([for ld])
+elif test "$GCC" = yes; then
AC_MSG_CHECKING([for ld used by $CC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]]* | ?:[[\\/]]*)
- re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
- while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
elif test "$with_gnu_ld" = yes; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
-AC_CACHE_VAL([acl_cv_path_LD],
-[if test -z "$LD"; then
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
+if test -n "$LD"; then
+ # Let the user override the test with a path.
+ :
+else
+ AC_CACHE_VAL([acl_cv_path_LD],
+ [
+ acl_cv_path_LD= # Final result of this test
+ ac_prog=ld # Program to search in $PATH
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $acl_output in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+ done
+ # Got the pathname. No search in PATH is needed.
+ acl_cv_path_LD="$acl_output"
+ ac_prog=
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
esac
fi
- done
- IFS="$acl_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
+ if test -n "$ac_prog"; then
+ # Search for $ac_prog in $PATH.
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+ fi
+ case $host in
+ *-*-aix*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# The compiler produces 64-bit code. Add option '-b64' so that the
+ # linker groks 64-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -b64 "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+ esac
+ ], [])
+ ;;
+ sparc64-*-netbsd*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [],
+ [# The compiler produces 32-bit code. Add option '-m elf32_sparc'
+ # so that the linker groks 32-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -m elf32_sparc "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+ esac
+ ])
+ ;;
+ esac
+ ])
+ LD="$acl_cv_path_LD"
+fi
if test -n "$LD"; then
AC_MSG_RESULT([$LD])
else
AC_MSG_RESULT([no])
+ AC_MSG_ERROR([no acceptable ld found in \$PATH])
fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU
])
-# lib-link.m4 serial 26 (gettext-0.18.2)
-dnl Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# lib-link.m4 serial 31
+dnl Copyright (C) 2001-2020 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.
dnl From Bruno Haible.
-AC_PREREQ([2.54])
+AC_PREREQ([2.61])
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies.
@@ -1790,8 +2211,8 @@ dnl acl_hardcode_direct,
dnl acl_hardcode_minus_L.
AC_DEFUN([AC_LIB_RPATH],
[
- dnl Tell automake >= 1.10 to complain if config.rpath is missing.
- m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+ dnl Complain if config.rpath is missing.
+ AC_REQUIRE_AUX_FILE([config.rpath])
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
@@ -1853,17 +2274,17 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
- dnl Autoconf >= 2.61 supports dots in --with options.
- pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)])
dnl By default, look in $includedir and $libdir.
use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
])
- AC_ARG_WITH(P_A_C_K[-prefix],
-[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
- --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+ AC_ARG_WITH(PACK[-prefix],
+[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
[
if test "X$withval" = "Xno"; then
use_additional=no
@@ -1872,19 +2293,25 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
])
else
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
+ additional_libdir2="$withval/$acl_libdirstem2"
+ additional_libdir3="$withval/$acl_libdirstem3"
fi
fi
])
+ if test "X$additional_libdir2" = "X$additional_libdir"; then
+ additional_libdir2=
+ fi
+ if test "X$additional_libdir3" = "X$additional_libdir"; then
+ additional_libdir3=
+ fi
dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-search.
+ dnl $LDFLAGS. Using breadth-first-seach.
LIB[]NAME=
LTLIB[]NAME=
INC[]NAME=
@@ -1938,48 +2365,54 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
shrext=
fi
if test $use_additional = yes; then
- dir="$additional_libdir"
- dnl The same code as in the loop below:
- dnl First look for a shared library.
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do
+ if test "X$found_dir" = "X"; then
+ eval dir=\$$additional_libdir_variable
+ if test -n "$dir"; then
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
- found_so="$dir/$f"
- break
+ found_a="$dir/$libname.$acl_libext"
fi
- done
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
fi
fi
- fi
- dnl Then look for a static library.
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
+ done
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIB[]NAME; do
@@ -1989,7 +2422,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dir=`echo "X$x" | sed -e 's/^X-L//'`
dnl First look for a shared library.
if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
@@ -1999,14 +2432,14 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
- if test -f "$dir/$f"; then
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
@@ -2017,7 +2450,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
fi
dnl Then look for a static library.
if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
@@ -2043,7 +2476,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dnl standard /usr/lib.
if test "$enable_rpath" = no \
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then
dnl No hardcoding is needed.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else
@@ -2143,6 +2577,13 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
fi
additional_includedir="$basedir/include"
;;
+ */$acl_libdirstem3 | */$acl_libdirstem3/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
esac
if test "X$additional_includedir" != "X"; then
dnl Potentially add $additional_includedir to $INCNAME.
@@ -2193,19 +2634,21 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
for dep in $dependency_libs; do
case "$dep" in
-L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME.
dnl But don't add it
dnl 1. if it's the standard /usr/lib,
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
dnl 3. if it's already present in $LDFLAGS or the already
dnl constructed $LIBNAME,
dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then
if test -n "$GCC"; then
case $host_os in
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
@@ -2216,29 +2659,29 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
haveit=
for x in $LDFLAGS $LIB[]NAME; do
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ dnl Really add $dependency_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir"
fi
fi
haveit=
for x in $LDFLAGS $LTLIB[]NAME; do
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ dnl Really add $dependency_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir"
fi
fi
fi
@@ -2336,7 +2779,6 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
done
fi
- popdef([P_A_C_K])
popdef([PACKLIBS])
popdef([PACKUP])
popdef([PACK])
@@ -2387,7 +2829,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
dir="$next"
dnl No need to hardcode the standard /usr/lib.
if test "X$dir" != "X/usr/$acl_libdirstem" \
- && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ && test "X$dir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then
rpathdirs="$rpathdirs $dir"
fi
next=
@@ -2397,7 +2840,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
dnl No need to hardcode the standard /usr/lib.
if test "X$dir" != "X/usr/$acl_libdirstem" \
- && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ && test "X$dir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dir" != "X/usr/$acl_libdirstem3"; then
rpathdirs="$rpathdirs $dir"
fi
next= ;;
@@ -2442,21 +2886,14 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
AC_SUBST([$1])
])
-# lib-prefix.m4 serial 7 (gettext-0.18)
-dnl Copyright (C) 2001-2005, 2008-2013 Free Software Foundation, Inc.
+# lib-prefix.m4 serial 17
+dnl Copyright (C) 2001-2005, 2008-2020 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.
dnl From Bruno Haible.
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
dnl to access previously installed libraries. The basic assumption is that
dnl a user will want packages to use other packages he previously installed
@@ -2476,9 +2913,9 @@ AC_DEFUN([AC_LIB_PREFIX],
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
+ AC_ARG_WITH([lib-prefix],
+[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir]],
[
if test "X$withval" = "Xno"; then
use_additional=no
@@ -2598,246 +3035,192 @@ AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
])
dnl AC_LIB_PREPARE_MULTILIB creates
-dnl - a variable acl_libdirstem, containing the basename of the libdir, either
-dnl "lib" or "lib64" or "lib/64",
-dnl - a variable acl_libdirstem2, as a secondary possible value for
-dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
-dnl "lib/amd64".
+dnl - a function acl_is_expected_elfclass, that tests whether standard input
+dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI,
+dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing
+dnl the basename of the libdir to try in turn, either "lib" or "lib64" or
+dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar.
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
[
- dnl There is no formal standard regarding lib and lib64.
- dnl On glibc systems, the current practice is that on a system supporting
+ dnl There is no formal standard regarding lib, lib32, and lib64.
+ dnl On most glibc systems, the current practice is that on a system supporting
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
- dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
- dnl the compiler's default mode by looking at the compiler's library search
- dnl path. If at least one of its elements ends in /lib64 or points to a
- dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
- dnl Otherwise we use the default, namely "lib".
+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on
+ dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go
+ dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib.
+ dnl We determine the compiler's default mode by looking at the compiler's
+ dnl library search path. If at least one of its elements ends in /lib64 or
+ dnl points to a directory whose absolute pathname ends in /lib64, we use that
+ dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default,
+ dnl namely "lib".
dnl On Solaris systems, the current practice is that on a system supporting
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
AC_REQUIRE([AC_CANONICAL_HOST])
- acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
- dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
- dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
- dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
- dnl symlink is missing, so we set acl_libdirstem2 too.
- AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
- [AC_EGREP_CPP([sixtyfour bits], [
-#ifdef _LP64
-sixtyfour bits
-#endif
- ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
- ])
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-])
-
-# lock.m4 serial 13 (gettext-0.18.2)
-dnl Copyright (C) 2005-2013 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_LOCK],
-[
- AC_REQUIRE([gl_THREADLIB])
- if test "$gl_threads_api" = posix; then
- # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
- # pthread_rwlock_* functions.
- AC_CHECK_TYPE([pthread_rwlock_t],
- [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
- [Define if the POSIX multithreading library has read/write locks.])],
- [],
- [#include <pthread.h>])
- # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM(
- [[#include <pthread.h>]],
- [[
-#if __FreeBSD__ == 4
-error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
-#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \
- && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
-error "No, in Mac OS X < 10.7 recursive mutexes actually don't work."
-#else
-int x = (int)PTHREAD_MUTEX_RECURSIVE;
-return !x;
-#endif
- ]])],
- [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
- [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
- fi
- gl_PREREQ_LOCK
-])
-
-# Prerequisites of lib/glthread/lock.c.
-AC_DEFUN([gl_PREREQ_LOCK], [:])
-
-# longlong.m4 serial 17
-dnl Copyright (C) 1999-2007, 2009-2013 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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_LONG_LONG_INT if 'long long int' works.
-# This fixes a bug in Autoconf 2.61, and can be faster
-# than what's in Autoconf 2.62 through 2.68.
-
-# Note: If the type 'long long int' exists but is only 32 bits large
-# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
-# defined. In this case you can treat 'long long int' like 'long int'.
-
-AC_DEFUN([AC_TYPE_LONG_LONG_INT],
-[
- AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
- AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
- [ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
- dnl If cross compiling, assume the bug is not important, since
- dnl nobody cross compiles for this platform as far as we know.
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM(
- [[@%:@include <limits.h>
- @%:@ifndef LLONG_MAX
- @%:@ define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- @%:@ define LLONG_MAX (HALF - 1 + HALF)
- @%:@endif]],
- [[long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;]])],
- [],
- [ac_cv_type_long_long_int=no],
- [:])
- fi
- fi])
- if test $ac_cv_type_long_long_int = yes; then
- AC_DEFINE([HAVE_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type 'long long int'.])
- fi
-])
-
-# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
-# This fixes a bug in Autoconf 2.61, and can be faster
-# than what's in Autoconf 2.62 through 2.68.
-
-# Note: If the type 'unsigned long long int' exists but is only 32 bits
-# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
-# will not be defined. In this case you can treat 'unsigned long long int'
-# like 'unsigned long int'.
-
-AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
-[
- AC_CACHE_CHECK([for unsigned long long int],
- [ac_cv_type_unsigned_long_long_int],
- [ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- AC_LINK_IFELSE(
- [_AC_TYPE_LONG_LONG_SNIPPET],
- [],
- [ac_cv_type_unsigned_long_long_int=no])
- fi])
- if test $ac_cv_type_unsigned_long_long_int = yes; then
- AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
- [Define to 1 if the system has the type 'unsigned long long int'.])
+ AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
+
+ AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf],
+ [AC_EGREP_CPP([Extensible Linking Format],
+ [#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+ ],
+ [gl_cv_elf=yes],
+ [gl_cv_elf=no])
+ ])
+ if test $gl_cv_elf; then
+ # Extract the ELF class of a file (5th byte) in decimal.
+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
+ if od -A x < /dev/null >/dev/null 2>/dev/null; then
+ # Use POSIX od.
+ func_elfclass ()
+ {
+ od -A n -t d1 -j 4 -N 1
+ }
+ else
+ # Use BSD hexdump.
+ func_elfclass ()
+ {
+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "'
+ echo
+ }
+ fi
+changequote(,)dnl
+ case $HOST_CPU_C_ABI_32BIT in
+ yes)
+ # 32-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 1
+ }
+ ;;
+ no)
+ # 64-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 2
+ }
+ ;;
+ *)
+ # Unknown.
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
+ ;;
+ esac
+changequote([,])dnl
+ else
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
fi
-])
-# Expands to a C program that can be used to test for simultaneous support
-# of 'long long' and 'unsigned long long'. We don't want to say that
-# 'long long' is available if 'unsigned long long' is not, or vice versa,
-# because too many programs rely on the symmetry between signed and unsigned
-# integer types (excluding 'bool').
-AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
-[
- AC_LANG_PROGRAM(
- [[/* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;]],
- [[/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));]])
+ dnl Allow the user to override the result by setting acl_cv_libdirstems.
+ AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
+ [acl_cv_libdirstems],
+ [dnl Try 'lib' first, because that's the default for libdir in GNU, see
+ dnl <https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>.
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ acl_libdirstem3=
+ case "$host_os" in
+ solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ acl_libdirstem2=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem3=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ dnl If $CC generates code for a 32-bit ABI, the libraries are
+ dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64.
+ dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries
+ dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32.
+ dnl Find the compiler's search path. However, non-system compilers
+ dnl sometimes have odd library search paths. But we can't simply invoke
+ dnl '/usr/bin/gcc -print-search-dirs' because that would not take into
+ dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS.
+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \
+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test $HOST_CPU_C_ABI_32BIT != no; then
+ # 32-bit or unknown ABI.
+ if test -d /usr/lib32; then
+ acl_libdirstem2=lib32
+ fi
+ fi
+ if test $HOST_CPU_C_ABI_32BIT != yes; then
+ # 64-bit or unknown ABI.
+ if test -d /usr/lib64; then
+ acl_libdirstem3=lib64
+ fi
+ fi
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64 ) acl_libdirstem3=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ if test $HOST_CPU_C_ABI_32BIT = yes; then
+ # 32-bit ABI.
+ acl_libdirstem3=
+ fi
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ # 64-bit ABI.
+ acl_libdirstem2=
+ fi
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem"
+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3"
+ ])
+ dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and
+ dnl acl_libdirstem3.
+changequote(,)dnl
+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'`
+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'`
+changequote([,])dnl
])
-# nls.m4 serial 5 (gettext-0.18)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation,
-dnl Inc.
+# nls.m4 serial 6 (gettext-0.20.2)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2020 Free
+dnl 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.
dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
@@ -2857,32 +3240,63 @@ AC_DEFUN([AM_NLS],
AC_SUBST([USE_NLS])
])
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# 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 2 of the License, or
-# (at your option) any later version.
-#
-# This program 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 12 (pkg-config-0.29.2)
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
+dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29.2])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+ [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
@@ -2904,18 +3318,19 @@ if test -n "$PKG_CONFIG"; then
PKG_CONFIG=""
fi
fi[]dnl
-])# PKG_PROG_PKG_CONFIG
+])dnl PKG_PROG_PKG_CONFIG
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurrence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
AC_DEFUN([PKG_CHECK_EXISTS],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
if test -n "$PKG_CONFIG" && \
@@ -2925,8 +3340,10 @@ m4_ifvaln([$3], [else
$3])dnl
fi])
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
m4_define([_PKG_CONFIG],
[if test -n "$$1"; then
pkg_cv_[]$1="$$1"
@@ -2938,10 +3355,11 @@ m4_define([_PKG_CONFIG],
else
pkg_failed=untried
fi[]dnl
-])# _PKG_CONFIG
+])dnl _PKG_CONFIG
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -2949,26 +3367,24 @@ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
else
_pkg_short_errors_supported=no
fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
AC_DEFUN([PKG_CHECK_MODULES],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
-AC_MSG_CHECKING([for $1])
+AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -2978,11 +3394,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
+ else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
@@ -2999,7 +3415,7 @@ installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -3015,16 +3431,40 @@ else
AC_MSG_RESULT([yes])
$3
fi[]dnl
-])# PKG_CHECK_MODULES
+])dnl PKG_CHECK_MODULES
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
AC_DEFUN([PKG_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
m4_pushdef([pkg_description],
@@ -3035,16 +3475,18 @@ AC_ARG_WITH([pkgconfigdir],
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
+])dnl PKG_INSTALLDIR
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
m4_pushdef([pkg_description],
@@ -3055,13 +3497,15 @@ AC_ARG_WITH([noarch-pkgconfigdir],
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
+])dnl PKG_NOARCH_INSTALLDIR
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
AC_DEFUN([PKG_CHECK_VAR],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
@@ -3070,21 +3514,21 @@ _PKG_CONFIG([$1], [variable="][$3]["], [$2])
AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
+])dnl PKG_CHECK_VAR
-# po.m4 serial 21 (gettext-0.18.3)
-dnl Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# po.m4 serial 31 (gettext-0.20.2)
+dnl Copyright (C) 1995-2014, 2016, 2018-2020 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.
dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
@@ -3104,7 +3548,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
dnl Release version of the gettext macros. This is used to ensure that
dnl the gettext macros and po/Makefile.in.in are in sync.
- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.20])
dnl Perform the following tests also if --disable-nls has been given,
dnl because they are needed for "make dist" to work.
@@ -3120,13 +3564,6 @@ AC_DEFUN([AM_PO_SUBDIRS],
dnl Test whether it is GNU msgfmt >= 0.15.
changequote(,)dnl
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-changequote([,])dnl
- AC_SUBST([MSGFMT_015])
-changequote(,)dnl
case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
*) GMSGFMT_015=$GMSGFMT ;;
@@ -3157,11 +3594,21 @@ changequote([,])dnl
AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
[$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
- dnl Installation directories.
- dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
- dnl have to define it here, so that it can be used in po/Makefile.
- test -n "$localedir" || localedir='${datadir}/locale'
- AC_SUBST([localedir])
+ dnl Test whether it is GNU msgmerge >= 0.20.
+ if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt'
+ else
+ dnl Test whether it is GNU msgmerge >= 0.12.
+ if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet'
+ else
+ dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is
+ dnl slow. But this is not a big problem, as such old gettext versions are
+ dnl hardly in use any more.
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet'
+ fi
+ fi
+ AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION])
dnl Support for AM_XGETTEXT_OPTION.
test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
@@ -3204,14 +3651,11 @@ changequote([,])dnl
if test -n "$OBSOLETE_ALL_LINGUAS"; then
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
fi
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
fi
# Compute POFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
@@ -3282,9 +3726,8 @@ changequote([,])dnl
esac
done]],
[# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake < 1.5.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+ OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
# Capture the value of LINGUAS because we need it to compute CATALOGS.
LINGUAS="${LINGUAS-%UNSET%}"
])
@@ -3385,15 +3828,13 @@ changequote([,])dnl
fi
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
# The LINGUAS file contains the set of available languages.
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
- ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ ALL_LINGUAS=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
fi
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
# Compute POFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
# Compute UPDATEPOFILES
@@ -3403,9 +3844,9 @@ changequote([,])dnl
# Compute GMOFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
# Compute PROPERTIESFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).properties)
# Compute CLASSFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).class)
# Compute QMFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
# Compute MSGFILES
@@ -3430,8 +3871,8 @@ changequote([,])dnl
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
- CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+ PROPERTIESFILES="$PROPERTIESFILES \$(srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(srcdir)/\$(DOMAIN)_$lang.class"
QMFILES="$QMFILES $srcdirpre$lang.qm"
frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
@@ -3526,68 +3967,19 @@ AC_DEFUN([AM_XGETTEXT_OPTION],
XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
])
-# printf-posix.m4 serial 6 (gettext-0.18.2)
-dnl Copyright (C) 2003, 2007, 2009-2013 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.
-
-dnl From Bruno Haible.
-dnl Test whether the printf() function supports POSIX/XSI format strings with
-dnl positions.
-
-AC_DEFUN([gt_PRINTF_POSIX],
-[
- AC_REQUIRE([AC_PROG_CC])
- AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
- gt_cv_func_printf_posix,
- [
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
- dollar expansion (possibly an autoconf bug). */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
- sprintf (buf, format, 33, 55);
- return (strcmp (buf, "55 33") != 0);
-}]])],
- [gt_cv_func_printf_posix=yes],
- [gt_cv_func_printf_posix=no],
- [
- AC_EGREP_CPP([notposix], [
-#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
- notposix
-#endif
- ],
- [gt_cv_func_printf_posix="guessing no"],
- [gt_cv_func_printf_posix="guessing yes"])
- ])
- ])
- case $gt_cv_func_printf_posix in
- *yes)
- AC_DEFINE([HAVE_POSIX_PRINTF], [1],
- [Define if your printf() function supports format strings with positions.])
- ;;
- esac
-])
-
-# progtest.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1996-2003, 2005, 2008-2013 Free Software Foundation, Inc.
+# progtest.m4 serial 8 (gettext-0.20.2)
+dnl Copyright (C) 1996-2003, 2005, 2008-2020 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.
dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
@@ -3667,664 +4059,4 @@ fi
AC_SUBST([$1])dnl
])
-# size_max.m4 serial 10
-dnl Copyright (C) 2003, 2005-2006, 2008-2013 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.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gl_SIZE_MAX],
-[
- AC_CHECK_HEADERS([stdint.h])
- dnl First test whether the system already has SIZE_MAX.
- AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
- gl_cv_size_max=
- AC_EGREP_CPP([Found it], [
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-], [gl_cv_size_max=yes])
- if test -z "$gl_cv_size_max"; then
- dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
- dnl than the type 'unsigned long'. Try hard to find a definition that can
- dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
- AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
- [#include <stddef.h>
-#include <limits.h>], [size_t_bits_minus_1=])
- AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
- [#include <stddef.h>], [fits_in_uint=])
- if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
- if test $fits_in_uint = 1; then
- dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
- dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <stddef.h>
- extern size_t foo;
- extern unsigned long foo;
- ]],
- [[]])],
- [fits_in_uint=0])
- fi
- dnl We cannot use 'expr' to simplify this expression, because 'expr'
- dnl works only with 'long' integers in the host environment, while we
- dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
- if test $fits_in_uint = 1; then
- gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
- else
- gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
- fi
- else
- dnl Shouldn't happen, but who knows...
- gl_cv_size_max='((size_t)~(size_t)0)'
- fi
- fi
- ])
- if test "$gl_cv_size_max" != yes; then
- AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
- [Define as the maximum value of type 'size_t', if the system doesn't define it.])
- fi
- dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
- dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
- dnl #define by AC_DEFINE_UNQUOTED.
- AH_VERBATIM([SIZE_MAX],
-[/* Define as the maximum value of type 'size_t', if the system doesn't define
- it. */
-#ifndef SIZE_MAX
-# undef SIZE_MAX
-#endif])
-])
-
-dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
-dnl Remove this when we can assume autoconf >= 2.61.
-m4_ifdef([AC_COMPUTE_INT], [], [
- AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
-])
-
-# stdint_h.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006, 2008-2013 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.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([gl_AC_HEADER_STDINT_H],
-[
- AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <sys/types.h>
- #include <stdint.h>]],
- [[uintmax_t i = (uintmax_t) -1; return !i;]])],
- [gl_cv_header_stdint_h=yes],
- [gl_cv_header_stdint_h=no])])
- if test $gl_cv_header_stdint_h = yes; then
- AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
- [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-
-# threadlib.m4 serial 10 (gettext-0.18.2)
-dnl Copyright (C) 2005-2013 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.
-
-dnl From Bruno Haible.
-
-dnl gl_THREADLIB
-dnl ------------
-dnl Tests for a multithreading library to be used.
-dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
-dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
-dnl default is 'no', otherwise it is system dependent. In both cases, the user
-dnl can change the choice through the options --enable-threads=choice or
-dnl --disable-threads.
-dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
-dnl USE_PTH_THREADS, USE_WINDOWS_THREADS
-dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
-dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
-dnl libtool).
-dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
-dnl programs that really need multithread functionality. The difference
-dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
-dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
-dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
-dnl multithread-safe programs.
-
-AC_DEFUN([gl_THREADLIB_EARLY],
-[
- AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
-])
-
-dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
-
-AC_DEFUN([gl_THREADLIB_EARLY_BODY],
-[
- dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
- dnl influences the result of the autoconf tests that test for *_unlocked
- dnl declarations, on AIX 5 at least. Therefore it must come early.
- AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
- AC_BEFORE([$0], [gl_ARGP])dnl
-
- AC_REQUIRE([AC_CANONICAL_HOST])
- dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
- dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
- dnl AC_GNU_SOURCE.
- m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
- [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
- [AC_REQUIRE([AC_GNU_SOURCE])])
- dnl Check for multithreading.
- m4_ifdef([gl_THREADLIB_DEFAULT_NO],
- [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
- [m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
- AC_ARG_ENABLE([threads],
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
-AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
- [gl_use_threads=$enableval],
- [if test -n "$gl_use_threads_default"; then
- gl_use_threads="$gl_use_threads_default"
- else
-changequote(,)dnl
- case "$host_os" in
- dnl Disable multithreading by default on OSF/1, because it interferes
- dnl with fork()/exec(): When msgexec is linked with -lpthread, its
- dnl child process gets an endless segmentation fault inside execvp().
- dnl Disable multithreading by default on Cygwin 1.5.x, because it has
- dnl bugs that lead to endless loops or crashes. See
- dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
- osf*) gl_use_threads=no ;;
- cygwin*)
- case `uname -r` in
- 1.[0-5].*) gl_use_threads=no ;;
- *) gl_use_threads=yes ;;
- esac
- ;;
- *) gl_use_threads=yes ;;
- esac
-changequote([,])dnl
- fi
- ])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # For using <pthread.h>:
- case "$host_os" in
- osf*)
- # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
- # groks <pthread.h>. cc also understands the flag -pthread, but
- # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
- # 2. putting a flag into CPPFLAGS that has an effect on the linker
- # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
- # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
- CPPFLAGS="$CPPFLAGS -D_REENTRANT"
- ;;
- esac
- # Some systems optimize for single-threaded programs by default, and
- # need special flags to disable these optimizations. For example, the
- # definition of 'errno' in <errno.h>.
- case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
- solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
- esac
- fi
-])
-
-dnl The guts of gl_THREADLIB. Needs to be expanded only once.
-
-AC_DEFUN([gl_THREADLIB_BODY],
-[
- AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
- gl_threads_api=none
- LIBTHREAD=
- LTLIBTHREAD=
- LIBMULTITHREAD=
- LTLIBMULTITHREAD=
- if test "$gl_use_threads" != no; then
- dnl Check whether the compiler and linker support weak declarations.
- AC_CACHE_CHECK([whether imported symbols can be declared weak],
- [gl_cv_have_weak],
- [gl_cv_have_weak=no
- dnl First, test whether the compiler accepts it syntactically.
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[extern void xyzzy ();
-#pragma weak xyzzy]],
- [[xyzzy();]])],
- [gl_cv_have_weak=maybe])
- if test $gl_cv_have_weak = maybe; then
- dnl Second, test whether it actually works. On Cygwin 1.7.2, with
- dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
-#include <stdio.h>
-#pragma weak fputs
-int main ()
-{
- return (fputs == NULL);
-}]])],
- [gl_cv_have_weak=yes],
- [gl_cv_have_weak=no],
- [dnl When cross-compiling, assume that only ELF platforms support
- dnl weak symbols.
- AC_EGREP_CPP([Extensible Linking Format],
- [#ifdef __ELF__
- Extensible Linking Format
- #endif
- ],
- [gl_cv_have_weak="guessing yes"],
- [gl_cv_have_weak="guessing no"])
- ])
- fi
- ])
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
- # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
- AC_CHECK_HEADER([pthread.h],
- [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
- if test "$gl_have_pthread_h" = yes; then
- # Other possible tests:
- # -lpthreads (FSU threads, PCthreads)
- # -lgthreads
- gl_have_pthread=
- # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
- # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
- # the second one only in libpthread, and lock.c needs it.
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <pthread.h>]],
- [[pthread_mutex_lock((pthread_mutex_t*)0);
- pthread_mutexattr_init((pthread_mutexattr_t*)0);]])],
- [gl_have_pthread=yes])
- # Test for libpthread by looking for pthread_kill. (Not pthread_self,
- # since it is defined as a macro on OSF/1.)
- if test -n "$gl_have_pthread"; then
- # The program links fine without libpthread. But it may actually
- # need to link with libpthread in order to create multiple threads.
- AC_CHECK_LIB([pthread], [pthread_kill],
- [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
- # On Solaris and HP-UX, most pthread functions exist also in libc.
- # Therefore pthread_in_use() needs to actually try to create a
- # thread: pthread_create from libc will fail, whereas
- # pthread_create will actually create a thread.
- case "$host_os" in
- solaris* | hpux*)
- AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
- [Define if the pthread_in_use() detection is hard.])
- esac
- ])
- else
- # Some library is needed. Try libpthread and libc_r.
- AC_CHECK_LIB([pthread], [pthread_kill],
- [gl_have_pthread=yes
- LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
- if test -z "$gl_have_pthread"; then
- # For FreeBSD 4.
- AC_CHECK_LIB([c_r], [pthread_kill],
- [gl_have_pthread=yes
- LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
- LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
- fi
- fi
- if test -n "$gl_have_pthread"; then
- gl_threads_api=posix
- AC_DEFINE([USE_POSIX_THREADS], [1],
- [Define if the POSIX multithreading library can be used.])
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
- [Define if references to the POSIX multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- fi
- fi
- fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
- gl_have_solaristhread=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lthread"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#include <thread.h>
-#include <synch.h>
- ]],
- [[thr_self();]])],
- [gl_have_solaristhread=yes])
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_solaristhread"; then
- gl_threads_api=solaris
- LIBTHREAD=-lthread
- LTLIBTHREAD=-lthread
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_SOLARIS_THREADS], [1],
- [Define if the old Solaris multithreading library can be used.])
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
- [Define if references to the old Solaris multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- fi
- fi
- if test "$gl_use_threads" = pth; then
- gl_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_LINKFLAGS([pth])
- gl_have_pth=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBPTH"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
- [gl_have_pth=yes])
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_pth"; then
- gl_threads_api=pth
- LIBTHREAD="$LIBPTH"
- LTLIBTHREAD="$LTLIBPTH"
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
- AC_DEFINE([USE_PTH_THREADS], [1],
- [Define if the GNU Pth multithreading library can be used.])
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
- AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
- [Define if references to the GNU Pth multithreading library should be made weak.])
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- else
- CPPFLAGS="$gl_save_CPPFLAGS"
- fi
- fi
- if test -z "$gl_have_pthread"; then
- case "$gl_use_threads" in
- yes | windows | win32) # The 'win32' is for backward compatibility.
- if { case "$host_os" in
- mingw*) true;;
- *) false;;
- esac
- }; then
- gl_threads_api=windows
- AC_DEFINE([USE_WINDOWS_THREADS], [1],
- [Define if the native Windows multithreading API can be used.])
- fi
- ;;
- esac
- fi
- fi
- AC_MSG_CHECKING([for multithread API to use])
- AC_MSG_RESULT([$gl_threads_api])
- AC_SUBST([LIBTHREAD])
- AC_SUBST([LTLIBTHREAD])
- AC_SUBST([LIBMULTITHREAD])
- AC_SUBST([LTLIBMULTITHREAD])
-])
-
-AC_DEFUN([gl_THREADLIB],
-[
- AC_REQUIRE([gl_THREADLIB_EARLY])
- AC_REQUIRE([gl_THREADLIB_BODY])
-])
-
-
-dnl gl_DISABLE_THREADS
-dnl ------------------
-dnl Sets the gl_THREADLIB default so that threads are not used by default.
-dnl The user can still override it at installation time, by using the
-dnl configure option '--enable-threads'.
-
-AC_DEFUN([gl_DISABLE_THREADS], [
- m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
-])
-
-
-dnl Survey of platforms:
-dnl
-dnl Platform Available Compiler Supports test-lock
-dnl flavours option weak result
-dnl --------------- --------- --------- -------- ---------
-dnl Linux 2.4/glibc posix -lpthread Y OK
-dnl
-dnl GNU Hurd/glibc posix
-dnl
-dnl FreeBSD 5.3 posix -lc_r Y
-dnl posix -lkse ? Y
-dnl posix -lpthread ? Y
-dnl posix -lthr Y
-dnl
-dnl FreeBSD 5.2 posix -lc_r Y
-dnl posix -lkse Y
-dnl posix -lthr Y
-dnl
-dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
-dnl
-dnl NetBSD 1.6 --
-dnl
-dnl OpenBSD 3.4 posix -lpthread Y OK
-dnl
-dnl Mac OS X 10.[123] posix -lpthread Y OK
-dnl
-dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
-dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
-dnl
-dnl HP-UX 11 posix -lpthread N (cc) OK
-dnl Y (gcc)
-dnl
-dnl IRIX 6.5 posix -lpthread Y 0.5
-dnl
-dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
-dnl
-dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
-dnl -lpthread (gcc) Y
-dnl
-dnl Cygwin posix -lpthread Y OK
-dnl
-dnl Any of the above pth -lpth 0.0
-dnl
-dnl Mingw windows N OK
-dnl
-dnl BeOS 5 --
-dnl
-dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
-dnl turned off:
-dnl OK if all three tests terminate OK,
-dnl 0.5 if the first test terminates OK but the second one loops endlessly,
-dnl 0.0 if the first test already loops endlessly.
-
-# uintmax_t.m4 serial 12
-dnl Copyright (C) 1997-2004, 2007-2013 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.
-
-dnl From Paul Eggert.
-
-AC_PREREQ([2.13])
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
-[
- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([gl_AC_HEADER_STDINT_H])
- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
- AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
- test $ac_cv_type_unsigned_long_long_int = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
- AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
- [Define to unsigned long or unsigned long long
- if <stdint.h> and <inttypes.h> don't define.])
- else
- AC_DEFINE([HAVE_UINTMAX_T], [1],
- [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
- fi
-])
-
-# visibility.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2005, 2008, 2010-2013 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.
-
-dnl From Bruno Haible.
-
-dnl Tests whether the compiler supports the command-line option
-dnl -fvisibility=hidden and the function and variable attributes
-dnl __attribute__((__visibility__("hidden"))) and
-dnl __attribute__((__visibility__("default"))).
-dnl Does *not* test for __visibility__("protected") - which has tricky
-dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
-dnl Mac OS X.
-dnl Does *not* test for __visibility__("internal") - which has processor
-dnl dependent semantics.
-dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
-dnl "really only recommended for legacy code".
-dnl Set the variable CFLAG_VISIBILITY.
-dnl Defines and sets the variable HAVE_VISIBILITY.
-
-AC_DEFUN([gl_VISIBILITY],
-[
- AC_REQUIRE([AC_PROG_CC])
- CFLAG_VISIBILITY=
- HAVE_VISIBILITY=0
- if test -n "$GCC"; then
- dnl First, check whether -Werror can be added to the command line, or
- dnl whether it leads to an error because of some other option that the
- dnl user has put into $CC $CFLAGS $CPPFLAGS.
- AC_MSG_CHECKING([whether the -Werror option is usable])
- AC_CACHE_VAL([gl_cv_cc_vis_werror], [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror"
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM([[]], [[]])],
- [gl_cv_cc_vis_werror=yes],
- [gl_cv_cc_vis_werror=no])
- CFLAGS="$gl_save_CFLAGS"])
- AC_MSG_RESULT([$gl_cv_cc_vis_werror])
- dnl Now check whether visibility declarations are supported.
- AC_MSG_CHECKING([for simple visibility declarations])
- AC_CACHE_VAL([gl_cv_cc_visibility], [
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fvisibility=hidden"
- dnl We use the option -Werror and a function dummyfunc, because on some
- dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
- dnl "visibility attribute not supported in this configuration; ignored"
- dnl at the first function definition in every compilation unit, and we
- dnl don't want to use the option in this case.
- if test $gl_cv_cc_vis_werror = yes; then
- CFLAGS="$CFLAGS -Werror"
- fi
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
- extern __attribute__((__visibility__("default"))) int exportedvar;
- extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
- extern __attribute__((__visibility__("default"))) int exportedfunc (void);
- void dummyfunc (void) {}
- ]],
- [[]])],
- [gl_cv_cc_visibility=yes],
- [gl_cv_cc_visibility=no])
- CFLAGS="$gl_save_CFLAGS"])
- AC_MSG_RESULT([$gl_cv_cc_visibility])
- if test $gl_cv_cc_visibility = yes; then
- CFLAG_VISIBILITY="-fvisibility=hidden"
- HAVE_VISIBILITY=1
- fi
- fi
- AC_SUBST([CFLAG_VISIBILITY])
- AC_SUBST([HAVE_VISIBILITY])
- AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
- [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
-])
-
-# wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-2013 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.
-
-dnl From Bruno Haible.
-dnl Test whether <stddef.h> has the 'wchar_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WCHAR_T],
-[
- AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';]],
- [[]])],
- [gt_cv_c_wchar_t=yes],
- [gt_cv_c_wchar_t=no])])
- if test $gt_cv_c_wchar_t = yes; then
- AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
- fi
-])
-
-# wint_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2003, 2007-2013 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.
-
-dnl From Bruno Haible.
-dnl Test whether <wchar.h> has the 'wint_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WINT_T],
-[
- AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- wint_t foo = (wchar_t)'\0';]],
- [[]])],
- [gt_cv_c_wint_t=yes],
- [gt_cv_c_wint_t=no])])
- if test $gt_cv_c_wint_t = yes; then
- AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
- fi
-])
-
-# xsize.m4 serial 5
-dnl Copyright (C) 2003-2004, 2008-2013 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([gl_XSIZE],
-[
- dnl Prerequisites of lib/xsize.h.
- AC_REQUIRE([gl_SIZE_MAX])
- AC_CHECK_HEADERS([stdint.h])
-])
-
m4_include([acinclude.m4])
diff --git a/config/config.guess b/config/config.guess
index 8ca6a44c..45001cfe 100644..100755
--- a/config/config.guess
+++ b/config/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-03-01'
+timestamp='2020-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
-
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,40 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > "$dummy.c" ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
@@ -138,7 +142,7 @@ Linux|GNU|GNU/*)
# We could probably try harder.
LIBC=gnu
- eval "$set_cc_for_build"
+ set_cc_for_build
cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
@@ -199,7 +203,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval "$set_cc_for_build"
+ set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -237,7 +241,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi}"
+ echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -260,6 +264,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:SolidBSD:*:*)
echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
@@ -269,12 +276,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:Sortix:*:*)
echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
*:Redox:*:*)
echo "$UNAME_MACHINE"-unknown-redox
exit ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -389,7 +399,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
@@ -482,7 +492,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
@@ -579,7 +589,7 @@ EOF
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
@@ -660,7 +670,7 @@ EOF
esac
fi
if [ "$HP_ARCH" = "" ]; then
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
@@ -700,7 +710,7 @@ EOF
esac
if [ "$HP_ARCH" = hppa2.0w ]
then
- eval "$set_cc_for_build"
+ set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -726,7 +736,7 @@ EOF
echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
@@ -840,6 +850,17 @@ EOF
*:BSD/OS:*:*)
echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ fi
+ exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
case "$UNAME_PROCESSOR" in
@@ -881,7 +902,7 @@ EOF
echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
+ echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
@@ -894,8 +915,8 @@ EOF
# other systems with GNU libc and userland
echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
- i*86:Minix:*:*)
- echo "$UNAME_MACHINE"-pc-minix
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
exit ;;
aarch64:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -905,7 +926,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -922,7 +943,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
@@ -971,23 +992,51 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval "$set_cc_for_build"
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1100,7 +1149,7 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
@@ -1284,38 +1333,39 @@ EOF
echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval "$set_cc_for_build"
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
@@ -1358,6 +1408,7 @@ EOF
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
+ # shellcheck disable=SC2154
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
@@ -1414,8 +1465,148 @@ EOF
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+ exit ;;
esac
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
echo "$0: unable to guess system type" >&2
case "$UNAME_MACHINE:$UNAME_SYSTEM" in
@@ -1469,7 +1660,7 @@ EOF
exit 1
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/config/config.rpath b/config/config.rpath
index b625621f..98183ff2 100755
--- a/config/config.rpath
+++ b/config/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2014 Free Software Foundation, Inc.
+# Copyright 1996-2016 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
diff --git a/config/config.sub b/config/config.sub
index 0b218edc..f02d43ad 100644..100755
--- a/config/config.sub
+++ b/config/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-02-28'
+timestamp='2020-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -89,7 +89,7 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
@@ -110,1223 +110,1164 @@ case $# in
exit 1;;
esac
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
- kopensolaris*-gnu* | cloudabi*-eabi* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
- if [ "$basic_machine" != "$1" ]
- then os=`echo "$1" | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -lynx*)
- os=-lynxos
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ os=$field3-$field4
;;
- -ptx*)
- basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ os=
+ ;;
+ *)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ esac
+ ;;
+ esac
;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=linux
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ os=
+ ;;
+ esac
;;
esac
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | ba \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | e2k | epiphany \
- | fido | fr30 | frv | ft32 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia16 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 | or1k | or1knd | or32 \
- | pdp10 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pru \
- | pyramid \
- | riscv32 | riscv64 \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | wasm32 \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- leon|leon[3-9])
- basic_machine=sparc-$basic_machine
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ cpu=hppa1.1
+ vendor=winbond
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
;;
- ms1)
- basic_machine=mt-unknown
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
+ ibm*)
+ cpu=i370
+ vendor=ibm
;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
+ orion105)
+ cpu=clipper
+ vendor=highlevel
;;
- xscaleeb)
- basic_machine=armeb-unknown
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
;;
-
- xscaleel)
- basic_machine=armel-unknown
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
;;
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | ba-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa32r6-* | mipsisa32r6el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64r6-* | mipsisa64r6el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | or1k*-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pru-* \
- | pyramid-* \
- | riscv32-* | riscv64-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | visium-* \
- | wasm32-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-pc
- os=-bsd
- ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
+ cpu=m68000
+ vendor=att
;;
3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=we32k
+ vendor=att
;;
bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
+ cpu=powerpc
+ vendor=ibm
+ os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
+ cpu=m68k
+ vendor=motorola
;;
dpx2*)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- e500v[12])
- basic_machine=powerpc-unknown
- os=$os"spe"
- ;;
- e500v[12]-*)
- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=$os"spe"
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
+ cpu=m68k
+ vendor=bull
+ os=sysv3
;;
encore | umax | mmax)
- basic_machine=ns32k-encore
+ cpu=ns32k
+ vendor=encore
;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ os=${os:-bsd}
;;
fx2800)
- basic_machine=i860-alliant
+ cpu=i860
+ vendor=alliant
;;
genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
+ cpu=ns32k
+ vendor=ns
;;
h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
+ cpu=m68000
+ vendor=hp
;;
hp9k3[2-9][0-9])
- basic_machine=m68k-hp
+ cpu=m68k
+ vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
+ cpu=hppa1.0
+ vendor=hp
;;
i*86v32)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv32
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv32
;;
i*86v4*)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv4
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv4
;;
i*86v)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-sysv
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv
;;
i*86sol2)
- basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=solaris2
;;
- vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ os=${os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
+ cpu=mips
+ vendor=sgi
case $os in
- -irix*)
+ irix*)
;;
*)
- os=-irix4
+ os=irix4
;;
esac
;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- os=-moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
+ cpu=m68000
+ vendor=convergent
;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ os=mint
;;
news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
+ cpu=mips
+ vendor=sony
+ os=newsos
;;
next | m*-next)
- basic_machine=m68k-next
+ cpu=m68k
+ vendor=next
case $os in
- -nextstep* )
+ openstep*)
+ ;;
+ nextstep*)
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ os=nextstep2
;;
*)
- os=-nextstep3
+ os=nextstep3
;;
esac
;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- nsv-tandem)
- basic_machine=nsv-tandem
- ;;
- nsx-tandem)
- basic_machine=nsx-tandem
+ cpu=np1
+ vendor=gould
;;
op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
+ cpu=hppa1.1
+ vendor=oki
+ os=proelf
;;
pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=tti
;;
pbb)
- basic_machine=m68k-tti
+ cpu=m68k
+ vendor=tti
;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ pc532)
+ cpu=ns32k
+ vendor=pc532
;;
pn)
- basic_machine=pn-gould
+ cpu=pn
+ vendor=gould
;;
- power) basic_machine=power-ibm
+ power)
+ cpu=power
+ vendor=ibm
;;
- ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
+ ps2)
+ cpu=i386
+ vendor=ibm
;;
- ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ rm[46]00)
+ cpu=mips
+ vendor=siemens
;;
- ppc64le | powerpc64little)
- basic_machine=powerpc64le-unknown
+ rtpc | rtpc-*)
+ cpu=romp
+ vendor=ibm
;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ os=${os:-elf}
;;
- ps2)
- basic_machine=i386-ibm
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ os=vxworks
;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ os=proelf
;;
- rm[46]00)
- basic_machine=mips-siemens
+ none)
+ cpu=none
+ vendor=none
;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- s390 | s390-*)
- basic_machine=s390-ibm
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
+
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ os=${os:-unicosmp}
;;
- sequent)
- basic_machine=i386-sequent
+ c90-unknown | c90-cray)
+ vendor=cray
+ os=${os:-unicos}
;;
- sh5el)
- basic_machine=sh5le-unknown
+ fx80-unknown)
+ vendor=alliant
;;
- simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ romp-unknown)
+ vendor=ibm
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+ mmix-unknown)
+ vendor=knuth
;;
- spur)
- basic_machine=spur-unknown
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- st2000)
- basic_machine=m68k-tandem
+ rs6000-unknown)
+ vendor=ibm
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ vax-unknown)
+ vendor=dec
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ pdp11-unknown)
+ vendor=dec
;;
- sun2)
- basic_machine=m68000-sun
+ we32k-unknown)
+ vendor=att
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ cydra-unknown)
+ vendor=cydrome
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ i370-ibm*)
+ vendor=ibm
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ orion-unknown)
+ vendor=highlevel
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ os=${os:-bosx}
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ blackfin-*)
+ cpu=bfin
+ os=linux
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ c54x-*)
+ cpu=tic54x
;;
- sun4)
- basic_machine=sparc-sun
+ c55x-*)
+ cpu=tic55x
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ c6x-*)
+ cpu=tic6x
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ e500v[12]-*)
+ cpu=powerpc
+ os=$os"spe"
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ mips3*-*)
+ cpu=mips64
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ ms1-*)
+ cpu=mt
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+ m68knommu-*)
+ cpu=m68k
+ os=linux
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- tx39)
- basic_machine=mipstx39-unknown
+ openrisc-*)
+ cpu=or32
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ parisc-*)
+ cpu=hppa
+ os=linux
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ pentium4-*)
+ cpu=i786
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ pc98-*)
+ cpu=i386
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ ppc64-*)
+ cpu=powerpc64
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ spur-*)
+ cpu=spur
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- x64)
- basic_machine=x86_64-pc
+ tx39-*)
+ cpu=mipstx39
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ tx39el-*)
+ cpu=mipstx39el
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ x64-*)
+ cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- none)
- basic_machine=none-none
- os=-none
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ os=${os:-elf}
;;
- mmix)
- basic_machine=mmix-knuth
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- rs6000)
- basic_machine=rs6000-ibm
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- vax)
- basic_machine=vax-dec
+ crx-*)
+ os=${os:-elf}
;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ s390-*)
+ cpu=s390
+ vendor=ibm
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
+ s390x-*)
+ cpu=s390x
+ vendor=ibm
;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ os=${os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
- exit 1
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv64 \
+ | rl78 | romp | rs6000 | rx \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
+case $vendor in
+ digital*)
+ vendor=dec
;;
- *-commodore*)
- basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
+ commodore*)
+ vendor=cbm
;;
*)
;;
@@ -1334,199 +1275,243 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if [ x$os != x ]
then
case $os in
# First match some system type aliases that might get confused
# with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
;;
- -solaris1 | -solaris1.*)
+ bluegene*)
+ os=cnk
+ ;;
+ solaris1 | solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
- -solaris)
- os=-solaris2
+ solaris)
+ os=solaris2
;;
- -unixware*)
- os=-sysv4.2uw
+ unixware*)
+ os=sysv4.2uw
;;
- -gnu/linux*)
+ gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# es1800 is here to avoid being matched by es* (a different OS)
- -es1800*)
- os=-ose
+ es1800*)
+ os=ose
+ ;;
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
+ ;;
+ isc)
+ os=isc2.2
+ ;;
+ sco6)
+ os=sco5v6
+ ;;
+ sco5)
+ os=sco3.2v5
+ ;;
+ sco4)
+ os=sco3.2v4
+ ;;
+ sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ ;;
+ sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ scout)
+ # Don't match below
+ ;;
+ sco*)
+ os=sco3.2v2
+ ;;
+ psos*)
+ os=psos
;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
- | -midnightbsd*)
+ # sysv* is not here because it comes later, after sysvr4.
+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | kopensolaris* | plan9* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | knetbsd* | mirbsd* | netbsd* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+ | linux-newlib* | linux-musl* | linux-uclibc* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* \
+ | morphos* | superux* | rtmk* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix)
# Remember, each alternative MUST END IN *, to match a version number.
;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
+ qnx*)
+ case $cpu in
+ x86 | i*86)
;;
*)
- os=-nto$os
+ os=nto-$os
;;
esac
;;
- -nto-qnx*)
+ hiux*)
+ os=hiuxwe2
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ nto-qnx*)
;;
- -sim | -xray | -os68k* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- -mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ sim | xray | os68k* | v88r* \
+ | windows* | osx | abug | netware* | os9* \
+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ linux-dietlibc)
+ os=linux-dietlibc
;;
- -linux*)
+ linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
- -sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ lynx*178)
+ os=lynxos178
;;
- -sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ lynx*5)
+ os=lynxos5
+ ;;
+ lynx*)
+ os=lynxos
;;
- -opened*)
- os=-openedition
+ mac*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- -os400*)
- os=-os400
+ opened*)
+ os=openedition
;;
- -wince*)
- os=-wince
+ os400*)
+ os=os400
;;
- -utek*)
- os=-bsd
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- -dynix*)
- os=-bsd
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- -acis*)
- os=-aos
+ wince*)
+ os=wince
;;
- -atheos*)
- os=-atheos
+ utek*)
+ os=bsd
;;
- -syllable*)
- os=-syllable
+ dynix*)
+ os=bsd
;;
- -386bsd)
- os=-bsd
+ acis*)
+ os=aos
;;
- -ctix* | -uts*)
- os=-sysv
+ atheos*)
+ os=atheos
;;
- -nova*)
- os=-rtmk-nova
+ syllable*)
+ os=syllable
;;
- -ns2)
- os=-nextstep2
+ 386bsd)
+ os=bsd
;;
- -nsk*)
- os=-nsk
+ ctix* | uts*)
+ os=sysv
+ ;;
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
;;
# Preserve the version number of sinix5.
- -sinix5.*)
+ sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
- -sinix*)
- os=-sysv4
+ sinix*)
+ os=sysv4
;;
- -tpf*)
- os=-tpf
+ tpf*)
+ os=tpf
;;
- -triton*)
- os=-sysv3
+ triton*)
+ os=sysv3
;;
- -oss*)
- os=-sysv3
+ oss*)
+ os=sysv3
;;
- -svr4*)
- os=-sysv4
+ svr4*)
+ os=sysv4
;;
- -svr3)
- os=-sysv3
+ svr3)
+ os=sysv3
;;
- -sysvr4)
- os=-sysv4
+ sysvr4)
+ os=sysv4
;;
- # This must come after -sysvr4.
- -sysv*)
+ # This must come after sysvr4.
+ sysv*)
;;
- -ose*)
- os=-ose
+ ose*)
+ os=ose
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -zvmoe)
- os=-zvmoe
+ zvmoe)
+ os=zvmoe
;;
- -dicos*)
- os=-dicos
+ dicos*)
+ os=dicos
;;
- -pikeos*)
+ pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
- case $basic_machine in
+ case $cpu in
arm*)
- os=-eabi
+ os=eabi
;;
*)
- os=-elf
+ os=elf
;;
esac
;;
- -nacl*)
+ nacl*)
;;
- -ios)
+ ios)
;;
- -none)
+ none)
+ ;;
+ *-eabi)
;;
*)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
@@ -1543,258 +1528,265 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+case $cpu-$vendor in
score-*)
- os=-elf
+ os=elf
;;
spu-*)
- os=-elf
+ os=elf
;;
*-acorn)
- os=-riscix1.2
+ os=riscix1.2
;;
arm*-rebel)
- os=-linux
+ os=linux
;;
arm*-semi)
- os=-aout
+ os=aout
;;
c4x-* | tic4x-*)
- os=-coff
+ os=coff
;;
c8051-*)
- os=-elf
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
;;
hexagon-*)
- os=-elf
+ os=elf
;;
tic54x-*)
- os=-coff
+ os=coff
;;
tic55x-*)
- os=-coff
+ os=coff
;;
tic6x-*)
- os=-coff
+ os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=-tops20
+ os=tops20
;;
pdp11-*)
- os=-none
+ os=none
;;
*-dec | vax-*)
- os=-ultrix4.2
+ os=ultrix4.2
;;
m68*-apollo)
- os=-domain
+ os=domain
;;
i386-sun)
- os=-sunos4.0.2
+ os=sunos4.0.2
;;
m68000-sun)
- os=-sunos3
+ os=sunos3
;;
m68*-cisco)
- os=-aout
+ os=aout
;;
mep-*)
- os=-elf
+ os=elf
;;
mips*-cisco)
- os=-elf
+ os=elf
;;
mips*-*)
- os=-elf
+ os=elf
;;
or32-*)
- os=-coff
+ os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
+ os=sysv3
;;
sparc-* | *-sun)
- os=-sunos4.1.1
+ os=sunos4.1.1
;;
pru-*)
- os=-elf
+ os=elf
;;
*-be)
- os=-beos
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
*-next)
- os=-nextstep
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
+case $vendor in
+ unknown)
case $os in
- -riscix*)
+ riscix*)
vendor=acorn
;;
- -sunos*)
+ sunos*)
vendor=sun
;;
- -cnk*|-aix*)
+ cnk*|-aix*)
vendor=ibm
;;
- -beos*)
+ beos*)
vendor=be
;;
- -hpux*)
+ hpux*)
vendor=hp
;;
- -mpeix*)
+ mpeix*)
vendor=hp
;;
- -hiux*)
+ hiux*)
vendor=hitachi
;;
- -unos*)
+ unos*)
vendor=crds
;;
- -dgux*)
+ dgux*)
vendor=dg
;;
- -luna*)
+ luna*)
vendor=omron
;;
- -genix*)
+ genix*)
vendor=ns
;;
- -mvs* | -opened*)
+ clix*)
+ vendor=intergraph
+ ;;
+ mvs* | opened*)
vendor=ibm
;;
- -os400*)
+ os400*)
vendor=ibm
;;
- -ptx*)
+ ptx*)
vendor=sequent
;;
- -tpf*)
+ tpf*)
vendor=ibm
;;
- -vxsim* | -vxworks* | -windiss*)
+ vxsim* | vxworks* | windiss*)
vendor=wrs
;;
- -aux*)
+ aux*)
vendor=apple
;;
- -hms*)
+ hms*)
vendor=hitachi
;;
- -mpw* | -macos*)
+ mpw* | macos*)
vendor=apple
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
vendor=atari
;;
- -vos*)
+ vos*)
vendor=stratus
;;
esac
- basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
-echo "$basic_machine$os"
+echo "$cpu-$vendor-$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/configure b/configure
index 065bff76..2b379629 100755
--- a/configure
+++ b/configure
@@ -620,9 +620,6 @@ ac_includes_default="\
#endif"
gt_needs=
-ac_header_list=
-gl_use_threads_default=
-ac_func_list=
ac_subst_vars='LTLIBOBJS
LIBOBJS
systemd_system_unit_dir
@@ -683,6 +680,7 @@ DD
BUILD_CC
MAKEINFO
STRIP
+RANLIB
AR
LDCONFIG
PERL
@@ -692,6 +690,7 @@ RM
CP
MV
LN_S
+mkdir_p
LN
ifNotGNUmake
ifGNUmake
@@ -700,53 +699,19 @@ POSUB
LTLIBINTL
LIBINTL
INTLLIBS
-INTL_LIBTOOL_SUFFIX_PREFIX
-INTLOBJS
-GENCAT
-INSTOBJEXT
-DATADIRNAME
-CATOBJEXT
-USE_INCLUDED_LIBINTL
-BUILD_INCLUDED_LIBINTL
-LTLIBC
-WINDRES
-WOE32
-WOE32DLL
-HAVE_WPRINTF
-HAVE_NEWLOCALE
-HAVE_SNPRINTF
-HAVE_ASPRINTF
-HAVE_POSIX_PRINTF
-INTL_DEFAULT_VERBOSITY
-INTL_MACOSX_LIBS
-GLIBC21
-INTLBISON
LTLIBICONV
LIBICONV
-LTLIBMULTITHREAD
-LIBMULTITHREAD
-LTLIBTHREAD
-LIBTHREAD
-LIBPTH_PREFIX
-LTLIBPTH
-LIBPTH
-PRI_MACROS_BROKEN
-ALLOCA
-HAVE_VISIBILITY
-CFLAG_VISIBILITY
-RANLIB
-GLIBC2
+INTL_MACOSX_LIBS
XGETTEXT_EXTRA_OPTIONS
+MSGMERGE_FOR_MSGFMT_OPTION
MSGMERGE
XGETTEXT_015
XGETTEXT
GMSGFMT_015
-MSGFMT_015
GMSGFMT
MSGFMT
GETTEXT_MACRO_VERSION
USE_NLS
-SED
MKDIR_P
INSTALL_DATA
INSTALL_SCRIPT
@@ -758,6 +723,11 @@ GETTEXT_PACKAGE
TDB_MAN_COMMENT
TDB_CMT
UUIDD_CMT
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+SED
E2INITRD_MAN
E2INITRD_PROG
FSCK_MAN
@@ -785,6 +755,7 @@ LIBUUID
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
+DEV_FEATURES_CMT
TEST_IO_CMT
PRIVATE_LIBS_CMT
LDFLAG_DYNAMIC
@@ -894,6 +865,7 @@ enable_hardening
enable_jbd_debug
enable_blkid_debug
enable_testio_debug
+enable_developer_features
enable_libuuid
enable_libblkid
enable_subset
@@ -905,18 +877,16 @@ enable_defrag
enable_fsck
enable_e2initrd_helper
enable_tls
+with_pthread
enable_uuidd
enable_mmp
enable_tdb
enable_bmap_stats
enable_bmap_stats_ops
enable_nls
-enable_threads
with_gnu_ld
enable_rpath
-with_libpth_prefix
with_libiconv_prefix
-with_included_gettext
with_libintl_prefix
enable_fuse2fs
enable_lto
@@ -1566,46 +1536,51 @@ Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-maintainer-mode enable makefile rules useful for maintainers
- --enable-symlink-install use symlinks when installing instead of hard links
- --enable-relative-symlinks use relative symlinks when installing
+ --enable-maintainer-mode
+ enable makefile rules useful for maintainers
+ --enable-symlink-install
+ use symlinks when installing instead of hard links
+ --enable-relative-symlinks
+ use relative symlinks when installing
--enable-symlink-build use symlinks while building instead of hard links
- --enable-verbose-makecmds enable verbose make command output
- --enable-elf-shlibs select ELF shared libraries
- --enable-bsd-shlibs select BSD shared libraries
- --enable-profile build profiling libraries
- --enable-gcov build for coverage testing using gcov
- --enable-hardening build for coverage testing using gcov
- --enable-jbd-debug enable journal debugging
+ --enable-verbose-makecmds
+ enable verbose make command output
+ --enable-elf-shlibs select ELF shared libraries
+ --enable-bsd-shlibs select BSD shared libraries
+ --enable-profile build profiling libraries
+ --enable-gcov build for coverage testing using gcov
+ --enable-hardening build for coverage testing using gcov
+ --enable-jbd-debug enable journal debugging
--enable-blkid-debug enable blkid debugging
- --disable-testio-debug disable the use of the test I/O manager for debugging
- --enable-libuuid build and use private uuid library
- --enable-libblkid build and use private blkid library
- --enable-subset enable subset-only build
- --disable-backtrace disable use backtrace
- --disable-debugfs disable support of debugfs program
- --disable-imager disable support of e2image program
- --disable-resizer disable support of e2resize program
- --disable-defrag disable support of e4defrag program
+ --disable-testio-debug disable the use of the test I/O manager for
+ debugging
+ --enable-developer-features
+ enable features for use by ext4 developers
+ --enable-libuuid build and use private uuid library
+ --enable-libblkid build and use private blkid library
+ --enable-subset enable subset-only build
+ --disable-backtrace disable use backtrace
+ --disable-debugfs disable support of debugfs program
+ --disable-imager disable support of e2image program
+ --disable-resizer disable support of e2resize program
+ --disable-defrag disable support of e4defrag program
--enable-fsck build fsck wrapper program
- --enable-e2initrd-helper build e2initrd-helper program
+ --enable-e2initrd-helper
+ build e2initrd-helper program
--disable-tls disable use of thread local support
--disable-uuidd disable building the uuid daemon
--disable-mmp disable support mmp, Multi Mount Protection
--disable-tdb disable tdb support
- --disable-bmap-stats disable collection of bitmap stats.
+ --disable-bmap-stats disable collection of bitmap stats
--enable-bmap-stats-ops enable collection of additional bitmap stats
--disable-nls do not use Native Language Support
- --enable-threads={posix|solaris|pth|windows}
- specify multithreading API
- --disable-threads build without multithread safety
--disable-rpath do not hardcode runtime library paths
- --disable-fuse2fs do not build fuse2fs
- --enable-lto enable link time optimization
- --enable-ubsan enable undefined behavior sanitizer
- --enable-addrsan enable address sanitizer
- --enable-threadsan enable thread sanitizer
+ --disable-fuse2fs do not build fuse2fs
+ --enable-lto enable link time optimization
+ --enable-ubsan enable undefined behavior sanitizer
+ --enable-addrsan enable address sanitizer
+ --enable-threadsan enable thread sanitizer
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1614,16 +1589,16 @@ Optional Packages:
--with-cc no longer supported, use CC= instead
--with-ccopts no longer supported, use CFLAGS= instead
--with-ldopts no longer supported, use LDFLAGS= instead
- --with-root-prefix=PREFIX override prefix variable for files to be placed in the root
+ --with-root-prefix=PREFIX
+ override prefix variable for files to be placed in
+ the root
+ --without-pthread disable use of pthread support
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib
- --without-libpth-prefix don't search for libpth in includedir and libdir
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
- --with-included-gettext use the GNU gettext library included here
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir
- --with-multiarch=ARCH specify the multiarch triplet
+ --with-multiarch=ARCH specify the multiarch triplet
--with-udev-rules-dir[=DIR]
Install udev rules into DIR.
--with-crond-dir[=DIR] Install system crontabs into DIR.
@@ -2012,60 +1987,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2133,6 +2054,117 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_func
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$4=yes"
+else
+ eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@ -2361,63 +2393,6 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
-
-# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-# ----------------------------------------------------
-# Tries to find if the field MEMBER exists in type AGGR, after including
-# INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$4=yes"
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$4=yes"
-else
- eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_member
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
@@ -2703,10 +2678,6 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
fi
gt_needs="$gt_needs "
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
-as_fn_append ac_func_list " symlink"
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -5168,6 +5139,30 @@ TEST_IO_CMT=
fi
+# Check whether --enable-developer-features was given.
+if test "${enable_developer_features+set}" = set; then :
+ enableval=$enable_developer_features;
+if test "$enableval" = "yes"
+then
+ DEV_FEATURES_CMT=
+ $as_echo "#define CONFIG_DEVELOPER_FEATURES 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Enabling ext4 developer features" >&5
+$as_echo "Enabling ext4 developer features" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling ext4 developer features" >&5
+$as_echo "Disabling ext4 developer features" >&6; }
+ DEV_FEATURES_CMT="#"
+fi
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling ext4 developer features by default" >&5
+$as_echo "Disabling ext4 developer features by default" >&6; }
+DEV_FEATURES_CMT=
+
+fi
+
+
@@ -5961,6 +5956,743 @@ $as_echo "$ac_cv_tls" >&6; }
fi
+# Check whether --with-pthread was given.
+if test "${with_pthread+set}" = set; then :
+ withval=$with_pthread; if test "$withval" = "no"
+then
+ try_pthread=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling pthread support" >&5
+$as_echo "Disabling pthread support" >&6; }
+else
+ try_pthread="yes"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Testing for pthread support" >&5
+$as_echo "Testing for pthread support" >&6; }
+fi
+
+else
+ try_pthread="yes"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Try testing for pthread support by default" >&5
+$as_echo "Try testing for pthread support by default" >&6; }
+
+fi
+
+if test "$try_pthread" = "yes"
+then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on Tru64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+ ax_pthread_save_CC="$CC"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ if test "x$PTHREAD_CC" != "x"; then :
+ CC="$PTHREAD_CC"
+fi
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+ if test "x$ax_pthread_ok" = "xno"; then
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+ fi
+ CC="$ax_pthread_save_CC"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try. Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important. Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+# other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+# (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+# doesn't hurt to check since this sometimes defines pthreads and
+# -D_REENTRANT too), HP C (must be checked before -lpthread, which
+# is present but should not be used directly; and before -mthreads,
+# because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case $host_os in
+
+ freebsd*)
+
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+ ;;
+
+ hpux*)
+
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+ # multi-threading and also sets -lpthread."
+
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+ ;;
+
+ openedition*)
+
+ # IBM z/OS requires a feature-test macro to be defined in order to
+ # enable POSIX threads at all, so give the user a hint if this is
+ # not set. (We don't define these ourselves, as they can affect
+ # other portions of the system API in unpredictable ways.)
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+ AX_PTHREAD_ZOS_MISSING
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+ ;;
+
+ solaris*)
+
+ # On Solaris (at least, for some versions), libc contains stubbed
+ # (non-functional) versions of the pthreads routines, so link-based
+ # tests will erroneously succeed. (N.B.: The stubs are missing
+ # pthread_cleanup_push, or rather a function called by this macro,
+ # so we could check for that, but who knows whether they'll stub
+ # that too in a future libc.) So we'll check first for the
+ # standard Solaris way of linking pthreads (-mt -lpthread).
+
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
+ ;;
+esac
+
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
+
+if test "x$GCC" = "xyes"; then :
+ ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
+fi
+
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
+
+case $host_os in
+ darwin* | hpux* | linux* | osf* | solaris*)
+ ax_pthread_check_macro="_REENTRANT"
+ ;;
+
+ aix*)
+ ax_pthread_check_macro="_THREAD_SAFE"
+ ;;
+
+ *)
+ ax_pthread_check_macro="--"
+ ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+ ax_pthread_check_cond=0
+else
+ ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_CLANG=no
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
+ if test "x$GCC" = "xyes"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+# if defined(__clang__) && defined(__llvm__)
+ AX_PTHREAD_CC_IS_CLANG
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+ ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+ # Clang takes -pthread; it has never supported any other flag
+
+ # (Note 1: This will need to be revisited if a system that Clang
+ # supports has POSIX threads in a separate library. This tends not
+ # to be the way of modern systems, but it's conceivable.)
+
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
+ # to get POSIX threads support; the API is always present and
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
+ # -pthread does define _REENTRANT, and while the Darwin headers
+ # ignore this macro, third-party headers might not.)
+
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS=
+
+ ax_pthread_ok=yes
+
+ # However, older versions of Clang make a point of warning the user
+ # that, in an invocation where only linking and no compilation is
+ # taking place, the -pthread option has no effect ("argument unused
+ # during compilation"). They expect -pthread to be passed in only
+ # when source code is being compiled.
+ #
+ # Problem is, this is at odds with the way Automake and most other
+ # C build frameworks function, which is that the same flags used in
+ # compilation (CFLAGS) are also used in linking. Many systems
+ # supported by AX_PTHREAD require exactly this for POSIX threads
+ # support, and in fact it is often not straightforward to specify a
+ # flag that is used only in the compilation phase and not in
+ # linking. Such a scenario is extremely rare in practice.
+ #
+ # Even though use of the -pthread flag in linking would only print
+ # a warning, this can be a nuisance for well-run software projects
+ # that build with -Werror. So if the active version of Clang has
+ # this misfeature, we search for an option to squash it.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+ # Create an alternate version of $ac_link that compiles and
+ # links in two steps (.c -> .o, .o -> exe) instead of one
+ # (.c -> exe), because the warning occurs only in the second
+ # step
+ ax_pthread_save_ac_link="$ac_link"
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+ if test "x$ax_pthread_try" = "xunknown"; then :
+ break
+fi
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+ ac_link="$ax_pthread_save_ac_link"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_link="$ax_pthread_2step_ac_link"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+ ac_link="$ax_pthread_save_ac_link"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ if test "x$ax_pthread_try" = "x"; then :
+ ax_pthread_try=no
+fi
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+ no | unknown) ;;
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+ esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+ case $ax_pthread_try_flag in
+ none)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+ ;;
+
+ -mt,pthread)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+ PTHREAD_CFLAGS="-mt"
+ PTHREAD_LIBS="-lpthread"
+ ;;
+
+ -*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
+ ;;
+
+ pthread-config)
+ # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ax_pthread_config"; then
+ ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ax_pthread_config="yes"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ax_pthread_config" = "xno"; then :
+ continue
+fi
+ PTHREAD_CFLAGS="`pthread-config --cflags`"
+ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+ ;;
+
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
+ ;;
+ esac
+
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+
+ # Check for various functions. We must include pthread.h,
+ # since some functions may be macros. (On the Sequent, we
+ # need a special flag -Kthread to make this header compile.)
+ # We check for pthread_join because it is in -lpthread on IRIX
+ # while pthread_create is in libc. We check for pthread_attr_init
+ # due to DEC craziness with -lpthreads. We check for
+ # pthread_cleanup_push because it is one of the few pthread
+ # functions on Solaris that doesn't have a non-functional libc stub.
+ # We try pthread_create on general principles.
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+# if $ax_pthread_check_cond
+# error "$ax_pthread_check_macro must be defined"
+# endif
+ static void routine(void *a) { a = 0; }
+ static void *start_routine(void *a) { return a; }
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+ pthread_create(&th, 0, start_routine, 0);
+ pthread_join(th, 0);
+ pthread_attr_init(&attr);
+ pthread_cleanup_push(routine, 0);
+ pthread_cleanup_pop(0) /* ; */
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+ if test "x$ax_pthread_ok" = "xyes"; then :
+ break
+fi
+
+ PTHREAD_LIBS=""
+ PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$ax_pthread_ok" = "xyes"; then
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
+
+ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+int
+main ()
+{
+int attr = $ax_pthread_attr; return attr /* ; */
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+ if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
+_ACEOF
+
+ ax_pthread_joinable_attr_defined=yes
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_SPECIAL_FLAGS=no
+ case $host_os in
+ solaris*)
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+ ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+ if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+ test "x$ax_pthread_special_flags_added" != "xyes"; then :
+ PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+ ax_pthread_special_flags_added=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
+$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
+if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+int
+main ()
+{
+int i = PTHREAD_PRIO_INHERIT;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ax_cv_PTHREAD_PRIO_INHERIT=yes
+else
+ ax_cv_PTHREAD_PRIO_INHERIT=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
+$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
+ if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
+
+$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+
+ ax_pthread_prio_inherit_defined=yes
+
+fi
+
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
+
+ # More AIX lossage: compile with *_r variant
+ if test "x$GCC" != "xyes"; then
+ case $host_os in
+ aix*)
+ case "x/$CC" in #(
+ x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
+ #handle absolute path differently from PATH based program lookup
+ case "x$CC" in #(
+ x/*) :
+ if as_fn_executable_p ${CC}_r; then :
+ PTHREAD_CC="${CC}_r"
+fi ;; #(
+ *) :
+ for ac_prog in ${CC}_r
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PTHREAD_CC"; then
+ ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PTHREAD_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+ ;;
+esac ;; #(
+ *) :
+ ;;
+esac
+ ;;
+ esac
+ fi
+fi
+
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+
+
+
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test "x$ax_pthread_ok" = "xyes"; then
+
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
+
+ :
+else
+ ax_pthread_ok=no
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+else
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+fi
+
# Check whether --enable-uuidd was given.
if test "${enable_uuidd+set}" = set; then :
enableval=$enable_uuidd; if test "$enableval" = "no"
@@ -6280,75 +7012,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
- for ac_i in 1 2 3 4 5 6 7; do
- ac_script="$ac_script$as_nl$ac_script"
- done
- echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
- { ac_script=; unset ac_script;}
- if test -z "$SED"; then
- ac_path_SED_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
- # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
- ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
- "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_SED_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_SED="$ac_path_SED"
- ac_path_SED_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_SED_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_SED"; then
- as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
- fi
-else
- ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
- rm -f conftest.sed
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
$as_echo_n "checking whether NLS is requested... " >&6; }
@@ -6365,7 +7028,7 @@ $as_echo "$USE_NLS" >&6; }
- GETTEXT_MACRO_VERSION=0.18
+ GETTEXT_MACRO_VERSION=0.20
@@ -6480,12 +7143,7 @@ fi
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
*) GMSGFMT_015=$GMSGFMT ;;
esac
@@ -6637,1017 +7295,21 @@ $as_echo "no" >&6; }
fi
- test -n "$localedir" || localedir='${datadir}/locale'
-
-
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-
-
- ac_config_commands="$ac_config_commands po-directories"
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; }
-if ${ac_cv_gnu_library_2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ >= 2) && !defined __UCLIBC__
- Lucky GNU user
- #endif
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
- ac_cv_gnu_library_2=yes
-else
- ac_cv_gnu_library_2=no
-fi
-rm -f conftest*
-
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5
-$as_echo "$ac_cv_gnu_library_2" >&6; }
-
- GLIBC2="$ac_cv_gnu_library_2"
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
+ if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt'
else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-
- CFLAG_VISIBILITY=
- HAVE_VISIBILITY=0
- if test -n "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
-$as_echo_n "checking whether the -Werror option is usable... " >&6; }
- if ${gl_cv_cc_vis_werror+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_cc_vis_werror=yes
-else
- gl_cv_cc_vis_werror=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$gl_save_CFLAGS"
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
-$as_echo "$gl_cv_cc_vis_werror" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
-$as_echo_n "checking for simple visibility declarations... " >&6; }
- if ${gl_cv_cc_visibility+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- gl_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fvisibility=hidden"
- if test $gl_cv_cc_vis_werror = yes; then
- CFLAGS="$CFLAGS -Werror"
- fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-extern __attribute__((__visibility__("hidden"))) int hiddenvar;
- extern __attribute__((__visibility__("default"))) int exportedvar;
- extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
- extern __attribute__((__visibility__("default"))) int exportedfunc (void);
- void dummyfunc (void) {}
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_cc_visibility=yes
-else
- gl_cv_cc_visibility=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS="$gl_save_CFLAGS"
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
-$as_echo "$gl_cv_cc_visibility" >&6; }
- if test $gl_cv_cc_visibility = yes; then
- CFLAG_VISIBILITY="-fvisibility=hidden"
- HAVE_VISIBILITY=1
+ if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet'
+ else
+ MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet'
fi
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_VISIBILITY $HAVE_VISIBILITY
-_ACEOF
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
-$as_echo_n "checking for stdint.h... " >&6; }
-if ${gl_cv_header_stdint_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <stdint.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1; return !i;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_header_stdint_h=yes
-else
- gl_cv_header_stdint_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
-$as_echo "$gl_cv_header_stdint_h" >&6; }
- if test $gl_cv_header_stdint_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_working_alloca_h=yes
-else
- ac_cv_working_alloca_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_alloca_works=yes
-else
- ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_c_stack_direction=0
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
- int dir, dummy = 0;
- if (! addr)
- addr = &dummy;
- *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
- dir = depth ? find_stack_direction (addr, depth - 1) : 0;
- return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
- return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_stack_direction=1
-else
- ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-
-
-
- for ac_header in $ac_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-for ac_func in getpagesize
-do :
- ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-fi
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_mmap_fixed_mapped=no
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
- Here is a matrix of mmap possibilities:
- mmap private not fixed
- mmap private fixed at somewhere currently unmapped
- mmap private fixed at somewhere already mapped
- mmap shared not fixed
- mmap shared fixed at somewhere currently unmapped
- mmap shared fixed at somewhere already mapped
- For private mappings, we should verify that changes cannot be read()
- back from the file, nor mmap's back from the file at a different
- address. (There have been systems where private was not correctly
- implemented like the infamous i386 svr4.0, and systems where the
- VM page cache was not coherent with the file system buffer cache
- like early versions of FreeBSD and possibly contemporary NetBSD.)
- For shared mappings, we should conversely verify that changes get
- propagated back to all the places they're supposed to be.
-
- Grep wants private fixed already mapped.
- The main things grep needs to know about mmap are:
- * does it exist and is it safe to write into the mmap'd area
- * how to use it (BSD variants) */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h. */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-# define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# ifdef EXEC_PAGESIZE
-# define getpagesize() EXEC_PAGESIZE
-# else /* no EXEC_PAGESIZE */
-# ifdef NBPG
-# define getpagesize() NBPG * CLSIZE
-# ifndef CLSIZE
-# define CLSIZE 1
-# endif /* no CLSIZE */
-# else /* no NBPG */
-# ifdef NBPC
-# define getpagesize() NBPC
-# else /* no NBPC */
-# ifdef PAGESIZE
-# define getpagesize() PAGESIZE
-# endif /* PAGESIZE */
-# endif /* no NBPC */
-# endif /* no NBPG */
-# endif /* no EXEC_PAGESIZE */
-# else /* no HAVE_SYS_PARAM_H */
-# define getpagesize() 8192 /* punt totally */
-# endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
- char *data, *data2, *data3;
- const char *cdata2;
- int i, pagesize;
- int fd, fd2;
-
- pagesize = getpagesize ();
-
- /* First, make a file with some known garbage in it. */
- data = (char *) malloc (pagesize);
- if (!data)
- return 1;
- for (i = 0; i < pagesize; ++i)
- *(data + i) = rand ();
- umask (0);
- fd = creat ("conftest.mmap", 0600);
- if (fd < 0)
- return 2;
- if (write (fd, data, pagesize) != pagesize)
- return 3;
- close (fd);
-
- /* Next, check that the tail of a page is zero-filled. File must have
- non-zero length, otherwise we risk SIGBUS for entire page. */
- fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
- if (fd2 < 0)
- return 4;
- cdata2 = "";
- if (write (fd2, cdata2, 1) != 1)
- return 5;
- data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
- if (data2 == MAP_FAILED)
- return 6;
- for (i = 0; i < pagesize; ++i)
- if (*(data2 + i))
- return 7;
- close (fd2);
- if (munmap (data2, pagesize))
- return 8;
-
- /* Next, try to mmap the file at a fixed address which already has
- something else allocated at it. If we can, also make sure that
- we see the same garbage. */
- fd = open ("conftest.mmap", O_RDWR);
- if (fd < 0)
- return 9;
- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_FIXED, fd, 0L))
- return 10;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data2 + i))
- return 11;
-
- /* Finally, make sure that changes to the mapped area do not
- percolate back to the file as seen by read(). (This is a bug on
- some variants of i386 svr4.0.) */
- for (i = 0; i < pagesize; ++i)
- *(data2 + i) = *(data2 + i) + 1;
- data3 = (char *) malloc (pagesize);
- if (!data3)
- return 12;
- if (read (fd, data3, pagesize) != pagesize)
- return 13;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data3 + i))
- return 14;
- close (fd);
- free (data);
- free (data3);
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_func_mmap_fixed_mapped=yes
-else
- ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
-
-fi
-rm -f conftest.mmap conftest.txt
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5
-$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; }
-if ${gt_cv_int_divbyzero_sigfpe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- gt_cv_int_divbyzero_sigfpe=
- case "$host_os" in
- macos* | darwin[6-9]* | darwin[1-9][0-9]*)
- # On Mac OS X 10.2 or newer, just assume the same as when cross-
- # compiling. If we were to perform the real test, 1 Crash Report
- # dialog window would pop up.
- case "$host_cpu" in
- i[34567]86 | x86_64)
- gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
- esac
- ;;
- esac
- if test -z "$gt_cv_int_divbyzero_sigfpe"; then
- if test "$cross_compiling" = yes; then :
-
- # Guess based on the CPU.
- case "$host_cpu" in
- alpha* | i[34567]86 | x86_64 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-sigfpe_handler (int sig)
-{
- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
- exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
- signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
- signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL. */
-#if defined (__sparc__) && defined (__linux__)
- signal (SIGILL, sigfpe_handler);
-#endif
-
- z = x / y;
- nan = y / y;
- exit (2);
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- gt_cv_int_divbyzero_sigfpe=yes
-else
- gt_cv_int_divbyzero_sigfpe=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5
-$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; }
- case "$gt_cv_int_divbyzero_sigfpe" in
- *yes) value=1;;
- *) value=0;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define INTDIV0_RAISES_SIGFPE $value
-_ACEOF
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
-$as_echo_n "checking for inttypes.h... " >&6; }
-if ${gl_cv_header_inttypes_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/types.h>
-#include <inttypes.h>
-
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1; return !i;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gl_cv_header_inttypes_h=yes
-else
- gl_cv_header_inttypes_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
-$as_echo "$gl_cv_header_inttypes_h" >&6; }
- if test $gl_cv_header_inttypes_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-_ACEOF
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- /* For now, do not test the preprocessor; as of 2007 there are too many
- implementations with broken preprocessors. Perhaps this can
- be revisited in 2012. In the meantime, code should not expect
- #if to work with literals wider than 32 bits. */
- /* Test literals. */
- long long int ll = 9223372036854775807ll;
- long long int nll = -9223372036854775807LL;
- unsigned long long int ull = 18446744073709551615ULL;
- /* Test constant expressions. */
- typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
- ? 1 : -1)];
- typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
- ? 1 : -1)];
- int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division. */
- long long int llmax = 9223372036854775807ll;
- unsigned long long int ullmax = 18446744073709551615ull;
- return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
- | (llmax / ll) | (llmax % ll)
- | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
- | (ullmax / ull) | (ullmax % ull));
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
- ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
- if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
-
-
- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
-
- test $ac_cv_type_unsigned_long_long_int = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
-
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
-
- else
-
-$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
-
- fi
-
-
- for ac_header in inttypes.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_inttypes_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
-
-fi
-
-done
-
- if test $ac_cv_header_inttypes_h = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
-$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
-if ${gt_cv_inttypes_pri_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_inttypes_pri_broken=no
-else
- gt_cv_inttypes_pri_broken=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
-$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
- fi
- if test "$gt_cv_inttypes_pri_broken" = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define PRI_MACROS_BROKEN 1
-_ACEOF
-
- PRI_MACROS_BROKEN=1
- else
- PRI_MACROS_BROKEN=0
- fi
-
-
-
-
-
-
-
- # Check whether --enable-threads was given.
-if test "${enable_threads+set}" = set; then :
- enableval=$enable_threads; gl_use_threads=$enableval
-else
- if test -n "$gl_use_threads_default"; then
- gl_use_threads="$gl_use_threads_default"
- else
- case "$host_os" in
- osf*) gl_use_threads=no ;;
- cygwin*)
- case `uname -r` in
- 1.[0-5].*) gl_use_threads=no ;;
- *) gl_use_threads=yes ;;
- esac
- ;;
- *) gl_use_threads=yes ;;
- esac
- fi
-
-fi
-
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # For using <pthread.h>:
- case "$host_os" in
- osf*)
- # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
- # groks <pthread.h>. cc also understands the flag -pthread, but
- # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
- # 2. putting a flag into CPPFLAGS that has an effect on the linker
- # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
- # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
- CPPFLAGS="$CPPFLAGS -D_REENTRANT"
- ;;
- esac
- # Some systems optimize for single-threaded programs by default, and
- # need special flags to disable these optimizations. For example, the
- # definition of 'errno' in <errno.h>.
- case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
- solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
- esac
- fi
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+ ac_config_commands="$ac_config_commands po-directories"
@@ -7688,38 +7350,12 @@ if test "${PATH_SEPARATOR+set}" != set; then
}
fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5
+$as_echo_n "checking for ld... " >&6; }
+elif test "$GCC" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
$as_echo_n "checking for ld used by $CC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | ?:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
- while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
elif test "$with_gnu_ld" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
$as_echo_n "checking for GNU ld... " >&6; }
@@ -7727,44 +7363,129 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
$as_echo_n "checking for non-GNU ld... " >&6; }
fi
-if ${acl_cv_path_LD+:} false; then :
+if test -n "$LD"; then
+ # Let the user override the test with a path.
+ :
+else
+ if ${acl_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -z "$LD"; then
- acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$acl_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
+
+ acl_cv_path_LD= # Final result of this test
+ ac_prog=ld # Program to search in $PATH
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $acl_output in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+ done
+ # Got the pathname. No search in PATH is needed.
+ acl_cv_path_LD="$acl_output"
+ ac_prog=
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
esac
fi
- done
- IFS="$acl_save_ifs"
+ if test -n "$ac_prog"; then
+ # Search for $ac_prog in $PATH.
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+ fi
+ case $host in
+ *-*-aix*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # The compiler produces 64-bit code. Add option '-b64' so that the
+ # linker groks 64-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -b64 "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+ esac
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ sparc64-*-netbsd*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
+ # The compiler produces 32-bit code. Add option '-m elf32_sparc'
+ # so that the linker groks 32-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -m elf32_sparc "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+ esac
+
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ esac
+
fi
-LD="$acl_cv_path_LD"
+ LD="$acl_cv_path_LD"
+fi
if test -n "$LD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
$as_echo "$LD" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if ${acl_cv_prog_gnu_ld+:} false; then :
@@ -7821,396 +7542,415 @@ fi
- acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
-$as_echo_n "checking for 64-bit host... " >&6; }
-if ${gl_cv_solaris_64bit+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5
+$as_echo_n "checking 32-bit host C ABI... " >&6; }
+if ${gl_cv_host_cpu_c_abi_32bit+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ case "$host_cpu" in
+
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh1234 | sh1234elb \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ # CPUs that only support a 64-bit ABI.
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+
+ i[34567]86 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-#ifdef _LP64
-sixtyfour bits
-#endif
+#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
- gl_cv_solaris_64bit=yes
-else
- gl_cv_solaris_64bit=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
-$as_echo "$gl_cv_solaris_64bit" >&6; }
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-
-
-
- gl_threads_api=none
- LIBTHREAD=
- LTLIBTHREAD=
- LIBMULTITHREAD=
- LTLIBMULTITHREAD=
- if test "$gl_use_threads" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
-$as_echo_n "checking whether imported symbols can be declared weak... " >&6; }
-if ${gl_cv_have_weak+:} false; then :
- $as_echo_n "(cached) " >&6
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- gl_cv_have_weak=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-extern void xyzzy ();
-#pragma weak xyzzy
-int
-main ()
-{
-xyzzy();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gl_cv_have_weak=maybe
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test $gl_cv_have_weak = maybe; then
- if test "$cross_compiling" = yes; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __ELF__
- Extensible Linking Format
- #endif
+#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Extensible Linking Format" >/dev/null 2>&1; then :
- gl_cv_have_weak="guessing yes"
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- gl_cv_have_weak="guessing no"
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
-#include <stdio.h>
-#pragma weak fputs
-int main ()
-{
- return (fputs == NULL);
-}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- gl_cv_have_weak=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- gl_cv_have_weak=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
- fi
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
-$as_echo "$gl_cv_have_weak" >&6; }
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
- # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
- # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
- ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
- gl_have_pthread_h=yes
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=yes
else
- gl_have_pthread_h=no
+ gl_cv_host_cpu_c_abi_32bit=no
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
-
- if test "$gl_have_pthread_h" = yes; then
- # Other possible tests:
- # -lpthreads (FSU threads, PCthreads)
- # -lgthreads
- gl_have_pthread=
- # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
- # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
- # the second one only in libpthread, and lock.c needs it.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <pthread.h>
-int
-main ()
-{
-pthread_mutex_lock((pthread_mutex_t*)0);
- pthread_mutexattr_init((pthread_mutexattr_t*)0);
- ;
- return 0;
-}
+#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gl_have_pthread=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- # Test for libpthread by looking for pthread_kill. (Not pthread_self,
- # since it is defined as a macro on OSF/1.)
- if test -n "$gl_have_pthread"; then
- # The program links fine without libpthread. But it may actually
- # need to link with libpthread in order to create multiple threads.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
-$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_kill ();
-int
-main ()
-{
-return pthread_kill ();
- ;
- return 0;
-}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_pthread_pthread_kill=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- ac_cv_lib_pthread_pthread_kill=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
- # On Solaris and HP-UX, most pthread functions exist also in libc.
- # Therefore pthread_in_use() needs to actually try to create a
- # thread: pthread_create from libc will fail, whereas
- # pthread_create will actually create a thread.
- case "$host_os" in
- solaris* | hpux*)
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
-$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
- esac
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
- else
- # Some library is needed. Try libpthread and libc_r.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
-$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_kill ();
-int
-main ()
-{
-return pthread_kill ();
- ;
- return 0;
-}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_pthread_pthread_kill=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- ac_cv_lib_pthread_pthread_kill=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
- gl_have_pthread=yes
- LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
- LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
- if test -z "$gl_have_pthread"; then
- # For FreeBSD 4.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
-$as_echo_n "checking for pthread_kill in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc_r $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_kill ();
-int
-main ()
-{
-return pthread_kill ();
- ;
- return 0;
-}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_c_r_pthread_kill=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
else
- ac_cv_lib_c_r_pthread_kill=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+ gl_cv_host_cpu_c_abi_32bit=yes
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
-$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; }
-if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then :
- gl_have_pthread=yes
- LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
- LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ ;;
+ esac
+ fi
+
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
+$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; }
- fi
- fi
- if test -n "$gl_have_pthread"; then
- gl_threads_api=posix
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
-$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- fi
- fi
- fi
- if test -z "$gl_have_pthread"; then
- if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
- gl_have_solaristhread=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS -lthread"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <thread.h>
-#include <synch.h>
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF binary format" >&5
+$as_echo_n "checking for ELF binary format... " >&6; }
+if ${gl_cv_elf+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
-int
-main ()
-{
-thr_self();
- ;
- return 0;
-}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gl_have_solaristhread=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1; then :
+ gl_cv_elf=yes
+else
+ gl_cv_elf=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_solaristhread"; then
- gl_threads_api=solaris
- LIBTHREAD=-lthread
- LTLIBTHREAD=-lthread
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
-
-$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h
-
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+rm -f conftest*
-$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_elf" >&5
+$as_echo "$gl_cv_elf" >&6; }
+ if test $gl_cv_elf; then
+ # Extract the ELF class of a file (5th byte) in decimal.
+ # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
+ if od -A x < /dev/null >/dev/null 2>/dev/null; then
+ # Use POSIX od.
+ func_elfclass ()
+ {
+ od -A n -t d1 -j 4 -N 1
+ }
+ else
+ # Use BSD hexdump.
+ func_elfclass ()
+ {
+ dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "'
+ echo
+ }
fi
- if test "$gl_use_threads" = pth; then
- gl_save_CPPFLAGS="$CPPFLAGS"
+ case $HOST_CPU_C_ABI_32BIT in
+ yes)
+ # 32-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 1
+ }
+ ;;
+ no)
+ # 64-bit ABI.
+ acl_is_expected_elfclass ()
+ {
+ test "`func_elfclass | sed -e 's/[ ]//g'`" = 2
+ }
+ ;;
+ *)
+ # Unknown.
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
+ ;;
+ esac
+ else
+ acl_is_expected_elfclass ()
+ {
+ :
+ }
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5
+$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; }
+if ${acl_cv_libdirstems+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ acl_libdirstem3=
+ case "$host_os" in
+ solaris*)
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ acl_libdirstem2=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem3=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem3=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \
+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test $HOST_CPU_C_ABI_32BIT != no; then
+ # 32-bit or unknown ABI.
+ if test -d /usr/lib32; then
+ acl_libdirstem2=lib32
+ fi
+ fi
+ if test $HOST_CPU_C_ABI_32BIT != yes; then
+ # 64-bit or unknown ABI.
+ if test -d /usr/lib64; then
+ acl_libdirstem3=lib64
+ fi
+ fi
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib32 ) acl_libdirstem2=lib32 ;;
+ */lib64 ) acl_libdirstem3=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ if test $HOST_CPU_C_ABI_32BIT = yes; then
+ # 32-bit ABI.
+ acl_libdirstem3=
+ fi
+ if test $HOST_CPU_C_ABI_32BIT = no; then
+ # 64-bit ABI.
+ acl_libdirstem2=
+ fi
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+ test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem"
+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
+$as_echo "$acl_cv_libdirstems" >&6; }
+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'`
+ acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
-$as_echo_n "checking how to link with libpth... " >&6; }
-if ${ac_cv_libpth_libs+:} false; then :
- $as_echo_n "(cached) " >&6
-else
@@ -8228,14 +7968,16 @@ else
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
-# Check whether --with-libpth-prefix was given.
-if test "${with_libpth_prefix+set}" = set; then :
- withval=$with_libpth_prefix;
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+ withval=$with_libiconv_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
else
@@ -8248,6 +7990,8 @@ if test "${with_libpth_prefix+set}" = set; then :
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
@@ -8255,24 +7999,28 @@ if test "${with_libpth_prefix+set}" = set; then :
else
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
+ additional_libdir2="$withval/$acl_libdirstem2"
+ additional_libdir3="$withval/$acl_libdirstem3"
fi
fi
fi
- LIBPTH=
- LTLIBPTH=
- INCPTH=
- LIBPTH_PREFIX=
- HAVE_LIBPTH=
+ if test "X$additional_libdir2" = "X$additional_libdir"; then
+ additional_libdir2=
+ fi
+ if test "X$additional_libdir3" = "X$additional_libdir"; then
+ additional_libdir3=
+ fi
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ LIBICONV_PREFIX=
+ HAVE_LIBICONV=
rpathdirs=
ltrpathdirs=
names_already_handled=
- names_next_round='pth '
+ names_next_round='iconv '
while test -n "$names_next_round"; do
names_this_round="$names_next_round"
names_next_round=
@@ -8291,9 +8039,9 @@ fi
if test -n "$value"; then
if test "$value" = yes; then
eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
else
:
fi
@@ -8309,62 +8057,12 @@ fi
shrext=
fi
if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBPTH; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do
+ if test "X$found_dir" = "X"; then
+ eval dir=\$$additional_libdir_variable
+ if test -n "$dir"; then
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
@@ -8374,14 +8072,14 @@ fi
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
- if test -f "$dir/$f"; then
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
@@ -8391,7 +8089,7 @@ fi
fi
fi
if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
@@ -8401,577 +8099,9 @@ fi
found_la="$dir/$libname.la"
fi
fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no \
- || test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$acl_hardcode_direct" = yes; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBPTH; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a"
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- if test "$name" = 'pth'; then
- LIBPTH_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- */$acl_libdirstem2 | */$acl_libdirstem2/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
- if test "$name" = 'pth'; then
- LIBPTH_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCPTH; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCPTH="${INCPTH}${INCPTH:+ }-I$additional_includedir"
- fi
- fi
fi
fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBPTH; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBPTH; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBPTH="${LIBPTH}${LIBPTH:+ }$dep"
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir"
- done
- fi
-
-
-
-
-
-
- ac_cv_libpth_libs="$LIBPTH"
- ac_cv_libpth_ltlibs="$LTLIBPTH"
- ac_cv_libpth_cppflags="$INCPTH"
- ac_cv_libpth_prefix="$LIBPTH_PREFIX"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
-$as_echo "$ac_cv_libpth_libs" >&6; }
- LIBPTH="$ac_cv_libpth_libs"
- LTLIBPTH="$ac_cv_libpth_ltlibs"
- INCPTH="$ac_cv_libpth_cppflags"
- LIBPTH_PREFIX="$ac_cv_libpth_prefix"
-
- for element in $INCPTH; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
-
-
- HAVE_LIBPTH=yes
-
-
-
- gl_have_pth=
- gl_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBPTH"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <pth.h>
-int
-main ()
-{
-pth_self();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gl_have_pth=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gl_save_LIBS"
- if test -n "$gl_have_pth"; then
- gl_threads_api=pth
- LIBTHREAD="$LIBPTH"
- LTLIBTHREAD="$LTLIBPTH"
- LIBMULTITHREAD="$LIBTHREAD"
- LTLIBMULTITHREAD="$LTLIBTHREAD"
-
-$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h
-
- if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
- if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-
-$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
-
- LIBTHREAD=
- LTLIBTHREAD=
- fi
- fi
- else
- CPPFLAGS="$gl_save_CPPFLAGS"
- fi
- fi
- if test -z "$gl_have_pthread"; then
- case "$gl_use_threads" in
- yes | windows | win32) # The 'win32' is for backward compatibility.
- if { case "$host_os" in
- mingw*) true;;
- *) false;;
- esac
- }; then
- gl_threads_api=windows
-
-$as_echo "#define USE_WINDOWS_THREADS 1" >>confdefs.h
-
- fi
- ;;
- esac
- fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
-$as_echo_n "checking for multithread API to use... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
-$as_echo "$gl_threads_api" >&6; }
-
-
-
-
-
-
-
-
-
-
-
- if test "$gl_threads_api" = posix; then
- # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
- # pthread_rwlock_* functions.
- ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h>
-"
-if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then :
-
-$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h
-
-fi
-
- # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #include <pthread.h>
-int
-main ()
-{
-
-#if __FreeBSD__ == 4
-error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
-#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \
- && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
-error "No, in Mac OS X < 10.7 recursive mutexes actually don't work."
-#else
-int x = (int)PTHREAD_MUTEX_RECURSIVE;
-return !x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- :
-
-
-
-
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
- withval=$with_libiconv_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
- fi
- fi
-
-fi
-
- LIBICONV=
- LTLIBICONV=
- INCICONV=
- LIBICONV_PREFIX=
- HAVE_LIBICONV=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='iconv '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
+ done
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBICONV; do
@@ -8988,7 +8118,7 @@ fi
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
@@ -8998,14 +8128,14 @@ fi
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
- if test -f "$dir/$f"; then
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
@@ -9015,7 +8145,7 @@ fi
fi
fi
if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
@@ -9037,7 +8167,8 @@ fi
if test "X$found_so" != "X"; then
if test "$enable_rpath" = no \
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
haveit=
@@ -9116,6 +8247,13 @@ fi
fi
additional_includedir="$basedir/include"
;;
+ */$acl_libdirstem3 | */$acl_libdirstem3/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
esac
if test "X$additional_includedir" != "X"; then
if test "X$additional_includedir" != "X/usr/include"; then
@@ -9161,12 +8299,14 @@ fi
for dep in $dependency_libs; do
case "$dep" in
-L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then
if test -n "$GCC"; then
case $host_os in
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
@@ -9185,14 +8325,14 @@ fi
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$dependency_libdir"
fi
fi
haveit=
@@ -9206,14 +8346,14 @@ fi
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$dependency_libdir"
fi
fi
fi
@@ -9303,6 +8443,181 @@ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyPreferredLanguages();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFLocaleCopyPreferredLanguages=yes
+else
+ gt_cv_func_CFLocaleCopyPreferredLanguages=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+
+
+
+
+
+
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if eval \${$gt_func_gnugettext_libc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
+int
+main ()
+{
+
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$gt_func_gnugettext_libc=yes"
+else
+ eval "$gt_func_gnugettext_libc=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$gt_func_gnugettext_libc
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
am_save_CPPFLAGS="$CPPFLAGS"
for element in $INCICONV; do
@@ -9399,36 +8714,42 @@ else
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
- if test "$cross_compiling" = yes; then :
-
- case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac
-
+ am_cv_func_iconv_works=no
+ for ac_iconv_const in '' 'const'; do
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <iconv.h>
#include <string.h>
-int main ()
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
{
- int result = 0;
+int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
returns. */
{
iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
if (cd_utf8_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\342\202\254"; /* EURO SIGN */
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
result |= 1;
@@ -9441,14 +8762,14 @@ int main ()
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
if (cd_ascii_to_88591 != (iconv_t)(-1))
{
- static const char input[] = "\263";
+ static ICONV_CONST char input[] = "\263";
char buf[10];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_ascii_to_88591,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
result |= 2;
@@ -9460,14 +8781,14 @@ int main ()
iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304";
+ static ICONV_CONST char input[] = "\304";
static char buf[2] = { (char)0xDE, (char)0xAD };
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = 1;
char *outptr = buf;
size_t outbytesleft = 1;
size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
result |= 4;
@@ -9480,14 +8801,14 @@ int main ()
iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
if (cd_88591_to_utf8 != (iconv_t)(-1))
{
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
char buf[50];
- const char *inptr = input;
+ ICONV_CONST char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
+ &inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
result |= 8;
@@ -9497,27 +8818,42 @@ int main ()
#endif
/* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- result |= 16;
+ {
+ /* Try standardized names. */
+ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+ /* Try IRIX, OSF/1 names. */
+ iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+ /* Try AIX names. */
+ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+ /* Try HP-UX names. */
+ iconv_t cd4 = iconv_open ("utf8", "eucJP");
+ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+ result |= 16;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd3 != (iconv_t)(-1))
+ iconv_close (cd3);
+ if (cd4 != (iconv_t)(-1))
+ iconv_close (cd4);
+ }
return result;
+
+ ;
+ return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
am_cv_func_iconv_works=yes
-else
- am_cv_func_iconv_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ test "$am_cv_func_iconv_works" = no || break
+ done
LIBS="$am_save_LIBS"
fi
@@ -9548,1319 +8884,6 @@ $as_echo "$LIBICONV" >&6; }
- if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
- if ${am_cv_proto_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- am_cv_proto_iconv_arg1=""
-else
- am_cv_proto_iconv_arg1="const"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
-fi
-
- am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result:
- $am_cv_proto_iconv" >&5
-$as_echo "
- $am_cv_proto_iconv" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
-
-
- fi
-
-
-
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
- for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \
- stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
- argz_stringify argz_next __fsetlocking
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
- ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_feof_unlocked" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_fgets_unlocked" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl
-_ACEOF
-
-
-
-
- for ac_prog in bison
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_INTLBISON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$INTLBISON"; then
- ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_INTLBISON="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-INTLBISON=$ac_cv_prog_INTLBISON
-if test -n "$INTLBISON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5
-$as_echo "$INTLBISON" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$INTLBISON" && break
-done
-
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5
-$as_echo_n "checking version of bison... " >&6; }
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
- fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
-int
-main ()
-{
-long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_type_long_long_int=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
- if test $ac_cv_type_long_long_int = yes; then
-
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
-$as_echo_n "checking for wchar_t... " >&6; }
-if ${gt_cv_c_wchar_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_c_wchar_t=yes
-else
- gt_cv_c_wchar_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
-$as_echo "$gt_cv_c_wchar_t" >&6; }
- if test $gt_cv_c_wchar_t = yes; then
-
-$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
-$as_echo_n "checking for wint_t... " >&6; }
-if ${gt_cv_c_wint_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
- <wchar.h>.
- BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
- before <wchar.h>. */
-#include <stddef.h>
-#include <stdio.h>
-#include <time.h>
-#include <wchar.h>
- wint_t foo = (wchar_t)'\0';
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_c_wint_t=yes
-else
- gt_cv_c_wint_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
-$as_echo "$gt_cv_c_wint_t" >&6; }
- if test $gt_cv_c_wint_t = yes; then
-
-$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
-
- fi
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
-$as_echo_n "checking for intmax_t... " >&6; }
-if ${gt_cv_c_intmax_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stddef.h>
-#include <stdlib.h>
-#if HAVE_STDINT_H_WITH_UINTMAX
-#include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-#include <inttypes.h>
-#endif
-
-int
-main ()
-{
-intmax_t x = -1;
- return !x;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_c_intmax_t=yes
-else
- gt_cv_c_intmax_t=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5
-$as_echo "$gt_cv_c_intmax_t" >&6; }
- if test $gt_cv_c_intmax_t = yes; then
-
-$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
-
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5
-$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; }
-if ${gt_cv_func_printf_posix+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- if test "$cross_compiling" = yes; then :
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
- notposix
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "notposix" >/dev/null 2>&1; then :
- gt_cv_func_printf_posix="guessing no"
-else
- gt_cv_func_printf_posix="guessing yes"
-fi
-rm -f conftest*
-
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stdio.h>
-#include <string.h>
-/* The string "%2$d %1$d", with dollar characters protected from the shell's
- dollar expansion (possibly an autoconf bug). */
-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
-static char buf[100];
-int main ()
-{
- sprintf (buf, format, 33, 55);
- return (strcmp (buf, "55 33") != 0);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- gt_cv_func_printf_posix=yes
-else
- gt_cv_func_printf_posix=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5
-$as_echo "$gt_cv_func_printf_posix" >&6; }
- case $gt_cv_func_printf_posix in
- *yes)
-
-$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h
-
- ;;
- esac
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
-$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
-#ifdef __UCLIBC__
- Lucky user
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky" >/dev/null 2>&1; then :
- ac_cv_gnu_library_2_1=yes
-else
- ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
-
- GLIBC21="$ac_cv_gnu_library_2_1"
-
-
-
- for ac_header in stdint.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdint_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H 1
-_ACEOF
-
-fi
-
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5
-$as_echo_n "checking for SIZE_MAX... " >&6; }
-if ${gl_cv_size_max+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- gl_cv_size_max=
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <limits.h>
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#ifdef SIZE_MAX
-Found it
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Found it" >/dev/null 2>&1; then :
- gl_cv_size_max=yes
-fi
-rm -f conftest*
-
- if test -z "$gl_cv_size_max"; then
- if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include <stddef.h>
-#include <limits.h>"; then :
-
-else
- size_t_bits_minus_1=
-fi
-
- if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include <stddef.h>"; then :
-
-else
- fits_in_uint=
-fi
-
- if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
- if test $fits_in_uint = 1; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stddef.h>
- extern size_t foo;
- extern unsigned long foo;
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- fits_in_uint=0
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $fits_in_uint = 1; then
- gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
- else
- gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
- fi
- else
- gl_cv_size_max='((size_t)~(size_t)0)'
- fi
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5
-$as_echo "$gl_cv_size_max" >&6; }
- if test "$gl_cv_size_max" != yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define SIZE_MAX $gl_cv_size_max
-_ACEOF
-
- fi
-
-
-
-
- for ac_header in stdint.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdint_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
- for ac_func in $ac_func_list
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
-$as_echo_n "checking for working fcntl.h... " >&6; }
-if ${gl_cv_header_working_fcntl_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- gl_cv_header_working_fcntl_h=cross-compiling
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/stat.h>
- #if HAVE_UNISTD_H
- # include <unistd.h>
- #else /* on Windows with MSVC */
- # include <io.h>
- # include <stdlib.h>
- # defined sleep(n) _sleep ((n) * 1000)
- #endif
- #include <fcntl.h>
- #ifndef O_NOATIME
- #define O_NOATIME 0
- #endif
- #ifndef O_NOFOLLOW
- #define O_NOFOLLOW 0
- #endif
- static int const constants[] =
- {
- O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
- O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
- };
-
-int
-main ()
-{
-
- int result = !constants;
- #if HAVE_SYMLINK
- {
- static char const sym[] = "conftest.sym";
- if (symlink ("/dev/null", sym) != 0)
- result |= 2;
- else
- {
- int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
- if (fd >= 0)
- {
- close (fd);
- result |= 4;
- }
- }
- if (unlink (sym) != 0 || symlink (".", sym) != 0)
- result |= 2;
- else
- {
- int fd = open (sym, O_RDONLY | O_NOFOLLOW);
- if (fd >= 0)
- {
- close (fd);
- result |= 4;
- }
- }
- unlink (sym);
- }
- #endif
- {
- static char const file[] = "confdefs.h";
- int fd = open (file, O_RDONLY | O_NOATIME);
- if (fd < 0)
- result |= 8;
- else
- {
- struct stat st0;
- if (fstat (fd, &st0) != 0)
- result |= 16;
- else
- {
- char c;
- sleep (1);
- if (read (fd, &c, 1) != 1)
- result |= 24;
- else
- {
- if (close (fd) != 0)
- result |= 32;
- else
- {
- struct stat st1;
- if (stat (file, &st1) != 0)
- result |= 40;
- else
- if (st0.st_atime != st1.st_atime)
- result |= 64;
- }
- }
- }
- }
- }
- return result;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- gl_cv_header_working_fcntl_h=yes
-else
- case $? in #(
- 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
- 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
- 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
- *) gl_cv_header_working_fcntl_h='no';;
- esac
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
-$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
-
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOATIME $ac_val
-_ACEOF
-
-
- case $gl_cv_header_working_fcntl_h in #(
- *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
- *) ac_val=1;;
- esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOFOLLOW $ac_val
-_ACEOF
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFPreferences.h>
-int
-main ()
-{
-CFPreferencesCopyAppValue(NULL, NULL)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFPreferencesCopyAppValue=yes
-else
- gt_cv_func_CFPreferencesCopyAppValue=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFLocale.h>
-int
-main ()
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
-
-
-
-
-
-
-
-
-
-
- case "$enable_silent_rules" in
- yes) INTL_DEFAULT_VERBOSITY=0;;
- no) INTL_DEFAULT_VERBOSITY=1;;
- *) INTL_DEFAULT_VERBOSITY=1;;
- esac
-
-
- ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
-else
-
-$as_echo "#define ptrdiff_t long" >>confdefs.h
-
-
-fi
-
- for ac_header in features.h stddef.h stdlib.h string.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \
- snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
- ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl__snprintf" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl__snwprintf" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNWPRINTF $ac_have_decl
-_ACEOF
-
-
- ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
-_ACEOF
-
-
- case $gt_cv_func_printf_posix in
- *yes) HAVE_POSIX_PRINTF=1 ;;
- *) HAVE_POSIX_PRINTF=0 ;;
- esac
-
- if test "$ac_cv_func_asprintf" = yes; then
- HAVE_ASPRINTF=1
- else
- HAVE_ASPRINTF=0
- fi
-
- if test "$ac_cv_func_snprintf" = yes; then
- HAVE_SNPRINTF=1
- else
- HAVE_SNPRINTF=0
- fi
-
- if test "$ac_cv_func_newlocale" = yes; then
- HAVE_NEWLOCALE=1
- else
- HAVE_NEWLOCALE=0
- fi
-
- if test "$ac_cv_func_wprintf" = yes; then
- HAVE_WPRINTF=1
- else
- HAVE_WPRINTF=0
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET); return !cs;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_langinfo_codeset=yes
-else
- am_cv_langinfo_codeset=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
- if test $am_cv_langinfo_codeset = yes; then
-
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
-$as_echo_n "checking for LC_MESSAGES... " >&6; }
-if ${gt_cv_val_LC_MESSAGES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <locale.h>
-int
-main ()
-{
-return LC_MESSAGES
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_val_LC_MESSAGES=yes
-else
- gt_cv_val_LC_MESSAGES=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5
-$as_echo "$gt_cv_val_LC_MESSAGES" >&6; }
- if test $gt_cv_val_LC_MESSAGES = yes; then
-
-$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
-
- fi
-
-
- if test "$enable_shared" = yes; then
- case "$host_os" in
- mingw* | cygwin*) is_woe32dll=yes ;;
- *) is_woe32dll=no ;;
- esac
- else
- is_woe32dll=no
- fi
- WOE32DLL=$is_woe32dll
-
-
- case "$host_os" in
- mingw* | cygwin*) is_woe32=yes ;;
- *) is_woe32=no ;;
- esac
- WOE32=$is_woe32
-
- if test $WOE32 = yes; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
-set dummy ${ac_tool_prefix}windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_WINDRES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$WINDRES"; then
- ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-WINDRES=$ac_cv_prog_WINDRES
-if test -n "$WINDRES"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
-$as_echo "$WINDRES" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_WINDRES"; then
- ac_ct_WINDRES=$WINDRES
- # Extract the first word of "windres", so it can be a program name with args.
-set dummy windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_WINDRES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_WINDRES"; then
- ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_WINDRES="windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
-if test -n "$ac_ct_WINDRES"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
-$as_echo "$ac_ct_WINDRES" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_WINDRES" = x; then
- WINDRES=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- WINDRES=$ac_ct_WINDRES
- fi
-else
- WINDRES="$ac_cv_prog_WINDRES"
-fi
-
- fi
-
- case "$host_os" in
- hpux*) LTLIBC="" ;;
- *) LTLIBC="-lc" ;;
- esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFPreferences.h>
-int
-main ()
-{
-CFPreferencesCopyAppValue(NULL, NULL)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFPreferencesCopyAppValue=yes
-else
- gt_cv_func_CFPreferencesCopyAppValue=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFLocale.h>
-int
-main ()
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
-
-
-
-
-
-
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
-
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- case " $gt_needs " in
- *" need-formatstring-macros "*) gt_api_version=3 ;;
- *" need-ngettext "*) gt_api_version=2 ;;
- *) gt_api_version=1 ;;
- esac
- gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
- gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5
-$as_echo_n "checking whether included gettext is requested... " >&6; }
-
-# Check whether --with-included-gettext was given.
-if test "${with_included_gettext+set}" = set; then :
- withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
-else
- nls_cv_force_use_gnu_gettext=no
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5
-$as_echo "$nls_cv_force_use_gnu_gettext" >&6; }
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-
-
- if test $gt_api_version -ge 3; then
- gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-'
- else
- gt_revision_test_code=
- fi
- if test $gt_api_version -ge 2; then
- gt_expression_test_code=' + * ngettext ("", "", 0)'
- else
- gt_expression_test_code=
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
-$as_echo_n "checking for GNU gettext in libc... " >&6; }
-if eval \${$gt_func_gnugettext_libc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
-
-int
-main ()
-{
-
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- eval "$gt_func_gnugettext_libc=yes"
-else
- eval "$gt_func_gnugettext_libc=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$gt_func_gnugettext_libc
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
-
@@ -10877,6 +8900,8 @@ $as_echo "$ac_res" >&6; }
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
@@ -10897,6 +8922,8 @@ if test "${with_libintl_prefix+set}" = set; then :
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
+ eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\"
+ eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\"
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
@@ -10904,15 +8931,19 @@ if test "${with_libintl_prefix+set}" = set; then :
else
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
+ additional_libdir2="$withval/$acl_libdirstem2"
+ additional_libdir3="$withval/$acl_libdirstem3"
fi
fi
fi
+ if test "X$additional_libdir2" = "X$additional_libdir"; then
+ additional_libdir2=
+ fi
+ if test "X$additional_libdir3" = "X$additional_libdir"; then
+ additional_libdir3=
+ fi
LIBINTL=
LTLIBINTL=
INCINTL=
@@ -10958,45 +8989,51 @@ fi
shrext=
fi
if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
+ for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do
+ if test "X$found_dir" = "X"; then
+ eval dir=\$$additional_libdir_variable
+ if test -n "$dir"; then
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
- found_so="$dir/$f"
- break
+ found_a="$dir/$libname.$acl_libext"
fi
- done
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
fi
fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
+ done
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBINTL; do
@@ -11013,7 +9050,7 @@ fi
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
+ if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
@@ -11023,14 +9060,14 @@ fi
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
- if test -f "$dir/$f"; then
+ if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
@@ -11040,7 +9077,7 @@ fi
fi
fi
if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
+ if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
@@ -11062,7 +9099,8 @@ fi
if test "X$found_so" != "X"; then
if test "$enable_rpath" = no \
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
else
haveit=
@@ -11141,6 +9179,13 @@ fi
fi
additional_includedir="$basedir/include"
;;
+ */$acl_libdirstem3 | */$acl_libdirstem3/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'`
+ if test "$name" = 'intl'; then
+ LIBINTL_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
esac
if test "X$additional_includedir" != "X"; then
if test "X$additional_includedir" != "X/usr/include"; then
@@ -11186,12 +9231,14 @@ fi
for dep in $dependency_libs; do
case "$dep" in
-L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \
+ && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \
+ || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then
if test -n "$GCC"; then
case $host_os in
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
@@ -11210,14 +9257,14 @@ fi
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$dependency_libdir"
fi
fi
haveit=
@@ -11231,14 +9278,14 @@ fi
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
- if test "X$x" = "X-L$additional_libdir"; then
+ if test "X$x" = "X-L$dependency_libdir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+ if test -d "$dependency_libdir"; then
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$dependency_libdir"
fi
fi
fi
@@ -11321,7 +9368,6 @@ fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
$as_echo_n "checking for GNU gettext in libintl... " >&6; }
if eval \${$gt_func_gnugettext_libintl+:} false; then :
@@ -11335,20 +9381,25 @@ else
/* end confdefs.h. */
#include <libintl.h>
-$gt_revision_test_code
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
int
main ()
{
bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
;
return 0;
@@ -11367,20 +9418,25 @@ rm -f core conftest.err conftest.$ac_objext \
/* end confdefs.h. */
#include <libintl.h>
-$gt_revision_test_code
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
int
main ()
{
bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
;
return 0;
@@ -11415,25 +9471,6 @@ $as_echo "$ac_res" >&6; }
fi
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV $LIBTHREAD"
- LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV $LTLIBTHREAD"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
-
- CATOBJEXT=
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- CATOBJEXT=.gmo
- fi
-
if test -n "$INTL_MACOSX_LIBS"; then
if test "$gt_use_preinstalled_gnugettext" = "yes" \
@@ -11518,35 +9555,6 @@ $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
fi
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
-
-
-
-
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- DATADIRNAME=share
-
-
- INSTOBJEXT=.mo
-
-
- GENCAT=gencat
-
-
- INTLOBJS=
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
-
-
- INTL_LIBTOOL_SUFFIX_PREFIX=
-
-
INTLLIBS="$LIBINTL"
@@ -11663,6 +9671,8 @@ fi
+mkdir_p=$MKDIR_P
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
$as_echo_n "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
@@ -12447,7 +10457,7 @@ fi
done
fi
-for ac_header in dirent.h errno.h execinfo.h getopt.h malloc.h mntent.h paths.h semaphore.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h termio.h unistd.h utime.h attr/xattr.h linux/falloc.h linux/fd.h linux/fsmap.h linux/major.h linux/loop.h linux/types.h net/if_dl.h netinet/in.h sys/acl.h sys/disklabel.h sys/disk.h sys/file.h sys/ioctl.h sys/key.h sys/mkdev.h sys/mman.h sys/mount.h sys/prctl.h sys/resource.h sys/select.h sys/socket.h sys/sockio.h sys/stat.h sys/syscall.h sys/sysctl.h sys/sysmacros.h sys/time.h sys/types.h sys/un.h sys/wait.h sys/xattr.h
+for ac_header in dirent.h errno.h execinfo.h getopt.h malloc.h mntent.h paths.h pthread.h semaphore.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h termio.h unistd.h utime.h attr/xattr.h linux/falloc.h linux/fd.h linux/fsmap.h linux/major.h linux/loop.h linux/types.h net/if_dl.h netinet/in.h sys/acl.h sys/disklabel.h sys/disk.h sys/file.h sys/ioctl.h sys/key.h sys/mkdev.h sys/mman.h sys/mount.h sys/prctl.h sys/resource.h sys/select.h sys/socket.h sys/sockio.h sys/stat.h sys/syscall.h sys/sysmacros.h sys/time.h sys/types.h sys/un.h sys/wait.h sys/xattr.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -13155,6 +11165,48 @@ $as_echo "#define HAVE_BLKID_PROBE_GET_TOPOLOGY 1" >>confdefs.h
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid_topology_get_dax in -lblkid" >&5
+$as_echo_n "checking for blkid_topology_get_dax in -lblkid... " >&6; }
+if ${ac_cv_lib_blkid_blkid_topology_get_dax+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lblkid $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char blkid_topology_get_dax ();
+int
+main ()
+{
+return blkid_topology_get_dax ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_blkid_blkid_topology_get_dax=yes
+else
+ ac_cv_lib_blkid_blkid_topology_get_dax=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_blkid_blkid_topology_get_dax" >&5
+$as_echo "$ac_cv_lib_blkid_blkid_topology_get_dax" >&6; }
+if test "x$ac_cv_lib_blkid_blkid_topology_get_dax" = xyes; then :
+
+$as_echo "#define HAVE_BLKID_TOPOLOGY_GET_DAX 1" >>confdefs.h
+
+fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for blkid_probe_enable_partitions in -lblkid" >&5
$as_echo_n "checking for blkid_probe_enable_partitions in -lblkid... " >&6; }
if ${ac_cv_lib_blkid_blkid_probe_enable_partitions+:} false; then :
@@ -13803,26 +11855,6 @@ $as_echo "#define HAVE_EXT2_IOCTLS 1" >>confdefs.h
;;
esac
- if test "x$ac_cv_header_sys_mount_h" = x; then :
- for ac_header in sys/mount.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mount_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_MOUNT_H 1
-_ACEOF
-
-fi
-
-done
-
-fi
- if test "x$ac_cv_header_sys_mount_h" = xno; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "error: sys/mount.h not present on your system!
-See \`config.log' for more details" "$LINENO" 5; }
-fi
$as_echo_n "checking for mount 'nosuid' option... "
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13870,26 +11902,6 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test "x$ac_cv_header_sys_mount_h" = x; then :
- for ac_header in sys/mount.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mount_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_MOUNT_H 1
-_ACEOF
-
-fi
-
-done
-
-fi
- if test "x$ac_cv_header_sys_mount_h" = xno; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "error: sys/mount.h not present on your system!
-See \`config.log' for more details" "$LINENO" 5; }
-fi
$as_echo_n "checking for mount 'nodev' option... "
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14438,7 +12450,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -14458,7 +12470,7 @@ fi
with_udev_rules_dir=""
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
with_udev_rules_dir=""
@@ -14598,7 +12610,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -14618,7 +12630,7 @@ fi
with_systemd_unit_dir=""
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
with_systemd_unit_dir=""
@@ -14680,8 +12692,7 @@ for i in MCONFIG Makefile \
lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
misc/Makefile ext2ed/Makefile e2fsck/Makefile \
debugfs/Makefile tests/Makefile tests/progs/Makefile \
- resize/Makefile doc/Makefile intl/Makefile \
- intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
+ resize/Makefile doc/Makefile po/Makefile.in scrub/Makefile; do
if test -d `dirname ${srcdir}/$i` ; then
outlist="$outlist $i"
fi
@@ -15381,9 +13392,8 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# INIT-COMMANDS
#
# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake < 1.5.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+ OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
# Capture the value of LINGUAS because we need it to compute CATALOGS.
LINGUAS="${LINGUAS-%UNSET%}"
@@ -16036,14 +14046,11 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
if test -n "$OBSOLETE_ALL_LINGUAS"; then
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
fi
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assignment from automake < 1.5.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
fi
# Compute POFILES
# as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
diff --git a/configure.ac b/configure.ac
index cf03444d..4c4b5523 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_INIT(version.h)
-AC_PREREQ(2.54)
+AC_PREREQ(2.69)
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_HEADERS([lib/config.h])
AH_BOTTOM([#include <dirpaths.h>])
@@ -69,7 +69,7 @@ dnl Use diet libc
dnl
WITH_DIET_LIBC=
AC_ARG_WITH([diet-libc],
-[ --with-diet-libc use diet libc],
+AS_HELP_STRING([--with-diet-libc],[use diet libc]),
CC="diet cc -nostdinc"
WITH_DIET_LIBC=yes
if test -z "$LIBS"
@@ -89,15 +89,15 @@ AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
AC_SUBST(DLOPEN_LIB)
dnl
AC_ARG_WITH([cc],
-AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
+AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
dnl
AC_ARG_WITH([ccopts],
-AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
+AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
dnl
AC_ARG_WITH([ldopts],
-AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
+AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
dnl
AC_PROG_CC
@@ -135,14 +135,14 @@ dnl
dnl Allow separate `root_prefix' to be specified
dnl
AC_ARG_WITH([root-prefix],
-[ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
+AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]),
root_prefix=$withval,
root_prefix=NONE)dnl
dnl
dnl handle --enable-maintainer-mode
dnl
AC_ARG_ENABLE([maintainer-mode],
-[ --enable-maintainer-mode enable makefile rules useful for maintainers],
+AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]),
if test "$enableval" = "no"
then
MAINTAINER_CMT=#
@@ -160,7 +160,7 @@ dnl
dnl handle --enable-symlink-install
dnl
AC_ARG_ENABLE([symlink-install],
-[ --enable-symlink-install use symlinks when installing instead of hard links],
+AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]),
if test "$enableval" = "no"
then
LINK_INSTALL_FLAGS=-f
@@ -179,7 +179,7 @@ dnl handle --enable-relative-symlinks
dnl
relative_symlink_defined=
AC_ARG_ENABLE([relative-symlinks],
-[ --enable-relative-symlinks use relative symlinks when installing],
+AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]),
if test "$enableval" = "no"
then
SYMLINK_RELATIVE=
@@ -211,7 +211,7 @@ dnl
dnl handle --enable-symlink-build
dnl
AC_ARG_ENABLE([symlink-build],
-[ --enable-symlink-build use symlinks while building instead of hard links],
+AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]),
if test "$enableval" = "no"
then
LINK_BUILD_FLAGS=
@@ -229,7 +229,7 @@ dnl
dnl handle --enable-verbose-makecmds
dnl
AC_ARG_ENABLE([verbose-makecmds],
-[ --enable-verbose-makecmds enable verbose make command output],
+AS_HELP_STRING([--enable-verbose-makecmds],[enable verbose make command output]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling verbose make commands])
@@ -261,7 +261,7 @@ dnl
dnl handle --enable-elf-shlibs
dnl
AC_ARG_ENABLE([elf-shlibs],
-[ --enable-elf-shlibs select ELF shared libraries],
+AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]),
if test "$enableval" = "no"
then
ELF_CMT=#
@@ -293,7 +293,7 @@ dnl
dnl handle --enable-bsd-shlibs
dnl
AC_ARG_ENABLE([bsd-shlibs],
-[ --enable-bsd-shlibs select BSD shared libraries],
+AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]),
if test "$enableval" = "no"
then
BSDLIB_CMT=#
@@ -323,7 +323,7 @@ dnl
dnl handle --enable-profile
dnl
AC_ARG_ENABLE([profile],
-[ --enable-profile build profiling libraries],
+AS_HELP_STRING([--enable-profile],[build profiling libraries]),
if test "$enableval" = "no"
then
PROFILE_CMT=#
@@ -346,7 +346,7 @@ dnl
dnl handle --enable-gcov
dnl
AC_ARG_ENABLE([gcov],
-[ --enable-gcov build for coverage testing using gcov],
+AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]),
if test "$enableval" = "yes"
then
CFLAGS="-g -fprofile-arcs -ftest-coverage"
@@ -362,7 +362,7 @@ CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}"
LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS}
AC_ARG_ENABLE([hardening],
-[ --enable-hardening build for coverage testing using gcov],
+AS_HELP_STRING([--enable-hardening],[build for coverage testing using gcov]),
if test "$enableval" = "yes"
then
HARDEN_CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
@@ -388,7 +388,7 @@ dnl
dnl handle --enable-jbd-debug
dnl
AC_ARG_ENABLE([jbd-debug],
-[ --enable-jbd-debug enable journal debugging],
+AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling journal debugging])
@@ -404,7 +404,7 @@ dnl
dnl handle --enable-blkid-debug
dnl
AC_ARG_ENABLE([blkid-debug],
-[ --enable-blkid-debug enable blkid debugging],
+AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling blkid debugging])
@@ -420,7 +420,7 @@ dnl
dnl handle --enable-testio-debug
dnl
AC_ARG_ENABLE([testio-debug],
-[ --disable-testio-debug disable the use of the test I/O manager for debugging],
+AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]),
AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
[Define to 1 if the testio I/O manager should be enabled])
if test "$enableval" = "no"
@@ -439,6 +439,27 @@ TEST_IO_CMT=
)
AC_SUBST(TEST_IO_CMT)
dnl
+dnl handle --enable-developer-features
+dnl
+AC_ARG_ENABLE([developer-features],
+AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]),
+AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES],
+ [Define to 1 for features for use by ext4 developers])
+if test "$enableval" = "yes"
+then
+ DEV_FEATURES_CMT=
+ AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1)
+ AC_MSG_RESULT([Enabling ext4 developer features])
+else
+ AC_MSG_RESULT([Disabling ext4 developer features])
+ DEV_FEATURES_CMT="#"
+fi
+,
+AC_MSG_RESULT([Disabling ext4 developer features by default])
+DEV_FEATURES_CMT=
+)
+AC_SUBST(DEV_FEATURES_CMT)
+dnl
dnl handle --disable-libuuid
dnl
PKG_PROG_PKG_CONFIG
@@ -450,7 +471,7 @@ PROFILED_LIBUUID=
DEPPROFILED_LIBUUID=
UUID_CMT=
AC_ARG_ENABLE([libuuid],
-[ --enable-libuuid build and use private uuid library],
+AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]),
if test "$enableval" = "no"
then
if test -z "$PKG_CONFIG"; then
@@ -513,7 +534,7 @@ DEPPROFILED_LIBBLKID=
BLKID_CMT=
AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
AC_ARG_ENABLE([libblkid],
-[ --enable-libblkid build and use private blkid library],
+AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]),
if test "$enableval" = "no"
then
if test -z "$PKG_CONFIG"; then
@@ -571,7 +592,7 @@ dnl
ALL_CMT=
SUBSET_CMT=
AC_ARG_ENABLE([subset],
-[ --enable-subset enable subset-only build],
+AS_HELP_STRING([--enable-subset],[enable subset-only build]),
if test "$enableval" = "no"
then
SUBSET_CMT=#
@@ -588,7 +609,7 @@ dnl handle --disable-backtrace
dnl
AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
AC_ARG_ENABLE([backtrace],
-[ --disable-backtrace disable use backtrace],
+AS_HELP_STRING([--disable-backtrace],[disable use backtrace]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling use of backtrace])
@@ -603,7 +624,7 @@ dnl
dnl handle --enable-debugfs
dnl
AC_ARG_ENABLE([debugfs],
-[ --disable-debugfs disable support of debugfs program],
+AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling debugfs support])
@@ -621,7 +642,7 @@ dnl
dnl handle --enable-imager
dnl
AC_ARG_ENABLE([imager],
-[ --disable-imager disable support of e2image program],
+AS_HELP_STRING([--disable-imager],[disable support of e2image program]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling e2image support])
@@ -639,7 +660,7 @@ dnl
dnl handle --enable-resizer
dnl
AC_ARG_ENABLE([resizer],
-[ --disable-resizer disable support of e2resize program],
+AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling e2resize support])
@@ -657,7 +678,7 @@ dnl
dnl handle --enable-defrag
dnl
AC_ARG_ENABLE([defrag],
-[ --disable-defrag disable support of e4defrag program],
+AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling e4defrag support])
@@ -681,7 +702,7 @@ dnl
dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
dnl
AC_ARG_ENABLE([fsck],
-[ --enable-fsck build fsck wrapper program],
+AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]),
[if test "$enableval" = "no"
then
FSCK_PROG='' FSCK_MAN=''
@@ -707,7 +728,7 @@ dnl
dnl See whether to install the `e2initrd-helper' program
dnl
AC_ARG_ENABLE([e2initrd-helper],
-[ --enable-e2initrd-helper build e2initrd-helper program],
+AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]),
[if test "$enableval" = "no"
then
E2INITRD_PROG='' E2INITRD_MAN=''
@@ -726,7 +747,7 @@ dnl
dnl
dnl
AC_ARG_ENABLE([tls],
-[ --disable-tls disable use of thread local support],
+AS_HELP_STRING([--disable-tls],[disable use of thread local support]),
[if test "$enableval" = "no"
then
try_tls=""
@@ -752,9 +773,33 @@ fi
dnl
dnl
dnl
+AC_ARG_WITH([pthread],
+AS_HELP_STRING([--without-pthread],[disable use of pthread support]),
+[if test "$withval" = "no"
+then
+ try_pthread=""
+ AC_MSG_RESULT([Disabling pthread support])
+else
+ try_pthread="yes"
+ AC_MSG_RESULT([Testing for pthread support])
+fi]
+,
+try_pthread="yes"
+AC_MSG_RESULT([Try testing for pthread support by default])
+)
+if test "$try_pthread" = "yes"
+then
+AX_PTHREAD
+else
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+AC_SUBST([PTHREAD_CC])
+fi
+dnl
+dnl
+dnl
AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
AC_ARG_ENABLE([uuidd],
-[ --disable-uuidd disable building the uuid daemon],
+AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]),
[if test "$enableval" = "no"
then
AC_MSG_RESULT([Not building uuidd])
@@ -781,7 +826,7 @@ dnl handle --disable-mmp
dnl
AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
AC_ARG_ENABLE([mmp],
-[ --disable-mmp disable support mmp, Multi Mount Protection],
+AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling mmp support])
@@ -798,7 +843,7 @@ dnl handle --disable-tdb
dnl
AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
AC_ARG_ENABLE([tdb],
-[ --disable-tdb disable tdb support],
+AS_HELP_STRING([--disable-tdb],[disable tdb support]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling tdb support])
@@ -823,7 +868,7 @@ dnl handle --disable-bmap-stats
dnl
AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
AC_ARG_ENABLE([bmap-stats],
-[ --disable-bmap-stats disable collection of bitmap stats.],
+AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling bitmap statistics support])
@@ -840,7 +885,7 @@ dnl handle --enable-bmap-stats-ops
dnl
AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
AC_ARG_ENABLE([bmap-stats-ops],
-[ --enable-bmap-stats-ops enable collection of additional bitmap stats],
+AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]),
if test "$enableval" = "no"
then
AC_MSG_RESULT([Disabling additional bitmap statistics])
@@ -873,7 +918,7 @@ AC_SUBST(GETTEXT_PACKAGE)
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
-AM_GNU_GETTEXT
+AM_GNU_GETTEXT([external])
dnl
dnl End of configuration options
dnl
@@ -882,6 +927,11 @@ AC_PROG_MAKE_SET
CHECK_GNU_MAKE
AC_PATH_PROG(LN, ln, ln)
AC_PROG_MKDIR_P
+dnl
+dnl @mkdir_p@ is used by po's Makefile.in
+dnl
+mkdir_p=$MKDIR_P
+AC_SUBST(mkdir_p)
AC_PROG_LN_S
AC_PATH_PROG(MV, mv, mv)
AC_PATH_PROG(CP, cp, cp)
@@ -925,6 +975,7 @@ AC_CHECK_HEADERS(m4_flatten([
malloc.h
mntent.h
paths.h
+ pthread.h
semaphore.h
setjmp.h
signal.h
@@ -960,7 +1011,6 @@ AC_CHECK_HEADERS(m4_flatten([
sys/sockio.h
sys/stat.h
sys/syscall.h
- sys/sysctl.h
sys/sysmacros.h
sys/time.h
sys/types.h
@@ -1121,6 +1171,9 @@ if test -n "$BLKID_CMT"; then
AC_CHECK_LIB(blkid, blkid_probe_get_topology,
AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
[Define to 1 if blkid has blkid_probe_get_topology]))
+ AC_CHECK_LIB(blkid, blkid_topology_get_dax,
+ AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
+ [Define to 1 if blkid has blkid_topology_get_dax]))
AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
[Define to 1 if blkid has blkid_probe_enable_partitions]))
@@ -1221,7 +1274,7 @@ FUSE_CMT=
FUSE_LIB=
dnl osxfuse.dylib supersedes fuselib.dylib
AC_ARG_ENABLE([fuse2fs],
-[ --disable-fuse2fs do not build fuse2fs],
+AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
if test "$enableval" = "no"
then
FUSE_CMT="#"
@@ -1325,7 +1378,7 @@ AX_CHECK_MOUNT_OPT(nodev)
dnl Enable LTO for all packages
dnl
AC_ARG_ENABLE([lto],
-[ --enable-lto enable link time optimization],,
+AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
enable_lto=no)
if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
AC_MSG_CHECKING([if C compiler supports LTO])
@@ -1359,7 +1412,7 @@ dnl
dnl Enable UBSAN for all packages
dnl
AC_ARG_ENABLE([ubsan],
-[ --enable-ubsan enable undefined behavior sanitizer],,
+AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
enable_ubsan=no)
if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
AC_MSG_CHECKING([if C compiler supports UBSAN])
@@ -1387,7 +1440,7 @@ dnl
dnl Enable ADDRSAN for all packages
dnl
AC_ARG_ENABLE([addrsan],
-[ --enable-addrsan enable address sanitizer],,
+AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
enable_addrsan=no)
if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
AC_MSG_CHECKING([if C compiler supports ADDRSAN])
@@ -1415,7 +1468,7 @@ dnl
dnl Enable THREADSAN for all packages
dnl
AC_ARG_ENABLE([threadsan],
-[ --enable-threadsan enable thread sanitizer],,
+AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
enable_threadsan=no)
if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
AC_MSG_CHECKING([if C compiler supports THREADSAN])
@@ -1532,7 +1585,7 @@ dnl
dnl Allow specification of the multiarch arch
dnl
AC_ARG_WITH([multiarch],
-[ --with-multiarch=ARCH specify the multiarch triplet],
+AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
if test "$withval" = "lib64"; then
libdir=/usr/lib64
root_libdir=/lib64
@@ -1757,8 +1810,7 @@ for i in MCONFIG Makefile \
lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
misc/Makefile ext2ed/Makefile e2fsck/Makefile \
debugfs/Makefile tests/Makefile tests/progs/Makefile \
- resize/Makefile doc/Makefile intl/Makefile \
- intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
+ resize/Makefile doc/Makefile po/Makefile.in scrub/Makefile; do
if test -d `dirname ${srcdir}/$i` ; then
outlist="$outlist $i"
fi
diff --git a/contrib/ext4-ioc.c b/contrib/ext4-ioc.c
new file mode 100644
index 00000000..42f022d5
--- /dev/null
+++ b/contrib/ext4-ioc.c
@@ -0,0 +1,98 @@
+/*
+ * Test program to trigger various ext4 ioctl's
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#if (!defined(EXT4_IOC_ALLOC_DA_BLKS) && defined(__linux__))
+#define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12)
+#endif
+
+#if (!defined(EXT4_IOC_SWAP_BOOT) && defined(__linux__))
+#define EXT4_IOC_SWAP_BOOT _IO('f', 17)
+#endif
+
+#if (!defined(EXT4_IOC_PRECACHE_EXTENTS) && defined(__linux__))
+#define EXT4_IOC_PRECACHE_EXTENTS _IO('f', 18)
+#endif
+
+#if (!defined(EXT4_IOC_CLEAR_ES_CACHE) && defined(__linux__))
+#define EXT4_IOC_CLEAR_ES_CACHE _IO('f', 40)
+#endif
+
+
+#define EXT4_F_RW 0x0001
+
+struct cmd {
+ const char *cmd;
+ unsigned long ioc;
+ int flags;
+};
+
+struct cmd cmds[] = {
+ { "alloc_da_blks", EXT4_IOC_ALLOC_DA_BLKS, EXT4_F_RW },
+ { "precache", EXT4_IOC_PRECACHE_EXTENTS, 0 },
+ { "swap_boot", EXT4_IOC_SWAP_BOOT, EXT4_F_RW },
+ { "clear_es_cache", EXT4_IOC_CLEAR_ES_CACHE, EXT4_F_RW },
+ { NULL, 0 }
+};
+
+const char *progname;
+
+void usage()
+{
+ struct cmd *p;
+
+ fprintf(stderr, "Usage: %s <cmd> <file>\n\n", progname);
+ fprintf(stderr, "Available commands:\n");
+ for (p = cmds; p->cmd; p++) {
+ fprintf(stderr, "\t%s\n", p->cmd);
+ }
+ exit(1);
+}
+
+int do_single_cmd(const char *fn, struct cmd *p)
+{
+ int fd;
+ int oflags = O_RDONLY;
+
+ if (p->flags & EXT4_F_RW)
+ oflags = O_RDWR;
+ fd = open(fn, oflags, 0);
+ if (fd < 0) {
+ perror("open");
+ return 1;
+ }
+ if (ioctl(fd, p->ioc) < 0) {
+ perror("ioctl");
+ return 1;
+ }
+ close(fd);
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int i, fails = 0;
+ struct cmd *p;
+
+ progname = argv[0];
+ if (argc < 3 || strcmp(argv[1], "help") == 0)
+ usage();
+ for (p = cmds; p->cmd; p++) {
+ if (strcmp(argv[1], p->cmd) == 0)
+ break;
+ }
+ if (p->cmd == NULL) {
+ fprintf(stderr, "Invalid command: %s\n", argv[1]);
+ usage();
+ }
+ for (i = 2; i < argc; i++)
+ fails += do_single_cmd(argv[i], p);
+ return fails;
+}
diff --git a/contrib/fallocate.c b/contrib/fallocate.c
index d4273d88..16c08ab3 100644
--- a/contrib/fallocate.c
+++ b/contrib/fallocate.c
@@ -95,8 +95,8 @@ int main(int argc, char **argv)
int fd;
char *fname;
int opt;
- loff_t length = -2LL;
- loff_t offset = 0;
+ ext2_loff_t length = -2LL;
+ ext2_loff_t offset = 0;
int falloc_mode = 0;
int error;
int tflag = 0;
diff --git a/contrib/jbd2-resync.sh b/contrib/jbd2-resync.sh
deleted file mode 100755
index 4133b632..00000000
--- a/contrib/jbd2-resync.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-if [ -z "$1" -o -z "$2" ]; then
- echo "Usage: $0 kernel-file e2fsprogs-file"
- exit 0
-fi
-
-# Transform a few things to fit the compatibility things defined in jfs_user.h.
-# Use the ext2fs_ endian conversion functions because they truncate oversized
-# inputs (e.g. passing a u32 to cpu_to_be16()) like the kernel versions and
-# unlike the libc6 versions.
-exec sed -e 's/JBD_/JFS_/g' \
- -e 's/JBD2_/JFS_/g' \
- -e 's/jbd2_journal_/journal_/g' \
- -e 's/__be/__u/g' \
- -e 's/struct kmem_cache/lkmem_cache_t/g' \
- -e 's/cpu_to_be/ext2fs_cpu_to_be/g' \
- -e 's/be\([0-9][0-9]\)_to_cpu/ext2fs_be\1_to_cpu/g' \
- < "$1" > "$2"
diff --git a/debian/changelog b/debian/changelog
index e9120cd1..f4629678 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,212 @@
+e2fsprogs (1.46.2-1) unstable; urgency=medium
+
+ * New upstream release
+ * Add support for the FS_NOCOMP_FL flag to chattr and lsattr.
+ * Fix Direct I/O support on block devices where the logical block size is
+ greater 1k.
+ * Fix debugfs's logdump so it works on file systems whose block size is
+ greater than 8k.
+ * Fix the debugfs rdump and ls commands so they will work correctly for
+ uid's and gid's => 65536.
+ * Teach the tune2fs program to support "random" as an argument to the -c
+ option, which sets the maximum mount count. (Closes: #926293)
+ * Fix a where e2fsck could a crash when there is error while e2fsck is
+ trying to open the file system, and e2fsck calls ext2fs_mmp_stop()
+ before MMP has been initialized. (Closes: #696609)
+ * Fix the debugfs write and symlink commands so they support targets which
+ contain a pathname (instead of only working when writing a file or
+ creating a symlink in the current directory).
+ * When resizing a small file systems to a super-large file system size,
+ avoid issuing some scary bitmap operation warnings.
+ * Improved error checking in the fast commit replay code in e2fsck.
+ * Updated and clarified the chattr man page.
+ * Update the Spanish translation from the translation project.
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Sun, 28 Feb 2021 21:24:34 -0500
+
+e2fsprogs (1.46.1-1) unstable; urgency=medium
+
+ * Drop transitional packages libcomerr2, e2fslibs, and e2fslibs-dev
+ * Fix a bug in libext2fs and debugfs when trying to set an extended
+ attribute will result in a seg fault.
+ * Fix e2fsck so it properly accepts large_dir directories which are
+ greater than 4GB in size.
+ * Fix mke2fs -d so it correctly handles important a directory or small
+ file which is stored using inline_data and contains an ACL or extended
+ attribute. (Closes: #971014)
+ * Add build profiles noudeb and pkg.e2fsprogs.no-static (Closes: #966686)
+ * Update the Czech, French, Malay, Polish, Portuguese, Sweedish, and
+ Ukranian translations from the translation project.
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Tue, 09 Feb 2021 17:36:02 -0500
+
+e2fsprogs (1.46.0-1) experimental; urgency=medium
+
+ * New upstream release
+ * Add support for the new fast_commit feature. (Requires Linux version
+ 5.10 or higher)
+ * Add support for the new stable_inodes feature which is needed to
+ support some the fscrypt siphash algorithm.
+ * Add support for file systems that have both case folding and
+ encryption enabled. (Not yet upstream, but used in some Android handsets.)
+ * The fuse2fs program now supports the "norecovery" which omits replying
+ the journal and mounts the file system read-only.
+ * Bitmap loading is now done using multiple threads which can speed up
+ debugfs, dumpe2fs, and e2fsck on very large file systems.
+ * E2fsck now will check file names on file systems with case folding
+ enabled to make sure the characters are valid UTF-8 characters.
+ This is done for file systems which enforce strict encodings, and
+ optionally if the extended "check_encoding" option is requested.
+ * E2fsck will properly handle checking for duplicated file names when
+ case folding is enabled.
+ * E2fsck will now find and fix file system corruptions when the encrypted
+ files have a different policy from their containing directory.
+ * The "htree" command in debugfs now displays the metadata checksums for
+ hash tree index blocks.
+ * Fix various bugs where a maliciously corrupted file systems could case
+ e2fsck and other e2fsprogs programs to crash.
+ * Dumpe2fs will print the error code that Linux kernels newer than v5.6
+ will save to indicate the class of error which triggered the ext4_error
+ event.
+ * E2fsprogs programs (in particular, fuse2fs) can now update htree
+ directories without clearing the htree index.
+ * Tune2fs will properly recalculate directory block checksums when
+ clearing the dir_index feature.
+ * Fix a bug in e2fsck directory rehashing which could fail with ENOSPC
+ because it doesn't take into account the space needed for the metadata
+ checksum, and doesn't create a sufficiently deep index tree.
+ * Clarify the e2fsck messages when it resets the directory link count when
+ it is set to the overflow value but it is no longer needed.
+ * Mke2fs now sets the s_overhead_cluster field, so that the kernel doesn't
+ need to calculate it at mount time. This speeds up mounting very large
+ file systems.
+ * Speed up mke2fs when creating large bigalloc file systems by optimizing
+ ext2fs_convert_subcluster_bitmap().
+ * The filefrag program can now request the kernel to display the extent
+ status cache by using "filefrag -E". (This requires Linux version 5.4
+ or newer.)
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Fri, 29 Jan 2021 16:24:41 -0500
+
+e2fsprogs (1.45.7-1) unstable; urgency=medium
+
+ * New upstream release
+ * Mke2fs will now warn when creating a file system on a DAX-capable
+ device and the block size is incompatible with DAX.
+ * The chattr and lsattr programs now support using the 'x' attribute
+ to set/get dax support on a particular file.
+ * E2fsprogs now supports the gnu.* extended attribute namespace, which
+ allows mke2fs -d to import the gnu.translator extended attributes.
+ * Add support for the simultaneous enablement of the casefold and
+ encryption features, which ext4 supports starting with the v5.5
+ Linux kernel.
+ * Debugfs will now retry opening the superblock if it finds that the
+ superblock has an invalid checksum, since this could happen when
+ opening a mounted file system.
+ * Fix an off-by-one error when validating the depth of an htree which
+ caused e2fsck to potentially fail to notice an invalid htree.
+ * Fix potential buffer overrun in e2fsck when scanning directory blocks
+ in pass 2. (Addresses Google Bug: #158564737)
+ * Fix tune2fs so that it unlocks the MMP block if it can't perform the
+ requested operation.
+ * Fix mke2fs so it can import the contents of a directory using the -d
+ option when it has inode numbers that are greater than 2**32. Also
+ fix an ommission were the extended attributes on the top-level directory
+ was not getting copied to the root directory.
+ * Fix e4crypt so that the add_key operation uses the explicitly provided
+ salt if it is provided.
+ * Fix resize2fs to prevent it from overflowing the block group descriptors
+ from overflowing the first block group. (This can only happen when the
+ block size is 1k and the file system is very large.)
+ * Fix debugfs's set_super_value command so it can set 64-bit integer
+ fields, such as s_kbytes_written.
+ * Fix filefrag so that it won't crash if the kernel returns zero for
+ statfs(2)'s device id or if it returns a blocksize of zero the device's
+ blocksize.
+ * Fix a few bad error code returns in the unix and sparse I/O managers.
+ * E2fsck will no longer try to fix duplicate file names in an encrypted
+ directory by mutating the encrypted file name.
+ * Updated and clarified various man pages.
+ * Update the Dutch, Malay, and Serbian translations from the translation
+ project.
+ * Update the Debian policy compliance to 4.5.1
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Fri, 29 Jan 2021 00:19:52 -0500
+
+e2fsprogs (1.45.6-1) unstable; urgency=medium
+
+ * New upstream release
+ * Fixed a number of potential out of bounds memory accesses caused by
+ fuzzed / malicious file systems.
+ * Fix a spurious complaint from e2fsck when a directory which previously
+ had more than 32000 subdirectories has the number of subdirectories
+ drops below 32000.
+ * Improve e2fsck's ability to deal with file systems with a *very* large
+ number of directories.
+ * Debugfs will ignore lines in its command files which start with a
+ comment character ("#").
+ * Fix debugfs so it correctly prints inode numbers > 2**31.
+ * Filefrag now supports very large files (with > 4 billion blocks), as
+ well as block sizes up to 1 GiB.
+ * Mke2fs -d now correctly sets permission with files where the owner
+ permissions are not rwx.
+ * Updated and clarified various man pages
+ (Closes: #953493, #953494, #951808)
+ * Drop as unneeded libattr1-dev as a build dependency (Closes: #953926)
+ * Update the Malay translation from the translation project.
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Fri, 20 Mar 2020 23:49:33 -0400
+
+e2fsprogs (1.45.5-2) unstable; urgency=medium
+
+ * Fix com_err support on Hurd, which has POSIX E* error code starting at
+ 0x40000000. Otherwise the regression tests will fail since the
+ expected output for various error cases will not have the correct
+ error text.
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Wed, 08 Jan 2020 15:58:44 -0500
+
+e2fsprogs (1.45.5-1) unstable; urgency=medium
+
+ * New upstream release
+ * E2fsck will no longer force a full file system check if time-based
+ forced checks are disabled and the last mount time or last write time in
+ the superblock are in the future.
+ * Fix spurious weekly e-mails when e2scrub_all is run via a cron job
+ on non-systemd systems. (Closes: #944033)
+ * Remove an unnecessary sleep in e2scrub which could add up to an
+ additional two second delay during the boot up. Also, avoid
+ trying to reap aborted snapshots if it has been disabled via
+ e2scrub.conf. (Closes: #948193)
+ * Resize2fs -M's estimates are now more accurate on mounted file systems.
+ * Tune2fs prohibits enabling or disabling the uninit_bg feature on
+ mounted file systems, since this is unsafe.
+ * Fix support of 32-bit uid's and gid's in fuse2fs and in mke2fs -d.
+ * Fix mke2fs's setting bad blocks to bigalloc file systems.
+ * Fix a bug where fuse2fs would incorrectly report the i_blocks fields for
+ bigalloc file systems.
+ * Fix potential crash in e2fsck when rebuilding very large directories on
+ file systems which have the new large_dir feature enable.
+ * Fix FTBFS problem hurd/i386. (Closes: #944649)
+ * Fix CVE-2019-5188: potential a out of bounds write in mutate_name()
+ when checking a maliciously corrupted file systems
+ * Add autopkgtest tests smoke and fuse2fs
+ * Updated and clarified various man pages
+ * Update the debhelper compatibility level to 12
+ * Update the Chinese and Malay translations
+ * Update the Debian policy compliance to 4.4.1
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Tue, 07 Jan 2020 09:18:39 -0500
+
+e2fsprogs (1.46~WIP.2019.10.09-1) experimental; urgency=medium
+
+ * Add (minimal) support to enable the fast commit feaure. This is just
+ enough to enable kernel development work; e2fsck replay of journals
+ with the fast commit feature is *not* available.
+ * E2fsck will now check encryption policies for consistency
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Wed, 09 Oct 2019 20:22:50 -0400
+
e2fsprogs (1.45.4-1) unstable; urgency=medium
* New upstream feature
diff --git a/debian/compat b/debian/compat
index b4de3947..48082f72 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-11
+12
diff --git a/debian/control b/debian/control
index f074a056..76a69a18 100644
--- a/debian/control
+++ b/debian/control
@@ -2,8 +2,8 @@ Source: e2fsprogs
Section: admin
Priority: required
Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
-Build-Depends: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, libattr1-dev, debhelper (>= 11.0), dh-exec, libblkid-dev, uuid-dev, m4, udev [linux-any], systemd [linux-any], cron [linux-any]
-Standards-Version: 4.4.0
+Build-Depends: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, debhelper (>= 12.0), dh-exec, libblkid-dev, uuid-dev, m4, udev [linux-any], systemd [linux-any], cron [linux-any]
+Standards-Version: 4.5.1
Homepage: http://e2fsprogs.sourceforge.net
Vcs-Browser: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
Vcs-Git: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git -b debian/master
@@ -33,6 +33,7 @@ Description: save the output of a command in a log file
of the output will also be written to standard output.
Package: e2fsck-static
+Build-Profiles: <!pkg.e2fsprogs.no-static>
Priority: optional
Depends: ${misc:Depends}
Recommends: sash | bash-static | zsh-static | busybox-static
@@ -62,15 +63,6 @@ Description: ext2/ext3/ext4 file system utilities - translations
This package provides translations for messages for programs found in
the 'e2fsprogs' package.
-Package: libcomerr2
-Depends: libcom-err2, ${misc:Depends}
-Architecture: any
-Multi-Arch: same
-Priority: optional
-Section: oldlibs
-Description: transitional package to libcom-err2
- This is a transitional package to libcom-err2. It can safely be removed.
-
Package: libcom-err2
Section: libs
Priority: optional
@@ -132,6 +124,7 @@ Description: command-line interface parsing library - headers and static librari
This package contains the development environment for the ss library.
Package: e2fsprogs-udeb
+Build-Profiles: <!noudeb>
Package-Type: udeb
Section: debian-installer
Priority: optional
@@ -144,23 +137,6 @@ Description: stripped-down versions of e2fsprogs, for debian-installer
Don't attempt to install this package, it has no support for a couple of
features you surely want. Anyway it should refuse to install.
-Package: e2fslibs
-Depends: libext2fs2, ${misc:Depends}
-Architecture: any
-Multi-Arch: same
-Priority: optional
-Section: oldlibs
-Description: transitional package to libext2fs2
- This is a transitional package to libext2fs2. It can safely be removed.
-
-Package: e2fslibs-dev
-Depends: libext2fs-dev, ${misc:Depends}
-Architecture: all
-Priority: optional
-Section: oldlibs
-Description: transitional package to libext2fs-dev
- This is a transitional package to libext2fs-dev. It can safely be removed.
-
Package: libext2fs2
Section: libs
Priority: optional
diff --git a/debian/e2fslibs-dev.postinst b/debian/e2fslibs-dev.postinst
deleted file mode 100644
index def66739..00000000
--- a/debian/e2fslibs-dev.postinst
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-# Abort on error.
-set -e
-
-symlink_match()
-{
- local SYMLINK="$1"
- local SYMLINK_TARGET="$2"
-
- [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
- [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
-}
-
-SYMLINK=/usr/share/doc/e2fslibs-dev
-SYMLINK_TARGET=e2fslibs
-
-if [ "$1" = "configure" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
- symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
-then
- rm -f "${SYMLINK}.dpkg-backup"
-fi
-
-#DEBHELPER#
-
-exit 0
diff --git a/debian/e2fslibs-dev.postrm b/debian/e2fslibs-dev.postrm
deleted file mode 100644
index 54841afd..00000000
--- a/debian/e2fslibs-dev.postrm
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-# Abort on error.
-set -e
-
-symlink_match()
-{
- local SYMLINK="$1"
- local SYMLINK_TARGET="$2"
-
- [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
- [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
-}
-
-SYMLINK=/usr/share/doc/e2fslibs-dev
-SYMLINK_TARGET=e2fslibs
-
-if [ "$1" = "purge" ] && [ -h "${SYMLINK}.dpkg-backup" ]
-then
- rm -f "${SYMLINK}.dpkg-backup"
-fi
-if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] &&
- [ -n "$2" ] && [ ! -e "$SYMLINK" ] && [ -h "${SYMLINK}.dpkg-backup" ] &&
- symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET"
-then
- echo "Restoring backup of $SYMLINK ..."
- mv "${SYMLINK}.dpkg-backup" "$SYMLINK"
-fi
-
-#DEBHELPER#
-
-exit 0
diff --git a/debian/e2fslibs-dev.preinst b/debian/e2fslibs-dev.preinst
deleted file mode 100644
index b3f9a4b0..00000000
--- a/debian/e2fslibs-dev.preinst
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# Abort on error.
-set -e
-
-symlink_match()
-{
- local SYMLINK="$1"
- local SYMLINK_TARGET="$2"
-
- [ "$(readlink "$SYMLINK")" = "$SYMLINK_TARGET" ] || \
- [ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
-}
-
-SYMLINK=/usr/share/doc/e2fslibs-dev
-SYMLINK_TARGET=e2fslibs
-
-if [ "$1" = "install" -o "$1" = "upgrade" ] &&
- [ -n "$2" ] && [ -h "$SYMLINK" ] &&
- symlink_match "$SYMLINK" "$SYMLINK_TARGET"
-then
- mv -f "$SYMLINK" "${SYMLINK}.dpkg-backup"
-fi
-
-#DEBHELPER#
-
-exit 0
diff --git a/debian/libext2fs2.symbols b/debian/libext2fs2.symbols
index 78c20b22..7cd7cd86 100644
--- a/debian/libext2fs2.symbols
+++ b/debian/libext2fs2.symbols
@@ -5,7 +5,9 @@ libe2p.so.2 libext2fs2 #MINVER#
e2p_edit_mntopts@Base 1.37
e2p_encmode2string@Base 1.43
e2p_encoding2str@Base 1.45.1
+ e2p_errcode2str@Base 1.46.0
e2p_feature2string@Base 1.37
+ e2p_feature_to_string@Base 1.45.6
e2p_get_encoding_flags@Base 1.45
e2p_hash2string@Base 1.37
e2p_is_null_uuid@Base 1.37
@@ -57,6 +59,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_add_exit_fn@Base 1.43
ext2fs_add_journal_device@Base 1.37
ext2fs_add_journal_inode2@Base 1.42.9-3~
+ ext2fs_add_journal_inode3@Base 1.46.0
ext2fs_add_journal_inode@Base 1.37
ext2fs_adjust_ea_refcount2@Base 1.42
ext2fs_adjust_ea_refcount3@Base 1.43
@@ -117,8 +120,11 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_blocks_count_set@Base 1.42
ext2fs_bmap2@Base 1.41.0
ext2fs_bmap@Base 1.37
+ ext2fs_calculate_summary_stats@Base 1.46.0
+ ext2fs_casefold_cmp@Base 1.46.0
ext2fs_check_desc@Base 1.37
ext2fs_check_directory@Base 1.37
+ ext2fs_check_encoded_name@Base 1.46.0
ext2fs_check_if_mounted@Base 1.37
ext2fs_check_mount_point@Base 1.37
ext2fs_clear_bit64@Base 1.42
@@ -142,6 +148,8 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_copy_dblist@Base 1.37
ext2fs_copy_generic_bitmap@Base 1.41.0
ext2fs_copy_generic_bmap@Base 1.42
+ ext2fs_count_blocks@Base 1.46.0
+ ext2fs_count_used_clusters@Base 1.46.0
ext2fs_crc16@Base 1.41.1
ext2fs_crc32_be@Base 1.43
ext2fs_crc32c_le@Base 1.42
@@ -149,6 +157,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_create_icount@Base 1.37
ext2fs_create_icount_tdb@Base 1.40
ext2fs_create_inode_cache@Base 1.43
+ ext2fs_create_journal_superblock2@Base 1.46.0
ext2fs_create_journal_superblock@Base 1.37
ext2fs_create_resize_inode@Base 1.37
ext2fs_dblist_count2@Base 1.42
@@ -162,6 +171,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_dblist_iterate@Base 1.37
ext2fs_dblist_sort2@Base 1.42
ext2fs_dblist_sort@Base 1.37
+ ext2fs_decode_extent@Base 1.46.0
ext2fs_default_journal_size@Base 1.40
ext2fs_descriptor_block_loc2@Base 1.42
ext2fs_descriptor_block_loc@Base 1.37
@@ -175,12 +185,17 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_dirent_name_len@Base 1.43
ext2fs_dirent_set_file_type@Base 1.43
ext2fs_dirent_set_name_len@Base 1.43
+ ext2fs_dirent_swab_in2@Base 1.43
+ ext2fs_dirent_swab_in@Base 1.43
+ ext2fs_dirent_swab_out2@Base 1.43
+ ext2fs_dirent_swab_out@Base 1.43
ext2fs_dirhash2@Base 1.45
ext2fs_dirhash@Base 1.37
ext2fs_div64_ceil@Base 1.42
ext2fs_div_ceil@Base 1.40
ext2fs_djb2_hash@Base 1.44.3~rc1
ext2fs_dup_handle@Base 1.37
+ ext2fs_dx_csum@Base 1.46~WIP.2019.10.09
ext2fs_expand_dir@Base 1.37
ext2fs_ext_attr_block_csum_set@Base 1.43
ext2fs_ext_attr_block_csum_verify@Base 1.43
@@ -313,6 +328,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_get_inode_bitmap_range@Base 1.41.0
ext2fs_get_inode_bitmap_start2@Base 1.42
ext2fs_get_inode_bitmap_start@Base 1.37
+ ext2fs_get_journal_params@Base 1.46.0
ext2fs_get_library_version@Base 1.37
ext2fs_get_mem@Base 1.37
ext2fs_get_memalign@Base 1.41.13
@@ -322,6 +338,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_get_num_dirs@Base 1.37
ext2fs_get_pathname@Base 1.37
ext2fs_get_rec_len@Base 1.41.7
+ ext2fs_get_stat_i_blocks@Base 1.45.5
ext2fs_group_blocks_count@Base 1.42
ext2fs_group_desc@Base 1.42
ext2fs_group_desc_csum@Base 1.42.2
@@ -474,6 +491,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_read_inode_full@Base 1.37
ext2fs_remove_exit_fn@Base 1.43
ext2fs_reserve_super_and_bgd@Base 1.37
+ ext2fs_resize_array@Base 1.45.6
ext2fs_resize_block_bitmap2@Base 1.42
ext2fs_resize_block_bitmap@Base 1.37
ext2fs_resize_generic_bitmap@Base 1.37
@@ -482,6 +500,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_resize_inode_bitmap@Base 1.37
ext2fs_resize_mem@Base 1.37
ext2fs_rewrite_to_io@Base 1.37
+ ext2fs_rw_bitmaps@Base 1.46.0
ext2fs_set_alloc_block_callback@Base 1.41.0
ext2fs_set_bit64@Base 1.42
ext2fs_set_bit@Base 1.37
@@ -514,6 +533,15 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_swab16@Base 1.37
ext2fs_swab32@Base 1.37
ext2fs_swab64@Base 1.40
+ ext2fs_swap_ext_attr@Base 1.40
+ ext2fs_swap_ext_attr_entry@Base 1.41
+ ext2fs_swap_ext_attr_header@Base 1.41
+ ext2fs_swap_group_desc2@Base 1.42
+ ext2fs_swap_group_desc@Base 1.37
+ ext2fs_swap_inode@Base 1.37
+ ext2fs_swap_inode_full@Base 1.40
+ ext2fs_swap_mmp@Base 1.42
+ ext2fs_swap_super@Base 1.37
ext2fs_symlink@Base 1.42.7
ext2fs_sync_device@Base 1.37
ext2fs_tdb_append@Base 1.40
diff --git a/debian/rules b/debian/rules
index 5fbee8a8..e36bcaaa 100755
--- a/debian/rules
+++ b/debian/rules
@@ -68,7 +68,9 @@ override_dh_auto_configure:
override_dh_auto_build:
$(MAKE) -C ${stdbuilddir} V=1 all
+ifeq (,$(filter pkg.e2fsprogs.no-static,$(DEB_BUILD_PROFILES)))
$(MAKE) -C ${stdbuilddir}/e2fsck V=1 e2fsck.static
+endif
if ! test -d debian/orig-gmo ; then \
mkdir debian/orig-gmo ; \
mv po/*.gmo po/*.po debian/orig-gmo ; \
@@ -96,9 +98,11 @@ override_dh_auto_install:
# static libs and .h files
$(MAKE) -C ${stdbuilddir} V=1 install-libs DESTDIR=${tmpdir} LDCONFIG=true
+ifeq (,$(filter pkg.e2fsprogs.no-static,$(DEB_BUILD_PROFILES)))
# statically-linked fsck
${INSTALL_PROGRAM} ${stdbuilddir}/e2fsck/e2fsck.static ${tmpdir}/sbin
(cd debian/tmp/usr/share/man/man8 ; cp e2fsck.8 e2fsck.static.8)
+endif
ifeq ($(DEB_HOST_ARCH_OS), hurd)
${INSTALL} -m 0644 misc/mke2fs-hurd.conf ${tmpdir}/etc/mke2fs.conf
@@ -110,10 +114,12 @@ override_dh_install:
dh_install
dh_missing --fail-missing
+ifeq (,$(filter noudeb,$(DEB_BUILD_PROFILES)))
override_dh_lintian:
dh_lintian
$(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \
debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb
+endif
override_dh_installinfo:
# HTML docs
@@ -151,13 +157,15 @@ override_dh_makeshlibs:
patch debian/$$i.symbols < debian/$$i.tmp-patch; \
/bin/rm debian/$$i.tmp-patch; \
done
- dh_makeshlibs --add-udeb=e2fsprogs-udeb
+ dh_makeshlibs $(if $(filter noudeb,$(DEB_BUILD_PROFILES)),,--add-udeb=e2fsprogs-udeb)
override_dh_shlibdeps:
dh_shlibdeps -pe2fsprogs -l${stdbuilddir}/lib \
-- -Ldebian/e2fsprogs.shlibs.local
+ifeq (,$(filter noudeb,$(DEB_BUILD_PROFILES)))
dh_shlibdeps -pe2fsprogs-udeb -l${stdbuilddir}/lib \
-- -Ldebian/e2fsprogs-udeb.shlibs.local
+endif
ifeq ($(SKIP_FUSE2FS),)
dh_shlibdeps -pfuse2fs -l${stdbuilddir}/lib \
-- -Ldebian/e2fsprogs.shlibs.local
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 00000000..e149342f
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,6 @@
+Tests: smoke
+Depends: e2fsprogs
+
+Tests: fuse2fs
+Depends: fuse2fs, fuse3
+Restrictions: isolation-machine
diff --git a/debian/tests/fuse2fs b/debian/tests/fuse2fs
new file mode 100755
index 00000000..8b4e08af
--- /dev/null
+++ b/debian/tests/fuse2fs
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+TDIR=${AUTOPKGTEST_TMP:-/tmp/fuse_dir}
+LOGDIR=${AUTOPKGTEST_ARTIFACTS:-/tmp/fuse_dir_log}
+IMG=$TDIR/test-image.img
+MNT=$TDIR/mnt
+
+# some autopkgtest environments may not have /etc/mtab and/or /proc/mounts
+EXT2FS_NO_MTAB_OK=yes
+export EXT2FS_NO_MTAB_OK
+
+mkdir -p $LOGDIR $TDIR $MNT
+
+/sbin/mke2fs -E root_owner -q -t ext4 -d e2fsck $IMG 8M
+/sbin/e2label $IMG test
+fuse2fs $IMG $MNT > $LOGDIR/fuse2fs.log 2>&1
+if test $? -ne 0 ; then
+ echo "fuse2fs failed; see $LOGDIR/fuse2fs.log"
+ exit 1
+fi
+diff e2fsck/pass1.c $MNT/pass1.c
+echo foobar > $MNT/testfile
+fusermount -u $MNT > $LOGDIR/fusermount.log 2>&1
+if test $? -ne 0 ; then
+ echo "fusermount failed; see $LOGDIR/fusermount.log"
+ exit 1
+fi
+/sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.log 2>&1
+if test $? -ne 0 ; then
+ echo "e2fsck failed; see $LOGDIR/e2fsck.log"
+ exit 1
+fi
+contents=$(/sbin/debugfs -R "cat testfile" $IMG 2> $LOGDIR/debugfs.log)
+if test "$contents" != foobar ; then
+ echo "testfile does not contain expected output"
+ exit 1
+fi
diff --git a/debian/tests/smoke b/debian/tests/smoke
new file mode 100755
index 00000000..966be966
--- /dev/null
+++ b/debian/tests/smoke
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+TDIR=${AUTOPKGTEST_TMP:-/tmp/test_dir}
+LOGDIR=${AUTOPKGTEST_ARTIFACTS:-/tmp/test_dir_log}
+IMG=$TDIR/test-image.img
+
+# some autopkgtest environments may not have /etc/mtab and/or /proc/mounts
+EXT2FS_NO_MTAB_OK=yes
+export EXT2FS_NO_MTAB_OK
+
+mkdir -p $LOGDIR $TDIR
+
+/sbin/mke2fs -q -t ext4 -d e2fsck $IMG 8M
+/sbin/e2label $IMG test
+/sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.1.log 2>&1
+if test $? -ne 0 ; then
+ echo "First e2fsck failed; see $LOGDIR/e2fsck.1.log"
+ exit 1
+fi
+/sbin/resize2fs $IMG 16M > $LOGDIR/resize2fs.log 2>&1
+if test $? -ne 0 ; then
+ echo "Resize2fs failed; see $LOGDIR/e2fsck.1.log"
+ exit 1
+fi
+/sbin/e2fsck -fy $IMG > $LOGDIR/e2fsck.2.log 2>&1
+if test $? -ne 0 ; then
+ echo "Second e2fsck failed; see $LOGDIR/e2fsck.2.log"
+ exit 1
+fi
+/sbin/debugfs -R "dump pass1.c $TDIR/pass1.c" $IMG > $LOGDIR/debugfs.log 2>&1
+diff $TDIR/pass1.c e2fsck/pass1.c
+
diff --git a/debugfs/Makefile.in b/debugfs/Makefile.in
index bb4d1947..ed4ea8d8 100644
--- a/debugfs/Makefile.in
+++ b/debugfs/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = debugfs
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -187,7 +188,7 @@ debugfs.o: $(srcdir)/debugfs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/version.h \
$(srcdir)/../e2fsck/jfs_user.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
$(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
- $(top_srcdir)/lib/support/plausible.h
+ $(top_srcdir)/lib/ext2fs/compiler.h $(top_srcdir)/lib/support/plausible.h
util.o: $(srcdir)/util.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ss/ss.h \
$(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
@@ -278,7 +279,8 @@ logdump.o: $(srcdir)/logdump.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/../e2fsck/jfs_user.h \
$(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h
htree.o: $(srcdir)/htree.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \
$(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
@@ -386,7 +388,8 @@ journal.o: $(srcdir)/journal.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
- $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
+ $(top_srcdir)/lib/ext2fs/compiler.h
revoke.o: $(srcdir)/../e2fsck/revoke.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
$(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \
@@ -394,7 +397,8 @@ revoke.o: $(srcdir)/../e2fsck/revoke.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_builddir)/lib/ext2fs/ext2_err.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
- $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
+ $(top_srcdir)/lib/ext2fs/compiler.h
recovery.o: $(srcdir)/../e2fsck/recovery.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
$(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \
@@ -402,7 +406,8 @@ recovery.o: $(srcdir)/../e2fsck/recovery.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_builddir)/lib/ext2fs/ext2_err.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
- $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
+ $(top_srcdir)/lib/ext2fs/compiler.h
do_journal.o: $(srcdir)/do_journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \
$(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
@@ -415,5 +420,5 @@ do_journal.o: $(srcdir)/do_journal.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
$(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h $(srcdir)/journal.h \
- $(srcdir)/../e2fsck/jfs_user.h
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/journal.h $(srcdir)/../e2fsck/jfs_user.h
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index 15b01214..b67a88bc 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -48,8 +48,14 @@ extern char *optarg;
int journal_enable_debug = -1;
#endif
+/*
+ * There must be only one definition if we're hooking in extra commands or
+ * chaging default prompt. Use -DSKIP_GLOBDEF for that.
+ */
+#ifndef SKIP_GLOBDEFS
ss_request_table *extra_cmds;
const char *debug_prog_name;
+#endif
int ss_sci_idx;
ext2_filsys current_fs;
@@ -225,7 +231,8 @@ void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
int catastrophic = 0;
blk64_t superblock = 0;
blk64_t blocksize = 0;
- int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
+ int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS |
+ EXT2_FLAG_THREADS;
char *data_filename = 0;
char *undo_file = NULL;
@@ -270,7 +277,11 @@ void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
return;
break;
case 'z':
+#ifdef READ_ONLY
+ goto print_usage;
+#else
undo_file = optarg;
+#endif
break;
default:
goto print_usage;
@@ -288,9 +299,10 @@ void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
print_usage:
fprintf(stderr, "%s: Usage: open [-s superblock] [-b blocksize] "
+#ifdef READ_ONLY
"[-d image_filename] [-z undo_file] [-c] [-i] [-f] [-e] [-D] "
-#ifndef READ_ONLY
- "[-w] "
+#else
+ "[-d image_filename] [-c] [-i] [-f] [-e] [-D] [-w] "
#endif
"<device>\n", argv[0]);
}
@@ -467,7 +479,7 @@ void do_show_super_stats(int argc, char *argv[],
}
for (i=0; i < current_fs->group_desc_count; i++)
numdirs += ext2fs_bg_used_dirs_count(current_fs, i);
- fprintf(out, "Directories: %d\n", numdirs);
+ fprintf(out, "Directories: %u\n", numdirs);
if (header_only) {
close_pager(out);
@@ -481,11 +493,12 @@ void do_show_super_stats(int argc, char *argv[],
"inode table at %llu\n"
" %u free %s%s, "
"%u free %s, "
- "%u used %s%s",
- i, ext2fs_block_bitmap_loc(current_fs, i),
- ext2fs_inode_bitmap_loc(current_fs, i),
- ext2fs_inode_table_loc(current_fs, i),
- ext2fs_bg_free_blocks_count(current_fs, i), units,
+ "%u used %s%s", i,
+ (unsigned long long) ext2fs_block_bitmap_loc(current_fs, i),
+ (unsigned long long) ext2fs_inode_bitmap_loc(current_fs, i),
+ (unsigned long long) ext2fs_inode_table_loc(current_fs, i),
+ ext2fs_bg_free_blocks_count(current_fs, i),
+ units,
ext2fs_bg_free_blocks_count(current_fs, i) != 1 ?
"s" : "",
ext2fs_bg_free_inodes_count(current_fs, i),
@@ -555,11 +568,13 @@ static void finish_range(struct list_blocks_struct *lb)
fprintf(lb->f, ", ");
if (lb->first_block == lb->last_block)
fprintf(lb->f, "(%lld):%llu",
- (long long)lb->first_bcnt, lb->first_block);
+ (long long)lb->first_bcnt,
+ (unsigned long long) lb->first_block);
else
fprintf(lb->f, "(%lld-%lld):%llu-%llu",
(long long)lb->first_bcnt, (long long)lb->last_bcnt,
- lb->first_block, lb->last_block);
+ (unsigned long long) lb->first_block,
+ (unsigned long long) lb->last_block);
lb->first_block = 0;
}
@@ -709,18 +724,18 @@ static void dump_extents(FILE *f, const char *prefix, ext2_ino_t ino,
info.curr_level, info.max_depth,
info.curr_entry, info.num_entries,
logical_width,
- extent.e_lblk,
+ (unsigned long long) extent.e_lblk,
logical_width,
- extent.e_lblk + (extent.e_len - 1),
+ (unsigned long long) extent.e_lblk + (extent.e_len - 1),
physical_width,
- extent.e_pblk,
+ (unsigned long long) extent.e_pblk,
physical_width+3, "", extent.e_len);
continue;
}
- fprintf(f, "%s(ETB%d):%lld",
+ fprintf(f, "%s(ETB%d):%llu",
printed ? ", " : "", info.curr_level,
- extent.e_pblk);
+ (unsigned long long) extent.e_pblk);
printed = 1;
continue;
}
@@ -731,13 +746,13 @@ static void dump_extents(FILE *f, const char *prefix, ext2_ino_t ino,
info.curr_level, info.max_depth,
info.curr_entry, info.num_entries,
logical_width,
- extent.e_lblk,
+ (unsigned long long) extent.e_lblk,
logical_width,
- extent.e_lblk + (extent.e_len - 1),
+ (unsigned long long) extent.e_lblk + (extent.e_len - 1),
physical_width,
- extent.e_pblk,
+ (unsigned long long) extent.e_pblk,
physical_width,
- extent.e_pblk + (extent.e_len - 1),
+ (unsigned long long) extent.e_pblk + (extent.e_len - 1),
extent.e_len,
extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
"Uninit" : "");
@@ -750,20 +765,20 @@ static void dump_extents(FILE *f, const char *prefix, ext2_ino_t ino,
fprintf(f,
"%s(%lld%s):%lld",
printed ? ", " : "",
- extent.e_lblk,
+ (unsigned long long) extent.e_lblk,
extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
"[u]" : "",
- extent.e_pblk);
+ (unsigned long long) extent.e_pblk);
else
fprintf(f,
"%s(%lld-%lld%s):%lld-%lld",
printed ? ", " : "",
- extent.e_lblk,
- extent.e_lblk + (extent.e_len - 1),
+ (unsigned long long) extent.e_lblk,
+ (unsigned long long) extent.e_lblk + (extent.e_len - 1),
extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT ?
"[u]" : "",
- extent.e_pblk,
- extent.e_pblk + (extent.e_len - 1));
+ (unsigned long long) extent.e_pblk,
+ (unsigned long long) extent.e_pblk + (extent.e_len - 1));
printed = 1;
}
if (printed)
@@ -849,12 +864,12 @@ void internal_dump_inode(FILE *out, const char *prefix,
fprintf(out, " Project: %5d", large_inode->i_projid);
fputs(" Size: ", out);
if (LINUX_S_ISREG(inode->i_mode) || LINUX_S_ISDIR(inode->i_mode))
- fprintf(out, "%llu\n", EXT2_I_SIZE(inode));
+ fprintf(out, "%llu\n", (unsigned long long) EXT2_I_SIZE(inode));
else
- fprintf(out, "%d\n", inode->i_size);
+ fprintf(out, "%u\n", inode->i_size);
if (os == EXT2_OS_HURD)
fprintf(out,
- "%sFile ACL: %d Translator: %d\n",
+ "%sFile ACL: %u Translator: %u\n",
prefix,
inode->i_file_acl,
inode->osd1.hurd1.h_i_translator);
@@ -864,13 +879,13 @@ void internal_dump_inode(FILE *out, const char *prefix,
inode->i_file_acl | ((long long)
(inode->osd2.linux2.l_i_file_acl_high) << 32));
if (os != EXT2_OS_HURD)
- fprintf(out, "%sLinks: %d Blockcount: %llu\n",
+ fprintf(out, "%sLinks: %u Blockcount: %llu\n",
prefix, inode->i_links_count,
(((unsigned long long)
inode->osd2.linux2.l_i_blocks_hi << 32)) +
inode->i_blocks);
else
- fprintf(out, "%sLinks: %d Blockcount: %u\n",
+ fprintf(out, "%sLinks: %u Blockcount: %u\n",
prefix, inode->i_links_count, inode->i_blocks);
switch (os) {
case EXT2_OS_HURD:
@@ -880,7 +895,7 @@ void internal_dump_inode(FILE *out, const char *prefix,
default:
frag = fsize = 0;
}
- fprintf(out, "%sFragment: Address: %d Number: %d Size: %d\n",
+ fprintf(out, "%sFragment: Address: %u Number: %u Size: %u\n",
prefix, inode->i_faddr, frag, fsize);
if (is_large_inode && large_inode->i_extra_isize >= 24) {
fprintf(out, "%s ctime: 0x%08x:%08x -- %s", prefix,
@@ -1073,7 +1088,7 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
int ref_offset EXT2FS_ATTR((unused)),
void *private EXT2FS_ATTR((unused)))
{
- printf("%llu ", *blocknr);
+ printf("%llu ", (unsigned long long) *blocknr);
return 0;
}
@@ -1220,7 +1235,7 @@ void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
while (count-- > 0) {
if (!ext2fs_test_block_bitmap2(current_fs->block_map,block))
com_err(argv[0], 0, "Warning: block %llu already clear",
- block);
+ (unsigned long long) block);
ext2fs_unmark_block_bitmap2(current_fs->block_map,block);
block++;
}
@@ -1240,7 +1255,7 @@ void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
while (count-- > 0) {
if (ext2fs_test_block_bitmap2(current_fs->block_map,block))
com_err(argv[0], 0, "Warning: block %llu already set",
- block);
+ (unsigned long long) block);
ext2fs_mark_block_bitmap2(current_fs->block_map,block);
block++;
}
@@ -1258,9 +1273,11 @@ void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
while (count-- > 0) {
if (ext2fs_test_block_bitmap2(current_fs->block_map,block))
- printf("Block %llu marked in use\n", block);
+ printf("Block %llu marked in use\n",
+ (unsigned long long) block);
else
- printf("Block %llu not in use\n", block);
+ printf("Block %llu not in use\n",
+ (unsigned long long) block);
block++;
}
}
@@ -1397,7 +1414,7 @@ void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
modify_u8(argv[0], "Fragment size", decimal_format, fsize);
for (i=0; i < EXT2_NDIR_BLOCKS; i++) {
- sprintf(buf, "Direct Block #%d", i);
+ sprintf(buf, "Direct Block #%u", i);
modify_u32(argv[0], buf, decimal_format, &inode.i_block[i]);
}
modify_u32(argv[0], "Indirect Block", decimal_format,
@@ -1696,7 +1713,7 @@ void do_find_free_block(int argc, char *argv[],
com_err("ext2fs_new_block", retval, 0);
return;
} else
- printf("%llu ", free_blk);
+ printf("%llu ", (unsigned long long) free_blk);
}
printf("\n");
}
@@ -2098,10 +2115,11 @@ void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
&ret_flags, &pblk);
if (errcode) {
com_err(argv[0], errcode,
- "while mapping logical block %llu\n", blk);
+ "while mapping logical block %llu\n",
+ (unsigned long long) blk);
return;
}
- printf("%llu", pblk);
+ printf("%llu", (unsigned long long) pblk);
if (ret_flags & BMAP_RET_UNINIT)
fputs(" (uninit)", stdout);
fputc('\n', stdout);
@@ -2133,7 +2151,7 @@ void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
block;
offset &= (EXT2_BLOCK_SIZE(current_fs->super) - 1);
- printf("Inode %d is part of block group %lu\n"
+ printf("Inode %u is part of block group %lu\n"
"\tlocated at block %lu, offset 0x%04lx\n", ino, group,
block_nr, offset);
@@ -2279,9 +2297,9 @@ void do_supported_features(int argc, char *argv[],
__u32 supp[3] = { EXT2_LIB_FEATURE_COMPAT_SUPP,
EXT2_LIB_FEATURE_INCOMPAT_SUPP,
EXT2_LIB_FEATURE_RO_COMPAT_SUPP };
- __u32 jrnl_supp[3] = { JFS_KNOWN_COMPAT_FEATURES,
- JFS_KNOWN_INCOMPAT_FEATURES,
- JFS_KNOWN_ROCOMPAT_FEATURES };
+ __u32 jrnl_supp[3] = { JBD2_KNOWN_COMPAT_FEATURES,
+ JBD2_KNOWN_INCOMPAT_FEATURES,
+ JBD2_KNOWN_ROCOMPAT_FEATURES };
if (argc > 1) {
ret = find_supp_feature(supp, E2P_FS_FEATURE, argv[1]);
@@ -2373,7 +2391,6 @@ void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
}
-#endif /* READ_ONLY */
void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
@@ -2389,6 +2406,7 @@ void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
com_err(argv[0], retval, 0);
}
+#endif /* READ_ONLY */
#if CONFIG_MMP
void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
@@ -2435,19 +2453,23 @@ void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
retval = ext2fs_mmp_read(current_fs, mmp_block, current_fs->mmp_buf);
if (retval) {
com_err(argv[0], retval, "reading MMP block %llu.\n",
- mmp_block);
+ (unsigned long long) mmp_block);
return;
}
t = mmp_s->mmp_time;
- fprintf(stdout, "block_number: %llu\n", current_fs->super->s_mmp_block);
+ fprintf(stdout, "block_number: %llu\n",
+ (unsigned long long) current_fs->super->s_mmp_block);
fprintf(stdout, "update_interval: %d\n",
current_fs->super->s_mmp_update_interval);
fprintf(stdout, "check_interval: %d\n", mmp_s->mmp_check_interval);
fprintf(stdout, "sequence: %08x\n", mmp_s->mmp_seq);
- fprintf(stdout, "time: %lld -- %s", mmp_s->mmp_time, ctime(&t));
- fprintf(stdout, "node_name: %s\n", mmp_s->mmp_nodename);
- fprintf(stdout, "device_name: %s\n", mmp_s->mmp_bdevname);
+ fprintf(stdout, "time: %llu -- %s",
+ (unsigned long long) mmp_s->mmp_time, ctime(&t));
+ fprintf(stdout, "node_name: %.*s\n",
+ EXT2_LEN_STR(mmp_s->mmp_nodename));
+ fprintf(stdout, "device_name: %.*s\n",
+ EXT2_LEN_STR(mmp_s->mmp_bdevname));
fprintf(stdout, "magic: 0x%x\n", mmp_s->mmp_magic);
fprintf(stdout, "checksum: 0x%08x\n", mmp_s->mmp_checksum);
}
@@ -2486,6 +2508,10 @@ static int source_file(const char *cmd_file, int ss_idx)
while (!feof(f)) {
if (fgets(buf, sizeof(buf), f) == NULL)
break;
+ if (buf[0] == '#') {
+ printf("%s", buf);
+ continue;
+ }
cp = strchr(buf, '\n');
if (cp)
*cp = 0;
@@ -2515,7 +2541,8 @@ int main(int argc, char **argv)
#endif
"[-c]] [device]";
int c;
- int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
+ int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES |
+ EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
char *request = 0;
int exit_status = 0;
char *cmd_file = 0;
@@ -2527,8 +2554,8 @@ int main(int argc, char **argv)
const char *opt_string = "nicR:f:b:s:Vd:D";
#else
const char *opt_string = "niwcR:f:b:s:Vd:Dz:";
- char *undo_file = NULL;
#endif
+ char *undo_file = NULL;
#ifdef CONFIG_JBD_DEBUG
char *jbd_debug;
#endif
@@ -2600,9 +2627,11 @@ int main(int argc, char **argv)
fprintf(stderr, "\tUsing %s\n",
error_message(EXT2_ET_BASE));
exit(0);
+#ifndef READ_ONLY
case 'z':
undo_file = optarg;
break;
+#endif
default:
com_err(argv[0], 0, usage, debug_prog_name);
return 1;
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
index 477d9bbb..39bc0247 100644
--- a/debugfs/debugfs.h
+++ b/debugfs/debugfs.h
@@ -123,6 +123,8 @@ extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *
extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
/* debugfs.c */
+extern ss_request_table *extra_cmds;
+extern const char *debug_prog_name;
extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
struct ext2_inode *, int);
@@ -191,7 +193,8 @@ extern void do_get_quota(int argc, char *argv[], int sci_idx, void *infop);
/* util.c */
extern __s64 string_to_time(const char *arg);
-errcode_t read_list(char *str, blk64_t **list, size_t *len);
+extern errcode_t read_list(char *str, blk64_t **list, size_t *len);
+extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
/* xattrs.c */
void dump_inode_attributes(FILE *out, ext2_ino_t ino);
@@ -205,4 +208,3 @@ void block_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
/* zap.c */
extern void do_zap_block(int argc, char **argv, int sci_idx, void *infop);
extern void do_block_dump(int argc, char **argv, int sci_idx, void *infop);
-extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
diff --git a/debugfs/do_journal.c b/debugfs/do_journal.c
index eeb363eb..38439c69 100644
--- a/debugfs/do_journal.c
+++ b/debugfs/do_journal.c
@@ -59,7 +59,7 @@ static journal_t *current_journal = NULL;
static void journal_dump_trans(journal_transaction_t *trans EXT2FS_ATTR((unused)),
const char *tag EXT2FS_ATTR((unused)))
{
- dbg_printf("TRANS %p(%s): tid=%d start=%llu block=%llu end=%llu "
+ dbg_printf("TRANS %p(%s): tid=%u start=%llu block=%llu end=%llu "
"flags=0x%x\n", trans, tag, trans->tid, trans->start,
trans->block, trans->end, trans->flags);
}
@@ -85,10 +85,10 @@ static errcode_t journal_commit_trans(journal_transaction_t *trans)
/* write the descriptor block header */
commit = (struct commit_header *)bh->b_data;
- commit->h_magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- commit->h_blocktype = ext2fs_cpu_to_be32(JFS_COMMIT_BLOCK);
+ commit->h_magic = ext2fs_cpu_to_be32(JBD2_MAGIC_NUMBER);
+ commit->h_blocktype = ext2fs_cpu_to_be32(JBD2_COMMIT_BLOCK);
commit->h_sequence = ext2fs_cpu_to_be32(trans->tid);
- if (jfs_has_feature_checksum(trans->journal)) {
+ if (jbd2_has_feature_checksum(trans->journal)) {
__u32 csum_v1 = ~0;
blk64_t cblk;
@@ -100,12 +100,12 @@ static errcode_t journal_commit_trans(journal_transaction_t *trans)
}
for (cblk = trans->start; cblk < trans->block; cblk++) {
- err = journal_bmap(trans->journal, cblk,
- &cbh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, cblk,
+ &cbh->b_blocknr);
if (err)
goto error;
mark_buffer_uptodate(cbh, 0);
- ll_rw_block(READ, 1, &cbh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &cbh);
err = cbh->b_err;
if (err)
goto error;
@@ -114,8 +114,8 @@ static errcode_t journal_commit_trans(journal_transaction_t *trans)
cbh->b_size);
}
- commit->h_chksum_type = JFS_CRC32_CHKSUM;
- commit->h_chksum_size = JFS_CRC32_CHKSUM_SIZE;
+ commit->h_chksum_type = JBD2_CRC32_CHKSUM;
+ commit->h_chksum_size = JBD2_CRC32_CHKSUM_SIZE;
commit->h_chksum[0] = ext2fs_cpu_to_be32(csum_v1);
} else {
commit->h_chksum_type = 0;
@@ -133,14 +133,14 @@ static errcode_t journal_commit_trans(journal_transaction_t *trans)
/* Write block */
jbd2_commit_block_csum_set(trans->journal, bh);
- err = journal_bmap(trans->journal, trans->block, &bh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, trans->block, &bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing commit block at %llu:%llu\n", trans->block,
bh->b_blocknr);
mark_buffer_dirty(bh);
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
err = bh->b_err;
if (err)
goto error;
@@ -161,7 +161,7 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
blk64_t *revoke_list,
size_t revoke_len)
{
- journal_revoke_header_t *jrb;
+ jbd2_journal_revoke_header_t *jrb;
void *buf;
size_t i, offset;
blk64_t curr_blk;
@@ -180,8 +180,8 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
return 0;
/* Do we need to leave space at the end for a checksum? */
- if (journal_has_csum_v2or3(trans->journal))
- csum_size = sizeof(struct journal_revoke_tail);
+ if (jbd2_journal_has_csum_v2or3(trans->journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
curr_blk = trans->block;
@@ -190,12 +190,12 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
if (bh == NULL)
return ENOMEM;
jrb = buf = bh->b_data;
- jrb->r_header.h_magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- jrb->r_header.h_blocktype = ext2fs_cpu_to_be32(JFS_REVOKE_BLOCK);
+ jrb->r_header.h_magic = ext2fs_cpu_to_be32(JBD2_MAGIC_NUMBER);
+ jrb->r_header.h_blocktype = ext2fs_cpu_to_be32(JBD2_REVOKE_BLOCK);
jrb->r_header.h_sequence = ext2fs_cpu_to_be32(trans->tid);
offset = sizeof(*jrb);
- if (jfs_has_feature_64bit(trans->journal))
+ if (jbd2_has_feature_64bit(trans->journal))
sz = 8;
else
sz = 4;
@@ -206,14 +206,14 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
jrb->r_count = ext2fs_cpu_to_be32(offset);
jbd2_revoke_csum_set(trans->journal, bh);
- err = journal_bmap(trans->journal, curr_blk,
- &bh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, curr_blk,
+ &bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing revoke block at %llu:%llu\n",
curr_blk, bh->b_blocknr);
mark_buffer_dirty(bh);
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
err = bh->b_err;
if (err)
goto error;
@@ -228,7 +228,7 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
goto error;
}
- if (jfs_has_feature_64bit(trans->journal))
+ if (jbd2_has_feature_64bit(trans->journal))
*((__u64 *)(&((char *)buf)[offset])) =
ext2fs_cpu_to_be64(revoke_list[i]);
else
@@ -241,13 +241,14 @@ static errcode_t journal_add_revoke_to_trans(journal_transaction_t *trans,
jrb->r_count = ext2fs_cpu_to_be32(offset);
jbd2_revoke_csum_set(trans->journal, bh);
- err = journal_bmap(trans->journal, curr_blk, &bh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, curr_blk,
+ &bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing revoke block at %llu:%llu\n",
curr_blk, bh->b_blocknr);
mark_buffer_dirty(bh);
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
err = bh->b_err;
if (err)
goto error;
@@ -284,8 +285,8 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
return 0;
/* Do we need to leave space at the end for a checksum? */
- if (journal_has_csum_v2or3(trans->journal))
- csum_size = sizeof(struct journal_block_tail);
+ if (jbd2_journal_has_csum_v2or3(trans->journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
curr_blk = jdb_blk = trans->block;
@@ -303,8 +304,8 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
goto error;
}
jdb = jdb_buf = bh->b_data;
- jdb->h_magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- jdb->h_blocktype = ext2fs_cpu_to_be32(JFS_DESCRIPTOR_BLOCK);
+ jdb->h_magic = ext2fs_cpu_to_be32(JBD2_MAGIC_NUMBER);
+ jdb->h_blocktype = ext2fs_cpu_to_be32(JBD2_DESCRIPTOR_BLOCK);
jdb->h_sequence = ext2fs_cpu_to_be32(trans->tid);
jdbt = (journal_block_tag_t *)(jdb + 1);
@@ -322,14 +323,14 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
if ((char *)jdbt + tag_bytes >
(char *)jdb_buf + trans->journal->j_blocksize - csum_size) {
jbd2_descr_block_csum_set(trans->journal, bh);
- err = journal_bmap(trans->journal, jdb_blk,
+ err = jbd2_journal_bmap(trans->journal, jdb_blk,
&bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing descriptor block at %llu:%llu\n",
jdb_blk, bh->b_blocknr);
mark_buffer_dirty(bh);
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
err = bh->b_err;
if (err)
goto error;
@@ -349,7 +350,7 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
jdbt->t_blocknr = ext2fs_cpu_to_be32(block_list[i] & 0xFFFFFFFF);
jdbt->t_flags = 0;
if (jdbt != (journal_block_tag_t *)(jdb + 1))
- jdbt->t_flags |= ext2fs_cpu_to_be16(JFS_FLAG_SAME_UUID);
+ jdbt->t_flags |= ext2fs_cpu_to_be16(JBD2_FLAG_SAME_UUID);
else {
memcpy(jdbt + tag_bytes,
trans->journal->j_superblock->s_uuid,
@@ -357,26 +358,26 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
tag_bytes += 16;
}
if (i == block_len - 1)
- jdbt->t_flags |= ext2fs_cpu_to_be16(JFS_FLAG_LAST_TAG);
- if (*((__u32 *)buf) == ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER)) {
+ jdbt->t_flags |= ext2fs_cpu_to_be16(JBD2_FLAG_LAST_TAG);
+ if (*((__u32 *)buf) == ext2fs_cpu_to_be32(JBD2_MAGIC_NUMBER)) {
*((__u32 *)buf) = 0;
- jdbt->t_flags |= ext2fs_cpu_to_be16(JFS_FLAG_ESCAPE);
+ jdbt->t_flags |= ext2fs_cpu_to_be16(JBD2_FLAG_ESCAPE);
}
- if (jfs_has_feature_64bit(trans->journal))
+ if (jbd2_has_feature_64bit(trans->journal))
jdbt->t_blocknr_high = ext2fs_cpu_to_be32(block_list[i] >> 32);
jbd2_block_tag_csum_set(trans->journal, jdbt, data_bh,
trans->tid);
/* Write the data block */
- err = journal_bmap(trans->journal, curr_blk,
- &data_bh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, curr_blk,
+ &data_bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing data block %llu at %llu:%llu tag %d\n",
block_list[i], curr_blk, data_bh->b_blocknr,
tag_bytes);
mark_buffer_dirty(data_bh);
- ll_rw_block(WRITE, 1, &data_bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &data_bh);
err = data_bh->b_err;
if (err)
goto error;
@@ -388,13 +389,14 @@ static errcode_t journal_add_blocks_to_trans(journal_transaction_t *trans,
/* Write out the last descriptor block */
if (jdbt != (journal_block_tag_t *)(jdb + 1)) {
jbd2_descr_block_csum_set(trans->journal, bh);
- err = journal_bmap(trans->journal, jdb_blk, &bh->b_blocknr);
+ err = jbd2_journal_bmap(trans->journal, jdb_blk,
+ &bh->b_blocknr);
if (err)
goto error;
dbg_printf("Writing descriptor block at %llu:%llu\n",
jdb_blk, bh->b_blocknr);
mark_buffer_dirty(bh);
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
err = bh->b_err;
if (err)
goto error;
@@ -416,15 +418,15 @@ static blk64_t journal_guess_blocks(journal_t *journal, blk64_t data_blocks,
/* Estimate # of revoke blocks */
bs = journal->j_blocksize;
- if (journal_has_csum_v2or3(journal))
- bs -= sizeof(struct journal_revoke_tail);
- sz = jfs_has_feature_64bit(journal) ? sizeof(__u64) : sizeof(__u32);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ bs -= sizeof(struct jbd2_journal_block_tail);
+ sz = jbd2_has_feature_64bit(journal) ? sizeof(__u64) : sizeof(__u32);
ret += revoke_blocks * sz / bs;
/* Estimate # of data blocks */
bs = journal->j_blocksize - 16;
- if (journal_has_csum_v2or3(journal))
- bs -= sizeof(struct journal_block_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ bs -= sizeof(struct jbd2_journal_block_tail);
sz = journal_tag_bytes(journal);
ret += data_blocks * sz / bs;
@@ -504,7 +506,7 @@ static errcode_t journal_write(journal_t *journal,
errcode_t err;
if (revoke_len > 0) {
- jfs_set_feature_revoke(journal);
+ jbd2_set_feature_revoke(journal);
mark_buffer_dirty(journal->j_sb_buffer);
}
@@ -528,8 +530,6 @@ static errcode_t journal_write(journal_t *journal,
}
err = journal_close_trans(&trans);
- if (err)
- goto error;
error:
return err;
}
@@ -554,15 +554,19 @@ void do_journal_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
switch (opt) {
case 'b':
err = read_list(optarg, &blist, &bn);
- if (err)
+ if (err) {
com_err(argv[0], err,
"while reading block list");
+ goto out;
+ }
break;
case 'r':
err = read_list(optarg, &rlist, &rn);
- if (err)
+ if (err) {
com_err(argv[0], err,
"while reading revoke list");
+ goto out;
+ }
break;
case 'c':
flags |= JOURNAL_WRITE_NO_COMMIT;
@@ -624,8 +628,8 @@ static int count_tags(journal_t *journal, char *buf)
int nr = 0, size = journal->j_blocksize;
int tag_bytes = journal_tag_bytes(journal);
- if (journal_has_csum_v2or3(journal))
- size -= sizeof(struct journal_block_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ size -= sizeof(struct jbd2_journal_block_tail);
tagp = buf + sizeof(journal_header_t);
@@ -634,10 +638,10 @@ static int count_tags(journal_t *journal, char *buf)
nr++;
tagp += tag_bytes;
- if (!(tag->t_flags & ext2fs_cpu_to_be16(JFS_FLAG_SAME_UUID)))
+ if (!(tag->t_flags & ext2fs_cpu_to_be16(JBD2_FLAG_SAME_UUID)))
tagp += 16;
- if (tag->t_flags & ext2fs_cpu_to_be16(JFS_FLAG_LAST_TAG))
+ if (tag->t_flags & ext2fs_cpu_to_be16(JBD2_FLAG_LAST_TAG))
break;
}
@@ -687,11 +691,12 @@ static errcode_t journal_find_head(journal_t *journal)
/* Skip over each chunk of the transaction looking
* either the next descriptor block or the final commit
* record. */
- err = journal_bmap(journal, next_log_block, &bh->b_blocknr);
+ err = jbd2_journal_bmap(journal, next_log_block,
+ &bh->b_blocknr);
if (err)
goto err;
mark_buffer_uptodate(bh, 0);
- ll_rw_block(READ, 1, &bh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &bh);
err = bh->b_err;
if (err)
goto err;
@@ -707,7 +712,7 @@ static errcode_t journal_find_head(journal_t *journal)
tmp = (journal_header_t *)bh->b_data;
- if (tmp->h_magic != ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER)) {
+ if (tmp->h_magic != ext2fs_cpu_to_be32(JBD2_MAGIC_NUMBER)) {
dbg_printf("JBD2: wrong magic 0x%x\n", tmp->h_magic);
goto err;
}
@@ -728,17 +733,17 @@ static errcode_t journal_find_head(journal_t *journal)
* to do with it? That depends on the pass... */
switch (blocktype) {
- case JFS_DESCRIPTOR_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
next_log_block += count_tags(journal, bh->b_data);
wrap(journal, next_log_block);
continue;
- case JFS_COMMIT_BLOCK:
+ case JBD2_COMMIT_BLOCK:
head_block = next_log_block;
next_commit_ID++;
continue;
- case JFS_REVOKE_BLOCK:
+ case JBD2_REVOKE_BLOCK:
continue;
default:
@@ -780,14 +785,14 @@ static void update_journal_csum(journal_t *journal, int ver)
printf("Setting csum v%d\n", ver);
switch (ver) {
case 2:
- jfs_clear_feature_csum3(journal);
- jfs_set_feature_csum2(journal);
- jfs_clear_feature_checksum(journal);
+ jbd2_clear_feature_csum3(journal);
+ jbd2_set_feature_csum2(journal);
+ jbd2_clear_feature_checksum(journal);
break;
case 3:
- jfs_set_feature_csum3(journal);
- jfs_clear_feature_csum2(journal);
- jfs_clear_feature_checksum(journal);
+ jbd2_set_feature_csum3(journal);
+ jbd2_clear_feature_csum2(journal);
+ jbd2_clear_feature_checksum(journal);
break;
default:
printf("Unknown checksum v%d\n", ver);
@@ -797,9 +802,9 @@ static void update_journal_csum(journal_t *journal, int ver)
journal->j_csum_seed = jbd2_chksum(journal, ~0, jsb->s_uuid,
sizeof(jsb->s_uuid));
} else {
- jfs_clear_feature_csum3(journal);
- jfs_clear_feature_csum2(journal);
- jfs_set_feature_checksum(journal);
+ jbd2_clear_feature_csum3(journal);
+ jbd2_clear_feature_csum2(journal);
+ jbd2_set_feature_checksum(journal);
}
}
@@ -821,7 +826,7 @@ static void update_uuid(journal_t *journal)
if (!ext2fs_has_feature_64bit(fs->super))
return;
- if (jfs_has_feature_64bit(journal) &&
+ if (jbd2_has_feature_64bit(journal) &&
ext2fs_has_feature_64bit(fs->super))
return;
@@ -843,7 +848,7 @@ static void update_64bit_flag(journal_t *journal)
if (!ext2fs_has_feature_64bit(journal->j_fs_dev->k_fs->super))
return;
- if (jfs_has_feature_64bit(journal) &&
+ if (jbd2_has_feature_64bit(journal) &&
ext2fs_has_feature_64bit(journal->j_fs_dev->k_fs->super))
return;
@@ -854,7 +859,7 @@ static void update_64bit_flag(journal_t *journal)
return;
}
- jfs_set_feature_64bit(journal);
+ jbd2_set_feature_64bit(journal);
}
void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
@@ -912,7 +917,7 @@ void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
journal = current_journal;
- dbg_printf("JOURNAL: seq=%d tailseq=%d start=%lu first=%lu "
+ dbg_printf("JOURNAL: seq=%u tailseq=%u start=%lu first=%lu "
"maxlen=%lu\n", journal->j_tail_sequence,
journal->j_transaction_sequence, journal->j_tail,
journal->j_first, journal->j_last);
diff --git a/debugfs/dump.c b/debugfs/dump.c
index fdd66198..42f5204a 100644
--- a/debugfs/dump.c
+++ b/debugfs/dump.c
@@ -81,12 +81,12 @@ static void fix_perms(const char *cmd, const struct ext2_inode *inode,
com_err(cmd, errno, "while setting permissions of %s", name);
#ifndef HAVE_FCHOWN
- i = chown(name, inode->i_uid, inode->i_gid);
+ i = chown(name, inode_uid(*inode), inode_gid(*inode));
#else
if (fd != -1)
- i = fchown(fd, inode->i_uid, inode->i_gid);
+ i = fchown(fd, inode_uid(*inode), inode_gid(*inode));
else
- i = chown(name, inode->i_uid, inode->i_gid);
+ i = chown(name, inode_uid(*inode), inode_gid(*inode));
#endif
if (i == -1)
com_err(cmd, errno, "while changing ownership of %s", name);
diff --git a/debugfs/e2freefrag.c b/debugfs/e2freefrag.c
index 9c23fadc..49b6346e 100644
--- a/debugfs/e2freefrag.c
+++ b/debugfs/e2freefrag.c
@@ -265,8 +265,8 @@ static errcode_t dump_chunk_info(ext2_filsys fs, struct chunk_info *info,
int i, retval = 0;
fprintf(f, "Total blocks: %llu\nFree blocks: %llu (%0.1f%%)\n",
- ext2fs_blocks_count(fs->super),
- free_blks,
+ (unsigned long long) ext2fs_blocks_count(fs->super),
+ (unsigned long long) free_blks,
(double)free_blks * 100 /
ext2fs_blocks_count(fs->super));
@@ -363,7 +363,7 @@ static void collect_info(ext2_filsys fs, struct chunk_info *chunk_info, FILE *f)
static void open_device(char *device_name, ext2_filsys *fs)
{
int retval;
- int flag = EXT2_FLAG_FORCE | EXT2_FLAG_64BITS;
+ int flag = EXT2_FLAG_FORCE | EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
retval = ext2fs_open(device_name, flag, 0, 0, unix_io_manager, fs);
if (retval) {
diff --git a/debugfs/extent_inode.c b/debugfs/extent_inode.c
index ada13086..e4e815ef 100644
--- a/debugfs/extent_inode.c
+++ b/debugfs/extent_inode.c
@@ -33,8 +33,9 @@ static void dbg_print_extent(char *desc, struct ext2fs_extent *extent)
if (desc)
printf("%s: ", desc);
printf("extent: lblk %llu--%llu, len %u, pblk %llu, flags: ",
- extent->e_lblk, extent->e_lblk + extent->e_len - 1,
- extent->e_len, extent->e_pblk);
+ (unsigned long long) extent->e_lblk,
+ (unsigned long long) extent->e_lblk + extent->e_len - 1,
+ extent->e_len, (unsigned long long) extent->e_pblk);
if (extent->e_flags & EXT2_EXTENT_FLAGS_LEAF)
fputs("LEAF ", stdout);
if (extent->e_flags & EXT2_EXTENT_FLAGS_UNINIT)
@@ -77,7 +78,7 @@ void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
if (argc == 1) {
if (current_ino)
- printf("Current inode is %d\n", current_ino);
+ printf("Current inode is %u\n", current_ino);
else
printf("No current inode\n");
return;
@@ -107,7 +108,7 @@ void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
cp = strchr(extent_prompt, ':');
if (cp)
*cp = 0;
- sprintf(extent_prompt + strlen(extent_prompt), " (extent ino %d): ",
+ sprintf(extent_prompt + strlen(extent_prompt), " (extent ino %u): ",
current_ino);
ss_add_request_table(sci_idx, &extent_cmds, 1, &ret);
ss_set_prompt(sci_idx, extent_prompt);
@@ -527,8 +528,9 @@ void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Current handle location: %d/%d (max: %d, bytes %d), level %d/%d\n",
info.curr_entry, info.num_entries, info.max_entries,
info.bytes_avail, info.curr_level, info.max_depth);
- printf("\tmax lblk: %llu, max pblk: %llu\n", info.max_lblk,
- info.max_pblk);
+ printf("\tmax lblk: %llu, max pblk: %llu\n",
+ (unsigned long long) info.max_lblk,
+ (unsigned long long) info.max_pblk);
printf("\tmax_len: %u, max_uninit_len: %u\n", info.max_len,
info.max_uninit_len);
}
diff --git a/debugfs/filefrag.c b/debugfs/filefrag.c
index 961b6962..31c1440c 100644
--- a/debugfs/filefrag.c
+++ b/debugfs/filefrag.c
@@ -85,14 +85,17 @@ static void report_filefrag(struct filefrag_struct *fs)
fprintf(fs->f, "%4d %*lu %*llu %*llu %*lu\n", fs->ext,
fs->logical_width,
(unsigned long) fs->logical_start,
- fs->physical_width, fs->physical_start,
- fs->physical_width, fs->expected,
+ fs->physical_width,
+ (unsigned long long) fs->physical_start,
+ fs->physical_width,
+ (unsigned long long) fs->expected,
fs->logical_width, (unsigned long) fs->num);
else
fprintf(fs->f, "%4d %*lu %*llu %*s %*lu\n", fs->ext,
fs->logical_width,
(unsigned long) fs->logical_start,
- fs->physical_width, fs->physical_start,
+ fs->physical_width,
+ (unsigned long long) fs->physical_start,
fs->physical_width, "",
fs->logical_width, (unsigned long) fs->num);
}
@@ -150,7 +153,8 @@ static void filefrag(ext2_ino_t ino, struct ext2_inode *inode,
num_blocks /= current_fs->blocksize / 512;
fprintf(fs->f, "\n%s has %llu block(s), i_size is %llu\n",
- fs->name, num_blocks, EXT2_I_SIZE(inode));
+ fs->name, (unsigned long long) num_blocks,
+ (unsigned long long) EXT2_I_SIZE(inode));
}
print_header(fs);
if (ext2fs_inode_has_valid_blocks2(current_fs, inode)) {
diff --git a/debugfs/htree.c b/debugfs/htree.c
index 3aae3c27..a9f9211b 100644
--- a/debugfs/htree.c
+++ b/debugfs/htree.c
@@ -53,16 +53,18 @@ static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
errcode = ext2fs_bmap2(fs, ino, inode, buf, 0, blk, 0, &pblk);
if (errcode) {
com_err("htree_dump_leaf_node", errcode,
- "while mapping logical block %llu\n", blk);
+ "while mapping logical block %llu\n",
+ (unsigned long long) blk);
return;
}
- fprintf(pager, "Reading directory block %llu, phys %llu\n", blk, pblk);
+ fprintf(pager, "Reading directory block %llu, phys %llu\n",
+ (unsigned long long) blk, (unsigned long long) pblk);
errcode = ext2fs_read_dir_block4(current_fs, pblk, buf, 0, ino);
if (errcode) {
com_err("htree_dump_leaf_node", errcode,
"while reading block %llu (%llu)\n",
- blk, pblk);
+ (unsigned long long) blk, (unsigned long long) pblk);
return;
}
hash_alg = rootnode->hash_version;
@@ -85,7 +87,7 @@ static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
((rec_len % 4) != 0) ||
((unsigned) thislen + 8 > rec_len)) {
fprintf(pager, "Corrupted directory block (%llu)!\n",
- blk);
+ (unsigned long long) blk);
break;
}
strncpy(name, dirent->name, thislen);
@@ -136,7 +138,7 @@ static void htree_dump_int_block(ext2_filsys fs, ext2_ino_t ino,
static void htree_dump_int_node(ext2_filsys fs, ext2_ino_t ino,
struct ext2_inode *inode,
struct ext2_dx_root_info * rootnode,
- struct ext2_dx_entry *ent,
+ struct ext2_dx_entry *ent, __u32 crc,
char *buf, int level)
{
struct ext2_dx_countlimit dx_countlimit;
@@ -160,8 +162,11 @@ static void htree_dump_int_node(ext2_filsys fs, ext2_ino_t ino,
if (ext2fs_has_feature_metadata_csum(fs->super) &&
remainder == sizeof(struct ext2_dx_tail)) {
tail = (struct ext2_dx_tail *)(ent + limit);
- fprintf(pager, "Checksum: 0x%08x\n",
+ fprintf(pager, "Checksum: 0x%08x",
ext2fs_le32_to_cpu(tail->dt_checksum));
+ if (tail->dt_checksum != crc)
+ fprintf(pager, " --- EXPECTED: 0x%08x", crc);
+ fputc('\n', pager);
}
for (i=0; i < count; i++) {
@@ -199,6 +204,7 @@ static void htree_dump_int_block(ext2_filsys fs, ext2_ino_t ino,
char *cbuf;
errcode_t errcode;
blk64_t pblk;
+ __u32 crc;
cbuf = malloc(fs->blocksize);
if (!cbuf) {
@@ -209,20 +215,30 @@ static void htree_dump_int_block(ext2_filsys fs, ext2_ino_t ino,
errcode = ext2fs_bmap2(fs, ino, inode, buf, 0, blk, 0, &pblk);
if (errcode) {
com_err("htree_dump_int_block", errcode,
- "while mapping logical block %llu\n", blk);
+ "while mapping logical block %llu\n",
+ (unsigned long long) blk);
goto errout;
}
errcode = io_channel_read_blk64(current_fs->io, pblk, 1, buf);
if (errcode) {
com_err("htree_dump_int_block", errcode,
- "while reading block %llu\n", blk);
+ "while reading block %llu\n",
+ (unsigned long long) blk);
goto errout;
}
+ errcode = ext2fs_dx_csum(current_fs, ino,
+ (struct ext2_dir_entry *) buf, &crc, NULL);
+ if (errcode) {
+ com_err("htree_dump_int_block", errcode,
+ "while calculating checksum for logical block %llu\n",
+ (unsigned long long) blk);
+ crc = (unsigned int) -1;
+ }
htree_dump_int_node(fs, ino, inode, rootnode,
(struct ext2_dx_entry *) (buf+8),
- cbuf, level);
+ crc, cbuf, level);
errout:
free(cbuf);
}
@@ -239,6 +255,7 @@ void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
struct ext2_dx_root_info *rootnode;
struct ext2_dx_entry *ent;
errcode_t errcode;
+ __u32 crc;
if (check_fs_open(argv[0]))
return;
@@ -288,12 +305,19 @@ void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
fprintf(pager, "\t Hash Version: %d\n", rootnode->hash_version);
fprintf(pager, "\t Info length: %d\n", rootnode->info_length);
fprintf(pager, "\t Indirect levels: %d\n", rootnode->indirect_levels);
- fprintf(pager, "\t Flags: %d\n", rootnode->unused_flags);
+ fprintf(pager, "\t Flags: %#x\n", rootnode->unused_flags);
ent = (struct ext2_dx_entry *)
((char *)rootnode + rootnode->info_length);
- htree_dump_int_node(current_fs, ino, &inode, rootnode, ent,
+ errcode = ext2fs_dx_csum(current_fs, ino,
+ (struct ext2_dir_entry *) buf, &crc, NULL);
+ if (errcode) {
+ com_err("htree_dump_int_block", errcode,
+ "while calculating checksum for htree root\n");
+ crc = (unsigned int) -1;
+ }
+ htree_dump_int_node(current_fs, ino, &inode, rootnode, ent, crc,
buf + current_fs->blocksize,
rootnode->indirect_levels);
@@ -453,7 +477,7 @@ static int search_dir_block(ext2_filsys fs, blk64_t *blocknr,
p->len) == 0) {
printf("Entry found at logical block %lld, "
"phys %llu, offset %u\n", (long long)blockcnt,
- *blocknr, offset);
+ (unsigned long long) *blocknr, offset);
printf("offset %u\n", offset);
return BLOCK_ABORT;
}
diff --git a/debugfs/icheck.c b/debugfs/icheck.c
index 71164cf7..ed6e9509 100644
--- a/debugfs/icheck.c
+++ b/debugfs/icheck.c
@@ -159,10 +159,12 @@ void do_icheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Block\tInode number\n");
for (i=0, binfo = bw.barray; i < bw.num_blocks; i++, binfo++) {
if (binfo->ino == 0) {
- printf("%llu\t<block not found>\n", binfo->blk);
+ printf("%llu\t<block not found>\n",
+ (unsigned long long) binfo->blk);
continue;
}
- printf("%llu\t%u\n", binfo->blk, binfo->ino);
+ printf("%llu\t%u\n", (unsigned long long) binfo->blk,
+ binfo->ino);
}
error_out:
diff --git a/debugfs/journal.c b/debugfs/journal.c
index c16daa5b..095fff00 100644
--- a/debugfs/journal.c
+++ b/debugfs/journal.c
@@ -26,9 +26,7 @@
#include "uuid/uuid.h"
#include "journal.h"
-#ifdef CONFIG_JBD_DEBUG /* Enabled by configure --enable-jfs-debug */
static int bh_count = 0;
-#endif
#if EXT2_FLAT_INCLUDES
#include "blkid.h"
@@ -49,7 +47,7 @@ static int bh_count = 0;
static int ext2fs_journal_verify_csum_type(journal_t *j,
journal_superblock_t *jsb)
{
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
return jsb->s_checksum_type == JBD2_CRC32C_CHKSUM;
@@ -73,7 +71,7 @@ static int ext2fs_journal_sb_csum_verify(journal_t *j,
{
__u32 provided, calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
provided = ext2fs_be32_to_cpu(jsb->s_checksum);
@@ -87,7 +85,7 @@ static errcode_t ext2fs_journal_sb_csum_set(journal_t *j,
{
__u32 crc;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 0;
crc = ext2fs_journal_sb_csum(jsb);
@@ -99,7 +97,8 @@ static errcode_t ext2fs_journal_sb_csum_set(journal_t *j,
* to use the recovery.c file virtually unchanged from the kernel, so we
* don't have to do much to keep kernel and user recovery in sync.
*/
-int journal_bmap(journal_t *journal, blk64_t block, unsigned long long *phys)
+int jbd2_journal_bmap(journal_t *journal, unsigned long block,
+ unsigned long long *phys)
{
#ifdef USE_INODE_IO
*phys = block;
@@ -115,13 +114,15 @@ int journal_bmap(journal_t *journal, blk64_t block, unsigned long long *phys)
}
retval = ext2fs_bmap2(inode->i_fs, inode->i_ino,
- &inode->i_ext2, NULL, 0, block, 0, &pblk);
+ &inode->i_ext2, NULL, 0, (blk64_t) block,
+ 0, &pblk);
*phys = pblk;
return (int) retval;
#endif
}
-struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize)
+struct buffer_head *getblk(kdev_t kdev, unsigned long long blocknr,
+ int blocksize)
{
struct buffer_head *bh;
int bufsize = sizeof(*bh) + kdev->k_fs->blocksize -
@@ -132,12 +133,10 @@ struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize)
if (retval)
return NULL;
-#ifdef CONFIG_JBD_DEBUG
if (journal_enable_debug >= 3)
bh_count++;
-#endif
jfs_debug(4, "getblk for block %llu (%d bytes)(total %d)\n",
- (unsigned long long) blocknr, blocksize, bh_count);
+ blocknr, blocksize, bh_count);
bh->b_fs = kdev->k_fs;
if (kdev->k_dev == K_DEV_FS)
@@ -162,14 +161,15 @@ int sync_blockdev(kdev_t kdev)
return io_channel_flush(io) ? EIO : 0;
}
-void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
+void ll_rw_block(int rw, int op_flags EXT2FS_ATTR((unused)), int nr,
+ struct buffer_head *bhp[])
{
errcode_t retval;
struct buffer_head *bh;
for (; nr > 0; --nr) {
bh = *bhp++;
- if (rw == READ && !bh->b_uptodate) {
+ if (rw == REQ_OP_READ && !bh->b_uptodate) {
jfs_debug(3, "reading block %llu/%p\n",
bh->b_blocknr, (void *) bh);
retval = io_channel_read_blk64(bh->b_io,
@@ -183,7 +183,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
continue;
}
bh->b_uptodate = 1;
- } else if (rw == WRITE && bh->b_dirty) {
+ } else if (rw == REQ_OP_WRITE && bh->b_dirty) {
jfs_debug(3, "writing block %llu/%p\n",
bh->b_blocknr,
(void *) bh);
@@ -201,7 +201,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
bh->b_uptodate = 1;
} else {
jfs_debug(3, "no-op %s for block %llu\n",
- rw == READ ? "read" : "write",
+ rw == REQ_OP_READ ? "read" : "write",
bh->b_blocknr);
}
}
@@ -220,7 +220,7 @@ static void mark_buffer_clean(struct buffer_head *bh)
void brelse(struct buffer_head *bh)
{
if (bh->b_dirty)
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
jfs_debug(3, "freeing block %llu/%p (total %d)\n",
bh->b_blocknr, (void *) bh, --bh_count);
ext2fs_free_mem(&bh);
@@ -239,7 +239,7 @@ void mark_buffer_uptodate(struct buffer_head *bh, int val)
void wait_on_buffer(struct buffer_head *bh)
{
if (!bh->b_uptodate)
- ll_rw_block(READ, 1, &bh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &bh);
}
@@ -355,7 +355,7 @@ try_backup_journal:
goto try_backup_journal;
}
if (EXT2_I_SIZE(&j_inode->i_ext2) / journal->j_blocksize <
- JFS_MIN_JOURNAL_BLOCKS) {
+ JBD2_MIN_JOURNAL_BLOCKS) {
retval = EXT2_ET_JOURNAL_TOO_SMALL;
goto try_backup_journal;
}
@@ -375,7 +375,7 @@ try_backup_journal:
goto errout;
}
- journal->j_maxlen = EXT2_I_SIZE(&j_inode->i_ext2) /
+ journal->j_total_len = EXT2_I_SIZE(&j_inode->i_ext2) /
journal->j_blocksize;
#ifdef USE_INODE_IO
@@ -389,7 +389,7 @@ try_backup_journal:
#else
journal->j_inode = j_inode;
fs->journal_io = fs->io;
- retval = (errcode_t)journal_bmap(journal, 0, &start);
+ retval = (errcode_t) jbd2_journal_bmap(journal, 0, &start);
if (retval)
goto errout;
#endif
@@ -443,7 +443,7 @@ try_backup_journal:
retval = EXT2_ET_NO_MEMORY;
goto errout;
}
- ll_rw_block(READ, 1, &bh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &bh);
retval = bh->b_err;
if (retval) {
brelse(bh);
@@ -490,7 +490,7 @@ try_backup_journal:
brelse(bh);
maxlen = ext2fs_blocks_count(&jsuper);
- journal->j_maxlen = (maxlen < 1ULL << 32) ? maxlen :
+ journal->j_total_len = (maxlen < 1ULL << 32) ? maxlen :
(1ULL << 32) - 1;
start++;
}
@@ -554,17 +554,17 @@ static errcode_t ext2fs_journal_load(journal_t *journal)
journal_superblock_t *jsb;
struct buffer_head *jbh = journal->j_sb_buffer;
- ll_rw_block(READ, 1, &jbh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &jbh);
if (jbh->b_err)
return jbh->b_err;
jsb = journal->j_superblock;
- /* If we don't even have JFS_MAGIC, we probably have a wrong inode */
- if (jsb->s_header.h_magic != htonl(JFS_MAGIC_NUMBER))
+ /* If we don't even have JBD2_MAGIC, we probably have a wrong inode */
+ if (jsb->s_header.h_magic != htonl(JBD2_MAGIC_NUMBER))
return ext2fs_journal_fix_bad_inode(fs);
switch (ntohl(jsb->s_header.h_blocktype)) {
- case JFS_SUPERBLOCK_V1:
+ case JBD2_SUPERBLOCK_V1:
journal->j_format_version = 1;
if (jsb->s_feature_compat ||
jsb->s_feature_incompat ||
@@ -573,7 +573,7 @@ static errcode_t ext2fs_journal_load(journal_t *journal)
clear_v2_journal_fields(journal);
break;
- case JFS_SUPERBLOCK_V2:
+ case JBD2_SUPERBLOCK_V2:
journal->j_format_version = 2;
if (ntohl(jsb->s_nr_users) > 1 &&
uuid_is_null(fs->super->s_journal_uuid))
@@ -586,9 +586,9 @@ static errcode_t ext2fs_journal_load(journal_t *journal)
* These should never appear in a journal super block, so if
* they do, the journal is badly corrupted.
*/
- case JFS_DESCRIPTOR_BLOCK:
- case JFS_COMMIT_BLOCK:
- case JFS_REVOKE_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
+ case JBD2_COMMIT_BLOCK:
+ case JBD2_REVOKE_BLOCK:
return EXT2_ET_CORRUPT_JOURNAL_SB;
/* If we don't understand the superblock major type, but there
@@ -598,25 +598,25 @@ static errcode_t ext2fs_journal_load(journal_t *journal)
return EXT2_ET_JOURNAL_UNSUPP_VERSION;
}
- if (JFS_HAS_INCOMPAT_FEATURE(journal, ~JFS_KNOWN_INCOMPAT_FEATURES))
+ if (JBD2_HAS_INCOMPAT_FEATURE(journal, ~JBD2_KNOWN_INCOMPAT_FEATURES))
return EXT2_ET_UNSUPP_FEATURE;
- if (JFS_HAS_RO_COMPAT_FEATURE(journal, ~JFS_KNOWN_ROCOMPAT_FEATURES))
+ if (JBD2_HAS_RO_COMPAT_FEATURE(journal, ~JBD2_KNOWN_ROCOMPAT_FEATURES))
return EXT2_ET_RO_UNSUPP_FEATURE;
/* Checksum v1-3 are mutually exclusive features. */
- if (jfs_has_feature_csum2(journal) && jfs_has_feature_csum3(journal))
+ if (jbd2_has_feature_csum2(journal) && jbd2_has_feature_csum3(journal))
return EXT2_ET_CORRUPT_JOURNAL_SB;
- if (journal_has_csum_v2or3(journal) &&
- jfs_has_feature_checksum(journal))
+ if (jbd2_journal_has_csum_v2or3(journal) &&
+ jbd2_has_feature_checksum(journal))
return EXT2_ET_CORRUPT_JOURNAL_SB;
if (!ext2fs_journal_verify_csum_type(journal, jsb) ||
!ext2fs_journal_sb_csum_verify(journal, jsb))
return EXT2_ET_CORRUPT_JOURNAL_SB;
- if (journal_has_csum_v2or3(journal))
+ if (jbd2_journal_has_csum_v2or3(journal))
journal->j_csum_seed = jbd2_chksum(journal, ~0, jsb->s_uuid,
sizeof(jsb->s_uuid));
@@ -626,9 +626,9 @@ static errcode_t ext2fs_journal_load(journal_t *journal)
if (jsb->s_blocksize != htonl(journal->j_blocksize))
return EXT2_ET_CORRUPT_JOURNAL_SB;
- if (ntohl(jsb->s_maxlen) < journal->j_maxlen)
- journal->j_maxlen = ntohl(jsb->s_maxlen);
- else if (ntohl(jsb->s_maxlen) > journal->j_maxlen)
+ if (ntohl(jsb->s_maxlen) < journal->j_total_len)
+ journal->j_total_len = ntohl(jsb->s_maxlen);
+ else if (ntohl(jsb->s_maxlen) > journal->j_total_len)
return EXT2_ET_CORRUPT_JOURNAL_SB;
journal->j_tail_sequence = ntohl(jsb->s_sequence);
@@ -740,7 +740,14 @@ static errcode_t recover_ext3_journal(ext2_filsys fs)
journal_t *journal;
errcode_t retval;
- journal_init_revoke_caches();
+ retval = jbd2_journal_init_revoke_record_cache();
+ if (retval)
+ return retval;
+
+ retval = jbd2_journal_init_revoke_table_cache();
+ if (retval)
+ return retval;
+
retval = ext2fs_get_journal(fs, &journal);
if (retval)
return retval;
@@ -749,11 +756,11 @@ static errcode_t recover_ext3_journal(ext2_filsys fs)
if (retval)
goto errout;
- retval = journal_init_revoke(journal, 1024);
+ retval = jbd2_journal_init_revoke(journal, 1024);
if (retval)
goto errout;
- retval = -journal_recover(journal);
+ retval = -jbd2_journal_recover(journal);
if (retval)
goto errout;
@@ -763,8 +770,9 @@ static errcode_t recover_ext3_journal(ext2_filsys fs)
}
errout:
- journal_destroy_revoke(journal);
- journal_destroy_revoke_caches();
+ jbd2_journal_destroy_revoke(journal);
+ jbd2_journal_destroy_revoke_record_cache();
+ jbd2_journal_destroy_revoke_table_cache();
ext2fs_journal_release(fs, journal, 1, 0);
return retval;
}
@@ -830,7 +838,14 @@ errcode_t ext2fs_open_journal(ext2_filsys fs, journal_t **j)
journal_t *journal;
errcode_t retval;
- journal_init_revoke_caches();
+ retval = jbd2_journal_init_revoke_record_cache();
+ if (retval)
+ return retval;
+
+ retval = jbd2_journal_init_revoke_table_cache();
+ if (retval)
+ return retval;
+
retval = ext2fs_get_journal(fs, &journal);
if (retval)
return retval;
@@ -839,7 +854,7 @@ errcode_t ext2fs_open_journal(ext2_filsys fs, journal_t **j)
if (retval)
goto errout;
- retval = journal_init_revoke(journal, 1024);
+ retval = jbd2_journal_init_revoke(journal, 1024);
if (retval)
goto errout;
@@ -852,8 +867,9 @@ errcode_t ext2fs_open_journal(ext2_filsys fs, journal_t **j)
return 0;
errout:
- journal_destroy_revoke(journal);
- journal_destroy_revoke_caches();
+ jbd2_journal_destroy_revoke(journal);
+ jbd2_journal_destroy_revoke_record_cache();
+ jbd2_journal_destroy_revoke_table_cache();
ext2fs_journal_release(fs, journal, 1, 0);
return retval;
}
@@ -862,8 +878,9 @@ errcode_t ext2fs_close_journal(ext2_filsys fs, journal_t **j)
{
journal_t *journal = *j;
- journal_destroy_revoke(journal);
- journal_destroy_revoke_caches();
+ jbd2_journal_destroy_revoke(journal);
+ jbd2_journal_destroy_revoke_record_cache();
+ jbd2_journal_destroy_revoke_table_cache();
ext2fs_journal_release(fs, journal, 0, 0);
*j = NULL;
@@ -875,7 +892,7 @@ void jbd2_commit_block_csum_set(journal_t *j, struct buffer_head *bh)
struct commit_header *h;
__u32 csum;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return;
h = (struct commit_header *)(bh->b_data);
@@ -888,29 +905,19 @@ void jbd2_commit_block_csum_set(journal_t *j, struct buffer_head *bh)
void jbd2_revoke_csum_set(journal_t *j, struct buffer_head *bh)
{
- struct journal_revoke_tail *tail;
- __u32 csum;
-
- if (!journal_has_csum_v2or3(j))
- return;
-
- tail = (struct journal_revoke_tail *)(bh->b_data + j->j_blocksize -
- sizeof(struct journal_revoke_tail));
- tail->r_checksum = 0;
- csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize);
- tail->r_checksum = ext2fs_cpu_to_be32(csum);
+ jbd2_descr_block_csum_set(j, bh);
}
void jbd2_descr_block_csum_set(journal_t *j, struct buffer_head *bh)
{
- struct journal_block_tail *tail;
+ struct jbd2_journal_block_tail *tail;
__u32 csum;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return;
- tail = (struct journal_block_tail *)(bh->b_data + j->j_blocksize -
- sizeof(struct journal_block_tail));
+ tail = (struct jbd2_journal_block_tail *)(bh->b_data + j->j_blocksize -
+ sizeof(struct jbd2_journal_block_tail));
tail->t_checksum = 0;
csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize);
tail->t_checksum = ext2fs_cpu_to_be32(csum);
@@ -923,14 +930,14 @@ void jbd2_block_tag_csum_set(journal_t *j, journal_block_tag_t *tag,
__u32 csum32;
__be32 seq;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return;
seq = ext2fs_cpu_to_be32(sequence);
csum32 = jbd2_chksum(j, j->j_csum_seed, (__u8 *)&seq, sizeof(seq));
csum32 = jbd2_chksum(j, csum32, bh->b_data, bh->b_size);
- if (jfs_has_feature_csum3(j))
+ if (jbd2_has_feature_csum3(j))
tag3->t_checksum = ext2fs_cpu_to_be32(csum32);
else
tag->t_checksum = ext2fs_cpu_to_be16(csum32);
diff --git a/debugfs/logdump.c b/debugfs/logdump.c
index e286ae83..27e2e72d 100644
--- a/debugfs/logdump.c
+++ b/debugfs/logdump.c
@@ -33,6 +33,7 @@ extern char *optarg;
#include "debugfs.h"
#include "blkid/blkid.h"
#include "jfs_user.h"
+#include "ext2fs/fast_commit.h"
#include <uuid/uuid.h>
enum journal_location {JOURNAL_IS_INTERNAL, JOURNAL_IS_EXTERNAL};
@@ -55,7 +56,7 @@ static void dump_journal(char *, FILE *, struct journal_source *);
static void dump_descriptor_block(FILE *, struct journal_source *,
char *, journal_superblock_t *,
- unsigned int *, int, tid_t);
+ unsigned int *, int, __u32, tid_t);
static void dump_revoke_block(FILE *, char *, journal_superblock_t *,
unsigned int, int, tid_t);
@@ -65,12 +66,14 @@ static void dump_metadata_block(FILE *, struct journal_source *,
unsigned int, unsigned int, unsigned int,
int, tid_t);
+static void dump_fc_block(FILE *out_file, char *buf, int blocksize,
+ int transaction, int *fc_done, int dump_old);
+
static void do_hexdump (FILE *, char *, int);
-#define WRAP(jsb, blocknr) \
- if (blocknr >= be32_to_cpu((jsb)->s_maxlen)) \
- blocknr -= (be32_to_cpu((jsb)->s_maxlen) - \
- be32_to_cpu((jsb)->s_first));
+#define WRAP(jsb, blocknr, maxlen) \
+ if (blocknr >= (maxlen)) \
+ blocknr -= (maxlen - be32_to_cpu((jsb)->s_first));
void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
@@ -82,11 +85,11 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
char *inode_spec = NULL;
char *journal_fn = NULL;
- int journal_fd = 0;
+ int journal_fd = -1;
int use_sb = 0;
ext2_ino_t journal_inum;
struct ext2_inode journal_inode;
- ext2_file_t journal_file;
+ ext2_file_t journal_file = NULL;
char *tmp;
struct journal_source journal_source;
struct ext2_super_block *es = NULL;
@@ -146,9 +149,6 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
goto print_usage;
}
- if (current_fs)
- es = current_fs->super;
-
if (inode_spec) {
int inode_group, group_offset, inodes_per_block;
@@ -159,6 +159,7 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
if (!inode_to_dump)
return;
+ es = current_fs->super;
inode_group = ((inode_to_dump - 1)
/ es->s_inodes_per_group);
group_offset = ((inode_to_dump - 1)
@@ -173,7 +174,8 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
* sizeof(struct ext2_inode));
printf("Inode %u is at group %u, block %llu, offset %u\n",
inode_to_dump, inode_group,
- inode_block_to_dump, inode_offset_to_dump);
+ (unsigned long long) inode_block_to_dump,
+ inode_offset_to_dump);
}
if (optind == argc) {
@@ -184,37 +186,44 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
if (!out_file) {
com_err(argv[0], errno, "while opening %s for logdump",
out_fn);
- goto errout;
+ goto cleanup;
}
}
- if (block_to_dump != ANY_BLOCK && current_fs != NULL) {
+ if (block_to_dump != ANY_BLOCK) {
+ if (check_fs_open(argv[0]))
+ goto cleanup;
+ es = current_fs->super;
group_to_dump = ((block_to_dump -
es->s_first_data_block)
/ es->s_blocks_per_group);
bitmap_to_dump = ext2fs_block_bitmap_loc(current_fs, group_to_dump);
}
- if (!journal_fn && check_fs_open(argv[0]))
- goto errout;
-
if (journal_fn) {
/* Set up to read journal from a regular file somewhere */
journal_fd = open(journal_fn, O_RDONLY, 0);
if (journal_fd < 0) {
com_err(argv[0], errno, "while opening %s for logdump",
journal_fn);
- goto errout;
+ goto cleanup;
}
-
journal_source.where = JOURNAL_IS_EXTERNAL;
journal_source.fd = journal_fd;
- } else if ((journal_inum = es->s_journal_inum)) {
+ dump_journal(argv[0], out_file, &journal_source);
+ goto cleanup;
+
+ }
+ if (check_fs_open(argv[0]))
+ goto cleanup;
+ es = current_fs->super;
+
+ if ((journal_inum = es->s_journal_inum)) {
if (use_sb) {
if (es->s_jnl_backup_type != EXT3_JNL_BACKUP_BLOCKS) {
com_err(argv[0], 0,
"no journal backup in super block\n");
- goto errout;
+ goto cleanup;
}
memset(&journal_inode, 0, sizeof(struct ext2_inode));
memcpy(&journal_inode.i_block[0], es->s_jnl_blocks,
@@ -226,14 +235,14 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
} else {
if (debugfs_read_inode(journal_inum, &journal_inode,
argv[0]))
- goto errout;
+ goto cleanup;
}
retval = ext2fs_file_open2(current_fs, journal_inum,
&journal_inode, 0, &journal_file);
if (retval) {
com_err(argv[0], retval, "while opening ext2 file");
- goto errout;
+ goto cleanup;
}
journal_source.where = JOURNAL_IS_INTERNAL;
journal_source.file = journal_file;
@@ -246,14 +255,14 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
journal_fn = blkid_devno_to_devname(es->s_journal_dev);
if (!journal_fn) {
com_err(argv[0], 0, "filesystem has no journal");
- goto errout;
+ goto cleanup;
}
journal_fd = open(journal_fn, O_RDONLY, 0);
if (journal_fd < 0) {
com_err(argv[0], errno, "while opening %s for logdump",
journal_fn);
free(journal_fn);
- goto errout;
+ goto cleanup;
}
fprintf(out_file, "Using external journal found at %s\n",
journal_fn);
@@ -261,15 +270,12 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
journal_source.where = JOURNAL_IS_EXTERNAL;
journal_source.fd = journal_fd;
}
-
dump_journal(argv[0], out_file, &journal_source);
-
- if (journal_source.where == JOURNAL_IS_INTERNAL)
- ext2fs_file_close(journal_file);
- else
+cleanup:
+ if (journal_fd >= 0)
close(journal_fd);
-
-errout:
+ if (journal_file)
+ ext2fs_file_close(journal_file);
if (out_file && (out_file != stdout))
fclose(out_file);
@@ -325,15 +331,15 @@ static int read_journal_block(const char *cmd, struct journal_source *source,
static const char *type_to_name(int btype)
{
switch (btype) {
- case JFS_DESCRIPTOR_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
return "descriptor block";
- case JFS_COMMIT_BLOCK:
+ case JBD2_COMMIT_BLOCK:
return "commit block";
- case JFS_SUPERBLOCK_V1:
+ case JBD2_SUPERBLOCK_V1:
return "V1 superblock";
- case JFS_SUPERBLOCK_V2:
+ case JBD2_SUPERBLOCK_V2:
return "V2 superblock";
- case JFS_REVOKE_BLOCK:
+ case JBD2_REVOKE_BLOCK:
return "revoke table";
}
return "unrecognised type";
@@ -345,7 +351,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
{
struct ext2_super_block *sb;
char jsb_buffer[1024];
- char buf[8192];
+ char buf[EXT2_MAX_BLOCK_SIZE];
journal_superblock_t *jsb;
unsigned int blocksize = 1024;
int retval;
@@ -353,6 +359,9 @@ static void dump_journal(char *cmdname, FILE *out_file,
journal_header_t *header;
tid_t transaction;
unsigned int blocknr = 0;
+ int fc_done;
+ __u64 total_len;
+ __u32 maxlen;
/* First, check to see if there's an ext2 superblock header */
retval = read_journal_block(cmdname, source, 0, buf, 2048);
@@ -366,7 +375,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
ext2fs_swap_super(sb);
#endif
- if ((be32_to_cpu(jsb->s_header.h_magic) != JFS_MAGIC_NUMBER) &&
+ if ((be32_to_cpu(jsb->s_header.h_magic) != JBD2_MAGIC_NUMBER) &&
(sb->s_magic == EXT2_SUPER_MAGIC) &&
ext2fs_has_feature_journal_dev(sb)) {
blocksize = EXT2_BLOCK_SIZE(sb);
@@ -395,14 +404,41 @@ static void dump_journal(char *cmdname, FILE *out_file,
}
jsb = (journal_superblock_t *) jsb_buffer;
- if (be32_to_cpu(jsb->s_header.h_magic) != JFS_MAGIC_NUMBER) {
+ if (be32_to_cpu(jsb->s_header.h_magic) != JBD2_MAGIC_NUMBER) {
fprintf(out_file,
"Journal superblock magic number invalid!\n");
return;
}
blocksize = be32_to_cpu(jsb->s_blocksize);
+ if ((current_fs && (blocksize != current_fs->blocksize)) ||
+ (!current_fs && (!blocksize || (blocksize & (blocksize - 1)) ||
+ (blocksize > EXT2_MAX_BLOCK_SIZE)))) {
+ fprintf(out_file,
+ "Journal block size invalid: %u (%u)\n",
+ be32_to_cpu(jsb->s_blocksize), blocksize);
+ return;
+ }
transaction = be32_to_cpu(jsb->s_sequence);
blocknr = be32_to_cpu(jsb->s_start);
+ if (source->where == JOURNAL_IS_INTERNAL) {
+ retval = ext2fs_file_get_lsize(source->file, &total_len);
+ if (retval) {
+ stat_err:
+ com_err("dump_journal", retval,
+ "while getting journal inode size");
+ return;
+ }
+ total_len /= blocksize;
+ } else {
+ struct stat st;
+
+ if (fstat(source->fd, &st) < 0)
+ goto stat_err;
+ total_len = st.st_size / blocksize;
+ }
+ maxlen = be32_to_cpu(jsb->s_maxlen);
+ if (maxlen > total_len)
+ maxlen = total_len;
fprintf(out_file, "Journal starts at block %u, transaction %u\n",
blocknr, transaction);
@@ -410,7 +446,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
if (!blocknr) {
/* Empty journal, nothing to do. */
if (!dump_old)
- return;
+ goto fc;
else
blocknr = 1;
}
@@ -420,7 +456,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
((ext2_loff_t) blocknr) * blocksize,
buf, blocksize);
if (retval)
- return;
+ break;
header = (journal_header_t *) buf;
@@ -428,10 +464,10 @@ static void dump_journal(char *cmdname, FILE *out_file,
sequence = be32_to_cpu(header->h_sequence);
blocktype = be32_to_cpu(header->h_blocktype);
- if (magic != JFS_MAGIC_NUMBER) {
+ if (magic != JBD2_MAGIC_NUMBER) {
fprintf (out_file, "No magic number at block %u: "
"end of journal.\n", blocknr);
- return;
+ break;
}
if (sequence != transaction) {
@@ -439,7 +475,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
"block %u: end of journal.\n",
sequence, transaction, blocknr);
if (!dump_old)
- return;
+ break;
}
if (dump_descriptors) {
@@ -450,57 +486,165 @@ static void dump_journal(char *cmdname, FILE *out_file,
}
switch (blocktype) {
- case JFS_DESCRIPTOR_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
dump_descriptor_block(out_file, source, buf, jsb,
- &blocknr, blocksize,
+ &blocknr, blocksize, maxlen,
transaction);
continue;
- case JFS_COMMIT_BLOCK:
+ case JBD2_COMMIT_BLOCK:
transaction++;
blocknr++;
- WRAP(jsb, blocknr);
+ WRAP(jsb, blocknr, maxlen);
continue;
- case JFS_REVOKE_BLOCK:
+ case JBD2_REVOKE_BLOCK:
dump_revoke_block(out_file, buf, jsb,
blocknr, blocksize,
transaction);
blocknr++;
- WRAP(jsb, blocknr);
+ WRAP(jsb, blocknr, maxlen);
continue;
default:
fprintf (out_file, "Unexpected block type %u at "
"block %u.\n", blocktype, blocknr);
- return;
+ break;
}
}
+
+fc:
+ blocknr = maxlen - jbd2_journal_get_num_fc_blks(jsb) + 1;
+ while (blocknr <= maxlen) {
+ retval = read_journal_block(cmdname, source,
+ ((ext2_loff_t) blocknr) * blocksize,
+ buf, blocksize);
+ if (retval)
+ return;
+
+ dump_fc_block(out_file, buf, blocksize, transaction, &fc_done,
+ dump_old);
+ if (!dump_old && fc_done)
+ break;
+ blocknr++;
+ }
}
static inline size_t journal_super_tag_bytes(journal_superblock_t *jsb)
{
size_t sz;
- if (JSB_HAS_INCOMPAT_FEATURE(jsb, JFS_FEATURE_INCOMPAT_CSUM_V3))
+ if (JSB_HAS_INCOMPAT_FEATURE(jsb, JBD2_FEATURE_INCOMPAT_CSUM_V3))
return sizeof(journal_block_tag3_t);
sz = sizeof(journal_block_tag_t);
- if (JSB_HAS_INCOMPAT_FEATURE(jsb, JFS_FEATURE_INCOMPAT_CSUM_V2))
+ if (JSB_HAS_INCOMPAT_FEATURE(jsb, JBD2_FEATURE_INCOMPAT_CSUM_V2))
sz += sizeof(__u16);
- if (JSB_HAS_INCOMPAT_FEATURE(jsb, JFS_FEATURE_INCOMPAT_64BIT))
+ if (JSB_HAS_INCOMPAT_FEATURE(jsb, JBD2_FEATURE_INCOMPAT_64BIT))
return sz;
return sz - sizeof(__u32);
}
+static void dump_fc_block(FILE *out_file, char *buf, int blocksize,
+ int transaction, int *fc_done, int dump_old)
+{
+ struct ext4_fc_tl *tl;
+ struct ext4_fc_head *head;
+ struct ext4_fc_add_range *add_range;
+ struct ext4_fc_del_range *del_range;
+ struct ext4_fc_dentry_info *dentry_info;
+ struct ext4_fc_tail *tail;
+ struct ext3_extent *ex;
+
+ *fc_done = 0;
+ fc_for_each_tl(buf, buf + blocksize, tl) {
+ switch (le16_to_cpu(tl->fc_tag)) {
+ case EXT4_FC_TAG_ADD_RANGE:
+ add_range =
+ (struct ext4_fc_add_range *)ext4_fc_tag_val(tl);
+ ex = (struct ext3_extent *)add_range->fc_ex;
+ fprintf(out_file,
+ "tag %s, inode %d, lblk %u, pblk %llu, len %lu\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(add_range->fc_ino),
+ le32_to_cpu(ex->ee_block),
+ le32_to_cpu(ex->ee_start) +
+ (((unsigned long long) le16_to_cpu(ex->ee_start_hi)) << 32),
+ le16_to_cpu(ex->ee_len) > EXT_INIT_MAX_LEN ?
+ le16_to_cpu(ex->ee_len) - EXT_INIT_MAX_LEN :
+ le16_to_cpu(ex->ee_len));
+ break;
+ case EXT4_FC_TAG_DEL_RANGE:
+ del_range =
+ (struct ext4_fc_del_range *)ext4_fc_tag_val(tl);
+ fprintf(out_file, "tag %s, inode %d, lblk %d, len %d\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(del_range->fc_ino),
+ le32_to_cpu(del_range->fc_lblk),
+ le32_to_cpu(del_range->fc_len));
+ break;
+ case EXT4_FC_TAG_LINK:
+ case EXT4_FC_TAG_UNLINK:
+ case EXT4_FC_TAG_CREAT:
+ dentry_info =
+ (struct ext4_fc_dentry_info *)
+ ext4_fc_tag_val(tl);
+ fprintf(out_file,
+ "tag %s, parent %d, ino %d, name \"%s\"\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(dentry_info->fc_parent_ino),
+ le32_to_cpu(dentry_info->fc_ino),
+ dentry_info->fc_dname);
+ break;
+ case EXT4_FC_TAG_INODE:
+ fprintf(out_file, "tag %s, inode %d\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(((struct ext4_fc_inode *)
+ ext4_fc_tag_val(tl))->fc_ino));
+ break;
+ case EXT4_FC_TAG_PAD:
+ fprintf(out_file, "tag %s\n", tag2str(tl->fc_tag));
+ break;
+ case EXT4_FC_TAG_TAIL:
+ tail = (struct ext4_fc_tail *)ext4_fc_tag_val(tl);
+ fprintf(out_file, "tag %s, tid %d\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(tail->fc_tid));
+ if (!dump_old &&
+ le32_to_cpu(tail->fc_tid) < transaction) {
+ *fc_done = 1;
+ return;
+ }
+ break;
+ case EXT4_FC_TAG_HEAD:
+ fprintf(out_file, "\n*** Fast Commit Area ***\n");
+ head = (struct ext4_fc_head *)ext4_fc_tag_val(tl);
+ fprintf(out_file, "tag %s, features 0x%x, tid %d\n",
+ tag2str(tl->fc_tag),
+ le32_to_cpu(head->fc_features),
+ le32_to_cpu(head->fc_tid));
+ if (!dump_old &&
+ le32_to_cpu(head->fc_tid) < transaction) {
+ *fc_done = 1;
+ return;
+ }
+ break;
+ default:
+ *fc_done = 1;
+ break;
+ }
+ }
+}
+
static void dump_descriptor_block(FILE *out_file,
struct journal_source *source,
char *buf,
journal_superblock_t *jsb,
unsigned int *blockp, int blocksize,
+ __u32 maxlen,
tid_t transaction)
{
int offset, tag_size, csum_size = 0;
@@ -514,16 +658,16 @@ static void dump_descriptor_block(FILE *out_file,
offset = sizeof(journal_header_t);
blocknr = *blockp;
- if (JSB_HAS_INCOMPAT_FEATURE(jsb, JFS_FEATURE_INCOMPAT_CSUM_V3) ||
- JSB_HAS_INCOMPAT_FEATURE(jsb, JFS_FEATURE_INCOMPAT_CSUM_V2))
- csum_size = sizeof(struct journal_block_tail);
+ if (JSB_HAS_INCOMPAT_FEATURE(jsb, JBD2_FEATURE_INCOMPAT_CSUM_V3) ||
+ JSB_HAS_INCOMPAT_FEATURE(jsb, JBD2_FEATURE_INCOMPAT_CSUM_V2))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
if (dump_all)
fprintf(out_file, "Dumping descriptor block, sequence %u, at "
"block %u:\n", transaction, blocknr);
++blocknr;
- WRAP(jsb, blocknr);
+ WRAP(jsb, blocknr, maxlen);
do {
/* Work out the location of the current tag, and skip to
@@ -540,7 +684,7 @@ static void dump_descriptor_block(FILE *out_file,
tag_block = be32_to_cpu(tag->t_blocknr);
tag_flags = be16_to_cpu(tag->t_flags);
- if (!(tag_flags & JFS_FLAG_SAME_UUID))
+ if (!(tag_flags & JBD2_FLAG_SAME_UUID))
offset += 16;
dump_metadata_block(out_file, source, jsb,
@@ -548,9 +692,9 @@ static void dump_descriptor_block(FILE *out_file,
transaction);
++blocknr;
- WRAP(jsb, blocknr);
+ WRAP(jsb, blocknr, maxlen);
- } while (!(tag_flags & JFS_FLAG_LAST_TAG));
+ } while (!(tag_flags & JBD2_FLAG_LAST_TAG));
*blockp = blocknr;
}
@@ -563,7 +707,7 @@ static void dump_revoke_block(FILE *out_file, char *buf,
tid_t transaction)
{
int offset, max;
- journal_revoke_header_t *header;
+ jbd2_journal_revoke_header_t *header;
unsigned long long rblock;
int tag_size = sizeof(__u32);
@@ -571,12 +715,17 @@ static void dump_revoke_block(FILE *out_file, char *buf,
fprintf(out_file, "Dumping revoke block, sequence %u, at "
"block %u:\n", transaction, blocknr);
- if (be32_to_cpu(jsb->s_feature_incompat) & JFS_FEATURE_INCOMPAT_64BIT)
+ if (be32_to_cpu(jsb->s_feature_incompat) & JBD2_FEATURE_INCOMPAT_64BIT)
tag_size = sizeof(__u64);
- header = (journal_revoke_header_t *) buf;
- offset = sizeof(journal_revoke_header_t);
+ header = (jbd2_journal_revoke_header_t *) buf;
+ offset = sizeof(jbd2_journal_revoke_header_t);
max = be32_to_cpu(header->r_count);
+ if (max > jsb->s_blocksize) {
+ fprintf(out_file, "Revoke block's r_count invalid: %u\b",
+ max);
+ max = jsb->s_blocksize;
+ }
while (offset < max) {
if (tag_size == sizeof(__u32)) {
@@ -587,7 +736,8 @@ static void dump_revoke_block(FILE *out_file, char *buf,
rblock = ext2fs_be64_to_cpu(*entry);
}
if (dump_all || rblock == block_to_dump) {
- fprintf(out_file, " Revoke FS block %llu", rblock);
+ fprintf(out_file, " Revoke FS block %llu",
+ (unsigned long long) rblock);
if (dump_all)
fprintf(out_file, "\n");
else
@@ -623,7 +773,7 @@ static void dump_metadata_block(FILE *out_file, struct journal_source *source,
tid_t transaction)
{
int retval;
- char buf[8192];
+ char buf[EXT2_MAX_BLOCK_SIZE];
if (!(dump_all
|| (fs_blocknr == block_to_dump)
@@ -671,7 +821,7 @@ static void dump_metadata_block(FILE *out_file, struct journal_source *source,
fprintf(out_file, " (block bitmap for block %llu: "
"block is %s)\n",
- block_to_dump,
+ (unsigned long long) block_to_dump,
ext2fs_test_bit(offset, buf) ? "SET" : "CLEAR");
}
diff --git a/debugfs/ls.c b/debugfs/ls.c
index ae8b2d39..525f084b 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -114,11 +114,12 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
} else
memset(&inode, 0, sizeof(struct ext2_inode));
fprintf(ls->f,"/%u/%06o/%d/%d/%.*s/", ino, inode.i_mode,
- inode.i_uid, inode.i_gid, thislen, dirent->name);
+ inode_uid(inode), inode_gid(inode), thislen, dirent->name);
if (LINUX_S_ISDIR(inode.i_mode))
fprintf(ls->f, "/");
else
- fprintf(ls->f, "%lld/", EXT2_I_SIZE(&inode));
+ fprintf(ls->f, "%llu/",
+ (unsigned long long) EXT2_I_SIZE(&inode));
fprintf(ls->f, "\n");
} else if (options & LONG_OPT) {
if (ino) {
@@ -143,7 +144,8 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
fprintf(ls->f, "(%d) %5d %5d ",
ext2fs_dirent_file_type(dirent),
inode_uid(inode), inode_gid(inode));
- fprintf(ls->f, "%5llu", EXT2_I_SIZE(&inode));
+ fprintf(ls->f, "%5llu",
+ (unsigned long long) EXT2_I_SIZE(&inode));
fprintf(ls->f, " %s ", datestr);
print_filename(ls->f, dirent, options);
fputc('\n', ls->f);
diff --git a/debugfs/lsdel.c b/debugfs/lsdel.c
index c0d58900..52c74197 100644
--- a/debugfs/lsdel.c
+++ b/debugfs/lsdel.c
@@ -198,8 +198,10 @@ void do_lsdel(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
for (i = 0; i < num_delarray; i++) {
fprintf(out, "%6u %6d %6o %6llu %6lld/%6lld %s",
delarray[i].ino,
- delarray[i].uid, delarray[i].mode, delarray[i].size,
- delarray[i].free_blocks, delarray[i].num_blocks,
+ delarray[i].uid, delarray[i].mode,
+ (unsigned long long) delarray[i].size,
+ (long long) delarray[i].free_blocks,
+ (long long) delarray[i].num_blocks,
time_to_string(delarray[i].dtime));
}
fprintf(out, "%d deleted inodes found.\n", num_delarray);
diff --git a/debugfs/recovery.c b/debugfs/recovery.c
index 81110e4d..1e07dfac 100644
--- a/debugfs/recovery.c
+++ b/debugfs/recovery.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
/*
* linux/fs/jbd2/recovery.c
*
@@ -5,10 +6,6 @@
*
* Copyright 1999-2000 Red Hat Software --- All Rights Reserved
*
- * This file is part of the Linux kernel and is made available under
- * the terms of the GNU General Public License, version 2, or at your
- * option, any later version, incorporated herein by reference.
- *
* Journal recovery routines for the generic filesystem journaling code;
* part of the ext2fs journaling system.
*/
@@ -38,7 +35,6 @@ struct recovery_info
int nr_revoke_hits;
};
-enum passtype {PASS_SCAN, PASS_REVOKE, PASS_REPLAY};
static int do_one_pass(journal_t *journal,
struct recovery_info *info, enum passtype pass);
static int scan_revoke_records(journal_t *, struct buffer_head *,
@@ -78,8 +74,8 @@ static int do_readahead(journal_t *journal, unsigned int start)
/* Do up to 128K of readahead */
max = start + (128 * 1024 / journal->j_blocksize);
- if (max > journal->j_maxlen)
- max = journal->j_maxlen;
+ if (max > journal->j_total_len)
+ max = journal->j_total_len;
/* Do the readahead itself. We'll submit MAXBUF buffer_heads at
* a time to the block device IO layer. */
@@ -87,7 +83,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
nbufs = 0;
for (next = start; next < max; next++) {
- err = journal_bmap(journal, next, &blocknr);
+ err = jbd2_journal_bmap(journal, next, &blocknr);
if (err) {
printk(KERN_ERR "JBD2: bad block at offset %u\n",
@@ -104,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
bufs[nbufs++] = bh;
if (nbufs == MAXBUF) {
- ll_rw_block(READ, nbufs, bufs);
+ ll_rw_block(REQ_OP_READ, 0, nbufs, bufs);
journal_brelse_array(bufs, nbufs);
nbufs = 0;
}
@@ -113,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
}
if (nbufs)
- ll_rw_block(READ, nbufs, bufs);
+ ll_rw_block(REQ_OP_READ, 0, nbufs, bufs);
err = 0;
failed:
@@ -124,27 +120,6 @@ failed:
#endif /* __KERNEL__ */
-static inline __u32 get_be32(__be32 *p)
-{
- unsigned char *cp = (unsigned char *) p;
- __u32 ret;
-
- ret = *cp++;
- ret = (ret << 8) + *cp++;
- ret = (ret << 8) + *cp++;
- ret = (ret << 8) + *cp++;
- return ret;
-}
-
-static inline __u16 get_be16(__be16 *p)
-{
- unsigned char *cp = (unsigned char *) p;
- __u16 ret;
-
- ret = *cp++;
- ret = (ret << 8) + *cp++;
- return ret;
-}
/*
* Read a block from the journal
@@ -159,12 +134,12 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
*bhp = NULL;
- if (offset >= journal->j_maxlen) {
+ if (offset >= journal->j_total_len) {
printk(KERN_ERR "JBD2: corrupted journal superblock\n");
return -EFSCORRUPTED;
}
- err = journal_bmap(journal, offset, &blocknr);
+ err = jbd2_journal_bmap(journal, offset, &blocknr);
if (err) {
printk(KERN_ERR "JBD2: bad block at offset %u\n",
@@ -195,24 +170,23 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
return 0;
}
-static int jbd2_descr_block_csum_verify(journal_t *j,
- void *buf)
+static int jbd2_descriptor_block_csum_verify(journal_t *j, void *buf)
{
- struct journal_block_tail *tail;
- __u32 provided;
+ struct jbd2_journal_block_tail *tail;
+ __be32 provided;
__u32 calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
- tail = (struct journal_block_tail *)((char *)buf + j->j_blocksize -
- sizeof(struct journal_block_tail));
+ tail = (struct jbd2_journal_block_tail *)(buf + j->j_blocksize -
+ sizeof(struct jbd2_journal_block_tail));
provided = tail->t_checksum;
tail->t_checksum = 0;
calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
tail->t_checksum = provided;
- return provided == ext2fs_cpu_to_be32(calculated);
+ return provided == cpu_to_be32(calculated);
}
/*
@@ -226,8 +200,8 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
int nr = 0, size = journal->j_blocksize;
int tag_bytes = journal_tag_bytes(journal);
- if (journal_has_csum_v2or3(journal))
- size -= sizeof(struct journal_block_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ size -= sizeof(struct jbd2_journal_block_tail);
tagp = &bh->b_data[sizeof(journal_header_t)];
@@ -236,10 +210,10 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
nr++;
tagp += tag_bytes;
- if (!(get_be16(&tag->t_flags) & JFS_FLAG_SAME_UUID))
+ if (!(tag->t_flags & cpu_to_be16(JBD2_FLAG_SAME_UUID)))
tagp += 16;
- if (get_be16(&tag->t_flags) & JFS_FLAG_LAST_TAG)
+ if (tag->t_flags & cpu_to_be16(JBD2_FLAG_LAST_TAG))
break;
}
@@ -250,12 +224,52 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
/* Make sure we wrap around the log correctly! */
#define wrap(journal, var) \
do { \
- if (var >= (journal)->j_last) \
- var -= ((journal)->j_last - (journal)->j_first); \
+ unsigned long _wrap_last = \
+ jbd2_has_feature_fast_commit(journal) ? \
+ (journal)->j_fc_last : (journal)->j_last; \
+ \
+ if (var >= _wrap_last) \
+ var -= (_wrap_last - (journal)->j_first); \
} while (0)
+static int fc_do_one_pass(journal_t *journal,
+ struct recovery_info *info, enum passtype pass)
+{
+ unsigned int expected_commit_id = info->end_transaction;
+ unsigned long next_fc_block;
+ struct buffer_head *bh;
+ int err = 0;
+
+ next_fc_block = journal->j_fc_first;
+ if (!journal->j_fc_replay_callback)
+ return 0;
+
+ while (next_fc_block <= journal->j_fc_last) {
+ jbd_debug(3, "Fast commit replay: next block %ld\n",
+ next_fc_block);
+ err = jread(&bh, journal, next_fc_block);
+ if (err) {
+ jbd_debug(3, "Fast commit replay: read error\n");
+ break;
+ }
+
+ err = journal->j_fc_replay_callback(journal, bh, pass,
+ next_fc_block - journal->j_fc_first,
+ expected_commit_id);
+ next_fc_block++;
+ if (err < 0 || err == JBD2_FC_REPLAY_STOP)
+ break;
+ err = 0;
+ }
+
+ if (err)
+ jbd_debug(3, "Fast commit replay failed, err = %d\n", err);
+
+ return err;
+}
+
/**
- * journal_recover - recovers a on-disk journal
+ * jbd2_journal_recover - recovers a on-disk journal
* @journal: the journal to recover
*
* The primary function for recovering the log contents when mounting a
@@ -266,7 +280,7 @@ do { \
* blocks. In the third and final pass, we replay any un-revoked blocks
* in the log.
*/
-int journal_recover(journal_t *journal)
+int jbd2_journal_recover(journal_t *journal)
{
int err, err2;
journal_superblock_t * sb;
@@ -284,8 +298,8 @@ int journal_recover(journal_t *journal)
if (!sb->s_start) {
jbd_debug(1, "No recovery required, last transaction %d\n",
- ext2fs_be32_to_cpu(sb->s_sequence));
- journal->j_transaction_sequence = ext2fs_be32_to_cpu(sb->s_sequence) + 1;
+ be32_to_cpu(sb->s_sequence));
+ journal->j_transaction_sequence = be32_to_cpu(sb->s_sequence) + 1;
return 0;
}
@@ -305,13 +319,13 @@ int journal_recover(journal_t *journal)
* any existing commit records in the log. */
journal->j_transaction_sequence = ++info.end_transaction;
- journal_clear_revoke(journal);
+ jbd2_journal_clear_revoke(journal);
err2 = sync_blockdev(journal->j_fs_dev);
if (!err)
err = err2;
/* Make sure all replayed data is on permanent storage */
- if (journal->j_flags & JFS_BARRIER) {
- err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
+ if (journal->j_flags & JBD2_BARRIER) {
+ err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL);
if (!err)
err = err2;
}
@@ -319,7 +333,7 @@ int journal_recover(journal_t *journal)
}
/**
- * journal_skip_recovery - Start journal and wipe exiting records
+ * jbd2_journal_skip_recovery - Start journal and wipe exiting records
* @journal: journal to startup
*
* Locate any valid recovery information from the journal and set up the
@@ -331,7 +345,7 @@ int journal_recover(journal_t *journal)
* much recovery information is being erased, and to let us initialise
* the journal transaction sequence numbers to the next unused ID.
*/
-int journal_skip_recovery(journal_t *journal)
+int jbd2_journal_skip_recovery(journal_t *journal)
{
int err;
@@ -345,9 +359,9 @@ int journal_skip_recovery(journal_t *journal)
printk(KERN_ERR "JBD2: error %d scanning journal\n", err);
++journal->j_transaction_sequence;
} else {
-#ifdef CONFIG_JFS_DEBUG
- int dropped = info.end_transaction -
- ext2fs_be32_to_cpu(journal->j_superblock->s_sequence);
+#ifdef CONFIG_JBD2_DEBUG
+ int dropped = info.end_transaction -
+ be32_to_cpu(journal->j_superblock->s_sequence);
jbd_debug(1,
"JBD2: ignoring %d transaction%s from the journal.\n",
dropped, (dropped == 1) ? "" : "s");
@@ -362,9 +376,9 @@ int journal_skip_recovery(journal_t *journal)
static inline unsigned long long read_tag_block(journal_t *journal,
journal_block_tag_t *tag)
{
- unsigned long long block = get_be32(&tag->t_blocknr);
- if (jfs_has_feature_64bit(journal))
- block |= (u64)get_be32(&tag->t_blocknr_high) << 32;
+ unsigned long long block = be32_to_cpu(tag->t_blocknr);
+ if (jbd2_has_feature_64bit(journal))
+ block |= (u64)be32_to_cpu(tag->t_blocknr_high) << 32;
return block;
}
@@ -403,10 +417,10 @@ static int calc_chksums(journal_t *journal, struct buffer_head *bh,
static int jbd2_commit_block_csum_verify(journal_t *j, void *buf)
{
struct commit_header *h;
- __u32 provided;
+ __be32 provided;
__u32 calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
h = buf;
@@ -415,7 +429,7 @@ static int jbd2_commit_block_csum_verify(journal_t *j, void *buf)
calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
h->h_chksum[0] = provided;
- return provided == ext2fs_cpu_to_be32(calculated);
+ return provided == cpu_to_be32(calculated);
}
static int jbd2_block_tag_csum_verify(journal_t *j, journal_block_tag_t *tag,
@@ -423,19 +437,19 @@ static int jbd2_block_tag_csum_verify(journal_t *j, journal_block_tag_t *tag,
{
journal_block_tag3_t *tag3 = (journal_block_tag3_t *)tag;
__u32 csum32;
- __u32 seq;
+ __be32 seq;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
- seq = ext2fs_cpu_to_be32(sequence);
+ seq = cpu_to_be32(sequence);
csum32 = jbd2_chksum(j, j->j_csum_seed, (__u8 *)&seq, sizeof(seq));
csum32 = jbd2_chksum(j, csum32, buf, j->j_blocksize);
- if (jfs_has_feature_csum3(j))
- return get_be32(&tag3->t_checksum) == csum32;
-
- return get_be16(&tag->t_checksum) == (csum32 & 0xFFFF);
+ if (jbd2_has_feature_csum3(j))
+ return tag3->t_checksum == cpu_to_be32(csum32);
+ else
+ return tag->t_checksum == cpu_to_be16(csum32);
}
static int do_one_pass(journal_t *journal,
@@ -453,6 +467,8 @@ static int do_one_pass(journal_t *journal,
__u32 crc32_sum = ~0; /* Transactional Checksums */
int descr_csum_size = 0;
int block_error = 0;
+ bool need_check_commit_time = false;
+ __u64 last_trans_commit_time = 0, commit_time;
/*
* First thing is to establish what we expect to find in the log
@@ -461,8 +477,8 @@ static int do_one_pass(journal_t *journal,
*/
sb = journal->j_superblock;
- next_commit_ID = ext2fs_be32_to_cpu(sb->s_sequence);
- next_log_block = ext2fs_be32_to_cpu(sb->s_start);
+ next_commit_ID = be32_to_cpu(sb->s_sequence);
+ next_log_block = be32_to_cpu(sb->s_start);
first_commit_ID = next_commit_ID;
if (pass == PASS_SCAN)
@@ -495,7 +511,9 @@ static int do_one_pass(journal_t *journal,
break;
jbd_debug(2, "Scanning for sequence ID %u at %lu/%lu\n",
- next_commit_ID, next_log_block, journal->j_last);
+ next_commit_ID, next_log_block,
+ jbd2_has_feature_fast_commit(journal) ?
+ journal->j_fc_last : journal->j_last);
/* Skip over each chunk of the transaction looking
* either the next descriptor block or the final commit
@@ -517,13 +535,13 @@ static int do_one_pass(journal_t *journal,
tmp = (journal_header_t *)bh->b_data;
- if (tmp->h_magic != ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER)) {
+ if (tmp->h_magic != cpu_to_be32(JBD2_MAGIC_NUMBER)) {
brelse(bh);
break;
}
- blocktype = ext2fs_be32_to_cpu(tmp->h_blocktype);
- sequence = ext2fs_be32_to_cpu(tmp->h_sequence);
+ blocktype = be32_to_cpu(tmp->h_blocktype);
+ sequence = be32_to_cpu(tmp->h_sequence);
jbd_debug(3, "Found magic %d, sequence %d\n",
blocktype, sequence);
@@ -537,17 +555,29 @@ static int do_one_pass(journal_t *journal,
* to do with it? That depends on the pass... */
switch(blocktype) {
- case JFS_DESCRIPTOR_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
/* Verify checksum first */
- if (journal_has_csum_v2or3(journal))
+ if (jbd2_journal_has_csum_v2or3(journal))
descr_csum_size =
- sizeof(struct journal_block_tail);
+ sizeof(struct jbd2_journal_block_tail);
if (descr_csum_size > 0 &&
- !jbd2_descr_block_csum_verify(journal,
- bh->b_data)) {
- err = -EFSBADCRC;
- brelse(bh);
- goto failed;
+ !jbd2_descriptor_block_csum_verify(journal,
+ bh->b_data)) {
+ /*
+ * PASS_SCAN can see stale blocks due to lazy
+ * journal init. Don't error out on those yet.
+ */
+ if (pass != PASS_SCAN) {
+ pr_err("JBD2: Invalid checksum recovering block %lu in log\n",
+ next_log_block);
+ err = -EFSBADCRC;
+ brelse(bh);
+ goto failed;
+ }
+ need_check_commit_time = true;
+ jbd_debug(1,
+ "invalid descriptor block found in %lu\n",
+ next_log_block);
}
/* If it is a valid descriptor block, replay it
@@ -556,7 +586,8 @@ static int do_one_pass(journal_t *journal,
* just skip over the blocks it describes. */
if (pass != PASS_REPLAY) {
if (pass == PASS_SCAN &&
- jfs_has_feature_checksum(journal) &&
+ jbd2_has_feature_checksum(journal) &&
+ !need_check_commit_time &&
!info->end_transaction) {
if (calc_chksums(journal, bh,
&next_log_block,
@@ -583,7 +614,7 @@ static int do_one_pass(journal_t *journal,
unsigned long io_block;
tag = (journal_block_tag_t *) tagp;
- flags = get_be16(&tag->t_flags);
+ flags = be16_to_cpu(tag->t_flags);
io_block = next_log_block++;
wrap(journal, next_log_block);
@@ -606,7 +637,7 @@ static int do_one_pass(journal_t *journal,
/* If the block has been
* revoked, then we're all done
* here. */
- if (journal_test_revoke
+ if (jbd2_journal_test_revoke
(journal, blocknr,
next_commit_ID)) {
brelse(obh);
@@ -617,13 +648,13 @@ static int do_one_pass(journal_t *journal,
/* Look for block corruption */
if (!jbd2_block_tag_csum_verify(
journal, tag, obh->b_data,
- ext2fs_be32_to_cpu(tmp->h_sequence))) {
+ be32_to_cpu(tmp->h_sequence))) {
brelse(obh);
success = -EFSBADCRC;
printk(KERN_ERR "JBD2: Invalid "
"checksum recovering "
- "block %llu in log\n",
- blocknr);
+ "data block %llu in "
+ "log\n", blocknr);
block_error = 1;
goto skip_write;
}
@@ -646,10 +677,9 @@ static int do_one_pass(journal_t *journal,
lock_buffer(nbh);
memcpy(nbh->b_data, obh->b_data,
journal->j_blocksize);
- if (flags & JFS_FLAG_ESCAPE) {
- __u32 magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- memcpy(nbh->b_data, &magic,
- sizeof(magic));
+ if (flags & JBD2_FLAG_ESCAPE) {
+ *((__be32 *)nbh->b_data) =
+ cpu_to_be32(JBD2_MAGIC_NUMBER);
}
BUFFER_TRACE(nbh, "marking dirty");
@@ -665,17 +695,17 @@ static int do_one_pass(journal_t *journal,
skip_write:
tagp += tag_bytes;
- if (!(flags & JFS_FLAG_SAME_UUID))
+ if (!(flags & JBD2_FLAG_SAME_UUID))
tagp += 16;
- if (flags & JFS_FLAG_LAST_TAG)
+ if (flags & JBD2_FLAG_LAST_TAG)
break;
}
brelse(bh);
continue;
- case JFS_COMMIT_BLOCK:
+ case JBD2_COMMIT_BLOCK:
/* How to differentiate between interrupted commit
* and journal corruption ?
*
@@ -689,7 +719,7 @@ static int do_one_pass(journal_t *journal,
* | GO TO NEXT "Journal Corruption"
* | TRANSACTION
* |
- * {(n+1)th transaction}
+ * {(n+1)th transanction}
* |
* _______|______________
* | |
@@ -706,20 +736,47 @@ static int do_one_pass(journal_t *journal,
* mentioned conditions. Hence assume
* "Interrupted Commit".)
*/
+ commit_time = be64_to_cpu(
+ ((struct commit_header *)bh->b_data)->h_commit_sec);
+ /*
+ * If need_check_commit_time is set, it means we are in
+ * PASS_SCAN and csum verify failed before. If
+ * commit_time is increasing, it's the same journal,
+ * otherwise it is stale journal block, just end this
+ * recovery.
+ */
+ if (need_check_commit_time) {
+ if (commit_time >= last_trans_commit_time) {
+ pr_err("JBD2: Invalid checksum found in transaction %u\n",
+ next_commit_ID);
+ err = -EFSBADCRC;
+ brelse(bh);
+ goto failed;
+ }
+ ignore_crc_mismatch:
+ /*
+ * It likely does not belong to same journal,
+ * just end this recovery with success.
+ */
+ jbd_debug(1, "JBD2: Invalid checksum ignored in transaction %u, likely stale data\n",
+ next_commit_ID);
+ err = 0;
+ brelse(bh);
+ goto done;
+ }
- /* Found an expected commit block: if checksums
- * are present verify them in PASS_SCAN; else not
+ /*
+ * Found an expected commit block: if checksums
+ * are present, verify them in PASS_SCAN; else not
* much to do other than move on to the next sequence
- * number. */
+ * number.
+ */
if (pass == PASS_SCAN &&
- jfs_has_feature_checksum(journal)) {
- int chksum_err, chksum_seen;
+ jbd2_has_feature_checksum(journal)) {
struct commit_header *cbh =
(struct commit_header *)bh->b_data;
unsigned found_chksum =
- ext2fs_be32_to_cpu(cbh->h_chksum[0]);
-
- chksum_err = chksum_seen = 0;
+ be32_to_cpu(cbh->h_chksum[0]);
if (info->end_transaction) {
journal->j_failed_commit =
@@ -728,56 +785,52 @@ static int do_one_pass(journal_t *journal,
break;
}
- if (crc32_sum == found_chksum &&
- cbh->h_chksum_type == JFS_CRC32_CHKSUM &&
- cbh->h_chksum_size ==
- JFS_CRC32_CHKSUM_SIZE)
- chksum_seen = 1;
- else if (!(cbh->h_chksum_type == 0 &&
- cbh->h_chksum_size == 0 &&
- found_chksum == 0 &&
- !chksum_seen))
- /*
- * If fs is mounted using an old kernel and then
- * kernel with journal_chksum is used then we
- * get a situation where the journal flag has
- * checksum flag set but checksums are not
- * present i.e chksum = 0, in the individual
- * commit blocks.
- * Hence to avoid checksum failures, in this
- * situation, this extra check is added.
- */
- chksum_err = 1;
-
- if (chksum_err) {
- info->end_transaction = next_commit_ID;
+ /* Neither checksum match nor unused? */
+ if (!((crc32_sum == found_chksum &&
+ cbh->h_chksum_type ==
+ JBD2_CRC32_CHKSUM &&
+ cbh->h_chksum_size ==
+ JBD2_CRC32_CHKSUM_SIZE) ||
+ (cbh->h_chksum_type == 0 &&
+ cbh->h_chksum_size == 0 &&
+ found_chksum == 0)))
+ goto chksum_error;
- if (!jfs_has_feature_async_commit(journal)){
- journal->j_failed_commit =
- next_commit_ID;
- brelse(bh);
- break;
- }
- }
crc32_sum = ~0;
}
if (pass == PASS_SCAN &&
!jbd2_commit_block_csum_verify(journal,
bh->b_data)) {
+ chksum_error:
+ if (commit_time < last_trans_commit_time)
+ goto ignore_crc_mismatch;
info->end_transaction = next_commit_ID;
- if (!jfs_has_feature_async_commit(journal)) {
+ if (!jbd2_has_feature_async_commit(journal)) {
journal->j_failed_commit =
next_commit_ID;
brelse(bh);
break;
}
}
+ if (pass == PASS_SCAN)
+ last_trans_commit_time = commit_time;
brelse(bh);
next_commit_ID++;
continue;
- case JFS_REVOKE_BLOCK:
+ case JBD2_REVOKE_BLOCK:
+ /*
+ * Check revoke block crc in pass_scan, if csum verify
+ * failed, check commit block time later.
+ */
+ if (pass == PASS_SCAN &&
+ !jbd2_descriptor_block_csum_verify(journal,
+ bh->b_data)) {
+ jbd_debug(1, "JBD2: invalid revoke block found in %lu\n",
+ next_log_block);
+ need_check_commit_time = true;
+ }
/* If we aren't in the REVOKE pass, then we can
* just skip over this block. */
if (pass != PASS_REVOKE) {
@@ -822,6 +875,13 @@ static int do_one_pass(journal_t *journal,
success = -EIO;
}
}
+
+ if (jbd2_has_feature_fast_commit(journal) && pass != PASS_REVOKE) {
+ err = fc_do_one_pass(journal, info, pass);
+ if (err)
+ success = err;
+ }
+
if (block_error && success == 0)
success = -EIO;
return success;
@@ -830,51 +890,28 @@ static int do_one_pass(journal_t *journal,
return err;
}
-static int jbd2_revoke_block_csum_verify(journal_t *j,
- void *buf)
-{
- struct journal_revoke_tail *tail;
- __u32 provided;
- __u32 calculated;
-
- if (!journal_has_csum_v2or3(j))
- return 1;
-
- tail = (struct journal_revoke_tail *)((char *)buf + j->j_blocksize -
- sizeof(struct journal_revoke_tail));
- provided = tail->r_checksum;
- tail->r_checksum = 0;
- calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
- tail->r_checksum = provided;
-
- return provided == ext2fs_cpu_to_be32(calculated);
-}
-
/* Scan a revoke record, marking all blocks mentioned as revoked. */
static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
tid_t sequence, struct recovery_info *info)
{
- journal_revoke_header_t *header;
+ jbd2_journal_revoke_header_t *header;
int offset, max;
- unsigned csum_size = 0;
+ int csum_size = 0;
__u32 rcount;
int record_len = 4;
- header = (journal_revoke_header_t *) bh->b_data;
- offset = sizeof(journal_revoke_header_t);
- rcount = ext2fs_be32_to_cpu(header->r_count);
-
- if (!jbd2_revoke_block_csum_verify(journal, header))
- return -EFSBADCRC;
+ header = (jbd2_journal_revoke_header_t *) bh->b_data;
+ offset = sizeof(jbd2_journal_revoke_header_t);
+ rcount = be32_to_cpu(header->r_count);
- if (journal_has_csum_v2or3(journal))
- csum_size = sizeof(struct journal_revoke_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
if (rcount > journal->j_blocksize - csum_size)
return -EINVAL;
max = rcount;
- if (jfs_has_feature_64bit(journal))
+ if (jbd2_has_feature_64bit(journal))
record_len = 8;
while (offset + record_len <= max) {
@@ -882,11 +919,11 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
int err;
if (record_len == 4)
- blocknr = ext2fs_be32_to_cpu(* ((__u32 *) (bh->b_data+offset)));
+ blocknr = be32_to_cpu(* ((__be32 *) (bh->b_data+offset)));
else
- blocknr = ext2fs_be64_to_cpu(* ((__u64 *) (bh->b_data+offset)));
+ blocknr = be64_to_cpu(* ((__be64 *) (bh->b_data+offset)));
offset += record_len;
- err = journal_set_revoke(journal, blocknr, sequence);
+ err = jbd2_journal_set_revoke(journal, blocknr, sequence);
if (err)
return err;
++info->nr_revokes;
diff --git a/debugfs/revoke.c b/debugfs/revoke.c
index f7254713..fa608788 100644
--- a/debugfs/revoke.c
+++ b/debugfs/revoke.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
/*
* linux/fs/jbd2/revoke.c
*
@@ -5,10 +6,6 @@
*
* Copyright 2000 Red Hat corp --- All Rights Reserved
*
- * This file is part of the Linux kernel and is made available under
- * the terms of the GNU General Public License, version 2, or at your
- * option, any later version, incorporated herein by reference.
- *
* Journal revoke routines for the generic filesystem journaling code;
* part of the ext2fs journaling system.
*
@@ -92,10 +89,11 @@
#include <linux/init.h>
#include <linux/bio.h>
#include <linux/log2.h>
+#include <linux/hash.h>
#endif
-static lkmem_cache_t *jbd2_revoke_record_cache;
-static lkmem_cache_t *jbd2_revoke_table_cache;
+static struct kmem_cache *jbd2_revoke_record_cache;
+static struct kmem_cache *jbd2_revoke_table_cache;
/* Each revoke record represents one single revoked block. During
journal replay, this involves recording the transaction ID of the
@@ -121,21 +119,18 @@ struct jbd2_revoke_table_s
#ifdef __KERNEL__
-static void write_one_revoke_record(journal_t *, transaction_t *,
+static void write_one_revoke_record(transaction_t *,
struct list_head *,
struct buffer_head **, int *,
- struct jbd2_revoke_record_s *, int);
-static void flush_descriptor(journal_t *, struct buffer_head *, int, int);
+ struct jbd2_revoke_record_s *);
+static void flush_descriptor(journal_t *, struct buffer_head *, int);
#endif
/* Utility functions to maintain the revoke table */
-/* Borrowed from buffer.c: this is a tried and tested block hash function */
static inline int hash(journal_t *journal, unsigned long long block)
{
- struct jbd2_revoke_table_s *table = journal->j_revoke;
-
- return (hash_64(block, table->hash_shift));
+ return hash_64(block, journal->j_revoke->hash_shift);
}
static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr,
@@ -143,11 +138,13 @@ static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr,
{
struct list_head *hash_list;
struct jbd2_revoke_record_s *record;
+ gfp_t gfp_mask = GFP_NOFS;
-repeat:
- record = kmem_cache_alloc(jbd2_revoke_record_cache, GFP_NOFS);
+ if (journal_oom_retry)
+ gfp_mask |= __GFP_NOFAIL;
+ record = kmem_cache_alloc(jbd2_revoke_record_cache, gfp_mask);
if (!record)
- goto oom;
+ return -ENOMEM;
record->sequence = seq;
record->blocknr = blocknr;
@@ -156,13 +153,6 @@ repeat:
list_add(&record->hash, hash_list);
spin_unlock(&journal->j_revoke_lock);
return 0;
-
-oom:
- if (!journal_oom_retry)
- return -ENOMEM;
- jbd_debug(1, "ENOMEM in %s, retrying\n", __func__);
- yield();
- goto repeat;
}
/* Find a revoke record in the journal's hash table. */
@@ -188,40 +178,44 @@ static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal,
return NULL;
}
-void journal_destroy_revoke_caches(void)
+void jbd2_journal_destroy_revoke_record_cache(void)
{
- if (jbd2_revoke_record_cache) {
- kmem_cache_destroy(jbd2_revoke_record_cache);
- jbd2_revoke_record_cache = NULL;
- }
- if (jbd2_revoke_table_cache) {
- kmem_cache_destroy(jbd2_revoke_table_cache);
- jbd2_revoke_table_cache = NULL;
- }
+ kmem_cache_destroy(jbd2_revoke_record_cache);
+ jbd2_revoke_record_cache = NULL;
}
-int __init journal_init_revoke_caches(void)
+void jbd2_journal_destroy_revoke_table_cache(void)
{
- J_ASSERT(!jbd2_revoke_record_cache);
- J_ASSERT(!jbd2_revoke_table_cache);
+ kmem_cache_destroy(jbd2_revoke_table_cache);
+ jbd2_revoke_table_cache = NULL;
+}
+int __init jbd2_journal_init_revoke_record_cache(void)
+{
+ J_ASSERT(!jbd2_revoke_record_cache);
jbd2_revoke_record_cache = KMEM_CACHE(jbd2_revoke_record_s,
SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY);
- if (!jbd2_revoke_record_cache)
- goto record_cache_failure;
+ if (!jbd2_revoke_record_cache) {
+ pr_emerg("JBD2: failed to create revoke_record cache\n");
+ return -ENOMEM;
+ }
+ return 0;
+}
+
+int __init jbd2_journal_init_revoke_table_cache(void)
+{
+ J_ASSERT(!jbd2_revoke_table_cache);
jbd2_revoke_table_cache = KMEM_CACHE(jbd2_revoke_table_s,
SLAB_TEMPORARY);
- if (!jbd2_revoke_table_cache)
- goto table_cache_failure;
- return 0;
-table_cache_failure:
- journal_destroy_revoke_caches();
-record_cache_failure:
+ if (!jbd2_revoke_table_cache) {
+ pr_emerg("JBD2: failed to create revoke_table cache\n");
return -ENOMEM;
+ }
+ return 0;
}
-static struct jbd2_revoke_table_s *journal_init_revoke_table(int hash_size)
+static struct jbd2_revoke_table_s *jbd2_journal_init_revoke_table(int hash_size)
{
int shift = 0;
int tmp = hash_size;
@@ -237,7 +231,7 @@ static struct jbd2_revoke_table_s *journal_init_revoke_table(int hash_size)
table->hash_size = hash_size;
table->hash_shift = shift;
table->hash_table =
- kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL);
+ kmalloc_array(hash_size, sizeof(struct list_head), GFP_KERNEL);
if (!table->hash_table) {
kmem_cache_free(jbd2_revoke_table_cache, table);
table = NULL;
@@ -251,7 +245,7 @@ out:
return table;
}
-static void journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
+static void jbd2_journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
{
int i;
struct list_head *hash_list;
@@ -266,16 +260,16 @@ static void journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
}
/* Initialise the revoke table for a given journal to a given size. */
-int journal_init_revoke(journal_t *journal, int hash_size)
+int jbd2_journal_init_revoke(journal_t *journal, int hash_size)
{
J_ASSERT(journal->j_revoke_table[0] == NULL);
J_ASSERT(is_power_of_2(hash_size));
- journal->j_revoke_table[0] = journal_init_revoke_table(hash_size);
+ journal->j_revoke_table[0] = jbd2_journal_init_revoke_table(hash_size);
if (!journal->j_revoke_table[0])
goto fail0;
- journal->j_revoke_table[1] = journal_init_revoke_table(hash_size);
+ journal->j_revoke_table[1] = jbd2_journal_init_revoke_table(hash_size);
if (!journal->j_revoke_table[1])
goto fail1;
@@ -286,26 +280,27 @@ int journal_init_revoke(journal_t *journal, int hash_size)
return 0;
fail1:
- journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ journal->j_revoke_table[0] = NULL;
fail0:
return -ENOMEM;
}
/* Destroy a journal's revoke table. The table must already be empty! */
-void journal_destroy_revoke(journal_t *journal)
+void jbd2_journal_destroy_revoke(journal_t *journal)
{
journal->j_revoke = NULL;
if (journal->j_revoke_table[0])
- journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
if (journal->j_revoke_table[1])
- journal_destroy_revoke_table(journal->j_revoke_table[1]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[1]);
}
#ifdef __KERNEL__
/*
- * journal_revoke: revoke a given buffer_head from the journal. This
+ * jbd2_journal_revoke: revoke a given buffer_head from the journal. This
* prevents the block from being replayed during recovery if we take a
* crash after this current transaction commits. Any subsequent
* metadata writes of the buffer in this transaction cancel the
@@ -317,18 +312,18 @@ void journal_destroy_revoke(journal_t *journal)
* revoke before clearing the block bitmap when we are deleting
* metadata.
*
- * Revoke performs a journal_forget on any buffer_head passed in as a
+ * Revoke performs a jbd2_journal_forget on any buffer_head passed in as a
* parameter, but does _not_ forget the buffer_head if the bh was only
* found implicitly.
*
* bh_in may not be a journalled buffer - it may have come off
* the hash tables without an attached journal_head.
*
- * If bh_in is non-zero, journal_revoke() will decrement its b_count
+ * If bh_in is non-zero, jbd2_journal_revoke() will decrement its b_count
* by one.
*/
-int journal_revoke(handle_t *handle, unsigned long long blocknr,
+int jbd2_journal_revoke(handle_t *handle, unsigned long long blocknr,
struct buffer_head *bh_in)
{
struct buffer_head *bh = NULL;
@@ -341,7 +336,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
BUFFER_TRACE(bh_in, "enter");
journal = handle->h_transaction->t_journal;
- if (!journal_set_features(journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)){
+ if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){
J_ASSERT (!"Cannot set revoke feature!");
return -EINVAL;
}
@@ -354,7 +349,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
if (bh)
BUFFER_TRACE(bh, "found on hash");
}
-#ifdef JFS_EXPENSIVE_CHECKING
+#ifdef JBD2_EXPENSIVE_CHECKING
else {
struct buffer_head *bh2;
@@ -376,6 +371,11 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
}
#endif
+ if (WARN_ON_ONCE(handle->h_revoke_credits <= 0)) {
+ if (!bh_in)
+ brelse(bh);
+ return -EIO;
+ }
/* We really ought not ever to revoke twice in a row without
first having the revoke cancelled: it's illegal to free a
block twice without allocating it in between! */
@@ -389,13 +389,14 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
set_buffer_revoked(bh);
set_buffer_revokevalid(bh);
if (bh_in) {
- BUFFER_TRACE(bh_in, "call journal_forget");
- journal_forget(handle, bh_in);
+ BUFFER_TRACE(bh_in, "call jbd2_journal_forget");
+ jbd2_journal_forget(handle, bh_in);
} else {
BUFFER_TRACE(bh, "call brelse");
__brelse(bh);
}
}
+ handle->h_revoke_credits--;
jbd_debug(2, "insert revoke for block %llu, bh_in=%p\n",blocknr, bh_in);
err = insert_revoke_hash(journal, blocknr,
@@ -406,7 +407,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
/*
* Cancel an outstanding revoke. For use only internally by the
- * journaling code (called from journal_get_write_access).
+ * journaling code (called from jbd2_journal_get_write_access).
*
* We trust buffer_revoked() on the buffer if the buffer is already
* being journaled: if there is no revoke pending on the buffer, then we
@@ -419,7 +420,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
* do not trust the Revoked bit on buffers unless RevokeValid is also
* set.
*/
-int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
+int jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
{
struct jbd2_revoke_record_s *record;
journal_t *journal = handle->h_transaction->t_journal;
@@ -427,7 +428,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
int did_revoke = 0; /* akpm: debug */
struct buffer_head *bh = jh2bh(jh);
- jbd_debug(4, "journal_head %p, canceling revoke\n", jh);
+ jbd_debug(4, "journal_head %p, cancelling revoke\n", jh);
/* Is the existing Revoke bit valid? If so, we trust it, and
* only perform the full cancel if the revoke bit is set. If
@@ -453,7 +454,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
}
}
-#ifdef JFS_EXPENSIVE_CHECKING
+#ifdef JBD2_EXPENSIVE_CHECKING
/* There better not be one left behind by now! */
record = find_revoke_record(journal, bh->b_blocknr);
J_ASSERT_JH(jh, record == NULL);
@@ -509,7 +510,7 @@ void jbd2_clear_buffer_revoked_flags(journal_t *journal)
* we do not want to suspend any processing until all revokes are
* written -bzzz
*/
-void journal_switch_revoke_table(journal_t *journal)
+void jbd2_journal_switch_revoke_table(journal_t *journal)
{
int i;
@@ -526,11 +527,10 @@ void journal_switch_revoke_table(journal_t *journal)
* Write revoke records to the journal for all entries in the current
* revoke hash, deleting the entries as we go.
*/
-void journal_write_revoke_records(journal_t *journal,
- transaction_t *transaction,
- struct list_head *log_bufs,
- int write_op)
+void jbd2_journal_write_revoke_records(transaction_t *transaction,
+ struct list_head *log_bufs)
{
+ journal_t *journal = transaction->t_journal;
struct buffer_head *descriptor;
struct jbd2_revoke_record_s *record;
struct jbd2_revoke_table_s *revoke;
@@ -551,16 +551,15 @@ void journal_write_revoke_records(journal_t *journal,
while (!list_empty(hash_list)) {
record = (struct jbd2_revoke_record_s *)
hash_list->next;
- write_one_revoke_record(journal, transaction, log_bufs,
- &descriptor, &offset,
- record, write_op);
+ write_one_revoke_record(transaction, log_bufs,
+ &descriptor, &offset, record);
count++;
list_del(&record->hash);
kmem_cache_free(jbd2_revoke_record_cache, record);
}
}
if (descriptor)
- flush_descriptor(journal, descriptor, offset, write_op);
+ flush_descriptor(journal, descriptor, offset);
jbd_debug(1, "Wrote %d revoke records\n", count);
}
@@ -569,22 +568,20 @@ void journal_write_revoke_records(journal_t *journal,
* block if the old one is full or if we have not already created one.
*/
-static void write_one_revoke_record(journal_t *journal,
- transaction_t *transaction,
+static void write_one_revoke_record(transaction_t *transaction,
struct list_head *log_bufs,
struct buffer_head **descriptorp,
int *offsetp,
- struct jbd2_revoke_record_s *record,
- int write_op)
+ struct jbd2_revoke_record_s *record)
{
+ journal_t *journal = transaction->t_journal;
int csum_size = 0;
struct buffer_head *descriptor;
int sz, offset;
- journal_header_t *header;
/* If we are already aborting, this all becomes a noop. We
still need to go round the loop in
- journal_write_revoke_records in order to free all of the
+ jbd2_journal_write_revoke_records in order to free all of the
revoke records: only the IO to the journal is omitted. */
if (is_journal_aborted(journal))
return;
@@ -593,10 +590,10 @@ static void write_one_revoke_record(journal_t *journal,
offset = *offsetp;
/* Do we need to leave space at the end for a checksum? */
- if (journal_has_csum_v2or3(journal))
- csum_size = sizeof(struct journal_revoke_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
- if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
+ if (jbd2_has_feature_64bit(journal))
sz = 8;
else
sz = 4;
@@ -604,29 +601,26 @@ static void write_one_revoke_record(journal_t *journal,
/* Make sure we have a descriptor with space left for the record */
if (descriptor) {
if (offset + sz > journal->j_blocksize - csum_size) {
- flush_descriptor(journal, descriptor, offset, write_op);
+ flush_descriptor(journal, descriptor, offset);
descriptor = NULL;
}
}
if (!descriptor) {
- descriptor = journal_get_descriptor_buffer(journal);
+ descriptor = jbd2_journal_get_descriptor_buffer(transaction,
+ JBD2_REVOKE_BLOCK);
if (!descriptor)
return;
- header = (journal_header_t *)descriptor->b_data;
- header->h_magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- header->h_blocktype = ext2fs_cpu_to_be32(JFS_REVOKE_BLOCK);
- header->h_sequence = ext2fs_cpu_to_be32(transaction->t_tid);
/* Record it so that we can wait for IO completion later */
BUFFER_TRACE(descriptor, "file in log_bufs");
jbd2_file_log_bh(log_bufs, descriptor);
- offset = sizeof(journal_revoke_header_t);
+ offset = sizeof(jbd2_journal_revoke_header_t);
*descriptorp = descriptor;
}
- if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) {
+ if (jbd2_has_feature_64bit(journal))
* ((__be64 *)(&descriptor->b_data[offset])) =
cpu_to_be64(record->blocknr);
else
@@ -637,21 +631,6 @@ static void write_one_revoke_record(journal_t *journal,
*offsetp = offset;
}
-static void jbd2_revoke_csum_set(journal_t *j, struct buffer_head *bh)
-{
- struct journal_revoke_tail *tail;
- __u32 csum;
-
- if (!journal_has_csum_v2or3(j))
- return;
-
- tail = (struct journal_revoke_tail *)(bh->b_data + j->j_blocksize -
- sizeof(struct journal_revoke_tail));
- tail->r_checksum = 0;
- csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize);
- tail->r_checksum = ext2fs_cpu_to_be32(csum);
-}
-
/*
* Flush a revoke descriptor out to the journal. If we are aborting,
* this is a noop; otherwise we are generating a buffer which needs to
@@ -661,23 +640,21 @@ static void jbd2_revoke_csum_set(journal_t *j, struct buffer_head *bh)
static void flush_descriptor(journal_t *journal,
struct buffer_head *descriptor,
- int offset, int write_op)
+ int offset)
{
- journal_revoke_header_t *header;
+ jbd2_journal_revoke_header_t *header;
- if (is_journal_aborted(journal)) {
- put_bh(descriptor);
+ if (is_journal_aborted(journal))
return;
- }
- header = (journal_revoke_header_t *)descriptor->b_data;
- header->r_count = ext2fs_cpu_to_be32(offset);
- jbd2_revoke_csum_set(journal, descriptor);
+ header = (jbd2_journal_revoke_header_t *)descriptor->b_data;
+ header->r_count = cpu_to_be32(offset);
+ jbd2_descriptor_block_csum_set(journal, descriptor);
set_buffer_jwrite(descriptor);
BUFFER_TRACE(descriptor, "write");
set_buffer_dirty(descriptor);
- write_dirty_buffer(descriptor, write_op);
+ write_dirty_buffer(descriptor, REQ_SYNC);
}
#endif
@@ -703,7 +680,7 @@ static void flush_descriptor(journal_t *journal,
* single block.
*/
-int journal_set_revoke(journal_t *journal,
+int jbd2_journal_set_revoke(journal_t *journal,
unsigned long long blocknr,
tid_t sequence)
{
@@ -727,7 +704,7 @@ int journal_set_revoke(journal_t *journal,
* ones, but later transactions still need replayed.
*/
-int journal_test_revoke(journal_t *journal,
+int jbd2_journal_test_revoke(journal_t *journal,
unsigned long long blocknr,
tid_t sequence)
{
@@ -746,7 +723,7 @@ int journal_test_revoke(journal_t *journal,
* that it can be reused by the running filesystem.
*/
-void journal_clear_revoke(journal_t *journal)
+void jbd2_journal_clear_revoke(journal_t *journal)
{
int i;
struct list_head *hash_list;
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index 5142554d..b0015794 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -160,7 +160,7 @@ static struct field_set_info super_fields[] = {
{ "usr_quota_inum", &set_sb.s_usr_quota_inum, NULL, 4, parse_uint },
{ "grp_quota_inum", &set_sb.s_grp_quota_inum, NULL, 4, parse_uint },
{ "prj_quota_inum", &set_sb.s_prj_quota_inum, NULL, 4, parse_uint },
- { "overhead_blocks", &set_sb.s_overhead_blocks, NULL, 4, parse_uint },
+ { "overhead_clusters", &set_sb.s_overhead_clusters, NULL, 4, parse_uint },
{ "backup_bgs", &set_sb.s_backup_bgs[0], NULL, 4, parse_uint,
FLAG_ARRAY, 2 },
{ "checksum", &set_sb.s_checksum, NULL, 4, parse_uint },
@@ -487,10 +487,7 @@ static errcode_t parse_uint(struct field_set_info *info, char *field,
n = num & mask;
switch (size) {
case 8:
- /* Should never get here */
- fprintf(stderr, "64-bit field %s has a second 64-bit field\n"
- "defined; BUG?!?\n", info->name);
- *u.ptr64 = 0;
+ *u.ptr64 = n;
break;
case 4:
*u.ptr32 = n;
@@ -510,7 +507,10 @@ static errcode_t parse_uint(struct field_set_info *info, char *field,
size = 2;
switch (size) {
case 8:
- *u.ptr64 = n;
+ /* Should never get here */
+ fprintf(stderr, "64-bit field %s has a second 64-bit field\n"
+ "defined; BUG?!?\n", info->name);
+ *u.ptr64 = 0;
break;
case 4:
*u.ptr32 = n;
diff --git a/debugfs/unused.c b/debugfs/unused.c
index a6b44b5e..08191a0e 100644
--- a/debugfs/unused.c
+++ b/debugfs/unused.c
@@ -53,7 +53,7 @@ void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv,
if (i >= current_fs->blocksize)
continue;
printf("\nUnused block %llu contains non-zero data:\n\n",
- blk);
+ (unsigned long long) blk);
for (i=0; i < current_fs->blocksize; i++)
fputc(buf[i], stdout);
}
diff --git a/debugfs/util.c b/debugfs/util.c
index 759bb392..9e880548 100644
--- a/debugfs/util.c
+++ b/debugfs/util.c
@@ -521,7 +521,7 @@ errcode_t read_list(char *str, blk64_t **list, size_t *len)
blk64_t *lst = *list;
size_t ln = *len;
char *tok, *p = str;
- errcode_t retval;
+ errcode_t retval = 0;
while ((tok = strtok(p, ","))) {
blk64_t *l;
@@ -530,24 +530,28 @@ errcode_t read_list(char *str, blk64_t **list, size_t *len)
errno = 0;
y = x = strtoull(tok, &e, 0);
- if (errno)
- return errno;
+ if (errno) {
+ retval = errno;
+ break;
+ }
if (*e == '-') {
y = strtoull(e + 1, NULL, 0);
- if (errno)
- return errno;
+ if (errno) {
+ retval = errno;
+ break;
+ }
} else if (*e != 0) {
retval = EINVAL;
- goto err;
+ break;
}
if (y < x) {
retval = EINVAL;
- goto err;
+ break;
}
l = realloc(lst, sizeof(blk64_t) * (ln + y - x + 1));
if (l == NULL) {
retval = ENOMEM;
- goto err;
+ break;
}
lst = l;
for (; x <= y; x++)
@@ -557,8 +561,40 @@ errcode_t read_list(char *str, blk64_t **list, size_t *len)
*list = lst;
*len = ln;
- return 0;
-err:
- free(lst);
return retval;
}
+
+void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize)
+{
+ size_t i, j, max;
+ int suppress = -1;
+
+ for (i = 0; i < bufsize; i += 16) {
+ max = (bufsize - i > 16) ? 16 : bufsize - i;
+ if (suppress < 0) {
+ if (i && memcmp(buf + i, buf + i - max, max) == 0) {
+ suppress = i;
+ fprintf(fp, "*\n");
+ continue;
+ }
+ } else {
+ if (memcmp(buf + i, buf + suppress, max) == 0)
+ continue;
+ suppress = -1;
+ }
+ fprintf(fp, "%04o ", (unsigned int)i);
+ for (j = 0; j < 16; j++) {
+ if (j < max)
+ fprintf(fp, "%02x", buf[i+j]);
+ else
+ fprintf(fp, " ");
+ if ((j % 2) == 1)
+ fprintf(fp, " ");
+ }
+ fprintf(fp, " ");
+ for (j = 0; j < max; j++)
+ fprintf(fp, "%c", isprint(buf[i+j]) ? buf[i+j] : '.');
+ fprintf(fp, "\n");
+ }
+ fprintf(fp, "\n");
+}
diff --git a/debugfs/zap.c b/debugfs/zap.c
index c7996b22..f862482f 100644
--- a/debugfs/zap.c
+++ b/debugfs/zap.c
@@ -133,7 +133,8 @@ void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
block, 0, &block);
if (errcode) {
com_err(argv[0], errcode,
- "while mapping logical block %llu\n", block);
+ "while mapping logical block %llu\n",
+ (unsigned long long) block);
return;
}
}
@@ -147,7 +148,8 @@ void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
errcode = io_channel_read_blk64(current_fs->io, block, 1, buf);
if (errcode) {
com_err(argv[0], errcode,
- "while reading block %llu\n", block);
+ "while reading block %llu\n",
+ (unsigned long long) block);
goto errout;
}
@@ -159,7 +161,8 @@ void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
errcode = io_channel_write_blk64(current_fs->io, block, 1, buf);
if (errcode) {
com_err(argv[0], errcode,
- "while write block %llu\n", block);
+ "while write block %llu\n",
+ (unsigned long long) block);
goto errout;
}
@@ -214,7 +217,8 @@ void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
block, 0, &block);
if (errcode) {
com_err(argv[0], errcode,
- "while mapping logical block %llu\n", block);
+ "while mapping logical block %llu\n",
+ (unsigned long long) block);
return;
}
}
@@ -228,7 +232,8 @@ void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
errcode = io_channel_read_blk64(current_fs->io, block, 1, buf);
if (errcode) {
com_err(argv[0], errcode,
- "while reading block %llu\n", block);
+ "while reading block %llu\n",
+ (unsigned long long) block);
goto errout;
}
@@ -239,38 +244,3 @@ void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
errout:
free(buf);
}
-
-void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize)
-{
- size_t i, j, max;
- int suppress = -1;
-
- for (i = 0; i < bufsize; i += 16) {
- max = (bufsize - i > 16) ? 16 : bufsize - i;
- if (suppress < 0) {
- if (i && memcmp(buf + i, buf + i - max, max) == 0) {
- suppress = i;
- fprintf(fp, "*\n");
- continue;
- }
- } else {
- if (memcmp(buf + i, buf + suppress, max) == 0)
- continue;
- suppress = -1;
- }
- fprintf(fp, "%04o ", (unsigned int)i);
- for (j = 0; j < 16; j++) {
- if (j < max)
- fprintf(fp, "%02x", buf[i+j]);
- else
- fprintf(fp, " ");
- if ((j % 2) == 1)
- fprintf(fp, " ");
- }
- fprintf(fp, " ");
- for (j = 0; j < max; j++)
- fprintf(fp, "%c", isprint(buf[i+j]) ? buf[i+j] : '.');
- fprintf(fp, "\n");
- }
- fprintf(fp, "\n");
-}
diff --git a/doc/Makefile.in b/doc/Makefile.in
index dab60947..a3594531 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = doc
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/doc/RelNotes/v1.41.13 b/doc/RelNotes/v1.41.13
deleted file mode 100644
index 3d334d44..00000000
--- a/doc/RelNotes/v1.41.13
+++ /dev/null
@@ -1,145 +0,0 @@
-E2fsprogs 1.41.13 (December 13, 2010)
-=====================================
-
-E2fsck now supports the extended option "-E journal_only", which
-causes it to only do a journal replay. This is useful for scripts
-that want to first replay the journal and then check to see if it
-contains errors.
-
-E2fsck will now support UUID= and LABEL= specifiers for the -j option
-(which specifies where to find the external journal). (Addresses
-Debian Bug #559315)
-
-E2fsck now has support for the problems/<problem code>/force_no
-configuration option in e2fsck.conf, which forces a problem to not be
-fixed.
-
-Dumpe2fs will now avoid printing large negative offsets for the bitmap
-blocks and instead print a message which is a bit more helpful for
-flex_bg file systems.
-
-Mke2fs will now check the file system type (specified with the -t
-option) to make sure it is defined in the mke2fs.conf file; if it is
-not, it will print an error and abort. If the usage type (specified
-with the -T option) is not defined in mke2fs.conf, mke2fs will print a
-warning but will continue. (Addresses Debian Bug #594609)
-
-Clarified error message from resize2fs clarifying that on-line
-shrinking is not supported at all. (Addresses Debian Bug #599786)
-
-Fix an e2fsck bug that could cause a PROGRAMMING BUG error to be
-displayed. (Addresses Debian Bug #555456)
-
-E2fsck will open the external journal in exclusive mode, to prevent
-the journal from getting truncated while it is in use due to a user
-accidentally trying to run e2fsck on a snapshotted file system volume.
-(Addresses Debian Bug #587531)
-
-Fix a bug in e2fsck so it has the correct test for the EOFBLOCKS_FL
-flag.
-
-The tune2fs program can now set the uninit_bg feature without
-requiring an fsck.
-
-The tune2fs, dumpe2fs, and debugfs programs now support the new ext4
-default mount options settings which were added in 2.6.35.
-
-The e2fsck and dumpe2fs programs now support the new ext4 superblock
-fields which track where and when the first and most recent file
-system errors occurred. These fields are displayed by dumpe2fs and
-cleared by e2fsck. These new superblock fields were added in 2.6.36.
-
-Debugfs now uses a more concise format for listing extents in its
-stat command. This format also includes the interior extent tree
-blocks, which previously was missing from stat's output for
-extent-based files.
-
-Debugfs has a new option, -D, which will request Direct I/O access of
-the file system.
-
-Mke2fs will skip initializing the inode table if a device supports
-discard and the discard operation will result in zero'ed blocks.
-
-Badblocks will now correctly backspace over UTF-8 characters when
-displaying its progress bar. (Addresses Gentoo Bug #309909; Addresses
-Debian Bugs #583782 and #587834)
-
-E2freefrag will now display the total number of free extents.
-
-Resize2fs -P no longer requires a freshly checked filesystem before
-printing the minimum resize size.
-
-Fixed a floating point precision error in a binary tree search routine
-that can lead to seg fault in e2fsck and resize2fs.
-
-Fixed a bug in e2fsck where if both the original and backup superblock
-are invalid in some way, e2fsck will fail going back to the original
-superblock because it didn't close the backup superblock first, and
-the exclusive open prevented the file system from being reopened.
-
-Fixed a big in e2freefrag which caused getopt parsing to fail on
-architectures with unsigned chars. (Addresses Gentoo Bug: #299386)
-
-Clarified an mke2fs error message so a missed common in an -E option
-(i.e., mke2fs -t ext4 -E stride=128 stripe-width=512 /dev/sda1")
-results in a more understandable explanation to the user.
-
-Mke2fs now displays the correct valid inode ratio range when
-complaining about an invalid inode ratio specified by the user.
-
-Mke2fs now understands the extended option "discard" and "nodiscard",
-and the older option -K is deprecated. The default of whether
-discards are enabled by default can be controlled by the mke2fs.conf
-file.
-
-Mke2fs's handling of logical and physical sector sizes has been
-improved to reflect the fact that there will be some SSD's with 8k and
-16k physical sectors arriving soon. Mke2fs will no longer force block
-size to be the physical sector size, since there will be devices where
-the physical sector size is larger than the system's page size, and
-hence larger than the maximal supported block size. In addition, if
-the minimal and optimal io size are not exported by the device, and
-the physical sector size is larger than the block size, the physical
-sector size will be used to set the Raid I/O optimization hints in the
-superblock.
-
-E2fsck will now display a better, more specific error message when the
-user enters a typo'ed device name, instead of blathering on about
-alternate superblocks.
-
-Fixed various Debian Packaging Issues
-
-Updated/clarified man pages (Addresses Debian Bugs: #580236, #594004,
-#589345, #591083; Addresses Launchpad Bug: #505719)
-
-Update the Chinese, Chzech, Dutch, French, Germany, Indonesian,
-Polish, Swedish, and Vietnamese translations.
-
-
-Programmer's Notes
-------------------
-
-Fix a dependency definition for the static and profiled blkid
-libraries which could cause compile failures in some configurations.
-(Addresses Debian Bug: #604629)
-
-Add support for Direct I/O in the Unix I/O access layer.
-
-Fixed a memory leak in the Unix I/O layer when changing block sizes.
-
-Fixed minor memory leaks in mke2fs.
-
-Added a new function to the ext2fs library, ext2fs_get_memalign().
-
-The tst_super_size test program will check to make sure the superblock
-fields are correctly aligned and will print them out so they can be
-manually checked for correctness.
-
-Fixed some makefile dependencies for test programs in lib/ext2fs.
-
-Reserved the feature flags and superblock fields needed for the Next3
-snapshot feature.
-
-Reserved the feature flags for EXT4_FEATURE_INCOMPAT_DIRDATA and
-EXT4_INCOMPAT_EA_INODE.
-
diff --git a/doc/RelNotes/v1.41.14 b/doc/RelNotes/v1.41.14
deleted file mode 100644
index 84e2e6e5..00000000
--- a/doc/RelNotes/v1.41.14
+++ /dev/null
@@ -1,31 +0,0 @@
-E2fsprogs 1.41.14 (December 22, 2010)
-=====================================
-
-Fix spurious complaint in mke2fs where it would complain if the file
-system type "default" is not defined in mke2fs.conf.
-
-The resize2fs program will no longer clear the resize_inode feature
-when the number reserved group descriptor blocks reaches zero. This
-allows for subsequent shrinks of the file system to work cleanly for
-flex_bg file systems.
-
-The resize2fs program now handles devices which are exactly 16T;
-previously it would give an error saying that the file system was too
-big.
-
-E2fsck (and the libext2fs library) will not use the extended rec_len
-encoding for file systems whose block size is less than 64k, for
-consistency with the kernel.
-
-Programming notes
------------------
-
-E2fsprogs 1.41.13 would not compile on big-endian systems. This has
-been fixed. (Addresses Sourceforge Bug: #3138115)
-
-The ext2fs_block_iterator2() function passed an incorrect ref_offset
-to its callback function in the case of sparse files. (Addresses
-Sourceforge Bug: #3081087)
-
-Fix some type-punning warnings generated by newer versions of gcc.
-
diff --git a/doc/RelNotes/v1.45.5.txt b/doc/RelNotes/v1.45.5.txt
new file mode 100644
index 00000000..70cef96e
--- /dev/null
+++ b/doc/RelNotes/v1.45.5.txt
@@ -0,0 +1,88 @@
+E2fsprogs 1.45.5 (January 7, 2020)
+==================================
+
+Updates/Fixes since v1.45.4:
+
+Fixes
+-----
+
+E2fsck will no longer force a full file system check if time-based
+forced checks are disabled and the last mount time or last write time in
+the superblock are in the future.
+
+Fix a potential out of bounds write when checking a maliciously
+corrupted file system. This is probably not exploitable on 64-bit
+platforms, but may be exploitable on 32-bit binaries depending on how
+the compiler lays out the stack variables. (Addresses CVE-2019-5188)
+
+Fixed spurious weekly e-mails when e2scrub_all is run via a cron job
+on non-systemd systems. (Addresses Debian Bug: #944033)
+
+Remove an unnecessary sleep in e2scrub which could add up to an
+additional two second delay during the boot up. Also, avoid trying
+to reap aborted snapshots if it has been disabled via e2scrub.conf.
+(Addresses Debian Bug: #948193)
+
+If a mischievous system administrator mounts a pseudo-file system such
+as tmpfs with a device name that duplicates another mounted file system,
+this could potentially confuse resize2fs when it needs to find the mount
+point of a mounted file system. (Who would have guessed?) Add some
+sanity checking so that we can make libext2fs more robust against such
+insanity, at least on Linux. (GNU HURD doesn't support st_rdev.)
+
+Tune2fs now prohibits enabling or disabling uninit_bg if the file system
+is mounted, since this could result in the file system getting
+corrupted, and there is an unfortunate AskUbuntu article suggesting this
+as a way to modify a file system's UUID on a live file system. (Ext4
+now has a way to do this safely, using the metadata_csum_seed feature,
+which was added in the 4.4 Linux kernel.)
+
+Fix potential crash in e2fsck when rebuilding very large directories on
+file systems which have the new large_dir feature enable.
+
+Fix support of 32-bit uid's and gid's in fuse2fs and in mke2fs -d.
+
+Fix mke2fs's setting bad blocks to bigalloc file systems.
+
+Fix a bug where fuse2fs would incorrectly report the i_blocks fields for
+bigalloc file systems.
+
+Resize2fs's minimum size estimates (via resize2fs -M) estimates are now
+more accurate when run on mounted file systems.
+
+Fixed potential memory leak in read_bitmap() in libext2fs.
+
+Fixed various UBsan failures found when fuzzing file system images.
+(Addresses Google Bug: #128130353)
+
+Updated and clarified various man pages.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Speed up e2fsck on file systems with a very large number of inodes
+caused by repeated calls to gettext().
+
+The inode_io io_manager can now support files which are greater than
+2GB.
+
+The ext2_off_t and ext2_off64_t are now signed types so that
+ext2fs_file_lseek() and ext2fs_file_llseek() can work correctly.
+
+Reserve codepoint for the fast_commit feature.
+
+Fixed various Debian packaging issues.
+
+Fix portability problems for Illumous and on hurd/i386 (Addresses Debian
+Bug: #944649)
+
+Always compile the ext2fs_swap_* functions even on little-endian
+architectures, so that debian/libext2fs.symbols can be consistent across
+architectures.
+
+Synchronized changes from Android's AOSP e2fsprogs tree.
+
+Updated config.guess and config.sub with newer versions from the FSF.
+
+Update the Chinese and Malay translations from the translation project.
diff --git a/doc/RelNotes/v1.45.6.txt b/doc/RelNotes/v1.45.6.txt
new file mode 100644
index 00000000..ac822bfb
--- /dev/null
+++ b/doc/RelNotes/v1.45.6.txt
@@ -0,0 +1,62 @@
+E2fsprogs 1.45.6 (March 20, 2020)
+==================================
+
+Updates/Fixes since v1.45.5:
+
+UI and Features
+---------------
+
+Debugfs will ignore lines in its command files which start with a
+comment character ("#").
+
+
+Fixes
+-----
+
+Fixed a number of potential out of bounds memory accesses caused by
+fuzzed / malicious file systems. (Addresses Google Bug: #147849134)
+
+Fix a spurious complaint from e2fsck when a directory which previously
+had more than 32000 subdirectories has the number of subdirectories
+drops below 32000.
+
+Fix an ismounted check when an LVM device is renamed while the device is
+mounted.
+
+Mke2fs -d now correctly sets permission with files where the owner
+permissions are not rwx.
+
+Improve e2fsck's ability to deal with file systems with very large
+number of directories, such that various data structures take more than
+2GiB of memory. Use better structure packing to improve the memory
+efficiency of these data structures.
+
+Fix debugfs so it correctly prints inode numbers > 2**31.
+
+Filefrag now supports very large files (with > 4 billion blocks), as
+well as block sizes up to 1 GiB.
+
+Updated and clarified various man pages. (Addresses Debian Bugs:
+#953493, #953494, #951808)
+
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Reserved the error code EXT2_ET_NO_GDESC (which will be used in
+e2fsprogs v1.46+)
+
+Added a thread-safe variant of e2p_feature2string(),
+e2p_feature_to_string() to the libe2p library.
+
+Fixed portability problems caused by gcc 10.
+
+Fixed portability problem in libcom_err with GNU Hurd.
+
+Fixed various Debian packaging issues. (Addresses-Debian-Bug: #953926)
+
+Synchronized changes from Android's AOSP e2fsprogs tree.
+
+Update the Malay translation from the translation project.
+
diff --git a/doc/RelNotes/v1.45.7.txt b/doc/RelNotes/v1.45.7.txt
new file mode 100644
index 00000000..2a167766
--- /dev/null
+++ b/doc/RelNotes/v1.45.7.txt
@@ -0,0 +1,96 @@
+E2fsprogs 1.45.7 (January 28, 2021)
+==================================
+
+Updates/Fixes since v1.45.6:
+
+UI and Features
+---------------
+
+Mke2fs will now warn when creating a file system on a DAX-capable device
+and the block size is incompatible with DAX.
+
+The chattr and lsattr programs now support using the 'x' attribute to
+set/get dax support on a particular file.
+
+E2fsprogs now supports the gnu.* extended attribute namespace, which
+allows mke2fs -d to import the gnu.translator extended attributes.
+
+Add support for the simultaneous enablement of the casefold and
+encryption features, which ext4 supports starting with the v5.5 Linux
+kernel.
+
+
+Fixes
+-----
+
+When trying to run debugfs on a mounted file system, it's possible for
+the superblock to be read in an inconsistent state; debugfs will now
+retry the open in the hopes that it will succeed.
+
+Fix an off-by-one error when validating the depth of an htree which
+caused e2fsck to potentially fail to notice an invalid htree.
+
+Fix potential buffer overrun in e2fsck when scanning directory blocks in
+pass 2. (Addresses Google Bug: #158564737)
+
+Fix tune2fs so that it unlocks the MMP block if it can't perform the
+requested operation.
+
+Fix mke2fs so it can import the contents of a directory using the -d
+option when it has inode numbers that are greater than 2**32. Also fix
+an ommission were the extended attributes on the top-level directory was
+not getting copied to the root directory.
+
+Fix e4crypt so that the add_key operation uses the explicitly provided
+salt if it is provided.
+
+Fix resize2fs to prevent it from overflowing the block group descriptors
+from overflowing the first block group. (This can only happen when the
+block size is 1k and the file system is very large.)
+
+Fix debugfs's set_super_value command so it can set 64-bit integer
+fields, such as s_kbytes_written.
+
+Fix filefrag so that it won't crash if the kernel returns zero for
+statfs(2)'s device id or if it returns a blocksize of zero the device's
+blocksize. This only happens with kernel bugs, but filefrag shouldn't
+crash when the kernel returns an unexpected value.
+
+Fix a few bad error code returns in the unix and sparse I/O managers.
+(These errors rarely happen in real life; these were find thanks to a
+static code checker.)
+
+E2fsck will no longer try to fix duplicate file names in an encrypted
+directory by mutating the file name since that will cause the decrypted
+file name to be gibberish, or to contain invalid characters.
+
+Updated and clarified various man pages.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+The misc/mke2fs.conf.in script now properly escaping of double quotes
+when incorporating the mke2fs.conf into the default_profile.c file. The
+upstream version of the mke2fs.conf.in file doesn't have any double
+quotes, but this allows a customized distribution of e2fsprogs to have
+double quotes in its default mke2fs profile.
+
+Speeded up mkfs.ext3 by batching calls to ext2fs_zero_blocks when
+zeroing the blocks for an indirect-block mapped journal inode.
+
+Fixed portability problem for implementations of grep which don't
+support extended regexp's without the -E option.
+
+Fix various compiler and Coverity warnings.
+
+Fixed portability issue which caused a build failure when mkdir -p is
+not thread safe; in that case, the Makefiles would not find the
+install_sh replacement script.
+
+Fixed various Debian packaging issues.
+
+Synchronized changes from Android's AOSP e2fsprogs tree.
+
+Update the Dutch, Malay, and Serbian translations from the translation
+project.
diff --git a/doc/RelNotes/v1.46.0.txt b/doc/RelNotes/v1.46.0.txt
new file mode 100644
index 00000000..8fb5222d
--- /dev/null
+++ b/doc/RelNotes/v1.46.0.txt
@@ -0,0 +1,108 @@
+E2fsprogs 1.46.0 (January 29, 2021)
+===================================
+
+Updates/Fixes since v1.45.7:
+
+UI and Features
+---------------
+
+E2fsprogs now supports the fast_commit (COMPAT_FAST_COMMIT) feature.
+This feature, first available in Linux version 5.10, adds a fine-grained
+journalling which improves the latency of the fsync(2) system call. It
+should also improve the performance of ext4 file systems exported via
+NFS.
+
+E2fsprogs now supports the stable_inodes (COMPAT_STABLE_INODES) feature.
+This needed to support fscrypt siphash algorithm, which calculates the
+initial vector (IV) for encryption based on the UUID and the inode
+number. This means that we can't renumber inodes (for example, when
+shrinking a file system) and the UUID can't be changed without breaking
+the ability to decrypt the encryption.
+
+E2fsprogs now supports file systems which have both file system
+encryption and the casefold feature enabled. This is used in some
+Android handsets, but has not yet landed upstream yet.
+
+E2fsck now will check file names on file systems with case folding
+enabled to make sure the characters are valid UTF-8 characters. This is
+done for file systems which enforce strict encodings, and optionally if
+the extended "check_encoding" option is requested.
+
+The fuse2fs program now supports the "-o norecovery" option, which will
+suppress any journal replay that might be necessary, and mounts the file
+system read-only.
+
+E2fsck will now find and fix file system corruptions when the encrypted
+files have a different policy from their containing directory.
+
+The "htree" command in debugfs now displays the metadata checksums for
+hash tree index blocks.
+
+Dumpe2fs will print the error code that Linux kernels newer than v5.6
+will save to indicate the class of error which triggered the ext4_error
+event.
+
+E2fsprogs programs (in particular, fuse2fs) can now update htree
+directories without clearing the htree index.
+
+Mke2fs now sets the s_overhead_cluster field, so that the kernel doesn't
+need to calculate it at mount time. This speeds up mounting very large
+file systems.
+
+
+Fixes
+-----
+
+E2fsck will properly handle checking for duplicated file names when case
+folding is enabled.
+
+Fix various bugs where a maliciously corrupted file systems could case
+e2fsck and other e2fsprogs programs to crash.
+
+Tune2fs will properly recalculate directory block checksums when
+clearing the dir_index feature.
+
+Fix a bug in e2fsck directory rehashing which could fail with ENOSPC
+because it doesn't take into account the space needed for the metadata
+checksum, and doesn't create a sufficiently deep index tree.
+
+Clarify the e2fsck messages when it resets the directory link count when
+it is set to the overflow value but it is no longer needed.
+
+The filefrag program can now request the kernel to display the extent
+status cache by using "filefrag -E". (This requires Linux version 5.4
+or newer.)
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Speed up mke2fs when creating large bigalloc file systems by optimizing
+ext2fs_convert_subcluster_bitmap().
+
+Bitmap blocks are now read using multiple threads (for systems with
+pthread support). This speeds up dumpe2fs, e2fsck, and debugfs for very
+large file systems.
+
+The dumpe2fs and tune2fs will now avoiding to read the block group
+descriptors when they are not needed, which speeds up these program when
+operating on very large file systems.
+
+Drop use of the sysctl(2) system call, which is deprecated in Linux.
+
+Add support for "configure --enable-developer-features" which enables
+features only meant for developer. The first such feature is "e2fsck -E
+clear_all_uninit_bits", which clears the uninitialized bit on all
+extents for all inodes. Note that this can end up exposing uninitialized
+data to userspace, and should only used in very specialized situations.
+
+The e2fsck/revoke.c and e2fsck/recovery.c files are now kept idential
+with the fs/jbd2 versions of these files in the kernel.
+
+Fix various compiler and Coverity warnings.
+
+Update to use gettext 0.19.8. This also removes the built-in "intl"
+directory as this is now considered deprecated by gettext. This means
+that if the system doesn't have gettext installed on the build system,
+we will simply disable NLS support.
+
diff --git a/doc/RelNotes/v1.46.1.txt b/doc/RelNotes/v1.46.1.txt
new file mode 100644
index 00000000..e8d90d19
--- /dev/null
+++ b/doc/RelNotes/v1.46.1.txt
@@ -0,0 +1,41 @@
+E2fsprogs 1.46.1 (February 9, 2021)
+===================================
+
+Updates/Fixes since v1.46.0:
+
+Fixes
+-----
+
+Fix a bug in libext2fs and debugfs when trying to set an extended
+attribute will result in a seg fault.
+
+Fix e2fsck so it properly accepts large_dir directories which are
+greater than 4GB in size.
+
+Fix fast commit support on big endian architectures. Also avoid potential
+crash on an error handling case.
+
+Fix mke2fs -d so it correctly handles important a directory or small
+file which is stored using inline_data and contains an ACL or extended
+attribute. (Addresses-Debian-Bug: #971014)
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Fix build failure on systems with pthread && without FUSE support.
+
+Fix various compiler warnings.
+
+Fix portability problems by not depending on the glibc specific qsort_r
+function.
+
+Change configure.ac to use AS_HELP_STRING instead of the deprecated
+AC_HELP_STRING, and explicitly declare that the configure.ac requires
+autoconf 2.69.
+
+Fixed/improved various Debian packaging issues. (Addresses-Debian-Bug:
+#966686)
+
+Update the Czech, French, Malay, Polish, Portuguese, Sweedish, and
+Ukranian translations from the translation project.
diff --git a/doc/RelNotes/v1.46.2.txt b/doc/RelNotes/v1.46.2.txt
new file mode 100644
index 00000000..8f157381
--- /dev/null
+++ b/doc/RelNotes/v1.46.2.txt
@@ -0,0 +1,64 @@
+E2fsprogs 1.46.2 (February 28, 2021)
+===================================
+
+Updates/Fixes since v1.46.1:
+
+UI and Features
+---------------
+
+Teach the tune2fs program to support "random" as an argument to the -c
+option, which sets the maximum mount count. (Addresses Debian Bug:
+#926293)
+
+Add support for the FS_NOCOMP_FL flag to chattr and lsattr.
+
+
+Fixes
+-----
+
+When resizing a small file systems to a super-large file system size,
+avoid issuing some scary bitmap operation warnings. (Addresses Github
+issue https://github.com/tytso/e2fsprogs/issues/60)
+
+Fix the debugfs rdump and ls commands so they will work correctly for
+uid's and gid's => 65536. (Addresses Github issue issue
+https://github.com/tytso/e2fsprogs/issues/63)
+
+Fix the debugfs write and symlink commands so they support targets which
+contain a pathname (instead of only working when writing a file or
+creating a symlink in the current directory). (Addresses Github issue
+https://github.com/tytso/e2fsprogs/issues/61)
+
+Fix Direct I/O support on block devices where the logical block size is
+greater 1k. (This includes Advanced Format HDD's, where the sector size
+is 4k, and IBM Mainframe DASD's, where the sector size is 2k.)
+
+Fix debugfs's logdump so it works on file systems whose block size is
+greater than 8k.
+
+Fix a where e2fsck could a crash when there is error while e2fsck is
+trying to open the file system, and e2fsck calls ext2fs_mmp_stop()
+before MMP has been initialized. (Addresses Debian Bug: #696609)
+
+Improved error checking in the fast commit replay code in e2fsck.
+
+Updated and clarified the chattr man page.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Fix various compiler and Coverity warnings.
+
+Update the Spanish translation from the translation project.
+
+Update the e2fsck/iscan.c test program so that it builds again.
+
+Fix an environmental dependency bug for the m_rootdir_acl regression
+test.
+
+Avoid the use of loff_t, which is not available for all compilers /
+system include files.
+
+Fix failure of the t_mmp_fail test when running on a device with a 4k
+logical sector size.
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo
index a001be53..26cfb0ac 100644
--- a/doc/libext2fs.texinfo
+++ b/doc/libext2fs.texinfo
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename libext2fs.info
-@settitle The EXT2FS Library (version 1.45.4)
+@settitle The EXT2FS Library (version 1.46.2)
@synindex tp fn
@comment %**end of header
@@ -60,8 +60,8 @@ by the author.
@title The EXT2FS Library
@subtitle The EXT2FS Library
-@subtitle Version 1.45.4
-@subtitle September 2019
+@subtitle Version 1.46.2
+@subtitle February 2021
@author by Theodore Ts'o
@@ -101,7 +101,7 @@ by the Foundation.
@top The EXT2FS Library
-This manual documents the EXT2FS Library, version 1.45.4.
+This manual documents the EXT2FS Library, version 1.46.2.
@menu
* Introduction to the EXT2FS Library::
diff --git a/e2fsck/Android.bp b/e2fsck/Android.bp
index 166d7657..9882172c 100644
--- a/e2fsck/Android.bp
+++ b/e2fsck/Android.bp
@@ -45,6 +45,7 @@ cc_defaults {
"sigcatcher.c",
"readahead.c",
"extents.c",
+ "encrypted_files.c",
],
cflags: [
"-Wno-sign-compare",
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index bc7195f3..71ac3cf5 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = e2fsck
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -63,7 +64,7 @@ OBJS= unix.o e2fsck.o super.o pass1.o pass1b.o pass2.o \
dx_dirinfo.o ehandler.o problem.o message.o quota.o recovery.o \
region.o revoke.o ea_refcount.o rehash.o \
logfile.o sigcatcher.o $(MTRACE_OBJ) readahead.o \
- extents.o
+ extents.o encrypted_files.o
PROFILED_OBJS= profiled/unix.o profiled/e2fsck.o \
profiled/super.o profiled/pass1.o profiled/pass1b.o \
@@ -74,7 +75,8 @@ PROFILED_OBJS= profiled/unix.o profiled/e2fsck.o \
profiled/recovery.o profiled/region.o profiled/revoke.o \
profiled/ea_refcount.o profiled/rehash.o \
profiled/logfile.o profiled/sigcatcher.o \
- profiled/readahead.o profiled/extents.o
+ profiled/readahead.o profiled/extents.o \
+ profiled/encrypted_files.o
SRCS= $(srcdir)/e2fsck.c \
$(srcdir)/super.c \
@@ -103,12 +105,15 @@ SRCS= $(srcdir)/e2fsck.c \
$(srcdir)/logfile.c \
$(srcdir)/quota.c \
$(srcdir)/extents.c \
+ $(srcdir)/encrypted_files.c \
$(MTRACE_SRC)
all:: profiled $(PROGS) e2fsck $(MANPAGES) $(FMANPAGES)
@PROFILE_CMT@all:: e2fsck.profiled
+all-static:: e2fsck.static
+
e2fsck: $(OBJS) $(DEPLIBS)
$(E) " LD $@"
$(Q) $(LD) $(ALL_LDFLAGS) $(RDYNAMIC) -o e2fsck $(OBJS) $(LIBS)
@@ -133,7 +138,7 @@ tst_problem: $(srcdir)/problem.c $(srcdir)/problem.h $(LIBEXT2FS) \
$(srcdir)/problem.c -DUNITTEST $(LIBEXT2FS) $(LIBCOM_ERR) \
$(LIBINTL) $(SYSLIBS)
-tst_refcount: ea_refcount.c $(DEPLIBCOM_ERR)
+tst_refcount: ea_refcount.c $(DEPLIBCOM_ERR) $(LIBEXT2FS)
$(E) " LD $@"
$(Q) $(CC) -o tst_refcount $(srcdir)/ea_refcount.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM \
@@ -144,11 +149,11 @@ tst_logfile: $(srcdir)/logfile.c
$(Q) $(CC) -o tst_logfile $(srcdir)/logfile.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM $(SYSLIBS)
-tst_region: region.c $(DEPLIBCOM_ERR)
+tst_region: region.c $(LIBEXT2FS) $(DEPLIBCOM_ERR)
$(E) " LD $@"
$(Q) $(CC) -o tst_region $(srcdir)/region.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM \
- $(LIBCOM_ERR) $(SYSLIBS)
+ $(LIBEXT2FS) $(LIBCOM_ERR) $(SYSLIBS)
fullcheck check:: tst_refcount tst_region tst_problem
$(TESTENV) ./tst_refcount
@@ -163,9 +168,13 @@ flushb: flushb.o
$(E) " LD $@"
$(Q) $(LD) $(ALL_LDFLAGS) -o flushb flushb.o $(CHECKLIB)
-iscan: iscan.o util.o ehandler.o $(DEPLIBS)
+iscan: iscan.o $(DEPLIBS)
+ $(E) " LD $@"
+ $(Q) $(LD) $(ALL_LDFLAGS) -o iscan iscan.o $(LIBS)
+
+iscan.static: iscan.o $(STATIC_DEPLIBS)
$(E) " LD $@"
- $(Q) $(LD) $(ALL_LDFLAGS) -o iscan iscan.o util.o ehandler.o $(LIBS)
+ $(Q) $(LD) $(LDFLAGS_STATIC) -o iscan.static iscan.o $(STATIC_LIBS)
test_profile: $(srcdir)/profile.c profile_helpers.o argv_parse.o \
prof_err.o profile.h $(DEPSTATIC_LIBCOM_ERR)
@@ -249,7 +258,7 @@ clean::
e2fsck.shared e2fsck.profiled flushb e2fsck.8 \
tst_problem tst_region tst_refcount tst_crc32 \
gen_crc32table e2fsck.conf.5 \
- prof_err.c prof_err.h test_profile
+ prof_err.c prof_err.h test_profile iscan iscan.static
$(RM) -rf profiled
mostlyclean: clean
@@ -271,7 +280,10 @@ e2fsck.o: $(srcdir)/e2fsck.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
super.o: $(srcdir)/super.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -282,7 +294,10 @@ super.o: $(srcdir)/super.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
pass1.o: $(srcdir)/pass1.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -293,8 +308,10 @@ pass1.o: $(srcdir)/pass1.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/lib/e2p/e2p.h \
- $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/e2p/e2p.h $(srcdir)/problem.h
pass1b.o: $(srcdir)/pass1b.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
@@ -305,8 +322,10 @@ pass1b.o: $(srcdir)/pass1b.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
- $(top_srcdir)/lib/support/dict.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(top_srcdir)/lib/support/dict.h
pass2.o: $(srcdir)/pass2.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -317,8 +336,10 @@ pass2.o: $(srcdir)/pass2.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
- $(top_srcdir)/lib/support/dict.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(top_srcdir)/lib/support/dict.h
pass3.o: $(srcdir)/pass3.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -329,7 +350,10 @@ pass3.o: $(srcdir)/pass3.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
pass4.o: $(srcdir)/pass4.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -340,7 +364,10 @@ pass4.o: $(srcdir)/pass4.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
pass5.o: $(srcdir)/pass5.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -351,7 +378,10 @@ pass5.o: $(srcdir)/pass5.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
journal.o: $(srcdir)/journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/jfs_user.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -363,8 +393,9 @@ journal.o: $(srcdir)/journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(srcdir)/problem.h
recovery.o: $(srcdir)/recovery.c $(srcdir)/jfs_user.h \
$(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
$(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
@@ -376,8 +407,9 @@ recovery.o: $(srcdir)/recovery.c $(srcdir)/jfs_user.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h
revoke.o: $(srcdir)/revoke.c $(srcdir)/jfs_user.h \
$(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
$(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
@@ -389,8 +421,9 @@ revoke.o: $(srcdir)/revoke.c $(srcdir)/jfs_user.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h
badblocks.o: $(srcdir)/badblocks.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
@@ -401,7 +434,9 @@ badblocks.o: $(srcdir)/badblocks.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
util.o: $(srcdir)/util.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -412,7 +447,9 @@ util.o: $(srcdir)/util.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
unix.o: $(srcdir)/unix.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -424,10 +461,11 @@ unix.o: $(srcdir)/unix.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
- $(srcdir)/jfs_user.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
- $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
- $(top_srcdir)/version.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(srcdir)/jfs_user.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/version.h
dirinfo.o: $(srcdir)/dirinfo.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -438,7 +476,10 @@ dirinfo.o: $(srcdir)/dirinfo.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/lib/ext2fs/tdb.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/tdb.h
dx_dirinfo.o: $(srcdir)/dx_dirinfo.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -449,7 +490,9 @@ dx_dirinfo.o: $(srcdir)/dx_dirinfo.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
ehandler.o: $(srcdir)/ehandler.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -460,7 +503,9 @@ ehandler.o: $(srcdir)/ehandler.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
problem.o: $(srcdir)/problem.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -471,8 +516,10 @@ problem.o: $(srcdir)/problem.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
- $(srcdir)/problemP.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(srcdir)/problemP.h
message.o: $(srcdir)/message.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -483,6 +530,8 @@ message.o: $(srcdir)/message.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/support/profile.h $(top_builddir)/lib/support/prof_err.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
$(srcdir)/problem.h
ea_refcount.o: $(srcdir)/ea_refcount.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
@@ -494,7 +543,9 @@ ea_refcount.o: $(srcdir)/ea_refcount.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
rehash.o: $(srcdir)/rehash.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -505,7 +556,10 @@ rehash.o: $(srcdir)/rehash.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(top_srcdir)/lib/support/sort_r.h
readahead.o: $(srcdir)/readahead.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -516,7 +570,9 @@ readahead.o: $(srcdir)/readahead.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
region.o: $(srcdir)/region.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -527,7 +583,9 @@ region.o: $(srcdir)/region.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
sigcatcher.o: $(srcdir)/sigcatcher.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -538,7 +596,9 @@ sigcatcher.o: $(srcdir)/sigcatcher.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
logfile.o: $(srcdir)/logfile.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -549,7 +609,9 @@ logfile.o: $(srcdir)/logfile.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
quota.o: $(srcdir)/quota.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -560,7 +622,10 @@ quota.o: $(srcdir)/quota.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
extents.o: $(srcdir)/extents.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -571,4 +636,21 @@ extents.o: $(srcdir)/extents.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h
+encrypted_files.o: $(srcdir)/encrypted_files.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
+ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
+ $(top_srcdir)/lib/ext2fs/ext2fs.h $(top_srcdir)/lib/ext2fs/ext3_extents.h \
+ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/ext2fs/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
+ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
+ $(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
+ $(top_srcdir)/lib/support/dqblk_v2.h \
+ $(top_srcdir)/lib/support/quotaio_tree.h \
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(srcdir)/problem.h $(top_srcdir)/lib/ext2fs/rbtree.h
diff --git a/e2fsck/badblocks.c b/e2fsck/badblocks.c
index 7f3641b5..fec5f10d 100644
--- a/e2fsck/badblocks.c
+++ b/e2fsck/badblocks.c
@@ -76,7 +76,8 @@ void read_bad_blocks_file(e2fsck_t ctx, const char *bad_blocks_file,
sprintf(buf, "badblocks -b %d -X %s%s%s %llu", fs->blocksize,
(ctx->options & E2F_OPT_PREEN) ? "" : "-s ",
(ctx->options & E2F_OPT_WRITECHECK) ? "-n " : "",
- fs->device_name, ext2fs_blocks_count(fs->super)-1);
+ fs->device_name,
+ (unsigned long long) ext2fs_blocks_count(fs->super)-1);
f = popen(buf, "r");
if (!f) {
com_err("read_bad_blocks_file", errno,
diff --git a/e2fsck/dirinfo.c b/e2fsck/dirinfo.c
index cceadac3..49d624c5 100644
--- a/e2fsck/dirinfo.c
+++ b/e2fsck/dirinfo.c
@@ -17,8 +17,8 @@
#include <ext2fs/tdb.h>
struct dir_info_db {
- int count;
- int size;
+ ext2_ino_t count;
+ ext2_ino_t size;
struct dir_info *array;
struct dir_info *last_lookup;
#ifdef CONFIG_TDB
@@ -28,7 +28,7 @@ struct dir_info_db {
};
struct dir_info_iter {
- int i;
+ ext2_ino_t i;
#ifdef CONFIG_TDB
TDB_DATA tdb_iter;
#endif
@@ -46,7 +46,7 @@ static void e2fsck_put_dir_info(e2fsck_t ctx, struct dir_info *dir);
static void setup_tdb(e2fsck_t ctx, ext2_ino_t num_dirs)
{
struct dir_info_db *db = ctx->dir_info;
- unsigned int threshold;
+ ext2_ino_t threshold;
errcode_t retval;
mode_t save_umask;
char *tdb_dir, uuid[40];
@@ -130,12 +130,12 @@ static void setup_db(e2fsck_t ctx)
void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent)
{
struct dir_info *dir, *old_array;
- int i, j;
+ ext2_ino_t i, j;
errcode_t retval;
unsigned long old_size;
#ifdef DIRINFO_DEBUG
- printf("add_dir_info for inode (%lu, %lu)...\n", ino, parent);
+ printf("add_dir_info for inode (%u, %u)...\n", ino, parent);
#endif
if (!ctx->dir_info)
setup_db(ctx);
@@ -149,7 +149,7 @@ void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent)
&ctx->dir_info->array);
if (retval) {
fprintf(stderr, "Couldn't reallocate dir_info "
- "structure to %d entries\n",
+ "structure to %u entries\n",
ctx->dir_info->size);
fatal_error(ctx, 0);
ctx->dir_info->size -= 10;
@@ -204,13 +204,13 @@ void e2fsck_add_dir_info(e2fsck_t ctx, ext2_ino_t ino, ext2_ino_t parent)
static struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino)
{
struct dir_info_db *db = ctx->dir_info;
- int low, high, mid;
+ ext2_ino_t low, high, mid;
if (!db)
return 0;
#ifdef DIRINFO_DEBUG
- printf("e2fsck_get_dir_info %d...", ino);
+ printf("e2fsck_get_dir_info %u...", ino);
#endif
#ifdef CONFIG_TDB
@@ -235,7 +235,7 @@ static struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino)
ret_dir_info.dotdot = buf->dotdot;
ret_dir_info.parent = buf->parent;
#ifdef DIRINFO_DEBUG
- printf("(%d,%d,%d)\n", ino, buf->dotdot, buf->parent);
+ printf("(%u,%u,%u)\n", ino, buf->dotdot, buf->parent);
#endif
free(data.dptr);
return &ret_dir_info;
@@ -246,10 +246,10 @@ static struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino)
return db->last_lookup;
low = 0;
- high = ctx->dir_info->count-1;
+ high = ctx->dir_info->count - 1;
if (ino == ctx->dir_info->array[low].ino) {
#ifdef DIRINFO_DEBUG
- printf("(%d,%d,%d)\n", ino,
+ printf("(%u,%u,%u)\n", ino,
ctx->dir_info->array[low].dotdot,
ctx->dir_info->array[low].parent);
#endif
@@ -257,7 +257,7 @@ static struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino)
}
if (ino == ctx->dir_info->array[high].ino) {
#ifdef DIRINFO_DEBUG
- printf("(%d,%d,%d)\n", ino,
+ printf("(%u,%u,%u)\n", ino,
ctx->dir_info->array[high].dotdot,
ctx->dir_info->array[high].parent);
#endif
@@ -265,12 +265,13 @@ static struct dir_info *e2fsck_get_dir_info(e2fsck_t ctx, ext2_ino_t ino)
}
while (low < high) {
- mid = (low+high)/2;
+ /* sum may overflow, but result will fit into mid again */
+ mid = (unsigned long long)(low + high) / 2;
if (mid == low || mid == high)
break;
if (ino == ctx->dir_info->array[mid].ino) {
#ifdef DIRINFO_DEBUG
- printf("(%d,%d,%d)\n", ino,
+ printf("(%u,%u,%u)\n", ino,
ctx->dir_info->array[mid].dotdot,
ctx->dir_info->array[mid].parent);
#endif
@@ -294,7 +295,7 @@ static void e2fsck_put_dir_info(e2fsck_t ctx EXT2FS_NO_TDB_UNUSED,
#endif
#ifdef DIRINFO_DEBUG
- printf("e2fsck_put_dir_info (%d, %d, %d)...", dir->ino, dir->dotdot,
+ printf("e2fsck_put_dir_info (%u, %u, %u)...", dir->ino, dir->dotdot,
dir->parent);
#endif
@@ -329,7 +330,7 @@ void e2fsck_free_dir_info(e2fsck_t ctx)
if (unlink(ctx->dir_info->tdb_fn) < 0)
com_err("e2fsck_free_dir_info", errno,
_("while freeing dir_info tdb file"));
- free(ctx->dir_info->tdb_fn);
+ ext2fs_free_mem(&ctx->dir_info->tdb_fn);
}
#endif
if (ctx->dir_info->array)
@@ -412,7 +413,7 @@ struct dir_info *e2fsck_dir_info_iter(e2fsck_t ctx, struct dir_info_iter *iter)
return 0;
#ifdef DIRINFO_DEBUG
- printf("iter(%d, %d, %d)...", ctx->dir_info->array[iter->i].ino,
+ printf("iter(%u, %u, %u)...", ctx->dir_info->array[iter->i].ino,
ctx->dir_info->array[iter->i].dotdot,
ctx->dir_info->array[iter->i].parent);
#endif
diff --git a/e2fsck/dx_dirinfo.c b/e2fsck/dx_dirinfo.c
index c0b0e9a4..caca3e30 100644
--- a/e2fsck/dx_dirinfo.c
+++ b/e2fsck/dx_dirinfo.c
@@ -17,7 +17,7 @@ void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, struct ext2_inode *inode,
int num_blocks)
{
struct dx_dir_info *dir;
- int i, j;
+ ext2_ino_t i, j;
errcode_t retval;
unsigned long old_size;
@@ -41,7 +41,7 @@ void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, struct ext2_inode *inode,
&ctx->dx_dir_info);
if (retval) {
fprintf(stderr, "Couldn't reallocate dx_dir_info "
- "structure to %d entries\n",
+ "structure to %u entries\n",
ctx->dx_dir_info_size);
fatal_error(ctx, 0);
ctx->dx_dir_info_size -= 10;
@@ -73,11 +73,10 @@ void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, struct ext2_inode *inode,
dir->ino = ino;
dir->numblocks = num_blocks;
dir->hashversion = 0;
- dir->casefolded_hash = inode->i_flags & EXT4_CASEFOLD_FL;
+ dir->casefolded_hash = !!(inode->i_flags & EXT4_CASEFOLD_FL);
dir->dx_block = e2fsck_allocate_memory(ctx, num_blocks
* sizeof (struct dx_dirblock_info),
"dx_block info array");
-
}
/*
@@ -86,7 +85,7 @@ void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, struct ext2_inode *inode,
*/
struct dx_dir_info *e2fsck_get_dx_dir_info(e2fsck_t ctx, ext2_ino_t ino)
{
- int low, high, mid;
+ ext2_ino_t low, high, mid;
low = 0;
high = ctx->dx_dir_info_count-1;
@@ -98,7 +97,8 @@ struct dx_dir_info *e2fsck_get_dx_dir_info(e2fsck_t ctx, ext2_ino_t ino)
return &ctx->dx_dir_info[high];
while (low < high) {
- mid = (low+high)/2;
+ /* sum may overflow, but result will fit into mid again */
+ mid = (unsigned long long)(low + high) / 2;
if (mid == low || mid == high)
break;
if (ino == ctx->dx_dir_info[mid].ino)
@@ -116,8 +116,8 @@ struct dx_dir_info *e2fsck_get_dx_dir_info(e2fsck_t ctx, ext2_ino_t ino)
*/
void e2fsck_free_dx_dir_info(e2fsck_t ctx)
{
- int i;
struct dx_dir_info *dir;
+ ext2_ino_t i;
if (ctx->dx_dir_info) {
dir = ctx->dx_dir_info;
@@ -137,7 +137,7 @@ void e2fsck_free_dx_dir_info(e2fsck_t ctx)
/*
* Return the count of number of directories in the dx_dir_info structure
*/
-int e2fsck_get_num_dx_dirinfo(e2fsck_t ctx)
+ext2_ino_t e2fsck_get_num_dx_dirinfo(e2fsck_t ctx)
{
return ctx->dx_dir_info_count;
}
@@ -145,10 +145,10 @@ int e2fsck_get_num_dx_dirinfo(e2fsck_t ctx)
/*
* A simple interator function
*/
-struct dx_dir_info *e2fsck_dx_dir_info_iter(e2fsck_t ctx, int *control)
+struct dx_dir_info *e2fsck_dx_dir_info_iter(e2fsck_t ctx, ext2_ino_t *control)
{
if (*control >= ctx->dx_dir_info_count)
return 0;
- return(ctx->dx_dir_info + (*control)++);
+ return ctx->dx_dir_info + (*control)++;
}
diff --git a/e2fsck/e2fsck.8.in b/e2fsck/e2fsck.8.in
index 4e3890b2..019a34ec 100644
--- a/e2fsck/e2fsck.8.in
+++ b/e2fsck/e2fsck.8.in
@@ -267,6 +267,10 @@ Only fix damaged metadata; do not optimize htree directories or compress
extent trees. This option is incompatible with the -D and -E bmap2extent
options.
.TP
+.BI check_encoding
+Force verification of encoded filenames in case-insensitive directories.
+This is the default mode if the filesystem has the strict flag enabled.
+.TP
.BI unshare_blocks
If the filesystem has shared blocks, with the shared blocks read-only feature
enabled, then this will unshare all shared blocks and unset the read-only
diff --git a/e2fsck/e2fsck.c b/e2fsck/e2fsck.c
index 6bf68197..1e295e3e 100644
--- a/e2fsck/e2fsck.c
+++ b/e2fsck/e2fsck.c
@@ -75,6 +75,10 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
ext2fs_free_block_bitmap(ctx->block_found_map);
ctx->block_found_map = 0;
}
+ if (ctx->inode_casefold_map) {
+ ext2fs_free_block_bitmap(ctx->inode_casefold_map);
+ ctx->inode_casefold_map = 0;
+ }
if (ctx->inode_link_info) {
ext2fs_free_icount(ctx->inode_link_info);
ctx->inode_link_info = 0;
@@ -138,6 +142,7 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
ext2fs_u32_list_free(ctx->dirs_to_hash);
ctx->dirs_to_hash = 0;
}
+ destroy_encrypted_file_info(ctx);
/*
* Clear the array of invalid meta-data flags
@@ -154,10 +159,6 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
ext2fs_free_mem(&ctx->invalid_inode_table_flag);
ctx->invalid_inode_table_flag = 0;
}
- if (ctx->encrypted_dirs) {
- ext2fs_u32_list_free(ctx->encrypted_dirs);
- ctx->encrypted_dirs = 0;
- }
if (ctx->casefolded_dirs) {
ext2fs_u32_list_free(ctx->casefolded_dirs);
ctx->casefolded_dirs = 0;
@@ -185,6 +186,7 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx)
ctx->fs_fragmented = 0;
ctx->fs_fragmented_dir = 0;
ctx->large_files = 0;
+ ctx->large_dirs = 0;
for (i=0; i < MAX_EXTENT_DEPTH_COUNT; i++)
ctx->extent_depth_count[i] = 0;
diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h
index 18c08a16..15d043ee 100644
--- a/e2fsck/e2fsck.h
+++ b/e2fsck/e2fsck.h
@@ -68,6 +68,7 @@
#endif
#include "support/quotaio.h"
+#include "ext2fs/fast_commit.h"
/*
* Exit codes used by fsck-type programs
@@ -104,12 +105,12 @@ struct dir_info {
* directories which contain a hash tree index.
*/
struct dx_dir_info {
- ext2_ino_t ino; /* Inode number */
- int numblocks; /* number of blocks */
- int hashversion;
- short depth; /* depth of tree */
- struct dx_dirblock_info *dx_block; /* Array of size numblocks */
- int casefolded_hash;
+ ext2_ino_t ino; /* Inode number */
+ short depth; /* depth of tree (15 bits) */
+ __u8 hashversion;
+ __u8 casefolded_hash:1;
+ blk_t numblocks; /* number of blocks in dir */
+ struct dx_dirblock_info *dx_block; /* Array of size numblocks */
};
#define DX_DIRBLOCK_ROOT 1
@@ -120,8 +121,8 @@ struct dx_dir_info {
struct dx_dirblock_info {
int type;
- blk64_t phys;
int flags;
+ blk64_t phys;
blk64_t parent;
blk64_t previous;
ext2_dirhash_t min_hash;
@@ -135,6 +136,8 @@ struct dx_dirblock_info {
#define DX_FLAG_FIRST 4
#define DX_FLAG_LAST 8
+struct encrypted_file_info;
+
#define RESOURCE_TRACK
#ifdef RESOURCE_TRACK
@@ -174,6 +177,8 @@ struct resource_track {
#define E2F_OPT_NOOPT_EXTENTS 0x10000 /* don't optimize extents */
#define E2F_OPT_ICOUNT_FULLMAP 0x20000 /* use an array for inode counts */
#define E2F_OPT_UNSHARE_BLOCKS 0x40000
+#define E2F_OPT_CLEAR_UNINIT 0x80000 /* Hack to clear the uninit bit */
+#define E2F_OPT_CHECK_ENCODING 0x100000 /* Force verification of encoded filenames */
/*
* E2fsck flags
@@ -223,6 +228,31 @@ typedef struct e2fsck_struct *e2fsck_t;
#define MAX_EXTENT_DEPTH_COUNT 5
+/*
+ * This strucutre is used to manage the list of extents in a file. Placing
+ * it here since this is used by fast_commit.h.
+ */
+struct extent_list {
+ blk64_t blocks_freed;
+ struct ext2fs_extent *extents;
+ unsigned int count;
+ unsigned int size;
+ unsigned int ext_read;
+ errcode_t retval;
+ ext2_ino_t ino;
+};
+
+/* State structure for fast commit replay */
+struct e2fsck_fc_replay_state {
+ struct extent_list fc_extent_list;
+ int fc_replay_num_tags;
+ int fc_replay_expected_off;
+ int fc_current_pass;
+ int fc_cur_tag;
+ int fc_crc;
+ __u16 fc_super_state;
+};
+
struct e2fsck_struct {
ext2_filsys fs;
const char *program_name;
@@ -235,12 +265,12 @@ struct e2fsck_struct {
char *problem_log_fn;
int flags; /* E2fsck internal flags */
int options;
- int blocksize; /* blocksize */
+ unsigned blocksize; /* blocksize */
blk64_t use_superblock; /* sb requested by user */
blk64_t superblock; /* sb used to open fs */
blk64_t num_blocks; /* Total number of blocks */
- blk64_t free_blocks;
- ino_t free_inodes;
+ blk64_t free_blocks;
+ ext2_ino_t free_inodes;
int mount_flags;
int openfs_flags;
blkid_cache blkid; /* blkid cache */
@@ -259,6 +289,7 @@ struct e2fsck_struct {
ext2fs_inode_bitmap inode_bb_map; /* Inodes which are in bad blocks */
ext2fs_inode_bitmap inode_imagic_map; /* AFS inodes */
ext2fs_inode_bitmap inode_reg_map; /* Inodes which are regular files*/
+ ext2fs_inode_bitmap inode_casefold_map; /* Inodes which are casefolded */
ext2fs_block_bitmap block_found_map; /* Blocks which are in use */
ext2fs_block_bitmap block_dup_map; /* Blks referenced more than once */
@@ -318,9 +349,9 @@ struct e2fsck_struct {
/*
* Indexed directory information
*/
- int dx_dir_info_count;
- int dx_dir_info_size;
- struct dx_dir_info *dx_dir_info;
+ ext2_ino_t dx_dir_info_count;
+ ext2_ino_t dx_dir_info_size;
+ struct dx_dir_info *dx_dir_info;
/*
* Directories to hash
@@ -328,6 +359,11 @@ struct e2fsck_struct {
ext2_u32_list dirs_to_hash;
/*
+ * Encrypted file information
+ */
+ struct encrypted_file_info *encrypted_files;
+
+ /*
* Tuning parameters
*/
int process_inode_size;
@@ -379,6 +415,7 @@ struct e2fsck_struct {
__u32 fs_fragmented;
__u32 fs_fragmented_dir;
__u32 large_files;
+ __u32 large_dirs;
__u32 fs_ext_attr_inodes;
__u32 fs_ext_attr_blocks;
__u32 extent_depth_count[MAX_EXTENT_DEPTH_COUNT];
@@ -389,7 +426,6 @@ struct e2fsck_struct {
int ext_attr_ver;
profile_t profile;
int blocks_per_page;
- ext2_u32_list encrypted_dirs;
ext2_u32_list casefolded_dirs;
/* Reserve blocks for root and l+f re-creation */
@@ -412,6 +448,9 @@ struct e2fsck_struct {
/* Undo file */
char *undo_file;
+
+ /* Fast commit replay state */
+ struct e2fsck_fc_replay_state fc_replay_state;
};
/* Data structures to evaluate whether an extent tree needs rebuilding. */
@@ -479,8 +518,9 @@ extern void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino,
struct ext2_inode *inode, int num_blocks);
extern struct dx_dir_info *e2fsck_get_dx_dir_info(e2fsck_t ctx, ext2_ino_t ino);
extern void e2fsck_free_dx_dir_info(e2fsck_t ctx);
-extern int e2fsck_get_num_dx_dirinfo(e2fsck_t ctx);
-extern struct dx_dir_info *e2fsck_dx_dir_info_iter(e2fsck_t ctx, int *control);
+extern ext2_ino_t e2fsck_get_num_dx_dirinfo(e2fsck_t ctx);
+extern struct dx_dir_info *e2fsck_dx_dir_info_iter(e2fsck_t ctx,
+ ext2_ino_t *control);
/* ea_refcount.c */
typedef __u64 ea_key_t;
@@ -505,8 +545,20 @@ extern ea_key_t ea_refcount_intr_next(ext2_refcount_t refcount,
extern const char *ehandler_operation(const char *op);
extern void ehandler_init(io_channel channel);
-/* extents.c */
+/* encrypted_files.c */
+
struct problem_context;
+int add_encrypted_file(e2fsck_t ctx, struct problem_context *pctx);
+
+#define NO_ENCRYPTION_POLICY ((__u32)-1)
+#define CORRUPT_ENCRYPTION_POLICY ((__u32)-2)
+#define UNRECOGNIZED_ENCRYPTION_POLICY ((__u32)-3)
+__u32 find_encryption_policy(e2fsck_t ctx, ext2_ino_t ino);
+
+void destroy_encryption_policy_map(e2fsck_t ctx);
+void destroy_encrypted_file_info(e2fsck_t ctx);
+
+/* extents.c */
errcode_t e2fsck_rebuild_extents_later(e2fsck_t ctx, ext2_ino_t ino);
int e2fsck_ino_will_be_rebuilt(e2fsck_t ctx, ext2_ino_t ino);
void e2fsck_pass1e(e2fsck_t ctx);
@@ -517,6 +569,9 @@ errcode_t e2fsck_should_rebuild_extents(e2fsck_t ctx,
struct problem_context *pctx,
struct extent_tree_info *eti,
struct ext2_extent_info *info);
+errcode_t e2fsck_read_extents(e2fsck_t ctx, struct extent_list *extents);
+errcode_t e2fsck_rewrite_extent_tree(e2fsck_t ctx,
+ struct extent_list *extents);
/* journal.c */
extern errcode_t e2fsck_check_ext3_journal(e2fsck_t ctx);
@@ -596,7 +651,7 @@ int check_backup_super_block(e2fsck_t ctx);
void check_resize_inode(e2fsck_t ctx);
/* util.c */
-extern void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size,
+extern void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned long size,
const char *description);
extern int ask(e2fsck_t ctx, const char * string, int def);
extern int ask_yn(e2fsck_t ctx, const char * string, int def);
@@ -608,7 +663,7 @@ extern void log_err(e2fsck_t ctx, const char *fmt, ...)
extern void e2fsck_read_bitmaps(e2fsck_t ctx);
extern void e2fsck_write_bitmaps(e2fsck_t ctx);
extern void preenhalt(e2fsck_t ctx);
-extern char *string_copy(e2fsck_t ctx, const char *str, int len);
+extern char *string_copy(e2fsck_t ctx, const char *str, size_t len);
extern int fs_proc_check(const char *fs_name);
extern int check_for_modules(const char *fs_name);
#ifdef RESOURCE_TRACK
diff --git a/e2fsck/ea_refcount.c b/e2fsck/ea_refcount.c
index ecb19864..7154b47c 100644
--- a/e2fsck/ea_refcount.c
+++ b/e2fsck/ea_refcount.c
@@ -53,10 +53,9 @@ errcode_t ea_refcount_create(size_t size, ext2_refcount_t *ret)
errcode_t retval;
size_t bytes;
- retval = ext2fs_get_mem(sizeof(struct ea_refcount), &refcount);
+ retval = ext2fs_get_memzero(sizeof(struct ea_refcount), &refcount);
if (retval)
return retval;
- memset(refcount, 0, sizeof(struct ea_refcount));
if (!size)
size = 500;
@@ -66,10 +65,9 @@ errcode_t ea_refcount_create(size_t size, ext2_refcount_t *ret)
printf("Refcount allocated %zu entries, %zu bytes.\n",
refcount->size, bytes);
#endif
- retval = ext2fs_get_mem(bytes, &refcount->list);
+ retval = ext2fs_get_memzero(bytes, &refcount->list);
if (retval)
goto errout;
- memset(refcount->list, 0, bytes);
refcount->count = 0;
refcount->cursor = 0;
@@ -315,8 +313,10 @@ errcode_t ea_refcount_validate(ext2_refcount_t refcount, FILE *out)
if (refcount->list[i-1].ea_key >= refcount->list[i].ea_key) {
fprintf(out,
"%s: list[%d].ea_key=%llu, list[%d].ea_key=%llu\n",
- bad, i-1, refcount->list[i-1].ea_key, i,
- refcount->list[i].ea_key);
+ bad, i-1,
+ (unsigned long long) refcount->list[i-1].ea_key,
+ i,
+ (unsigned long long) refcount->list[i].ea_key);
ret = EXT2_ET_INVALID_ARGUMENT;
}
}
@@ -401,22 +401,26 @@ int main(int argc, char **argv)
case BCODE_STORE:
ea_key = (size_t) bcode_program[i++];
arg = bcode_program[i++];
- printf("Storing ea_key %llu with value %llu\n", ea_key,
- arg);
+ printf("Storing ea_key %llu with value %llu\n",
+ (unsigned long long) ea_key,
+ (unsigned long long) arg);
retval = ea_refcount_store(refcount, ea_key, arg);
if (retval)
com_err("ea_refcount_store", retval,
- "while storing ea_key %llu", ea_key);
+ "while storing ea_key %llu",
+ (unsigned long long) ea_key);
break;
case BCODE_FETCH:
ea_key = (size_t) bcode_program[i++];
retval = ea_refcount_fetch(refcount, ea_key, &arg);
if (retval)
com_err("ea_refcount_fetch", retval,
- "while fetching ea_key %llu", ea_key);
+ "while fetching ea_key %llu",
+ (unsigned long long) ea_key);
else
printf("bcode_fetch(%llu) returns %llu\n",
- ea_key, arg);
+ (unsigned long long) ea_key,
+ (unsigned long long) arg);
break;
case BCODE_INCR:
ea_key = (size_t) bcode_program[i++];
@@ -424,10 +428,11 @@ int main(int argc, char **argv)
if (retval)
com_err("ea_refcount_increment", retval,
"while incrementing ea_key %llu",
- ea_key);
+ (unsigned long long) ea_key);
else
printf("bcode_increment(%llu) returns %llu\n",
- ea_key, arg);
+ (unsigned long long) ea_key,
+ (unsigned long long) arg);
break;
case BCODE_DECR:
ea_key = (size_t) bcode_program[i++];
@@ -435,10 +440,11 @@ int main(int argc, char **argv)
if (retval)
com_err("ea_refcount_decrement", retval,
"while decrementing ea_key %llu",
- ea_key);
+ (unsigned long long) ea_key);
else
printf("bcode_decrement(%llu) returns %llu\n",
- ea_key, arg);
+ (unsigned long long) ea_key,
+ (unsigned long long) arg);
break;
case BCODE_VALIDATE:
retval = ea_refcount_validate(refcount, stderr);
@@ -454,8 +460,9 @@ int main(int argc, char **argv)
ea_key = ea_refcount_intr_next(refcount, &arg);
if (!ea_key)
break;
- printf("\tea_key=%llu, count=%llu\n", ea_key,
- arg);
+ printf("\tea_key=%llu, count=%llu\n",
+ (unsigned long long) ea_key,
+ (unsigned long long) arg);
}
break;
case BCODE_COLLAPSE:
diff --git a/e2fsck/emptydir.c b/e2fsck/emptydir.c
index a3bfd46f..7aea7b6f 100644
--- a/e2fsck/emptydir.c
+++ b/e2fsck/emptydir.c
@@ -44,12 +44,11 @@ empty_dir_info init_empty_dir(e2fsck_t ctx)
empty_dir_info edi;
errcode_t retval;
- edi = malloc(sizeof(struct empty_dir_info_struct));
- if (!edi)
+ edi = e2fsck_allocate_memzero(ctx, sizeof(struct empty_dir_info_struct),
+ "empty dir info");
+ if (retval)
return NULL;
- memset(edi, 0, sizeof(struct empty_dir_info_struct));
-
retval = ext2fs_init_dblist(ctx->fs, &edi->empty_dblist);
if (retval)
goto errout;
@@ -83,7 +82,7 @@ void free_empty_dirblock(empty_dir_info edi)
ext2fs_free_inode_bitmap(edi->dir_map);
memset(edi, 0, sizeof(struct empty_dir_info_struct));
- free(edi);
+ ext2fs_free_mem(&edi);
}
void add_empty_dirblock(empty_dir_info edi,
@@ -182,13 +181,14 @@ void process_empty_dirblock(e2fsck_t ctx, empty_dir_info edi)
if (!edi)
return;
- edi->block_buf = malloc(ctx->fs->blocksize * 3);
+ retval = ext2f_get_mem(ctx, ctx->fs->blocksize * 3,
+ &edi->block_buf);
if (edi->block_buf) {
(void) ext2fs_dblist_iterate2(edi->empty_dblist,
fix_directory, &edi);
}
- free(edi->block_buf);
+ ext2fs_free_mem(&edi->block_buf);
free_empty_dirblock(edi);
}
diff --git a/e2fsck/encrypted_files.c b/e2fsck/encrypted_files.c
new file mode 100644
index 00000000..16be2d6d
--- /dev/null
+++ b/e2fsck/encrypted_files.c
@@ -0,0 +1,458 @@
+/*
+ * encrypted_files.c --- save information about encrypted files
+ *
+ * Copyright 2019 Google LLC
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Public
+ * License.
+ * %End-Header%
+ */
+
+/*
+ * e2fsck pass 1 (inode table scan) creates a map from inode number to
+ * encryption policy for all encrypted inodes. But it's optimized so that the
+ * full xattrs aren't saved but rather only 32-bit "policy IDs", since usually
+ * many inodes share the same encryption policy. This requires also maintaining
+ * a second map, from policy to policy ID. See add_encrypted_file().
+ *
+ * We also use run-length encoding to save memory when many adjacent inodes
+ * share the same encryption policy, which is often the case too.
+ *
+ * e2fsck pass 2 (directory structure check) uses the inode => policy ID map to
+ * verify that all regular files, directories, and symlinks in encrypted
+ * directories use the directory's encryption policy.
+ */
+
+#include "config.h"
+
+#include "e2fsck.h"
+#include "problem.h"
+#include "ext2fs/rbtree.h"
+
+#define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
+#define FSCRYPT_KEY_IDENTIFIER_SIZE 16
+#define FS_KEY_DERIVATION_NONCE_SIZE 16
+
+struct fscrypt_context_v1 {
+ __u8 version;
+ __u8 contents_encryption_mode;
+ __u8 filenames_encryption_mode;
+ __u8 flags;
+ __u8 master_key_descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
+ __u8 nonce[FS_KEY_DERIVATION_NONCE_SIZE];
+};
+
+struct fscrypt_context_v2 {
+ __u8 version;
+ __u8 contents_encryption_mode;
+ __u8 filenames_encryption_mode;
+ __u8 flags;
+ __u8 __reserved[4];
+ __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ __u8 nonce[FS_KEY_DERIVATION_NONCE_SIZE];
+};
+
+/* On-disk format of encryption xattr */
+union fscrypt_context {
+ __u8 version;
+ struct fscrypt_context_v1 v1;
+ struct fscrypt_context_v2 v2;
+};
+
+struct fscrypt_policy_v1 {
+ __u8 version;
+ __u8 contents_encryption_mode;
+ __u8 filenames_encryption_mode;
+ __u8 flags;
+ __u8 master_key_descriptor[FSCRYPT_KEY_DESCRIPTOR_SIZE];
+};
+
+struct fscrypt_policy_v2 {
+ __u8 version;
+ __u8 contents_encryption_mode;
+ __u8 filenames_encryption_mode;
+ __u8 flags;
+ __u8 __reserved[4];
+ __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
+};
+
+/* The encryption "policy" is the fscrypt_context excluding the nonce. */
+union fscrypt_policy {
+ __u8 version;
+ struct fscrypt_policy_v1 v1;
+ struct fscrypt_policy_v2 v2;
+};
+
+/* A range of inodes which share the same encryption policy */
+struct encrypted_file_range {
+ ext2_ino_t first_ino;
+ ext2_ino_t last_ino;
+ __u32 policy_id;
+};
+
+/* Information about the encrypted files which have been seen so far */
+struct encrypted_file_info {
+ /*
+ * Map from inode number to encryption policy ID, implemented as a
+ * sorted array of inode ranges, each of which shares the same policy.
+ * Inodes are added in order of increasing inode number.
+ *
+ * Freed after pass 2.
+ */
+ struct encrypted_file_range *file_ranges;
+ size_t file_ranges_count;
+ size_t file_ranges_capacity;
+
+ /*
+ * Map from encryption policy to encryption policy ID, for the unique
+ * encryption policies that have been seen so far. next_policy_id is
+ * the next available ID, starting at 0.
+ *
+ * Freed after pass 1.
+ */
+ struct rb_root policies;
+ __u32 next_policy_id;
+};
+
+/* Entry in encrypted_file_info::policies */
+struct policy_map_entry {
+ union fscrypt_policy policy;
+ __u32 policy_id;
+ struct rb_node node;
+};
+
+static int cmp_fscrypt_policies(e2fsck_t ctx, const union fscrypt_policy *a,
+ const union fscrypt_policy *b)
+{
+ if (a->version != b->version)
+ return (int)a->version - (int)b->version;
+
+ switch (a->version) {
+ case 1:
+ return memcmp(a, b, sizeof(a->v1));
+ case 2:
+ return memcmp(a, b, sizeof(a->v2));
+ }
+ fatal_error(ctx, "Unhandled encryption policy version");
+ return 0;
+}
+
+/* Read an inode's encryption xattr. */
+static errcode_t read_encryption_xattr(e2fsck_t ctx, ext2_ino_t ino,
+ void **value, size_t *value_len)
+{
+ struct ext2_xattr_handle *h;
+ errcode_t retval;
+
+ retval = ext2fs_xattrs_open(ctx->fs, ino, &h);
+ if (retval)
+ return retval;
+
+ retval = ext2fs_xattrs_read(h);
+ if (retval == 0)
+ retval = ext2fs_xattr_get(h, "c", value, value_len);
+
+ ext2fs_xattrs_close(&h);
+ return retval;
+}
+
+/*
+ * Convert an fscrypt_context to an fscrypt_policy. Returns 0,
+ * CORRUPT_ENCRYPTION_POLICY, or UNRECOGNIZED_ENCRYPTION_POLICY.
+ */
+static __u32 fscrypt_context_to_policy(const void *xattr, size_t xattr_size,
+ union fscrypt_policy *policy_u)
+{
+ const union fscrypt_context *ctx_u = xattr;
+
+ if (xattr_size < 1)
+ return CORRUPT_ENCRYPTION_POLICY;
+ switch (ctx_u->version) {
+ case 0:
+ return CORRUPT_ENCRYPTION_POLICY;
+ case 1: {
+ struct fscrypt_policy_v1 *policy = &policy_u->v1;
+ const struct fscrypt_context_v1 *ctx = &ctx_u->v1;
+
+ if (xattr_size != sizeof(*ctx))
+ return CORRUPT_ENCRYPTION_POLICY;
+ policy->version = ctx->version;
+ policy->contents_encryption_mode =
+ ctx->contents_encryption_mode;
+ policy->filenames_encryption_mode =
+ ctx->filenames_encryption_mode;
+ policy->flags = ctx->flags;
+ memcpy(policy->master_key_descriptor,
+ ctx->master_key_descriptor,
+ sizeof(policy->master_key_descriptor));
+ return 0;
+ }
+ case 2: {
+ struct fscrypt_policy_v2 *policy = &policy_u->v2;
+ const struct fscrypt_context_v2 *ctx = &ctx_u->v2;
+
+ if (xattr_size != sizeof(*ctx))
+ return CORRUPT_ENCRYPTION_POLICY;
+ policy->version = ctx->version;
+ policy->contents_encryption_mode =
+ ctx->contents_encryption_mode;
+ policy->filenames_encryption_mode =
+ ctx->filenames_encryption_mode;
+ policy->flags = ctx->flags;
+ memcpy(policy->__reserved, ctx->__reserved,
+ sizeof(policy->__reserved));
+ memcpy(policy->master_key_identifier,
+ ctx->master_key_identifier,
+ sizeof(policy->master_key_identifier));
+ return 0;
+ }
+ }
+ return UNRECOGNIZED_ENCRYPTION_POLICY;
+}
+
+/*
+ * Read an inode's encryption xattr and get/allocate its encryption policy ID,
+ * or alternatively use one of the special IDs NO_ENCRYPTION_POLICY,
+ * CORRUPT_ENCRYPTION_POLICY, or UNRECOGNIZED_ENCRYPTION_POLICY.
+ *
+ * Returns nonzero only if out of memory.
+ */
+static errcode_t get_encryption_policy_id(e2fsck_t ctx, ext2_ino_t ino,
+ __u32 *policy_id_ret)
+{
+ struct encrypted_file_info *info = ctx->encrypted_files;
+ struct rb_node **new = &info->policies.rb_node;
+ struct rb_node *parent = NULL;
+ void *xattr;
+ size_t xattr_size;
+ union fscrypt_policy policy;
+ __u32 policy_id;
+ struct policy_map_entry *entry;
+ errcode_t retval;
+
+ retval = read_encryption_xattr(ctx, ino, &xattr, &xattr_size);
+ if (retval == EXT2_ET_NO_MEMORY)
+ return retval;
+ if (retval) {
+ *policy_id_ret = NO_ENCRYPTION_POLICY;
+ return 0;
+ }
+
+ /* Translate the xattr to an fscrypt_policy, if possible. */
+ policy_id = fscrypt_context_to_policy(xattr, xattr_size, &policy);
+ ext2fs_free_mem(&xattr);
+ if (policy_id != 0)
+ goto out;
+
+ /* Check if the policy was already seen. */
+ while (*new) {
+ int res;
+
+ parent = *new;
+ entry = ext2fs_rb_entry(parent, struct policy_map_entry, node);
+ res = cmp_fscrypt_policies(ctx, &policy, &entry->policy);
+ if (res < 0) {
+ new = &parent->rb_left;
+ } else if (res > 0) {
+ new = &parent->rb_right;
+ } else {
+ /* Policy already seen. Use existing ID. */
+ policy_id = entry->policy_id;
+ goto out;
+ }
+ }
+
+ /* First time seeing this policy. Allocate a new policy ID. */
+ retval = ext2fs_get_mem(sizeof(*entry), &entry);
+ if (retval)
+ goto out;
+ policy_id = info->next_policy_id++;
+ entry->policy_id = policy_id;
+ entry->policy = policy;
+ ext2fs_rb_link_node(&entry->node, parent, new);
+ ext2fs_rb_insert_color(&entry->node, &info->policies);
+out:
+ *policy_id_ret = policy_id;
+ return retval;
+}
+
+static int handle_nomem(e2fsck_t ctx, struct problem_context *pctx,
+ size_t size_needed)
+{
+ pctx->num = size_needed;
+ fix_problem(ctx, PR_1_ALLOCATE_ENCRYPTED_INODE_LIST, pctx);
+ /* Should never get here */
+ ctx->flags |= E2F_FLAG_ABORT;
+ return 0;
+}
+
+static int append_ino_and_policy_id(e2fsck_t ctx, struct problem_context *pctx,
+ ext2_ino_t ino, __u32 policy_id)
+{
+ struct encrypted_file_info *info = ctx->encrypted_files;
+ struct encrypted_file_range *range;
+
+ /* See if we can just extend the last range. */
+ if (info->file_ranges_count > 0) {
+ range = &info->file_ranges[info->file_ranges_count - 1];
+
+ if (ino <= range->last_ino) {
+ /* Should never get here */
+ fatal_error(ctx,
+ "Encrypted inodes processed out of order");
+ }
+
+ if (ino == range->last_ino + 1 &&
+ policy_id == range->policy_id) {
+ range->last_ino++;
+ return 0;
+ }
+ }
+ /* Nope, a new range is needed. */
+
+ if (info->file_ranges_count == info->file_ranges_capacity) {
+ /* Double the capacity by default. */
+ size_t new_capacity = info->file_ranges_capacity * 2;
+
+ /* ... but go from 0 to 128 right away. */
+ if (new_capacity < 128)
+ new_capacity = 128;
+
+ /* We won't need more than the filesystem's inode count. */
+ if (new_capacity > ctx->fs->super->s_inodes_count)
+ new_capacity = ctx->fs->super->s_inodes_count;
+
+ /* To be safe, ensure the capacity really increases. */
+ if (new_capacity < info->file_ranges_capacity + 1)
+ new_capacity = info->file_ranges_capacity + 1;
+
+ if (ext2fs_resize_mem(info->file_ranges_capacity *
+ sizeof(*range),
+ new_capacity * sizeof(*range),
+ &info->file_ranges) != 0)
+ return handle_nomem(ctx, pctx,
+ new_capacity * sizeof(*range));
+
+ info->file_ranges_capacity = new_capacity;
+ }
+ range = &info->file_ranges[info->file_ranges_count++];
+ range->first_ino = ino;
+ range->last_ino = ino;
+ range->policy_id = policy_id;
+ return 0;
+}
+
+/*
+ * Handle an inode that has EXT4_ENCRYPT_FL set during pass 1. Normally this
+ * just finds the unique ID that identifies the inode's encryption policy
+ * (allocating a new ID if needed), and adds the inode number and its policy ID
+ * to the encrypted_file_info so that it's available in pass 2.
+ *
+ * But this also handles:
+ * - If the inode doesn't have an encryption xattr at all, offer to clear the
+ * encrypt flag.
+ * - If the encryption xattr is clearly corrupt, tell the caller that the whole
+ * inode should be cleared.
+ * - To be future-proof: if the encryption xattr has an unrecognized version
+ * number, it *might* be valid, so we don't consider it invalid. But we can't
+ * do much with it, so give all such policies the same ID,
+ * UNRECOGNIZED_ENCRYPTION_POLICY.
+ *
+ * Returns -1 if the inode should be cleared, otherwise 0.
+ */
+int add_encrypted_file(e2fsck_t ctx, struct problem_context *pctx)
+{
+ struct encrypted_file_info *info = ctx->encrypted_files;
+ ext2_ino_t ino = pctx->ino;
+ __u32 policy_id;
+
+ /* Allocate the encrypted_file_info if needed. */
+ if (info == NULL) {
+ if (ext2fs_get_memzero(sizeof(*info), &info) != 0)
+ return handle_nomem(ctx, pctx, sizeof(*info));
+ ctx->encrypted_files = info;
+ }
+
+ /* Get a unique ID for this inode's encryption policy. */
+ if (get_encryption_policy_id(ctx, ino, &policy_id) != 0)
+ return handle_nomem(ctx, pctx, 0 /* unknown size */);
+ if (policy_id == NO_ENCRYPTION_POLICY) {
+ if (fix_problem(ctx, PR_1_MISSING_ENCRYPTION_XATTR, pctx)) {
+ pctx->inode->i_flags &= ~EXT4_ENCRYPT_FL;
+ e2fsck_write_inode(ctx, ino, pctx->inode, "pass1");
+ }
+ return 0;
+ } else if (policy_id == CORRUPT_ENCRYPTION_POLICY) {
+ if (fix_problem(ctx, PR_1_CORRUPT_ENCRYPTION_XATTR, pctx))
+ return -1;
+ return 0;
+ }
+
+ /* Store this ino => policy_id mapping in the encrypted_file_info. */
+ return append_ino_and_policy_id(ctx, pctx, ino, policy_id);
+}
+
+/*
+ * Find the ID of an inode's encryption policy, using the information saved
+ * earlier.
+ *
+ * If the inode is encrypted, returns the policy ID or
+ * UNRECOGNIZED_ENCRYPTION_POLICY. Else, returns NO_ENCRYPTION_POLICY.
+ */
+__u32 find_encryption_policy(e2fsck_t ctx, ext2_ino_t ino)
+{
+ const struct encrypted_file_info *info = ctx->encrypted_files;
+ size_t l, r;
+
+ if (info == NULL)
+ return NO_ENCRYPTION_POLICY;
+ l = 0;
+ r = info->file_ranges_count;
+ while (l < r) {
+ size_t m = l + (r - l) / 2;
+ const struct encrypted_file_range *range =
+ &info->file_ranges[m];
+
+ if (ino < range->first_ino)
+ r = m;
+ else if (ino > range->last_ino)
+ l = m + 1;
+ else
+ return range->policy_id;
+ }
+ return NO_ENCRYPTION_POLICY;
+}
+
+/* Destroy ctx->encrypted_files->policies */
+void destroy_encryption_policy_map(e2fsck_t ctx)
+{
+ struct encrypted_file_info *info = ctx->encrypted_files;
+
+ if (info) {
+ struct rb_root *policies = &info->policies;
+
+ while (!ext2fs_rb_empty_root(policies)) {
+ struct policy_map_entry *entry;
+
+ entry = ext2fs_rb_entry(policies->rb_node,
+ struct policy_map_entry, node);
+ ext2fs_rb_erase(&entry->node, policies);
+ ext2fs_free_mem(&entry);
+ }
+ info->next_policy_id = 0;
+ }
+}
+
+/* Destroy ctx->encrypted_files */
+void destroy_encrypted_file_info(e2fsck_t ctx)
+{
+ struct encrypted_file_info *info = ctx->encrypted_files;
+
+ if (info) {
+ destroy_encryption_policy_map(ctx);
+ ext2fs_free_mem(&info->file_ranges);
+ ext2fs_free_mem(&info);
+ ctx->encrypted_files = NULL;
+ }
+}
diff --git a/e2fsck/extend.c b/e2fsck/extend.c
index bdb62c3e..9d17e440 100644
--- a/e2fsck/extend.c
+++ b/e2fsck/extend.c
@@ -31,6 +31,7 @@ int main(int argc, char **argv)
int nblocks, blocksize;
int fd;
char *block;
+ errcode_t retval;
int ret;
if (argc != 4)
@@ -45,13 +46,12 @@ int main(int argc, char **argv)
exit(1);
}
- block = malloc(blocksize);
- if (block == 0) {
+ retval = ext2fs_get_memzero(blocksize, &block);
+ if (retval) {
fprintf(stderr, _("Couldn't allocate block buffer (size=%d)\n"),
blocksize);
exit(1);
}
- memset(block, 0, blocksize);
fd = open(filename, O_RDWR);
if (fd < 0) {
@@ -78,5 +78,6 @@ int main(int argc, char **argv)
perror("read");
exit(1);
}
- exit(0);
+ ext2fs_free_mem(&block);
+ return(0);
}
diff --git a/e2fsck/extents.c b/e2fsck/extents.c
index 3073725a..0274e053 100644
--- a/e2fsck/extents.c
+++ b/e2fsck/extents.c
@@ -58,16 +58,6 @@ int e2fsck_ino_will_be_rebuilt(e2fsck_t ctx, ext2_ino_t ino)
return ext2fs_test_inode_bitmap2(ctx->inodes_to_rebuild, ino);
}
-struct extent_list {
- blk64_t blocks_freed;
- struct ext2fs_extent *extents;
- unsigned int count;
- unsigned int size;
- unsigned int ext_read;
- errcode_t retval;
- ext2_ino_t ino;
-};
-
static errcode_t load_extents(e2fsck_t ctx, struct extent_list *list)
{
ext2_filsys fs = ctx->fs;
@@ -206,66 +196,40 @@ static int find_blocks(ext2_filsys fs, blk64_t *blocknr, e2_blkcnt_t blockcnt,
return 0;
}
-static errcode_t rebuild_extent_tree(e2fsck_t ctx, struct extent_list *list,
- ext2_ino_t ino)
+errcode_t rewrite_extent_replay(e2fsck_t ctx, struct extent_list *list,
+ struct ext2_inode_large *inode)
{
- struct ext2_inode_large inode;
errcode_t retval;
ext2_extent_handle_t handle;
unsigned int i, ext_written;
struct ext2fs_extent *ex, extent;
blk64_t start_val, delta;
- list->count = 0;
- list->blocks_freed = 0;
- list->ino = ino;
- list->ext_read = 0;
- e2fsck_read_inode_full(ctx, ino, EXT2_INODE(&inode), sizeof(inode),
- "rebuild_extents");
-
- /* Skip deleted inodes and inline data files */
- if (inode.i_links_count == 0 ||
- inode.i_flags & EXT4_INLINE_DATA_FL)
- return 0;
-
- /* Collect lblk->pblk mappings */
- if (inode.i_flags & EXT4_EXTENTS_FL) {
- retval = load_extents(ctx, list);
- if (retval)
- goto err;
- goto extents_loaded;
- }
-
- retval = ext2fs_block_iterate3(ctx->fs, ino, BLOCK_FLAG_READ_ONLY, 0,
- find_blocks, list);
- if (retval)
- goto err;
- if (list->retval) {
- retval = list->retval;
- goto err;
- }
-
-extents_loaded:
/* Reset extent tree */
- inode.i_flags &= ~EXT4_EXTENTS_FL;
- memset(inode.i_block, 0, sizeof(inode.i_block));
+ inode->i_flags &= ~EXT4_EXTENTS_FL;
+ memset(inode->i_block, 0, sizeof(inode->i_block));
/* Make a note of freed blocks */
- quota_data_sub(ctx->qctx, &inode, ino,
+ quota_data_sub(ctx->qctx, inode, list->ino,
list->blocks_freed * ctx->fs->blocksize);
- retval = ext2fs_iblk_sub_blocks(ctx->fs, EXT2_INODE(&inode),
+ retval = ext2fs_iblk_sub_blocks(ctx->fs, EXT2_INODE(inode),
list->blocks_freed);
if (retval)
- goto err;
+ return retval;
/* Now stuff extents into the file */
- retval = ext2fs_extent_open2(ctx->fs, ino, EXT2_INODE(&inode), &handle);
+ retval = ext2fs_extent_open2(ctx->fs, list->ino, EXT2_INODE(inode),
+ &handle);
if (retval)
- goto err;
+ return retval;
ext_written = 0;
- start_val = ext2fs_inode_i_blocks(ctx->fs, EXT2_INODE(&inode));
+
+ start_val = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(inode));
+
for (i = 0, ex = list->extents; i < list->count; i++, ex++) {
+ if (ex->e_len == 0)
+ continue;
memcpy(&extent, ex, sizeof(struct ext2fs_extent));
extent.e_flags &= EXT2_EXTENT_FLAGS_UNINIT;
if (extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT) {
@@ -289,45 +253,133 @@ extents_loaded:
}
#ifdef DEBUG
- printf("W: ino=%d pblk=%llu lblk=%llu len=%u\n", ino,
+ printf("W: ino=%d pblk=%llu lblk=%llu len=%u\n", list->ino,
extent.e_pblk, extent.e_lblk, extent.e_len);
#endif
retval = ext2fs_extent_insert(handle, EXT2_EXTENT_INSERT_AFTER,
&extent);
if (retval)
- goto err2;
+ goto err;
retval = ext2fs_extent_fix_parents(handle);
if (retval)
- goto err2;
+ goto err;
ext_written++;
}
- delta = ext2fs_inode_i_blocks(ctx->fs, EXT2_INODE(&inode)) - start_val;
- if (delta) {
- if (!ext2fs_has_feature_huge_file(ctx->fs->super) ||
- !(inode.i_flags & EXT4_HUGE_FILE_FL))
- delta <<= 9;
- else
- delta *= ctx->fs->blocksize;
- quota_data_add(ctx->qctx, &inode, ino, delta);
- }
+ delta = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(inode)) -
+ start_val;
+ if (delta)
+ quota_data_add(ctx->qctx, inode, list->ino, delta << 9);
#if defined(DEBUG) || defined(DEBUG_SUMMARY)
printf("rebuild: ino=%d extents=%d->%d\n", ino, list->ext_read,
ext_written);
#endif
- e2fsck_write_inode(ctx, ino, EXT2_INODE(&inode), "rebuild_extents");
+ e2fsck_write_inode(ctx, list->ino, EXT2_INODE(inode),
+ "rebuild_extents");
-err2:
- ext2fs_extent_free(handle);
err:
+ ext2fs_extent_free(handle);
+ return retval;
+}
+
+errcode_t e2fsck_rewrite_extent_tree(e2fsck_t ctx, struct extent_list *list)
+{
+ struct ext2_inode_large inode;
+ blk64_t blk_count;
+ errcode_t err;
+
+ memset(&inode, 0, sizeof(inode));
+ err = ext2fs_read_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
+ sizeof(inode));
+ if (err)
+ return err;
+
+ /* Skip deleted inodes and inline data files */
+ if (inode.i_flags & EXT4_INLINE_DATA_FL)
+ return 0;
+
+ err = rewrite_extent_replay(ctx, list, &inode);
+ if (err)
+ return err;
+
+ err = ext2fs_count_blocks(ctx->fs, list->ino, EXT2_INODE(&inode),
+ &blk_count);
+ if (err)
+ return err;
+ err = ext2fs_iblk_set(ctx->fs, EXT2_INODE(&inode), blk_count);
+ if (err)
+ return err;
+ return ext2fs_write_inode_full(ctx->fs, list->ino, EXT2_INODE(&inode),
+ sizeof(inode));
+}
+
+errcode_t e2fsck_read_extents(e2fsck_t ctx, struct extent_list *extents)
+{
+ struct ext2_inode_large inode;
+ errcode_t retval;
+
+ extents->extents = NULL;
+ extents->count = 0;
+ extents->blocks_freed = 0;
+ extents->ext_read = 0;
+ extents->size = NUM_EXTENTS;
+ retval = ext2fs_get_array(NUM_EXTENTS, sizeof(struct ext2fs_extent),
+ &extents->extents);
+ if (retval)
+ return ENOMEM;
+
+ retval = ext2fs_read_inode(ctx->fs, extents->ino, EXT2_INODE(&inode));
+ if (retval)
+ goto err_out;
+
+ retval = load_extents(ctx, extents);
+ if (!retval)
+ return 0;
+err_out:
+ ext2fs_free_mem(&extents->extents);
+ extents->size = 0;
+ extents->count = 0;
return retval;
}
+static errcode_t rebuild_extent_tree(e2fsck_t ctx, struct extent_list *list,
+ ext2_ino_t ino)
+{
+ struct ext2_inode_large inode;
+ errcode_t retval;
+
+ list->count = 0;
+ list->blocks_freed = 0;
+ list->ino = ino;
+ list->ext_read = 0;
+ e2fsck_read_inode_full(ctx, ino, EXT2_INODE(&inode), sizeof(inode),
+ "rebuild_extents");
+
+ /* Skip deleted inodes and inline data files */
+ if (inode.i_links_count == 0 ||
+ inode.i_flags & EXT4_INLINE_DATA_FL)
+ return 0;
+
+ /* Collect lblk->pblk mappings */
+ if (inode.i_flags & EXT4_EXTENTS_FL) {
+ retval = load_extents(ctx, list);
+ if (retval)
+ return retval;
+ return rewrite_extent_replay(ctx, list, &inode);
+ }
+
+ retval = ext2fs_block_iterate3(ctx->fs, ino, BLOCK_FLAG_READ_ONLY, 0,
+ find_blocks, list);
+
+ return retval || list->retval ||
+ rewrite_extent_replay(ctx, list, &inode);
+}
+
/* Rebuild the extents immediately */
static errcode_t e2fsck_rebuild_extents(e2fsck_t ctx, ext2_ino_t ino)
{
- struct extent_list list;
+ struct extent_list list = { 0 };
errcode_t err;
if (!ext2fs_has_feature_extents(ctx->fs->super) ||
@@ -336,9 +388,8 @@ static errcode_t e2fsck_rebuild_extents(e2fsck_t ctx, ext2_ino_t ino)
return 0;
e2fsck_read_bitmaps(ctx);
- memset(&list, 0, sizeof(list));
- err = ext2fs_get_mem(sizeof(struct ext2fs_extent) * NUM_EXTENTS,
- &list.extents);
+ err = ext2fs_get_array(NUM_EXTENTS, sizeof(struct ext2fs_extent),
+ &list.extents);
if (err)
return err;
list.size = NUM_EXTENTS;
@@ -354,7 +405,7 @@ static void rebuild_extents(e2fsck_t ctx, const char *pass_name, int pr_header)
#ifdef RESOURCE_TRACK
struct resource_track rtrack;
#endif
- struct extent_list list;
+ struct extent_list list = { 0 };
int first = 1;
ext2_ino_t ino = 0;
errcode_t retval;
@@ -374,10 +425,11 @@ static void rebuild_extents(e2fsck_t ctx, const char *pass_name, int pr_header)
clear_problem_context(&pctx);
e2fsck_read_bitmaps(ctx);
- memset(&list, 0, sizeof(list));
- retval = ext2fs_get_mem(sizeof(struct ext2fs_extent) * NUM_EXTENTS,
- &list.extents);
list.size = NUM_EXTENTS;
+ retval = ext2fs_get_array(sizeof(struct ext2fs_extent),
+ list.size, &list.extents);
+ if (retval)
+ return;
while (1) {
retval = ext2fs_find_first_set_inode_bitmap2(
ctx->inodes_to_rebuild, ino + 1,
diff --git a/e2fsck/iscan.c b/e2fsck/iscan.c
index 52cad11e..607e4752 100644
--- a/e2fsck/iscan.c
+++ b/e2fsck/iscan.c
@@ -20,11 +20,31 @@
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#if EXT2_FLAT_INCLUDES
+#include "ext2_fs.h"
+#include "ext2fs.h"
+#include "blkid.h"
+#else
+#include "ext2fs/ext2_fs.h"
+#include "ext2fs/ext2fs.h"
+#include "blkid/blkid.h"
+#endif
#include "et/com_err.h"
-#include "e2fsck.h"
#include "../version.h"
+struct resource_track {
+ struct timeval time_start;
+ struct timeval user_start;
+ struct timeval system_start;
+ void *brk_start;
+ unsigned long long bytes_read;
+ unsigned long long bytes_written;
+};
+
extern int isatty(int);
const char * program_name = "iscan";
@@ -38,10 +58,109 @@ int invalid_bitmaps = 0;
struct resource_track global_rtrack;
+void init_resource_track(struct resource_track *track, io_channel channel)
+{
+#ifdef HAVE_GETRUSAGE
+ struct rusage r;
+#endif
+ io_stats io_start = 0;
+
+ track->brk_start = sbrk(0);
+ gettimeofday(&track->time_start, 0);
+#ifdef HAVE_GETRUSAGE
+#ifdef sun
+ memset(&r, 0, sizeof(struct rusage));
+#endif
+ getrusage(RUSAGE_SELF, &r);
+ track->user_start = r.ru_utime;
+ track->system_start = r.ru_stime;
+#else
+ track->user_start.tv_sec = track->user_start.tv_usec = 0;
+ track->system_start.tv_sec = track->system_start.tv_usec = 0;
+#endif
+ track->bytes_read = 0;
+ track->bytes_written = 0;
+ if (channel && channel->manager && channel->manager->get_stats)
+ channel->manager->get_stats(channel, &io_start);
+ if (io_start) {
+ track->bytes_read = io_start->bytes_read;
+ track->bytes_written = io_start->bytes_written;
+ }
+}
+
+static float timeval_subtract(struct timeval *tv1,
+ struct timeval *tv2)
+{
+ return ((tv1->tv_sec - tv2->tv_sec) +
+ ((float) (tv1->tv_usec - tv2->tv_usec)) / 1000000);
+}
+
+void print_resource_track(const char *desc,
+ struct resource_track *track, io_channel channel)
+{
+#ifdef HAVE_GETRUSAGE
+ struct rusage r;
+#endif
+ struct timeval time_end;
+
+ gettimeofday(&time_end, 0);
+
+ if (desc)
+ printf("%s: ", desc);
+
+#define kbytes(x) (((unsigned long long)(x) + 1023) / 1024)
+#ifdef HAVE_MALLINFO
+ /* don't use mallinfo() if over 2GB used, since it returns "int" */
+ if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
+ struct mallinfo malloc_info = mallinfo();
+
+ printf("Memory used: %lluk/%lluk (%lluk/%lluk), ",
+ kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+ kbytes(malloc_info.uordblks),
+ kbytes(malloc_info.fordblks));
+ } else
+#endif
+ printf("Memory used: %lluk, ",
+ kbytes(((char *)sbrk(0)) - ((char *)track->brk_start)));
+
+#ifdef HAVE_GETRUSAGE
+ getrusage(RUSAGE_SELF, &r);
+
+ printf("time: %5.2f/%5.2f/%5.2f\n",
+ timeval_subtract(&time_end, &track->time_start),
+ timeval_subtract(&r.ru_utime, &track->user_start),
+ timeval_subtract(&r.ru_stime, &track->system_start));
+#else
+ printf("elapsed time: %6.3f\n",
+ timeval_subtract(&time_end, &track->time_start));
+#endif
+#define mbytes(x) (((x) + 1048575) / 1048576)
+ if (channel && channel->manager && channel->manager->get_stats) {
+ io_stats delta = 0;
+ unsigned long long bytes_read = 0;
+ unsigned long long bytes_written = 0;
+
+ if (desc)
+ printf("%s: ", desc);
+
+ channel->manager->get_stats(channel, &delta);
+ if (delta) {
+ bytes_read = delta->bytes_read - track->bytes_read;
+ bytes_written = delta->bytes_written -
+ track->bytes_written;
+ }
+ printf("I/O read: %lluMB, write: %lluMB, "
+ "rate: %.2fMB/s\n",
+ mbytes(bytes_read), mbytes(bytes_written),
+ (double)mbytes(bytes_read + bytes_written) /
+ timeval_subtract(&time_end, &track->time_start));
+ }
+}
+
static void usage(void)
{
fprintf(stderr,
- _("Usage: %s [-F] [-I inode_buffer_blocks] device\n"),
+ "Usage: %s [-F] [-I inode_buffer_blocks] device\n",
program_name);
exit(1);
}
@@ -78,13 +197,13 @@ static void PRS(int argc, char *argv[])
if (fd < 0) {
com_err("open", errno,
- _("while opening %s for flushing"), device_name);
- exit(FSCK_ERROR);
+ "while opening %s for flushing", device_name);
+ exit(1);
}
if ((retval = ext2fs_sync_device(fd, 1))) {
com_err("ext2fs_sync_device", retval,
- _("while trying to flush %s"), device_name);
- exit(FSCK_ERROR);
+ "while trying to flush %s", device_name);
+ exit(1);
}
close(fd);
}
@@ -93,30 +212,28 @@ static void PRS(int argc, char *argv[])
int main (int argc, char *argv[])
{
errcode_t retval = 0;
- int exit_value = FSCK_OK;
+ int exit_value = 0;
ext2_filsys fs;
ext2_ino_t ino;
__u32 num_inodes = 0;
struct ext2_inode inode;
ext2_inode_scan scan;
- init_resource_track(&global_rtrack);
-
PRS(argc, argv);
retval = ext2fs_open(device_name, 0,
0, 0, unix_io_manager, &fs);
if (retval) {
- com_err(program_name, retval, _("while trying to open '%s'"),
+ com_err(program_name, retval, "while trying to open '%s'",
device_name);
exit(1);
}
- ehandler_init(fs->io);
+ init_resource_track(&global_rtrack, fs->io);
retval = ext2fs_open_inode_scan(fs, inode_buffer_blocks, &scan);
if (retval) {
- com_err(program_name, retval, _("while opening inode scan"));
+ com_err(program_name, retval, "while opening inode scan");
exit(1);
}
@@ -124,7 +241,7 @@ int main (int argc, char *argv[])
retval = ext2fs_get_next_inode(scan, &ino, &inode);
if (retval) {
com_err(program_name, retval,
- _("while getting next inode"));
+ "while getting next inode");
exit(1);
}
if (ino == 0)
@@ -132,8 +249,8 @@ int main (int argc, char *argv[])
num_inodes++;
}
- print_resource_track(NULL, &global_rtrack);
- printf(_("%u inodes scanned.\n"), num_inodes);
+ print_resource_track(NULL, &global_rtrack, fs->io);
+ printf("%u inodes scanned.\n", num_inodes);
exit(0);
}
diff --git a/e2fsck/jfs_user.h b/e2fsck/jfs_user.h
index a1c6951c..6d24558b 100644
--- a/e2fsck/jfs_user.h
+++ b/e2fsck/jfs_user.h
@@ -51,7 +51,7 @@ struct buffer_head {
unsigned int b_dirty:1;
unsigned int b_uptodate:1;
unsigned long long b_blocknr;
- char b_data[1024];
+ char b_data[4096];
};
struct inode {
@@ -81,9 +81,9 @@ struct kdev_s {
#define buffer_req(bh) 1
#define do_readahead(journal, start) do {} while (0)
-typedef struct {
+typedef struct kmem_cache {
int object_length;
-} lkmem_cache_t;
+} kmem_cache_t;
#define kmem_cache_alloc(cache, flags) malloc((cache)->object_length)
#define kmem_cache_free(cache, obj) free(obj)
@@ -92,6 +92,14 @@ typedef struct {
#define kmalloc(len, flags) malloc(len)
#define kfree(p) free(p)
+static inline void *kmalloc_array(unsigned n, unsigned size,
+ int flags EXT2FS_ATTR((unused)))
+{
+ if (n && (~0U)/n < size)
+ return NULL;
+ return malloc(n * size);
+}
+
#define cond_resched() do { } while (0)
#define __init
@@ -106,8 +114,8 @@ typedef struct {
* functions.
*/
#ifdef NO_INLINE_FUNCS
-extern lkmem_cache_t *do_cache_create(int len);
-extern void do_cache_destroy(lkmem_cache_t *cache);
+extern kmem_cache_t *do_cache_create(int len);
+extern void do_cache_destroy(kmem_cache_t *cache);
extern size_t journal_tag_bytes(journal_t *journal);
extern __u32 __hash_32(__u32 val);
extern __u32 hash_32(__u32 val, unsigned int bits);
@@ -133,9 +141,9 @@ extern __u32 hash_64(__u64 val, unsigned int bits);
#endif /* __STDC_VERSION__ >= 199901L */
#endif /* E2FSCK_INCLUDE_INLINE_FUNCS */
-_INLINE_ lkmem_cache_t *do_cache_create(int len)
+_INLINE_ kmem_cache_t *do_cache_create(int len)
{
- lkmem_cache_t *new_cache;
+ kmem_cache_t *new_cache;
new_cache = malloc(sizeof(*new_cache));
if (new_cache)
@@ -143,7 +151,7 @@ _INLINE_ lkmem_cache_t *do_cache_create(int len)
return new_cache;
}
-_INLINE_ void do_cache_destroy(lkmem_cache_t *cache)
+_INLINE_ void do_cache_destroy(kmem_cache_t *cache)
{
free(cache);
}
@@ -180,10 +188,12 @@ _INLINE_ __u32 hash_64(__u64 val, unsigned int bits)
/*
* Kernel compatibility functions are defined in journal.c
*/
-int journal_bmap(journal_t *journal, blk64_t block, unsigned long long *phys);
-struct buffer_head *getblk(kdev_t ctx, blk64_t blocknr, int blocksize);
+int jbd2_journal_bmap(journal_t *journal, unsigned long block,
+ unsigned long long *phys);
+struct buffer_head *getblk(kdev_t ctx, unsigned long long blocknr,
+ int blocksize);
int sync_blockdev(kdev_t kdev);
-void ll_rw_block(int rw, int dummy, struct buffer_head *bh[]);
+void ll_rw_block(int rw, int op_flags, int nr, struct buffer_head *bh[]);
void mark_buffer_dirty(struct buffer_head *bh);
void mark_buffer_uptodate(struct buffer_head *bh, int val);
void brelse(struct buffer_head *bh);
@@ -202,7 +212,7 @@ void wait_on_buffer(struct buffer_head *bh);
#define J_ASSERT(x) assert(x)
#define JSB_HAS_INCOMPAT_FEATURE(jsb, mask) \
- ((jsb)->s_header.h_blocktype == ext2fs_cpu_to_be32(JFS_SUPERBLOCK_V2) && \
+ ((jsb)->s_header.h_blocktype == ext2fs_cpu_to_be32(JBD2_SUPERBLOCK_V2) && \
((jsb)->s_feature_incompat & ext2fs_cpu_to_be32((mask))))
#else /* !DEBUGFS */
@@ -225,18 +235,37 @@ extern e2fsck_t e2fsck_global_ctx; /* Try your very best not to use this! */
#define EFSCORRUPTED EXT2_ET_FILESYSTEM_CORRUPTED
#endif
+static inline void jbd2_descriptor_block_csum_set(journal_t *j,
+ struct buffer_head *bh)
+{
+ struct jbd2_journal_block_tail *tail;
+ __u32 csum;
+
+ if (!jbd2_journal_has_csum_v2or3(j))
+ return;
+
+ tail = (struct jbd2_journal_block_tail *)(bh->b_data + j->j_blocksize -
+ sizeof(struct jbd2_journal_block_tail));
+ tail->t_checksum = 0;
+ csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize);
+ tail->t_checksum = cpu_to_be32(csum);
+}
+
/* recovery.c */
-extern int journal_recover (journal_t *journal);
-extern int journal_skip_recovery (journal_t *);
+extern int jbd2_journal_recover (journal_t *journal);
+extern int jbd2_journal_skip_recovery (journal_t *);
/* revoke.c */
-extern int journal_init_revoke(journal_t *, int);
-extern void journal_destroy_revoke(journal_t *);
-extern void journal_destroy_revoke_caches(void);
-extern int journal_init_revoke_caches(void);
-
-extern int journal_set_revoke(journal_t *, unsigned long long, tid_t);
-extern int journal_test_revoke(journal_t *, unsigned long long, tid_t);
-extern void journal_clear_revoke(journal_t *);
+extern int jbd2_journal_init_revoke(journal_t *, int);
+extern void jbd2_journal_destroy_revoke(journal_t *);
+extern void jbd2_journal_destroy_revoke_record_cache(void);
+extern void jbd2_journal_destroy_revoke_table_cache(void);
+extern int jbd2_journal_init_revoke_record_cache(void);
+extern int jbd2_journal_init_revoke_table_cache(void);
+
+
+extern int jbd2_journal_set_revoke(journal_t *, unsigned long long, tid_t);
+extern int jbd2_journal_test_revoke(journal_t *, unsigned long long, tid_t);
+extern void jbd2_journal_clear_revoke(journal_t *);
#endif /* _JFS_USER_H */
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index e83f3a91..0aeaf416 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -27,9 +27,7 @@
#include "problem.h"
#include "uuid/uuid.h"
-#ifdef CONFIG_JBD_DEBUG /* Enabled by configure --enable-jfs-debug */
static int bh_count = 0;
-#endif
/*
* Define USE_INODE_IO to use the inode_io.c / fileio.c codepaths.
@@ -44,7 +42,7 @@ static int bh_count = 0;
static int e2fsck_journal_verify_csum_type(journal_t *j,
journal_superblock_t *jsb)
{
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
return jsb->s_checksum_type == JBD2_CRC32C_CHKSUM;
@@ -68,7 +66,7 @@ static int e2fsck_journal_sb_csum_verify(journal_t *j,
{
__u32 provided, calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
provided = ext2fs_be32_to_cpu(jsb->s_checksum);
@@ -82,7 +80,7 @@ static errcode_t e2fsck_journal_sb_csum_set(journal_t *j,
{
__u32 crc;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 0;
crc = e2fsck_journal_sb_csum(jsb);
@@ -94,7 +92,8 @@ static errcode_t e2fsck_journal_sb_csum_set(journal_t *j,
* to use the recovery.c file virtually unchanged from the kernel, so we
* don't have to do much to keep kernel and user recovery in sync.
*/
-int journal_bmap(journal_t *journal, blk64_t block, unsigned long long *phys)
+int jbd2_journal_bmap(journal_t *journal, unsigned long block,
+ unsigned long long *phys)
{
#ifdef USE_INODE_IO
*phys = block;
@@ -110,13 +109,15 @@ int journal_bmap(journal_t *journal, blk64_t block, unsigned long long *phys)
}
retval= ext2fs_bmap2(inode->i_ctx->fs, inode->i_ino,
- &inode->i_ext2, NULL, 0, block, 0, &pblk);
+ &inode->i_ext2, NULL, 0, (blk64_t) block,
+ 0, &pblk);
*phys = pblk;
return -1 * ((int) retval);
#endif
}
-struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize)
+struct buffer_head *getblk(kdev_t kdev, unsigned long long blocknr,
+ int blocksize)
{
struct buffer_head *bh;
int bufsize = sizeof(*bh) + kdev->k_ctx->fs->blocksize -
@@ -126,12 +127,10 @@ struct buffer_head *getblk(kdev_t kdev, blk64_t blocknr, int blocksize)
if (!bh)
return NULL;
-#ifdef CONFIG_JBD_DEBUG
if (journal_enable_debug >= 3)
bh_count++;
-#endif
jfs_debug(4, "getblk for block %llu (%d bytes)(total %d)\n",
- (unsigned long long) blocknr, blocksize, bh_count);
+ blocknr, blocksize, bh_count);
bh->b_ctx = kdev->k_ctx;
if (kdev->k_dev == K_DEV_FS)
@@ -156,14 +155,15 @@ int sync_blockdev(kdev_t kdev)
return io_channel_flush(io) ? -EIO : 0;
}
-void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
+void ll_rw_block(int rw, int op_flags EXT2FS_ATTR((unused)), int nr,
+ struct buffer_head *bhp[])
{
errcode_t retval;
struct buffer_head *bh;
for (; nr > 0; --nr) {
bh = *bhp++;
- if (rw == READ && !bh->b_uptodate) {
+ if (rw == REQ_OP_READ && !bh->b_uptodate) {
jfs_debug(3, "reading block %llu/%p\n",
bh->b_blocknr, (void *) bh);
retval = io_channel_read_blk64(bh->b_io,
@@ -177,7 +177,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
continue;
}
bh->b_uptodate = 1;
- } else if (rw == WRITE && bh->b_dirty) {
+ } else if (rw == REQ_OP_WRITE && bh->b_dirty) {
jfs_debug(3, "writing block %llu/%p\n",
bh->b_blocknr,
(void *) bh);
@@ -195,7 +195,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head *bhp[])
bh->b_uptodate = 1;
} else {
jfs_debug(3, "no-op %s for block %llu\n",
- rw == READ ? "read" : "write",
+ rw == REQ_OP_READ ? "read" : "write",
bh->b_blocknr);
}
}
@@ -214,7 +214,7 @@ static void mark_buffer_clean(struct buffer_head * bh)
void brelse(struct buffer_head *bh)
{
if (bh->b_dirty)
- ll_rw_block(WRITE, 1, &bh);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
jfs_debug(3, "freeing block %llu/%p (total %d)\n",
bh->b_blocknr, (void *) bh, --bh_count);
ext2fs_free_mem(&bh);
@@ -233,7 +233,7 @@ void mark_buffer_uptodate(struct buffer_head *bh, int val)
void wait_on_buffer(struct buffer_head *bh)
{
if (!bh->b_uptodate)
- ll_rw_block(READ, 1, &bh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &bh);
}
@@ -275,6 +275,660 @@ static int process_journal_block(ext2_filsys fs,
return 0;
}
+static int ext4_fc_replay_scan(journal_t *j, struct buffer_head *bh,
+ int off, tid_t expected_tid)
+{
+ e2fsck_t ctx = j->j_fs_dev->k_ctx;
+ struct e2fsck_fc_replay_state *state;
+ int ret = JBD2_FC_REPLAY_CONTINUE;
+ struct ext4_fc_add_range *ext;
+ struct ext4_fc_tl *tl;
+ struct ext4_fc_tail *tail;
+ __u8 *start, *end;
+ struct ext4_fc_head *head;
+ struct ext2fs_extent ext2fs_ex = {0};
+
+ state = &ctx->fc_replay_state;
+
+ start = (__u8 *)bh->b_data;
+ end = (__u8 *)bh->b_data + j->j_blocksize - 1;
+
+ jbd_debug(1, "Scan phase starting, expected %d", expected_tid);
+ if (state->fc_replay_expected_off == 0) {
+ memset(state, 0, sizeof(*state));
+ /* Check if we can stop early */
+ if (le16_to_cpu(((struct ext4_fc_tl *)start)->fc_tag)
+ != EXT4_FC_TAG_HEAD) {
+ jbd_debug(1, "Ending early!, not a head tag");
+ return 0;
+ }
+ }
+
+ if (off != state->fc_replay_expected_off) {
+ ret = -EFSCORRUPTED;
+ goto out_err;
+ }
+
+ state->fc_replay_expected_off++;
+ fc_for_each_tl(start, end, tl) {
+ jbd_debug(3, "Scan phase, tag:%s, blk %lld\n",
+ tag2str(le16_to_cpu(tl->fc_tag)), bh->b_blocknr);
+ switch (le16_to_cpu(tl->fc_tag)) {
+ case EXT4_FC_TAG_ADD_RANGE:
+ ext = (struct ext4_fc_add_range *)ext4_fc_tag_val(tl);
+ ret = ext2fs_decode_extent(&ext2fs_ex, (void *)&ext->fc_ex,
+ sizeof(ext->fc_ex));
+ if (ret)
+ ret = JBD2_FC_REPLAY_STOP;
+ else
+ ret = JBD2_FC_REPLAY_CONTINUE;
+ /* fallthrough */
+ case EXT4_FC_TAG_DEL_RANGE:
+ case EXT4_FC_TAG_LINK:
+ case EXT4_FC_TAG_UNLINK:
+ case EXT4_FC_TAG_CREAT:
+ case EXT4_FC_TAG_INODE:
+ case EXT4_FC_TAG_PAD:
+ state->fc_cur_tag++;
+ state->fc_crc = jbd2_chksum(j, state->fc_crc, tl,
+ sizeof(*tl) + ext4_fc_tag_len(tl));
+ break;
+ case EXT4_FC_TAG_TAIL:
+ state->fc_cur_tag++;
+ tail = (struct ext4_fc_tail *)ext4_fc_tag_val(tl);
+ state->fc_crc = jbd2_chksum(j, state->fc_crc, tl,
+ sizeof(*tl) +
+ offsetof(struct ext4_fc_tail,
+ fc_crc));
+ jbd_debug(1, "tail tid %d, expected %d\n",
+ le32_to_cpu(tail->fc_tid),
+ expected_tid);
+ if (le32_to_cpu(tail->fc_tid) == expected_tid &&
+ le32_to_cpu(tail->fc_crc) == state->fc_crc) {
+ state->fc_replay_num_tags = state->fc_cur_tag;
+ } else {
+ ret = state->fc_replay_num_tags ?
+ JBD2_FC_REPLAY_STOP : -EFSBADCRC;
+ }
+ state->fc_crc = 0;
+ break;
+ case EXT4_FC_TAG_HEAD:
+ head = (struct ext4_fc_head *)ext4_fc_tag_val(tl);
+ if (le32_to_cpu(head->fc_features) &
+ ~EXT4_FC_SUPPORTED_FEATURES) {
+ ret = -EOPNOTSUPP;
+ break;
+ }
+ if (le32_to_cpu(head->fc_tid) != expected_tid) {
+ ret = -EINVAL;
+ break;
+ }
+ state->fc_cur_tag++;
+ state->fc_crc = jbd2_chksum(j, state->fc_crc, tl,
+ sizeof(*tl) + ext4_fc_tag_len(tl));
+ break;
+ default:
+ ret = state->fc_replay_num_tags ?
+ JBD2_FC_REPLAY_STOP : -ECANCELED;
+ }
+ if (ret < 0 || ret == JBD2_FC_REPLAY_STOP)
+ break;
+ }
+
+out_err:
+ return ret;
+}
+
+static int __errcode_to_errno(errcode_t err, const char *func, int line)
+{
+ if (err == 0)
+ return 0;
+ fprintf(stderr, "Error \"%s\" encountered in function %s at line %d\n",
+ error_message(err), func, line);
+ if (err <= 256)
+ return -err;
+ return -EFAULT;
+}
+
+#define errcode_to_errno(err) __errcode_to_errno(err, __func__, __LINE__)
+
+#define ex_end(__ex) ((__ex)->e_lblk + (__ex)->e_len - 1)
+#define ex_pend(__ex) ((__ex)->e_pblk + (__ex)->e_len - 1)
+
+static int make_room(struct extent_list *list, int i)
+{
+ int ret;
+
+ if (list->count == list->size) {
+ unsigned int new_size = (list->size + 341) *
+ sizeof(struct ext2fs_extent);
+ ret = errcode_to_errno(ext2fs_resize_mem(0, new_size, &list->extents));
+ if (ret)
+ return ret;
+ list->size += 341;
+ }
+
+ memmove(&list->extents[i + 1], &list->extents[i],
+ sizeof(list->extents[0]) * (list->count - i));
+ list->count++;
+ return 0;
+}
+
+static int ex_compar(const void *arg1, const void *arg2)
+{
+ struct ext2fs_extent *ex1 = (struct ext2fs_extent *)arg1;
+ struct ext2fs_extent *ex2 = (struct ext2fs_extent *)arg2;
+
+ if (ex1->e_lblk < ex2->e_lblk)
+ return -1;
+ if (ex1->e_lblk > ex2->e_lblk)
+ return 1;
+ return ex1->e_len - ex2->e_len;
+}
+
+static int ex_len_compar(const void *arg1, const void *arg2)
+{
+ struct ext2fs_extent *ex1 = (struct ext2fs_extent *)arg1;
+ struct ext2fs_extent *ex2 = (struct ext2fs_extent *)arg2;
+
+ if (ex1->e_len < ex2->e_len)
+ return 1;
+
+ if (ex1->e_lblk > ex2->e_lblk)
+ return -1;
+
+ return 0;
+}
+
+static void ex_sort_and_merge(struct extent_list *list)
+{
+ int i, j;
+
+ if (list->count < 2)
+ return;
+
+ /*
+ * Reverse sort by length, that way we strip off all the 0 length
+ * extents
+ */
+ qsort(list->extents, list->count, sizeof(struct ext2fs_extent),
+ ex_len_compar);
+
+ for (i = 0; i < list->count; i++) {
+ if (list->extents[i].e_len == 0) {
+ list->count = i;
+ break;
+ }
+ }
+
+ /* Now sort by logical offset */
+ qsort(list->extents, list->count, sizeof(list->extents[0]),
+ ex_compar);
+
+ /* Merge adjacent extents if they are logically and physically contiguous */
+ i = 0;
+ while (i < list->count - 1) {
+ if (ex_end(&list->extents[i]) + 1 != list->extents[i + 1].e_lblk ||
+ ex_pend(&list->extents[i]) + 1 != list->extents[i + 1].e_pblk ||
+ (list->extents[i].e_flags & EXT2_EXTENT_FLAGS_UNINIT) !=
+ (list->extents[i + 1].e_flags & EXT2_EXTENT_FLAGS_UNINIT)) {
+ i++;
+ continue;
+ }
+
+ list->extents[i].e_len += list->extents[i + 1].e_len;
+ for (j = i + 1; j < list->count - 1; j++)
+ list->extents[j] = list->extents[j + 1];
+ list->count--;
+ }
+}
+
+/* must free blocks that are released */
+static int ext4_modify_extent_list(e2fsck_t ctx, struct extent_list *list,
+ struct ext2fs_extent *ex, int del)
+{
+ int ret;
+ int i, offset;
+ struct ext2fs_extent add_ex = *ex;
+
+ /* First let's create a hole from ex->e_lblk of length ex->e_len */
+ for (i = 0; i < list->count; i++) {
+ if (ex_end(&list->extents[i]) < add_ex.e_lblk)
+ continue;
+
+ /* Case 1: No overlap */
+ if (list->extents[i].e_lblk > ex_end(&add_ex))
+ break;
+ /*
+ * Unmark all the blocks in bb now. All the blocks get marked
+ * before we exit this function.
+ */
+ ext2fs_unmark_block_bitmap_range2(ctx->fs->block_map,
+ list->extents[i].e_pblk, list->extents[i].e_len);
+ /* Case 2: Split */
+ if (list->extents[i].e_lblk < add_ex.e_lblk &&
+ ex_end(&list->extents[i]) > ex_end(&add_ex)) {
+ ret = make_room(list, i + 1);
+ if (ret)
+ return ret;
+ list->extents[i + 1] = list->extents[i];
+ offset = ex_end(&add_ex) + 1 - list->extents[i].e_lblk;
+ list->extents[i + 1].e_lblk += offset;
+ list->extents[i + 1].e_pblk += offset;
+ list->extents[i + 1].e_len -= offset;
+ list->extents[i].e_len =
+ add_ex.e_lblk - list->extents[i].e_lblk;
+ break;
+ }
+
+ /* Case 3: Exact overlap */
+ if (add_ex.e_lblk <= list->extents[i].e_lblk &&
+ ex_end(&list->extents[i]) <= ex_end(&add_ex)) {
+
+ list->extents[i].e_len = 0;
+ continue;
+ }
+
+ /* Case 4: Partial overlap */
+ if (ex_end(&list->extents[i]) > ex_end(&add_ex)) {
+ offset = ex_end(&add_ex) + 1 - list->extents[i].e_lblk;
+ list->extents[i].e_lblk += offset;
+ list->extents[i].e_pblk += offset;
+ list->extents[i].e_len -= offset;
+ break;
+ }
+
+ if (ex_end(&add_ex) >= ex_end(&list->extents[i]))
+ list->extents[i].e_len =
+ add_ex.e_lblk > list->extents[i].e_lblk ?
+ add_ex.e_lblk - list->extents[i].e_lblk : 0;
+ }
+
+ if (add_ex.e_len && !del) {
+ make_room(list, list->count);
+ list->extents[list->count - 1] = add_ex;
+ }
+
+ ex_sort_and_merge(list);
+
+ /* Mark all occupied blocks allocated */
+ for (i = 0; i < list->count; i++)
+ ext2fs_mark_block_bitmap_range2(ctx->fs->block_map,
+ list->extents[i].e_pblk, list->extents[i].e_len);
+ ext2fs_mark_bb_dirty(ctx->fs);
+
+ return 0;
+}
+
+static int ext4_add_extent_to_list(e2fsck_t ctx, struct extent_list *list,
+ struct ext2fs_extent *ex)
+{
+ return ext4_modify_extent_list(ctx, list, ex, 0 /* add */);
+}
+
+static int ext4_del_extent_from_list(e2fsck_t ctx, struct extent_list *list,
+ struct ext2fs_extent *ex)
+{
+ return ext4_modify_extent_list(ctx, list, ex, 1 /* delete */);
+}
+
+static int ext4_fc_read_extents(e2fsck_t ctx, int ino)
+{
+ struct extent_list *extent_list = &ctx->fc_replay_state.fc_extent_list;
+
+ if (extent_list->ino == ino)
+ return 0;
+
+ extent_list->ino = ino;
+ return errcode_to_errno(e2fsck_read_extents(ctx, extent_list));
+}
+
+/*
+ * Flush extents in replay state on disk. @ino is the inode that is going
+ * to be processed next. So, we hold back flushing of the extent list
+ * if the next inode that's going to be processed is same as the one with
+ * cached extents in our replay state. That allows us to gather multiple extents
+ * for the inode so that we can flush all of them at once and it also saves us
+ * from continuously growing and shrinking the extent tree.
+ */
+static void ext4_fc_flush_extents(e2fsck_t ctx, int ino)
+{
+ struct extent_list *extent_list = &ctx->fc_replay_state.fc_extent_list;
+
+ if (extent_list->ino == ino || extent_list->ino == 0)
+ return;
+ e2fsck_rewrite_extent_tree(ctx, extent_list);
+ ext2fs_free_mem(&extent_list->extents);
+ memset(extent_list, 0, sizeof(*extent_list));
+}
+
+/* Helper struct for dentry replay routines */
+struct dentry_info_args {
+ int parent_ino, dname_len, ino, inode_len;
+ char *dname;
+};
+
+static inline void tl_to_darg(struct dentry_info_args *darg,
+ struct ext4_fc_tl *tl)
+{
+ struct ext4_fc_dentry_info *fcd;
+ int tag = le16_to_cpu(tl->fc_tag);
+
+ fcd = (struct ext4_fc_dentry_info *)ext4_fc_tag_val(tl);
+
+ darg->parent_ino = le32_to_cpu(fcd->fc_parent_ino);
+ darg->ino = le32_to_cpu(fcd->fc_ino);
+ darg->dname = (char *) fcd->fc_dname;
+ darg->dname_len = ext4_fc_tag_len(tl) -
+ sizeof(struct ext4_fc_dentry_info);
+ darg->dname = malloc(darg->dname_len + 1);
+ memcpy(darg->dname, fcd->fc_dname, darg->dname_len);
+ darg->dname[darg->dname_len] = 0;
+ jbd_debug(1, "%s: %s, ino %d, parent %d\n",
+ tag == EXT4_FC_TAG_CREAT ? "create" :
+ (tag == EXT4_FC_TAG_LINK ? "link" :
+ (tag == EXT4_FC_TAG_UNLINK ? "unlink" : "error")),
+ darg->dname, darg->ino, darg->parent_ino);
+}
+
+static int ext4_fc_handle_unlink(e2fsck_t ctx, struct ext4_fc_tl *tl)
+{
+ struct dentry_info_args darg;
+ int ret;
+
+ tl_to_darg(&darg, tl);
+ ext4_fc_flush_extents(ctx, darg.ino);
+ ret = errcode_to_errno(
+ ext2fs_unlink(ctx->fs, darg.parent_ino,
+ darg.dname, darg.ino, 0));
+ /* It's okay if the above call fails */
+ free(darg.dname);
+ return ret;
+}
+
+static int ext4_fc_handle_link_and_create(e2fsck_t ctx, struct ext4_fc_tl *tl)
+{
+ struct dentry_info_args darg;
+ ext2_filsys fs = ctx->fs;
+ struct ext2_inode_large inode_large;
+ int ret, filetype, mode;
+
+ tl_to_darg(&darg, tl);
+ ext4_fc_flush_extents(ctx, 0);
+ ret = errcode_to_errno(ext2fs_read_inode(fs, darg.ino,
+ (struct ext2_inode *)&inode_large));
+ if (ret)
+ goto out;
+
+ mode = inode_large.i_mode;
+
+ if (LINUX_S_ISREG(mode))
+ filetype = EXT2_FT_REG_FILE;
+ else if (LINUX_S_ISDIR(mode))
+ filetype = EXT2_FT_DIR;
+ else if (LINUX_S_ISCHR(mode))
+ filetype = EXT2_FT_CHRDEV;
+ else if (LINUX_S_ISBLK(mode))
+ filetype = EXT2_FT_BLKDEV;
+ else if (LINUX_S_ISLNK(mode))
+ return EXT2_FT_SYMLINK;
+ else if (LINUX_S_ISFIFO(mode))
+ filetype = EXT2_FT_FIFO;
+ else if (LINUX_S_ISSOCK(mode))
+ filetype = EXT2_FT_SOCK;
+ else {
+ ret = -EINVAL;
+ goto out;
+ }
+
+ /*
+ * Forcefully unlink if the same name is present and ignore the error
+ * if any, since this dirent might not exist
+ */
+ ext2fs_unlink(fs, darg.parent_ino, darg.dname, darg.ino,
+ EXT2FS_UNLINK_FORCE);
+
+ ret = errcode_to_errno(
+ ext2fs_link(fs, darg.parent_ino, darg.dname, darg.ino,
+ filetype));
+out:
+ free(darg.dname);
+ return ret;
+
+}
+
+/* This function fixes the i_blocks field in the replayed indoe */
+static void ext4_fc_replay_fixup_iblocks(struct ext2_inode_large *ondisk_inode,
+ struct ext2_inode_large *fc_inode)
+{
+ if (ondisk_inode->i_flags & EXT4_EXTENTS_FL) {
+ struct ext3_extent_header *eh;
+
+ eh = (struct ext3_extent_header *)(&ondisk_inode->i_block[0]);
+ if (le16_to_cpu(eh->eh_magic) != EXT3_EXT_MAGIC) {
+ memset(eh, 0, sizeof(*eh));
+ eh->eh_magic = cpu_to_le16(EXT3_EXT_MAGIC);
+ eh->eh_max = cpu_to_le16(
+ (sizeof(ondisk_inode->i_block) -
+ sizeof(struct ext3_extent_header)) /
+ sizeof(struct ext3_extent));
+ }
+ } else if (ondisk_inode->i_flags & EXT4_INLINE_DATA_FL) {
+ memcpy(ondisk_inode->i_block, fc_inode->i_block,
+ sizeof(fc_inode->i_block));
+ }
+}
+
+static int ext4_fc_handle_inode(e2fsck_t ctx, struct ext4_fc_tl *tl)
+{
+ int ino, inode_len = EXT2_GOOD_OLD_INODE_SIZE;
+ struct ext2_inode_large *inode = NULL, *fc_inode = NULL;
+ struct ext4_fc_inode *fc_inode_val;
+ errcode_t err;
+ blk64_t blks;
+
+ fc_inode_val = (struct ext4_fc_inode *)ext4_fc_tag_val(tl);
+ ino = le32_to_cpu(fc_inode_val->fc_ino);
+
+ if (EXT2_INODE_SIZE(ctx->fs->super) > EXT2_GOOD_OLD_INODE_SIZE)
+ inode_len += ext2fs_le16_to_cpu(
+ ((struct ext2_inode_large *)fc_inode_val->fc_raw_inode)
+ ->i_extra_isize);
+ err = ext2fs_get_mem(inode_len, &inode);
+ if (err)
+ goto out;
+ err = ext2fs_get_mem(inode_len, &fc_inode);
+ if (err)
+ goto out;
+ ext4_fc_flush_extents(ctx, ino);
+
+ err = ext2fs_read_inode_full(ctx->fs, ino, (struct ext2_inode *)inode,
+ inode_len);
+ if (err)
+ goto out;
+#ifdef WORDS_BIGENDIAN
+ ext2fs_swap_inode_full(ctx->fs, fc_inode,
+ (struct ext2_inode_large *)fc_inode_val->fc_raw_inode,
+ 0, sizeof(*inode));
+#else
+ memcpy(fc_inode, fc_inode_val->fc_raw_inode, inode_len);
+#endif
+ memcpy(inode, fc_inode, offsetof(struct ext2_inode_large, i_block));
+ memcpy(&inode->i_generation, &fc_inode->i_generation,
+ inode_len - offsetof(struct ext2_inode_large, i_generation));
+ ext4_fc_replay_fixup_iblocks(inode, fc_inode);
+ err = ext2fs_count_blocks(ctx->fs, ino, EXT2_INODE(inode), &blks);
+ if (err)
+ goto out;
+ ext2fs_iblk_set(ctx->fs, EXT2_INODE(inode), blks);
+ ext2fs_inode_csum_set(ctx->fs, ino, inode);
+
+ err = ext2fs_write_inode_full(ctx->fs, ino, (struct ext2_inode *)inode,
+ inode_len);
+ if (err)
+ goto out;
+ if (inode->i_links_count)
+ ext2fs_mark_inode_bitmap2(ctx->fs->inode_map, ino);
+ else
+ ext2fs_unmark_inode_bitmap2(ctx->fs->inode_map, ino);
+ ext2fs_mark_ib_dirty(ctx->fs);
+
+out:
+ ext2fs_free_mem(&inode);
+ ext2fs_free_mem(&fc_inode);
+ return errcode_to_errno(err);
+}
+
+/*
+ * Handle add extent replay tag.
+ */
+static int ext4_fc_handle_add_extent(e2fsck_t ctx, struct ext4_fc_tl *tl)
+{
+ struct ext2fs_extent extent;
+ struct ext4_fc_add_range *add_range;
+ int ret = 0, ino;
+
+ add_range = (struct ext4_fc_add_range *)ext4_fc_tag_val(tl);
+ ino = le32_to_cpu(add_range->fc_ino);
+ ext4_fc_flush_extents(ctx, ino);
+
+ ret = ext4_fc_read_extents(ctx, ino);
+ if (ret)
+ return ret;
+ memset(&extent, 0, sizeof(extent));
+ ret = errcode_to_errno(ext2fs_decode_extent(
+ &extent, (void *)(add_range->fc_ex),
+ sizeof(add_range->fc_ex)));
+ if (ret)
+ return ret;
+ return ext4_add_extent_to_list(ctx,
+ &ctx->fc_replay_state.fc_extent_list, &extent);
+}
+
+/*
+ * Handle delete logical range replay tag.
+ */
+static int ext4_fc_handle_del_range(e2fsck_t ctx, struct ext4_fc_tl *tl)
+{
+ struct ext2fs_extent extent;
+ struct ext4_fc_del_range *del_range;
+ int ret, ino;
+
+ del_range = (struct ext4_fc_del_range *)ext4_fc_tag_val(tl);
+ ino = le32_to_cpu(del_range->fc_ino);
+ ext4_fc_flush_extents(ctx, ino);
+
+ memset(&extent, 0, sizeof(extent));
+ extent.e_lblk = ext2fs_le32_to_cpu(del_range->fc_lblk);
+ extent.e_len = ext2fs_le32_to_cpu(del_range->fc_len);
+ ret = ext4_fc_read_extents(ctx, ino);
+ if (ret)
+ return ret;
+ return ext4_del_extent_from_list(ctx,
+ &ctx->fc_replay_state.fc_extent_list, &extent);
+}
+
+/*
+ * Main recovery path entry point. This function returns JBD2_FC_REPLAY_CONTINUE
+ * to indicate that it is expecting more fast commit blocks. It returns
+ * JBD2_FC_REPLAY_STOP to indicate that replay is done.
+ */
+static int ext4_fc_replay(journal_t *journal, struct buffer_head *bh,
+ enum passtype pass, int off, tid_t expected_tid)
+{
+ e2fsck_t ctx = journal->j_fs_dev->k_ctx;
+ struct e2fsck_fc_replay_state *state = &ctx->fc_replay_state;
+ int ret = JBD2_FC_REPLAY_CONTINUE;
+ struct ext4_fc_tl *tl;
+ __u8 *start, *end;
+
+ if (pass == PASS_SCAN) {
+ state->fc_current_pass = PASS_SCAN;
+ return ext4_fc_replay_scan(journal, bh, off, expected_tid);
+ }
+
+ if (state->fc_replay_num_tags == 0)
+ goto replay_done;
+
+ if (state->fc_current_pass != pass) {
+ /* Starting replay phase */
+ state->fc_current_pass = pass;
+ /* We will reset checksums */
+ ctx->fs->flags |= EXT2_FLAG_IGNORE_CSUM_ERRORS;
+ ret = errcode_to_errno(ext2fs_read_bitmaps(ctx->fs));
+ if (ret) {
+ jbd_debug(1, "Error %d while reading bitmaps\n", ret);
+ return ret;
+ }
+ state->fc_super_state = ctx->fs->super->s_state;
+ /*
+ * Mark the file system to indicate it contains errors. That's
+ * because the updates performed by fast commit replay code are
+ * not atomic and may result in incosistent file system if it
+ * crashes before the replay is complete.
+ */
+ ctx->fs->super->s_state |= EXT2_ERROR_FS;
+ ctx->fs->super->s_state |= EXT4_FC_REPLAY;
+ ext2fs_mark_super_dirty(ctx->fs);
+ ext2fs_flush(ctx->fs);
+ }
+
+ start = (__u8 *)bh->b_data;
+ end = (__u8 *)bh->b_data + journal->j_blocksize - 1;
+
+ fc_for_each_tl(start, end, tl) {
+ if (state->fc_replay_num_tags == 0)
+ goto replay_done;
+ jbd_debug(3, "Replay phase processing %s tag\n",
+ tag2str(le16_to_cpu(tl->fc_tag)));
+ state->fc_replay_num_tags--;
+ switch (le16_to_cpu(tl->fc_tag)) {
+ case EXT4_FC_TAG_CREAT:
+ case EXT4_FC_TAG_LINK:
+ ret = ext4_fc_handle_link_and_create(ctx, tl);
+ break;
+ case EXT4_FC_TAG_UNLINK:
+ ret = ext4_fc_handle_unlink(ctx, tl);
+ break;
+ case EXT4_FC_TAG_ADD_RANGE:
+ ret = ext4_fc_handle_add_extent(ctx, tl);
+ break;
+ case EXT4_FC_TAG_DEL_RANGE:
+ ret = ext4_fc_handle_del_range(ctx, tl);
+ break;
+ case EXT4_FC_TAG_INODE:
+ ret = ext4_fc_handle_inode(ctx, tl);
+ break;
+ case EXT4_FC_TAG_TAIL:
+ ext4_fc_flush_extents(ctx, 0);
+ case EXT4_FC_TAG_PAD:
+ case EXT4_FC_TAG_HEAD:
+ break;
+ default:
+ ret = -ECANCELED;
+ break;
+ }
+ if (ret < 0)
+ break;
+ ret = JBD2_FC_REPLAY_CONTINUE;
+ }
+ return ret;
+replay_done:
+ jbd_debug(1, "End of fast commit replay\n");
+ if (state->fc_current_pass != pass)
+ return JBD2_FC_REPLAY_STOP;
+
+ ext2fs_calculate_summary_stats(ctx->fs, 0 /* update bg also */);
+ ext2fs_write_block_bitmap(ctx->fs);
+ ext2fs_write_inode_bitmap(ctx->fs);
+ ext2fs_mark_super_dirty(ctx->fs);
+ ext2fs_set_gdt_csum(ctx->fs);
+ ctx->fs->super->s_state = state->fc_super_state;
+ ext2fs_flush(ctx->fs);
+
+ return JBD2_FC_REPLAY_STOP;
+}
+
static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
{
struct process_block_struct pb;
@@ -356,7 +1010,7 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
goto try_backup_journal;
}
if (EXT2_I_SIZE(&j_inode->i_ext2) / journal->j_blocksize <
- JFS_MIN_JOURNAL_BLOCKS) {
+ JBD2_MIN_JOURNAL_BLOCKS) {
retval = EXT2_ET_JOURNAL_TOO_SMALL;
goto try_backup_journal;
}
@@ -376,7 +1030,7 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
goto errout;
}
- journal->j_maxlen = EXT2_I_SIZE(&j_inode->i_ext2) /
+ journal->j_total_len = EXT2_I_SIZE(&j_inode->i_ext2) /
journal->j_blocksize;
#ifdef USE_INODE_IO
@@ -390,7 +1044,7 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
#else
journal->j_inode = j_inode;
ctx->journal_io = ctx->fs->io;
- if ((ret = journal_bmap(journal, 0, &start)) != 0) {
+ if ((ret = jbd2_journal_bmap(journal, 0, &start)) != 0) {
retval = (errcode_t) (-1 * ret);
goto errout;
}
@@ -452,7 +1106,7 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
retval = EXT2_ET_NO_MEMORY;
goto errout;
}
- ll_rw_block(READ, 1, &bh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &bh);
if ((retval = bh->b_err) != 0) {
brelse(bh);
goto errout;
@@ -500,7 +1154,7 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
brelse(bh);
maxlen = ext2fs_blocks_count(&jsuper);
- journal->j_maxlen = (maxlen < 1ULL << 32) ? maxlen : (1ULL << 32) - 1;
+ journal->j_total_len = (maxlen < 1ULL << 32) ? maxlen : (1ULL << 32) - 1;
start++;
}
@@ -511,6 +1165,10 @@ static errcode_t e2fsck_get_journal(e2fsck_t ctx, journal_t **ret_journal)
journal->j_sb_buffer = bh;
journal->j_superblock = (journal_superblock_t *)bh->b_data;
+ if (ext2fs_has_feature_fast_commit(ctx->fs->super))
+ journal->j_fc_replay_callback = ext4_fc_replay;
+ else
+ journal->j_fc_replay_callback = NULL;
#ifdef USE_INODE_IO
if (j_inode)
@@ -591,7 +1249,7 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
clear_problem_context(&pctx);
- ll_rw_block(READ, 1, &jbh);
+ ll_rw_block(REQ_OP_READ, 0, 1, &jbh);
if (jbh->b_err) {
com_err(ctx->device_name, jbh->b_err, "%s",
_("reading journal superblock\n"));
@@ -599,12 +1257,12 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
}
jsb = journal->j_superblock;
- /* If we don't even have JFS_MAGIC, we probably have a wrong inode */
- if (jsb->s_header.h_magic != htonl(JFS_MAGIC_NUMBER))
+ /* If we don't even have JBD2_MAGIC, we probably have a wrong inode */
+ if (jsb->s_header.h_magic != htonl(JBD2_MAGIC_NUMBER))
return e2fsck_journal_fix_bad_inode(ctx, &pctx);
switch (ntohl(jsb->s_header.h_blocktype)) {
- case JFS_SUPERBLOCK_V1:
+ case JBD2_SUPERBLOCK_V1:
journal->j_format_version = 1;
if (jsb->s_feature_compat ||
jsb->s_feature_incompat ||
@@ -613,7 +1271,7 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
clear_v2_journal_fields(journal);
break;
- case JFS_SUPERBLOCK_V2:
+ case JBD2_SUPERBLOCK_V2:
journal->j_format_version = 2;
if (ntohl(jsb->s_nr_users) > 1 &&
uuid_is_null(ctx->fs->super->s_journal_uuid))
@@ -628,9 +1286,9 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
* These should never appear in a journal super block, so if
* they do, the journal is badly corrupted.
*/
- case JFS_DESCRIPTOR_BLOCK:
- case JFS_COMMIT_BLOCK:
- case JFS_REVOKE_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
+ case JBD2_COMMIT_BLOCK:
+ case JBD2_REVOKE_BLOCK:
return EXT2_ET_CORRUPT_JOURNAL_SB;
/* If we don't understand the superblock major type, but there
@@ -640,25 +1298,25 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
return EXT2_ET_JOURNAL_UNSUPP_VERSION;
}
- if (JFS_HAS_INCOMPAT_FEATURE(journal, ~JFS_KNOWN_INCOMPAT_FEATURES))
+ if (JBD2_HAS_INCOMPAT_FEATURE(journal, ~JBD2_KNOWN_INCOMPAT_FEATURES))
return EXT2_ET_UNSUPP_FEATURE;
- if (JFS_HAS_RO_COMPAT_FEATURE(journal, ~JFS_KNOWN_ROCOMPAT_FEATURES))
+ if (JBD2_HAS_RO_COMPAT_FEATURE(journal, ~JBD2_KNOWN_ROCOMPAT_FEATURES))
return EXT2_ET_RO_UNSUPP_FEATURE;
/* Checksum v1-3 are mutually exclusive features. */
- if (jfs_has_feature_csum2(journal) && jfs_has_feature_csum3(journal))
+ if (jbd2_has_feature_csum2(journal) && jbd2_has_feature_csum3(journal))
return EXT2_ET_CORRUPT_JOURNAL_SB;
- if (journal_has_csum_v2or3(journal) &&
- jfs_has_feature_checksum(journal))
+ if (jbd2_journal_has_csum_v2or3(journal) &&
+ jbd2_has_feature_checksum(journal))
return EXT2_ET_CORRUPT_JOURNAL_SB;
if (!e2fsck_journal_verify_csum_type(journal, jsb) ||
!e2fsck_journal_sb_csum_verify(journal, jsb))
return EXT2_ET_CORRUPT_JOURNAL_SB;
- if (journal_has_csum_v2or3(journal))
+ if (jbd2_journal_has_csum_v2or3(journal))
journal->j_csum_seed = jbd2_chksum(journal, ~0, jsb->s_uuid,
sizeof(jsb->s_uuid));
@@ -672,9 +1330,9 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
return EXT2_ET_CORRUPT_JOURNAL_SB;
}
- if (ntohl(jsb->s_maxlen) < journal->j_maxlen)
- journal->j_maxlen = ntohl(jsb->s_maxlen);
- else if (ntohl(jsb->s_maxlen) > journal->j_maxlen) {
+ if (ntohl(jsb->s_maxlen) < journal->j_total_len)
+ journal->j_total_len = ntohl(jsb->s_maxlen);
+ else if (ntohl(jsb->s_maxlen) > journal->j_total_len) {
com_err(ctx->program_name, EXT2_ET_CORRUPT_JOURNAL_SB,
_("%s: journal too short\n"),
ctx->device_name);
@@ -685,7 +1343,21 @@ static errcode_t e2fsck_journal_load(journal_t *journal)
journal->j_transaction_sequence = journal->j_tail_sequence;
journal->j_tail = ntohl(jsb->s_start);
journal->j_first = ntohl(jsb->s_first);
- journal->j_last = ntohl(jsb->s_maxlen);
+ if (jbd2_has_feature_fast_commit(journal)) {
+ if (ntohl(jsb->s_maxlen) - jbd2_journal_get_num_fc_blks(jsb)
+ < JBD2_MIN_JOURNAL_BLOCKS) {
+ com_err(ctx->program_name, EXT2_ET_CORRUPT_JOURNAL_SB,
+ _("%s: incorrect fast commit blocks\n"),
+ ctx->device_name);
+ return EXT2_ET_CORRUPT_JOURNAL_SB;
+ }
+ journal->j_fc_last = ntohl(jsb->s_maxlen);
+ journal->j_last = journal->j_fc_last -
+ jbd2_journal_get_num_fc_blks(jsb);
+ journal->j_fc_first = journal->j_last + 1;
+ } else {
+ journal->j_last = ntohl(jsb->s_maxlen);
+ }
return 0;
}
@@ -705,10 +1377,10 @@ static void e2fsck_journal_reset_super(e2fsck_t ctx, journal_superblock_t *jsb,
* Anything unrecognisable we overwrite with a new V2
* signature. */
- if (jsb->s_header.h_magic != htonl(JFS_MAGIC_NUMBER) ||
- jsb->s_header.h_blocktype != htonl(JFS_SUPERBLOCK_V1)) {
- jsb->s_header.h_magic = htonl(JFS_MAGIC_NUMBER);
- jsb->s_header.h_blocktype = htonl(JFS_SUPERBLOCK_V2);
+ if (jsb->s_header.h_magic != htonl(JBD2_MAGIC_NUMBER) ||
+ jsb->s_header.h_blocktype != htonl(JBD2_SUPERBLOCK_V1)) {
+ jsb->s_header.h_magic = htonl(JBD2_MAGIC_NUMBER);
+ jsb->s_header.h_blocktype = htonl(JBD2_SUPERBLOCK_V2);
}
/* Zero out everything else beyond the superblock header */
@@ -717,7 +1389,7 @@ static void e2fsck_journal_reset_super(e2fsck_t ctx, journal_superblock_t *jsb,
memset (p, 0, ctx->fs->blocksize-sizeof(journal_header_t));
jsb->s_blocksize = htonl(ctx->fs->blocksize);
- jsb->s_maxlen = htonl(journal->j_maxlen);
+ jsb->s_maxlen = htonl(journal->j_total_len);
jsb->s_first = htonl(1);
/* Initialize the journal sequence number so that there is "no"
@@ -732,7 +1404,7 @@ static void e2fsck_journal_reset_super(e2fsck_t ctx, journal_superblock_t *jsb,
e2fsck_journal_sb_csum_set(journal, jsb);
mark_buffer_dirty(journal->j_sb_buffer);
- ll_rw_block(WRITE, 1, &journal->j_sb_buffer);
+ ll_rw_block(REQ_OP_WRITE, 0, 1, &journal->j_sb_buffer);
}
static errcode_t e2fsck_journal_fix_corrupt_super(e2fsck_t ctx,
@@ -928,7 +1600,14 @@ static errcode_t recover_ext3_journal(e2fsck_t ctx)
clear_problem_context(&pctx);
- journal_init_revoke_caches();
+ retval = jbd2_journal_init_revoke_record_cache();
+ if (retval)
+ return retval;
+
+ retval = jbd2_journal_init_revoke_table_cache();
+ if (retval)
+ return retval;
+
retval = e2fsck_get_journal(ctx, &journal);
if (retval)
return retval;
@@ -937,11 +1616,11 @@ static errcode_t recover_ext3_journal(e2fsck_t ctx)
if (retval)
goto errout;
- retval = journal_init_revoke(journal, 1024);
+ retval = jbd2_journal_init_revoke(journal, 1024);
if (retval)
goto errout;
- retval = -journal_recover(journal);
+ retval = -jbd2_journal_recover(journal);
if (retval)
goto errout;
@@ -955,8 +1634,9 @@ static errcode_t recover_ext3_journal(e2fsck_t ctx)
journal->j_tail_sequence = journal->j_transaction_sequence;
errout:
- journal_destroy_revoke(journal);
- journal_destroy_revoke_caches();
+ jbd2_journal_destroy_revoke(journal);
+ jbd2_journal_destroy_revoke_record_cache();
+ jbd2_journal_destroy_revoke_table_cache();
e2fsck_journal_release(ctx, journal, 1, 0);
return retval;
}
diff --git a/e2fsck/logfile.c b/e2fsck/logfile.c
index 3eeefd19..63e9a12f 100644
--- a/e2fsck/logfile.c
+++ b/e2fsck/logfile.c
@@ -353,7 +353,7 @@ void set_up_logging(e2fsck_t ctx)
ctx->problem_log_fn);
}
#else
-void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size,
+void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned long size,
const char *description)
{
void *ret;
diff --git a/e2fsck/message.c b/e2fsck/message.c
index 727f71d5..ba38038c 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -281,10 +281,7 @@ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch,
switch (ch) {
case 's':
- if (LINUX_S_ISDIR(inode->i_mode))
- fprintf(f, "%u", inode->i_size);
- else
- fprintf(f, "%llu", EXT2_I_SIZE(inode));
+ fprintf(f, "%llu", (unsigned long long) EXT2_I_SIZE(inode));
break;
case 'S':
fprintf(f, "%u", large_inode->i_extra_isize);
@@ -310,7 +307,8 @@ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch,
fprintf(f, "%u", inode->i_faddr);
break;
case 'f':
- fprintf(f, "%llu", ext2fs_file_acl_block(fs, inode));
+ fprintf(f, "%llu",
+ (unsigned long long) ext2fs_file_acl_block(fs, inode));
break;
case 'd':
fprintf(f, "%u", (LINUX_S_ISDIR(inode->i_mode) ?
@@ -465,7 +463,9 @@ static _INLINE_ void expand_percent_expression(FILE *f, ext2_filsys fs,
fprintf(f, "%*lld", width, (long long) ctx->blkcount);
break;
case 'S':
- fprintf(f, "%llu", get_backup_sb(NULL, fs, NULL, NULL));
+ fprintf(f, "%llu",
+ (unsigned long long) get_backup_sb(NULL, fs,
+ NULL, NULL));
break;
case 's':
fprintf(f, "%*s", width, ctx->str ? ctx->str : "NULL");
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 8ea9d20d..9d430895 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -23,10 +23,12 @@
* - A bitmap of which inodes have bad fields. (inode_bad_map)
* - A bitmap of which inodes are in bad blocks. (inode_bb_map)
* - A bitmap of which inodes are imagic inodes. (inode_imagic_map)
+ * - A bitmap of which inodes are casefolded. (inode_casefold_map)
* - A bitmap of which blocks are in use. (block_found_map)
* - A bitmap of which blocks are in use by two inodes (block_dup_map)
* - The data blocks of the directory inodes. (dir_map)
* - Ref counts for ea_inodes. (ea_inode_refs)
+ * - The encryption policy ID of each encrypted inode. (encrypted_files)
*
* Pass 1 is designed to stash away enough information so that the
* other passes should not need to read in the inode information
@@ -78,7 +80,6 @@ static void mark_table_blocks(e2fsck_t ctx);
static void alloc_bb_map(e2fsck_t ctx);
static void alloc_imagic_map(e2fsck_t ctx);
static void mark_inode_bad(e2fsck_t ctx, ino_t ino);
-static void add_encrypted_dir(e2fsck_t ctx, ino_t ino);
static void add_casefolded_dir(e2fsck_t ctx, ino_t ino);
static void handle_fs_bad_blocks(e2fsck_t ctx);
static void process_inodes(e2fsck_t ctx, char *block_buf);
@@ -130,16 +131,6 @@ static __u64 ext2_max_sizes[EXT2_MAX_BLOCK_LOG_SIZE -
EXT2_MIN_BLOCK_LOG_SIZE + 1];
/*
- * Free all memory allocated by pass1 in preparation for restarting
- * things.
- */
-static void unwind_pass1(ext2_filsys fs EXT2FS_ATTR((unused)))
-{
- ext2fs_free_mem(&inodes_to_process);
- inodes_to_process = 0;
-}
-
-/*
* Check to make sure a device inode is real. Returns 1 if the device
* checks out, 0 if not.
*
@@ -1172,6 +1163,7 @@ void e2fsck_pass1(e2fsck_t ctx)
struct scan_callback_struct scan_struct;
struct ext2_super_block *sb = ctx->fs->super;
const char *old_op;
+ const char *eop_next_inode = _("getting next inode from scan");
int imagic_fs, extent_fs, inlinedata_fs, casefold_fs;
int low_dtime_check = 1;
unsigned int inode_size = EXT2_INODE_SIZE(fs->super);
@@ -1270,6 +1262,20 @@ void e2fsck_pass1(e2fsck_t ctx)
ctx->flags |= E2F_FLAG_ABORT;
return;
}
+ if (casefold_fs) {
+ pctx.errcode =
+ e2fsck_allocate_inode_bitmap(fs,
+ _("inode casefold map"),
+ EXT2FS_BMAP64_RBTREE,
+ "inode_casefold_map",
+ &ctx->inode_casefold_map);
+ if (pctx.errcode) {
+ pctx.num = 1;
+ fix_problem(ctx, PR_1_ALLOCATE_IBITMAP_ERROR, &pctx);
+ ctx->flags |= E2F_FLAG_ABORT;
+ return;
+ }
+ }
pctx.errcode = e2fsck_setup_icount(ctx, "inode_link_info", 0, NULL,
&ctx->inode_link_info);
if (pctx.errcode) {
@@ -1364,7 +1370,7 @@ void e2fsck_pass1(e2fsck_t ctx)
if (e2fsck_mmp_update(fs))
fatal_error(ctx, 0);
}
- old_op = ehandler_operation(_("getting next inode from scan"));
+ old_op = ehandler_operation(eop_next_inode);
pctx.errcode = ext2fs_get_next_inode_full(scan, &ino,
inode, inode_size);
if (ino > ino_threshold)
@@ -1392,17 +1398,9 @@ void e2fsck_pass1(e2fsck_t ctx)
fix_problem(ctx, PR_1_ISCAN_ERROR,
&pctx);
ctx->flags |= E2F_FLAG_ABORT;
- goto endit;
- }
- err = ext2fs_inode_scan_goto_blockgroup(scan,
- 0);
- if (err) {
- fix_problem(ctx, PR_1_ISCAN_ERROR,
- &pctx);
- ctx->flags |= E2F_FLAG_ABORT;
- goto endit;
- }
- continue;
+ } else
+ ctx->flags |= E2F_FLAG_RESTART;
+ goto endit;
}
if (!ctx->inode_bb_map)
alloc_bb_map(ctx);
@@ -1884,12 +1882,17 @@ void e2fsck_pass1(e2fsck_t ctx)
failed_csum = 0;
}
+ if ((inode->i_flags & EXT4_ENCRYPT_FL) &&
+ add_encrypted_file(ctx, &pctx) < 0)
+ goto clear_inode;
+
+ if (casefold_fs && inode->i_flags & EXT4_CASEFOLD_FL)
+ ext2fs_mark_inode_bitmap2(ctx->inode_casefold_map, ino);
+
if (LINUX_S_ISDIR(inode->i_mode)) {
ext2fs_mark_inode_bitmap2(ctx->inode_dir_map, ino);
e2fsck_add_dir_info(ctx, ino, 0);
ctx->fs_directory_count++;
- if (inode->i_flags & EXT4_ENCRYPT_FL)
- add_encrypted_dir(ctx, ino);
if (inode->i_flags & EXT4_CASEFOLD_FL)
add_casefolded_dir(ctx, ino);
} else if (LINUX_S_ISREG (inode->i_mode)) {
@@ -2020,6 +2023,9 @@ void e2fsck_pass1(e2fsck_t ctx)
ctx->block_ea_map = 0;
}
+ /* We don't need the encryption policy => ID map any more */
+ destroy_encryption_policy_map(ctx);
+
if (ctx->flags & E2F_FLAG_RESIZE_INODE) {
clear_problem_context(&pctx);
pctx.errcode = ext2fs_create_resize_inode(fs);
@@ -2049,10 +2055,24 @@ void e2fsck_pass1(e2fsck_t ctx)
* master superblock.
*/
ctx->use_superblock = 0;
- unwind_pass1(fs);
goto endit;
}
+ if (ctx->large_dirs && !ext2fs_has_feature_largedir(ctx->fs->super)) {
+ ext2_filsys fs = ctx->fs;
+
+ if (fix_problem(ctx, PR_2_FEATURE_LARGE_DIRS, &pctx)) {
+ ext2fs_set_feature_largedir(fs->super);
+ fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
+ ext2fs_mark_super_dirty(fs);
+ }
+ if (fs->super->s_rev_level == EXT2_GOOD_OLD_REV &&
+ fix_problem(ctx, PR_1_FS_REV_LEVEL, &pctx)) {
+ ext2fs_update_dynamic_rev(fs);
+ ext2fs_mark_super_dirty(fs);
+ }
+ }
+
if (ctx->block_dup_map) {
if (ctx->options & E2F_OPT_PREEN) {
clear_problem_context(&pctx);
@@ -2061,9 +2081,10 @@ void e2fsck_pass1(e2fsck_t ctx)
e2fsck_pass1_dupblocks(ctx, block_buf);
}
ctx->flags |= E2F_FLAG_ALLOC_OK;
- ext2fs_free_mem(&inodes_to_process);
endit:
e2fsck_use_inode_shortcuts(ctx, 0);
+ ext2fs_free_mem(&inodes_to_process);
+ inodes_to_process = 0;
if (scan)
ext2fs_close_inode_scan(scan);
@@ -2204,24 +2225,6 @@ static void mark_inode_bad(e2fsck_t ctx, ino_t ino)
ext2fs_mark_inode_bitmap2(ctx->inode_bad_map, ino);
}
-static void add_encrypted_dir(e2fsck_t ctx, ino_t ino)
-{
- struct problem_context pctx;
-
- if (!ctx->encrypted_dirs) {
- pctx.errcode = ext2fs_u32_list_create(&ctx->encrypted_dirs, 0);
- if (pctx.errcode)
- goto error;
- }
- pctx.errcode = ext2fs_u32_list_add(ctx->encrypted_dirs, ino);
- if (pctx.errcode == 0)
- return;
-error:
- fix_problem(ctx, PR_1_ALLOCATE_ENCRYPTED_DIRLIST, &pctx);
- /* Should never get here */
- ctx->flags |= E2F_FLAG_ABORT;
-}
-
static void add_casefolded_dir(e2fsck_t ctx, ino_t ino)
{
struct problem_context pctx;
@@ -2716,10 +2719,30 @@ static int handle_htree(e2fsck_t ctx, struct problem_context *pctx,
return 1;
pctx->num = root->indirect_levels;
- if ((root->indirect_levels > ext2_dir_htree_level(fs)) &&
+ /* if htree level is clearly too high, consider it to be broken */
+ if (root->indirect_levels > EXT4_HTREE_LEVEL &&
fix_problem(ctx, PR_1_HTREE_DEPTH, pctx))
return 1;
+ /* if level is only maybe too high, LARGE_DIR feature could be unset */
+ if (root->indirect_levels > ext2_dir_htree_level(fs) &&
+ !ext2fs_has_feature_largedir(fs->super)) {
+ int blockbits = EXT2_BLOCK_SIZE_BITS(fs->super) + 10;
+ int idx_pb = 1 << (blockbits - 3);
+
+ /* compare inode size/blocks vs. max-sized 2-level htree */
+ if (EXT2_I_SIZE(pctx->inode) <
+ (idx_pb - 1) * (idx_pb - 2) << blockbits &&
+ pctx->inode->i_blocks <
+ (idx_pb - 1) * (idx_pb - 2) << (blockbits - 9) &&
+ fix_problem(ctx, PR_1_HTREE_DEPTH, pctx))
+ return 1;
+ }
+
+ if (root->indirect_levels > EXT4_HTREE_LEVEL_COMPAT ||
+ ext2fs_needs_large_file_feature(EXT2_I_SIZE(inode)))
+ ctx->large_dirs++;
+
return 0;
}
@@ -2866,7 +2889,8 @@ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx,
(extent.e_pblk + extent.e_len) >
ext2fs_blocks_count(ctx->fs->super))
problem = PR_1_EXTENT_ENDS_BEYOND;
- else if (is_leaf && is_dir &&
+ else if (is_leaf && is_dir && !pctx->inode->i_size_high &&
+ !ext2fs_has_feature_largedir(ctx->fs->super) &&
((extent.e_lblk + extent.e_len) >
(1U << (21 - ctx->fs->super->s_log_block_size))))
problem = PR_1_TOOBIG_DIR;
@@ -2874,9 +2898,10 @@ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx,
if (is_leaf && problem == 0 && extent.e_len > 0) {
#if 0
printf("extent_region(ino=%u, expect=%llu, "
- "lblk=%llu, len=%u)\n",
- pb->ino, pb->next_lblock,
- extent.e_lblk, extent.e_len);
+ "lblk=%llu, len=%u)\n", pb->ino,
+ (unsigned long long) pb->next_lblock,
+ (unsigned long long) extent.e_lblk,
+ extent.e_len);
#endif
if (extent.e_lblk < pb->next_lblock)
problem = PR_1_EXTENT_COLLISION;
@@ -2899,7 +2924,20 @@ static void scan_extent_node(e2fsck_t ctx, struct problem_context *pctx,
return;
failed_csum = 0;
}
-
+#ifdef CONFIG_DEVELOPER_FEATURES
+ if (try_repairs && !is_dir && problem == 0 &&
+ (ctx->options & E2F_OPT_CLEAR_UNINIT) &&
+ (extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT) &&
+ fix_problem(ctx, PR_1_CLEAR_UNINIT_EXTENT, pctx)) {
+ extent.e_flags &= ~EXT2_EXTENT_FLAGS_UNINIT;
+ pb->inode_modified = 1;
+ pctx->errcode = ext2fs_extent_replace(ehandle, 0,
+ &extent);
+ if (pctx->errcode)
+ return;
+ failed_csum = 0;
+ }
+#endif
if (try_repairs && problem) {
report_problem:
if (fix_problem(ctx, problem, pctx)) {
@@ -2989,7 +3027,12 @@ report_problem:
if (extent.e_lblk != lblk) {
struct ext2_extent_info e_info;
- ext2fs_extent_get_info(ehandle, &e_info);
+ pctx->errcode = ext2fs_extent_get_info(ehandle,
+ &e_info);
+ if (pctx->errcode) {
+ pctx->str = "ext2fs_extent_get_info";
+ return;
+ }
pctx->blk = lblk;
pctx->blk2 = extent.e_lblk;
pctx->num = e_info.curr_level - 1;
@@ -3458,11 +3501,13 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
pb.num_blocks *= EXT2FS_CLUSTER_RATIO(fs);
#if 0
printf("inode %u, i_size = %u, last_block = %llu, i_blocks=%llu, num_blocks = %llu\n",
- ino, inode->i_size, pb.last_block, ext2fs_inode_i_blocks(fs, inode),
- pb.num_blocks);
+ ino, inode->i_size, (unsigned long long) pb.last_block,
+ (unsigned long long) ext2fs_inode_i_blocks(fs, inode),
+ (unsigned long long) pb.num_blocks);
#endif
+ size = EXT2_I_SIZE(inode);
if (pb.is_dir) {
- unsigned nblock = inode->i_size >> EXT2_BLOCK_SIZE_BITS(fs->super);
+ unsigned nblock = size >> EXT2_BLOCK_SIZE_BITS(fs->super);
if (inode->i_flags & EXT4_INLINE_DATA_FL) {
int flags;
size_t sz = 0;
@@ -3476,11 +3521,11 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
EXT2_FLAG_IGNORE_CSUM_ERRORS) |
(ctx->fs->flags &
~EXT2_FLAG_IGNORE_CSUM_ERRORS);
- if (err || sz != inode->i_size) {
+ if (err || sz != size) {
bad_size = 7;
pctx->num = sz;
}
- } else if (inode->i_size & (fs->blocksize - 1))
+ } else if (size & (fs->blocksize - 1))
bad_size = 5;
else if (nblock > (pb.last_block + 1))
bad_size = 1;
@@ -3490,7 +3535,6 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
bad_size = 2;
}
} else {
- size = EXT2_I_SIZE(inode);
if ((pb.last_init_lblock >= 0) &&
/* Do not allow initialized allocated blocks past i_size*/
(size < (__u64)pb.last_init_lblock * fs->blocksize) &&
@@ -3513,8 +3557,6 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
pctx->num = (pb.last_block + 1) * fs->blocksize;
pctx->group = bad_size;
if (fix_problem(ctx, PR_1_BAD_I_SIZE, pctx)) {
- if (LINUX_S_ISDIR(inode->i_mode))
- pctx->num &= 0xFFFFFFFFULL;
ext2fs_inode_size_set(fs, inode, pctx->num);
if (EXT2_I_SIZE(inode) == 0 &&
(inode->i_flags & EXT4_INLINE_DATA_FL)) {
@@ -3686,13 +3728,14 @@ static int process_block(ext2_filsys fs,
(unsigned long) pctx->ino, type,
(unsigned long) p->previous_block+1,
(unsigned long) blk,
- blockcnt);
+ (long long) blockcnt);
}
p->fragmented = 1;
}
}
if (p->is_dir && !ext2fs_has_feature_largedir(fs->super) &&
+ !pctx->inode->i_size_high &&
blockcnt > (1 << (21 - fs->super->s_log_block_size)))
problem = PR_1_TOOBIG_DIR;
if (p->is_dir && p->num_blocks + 1 >= p->max_blocks)
diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c
index 5693b9cf..92c746c1 100644
--- a/e2fsck/pass1b.c
+++ b/e2fsck/pass1b.c
@@ -104,7 +104,8 @@ static dict_t clstr_dict, ino_dict;
static ext2fs_inode_bitmap inode_dup_map;
-static int dict_int_cmp(const void *a, const void *b)
+static int dict_int_cmp(const void *cmp_ctx EXT2FS_ATTR((unused)),
+ const void *a, const void *b)
{
intptr_t ia, ib;
@@ -180,10 +181,10 @@ static void inode_dnode_free(dnode_t *node,
di = (struct dup_inode *) dnode_get(node);
for (p = di->cluster_list; p; p = next) {
next = p->next;
- free(p);
+ ext2fs_free_mem(&p);
}
- free(di);
- free(node);
+ ext2fs_free_mem(&di);
+ ext2fs_free_mem(&node);
}
/*
@@ -198,10 +199,10 @@ static void cluster_dnode_free(dnode_t *node,
dc = (struct dup_cluster *) dnode_get(node);
for (p = dc->inode_list; p; p = next) {
next = p->next;
- free(p);
+ ext2fs_free_mem(&p);
}
- free(dc);
- free(node);
+ ext2fs_free_mem(&dc);
+ ext2fs_free_mem(&node);
}
@@ -670,7 +671,7 @@ static int delete_file_block(ext2_filsys fs,
} else
com_err("delete_file_block", 0,
_("internal error: can't find dup_blk for %llu\n"),
- *block_nr);
+ (unsigned long long) *block_nr);
} else {
if ((*block_nr % EXT2FS_CLUSTER_RATIO(ctx->fs)) == 0)
ext2fs_block_alloc_stats2(fs, *block_nr, -1);
@@ -705,6 +706,10 @@ static void delete_file(e2fsck_t ctx, ext2_ino_t ino,
fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
if (ctx->inode_bad_map)
ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
+ if (ctx->inode_reg_map)
+ ext2fs_unmark_inode_bitmap2(ctx->inode_reg_map, ino);
+ ext2fs_unmark_inode_bitmap2(ctx->inode_dir_map, ino);
+ ext2fs_unmark_inode_bitmap2(ctx->inode_used_map, ino);
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(dp->inode.i_mode));
quota_data_sub(ctx->qctx, &dp->inode, ino,
pb.dup_blocks * fs->blocksize);
@@ -824,7 +829,7 @@ static int clone_file_block(ext2_filsys fs,
if (!n) {
com_err("clone_file_block", 0,
_("internal error: can't find dup_blk for %llu\n"),
- *block_nr);
+ (unsigned long long) *block_nr);
return 0;
}
@@ -874,7 +879,8 @@ cluster_alloc_ok:
}
#if 0
printf("Cloning block #%lld from %llu to %llu\n",
- blockcnt, *block_nr, new_block);
+ blockcnt, (unsigned long long) *block_nr,
+ (unsigned long long) new_block);
#endif
retval = io_channel_read_blk64(fs->io, *block_nr, 1, cs->buf);
if (retval) {
@@ -974,7 +980,8 @@ static errcode_t clone_file(e2fsck_t ctx, ext2_ino_t ino,
if (!n) {
com_err("clone_file", 0,
_("internal error: couldn't lookup EA "
- "block record for %llu"), blk);
+ "block record for %llu"),
+ (unsigned long long) blk);
retval = 0; /* OK to stumble on... */
goto errout;
}
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index c45c73ef..1b2cb94a 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -35,10 +35,14 @@
* - The inode_used_map bitmap
* - The inode_bad_map bitmap
* - The inode_dir_map bitmap
+ * - The encrypted_file_info
+ * - The inode_casefold_map bitmap
*
* Pass 2 frees the following data structures
* - The inode_bad_map bitmap
* - The inode_reg_map bitmap
+ * - The encrypted_file_info
+ * - The inode_casefold_map bitmap
*/
#define _GNU_SOURCE 1 /* get strnlen() */
@@ -71,8 +75,8 @@ static int allocate_dir_block(e2fsck_t ctx,
struct ext2_db_entry2 *dir_blocks_info,
char *buf, struct problem_context *pctx);
static void clear_htree(e2fsck_t ctx, ext2_ino_t ino);
-static int htree_depth(struct dx_dir_info *dx_dir,
- struct dx_dirblock_info *dx_db);
+static short htree_depth(struct dx_dir_info *dx_dir,
+ struct dx_dirblock_info *dx_db);
static EXT2_QSORT_TYPE special_dir_block_cmp(const void *a, const void *b);
struct check_dir_struct {
@@ -88,7 +92,7 @@ struct check_dir_struct {
static void update_parents(struct dx_dir_info *dx_dir, int type)
{
struct dx_dirblock_info *dx_db, *dx_parent, *dx_previous;
- int b;
+ blk_t b;
for (b = 0, dx_db = dx_dir->dx_block;
b < dx_dir->numblocks;
@@ -130,8 +134,9 @@ void e2fsck_pass2(e2fsck_t ctx)
struct check_dir_struct cd;
struct dx_dir_info *dx_dir;
struct dx_dirblock_info *dx_db;
- int b;
- int i, depth;
+ blk_t b;
+ ext2_ino_t i;
+ short depth;
problem_t code;
int bad_dir;
int (*check_dir_func)(ext2_filsys fs,
@@ -284,10 +289,11 @@ void e2fsck_pass2(e2fsck_t ctx)
ext2fs_free_inode_bitmap(ctx->inode_reg_map);
ctx->inode_reg_map = 0;
}
- if (ctx->encrypted_dirs) {
- ext2fs_u32_list_free(ctx->encrypted_dirs);
- ctx->encrypted_dirs = 0;
+ if (ctx->inode_casefold_map) {
+ ext2fs_free_inode_bitmap(ctx->inode_casefold_map);
+ ctx->inode_casefold_map = 0;
}
+ destroy_encrypted_file_info(ctx);
if (ctx->casefolded_dirs) {
ext2fs_u32_list_free(ctx->casefolded_dirs);
ctx->casefolded_dirs = 0;
@@ -314,10 +320,10 @@ cleanup:
}
#define MAX_DEPTH 32000
-static int htree_depth(struct dx_dir_info *dx_dir,
- struct dx_dirblock_info *dx_db)
+static short htree_depth(struct dx_dir_info *dx_dir,
+ struct dx_dirblock_info *dx_db)
{
- int depth = 0;
+ short depth = 0;
while (dx_db->type != DX_DIRBLOCK_ROOT && depth < MAX_DEPTH) {
dx_db = &dx_dir->dx_block[dx_db->parent];
@@ -326,7 +332,8 @@ static int htree_depth(struct dx_dir_info *dx_dir,
return depth;
}
-static int dict_de_cmp(const void *a, const void *b)
+static int dict_de_cmp(const void *cmp_ctx EXT2FS_ATTR((unused)),
+ const void *a, const void *b)
{
const struct ext2_dir_entry *de_a, *de_b;
int a_len, b_len;
@@ -342,6 +349,21 @@ static int dict_de_cmp(const void *a, const void *b)
return memcmp(de_a->name, de_b->name, a_len);
}
+static int dict_de_cf_cmp(const void *cmp_ctx, const void *a, const void *b)
+{
+ const struct ext2fs_nls_table *tbl = cmp_ctx;
+ const struct ext2_dir_entry *de_a, *de_b;
+ int a_len, b_len;
+
+ de_a = (const struct ext2_dir_entry *) a;
+ a_len = ext2fs_dirent_name_len(de_a);
+ de_b = (const struct ext2_dir_entry *) b;
+ b_len = ext2fs_dirent_name_len(de_b);
+
+ return ext2fs_casefold_cmp(tbl, (unsigned char *) de_a->name, a_len,
+ (unsigned char *) de_b->name, b_len);
+}
+
/*
* This is special sort function that makes sure that directory blocks
* with a dirblock of zero are sorted to the beginning of the list.
@@ -508,19 +530,41 @@ static int check_name(e2fsck_t ctx,
}
static int encrypted_check_name(e2fsck_t ctx,
- struct ext2_dir_entry *dirent,
+ const struct ext2_dir_entry *dirent,
struct problem_context *pctx)
{
if (ext2fs_dirent_name_len(dirent) < EXT4_CRYPTO_BLOCK_SIZE) {
- if (fix_problem(ctx, PR_2_BAD_ENCRYPTED_NAME, pctx)) {
- dirent->inode = 0;
+ if (fix_problem(ctx, PR_2_BAD_ENCRYPTED_NAME, pctx))
return 1;
- }
ext2fs_unmark_valid(ctx->fs);
}
return 0;
}
+static int encoded_check_name(e2fsck_t ctx,
+ struct ext2_dir_entry *dirent,
+ struct problem_context *pctx)
+{
+ const struct ext2fs_nls_table *tbl = ctx->fs->encoding;
+ int ret;
+ int len = ext2fs_dirent_name_len(dirent);
+ char *pos, *end;
+
+ ret = ext2fs_check_encoded_name(tbl, dirent->name, len, &pos);
+ if (ret < 0) {
+ fatal_error(ctx, _("NLS is broken."));
+ } else if(ret > 0) {
+ ret = fix_problem(ctx, PR_2_BAD_ENCODED_NAME, pctx);
+ if (ret) {
+ end = &dirent->name[len];
+ for (; *pos && pos != end; pos++)
+ *pos = '.';
+ }
+ }
+
+ return (ret || check_name(ctx, dirent, pctx));
+}
+
/*
* Check the directory filetype (if present)
*/
@@ -573,8 +617,8 @@ static void parse_int_node(ext2_filsys fs,
struct dx_dir_info *dx_dir,
char *block_buf, int failed_csum)
{
- struct ext2_dx_root_info *root;
- struct ext2_dx_entry *ent;
+ struct ext2_dx_root_info *root;
+ struct ext2_dx_entry *ent;
struct ext2_dx_countlimit *limit;
struct dx_dirblock_info *dx_db;
int i, expect_limit, count;
@@ -590,10 +634,10 @@ static void parse_int_node(ext2_filsys fs,
#ifdef DX_DEBUG
printf("Root node dump:\n");
printf("\t Reserved zero: %u\n", root->reserved_zero);
- printf("\t Hash Version: %d\n", root->hash_version);
- printf("\t Info length: %d\n", root->info_length);
- printf("\t Indirect levels: %d\n", root->indirect_levels);
- printf("\t Flags: %d\n", root->unused_flags);
+ printf("\t Hash Version: %u\n", root->hash_version);
+ printf("\t Info length: %u\n", root->info_length);
+ printf("\t Indirect levels: %u\n", root->indirect_levels);
+ printf("\t Flags: %x\n", root->unused_flags);
#endif
ent = (struct ext2_dx_entry *) (block_buf + 24 + root->info_length);
@@ -649,7 +693,7 @@ static void parse_int_node(ext2_filsys fs,
#endif
blk = ext2fs_le32_to_cpu(ent[i].block) & EXT4_DX_BLOCK_MASK;
/* Check to make sure the block is valid */
- if (blk >= (blk_t) dx_dir->numblocks) {
+ if (blk >= dx_dir->numblocks) {
cd->pctx.blk = blk;
if (fix_problem(cd->ctx, PR_2_HTREE_BADBLK,
&cd->pctx))
@@ -883,6 +927,71 @@ err:
return retval;
}
+/* Return true if this type of file needs encryption */
+static int needs_encryption(e2fsck_t ctx, const struct ext2_dir_entry *dirent)
+{
+ int filetype = ext2fs_dirent_file_type(dirent);
+ ext2_ino_t ino = dirent->inode;
+ struct ext2_inode inode;
+
+ if (filetype != EXT2_FT_UNKNOWN)
+ return filetype == EXT2_FT_REG_FILE ||
+ filetype == EXT2_FT_DIR ||
+ filetype == EXT2_FT_SYMLINK;
+
+ if (ext2fs_test_inode_bitmap2(ctx->inode_reg_map, ino) ||
+ ext2fs_test_inode_bitmap2(ctx->inode_dir_map, ino))
+ return 1;
+
+ e2fsck_read_inode(ctx, ino, &inode, "check_encryption_policy");
+ return LINUX_S_ISREG(inode.i_mode) ||
+ LINUX_S_ISDIR(inode.i_mode) ||
+ LINUX_S_ISLNK(inode.i_mode);
+}
+
+/*
+ * All regular files, directories, and symlinks in encrypted directories must be
+ * encrypted using the same encryption policy as their directory.
+ *
+ * Returns 1 if the dirent should be cleared, otherwise 0.
+ */
+static int check_encryption_policy(e2fsck_t ctx,
+ const struct ext2_dir_entry *dirent,
+ __u32 dir_encpolicy_id,
+ struct problem_context *pctx)
+{
+ __u32 file_encpolicy_id = find_encryption_policy(ctx, dirent->inode);
+
+ /* Same policy or both UNRECOGNIZED_ENCRYPTION_POLICY? */
+ if (file_encpolicy_id == dir_encpolicy_id)
+ return 0;
+
+ if (file_encpolicy_id == NO_ENCRYPTION_POLICY) {
+ if (!needs_encryption(ctx, dirent))
+ return 0;
+ return fix_problem(ctx, PR_2_UNENCRYPTED_FILE, pctx);
+ }
+
+ return fix_problem(ctx, PR_2_INCONSISTENT_ENCRYPTION_POLICY, pctx);
+}
+
+/*
+ * Check an encrypted directory entry.
+ *
+ * Returns 1 if the dirent should be cleared, otherwise 0.
+ */
+static int check_encrypted_dirent(e2fsck_t ctx,
+ const struct ext2_dir_entry *dirent,
+ __u32 dir_encpolicy_id,
+ struct problem_context *pctx)
+{
+ if (encrypted_check_name(ctx, dirent, pctx))
+ return 1;
+ if (check_encryption_policy(ctx, dirent, dir_encpolicy_id, pctx))
+ return 1;
+ return 0;
+}
+
static int check_dir_block2(ext2_filsys fs,
struct ext2_db_entry2 *db,
void *priv_data)
@@ -937,16 +1046,25 @@ static int check_dir_block(ext2_filsys fs,
int is_leaf = 1;
size_t inline_data_size = 0;
int filetype = 0;
- int encrypted = 0;
+ __u32 dir_encpolicy_id = NO_ENCRYPTION_POLICY;
int hash_in_dirent = 0;
int casefolded = 0;
size_t max_block_size;
int hash_flags = 0;
+ static char *eop_read_dirblock = NULL;
+ int cf_dir = 0;
cd = (struct check_dir_struct *) priv_data;
ibuf = buf = cd->buf;
ctx = cd->ctx;
+ /* We only want filename encoding verification on strict
+ * mode or if explicitly requested by user. */
+ if (ext2fs_test_inode_bitmap2(ctx->inode_casefold_map, ino) &&
+ ((ctx->fs->super->s_encoding_flags & EXT4_ENC_STRICT_MODE_FL) ||
+ (ctx->options & E2F_OPT_CHECK_ENCODING)))
+ cf_dir = 1;
+
if (ctx->flags & E2F_FLAG_RUN_RETURN)
return DIRENT_ABORT;
@@ -1012,7 +1130,9 @@ static int check_dir_block(ext2_filsys fs,
db->blockcnt, ino);
#endif
- ehandler_operation(_("reading directory block"));
+ if (!eop_read_dirblock)
+ eop_read_dirblock = (char *) _("reading directory block");
+ ehandler_operation(eop_read_dirblock);
if (inline_data_size) {
memset(buf, 0, fs->blocksize - inline_data_size);
cd->pctx.errcode = ext2fs_inline_data_get(fs, ino, 0, buf, 0);
@@ -1099,6 +1219,9 @@ inline_read_fail:
root = (struct ext2_dx_root_info *) (buf + 24);
dx_db->type = DX_DIRBLOCK_ROOT;
dx_db->flags |= DX_FLAG_FIRST | DX_FLAG_LAST;
+
+ /* large_dir was set in pass1 if large dirs were found,
+ * so ext2_dir_htree_level() should now be correct */
if ((root->reserved_zero ||
root->info_length < 8 ||
root->indirect_levels >=
@@ -1158,13 +1281,19 @@ skip_checksum:
} else
max_block_size = fs->blocksize - de_csum_size;
- if (ctx->encrypted_dirs)
- encrypted = ext2fs_u32_list_test(ctx->encrypted_dirs, ino);
+ dir_encpolicy_id = find_encryption_policy(ctx, ino);
+
+ if (cf_dir) {
+ dict_init(&de_dict, DICTCOUNT_T_MAX, dict_de_cf_cmp);
+ dict_set_cmp_context(&de_dict, (void *)ctx->fs->encoding);
+ } else {
+ dict_init(&de_dict, DICTCOUNT_T_MAX, dict_de_cmp);
+ }
if (ctx->casefolded_dirs)
casefolded = ext2fs_u32_list_test(ctx->casefolded_dirs, ino);
- hash_in_dirent = encrypted && casefolded;
+ hash_in_dirent = (casefolded &&
+ (dir_encpolicy_id != NO_ENCRYPTION_POLICY));
- dict_init(&de_dict, DICTCOUNT_T_MAX, dict_de_cmp);
prev = 0;
do {
dgrp_t group;
@@ -1431,18 +1560,29 @@ skip_checksum:
}
}
- if (!encrypted && check_name(ctx, dirent, &cd->pctx))
+ if (check_filetype(ctx, dirent, ino, &cd->pctx))
dir_modified++;
- if (encrypted && (dot_state) > 1 &&
- encrypted_check_name(ctx, dirent, &cd->pctx)) {
- dir_modified++;
- goto next;
+ if (dir_encpolicy_id != NO_ENCRYPTION_POLICY) {
+ /* Encrypted directory */
+ if (dot_state > 1 &&
+ check_encrypted_dirent(ctx, dirent,
+ dir_encpolicy_id,
+ &cd->pctx)) {
+ dirent->inode = 0;
+ dir_modified++;
+ goto next;
+ }
+ } else if (cf_dir) {
+ /* Casefolded directory */
+ if (encoded_check_name(ctx, dirent, &cd->pctx))
+ dir_modified++;
+ } else {
+ /* Unencrypted and uncasefolded directory */
+ if (check_name(ctx, dirent, &cd->pctx))
+ dir_modified++;
}
- if (check_filetype(ctx, dirent, ino, &cd->pctx))
- dir_modified++;
-
if (dx_db) {
if (dx_dir->casefolded_hash)
hash_flags = EXT4_CASEFOLD_FL;
@@ -1722,9 +1862,12 @@ static void deallocate_inode(e2fsck_t ctx, ext2_ino_t ino, char* block_buf)
if (inode.i_flags & EXT4_INLINE_DATA_FL)
goto clear_inode;
- if (LINUX_S_ISREG(inode.i_mode) &&
- ext2fs_needs_large_file_feature(EXT2_I_SIZE(&inode)))
- ctx->large_files--;
+ if (ext2fs_needs_large_file_feature(EXT2_I_SIZE(&inode))) {
+ if (LINUX_S_ISREG(inode.i_mode))
+ ctx->large_files--;
+ else if (LINUX_S_ISDIR(inode.i_mode))
+ ctx->large_dirs--;
+ }
del_block.ctx = ctx;
del_block.num = 0;
@@ -1884,6 +2027,7 @@ int e2fsck_process_bad_inode(e2fsck_t ctx, ext2_ino_t dir,
not_fixed++;
}
if (inode.i_size_high && !ext2fs_has_feature_largedir(fs->super) &&
+ inode.i_blocks < 1ULL << (29 - EXT2_BLOCK_SIZE_BITS(fs->super)) &&
LINUX_S_ISDIR(inode.i_mode)) {
if (fix_problem(ctx, PR_2_DIR_SIZE_HIGH_ZERO, &pctx)) {
inode.i_size_high = 0;
diff --git a/e2fsck/pass4.c b/e2fsck/pass4.c
index 10be7f87..8c2d2f1f 100644
--- a/e2fsck/pass4.c
+++ b/e2fsck/pass4.c
@@ -237,6 +237,8 @@ void e2fsck_pass4(e2fsck_t ctx)
link_counted = 1;
}
if (link_counted != link_count) {
+ int fix_nlink = 0;
+
e2fsck_read_inode_full(ctx, i, EXT2_INODE(inode),
inode_size, "pass4");
pctx.ino = i;
@@ -250,10 +252,20 @@ void e2fsck_pass4(e2fsck_t ctx)
pctx.num = link_counted;
/* i_link_count was previously exceeded, but no longer
* is, fix this but don't consider it an error */
- if ((isdir && link_counted > 1 &&
- (inode->i_flags & EXT2_INDEX_FL) &&
- link_count == 1 && !(ctx->options & E2F_OPT_NO)) ||
- fix_problem(ctx, PR_4_BAD_REF_COUNT, &pctx)) {
+ if (isdir && link_counted > 1 &&
+ (inode->i_flags & EXT2_INDEX_FL) &&
+ link_count == 1) {
+ if ((ctx->options & E2F_OPT_READONLY) == 0) {
+ fix_nlink =
+ fix_problem(ctx,
+ PR_4_DIR_OVERFLOW_REF_COUNT,
+ &pctx);
+ }
+ } else {
+ fix_nlink = fix_problem(ctx, PR_4_BAD_REF_COUNT,
+ &pctx);
+ }
+ if (fix_nlink) {
inode->i_links_count = link_counted;
e2fsck_write_inode_full(ctx, i,
EXT2_INODE(inode),
diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c
index 3a5c88da..c1d45a5f 100644
--- a/e2fsck/pass5.c
+++ b/e2fsck/pass5.c
@@ -842,7 +842,7 @@ static void check_inode_end(e2fsck_t ctx)
clear_problem_context(&pctx);
- end = EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count;
+ end = (__u64)EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count;
pctx.errcode = ext2fs_fudge_inode_bitmap_end(fs->inode_map, end,
&save_inodes_count);
if (pctx.errcode) {
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index a3530f52..eb2824f3 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -1199,9 +1199,9 @@ static struct e2fsck_problem problem_table[] = {
N_("@i %i has a duplicate @x mapping\n\t(logical @b %c, @n physical @b %b, len %N)\n"),
PROMPT_CLEAR, 0, 0, 0, 0 },
- /* Error allocating memory for encrypted directory list */
- { PR_1_ALLOCATE_ENCRYPTED_DIRLIST,
- N_("@A memory for encrypted @d list\n"),
+ /* Error allocating memory for encrypted inode list */
+ { PR_1_ALLOCATE_ENCRYPTED_INODE_LIST,
+ N_("@A %N bytes of memory for encrypted @i list\n"),
PROMPT_NONE, PR_FATAL, 0, 0, 0 },
/* Inode extent tree could be more shallow */
@@ -1243,6 +1243,12 @@ static struct e2fsck_problem problem_table[] = {
N_("EA @i %N for parent @i %i missing EA_INODE flag.\n "),
PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
+ /* Offer to clear uninitialized flag on an extent */
+ { PR_1_CLEAR_UNINIT_EXTENT,
+ /* xgettext:no-c-format */
+ N_("@i %i has @x marked uninitialized at @b %c (len %N). "),
+ PROMPT_CLEAR, PR_PREEN_OK, 0, 0, 0 },
+
/* Casefold flag set on a non-directory */
{ PR_1_CASEFOLD_NONDIR,
N_("@i %i has the casefold flag set but is not a directory. "),
@@ -1253,6 +1259,16 @@ static struct e2fsck_problem problem_table[] = {
N_("@d %p has the casefold flag, but the\ncasefold feature is not enabled. "),
PROMPT_CLEAR_FLAG, 0, 0, 0, 0 },
+ /* Inode has encrypt flag but no encryption extended attribute */
+ { PR_1_MISSING_ENCRYPTION_XATTR,
+ N_("@i %i has encrypt flag but no encryption @a.\n"),
+ PROMPT_CLEAR_FLAG, 0, 0, 0, 0 },
+
+ /* Encrypted inode has corrupt encryption extended attribute */
+ { PR_1_CORRUPT_ENCRYPTION_XATTR,
+ N_("Encrypted @i %i has corrupt encryption @a.\n"),
+ PROMPT_CLEAR_INODE, 0, 0, 0, 0 },
+
/* Htree directory should use SipHash but does not */
{ PR_1_HTREE_NEEDS_SIPHASH,
N_("@h %i uses hash version (%N), but should use SipHash (6) \n"),
@@ -1263,6 +1279,7 @@ static struct e2fsck_problem problem_table[] = {
N_("@h %i uses SipHash, but should not. "),
PROMPT_CLEAR_HTREE, PR_PREEN_OK, 0, 0, 0 },
+
/* Pass 1b errors */
/* Pass 1B: Rescan for duplicate/bad blocks */
@@ -1649,7 +1666,7 @@ static struct e2fsck_problem problem_table[] = {
/* Filesystem contains large files, but has no such flag in sb */
{ PR_2_FEATURE_LARGE_FILES,
N_("@f contains large files, but lacks LARGE_FILE flag in @S.\n"),
- PROMPT_FIX, 0, 0, 0, 0 },
+ PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
/* Node in HTREE directory not referenced */
{ PR_2_HTREE_NOTREF,
@@ -1675,6 +1692,11 @@ static struct e2fsck_problem problem_table[] = {
{ PR_2_HTREE_CLEAR,
N_("@n @h %d (%q). "), PROMPT_CLEAR_HTREE, 0, 0, 0, 0 },
+ /* Filesystem has large directories, but has no such flag in sb */
+ { PR_2_FEATURE_LARGE_DIRS,
+ N_("@f has large directories, but lacks LARGE_DIR flag in @S.\n"),
+ PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
+
/* Bad block in htree interior node */
{ PR_2_HTREE_BADBLK,
N_("@p @h %d (%q): bad @b number %b.\n"),
@@ -1685,7 +1707,7 @@ static struct e2fsck_problem problem_table[] = {
N_("Error adjusting refcount for @a @b %b (@i %i): %m\n"),
PROMPT_NONE, PR_FATAL, 0, 0, 0 },
- /* Invalid HTREE root node */
+ /* Problem in HTREE directory inode: root node is invalid */
{ PR_2_HTREE_BAD_ROOT,
/* xgettext:no-c-format */
N_("@p @h %d: root node is @n\n"),
@@ -1789,11 +1811,27 @@ static struct e2fsck_problem problem_table[] = {
N_("Encrypted @E is too short.\n"),
PROMPT_CLEAR, 0, 0, 0, 0 },
+ /* Encrypted directory contains unencrypted file */
+ { PR_2_UNENCRYPTED_FILE,
+ N_("Encrypted @E references unencrypted @i %Di.\n"),
+ PROMPT_CLEAR, 0, 0, 0, 0 },
+
+ /* Encrypted directory contains file with different encryption policy */
+ { PR_2_INCONSISTENT_ENCRYPTION_POLICY,
+ N_("Encrypted @E references @i %Di, which has a different encryption policy.\n"),
+ PROMPT_CLEAR, 0, 0, 0, 0 },
+
+ /* Casefolded directory entry has illegal characters in its name */
+ { PR_2_BAD_ENCODED_NAME,
+ N_("@E has illegal UTF-8 characters in its name.\n"),
+ PROMPT_FIX, 0, 0, 0, 0 },
+
/* Non-unique filename found, but can't rename */
{ PR_2_NON_UNIQUE_FILE_NO_RENAME,
N_("Duplicate filename @E found. "),
PROMPT_CLEAR, 0, 0, 0, 0 },
+
/* Pass 3 errors */
/* Pass 3: Checking directory connectivity */
@@ -2024,6 +2062,11 @@ static struct e2fsck_problem problem_table[] = {
N_("@d exceeds max links, but no DIR_NLINK feature in @S.\n"),
PROMPT_FIX, 0, 0, 0, 0 },
+ /* Directory inode ref count set to overflow but could be exact value */
+ { PR_4_DIR_OVERFLOW_REF_COUNT,
+ N_("@d @i %i ref count set to overflow but could be exact value %N. "),
+ PROMPT_FIX, PR_PREEN_OK, 0, 0, 0 },
+
/* Pass 5 errors */
/* Pass 5: Checking group summary information */
@@ -2343,11 +2386,11 @@ static void print_problem(FILE *f, problem_t code, int answer, int fixed,
if (pctx->dir)
fprintf(f, " dir=\"%u\"", pctx->dir);
if (pctx->blk)
- fprintf(f, " blk=\"%llu\"", pctx->blk);
+ fprintf(f, " blk=\"%llu\"", (unsigned long long) pctx->blk);
if (pctx->blk2)
- fprintf(f, " blk2=\"%llu\"", pctx->blk2);
+ fprintf(f, " blk2=\"%llu\"", (unsigned long long) pctx->blk2);
if (pctx->blkcount != (e2_blkcnt_t) -1)
- fprintf(f, " blkcount=\"%lld\"", pctx->blkcount);
+ fprintf(f, " blkcount=\"%lld\"", (unsigned long long) pctx->blkcount);
if (pctx->group != (dgrp_t) -1)
fprintf(f, " group=\"%u\"", pctx->group);
if (pctx->csum1)
@@ -2355,9 +2398,9 @@ static void print_problem(FILE *f, problem_t code, int answer, int fixed,
if (pctx->csum2)
fprintf(f, " csum2=\"%u\"", pctx->csum2);
if (pctx->num)
- fprintf(f, " num=\"%llu\"", pctx->num);
+ fprintf(f, " num=\"%llu\"", (unsigned long long) pctx->num);
if (pctx->num2)
- fprintf(f, " num2=\"%llu\"", pctx->num2);
+ fprintf(f, " num2=\"%llu\"", (unsigned long long) pctx->num2);
if (pctx->str)
fprintf(f, " str=\"%s\"", pctx->str);
fputs("/>\n", f);
diff --git a/e2fsck/problem.h b/e2fsck/problem.h
index e67e4cac..24cdcf9b 100644
--- a/e2fsck/problem.h
+++ b/e2fsck/problem.h
@@ -667,8 +667,8 @@ struct problem_context {
/* Inode leaf has a duplicate extent mapping */
#define PR_1_EXTENT_COLLISION 0x01007D
-/* Error allocating memory for encrypted directory list */
-#define PR_1_ALLOCATE_ENCRYPTED_DIRLIST 0x01007E
+/* Error allocating memory for encrypted inode list */
+#define PR_1_ALLOCATE_ENCRYPTED_INODE_LIST 0x01007E
/* Inode extent tree could be more shallow */
#define PR_1_EXTENT_BAD_MAX_DEPTH 0x01007F
@@ -701,6 +701,12 @@ struct problem_context {
/* Casefold flag set, but file system is missing the casefold feature */
#define PR_1_CASEFOLD_FEATURE 0x010089
+/* Inode has encrypt flag but no encryption extended attribute */
+#define PR_1_MISSING_ENCRYPTION_XATTR 0x01008A
+
+/* Encrypted inode has corrupt encryption extended attribute */
+#define PR_1_CORRUPT_ENCRYPTION_XATTR 0x01008B
+
/* Error allocating memory for casefolded directory list */
#define PR_1_ALLOCATE_CASEFOLDED_DIRLIST 0x01008C
@@ -957,8 +963,8 @@ struct problem_context {
/* Clear invalid HTREE directory */
#define PR_2_HTREE_CLEAR 0x020038
-/* Clear the htree flag forcibly */
-/* #define PR_2_HTREE_FCLR 0x020039 */
+/* Filesystem has large directories, but has no such flag in superblock */
+#define PR_2_FEATURE_LARGE_DIRS 0x020039
/* Bad block in htree interior node */
#define PR_2_HTREE_BADBLK 0x02003A
@@ -1026,8 +1032,17 @@ struct problem_context {
/* Encrypted directory entry is too short */
#define PR_2_BAD_ENCRYPTED_NAME 0x020050
+/* Encrypted directory contains unencrypted file */
+#define PR_2_UNENCRYPTED_FILE 0x020051
+
+/* Encrypted directory contains file with different encryption policy */
+#define PR_2_INCONSISTENT_ENCRYPTION_POLICY 0x020052
+
+/* Encoded directory entry has illegal characters in its name */
+#define PR_2_BAD_ENCODED_NAME 0x020053
+
/* Non-unique filename found, but can't rename */
-#define PR_2_NON_UNIQUE_FILE_NO_RENAME 0x020053
+#define PR_2_NON_UNIQUE_FILE_NO_RENAME 0x020054
/*
* Pass 3 errors
@@ -1165,6 +1180,9 @@ struct problem_context {
/* directory exceeds max links, but no DIR_NLINK feature in superblock */
#define PR_4_DIR_NLINK_FEATURE 0x040006
+/* Directory ref count set to overflow but it doesn't have to be */
+#define PR_4_DIR_OVERFLOW_REF_COUNT 0x040007
+
/*
* Pass 5 errors
*/
diff --git a/e2fsck/recovery.c b/e2fsck/recovery.c
index 81110e4d..1e07dfac 100644
--- a/e2fsck/recovery.c
+++ b/e2fsck/recovery.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
/*
* linux/fs/jbd2/recovery.c
*
@@ -5,10 +6,6 @@
*
* Copyright 1999-2000 Red Hat Software --- All Rights Reserved
*
- * This file is part of the Linux kernel and is made available under
- * the terms of the GNU General Public License, version 2, or at your
- * option, any later version, incorporated herein by reference.
- *
* Journal recovery routines for the generic filesystem journaling code;
* part of the ext2fs journaling system.
*/
@@ -38,7 +35,6 @@ struct recovery_info
int nr_revoke_hits;
};
-enum passtype {PASS_SCAN, PASS_REVOKE, PASS_REPLAY};
static int do_one_pass(journal_t *journal,
struct recovery_info *info, enum passtype pass);
static int scan_revoke_records(journal_t *, struct buffer_head *,
@@ -78,8 +74,8 @@ static int do_readahead(journal_t *journal, unsigned int start)
/* Do up to 128K of readahead */
max = start + (128 * 1024 / journal->j_blocksize);
- if (max > journal->j_maxlen)
- max = journal->j_maxlen;
+ if (max > journal->j_total_len)
+ max = journal->j_total_len;
/* Do the readahead itself. We'll submit MAXBUF buffer_heads at
* a time to the block device IO layer. */
@@ -87,7 +83,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
nbufs = 0;
for (next = start; next < max; next++) {
- err = journal_bmap(journal, next, &blocknr);
+ err = jbd2_journal_bmap(journal, next, &blocknr);
if (err) {
printk(KERN_ERR "JBD2: bad block at offset %u\n",
@@ -104,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
bufs[nbufs++] = bh;
if (nbufs == MAXBUF) {
- ll_rw_block(READ, nbufs, bufs);
+ ll_rw_block(REQ_OP_READ, 0, nbufs, bufs);
journal_brelse_array(bufs, nbufs);
nbufs = 0;
}
@@ -113,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
}
if (nbufs)
- ll_rw_block(READ, nbufs, bufs);
+ ll_rw_block(REQ_OP_READ, 0, nbufs, bufs);
err = 0;
failed:
@@ -124,27 +120,6 @@ failed:
#endif /* __KERNEL__ */
-static inline __u32 get_be32(__be32 *p)
-{
- unsigned char *cp = (unsigned char *) p;
- __u32 ret;
-
- ret = *cp++;
- ret = (ret << 8) + *cp++;
- ret = (ret << 8) + *cp++;
- ret = (ret << 8) + *cp++;
- return ret;
-}
-
-static inline __u16 get_be16(__be16 *p)
-{
- unsigned char *cp = (unsigned char *) p;
- __u16 ret;
-
- ret = *cp++;
- ret = (ret << 8) + *cp++;
- return ret;
-}
/*
* Read a block from the journal
@@ -159,12 +134,12 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
*bhp = NULL;
- if (offset >= journal->j_maxlen) {
+ if (offset >= journal->j_total_len) {
printk(KERN_ERR "JBD2: corrupted journal superblock\n");
return -EFSCORRUPTED;
}
- err = journal_bmap(journal, offset, &blocknr);
+ err = jbd2_journal_bmap(journal, offset, &blocknr);
if (err) {
printk(KERN_ERR "JBD2: bad block at offset %u\n",
@@ -195,24 +170,23 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
return 0;
}
-static int jbd2_descr_block_csum_verify(journal_t *j,
- void *buf)
+static int jbd2_descriptor_block_csum_verify(journal_t *j, void *buf)
{
- struct journal_block_tail *tail;
- __u32 provided;
+ struct jbd2_journal_block_tail *tail;
+ __be32 provided;
__u32 calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
- tail = (struct journal_block_tail *)((char *)buf + j->j_blocksize -
- sizeof(struct journal_block_tail));
+ tail = (struct jbd2_journal_block_tail *)(buf + j->j_blocksize -
+ sizeof(struct jbd2_journal_block_tail));
provided = tail->t_checksum;
tail->t_checksum = 0;
calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
tail->t_checksum = provided;
- return provided == ext2fs_cpu_to_be32(calculated);
+ return provided == cpu_to_be32(calculated);
}
/*
@@ -226,8 +200,8 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
int nr = 0, size = journal->j_blocksize;
int tag_bytes = journal_tag_bytes(journal);
- if (journal_has_csum_v2or3(journal))
- size -= sizeof(struct journal_block_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ size -= sizeof(struct jbd2_journal_block_tail);
tagp = &bh->b_data[sizeof(journal_header_t)];
@@ -236,10 +210,10 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
nr++;
tagp += tag_bytes;
- if (!(get_be16(&tag->t_flags) & JFS_FLAG_SAME_UUID))
+ if (!(tag->t_flags & cpu_to_be16(JBD2_FLAG_SAME_UUID)))
tagp += 16;
- if (get_be16(&tag->t_flags) & JFS_FLAG_LAST_TAG)
+ if (tag->t_flags & cpu_to_be16(JBD2_FLAG_LAST_TAG))
break;
}
@@ -250,12 +224,52 @@ static int count_tags(journal_t *journal, struct buffer_head *bh)
/* Make sure we wrap around the log correctly! */
#define wrap(journal, var) \
do { \
- if (var >= (journal)->j_last) \
- var -= ((journal)->j_last - (journal)->j_first); \
+ unsigned long _wrap_last = \
+ jbd2_has_feature_fast_commit(journal) ? \
+ (journal)->j_fc_last : (journal)->j_last; \
+ \
+ if (var >= _wrap_last) \
+ var -= (_wrap_last - (journal)->j_first); \
} while (0)
+static int fc_do_one_pass(journal_t *journal,
+ struct recovery_info *info, enum passtype pass)
+{
+ unsigned int expected_commit_id = info->end_transaction;
+ unsigned long next_fc_block;
+ struct buffer_head *bh;
+ int err = 0;
+
+ next_fc_block = journal->j_fc_first;
+ if (!journal->j_fc_replay_callback)
+ return 0;
+
+ while (next_fc_block <= journal->j_fc_last) {
+ jbd_debug(3, "Fast commit replay: next block %ld\n",
+ next_fc_block);
+ err = jread(&bh, journal, next_fc_block);
+ if (err) {
+ jbd_debug(3, "Fast commit replay: read error\n");
+ break;
+ }
+
+ err = journal->j_fc_replay_callback(journal, bh, pass,
+ next_fc_block - journal->j_fc_first,
+ expected_commit_id);
+ next_fc_block++;
+ if (err < 0 || err == JBD2_FC_REPLAY_STOP)
+ break;
+ err = 0;
+ }
+
+ if (err)
+ jbd_debug(3, "Fast commit replay failed, err = %d\n", err);
+
+ return err;
+}
+
/**
- * journal_recover - recovers a on-disk journal
+ * jbd2_journal_recover - recovers a on-disk journal
* @journal: the journal to recover
*
* The primary function for recovering the log contents when mounting a
@@ -266,7 +280,7 @@ do { \
* blocks. In the third and final pass, we replay any un-revoked blocks
* in the log.
*/
-int journal_recover(journal_t *journal)
+int jbd2_journal_recover(journal_t *journal)
{
int err, err2;
journal_superblock_t * sb;
@@ -284,8 +298,8 @@ int journal_recover(journal_t *journal)
if (!sb->s_start) {
jbd_debug(1, "No recovery required, last transaction %d\n",
- ext2fs_be32_to_cpu(sb->s_sequence));
- journal->j_transaction_sequence = ext2fs_be32_to_cpu(sb->s_sequence) + 1;
+ be32_to_cpu(sb->s_sequence));
+ journal->j_transaction_sequence = be32_to_cpu(sb->s_sequence) + 1;
return 0;
}
@@ -305,13 +319,13 @@ int journal_recover(journal_t *journal)
* any existing commit records in the log. */
journal->j_transaction_sequence = ++info.end_transaction;
- journal_clear_revoke(journal);
+ jbd2_journal_clear_revoke(journal);
err2 = sync_blockdev(journal->j_fs_dev);
if (!err)
err = err2;
/* Make sure all replayed data is on permanent storage */
- if (journal->j_flags & JFS_BARRIER) {
- err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
+ if (journal->j_flags & JBD2_BARRIER) {
+ err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL);
if (!err)
err = err2;
}
@@ -319,7 +333,7 @@ int journal_recover(journal_t *journal)
}
/**
- * journal_skip_recovery - Start journal and wipe exiting records
+ * jbd2_journal_skip_recovery - Start journal and wipe exiting records
* @journal: journal to startup
*
* Locate any valid recovery information from the journal and set up the
@@ -331,7 +345,7 @@ int journal_recover(journal_t *journal)
* much recovery information is being erased, and to let us initialise
* the journal transaction sequence numbers to the next unused ID.
*/
-int journal_skip_recovery(journal_t *journal)
+int jbd2_journal_skip_recovery(journal_t *journal)
{
int err;
@@ -345,9 +359,9 @@ int journal_skip_recovery(journal_t *journal)
printk(KERN_ERR "JBD2: error %d scanning journal\n", err);
++journal->j_transaction_sequence;
} else {
-#ifdef CONFIG_JFS_DEBUG
- int dropped = info.end_transaction -
- ext2fs_be32_to_cpu(journal->j_superblock->s_sequence);
+#ifdef CONFIG_JBD2_DEBUG
+ int dropped = info.end_transaction -
+ be32_to_cpu(journal->j_superblock->s_sequence);
jbd_debug(1,
"JBD2: ignoring %d transaction%s from the journal.\n",
dropped, (dropped == 1) ? "" : "s");
@@ -362,9 +376,9 @@ int journal_skip_recovery(journal_t *journal)
static inline unsigned long long read_tag_block(journal_t *journal,
journal_block_tag_t *tag)
{
- unsigned long long block = get_be32(&tag->t_blocknr);
- if (jfs_has_feature_64bit(journal))
- block |= (u64)get_be32(&tag->t_blocknr_high) << 32;
+ unsigned long long block = be32_to_cpu(tag->t_blocknr);
+ if (jbd2_has_feature_64bit(journal))
+ block |= (u64)be32_to_cpu(tag->t_blocknr_high) << 32;
return block;
}
@@ -403,10 +417,10 @@ static int calc_chksums(journal_t *journal, struct buffer_head *bh,
static int jbd2_commit_block_csum_verify(journal_t *j, void *buf)
{
struct commit_header *h;
- __u32 provided;
+ __be32 provided;
__u32 calculated;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
h = buf;
@@ -415,7 +429,7 @@ static int jbd2_commit_block_csum_verify(journal_t *j, void *buf)
calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
h->h_chksum[0] = provided;
- return provided == ext2fs_cpu_to_be32(calculated);
+ return provided == cpu_to_be32(calculated);
}
static int jbd2_block_tag_csum_verify(journal_t *j, journal_block_tag_t *tag,
@@ -423,19 +437,19 @@ static int jbd2_block_tag_csum_verify(journal_t *j, journal_block_tag_t *tag,
{
journal_block_tag3_t *tag3 = (journal_block_tag3_t *)tag;
__u32 csum32;
- __u32 seq;
+ __be32 seq;
- if (!journal_has_csum_v2or3(j))
+ if (!jbd2_journal_has_csum_v2or3(j))
return 1;
- seq = ext2fs_cpu_to_be32(sequence);
+ seq = cpu_to_be32(sequence);
csum32 = jbd2_chksum(j, j->j_csum_seed, (__u8 *)&seq, sizeof(seq));
csum32 = jbd2_chksum(j, csum32, buf, j->j_blocksize);
- if (jfs_has_feature_csum3(j))
- return get_be32(&tag3->t_checksum) == csum32;
-
- return get_be16(&tag->t_checksum) == (csum32 & 0xFFFF);
+ if (jbd2_has_feature_csum3(j))
+ return tag3->t_checksum == cpu_to_be32(csum32);
+ else
+ return tag->t_checksum == cpu_to_be16(csum32);
}
static int do_one_pass(journal_t *journal,
@@ -453,6 +467,8 @@ static int do_one_pass(journal_t *journal,
__u32 crc32_sum = ~0; /* Transactional Checksums */
int descr_csum_size = 0;
int block_error = 0;
+ bool need_check_commit_time = false;
+ __u64 last_trans_commit_time = 0, commit_time;
/*
* First thing is to establish what we expect to find in the log
@@ -461,8 +477,8 @@ static int do_one_pass(journal_t *journal,
*/
sb = journal->j_superblock;
- next_commit_ID = ext2fs_be32_to_cpu(sb->s_sequence);
- next_log_block = ext2fs_be32_to_cpu(sb->s_start);
+ next_commit_ID = be32_to_cpu(sb->s_sequence);
+ next_log_block = be32_to_cpu(sb->s_start);
first_commit_ID = next_commit_ID;
if (pass == PASS_SCAN)
@@ -495,7 +511,9 @@ static int do_one_pass(journal_t *journal,
break;
jbd_debug(2, "Scanning for sequence ID %u at %lu/%lu\n",
- next_commit_ID, next_log_block, journal->j_last);
+ next_commit_ID, next_log_block,
+ jbd2_has_feature_fast_commit(journal) ?
+ journal->j_fc_last : journal->j_last);
/* Skip over each chunk of the transaction looking
* either the next descriptor block or the final commit
@@ -517,13 +535,13 @@ static int do_one_pass(journal_t *journal,
tmp = (journal_header_t *)bh->b_data;
- if (tmp->h_magic != ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER)) {
+ if (tmp->h_magic != cpu_to_be32(JBD2_MAGIC_NUMBER)) {
brelse(bh);
break;
}
- blocktype = ext2fs_be32_to_cpu(tmp->h_blocktype);
- sequence = ext2fs_be32_to_cpu(tmp->h_sequence);
+ blocktype = be32_to_cpu(tmp->h_blocktype);
+ sequence = be32_to_cpu(tmp->h_sequence);
jbd_debug(3, "Found magic %d, sequence %d\n",
blocktype, sequence);
@@ -537,17 +555,29 @@ static int do_one_pass(journal_t *journal,
* to do with it? That depends on the pass... */
switch(blocktype) {
- case JFS_DESCRIPTOR_BLOCK:
+ case JBD2_DESCRIPTOR_BLOCK:
/* Verify checksum first */
- if (journal_has_csum_v2or3(journal))
+ if (jbd2_journal_has_csum_v2or3(journal))
descr_csum_size =
- sizeof(struct journal_block_tail);
+ sizeof(struct jbd2_journal_block_tail);
if (descr_csum_size > 0 &&
- !jbd2_descr_block_csum_verify(journal,
- bh->b_data)) {
- err = -EFSBADCRC;
- brelse(bh);
- goto failed;
+ !jbd2_descriptor_block_csum_verify(journal,
+ bh->b_data)) {
+ /*
+ * PASS_SCAN can see stale blocks due to lazy
+ * journal init. Don't error out on those yet.
+ */
+ if (pass != PASS_SCAN) {
+ pr_err("JBD2: Invalid checksum recovering block %lu in log\n",
+ next_log_block);
+ err = -EFSBADCRC;
+ brelse(bh);
+ goto failed;
+ }
+ need_check_commit_time = true;
+ jbd_debug(1,
+ "invalid descriptor block found in %lu\n",
+ next_log_block);
}
/* If it is a valid descriptor block, replay it
@@ -556,7 +586,8 @@ static int do_one_pass(journal_t *journal,
* just skip over the blocks it describes. */
if (pass != PASS_REPLAY) {
if (pass == PASS_SCAN &&
- jfs_has_feature_checksum(journal) &&
+ jbd2_has_feature_checksum(journal) &&
+ !need_check_commit_time &&
!info->end_transaction) {
if (calc_chksums(journal, bh,
&next_log_block,
@@ -583,7 +614,7 @@ static int do_one_pass(journal_t *journal,
unsigned long io_block;
tag = (journal_block_tag_t *) tagp;
- flags = get_be16(&tag->t_flags);
+ flags = be16_to_cpu(tag->t_flags);
io_block = next_log_block++;
wrap(journal, next_log_block);
@@ -606,7 +637,7 @@ static int do_one_pass(journal_t *journal,
/* If the block has been
* revoked, then we're all done
* here. */
- if (journal_test_revoke
+ if (jbd2_journal_test_revoke
(journal, blocknr,
next_commit_ID)) {
brelse(obh);
@@ -617,13 +648,13 @@ static int do_one_pass(journal_t *journal,
/* Look for block corruption */
if (!jbd2_block_tag_csum_verify(
journal, tag, obh->b_data,
- ext2fs_be32_to_cpu(tmp->h_sequence))) {
+ be32_to_cpu(tmp->h_sequence))) {
brelse(obh);
success = -EFSBADCRC;
printk(KERN_ERR "JBD2: Invalid "
"checksum recovering "
- "block %llu in log\n",
- blocknr);
+ "data block %llu in "
+ "log\n", blocknr);
block_error = 1;
goto skip_write;
}
@@ -646,10 +677,9 @@ static int do_one_pass(journal_t *journal,
lock_buffer(nbh);
memcpy(nbh->b_data, obh->b_data,
journal->j_blocksize);
- if (flags & JFS_FLAG_ESCAPE) {
- __u32 magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- memcpy(nbh->b_data, &magic,
- sizeof(magic));
+ if (flags & JBD2_FLAG_ESCAPE) {
+ *((__be32 *)nbh->b_data) =
+ cpu_to_be32(JBD2_MAGIC_NUMBER);
}
BUFFER_TRACE(nbh, "marking dirty");
@@ -665,17 +695,17 @@ static int do_one_pass(journal_t *journal,
skip_write:
tagp += tag_bytes;
- if (!(flags & JFS_FLAG_SAME_UUID))
+ if (!(flags & JBD2_FLAG_SAME_UUID))
tagp += 16;
- if (flags & JFS_FLAG_LAST_TAG)
+ if (flags & JBD2_FLAG_LAST_TAG)
break;
}
brelse(bh);
continue;
- case JFS_COMMIT_BLOCK:
+ case JBD2_COMMIT_BLOCK:
/* How to differentiate between interrupted commit
* and journal corruption ?
*
@@ -689,7 +719,7 @@ static int do_one_pass(journal_t *journal,
* | GO TO NEXT "Journal Corruption"
* | TRANSACTION
* |
- * {(n+1)th transaction}
+ * {(n+1)th transanction}
* |
* _______|______________
* | |
@@ -706,20 +736,47 @@ static int do_one_pass(journal_t *journal,
* mentioned conditions. Hence assume
* "Interrupted Commit".)
*/
+ commit_time = be64_to_cpu(
+ ((struct commit_header *)bh->b_data)->h_commit_sec);
+ /*
+ * If need_check_commit_time is set, it means we are in
+ * PASS_SCAN and csum verify failed before. If
+ * commit_time is increasing, it's the same journal,
+ * otherwise it is stale journal block, just end this
+ * recovery.
+ */
+ if (need_check_commit_time) {
+ if (commit_time >= last_trans_commit_time) {
+ pr_err("JBD2: Invalid checksum found in transaction %u\n",
+ next_commit_ID);
+ err = -EFSBADCRC;
+ brelse(bh);
+ goto failed;
+ }
+ ignore_crc_mismatch:
+ /*
+ * It likely does not belong to same journal,
+ * just end this recovery with success.
+ */
+ jbd_debug(1, "JBD2: Invalid checksum ignored in transaction %u, likely stale data\n",
+ next_commit_ID);
+ err = 0;
+ brelse(bh);
+ goto done;
+ }
- /* Found an expected commit block: if checksums
- * are present verify them in PASS_SCAN; else not
+ /*
+ * Found an expected commit block: if checksums
+ * are present, verify them in PASS_SCAN; else not
* much to do other than move on to the next sequence
- * number. */
+ * number.
+ */
if (pass == PASS_SCAN &&
- jfs_has_feature_checksum(journal)) {
- int chksum_err, chksum_seen;
+ jbd2_has_feature_checksum(journal)) {
struct commit_header *cbh =
(struct commit_header *)bh->b_data;
unsigned found_chksum =
- ext2fs_be32_to_cpu(cbh->h_chksum[0]);
-
- chksum_err = chksum_seen = 0;
+ be32_to_cpu(cbh->h_chksum[0]);
if (info->end_transaction) {
journal->j_failed_commit =
@@ -728,56 +785,52 @@ static int do_one_pass(journal_t *journal,
break;
}
- if (crc32_sum == found_chksum &&
- cbh->h_chksum_type == JFS_CRC32_CHKSUM &&
- cbh->h_chksum_size ==
- JFS_CRC32_CHKSUM_SIZE)
- chksum_seen = 1;
- else if (!(cbh->h_chksum_type == 0 &&
- cbh->h_chksum_size == 0 &&
- found_chksum == 0 &&
- !chksum_seen))
- /*
- * If fs is mounted using an old kernel and then
- * kernel with journal_chksum is used then we
- * get a situation where the journal flag has
- * checksum flag set but checksums are not
- * present i.e chksum = 0, in the individual
- * commit blocks.
- * Hence to avoid checksum failures, in this
- * situation, this extra check is added.
- */
- chksum_err = 1;
-
- if (chksum_err) {
- info->end_transaction = next_commit_ID;
+ /* Neither checksum match nor unused? */
+ if (!((crc32_sum == found_chksum &&
+ cbh->h_chksum_type ==
+ JBD2_CRC32_CHKSUM &&
+ cbh->h_chksum_size ==
+ JBD2_CRC32_CHKSUM_SIZE) ||
+ (cbh->h_chksum_type == 0 &&
+ cbh->h_chksum_size == 0 &&
+ found_chksum == 0)))
+ goto chksum_error;
- if (!jfs_has_feature_async_commit(journal)){
- journal->j_failed_commit =
- next_commit_ID;
- brelse(bh);
- break;
- }
- }
crc32_sum = ~0;
}
if (pass == PASS_SCAN &&
!jbd2_commit_block_csum_verify(journal,
bh->b_data)) {
+ chksum_error:
+ if (commit_time < last_trans_commit_time)
+ goto ignore_crc_mismatch;
info->end_transaction = next_commit_ID;
- if (!jfs_has_feature_async_commit(journal)) {
+ if (!jbd2_has_feature_async_commit(journal)) {
journal->j_failed_commit =
next_commit_ID;
brelse(bh);
break;
}
}
+ if (pass == PASS_SCAN)
+ last_trans_commit_time = commit_time;
brelse(bh);
next_commit_ID++;
continue;
- case JFS_REVOKE_BLOCK:
+ case JBD2_REVOKE_BLOCK:
+ /*
+ * Check revoke block crc in pass_scan, if csum verify
+ * failed, check commit block time later.
+ */
+ if (pass == PASS_SCAN &&
+ !jbd2_descriptor_block_csum_verify(journal,
+ bh->b_data)) {
+ jbd_debug(1, "JBD2: invalid revoke block found in %lu\n",
+ next_log_block);
+ need_check_commit_time = true;
+ }
/* If we aren't in the REVOKE pass, then we can
* just skip over this block. */
if (pass != PASS_REVOKE) {
@@ -822,6 +875,13 @@ static int do_one_pass(journal_t *journal,
success = -EIO;
}
}
+
+ if (jbd2_has_feature_fast_commit(journal) && pass != PASS_REVOKE) {
+ err = fc_do_one_pass(journal, info, pass);
+ if (err)
+ success = err;
+ }
+
if (block_error && success == 0)
success = -EIO;
return success;
@@ -830,51 +890,28 @@ static int do_one_pass(journal_t *journal,
return err;
}
-static int jbd2_revoke_block_csum_verify(journal_t *j,
- void *buf)
-{
- struct journal_revoke_tail *tail;
- __u32 provided;
- __u32 calculated;
-
- if (!journal_has_csum_v2or3(j))
- return 1;
-
- tail = (struct journal_revoke_tail *)((char *)buf + j->j_blocksize -
- sizeof(struct journal_revoke_tail));
- provided = tail->r_checksum;
- tail->r_checksum = 0;
- calculated = jbd2_chksum(j, j->j_csum_seed, buf, j->j_blocksize);
- tail->r_checksum = provided;
-
- return provided == ext2fs_cpu_to_be32(calculated);
-}
-
/* Scan a revoke record, marking all blocks mentioned as revoked. */
static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
tid_t sequence, struct recovery_info *info)
{
- journal_revoke_header_t *header;
+ jbd2_journal_revoke_header_t *header;
int offset, max;
- unsigned csum_size = 0;
+ int csum_size = 0;
__u32 rcount;
int record_len = 4;
- header = (journal_revoke_header_t *) bh->b_data;
- offset = sizeof(journal_revoke_header_t);
- rcount = ext2fs_be32_to_cpu(header->r_count);
-
- if (!jbd2_revoke_block_csum_verify(journal, header))
- return -EFSBADCRC;
+ header = (jbd2_journal_revoke_header_t *) bh->b_data;
+ offset = sizeof(jbd2_journal_revoke_header_t);
+ rcount = be32_to_cpu(header->r_count);
- if (journal_has_csum_v2or3(journal))
- csum_size = sizeof(struct journal_revoke_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
if (rcount > journal->j_blocksize - csum_size)
return -EINVAL;
max = rcount;
- if (jfs_has_feature_64bit(journal))
+ if (jbd2_has_feature_64bit(journal))
record_len = 8;
while (offset + record_len <= max) {
@@ -882,11 +919,11 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
int err;
if (record_len == 4)
- blocknr = ext2fs_be32_to_cpu(* ((__u32 *) (bh->b_data+offset)));
+ blocknr = be32_to_cpu(* ((__be32 *) (bh->b_data+offset)));
else
- blocknr = ext2fs_be64_to_cpu(* ((__u64 *) (bh->b_data+offset)));
+ blocknr = be64_to_cpu(* ((__be64 *) (bh->b_data+offset)));
offset += record_len;
- err = journal_set_revoke(journal, blocknr, sequence);
+ err = jbd2_journal_set_revoke(journal, blocknr, sequence);
if (err)
return err;
++info->nr_revokes;
diff --git a/e2fsck/region.c b/e2fsck/region.c
index d5b37df8..698f7bd2 100644
--- a/e2fsck/region.c
+++ b/e2fsck/region.c
@@ -36,11 +36,12 @@ struct region_struct {
region_t region_create(region_addr_t min, region_addr_t max)
{
region_t region;
+ errcode_t retval;
- region = malloc(sizeof(struct region_struct));
- if (!region)
+ retval = ext2fs_get_memzero(sizeof(struct region_struct), &region);
+ if (retval)
return NULL;
- memset(region, 0, sizeof(struct region_struct));
+
region->min = min;
region->max = max;
region->last = NULL;
@@ -53,16 +54,17 @@ void region_free(region_t region)
for (r = region->allocated; r; r = next) {
next = r->next;
- free(r);
+ ext2fs_free_mem(&r);
}
memset(region, 0, sizeof(struct region_struct));
- free(region);
+ ext2fs_free_mem(&region);
}
int region_allocate(region_t region, region_addr_t start, int n)
{
struct region_el *r, *new_region, *prev, *next;
region_addr_t end;
+ errcode_t retval;
end = start+n;
if ((start < region->min) || (end > region->max))
@@ -105,7 +107,7 @@ int region_allocate(region_t region, region_addr_t start, int n)
if (end == next->start) {
r->end = next->end;
r->next = next->next;
- free(next);
+ ext2fs_free_mem(&next);
if (!r->next)
region->last = r;
return 0;
@@ -121,8 +123,8 @@ int region_allocate(region_t region, region_addr_t start, int n)
* Insert a new region element structure into the linked list
*/
append_to_list:
- new_region = malloc(sizeof(struct region_el));
- if (!new_region)
+ retval = ext2fs_get_mem(sizeof(struct region_el), &new_region);
+ if (retval)
return -1;
new_region->start = start;
new_region->end = start + n;
@@ -178,10 +180,13 @@ void region_print(region_t region, FILE *f)
struct region_el *r;
int i = 0;
- fprintf(f, "Printing region (min=%llu. max=%llu)\n\t", region->min,
- region->max);
+ fprintf(f, "Printing region (min=%llu. max=%llu)\n\t",
+ (unsigned long long) region->min,
+ (unsigned long long) region->max);
for (r = region->allocated; r; r = r->next) {
- fprintf(f, "(%llu, %llu) ", r->start, r->end);
+ fprintf(f, "(%llu, %llu) ",
+ (unsigned long long) r->start,
+ (unsigned long long) r->end);
if (++i >= 8)
fprintf(f, "\n\t");
}
@@ -203,7 +208,8 @@ int main(int argc, char **argv)
start = bcode_program[pc++];
end = bcode_program[pc++];
printf("Creating region with args(%llu, %llu)\n",
- start, end);
+ (unsigned long long) start,
+ (unsigned long long) end);
r = region_create(start, end);
if (!r) {
fprintf(stderr, "Couldn't create region.\n");
@@ -215,7 +221,8 @@ int main(int argc, char **argv)
end = bcode_program[pc++];
ret = region_allocate(r, start, end);
printf("Region_allocate(%llu, %llu) returns %d\n",
- start, end, ret);
+ (unsigned long long) start,
+ (unsigned long long) end, ret);
break;
case BCODE_PRINT:
region_print(r, stdout);
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
index 17ab1843..7d30ff00 100644
--- a/e2fsck/rehash.c
+++ b/e2fsck/rehash.c
@@ -51,6 +51,7 @@
#include <errno.h>
#include "e2fsck.h"
#include "problem.h"
+#include "support/sort_r.h"
/* Schedule a dir to be rebuilt during pass 3A. */
void e2fsck_rehash_dir_later(e2fsck_t ctx, ext2_ino_t ino)
@@ -80,10 +81,10 @@ struct fill_dir_struct {
errcode_t err;
e2fsck_t ctx;
struct hash_entry *harray;
- int max_array, num_array;
- unsigned int dir_size;
+ blk_t max_array, num_array;
+ ext2_off64_t dir_size;
int compress;
- ino_t parent;
+ ext2_ino_t parent;
ext2_ino_t dir;
};
@@ -95,8 +96,8 @@ struct hash_entry {
};
struct out_dir {
- int num;
- int max;
+ blk_t num;
+ blk_t max;
char *buf;
ext2_dirhash_t *hashes;
};
@@ -124,7 +125,7 @@ static int fill_dir_block(ext2_filsys fs,
void *priv_data)
{
struct fill_dir_struct *fd = (struct fill_dir_struct *) priv_data;
- struct hash_entry *new_array, *ent;
+ struct hash_entry *ent;
struct ext2_dir_entry *dirent;
char *dir;
unsigned int offset, dir_offset, rec_len, name_len;
@@ -181,6 +182,10 @@ static int fill_dir_block(ext2_filsys fs,
dir_offset += rec_len;
if (dirent->inode == 0)
continue;
+ if ((name_len) == 0) {
+ fd->err = EXT2_ET_DIR_CORRUPTED;
+ return BLOCK_ABORT;
+ }
if (!fd->compress && (name_len == 1) &&
(dirent->name[0] == '.'))
continue;
@@ -190,13 +195,16 @@ static int fill_dir_block(ext2_filsys fs,
continue;
}
if (fd->num_array >= fd->max_array) {
- new_array = realloc(fd->harray,
- sizeof(struct hash_entry) * (fd->max_array+500));
- if (!new_array) {
- fd->err = ENOMEM;
+ errcode_t retval;
+
+ retval = ext2fs_resize_array(sizeof(struct hash_entry),
+ fd->max_array,
+ fd->max_array + 500,
+ &fd->harray);
+ if (retval) {
+ fd->err = retval;
return BLOCK_ABORT;
}
- fd->harray = new_array;
fd->max_array += 500;
}
ent = fd->harray + fd->num_array++;
@@ -231,6 +239,23 @@ static EXT2_QSORT_TYPE ino_cmp(const void *a, const void *b)
return (he_a->ino - he_b->ino);
}
+struct name_cmp_ctx
+{
+ int casefold;
+ const struct ext2fs_nls_table *tbl;
+};
+
+static int same_name(const struct name_cmp_ctx *cmp_ctx, char *s1,
+ int len1, char *s2, int len2)
+{
+ if (!cmp_ctx->casefold)
+ return (len1 == len2 && !memcmp(s1, s2, len1));
+ else
+ return !ext2fs_casefold_cmp(cmp_ctx->tbl,
+ (unsigned char *) s1, len1,
+ (unsigned char *) s2, len2);
+}
+
/* Used for sorting the hash entry */
static EXT2_QSORT_TYPE name_cmp(const void *a, const void *b)
{
@@ -257,9 +282,35 @@ static EXT2_QSORT_TYPE name_cmp(const void *a, const void *b)
return ret;
}
+static EXT2_QSORT_TYPE name_cf_cmp(const struct name_cmp_ctx *ctx,
+ const void *a, const void *b)
+{
+ const struct hash_entry *he_a = (const struct hash_entry *) a;
+ const struct hash_entry *he_b = (const struct hash_entry *) b;
+ unsigned int he_a_len, he_b_len;
+ int ret;
+
+ he_a_len = ext2fs_dirent_name_len(he_a->dir);
+ he_b_len = ext2fs_dirent_name_len(he_b->dir);
+
+ ret = ext2fs_casefold_cmp(ctx->tbl,
+ (unsigned char *) he_a->dir->name, he_a_len,
+ (unsigned char *) he_b->dir->name, he_b_len);
+ if (ret == 0) {
+ if (he_a_len > he_b_len)
+ ret = 1;
+ else if (he_a_len < he_b_len)
+ ret = -1;
+ else
+ ret = he_b->dir->inode - he_a->dir->inode;
+ }
+ return ret;
+}
+
/* Used for sorting the hash entry */
-static EXT2_QSORT_TYPE hash_cmp(const void *a, const void *b)
+static EXT2_QSORT_TYPE hash_cmp(const void *a, const void *b, void *arg)
{
+ const struct name_cmp_ctx *ctx = (struct name_cmp_ctx *) arg;
const struct hash_entry *he_a = (const struct hash_entry *) a;
const struct hash_entry *he_b = (const struct hash_entry *) b;
int ret;
@@ -273,30 +324,39 @@ static EXT2_QSORT_TYPE hash_cmp(const void *a, const void *b)
ret = 1;
else if (he_a->minor_hash < he_b->minor_hash)
ret = -1;
- else
- ret = name_cmp(a, b);
+ else {
+ if (ctx->casefold)
+ ret = name_cf_cmp(ctx, a, b);
+ else
+ ret = name_cmp(a, b);
+ }
}
return ret;
}
static errcode_t alloc_size_dir(ext2_filsys fs, struct out_dir *outdir,
- int blocks)
+ blk_t blocks)
{
- void *new_mem;
+ errcode_t retval;
if (outdir->max) {
- new_mem = realloc(outdir->buf, blocks * fs->blocksize);
- if (!new_mem)
- return ENOMEM;
- outdir->buf = new_mem;
- new_mem = realloc(outdir->hashes,
- blocks * sizeof(ext2_dirhash_t));
- if (!new_mem)
- return ENOMEM;
- outdir->hashes = new_mem;
+ retval = ext2fs_resize_array(fs->blocksize, outdir->max, blocks,
+ &outdir->buf);
+ if (retval)
+ return retval;
+ retval = ext2fs_resize_array(sizeof(ext2_dirhash_t),
+ outdir->max, blocks,
+ &outdir->hashes);
+ if (retval)
+ return retval;
} else {
- outdir->buf = malloc(blocks * fs->blocksize);
- outdir->hashes = malloc(blocks * sizeof(ext2_dirhash_t));
+ retval = ext2fs_get_array(fs->blocksize, blocks, &outdir->buf);
+ if (retval)
+ return retval;
+ retval = ext2fs_get_array(sizeof(ext2_dirhash_t), blocks,
+ &outdir->hashes);
+ if (retval)
+ return retval;
outdir->num = 0;
}
outdir->max = blocks;
@@ -317,11 +377,15 @@ static errcode_t get_next_block(ext2_filsys fs, struct out_dir *outdir,
errcode_t retval;
if (outdir->num >= outdir->max) {
- retval = alloc_size_dir(fs, outdir, outdir->max + 50);
+ int increment = outdir->max / 10;
+
+ if (increment < 50)
+ increment = 50;
+ retval = alloc_size_dir(fs, outdir, outdir->max + increment);
if (retval)
return retval;
}
- *ret = outdir->buf + (outdir->num++ * fs->blocksize);
+ *ret = outdir->buf + (size_t)outdir->num++ * fs->blocksize;
memset(*ret, 0, fs->blocksize);
return 0;
}
@@ -388,11 +452,12 @@ static void mutate_name(char *str, unsigned int *len)
static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
ext2_ino_t ino,
- struct fill_dir_struct *fd)
+ struct fill_dir_struct *fd,
+ const struct name_cmp_ctx *cmp_ctx)
{
struct problem_context pctx;
- struct hash_entry *ent, *prev;
- int i, j;
+ struct hash_entry *ent, *prev;
+ blk_t i, j;
int fixed = 0;
char new_name[256];
unsigned int new_len;
@@ -411,10 +476,10 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
ent = fd->harray + i;
prev = ent - 1;
if (!ent->dir->inode ||
- (ext2fs_dirent_name_len(ent->dir) !=
- ext2fs_dirent_name_len(prev->dir)) ||
- memcmp(ent->dir->name, prev->dir->name,
- ext2fs_dirent_name_len(ent->dir)))
+ !same_name(cmp_ctx, ent->dir->name,
+ ext2fs_dirent_name_len(ent->dir),
+ prev->dir->name,
+ ext2fs_dirent_name_len(prev->dir)))
continue;
pctx.dirent = ent->dir;
if ((ent->dir->inode == prev->dir->inode) &&
@@ -434,14 +499,20 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
}
}
new_len = ext2fs_dirent_name_len(ent->dir);
+ if (new_len == 0) {
+ /* should never happen */
+ ext2fs_unmark_valid(fs);
+ continue;
+ }
memcpy(new_name, ent->dir->name, new_len);
mutate_name(new_name, &new_len);
for (j=0; j < fd->num_array; j++) {
if ((i==j) ||
- (new_len !=
- (unsigned) ext2fs_dirent_name_len(fd->harray[j].dir)) ||
- memcmp(new_name, fd->harray[j].dir->name, new_len))
+ !same_name(cmp_ctx, new_name, new_len,
+ fd->harray[j].dir->name,
+ ext2fs_dirent_name_len(fd->harray[j].dir))) {
continue;
+ }
mutate_name(new_name, &new_len);
j = -1;
@@ -472,7 +543,7 @@ static errcode_t copy_dir_entries(e2fsck_t ctx,
struct hash_entry *ent;
struct ext2_dir_entry *dirent;
unsigned int rec_len, prev_rec_len, left, slack, offset;
- int i;
+ blk_t i;
ext2_dirhash_t prev_hash;
int csum_size = 0;
struct ext2_dir_entry_tail *t;
@@ -677,6 +748,9 @@ static int alloc_blocks(ext2_filsys fs,
if (retval)
return retval;
+ /* outdir->buf might be reallocated */
+ *prev_ent = (struct ext2_dx_entry *) (outdir->buf + *prev_offset);
+
*next_ent = set_int_node(fs, block_start);
*limit = (struct ext2_dx_countlimit *)(*next_ent);
if (next_offset)
@@ -767,6 +841,9 @@ static errcode_t calculate_tree(ext2_filsys fs,
return retval;
}
if (c3 == 0) {
+ int delta1 = (char *)int_limit - outdir->buf;
+ int delta2 = (char *)root - outdir->buf;
+
retval = alloc_blocks(fs, &limit, &int_ent,
&dx_ent, &int_offset,
NULL, outdir, i, &c2,
@@ -774,6 +851,11 @@ static errcode_t calculate_tree(ext2_filsys fs,
if (retval)
return retval;
+ /* outdir->buf might be reallocated */
+ int_limit = (struct ext2_dx_countlimit *)
+ (outdir->buf + delta1);
+ root = (struct ext2_dx_entry *)
+ (outdir->buf + delta2);
}
dx_ent->block = ext2fs_cpu_to_le32(i);
if (c3 != limit->limit)
@@ -908,6 +990,7 @@ errcode_t e2fsck_rehash_dir(e2fsck_t ctx, ext2_ino_t ino,
struct fill_dir_struct fd = { NULL, NULL, 0, 0, 0, NULL,
0, 0, 0, 0, 0, 0 };
struct out_dir outdir = { 0, 0, 0, 0 };
+ struct name_cmp_ctx name_cmp_ctx = {0, NULL};
e2fsck_read_inode(ctx, ino, &inode, "rehash_dir");
@@ -915,14 +998,14 @@ errcode_t e2fsck_rehash_dir(e2fsck_t ctx, ext2_ino_t ino,
(inode.i_flags & EXT4_INLINE_DATA_FL))
return 0;
- retval = ENOMEM;
- dir_buf = malloc(inode.i_size);
- if (!dir_buf)
+ retval = ext2fs_get_mem(inode.i_size, &dir_buf);
+ if (retval)
goto errout;
fd.max_array = inode.i_size / 32;
- fd.harray = malloc(fd.max_array * sizeof(struct hash_entry));
- if (!fd.harray)
+ retval = ext2fs_get_array(sizeof(struct hash_entry),
+ fd.max_array, &fd.harray);
+ if (retval)
goto errout;
fd.ino = ino;
@@ -935,6 +1018,11 @@ errcode_t e2fsck_rehash_dir(e2fsck_t ctx, ext2_ino_t ino,
fd.compress = 1;
fd.parent = 0;
+ if (fs->encoding && (inode.i_flags & EXT4_CASEFOLD_FL)) {
+ name_cmp_ctx.casefold = 1;
+ name_cmp_ctx.tbl = fs->encoding;
+ }
+
retry_nohash:
/* Read in the entire directory into memory */
retval = ext2fs_block_iterate3(fs, ino, 0, 0,
@@ -963,16 +1051,18 @@ retry_nohash:
/* Sort the list */
resort:
if (fd.compress && fd.num_array > 1)
- qsort(fd.harray+2, fd.num_array-2, sizeof(struct hash_entry),
- hash_cmp);
+ sort_r_simple(fd.harray+2, fd.num_array-2,
+ sizeof(struct hash_entry),
+ hash_cmp, &name_cmp_ctx);
else
- qsort(fd.harray, fd.num_array, sizeof(struct hash_entry),
- hash_cmp);
+ sort_r_simple(fd.harray, fd.num_array,
+ sizeof(struct hash_entry),
+ hash_cmp, &name_cmp_ctx);
/*
* Look for duplicates
*/
- if (duplicate_search_and_fix(ctx, fs, ino, &fd))
+ if (duplicate_search_and_fix(ctx, fs, ino, &fd, &name_cmp_ctx))
goto resort;
if (ctx->options & E2F_OPT_NO) {
@@ -1011,8 +1101,8 @@ resort:
else
retval = e2fsck_check_rebuild_extents(ctx, ino, &inode, pctx);
errout:
- free(dir_buf);
- free(fd.harray);
+ ext2fs_free_mem(&dir_buf);
+ ext2fs_free_mem(&fd.harray);
free_out_dir(&outdir);
return retval;
@@ -1065,6 +1155,8 @@ void e2fsck_rehash_directories(e2fsck_t ctx)
if (!ext2fs_u32_list_iterate(iter, &ino))
break;
}
+ if (!ext2fs_test_inode_bitmap2(ctx->inode_dir_map, ino))
+ continue;
pctx.dir = ino;
if (first) {
diff --git a/e2fsck/revoke.c b/e2fsck/revoke.c
index f7254713..fa608788 100644
--- a/e2fsck/revoke.c
+++ b/e2fsck/revoke.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
/*
* linux/fs/jbd2/revoke.c
*
@@ -5,10 +6,6 @@
*
* Copyright 2000 Red Hat corp --- All Rights Reserved
*
- * This file is part of the Linux kernel and is made available under
- * the terms of the GNU General Public License, version 2, or at your
- * option, any later version, incorporated herein by reference.
- *
* Journal revoke routines for the generic filesystem journaling code;
* part of the ext2fs journaling system.
*
@@ -92,10 +89,11 @@
#include <linux/init.h>
#include <linux/bio.h>
#include <linux/log2.h>
+#include <linux/hash.h>
#endif
-static lkmem_cache_t *jbd2_revoke_record_cache;
-static lkmem_cache_t *jbd2_revoke_table_cache;
+static struct kmem_cache *jbd2_revoke_record_cache;
+static struct kmem_cache *jbd2_revoke_table_cache;
/* Each revoke record represents one single revoked block. During
journal replay, this involves recording the transaction ID of the
@@ -121,21 +119,18 @@ struct jbd2_revoke_table_s
#ifdef __KERNEL__
-static void write_one_revoke_record(journal_t *, transaction_t *,
+static void write_one_revoke_record(transaction_t *,
struct list_head *,
struct buffer_head **, int *,
- struct jbd2_revoke_record_s *, int);
-static void flush_descriptor(journal_t *, struct buffer_head *, int, int);
+ struct jbd2_revoke_record_s *);
+static void flush_descriptor(journal_t *, struct buffer_head *, int);
#endif
/* Utility functions to maintain the revoke table */
-/* Borrowed from buffer.c: this is a tried and tested block hash function */
static inline int hash(journal_t *journal, unsigned long long block)
{
- struct jbd2_revoke_table_s *table = journal->j_revoke;
-
- return (hash_64(block, table->hash_shift));
+ return hash_64(block, journal->j_revoke->hash_shift);
}
static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr,
@@ -143,11 +138,13 @@ static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr,
{
struct list_head *hash_list;
struct jbd2_revoke_record_s *record;
+ gfp_t gfp_mask = GFP_NOFS;
-repeat:
- record = kmem_cache_alloc(jbd2_revoke_record_cache, GFP_NOFS);
+ if (journal_oom_retry)
+ gfp_mask |= __GFP_NOFAIL;
+ record = kmem_cache_alloc(jbd2_revoke_record_cache, gfp_mask);
if (!record)
- goto oom;
+ return -ENOMEM;
record->sequence = seq;
record->blocknr = blocknr;
@@ -156,13 +153,6 @@ repeat:
list_add(&record->hash, hash_list);
spin_unlock(&journal->j_revoke_lock);
return 0;
-
-oom:
- if (!journal_oom_retry)
- return -ENOMEM;
- jbd_debug(1, "ENOMEM in %s, retrying\n", __func__);
- yield();
- goto repeat;
}
/* Find a revoke record in the journal's hash table. */
@@ -188,40 +178,44 @@ static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal,
return NULL;
}
-void journal_destroy_revoke_caches(void)
+void jbd2_journal_destroy_revoke_record_cache(void)
{
- if (jbd2_revoke_record_cache) {
- kmem_cache_destroy(jbd2_revoke_record_cache);
- jbd2_revoke_record_cache = NULL;
- }
- if (jbd2_revoke_table_cache) {
- kmem_cache_destroy(jbd2_revoke_table_cache);
- jbd2_revoke_table_cache = NULL;
- }
+ kmem_cache_destroy(jbd2_revoke_record_cache);
+ jbd2_revoke_record_cache = NULL;
}
-int __init journal_init_revoke_caches(void)
+void jbd2_journal_destroy_revoke_table_cache(void)
{
- J_ASSERT(!jbd2_revoke_record_cache);
- J_ASSERT(!jbd2_revoke_table_cache);
+ kmem_cache_destroy(jbd2_revoke_table_cache);
+ jbd2_revoke_table_cache = NULL;
+}
+int __init jbd2_journal_init_revoke_record_cache(void)
+{
+ J_ASSERT(!jbd2_revoke_record_cache);
jbd2_revoke_record_cache = KMEM_CACHE(jbd2_revoke_record_s,
SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY);
- if (!jbd2_revoke_record_cache)
- goto record_cache_failure;
+ if (!jbd2_revoke_record_cache) {
+ pr_emerg("JBD2: failed to create revoke_record cache\n");
+ return -ENOMEM;
+ }
+ return 0;
+}
+
+int __init jbd2_journal_init_revoke_table_cache(void)
+{
+ J_ASSERT(!jbd2_revoke_table_cache);
jbd2_revoke_table_cache = KMEM_CACHE(jbd2_revoke_table_s,
SLAB_TEMPORARY);
- if (!jbd2_revoke_table_cache)
- goto table_cache_failure;
- return 0;
-table_cache_failure:
- journal_destroy_revoke_caches();
-record_cache_failure:
+ if (!jbd2_revoke_table_cache) {
+ pr_emerg("JBD2: failed to create revoke_table cache\n");
return -ENOMEM;
+ }
+ return 0;
}
-static struct jbd2_revoke_table_s *journal_init_revoke_table(int hash_size)
+static struct jbd2_revoke_table_s *jbd2_journal_init_revoke_table(int hash_size)
{
int shift = 0;
int tmp = hash_size;
@@ -237,7 +231,7 @@ static struct jbd2_revoke_table_s *journal_init_revoke_table(int hash_size)
table->hash_size = hash_size;
table->hash_shift = shift;
table->hash_table =
- kmalloc(hash_size * sizeof(struct list_head), GFP_KERNEL);
+ kmalloc_array(hash_size, sizeof(struct list_head), GFP_KERNEL);
if (!table->hash_table) {
kmem_cache_free(jbd2_revoke_table_cache, table);
table = NULL;
@@ -251,7 +245,7 @@ out:
return table;
}
-static void journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
+static void jbd2_journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
{
int i;
struct list_head *hash_list;
@@ -266,16 +260,16 @@ static void journal_destroy_revoke_table(struct jbd2_revoke_table_s *table)
}
/* Initialise the revoke table for a given journal to a given size. */
-int journal_init_revoke(journal_t *journal, int hash_size)
+int jbd2_journal_init_revoke(journal_t *journal, int hash_size)
{
J_ASSERT(journal->j_revoke_table[0] == NULL);
J_ASSERT(is_power_of_2(hash_size));
- journal->j_revoke_table[0] = journal_init_revoke_table(hash_size);
+ journal->j_revoke_table[0] = jbd2_journal_init_revoke_table(hash_size);
if (!journal->j_revoke_table[0])
goto fail0;
- journal->j_revoke_table[1] = journal_init_revoke_table(hash_size);
+ journal->j_revoke_table[1] = jbd2_journal_init_revoke_table(hash_size);
if (!journal->j_revoke_table[1])
goto fail1;
@@ -286,26 +280,27 @@ int journal_init_revoke(journal_t *journal, int hash_size)
return 0;
fail1:
- journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ journal->j_revoke_table[0] = NULL;
fail0:
return -ENOMEM;
}
/* Destroy a journal's revoke table. The table must already be empty! */
-void journal_destroy_revoke(journal_t *journal)
+void jbd2_journal_destroy_revoke(journal_t *journal)
{
journal->j_revoke = NULL;
if (journal->j_revoke_table[0])
- journal_destroy_revoke_table(journal->j_revoke_table[0]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
if (journal->j_revoke_table[1])
- journal_destroy_revoke_table(journal->j_revoke_table[1]);
+ jbd2_journal_destroy_revoke_table(journal->j_revoke_table[1]);
}
#ifdef __KERNEL__
/*
- * journal_revoke: revoke a given buffer_head from the journal. This
+ * jbd2_journal_revoke: revoke a given buffer_head from the journal. This
* prevents the block from being replayed during recovery if we take a
* crash after this current transaction commits. Any subsequent
* metadata writes of the buffer in this transaction cancel the
@@ -317,18 +312,18 @@ void journal_destroy_revoke(journal_t *journal)
* revoke before clearing the block bitmap when we are deleting
* metadata.
*
- * Revoke performs a journal_forget on any buffer_head passed in as a
+ * Revoke performs a jbd2_journal_forget on any buffer_head passed in as a
* parameter, but does _not_ forget the buffer_head if the bh was only
* found implicitly.
*
* bh_in may not be a journalled buffer - it may have come off
* the hash tables without an attached journal_head.
*
- * If bh_in is non-zero, journal_revoke() will decrement its b_count
+ * If bh_in is non-zero, jbd2_journal_revoke() will decrement its b_count
* by one.
*/
-int journal_revoke(handle_t *handle, unsigned long long blocknr,
+int jbd2_journal_revoke(handle_t *handle, unsigned long long blocknr,
struct buffer_head *bh_in)
{
struct buffer_head *bh = NULL;
@@ -341,7 +336,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
BUFFER_TRACE(bh_in, "enter");
journal = handle->h_transaction->t_journal;
- if (!journal_set_features(journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)){
+ if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){
J_ASSERT (!"Cannot set revoke feature!");
return -EINVAL;
}
@@ -354,7 +349,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
if (bh)
BUFFER_TRACE(bh, "found on hash");
}
-#ifdef JFS_EXPENSIVE_CHECKING
+#ifdef JBD2_EXPENSIVE_CHECKING
else {
struct buffer_head *bh2;
@@ -376,6 +371,11 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
}
#endif
+ if (WARN_ON_ONCE(handle->h_revoke_credits <= 0)) {
+ if (!bh_in)
+ brelse(bh);
+ return -EIO;
+ }
/* We really ought not ever to revoke twice in a row without
first having the revoke cancelled: it's illegal to free a
block twice without allocating it in between! */
@@ -389,13 +389,14 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
set_buffer_revoked(bh);
set_buffer_revokevalid(bh);
if (bh_in) {
- BUFFER_TRACE(bh_in, "call journal_forget");
- journal_forget(handle, bh_in);
+ BUFFER_TRACE(bh_in, "call jbd2_journal_forget");
+ jbd2_journal_forget(handle, bh_in);
} else {
BUFFER_TRACE(bh, "call brelse");
__brelse(bh);
}
}
+ handle->h_revoke_credits--;
jbd_debug(2, "insert revoke for block %llu, bh_in=%p\n",blocknr, bh_in);
err = insert_revoke_hash(journal, blocknr,
@@ -406,7 +407,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
/*
* Cancel an outstanding revoke. For use only internally by the
- * journaling code (called from journal_get_write_access).
+ * journaling code (called from jbd2_journal_get_write_access).
*
* We trust buffer_revoked() on the buffer if the buffer is already
* being journaled: if there is no revoke pending on the buffer, then we
@@ -419,7 +420,7 @@ int journal_revoke(handle_t *handle, unsigned long long blocknr,
* do not trust the Revoked bit on buffers unless RevokeValid is also
* set.
*/
-int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
+int jbd2_journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
{
struct jbd2_revoke_record_s *record;
journal_t *journal = handle->h_transaction->t_journal;
@@ -427,7 +428,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
int did_revoke = 0; /* akpm: debug */
struct buffer_head *bh = jh2bh(jh);
- jbd_debug(4, "journal_head %p, canceling revoke\n", jh);
+ jbd_debug(4, "journal_head %p, cancelling revoke\n", jh);
/* Is the existing Revoke bit valid? If so, we trust it, and
* only perform the full cancel if the revoke bit is set. If
@@ -453,7 +454,7 @@ int journal_cancel_revoke(handle_t *handle, struct journal_head *jh)
}
}
-#ifdef JFS_EXPENSIVE_CHECKING
+#ifdef JBD2_EXPENSIVE_CHECKING
/* There better not be one left behind by now! */
record = find_revoke_record(journal, bh->b_blocknr);
J_ASSERT_JH(jh, record == NULL);
@@ -509,7 +510,7 @@ void jbd2_clear_buffer_revoked_flags(journal_t *journal)
* we do not want to suspend any processing until all revokes are
* written -bzzz
*/
-void journal_switch_revoke_table(journal_t *journal)
+void jbd2_journal_switch_revoke_table(journal_t *journal)
{
int i;
@@ -526,11 +527,10 @@ void journal_switch_revoke_table(journal_t *journal)
* Write revoke records to the journal for all entries in the current
* revoke hash, deleting the entries as we go.
*/
-void journal_write_revoke_records(journal_t *journal,
- transaction_t *transaction,
- struct list_head *log_bufs,
- int write_op)
+void jbd2_journal_write_revoke_records(transaction_t *transaction,
+ struct list_head *log_bufs)
{
+ journal_t *journal = transaction->t_journal;
struct buffer_head *descriptor;
struct jbd2_revoke_record_s *record;
struct jbd2_revoke_table_s *revoke;
@@ -551,16 +551,15 @@ void journal_write_revoke_records(journal_t *journal,
while (!list_empty(hash_list)) {
record = (struct jbd2_revoke_record_s *)
hash_list->next;
- write_one_revoke_record(journal, transaction, log_bufs,
- &descriptor, &offset,
- record, write_op);
+ write_one_revoke_record(transaction, log_bufs,
+ &descriptor, &offset, record);
count++;
list_del(&record->hash);
kmem_cache_free(jbd2_revoke_record_cache, record);
}
}
if (descriptor)
- flush_descriptor(journal, descriptor, offset, write_op);
+ flush_descriptor(journal, descriptor, offset);
jbd_debug(1, "Wrote %d revoke records\n", count);
}
@@ -569,22 +568,20 @@ void journal_write_revoke_records(journal_t *journal,
* block if the old one is full or if we have not already created one.
*/
-static void write_one_revoke_record(journal_t *journal,
- transaction_t *transaction,
+static void write_one_revoke_record(transaction_t *transaction,
struct list_head *log_bufs,
struct buffer_head **descriptorp,
int *offsetp,
- struct jbd2_revoke_record_s *record,
- int write_op)
+ struct jbd2_revoke_record_s *record)
{
+ journal_t *journal = transaction->t_journal;
int csum_size = 0;
struct buffer_head *descriptor;
int sz, offset;
- journal_header_t *header;
/* If we are already aborting, this all becomes a noop. We
still need to go round the loop in
- journal_write_revoke_records in order to free all of the
+ jbd2_journal_write_revoke_records in order to free all of the
revoke records: only the IO to the journal is omitted. */
if (is_journal_aborted(journal))
return;
@@ -593,10 +590,10 @@ static void write_one_revoke_record(journal_t *journal,
offset = *offsetp;
/* Do we need to leave space at the end for a checksum? */
- if (journal_has_csum_v2or3(journal))
- csum_size = sizeof(struct journal_revoke_tail);
+ if (jbd2_journal_has_csum_v2or3(journal))
+ csum_size = sizeof(struct jbd2_journal_block_tail);
- if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT))
+ if (jbd2_has_feature_64bit(journal))
sz = 8;
else
sz = 4;
@@ -604,29 +601,26 @@ static void write_one_revoke_record(journal_t *journal,
/* Make sure we have a descriptor with space left for the record */
if (descriptor) {
if (offset + sz > journal->j_blocksize - csum_size) {
- flush_descriptor(journal, descriptor, offset, write_op);
+ flush_descriptor(journal, descriptor, offset);
descriptor = NULL;
}
}
if (!descriptor) {
- descriptor = journal_get_descriptor_buffer(journal);
+ descriptor = jbd2_journal_get_descriptor_buffer(transaction,
+ JBD2_REVOKE_BLOCK);
if (!descriptor)
return;
- header = (journal_header_t *)descriptor->b_data;
- header->h_magic = ext2fs_cpu_to_be32(JFS_MAGIC_NUMBER);
- header->h_blocktype = ext2fs_cpu_to_be32(JFS_REVOKE_BLOCK);
- header->h_sequence = ext2fs_cpu_to_be32(transaction->t_tid);
/* Record it so that we can wait for IO completion later */
BUFFER_TRACE(descriptor, "file in log_bufs");
jbd2_file_log_bh(log_bufs, descriptor);
- offset = sizeof(journal_revoke_header_t);
+ offset = sizeof(jbd2_journal_revoke_header_t);
*descriptorp = descriptor;
}
- if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) {
+ if (jbd2_has_feature_64bit(journal))
* ((__be64 *)(&descriptor->b_data[offset])) =
cpu_to_be64(record->blocknr);
else
@@ -637,21 +631,6 @@ static void write_one_revoke_record(journal_t *journal,
*offsetp = offset;
}
-static void jbd2_revoke_csum_set(journal_t *j, struct buffer_head *bh)
-{
- struct journal_revoke_tail *tail;
- __u32 csum;
-
- if (!journal_has_csum_v2or3(j))
- return;
-
- tail = (struct journal_revoke_tail *)(bh->b_data + j->j_blocksize -
- sizeof(struct journal_revoke_tail));
- tail->r_checksum = 0;
- csum = jbd2_chksum(j, j->j_csum_seed, bh->b_data, j->j_blocksize);
- tail->r_checksum = ext2fs_cpu_to_be32(csum);
-}
-
/*
* Flush a revoke descriptor out to the journal. If we are aborting,
* this is a noop; otherwise we are generating a buffer which needs to
@@ -661,23 +640,21 @@ static void jbd2_revoke_csum_set(journal_t *j, struct buffer_head *bh)
static void flush_descriptor(journal_t *journal,
struct buffer_head *descriptor,
- int offset, int write_op)
+ int offset)
{
- journal_revoke_header_t *header;
+ jbd2_journal_revoke_header_t *header;
- if (is_journal_aborted(journal)) {
- put_bh(descriptor);
+ if (is_journal_aborted(journal))
return;
- }
- header = (journal_revoke_header_t *)descriptor->b_data;
- header->r_count = ext2fs_cpu_to_be32(offset);
- jbd2_revoke_csum_set(journal, descriptor);
+ header = (jbd2_journal_revoke_header_t *)descriptor->b_data;
+ header->r_count = cpu_to_be32(offset);
+ jbd2_descriptor_block_csum_set(journal, descriptor);
set_buffer_jwrite(descriptor);
BUFFER_TRACE(descriptor, "write");
set_buffer_dirty(descriptor);
- write_dirty_buffer(descriptor, write_op);
+ write_dirty_buffer(descriptor, REQ_SYNC);
}
#endif
@@ -703,7 +680,7 @@ static void flush_descriptor(journal_t *journal,
* single block.
*/
-int journal_set_revoke(journal_t *journal,
+int jbd2_journal_set_revoke(journal_t *journal,
unsigned long long blocknr,
tid_t sequence)
{
@@ -727,7 +704,7 @@ int journal_set_revoke(journal_t *journal,
* ones, but later transactions still need replayed.
*/
-int journal_test_revoke(journal_t *journal,
+int jbd2_journal_test_revoke(journal_t *journal,
unsigned long long blocknr,
tid_t sequence)
{
@@ -746,7 +723,7 @@ int journal_test_revoke(journal_t *journal,
* that it can be reused by the running filesystem.
*/
-void journal_clear_revoke(journal_t *journal)
+void jbd2_journal_clear_revoke(journal_t *journal)
{
int i;
struct list_head *hash_list;
diff --git a/e2fsck/scantest.c b/e2fsck/scantest.c
index 61311410..ed3595f8 100644
--- a/e2fsck/scantest.c
+++ b/e2fsck/scantest.c
@@ -76,8 +76,8 @@ static void print_resource_track(struct resource_track *track)
gettimeofday(&time_end, 0);
getrusage(RUSAGE_SELF, &r);
- printf(_("Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"),
- (int) (((char *) sbrk(0)) - ((char *) track->brk_start)),
+ printf(_("Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"),
+ (unsigned long)((char *)sbrk(0) - (char *)track->brk_start),
timeval_subtract(&time_end, &track->time_start),
timeval_subtract(&r.ru_utime, &track->user_start),
timeval_subtract(&r.ru_stime, &track->system_start));
diff --git a/e2fsck/super.c b/e2fsck/super.c
index e5932be6..e1c3f935 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -595,7 +595,7 @@ void check_super_block(e2fsck_t ctx)
blk64_t should_be;
struct problem_context pctx;
blk64_t free_blocks = 0;
- ino_t free_inodes = 0;
+ ext2_ino_t free_inodes = 0;
int csum_flag, clear_test_fs_flag;
inodes_per_block = EXT2_INODES_PER_BLOCK(fs->super);
@@ -1038,7 +1038,7 @@ void check_super_block(e2fsck_t ctx)
* Check to see if the superblock last mount time or last
* write time is in the future.
*/
- if (!broken_system_clock &&
+ if (!broken_system_clock && fs->super->s_checkinterval &&
!(ctx->flags & E2F_FLAG_TIME_INSANE) &&
fs->super->s_mtime > (__u32) ctx->now) {
pctx.num = fs->super->s_mtime;
@@ -1050,7 +1050,7 @@ void check_super_block(e2fsck_t ctx)
fs->flags |= EXT2_FLAG_DIRTY;
}
}
- if (!broken_system_clock &&
+ if (!broken_system_clock && fs->super->s_checkinterval &&
!(ctx->flags & E2F_FLAG_TIME_INSANE) &&
fs->super->s_wtime > (__u32) ctx->now) {
pctx.num = fs->super->s_wtime;
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index 68f49873..c5f9e441 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -138,7 +138,8 @@ static void show_stats(e2fsck_t ctx)
"%llu/%llu blocks\n"),
ctx->device_name, inodes_used, inodes,
frag_percent_total / 10, frag_percent_total % 10,
- blocks_used, blocks);
+ (unsigned long long) blocks_used,
+ (unsigned long long) blocks);
return;
}
profile_get_boolean(ctx->profile, "options", "report_features", 0, 0,
@@ -194,7 +195,8 @@ static void show_stats(e2fsck_t ctx)
log_out(ctx, P_("%12llu block used (%2.2f%%, out of %llu)\n",
"%12llu blocks used (%2.2f%%, out of %llu)\n",
blocks_used),
- blocks_used, 100.0 * blocks_used / blocks, blocks);
+ (unsigned long long) blocks_used, 100.0 * blocks_used / blocks,
+ (unsigned long long) blocks);
log_out(ctx, P_("%12u bad block\n", "%12u bad blocks\n",
ctx->fs_badblocks_count), ctx->fs_badblocks_count);
log_out(ctx, P_("%12u large file\n", "%12u large files\n",
@@ -444,9 +446,9 @@ static void check_if_skip(e2fsck_t ctx)
ctx->device_name,
fs->super->s_inodes_count - fs->super->s_free_inodes_count,
fs->super->s_inodes_count,
- ext2fs_blocks_count(fs->super) -
+ (unsigned long long) ext2fs_blocks_count(fs->super) -
ext2fs_free_blocks_count(fs->super),
- ext2fs_blocks_count(fs->super));
+ (unsigned long long) ext2fs_blocks_count(fs->super));
next_check = 100000;
if (fs->super->s_max_mnt_count > 0) {
next_check = fs->super->s_max_mnt_count - fs->super->s_mnt_count;
@@ -753,6 +755,14 @@ static void parse_extended_opts(e2fsck_t ctx, const char *opts)
ctx->options |= E2F_OPT_UNSHARE_BLOCKS;
ctx->options |= E2F_OPT_FORCE;
continue;
+ } else if (strcmp(token, "check_encoding") == 0) {
+ ctx->options |= E2F_OPT_CHECK_ENCODING;
+ continue;
+#ifdef CONFIG_DEVELOPER_FEATURES
+ } else if (strcmp(token, "clear_all_uninit_bits") == 0) {
+ ctx->options |= E2F_OPT_CLEAR_UNINIT;
+ continue;
+#endif
} else {
fprintf(stderr, _("Unknown extended option: %s\n"),
token);
@@ -779,6 +789,7 @@ static void parse_extended_opts(e2fsck_t ctx, const char *opts)
fputs("\tbmap2extent\n", stderr);
fputs("\tunshare_blocks\n", stderr);
fputs("\tfixes_only\n", stderr);
+ fputs("\tcheck_encoding\n", stderr);
fputc('\n', stderr);
exit(1);
}
@@ -812,7 +823,7 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
#ifdef CONFIG_JBD_DEBUG
char *jbd_debug;
#endif
- unsigned long long phys_mem_kb;
+ unsigned long long phys_mem_kb, blk;
retval = e2fsck_allocate_context(&ctx);
if (retval)
@@ -913,7 +924,8 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
/* What we do by default, anyway! */
break;
case 'b':
- res = sscanf(optarg, "%llu", &ctx->use_superblock);
+ res = sscanf(optarg, "%llu", &blk);
+ ctx->use_superblock = blk;
if (res != 1)
goto sscanf_err;
ctx->flags |= E2F_FLAG_SB_SPECIFIED;
@@ -1389,6 +1401,7 @@ int main (int argc, char *argv[])
__u32 features[3];
char *cp;
enum quota_type qtype;
+ struct ext2fs_journal_params jparams;
clear_problem_context(&pctx);
sigcatcher_setup();
@@ -1439,7 +1452,7 @@ int main (int argc, char *argv[])
fputs("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
ctx->problem_logf);
fprintf(ctx->problem_logf, "<problem_log time=\"%lu\">\n",
- ctx->now);
+ (unsigned long) ctx->now);
fprintf(ctx->problem_logf, "<invocation prog=\"%s\"",
argv[0]);
for (i = 1; i < argc; i++)
@@ -1469,7 +1482,7 @@ int main (int argc, char *argv[])
}
ctx->superblock = ctx->use_superblock;
- flags = EXT2_FLAG_SKIP_MMP;
+ flags = EXT2_FLAG_SKIP_MMP | EXT2_FLAG_THREADS;
restart:
#ifdef CONFIG_TESTIO_DEBUG
if (getenv("TEST_IO_FLAGS") || getenv("TEST_IO_BLOCK")) {
@@ -1692,11 +1705,10 @@ failure:
* Set the device name, which is used whenever we print error
* or informational messages to the user.
*/
- if (ctx->device_name == 0 &&
- (sb->s_volume_name[0] != 0)) {
- ctx->device_name = string_copy(ctx, sb->s_volume_name,
+ if (ctx->device_name == 0 && sb->s_volume_name[0])
+ ctx->device_name = string_copy(ctx, (char *) sb->s_volume_name,
sizeof(sb->s_volume_name));
- }
+
if (ctx->device_name == 0)
ctx->device_name = string_copy(ctx, ctx->filesystem_name, 0);
for (cp = ctx->device_name; *cp; cp++)
@@ -1704,19 +1716,19 @@ failure:
*cp = '_';
if (ctx->problem_logf) {
- char buf[48];
fprintf(ctx->problem_logf, "<filesystem dev=\"%s\"",
ctx->filesystem_name);
if (!uuid_is_null(sb->s_uuid)) {
+ char buf[48];
+
uuid_unparse(sb->s_uuid, buf);
fprintf(ctx->problem_logf, " uuid=\"%s\"", buf);
}
- if (sb->s_volume_name[0]) {
- memset(buf, 0, sizeof(buf));
- strncpy(buf, sb->s_volume_name, sizeof(buf));
- fprintf(ctx->problem_logf, " label=\"%s\"", buf);
- }
+ if (sb->s_volume_name[0])
+ fprintf(ctx->problem_logf, " label=\"%.*s\"",
+ EXT2_LEN_STR(sb->s_volume_name));
+
fputs("/>\n", ctx->problem_logf);
}
@@ -1883,9 +1895,15 @@ print_unsupp_features:
/*
* Save the journal size in megabytes.
* Try and use the journal size from the backup else let e2fsck
- * find the default journal size.
+ * find the default journal size. If fast commit feature is enabled,
+ * it is not clear how many of the journal blocks were fast commit
+ * blocks. So, ignore the size of journal found in backup.
+ *
+ * TODO: Add a new backup type that captures fast commit info as
+ * well.
*/
- if (sb->s_jnl_backup_type == EXT3_JNL_BACKUP_BLOCKS)
+ if (sb->s_jnl_backup_type == EXT3_JNL_BACKUP_BLOCKS &&
+ !ext2fs_has_feature_fast_commit(sb))
journal_size = (sb->s_jnl_blocks[15] << (32 - 20)) |
(sb->s_jnl_blocks[16] >> 20);
else
@@ -1907,20 +1925,16 @@ print_unsupp_features:
if (!ctx->invalid_bitmaps &&
(ctx->flags & E2F_FLAG_JOURNAL_INODE)) {
if (fix_problem(ctx, PR_6_RECREATE_JOURNAL, &pctx)) {
- if (journal_size < 1024)
- journal_size = ext2fs_default_journal_size(ext2fs_blocks_count(fs->super));
- if (journal_size < 0) {
- ext2fs_clear_feature_journal(fs->super);
- fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
- log_out(ctx, "%s: Couldn't determine "
- "journal size\n", ctx->program_name);
- goto no_journal;
+ if (journal_size < 1024) {
+ ext2fs_get_journal_params(&jparams, fs);
+ } else {
+ jparams.num_journal_blocks = journal_size;
+ jparams.num_fc_blocks = 0;
}
log_out(ctx, _("Creating journal (%d blocks): "),
- journal_size);
+ jparams.num_journal_blocks);
fflush(stdout);
- retval = ext2fs_add_journal_inode(fs,
- journal_size, 0);
+ retval = ext2fs_add_journal_inode3(fs, &jparams, ~0ULL, 0);
if (retval) {
log_out(ctx, "%s: while trying to create "
"journal\n", error_message(retval));
diff --git a/e2fsck/util.c b/e2fsck/util.c
index db6a1cc1..3fe3c988 100644
--- a/e2fsck/util.c
+++ b/e2fsck/util.c
@@ -37,10 +37,6 @@
#include <errno.h>
#endif
-#ifdef HAVE_SYS_SYSCTL_H
-#include <sys/sysctl.h>
-#endif
-
#include "e2fsck.h"
extern e2fsck_t e2fsck_global_ctx; /* Try your very best not to use this! */
@@ -116,27 +112,26 @@ void log_err(e2fsck_t ctx, const char *fmt, ...)
}
}
-void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size,
+void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned long size,
const char *description)
{
void *ret;
char buf[256];
#ifdef DEBUG_ALLOCATE_MEMORY
- printf("Allocating %u bytes for %s...\n", size, description);
+ printf("Allocating %lu bytes for %s...\n", size, description);
#endif
- ret = malloc(size);
- if (!ret) {
- sprintf(buf, "Can't allocate %u bytes for %s\n",
+ if (ext2fs_get_memzero(size, &ret)) {
+ sprintf(buf, "Can't allocate %lu bytes for %s\n",
size, description);
fatal_error(ctx, buf);
}
- memset(ret, 0, size);
+
return ret;
}
char *string_copy(e2fsck_t ctx EXT2FS_ATTR((unused)),
- const char *str, int len)
+ const char *str, size_t len)
{
char *ret;
@@ -422,9 +417,6 @@ void print_resource_track(e2fsck_t ctx, const char *desc,
#ifdef HAVE_GETRUSAGE
struct rusage r;
#endif
-#ifdef HAVE_MALLINFO
- struct mallinfo malloc_info;
-#endif
struct timeval time_end;
if ((desc && !(ctx->options & E2F_OPT_TIME2)) ||
@@ -437,18 +429,21 @@ void print_resource_track(e2fsck_t ctx, const char *desc,
if (desc)
log_out(ctx, "%s: ", desc);
+#define kbytes(x) (((unsigned long long)(x) + 1023) / 1024)
#ifdef HAVE_MALLINFO
-#define kbytes(x) (((unsigned long)(x) + 1023) / 1024)
-
- malloc_info = mallinfo();
- log_out(ctx, _("Memory used: %luk/%luk (%luk/%luk), "),
- kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
- kbytes(malloc_info.uordblks), kbytes(malloc_info.fordblks));
-#else
- log_out(ctx, _("Memory used: %lu, "),
- (unsigned long) (((char *) sbrk(0)) -
- ((char *) track->brk_start)));
+ /* don't use mallinfo() if over 2GB used, since it returns "int" */
+ if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
+ struct mallinfo malloc_info = mallinfo();
+
+ log_out(ctx, _("Memory used: %lluk/%lluk (%lluk/%lluk), "),
+ kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+ kbytes(malloc_info.uordblks),
+ kbytes(malloc_info.fordblks));
+ } else
#endif
+ log_out(ctx, _("Memory used: %lluk, "),
+ kbytes(((char *)sbrk(0)) - ((char *)track->brk_start)));
+
#ifdef HAVE_GETRUSAGE
getrusage(RUSAGE_SELF, &r);
@@ -776,9 +771,12 @@ void dump_mmp_msg(struct mmp_struct *mmp, const char *fmt, ...)
mmp->mmp_check_interval);
printf(" mmp_sequence: %08x\n", mmp->mmp_seq);
printf(" mmp_update_date: %s", ctime(&t));
- printf(" mmp_update_time: %lld\n", mmp->mmp_time);
- printf(" mmp_node_name: %s\n", mmp->mmp_nodename);
- printf(" mmp_device_name: %s\n", mmp->mmp_bdevname);
+ printf(" mmp_update_time: %lld\n",
+ (long long) mmp->mmp_time);
+ printf(" mmp_node_name: %.*s\n",
+ EXT2_LEN_STR(mmp->mmp_nodename));
+ printf(" mmp_device_name: %.*s\n",
+ EXT2_LEN_STR(mmp->mmp_bdevname));
}
}
@@ -885,12 +883,6 @@ unsigned long long get_memory_size(void)
# elif defined(CTL_HW_UINT)
unsigned int size = 0;
# endif
-# if defined(CTL_HW_INT64) || defined(CTL_HW_UINT)
- size_t len = sizeof(size);
-
- if (sysctl(mib, 2, &size, &len, NULL, 0) == 0)
- return (unsigned long long)size;
-# endif
return 0;
#else
# warning "Don't know how to detect memory on your platform?"
diff --git a/e2fsprogs.lsm b/e2fsprogs.lsm
index 311e9d1e..9f999216 100644
--- a/e2fsprogs.lsm
+++ b/e2fsprogs.lsm
@@ -1,16 +1,16 @@
Begin3
Title: EXT2 Filesystem utilities
-Version: 1.45.4
-Entered-date: 2019-09-23
+Version: 1.46.2
+Entered-date: 2021-02-28
Description: The filesystem utilities for the EXT2, EXT3, and EXT4
filesystems, including e2fsck, mke2fs, dumpe2fs, and others.
Keywords: utilities, filesystem, Ext2fs, ext3, ext4
Author: tytso@mit.edu (Theodore Tso)
Maintained-by: tytso@mit.edu (Theodore Tso)
Primary-site: ftp.kernel.org /pub/linux/kernel/people/tytso/e2fsprogs
- 7744kB e2fsprogs-1.45.4.tar.gz
- 1kB e2fsprogs-1.45.4.lsm
+ 9276kB e2fsprogs-1.46.2.tar.gz
+ 1kB e2fsprogs-1.46.2.lsm
Alternate-site: download.sourceforge.net /pub/sourceforge/e2fsprogs
-Platforms: linux 1.2.x/1.3.x/2.0.x/2.1.x/2.2.x/2.3.x/2.4.x/2.5.x/2.6.x/3.x/4.x
+Platforms: linux 1.2.x/1.3.x/2.0.x/2.1.x/2.2.x/2.3.x/2.4.x/2.5.x/2.6.x/3.x/4.x/5.x
Copying-policy: GPL-2/LGPL-2
End
diff --git a/e2fsprogs.spec b/e2fsprogs.spec
index ca35cc27..9c6ebcab 100644
--- a/e2fsprogs.spec
+++ b/e2fsprogs.spec
@@ -5,7 +5,7 @@
Summary: Utilities for managing ext2/ext3/ext4 filesystems
Name: e2fsprogs
-Version: 1.45.4
+Version: 1.46.1
Release: 0
License: GPLv2
Group: System Environment/Base
diff --git a/ext2ed/Makefile.in b/ext2ed/Makefile.in
index 0697431e..e4724ca5 100644
--- a/ext2ed/Makefile.in
+++ b/ext2ed/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = ext2ed
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/intl/Makefile.in b/intl/Makefile.in
deleted file mode 100644
index e037e23c..00000000
--- a/intl/Makefile.in
+++ /dev/null
@@ -1,547 +0,0 @@
-# Makefile for directory with message catalog handling library of GNU gettext
-# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-top_builddir = ..
-VPATH = $(srcdir)
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-transform = @program_transform_name@
-libdir = @libdir@
-includedir = @includedir@
-datadir = @datadir@
-localedir = $(datadir)/locale
-gettextsrcdir = $(datadir)/gettext/intl
-aliaspath = $(localedir)
-subdir = intl
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKDIR_P = @MKDIR_P@
-mkinstalldirs = $(SHELL) $(MKDIR_P)
-
-@SET_MAKE@
-
-@ifGNUmake@ V =
-@ifGNUmake@ ifeq ($(strip $(V)),)
-@ifGNUmake@ # E = @echo
-@ifGNUmake@ # Q = @
-@ifGNUmake@ E = @E@
-@ifGNUmake@ Q = @Q@
-@ifGNUmake@ else
-@ifGNUmake@ E = @\#
-@ifGNUmake@ Q =
-@ifGNUmake@ endif
-
-@ifNotGNUmake@ E = @E@
-@ifNotGNUmake@ Q = @Q@
-
-@ifGNUmake@ CHECK=sparse
-@ifGNUmake@ CHECK_OPTS=-Wsparse-all -Wno-transparent-union -Wno-return-void -Wno-undef -Wno-non-pointer-null
-@ifGNUmake@ CPPCHECK=cppcheck
-@ifGNUmake@ CPPCHECK_OPTS=--force --enable=all --quiet --check-config
-@ifGNUmake@ ifeq ("$(C)", "2")
-@ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS) -Wbitwise -D__CHECK_ENDIAN__
-@ifGNUmake@ CPPCHECK_CMD=$(CPPCHECK) $(CPPCHECK_OPTS)
-@ifGNUmake@ else
-@ifGNUmake@ ifeq ("$(C)", "1")
-@ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS)
-@ifGNUmake@ CPPCHECK_CMD=$(CPPCHECK) $(CPPCHECK_OPTS)
-@ifGNUmake@ else
-@ifGNUmake@ CHECK_CMD=@true
-@ifGNUmake@ CPPCHECK_CMD=@true
-@ifGNUmake@ endif
-@ifGNUmake@ endif
-
-@ifNotGNUmake@ CHECK_CMD=@true
-@ifNotGNUmake@ CPPCHECK_CMD=@true
-
-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
-
-AR = @AR@
-CC = @CC@
-LIBTOOL = @LIBTOOL@
-RANLIB = @RANLIB@
-YACC = @INTLBISON@ -y -d
-YFLAGS = --name-prefix=__gettext
-
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
--DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \
--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
--Dset_relocation_prefix=libintl_set_relocation_prefix \
--Drelocate=libintl_relocate \
--DDEPENDS_ON_LIBICONV=1 -DHAVE_CONFIG_H
-CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-HEADERS = \
- gmo.h \
- gettextP.h \
- hash-string.h \
- loadinfo.h \
- plural-exp.h \
- eval-plural.h \
- localcharset.h \
- relocatable.h \
- xsize.h \
- printf-args.h printf-args.c \
- printf-parse.h wprintf-parse.h printf-parse.c \
- vasnprintf.h vasnwprintf.h vasnprintf.c \
- os2compat.h \
- libgnuintl.h.in
-SOURCES = \
- bindtextdom.c \
- dcgettext.c \
- dgettext.c \
- gettext.c \
- finddomain.c \
- loadmsgcat.c \
- localealias.c \
- textdomain.c \
- l10nflist.c \
- explodename.c \
- dcigettext.c \
- dcngettext.c \
- dngettext.c \
- ngettext.c \
- plural.y \
- plural-exp.c \
- localcharset.c \
- relocatable.c \
- localename.c \
- log.c \
- printf.c \
- osdep.c \
- os2compat.c \
- intl-compat.c
-OBJECTS = \
- bindtextdom.$lo \
- dcgettext.$lo \
- dgettext.$lo \
- gettext.$lo \
- finddomain.$lo \
- loadmsgcat.$lo \
- localealias.$lo \
- textdomain.$lo \
- l10nflist.$lo \
- explodename.$lo \
- dcigettext.$lo \
- dcngettext.$lo \
- dngettext.$lo \
- ngettext.$lo \
- plural.$lo \
- plural-exp.$lo \
- localcharset.$lo \
- relocatable.$lo \
- localename.$lo \
- log.$lo \
- printf.$lo \
- osdep.$lo \
- intl-compat.$lo
-DISTFILES.common = Makefile.in \
-config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
-DISTFILES.generated = plural.c
-DISTFILES.normal = VERSION
-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
-libgnuintl.h_vms Makefile.vms \
-libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
-
-all: all-@USE_INCLUDED_LIBINTL@
-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
-all-no: all-no-@BUILD_INCLUDED_LIBINTL@
-all-no-yes: libgnuintl.$la
-all-no-no:
-
-libintl.a libgnuintl.a: $(OBJECTS)
- $(Q) rm -f $@
- $(E) " AR $@"
- $(Q) $(AR) cru $@ $(OBJECTS)
- $(E) " RANLIB $@"
- $(Q) $(RANLIB) $@
-
-libintl.la libgnuintl.la: $(OBJECTS)
- $(LIBTOOL) --mode=link \
- $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
- $(OBJECTS) @LTLIBICONV@ $(LIBS) -lc \
- -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
- -rpath $(libdir) \
- -no-undefined
-
-# Libtool's library version information for libintl.
-# Before making a gettext release, the gettext maintainer must change this
-# according to the libtool documentation, section "Library interface versions".
-# Maintainers of other packages that include the intl directory must *not*
-# change these values.
-LTV_CURRENT=7
-LTV_REVISION=0
-LTV_AGE=4
-
-.SUFFIXES:
-.SUFFIXES: .c .y .o .lo .sin .sed
-
-.c.o:
- $(E) " CC $<"
- $(Q) $(COMPILE) $<
- $(Q) $(CHECK_CMD) $(ALL_CFLAGS) $<
- $(Q) $(CPPCHECK_CMD) $(CPPFLAGS) $<
-
-.y.c:
- $(YACC) $(YFLAGS) --output $@ $<
- rm -f $*.h
-
-bindtextdom.lo: $(srcdir)/bindtextdom.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
-dcgettext.lo: $(srcdir)/dcgettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
-dgettext.lo: $(srcdir)/dgettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
-gettext.lo: $(srcdir)/gettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
-finddomain.lo: $(srcdir)/finddomain.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
-loadmsgcat.lo: $(srcdir)/loadmsgcat.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
-localealias.lo: $(srcdir)/localealias.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
-textdomain.lo: $(srcdir)/textdomain.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
-l10nflist.lo: $(srcdir)/l10nflist.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
-explodename.lo: $(srcdir)/explodename.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
-dcigettext.lo: $(srcdir)/dcigettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
-dcngettext.lo: $(srcdir)/dcngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
-dngettext.lo: $(srcdir)/dngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
-ngettext.lo: $(srcdir)/ngettext.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
-plural.lo: $(srcdir)/plural.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
-plural-exp.lo: $(srcdir)/plural-exp.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
-localcharset.lo: $(srcdir)/localcharset.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
-relocatable.lo: $(srcdir)/relocatable.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
-localename.lo: $(srcdir)/localename.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
-log.lo: $(srcdir)/log.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
-printf.lo: $(srcdir)/printf.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
-osdep.lo: $(srcdir)/osdep.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
-intl-compat.lo: $(srcdir)/intl-compat.c
- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
-
-ref-add.sed: $(srcdir)/ref-add.sin
- $(E) " SED ref-add.sed"
- $(Q) sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
- $(Q) mv t-ref-add.sed ref-add.sed
-ref-del.sed: $(srcdir)/ref-del.sin
- $(E) " SED ref-del.sed"
- $(Q) sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
- $(Q) mv t-ref-del.sed ref-del.sed
-
-INCLUDES = -I. -I$(srcdir) -I.. -I$(top_builddir)/lib
-
-libgnuintl.h: $(srcdir)/libgnuintl.h.in
- $(E) " SED libgnuintl.h "
- $(Q) sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
- -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
- -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
- -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
- < $(srcdir)/libgnuintl.h.in > libgnuintl.h
-
-libintl.h: libgnuintl.h
- $(E) " CP libintl.h"
- $(Q) cp libgnuintl.h libintl.h
-
-charset.alias: $(srcdir)/config.charset
- $(E) " CONFIG.CHARSET $@"
- $(Q) $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
- $(Q) mv t-$@ $@
-
-fullcheck check: all
-
-# We must not install the libintl.h/libintl.a files if we are on a
-# system which has the GNU gettext() function in its C library or in a
-# separate library.
-# If you want to use the one which comes with this version of the
-# package, you have to use `configure --with-included-gettext'.
-install: install-exec install-data
-install-exec: all
- $(Q) if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
- $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
- $(LIBTOOL) --mode=install \
- $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
- if test "@RELOCATABLE@" = yes; then \
- dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
- if test -n "$$dependencies"; then \
- rm -f $(DESTDIR)$(libdir)/libintl.la; \
- fi; \
- fi; \
- else \
- : ; \
- fi
- $(Q) if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir); \
- $(LIBTOOL) --mode=install \
- $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- $(LIBTOOL) --mode=uninstall \
- rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
- dest=$(DESTDIR)$(libdir)/charset.alias; \
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
- orig=$(DESTDIR)$(libdir)/charset.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- else \
- if test @GLIBC21@ = no; then \
- orig=charset.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- fi; \
- fi; \
- $(mkinstalldirs) $(DESTDIR)$(localedir); \
- test -f $(DESTDIR)$(localedir)/locale.alias \
- && orig=$(DESTDIR)$(localedir)/locale.alias \
- || orig=$(srcdir)/locale.alias; \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-add.sed $$orig > $$temp; \
- $(INSTALL_DATA) $$temp $$dest; \
- rm -f $$temp; \
- else \
- : ; \
- fi
-install-data: all
- $(Q) if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
- $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
- dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
- for file in $$dists; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
- dists="$(DISTFILES.generated)"; \
- for file in $$dists; do \
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
- $(INSTALL_DATA) $$dir/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- dists="$(DISTFILES.obsolete)"; \
- for file in $$dists; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-
-install-strip: install
-
-installdirs:
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- $(mkinstalldirs) $(DESTDIR)$(libdir); \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
- $(mkinstalldirs) $(DESTDIR)$(localedir); \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-install-shlibs:
-
-uninstall-shlibs:
-
-install-shlibs-strip:
-
-uninstall:
- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
- rm -f $(DESTDIR)$(includedir)/libintl.h; \
- $(LIBTOOL) --mode=uninstall \
- rm -f $(DESTDIR)$(libdir)/libintl.$la; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools" \
- && test '@USE_INCLUDED_LIBINTL@' = no; then \
- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
- else \
- : ; \
- fi
- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
- dest=$(DESTDIR)$(libdir)/charset.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- if test -f $(DESTDIR)$(localedir)/locale.alias; then \
- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
- dest=$(DESTDIR)$(localedir)/locale.alias; \
- sed -f ref-del.sed $$dest > $$temp; \
- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
- rm -f $$dest; \
- else \
- $(INSTALL_DATA) $$temp $$dest; \
- fi; \
- rm -f $$temp; \
- fi; \
- else \
- : ; \
- fi
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-
-info dvi ps pdf html:
-
-$(OBJECTS): libgnuintl.h
-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
-dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
-dcigettext.$lo: $(srcdir)/eval-plural.h
-localcharset.$lo: $(srcdir)/localcharset.h
-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
-
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
-
-ctags: CTAGS
-
-CTAGS: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
-
-id: ID
-
-ID: $(HEADERS) $(SOURCES)
- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
-
-coverage.txt::
-
-mostlyclean:
- rm -f *.a *.la *.o *.obj *.lo core core.*
- rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
- rm -f -r .libs _libs
-
-clean:: mostlyclean
-
-distclean: clean
- rm -f Makefile ID TAGS
- if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
- rm -f ChangeLog.inst $(DISTFILES.normal); \
- else \
- : ; \
- fi
-
-maintainer-clean: distclean
- $(E) "This command is intended for maintainers to use;"
- $(E) "it deletes files that may require special tools to rebuild."
-
-
-# GNU gettext needs not contain the file `VERSION' but contains some
-# other files which should not be distributed in other packages.
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: Makefile
- if test "$(PACKAGE)" = "gettext-tools"; then \
- : ; \
- else \
- if test "$(PACKAGE)" = "gettext-runtime"; then \
- additional="$(DISTFILES.gettext)"; \
- else \
- additional="$(DISTFILES.normal)"; \
- fi; \
- $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
- for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
- cp -p $$dir/$$file $(distdir); \
- done; \
- fi
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-# cd $(top_builddir) && $(SHELL) ./config.status
-# This would be more efficient, but doesn't work any more with autoconf-2.57,
-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/intl/VERSION b/intl/VERSION
deleted file mode 100644
index b4b846ca..00000000
--- a/intl/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-GNU gettext library from gettext-0.14.1
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
deleted file mode 100644
index 5b88d3ae..00000000
--- a/intl/bindtextdom.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/* Implementation of the bindtextdomain(3) function
- Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_dirname libintl_nl_default_dirname
-# define _nl_domain_bindings libintl_nl_domain_bindings
-#endif
-
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Contains the default location of the message catalogs. */
-extern const char _nl_default_dirname[];
-#ifdef _LIBC
-extern const char _nl_default_dirname_internal[] attribute_hidden;
-#else
-# define INTUSE(name) name
-#endif
-
-/* List with bindings of specific domains. */
-extern struct binding *_nl_domain_bindings;
-
-/* Lock variable to protect the global data in the gettext implementation. */
-__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define BINDTEXTDOMAIN __bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define BINDTEXTDOMAIN libintl_bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
-#endif
-
-/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
- to be used for the DOMAINNAME message catalog.
- If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
- modified, only the current value is returned.
- If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
- modified nor returned. */
-static void
-set_binding_values (const char *domainname,
- const char **dirnamep, const char **codesetp)
-{
- struct binding *binding;
- int modified;
-
- /* Some sanity checks. */
- if (domainname == NULL || domainname[0] == '\0')
- {
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- return;
- }
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- modified = 0;
-
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding != NULL)
- {
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The current binding has be to returned. */
- *dirnamep = binding->dirname;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->dirname;
- if (strcmp (dirname, result) != 0)
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- result = (char *) INTUSE(_nl_default_dirname);
- else
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, dirname, len);
-#endif
- }
-
- if (__builtin_expect (result != NULL, 1))
- {
- if (binding->dirname != INTUSE(_nl_default_dirname))
- free (binding->dirname);
-
- binding->dirname = result;
- modified = 1;
- }
- }
- *dirnamep = result;
- }
- }
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset == NULL)
- /* The current binding has be to returned. */
- *codesetp = binding->codeset;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->codeset;
- if (result == NULL || strcmp (codeset, result) != 0)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, codeset, len);
-#endif
-
- if (__builtin_expect (result != NULL, 1))
- {
- free (binding->codeset);
-
- binding->codeset = result;
- binding->codeset_cntr++;
- modified = 1;
- }
- }
- *codesetp = result;
- }
- }
- }
- else if ((dirnamep == NULL || *dirnamep == NULL)
- && (codesetp == NULL || *codesetp == NULL))
- {
- /* Simply return the default values. */
- if (dirnamep)
- *dirnamep = INTUSE(_nl_default_dirname);
- if (codesetp)
- *codesetp = NULL;
- }
- else
- {
- /* We have to create a new binding. */
- size_t len = strlen (domainname) + 1;
- struct binding *new_binding =
- (struct binding *) malloc (offsetof (struct binding, domainname) + len);
-
- if (__builtin_expect (new_binding == NULL, 0))
- goto failed;
-
- memcpy (new_binding->domainname, domainname, len);
-
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The default value. */
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- char *result;
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
- memcpy (result, dirname, len);
-#endif
- dirname = result;
- }
- }
- *dirnamep = dirname;
- new_binding->dirname = (char *) dirname;
- }
- else
- /* The default value. */
- new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
-
- new_binding->codeset_cntr = 0;
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset != NULL)
- {
- char *result;
-
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
- memcpy (result, codeset, len);
-#endif
- codeset = result;
- new_binding->codeset_cntr++;
- }
- *codesetp = codeset;
- new_binding->codeset = (char *) codeset;
- }
- else
- new_binding->codeset = NULL;
-
- /* Now enqueue it. */
- if (_nl_domain_bindings == NULL
- || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
- {
- new_binding->next = _nl_domain_bindings;
- _nl_domain_bindings = new_binding;
- }
- else
- {
- binding = _nl_domain_bindings;
- while (binding->next != NULL
- && strcmp (domainname, binding->next->domainname) > 0)
- binding = binding->next;
-
- new_binding->next = binding->next;
- binding->next = new_binding;
- }
-
- modified = 1;
-
- /* Here we deal with memory allocation failures. */
- if (0)
- {
- failed_codeset:
- if (new_binding->dirname != INTUSE(_nl_default_dirname))
- free (new_binding->dirname);
- failed_dirname:
- free (new_binding);
- failed:
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- }
- }
-
- /* If we modified any binding, we flush the caches. */
- if (modified)
- ++_nl_msg_cat_cntr;
-
- __libc_rwlock_unlock (_nl_state_lock);
-}
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-char *
-BINDTEXTDOMAIN (const char *domainname, const char *dirname)
-{
- set_binding_values (domainname, &dirname, NULL);
- return (char *) dirname;
-}
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-char *
-BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
-{
- set_binding_values (domainname, NULL, &codeset);
- return (char *) codeset;
-}
-
-#ifdef _LIBC
-/* Aliases for function names in GNU C Library. */
-weak_alias (__bindtextdomain, bindtextdomain);
-weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
-#endif
diff --git a/intl/config.charset b/intl/config.charset
deleted file mode 100644
index d4964dc4..00000000
--- a/intl/config.charset
+++ /dev/null
@@ -1,608 +0,0 @@
-#! /bin/sh
-# Output a system dependent table of character encoding aliases.
-#
-# Copyright (C) 2000-2004 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# The table consists of lines of the form
-# ALIAS CANONICAL
-#
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-# ALIAS is compared in a case sensitive way.
-#
-# CANONICAL is the GNU canonical name for this character encoding.
-# It must be an encoding supported by libiconv. Support by GNU libc is
-# also desirable. CANONICAL is case insensitive. Usually an upper case
-# MIME charset name is preferred.
-# The current list of GNU canonical charset names is as follows.
-#
-# name MIME? used by which systems
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
-# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-3 Y glibc solaris
-# ISO-8859-4 Y osf solaris freebsd darwin
-# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-6 Y glibc aix hpux solaris
-# ISO-8859-7 Y glibc aix hpux irix osf solaris
-# ISO-8859-8 Y glibc aix hpux osf solaris
-# ISO-8859-9 Y glibc aix hpux irix osf solaris
-# ISO-8859-13 glibc
-# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd
-# KOI8-R Y glibc solaris freebsd darwin
-# KOI8-U Y glibc freebsd darwin
-# KOI8-T glibc
-# CP437 dos
-# CP775 dos
-# CP850 aix osf dos
-# CP852 dos
-# CP855 dos
-# CP856 aix
-# CP857 dos
-# CP861 dos
-# CP862 dos
-# CP864 dos
-# CP865 dos
-# CP866 freebsd darwin dos
-# CP869 dos
-# CP874 woe32 dos
-# CP922 aix
-# CP932 aix woe32 dos
-# CP943 aix
-# CP949 osf woe32 dos
-# CP950 woe32 dos
-# CP1046 aix
-# CP1124 aix
-# CP1125 dos
-# CP1129 aix
-# CP1250 woe32
-# CP1251 glibc solaris darwin woe32
-# CP1252 aix woe32
-# CP1253 woe32
-# CP1254 woe32
-# CP1255 glibc woe32
-# CP1256 woe32
-# CP1257 woe32
-# GB2312 Y glibc aix hpux irix solaris freebsd darwin
-# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-TW glibc aix hpux irix osf solaris
-# BIG5 Y glibc aix hpux osf solaris freebsd darwin
-# BIG5-HKSCS glibc solaris
-# GBK glibc aix osf solaris woe32 dos
-# GB18030 glibc solaris
-# SHIFT_JIS Y hpux osf solaris freebsd darwin
-# JOHAB glibc solaris woe32
-# TIS-620 glibc aix hpux osf solaris
-# VISCII Y glibc
-# TCVN5712-1 glibc
-# GEORGIAN-PS glibc
-# HP-ROMAN8 hpux
-# HP-ARABIC8 hpux
-# HP-GREEK8 hpux
-# HP-HEBREW8 hpux
-# HP-TURKISH8 hpux
-# HP-KANA8 hpux
-# DEC-KANJI osf
-# DEC-HANYU osf
-# UTF-8 Y glibc aix hpux osf solaris
-#
-# Note: Names which are not marked as being a MIME name should not be used in
-# Internet protocols for information interchange (mail, news, etc.).
-#
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-# must understand both names and treat them as equivalent.
-#
-# The first argument passed to this file is the canonical host specification,
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-
-host="$1"
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-echo "# This file contains a table of character encoding aliases,"
-echo "# suitable for operating system '${os}'."
-echo "# It was automatically generated from config.charset."
-# List of references, updated during installation:
-echo "# Packages using this file: "
-case "$os" in
- linux-gnulibc1*)
- # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- echo "POSIX ASCII"
- for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
- en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
- en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
- es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
- et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
- fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
- it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
- sv_FI sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.iso-8859-1 ISO-8859-1"
- echo "$l.iso-8859-15 ISO-8859-15"
- echo "$l.iso-8859-15@euro ISO-8859-15"
- echo "$l@euro ISO-8859-15"
- echo "$l.cp-437 CP437"
- echo "$l.cp-850 CP850"
- echo "$l.cp-1252 CP1252"
- echo "$l.cp-1252@euro CP1252"
- #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
- sl_SI sr sr_CS sr_YU; do
- echo "$l ISO-8859-2"
- echo "$l.iso-8859-2 ISO-8859-2"
- echo "$l.cp-852 CP852"
- echo "$l.cp-1250 CP1250"
- echo "$l.utf-8 UTF-8"
- done
- for l in mk mk_MK ru ru_RU; do
- echo "$l ISO-8859-5"
- echo "$l.iso-8859-5 ISO-8859-5"
- echo "$l.koi8-r KOI8-R"
- echo "$l.cp-866 CP866"
- echo "$l.cp-1251 CP1251"
- echo "$l.utf-8 UTF-8"
- done
- for l in ar ar_SA; do
- echo "$l ISO-8859-6"
- echo "$l.iso-8859-6 ISO-8859-6"
- echo "$l.cp-864 CP864"
- #echo "$l.cp-868 CP868" # not a commonly used encoding
- echo "$l.cp-1256 CP1256"
- echo "$l.utf-8 UTF-8"
- done
- for l in el el_GR gr gr_GR; do
- echo "$l ISO-8859-7"
- echo "$l.iso-8859-7 ISO-8859-7"
- echo "$l.cp-869 CP869"
- echo "$l.cp-1253 CP1253"
- echo "$l.cp-1253@euro CP1253"
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in he he_IL iw iw_IL; do
- echo "$l ISO-8859-8"
- echo "$l.iso-8859-8 ISO-8859-8"
- echo "$l.cp-862 CP862"
- echo "$l.cp-1255 CP1255"
- echo "$l.utf-8 UTF-8"
- done
- for l in tr tr_TR; do
- echo "$l ISO-8859-9"
- echo "$l.iso-8859-9 ISO-8859-9"
- echo "$l.cp-857 CP857"
- echo "$l.cp-1254 CP1254"
- echo "$l.utf-8 UTF-8"
- done
- for l in lt lt_LT lv lv_LV; do
- #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
- echo "$l ISO-8859-13"
- done
- for l in ru_UA uk uk_UA; do
- echo "$l KOI8-U"
- done
- for l in zh zh_CN; do
- #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
- echo "$l GB2312"
- done
- for l in ja ja_JP ja_JP.EUC; do
- echo "$l EUC-JP"
- done
- for l in ko ko_KR; do
- echo "$l EUC-KR"
- done
- for l in th th_TH; do
- echo "$l TIS-620"
- done
- for l in fa fa_IR; do
- #echo "$l ISIRI-3342" # a broken encoding
- echo "$l.utf-8 UTF-8"
- done
- ;;
- linux* | *-gnu*)
- # With glibc-2.1 or newer, we don't need any canonicalization,
- # because glibc has iconv and both glibc and libiconv support all
- # GNU canonical names directly. Therefore, the Makefile does not
- # need to install the alias file at all.
- # The following applies only to glibc-2.0.x and older libcs.
- echo "ISO_646.IRV:1983 ASCII"
- ;;
- aix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "IBM-850 CP850"
- echo "IBM-856 CP856"
- echo "IBM-921 ISO-8859-13"
- echo "IBM-922 CP922"
- echo "IBM-932 CP932"
- echo "IBM-943 CP943"
- echo "IBM-1046 CP1046"
- echo "IBM-1124 CP1124"
- echo "IBM-1129 CP1129"
- echo "IBM-1252 CP1252"
- echo "IBM-eucCN GB2312"
- echo "IBM-eucJP EUC-JP"
- echo "IBM-eucKR EUC-KR"
- echo "IBM-eucTW EUC-TW"
- echo "big5 BIG5"
- echo "GBK GBK"
- echo "TIS-620 TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- hpux*)
- echo "iso88591 ISO-8859-1"
- echo "iso88592 ISO-8859-2"
- echo "iso88595 ISO-8859-5"
- echo "iso88596 ISO-8859-6"
- echo "iso88597 ISO-8859-7"
- echo "iso88598 ISO-8859-8"
- echo "iso88599 ISO-8859-9"
- echo "iso885915 ISO-8859-15"
- echo "roman8 HP-ROMAN8"
- echo "arabic8 HP-ARABIC8"
- echo "greek8 HP-GREEK8"
- echo "hebrew8 HP-HEBREW8"
- echo "turkish8 HP-TURKISH8"
- echo "kana8 HP-KANA8"
- echo "tis620 TIS-620"
- echo "big5 BIG5"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "hp15CN GB2312"
- #echo "ccdc ?" # what is this?
- echo "SJIS SHIFT_JIS"
- echo "utf8 UTF-8"
- ;;
- irix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-9 ISO-8859-9"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- ;;
- osf*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "cp850 CP850"
- echo "big5 BIG5"
- echo "dechanyu DEC-HANYU"
- echo "dechanzi GB2312"
- echo "deckanji DEC-KANJI"
- echo "deckorean EUC-KR"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "GBK GBK"
- echo "KSC5601 CP949"
- echo "sdeckanji EUC-JP"
- echo "SJIS SHIFT_JIS"
- echo "TACTIS TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- solaris*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-3 ISO-8859-3"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "koi8-r KOI8-R"
- echo "ansi-1251 CP1251"
- echo "BIG5 BIG5"
- echo "Big5-HKSCS BIG5-HKSCS"
- echo "gb2312 GB2312"
- echo "GBK GBK"
- echo "GB18030 GB18030"
- echo "cns11643 EUC-TW"
- echo "5601 EUC-KR"
- echo "ko_KR.johap92 JOHAB"
- echo "eucJP EUC-JP"
- echo "PCK SHIFT_JIS"
- echo "TIS620.2533 TIS-620"
- #echo "sun_eu_greek ?" # what is this?
- echo "UTF-8 UTF-8"
- ;;
- freebsd* | os2*)
- # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
- # reuse FreeBSD's locale data for OS/2.
- echo "C ASCII"
- echo "US-ASCII ASCII"
- for l in la_LN lt_LN; do
- echo "$l.ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
- lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
- echo "$l.ISO_8859-1 ISO-8859-1"
- echo "$l.DIS_8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
- echo "$l.ISO_8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO_8859-4 ISO-8859-4"
- done
- for l in ru_RU ru_SU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO_8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ja_JP.Shift_JIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- netbsd*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-15 ISO-8859-15"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "BIG5 BIG5"
- echo "SJIS SHIFT_JIS"
- ;;
- darwin*)
- # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- for l in en_AU en_CA en_GB en_US la_LN; do
- echo "$l.US-ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
- nl_NL no_NO pt_PT sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in la_LN; do
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
- echo "$l.ISO8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO8859-4 ISO-8859-4"
- done
- for l in ru_RU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- for l in bg_BG; do
- echo "$l.CP1251 CP1251"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- beos*)
- # BeOS has a single locale, and it has UTF-8 encoding.
- echo "* UTF-8"
- ;;
- msdosdjgpp*)
- # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "#"
- echo "# The encodings given here may not all be correct."
- echo "# If you find that the encoding given for your language and"
- echo "# country is not the one your DOS machine actually uses, just"
- echo "# correct it in this file, and send a mail to"
- echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
- echo "# and Bruno Haible <bruno@clisp.org>."
- echo "#"
- echo "C ASCII"
- # ISO-8859-1 languages
- echo "ca CP850"
- echo "ca_ES CP850"
- echo "da CP865" # not CP850 ??
- echo "da_DK CP865" # not CP850 ??
- echo "de CP850"
- echo "de_AT CP850"
- echo "de_CH CP850"
- echo "de_DE CP850"
- echo "en CP850"
- echo "en_AU CP850" # not CP437 ??
- echo "en_CA CP850"
- echo "en_GB CP850"
- echo "en_NZ CP437"
- echo "en_US CP437"
- echo "en_ZA CP850" # not CP437 ??
- echo "es CP850"
- echo "es_AR CP850"
- echo "es_BO CP850"
- echo "es_CL CP850"
- echo "es_CO CP850"
- echo "es_CR CP850"
- echo "es_CU CP850"
- echo "es_DO CP850"
- echo "es_EC CP850"
- echo "es_ES CP850"
- echo "es_GT CP850"
- echo "es_HN CP850"
- echo "es_MX CP850"
- echo "es_NI CP850"
- echo "es_PA CP850"
- echo "es_PY CP850"
- echo "es_PE CP850"
- echo "es_SV CP850"
- echo "es_UY CP850"
- echo "es_VE CP850"
- echo "et CP850"
- echo "et_EE CP850"
- echo "eu CP850"
- echo "eu_ES CP850"
- echo "fi CP850"
- echo "fi_FI CP850"
- echo "fr CP850"
- echo "fr_BE CP850"
- echo "fr_CA CP850"
- echo "fr_CH CP850"
- echo "fr_FR CP850"
- echo "ga CP850"
- echo "ga_IE CP850"
- echo "gd CP850"
- echo "gd_GB CP850"
- echo "gl CP850"
- echo "gl_ES CP850"
- echo "id CP850" # not CP437 ??
- echo "id_ID CP850" # not CP437 ??
- echo "is CP861" # not CP850 ??
- echo "is_IS CP861" # not CP850 ??
- echo "it CP850"
- echo "it_CH CP850"
- echo "it_IT CP850"
- echo "lt CP775"
- echo "lt_LT CP775"
- echo "lv CP775"
- echo "lv_LV CP775"
- echo "nb CP865" # not CP850 ??
- echo "nb_NO CP865" # not CP850 ??
- echo "nl CP850"
- echo "nl_BE CP850"
- echo "nl_NL CP850"
- echo "nn CP865" # not CP850 ??
- echo "nn_NO CP865" # not CP850 ??
- echo "no CP865" # not CP850 ??
- echo "no_NO CP865" # not CP850 ??
- echo "pt CP850"
- echo "pt_BR CP850"
- echo "pt_PT CP850"
- echo "sv CP850"
- echo "sv_SE CP850"
- # ISO-8859-2 languages
- echo "cs CP852"
- echo "cs_CZ CP852"
- echo "hr CP852"
- echo "hr_HR CP852"
- echo "hu CP852"
- echo "hu_HU CP852"
- echo "pl CP852"
- echo "pl_PL CP852"
- echo "ro CP852"
- echo "ro_RO CP852"
- echo "sk CP852"
- echo "sk_SK CP852"
- echo "sl CP852"
- echo "sl_SI CP852"
- echo "sq CP852"
- echo "sq_AL CP852"
- echo "sr CP852" # CP852 or CP866 or CP855 ??
- echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
- echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
- # ISO-8859-3 languages
- echo "mt CP850"
- echo "mt_MT CP850"
- # ISO-8859-5 languages
- echo "be CP866"
- echo "be_BE CP866"
- echo "bg CP866" # not CP855 ??
- echo "bg_BG CP866" # not CP855 ??
- echo "mk CP866" # not CP855 ??
- echo "mk_MK CP866" # not CP855 ??
- echo "ru CP866"
- echo "ru_RU CP866"
- echo "uk CP1125"
- echo "uk_UA CP1125"
- # ISO-8859-6 languages
- echo "ar CP864"
- echo "ar_AE CP864"
- echo "ar_DZ CP864"
- echo "ar_EG CP864"
- echo "ar_IQ CP864"
- echo "ar_IR CP864"
- echo "ar_JO CP864"
- echo "ar_KW CP864"
- echo "ar_MA CP864"
- echo "ar_OM CP864"
- echo "ar_QA CP864"
- echo "ar_SA CP864"
- echo "ar_SY CP864"
- # ISO-8859-7 languages
- echo "el CP869"
- echo "el_GR CP869"
- # ISO-8859-8 languages
- echo "he CP862"
- echo "he_IL CP862"
- # ISO-8859-9 languages
- echo "tr CP857"
- echo "tr_TR CP857"
- # Japanese
- echo "ja CP932"
- echo "ja_JP CP932"
- # Chinese
- echo "zh_CN GBK"
- echo "zh_TW CP950" # not CP938 ??
- # Korean
- echo "kr CP949" # not CP934 ??
- echo "kr_KR CP949" # not CP934 ??
- # Thai
- echo "th CP874"
- echo "th_TH CP874"
- # Other
- echo "eo CP850"
- echo "eo_EO CP850"
- ;;
-esac
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
deleted file mode 100644
index c2a63f08..00000000
--- a/intl/dcgettext.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Implementation of the dcgettext(3) function.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCGETTEXT __dcgettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCGETTEXT libintl_dcgettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-DCGETTEXT (const char *domainname, const char *msgid, int category)
-{
- return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-INTDEF(__dcgettext)
-weak_alias (__dcgettext, dcgettext);
-#endif
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
deleted file mode 100644
index 52bb16e1..00000000
--- a/intl/dcigettext.c
+++ /dev/null
@@ -1,1222 +0,0 @@
-/* Implementation of the internal dcigettext function.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-#ifndef __set_errno
-# define __set_errno(val) errno = (val)
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include <locale.h>
-
-#ifdef _LIBC
- /* Guess whether integer division by zero raises signal SIGFPE.
- Set to 1 only if you know for sure. In case of doubt, set to 0. */
-# if defined __alpha__ || defined __arm__ || defined __i386__ \
- || defined __m68k__ || defined __s390__
-# define INTDIV0_RAISES_SIGFPE 1
-# else
-# define INTDIV0_RAISES_SIGFPE 0
-# endif
-#endif
-#if !INTDIV0_RAISES_SIGFPE
-# include <signal.h>
-#endif
-
-#if defined HAVE_SYS_PARAM_H || defined _LIBC
-# include <sys/param.h>
-#endif
-
-#include "gettextP.h"
-#include "plural-exp.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "hash-string.h"
-
-/* Thread safetyness. */
-#ifdef _LIBC
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_lock_define_initialized(CLASS, NAME)
-# define __libc_lock_lock(NAME)
-# define __libc_lock_unlock(NAME)
-# define __libc_rwlock_define_initialized(CLASS, NAME)
-# define __libc_rwlock_rdlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* Alignment of types. */
-#if defined __GNUC__ && __GNUC__ >= 2
-# define alignof(TYPE) __alignof__ (TYPE)
-#else
-# define alignof(TYPE) \
- ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain libintl_nl_default_default_domain
-# define _nl_current_default_domain libintl_nl_current_default_domain
-# define _nl_default_dirname libintl_nl_default_dirname
-# define _nl_domain_bindings libintl_nl_domain_bindings
-#endif
-
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define getcwd __getcwd
-# ifndef stpcpy
-# define stpcpy __stpcpy
-# endif
-# define tfind __tfind
-#else
-# if !defined HAVE_GETCWD
-char *getwd ();
-# define getcwd(buf, max) getwd (buf)
-# else
-# if VMS
-# define getcwd(buf, max) (getcwd) (buf, max, 0)
-# else
-char *getcwd ();
-# endif
-# endif
-# ifndef HAVE_STPCPY
-#define stpcpy(dest, src) my_stpcpy(dest, src)
-static char *stpcpy (char *dest, const char *src);
-# endif
-# ifndef HAVE_MEMPCPY
-static void *mempcpy (void *dest, const void *src, size_t n);
-# endif
-#endif
-
-/* Amount to increase buffer size by in each try. */
-#define PATH_INCR 32
-
-/* The following is from pathmax.h. */
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
- PATH_MAX but might cause redefinition warnings when sys/param.h is
- later included (as on MORE/BSD 4.3). */
-#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
-# include <limits.h>
-#endif
-
-#ifndef _POSIX_PATH_MAX
-# define _POSIX_PATH_MAX 255
-#endif
-
-#if !defined PATH_MAX && defined _PC_PATH_MAX
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-#endif
-
-/* Don't include sys/param.h if it already has been. */
-#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
-# include <sys/param.h>
-#endif
-
-#if !defined PATH_MAX && defined MAXPATHLEN
-# define PATH_MAX MAXPATHLEN
-#endif
-
-#ifndef PATH_MAX
-# define PATH_MAX _POSIX_PATH_MAX
-#endif
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
- it may be concatenated to a directory pathname.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-# define IS_PATH_WITH_DIR(P) \
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-#endif
-
-/* This is the type used for the search tree where known translations
- are stored. */
-struct known_translation_t
-{
- /* Domain in which to search. */
- char *domainname;
-
- /* The category. */
- int category;
-
- /* State of the catalog counter at the point the string was found. */
- int counter;
-
- /* Catalog where the string was found. */
- struct loaded_l10nfile *domain;
-
- /* And finally the translation. */
- const char *translation;
- size_t translation_length;
-
- /* Pointer to the string in question. */
- char msgid[ZERO];
-};
-
-/* Root of the search tree with known translations. We can use this
- only if the system provides the `tsearch' function family. */
-#if defined HAVE_TSEARCH || defined _LIBC
-# include <search.h>
-
-static void *root;
-
-# ifdef _LIBC
-# define tsearch __tsearch
-# endif
-
-/* Function to compare two entries in the table of known translations. */
-static int
-transcmp (const void *p1, const void *p2)
-{
- const struct known_translation_t *s1;
- const struct known_translation_t *s2;
- int result;
-
- s1 = (const struct known_translation_t *) p1;
- s2 = (const struct known_translation_t *) p2;
-
- result = strcmp (s1->msgid, s2->msgid);
- if (result == 0)
- {
- result = strcmp (s1->domainname, s2->domainname);
- if (result == 0)
- /* We compare the category last (though this is the cheapest
- operation) since it is hopefully always the same (namely
- LC_MESSAGES). */
- result = s1->category - s2->category;
- }
-
- return result;
-}
-#endif
-
-#ifndef INTVARDEF
-# define INTVARDEF(name)
-#endif
-#ifndef INTUSE
-# define INTUSE(name) name
-#endif
-
-/* Name of the default domain used for gettext(3) prior any call to
- textdomain(3). The default value for this is "messages". */
-const char _nl_default_default_domain[] attribute_hidden = "messages";
-
-/* Value used as the default domain for gettext(3). */
-const char *_nl_current_default_domain attribute_hidden
- = _nl_default_default_domain;
-
-/* Contains the default location of the message catalogs. */
-#if defined __EMX__
-extern const char _nl_default_dirname[];
-#else
-const char _nl_default_dirname[] = LOCALEDIR;
-INTVARDEF (_nl_default_dirname)
-#endif
-
-/* List with bindings of specific domains created by bindtextdomain()
- calls. */
-struct binding *_nl_domain_bindings;
-
-/* Prototypes for local functions. */
-static char *plural_lookup (struct loaded_l10nfile *domain,
- unsigned long int n,
- const char *translation, size_t translation_len)
- internal_function;
-static const char *guess_category_value (int category,
- const char *categoryname)
- internal_function;
-#ifdef _LIBC
-# include "../locale/localeinfo.h"
-# define category_to_name(category) _nl_category_names[category]
-#else
-static const char *category_to_name (int category) internal_function;
-#endif
-
-
-/* For those loosing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-/* Nothing has to be done. */
-# define freea(p) /* nothing */
-# define ADD_BLOCK(list, address) /* nothing */
-# define FREE_BLOCKS(list) /* nothing */
-#else
-struct block_list
-{
- void *address;
- struct block_list *next;
-};
-# define ADD_BLOCK(list, addr) \
- do { \
- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
- /* If we cannot get a free block we cannot add the new element to \
- the list. */ \
- if (newp != NULL) { \
- newp->address = (addr); \
- newp->next = (list); \
- (list) = newp; \
- } \
- } while (0)
-# define FREE_BLOCKS(list) \
- do { \
- while (list != NULL) { \
- struct block_list *old = list; \
- list = list->next; \
- free (old->address); \
- free (old); \
- } \
- } while (0)
-# undef alloca
-# define alloca(size) (malloc (size))
-# define freea(p) free (p)
-#endif /* have alloca */
-
-
-#ifdef _LIBC
-/* List of blocks allocated for translations. */
-typedef struct transmem_list
-{
- struct transmem_list *next;
- char data[ZERO];
-} transmem_block_t;
-static struct transmem_list *transmem_list;
-#else
-typedef unsigned char transmem_block_t;
-#endif
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCIGETTEXT __dcigettext
-#else
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-#ifdef _LIBC
-__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
-#endif
-
-/* Checking whether the binaries runs SUID must be done and glibc provides
- easier methods therefore we make a difference here. */
-#ifdef _LIBC
-# define ENABLE_SECURE __libc_enable_secure
-# define DETERMINE_SECURE
-#else
-# ifndef HAVE_GETUID
-# define getuid() 0
-# endif
-# ifndef HAVE_GETGID
-# define getgid() 0
-# endif
-# ifndef HAVE_GETEUID
-# define geteuid() getuid()
-# endif
-# ifndef HAVE_GETEGID
-# define getegid() getgid()
-# endif
-static int enable_secure;
-# define ENABLE_SECURE (enable_secure == 1)
-# define DETERMINE_SECURE \
- if (enable_secure == 0) \
- { \
- if (getuid () != geteuid () || getgid () != getegid ()) \
- enable_secure = 1; \
- else \
- enable_secure = -1; \
- }
-#endif
-
-/* Get the function to evaluate the plural expression. */
-#include "eval-plural.h"
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- CATEGORY locale and, if PLURAL is nonzero, search over string
- depending on the plural form determined by N. */
-char *
-DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
- int plural, unsigned long int n, int category)
-{
-#ifndef HAVE_ALLOCA
- struct block_list *block_list = NULL;
-#endif
- struct loaded_l10nfile *domain;
- struct binding *binding;
- const char *categoryname;
- const char *categoryvalue;
- char *dirname, *xdomainname;
- char *single_locale;
- char *retval;
- size_t retlen;
- int saved_errno;
-#if defined HAVE_TSEARCH || defined _LIBC
- struct known_translation_t *search;
- struct known_translation_t **foundp = NULL;
- size_t msgid_len;
-#endif
- size_t domainname_len;
-
- /* If no real MSGID is given return NULL. */
- if (msgid1 == NULL)
- return NULL;
-
-#ifdef _LIBC
- if (category < 0 || category >= __LC_LAST || category == LC_ALL)
- /* Bogus. */
- return (plural == 0
- ? (char *) msgid1
- /* Use the Germanic plural rule. */
- : n == 1 ? (char *) msgid1 : (char *) msgid2);
-#endif
-
- __libc_rwlock_rdlock (_nl_state_lock);
-
- /* If DOMAINNAME is NULL, we are interested in the default domain. If
- CATEGORY is not LC_MESSAGES this might not make much sense but the
- definition left this undefined. */
- if (domainname == NULL)
- domainname = _nl_current_default_domain;
-
- /* OS/2 specific: backward compatibility with older libintl versions */
-#ifdef LC_MESSAGES_COMPAT
- if (category == LC_MESSAGES_COMPAT)
- category = LC_MESSAGES;
-#endif
-
-#if defined HAVE_TSEARCH || defined _LIBC
- msgid_len = strlen (msgid1) + 1;
-
- /* Try to find the translation among those which we found at
- some time. */
- search = (struct known_translation_t *)
- alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
- memcpy (search->msgid, msgid1, msgid_len);
- search->domainname = (char *) domainname;
- search->category = category;
-
- foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
- freea (search);
- if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
- {
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
- (*foundp)->translation_length);
- else
- retval = (char *) (*foundp)->translation;
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
-#endif
-
- /* Preserve the `errno' value. */
- saved_errno = errno;
-
- /* See whether this is a SUID binary or not. */
- DETERMINE_SECURE;
-
- /* First find matching binding. */
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding == NULL)
- dirname = (char *) INTUSE(_nl_default_dirname);
- else if (IS_ABSOLUTE_PATH (binding->dirname))
- dirname = binding->dirname;
- else
- {
- /* We have a relative path. Make it absolute now. */
- size_t dirname_len = strlen (binding->dirname) + 1;
- size_t path_max;
- char *ret;
-
- path_max = (unsigned int) PATH_MAX;
- path_max += 2; /* The getcwd docs say to do this. */
-
- for (;;)
- {
- dirname = (char *) alloca (path_max + dirname_len);
- ADD_BLOCK (block_list, dirname);
-
- __set_errno (0);
- ret = getcwd (dirname, path_max);
- if (ret != NULL || errno != ERANGE)
- break;
-
- path_max += path_max / 2;
- path_max += PATH_INCR;
- }
-
- if (ret == NULL)
- /* We cannot get the current working directory. Don't signal an
- error but simply return the default string. */
- goto return_untranslated;
-
- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
- }
-
- /* Now determine the symbolic name of CATEGORY and its value. */
- categoryname = category_to_name (category);
- categoryvalue = guess_category_value (category, categoryname);
-
- domainname_len = strlen (domainname);
- xdomainname = (char *) alloca (strlen (categoryname)
- + domainname_len + 5);
- ADD_BLOCK (block_list, xdomainname);
-
- stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
- domainname, domainname_len),
- ".mo");
-
- /* Creating working area. */
- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
- ADD_BLOCK (block_list, single_locale);
-
-
- /* Search for the given string. This is a loop because we perhaps
- got an ordered list of languages to consider for the translation. */
- while (1)
- {
- /* Make CATEGORYVALUE point to the next element of the list. */
- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
- ++categoryvalue;
- if (categoryvalue[0] == '\0')
- {
- /* The whole contents of CATEGORYVALUE has been searched but
- no valid entry has been found. We solve this situation
- by implicitly appending a "C" entry, i.e. no translation
- will take place. */
- single_locale[0] = 'C';
- single_locale[1] = '\0';
- }
- else
- {
- char *cp = single_locale;
- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
- *cp++ = *categoryvalue++;
- *cp = '\0';
-
- /* When this is a SUID binary we must not allow accessing files
- outside the dedicated directories. */
- if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
- /* Ignore this entry. */
- continue;
- }
-
- /* If the current locale value is C (or POSIX) we don't load a
- domain. Return the MSGID. */
- if (strcmp (single_locale, "C") == 0
- || strcmp (single_locale, "POSIX") == 0)
- break;
-
- /* Find structure describing the message catalog matching the
- DOMAINNAME and CATEGORY. */
- domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
-
- if (domain != NULL)
- {
- retval = _nl_find_msg (domain, binding, msgid1, &retlen);
-
- if (retval == NULL)
- {
- int cnt;
-
- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
- {
- retval = _nl_find_msg (domain->successor[cnt], binding,
- msgid1, &retlen);
-
- if (retval != NULL)
- {
- domain = domain->successor[cnt];
- break;
- }
- }
- }
-
- if (retval != NULL)
- {
- /* Found the translation of MSGID1 in domain DOMAIN:
- starting at RETVAL, RETLEN bytes. */
- FREE_BLOCKS (block_list);
-#if defined HAVE_TSEARCH || defined _LIBC
- if (foundp == NULL)
- {
- /* Create a new entry and add it to the search tree. */
- struct known_translation_t *newp;
-
- newp = (struct known_translation_t *)
- malloc (offsetof (struct known_translation_t, msgid)
- + msgid_len + domainname_len + 1);
- if (newp != NULL)
- {
- newp->domainname =
- mempcpy (newp->msgid, msgid1, msgid_len);
- memcpy (newp->domainname, domainname, domainname_len + 1);
- newp->category = category;
- newp->counter = _nl_msg_cat_cntr;
- newp->domain = domain;
- newp->translation = retval;
- newp->translation_length = retlen;
-
- /* Insert the entry in the search tree. */
- foundp = (struct known_translation_t **)
- tsearch (newp, &root, transcmp);
- if (foundp == NULL
- || __builtin_expect (*foundp != newp, 0))
- /* The insert failed. */
- free (newp);
- }
- }
- else
- {
- /* We can update the existing entry. */
- (*foundp)->counter = _nl_msg_cat_cntr;
- (*foundp)->domain = domain;
- (*foundp)->translation = retval;
- (*foundp)->translation_length = retlen;
- }
-#endif
- __set_errno (saved_errno);
-
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup (domain, n, retval, retlen);
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
- }
- }
-
- return_untranslated:
- /* Return the untranslated MSGID. */
- FREE_BLOCKS (block_list);
- __libc_rwlock_unlock (_nl_state_lock);
-#if 0 /* Doesn't work with diet libc -- TYT */
-#ifndef _LIBC
- if (!ENABLE_SECURE)
- {
- extern void _nl_log_untranslated (const char *logfilename,
- const char *domainname,
- const char *msgid1, const char *msgid2,
- int plural);
- const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
-
- if (logfilename != NULL && logfilename[0] != '\0')
- _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
- }
-#endif
-#endif
- __set_errno (saved_errno);
- return (plural == 0
- ? (char *) msgid1
- /* Use the Germanic plural rule. */
- : n == 1 ? (char *) msgid1 : (char *) msgid2);
-}
-
-
-char *
-internal_function
-_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *msgid,
- size_t *lengthp)
-{
- struct loaded_domain *domain;
- nls_uint32 nstrings;
- size_t act;
- char *result;
- size_t resultlen;
-
- if (domain_file->decided == 0)
- _nl_load_domain (domain_file, domainbinding);
-
- if (domain_file->data == NULL)
- return NULL;
-
- domain = (struct loaded_domain *) domain_file->data;
-
- nstrings = domain->nstrings;
-
- /* Locate the MSGID and its translation. */
- if (domain->hash_tab != NULL)
- {
- /* Use the hashing table. */
- nls_uint32 len = strlen (msgid);
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
- while (1)
- {
- nls_uint32 nstr =
- W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
-
- if (nstr == 0)
- /* Hash table entry is empty. */
- return NULL;
-
- nstr--;
-
- /* Compare msgid with the original string at index nstr.
- We compare the lengths with >=, not ==, because plural entries
- are represented by strings with an embedded NUL. */
- if (nstr < nstrings
- ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
- && (strcmp (msgid,
- domain->data + W (domain->must_swap,
- domain->orig_tab[nstr].offset))
- == 0)
- : domain->orig_sysdep_tab[nstr - nstrings].length > len
- && (strcmp (msgid,
- domain->orig_sysdep_tab[nstr - nstrings].pointer)
- == 0))
- {
- act = nstr;
- goto found;
- }
-
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
- }
- /* NOTREACHED */
- }
- else
- {
- /* Try the default method: binary search in the sorted array of
- messages. */
- size_t top, bottom;
-
- bottom = 0;
- top = nstrings;
- while (bottom < top)
- {
- int cmp_val;
-
- act = (bottom + top) / 2;
- cmp_val = strcmp (msgid, (domain->data
- + W (domain->must_swap,
- domain->orig_tab[act].offset)));
- if (cmp_val < 0)
- top = act;
- else if (cmp_val > 0)
- bottom = act + 1;
- else
- goto found;
- }
- /* No translation was found. */
- return NULL;
- }
-
- found:
- /* The translation was found at index ACT. If we have to convert the
- string to use a different character set, this is the time. */
- if (act < nstrings)
- {
- result = (char *)
- (domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
- resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
- }
- else
- {
- result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
- resultlen = domain->trans_sysdep_tab[act - nstrings].length;
- }
-
-#if defined _LIBC || HAVE_ICONV
- if (domain->codeset_cntr
- != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
- {
- /* The domain's codeset has changed through bind_textdomain_codeset()
- since the message catalog was initialized or last accessed. We
- have to reinitialize the converter. */
- _nl_free_domain_conv (domain);
- _nl_init_domain_conv (domain_file, domain, domainbinding);
- }
-
- if (
-# ifdef _LIBC
- domain->conv != (__gconv_t) -1
-# else
-# if HAVE_ICONV
- domain->conv != (iconv_t) -1
-# endif
-# endif
- )
- {
- /* We are supposed to do a conversion. First allocate an
- appropriate table with the same structure as the table
- of translations in the file, where we can put the pointers
- to the converted strings in.
- There is a slight complication with plural entries. They
- are represented by consecutive NUL terminated strings. We
- handle this case by converting RESULTLEN bytes, including
- NULs. */
-
- if (domain->conv_tab == NULL
- && ((domain->conv_tab =
- (char **) calloc (nstrings + domain->n_sysdep_strings,
- sizeof (char *)))
- == NULL))
- /* Mark that we didn't succeed allocating a table. */
- domain->conv_tab = (char **) -1;
-
- if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
- /* Nothing we can do, no more memory. */
- goto converted;
-
- if (domain->conv_tab[act] == NULL)
- {
- /* We haven't used this string so far, so it is not
- translated yet. Do this now. */
- /* We use a bit more efficient memory handling.
- We allocate always larger blocks which get used over
- time. This is faster than many small allocations. */
- __libc_lock_define_initialized (static, lock)
-# define INITIAL_BLOCK_SIZE 4080
- static unsigned char *freemem;
- static size_t freemem_size;
-
- const unsigned char *inbuf;
- unsigned char *outbuf;
- int malloc_count;
-# ifndef _LIBC
- transmem_block_t *transmem_list = NULL;
-# endif
-
- __libc_lock_lock (lock);
-
- inbuf = (const unsigned char *) result;
- outbuf = freemem + sizeof (size_t);
-
- malloc_count = 0;
- while (1)
- {
- transmem_block_t *newmem;
-# ifdef _LIBC
- size_t non_reversible;
- int res;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- res = __gconv (domain->conv,
- &inbuf, inbuf + resultlen,
- &outbuf,
- outbuf + freemem_size - sizeof (size_t),
- &non_reversible);
-
- if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
- break;
-
- if (res != __GCONV_FULL_OUTPUT)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-
- inbuf = result;
-# else
-# if HAVE_ICONV
- const char *inptr = (const char *) inbuf;
- size_t inleft = resultlen;
- char *outptr = (char *) outbuf;
- size_t outleft;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- outleft = freemem_size - sizeof (size_t);
- if (iconv (domain->conv,
- (ICONV_CONST char **) &inptr, &inleft,
- &outptr, &outleft)
- != (size_t) (-1))
- {
- outbuf = (unsigned char *) outptr;
- break;
- }
- if (errno != E2BIG)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-# endif
-# endif
-
- resize_freemem:
- /* We must allocate a new buffer or resize the old one. */
- if (malloc_count > 0)
- {
- ++malloc_count;
- freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) realloc (transmem_list,
- freemem_size);
-# ifdef _LIBC
- if (newmem != NULL)
- transmem_list = transmem_list->next;
- else
- {
- struct transmem_list *old = transmem_list;
-
- transmem_list = transmem_list->next;
- free (old);
- }
-# endif
- }
- else
- {
- malloc_count = 1;
- freemem_size = INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) malloc (freemem_size);
- }
- if (__builtin_expect (newmem == NULL, 0))
- {
- freemem = NULL;
- freemem_size = 0;
- __libc_lock_unlock (lock);
- goto converted;
- }
-
-# ifdef _LIBC
- /* Add the block to the list of blocks we have to free
- at some point. */
- newmem->next = transmem_list;
- transmem_list = newmem;
-
- freemem = newmem->data;
- freemem_size -= offsetof (struct transmem_list, data);
-# else
- transmem_list = newmem;
- freemem = newmem;
-# endif
-
- outbuf = freemem + sizeof (size_t);
- }
-
- /* We have now in our buffer a converted string. Put this
- into the table of conversions. */
- *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
- domain->conv_tab[act] = (char *) freemem;
- /* Shrink freemem, but keep it aligned. */
- freemem_size -= outbuf - freemem;
- freemem = outbuf;
- freemem += freemem_size & (alignof (size_t) - 1);
- freemem_size = freemem_size & ~ (alignof (size_t) - 1);
-
- __libc_lock_unlock (lock);
- }
-
- /* Now domain->conv_tab[act] contains the translation of all
- the plural variants. */
- result = domain->conv_tab[act] + sizeof (size_t);
- resultlen = *(size_t *) domain->conv_tab[act];
- }
-
- converted:
- /* The result string is converted. */
-
-#endif /* _LIBC || HAVE_ICONV */
-
- *lengthp = resultlen;
- return result;
-}
-
-
-/* Look up a plural variant. */
-static char *
-internal_function
-plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
- const char *translation, size_t translation_len)
-{
- struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
- unsigned long int index;
- const char *p;
-
- index = plural_eval (domaindata->plural, n);
- if (index >= domaindata->nplurals)
- /* This should never happen. It means the plural expression and the
- given maximum value do not match. */
- index = 0;
-
- /* Skip INDEX strings at TRANSLATION. */
- p = translation;
- while (index-- > 0)
- {
-#ifdef _LIBC
- p = __rawmemchr (p, '\0');
-#else
- p = strchr (p, '\0');
-#endif
- /* And skip over the NUL byte. */
- p++;
-
- if (p >= translation + translation_len)
- /* This should never happen. It means the plural expression
- evaluated to a value larger than the number of variants
- available for MSGID1. */
- return (char *) translation;
- }
- return (char *) p;
-}
-
-#ifndef _LIBC
-/* Return string representation of locale CATEGORY. */
-static const char *
-internal_function
-category_to_name (int category)
-{
- const char *retval;
-
- switch (category)
- {
-#ifdef LC_COLLATE
- case LC_COLLATE:
- retval = "LC_COLLATE";
- break;
-#endif
-#ifdef LC_CTYPE
- case LC_CTYPE:
- retval = "LC_CTYPE";
- break;
-#endif
-#ifdef LC_MONETARY
- case LC_MONETARY:
- retval = "LC_MONETARY";
- break;
-#endif
-#ifdef LC_NUMERIC
- case LC_NUMERIC:
- retval = "LC_NUMERIC";
- break;
-#endif
-#ifdef LC_TIME
- case LC_TIME:
- retval = "LC_TIME";
- break;
-#endif
-#ifdef LC_MESSAGES
- case LC_MESSAGES:
- retval = "LC_MESSAGES";
- break;
-#endif
-#ifdef LC_RESPONSE
- case LC_RESPONSE:
- retval = "LC_RESPONSE";
- break;
-#endif
-#ifdef LC_ALL
- case LC_ALL:
- /* This might not make sense but is perhaps better than any other
- value. */
- retval = "LC_ALL";
- break;
-#endif
- default:
- /* If you have a better idea for a default value let me know. */
- retval = "LC_XXX";
- }
-
- return retval;
-}
-#endif
-
-/* Guess value of current locale from value of the environment variables. */
-static const char *
-internal_function
-guess_category_value (int category, const char *categoryname)
-{
- const char *language;
- const char *retval;
-
- /* The highest priority value is the `LANGUAGE' environment
- variable. But we don't use the value if the currently selected
- locale is the C locale. This is a GNU extension. */
- language = getenv ("LANGUAGE");
- if (language != NULL && language[0] == '\0')
- language = NULL;
-
- /* We have to proceed with the POSIX methods of looking to `LC_ALL',
- `LC_xxx', and `LANG'. On some systems this can be done by the
- `setlocale' function itself. */
-#ifdef _LIBC
- retval = __current_locale_name (category);
-#else
- retval = _nl_locale_name (category, categoryname);
-#endif
-
- /* Ignore LANGUAGE if the locale is set to "C" because
- 1. "C" locale usually uses the ASCII encoding, and most international
- messages use non-ASCII characters. These characters get displayed
- as question marks (if using glibc's iconv()) or as invalid 8-bit
- characters (because other iconv()s refuse to convert most non-ASCII
- characters to ASCII). In any case, the output is ugly.
- 2. The precise output of some programs in the "C" locale is specified
- by POSIX and should not depend on environment variables like
- "LANGUAGE". We allow such programs to use gettext(). */
- return language != NULL && strcmp (retval, "C") != 0 ? language : retval;
-}
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
-
-#if !_LIBC && !HAVE_MEMPCPY
-static void *
-mempcpy (void *dest, const void *src, size_t n)
-{
- return (void *) ((char *) memcpy (dest, src, n) + n);
-}
-#endif
-
-
-#ifdef _LIBC
-/* If we want to free all resources we have to do some work at
- program's end. */
-libc_freeres_fn (free_mem)
-{
- void *old;
-
- while (_nl_domain_bindings != NULL)
- {
- struct binding *oldp = _nl_domain_bindings;
- _nl_domain_bindings = _nl_domain_bindings->next;
- if (oldp->dirname != INTUSE(_nl_default_dirname))
- /* Yes, this is a pointer comparison. */
- free (oldp->dirname);
- free (oldp->codeset);
- free (oldp);
- }
-
- if (_nl_current_default_domain != _nl_default_default_domain)
- /* Yes, again a pointer comparison. */
- free ((char *) _nl_current_default_domain);
-
- /* Remove the search tree with the known translations. */
- __tdestroy (root, free);
- root = NULL;
-
- while (transmem_list != NULL)
- {
- old = transmem_list;
- transmem_list = transmem_list->next;
- free (old);
- }
-}
-#endif
diff --git a/intl/dcngettext.c b/intl/dcngettext.c
deleted file mode 100644
index eb368336..00000000
--- a/intl/dcngettext.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the dcngettext(3) function.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCNGETTEXT __dcngettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCNGETTEXT libintl_dcngettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-DCNGETTEXT (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n,
- int category)
-{
- return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dcngettext, dcngettext);
-#endif
diff --git a/intl/dgettext.c b/intl/dgettext.c
deleted file mode 100644
index 9b0d0de6..00000000
--- a/intl/dgettext.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Implementation of the dgettext(3) function.
- Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DGETTEXT __dgettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# define DGETTEXT libintl_dgettext
-# define DCGETTEXT libintl_dcgettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog of the current
- LC_MESSAGES locale. */
-char *
-DGETTEXT (const char *domainname, const char *msgid)
-{
- return DCGETTEXT (domainname, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dgettext, dgettext);
-#endif
diff --git a/intl/dngettext.c b/intl/dngettext.c
deleted file mode 100644
index 3278438f..00000000
--- a/intl/dngettext.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Implementation of the dngettext(3) function.
- Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DNGETTEXT __dngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define DNGETTEXT libintl_dngettext
-# define DCNGETTEXT libintl_dcngettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog of the current
- LC_MESSAGES locale and skip message according to the plural form. */
-char *
-DNGETTEXT (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dngettext, dngettext);
-#endif
diff --git a/intl/eval-plural.h b/intl/eval-plural.h
deleted file mode 100644
index dacd003d..00000000
--- a/intl/eval-plural.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Plural expression evaluation.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef STATIC
-#define STATIC static
-#endif
-
-/* Evaluate the plural expression and return an index value. */
-STATIC
-unsigned long int
-internal_function
-plural_eval (struct expression *pexp, unsigned long int n)
-{
- switch (pexp->nargs)
- {
- case 0:
- switch (pexp->operation)
- {
- case var:
- return n;
- case num:
- return pexp->val.num;
- default:
- break;
- }
- /* NOTREACHED */
- break;
- case 1:
- {
- /* pexp->operation must be lnot. */
- unsigned long int arg = plural_eval (pexp->val.args[0], n);
- return ! arg;
- }
- case 2:
- {
- unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
- if (pexp->operation == lor)
- return leftarg || plural_eval (pexp->val.args[1], n);
- else if (pexp->operation == land)
- return leftarg && plural_eval (pexp->val.args[1], n);
- else
- {
- unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
-
- switch (pexp->operation)
- {
- case mult:
- return leftarg * rightarg;
- case divide:
-#if !INTDIV0_RAISES_SIGFPE
- if (rightarg == 0)
- raise (SIGFPE);
-#endif
- return leftarg / rightarg;
- case module:
-#if !INTDIV0_RAISES_SIGFPE
- if (rightarg == 0)
- raise (SIGFPE);
-#endif
- return leftarg % rightarg;
- case plus:
- return leftarg + rightarg;
- case minus:
- return leftarg - rightarg;
- case less_than:
- return leftarg < rightarg;
- case greater_than:
- return leftarg > rightarg;
- case less_or_equal:
- return leftarg <= rightarg;
- case greater_or_equal:
- return leftarg >= rightarg;
- case equal:
- return leftarg == rightarg;
- case not_equal:
- return leftarg != rightarg;
- default:
- break;
- }
- }
- /* NOTREACHED */
- break;
- }
- case 3:
- {
- /* pexp->operation must be qmop. */
- unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
- return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
- }
- }
- /* NOTREACHED */
- return 0;
-}
diff --git a/intl/explodename.c b/intl/explodename.c
deleted file mode 100644
index 1361418d..00000000
--- a/intl/explodename.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (C) 1995-1998, 2000-2001, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-char *
-_nl_find_language (const char *name)
-{
- while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
- && name[0] != '+' && name[0] != ',')
- ++name;
-
- return (char *) name;
-}
-
-
-int
-_nl_explode_name (char *name,
- const char **language, const char **modifier,
- const char **territory, const char **codeset,
- const char **normalized_codeset, const char **special,
- const char **sponsor, const char **revision)
-{
- enum { undecided, xpg, cen } syntax;
- char *cp;
- int mask;
-
- *modifier = NULL;
- *territory = NULL;
- *codeset = NULL;
- *normalized_codeset = NULL;
- *special = NULL;
- *sponsor = NULL;
- *revision = NULL;
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = 0;
- syntax = undecided;
- *language = cp = name;
- cp = _nl_find_language (*language);
-
- if (*language == cp)
- /* This does not make sense: language has to be specified. Use
- this entry as it is without exploding. Perhaps it is an alias. */
- cp = strchr (*language, '\0');
- else if (cp[0] == '_')
- {
- /* Next is the territory. */
- cp[0] = '\0';
- *territory = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
- && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= TERRITORY;
-
- if (cp[0] == '.')
- {
- /* Next is the codeset. */
- syntax = xpg;
- cp[0] = '\0';
- *codeset = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '@')
- ++cp;
-
- mask |= XPG_CODESET;
-
- if (*codeset != cp && (*codeset)[0] != '\0')
- {
- *normalized_codeset = _nl_normalize_codeset (*codeset,
- cp - *codeset);
- if (strcmp (*codeset, *normalized_codeset) == 0)
- free ((char *) *normalized_codeset);
- else
- mask |= XPG_NORM_CODESET;
- }
- }
- }
-
- if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
- {
- /* Next is the modifier. */
- syntax = cp[0] == '@' ? xpg : cen;
- cp[0] = '\0';
- *modifier = ++cp;
-
- while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
- && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= XPG_MODIFIER | CEN_AUDIENCE;
- }
-
- if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
- {
- syntax = cen;
-
- if (cp[0] == '+')
- {
- /* Next is special application (CEN syntax). */
- cp[0] = '\0';
- *special = ++cp;
-
- while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPECIAL;
- }
-
- if (cp[0] == ',')
- {
- /* Next is sponsor (CEN syntax). */
- cp[0] = '\0';
- *sponsor = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPONSOR;
- }
-
- if (cp[0] == '_')
- {
- /* Next is revision (CEN syntax). */
- cp[0] = '\0';
- *revision = ++cp;
-
- mask |= CEN_REVISION;
- }
- }
-
- /* For CEN syntax values it might be important to have the
- separator character in the file name, not for XPG syntax. */
- if (syntax == xpg)
- {
- if (*territory != NULL && (*territory)[0] == '\0')
- mask &= ~TERRITORY;
-
- if (*codeset != NULL && (*codeset)[0] == '\0')
- mask &= ~XPG_CODESET;
-
- if (*modifier != NULL && (*modifier)[0] == '\0')
- mask &= ~XPG_MODIFIER;
- }
-
- return mask;
-}
diff --git a/intl/finddomain.c b/intl/finddomain.c
deleted file mode 100644
index 498f858f..00000000
--- a/intl/finddomain.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Handle list of needed message catalogs
- Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@gnu.org>, 1995.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-/* List of already loaded domains. */
-static struct loaded_l10nfile *_nl_loaded_domains;
-
-
-/* Return a data structure describing the message catalog described by
- the DOMAINNAME and CATEGORY parameters with respect to the currently
- established bindings. */
-struct loaded_l10nfile *
-internal_function
-_nl_find_domain (const char *dirname, char *locale,
- const char *domainname, struct binding *domainbinding)
-{
- struct loaded_l10nfile *retval;
- const char *language;
- const char *modifier;
- const char *territory;
- const char *codeset;
- const char *normalized_codeset;
- const char *special;
- const char *sponsor;
- const char *revision;
- const char *alias_value;
- int mask;
-
- /* LOCALE can consist of up to four recognized parts for the XPG syntax:
-
- language[_territory[.codeset]][@modifier]
-
- and six parts for the CEN syntax:
-
- language[_territory][+audience][+special][,[sponsor][_revision]]
-
- Beside the first part all of them are allowed to be missing. If
- the full specified locale is not found, the less specific one are
- looked for. The various parts will be stripped off according to
- the following order:
- (1) revision
- (2) sponsor
- (3) special
- (4) codeset
- (5) normalized codeset
- (6) territory
- (7) audience/modifier
- */
-
- /* If we have already tested for this locale entry there has to
- be one data set in the list of loaded domains. */
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
- strlen (dirname) + 1, 0, locale, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, domainname, 0);
- if (retval != NULL)
- {
- /* We know something about this locale. */
- int cnt;
-
- if (retval->decided == 0)
- _nl_load_domain (retval, domainbinding);
-
- if (retval->data != NULL)
- return retval;
-
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
- _nl_load_domain (retval->successor[cnt], domainbinding);
-
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- return cnt >= 0 ? retval : NULL;
- /* NOTREACHED */
- }
-
- /* See whether the locale value is an alias. If yes its value
- *overwrites* the alias name. No test for the original value is
- done. */
- alias_value = _nl_expand_alias (locale);
- if (alias_value != NULL)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- locale = strdup (alias_value);
- if (locale == NULL)
- return NULL;
-#else
- size_t len = strlen (alias_value) + 1;
- locale = (char *) malloc (len);
- if (locale == NULL)
- return NULL;
-
- memcpy (locale, alias_value, len);
-#endif
- }
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = _nl_explode_name (locale, &language, &modifier, &territory,
- &codeset, &normalized_codeset, &special,
- &sponsor, &revision);
-
- /* Create all possible locale entries which might be interested in
- generalization. */
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
- strlen (dirname) + 1, mask, language, territory,
- codeset, normalized_codeset, modifier, special,
- sponsor, revision, domainname, 1);
- if (retval == NULL)
- /* This means we are out of core. */
- return NULL;
-
- if (retval->decided == 0)
- _nl_load_domain (retval, domainbinding);
- if (retval->data == NULL)
- {
- int cnt;
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
- _nl_load_domain (retval->successor[cnt], domainbinding);
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- }
-
- /* The room for an alias was dynamically allocated. Free it now. */
- if (alias_value != NULL)
- free (locale);
-
- /* The space for normalized_codeset is dynamically allocated. Free it. */
- if (mask & XPG_NORM_CODESET)
- free ((void *) normalized_codeset);
-
- return retval;
-}
-
-
-#ifdef _LIBC
-libc_freeres_fn (free_mem)
-{
- struct loaded_l10nfile *runp = _nl_loaded_domains;
-
- while (runp != NULL)
- {
- struct loaded_l10nfile *here = runp;
- if (runp->data != NULL)
- _nl_unload_domain ((struct loaded_domain *) runp->data);
- runp = runp->next;
- free ((char *) here->filename);
- free (here);
- }
-}
-#endif
diff --git a/intl/gettext.c b/intl/gettext.c
deleted file mode 100644
index d82d439c..00000000
--- a/intl/gettext.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Implementation of gettext(3) function.
- Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define GETTEXT __gettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# define GETTEXT libintl_gettext
-# define DCGETTEXT libintl_dcgettext
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-char *
-GETTEXT (const char *msgid)
-{
- return DCGETTEXT (NULL, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__gettext, gettext);
-#endif
diff --git a/intl/gettextP.h b/intl/gettextP.h
deleted file mode 100644
index ccd5e87b..00000000
--- a/intl/gettextP.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Header describing internals of libintl library.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _GETTEXTP_H
-#define _GETTEXTP_H
-
-#include <stddef.h> /* Get size_t. */
-
-#ifdef _LIBC
-# include "../iconv/gconv_int.h"
-#else
-# if HAVE_ICONV
-# include <iconv.h>
-# endif
-#endif
-
-#include "loadinfo.h"
-
-#include "gmo.h" /* Get nls_uint32. */
-
-/* @@ end of prolog @@ */
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* Tell the compiler when a conditional or integer expression is
- almost always true or almost always false. */
-#ifndef HAVE_BUILTIN_EXPECT
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-#ifndef W
-# define W(flag, data) ((flag) ? SWAP (data) : (data))
-#endif
-
-
-#ifdef _LIBC
-# include <byteswap.h>
-# define SWAP(i) bswap_32 (i)
-#else
-static inline nls_uint32
-SWAP (i)
- nls_uint32 i;
-{
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
-}
-#endif
-
-
-/* In-memory representation of system dependent string. */
-struct sysdep_string_desc
-{
- /* Length of addressed string, including the trailing NUL. */
- size_t length;
- /* Pointer to addressed string. */
- const char *pointer;
-};
-
-/* The representation of an opened message catalog. */
-struct loaded_domain
-{
- /* Pointer to memory containing the .mo file. */
- const char *data;
- /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */
- int use_mmap;
- /* Size of mmap()ed memory. */
- size_t mmap_size;
- /* 1 if the .mo file uses a different endianness than this machine. */
- int must_swap;
- /* Pointer to additional malloc()ed memory. */
- void *malloced;
-
- /* Number of static strings pairs. */
- nls_uint32 nstrings;
- /* Pointer to descriptors of original strings in the file. */
- const struct string_desc *orig_tab;
- /* Pointer to descriptors of translated strings in the file. */
- const struct string_desc *trans_tab;
-
- /* Number of system dependent strings pairs. */
- nls_uint32 n_sysdep_strings;
- /* Pointer to descriptors of original sysdep strings. */
- const struct sysdep_string_desc *orig_sysdep_tab;
- /* Pointer to descriptors of translated sysdep strings. */
- const struct sysdep_string_desc *trans_sysdep_tab;
-
- /* Size of hash table. */
- nls_uint32 hash_size;
- /* Pointer to hash table. */
- const nls_uint32 *hash_tab;
- /* 1 if the hash table uses a different endianness than this machine. */
- int must_swap_hash_tab;
-
- int codeset_cntr;
-#ifdef _LIBC
- __gconv_t conv;
-#else
-# if HAVE_ICONV
- iconv_t conv;
-# endif
-#endif
- char **conv_tab;
-
- struct expression *plural;
- unsigned long int nplurals;
-};
-
-/* We want to allocate a string at the end of the struct. But ISO C
- doesn't allow zero sized arrays. */
-#ifdef __GNUC__
-# define ZERO 0
-#else
-# define ZERO 1
-#endif
-
-/* A set of settings bound to a message domain. Used to store settings
- from bindtextdomain() and bind_textdomain_codeset(). */
-struct binding
-{
- struct binding *next;
- char *dirname;
- int codeset_cntr; /* Incremented each time codeset changes. */
- char *codeset;
- char domainname[ZERO];
-};
-
-/* A counter which is incremented each time some previous translations
- become invalid.
- This variable is part of the external ABI of the GNU libintl. */
-extern int _nl_msg_cat_cntr;
-
-#ifndef _LIBC
-const char *_nl_locale_name (int category, const char *categoryname);
-#endif
-
-struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
- const char *__domainname,
- struct binding *__domainbinding)
- internal_function;
-void _nl_load_domain (struct loaded_l10nfile *__domain,
- struct binding *__domainbinding)
- internal_function;
-void _nl_unload_domain (struct loaded_domain *__domain)
- internal_function;
-const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file,
- struct loaded_domain *__domain,
- struct binding *__domainbinding)
- internal_function;
-void _nl_free_domain_conv (struct loaded_domain *__domain)
- internal_function;
-
-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *msgid,
- size_t *lengthp)
- internal_function;
-
-#ifdef _LIBC
-extern char *__gettext (const char *__msgid);
-extern char *__dgettext (const char *__domainname, const char *__msgid);
-extern char *__dcgettext (const char *__domainname, const char *__msgid,
- int __category);
-extern char *__ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
-extern char *__dngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int n);
-extern char *__dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
-extern char *__dcigettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category);
-extern char *__textdomain (const char *__domainname);
-extern char *__bindtextdomain (const char *__domainname,
- const char *__dirname);
-extern char *__bind_textdomain_codeset (const char *__domainname,
- const char *__codeset);
-#else
-/* Declare the exported libintl_* functions, in a way that allows us to
- call them under their real name. */
-# undef _INTL_REDIRECT_INLINE
-# undef _INTL_REDIRECT_MACROS
-# define _INTL_REDIRECT_MACROS
-# include "libgnuintl.h"
-extern char *libintl_dcigettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category);
-#endif
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettextP.h */
diff --git a/intl/gmo.h b/intl/gmo.h
deleted file mode 100644
index 26515feb..00000000
--- a/intl/gmo.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Description of GNU message catalog format: general file layout.
- Copyright (C) 1995, 1997, 2000-2002, 2004 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _GETTEXT_H
-#define _GETTEXT_H 1
-
-#include <limits.h>
-
-/* @@ end of prolog @@ */
-
-/* The magic number of the GNU message catalog format. */
-#define _MAGIC 0x950412de
-#define _MAGIC_SWAPPED 0xde120495
-
-/* Revision number of the currently used .mo (binary) file format. */
-#define MO_REVISION_NUMBER 0
-#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1
-
-/* The following contortions are an attempt to use the C preprocessor
- to determine an unsigned integral type that is 32 bits wide. An
- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
- as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
- when cross-compiling. */
-
-#if __STDC__
-# define UINT_MAX_32_BITS 4294967295U
-#else
-# define UINT_MAX_32_BITS 0xFFFFFFFF
-#endif
-
-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
- This should be valid for all systems GNU cares about because
- that doesn't include 16-bit systems, and only modern systems
- (that certainly have <limits.h>) have 64+-bit integral types. */
-
-#ifndef UINT_MAX
-# define UINT_MAX UINT_MAX_32_BITS
-#endif
-
-#if UINT_MAX == UINT_MAX_32_BITS
-typedef unsigned nls_uint32;
-#else
-# if USHRT_MAX == UINT_MAX_32_BITS
-typedef unsigned short nls_uint32;
-# else
-# if ULONG_MAX == UINT_MAX_32_BITS
-typedef unsigned long nls_uint32;
-# else
- /* The following line is intended to throw an error. Using #error is
- not portable enough. */
- "Cannot determine unsigned 32-bit data type."
-# endif
-# endif
-#endif
-
-
-/* Header for binary .mo file format. */
-struct mo_file_header
-{
- /* The magic number. */
- nls_uint32 magic;
- /* The revision number of the file format. */
- nls_uint32 revision;
-
- /* The following are only used in .mo files with major revision 0 or 1. */
-
- /* The number of strings pairs. */
- nls_uint32 nstrings;
- /* Offset of table with start offsets of original strings. */
- nls_uint32 orig_tab_offset;
- /* Offset of table with start offsets of translated strings. */
- nls_uint32 trans_tab_offset;
- /* Size of hash table. */
- nls_uint32 hash_tab_size;
- /* Offset of first hash table entry. */
- nls_uint32 hash_tab_offset;
-
- /* The following are only used in .mo files with minor revision >= 1. */
-
- /* The number of system dependent segments. */
- nls_uint32 n_sysdep_segments;
- /* Offset of table describing system dependent segments. */
- nls_uint32 sysdep_segments_offset;
- /* The number of system dependent strings pairs. */
- nls_uint32 n_sysdep_strings;
- /* Offset of table with start offsets of original sysdep strings. */
- nls_uint32 orig_sysdep_tab_offset;
- /* Offset of table with start offsets of translated sysdep strings. */
- nls_uint32 trans_sysdep_tab_offset;
-};
-
-/* Descriptor for static string contained in the binary .mo file. */
-struct string_desc
-{
- /* Length of addressed string, not including the trailing NUL. */
- nls_uint32 length;
- /* Offset of string in file. */
- nls_uint32 offset;
-};
-
-/* The following are only used in .mo files with minor revision >= 1. */
-
-/* Descriptor for system dependent string segment. */
-struct sysdep_segment
-{
- /* Length of addressed string, including the trailing NUL. */
- nls_uint32 length;
- /* Offset of string in file. */
- nls_uint32 offset;
-};
-
-/* Descriptor for system dependent string. */
-struct sysdep_string
-{
- /* Offset of static string segments in file. */
- nls_uint32 offset;
- /* Alternating sequence of static and system dependent segments.
- The last segment is a static segment, including the trailing NUL. */
- struct segment_pair
- {
- /* Size of static segment. */
- nls_uint32 segsize;
- /* Reference to system dependent string segment, or ~0 at the end. */
- nls_uint32 sysdepref;
- } segments[1];
-};
-
-/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF,
- regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */
-#define SEGMENTS_END ((nls_uint32) ~0)
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettext.h */
diff --git a/intl/hash-string.h b/intl/hash-string.h
deleted file mode 100644
index 2c9a3a57..00000000
--- a/intl/hash-string.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Description of GNU message catalog format: string hashing function.
- Copyright (C) 1995, 1997-1998, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* @@ end of prolog @@ */
-
-/* We assume to have `unsigned long int' value with at least 32 bits. */
-#define HASHWORDBITS 32
-
-
-/* Defines the so called `hashpjw' function by P.J. Weinberger
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- 1986, 1987 Bell Telephone Laboratories, Inc.] */
-static inline unsigned long int
-hash_string (const char *str_param)
-{
- unsigned long int hval, g;
- const char *str = str_param;
-
- /* Compute the hash value for the given string. */
- hval = 0;
- while (*str != '\0')
- {
- hval <<= 4;
- hval += (unsigned char) *str++;
- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
- hval ^= g;
- }
- }
- return hval;
-}
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
deleted file mode 100644
index 15be09cb..00000000
--- a/intl/intl-compat.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
- Library.
- Copyright (C) 1995, 2000-2003 Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-/* This file redirects the gettext functions (without prefix) to those
- defined in the included GNU libintl library (with "libintl_" prefix).
- It is compiled into libintl in order to make the AM_GNU_GETTEXT test
- of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which
- has the redirections primarily in the <libintl.h> include file.
- It is also compiled into libgnuintl so that libgnuintl.so can be used
- as LD_PRELOADable library on glibc systems, to provide the extra
- features that the functions in the libc don't have (namely, logging). */
-
-
-#undef gettext
-#undef dgettext
-#undef dcgettext
-#undef ngettext
-#undef dngettext
-#undef dcngettext
-#undef textdomain
-#undef bindtextdomain
-#undef bind_textdomain_codeset
-
-
-/* When building a DLL, we must export some functions. Note that because
- the functions are only defined for binary backward compatibility, we
- don't need to use __declspec(dllimport) in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define DLL_EXPORTED __declspec(dllexport)
-#else
-# define DLL_EXPORTED
-#endif
-
-
-DLL_EXPORTED
-char *
-gettext (const char *msgid)
-{
- return libintl_gettext (msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dgettext (const char *domainname, const char *msgid)
-{
- return libintl_dgettext (domainname, msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dcgettext (const char *domainname, const char *msgid, int category)
-{
- return libintl_dcgettext (domainname, msgid, category);
-}
-
-
-DLL_EXPORTED
-char *
-ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_ngettext (msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-char *
-dngettext (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_dngettext (domainname, msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-char *
-dcngettext (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n,
- int category)
-{
- return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
-}
-
-
-DLL_EXPORTED
-char *
-textdomain (const char *domainname)
-{
- return libintl_textdomain (domainname);
-}
-
-
-DLL_EXPORTED
-char *
-bindtextdomain (const char *domainname, const char *dirname)
-{
- return libintl_bindtextdomain (domainname, dirname);
-}
-
-
-DLL_EXPORTED
-char *
-bind_textdomain_codeset (const char *domainname, const char *codeset)
-{
- return libintl_bind_textdomain_codeset (domainname, codeset);
-}
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
deleted file mode 100644
index ac0d2d73..00000000
--- a/intl/l10nflist.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/* Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Tell glibc's <string.h> to provide a prototype for stpcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <string.h>
-
-#if defined _LIBC || defined HAVE_ARGZ_H
-# include <argz.h>
-#endif
-#include <ctype.h>
-#include <sys/types.h>
-#include <stdlib.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# ifndef stpcpy
-# define stpcpy(dest, src) __stpcpy(dest, src)
-# endif
-#else
-# ifndef HAVE_STPCPY
-#define stpcpy(dest, src) my_stpcpy(dest, src)
-static char *stpcpy (char *dest, const char *src);
-# endif
-#endif
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
- it may be concatenated to a directory pathname.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-#endif
-
-/* Define function which are usually not available. */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
-/* Returns the number of strings in ARGZ. */
-static size_t
-argz_count__ (const char *argz, size_t len)
-{
- size_t count = 0;
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len + 1;
- len -= part_len + 1;
- count++;
- }
- return count;
-}
-# undef __argz_count
-# define __argz_count(argz, len) argz_count__ (argz, len)
-#else
-# ifdef _LIBC
-# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
-# endif
-#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
- except the last into the character SEP. */
-static void
-argz_stringify__ (char *argz, size_t len, int sep)
-{
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len;
- len -= part_len + 1;
- if (len > 0)
- *argz++ = sep;
- }
-}
-# undef __argz_stringify
-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
-#else
-# ifdef _LIBC
-# define __argz_stringify(argz, len, sep) \
- INTUSE(__argz_stringify) (argz, len, sep)
-# endif
-#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
-static char *
-argz_next__ (char *argz, size_t argz_len, const char *entry)
-{
- if (entry)
- {
- if (entry < argz + argz_len)
- entry = strchr (entry, '\0') + 1;
-
- return entry >= argz + argz_len ? NULL : (char *) entry;
- }
- else
- if (argz_len > 0)
- return argz;
- else
- return 0;
-}
-# undef __argz_next
-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
-#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
-
-
-/* Return number of bits set in X. */
-static inline int
-pop (int x)
-{
- /* We assume that no more than 16 bits are used. */
- x = ((x & ~0x5555) >> 1) + (x & 0x5555);
- x = ((x & ~0x3333) >> 2) + (x & 0x3333);
- x = ((x >> 4) + x) & 0x0f0f;
- x = ((x >> 8) + x) & 0xff;
-
- return x;
-}
-
-
-struct loaded_l10nfile *
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
- const char *dirlist, size_t dirlist_len,
- int mask, const char *language, const char *territory,
- const char *codeset, const char *normalized_codeset,
- const char *modifier, const char *special,
- const char *sponsor, const char *revision,
- const char *filename, int do_allocate)
-{
- char *abs_filename;
- struct loaded_l10nfile **lastp;
- struct loaded_l10nfile *retval;
- char *cp;
- size_t dirlist_count;
- size_t entries;
- int cnt;
-
- /* If LANGUAGE contains an absolute directory specification, we ignore
- DIRLIST. */
- if (IS_ABSOLUTE_PATH (language))
- dirlist_len = 0;
-
- /* Allocate room for the full file name. */
- abs_filename = (char *) malloc (dirlist_len
- + strlen (language)
- + ((mask & TERRITORY) != 0
- ? strlen (territory) + 1 : 0)
- + ((mask & XPG_CODESET) != 0
- ? strlen (codeset) + 1 : 0)
- + ((mask & XPG_NORM_CODESET) != 0
- ? strlen (normalized_codeset) + 1 : 0)
- + (((mask & XPG_MODIFIER) != 0
- || (mask & CEN_AUDIENCE) != 0)
- ? strlen (modifier) + 1 : 0)
- + ((mask & CEN_SPECIAL) != 0
- ? strlen (special) + 1 : 0)
- + (((mask & CEN_SPONSOR) != 0
- || (mask & CEN_REVISION) != 0)
- ? (1 + ((mask & CEN_SPONSOR) != 0
- ? strlen (sponsor) : 0)
- + ((mask & CEN_REVISION) != 0
- ? strlen (revision) + 1 : 0)) : 0)
- + 1 + strlen (filename) + 1);
-
- if (abs_filename == NULL)
- return NULL;
-
- /* Construct file name. */
- cp = abs_filename;
- if (dirlist_len > 0)
- {
- memcpy (cp, dirlist, dirlist_len);
- __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
- cp += dirlist_len;
- cp[-1] = '/';
- }
-
- cp = stpcpy (cp, language);
-
- if ((mask & TERRITORY) != 0)
- {
- *cp++ = '_';
- cp = stpcpy (cp, territory);
- }
- if ((mask & XPG_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, codeset);
- }
- if ((mask & XPG_NORM_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, normalized_codeset);
- }
- if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
- {
- /* This component can be part of both syntaxes but has different
- leading characters. For CEN we use `+', else `@'. */
- *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
- cp = stpcpy (cp, modifier);
- }
- if ((mask & CEN_SPECIAL) != 0)
- {
- *cp++ = '+';
- cp = stpcpy (cp, special);
- }
- if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
- {
- *cp++ = ',';
- if ((mask & CEN_SPONSOR) != 0)
- cp = stpcpy (cp, sponsor);
- if ((mask & CEN_REVISION) != 0)
- {
- *cp++ = '_';
- cp = stpcpy (cp, revision);
- }
- }
-
- *cp++ = '/';
- stpcpy (cp, filename);
-
- /* Look in list of already loaded domains whether it is already
- available. */
- lastp = l10nfile_list;
- for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
- if (retval->filename != NULL)
- {
- int compare = strcmp (retval->filename, abs_filename);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It's not in the list. */
- retval = NULL;
- break;
- }
-
- lastp = &retval->next;
- }
-
- if (retval != NULL || do_allocate == 0)
- {
- free (abs_filename);
- return retval;
- }
-
- dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);
-
- /* Allocate a new loaded_l10nfile. */
- retval =
- (struct loaded_l10nfile *)
- malloc (sizeof (*retval)
- + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
- * sizeof (struct loaded_l10nfile *)));
- if (retval == NULL)
- return NULL;
-
- retval->filename = abs_filename;
-
- /* We set retval->data to NULL here; it is filled in later.
- Setting retval->decided to 1 here means that retval does not
- correspond to a real file (dirlist_count > 1) or is not worth
- looking up (if an unnormalized codeset was specified). */
- retval->decided = (dirlist_count > 1
- || ((mask & XPG_CODESET) != 0
- && (mask & XPG_NORM_CODESET) != 0));
- retval->data = NULL;
-
- retval->next = *lastp;
- *lastp = retval;
-
- entries = 0;
- /* Recurse to fill the inheritance list of RETVAL.
- If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
- entry does not correspond to a real file; retval->filename contains
- colons. In this case we loop across all elements of DIRLIST and
- across all bit patterns dominated by MASK.
- If the DIRLIST is a single directory or entirely redundant (i.e.
- DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
- MASK, excluding MASK itself.
- In either case, we loop down from MASK to 0. This has the effect
- that the extra bits in the locale name are dropped in this order:
- first the modifier, then the territory, then the codeset, then the
- normalized_codeset. */
- for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
- if ((cnt & ~mask) == 0
- && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
- && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
- {
- if (dirlist_count > 1)
- {
- /* Iterate over all elements of the DIRLIST. */
- char *dir = NULL;
-
- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
- != NULL)
- retval->successor[entries++]
- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
- cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
- else
- retval->successor[entries++]
- = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
- cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
- retval->successor[entries] = NULL;
-
- return retval;
-}
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-const char *
-_nl_normalize_codeset (const char *codeset, size_t name_len)
-{
- int len = 0;
- int only_digit = 1;
- char *retval;
- char *wp;
- size_t cnt;
-
- for (cnt = 0; cnt < name_len; ++cnt)
- if (isalnum ((unsigned char) codeset[cnt]))
- {
- ++len;
-
- if (isalpha ((unsigned char) codeset[cnt]))
- only_digit = 0;
- }
-
- retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
-
- if (retval != NULL)
- {
- if (only_digit)
- wp = stpcpy (retval, "iso");
- else
- wp = retval;
-
- for (cnt = 0; cnt < name_len; ++cnt)
- if (isalpha ((unsigned char) codeset[cnt]))
- *wp++ = tolower ((unsigned char) codeset[cnt]);
- else if (isdigit ((unsigned char) codeset[cnt]))
- *wp++ = codeset[cnt];
-
- *wp = '\0';
- }
-
- return (const char *) retval;
-}
-
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
diff --git a/intl/libgettext.h b/intl/libgettext.h
deleted file mode 100644
index d03d82be..00000000
--- a/intl/libgettext.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Message catalogs for internationalization.
- Copyright (C) 1995, 1996, 1997, 1998 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 2, or (at your option)
- any later version.
-
- This program 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, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
-
-/* Because on some systems (e.g. Solaris) we sometimes have to include
- the systems libintl.h as well as this file we have more complex
- include protection above. But the systems header might perhaps also
- define _LIBINTL_H and therefore we have to protect the definition here. */
-
-#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H
-#ifndef _LIBINTL_H
-# define _LIBINTL_H 1
-#endif
-#define _LIBGETTEXT_H 1
-
-/* We define an additional symbol to signal that we use the GNU
- implementation of gettext. */
-#define __USE_GNU_GETTEXT 1
-
-#include <sys/types.h>
-
-#if HAVE_LOCALE_H
-# include <locale.h>
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifndef PARAMS
-# if __STDC__ || defined __cplusplus
-# define PARAMS(args) args
-# else
-# define PARAMS(args) ()
-# endif
-#endif
-
-#ifndef NULL
-# if !defined __cplusplus || defined __GNUC__
-# define NULL ((void *) 0)
-# else
-# define NULL (0)
-# endif
-#endif
-
-#if !HAVE_LC_MESSAGES
-/* This value determines the behaviour of the gettext() and dgettext()
- function. But some system does not have this defined. Define it
- to a default value. */
-# define LC_MESSAGES (-1)
-#endif
-
-
-/* Declarations for gettext-using-catgets interface. Derived from
- Jim Meyering's libintl.h. */
-struct _msg_ent
-{
- const char *_msg;
- int _msg_number;
-};
-
-
-#if HAVE_CATGETS
-/* These two variables are defined in the automatically by po-to-tbl.sed
- generated file `cat-id-tbl.c'. */
-extern const struct _msg_ent _msg_tbl[];
-extern int _msg_tbl_length;
-#endif
-
-
-/* For automatic extraction of messages sometimes no real
- translation is needed. Instead the string itself is the result. */
-#define gettext_noop(Str) (Str)
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-extern char *gettext PARAMS ((const char *__msgid));
-extern char *gettext__ PARAMS ((const char *__msgid));
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- LC_MESSAGES locale. */
-extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
-extern char *dgettext__ PARAMS ((const char *__domainname,
- const char *__msgid));
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
- int __category));
-extern char *dcgettext__ PARAMS ((const char *__domainname,
- const char *__msgid, int __category));
-
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-extern char *textdomain PARAMS ((const char *__domainname));
-extern char *textdomain__ PARAMS ((const char *__domainname));
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-extern char *bindtextdomain PARAMS ((const char *__domainname,
- const char *__dirname));
-extern char *bindtextdomain__ PARAMS ((const char *__domainname,
- const char *__dirname));
-
-#if ENABLE_NLS
-
-/* Solaris 2.3 has the gettext function but dcgettext is missing.
- So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
- has dcgettext. */
-# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
-
-# define gettext(Msgid) \
- dgettext (NULL, Msgid)
-
-# define dgettext(Domainname, Msgid) \
- dcgettext (Domainname, Msgid, LC_MESSAGES)
-
-# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
-/* This global variable is defined in loadmsgcat.c. We need a sign,
- whether a new catalog was loaded, which can be associated with all
- translations. */
-extern int _nl_msg_cat_cntr;
-
-# define dcgettext(Domainname, Msgid, Category) \
- (__extension__ \
- ({ \
- char *__result; \
- if (__builtin_constant_p (Msgid)) \
- { \
- static char *__translation__; \
- static int __catalog_counter__; \
- if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
- { \
- __translation__ = \
- dcgettext__ (Domainname, Msgid, Category); \
- __catalog_counter__ = _nl_msg_cat_cntr; \
- } \
- __result = __translation__; \
- } \
- else \
- __result = dcgettext__ (Domainname, Msgid, Category); \
- __result; \
- }))
-# endif
-# endif
-
-#else
-
-# define gettext(Msgid) (Msgid)
-# define dgettext(Domainname, Msgid) (Msgid)
-# define dcgettext(Domainname, Msgid, Category) (Msgid)
-# define textdomain(Domainname) ((char *) Domainname)
-# define bindtextdomain(Domainname, Dirname) ((char *) Dirname)
-
-#endif
-
-/* @@ begin of epilog @@ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/intl/libgnuintl.h.in b/intl/libgnuintl.h.in
deleted file mode 100644
index c8c5620d..00000000
--- a/intl/libgnuintl.h.in
+++ /dev/null
@@ -1,383 +0,0 @@
-/* Message catalogs for internationalization.
- Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _LIBINTL_H
-#define _LIBINTL_H 1
-
-#include <locale.h>
-
-/* The LC_MESSAGES locale category is the category used by the functions
- gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
- On systems that don't define it, use an arbitrary value instead.
- On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
- then includes <libintl.h> (i.e. this file!) and then only defines
- LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
- in this case. */
-#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
-# define LC_MESSAGES 1729
-#endif
-
-/* We define an additional symbol to signal that we use the GNU
- implementation of gettext. */
-#define __USE_GNU_GETTEXT 1
-
-/* Provide information about the supported file formats. Returns the
- maximum minor revision number supported for a given major revision. */
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
- ((major) == 0 ? 1 : -1)
-
-/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
- precedence over _conio_gettext. */
-#ifdef __DJGPP__
-# undef gettext
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* We redirect the functions to those prefixed with "libintl_". This is
- necessary, because some systems define gettext/textdomain/... in the C
- library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
- If we used the unprefixed names, there would be cases where the
- definition in the C library would override the one in the libintl.so
- shared library. Recall that on ELF systems, the symbols are looked
- up in the following order:
- 1. in the executable,
- 2. in the shared libraries specified on the link command line, in order,
- 3. in the dependencies of the shared libraries specified on the link
- command line,
- 4. in the dlopen()ed shared libraries, in the order in which they were
- dlopen()ed.
- The definition in the C library would override the one in libintl.so if
- either
- * -lc is given on the link command line and -lintl isn't, or
- * -lc is given on the link command line before -lintl, or
- * libintl.so is a dependency of a dlopen()ed shared library but not
- linked to the executable at link time.
- Since Solaris gettext() behaves differently than GNU gettext(), this
- would be unacceptable.
-
- The redirection happens by default through macros in C, so that &gettext
- is independent of the compilation unit, but through inline functions in
- C++, in order not to interfere with the name mangling of class fields or
- class methods called 'gettext'. */
-
-/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
- If he doesn't, we choose the method. A third possible method is
- _INTL_REDIRECT_ASM, supported only by GCC. */
-#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
-# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
-# define _INTL_REDIRECT_ASM
-# else
-# ifdef __cplusplus
-# define _INTL_REDIRECT_INLINE
-# else
-# define _INTL_REDIRECT_MACROS
-# endif
-# endif
-#endif
-/* Auxiliary macros. */
-#ifdef _INTL_REDIRECT_ASM
-# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
-# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
-# define _INTL_STRINGIFY(prefix) #prefix
-#else
-# define _INTL_ASM(cname)
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_gettext (const char *__msgid);
-static inline char *gettext (const char *__msgid)
-{
- return libintl_gettext (__msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define gettext libintl_gettext
-#endif
-extern char *gettext (const char *__msgid)
- _INTL_ASM (libintl_gettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- LC_MESSAGES locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
-static inline char *dgettext (const char *__domainname, const char *__msgid)
-{
- return libintl_dgettext (__domainname, __msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dgettext libintl_dgettext
-#endif
-extern char *dgettext (const char *__domainname, const char *__msgid)
- _INTL_ASM (libintl_dgettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
- int __category);
-static inline char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
-{
- return libintl_dcgettext (__domainname, __msgid, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcgettext libintl_dcgettext
-#endif
-extern char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
- _INTL_ASM (libintl_dcgettext);
-#endif
-
-
-/* Similar to `gettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
-static inline char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
-{
- return libintl_ngettext (__msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define ngettext libintl_ngettext
-#endif
-extern char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_ngettext);
-#endif
-
-/* Similar to `dgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n);
-static inline char *dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n)
-{
- return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dngettext libintl_dngettext
-#endif
-extern char *dngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_dngettext);
-#endif
-
-/* Similar to `dcgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
-static inline char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
-{
- return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcngettext libintl_dcngettext
-#endif
-extern char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
- _INTL_ASM (libintl_dcngettext);
-#endif
-
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_textdomain (const char *__domainname);
-static inline char *textdomain (const char *__domainname)
-{
- return libintl_textdomain (__domainname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define textdomain libintl_textdomain
-#endif
-extern char *textdomain (const char *__domainname)
- _INTL_ASM (libintl_textdomain);
-#endif
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bindtextdomain (const char *__domainname,
- const char *__dirname);
-static inline char *bindtextdomain (const char *__domainname,
- const char *__dirname)
-{
- return libintl_bindtextdomain (__domainname, __dirname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bindtextdomain libintl_bindtextdomain
-#endif
-extern char *bindtextdomain (const char *__domainname, const char *__dirname)
- _INTL_ASM (libintl_bindtextdomain);
-#endif
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bind_textdomain_codeset (const char *__domainname,
- const char *__codeset);
-static inline char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
-{
- return libintl_bind_textdomain_codeset (__domainname, __codeset);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bind_textdomain_codeset libintl_bind_textdomain_codeset
-#endif
-extern char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
- _INTL_ASM (libintl_bind_textdomain_codeset);
-#endif
-
-
-/* Support for format strings with positions in *printf(), following the
- POSIX/XSI specification.
- Note: These replacements for the *printf() functions are visible only
- in source files that #include <libintl.h> or #include "gettext.h".
- Packages that use *printf() in source files that don't refer to _()
- or gettext() but for which the format string could be the return value
- of _() or gettext() need to add this #include. Oh well. */
-
-#if !@HAVE_POSIX_PRINTF@
-
-#include <stdio.h>
-#include <stddef.h>
-
-/* Get va_list. */
-#if __STDC__ || defined __cplusplus || defined _MSC_VER
-# include <stdarg.h>
-#else
-# include <varargs.h>
-#endif
-
-#undef fprintf
-#define fprintf libintl_fprintf
-extern int fprintf (FILE *, const char *, ...);
-#undef vfprintf
-#define vfprintf libintl_vfprintf
-extern int vfprintf (FILE *, const char *, va_list);
-
-#undef printf
-#define printf libintl_printf
-extern int printf (const char *, ...);
-#undef vprintf
-#define vprintf libintl_vprintf
-extern int vprintf (const char *, va_list);
-
-#undef sprintf
-#define sprintf libintl_sprintf
-extern int sprintf (char *, const char *, ...);
-#undef vsprintf
-#define vsprintf libintl_vsprintf
-extern int vsprintf (char *, const char *, va_list);
-
-#if @HAVE_SNPRINTF@
-
-#undef snprintf
-#define snprintf libintl_snprintf
-extern int snprintf (char *, size_t, const char *, ...);
-#undef vsnprintf
-#define vsnprintf libintl_vsnprintf
-extern int vsnprintf (char *, size_t, const char *, va_list);
-
-#endif
-
-#if @HAVE_ASPRINTF@
-
-#undef asprintf
-#define asprintf libintl_asprintf
-extern int asprintf (char **, const char *, ...);
-#undef vasprintf
-#define vasprintf libintl_vasprintf
-extern int vasprintf (char **, const char *, va_list);
-
-#endif
-
-#if @HAVE_WPRINTF@
-
-#undef fwprintf
-#define fwprintf libintl_fwprintf
-extern int fwprintf (FILE *, const wchar_t *, ...);
-#undef vfwprintf
-#define vfwprintf libintl_vfwprintf
-extern int vfwprintf (FILE *, const wchar_t *, va_list);
-
-#undef wprintf
-#define wprintf libintl_wprintf
-extern int wprintf (const wchar_t *, ...);
-#undef vwprintf
-#define vwprintf libintl_vwprintf
-extern int vwprintf (const wchar_t *, va_list);
-
-#undef swprintf
-#define swprintf libintl_swprintf
-extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
-#undef vswprintf
-#define vswprintf libintl_vswprintf
-extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
-
-#endif
-
-#endif
-
-
-/* Support for relocatable packages. */
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-#define libintl_set_relocation_prefix libintl_set_relocation_prefix
-extern void
- libintl_set_relocation_prefix (const char *orig_prefix,
- const char *curr_prefix);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* libintl.h */
diff --git a/intl/loadinfo.h b/intl/loadinfo.h
deleted file mode 100644
index d6408f2a..00000000
--- a/intl/loadinfo.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Copyright (C) 1996-1999, 2000-2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _LOADINFO_H
-#define _LOADINFO_H 1
-
-/* Declarations of locale dependent catalog lookup functions.
- Implemented in
-
- localealias.c Possibly replace a locale name by another.
- explodename.c Split a locale name into its various fields.
- l10nflist.c Generate a list of filenames of possible message catalogs.
- finddomain.c Find and open the relevant message catalogs.
-
- The main function _nl_find_domain() in finddomain.c is declared
- in gettextP.h.
- */
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-/* Tell the compiler when a conditional or integer expression is
- almost always true or almost always false. */
-#ifndef HAVE_BUILTIN_EXPECT
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-/* Separator in PATH like lists of pathnames. */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define PATH_SEPARATOR ';'
-#else
- /* Unix */
-# define PATH_SEPARATOR ':'
-#endif
-
-/* Encoding of locale name parts. */
-#define CEN_REVISION 1
-#define CEN_SPONSOR 2
-#define CEN_SPECIAL 4
-#define XPG_NORM_CODESET 8
-#define XPG_CODESET 16
-#define TERRITORY 32
-#define CEN_AUDIENCE 64
-#define XPG_MODIFIER 128
-
-#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
-#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
-
-
-struct loaded_l10nfile
-{
- const char *filename;
- int decided;
-
- const void *data;
-
- struct loaded_l10nfile *next;
- struct loaded_l10nfile *successor[1];
-};
-
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-extern const char *_nl_normalize_codeset (const char *codeset,
- size_t name_len);
-
-/* Lookup a locale dependent file.
- *L10NFILE_LIST denotes a pool of lookup results of locale dependent
- files of the same kind, sorted in decreasing order of ->filename.
- DIRLIST and DIRLIST_LEN are an argz list of directories in which to
- look, containing at least one directory (i.e. DIRLIST_LEN > 0).
- MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER,
- SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as
- produced by _nl_explode_name(). FILENAME is the filename suffix.
- The return value is the lookup result, either found in *L10NFILE_LIST,
- or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
- If the return value is non-NULL, it is added to *L10NFILE_LIST, and
- its ->next field denotes the chaining inside *L10NFILE_LIST, and
- furthermore its ->successor[] field contains a list of other lookup
- results from which this lookup result inherits. */
-extern struct loaded_l10nfile *
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
- const char *dirlist, size_t dirlist_len, int mask,
- const char *language, const char *territory,
- const char *codeset, const char *normalized_codeset,
- const char *modifier, const char *special,
- const char *sponsor, const char *revision,
- const char *filename, int do_allocate);
-
-/* Lookup the real locale name for a locale alias NAME, or NULL if
- NAME is not a locale alias (but possibly a real locale name).
- The return value is statically allocated and must not be freed. */
-extern const char *_nl_expand_alias (const char *name);
-
-/* Split a locale name NAME into its pieces: language, modifier,
- territory, codeset, special, sponsor, revision.
- NAME gets destructively modified: NUL bytes are inserted here and
- there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY,
- *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a
- pointer into the old NAME string, or NULL. *NORMALIZED_CODESET
- gets assigned the expanded *CODESET, if it is different from *CODESET;
- this one is dynamically allocated and has to be freed by the caller.
- The return value is a bitmask, where each bit corresponds to one
- filled-in value:
- XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER,
- TERRITORY for *TERRITORY,
- XPG_CODESET for *CODESET,
- XPG_NORM_CODESET for *NORMALIZED_CODESET,
- CEN_SPECIAL for *SPECIAL,
- CEN_SPONSOR for *SPONSOR,
- CEN_REVISION for *REVISION.
- */
-extern int _nl_explode_name (char *name, const char **language,
- const char **modifier, const char **territory,
- const char **codeset,
- const char **normalized_codeset,
- const char **special, const char **sponsor,
- const char **revision);
-
-/* Split a locale name NAME into a leading language part and all the
- rest. Return a pointer to the first character after the language,
- i.e. to the first byte of the rest. */
-extern char *_nl_find_language (const char *name);
-
-#endif /* loadinfo.h */
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
deleted file mode 100644
index fc3689fb..00000000
--- a/intl/loadmsgcat.c
+++ /dev/null
@@ -1,1418 +0,0 @@
-/* Load needed message catalogs.
- Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#ifdef _LIBC
-# include <langinfo.h>
-# include <locale.h>
-#endif
-
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
- || (defined _LIBC && defined _POSIX_MAPPED_FILES)
-# include <sys/mman.h>
-# undef HAVE_MMAP
-# define HAVE_MMAP 1
-#else
-# undef HAVE_MMAP
-#endif
-
-#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
-# include <stdint.h>
-#endif
-#if defined HAVE_INTTYPES_H || defined _LIBC
-# include <inttypes.h>
-#endif
-
-#include "gmo.h"
-#include "gettextP.h"
-#include "hash-string.h"
-#include "plural-exp.h"
-
-#ifdef _LIBC
-# include "../locale/localeinfo.h"
-#endif
-
-/* Provide fallback values for macros that ought to be defined in <inttypes.h>.
- Note that our fallback values need not be literal strings, because we don't
- use them with preprocessor string concatenation. */
-#if !defined PRId8 || PRI_MACROS_BROKEN
-# undef PRId8
-# define PRId8 "d"
-#endif
-#if !defined PRIi8 || PRI_MACROS_BROKEN
-# undef PRIi8
-# define PRIi8 "i"
-#endif
-#if !defined PRIo8 || PRI_MACROS_BROKEN
-# undef PRIo8
-# define PRIo8 "o"
-#endif
-#if !defined PRIu8 || PRI_MACROS_BROKEN
-# undef PRIu8
-# define PRIu8 "u"
-#endif
-#if !defined PRIx8 || PRI_MACROS_BROKEN
-# undef PRIx8
-# define PRIx8 "x"
-#endif
-#if !defined PRIX8 || PRI_MACROS_BROKEN
-# undef PRIX8
-# define PRIX8 "X"
-#endif
-#if !defined PRId16 || PRI_MACROS_BROKEN
-# undef PRId16
-# define PRId16 "d"
-#endif
-#if !defined PRIi16 || PRI_MACROS_BROKEN
-# undef PRIi16
-# define PRIi16 "i"
-#endif
-#if !defined PRIo16 || PRI_MACROS_BROKEN
-# undef PRIo16
-# define PRIo16 "o"
-#endif
-#if !defined PRIu16 || PRI_MACROS_BROKEN
-# undef PRIu16
-# define PRIu16 "u"
-#endif
-#if !defined PRIx16 || PRI_MACROS_BROKEN
-# undef PRIx16
-# define PRIx16 "x"
-#endif
-#if !defined PRIX16 || PRI_MACROS_BROKEN
-# undef PRIX16
-# define PRIX16 "X"
-#endif
-#if !defined PRId32 || PRI_MACROS_BROKEN
-# undef PRId32
-# define PRId32 "d"
-#endif
-#if !defined PRIi32 || PRI_MACROS_BROKEN
-# undef PRIi32
-# define PRIi32 "i"
-#endif
-#if !defined PRIo32 || PRI_MACROS_BROKEN
-# undef PRIo32
-# define PRIo32 "o"
-#endif
-#if !defined PRIu32 || PRI_MACROS_BROKEN
-# undef PRIu32
-# define PRIu32 "u"
-#endif
-#if !defined PRIx32 || PRI_MACROS_BROKEN
-# undef PRIx32
-# define PRIx32 "x"
-#endif
-#if !defined PRIX32 || PRI_MACROS_BROKEN
-# undef PRIX32
-# define PRIX32 "X"
-#endif
-#if !defined PRId64 || PRI_MACROS_BROKEN
-# undef PRId64
-# define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
-#endif
-#if !defined PRIi64 || PRI_MACROS_BROKEN
-# undef PRIi64
-# define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
-#endif
-#if !defined PRIo64 || PRI_MACROS_BROKEN
-# undef PRIo64
-# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
-#endif
-#if !defined PRIu64 || PRI_MACROS_BROKEN
-# undef PRIu64
-# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
-#endif
-#if !defined PRIx64 || PRI_MACROS_BROKEN
-# undef PRIx64
-# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
-#endif
-#if !defined PRIX64 || PRI_MACROS_BROKEN
-# undef PRIX64
-# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
-#endif
-#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
-# undef PRIdLEAST8
-# define PRIdLEAST8 "d"
-#endif
-#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
-# undef PRIiLEAST8
-# define PRIiLEAST8 "i"
-#endif
-#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
-# undef PRIoLEAST8
-# define PRIoLEAST8 "o"
-#endif
-#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
-# undef PRIuLEAST8
-# define PRIuLEAST8 "u"
-#endif
-#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
-# undef PRIxLEAST8
-# define PRIxLEAST8 "x"
-#endif
-#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
-# undef PRIXLEAST8
-# define PRIXLEAST8 "X"
-#endif
-#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
-# undef PRIdLEAST16
-# define PRIdLEAST16 "d"
-#endif
-#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
-# undef PRIiLEAST16
-# define PRIiLEAST16 "i"
-#endif
-#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
-# undef PRIoLEAST16
-# define PRIoLEAST16 "o"
-#endif
-#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
-# undef PRIuLEAST16
-# define PRIuLEAST16 "u"
-#endif
-#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
-# undef PRIxLEAST16
-# define PRIxLEAST16 "x"
-#endif
-#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
-# undef PRIXLEAST16
-# define PRIXLEAST16 "X"
-#endif
-#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
-# undef PRIdLEAST32
-# define PRIdLEAST32 "d"
-#endif
-#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
-# undef PRIiLEAST32
-# define PRIiLEAST32 "i"
-#endif
-#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
-# undef PRIoLEAST32
-# define PRIoLEAST32 "o"
-#endif
-#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
-# undef PRIuLEAST32
-# define PRIuLEAST32 "u"
-#endif
-#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
-# undef PRIxLEAST32
-# define PRIxLEAST32 "x"
-#endif
-#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
-# undef PRIXLEAST32
-# define PRIXLEAST32 "X"
-#endif
-#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
-# undef PRIdLEAST64
-# define PRIdLEAST64 PRId64
-#endif
-#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
-# undef PRIiLEAST64
-# define PRIiLEAST64 PRIi64
-#endif
-#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
-# undef PRIoLEAST64
-# define PRIoLEAST64 PRIo64
-#endif
-#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
-# undef PRIuLEAST64
-# define PRIuLEAST64 PRIu64
-#endif
-#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
-# undef PRIxLEAST64
-# define PRIxLEAST64 PRIx64
-#endif
-#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
-# undef PRIXLEAST64
-# define PRIXLEAST64 PRIX64
-#endif
-#if !defined PRIdFAST8 || PRI_MACROS_BROKEN
-# undef PRIdFAST8
-# define PRIdFAST8 "d"
-#endif
-#if !defined PRIiFAST8 || PRI_MACROS_BROKEN
-# undef PRIiFAST8
-# define PRIiFAST8 "i"
-#endif
-#if !defined PRIoFAST8 || PRI_MACROS_BROKEN
-# undef PRIoFAST8
-# define PRIoFAST8 "o"
-#endif
-#if !defined PRIuFAST8 || PRI_MACROS_BROKEN
-# undef PRIuFAST8
-# define PRIuFAST8 "u"
-#endif
-#if !defined PRIxFAST8 || PRI_MACROS_BROKEN
-# undef PRIxFAST8
-# define PRIxFAST8 "x"
-#endif
-#if !defined PRIXFAST8 || PRI_MACROS_BROKEN
-# undef PRIXFAST8
-# define PRIXFAST8 "X"
-#endif
-#if !defined PRIdFAST16 || PRI_MACROS_BROKEN
-# undef PRIdFAST16
-# define PRIdFAST16 "d"
-#endif
-#if !defined PRIiFAST16 || PRI_MACROS_BROKEN
-# undef PRIiFAST16
-# define PRIiFAST16 "i"
-#endif
-#if !defined PRIoFAST16 || PRI_MACROS_BROKEN
-# undef PRIoFAST16
-# define PRIoFAST16 "o"
-#endif
-#if !defined PRIuFAST16 || PRI_MACROS_BROKEN
-# undef PRIuFAST16
-# define PRIuFAST16 "u"
-#endif
-#if !defined PRIxFAST16 || PRI_MACROS_BROKEN
-# undef PRIxFAST16
-# define PRIxFAST16 "x"
-#endif
-#if !defined PRIXFAST16 || PRI_MACROS_BROKEN
-# undef PRIXFAST16
-# define PRIXFAST16 "X"
-#endif
-#if !defined PRIdFAST32 || PRI_MACROS_BROKEN
-# undef PRIdFAST32
-# define PRIdFAST32 "d"
-#endif
-#if !defined PRIiFAST32 || PRI_MACROS_BROKEN
-# undef PRIiFAST32
-# define PRIiFAST32 "i"
-#endif
-#if !defined PRIoFAST32 || PRI_MACROS_BROKEN
-# undef PRIoFAST32
-# define PRIoFAST32 "o"
-#endif
-#if !defined PRIuFAST32 || PRI_MACROS_BROKEN
-# undef PRIuFAST32
-# define PRIuFAST32 "u"
-#endif
-#if !defined PRIxFAST32 || PRI_MACROS_BROKEN
-# undef PRIxFAST32
-# define PRIxFAST32 "x"
-#endif
-#if !defined PRIXFAST32 || PRI_MACROS_BROKEN
-# undef PRIXFAST32
-# define PRIXFAST32 "X"
-#endif
-#if !defined PRIdFAST64 || PRI_MACROS_BROKEN
-# undef PRIdFAST64
-# define PRIdFAST64 PRId64
-#endif
-#if !defined PRIiFAST64 || PRI_MACROS_BROKEN
-# undef PRIiFAST64
-# define PRIiFAST64 PRIi64
-#endif
-#if !defined PRIoFAST64 || PRI_MACROS_BROKEN
-# undef PRIoFAST64
-# define PRIoFAST64 PRIo64
-#endif
-#if !defined PRIuFAST64 || PRI_MACROS_BROKEN
-# undef PRIuFAST64
-# define PRIuFAST64 PRIu64
-#endif
-#if !defined PRIxFAST64 || PRI_MACROS_BROKEN
-# undef PRIxFAST64
-# define PRIxFAST64 PRIx64
-#endif
-#if !defined PRIXFAST64 || PRI_MACROS_BROKEN
-# undef PRIXFAST64
-# define PRIXFAST64 PRIX64
-#endif
-#if !defined PRIdMAX || PRI_MACROS_BROKEN
-# undef PRIdMAX
-# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
-#endif
-#if !defined PRIiMAX || PRI_MACROS_BROKEN
-# undef PRIiMAX
-# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
-#endif
-#if !defined PRIoMAX || PRI_MACROS_BROKEN
-# undef PRIoMAX
-# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
-#endif
-#if !defined PRIuMAX || PRI_MACROS_BROKEN
-# undef PRIuMAX
-# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
-#endif
-#if !defined PRIxMAX || PRI_MACROS_BROKEN
-# undef PRIxMAX
-# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
-#endif
-#if !defined PRIXMAX || PRI_MACROS_BROKEN
-# undef PRIXMAX
-# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
-#endif
-#if !defined PRIdPTR || PRI_MACROS_BROKEN
-# undef PRIdPTR
-# define PRIdPTR \
- (sizeof (void *) == sizeof (long) ? "ld" : \
- sizeof (void *) == sizeof (int) ? "d" : \
- "lld")
-#endif
-#if !defined PRIiPTR || PRI_MACROS_BROKEN
-# undef PRIiPTR
-# define PRIiPTR \
- (sizeof (void *) == sizeof (long) ? "li" : \
- sizeof (void *) == sizeof (int) ? "i" : \
- "lli")
-#endif
-#if !defined PRIoPTR || PRI_MACROS_BROKEN
-# undef PRIoPTR
-# define PRIoPTR \
- (sizeof (void *) == sizeof (long) ? "lo" : \
- sizeof (void *) == sizeof (int) ? "o" : \
- "llo")
-#endif
-#if !defined PRIuPTR || PRI_MACROS_BROKEN
-# undef PRIuPTR
-# define PRIuPTR \
- (sizeof (void *) == sizeof (long) ? "lu" : \
- sizeof (void *) == sizeof (int) ? "u" : \
- "llu")
-#endif
-#if !defined PRIxPTR || PRI_MACROS_BROKEN
-# undef PRIxPTR
-# define PRIxPTR \
- (sizeof (void *) == sizeof (long) ? "lx" : \
- sizeof (void *) == sizeof (int) ? "x" : \
- "llx")
-#endif
-#if !defined PRIXPTR || PRI_MACROS_BROKEN
-# undef PRIXPTR
-# define PRIXPTR \
- (sizeof (void *) == sizeof (long) ? "lX" : \
- sizeof (void *) == sizeof (int) ? "X" : \
- "llX")
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ISO C functions. This is required by the standard
- because some ISO C functions will require linking with this object
- file and the name space must not be polluted. */
-# define open __open
-# define close __close
-# define read __read
-# define mmap __mmap
-# define munmap __munmap
-#endif
-
-/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-/* For systems that distinguish between text and binary I/O.
- O_BINARY is usually declared in <fcntl.h>. */
-#if !defined O_BINARY && defined _O_BINARY
- /* For MSC-compatible compilers. */
-# define O_BINARY _O_BINARY
-# define O_TEXT _O_TEXT
-#endif
-#ifdef __BEOS__
- /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
-# undef O_BINARY
-# undef O_TEXT
-#endif
-/* On reasonable systems, binary I/O is the default. */
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
-
-
-/* We need a sign, whether a new catalog was loaded, which can be associated
- with all translations. This is important if the translations are
- cached by one of GCC's features. */
-int _nl_msg_cat_cntr;
-
-
-/* Expand a system dependent string segment. Return NULL if unsupported. */
-static const char *
-get_sysdep_segment_value (const char *name)
-{
- /* Test for an ISO C 99 section 7.8.1 format string directive.
- Syntax:
- P R I { d | i | o | u | x | X }
- { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */
- /* We don't use a table of 14 times 6 'const char *' strings here, because
- data relocations cost startup time. */
- if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I')
- {
- if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u'
- || name[3] == 'x' || name[3] == 'X')
- {
- if (name[4] == '8' && name[5] == '\0')
- {
- if (name[3] == 'd')
- return PRId8;
- if (name[3] == 'i')
- return PRIi8;
- if (name[3] == 'o')
- return PRIo8;
- if (name[3] == 'u')
- return PRIu8;
- if (name[3] == 'x')
- return PRIx8;
- if (name[3] == 'X')
- return PRIX8;
- abort ();
- }
- if (name[4] == '1' && name[5] == '6' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId16;
- if (name[3] == 'i')
- return PRIi16;
- if (name[3] == 'o')
- return PRIo16;
- if (name[3] == 'u')
- return PRIu16;
- if (name[3] == 'x')
- return PRIx16;
- if (name[3] == 'X')
- return PRIX16;
- abort ();
- }
- if (name[4] == '3' && name[5] == '2' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId32;
- if (name[3] == 'i')
- return PRIi32;
- if (name[3] == 'o')
- return PRIo32;
- if (name[3] == 'u')
- return PRIu32;
- if (name[3] == 'x')
- return PRIx32;
- if (name[3] == 'X')
- return PRIX32;
- abort ();
- }
- if (name[4] == '6' && name[5] == '4' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId64;
- if (name[3] == 'i')
- return PRIi64;
- if (name[3] == 'o')
- return PRIo64;
- if (name[3] == 'u')
- return PRIu64;
- if (name[3] == 'x')
- return PRIx64;
- if (name[3] == 'X')
- return PRIX64;
- abort ();
- }
- if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A'
- && name[7] == 'S' && name[8] == 'T')
- {
- if (name[9] == '8' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST8;
- if (name[3] == 'i')
- return PRIiLEAST8;
- if (name[3] == 'o')
- return PRIoLEAST8;
- if (name[3] == 'u')
- return PRIuLEAST8;
- if (name[3] == 'x')
- return PRIxLEAST8;
- if (name[3] == 'X')
- return PRIXLEAST8;
- abort ();
- }
- if (name[9] == '1' && name[10] == '6' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST16;
- if (name[3] == 'i')
- return PRIiLEAST16;
- if (name[3] == 'o')
- return PRIoLEAST16;
- if (name[3] == 'u')
- return PRIuLEAST16;
- if (name[3] == 'x')
- return PRIxLEAST16;
- if (name[3] == 'X')
- return PRIXLEAST16;
- abort ();
- }
- if (name[9] == '3' && name[10] == '2' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST32;
- if (name[3] == 'i')
- return PRIiLEAST32;
- if (name[3] == 'o')
- return PRIoLEAST32;
- if (name[3] == 'u')
- return PRIuLEAST32;
- if (name[3] == 'x')
- return PRIxLEAST32;
- if (name[3] == 'X')
- return PRIXLEAST32;
- abort ();
- }
- if (name[9] == '6' && name[10] == '4' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST64;
- if (name[3] == 'i')
- return PRIiLEAST64;
- if (name[3] == 'o')
- return PRIoLEAST64;
- if (name[3] == 'u')
- return PRIuLEAST64;
- if (name[3] == 'x')
- return PRIxLEAST64;
- if (name[3] == 'X')
- return PRIXLEAST64;
- abort ();
- }
- }
- if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S'
- && name[7] == 'T')
- {
- if (name[8] == '8' && name[9] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST8;
- if (name[3] == 'i')
- return PRIiFAST8;
- if (name[3] == 'o')
- return PRIoFAST8;
- if (name[3] == 'u')
- return PRIuFAST8;
- if (name[3] == 'x')
- return PRIxFAST8;
- if (name[3] == 'X')
- return PRIXFAST8;
- abort ();
- }
- if (name[8] == '1' && name[9] == '6' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST16;
- if (name[3] == 'i')
- return PRIiFAST16;
- if (name[3] == 'o')
- return PRIoFAST16;
- if (name[3] == 'u')
- return PRIuFAST16;
- if (name[3] == 'x')
- return PRIxFAST16;
- if (name[3] == 'X')
- return PRIXFAST16;
- abort ();
- }
- if (name[8] == '3' && name[9] == '2' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST32;
- if (name[3] == 'i')
- return PRIiFAST32;
- if (name[3] == 'o')
- return PRIoFAST32;
- if (name[3] == 'u')
- return PRIuFAST32;
- if (name[3] == 'x')
- return PRIxFAST32;
- if (name[3] == 'X')
- return PRIXFAST32;
- abort ();
- }
- if (name[8] == '6' && name[9] == '4' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST64;
- if (name[3] == 'i')
- return PRIiFAST64;
- if (name[3] == 'o')
- return PRIoFAST64;
- if (name[3] == 'u')
- return PRIuFAST64;
- if (name[3] == 'x')
- return PRIxFAST64;
- if (name[3] == 'X')
- return PRIXFAST64;
- abort ();
- }
- }
- if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X'
- && name[7] == '\0')
- {
- if (name[3] == 'd')
- return PRIdMAX;
- if (name[3] == 'i')
- return PRIiMAX;
- if (name[3] == 'o')
- return PRIoMAX;
- if (name[3] == 'u')
- return PRIuMAX;
- if (name[3] == 'x')
- return PRIxMAX;
- if (name[3] == 'X')
- return PRIXMAX;
- abort ();
- }
- if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R'
- && name[7] == '\0')
- {
- if (name[3] == 'd')
- return PRIdPTR;
- if (name[3] == 'i')
- return PRIiPTR;
- if (name[3] == 'o')
- return PRIoPTR;
- if (name[3] == 'u')
- return PRIuPTR;
- if (name[3] == 'x')
- return PRIxPTR;
- if (name[3] == 'X')
- return PRIXPTR;
- abort ();
- }
- }
- }
- /* Test for a glibc specific printf() format directive flag. */
- if (name[0] == 'I' && name[1] == '\0')
- {
-#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
- /* The 'I' flag, in numeric format directives, replaces ASCII digits
- with the 'outdigits' defined in the LC_CTYPE locale facet. This is
- used for Farsi (Persian) and maybe Arabic. */
- return "I";
-#else
- return "";
-#endif
- }
- /* Other system dependent strings are not valid. */
- return NULL;
-}
-
-/* Initialize the codeset dependent parts of an opened message catalog.
- Return the header entry. */
-const char *
-internal_function
-_nl_init_domain_conv (struct loaded_l10nfile *domain_file,
- struct loaded_domain *domain,
- struct binding *domainbinding)
-{
- /* Find out about the character set the file is encoded with.
- This can be found (in textual form) in the entry "". If this
- entry does not exist or if this does not contain the `charset='
- information, we will assume the charset matches the one the
- current locale and we don't have to perform any conversion. */
- char *nullentry;
- size_t nullentrylen;
-
- /* Preinitialize fields, to avoid recursion during _nl_find_msg. */
- domain->codeset_cntr =
- (domainbinding != NULL ? domainbinding->codeset_cntr : 0);
-#ifdef _LIBC
- domain->conv = (__gconv_t) -1;
-#else
-# if HAVE_ICONV
- domain->conv = (iconv_t) -1;
-# endif
-#endif
- domain->conv_tab = NULL;
-
- /* Get the header entry. */
- nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
-
- if (nullentry != NULL)
- {
-#if defined _LIBC || HAVE_ICONV
- const char *charsetstr;
-
- charsetstr = strstr (nullentry, "charset=");
- if (charsetstr != NULL)
- {
- size_t len;
- char *charset;
- const char *outcharset;
-
- charsetstr += strlen ("charset=");
- len = strcspn (charsetstr, " \t\n");
-
- charset = (char *) alloca (len + 1);
-# if defined _LIBC || HAVE_MEMPCPY
- *((char *) mempcpy (charset, charsetstr, len)) = '\0';
-# else
- memcpy (charset, charsetstr, len);
- charset[len] = '\0';
-# endif
-
- /* The output charset should normally be determined by the
- locale. But sometimes the locale is not used or not correctly
- set up, so we provide a possibility for the user to override
- this. Moreover, the value specified through
- bind_textdomain_codeset overrides both. */
- if (domainbinding != NULL && domainbinding->codeset != NULL)
- outcharset = domainbinding->codeset;
- else
- {
- outcharset = getenv ("OUTPUT_CHARSET");
- if (outcharset == NULL || outcharset[0] == '\0')
- {
-# ifdef _LIBC
- outcharset = _NL_CURRENT (LC_CTYPE, CODESET);
-# else
-# if HAVE_ICONV
- extern const char *locale_charset (void);
- outcharset = locale_charset ();
-# endif
-# endif
- }
- }
-
-# ifdef _LIBC
- /* We always want to use transliteration. */
- outcharset = norm_add_slashes (outcharset, "TRANSLIT");
- charset = norm_add_slashes (charset, NULL);
- if (__gconv_open (outcharset, charset, &domain->conv,
- GCONV_AVOID_NOCONV)
- != __GCONV_OK)
- domain->conv = (__gconv_t) -1;
-# else
-# if HAVE_ICONV
- /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
- we want to use transliteration. */
-# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
- || _LIBICONV_VERSION >= 0x0105
- if (strchr (outcharset, '/') == NULL)
- {
- char *tmp;
-
- len = strlen (outcharset);
- tmp = (char *) alloca (len + 10 + 1);
- memcpy (tmp, outcharset, len);
- memcpy (tmp + len, "//TRANSLIT", 10 + 1);
- outcharset = tmp;
-
- domain->conv = iconv_open (outcharset, charset);
-
- freea (outcharset);
- }
- else
-# endif
- domain->conv = iconv_open (outcharset, charset);
-# endif
-# endif
-
- freea (charset);
- }
-#endif /* _LIBC || HAVE_ICONV */
- }
-
- return nullentry;
-}
-
-/* Frees the codeset dependent parts of an opened message catalog. */
-void
-internal_function
-_nl_free_domain_conv (struct loaded_domain *domain)
-{
- if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
- free (domain->conv_tab);
-
-#ifdef _LIBC
- if (domain->conv != (__gconv_t) -1)
- __gconv_close (domain->conv);
-#else
-# if HAVE_ICONV
- if (domain->conv != (iconv_t) -1)
- iconv_close (domain->conv);
-# endif
-#endif
-}
-
-/* Load the message catalogs specified by FILENAME. If it is no valid
- message catalog do nothing. */
-void
-internal_function
-_nl_load_domain (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding)
-{
- int fd;
- size_t size;
-#ifdef _LIBC
- struct stat64 st;
-#else
- struct stat st;
-#endif
- struct mo_file_header *data = (struct mo_file_header *) -1;
- int use_mmap = 0;
- struct loaded_domain *domain;
- int revision;
- const char *nullentry;
-
- domain_file->decided = 1;
- domain_file->data = NULL;
-
- /* Note that it would be useless to store domainbinding in domain_file
- because domainbinding might be == NULL now but != NULL later (after
- a call to bind_textdomain_codeset). */
-
- /* If the record does not represent a valid locale the FILENAME
- might be NULL. This can happen when according to the given
- specification the locale file name is different for XPG and CEN
- syntax. */
- if (domain_file->filename == NULL)
- return;
-
- /* Try to open the addressed file. */
- fd = open (domain_file->filename, O_RDONLY | O_BINARY);
- if (fd == -1)
- return;
-
- /* We must know about the size of the file. */
- if (
-#ifdef _LIBC
- __builtin_expect (fstat64 (fd, &st) != 0, 0)
-#else
- __builtin_expect (fstat (fd, &st) != 0, 0)
-#endif
- || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
- || __builtin_expect (size < sizeof (struct mo_file_header), 0))
- {
- /* Something went wrong. */
- close (fd);
- return;
- }
-
-#ifdef HAVE_MMAP
- /* Now we are ready to load the file. If mmap() is available we try
- this first. If not available or it failed we try to load it. */
- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
- MAP_PRIVATE, fd, 0);
-
- if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
- {
- /* mmap() call was successful. */
- close (fd);
- use_mmap = 1;
- }
-#endif
-
- /* If the data is not yet available (i.e. mmap'ed) we try to load
- it manually. */
- if (data == (struct mo_file_header *) -1)
- {
- size_t to_read;
- char *read_ptr;
-
- data = (struct mo_file_header *) malloc (size);
- if (data == NULL)
- return;
-
- to_read = size;
- read_ptr = (char *) data;
- do
- {
- long int nb = (long int) read (fd, read_ptr, to_read);
- if (nb <= 0)
- {
-#ifdef EINTR
- if (nb == -1 && errno == EINTR)
- continue;
-#endif
- close (fd);
- return;
- }
- read_ptr += nb;
- to_read -= nb;
- }
- while (to_read > 0);
-
- close (fd);
- }
-
- /* Using the magic number we can test whether it really is a message
- catalog file. */
- if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
- 0))
- {
- /* The magic number is wrong: not a message catalog file. */
-#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((void *) data, size);
- else
-#endif
- free (data);
- return;
- }
-
- domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
- if (domain == NULL)
- return;
- domain_file->data = domain;
-
- domain->data = (char *) data;
- domain->use_mmap = use_mmap;
- domain->mmap_size = size;
- domain->must_swap = data->magic != _MAGIC;
- domain->malloced = NULL;
-
- /* Fill in the information about the available tables. */
- revision = W (domain->must_swap, data->revision);
- /* We support only the major revisions 0 and 1. */
- switch (revision >> 16)
- {
- case 0:
- case 1:
- domain->nstrings = W (domain->must_swap, data->nstrings);
- domain->orig_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->orig_tab_offset));
- domain->trans_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->trans_tab_offset));
- domain->hash_size = W (domain->must_swap, data->hash_tab_size);
- domain->hash_tab =
- (domain->hash_size > 2
- ? (const nls_uint32 *)
- ((char *) data + W (domain->must_swap, data->hash_tab_offset))
- : NULL);
- domain->must_swap_hash_tab = domain->must_swap;
-
- /* Now dispatch on the minor revision. */
- switch (revision & 0xffff)
- {
- case 0:
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- break;
- case 1:
- default:
- {
- nls_uint32 n_sysdep_strings;
-
- if (domain->hash_tab == NULL)
- /* This is invalid. These minor revisions need a hash table. */
- goto invalid;
-
- n_sysdep_strings =
- W (domain->must_swap, data->n_sysdep_strings);
- if (n_sysdep_strings > 0)
- {
- nls_uint32 n_sysdep_segments;
- const struct sysdep_segment *sysdep_segments;
- const char **sysdep_segment_values;
- const nls_uint32 *orig_sysdep_tab;
- const nls_uint32 *trans_sysdep_tab;
- nls_uint32 n_inmem_sysdep_strings;
- size_t memneed;
- char *mem;
- struct sysdep_string_desc *inmem_orig_sysdep_tab;
- struct sysdep_string_desc *inmem_trans_sysdep_tab;
- nls_uint32 *inmem_hash_tab;
- unsigned int i, j;
-
- /* Get the values of the system dependent segments. */
- n_sysdep_segments =
- W (domain->must_swap, data->n_sysdep_segments);
- sysdep_segments = (const struct sysdep_segment *)
- ((char *) data
- + W (domain->must_swap, data->sysdep_segments_offset));
- sysdep_segment_values =
- alloca (n_sysdep_segments * sizeof (const char *));
- for (i = 0; i < n_sysdep_segments; i++)
- {
- const char *name =
- (char *) data
- + W (domain->must_swap, sysdep_segments[i].offset);
- nls_uint32 namelen =
- W (domain->must_swap, sysdep_segments[i].length);
-
- if (!(namelen > 0 && name[namelen - 1] == '\0'))
- {
- freea (sysdep_segment_values);
- goto invalid;
- }
-
- sysdep_segment_values[i] = get_sysdep_segment_value (name);
- }
-
- orig_sysdep_tab = (const nls_uint32 *)
- ((char *) data
- + W (domain->must_swap, data->orig_sysdep_tab_offset));
- trans_sysdep_tab = (const nls_uint32 *)
- ((char *) data
- + W (domain->must_swap, data->trans_sysdep_tab_offset));
-
- /* Compute the amount of additional memory needed for the
- system dependent strings and the augmented hash table.
- At the same time, also drop string pairs which refer to
- an undefined system dependent segment. */
- n_inmem_sysdep_strings = 0;
- memneed = domain->hash_size * sizeof (nls_uint32);
- for (i = 0; i < n_sysdep_strings; i++)
- {
- int valid = 1;
- size_t needs[2];
-
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- size_t need = 0;
- const struct segment_pair *p = sysdep_string->segments;
-
- if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 sysdepref;
-
- need += W (domain->must_swap, p->segsize);
-
- sysdepref = W (domain->must_swap, p->sysdepref);
- if (sysdepref == SEGMENTS_END)
- break;
-
- if (sysdepref >= n_sysdep_segments)
- {
- /* Invalid. */
- freea (sysdep_segment_values);
- goto invalid;
- }
-
- if (sysdep_segment_values[sysdepref] == NULL)
- {
- /* This particular string pair is invalid. */
- valid = 0;
- break;
- }
-
- need += strlen (sysdep_segment_values[sysdepref]);
- }
-
- needs[j] = need;
- if (!valid)
- break;
- }
-
- if (valid)
- {
- n_inmem_sysdep_strings++;
- memneed += needs[0] + needs[1];
- }
- }
- memneed += 2 * n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
-
- if (n_inmem_sysdep_strings > 0)
- {
- unsigned int k;
-
- /* Allocate additional memory. */
- mem = (char *) malloc (memneed);
- if (mem == NULL)
- goto invalid;
-
- domain->malloced = mem;
- inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
- inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
- inmem_hash_tab = (nls_uint32 *) mem;
- mem += domain->hash_size * sizeof (nls_uint32);
-
- /* Compute the system dependent strings. */
- k = 0;
- for (i = 0; i < n_sysdep_strings; i++)
- {
- int valid = 1;
-
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- const struct segment_pair *p =
- sysdep_string->segments;
-
- if (W (domain->must_swap, p->sysdepref)
- != SEGMENTS_END)
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 sysdepref;
-
- sysdepref =
- W (domain->must_swap, p->sysdepref);
- if (sysdepref == SEGMENTS_END)
- break;
-
- if (sysdep_segment_values[sysdepref] == NULL)
- {
- /* This particular string pair is
- invalid. */
- valid = 0;
- break;
- }
- }
-
- if (!valid)
- break;
- }
-
- if (valid)
- {
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- const char *static_segments =
- (char *) data
- + W (domain->must_swap, sysdep_string->offset);
- const struct segment_pair *p =
- sysdep_string->segments;
-
- /* Concatenate the segments, and fill
- inmem_orig_sysdep_tab[k] (for j == 0) and
- inmem_trans_sysdep_tab[k] (for j == 1). */
-
- struct sysdep_string_desc *inmem_tab_entry =
- (j == 0
- ? inmem_orig_sysdep_tab
- : inmem_trans_sysdep_tab)
- + k;
-
- if (W (domain->must_swap, p->sysdepref)
- == SEGMENTS_END)
- {
- /* Only one static segment. */
- inmem_tab_entry->length =
- W (domain->must_swap, p->segsize);
- inmem_tab_entry->pointer = static_segments;
- }
- else
- {
- inmem_tab_entry->pointer = mem;
-
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 segsize =
- W (domain->must_swap, p->segsize);
- nls_uint32 sysdepref =
- W (domain->must_swap, p->sysdepref);
- size_t n;
-
- if (segsize > 0)
- {
- memcpy (mem, static_segments, segsize);
- mem += segsize;
- static_segments += segsize;
- }
-
- if (sysdepref == SEGMENTS_END)
- break;
-
- n = strlen (sysdep_segment_values[sysdepref]);
- memcpy (mem, sysdep_segment_values[sysdepref], n);
- mem += n;
- }
-
- inmem_tab_entry->length =
- mem - inmem_tab_entry->pointer;
- }
- }
-
- k++;
- }
- }
- if (k != n_inmem_sysdep_strings)
- abort ();
-
- /* Compute the augmented hash table. */
- for (i = 0; i < domain->hash_size; i++)
- inmem_hash_tab[i] =
- W (domain->must_swap_hash_tab, domain->hash_tab[i]);
- for (i = 0; i < n_inmem_sysdep_strings; i++)
- {
- const char *msgid = inmem_orig_sysdep_tab[i].pointer;
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr =
- 1 + (hash_val % (domain->hash_size - 2));
-
- for (;;)
- {
- if (inmem_hash_tab[idx] == 0)
- {
- /* Hash table entry is empty. Use it. */
- inmem_hash_tab[idx] = 1 + domain->nstrings + i;
- break;
- }
-
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
- }
- }
-
- domain->n_sysdep_strings = n_inmem_sysdep_strings;
- domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
- domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
-
- domain->hash_tab = inmem_hash_tab;
- domain->must_swap_hash_tab = 0;
- }
- else
- {
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- }
-
- freea (sysdep_segment_values);
- }
- else
- {
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- }
- }
- break;
- }
- break;
- default:
- /* This is an invalid revision. */
- invalid:
- /* This is an invalid .mo file. */
- free (domain->malloced);
-#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((void *) data, size);
- else
-#endif
- free (data);
- free (domain);
- domain_file->data = NULL;
- return;
- }
-
- /* Now initialize the character set converter from the character set
- the file is encoded with (found in the header entry) to the domain's
- specified character set or the locale's character set. */
- nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
-
- /* Also look for a plural specification. */
- EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
-}
-
-
-#ifdef _LIBC
-void
-internal_function
-_nl_unload_domain (struct loaded_domain *domain)
-{
- if (domain->plural != &__gettext_germanic_plural)
- __gettext_free_exp (domain->plural);
-
- _nl_free_domain_conv (domain);
-
- free (domain->malloced);
-
-# ifdef _POSIX_MAPPED_FILES
- if (domain->use_mmap)
- munmap ((void *) domain->data, domain->mmap_size);
- else
-# endif /* _POSIX_MAPPED_FILES */
- free ((void *) domain->data);
-
- free (domain);
-}
-#endif
diff --git a/intl/localcharset.c b/intl/localcharset.c
deleted file mode 100644
index f9f411e2..00000000
--- a/intl/localcharset.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Written by Bruno Haible <bruno@clisp.org>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#include "localcharset.h"
-
-#if HAVE_STDDEF_H
-# include <stddef.h>
-#endif
-
-#include <stdio.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# undef WIN32 /* avoid warning on mingw32 */
-# define WIN32
-#endif
-
-#if defined __EMX__
-/* Assume EMX program runs on OS/2, even if compiled under DOS. */
-# define OS2
-#endif
-
-#if !defined WIN32
-# if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-# else
-# if HAVE_SETLOCALE
-# include <locale.h>
-# endif
-# endif
-#elif defined WIN32
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-#if defined OS2
-# define INCL_DOS
-# include <os2.h>
-#endif
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-#endif
-
-#ifndef DIRECTORY_SEPARATOR
-# define DIRECTORY_SEPARATOR '/'
-#endif
-
-#ifndef ISSLASH
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-#endif
-
-#if HAVE_DECL_GETC_UNLOCKED
-# undef getc
-# define getc getc_unlocked
-#endif
-
-/* The following static variable is declared 'volatile' to avoid a
- possible multithread problem in the function get_charset_aliases. If we
- are running in a threaded environment, and if two threads initialize
- 'charset_aliases' simultaneously, both will produce the same value,
- and everything will be ok if the two assignments to 'charset_aliases'
- are atomic. But I don't know what will happen if the two assignments mix. */
-#if __STDC__ != 1
-# define volatile /* empty */
-#endif
-/* Pointer to the contents of the charset.alias file, if it has already been
- read, else NULL. Its format is:
- ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
-static const char * volatile charset_aliases;
-
-/* Return a pointer to the contents of the charset.alias file. */
-static const char *
-get_charset_aliases ()
-{
- const char *cp;
-
- cp = charset_aliases;
- if (cp == NULL)
- {
-#if !(defined VMS || defined WIN32)
- FILE *fp;
- const char *dir = relocate (LIBDIR);
- const char *base = "charset.alias";
- char *file_name;
-
- /* Concatenate dir and base into freshly allocated file_name. */
- {
- size_t dir_len = strlen (dir);
- size_t base_len = strlen (base);
- int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
- file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
- if (file_name != NULL)
- {
- memcpy (file_name, dir, dir_len);
- if (add_slash)
- file_name[dir_len] = DIRECTORY_SEPARATOR;
- memcpy (file_name + dir_len + add_slash, base, base_len + 1);
- }
- }
-
- if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
- /* Out of memory or file not found, treat it as empty. */
- cp = "";
- else
- {
- /* Parse the file's contents. */
- int c;
- char buf1[50+1];
- char buf2[50+1];
- char *res_ptr = NULL;
- size_t res_size = 0;
- size_t l1, l2;
-
- for (;;)
- {
- c = getc (fp);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#')
- {
- /* Skip comment, to end of line. */
- do
- c = getc (fp);
- while (!(c == EOF || c == '\n'));
- if (c == EOF)
- break;
- continue;
- }
- ungetc (c, fp);
- if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
- break;
- l1 = strlen (buf1);
- l2 = strlen (buf2);
- if (res_size == 0)
- {
- res_size = l1 + 1 + l2 + 1;
- res_ptr = (char *) malloc (res_size + 1);
- }
- else
- {
- res_size += l1 + 1 + l2 + 1;
- res_ptr = (char *) realloc (res_ptr, res_size + 1);
- }
- if (res_ptr == NULL)
- {
- /* Out of memory. */
- res_size = 0;
- break;
- }
- strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
- strcpy (res_ptr + res_size - (l2 + 1), buf2);
- }
- fclose (fp);
- if (res_size == 0)
- cp = "";
- else
- {
- *(res_ptr + res_size) = '\0';
- cp = res_ptr;
- }
- }
-
- free (file_name);
-
-#else
-
-# if defined VMS
- /* To avoid the troubles of an extra file charset.alias_vms in the
- sources of many GNU packages, simply inline the aliases here. */
- /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
- "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
- section 10.7 "Handling Different Character Sets". */
- cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
- "ISO8859-2" "\0" "ISO-8859-2" "\0"
- "ISO8859-5" "\0" "ISO-8859-5" "\0"
- "ISO8859-7" "\0" "ISO-8859-7" "\0"
- "ISO8859-8" "\0" "ISO-8859-8" "\0"
- "ISO8859-9" "\0" "ISO-8859-9" "\0"
- /* Japanese */
- "eucJP" "\0" "EUC-JP" "\0"
- "SJIS" "\0" "SHIFT_JIS" "\0"
- "DECKANJI" "\0" "DEC-KANJI" "\0"
- "SDECKANJI" "\0" "EUC-JP" "\0"
- /* Chinese */
- "eucTW" "\0" "EUC-TW" "\0"
- "DECHANYU" "\0" "DEC-HANYU" "\0"
- "DECHANZI" "\0" "GB2312" "\0"
- /* Korean */
- "DECKOREAN" "\0" "EUC-KR" "\0";
-# endif
-
-# if defined WIN32
- /* To avoid the troubles of installing a separate file in the same
- directory as the DLL and of retrieving the DLL's directory at
- runtime, simply inline the aliases here. */
-
- cp = "CP936" "\0" "GBK" "\0"
- "CP1361" "\0" "JOHAB" "\0"
- "CP20127" "\0" "ASCII" "\0"
- "CP20866" "\0" "KOI8-R" "\0"
- "CP21866" "\0" "KOI8-RU" "\0"
- "CP28591" "\0" "ISO-8859-1" "\0"
- "CP28592" "\0" "ISO-8859-2" "\0"
- "CP28593" "\0" "ISO-8859-3" "\0"
- "CP28594" "\0" "ISO-8859-4" "\0"
- "CP28595" "\0" "ISO-8859-5" "\0"
- "CP28596" "\0" "ISO-8859-6" "\0"
- "CP28597" "\0" "ISO-8859-7" "\0"
- "CP28598" "\0" "ISO-8859-8" "\0"
- "CP28599" "\0" "ISO-8859-9" "\0"
- "CP28605" "\0" "ISO-8859-15" "\0";
-# endif
-#endif
-
- charset_aliases = cp;
- }
-
- return cp;
-}
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-
-#ifdef STATIC
-STATIC
-#endif
-const char *
-locale_charset ()
-{
- const char *codeset;
- const char *aliases;
-
-#if !(defined WIN32 || defined OS2)
-
-# if HAVE_LANGINFO_CODESET
-
- /* Most systems support nl_langinfo (CODESET) nowadays. */
- codeset = nl_langinfo (CODESET);
-
-# else
-
- /* On old systems which lack it, use setlocale or getenv. */
- const char *locale = NULL;
-
- /* But most old systems don't have a complete set of locales. Some
- (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
- use setlocale here; it would return "C" when it doesn't support the
- locale name the user has set. */
-# if HAVE_SETLOCALE && 0
- locale = setlocale (LC_CTYPE, NULL);
-# endif
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- }
-
- /* On some old systems, one used to set locale = "iso8859_1". On others,
- you set it to "language_COUNTRY.charset". In any case, we resolve it
- through the charset.alias file. */
- codeset = locale;
-
-# endif
-
-#elif defined WIN32
-
- static char buf[2 + 10 + 1];
-
- /* Woe32 has a function returning the locale's codepage as a number. */
- sprintf (buf, "CP%u", GetACP ());
- codeset = buf;
-
-#elif defined OS2
-
- const char *locale;
- static char buf[2 + 10 + 1];
- ULONG cp[3];
- ULONG cplen;
-
- /* Allow user to override the codeset, as set in the operating system,
- with standard language environment variables. */
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- if (locale != NULL && locale[0] != '\0')
- {
- /* If the locale name contains an encoding after the dot, return it. */
- const char *dot = strchr (locale, '.');
-
- if (dot != NULL)
- {
- const char *modifier;
-
- dot++;
- /* Look for the possible @... trailer and remove it, if any. */
- modifier = strchr (dot, '@');
- if (modifier == NULL)
- return dot;
- if (modifier - dot < sizeof (buf))
- {
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
- }
- }
-
- /* Resolve through the charset.alias file. */
- codeset = locale;
- }
- else
- {
- /* OS/2 has a function returning the locale's codepage as a number. */
- if (DosQueryCp (sizeof (cp), cp, &cplen))
- codeset = "";
- else
- {
- sprintf (buf, "CP%u", cp[0]);
- codeset = buf;
- }
- }
-
-#endif
-
- if (codeset == NULL)
- /* The canonical name cannot be determined. */
- codeset = "";
-
- /* Resolve alias. */
- for (aliases = get_charset_aliases ();
- *aliases != '\0';
- aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
- if (strcmp (codeset, aliases) == 0
- || (aliases[0] == '*' && aliases[1] == '\0'))
- {
- codeset = aliases + strlen (aliases) + 1;
- break;
- }
-
- /* Don't return an empty string. GNU libc and GNU libiconv interpret
- the empty string as denoting "the locale's character encoding",
- thus GNU libiconv would call this function a second time. */
- if (codeset[0] == '\0')
- codeset = "ASCII";
-
- return codeset;
-}
diff --git a/intl/localcharset.h b/intl/localcharset.h
deleted file mode 100644
index 129e4a4a..00000000
--- a/intl/localcharset.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- This file is part of the GNU CHARSET Library.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _LOCALCHARSET_H
-#define _LOCALCHARSET_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-extern const char * locale_charset (void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LOCALCHARSET_H */
diff --git a/intl/locale.alias b/intl/locale.alias
deleted file mode 100644
index faa69691..00000000
--- a/intl/locale.alias
+++ /dev/null
@@ -1,78 +0,0 @@
-# Locale name alias data base.
-# Copyright (C) 1996-2001,2003 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-
-# The format of this file is the same as for the corresponding file of
-# the X Window System, which normally can be found in
-# /usr/lib/X11/locale/locale.alias
-# A single line contains two fields: an alias and a substitution value.
-# All entries are case independent.
-
-# Note: This file is far from being complete. If you have a value for
-# your own site which you think might be useful for others too, share
-# it with the rest of us. Send it using the `glibcbug' script to
-# bugs@gnu.org.
-
-# Packages using this file:
-
-bokmal nb_NO.ISO-8859-1
-bokml nb_NO.ISO-8859-1
-catalan ca_ES.ISO-8859-1
-croatian hr_HR.ISO-8859-2
-czech cs_CZ.ISO-8859-2
-danish da_DK.ISO-8859-1
-dansk da_DK.ISO-8859-1
-deutsch de_DE.ISO-8859-1
-dutch nl_NL.ISO-8859-1
-eesti et_EE.ISO-8859-1
-estonian et_EE.ISO-8859-1
-finnish fi_FI.ISO-8859-1
-franais fr_FR.ISO-8859-1
-french fr_FR.ISO-8859-1
-galego gl_ES.ISO-8859-1
-galician gl_ES.ISO-8859-1
-german de_DE.ISO-8859-1
-greek el_GR.ISO-8859-7
-hebrew he_IL.ISO-8859-8
-hrvatski hr_HR.ISO-8859-2
-hungarian hu_HU.ISO-8859-2
-icelandic is_IS.ISO-8859-1
-italian it_IT.ISO-8859-1
-japanese ja_JP.eucJP
-japanese.euc ja_JP.eucJP
-ja_JP ja_JP.eucJP
-ja_JP.ujis ja_JP.eucJP
-japanese.sjis ja_JP.SJIS
-korean ko_KR.eucKR
-korean.euc ko_KR.eucKR
-ko_KR ko_KR.eucKR
-lithuanian lt_LT.ISO-8859-13
-no_NO nb_NO.ISO-8859-1
-no_NO.ISO-8859-1 nb_NO.ISO-8859-1
-norwegian nb_NO.ISO-8859-1
-nynorsk nn_NO.ISO-8859-1
-polish pl_PL.ISO-8859-2
-portuguese pt_PT.ISO-8859-1
-romanian ro_RO.ISO-8859-2
-russian ru_RU.ISO-8859-5
-slovak sk_SK.ISO-8859-2
-slovene sl_SI.ISO-8859-2
-slovenian sl_SI.ISO-8859-2
-spanish es_ES.ISO-8859-1
-swedish sv_SE.ISO-8859-1
-thai th_TH.TIS-620
-turkish tr_TR.ISO-8859-9
diff --git a/intl/localealias.c b/intl/localealias.c
deleted file mode 100644
index 7a092a0d..00000000
--- a/intl/localealias.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Handle aliases for locale names.
- Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#if defined _LIBC || defined HAVE___FSETLOCKING
-# include <stdio_ext.h>
-#endif
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "gettextP.h"
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define strcasecmp __strcasecmp
-
-# ifndef mempcpy
-# define mempcpy __mempcpy
-# endif
-# define HAVE_MEMPCPY 1
-# define HAVE___FSETLOCKING 1
-
-/* We need locking here since we can be called from different places. */
-# include <bits/libc-lock.h>
-
-__libc_lock_define_initialized (static, lock);
-#endif
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-/* Some optimizations for glibc. */
-#ifdef _LIBC
-# define FEOF(fp) feof_unlocked (fp)
-# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp)
-#else
-# define FEOF(fp) feof (fp)
-# define FGETS(buf, n, fp) fgets (buf, n, fp)
-#endif
-
-/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
-# undef fgets
-# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
-#endif
-#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED
-# undef feof
-# define feof(s) feof_unlocked (s)
-#endif
-
-
-struct alias_map
-{
- const char *alias;
- const char *value;
-};
-
-
-#ifndef _LIBC
-# define libc_freeres_ptr(decl) decl
-#endif
-
-libc_freeres_ptr (static char *string_space);
-static size_t string_space_act;
-static size_t string_space_max;
-libc_freeres_ptr (static struct alias_map *map);
-static size_t nmap;
-static size_t maxmap;
-
-
-/* Prototypes for local functions. */
-static size_t read_alias_file (const char *fname, int fname_len)
- internal_function;
-static int extend_alias_table (void);
-static int alias_compare (const struct alias_map *map1,
- const struct alias_map *map2);
-
-
-const char *
-_nl_expand_alias (const char *name)
-{
- static const char *locale_alias_path;
- struct alias_map *retval;
- const char *result = NULL;
- size_t added;
-
-#ifdef _LIBC
- __libc_lock_lock (lock);
-#endif
-
- if (locale_alias_path == NULL)
- locale_alias_path = LOCALE_ALIAS_PATH;
-
- do
- {
- struct alias_map item;
-
- item.alias = name;
-
- if (nmap > 0)
- retval = (struct alias_map *) bsearch (&item, map, nmap,
- sizeof (struct alias_map),
- (int (*) (const void *,
- const void *)
- ) alias_compare);
- else
- retval = NULL;
-
- /* We really found an alias. Return the value. */
- if (retval != NULL)
- {
- result = retval->value;
- break;
- }
-
- /* Perhaps we can find another alias file. */
- added = 0;
- while (added == 0 && locale_alias_path[0] != '\0')
- {
- const char *start;
-
- while (locale_alias_path[0] == PATH_SEPARATOR)
- ++locale_alias_path;
- start = locale_alias_path;
-
- while (locale_alias_path[0] != '\0'
- && locale_alias_path[0] != PATH_SEPARATOR)
- ++locale_alias_path;
-
- if (start < locale_alias_path)
- added = read_alias_file (start, locale_alias_path - start);
- }
- }
- while (added != 0);
-
-#ifdef _LIBC
- __libc_lock_unlock (lock);
-#endif
-
- return result;
-}
-
-
-static size_t
-internal_function
-read_alias_file (const char *fname, int fname_len)
-{
- FILE *fp;
- char *full_fname;
- size_t added;
- static const char aliasfile[] = "/locale.alias";
-
- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-#ifdef HAVE_MEMPCPY
- mempcpy (mempcpy (full_fname, fname, fname_len),
- aliasfile, sizeof aliasfile);
-#else
- memcpy (full_fname, fname, fname_len);
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
-#endif
-
- fp = fopen (relocate (full_fname), "r");
- freea (full_fname);
- if (fp == NULL)
- return 0;
-
-#ifdef HAVE___FSETLOCKING
- /* No threads present. */
- __fsetlocking (fp, FSETLOCKING_BYCALLER);
-#endif
-
- added = 0;
- while (!FEOF (fp))
- {
- /* It is a reasonable approach to use a fix buffer here because
- a) we are only interested in the first two fields
- b) these fields must be usable as file names and so must not
- be that long
- We avoid a multi-kilobyte buffer here since this would use up
- stack space which we might not have if the program ran out of
- memory. */
- char buf[400];
- char *alias;
- char *value;
- char *cp;
-
- if (FGETS (buf, sizeof buf, fp) == NULL)
- /* EOF reached. */
- break;
-
- cp = buf;
- /* Ignore leading white space. */
- while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- /* A leading '#' signals a comment line. */
- if (cp[0] != '\0' && cp[0] != '#')
- {
- alias = cp++;
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate alias name. */
- if (cp[0] != '\0')
- *cp++ = '\0';
-
- /* Now look for the beginning of the value. */
- while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- if (cp[0] != '\0')
- {
- size_t alias_len;
- size_t value_len;
-
- value = cp++;
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate value. */
- if (cp[0] == '\n')
- {
- /* This has to be done to make the following test
- for the end of line possible. We are looking for
- the terminating '\n' which do not overwrite here. */
- *cp++ = '\0';
- *cp = '\n';
- }
- else if (cp[0] != '\0')
- *cp++ = '\0';
-
- if (nmap >= maxmap)
- if (__builtin_expect (extend_alias_table (), 0))
- return added;
-
- alias_len = strlen (alias) + 1;
- value_len = strlen (value) + 1;
-
- if (string_space_act + alias_len + value_len > string_space_max)
- {
- /* Increase size of memory pool. */
- size_t new_size = (string_space_max
- + (alias_len + value_len > 1024
- ? alias_len + value_len : 1024));
- char *new_pool = (char *) realloc (string_space, new_size);
- if (new_pool == NULL)
- return added;
-
- if (__builtin_expect (string_space != new_pool, 0))
- {
- size_t i;
-
- for (i = 0; i < nmap; i++)
- {
- map[i].alias += new_pool - string_space;
- map[i].value += new_pool - string_space;
- }
- }
-
- string_space = new_pool;
- string_space_max = new_size;
- }
-
- map[nmap].alias = memcpy (&string_space[string_space_act],
- alias, alias_len);
- string_space_act += alias_len;
-
- map[nmap].value = memcpy (&string_space[string_space_act],
- value, value_len);
- string_space_act += value_len;
-
- ++nmap;
- ++added;
- }
- }
-
- /* Possibly not the whole line fits into the buffer. Ignore
- the rest of the line. */
- while (strchr (buf, '\n') == NULL)
- if (FGETS (buf, sizeof buf, fp) == NULL)
- /* Make sure the inner loop will be left. The outer loop
- will exit at the `feof' test. */
- break;
- }
-
- /* Should we test for ferror()? I think we have to silently ignore
- errors. --drepper */
- fclose (fp);
-
- if (added > 0)
- qsort (map, nmap, sizeof (struct alias_map),
- (int (*) (const void *, const void *)) alias_compare);
-
- return added;
-}
-
-
-static int
-extend_alias_table ()
-{
- size_t new_size;
- struct alias_map *new_map;
-
- new_size = maxmap == 0 ? 100 : 2 * maxmap;
- new_map = (struct alias_map *) realloc (map, (new_size
- * sizeof (struct alias_map)));
- if (new_map == NULL)
- /* Simply don't extend: we don't have any more core. */
- return -1;
-
- map = new_map;
- maxmap = new_size;
- return 0;
-}
-
-
-static int
-alias_compare (const struct alias_map *map1, const struct alias_map *map2)
-{
-#if defined _LIBC || defined HAVE_STRCASECMP
- return strcasecmp (map1->alias, map2->alias);
-#else
- const unsigned char *p1 = (const unsigned char *) map1->alias;
- const unsigned char *p2 = (const unsigned char *) map2->alias;
- unsigned char c1, c2;
-
- if (p1 == p2)
- return 0;
-
- do
- {
- /* I know this seems to be odd but the tolower() function in
- some systems libc cannot handle nonalpha characters. */
- c1 = isupper (*p1) ? tolower (*p1) : *p1;
- c2 = isupper (*p2) ? tolower (*p2) : *p2;
- if (c1 == '\0')
- break;
- ++p1;
- ++p2;
- }
- while (c1 == c2);
-
- return c1 - c2;
-#endif
-}
diff --git a/intl/localename.c b/intl/localename.c
deleted file mode 100644
index 9d651461..00000000
--- a/intl/localename.c
+++ /dev/null
@@ -1,1142 +0,0 @@
-/* Determine the current selected locale.
- Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
-/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <locale.h>
-
-#if defined _WIN32 || defined __WIN32__
-# undef WIN32 /* avoid warning on mingw32 */
-# define WIN32
-#endif
-
-#ifdef WIN32
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-/* List of language codes, sorted by value:
- 0x01 LANG_ARABIC
- 0x02 LANG_BULGARIAN
- 0x03 LANG_CATALAN
- 0x04 LANG_CHINESE
- 0x05 LANG_CZECH
- 0x06 LANG_DANISH
- 0x07 LANG_GERMAN
- 0x08 LANG_GREEK
- 0x09 LANG_ENGLISH
- 0x0a LANG_SPANISH
- 0x0b LANG_FINNISH
- 0x0c LANG_FRENCH
- 0x0d LANG_HEBREW
- 0x0e LANG_HUNGARIAN
- 0x0f LANG_ICELANDIC
- 0x10 LANG_ITALIAN
- 0x11 LANG_JAPANESE
- 0x12 LANG_KOREAN
- 0x13 LANG_DUTCH
- 0x14 LANG_NORWEGIAN
- 0x15 LANG_POLISH
- 0x16 LANG_PORTUGUESE
- 0x17 LANG_RHAETO_ROMANCE
- 0x18 LANG_ROMANIAN
- 0x19 LANG_RUSSIAN
- 0x1a LANG_CROATIAN == LANG_SERBIAN
- 0x1b LANG_SLOVAK
- 0x1c LANG_ALBANIAN
- 0x1d LANG_SWEDISH
- 0x1e LANG_THAI
- 0x1f LANG_TURKISH
- 0x20 LANG_URDU
- 0x21 LANG_INDONESIAN
- 0x22 LANG_UKRAINIAN
- 0x23 LANG_BELARUSIAN
- 0x24 LANG_SLOVENIAN
- 0x25 LANG_ESTONIAN
- 0x26 LANG_LATVIAN
- 0x27 LANG_LITHUANIAN
- 0x28 LANG_TAJIK
- 0x29 LANG_FARSI
- 0x2a LANG_VIETNAMESE
- 0x2b LANG_ARMENIAN
- 0x2c LANG_AZERI
- 0x2d LANG_BASQUE
- 0x2e LANG_SORBIAN
- 0x2f LANG_MACEDONIAN
- 0x30 LANG_SUTU
- 0x31 LANG_TSONGA
- 0x32 LANG_TSWANA
- 0x33 LANG_VENDA
- 0x34 LANG_XHOSA
- 0x35 LANG_ZULU
- 0x36 LANG_AFRIKAANS
- 0x37 LANG_GEORGIAN
- 0x38 LANG_FAEROESE
- 0x39 LANG_HINDI
- 0x3a LANG_MALTESE
- 0x3b LANG_SAAMI
- 0x3c LANG_GAELIC
- 0x3d LANG_YIDDISH
- 0x3e LANG_MALAY
- 0x3f LANG_KAZAK
- 0x40 LANG_KYRGYZ
- 0x41 LANG_SWAHILI
- 0x42 LANG_TURKMEN
- 0x43 LANG_UZBEK
- 0x44 LANG_TATAR
- 0x45 LANG_BENGALI
- 0x46 LANG_PUNJABI
- 0x47 LANG_GUJARATI
- 0x48 LANG_ORIYA
- 0x49 LANG_TAMIL
- 0x4a LANG_TELUGU
- 0x4b LANG_KANNADA
- 0x4c LANG_MALAYALAM
- 0x4d LANG_ASSAMESE
- 0x4e LANG_MARATHI
- 0x4f LANG_SANSKRIT
- 0x50 LANG_MONGOLIAN
- 0x51 LANG_TIBETAN
- 0x52 LANG_WELSH
- 0x53 LANG_CAMBODIAN
- 0x54 LANG_LAO
- 0x55 LANG_BURMESE
- 0x56 LANG_GALICIAN
- 0x57 LANG_KONKANI
- 0x58 LANG_MANIPURI
- 0x59 LANG_SINDHI
- 0x5a LANG_SYRIAC
- 0x5b LANG_SINHALESE
- 0x5c LANG_CHEROKEE
- 0x5d LANG_INUKTITUT
- 0x5e LANG_AMHARIC
- 0x5f LANG_TAMAZIGHT
- 0x60 LANG_KASHMIRI
- 0x61 LANG_NEPALI
- 0x62 LANG_FRISIAN
- 0x63 LANG_PASHTO
- 0x64 LANG_TAGALOG
- 0x65 LANG_DIVEHI
- 0x66 LANG_EDO
- 0x67 LANG_FULFULDE
- 0x68 LANG_HAUSA
- 0x69 LANG_IBIBIO
- 0x6a LANG_YORUBA
- 0x70 LANG_IGBO
- 0x71 LANG_KANURI
- 0x72 LANG_OROMO
- 0x73 LANG_TIGRINYA
- 0x74 LANG_GUARANI
- 0x75 LANG_HAWAIIAN
- 0x76 LANG_LATIN
- 0x77 LANG_SOMALI
- 0x78 LANG_YI
- 0x79 LANG_PAPIAMENTU
-*/
-/* Mingw headers don't have latest language and sublanguage codes. */
-# ifndef LANG_AFRIKAANS
-# define LANG_AFRIKAANS 0x36
-# endif
-# ifndef LANG_ALBANIAN
-# define LANG_ALBANIAN 0x1c
-# endif
-# ifndef LANG_AMHARIC
-# define LANG_AMHARIC 0x5e
-# endif
-# ifndef LANG_ARABIC
-# define LANG_ARABIC 0x01
-# endif
-# ifndef LANG_ARMENIAN
-# define LANG_ARMENIAN 0x2b
-# endif
-# ifndef LANG_ASSAMESE
-# define LANG_ASSAMESE 0x4d
-# endif
-# ifndef LANG_AZERI
-# define LANG_AZERI 0x2c
-# endif
-# ifndef LANG_BASQUE
-# define LANG_BASQUE 0x2d
-# endif
-# ifndef LANG_BELARUSIAN
-# define LANG_BELARUSIAN 0x23
-# endif
-# ifndef LANG_BENGALI
-# define LANG_BENGALI 0x45
-# endif
-# ifndef LANG_BURMESE
-# define LANG_BURMESE 0x55
-# endif
-# ifndef LANG_CAMBODIAN
-# define LANG_CAMBODIAN 0x53
-# endif
-# ifndef LANG_CATALAN
-# define LANG_CATALAN 0x03
-# endif
-# ifndef LANG_CHEROKEE
-# define LANG_CHEROKEE 0x5c
-# endif
-# ifndef LANG_DIVEHI
-# define LANG_DIVEHI 0x65
-# endif
-# ifndef LANG_EDO
-# define LANG_EDO 0x66
-# endif
-# ifndef LANG_ESTONIAN
-# define LANG_ESTONIAN 0x25
-# endif
-# ifndef LANG_FAEROESE
-# define LANG_FAEROESE 0x38
-# endif
-# ifndef LANG_FARSI
-# define LANG_FARSI 0x29
-# endif
-# ifndef LANG_FRISIAN
-# define LANG_FRISIAN 0x62
-# endif
-# ifndef LANG_FULFULDE
-# define LANG_FULFULDE 0x67
-# endif
-# ifndef LANG_GAELIC
-# define LANG_GAELIC 0x3c
-# endif
-# ifndef LANG_GALICIAN
-# define LANG_GALICIAN 0x56
-# endif
-# ifndef LANG_GEORGIAN
-# define LANG_GEORGIAN 0x37
-# endif
-# ifndef LANG_GUARANI
-# define LANG_GUARANI 0x74
-# endif
-# ifndef LANG_GUJARATI
-# define LANG_GUJARATI 0x47
-# endif
-# ifndef LANG_HAUSA
-# define LANG_HAUSA 0x68
-# endif
-# ifndef LANG_HAWAIIAN
-# define LANG_HAWAIIAN 0x75
-# endif
-# ifndef LANG_HEBREW
-# define LANG_HEBREW 0x0d
-# endif
-# ifndef LANG_HINDI
-# define LANG_HINDI 0x39
-# endif
-# ifndef LANG_IBIBIO
-# define LANG_IBIBIO 0x69
-# endif
-# ifndef LANG_IGBO
-# define LANG_IGBO 0x70
-# endif
-# ifndef LANG_INDONESIAN
-# define LANG_INDONESIAN 0x21
-# endif
-# ifndef LANG_INUKTITUT
-# define LANG_INUKTITUT 0x5d
-# endif
-# ifndef LANG_KANNADA
-# define LANG_KANNADA 0x4b
-# endif
-# ifndef LANG_KANURI
-# define LANG_KANURI 0x71
-# endif
-# ifndef LANG_KASHMIRI
-# define LANG_KASHMIRI 0x60
-# endif
-# ifndef LANG_KAZAK
-# define LANG_KAZAK 0x3f
-# endif
-# ifndef LANG_KONKANI
-# define LANG_KONKANI 0x57
-# endif
-# ifndef LANG_KYRGYZ
-# define LANG_KYRGYZ 0x40
-# endif
-# ifndef LANG_LAO
-# define LANG_LAO 0x54
-# endif
-# ifndef LANG_LATIN
-# define LANG_LATIN 0x76
-# endif
-# ifndef LANG_LATVIAN
-# define LANG_LATVIAN 0x26
-# endif
-# ifndef LANG_LITHUANIAN
-# define LANG_LITHUANIAN 0x27
-# endif
-# ifndef LANG_MACEDONIAN
-# define LANG_MACEDONIAN 0x2f
-# endif
-# ifndef LANG_MALAY
-# define LANG_MALAY 0x3e
-# endif
-# ifndef LANG_MALAYALAM
-# define LANG_MALAYALAM 0x4c
-# endif
-# ifndef LANG_MALTESE
-# define LANG_MALTESE 0x3a
-# endif
-# ifndef LANG_MANIPURI
-# define LANG_MANIPURI 0x58
-# endif
-# ifndef LANG_MARATHI
-# define LANG_MARATHI 0x4e
-# endif
-# ifndef LANG_MONGOLIAN
-# define LANG_MONGOLIAN 0x50
-# endif
-# ifndef LANG_NEPALI
-# define LANG_NEPALI 0x61
-# endif
-# ifndef LANG_ORIYA
-# define LANG_ORIYA 0x48
-# endif
-# ifndef LANG_OROMO
-# define LANG_OROMO 0x72
-# endif
-# ifndef LANG_PAPIAMENTU
-# define LANG_PAPIAMENTU 0x79
-# endif
-# ifndef LANG_PASHTO
-# define LANG_PASHTO 0x63
-# endif
-# ifndef LANG_PUNJABI
-# define LANG_PUNJABI 0x46
-# endif
-# ifndef LANG_RHAETO_ROMANCE
-# define LANG_RHAETO_ROMANCE 0x17
-# endif
-# ifndef LANG_SAAMI
-# define LANG_SAAMI 0x3b
-# endif
-# ifndef LANG_SANSKRIT
-# define LANG_SANSKRIT 0x4f
-# endif
-# ifndef LANG_SERBIAN
-# define LANG_SERBIAN 0x1a
-# endif
-# ifndef LANG_SINDHI
-# define LANG_SINDHI 0x59
-# endif
-# ifndef LANG_SINHALESE
-# define LANG_SINHALESE 0x5b
-# endif
-# ifndef LANG_SLOVAK
-# define LANG_SLOVAK 0x1b
-# endif
-# ifndef LANG_SOMALI
-# define LANG_SOMALI 0x77
-# endif
-# ifndef LANG_SORBIAN
-# define LANG_SORBIAN 0x2e
-# endif
-# ifndef LANG_SUTU
-# define LANG_SUTU 0x30
-# endif
-# ifndef LANG_SWAHILI
-# define LANG_SWAHILI 0x41
-# endif
-# ifndef LANG_SYRIAC
-# define LANG_SYRIAC 0x5a
-# endif
-# ifndef LANG_TAGALOG
-# define LANG_TAGALOG 0x64
-# endif
-# ifndef LANG_TAJIK
-# define LANG_TAJIK 0x28
-# endif
-# ifndef LANG_TAMAZIGHT
-# define LANG_TAMAZIGHT 0x5f
-# endif
-# ifndef LANG_TAMIL
-# define LANG_TAMIL 0x49
-# endif
-# ifndef LANG_TATAR
-# define LANG_TATAR 0x44
-# endif
-# ifndef LANG_TELUGU
-# define LANG_TELUGU 0x4a
-# endif
-# ifndef LANG_THAI
-# define LANG_THAI 0x1e
-# endif
-# ifndef LANG_TIBETAN
-# define LANG_TIBETAN 0x51
-# endif
-# ifndef LANG_TIGRINYA
-# define LANG_TIGRINYA 0x73
-# endif
-# ifndef LANG_TSONGA
-# define LANG_TSONGA 0x31
-# endif
-# ifndef LANG_TSWANA
-# define LANG_TSWANA 0x32
-# endif
-# ifndef LANG_TURKMEN
-# define LANG_TURKMEN 0x42
-# endif
-# ifndef LANG_UKRAINIAN
-# define LANG_UKRAINIAN 0x22
-# endif
-# ifndef LANG_URDU
-# define LANG_URDU 0x20
-# endif
-# ifndef LANG_UZBEK
-# define LANG_UZBEK 0x43
-# endif
-# ifndef LANG_VENDA
-# define LANG_VENDA 0x33
-# endif
-# ifndef LANG_VIETNAMESE
-# define LANG_VIETNAMESE 0x2a
-# endif
-# ifndef LANG_WELSH
-# define LANG_WELSH 0x52
-# endif
-# ifndef LANG_XHOSA
-# define LANG_XHOSA 0x34
-# endif
-# ifndef LANG_YI
-# define LANG_YI 0x78
-# endif
-# ifndef LANG_YIDDISH
-# define LANG_YIDDISH 0x3d
-# endif
-# ifndef LANG_YORUBA
-# define LANG_YORUBA 0x6a
-# endif
-# ifndef LANG_ZULU
-# define LANG_ZULU 0x35
-# endif
-# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
-# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
-# endif
-# ifndef SUBLANG_ARABIC_IRAQ
-# define SUBLANG_ARABIC_IRAQ 0x02
-# endif
-# ifndef SUBLANG_ARABIC_EGYPT
-# define SUBLANG_ARABIC_EGYPT 0x03
-# endif
-# ifndef SUBLANG_ARABIC_LIBYA
-# define SUBLANG_ARABIC_LIBYA 0x04
-# endif
-# ifndef SUBLANG_ARABIC_ALGERIA
-# define SUBLANG_ARABIC_ALGERIA 0x05
-# endif
-# ifndef SUBLANG_ARABIC_MOROCCO
-# define SUBLANG_ARABIC_MOROCCO 0x06
-# endif
-# ifndef SUBLANG_ARABIC_TUNISIA
-# define SUBLANG_ARABIC_TUNISIA 0x07
-# endif
-# ifndef SUBLANG_ARABIC_OMAN
-# define SUBLANG_ARABIC_OMAN 0x08
-# endif
-# ifndef SUBLANG_ARABIC_YEMEN
-# define SUBLANG_ARABIC_YEMEN 0x09
-# endif
-# ifndef SUBLANG_ARABIC_SYRIA
-# define SUBLANG_ARABIC_SYRIA 0x0a
-# endif
-# ifndef SUBLANG_ARABIC_JORDAN
-# define SUBLANG_ARABIC_JORDAN 0x0b
-# endif
-# ifndef SUBLANG_ARABIC_LEBANON
-# define SUBLANG_ARABIC_LEBANON 0x0c
-# endif
-# ifndef SUBLANG_ARABIC_KUWAIT
-# define SUBLANG_ARABIC_KUWAIT 0x0d
-# endif
-# ifndef SUBLANG_ARABIC_UAE
-# define SUBLANG_ARABIC_UAE 0x0e
-# endif
-# ifndef SUBLANG_ARABIC_BAHRAIN
-# define SUBLANG_ARABIC_BAHRAIN 0x0f
-# endif
-# ifndef SUBLANG_ARABIC_QATAR
-# define SUBLANG_ARABIC_QATAR 0x10
-# endif
-# ifndef SUBLANG_AZERI_LATIN
-# define SUBLANG_AZERI_LATIN 0x01
-# endif
-# ifndef SUBLANG_AZERI_CYRILLIC
-# define SUBLANG_AZERI_CYRILLIC 0x02
-# endif
-# ifndef SUBLANG_BENGALI_INDIA
-# define SUBLANG_BENGALI_INDIA 0x00
-# endif
-# ifndef SUBLANG_BENGALI_BANGLADESH
-# define SUBLANG_BENGALI_BANGLADESH 0x01
-# endif
-# ifndef SUBLANG_CHINESE_MACAU
-# define SUBLANG_CHINESE_MACAU 0x05
-# endif
-# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
-# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
-# endif
-# ifndef SUBLANG_ENGLISH_JAMAICA
-# define SUBLANG_ENGLISH_JAMAICA 0x08
-# endif
-# ifndef SUBLANG_ENGLISH_CARIBBEAN
-# define SUBLANG_ENGLISH_CARIBBEAN 0x09
-# endif
-# ifndef SUBLANG_ENGLISH_BELIZE
-# define SUBLANG_ENGLISH_BELIZE 0x0a
-# endif
-# ifndef SUBLANG_ENGLISH_TRINIDAD
-# define SUBLANG_ENGLISH_TRINIDAD 0x0b
-# endif
-# ifndef SUBLANG_ENGLISH_ZIMBABWE
-# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
-# endif
-# ifndef SUBLANG_ENGLISH_PHILIPPINES
-# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
-# endif
-# ifndef SUBLANG_ENGLISH_INDONESIA
-# define SUBLANG_ENGLISH_INDONESIA 0x0e
-# endif
-# ifndef SUBLANG_ENGLISH_HONGKONG
-# define SUBLANG_ENGLISH_HONGKONG 0x0f
-# endif
-# ifndef SUBLANG_ENGLISH_INDIA
-# define SUBLANG_ENGLISH_INDIA 0x10
-# endif
-# ifndef SUBLANG_ENGLISH_MALAYSIA
-# define SUBLANG_ENGLISH_MALAYSIA 0x11
-# endif
-# ifndef SUBLANG_ENGLISH_SINGAPORE
-# define SUBLANG_ENGLISH_SINGAPORE 0x12
-# endif
-# ifndef SUBLANG_FRENCH_LUXEMBOURG
-# define SUBLANG_FRENCH_LUXEMBOURG 0x05
-# endif
-# ifndef SUBLANG_FRENCH_MONACO
-# define SUBLANG_FRENCH_MONACO 0x06
-# endif
-# ifndef SUBLANG_FRENCH_WESTINDIES
-# define SUBLANG_FRENCH_WESTINDIES 0x07
-# endif
-# ifndef SUBLANG_FRENCH_REUNION
-# define SUBLANG_FRENCH_REUNION 0x08
-# endif
-# ifndef SUBLANG_FRENCH_CONGO
-# define SUBLANG_FRENCH_CONGO 0x09
-# endif
-# ifndef SUBLANG_FRENCH_SENEGAL
-# define SUBLANG_FRENCH_SENEGAL 0x0a
-# endif
-# ifndef SUBLANG_FRENCH_CAMEROON
-# define SUBLANG_FRENCH_CAMEROON 0x0b
-# endif
-# ifndef SUBLANG_FRENCH_COTEDIVOIRE
-# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
-# endif
-# ifndef SUBLANG_FRENCH_MALI
-# define SUBLANG_FRENCH_MALI 0x0d
-# endif
-# ifndef SUBLANG_FRENCH_MOROCCO
-# define SUBLANG_FRENCH_MOROCCO 0x0e
-# endif
-# ifndef SUBLANG_FRENCH_HAITI
-# define SUBLANG_FRENCH_HAITI 0x0f
-# endif
-# ifndef SUBLANG_GERMAN_LUXEMBOURG
-# define SUBLANG_GERMAN_LUXEMBOURG 0x04
-# endif
-# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
-# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
-# endif
-# ifndef SUBLANG_KASHMIRI_INDIA
-# define SUBLANG_KASHMIRI_INDIA 0x02
-# endif
-# ifndef SUBLANG_MALAY_MALAYSIA
-# define SUBLANG_MALAY_MALAYSIA 0x01
-# endif
-# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
-# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
-# endif
-# ifndef SUBLANG_NEPALI_INDIA
-# define SUBLANG_NEPALI_INDIA 0x02
-# endif
-# ifndef SUBLANG_PUNJABI_INDIA
-# define SUBLANG_PUNJABI_INDIA 0x00
-# endif
-# ifndef SUBLANG_PUNJABI_PAKISTAN
-# define SUBLANG_PUNJABI_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_ROMANIAN_ROMANIA
-# define SUBLANG_ROMANIAN_ROMANIA 0x00
-# endif
-# ifndef SUBLANG_ROMANIAN_MOLDOVA
-# define SUBLANG_ROMANIAN_MOLDOVA 0x01
-# endif
-# ifndef SUBLANG_SERBIAN_LATIN
-# define SUBLANG_SERBIAN_LATIN 0x02
-# endif
-# ifndef SUBLANG_SERBIAN_CYRILLIC
-# define SUBLANG_SERBIAN_CYRILLIC 0x03
-# endif
-# ifndef SUBLANG_SINDHI_INDIA
-# define SUBLANG_SINDHI_INDIA 0x00
-# endif
-# ifndef SUBLANG_SINDHI_PAKISTAN
-# define SUBLANG_SINDHI_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_SPANISH_GUATEMALA
-# define SUBLANG_SPANISH_GUATEMALA 0x04
-# endif
-# ifndef SUBLANG_SPANISH_COSTA_RICA
-# define SUBLANG_SPANISH_COSTA_RICA 0x05
-# endif
-# ifndef SUBLANG_SPANISH_PANAMA
-# define SUBLANG_SPANISH_PANAMA 0x06
-# endif
-# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
-# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
-# endif
-# ifndef SUBLANG_SPANISH_VENEZUELA
-# define SUBLANG_SPANISH_VENEZUELA 0x08
-# endif
-# ifndef SUBLANG_SPANISH_COLOMBIA
-# define SUBLANG_SPANISH_COLOMBIA 0x09
-# endif
-# ifndef SUBLANG_SPANISH_PERU
-# define SUBLANG_SPANISH_PERU 0x0a
-# endif
-# ifndef SUBLANG_SPANISH_ARGENTINA
-# define SUBLANG_SPANISH_ARGENTINA 0x0b
-# endif
-# ifndef SUBLANG_SPANISH_ECUADOR
-# define SUBLANG_SPANISH_ECUADOR 0x0c
-# endif
-# ifndef SUBLANG_SPANISH_CHILE
-# define SUBLANG_SPANISH_CHILE 0x0d
-# endif
-# ifndef SUBLANG_SPANISH_URUGUAY
-# define SUBLANG_SPANISH_URUGUAY 0x0e
-# endif
-# ifndef SUBLANG_SPANISH_PARAGUAY
-# define SUBLANG_SPANISH_PARAGUAY 0x0f
-# endif
-# ifndef SUBLANG_SPANISH_BOLIVIA
-# define SUBLANG_SPANISH_BOLIVIA 0x10
-# endif
-# ifndef SUBLANG_SPANISH_EL_SALVADOR
-# define SUBLANG_SPANISH_EL_SALVADOR 0x11
-# endif
-# ifndef SUBLANG_SPANISH_HONDURAS
-# define SUBLANG_SPANISH_HONDURAS 0x12
-# endif
-# ifndef SUBLANG_SPANISH_NICARAGUA
-# define SUBLANG_SPANISH_NICARAGUA 0x13
-# endif
-# ifndef SUBLANG_SPANISH_PUERTO_RICO
-# define SUBLANG_SPANISH_PUERTO_RICO 0x14
-# endif
-# ifndef SUBLANG_SWEDISH_FINLAND
-# define SUBLANG_SWEDISH_FINLAND 0x02
-# endif
-# ifndef SUBLANG_TAMAZIGHT_ARABIC
-# define SUBLANG_TAMAZIGHT_ARABIC 0x01
-# endif
-# ifndef SUBLANG_TAMAZIGHT_LATIN
-# define SUBLANG_TAMAZIGHT_LATIN 0x02
-# endif
-# ifndef SUBLANG_TIGRINYA_ETHIOPIA
-# define SUBLANG_TIGRINYA_ETHIOPIA 0x00
-# endif
-# ifndef SUBLANG_TIGRINYA_ERITREA
-# define SUBLANG_TIGRINYA_ERITREA 0x01
-# endif
-# ifndef SUBLANG_URDU_PAKISTAN
-# define SUBLANG_URDU_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_URDU_INDIA
-# define SUBLANG_URDU_INDIA 0x02
-# endif
-# ifndef SUBLANG_UZBEK_LATIN
-# define SUBLANG_UZBEK_LATIN 0x01
-# endif
-# ifndef SUBLANG_UZBEK_CYRILLIC
-# define SUBLANG_UZBEK_CYRILLIC 0x02
-# endif
-#endif
-
-/* XPG3 defines the result of 'setlocale (category, NULL)' as:
- "Directs 'setlocale()' to query 'category' and return the current
- setting of 'local'."
- However it does not specify the exact format. Neither do SUSV2 and
- ISO C 99. So we can use this feature only on selected systems (e.g.
- those using GNU C Library). */
-#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
-# define HAVE_LOCALE_NULL
-#endif
-
-/* Determine the current locale's name, and canonicalize it into XPG syntax
- language[_territory[.codeset]][@modifier]
- The codeset part in the result is not reliable; the locale_charset()
- should be used for codeset information instead.
- The result must not be freed; it is statically allocated. */
-
-const char *
-_nl_locale_name (int category, const char *categoryname)
-{
- const char *retval;
-
-#ifndef WIN32
-
- /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
- On some systems this can be done by the 'setlocale' function itself. */
-# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
- retval = setlocale (category, NULL);
-# else
- /* Setting of LC_ALL overwrites all other. */
- retval = getenv ("LC_ALL");
- if (retval == NULL || retval[0] == '\0')
- {
- /* Next comes the name of the desired category. */
- retval = getenv (categoryname);
- if (retval == NULL || retval[0] == '\0')
- {
- /* Last possibility is the LANG environment variable. */
- retval = getenv ("LANG");
- if (retval == NULL || retval[0] == '\0')
- /* We use C as the default domain. POSIX says this is
- implementation defined. */
- retval = "C";
- }
- }
-# endif
-
- return retval;
-
-#else /* WIN32 */
-
- /* Return an XPG style locale name language[_territory][@modifier].
- Don't even bother determining the codeset; it's not useful in this
- context, because message catalogs are not specific to a single
- codeset. */
-
- LCID lcid;
- LANGID langid;
- int primary, sub;
-
- /* Let the user override the system settings through environment
- variables, as on POSIX systems. */
- retval = getenv ("LC_ALL");
- if (retval != NULL && retval[0] != '\0')
- return retval;
- retval = getenv (categoryname);
- if (retval != NULL && retval[0] != '\0')
- return retval;
- retval = getenv ("LANG");
- if (retval != NULL && retval[0] != '\0')
- return retval;
-
- /* Use native Win32 API locale ID. */
- lcid = GetThreadLocale ();
-
- /* Strip off the sorting rules, keep only the language part. */
- langid = LANGIDFROMLCID (lcid);
-
- /* Split into language and territory part. */
- primary = PRIMARYLANGID (langid);
- sub = SUBLANGID (langid);
-
- /* Dispatch on language.
- See also http://www.unicode.org/unicode/onlinedat/languages.html .
- For details about languages, see http://www.ethnologue.com/ . */
- switch (primary)
- {
- case LANG_AFRIKAANS: return "af_ZA";
- case LANG_ALBANIAN: return "sq_AL";
- case LANG_AMHARIC: return "am_ET";
- case LANG_ARABIC:
- switch (sub)
- {
- case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
- case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
- case SUBLANG_ARABIC_EGYPT: return "ar_EG";
- case SUBLANG_ARABIC_LIBYA: return "ar_LY";
- case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
- case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
- case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
- case SUBLANG_ARABIC_OMAN: return "ar_OM";
- case SUBLANG_ARABIC_YEMEN: return "ar_YE";
- case SUBLANG_ARABIC_SYRIA: return "ar_SY";
- case SUBLANG_ARABIC_JORDAN: return "ar_JO";
- case SUBLANG_ARABIC_LEBANON: return "ar_LB";
- case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
- case SUBLANG_ARABIC_UAE: return "ar_AE";
- case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
- case SUBLANG_ARABIC_QATAR: return "ar_QA";
- }
- return "ar";
- case LANG_ARMENIAN: return "hy_AM";
- case LANG_ASSAMESE: return "as_IN";
- case LANG_AZERI:
- switch (sub)
- {
- /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
- case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
- case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
- }
- return "az";
- case LANG_BASQUE:
- return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
- case LANG_BELARUSIAN: return "be_BY";
- case LANG_BENGALI:
- switch (sub)
- {
- case SUBLANG_BENGALI_INDIA: return "bn_IN";
- case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
- }
- return "bn";
- case LANG_BULGARIAN: return "bg_BG";
- case LANG_BURMESE: return "my_MM";
- case LANG_CAMBODIAN: return "km_KH";
- case LANG_CATALAN: return "ca_ES";
- case LANG_CHEROKEE: return "chr_US";
- case LANG_CHINESE:
- switch (sub)
- {
- case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
- case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
- case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
- case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
- case SUBLANG_CHINESE_MACAU: return "zh_MO";
- }
- return "zh";
- case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
- * What used to be called Serbo-Croatian
- * should really now be two separate
- * languages because of political reasons.
- * (Says tml, who knows nothing about Serbian
- * or Croatian.)
- * (I can feel those flames coming already.)
- */
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "hr_HR";
- case SUBLANG_SERBIAN_LATIN: return "sr_CS";
- case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
- }
- return "hr";
- case LANG_CZECH: return "cs_CZ";
- case LANG_DANISH: return "da_DK";
- case LANG_DIVEHI: return "dv_MV";
- case LANG_DUTCH:
- switch (sub)
- {
- case SUBLANG_DUTCH: return "nl_NL";
- case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
- }
- return "nl";
- case LANG_EDO: return "bin_NG";
- case LANG_ENGLISH:
- switch (sub)
- {
- /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
- * English was the language spoken in England.
- * Oh well.
- */
- case SUBLANG_ENGLISH_US: return "en_US";
- case SUBLANG_ENGLISH_UK: return "en_GB";
- case SUBLANG_ENGLISH_AUS: return "en_AU";
- case SUBLANG_ENGLISH_CAN: return "en_CA";
- case SUBLANG_ENGLISH_NZ: return "en_NZ";
- case SUBLANG_ENGLISH_EIRE: return "en_IE";
- case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
- case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
- case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
- case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
- case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
- case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
- case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
- case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
- case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
- case SUBLANG_ENGLISH_INDIA: return "en_IN";
- case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
- case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
- }
- return "en";
- case LANG_ESTONIAN: return "et_EE";
- case LANG_FAEROESE: return "fo_FO";
- case LANG_FARSI: return "fa_IR";
- case LANG_FINNISH: return "fi_FI";
- case LANG_FRENCH:
- switch (sub)
- {
- case SUBLANG_FRENCH: return "fr_FR";
- case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
- case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
- case SUBLANG_FRENCH_SWISS: return "fr_CH";
- case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
- case SUBLANG_FRENCH_MONACO: return "fr_MC";
- case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
- case SUBLANG_FRENCH_REUNION: return "fr_RE";
- case SUBLANG_FRENCH_CONGO: return "fr_CG";
- case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
- case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
- case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
- case SUBLANG_FRENCH_MALI: return "fr_ML";
- case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
- case SUBLANG_FRENCH_HAITI: return "fr_HT";
- }
- return "fr";
- case LANG_FRISIAN: return "fy_NL";
- case LANG_FULFULDE:
- /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */
- return "ff_NG";
- case LANG_GAELIC:
- switch (sub)
- {
- case 0x01: /* SCOTTISH */ return "gd_GB";
- case 0x02: /* IRISH */ return "ga_IE";
- }
- return "C";
- case LANG_GALICIAN: return "gl_ES";
- case LANG_GEORGIAN: return "ka_GE";
- case LANG_GERMAN:
- switch (sub)
- {
- case SUBLANG_GERMAN: return "de_DE";
- case SUBLANG_GERMAN_SWISS: return "de_CH";
- case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
- case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
- case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
- }
- return "de";
- case LANG_GREEK: return "el_GR";
- case LANG_GUARANI: return "gn_PY";
- case LANG_GUJARATI: return "gu_IN";
- case LANG_HAUSA: return "ha_NG";
- case LANG_HAWAIIAN:
- /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
- or Hawaii Creole English ("cpe_US", 600000 speakers)? */
- return "cpe_US";
- case LANG_HEBREW: return "he_IL";
- case LANG_HINDI: return "hi_IN";
- case LANG_HUNGARIAN: return "hu_HU";
- case LANG_IBIBIO: return "nic_NG";
- case LANG_ICELANDIC: return "is_IS";
- case LANG_IGBO: return "ig_NG";
- case LANG_INDONESIAN: return "id_ID";
- case LANG_INUKTITUT: return "iu_CA";
- case LANG_ITALIAN:
- switch (sub)
- {
- case SUBLANG_ITALIAN: return "it_IT";
- case SUBLANG_ITALIAN_SWISS: return "it_CH";
- }
- return "it";
- case LANG_JAPANESE: return "ja_JP";
- case LANG_KANNADA: return "kn_IN";
- case LANG_KANURI: return "kr_NG";
- case LANG_KASHMIRI:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "ks_PK";
- case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
- }
- return "ks";
- case LANG_KAZAK: return "kk_KZ";
- case LANG_KONKANI:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "kok_IN";
- case LANG_KOREAN: return "ko_KR";
- case LANG_KYRGYZ: return "ky_KG";
- case LANG_LAO: return "lo_LA";
- case LANG_LATIN: return "la_VA";
- case LANG_LATVIAN: return "lv_LV";
- case LANG_LITHUANIAN: return "lt_LT";
- case LANG_MACEDONIAN: return "mk_MK";
- case LANG_MALAY:
- switch (sub)
- {
- case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
- case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
- }
- return "ms";
- case LANG_MALAYALAM: return "ml_IN";
- case LANG_MALTESE: return "mt_MT";
- case LANG_MANIPURI:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "mni_IN";
- case LANG_MARATHI: return "mr_IN";
- case LANG_MONGOLIAN:
- return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
- case LANG_NEPALI:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "ne_NP";
- case SUBLANG_NEPALI_INDIA: return "ne_IN";
- }
- return "ne";
- case LANG_NORWEGIAN:
- switch (sub)
- {
- case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO";
- case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
- }
- return "no";
- case LANG_ORIYA: return "or_IN";
- case LANG_OROMO: return "om_ET";
- case LANG_PAPIAMENTU: return "pap_AN";
- case LANG_PASHTO:
- return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
- case LANG_POLISH: return "pl_PL";
- case LANG_PORTUGUESE:
- switch (sub)
- {
- case SUBLANG_PORTUGUESE: return "pt_PT";
- /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
- Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
- case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
- }
- return "pt";
- case LANG_PUNJABI:
- switch (sub)
- {
- case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
- case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
- }
- return "pa";
- case LANG_RHAETO_ROMANCE: return "rm_CH";
- case LANG_ROMANIAN:
- switch (sub)
- {
- case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
- case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
- }
- return "ro";
- case LANG_RUSSIAN:
- return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
- case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
- case LANG_SANSKRIT: return "sa_IN";
- case LANG_SINDHI:
- switch (sub)
- {
- case SUBLANG_SINDHI_INDIA: return "sd_IN";
- case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
- }
- return "sd";
- case LANG_SINHALESE: return "si_LK";
- case LANG_SLOVAK: return "sk_SK";
- case LANG_SLOVENIAN: return "sl_SI";
- case LANG_SOMALI: return "so_SO";
- case LANG_SORBIAN:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "wen_DE";
- case LANG_SPANISH:
- switch (sub)
- {
- case SUBLANG_SPANISH: return "es_ES";
- case SUBLANG_SPANISH_MEXICAN: return "es_MX";
- case SUBLANG_SPANISH_MODERN:
- return "es_ES@modern"; /* not seen on Unix */
- case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
- case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
- case SUBLANG_SPANISH_PANAMA: return "es_PA";
- case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
- case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
- case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
- case SUBLANG_SPANISH_PERU: return "es_PE";
- case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
- case SUBLANG_SPANISH_ECUADOR: return "es_EC";
- case SUBLANG_SPANISH_CHILE: return "es_CL";
- case SUBLANG_SPANISH_URUGUAY: return "es_UY";
- case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
- case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
- case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
- case SUBLANG_SPANISH_HONDURAS: return "es_HN";
- case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
- case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
- }
- return "es";
- case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
- case LANG_SWAHILI: return "sw_KE";
- case LANG_SWEDISH:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "sv_SE";
- case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
- }
- return "sv";
- case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
- case LANG_TAGALOG: return "tl_PH";
- case LANG_TAJIK: return "tg_TJ";
- case LANG_TAMAZIGHT:
- switch (sub)
- {
- /* FIXME: Adjust this when Tamazight locales appear on Unix. */
- case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
- case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
- }
- return "ber_MA";
- case LANG_TAMIL:
- return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
- case LANG_TATAR: return "tt_RU";
- case LANG_TELUGU: return "te_IN";
- case LANG_THAI: return "th_TH";
- case LANG_TIBETAN: return "bo_CN";
- case LANG_TIGRINYA:
- switch (sub)
- {
- case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
- case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
- }
- return "ti";
- case LANG_TSONGA: return "ts_ZA";
- case LANG_TSWANA: return "tn_BW";
- case LANG_TURKISH: return "tr_TR";
- case LANG_TURKMEN: return "tk_TM";
- case LANG_UKRAINIAN: return "uk_UA";
- case LANG_URDU:
- switch (sub)
- {
- case SUBLANG_URDU_PAKISTAN: return "ur_PK";
- case SUBLANG_URDU_INDIA: return "ur_IN";
- }
- return "ur";
- case LANG_UZBEK:
- switch (sub)
- {
- case SUBLANG_UZBEK_LATIN: return "uz_UZ";
- case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
- }
- return "uz";
- case LANG_VENDA: return "ve_ZA";
- case LANG_VIETNAMESE: return "vi_VN";
- case LANG_WELSH: return "cy_GB";
- case LANG_XHOSA: return "xh_ZA";
- case LANG_YI: return "sit_CN";
- case LANG_YIDDISH: return "yi_IL";
- case LANG_YORUBA: return "yo_NG";
- case LANG_ZULU: return "zu_ZA";
- default: return "C";
- }
-
-#endif
-}
diff --git a/intl/log.c b/intl/log.c
deleted file mode 100644
index 89f82dfd..00000000
--- a/intl/log.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Log file output.
- Copyright (C) 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Written by Bruno Haible <bruno@clisp.org>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Print an ASCII string with quotes and escape sequences where needed. */
-static void
-print_escaped (FILE *stream, const char *str)
-{
- putc ('"', stream);
- for (; *str != '\0'; str++)
- if (*str == '\n')
- {
- fputs ("\\n\"", stream);
- if (str[1] == '\0')
- return;
- fputs ("\n\"", stream);
- }
- else
- {
- if (*str == '"' || *str == '\\')
- putc ('\\', stream);
- putc (*str, stream);
- }
- putc ('"', stream);
-}
-
-/* Add to the log file an entry denoting a failed translation. */
-void
-_nl_log_untranslated (const char *logfilename, const char *domainname,
- const char *msgid1, const char *msgid2, int plural)
-{
- static char *last_logfilename = NULL;
- static FILE *last_logfile = NULL;
- FILE *logfile;
-
- /* Can we reuse the last opened logfile? */
- if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0)
- {
- /* Close the last used logfile. */
- if (last_logfilename != NULL)
- {
- if (last_logfile != NULL)
- {
- fclose (last_logfile);
- last_logfile = NULL;
- }
- free (last_logfilename);
- last_logfilename = NULL;
- }
- /* Open the logfile. */
- last_logfilename = (char *) malloc (strlen (logfilename) + 1);
- if (last_logfilename == NULL)
- return;
- strcpy (last_logfilename, logfilename);
- last_logfile = fopen (logfilename, "a");
- if (last_logfile == NULL)
- return;
- }
- logfile = last_logfile;
-
- fprintf (logfile, "domain ");
- print_escaped (logfile, domainname);
- fprintf (logfile, "\nmsgid ");
- print_escaped (logfile, msgid1);
- if (plural)
- {
- fprintf (logfile, "\nmsgid_plural ");
- print_escaped (logfile, msgid2);
- fprintf (logfile, "\nmsgstr[0] \"\"\n");
- }
- else
- fprintf (logfile, "\nmsgstr \"\"\n");
- putc ('\n', logfile);
-}
diff --git a/intl/ngettext.c b/intl/ngettext.c
deleted file mode 100644
index a33529c2..00000000
--- a/intl/ngettext.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Implementation of ngettext(3) function.
- Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-#include <locale.h>
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define NGETTEXT __ngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define NGETTEXT libintl_ngettext
-# define DCNGETTEXT libintl_dcngettext
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-char *
-NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__ngettext, ngettext);
-#endif
diff --git a/intl/os2compat.c b/intl/os2compat.c
deleted file mode 100644
index d041de2a..00000000
--- a/intl/os2compat.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* OS/2 compatibility functions.
- Copyright (C) 2001-2002 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#define OS2_AWARE
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/param.h>
-
-/* A version of getenv() that works from DLLs */
-extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue);
-
-char *
-_nl_getenv (const char *name)
-{
- unsigned char *value;
- if (DosScanEnv (name, &value))
- return NULL;
- else
- return value;
-}
-
-/* A fixed size buffer. */
-char libintl_nl_default_dirname[MAXPATHLEN+1];
-
-char *_nlos2_libdir = NULL;
-char *_nlos2_localealiaspath = NULL;
-char *_nlos2_localedir = NULL;
-
-static __attribute__((constructor)) void
-nlos2_initialize ()
-{
- char *root = getenv ("UNIXROOT");
- char *gnulocaledir = getenv ("GNULOCALEDIR");
-
- _nlos2_libdir = gnulocaledir;
- if (!_nlos2_libdir)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1);
- memcpy (_nlos2_libdir, root, sl);
- memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1);
- }
- else
- _nlos2_libdir = LIBDIR;
- }
-
- _nlos2_localealiaspath = gnulocaledir;
- if (!_nlos2_localealiaspath)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1);
- memcpy (_nlos2_localealiaspath, root, sl);
- memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1);
- }
- else
- _nlos2_localealiaspath = LOCALE_ALIAS_PATH;
- }
-
- _nlos2_localedir = gnulocaledir;
- if (!_nlos2_localedir)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1);
- memcpy (_nlos2_localedir, root, sl);
- memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1);
- }
- else
- _nlos2_localedir = LOCALEDIR;
- }
-
- if (strlen (_nlos2_localedir) <= MAXPATHLEN)
- strcpy (libintl_nl_default_dirname, _nlos2_localedir);
-}
diff --git a/intl/os2compat.h b/intl/os2compat.h
deleted file mode 100644
index a18d582c..00000000
--- a/intl/os2compat.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* OS/2 compatibility defines.
- This file is intended to be included from config.h
- Copyright (C) 2001-2002 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* When included from os2compat.h we need all the original definitions */
-#ifndef OS2_AWARE
-
-#undef LIBDIR
-#define LIBDIR _nlos2_libdir
-extern char *_nlos2_libdir;
-
-#undef LOCALEDIR
-#define LOCALEDIR _nlos2_localedir
-extern char *_nlos2_localedir;
-
-#undef LOCALE_ALIAS_PATH
-#define LOCALE_ALIAS_PATH _nlos2_localealiaspath
-extern char *_nlos2_localealiaspath;
-
-#endif
-
-#undef HAVE_STRCASECMP
-#define HAVE_STRCASECMP 1
-#define strcasecmp stricmp
-#define strncasecmp strnicmp
-
-/* We have our own getenv() which works even if library is compiled as DLL */
-#define getenv _nl_getenv
-
-/* Older versions of gettext used -1 as the value of LC_MESSAGES */
-#define LC_MESSAGES_COMPAT (-1)
diff --git a/intl/osdep.c b/intl/osdep.c
deleted file mode 100644
index d2d8575e..00000000
--- a/intl/osdep.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* OS dependent parts of libintl.
- Copyright (C) 2001-2002 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#if defined __EMX__
-# include "os2compat.c"
-#else
-/* Avoid AIX compiler warning. */
-typedef int dummy;
-#endif
diff --git a/intl/plural-exp.c b/intl/plural-exp.c
deleted file mode 100644
index 1873be90..00000000
--- a/intl/plural-exp.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "plural-exp.h"
-
-#if (defined __GNUC__ && !defined __APPLE_CC__) \
- || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-
-/* These structs are the constant expression for the germanic plural
- form determination. It represents the expression "n != 1". */
-static const struct expression plvar =
-{
- .nargs = 0,
- .operation = var,
-};
-static const struct expression plone =
-{
- .nargs = 0,
- .operation = num,
- .val =
- {
- .num = 1
- }
-};
-struct expression GERMANIC_PLURAL =
-{
- .nargs = 2,
- .operation = not_equal,
- .val =
- {
- .args =
- {
- [0] = (struct expression *) &plvar,
- [1] = (struct expression *) &plone
- }
- }
-};
-
-# define INIT_GERMANIC_PLURAL()
-
-#else
-
-/* For compilers without support for ISO C 99 struct/union initializers:
- Initialization at run-time. */
-
-static struct expression plvar;
-static struct expression plone;
-struct expression GERMANIC_PLURAL;
-
-static void
-init_germanic_plural ()
-{
- if (plone.val.num == 0)
- {
- plvar.nargs = 0;
- plvar.operation = var;
-
- plone.nargs = 0;
- plone.operation = num;
- plone.val.num = 1;
-
- GERMANIC_PLURAL.nargs = 2;
- GERMANIC_PLURAL.operation = not_equal;
- GERMANIC_PLURAL.val.args[0] = &plvar;
- GERMANIC_PLURAL.val.args[1] = &plone;
- }
-}
-
-# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
-
-#endif
-
-void
-internal_function
-EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp,
- unsigned long int *npluralsp)
-{
- if (nullentry != NULL)
- {
- const char *plural;
- const char *nplurals;
-
- plural = strstr (nullentry, "plural=");
- nplurals = strstr (nullentry, "nplurals=");
- if (plural == NULL || nplurals == NULL)
- goto no_plural;
- else
- {
- char *endp;
- unsigned long int n;
- struct parse_args args;
-
- /* First get the number. */
- nplurals += 9;
- while (*nplurals != '\0' && isspace ((unsigned char) *nplurals))
- ++nplurals;
- if (!(*nplurals >= '0' && *nplurals <= '9'))
- goto no_plural;
-#if defined HAVE_STRTOUL || defined _LIBC
- n = strtoul (nplurals, &endp, 10);
-#else
- for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
- n = n * 10 + (*endp - '0');
-#endif
- if (nplurals == endp)
- goto no_plural;
- *npluralsp = n;
-
- /* Due to the restrictions bison imposes onto the interface of the
- scanner function we have to put the input string and the result
- passed up from the parser into the same structure which address
- is passed down to the parser. */
- plural += 7;
- args.cp = plural;
- if (PLURAL_PARSE (&args) != 0)
- goto no_plural;
- *pluralp = args.res;
- }
- }
- else
- {
- /* By default we are using the Germanic form: singular form only
- for `one', the plural form otherwise. Yes, this is also what
- English is using since English is a Germanic language. */
- no_plural:
- INIT_GERMANIC_PLURAL ();
- *pluralp = &GERMANIC_PLURAL;
- *npluralsp = 2;
- }
-}
diff --git a/intl/plural-exp.h b/intl/plural-exp.h
deleted file mode 100644
index f5401847..00000000
--- a/intl/plural-exp.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Expression parsing and evaluation for plural form selection.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _PLURAL_EXP_H
-#define _PLURAL_EXP_H
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-
-/* This is the representation of the expressions to determine the
- plural form. */
-struct expression
-{
- int nargs; /* Number of arguments. */
- enum operator
- {
- /* Without arguments: */
- var, /* The variable "n". */
- num, /* Decimal number. */
- /* Unary operators: */
- lnot, /* Logical NOT. */
- /* Binary operators: */
- mult, /* Multiplication. */
- divide, /* Division. */
- module, /* Modulo operation. */
- plus, /* Addition. */
- minus, /* Subtraction. */
- less_than, /* Comparison. */
- greater_than, /* Comparison. */
- less_or_equal, /* Comparison. */
- greater_or_equal, /* Comparison. */
- equal, /* Comparison for equality. */
- not_equal, /* Comparison for inequality. */
- land, /* Logical AND. */
- lor, /* Logical OR. */
- /* Ternary operators: */
- qmop /* Question mark operator. */
- } operation;
- union
- {
- unsigned long int num; /* Number value for `num'. */
- struct expression *args[3]; /* Up to three arguments. */
- } val;
-};
-
-/* This is the data structure to pass information to the parser and get
- the result in a thread-safe way. */
-struct parse_args
-{
- const char *cp;
- struct expression *res;
-};
-
-
-/* Names for the libintl functions are a problem. This source code is used
- 1. in the GNU C Library library,
- 2. in the GNU libintl library,
- 3. in the GNU gettext tools.
- The function names in each situation must be different, to allow for
- binary incompatible changes in 'struct expression'. Furthermore,
- 1. in the GNU C Library library, the names have a __ prefix,
- 2.+3. in the GNU libintl library and in the GNU gettext tools, the names
- must follow ANSI C and not start with __.
- So we have to distinguish the three cases. */
-#ifdef _LIBC
-# define FREE_EXPRESSION __gettext_free_exp
-# define PLURAL_PARSE __gettextparse
-# define GERMANIC_PLURAL __gettext_germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural
-#elif defined (IN_LIBINTL)
-# define FREE_EXPRESSION libintl_gettext_free_exp
-# define PLURAL_PARSE libintl_gettextparse
-# define GERMANIC_PLURAL libintl_gettext_germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural
-#else
-# define FREE_EXPRESSION free_plural_expression
-# define PLURAL_PARSE parse_plural_expression
-# define GERMANIC_PLURAL germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression
-#endif
-
-extern void FREE_EXPRESSION (struct expression *exp)
- internal_function;
-extern int PLURAL_PARSE (void *arg);
-extern struct expression GERMANIC_PLURAL attribute_hidden;
-extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
- struct expression **pluralp,
- unsigned long int *npluralsp)
- internal_function;
-
-#if !defined (_LIBC) && !defined (IN_LIBINTL)
-extern unsigned long int plural_eval (struct expression *pexp,
- unsigned long int n);
-#endif
-
-#endif /* _PLURAL_EXP_H */
diff --git a/intl/plural.c b/intl/plural.c
deleted file mode 100644
index 22193985..00000000
--- a/intl/plural.c
+++ /dev/null
@@ -1,1490 +0,0 @@
-/* A Bison parser, made from plural.y
- by GNU bison 1.35. */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-#define yyparse __gettextparse
-#define yylex __gettextlex
-#define yyerror __gettexterror
-#define yylval __gettextlval
-#define yychar __gettextchar
-#define yydebug __gettextdebug
-#define yynerrs __gettextnerrs
-# define EQUOP2 257
-# define CMPOP2 258
-# define ADDOP2 259
-# define MULOP2 260
-# define NUMBER 261
-
-#line 1 "plural.y"
-
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* The main function generated by the parser is called __gettextparse,
- but we want it to be called PLURAL_PARSE. */
-#ifndef _LIBC
-# define __gettextparse PLURAL_PARSE
-#endif
-
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-#define YYPARSE_PARAM arg
-
-#line 49 "plural.y"
-#ifndef YYSTYPE
-typedef union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-#line 55 "plural.y"
-
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static inline struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static inline struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static inline struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-
-
-#define YYFINAL 27
-#define YYFLAG -32768
-#define YYNTBASE 16
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
-
-/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
-static const char yytranslate[] =
-{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 10, 2, 2, 2, 2, 5, 2,
- 14, 15, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 12, 2,
- 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 13, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 6, 7, 8,
- 9, 11
-};
-
-#if YYDEBUG
-static const short yyprhs[] =
-{
- 0, 0, 2, 8, 12, 16, 20, 24, 28, 32,
- 35, 37, 39
-};
-static const short yyrhs[] =
-{
- 17, 0, 17, 3, 17, 12, 17, 0, 17, 4,
- 17, 0, 17, 5, 17, 0, 17, 6, 17, 0,
- 17, 7, 17, 0, 17, 8, 17, 0, 17, 9,
- 17, 0, 10, 17, 0, 13, 0, 11, 0, 14,
- 17, 15, 0
-};
-
-#endif
-
-#if YYDEBUG
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const short yyrline[] =
-{
- 0, 150, 158, 162, 166, 170, 174, 178, 182, 186,
- 190, 194, 199
-};
-#endif
-
-
-#if (YYDEBUG) || defined YYERROR_VERBOSE
-
-/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-static const char *const yytname[] =
-{
- "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2",
- "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'",
- "start", "exp", 0
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const short yyr1[] =
-{
- 0, 16, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const short yyr2[] =
-{
- 0, 1, 5, 3, 3, 3, 3, 3, 3, 2,
- 1, 1, 3
-};
-
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
- doesn't specify something else to do. Zero means the default is an
- error. */
-static const short yydefact[] =
-{
- 0, 0, 11, 10, 0, 1, 9, 0, 0, 0,
- 0, 0, 0, 0, 0, 12, 0, 3, 4, 5,
- 6, 7, 8, 0, 2, 0, 0, 0
-};
-
-static const short yydefgoto[] =
-{
- 25, 5
-};
-
-static const short yypact[] =
-{
- -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9,
- -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16,
- 26, -3,-32768, -9, 34, 21, 53,-32768
-};
-
-static const short yypgoto[] =
-{
- -32768, -1
-};
-
-
-#define YYLAST 53
-
-
-static const short yytable[] =
-{
- 6, 1, 2, 7, 3, 4, 14, 16, 17, 18,
- 19, 20, 21, 22, 8, 9, 10, 11, 12, 13,
- 14, 26, 24, 12, 13, 14, 15, 8, 9, 10,
- 11, 12, 13, 14, 13, 14, 23, 8, 9, 10,
- 11, 12, 13, 14, 10, 11, 12, 13, 14, 11,
- 12, 13, 14, 27
-};
-
-static const short yycheck[] =
-{
- 1, 10, 11, 4, 13, 14, 9, 8, 9, 10,
- 11, 12, 13, 14, 3, 4, 5, 6, 7, 8,
- 9, 0, 23, 7, 8, 9, 15, 3, 4, 5,
- 6, 7, 8, 9, 8, 9, 12, 3, 4, 5,
- 6, 7, 8, 9, 5, 6, 7, 8, 9, 6,
- 7, 8, 9, 0
-};
-#define YYPURE 1
-
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/local/share/bison/bison.simple"
-
-/* Skeleton output parser for bison,
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 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 2, or (at your option)
- any later version.
-
- This program 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, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* This is the parser code that is written into each bison parser when
- the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# else
-# ifndef YYSTACK_USE_ALLOCA
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
-# endif
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
-
-
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- short yyss;
- YYSTYPE yyvs;
-# if YYLSP_NEEDED
- YYLTYPE yyls;
-# endif
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# if YYLSP_NEEDED
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAX)
-# else
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
-# endif
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run).
-
- When YYLLOC_DEFAULT is run, CURRENT is set the location of the
- first token. By default, to implement support for ranges, extend
- its range to the last symbol. */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#if YYPURE
-# if YYLSP_NEEDED
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval, &yylloc)
-# endif
-# else /* !YYLSP_NEEDED */
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval)
-# endif
-# endif /* !YYLSP_NEEDED */
-#else /* !YYPURE */
-# define YYLEX yylex ()
-#endif /* !YYPURE */
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-#endif /* !YYDEBUG */
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-#ifdef YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-# else
-yystrlen (yystr)
- const char *yystr;
-# endif
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-# if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-# else
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-#endif
-
-#line 315 "/usr/local/share/bison/bison.simple"
-
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL
-# else
-# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
-int yyparse (void);
-# endif
-#endif
-
-/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
-
-#define YY_DECL_NON_LSP_VARIABLES \
-/* The lookahead symbol. */ \
-int yychar; \
- \
-/* The semantic value of the lookahead symbol. */ \
-YYSTYPE yylval; \
- \
-/* Number of parse errors so far. */ \
-int yynerrs;
-
-#if YYLSP_NEEDED
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES \
- \
-/* Location data for the lookahead symbol. */ \
-YYLTYPE yylloc;
-#else
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES
-#endif
-
-
-/* If nonreentrant, generate the variables here. */
-
-#if !YYPURE
-YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
-int
-yyparse (YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
-{
- /* If reentrant, generate the variables here. */
-#if YYPURE
- YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-
-#if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-#endif
-
-#if YYLSP_NEEDED
-# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-#if YYLSP_NEEDED
- YYLTYPE yyloc;
-#endif
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-#if YYLSP_NEEDED
- yylsp = yyls;
-#endif
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks.
- */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. */
-# if YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yyls1, yysize * sizeof (*yylsp),
- &yystacksize);
- yyls = yyls1;
-# else
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-# endif
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
-# else
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-
- {
- short *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyoverflowlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-# if YYLSP_NEEDED
- YYSTACK_RELOCATE (yyls);
-# endif
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-#if YYLSP_NEEDED
- yylsp = yyls + yysize - 1;
-#endif
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yychar1 = YYTRANSLATE (yychar);
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- YYFPRINTF (stderr, "Next token is %d (%s",
- yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise
- meaning of a token, for further debugging info. */
-# ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-# endif
- YYFPRINTF (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets YYVAL to the semantic value of
- the lookahead token. This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-#if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
-#endif
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables which
- are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
- switch (yyn) {
-
-case 1:
-#line 151 "plural.y"
-{
- if (yyvsp[0].exp == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = yyvsp[0].exp;
- }
- break;
-case 2:
-#line 159 "plural.y"
-{
- yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 3:
-#line 163 "plural.y"
-{
- yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 4:
-#line 167 "plural.y"
-{
- yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 5:
-#line 171 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 6:
-#line 175 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 7:
-#line 179 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 8:
-#line 183 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 9:
-#line 187 "plural.y"
-{
- yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
- }
- break;
-case 10:
-#line 191 "plural.y"
-{
- yyval.exp = new_exp_0 (var);
- }
- break;
-case 11:
-#line 195 "plural.y"
-{
- if ((yyval.exp = new_exp_0 (num)) != NULL)
- yyval.exp->val.num = yyvsp[0].num;
- }
- break;
-case 12:
-#line 200 "plural.y"
-{
- yyval.exp = yyvsp[-1].exp;
- }
- break;
-}
-
-#line 705 "/usr/local/share/bison/bison.simple"
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-#if YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-#if YYLSP_NEEDED
- *++yylsp = yyloc;
-#endif
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
- yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* defined (YYERROR_VERBOSE) */
- yyerror ("parse error");
- }
- goto yyerrlab1;
-
-
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
-yyerrlab1:
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-
-/*-------------------------------------------------------------------.
-| yyerrdefault -- current state does not do anything special for the |
-| error token. |
-`-------------------------------------------------------------------*/
-yyerrdefault:
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
-
- /* If its default is to accept any token, ok. Otherwise pop it. */
- yyn = yydefact[yystate];
- if (yyn)
- goto yydefault;
-#endif
-
-
-/*---------------------------------------------------------------.
-| yyerrpop -- pop the current state because it cannot handle the |
-| error token |
-`---------------------------------------------------------------*/
-yyerrpop:
- if (yyssp == yyss)
- YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#if YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "Error: state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
-/*--------------.
-| yyerrhandle. |
-`--------------*/
-yyerrhandle:
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-/*---------------------------------------------.
-| yyoverflowab -- parser overflow comes here. |
-`---------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
- yyresult = 2;
- /* Fall through. */
-
-yyreturn:
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
- return yyresult;
-}
-#line 205 "plural.y"
-
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/intl/plural.y b/intl/plural.y
deleted file mode 100644
index fe791120..00000000
--- a/intl/plural.y
+++ /dev/null
@@ -1,381 +0,0 @@
-%{
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* The main function generated by the parser is called __gettextparse,
- but we want it to be called PLURAL_PARSE. */
-#ifndef _LIBC
-# define __gettextparse PLURAL_PARSE
-#endif
-
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-#define YYPARSE_PARAM arg
-%}
-%pure_parser
-%expect 7
-
-%union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-}
-
-%{
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static inline struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static inline struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static inline struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-%}
-
-/* This declares that all operators have the same associativity and the
- precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
- There is no unary minus and no bitwise operators.
- Operators with the same syntactic behaviour have been merged into a single
- token, to save space in the array generated by bison. */
-%right '?' /* ? */
-%left '|' /* || */
-%left '&' /* && */
-%left EQUOP2 /* == != */
-%left CMPOP2 /* < > <= >= */
-%left ADDOP2 /* + - */
-%left MULOP2 /* * / % */
-%right '!' /* ! */
-
-%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
-%token <num> NUMBER
-%type <exp> exp
-
-%%
-
-start: exp
- {
- if ($1 == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = $1;
- }
- ;
-
-exp: exp '?' exp ':' exp
- {
- $$ = new_exp_3 (qmop, $1, $3, $5);
- }
- | exp '|' exp
- {
- $$ = new_exp_2 (lor, $1, $3);
- }
- | exp '&' exp
- {
- $$ = new_exp_2 (land, $1, $3);
- }
- | exp EQUOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp CMPOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp ADDOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp MULOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | '!' exp
- {
- $$ = new_exp_1 (lnot, $2);
- }
- | 'n'
- {
- $$ = new_exp_0 (var);
- }
- | NUMBER
- {
- if (($$ = new_exp_0 (num)) != NULL)
- $$->val.num = $1;
- }
- | '(' exp ')'
- {
- $$ = $2;
- }
- ;
-
-%%
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/intl/printf-args.c b/intl/printf-args.c
deleted file mode 100644
index f9759014..00000000
--- a/intl/printf-args.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#include "printf-args.h"
-
-#ifdef STATIC
-STATIC
-#endif
-int
-printf_fetchargs (va_list args, arguments *a)
-{
- size_t i;
- argument *ap;
-
- for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
- switch (ap->type)
- {
- case TYPE_SCHAR:
- ap->a.a_schar = va_arg (args, /*signed char*/ int);
- break;
- case TYPE_UCHAR:
- ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
- break;
- case TYPE_SHORT:
- ap->a.a_short = va_arg (args, /*short*/ int);
- break;
- case TYPE_USHORT:
- ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
- break;
- case TYPE_INT:
- ap->a.a_int = va_arg (args, int);
- break;
- case TYPE_UINT:
- ap->a.a_uint = va_arg (args, unsigned int);
- break;
- case TYPE_LONGINT:
- ap->a.a_longint = va_arg (args, long int);
- break;
- case TYPE_ULONGINT:
- ap->a.a_ulongint = va_arg (args, unsigned long int);
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- ap->a.a_longlongint = va_arg (args, long long int);
- break;
- case TYPE_ULONGLONGINT:
- ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
- break;
-#endif
- case TYPE_DOUBLE:
- ap->a.a_double = va_arg (args, double);
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- ap->a.a_longdouble = va_arg (args, long double);
- break;
-#endif
- case TYPE_CHAR:
- ap->a.a_char = va_arg (args, int);
- break;
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
- ap->a.a_wide_char = va_arg (args, wint_t);
- break;
-#endif
- case TYPE_STRING:
- ap->a.a_string = va_arg (args, const char *);
- break;
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
- ap->a.a_wide_string = va_arg (args, const wchar_t *);
- break;
-#endif
- case TYPE_POINTER:
- ap->a.a_pointer = va_arg (args, void *);
- break;
- case TYPE_COUNT_SCHAR_POINTER:
- ap->a.a_count_schar_pointer = va_arg (args, signed char *);
- break;
- case TYPE_COUNT_SHORT_POINTER:
- ap->a.a_count_short_pointer = va_arg (args, short *);
- break;
- case TYPE_COUNT_INT_POINTER:
- ap->a.a_count_int_pointer = va_arg (args, int *);
- break;
- case TYPE_COUNT_LONGINT_POINTER:
- ap->a.a_count_longint_pointer = va_arg (args, long int *);
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_COUNT_LONGLONGINT_POINTER:
- ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
- break;
-#endif
- default:
- /* Unknown type. */
- return -1;
- }
- return 0;
-}
diff --git a/intl/printf-args.h b/intl/printf-args.h
deleted file mode 100644
index 625b8036..00000000
--- a/intl/printf-args.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _PRINTF_ARGS_H
-#define _PRINTF_ARGS_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get wchar_t. */
-#ifdef HAVE_WCHAR_T
-# include <stddef.h>
-#endif
-
-/* Get wint_t. */
-#ifdef HAVE_WINT_T
-# include <wchar.h>
-#endif
-
-/* Get va_list. */
-#include <stdarg.h>
-
-
-/* Argument types */
-typedef enum
-{
- TYPE_NONE,
- TYPE_SCHAR,
- TYPE_UCHAR,
- TYPE_SHORT,
- TYPE_USHORT,
- TYPE_INT,
- TYPE_UINT,
- TYPE_LONGINT,
- TYPE_ULONGINT,
-#ifdef HAVE_LONG_LONG
- TYPE_LONGLONGINT,
- TYPE_ULONGLONGINT,
-#endif
- TYPE_DOUBLE,
-#ifdef HAVE_LONG_DOUBLE
- TYPE_LONGDOUBLE,
-#endif
- TYPE_CHAR,
-#ifdef HAVE_WINT_T
- TYPE_WIDE_CHAR,
-#endif
- TYPE_STRING,
-#ifdef HAVE_WCHAR_T
- TYPE_WIDE_STRING,
-#endif
- TYPE_POINTER,
- TYPE_COUNT_SCHAR_POINTER,
- TYPE_COUNT_SHORT_POINTER,
- TYPE_COUNT_INT_POINTER,
- TYPE_COUNT_LONGINT_POINTER
-#ifdef HAVE_LONG_LONG
-, TYPE_COUNT_LONGLONGINT_POINTER
-#endif
-} arg_type;
-
-/* Polymorphic argument */
-typedef struct
-{
- arg_type type;
- union
- {
- signed char a_schar;
- unsigned char a_uchar;
- short a_short;
- unsigned short a_ushort;
- int a_int;
- unsigned int a_uint;
- long int a_longint;
- unsigned long int a_ulongint;
-#ifdef HAVE_LONG_LONG
- long long int a_longlongint;
- unsigned long long int a_ulonglongint;
-#endif
- float a_float;
- double a_double;
-#ifdef HAVE_LONG_DOUBLE
- long double a_longdouble;
-#endif
- int a_char;
-#ifdef HAVE_WINT_T
- wint_t a_wide_char;
-#endif
- const char* a_string;
-#ifdef HAVE_WCHAR_T
- const wchar_t* a_wide_string;
-#endif
- void* a_pointer;
- signed char * a_count_schar_pointer;
- short * a_count_short_pointer;
- int * a_count_int_pointer;
- long int * a_count_longint_pointer;
-#ifdef HAVE_LONG_LONG
- long long int * a_count_longlongint_pointer;
-#endif
- }
- a;
-}
-argument;
-
-typedef struct
-{
- size_t count;
- argument *arg;
-}
-arguments;
-
-
-/* Fetch the arguments, putting them into a. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int printf_fetchargs (va_list args, arguments *a);
-
-#endif /* _PRINTF_ARGS_H */
diff --git a/intl/printf-parse.c b/intl/printf-parse.c
deleted file mode 100644
index 5550a53e..00000000
--- a/intl/printf-parse.c
+++ /dev/null
@@ -1,535 +0,0 @@
-/* Formatted output to strings.
- Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#if WIDE_CHAR_VERSION
-# include "wprintf-parse.h"
-#else
-# include "printf-parse.h"
-#endif
-
-/* Get size_t, NULL. */
-#include <stddef.h>
-
-/* Get intmax_t. */
-#if HAVE_STDINT_H_WITH_UINTMAX
-# include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-# include <inttypes.h>
-#endif
-
-/* malloc(), realloc(), free(). */
-#include <stdlib.h>
-
-/* Checked size_t computations. */
-#include "xsize.h"
-
-#if WIDE_CHAR_VERSION
-# define PRINTF_PARSE wprintf_parse
-# define CHAR_T wchar_t
-# define DIRECTIVE wchar_t_directive
-# define DIRECTIVES wchar_t_directives
-#else
-# define PRINTF_PARSE printf_parse
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-#endif
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
-{
- const CHAR_T *cp = format; /* pointer into format */
- size_t arg_posn = 0; /* number of regular arguments consumed */
- size_t d_allocated; /* allocated elements of d->dir */
- size_t a_allocated; /* allocated elements of a->arg */
- size_t max_width_length = 0;
- size_t max_precision_length = 0;
-
- d->count = 0;
- d_allocated = 1;
- d->dir = malloc (d_allocated * sizeof (DIRECTIVE));
- if (d->dir == NULL)
- /* Out of memory. */
- return -1;
-
- a->count = 0;
- a_allocated = 0;
- a->arg = NULL;
-
-#define REGISTER_ARG(_index_,_type_) \
- { \
- size_t n = (_index_); \
- if (n >= a_allocated) \
- { \
- size_t memory_size; \
- argument *memory; \
- \
- a_allocated = xtimes (a_allocated, 2); \
- if (a_allocated <= n) \
- a_allocated = xsum (n, 1); \
- memory_size = xtimes (a_allocated, sizeof (argument)); \
- if (size_overflow_p (memory_size)) \
- /* Overflow, would lead to out of memory. */ \
- goto error; \
- memory = (a->arg \
- ? realloc (a->arg, memory_size) \
- : malloc (memory_size)); \
- if (memory == NULL) \
- /* Out of memory. */ \
- goto error; \
- a->arg = memory; \
- } \
- while (a->count <= n) \
- a->arg[a->count++].type = TYPE_NONE; \
- if (a->arg[n].type == TYPE_NONE) \
- a->arg[n].type = (_type_); \
- else if (a->arg[n].type != (_type_)) \
- /* Ambiguous type for positional argument. */ \
- goto error; \
- }
-
- while (*cp != '\0')
- {
- CHAR_T c = *cp++;
- if (c == '%')
- {
- size_t arg_index = ARG_NONE;
- DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */
-
- /* Initialize the next directive. */
- dp->dir_start = cp - 1;
- dp->flags = 0;
- dp->width_start = NULL;
- dp->width_end = NULL;
- dp->width_arg_index = ARG_NONE;
- dp->precision_start = NULL;
- dp->precision_end = NULL;
- dp->precision_arg_index = ARG_NONE;
- dp->arg_index = ARG_NONE;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory later. */
- goto error;
- arg_index = n - 1;
- cp = np + 1;
- }
- }
-
- /* Read the flags. */
- for (;;)
- {
- if (*cp == '\'')
- {
- dp->flags |= FLAG_GROUP;
- cp++;
- }
- else if (*cp == '-')
- {
- dp->flags |= FLAG_LEFT;
- cp++;
- }
- else if (*cp == '+')
- {
- dp->flags |= FLAG_SHOWSIGN;
- cp++;
- }
- else if (*cp == ' ')
- {
- dp->flags |= FLAG_SPACE;
- cp++;
- }
- else if (*cp == '#')
- {
- dp->flags |= FLAG_ALT;
- cp++;
- }
- else if (*cp == '0')
- {
- dp->flags |= FLAG_ZERO;
- cp++;
- }
- else
- break;
- }
-
- /* Parse the field width. */
- if (*cp == '*')
- {
- dp->width_start = cp;
- cp++;
- dp->width_end = cp;
- if (max_width_length < 1)
- max_width_length = 1;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory later. */
- goto error;
- dp->width_arg_index = n - 1;
- cp = np + 1;
- }
- }
- if (dp->width_arg_index == ARG_NONE)
- {
- dp->width_arg_index = arg_posn++;
- if (dp->width_arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->width_arg_index, TYPE_INT);
- }
- else if (*cp >= '0' && *cp <= '9')
- {
- size_t width_length;
-
- dp->width_start = cp;
- for (; *cp >= '0' && *cp <= '9'; cp++)
- ;
- dp->width_end = cp;
- width_length = dp->width_end - dp->width_start;
- if (max_width_length < width_length)
- max_width_length = width_length;
- }
-
- /* Parse the precision. */
- if (*cp == '.')
- {
- cp++;
- if (*cp == '*')
- {
- dp->precision_start = cp - 1;
- cp++;
- dp->precision_end = cp;
- if (max_precision_length < 2)
- max_precision_length = 2;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory
- later. */
- goto error;
- dp->precision_arg_index = n - 1;
- cp = np + 1;
- }
- }
- if (dp->precision_arg_index == ARG_NONE)
- {
- dp->precision_arg_index = arg_posn++;
- if (dp->precision_arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
- }
- else
- {
- size_t precision_length;
-
- dp->precision_start = cp - 1;
- for (; *cp >= '0' && *cp <= '9'; cp++)
- ;
- dp->precision_end = cp;
- precision_length = dp->precision_end - dp->precision_start;
- if (max_precision_length < precision_length)
- max_precision_length = precision_length;
- }
- }
-
- {
- arg_type type;
-
- /* Parse argument type/size specifiers. */
- {
- int flags = 0;
-
- for (;;)
- {
- if (*cp == 'h')
- {
- flags |= (1 << (flags & 1));
- cp++;
- }
- else if (*cp == 'L')
- {
- flags |= 4;
- cp++;
- }
- else if (*cp == 'l')
- {
- flags += 8;
- cp++;
- }
-#ifdef HAVE_INTMAX_T
- else if (*cp == 'j')
- {
- if (sizeof (intmax_t) > sizeof (long))
- {
- /* intmax_t = long long */
- flags += 16;
- }
- else if (sizeof (intmax_t) > sizeof (int))
- {
- /* intmax_t = long */
- flags += 8;
- }
- cp++;
- }
-#endif
- else if (*cp == 'z' || *cp == 'Z')
- {
- /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
- because the warning facility in gcc-2.95.2 understands
- only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */
- if (sizeof (size_t) > sizeof (long))
- {
- /* size_t = long long */
- flags += 16;
- }
- else if (sizeof (size_t) > sizeof (int))
- {
- /* size_t = long */
- flags += 8;
- }
- cp++;
- }
- else if (*cp == 't')
- {
- if (sizeof (ptrdiff_t) > sizeof (long))
- {
- /* ptrdiff_t = long long */
- flags += 16;
- }
- else if (sizeof (ptrdiff_t) > sizeof (int))
- {
- /* ptrdiff_t = long */
- flags += 8;
- }
- cp++;
- }
- else
- break;
- }
-
- /* Read the conversion character. */
- c = *cp++;
- switch (c)
- {
- case 'd': case 'i':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_LONGLONGINT;
- else
-#endif
- if (flags >= 8)
- type = TYPE_LONGINT;
- else if (flags & 2)
- type = TYPE_SCHAR;
- else if (flags & 1)
- type = TYPE_SHORT;
- else
- type = TYPE_INT;
- break;
- case 'o': case 'u': case 'x': case 'X':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_ULONGLONGINT;
- else
-#endif
- if (flags >= 8)
- type = TYPE_ULONGINT;
- else if (flags & 2)
- type = TYPE_UCHAR;
- else if (flags & 1)
- type = TYPE_USHORT;
- else
- type = TYPE_UINT;
- break;
- case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
- case 'a': case 'A':
-#ifdef HAVE_LONG_DOUBLE
- if (flags >= 16 || (flags & 4))
- type = TYPE_LONGDOUBLE;
- else
-#endif
- type = TYPE_DOUBLE;
- break;
- case 'c':
- if (flags >= 8)
-#ifdef HAVE_WINT_T
- type = TYPE_WIDE_CHAR;
-#else
- goto error;
-#endif
- else
- type = TYPE_CHAR;
- break;
-#ifdef HAVE_WINT_T
- case 'C':
- type = TYPE_WIDE_CHAR;
- c = 'c';
- break;
-#endif
- case 's':
- if (flags >= 8)
-#ifdef HAVE_WCHAR_T
- type = TYPE_WIDE_STRING;
-#else
- goto error;
-#endif
- else
- type = TYPE_STRING;
- break;
-#ifdef HAVE_WCHAR_T
- case 'S':
- type = TYPE_WIDE_STRING;
- c = 's';
- break;
-#endif
- case 'p':
- type = TYPE_POINTER;
- break;
- case 'n':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_COUNT_LONGLONGINT_POINTER;
- else
-#endif
- if (flags >= 8)
- type = TYPE_COUNT_LONGINT_POINTER;
- else if (flags & 2)
- type = TYPE_COUNT_SCHAR_POINTER;
- else if (flags & 1)
- type = TYPE_COUNT_SHORT_POINTER;
- else
- type = TYPE_COUNT_INT_POINTER;
- break;
- case '%':
- type = TYPE_NONE;
- break;
- default:
- /* Unknown conversion character. */
- goto error;
- }
- }
-
- if (type != TYPE_NONE)
- {
- dp->arg_index = arg_index;
- if (dp->arg_index == ARG_NONE)
- {
- dp->arg_index = arg_posn++;
- if (dp->arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->arg_index, type);
- }
- dp->conversion = c;
- dp->dir_end = cp;
- }
-
- d->count++;
- if (d->count >= d_allocated)
- {
- size_t memory_size;
- DIRECTIVE *memory;
-
- d_allocated = xtimes (d_allocated, 2);
- memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
- if (size_overflow_p (memory_size))
- /* Overflow, would lead to out of memory. */
- goto error;
- memory = realloc (d->dir, memory_size);
- if (memory == NULL)
- /* Out of memory. */
- goto error;
- d->dir = memory;
- }
- }
- }
- d->dir[d->count].dir_start = cp;
-
- d->max_width_length = max_width_length;
- d->max_precision_length = max_precision_length;
- return 0;
-
-error:
- free (a->arg);
- free (d->dir);
- return -1;
-}
-
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T
-#undef PRINTF_PARSE
diff --git a/intl/printf-parse.h b/intl/printf-parse.h
deleted file mode 100644
index e7853389..00000000
--- a/intl/printf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Parse printf format string.
- Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _PRINTF_PARSE_H
-#define _PRINTF_PARSE_H
-
-#include "printf-args.h"
-
-
-/* Flags */
-#define FLAG_GROUP 1 /* ' flag */
-#define FLAG_LEFT 2 /* - flag */
-#define FLAG_SHOWSIGN 4 /* + flag */
-#define FLAG_SPACE 8 /* space flag */
-#define FLAG_ALT 16 /* # flag */
-#define FLAG_ZERO 32
-
-/* arg_index value indicating that no argument is consumed. */
-#define ARG_NONE (~(size_t)0)
-
-/* A parsed directive. */
-typedef struct
-{
- const char* dir_start;
- const char* dir_end;
- int flags;
- const char* width_start;
- const char* width_end;
- size_t width_arg_index;
- const char* precision_start;
- const char* precision_end;
- size_t precision_arg_index;
- char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
- size_t arg_index;
-}
-char_directive;
-
-/* A parsed format string. */
-typedef struct
-{
- size_t count;
- char_directive *dir;
- size_t max_width_length;
- size_t max_precision_length;
-}
-char_directives;
-
-
-/* Parses the format string. Fills in the number N of directives, and fills
- in directives[0], ..., directives[N-1], and sets directives[N].dir_start
- to the end of the format string. Also fills in the arg_type fields of the
- arguments and the needed count of arguments. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int printf_parse (const char *format, char_directives *d, arguments *a);
-
-#endif /* _PRINTF_PARSE_H */
diff --git a/intl/printf.c b/intl/printf.c
deleted file mode 100644
index 5e112b69..00000000
--- a/intl/printf.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/* Formatted output to strings, using POSIX/XSI format strings with positions.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <stdio.h>
-
-#if !HAVE_POSIX_PRINTF
-
-#include <stdlib.h>
-#include <string.h>
-
-/* When building a DLL, we must export some functions. Note that because
- the functions are only defined for binary backward compatibility, we
- don't need to use __declspec(dllimport) in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define DLL_EXPORTED __declspec(dllexport)
-#else
-# define DLL_EXPORTED
-#endif
-
-#define STATIC static
-
-/* Define auxiliary functions declared in "printf-args.h". */
-#include "printf-args.c"
-
-/* Define auxiliary functions declared in "printf-parse.h". */
-#include "printf-parse.c"
-
-/* Define functions declared in "vasnprintf.h". */
-#define vasnprintf libintl_vasnprintf
-#include "vasnprintf.c"
-#if 0 /* not needed */
-#define asnprintf libintl_asnprintf
-#include "asnprintf.c"
-#endif
-
-DLL_EXPORTED
-int
-libintl_vfprintf (FILE *stream, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return vfprintf (stream, format, args);
- else
- {
- size_t length;
- char *result = libintl_vasnprintf (NULL, &length, format, args);
- int retval = -1;
- if (result != NULL)
- {
- if (fwrite (result, 1, length, stream) == length)
- retval = length;
- free (result);
- }
- return retval;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_fprintf (FILE *stream, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vfprintf (stream, format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vprintf (const char *format, va_list args)
-{
- return libintl_vfprintf (stdout, format, args);
-}
-
-DLL_EXPORTED
-int
-libintl_printf (const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vprintf (format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vsprintf (char *resultbuf, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return vsprintf (resultbuf, format, args);
- else
- {
- size_t length = (size_t) ~0 / (4 * sizeof (char));
- char *result = libintl_vasnprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_sprintf (char *resultbuf, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vsprintf (resultbuf, format, args);
- va_end (args);
- return retval;
-}
-
-#if HAVE_SNPRINTF
-
-# if HAVE_DECL__SNPRINTF
- /* Windows. */
-# define system_vsnprintf _vsnprintf
-# else
- /* Unix. */
-# define system_vsnprintf vsnprintf
-# endif
-
-DLL_EXPORTED
-int
-libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return system_vsnprintf (resultbuf, length, format, args);
- else
- {
- size_t maxlength = length;
- char *result = libintl_vasnprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- if (maxlength > 0)
- {
- if (length < maxlength)
- abort ();
- memcpy (resultbuf, result, maxlength - 1);
- resultbuf[maxlength - 1] = '\0';
- }
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_snprintf (char *resultbuf, size_t length, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vsnprintf (resultbuf, length, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#if HAVE_ASPRINTF
-
-DLL_EXPORTED
-int
-libintl_vasprintf (char **resultp, const char *format, va_list args)
-{
- size_t length;
- char *result = libintl_vasnprintf (NULL, &length, format, args);
- if (result == NULL)
- return -1;
- *resultp = result;
- return length;
-}
-
-DLL_EXPORTED
-int
-libintl_asprintf (char **resultp, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vasprintf (resultp, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#if HAVE_FWPRINTF
-
-#include <wchar.h>
-
-#define WIDE_CHAR_VERSION 1
-
-/* Define auxiliary functions declared in "wprintf-parse.h". */
-#include "printf-parse.c"
-
-/* Define functions declared in "vasnprintf.h". */
-#define vasnwprintf libintl_vasnwprintf
-#include "vasnprintf.c"
-#if 0 /* not needed */
-#define asnwprintf libintl_asnwprintf
-#include "asnprintf.c"
-#endif
-
-# if HAVE_DECL__SNWPRINTF
- /* Windows. */
-# define system_vswprintf _vsnwprintf
-# else
- /* Unix. */
-# define system_vswprintf vswprintf
-# endif
-
-DLL_EXPORTED
-int
-libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args)
-{
- if (wcschr (format, '$') == NULL)
- return vfwprintf (stream, format, args);
- else
- {
- size_t length;
- wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args);
- int retval = -1;
- if (result != NULL)
- {
- size_t i;
- for (i = 0; i < length; i++)
- if (fputwc (result[i], stream) == WEOF)
- break;
- if (i == length)
- retval = length;
- free (result);
- }
- return retval;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_fwprintf (FILE *stream, const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vfwprintf (stream, format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vwprintf (const wchar_t *format, va_list args)
-{
- return libintl_vfwprintf (stdout, format, args);
-}
-
-DLL_EXPORTED
-int
-libintl_wprintf (const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vwprintf (format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args)
-{
- if (wcschr (format, '$') == NULL)
- return system_vswprintf (resultbuf, length, format, args);
- else
- {
- size_t maxlength = length;
- wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- if (maxlength > 0)
- {
- if (length < maxlength)
- abort ();
- memcpy (resultbuf, result, (maxlength - 1) * sizeof (wchar_t));
- resultbuf[maxlength - 1] = 0;
- }
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vswprintf (resultbuf, length, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#endif
diff --git a/intl/ref-add.sin b/intl/ref-add.sin
deleted file mode 100644
index 3678c289..00000000
--- a/intl/ref-add.sin
+++ /dev/null
@@ -1,31 +0,0 @@
-# Add this package to a list of references stored in a text file.
-#
-# Copyright (C) 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- ta
- :a
- s/ @PACKAGE@ / @PACKAGE@ /
- tb
- s/ $/ @PACKAGE@ /
- :b
- s/^/# Packages using this file:/
-}
diff --git a/intl/ref-del.sin b/intl/ref-del.sin
deleted file mode 100644
index 0c12d8e9..00000000
--- a/intl/ref-del.sin
+++ /dev/null
@@ -1,26 +0,0 @@
-# Remove this package from a list of references stored in a text file.
-#
-# Copyright (C) 2000 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Library General Public License as published
-# by the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- s/ @PACKAGE@ / /
- s/^/# Packages using this file:/
-}
diff --git a/intl/relocatable.c b/intl/relocatable.c
deleted file mode 100644
index a2e5aa7a..00000000
--- a/intl/relocatable.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/* Provide relocatable packages.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-
-/* Tell glibc's <stdio.h> to provide a prototype for getline().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* Specification. */
-#include "relocatable.h"
-
-#if ENABLE_RELOCATABLE
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NO_XMALLOC
-# define xmalloc malloc
-#else
-# include "xalloc.h"
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-
-#if DEPENDS_ON_LIBCHARSET
-# include <libcharset.h>
-#endif
-#if DEPENDS_ON_LIBICONV && HAVE_ICONV
-# include <iconv.h>
-#endif
-#if DEPENDS_ON_LIBINTL && ENABLE_NLS
-# include <libintl.h>
-#endif
-
-/* Faked cheap 'bool'. */
-#undef bool
-#undef false
-#undef true
-#define bool int
-#define false 0
-#define true 1
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_PATH_WITH_DIR(P) \
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-# define FILESYSTEM_PREFIX_LEN(P) 0
-#endif
-
-/* Original installation prefix. */
-static char *orig_prefix;
-static size_t orig_prefix_len;
-/* Current installation prefix. */
-static char *curr_prefix;
-static size_t curr_prefix_len;
-/* These prefixes do not end in a slash. Anything that will be concatenated
- to them must start with a slash. */
-
-/* Sets the original and the current installation prefix of this module.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-static void
-set_this_relocation_prefix (const char *orig_prefix_arg,
- const char *curr_prefix_arg)
-{
- if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
- /* Optimization: if orig_prefix and curr_prefix are equal, the
- relocation is a nop. */
- && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
- {
- /* Duplicate the argument strings. */
- char *memory;
-
- orig_prefix_len = strlen (orig_prefix_arg);
- curr_prefix_len = strlen (curr_prefix_arg);
- memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
-#ifdef NO_XMALLOC
- if (memory != NULL)
-#endif
- {
- memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
- orig_prefix = memory;
- memory += orig_prefix_len + 1;
- memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
- curr_prefix = memory;
- return;
- }
- }
- orig_prefix = NULL;
- curr_prefix = NULL;
- /* Don't worry about wasted memory here - this function is usually only
- called once. */
-}
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-void
-set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
-{
- set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-
- /* Now notify all dependent libraries. */
-#if DEPENDS_ON_LIBCHARSET
- libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
- libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix
- libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-}
-
-#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-
-/* Convenience function:
- Computes the current installation prefix, based on the original
- installation prefix, the original installation directory of a particular
- file, and the current pathname of this file. Returns NULL upon failure. */
-#ifdef IN_LIBRARY
-#define compute_curr_prefix local_compute_curr_prefix
-static
-#endif
-const char *
-compute_curr_prefix (const char *orig_installprefix,
- const char *orig_installdir,
- const char *curr_pathname)
-{
- const char *curr_installdir;
- const char *rel_installdir;
-
- if (curr_pathname == NULL)
- return NULL;
-
- /* Determine the relative installation directory, relative to the prefix.
- This is simply the difference between orig_installprefix and
- orig_installdir. */
- if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
- != 0)
- /* Shouldn't happen - nothing should be installed outside $(prefix). */
- return NULL;
- rel_installdir = orig_installdir + strlen (orig_installprefix);
-
- /* Determine the current installation directory. */
- {
- const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname);
- const char *p = curr_pathname + strlen (curr_pathname);
- char *q;
-
- while (p > p_base)
- {
- p--;
- if (ISSLASH (*p))
- break;
- }
-
- q = (char *) xmalloc (p - curr_pathname + 1);
-#ifdef NO_XMALLOC
- if (q == NULL)
- return NULL;
-#endif
- memcpy (q, curr_pathname, p - curr_pathname);
- q[p - curr_pathname] = '\0';
- curr_installdir = q;
- }
-
- /* Compute the current installation prefix by removing the trailing
- rel_installdir from it. */
- {
- const char *rp = rel_installdir + strlen (rel_installdir);
- const char *cp = curr_installdir + strlen (curr_installdir);
- const char *cp_base =
- curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir);
-
- while (rp > rel_installdir && cp > cp_base)
- {
- bool same = false;
- const char *rpi = rp;
- const char *cpi = cp;
-
- while (rpi > rel_installdir && cpi > cp_base)
- {
- rpi--;
- cpi--;
- if (ISSLASH (*rpi) || ISSLASH (*cpi))
- {
- if (ISSLASH (*rpi) && ISSLASH (*cpi))
- same = true;
- break;
- }
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS - case insignificant filesystem */
- if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
- != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
- break;
-#else
- if (*rpi != *cpi)
- break;
-#endif
- }
- if (!same)
- break;
- /* The last pathname component was the same. opi and cpi now point
- to the slash before it. */
- rp = rpi;
- cp = cpi;
- }
-
- if (rp > rel_installdir)
- /* Unexpected: The curr_installdir does not end with rel_installdir. */
- return NULL;
-
- {
- size_t curr_prefix_len = cp - curr_installdir;
- char *curr_prefix;
-
- curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
-#ifdef NO_XMALLOC
- if (curr_prefix == NULL)
- return NULL;
-#endif
- memcpy (curr_prefix, curr_installdir, curr_prefix_len);
- curr_prefix[curr_prefix_len] = '\0';
-
- return curr_prefix;
- }
- }
-}
-
-#endif /* !IN_LIBRARY || PIC */
-
-#if defined PIC && defined INSTALLDIR
-
-/* Full pathname of shared library, or NULL. */
-static char *shared_library_fullname;
-
-#if defined _WIN32 || defined __WIN32__
-
-/* Determine the full pathname of the shared library when it is loaded. */
-
-BOOL WINAPI
-DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
-{
- (void) reserved;
-
- if (event == DLL_PROCESS_ATTACH)
- {
- /* The DLL is being loaded into an application's address range. */
- static char location[MAX_PATH];
-
- if (!GetModuleFileName (module_handle, location, sizeof (location)))
- /* Shouldn't happen. */
- return FALSE;
-
- if (!IS_PATH_WITH_DIR (location))
- /* Shouldn't happen. */
- return FALSE;
-
- shared_library_fullname = strdup (location);
- }
-
- return TRUE;
-}
-
-#else /* Unix */
-
-static void
-find_shared_library_fullname ()
-{
-#if defined __linux__ && __GLIBC__ >= 2
- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
- fp = fopen ("/proc/self/maps", "r");
- if (fp)
- {
- unsigned long address = (unsigned long) &find_shared_library_fullname;
- for (;;)
- {
- unsigned long start, end;
- int c;
-
- if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
- break;
- if (address >= start && address <= end - 1)
- {
- /* Found it. Now see if this line contains a filename. */
- while (c = getc (fp), c != EOF && c != '\n' && c != '/')
- continue;
- if (c == '/')
- {
- size_t size;
- int len;
-
- ungetc (c, fp);
- shared_library_fullname = NULL; size = 0;
- len = getline (&shared_library_fullname, &size, fp);
- if (len >= 0)
- {
- /* Success: filled shared_library_fullname. */
- if (len > 0 && shared_library_fullname[len - 1] == '\n')
- shared_library_fullname[len - 1] = '\0';
- }
- }
- break;
- }
- while (c = getc (fp), c != EOF && c != '\n')
- continue;
- }
- fclose (fp);
- }
-#endif
-}
-
-#endif /* WIN32 / Unix */
-
-/* Return the full pathname of the current shared library.
- Return NULL if unknown.
- Guaranteed to work only on Linux and Woe32. */
-static char *
-get_shared_library_fullname ()
-{
-#if !(defined _WIN32 || defined __WIN32__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
- find_shared_library_fullname ();
- tried_find_shared_library_fullname = true;
- }
-#endif
- return shared_library_fullname;
-}
-
-#endif /* PIC */
-
-/* Returns the pathname, relocated according to the current installation
- directory. */
-const char *
-relocate (const char *pathname)
-{
-#if defined PIC && defined INSTALLDIR
- static int initialized;
-
- /* Initialization code for a shared library. */
- if (!initialized)
- {
- /* At this point, orig_prefix and curr_prefix likely have already been
- set through the main program's set_program_name_and_installdir
- function. This is sufficient in the case that the library has
- initially been installed in the same orig_prefix. But we can do
- better, to also cover the cases that 1. it has been installed
- in a different prefix before being moved to orig_prefix and (later)
- to curr_prefix, 2. unlike the program, it has not moved away from
- orig_prefix. */
- const char *orig_installprefix = INSTALLPREFIX;
- const char *orig_installdir = INSTALLDIR;
- const char *curr_prefix_better;
-
- curr_prefix_better =
- compute_curr_prefix (orig_installprefix, orig_installdir,
- get_shared_library_fullname ());
- if (curr_prefix_better == NULL)
- curr_prefix_better = curr_prefix;
-
- set_relocation_prefix (orig_installprefix, curr_prefix_better);
-
- initialized = 1;
- }
-#endif
-
- /* Note: It is not necessary to perform case insensitive comparison here,
- even for DOS-like filesystems, because the pathname argument was
- typically created from the same Makefile variable as orig_prefix came
- from. */
- if (orig_prefix != NULL && curr_prefix != NULL
- && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
- {
- if (pathname[orig_prefix_len] == '\0')
- /* pathname equals orig_prefix. */
- return curr_prefix;
- if (ISSLASH (pathname[orig_prefix_len]))
- {
- /* pathname starts with orig_prefix. */
- const char *pathname_tail = &pathname[orig_prefix_len];
- char *result =
- (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
-
-#ifdef NO_XMALLOC
- if (result != NULL)
-#endif
- {
- memcpy (result, curr_prefix, curr_prefix_len);
- strcpy (result + curr_prefix_len, pathname_tail);
- return result;
- }
- }
- }
- /* Nothing to relocate. */
- return pathname;
-}
-
-#endif
diff --git a/intl/relocatable.h b/intl/relocatable.h
deleted file mode 100644
index 614e64e2..00000000
--- a/intl/relocatable.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Provide relocatable packages.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _RELOCATABLE_H
-#define _RELOCATABLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* This can be enabled through the configure --enable-relocatable option. */
-#if ENABLE_RELOCATABLE
-
-/* When building a DLL, we must export some functions. Note that because
- this is a private .h file, we don't need to use __declspec(dllimport)
- in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
-#else
-# define RELOCATABLE_DLL_EXPORTED
-#endif
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-extern RELOCATABLE_DLL_EXPORTED void
- set_relocation_prefix (const char *orig_prefix,
- const char *curr_prefix);
-
-/* Returns the pathname, relocated according to the current installation
- directory. */
-extern const char * relocate (const char *pathname);
-
-/* Memory management: relocate() leaks memory, because it has to construct
- a fresh pathname. If this is a problem because your program calls
- relocate() frequently, think about caching the result. */
-
-/* Convenience function:
- Computes the current installation prefix, based on the original
- installation prefix, the original installation directory of a particular
- file, and the current pathname of this file. Returns NULL upon failure. */
-extern const char * compute_curr_prefix (const char *orig_installprefix,
- const char *orig_installdir,
- const char *curr_pathname);
-
-#else
-
-/* By default, we use the hardwired pathnames. */
-#define relocate(pathname) (pathname)
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RELOCATABLE_H */
diff --git a/intl/textdomain.c b/intl/textdomain.c
deleted file mode 100644
index 2bf62407..00000000
--- a/intl/textdomain.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Implementation of the textdomain(3) function.
- Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain libintl_nl_default_default_domain
-# define _nl_current_default_domain libintl_nl_current_default_domain
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Name of the default text domain. */
-extern const char _nl_default_default_domain[] attribute_hidden;
-
-/* Default text domain in which entries for gettext(3) are to be found. */
-extern const char *_nl_current_default_domain attribute_hidden;
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define TEXTDOMAIN __textdomain
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define TEXTDOMAIN libintl_textdomain
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-char *
-TEXTDOMAIN (const char *domainname)
-{
- char *new_domain;
- char *old_domain;
-
- /* A NULL pointer requests the current setting. */
- if (domainname == NULL)
- return (char *) _nl_current_default_domain;
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- old_domain = (char *) _nl_current_default_domain;
-
- /* If domain name is the null string set to default domain "messages". */
- if (domainname[0] == '\0'
- || strcmp (domainname, _nl_default_default_domain) == 0)
- {
- _nl_current_default_domain = _nl_default_default_domain;
- new_domain = (char *) _nl_current_default_domain;
- }
- else if (strcmp (domainname, old_domain) == 0)
- /* This can happen and people will use it to signal that some
- environment variable changed. */
- new_domain = old_domain;
- else
- {
- /* If the following malloc fails `_nl_current_default_domain'
- will be NULL. This value will be returned and so signals we
- are out of core. */
-#if defined _LIBC || defined HAVE_STRDUP
- new_domain = strdup (domainname);
-#else
- size_t len = strlen (domainname) + 1;
- new_domain = (char *) malloc (len);
- if (new_domain != NULL)
- memcpy (new_domain, domainname, len);
-#endif
-
- if (new_domain != NULL)
- _nl_current_default_domain = new_domain;
- }
-
- /* We use this possibility to signal a change of the loaded catalogs
- since this is most likely the case and there is no other easy we
- to do it. Do it only when the call was successful. */
- if (new_domain != NULL)
- {
- ++_nl_msg_cat_cntr;
-
- if (old_domain != new_domain && old_domain != _nl_default_default_domain)
- free (old_domain);
- }
-
- __libc_rwlock_unlock (_nl_state_lock);
-
- return new_domain;
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__textdomain, textdomain);
-#endif
diff --git a/intl/vasnprintf.c b/intl/vasnprintf.c
deleted file mode 100644
index 76658d78..00000000
--- a/intl/vasnprintf.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/* vsprintf with automatic memory allocation.
- Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#ifndef IN_LIBINTL
-# include <alloca.h>
-#endif
-
-/* Specification. */
-#if WIDE_CHAR_VERSION
-# include "vasnwprintf.h"
-#else
-# include "vasnprintf.h"
-#endif
-
-#include <stdio.h> /* snprintf(), sprintf() */
-#include <stdlib.h> /* abort(), malloc(), realloc(), free() */
-#include <string.h> /* memcpy(), strlen() */
-#include <errno.h> /* errno */
-#include <limits.h> /* CHAR_BIT */
-#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
-#if WIDE_CHAR_VERSION
-# include "wprintf-parse.h"
-#else
-# include "printf-parse.h"
-#endif
-
-/* Checked size_t computations. */
-#include "xsize.h"
-
-#ifdef HAVE_WCHAR_T
-# ifdef HAVE_WCSLEN
-# define local_wcslen wcslen
-# else
- /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
- a dependency towards this library, here is a local substitute.
- Define this substitute only once, even if this file is included
- twice in the same compilation unit. */
-# ifndef local_wcslen_defined
-# define local_wcslen_defined 1
-static size_t
-local_wcslen (const wchar_t *s)
-{
- const wchar_t *ptr;
-
- for (ptr = s; *ptr != (wchar_t) 0; ptr++)
- ;
- return ptr - s;
-}
-# endif
-# endif
-#endif
-
-#if WIDE_CHAR_VERSION
-# define VASNPRINTF vasnwprintf
-# define CHAR_T wchar_t
-# define DIRECTIVE wchar_t_directive
-# define DIRECTIVES wchar_t_directives
-# define PRINTF_PARSE wprintf_parse
-# define USE_SNPRINTF 1
-# if HAVE_DECL__SNWPRINTF
- /* On Windows, the function swprintf() has a different signature than
- on Unix; we use the _snwprintf() function instead. */
-# define SNPRINTF _snwprintf
-# else
- /* Unix. */
-# define SNPRINTF swprintf
-# endif
-#else
-# define VASNPRINTF vasnprintf
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-# define PRINTF_PARSE printf_parse
-# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF)
-# if HAVE_DECL__SNPRINTF
- /* Windows. */
-# define SNPRINTF _snprintf
-# else
- /* Unix. */
-# define SNPRINTF snprintf
-# endif
-#endif
-
-CHAR_T *
-VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args)
-{
- DIRECTIVES d;
- arguments a;
-
- if (PRINTF_PARSE (format, &d, &a) < 0)
- {
- errno = EINVAL;
- return NULL;
- }
-
-#define CLEANUP() \
- free (d.dir); \
- if (a.arg) \
- free (a.arg);
-
- if (printf_fetchargs (args, &a) < 0)
- {
- CLEANUP ();
- errno = EINVAL;
- return NULL;
- }
-
- {
- size_t buf_neededlength;
- CHAR_T *buf;
- CHAR_T *buf_malloced;
- const CHAR_T *cp;
- size_t i;
- DIRECTIVE *dp;
- /* Output string accumulator. */
- CHAR_T *result;
- size_t allocated;
- size_t length;
-
- /* Allocate a small buffer that will hold a directive passed to
- sprintf or snprintf. */
- buf_neededlength =
- xsum4 (7, d.max_width_length, d.max_precision_length, 6);
-#if HAVE_ALLOCA
- if (buf_neededlength < 4000 / sizeof (CHAR_T))
- {
- buf = (CHAR_T *) alloca (buf_neededlength * sizeof (CHAR_T));
- buf_malloced = NULL;
- }
- else
-#endif
- {
- size_t buf_memsize = xtimes (buf_neededlength, sizeof (CHAR_T));
- if (size_overflow_p (buf_memsize))
- goto out_of_memory_1;
- buf = (CHAR_T *) malloc (buf_memsize);
- if (buf == NULL)
- goto out_of_memory_1;
- buf_malloced = buf;
- }
-
- if (resultbuf != NULL)
- {
- result = resultbuf;
- allocated = *lengthp;
- }
- else
- {
- result = NULL;
- allocated = 0;
- }
- length = 0;
- /* Invariants:
- result is either == resultbuf or == NULL or malloc-allocated.
- If length > 0, then result != NULL. */
-
- /* Ensures that allocated >= needed. Aborts through a jump to
- out_of_memory if needed is SIZE_MAX or otherwise too big. */
-#define ENSURE_ALLOCATION(needed) \
- if ((needed) > allocated) \
- { \
- size_t memory_size; \
- CHAR_T *memory; \
- \
- allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \
- if ((needed) > allocated) \
- allocated = (needed); \
- memory_size = xtimes (allocated, sizeof (CHAR_T)); \
- if (size_overflow_p (memory_size)) \
- goto out_of_memory; \
- if (result == resultbuf || result == NULL) \
- memory = (CHAR_T *) malloc (memory_size); \
- else \
- memory = (CHAR_T *) realloc (result, memory_size); \
- if (memory == NULL) \
- goto out_of_memory; \
- if (result == resultbuf && length > 0) \
- memcpy (memory, result, length * sizeof (CHAR_T)); \
- result = memory; \
- }
-
- for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
- {
- if (cp != dp->dir_start)
- {
- size_t n = dp->dir_start - cp;
- size_t augmented_length = xsum (length, n);
-
- ENSURE_ALLOCATION (augmented_length);
- memcpy (result + length, cp, n * sizeof (CHAR_T));
- length = augmented_length;
- }
- if (i == d.count)
- break;
-
- /* Execute a single directive. */
- if (dp->conversion == '%')
- {
- size_t augmented_length;
-
- if (!(dp->arg_index == ARG_NONE))
- abort ();
- augmented_length = xsum (length, 1);
- ENSURE_ALLOCATION (augmented_length);
- result[length] = '%';
- length = augmented_length;
- }
- else
- {
- if (!(dp->arg_index != ARG_NONE))
- abort ();
-
- if (dp->conversion == 'n')
- {
- switch (a.arg[dp->arg_index].type)
- {
- case TYPE_COUNT_SCHAR_POINTER:
- *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
- break;
- case TYPE_COUNT_SHORT_POINTER:
- *a.arg[dp->arg_index].a.a_count_short_pointer = length;
- break;
- case TYPE_COUNT_INT_POINTER:
- *a.arg[dp->arg_index].a.a_count_int_pointer = length;
- break;
- case TYPE_COUNT_LONGINT_POINTER:
- *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_COUNT_LONGLONGINT_POINTER:
- *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
- break;
-#endif
- default:
- abort ();
- }
- }
- else
- {
- arg_type type = a.arg[dp->arg_index].type;
- CHAR_T *p;
- unsigned int prefix_count;
- int prefixes[2];
-#if !USE_SNPRINTF
- size_t tmp_length;
- CHAR_T tmpbuf[700];
- CHAR_T *tmp;
-
- /* Allocate a temporary buffer of sufficient size for calling
- sprintf. */
- {
- size_t width;
- size_t precision;
-
- width = 0;
- if (dp->width_start != dp->width_end)
- {
- if (dp->width_arg_index != ARG_NONE)
- {
- int arg;
-
- if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
- abort ();
- arg = a.arg[dp->width_arg_index].a.a_int;
- width = (arg < 0 ? (unsigned int) (-arg) : arg);
- }
- else
- {
- const CHAR_T *digitp = dp->width_start;
-
- do
- width = xsum (xtimes (width, 10), *digitp++ - '0');
- while (digitp != dp->width_end);
- }
- }
-
- precision = 6;
- if (dp->precision_start != dp->precision_end)
- {
- if (dp->precision_arg_index != ARG_NONE)
- {
- int arg;
-
- if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
- abort ();
- arg = a.arg[dp->precision_arg_index].a.a_int;
- precision = (arg < 0 ? 0 : arg);
- }
- else
- {
- const CHAR_T *digitp = dp->precision_start + 1;
-
- precision = 0;
- do
- precision = xsum (xtimes (precision, 10), *digitp++ - '0');
- while (digitp != dp->precision_end);
- }
- }
-
- switch (dp->conversion)
- {
-
- case 'd': case 'i': case 'u':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- break;
-
- case 'o':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- break;
-
- case 'x': case 'X':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- break;
-
- case 'f': case 'F':
-# ifdef HAVE_LONG_DOUBLE
- if (type == TYPE_LONGDOUBLE)
- tmp_length =
- (unsigned int) (LDBL_MAX_EXP
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 10; /* sign, decimal point etc. */
- else
-# endif
- tmp_length =
- (unsigned int) (DBL_MAX_EXP
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 10; /* sign, decimal point etc. */
- tmp_length = xsum (tmp_length, precision);
- break;
-
- case 'e': case 'E': case 'g': case 'G':
- case 'a': case 'A':
- tmp_length =
- 12; /* sign, decimal point, exponent etc. */
- tmp_length = xsum (tmp_length, precision);
- break;
-
- case 'c':
-# if defined HAVE_WINT_T && !WIDE_CHAR_VERSION
- if (type == TYPE_WIDE_CHAR)
- tmp_length = MB_CUR_MAX;
- else
-# endif
- tmp_length = 1;
- break;
-
- case 's':
-# ifdef HAVE_WCHAR_T
- if (type == TYPE_WIDE_STRING)
- {
- tmp_length =
- local_wcslen (a.arg[dp->arg_index].a.a_wide_string);
-
-# if !WIDE_CHAR_VERSION
- tmp_length = xtimes (tmp_length, MB_CUR_MAX);
-# endif
- }
- else
-# endif
- tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
- break;
-
- case 'p':
- tmp_length =
- (unsigned int) (sizeof (void *) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading 0x */
- break;
-
- default:
- abort ();
- }
-
- if (tmp_length < width)
- tmp_length = width;
-
- tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
- }
-
- if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T))
- tmp = tmpbuf;
- else
- {
- size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T));
-
- if (size_overflow_p (tmp_memsize))
- /* Overflow, would lead to out of memory. */
- goto out_of_memory;
- tmp = (CHAR_T *) malloc (tmp_memsize);
- if (tmp == NULL)
- /* Out of memory. */
- goto out_of_memory;
- }
-#endif
-
- /* Construct the format string for calling snprintf or
- sprintf. */
- p = buf;
- *p++ = '%';
- if (dp->flags & FLAG_GROUP)
- *p++ = '\'';
- if (dp->flags & FLAG_LEFT)
- *p++ = '-';
- if (dp->flags & FLAG_SHOWSIGN)
- *p++ = '+';
- if (dp->flags & FLAG_SPACE)
- *p++ = ' ';
- if (dp->flags & FLAG_ALT)
- *p++ = '#';
- if (dp->flags & FLAG_ZERO)
- *p++ = '0';
- if (dp->width_start != dp->width_end)
- {
- size_t n = dp->width_end - dp->width_start;
- memcpy (p, dp->width_start, n * sizeof (CHAR_T));
- p += n;
- }
- if (dp->precision_start != dp->precision_end)
- {
- size_t n = dp->precision_end - dp->precision_start;
- memcpy (p, dp->precision_start, n * sizeof (CHAR_T));
- p += n;
- }
-
- switch (type)
- {
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- case TYPE_ULONGLONGINT:
- *p++ = 'l';
- /*FALLTHROUGH*/
-#endif
- case TYPE_LONGINT:
- case TYPE_ULONGINT:
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
-#endif
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
-#endif
- *p++ = 'l';
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- *p++ = 'L';
- break;
-#endif
- default:
- break;
- }
- *p = dp->conversion;
-#if USE_SNPRINTF
- p[1] = '%';
- p[2] = 'n';
- p[3] = '\0';
-#else
- p[1] = '\0';
-#endif
-
- /* Construct the arguments for calling snprintf or sprintf. */
- prefix_count = 0;
- if (dp->width_arg_index != ARG_NONE)
- {
- if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
- abort ();
- prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
- }
- if (dp->precision_arg_index != ARG_NONE)
- {
- if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
- abort ();
- prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
- }
-
-#if USE_SNPRINTF
- /* Prepare checking whether snprintf returns the count
- via %n. */
- ENSURE_ALLOCATION (xsum (length, 1));
- result[length] = '\0';
-#endif
-
- for (;;)
- {
- size_t maxlen;
- int count;
- int retcount;
-
- maxlen = allocated - length;
- count = -1;
- retcount = 0;
-
-#if USE_SNPRINTF
-# define SNPRINTF_BUF(arg) \
- switch (prefix_count) \
- { \
- case 0: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- arg, &count); \
- break; \
- case 1: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- prefixes[0], arg, &count); \
- break; \
- case 2: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- prefixes[0], prefixes[1], arg, \
- &count); \
- break; \
- default: \
- abort (); \
- }
-#else
-# define SNPRINTF_BUF(arg) \
- switch (prefix_count) \
- { \
- case 0: \
- count = sprintf (tmp, buf, arg); \
- break; \
- case 1: \
- count = sprintf (tmp, buf, prefixes[0], arg); \
- break; \
- case 2: \
- count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
- arg); \
- break; \
- default: \
- abort (); \
- }
-#endif
-
- switch (type)
- {
- case TYPE_SCHAR:
- {
- int arg = a.arg[dp->arg_index].a.a_schar;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_UCHAR:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_SHORT:
- {
- int arg = a.arg[dp->arg_index].a.a_short;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_USHORT:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_INT:
- {
- int arg = a.arg[dp->arg_index].a.a_int;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_UINT:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_uint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_LONGINT:
- {
- long int arg = a.arg[dp->arg_index].a.a_longint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_ULONGINT:
- {
- unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- {
- long long int arg = a.arg[dp->arg_index].a.a_longlongint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_ULONGLONGINT:
- {
- unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_DOUBLE:
- {
- double arg = a.arg[dp->arg_index].a.a_double;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- {
- long double arg = a.arg[dp->arg_index].a.a_longdouble;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_CHAR:
- {
- int arg = a.arg[dp->arg_index].a.a_char;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
- {
- wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_STRING:
- {
- const char *arg = a.arg[dp->arg_index].a.a_string;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
- {
- const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_POINTER:
- {
- void *arg = a.arg[dp->arg_index].a.a_pointer;
- SNPRINTF_BUF (arg);
- }
- break;
- default:
- abort ();
- }
-
-#if USE_SNPRINTF
- /* Portability: Not all implementations of snprintf()
- are ISO C 99 compliant. Determine the number of
- bytes that snprintf() has produced or would have
- produced. */
- if (count >= 0)
- {
- /* Verify that snprintf() has NUL-terminated its
- result. */
- if (count < maxlen && result[length + count] != '\0')
- abort ();
- /* Portability hack. */
- if (retcount > count)
- count = retcount;
- }
- else
- {
- /* snprintf() doesn't understand the '%n'
- directive. */
- if (p[1] != '\0')
- {
- /* Don't use the '%n' directive; instead, look
- at the snprintf() return value. */
- p[1] = '\0';
- continue;
- }
- else
- {
- /* Look at the snprintf() return value. */
- if (retcount < 0)
- {
- /* HP-UX 10.20 snprintf() is doubly deficient:
- It doesn't understand the '%n' directive,
- *and* it returns -1 (rather than the length
- that would have been required) when the
- buffer is too small. */
- size_t bigger_need =
- xsum (xtimes (allocated, 2), 12);
- ENSURE_ALLOCATION (bigger_need);
- continue;
- }
- else
- count = retcount;
- }
- }
-#endif
-
- /* Attempt to handle failure. */
- if (count < 0)
- {
- if (!(result == resultbuf || result == NULL))
- free (result);
- free (buf_malloced);
- CLEANUP ();
- errno = EINVAL;
- return NULL;
- }
-
-#if !USE_SNPRINTF
- if (count >= tmp_length)
- /* tmp_length was incorrectly calculated - fix the
- code above! */
- abort ();
-#endif
-
- /* Make room for the result. */
- if (count >= maxlen)
- {
- /* Need at least count bytes. But allocate
- proportionally, to avoid looping eternally if
- snprintf() reports a too small count. */
- size_t n =
- xmax (xsum (length, count), xtimes (allocated, 2));
-
- ENSURE_ALLOCATION (n);
-#if USE_SNPRINTF
- continue;
-#endif
- }
-
-#if USE_SNPRINTF
- /* The snprintf() result did fit. */
-#else
- /* Append the sprintf() result. */
- memcpy (result + length, tmp, count * sizeof (CHAR_T));
- if (tmp != tmpbuf)
- free (tmp);
-#endif
-
- length += count;
- break;
- }
- }
- }
- }
-
- /* Add the final NUL. */
- ENSURE_ALLOCATION (xsum (length, 1));
- result[length] = '\0';
-
- if (result != resultbuf && length + 1 < allocated)
- {
- /* Shrink the allocated memory if possible. */
- CHAR_T *memory;
-
- memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T));
- if (memory != NULL)
- result = memory;
- }
-
- free (buf_malloced);
- CLEANUP ();
- *lengthp = length;
- return result;
-
- out_of_memory:
- if (!(result == resultbuf || result == NULL))
- free (result);
- free (buf_malloced);
- out_of_memory_1:
- CLEANUP ();
- errno = ENOMEM;
- return NULL;
- }
-}
-
-#undef SNPRINTF
-#undef USE_SNPRINTF
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T
-#undef VASNPRINTF
diff --git a/intl/vasnprintf.h b/intl/vasnprintf.h
deleted file mode 100644
index 5c62fb28..00000000
--- a/intl/vasnprintf.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* vsprintf with automatic memory allocation.
- Copyright (C) 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _VASNPRINTF_H
-#define _VASNPRINTF_H
-
-/* Get va_list. */
-#include <stdarg.h>
-
-/* Get size_t. */
-#include <stddef.h>
-
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-# define __attribute__(Spec) /* empty */
-# endif
-/* The __-protected variants of `format' and `printf' attributes
- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-# define __format__ format
-# define __printf__ printf
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
- You can pass a preallocated buffer for the result in RESULTBUF and its
- size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
- If successful, return the address of the string (this may be = RESULTBUF
- if no dynamic memory allocation was necessary) and set *LENGTHP to the
- number of resulting bytes, excluding the trailing NUL. Upon error, set
- errno and return NULL. */
-extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
- __attribute__ ((__format__ (__printf__, 3, 4)));
-extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
- __attribute__ ((__format__ (__printf__, 3, 0)));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNPRINTF_H */
diff --git a/intl/vasnwprintf.h b/intl/vasnwprintf.h
deleted file mode 100644
index 6ff03ce1..00000000
--- a/intl/vasnwprintf.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* vswprintf with automatic memory allocation.
- Copyright (C) 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _VASNWPRINTF_H
-#define _VASNWPRINTF_H
-
-/* Get va_list. */
-#include <stdarg.h>
-
-/* Get wchar_t, size_t. */
-#include <stddef.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
- You can pass a preallocated buffer for the result in RESULTBUF and its
- size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
- If successful, return the address of the string (this may be = RESULTBUF
- if no dynamic memory allocation was necessary) and set *LENGTHP to the
- number of resulting bytes, excluding the trailing NUL. Upon error, set
- errno and return NULL. */
-extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...);
-extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNWPRINTF_H */
diff --git a/intl/wprintf-parse.h b/intl/wprintf-parse.h
deleted file mode 100644
index 600b89ad..00000000
--- a/intl/wprintf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Parse printf format string.
- Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _WPRINTF_PARSE_H
-#define _WPRINTF_PARSE_H
-
-#include "printf-args.h"
-
-
-/* Flags */
-#define FLAG_GROUP 1 /* ' flag */
-#define FLAG_LEFT 2 /* - flag */
-#define FLAG_SHOWSIGN 4 /* + flag */
-#define FLAG_SPACE 8 /* space flag */
-#define FLAG_ALT 16 /* # flag */
-#define FLAG_ZERO 32
-
-/* arg_index value indicating that no argument is consumed. */
-#define ARG_NONE (~(size_t)0)
-
-/* A parsed directive. */
-typedef struct
-{
- const wchar_t* dir_start;
- const wchar_t* dir_end;
- int flags;
- const wchar_t* width_start;
- const wchar_t* width_end;
- size_t width_arg_index;
- const wchar_t* precision_start;
- const wchar_t* precision_end;
- size_t precision_arg_index;
- wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */
- size_t arg_index;
-}
-wchar_t_directive;
-
-/* A parsed format string. */
-typedef struct
-{
- size_t count;
- wchar_t_directive *dir;
- size_t max_width_length;
- size_t max_precision_length;
-}
-wchar_t_directives;
-
-
-/* Parses the format string. Fills in the number N of directives, and fills
- in directives[0], ..., directives[N-1], and sets directives[N].dir_start
- to the end of the format string. Also fills in the arg_type fields of the
- arguments and the needed count of arguments. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a);
-
-#endif /* _WPRINTF_PARSE_H */
diff --git a/intl/xsize.h b/intl/xsize.h
deleted file mode 100644
index b8925dce..00000000
--- a/intl/xsize.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* xsize.h -- Checked size_t computations.
-
- Copyright (C) 2003 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published
- by the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- USA. */
-
-#ifndef _XSIZE_H
-#define _XSIZE_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get SIZE_MAX. */
-#include <limits.h>
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-/* The size of memory objects is often computed through expressions of
- type size_t. Example:
- void* p = malloc (header_size + n * element_size).
- These computations can lead to overflow. When this happens, malloc()
- returns a piece of memory that is way too small, and the program then
- crashes while attempting to fill the memory.
- To avoid this, the functions and macros in this file check for overflow.
- The convention is that SIZE_MAX represents overflow.
- malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
- implementation that uses mmap --, it's recommended to use size_overflow_p()
- or size_in_bounds_p() before invoking malloc().
- The example thus becomes:
- size_t size = xsum (header_size, xtimes (n, element_size));
- void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-*/
-
-/* Convert an arbitrary value >= 0 to type size_t. */
-#define xcast_size_t(N) \
- ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-
-/* Sum of two sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum (size_t size1, size_t size2)
-{
- size_t sum = size1 + size2;
- return (sum >= size1 ? sum : SIZE_MAX);
-}
-
-/* Sum of three sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum3 (size_t size1, size_t size2, size_t size3)
-{
- return xsum (xsum (size1, size2), size3);
-}
-
-/* Sum of four sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-{
- return xsum (xsum (xsum (size1, size2), size3), size4);
-}
-
-/* Maximum of two sizes, with overflow check. */
-static inline size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xmax (size_t size1, size_t size2)
-{
- /* No explicit check is needed here, because for any n:
- max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
- return (size1 >= size2 ? size1 : size2);
-}
-
-/* Multiplication of a count with an element size, with overflow check.
- The count must be >= 0 and the element size must be > 0.
- This is a macro, not an inline function, so that it works correctly even
- when N is of a wider type and N > SIZE_MAX. */
-#define xtimes(N, ELSIZE) \
- ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
-
-/* Check for overflow. */
-#define size_overflow_p(SIZE) \
- ((SIZE) == SIZE_MAX)
-/* Check against overflow. */
-#define size_in_bounds_p(SIZE) \
- ((SIZE) != SIZE_MAX)
-
-#endif /* _XSIZE_H */
diff --git a/lib/blkid/Makefile.in b/lib/blkid/Makefile.in
index 850d6882..c5ca9206 100644
--- a/lib/blkid/Makefile.in
+++ b/lib/blkid/Makefile.in
@@ -11,6 +11,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/blkid
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index d7201448..f8687cde 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -144,7 +144,7 @@ static void get_ext2_info(blkid_dev dev, struct blkid_magic *id,
blkid_le32(es->s_feature_incompat),
blkid_le32(es->s_feature_ro_compat)));
- if (strlen(es->s_volume_name))
+ if (es->s_volume_name[0])
label = es->s_volume_name;
blkid_set_tag(dev, "LABEL", label, sizeof(es->s_volume_name));
diff --git a/lib/config.h.in b/lib/config.h.in
index 407911ca..4bc7e8e2 100644
--- a/lib/config.h.in
+++ b/lib/config.h.in
@@ -9,6 +9,9 @@
/* Define to 1 to compile findfs */
#undef CONFIG_BUILD_FINDFS
+/* Define to 1 for features for use by ext4 developers */
+#undef CONFIG_DEVELOPER_FEATURES
+
/* Define to 1 if debugging ext3/4 journal code */
#undef CONFIG_JBD_DEBUG
@@ -21,14 +24,6 @@
/* Define to 1 if the testio I/O manager should be enabled */
#undef CONFIG_TESTIO_DEBUG
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
/* Define to 1 to disable use of backtrace */
#undef DISABLE_BACKTRACE
@@ -45,28 +40,6 @@
/* Define to 1 if you have the `add_key' function. */
#undef HAVE_ADD_KEY
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `argz_count' function. */
-#undef HAVE_ARGZ_COUNT
-
-/* Define to 1 if you have the <argz.h> header file. */
-#undef HAVE_ARGZ_H
-
-/* Define to 1 if you have the `argz_next' function. */
-#undef HAVE_ARGZ_NEXT
-
-/* Define to 1 if you have the `argz_stringify' function. */
-#undef HAVE_ARGZ_STRINGIFY
-
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
-
/* Define to 1 if you have the <attr/xattr.h> header file. */
#undef HAVE_ATTR_XATTR_H
@@ -79,12 +52,12 @@
/* Define to 1 if blkid has blkid_probe_get_topology */
#undef HAVE_BLKID_PROBE_GET_TOPOLOGY
-/* Define to 1 if the compiler understands __builtin_expect. */
-#undef HAVE_BUILTIN_EXPECT
+/* Define to 1 if blkid has blkid_topology_get_dax */
+#undef HAVE_BLKID_TOPOLOGY_GET_DAX
-/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
- CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
+/* Define to 1 if you have the Mac OS X function
+ CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES
/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
@@ -97,26 +70,6 @@
*/
#undef HAVE_DCGETTEXT
-/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_FEOF_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FGETS_UNLOCKED
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_GETC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
- don't. */
-#undef HAVE_DECL__SNPRINTF
-
-/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
- don't. */
-#undef HAVE_DECL__SNWPRINTF
-
/* Define to 1 if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
@@ -153,9 +106,6 @@
/* Define to 1 if you have the `fdatasync' function. */
#undef HAVE_FDATASYNC
-/* Define to 1 if you have the <features.h> header file. */
-#undef HAVE_FEATURES_H
-
/* Define to 1 if you have the `fstat64' function. */
#undef HAVE_FSTAT64
@@ -171,24 +121,12 @@
/* Define to 1 if you have the `futimes' function. */
#undef HAVE_FUTIMES
-/* Define to 1 if you have the `fwprintf' function. */
-#undef HAVE_FWPRINTF
-
/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD
/* Define to 1 if you have the `getdtablesize' function. */
#undef HAVE_GETDTABLESIZE
-/* Define to 1 if you have the `getegid' function. */
-#undef HAVE_GETEGID
-
-/* Define to 1 if you have the `geteuid' function. */
-#undef HAVE_GETEUID
-
-/* Define to 1 if you have the `getgid' function. */
-#undef HAVE_GETGID
-
/* Define to 1 if you have the `gethostname' function. */
#undef HAVE_GETHOSTNAME
@@ -198,9 +136,6 @@
/* Define to 1 if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
/* Define to 1 if you have the `getpwuid_r' function. */
#undef HAVE_GETPWUID_R
@@ -213,40 +148,21 @@
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
-/* Define to 1 if you have the `getuid' function. */
-#undef HAVE_GETUID
-
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
-/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_INTMAX_T
-
/* Define to 1 if the system has the type `intptr_t'. */
#undef HAVE_INTPTR_T
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
-/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
- declares uintmax_t. */
-#undef HAVE_INTTYPES_H_WITH_UINTMAX
-
/* Define to 1 if you have the `jrand48' function. */
#undef HAVE_JRAND48
/* Define to 1 if you have the `keyctl' function. */
#undef HAVE_KEYCTL
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
/* Define to 1 if you have the <linux/falloc.h> header file. */
#undef HAVE_LINUX_FALLOC_H
@@ -274,9 +190,6 @@
/* Define to 1 if llseek declared in unistd.h */
#undef HAVE_LLSEEK_PROTOTYPE
-/* Define to 1 if the system has the type 'long long int'. */
-#undef HAVE_LONG_LONG_INT
-
/* Define to 1 if you have the `lseek64' function. */
#undef HAVE_LSEEK64
@@ -292,9 +205,6 @@
/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
-/* Define to 1 if you have the `mbrtowc' function. */
-#undef HAVE_MBRTOWC
-
/* Define to 1 if you have the `mbstowcs' function. */
#undef HAVE_MBSTOWCS
@@ -322,9 +232,6 @@
/* Define to 1 if you have the `msync' function. */
#undef HAVE_MSYNC
-/* Define to 1 if you have the `munmap' function. */
-#undef HAVE_MUNMAP
-
/* Define to 1 if you have the `nanosleep' function. */
#undef HAVE_NANOSLEEP
@@ -337,9 +244,6 @@
/* Define to 1 if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
-/* Define to 1 if you have the `newlocale' function. */
-#undef HAVE_NEWLOCALE
-
/* Define to 1 if you have the `open64' function. */
#undef HAVE_OPEN64
@@ -361,9 +265,6 @@
/* Define to 1 if you have the `posix_memalign' function. */
#undef HAVE_POSIX_MEMALIGN
-/* Define if your printf() function supports format strings with positions. */
-#undef HAVE_POSIX_PRINTF
-
/* Define to 1 if you have the `prctl' function. */
#undef HAVE_PRCTL
@@ -373,17 +274,14 @@
/* Define to 1 if you have the `pread64' function. */
#undef HAVE_PREAD64
+/* Define if you have POSIX threads libraries and header files. */
+#undef HAVE_PTHREAD
+
/* Define to 1 if you have the <pthread.h> header file. */
#undef HAVE_PTHREAD_H
-/* Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE. */
-#undef HAVE_PTHREAD_MUTEX_RECURSIVE
-
-/* Define if the POSIX multithreading library has read/write locks. */
-#undef HAVE_PTHREAD_RWLOCK
-
-/* Define to 1 if you have the `putenv' function. */
-#undef HAVE_PUTENV
+/* Have PTHREAD_PRIO_INHERIT. */
+#undef HAVE_PTHREAD_PRIO_INHERIT
/* Define to 1 if you have the `pwrite' function. */
#undef HAVE_PWRITE
@@ -406,15 +304,9 @@
/* Define to 1 if sem_init() exists */
#undef HAVE_SEM_INIT
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
-
/* Define to 1 if you have the <setjmp.h> header file. */
#undef HAVE_SETJMP_H
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
/* Define to 1 if you have the `setmntent' function. */
#undef HAVE_SETMNTENT
@@ -439,16 +331,9 @@
/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
-/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
- uintmax_t. */
-#undef HAVE_STDINT_H_WITH_UINTMAX
-
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -473,18 +358,12 @@
/* Define to 1 if you have the `strptime' function. */
#undef HAVE_STRPTIME
-/* Define to 1 if you have the `strtoul' function. */
-#undef HAVE_STRTOUL
-
/* Define to 1 if you have the `strtoull' function. */
#undef HAVE_STRTOULL
/* Define to 1 if `st_atim' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_ATIM
-/* Define to 1 if you have the `symlink' function. */
-#undef HAVE_SYMLINK
-
/* Define to 1 if you have the `sync_file_range' function. */
#undef HAVE_SYNC_FILE_RANGE
@@ -518,9 +397,6 @@
/* Define to 1 if you have the <sys/mount.h> header file. */
#undef HAVE_SYS_MOUNT_H
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
/* Define to 1 if you have the <sys/prctl.h> header file. */
#undef HAVE_SYS_PRCTL_H
@@ -542,9 +418,6 @@
/* Define to 1 if you have the <sys/syscall.h> header file. */
#undef HAVE_SYS_SYSCALL_H
-/* Define to 1 if you have the <sys/sysctl.h> header file. */
-#undef HAVE_SYS_SYSCTL_H
-
/* Define to 1 if you have the <sys/sysmacros.h> header file. */
#undef HAVE_SYS_SYSMACROS_H
@@ -569,24 +442,12 @@
/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
-/* Define to 1 if you have the `tsearch' function. */
-#undef HAVE_TSEARCH
-
/* Define to 1 if ssize_t declared */
#undef HAVE_TYPE_SSIZE_T
-/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
-#undef HAVE_UINTMAX_T
-
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if the system has the type 'unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
-/* Define to 1 if you have the `uselocale' function. */
-#undef HAVE_USELOCALE
-
/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP
@@ -602,46 +463,12 @@
/* Define to 1 if you have the `valloc' function. */
#undef HAVE_VALLOC
-/* Define to 1 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#undef HAVE_VISIBILITY
-
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
-/* Define if you have the 'wchar_t' type. */
-#undef HAVE_WCHAR_T
-
-/* Define to 1 if you have the `wcrtomb' function. */
-#undef HAVE_WCRTOMB
-
-/* Define to 1 if you have the `wcslen' function. */
-#undef HAVE_WCSLEN
-
-/* Define to 1 if you have the `wcsnlen' function. */
-#undef HAVE_WCSNLEN
-
-/* Define if you have the 'wint_t' type. */
-#undef HAVE_WINT_T
-
-/* Define to 1 if O_NOATIME works. */
-#undef HAVE_WORKING_O_NOATIME
-
-/* Define to 1 if O_NOFOLLOW works. */
-#undef HAVE_WORKING_O_NOFOLLOW
-
-/* Define to 1 if you have the `__fsetlocking' function. */
-#undef HAVE___FSETLOCKING
-
/* Define to 1 if you have the `__secure_getenv' function. */
#undef HAVE___SECURE_GETENV
-/* Define as const if the declaration of iconv() needs const. */
-#undef ICONV_CONST
-
-/* Define if integer division by zero raises signal SIGFPE. */
-#undef INTDIV0_RAISES_SIGFPE
-
/* package name for gettext */
#undef PACKAGE
@@ -663,11 +490,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
-/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-#undef PRI_MACROS_BROKEN
-
-/* Define if the pthread_in_use() detection is hard. */
-#undef PTHREAD_IN_USE_DETECTION_HARD
+/* Define to necessary symbol if this constant uses a non-standard name on
+ your system. */
+#undef PTHREAD_CREATE_JOINABLE
/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
@@ -687,47 +512,12 @@
/* The size of `time_t', as computed by sizeof. */
#undef SIZEOF_TIME_T
-/* Define as the maximum value of type 'size_t', if the system doesn't define
- it. */
-#ifndef SIZE_MAX
-# undef SIZE_MAX
-#endif
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* If the compiler supports a TLS storage class define it to that here */
#undef TLS
-/* Define if the POSIX multithreading library can be used. */
-#undef USE_POSIX_THREADS
-
-/* Define if references to the POSIX multithreading library should be made
- weak. */
-#undef USE_POSIX_THREADS_WEAK
-
-/* Define if the GNU Pth multithreading library can be used. */
-#undef USE_PTH_THREADS
-
-/* Define if references to the GNU Pth multithreading library should be made
- weak. */
-#undef USE_PTH_THREADS_WEAK
-
-/* Define if the old Solaris multithreading library can be used. */
-#undef USE_SOLARIS_THREADS
-
-/* Define if references to the old Solaris multithreading library should be
- made weak. */
-#undef USE_SOLARIS_THREADS_WEAK
-
/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
@@ -753,9 +543,6 @@
/* Define to 1 to build uuidd */
#undef USE_UUIDD
-/* Define if the native Windows multithreading API can be used. */
-#undef USE_WINDOWS_THREADS
-
/* version for gettext */
#undef VERSION
@@ -784,122 +571,4 @@
/* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE
-/* Please see the Gnulib manual for how to use these macros.
-
- Suppress extern inline with HP-UX cc, as it appears to be broken; see
- <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
-
- Suppress extern inline with Sun C in standards-conformance mode, as it
- mishandles inline functions that call each other. E.g., for 'inline void f
- (void) { } inline void g (void) { f (); }', c99 incorrectly complains
- 'reference to static identifier "f" in extern inline function'.
- This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
-
- Suppress the use of extern inline on Apple's platforms, as Libc at least
- through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g.,
- <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
- Perhaps Apple will fix this some day. */
-#if ((__GNUC__ \
- ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
- : (199901L <= __STDC_VERSION__ \
- && !defined __HP_cc \
- && !(defined __SUNPRO_C && __STDC__))) \
- && !defined __APPLE__)
-# define _GL_INLINE inline
-# define _GL_EXTERN_INLINE extern inline
-#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
- && !defined __APPLE__)
-# if __GNUC_GNU_INLINE__
- /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
-# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-# else
-# define _GL_INLINE extern inline
-# endif
-# define _GL_EXTERN_INLINE extern
-#else
-# define _GL_INLINE static _GL_UNUSED
-# define _GL_EXTERN_INLINE static _GL_UNUSED
-#endif
-
-#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-# define _GL_INLINE_HEADER_CONST_PRAGMA
-# else
-# define _GL_INLINE_HEADER_CONST_PRAGMA \
- _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-# endif
- /* Suppress GCC's bogus "no previous prototype for 'FOO'"
- and "no previous declaration for 'FOO'" diagnostics,
- when FOO is an inline function in the header; see
- <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>. */
-# define _GL_INLINE_HEADER_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
- _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
- _GL_INLINE_HEADER_CONST_PRAGMA
-# define _GL_INLINE_HEADER_END \
- _Pragma ("GCC diagnostic pop")
-#else
-# define _GL_INLINE_HEADER_BEGIN
-# define _GL_INLINE_HEADER_END
-#endif
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define as the type of the result of subtracting two pointers, if the system
- doesn't define it. */
-#undef ptrdiff_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to unsigned long or unsigned long long if <stdint.h> and
- <inttypes.h> don't define. */
-#undef uintmax_t
-
#include <dirpaths.h>
-
-
-#define __libc_lock_t gl_lock_t
-#define __libc_lock_define gl_lock_define
-#define __libc_lock_define_initialized gl_lock_define_initialized
-#define __libc_lock_init gl_lock_init
-#define __libc_lock_lock gl_lock_lock
-#define __libc_lock_unlock gl_lock_unlock
-#define __libc_lock_recursive_t gl_recursive_lock_t
-#define __libc_lock_define_recursive gl_recursive_lock_define
-#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
-#define __libc_lock_init_recursive gl_recursive_lock_init
-#define __libc_lock_lock_recursive gl_recursive_lock_lock
-#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
-#define glthread_in_use libintl_thread_in_use
-#define glthread_lock_init_func libintl_lock_init_func
-#define glthread_lock_lock_func libintl_lock_lock_func
-#define glthread_lock_unlock_func libintl_lock_unlock_func
-#define glthread_lock_destroy_func libintl_lock_destroy_func
-#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
-#define glthread_rwlock_init_func libintl_rwlock_init_func
-#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
-#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
-#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
-#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
-#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
-#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
-#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
-#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
-#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
-#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
-#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
-#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
-#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
-#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
-#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
-#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
-#define glthread_once_func libintl_once_func
-#define glthread_once_singlethreaded libintl_once_singlethreaded
-#define glthread_once_multithreaded libintl_once_multithreaded
-
diff --git a/lib/e2p/Android.bp b/lib/e2p/Android.bp
index 566afd2f..7be2d804 100644
--- a/lib/e2p/Android.bp
+++ b/lib/e2p/Android.bp
@@ -20,6 +20,7 @@ cc_library {
defaults: ["e2fsprogs-defaults"],
srcs: [
"encoding.c",
+ "errcode.c",
"feature.c",
"fgetflags.c",
"fsetflags.c",
diff --git a/lib/e2p/Makefile.in b/lib/e2p/Makefile.in
index 9e96884a..cd235117 100644
--- a/lib/e2p/Makefile.in
+++ b/lib/e2p/Makefile.in
@@ -11,6 +11,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/e2p
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -20,17 +21,20 @@ OBJS= feature.o fgetflags.o fsetflags.o fgetversion.o fsetversion.o \
getflags.o getversion.o hashstr.o iod.o ls.o ljs.o mntopts.o \
parse_num.o pe.o pf.o ps.o setflags.o setversion.o uuid.o \
ostype.o percent.o crypto_mode.o fgetproject.o fsetproject.o \
- encoding.o
+ encoding.o errcode.o
SRCS= $(srcdir)/feature.c $(srcdir)/fgetflags.c \
$(srcdir)/fsetflags.c $(srcdir)/fgetversion.c \
$(srcdir)/fsetversion.c $(srcdir)/getflags.c \
$(srcdir)/getversion.c $(srcdir)/hashstr.c $(srcdir)/iod.c \
- $(srcdir)/ls.c $(srcdir)/ljs.c $(srcdir)/mntopts.c $(srcdir)/parse_num.c \
- $(srcdir)/pe.c $(srcdir)/pf.c $(srcdir)/ps.c \
- $(srcdir)/setflags.c $(srcdir)/setversion.c $(srcdir)/uuid.c \
- $(srcdir)/ostype.c $(srcdir)/percent.c $(srcdir)/crypto_mode.c \
- $(srcdir)/fgetproject.c $(srcdir)/fsetproject.c $(srcdir)/encoding.c
+ $(srcdir)/ls.c $(srcdir)/ljs.c $(srcdir)/mntopts.c \
+ $(srcdir)/parse_num.c $(srcdir)/pe.c $(srcdir)/pf.c \
+ $(srcdir)/ps.c $(srcdir)/setflags.c $(srcdir)/setversion.c \
+ $(srcdir)/uuid.c $(srcdir)/ostype.c $(srcdir)/percent.c \
+ $(srcdir)/crypto_mode.c $(srcdir)/fgetproject.c \
+ $(srcdir)/fsetproject.c $(srcdir)/encoding.c \
+ $(srcdir)/errcode.c
+
HFILES= e2p.h
LIBRARY= libe2p
@@ -126,7 +130,8 @@ feature.o: $(srcdir)/feature.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/ext2fs/ext2_err.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
- $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
+ $(top_srcdir)/lib/ext2fs/compiler.h
fgetflags.o: $(srcdir)/fgetflags.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2p.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h
@@ -168,7 +173,7 @@ ljs.o: $(srcdir)/ljs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/e2p.h \
$(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h
mntopts.o: $(srcdir)/mntopts.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2p.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h
@@ -213,3 +218,5 @@ fsetproject.o: $(srcdir)/fsetproject.c $(top_builddir)/lib/config.h \
encoding.o: $(srcdir)/encoding.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/e2p.h \
$(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h
+errcode.o: $(srcdir)/errcode.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h
diff --git a/lib/e2p/e2p.h b/lib/e2p/e2p.h
index c3a6b258..65702a7e 100644
--- a/lib/e2p/e2p.h
+++ b/lib/e2p/e2p.h
@@ -47,9 +47,12 @@ void print_fs_state (FILE * f, unsigned short state);
int setflags (int fd, unsigned long flags);
int setversion (int fd, unsigned long version);
+#define E2P_LIST_JOURNAL_FLAG_FC 0x1
void e2p_list_journal_super(FILE *f, char *journal_sb_buf,
int exp_block_size, int flags);
+void e2p_feature_to_string(int compat, unsigned int mask, char *buf,
+ size_t buf_len);
const char *e2p_feature2string(int compat, unsigned int mask);
const char *e2p_jrnl_feature2string(int compat, unsigned int mask);
int e2p_string2feature(char *string, int *compat, unsigned int *mask);
@@ -85,3 +88,5 @@ int e2p_str2encoding(const char *string);
const char *e2p_encoding2str(int encoding);
int e2p_get_encoding_flags(int encoding);
int e2p_str2encoding_flags(int encoding, char *param, __u16 *flags);
+
+const char *e2p_errcode2str(int err);
diff --git a/lib/e2p/errcode.c b/lib/e2p/errcode.c
new file mode 100644
index 00000000..7e426553
--- /dev/null
+++ b/lib/e2p/errcode.c
@@ -0,0 +1,46 @@
+/*
+ * errcode.c - convert an error code to a string
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static const char *err_string[] = {
+ "",
+ "UNKNOWN", /* 1 */
+ "EIO", /* 2 */
+ "ENOMEM", /* 3 */
+ "EFSBADCRC", /* 4 */
+ "EFSCORRUPTED", /* 5 */
+ "ENOSPC", /* 6 */
+ "ENOKEY", /* 7 */
+ "EROFS", /* 8 */
+ "EFBIG", /* 9 */
+ "EEXIST", /* 10 */
+ "ERANGE", /* 11 */
+ "EOVERFLOW", /* 12 */
+ "EBUSY", /* 13 */
+ "ENOTDIR", /* 14 */
+ "ENOTEMPTY", /* 15 */
+ "ESHUTDOWN", /* 16 */
+ "EFAULT", /* 17 */
+};
+
+#define ARRAY_SIZE(array) \
+ (sizeof(array) / sizeof(array[0]))
+
+/* Return the name of an encoding or NULL */
+const char *e2p_errcode2str(int err)
+{
+ static char buf[32];
+
+ if (err < ARRAY_SIZE(err_string))
+ return err_string[err];
+
+ sprintf(buf, "UNKNOWN_ERRCODE_%d", err);
+ return buf;
+}
+
+
diff --git a/lib/e2p/feature.c b/lib/e2p/feature.c
index 8e00306c..22910602 100644
--- a/lib/e2p/feature.c
+++ b/lib/e2p/feature.c
@@ -45,6 +45,8 @@ static struct feature feature_list[] = {
"snapshot_bitmap" },
{ E2P_FEATURE_COMPAT, EXT4_FEATURE_COMPAT_SPARSE_SUPER2,
"sparse_super2" },
+ { E2P_FEATURE_COMPAT, EXT4_FEATURE_COMPAT_FAST_COMMIT,
+ "fast_commit" },
{ E2P_FEATURE_COMPAT, EXT4_FEATURE_COMPAT_STABLE_INODES,
"stable_inodes" },
@@ -119,33 +121,36 @@ static struct feature feature_list[] = {
};
static struct feature jrnl_feature_list[] = {
- { E2P_FEATURE_COMPAT, JFS_FEATURE_COMPAT_CHECKSUM,
+ { E2P_FEATURE_COMPAT, JBD2_FEATURE_COMPAT_CHECKSUM,
"journal_checksum" },
- { E2P_FEATURE_INCOMPAT, JFS_FEATURE_INCOMPAT_REVOKE,
+ { E2P_FEATURE_INCOMPAT, JBD2_FEATURE_INCOMPAT_REVOKE,
"journal_incompat_revoke" },
- { E2P_FEATURE_INCOMPAT, JFS_FEATURE_INCOMPAT_64BIT,
+ { E2P_FEATURE_INCOMPAT, JBD2_FEATURE_INCOMPAT_64BIT,
"journal_64bit" },
- { E2P_FEATURE_INCOMPAT, JFS_FEATURE_INCOMPAT_ASYNC_COMMIT,
+ { E2P_FEATURE_INCOMPAT, JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT,
"journal_async_commit" },
- { E2P_FEATURE_INCOMPAT, JFS_FEATURE_INCOMPAT_CSUM_V2,
+ { E2P_FEATURE_INCOMPAT, JBD2_FEATURE_INCOMPAT_CSUM_V2,
"journal_checksum_v2" },
- { E2P_FEATURE_INCOMPAT, JFS_FEATURE_INCOMPAT_CSUM_V3,
+ { E2P_FEATURE_INCOMPAT, JBD2_FEATURE_INCOMPAT_CSUM_V3,
"journal_checksum_v3" },
{ 0, 0, 0 },
};
-const char *e2p_feature2string(int compat, unsigned int mask)
+void e2p_feature_to_string(int compat, unsigned int mask, char *buf,
+ size_t buf_len)
{
struct feature *f;
- static char buf[20];
char fchar;
int fnum;
for (f = feature_list; f->string; f++) {
if ((compat == f->compat) &&
- (mask == f->mask))
- return f->string;
+ (mask == f->mask)) {
+ strncpy(buf, f->string, buf_len);
+ buf[buf_len - 1] = 0;
+ return;
+ }
}
switch (compat) {
case E2P_FEATURE_COMPAT:
@@ -163,6 +168,13 @@ const char *e2p_feature2string(int compat, unsigned int mask)
}
for (fnum = 0; mask >>= 1; fnum++);
sprintf(buf, "FEATURE_%c%d", fchar, fnum);
+}
+
+const char *e2p_feature2string(int compat, unsigned int mask)
+{
+ static char buf[20];
+
+ e2p_feature_to_string(compat, mask, buf, sizeof(buf) / sizeof(buf[0]));
return buf;
}
diff --git a/lib/e2p/fgetflags.c b/lib/e2p/fgetflags.c
index 7b93cbae..93e130c6 100644
--- a/lib/e2p/fgetflags.c
+++ b/lib/e2p/fgetflags.c
@@ -39,16 +39,19 @@
#include "e2p.h"
-#ifdef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE)
-#else
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
#endif
+#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_NOFOLLOW)
+
int fgetflags (const char * name, unsigned long * flags)
{
- struct stat buf;
#if HAVE_STAT_FLAGS && !(APPLE_DARWIN && HAVE_EXT2_IOCTLS)
+ struct stat buf;
if (stat (name, &buf) == -1)
return -1;
@@ -68,35 +71,35 @@ int fgetflags (const char * name, unsigned long * flags)
#endif
return 0;
-#else /* !HAVE_STAT_FLAGS || (APPLE_DARWIN && HAVE_EXT2_IOCTLS) */
-#if HAVE_EXT2_IOCTLS
+#elif APPLE_DARWIN && HAVE_EXT2_IOCTLS
+ int f, save_errno = 0;
+
+ f = -1;
+ save_errno = syscall(SYS_fsctl, name, EXT2_IOC_GETFLAGS, &f, 0);
+ *flags = f;
+ return (save_errno);
+#elif HAVE_EXT2_IOCTLS
int fd, r, f, save_errno = 0;
- if (!lstat(name, &buf) &&
- !S_ISREG(buf.st_mode) && !S_ISDIR(buf.st_mode)) {
- goto notsupp;
- }
-#if !APPLE_DARWIN
- fd = open (name, OPEN_FLAGS);
- if (fd == -1)
+ fd = open(name, OPEN_FLAGS);
+ if (fd == -1) {
+ if (errno == ELOOP || errno == ENXIO)
+ errno = EOPNOTSUPP;
return -1;
- r = ioctl (fd, EXT2_IOC_GETFLAGS, &f);
- if (r == -1)
+ }
+ r = ioctl(fd, EXT2_IOC_GETFLAGS, &f);
+ if (r == -1) {
+ if (errno == ENOTTY)
+ errno = EOPNOTSUPP;
save_errno = errno;
+ }
*flags = f;
- close (fd);
+ close(fd);
if (save_errno)
errno = save_errno;
return r;
-#else /* APPLE_DARWIN */
- f = -1;
- save_errno = syscall(SYS_fsctl, name, EXT2_IOC_GETFLAGS, &f, 0);
- *flags = f;
- return (save_errno);
-#endif /* !APPLE_DARWIN */
-notsupp:
-#endif /* HAVE_EXT2_IOCTLS */
-#endif
+#else
errno = EOPNOTSUPP;
return -1;
+#endif
}
diff --git a/lib/e2p/fsetflags.c b/lib/e2p/fsetflags.c
index 027834b9..6455e386 100644
--- a/lib/e2p/fsetflags.c
+++ b/lib/e2p/fsetflags.c
@@ -48,12 +48,15 @@
#undef HAVE_CHFLAGS
#endif
-#ifdef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE)
-#else
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
#endif
+#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_NOFOLLOW)
+
int fsetflags (const char * name, unsigned long flags)
{
#if HAVE_CHFLAGS && !(APPLE_DARWIN && HAVE_EXT2_IOCTLS)
@@ -73,35 +76,31 @@ int fsetflags (const char * name, unsigned long flags)
#endif
return chflags (name, bsd_flags);
-#else /* !HAVE_CHFLAGS || (APPLE_DARWIN && HAVE_EXT2_IOCTLS) */
-#if HAVE_EXT2_IOCTLS
+#elif APPLE_DARWIN && HAVE_EXT2_IOCTLS
+ int f = (int) flags;
+ return syscall(SYS_fsctl, name, EXT2_IOC_SETFLAGS, &f, 0);
+#elif HAVE_EXT2_IOCTLS
int fd, r, f, save_errno = 0;
- struct stat buf;
- if (!lstat(name, &buf) &&
- !S_ISREG(buf.st_mode) && !S_ISDIR(buf.st_mode)) {
- goto notsupp;
- }
-#if !APPLE_DARWIN
- fd = open (name, OPEN_FLAGS);
- if (fd == -1)
+ fd = open(name, OPEN_FLAGS);
+ if (fd == -1) {
+ if (errno == ELOOP || errno == ENXIO)
+ errno = EOPNOTSUPP;
return -1;
+ }
f = (int) flags;
- r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
- if (r == -1)
+ r = ioctl(fd, EXT2_IOC_SETFLAGS, &f);
+ if (r == -1) {
+ if (errno == ENOTTY)
+ errno = EOPNOTSUPP;
save_errno = errno;
- close (fd);
+ }
+ close(fd);
if (save_errno)
errno = save_errno;
-#else /* APPLE_DARWIN */
- f = (int) flags;
- return syscall(SYS_fsctl, name, EXT2_IOC_SETFLAGS, &f, 0);
-#endif /* !APPLE_DARWIN */
return r;
-
-notsupp:
-#endif /* HAVE_EXT2_IOCTLS */
-#endif
+#else
errno = EOPNOTSUPP;
return -1;
+#endif
}
diff --git a/lib/e2p/ljs.c b/lib/e2p/ljs.c
index c99126b6..59728198 100644
--- a/lib/e2p/ljs.c
+++ b/lib/e2p/ljs.c
@@ -36,6 +36,17 @@ static __u32 e2p_swab32(__u32 val)
#define e2p_be32(x) e2p_swab32(x)
#endif
+/*
+ * This function is copied from kernel-jbd.h's function
+ * jbd2_journal_get_num_fc_blks() to avoid inter-library dependencies.
+ */
+static inline int get_num_fc_blks(journal_superblock_t *jsb)
+{
+ int num_fc_blocks = e2p_be32(jsb->s_num_fc_blks);
+
+ return num_fc_blocks ? num_fc_blocks : JBD2_DEFAULT_FAST_COMMIT_BLOCKS;
+}
+
static const char *journal_checksum_type_str(__u8 type)
{
switch (type) {
@@ -54,7 +65,12 @@ void e2p_list_journal_super(FILE *f, char *journal_sb_buf,
unsigned int size;
int j, printed = 0;
unsigned int i, nr_users;
+ int num_fc_blks = 0;
+ int journal_blks = 0;
+ if (flags & E2P_LIST_JOURNAL_FLAG_FC)
+ num_fc_blks = get_num_fc_blks((journal_superblock_t *)journal_sb_buf);
+ journal_blks = ntohl(jsb->s_maxlen) - num_fc_blks;
fprintf(f, "%s", "Journal features: ");
for (i=0, mask_ptr=&jsb->s_feature_compat; i <3; i++,mask_ptr++) {
mask = e2p_be32(*mask_ptr);
@@ -68,7 +84,7 @@ void e2p_list_journal_super(FILE *f, char *journal_sb_buf,
if (printed == 0)
fprintf(f, " (none)");
fputc('\n', f);
- fputs("Journal size: ", f);
+ fputs("Total journal size: ", f);
size = (ntohl(jsb->s_blocksize) / 1024) * ntohl(jsb->s_maxlen);
if (size < 8192)
fprintf(f, "%uk\n", size);
@@ -78,8 +94,13 @@ void e2p_list_journal_super(FILE *f, char *journal_sb_buf,
if (exp_block_size != (int) ntohl(jsb->s_blocksize))
fprintf(f, "Journal block size: %u\n",
(unsigned int)ntohl(jsb->s_blocksize));
- fprintf(f, "Journal length: %u\n",
- (unsigned int)ntohl(jsb->s_maxlen));
+ fprintf(f, "Total journal blocks: %u\n",
+ (unsigned int)(journal_blks + num_fc_blks));
+ fprintf(f, "Max transaction length: %u\n",
+ (unsigned int)journal_blks);
+ fprintf(f, "Fast commit length: %u\n",
+ (unsigned int)num_fc_blks);
+
if (ntohl(jsb->s_first) != 1)
fprintf(f, "Journal first block: %u\n",
(unsigned int)ntohl(jsb->s_first));
@@ -89,19 +110,19 @@ void e2p_list_journal_super(FILE *f, char *journal_sb_buf,
(unsigned int)ntohl(jsb->s_start));
if (nr_users != 1)
fprintf(f, "Journal number of users: %u\n", nr_users);
- if (jsb->s_feature_compat & e2p_be32(JFS_FEATURE_COMPAT_CHECKSUM))
+ if (jsb->s_feature_compat & e2p_be32(JBD2_FEATURE_COMPAT_CHECKSUM))
fprintf(f, "%s", "Journal checksum type: crc32\n");
if ((jsb->s_feature_incompat &
- e2p_be32(JFS_FEATURE_INCOMPAT_CSUM_V3)) ||
+ e2p_be32(JBD2_FEATURE_INCOMPAT_CSUM_V3)) ||
(jsb->s_feature_incompat &
- e2p_be32(JFS_FEATURE_INCOMPAT_CSUM_V2)))
+ e2p_be32(JBD2_FEATURE_INCOMPAT_CSUM_V2)))
fprintf(f, "Journal checksum type: %s\n"
"Journal checksum: 0x%08x\n",
journal_checksum_type_str(jsb->s_checksum_type),
e2p_be32(jsb->s_checksum));
if ((nr_users > 1) ||
!e2p_is_null_uuid(&jsb->s_users[0])) {
- for (i=0; i < nr_users && i < JFS_USERS_MAX; i++) {
+ for (i=0; i < nr_users && i < JBD2_USERS_MAX; i++) {
printf(i ? " %s\n"
: "Journal users: %s\n",
e2p_uuid2str(&jsb->s_users[i * UUID_SIZE]));
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 5a446178..176bee0f 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -224,7 +224,7 @@ static const char *quota_type2prefix(enum quota_type qtype)
void list_super2(struct ext2_super_block * sb, FILE *f)
{
int inode_blocks_per_group;
- char buf[80], *str;
+ char *str;
time_t tm;
enum quota_type qtype;
@@ -232,18 +232,16 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
EXT2_INODE_SIZE(sb)) +
EXT2_BLOCK_SIZE(sb) - 1) /
EXT2_BLOCK_SIZE(sb));
- if (sb->s_volume_name[0]) {
- memset(buf, 0, sizeof(buf));
- strncpy(buf, sb->s_volume_name, sizeof(sb->s_volume_name));
- } else
- strcpy(buf, "<none>");
- fprintf(f, "Filesystem volume name: %s\n", buf);
- if (sb->s_last_mounted[0]) {
- memset(buf, 0, sizeof(buf));
- strncpy(buf, sb->s_last_mounted, sizeof(sb->s_last_mounted));
- } else
- strcpy(buf, "<not available>");
- fprintf(f, "Last mounted on: %s\n", buf);
+ if (sb->s_volume_name[0])
+ fprintf(f, "Filesystem volume name: %.*s\n",
+ EXT2_LEN_STR(sb->s_volume_name));
+ else
+ fprintf(f, "Filesystem volume name: <none>\n");
+ if (sb->s_last_mounted[0])
+ fprintf(f, "Last mounted on: %.*s\n",
+ EXT2_LEN_STR(sb->s_last_mounted));
+ else
+ fprintf(f, "Last mounted on: <not available>\n");
fprintf(f, "Filesystem UUID: %s\n", e2p_uuid2str(sb->s_uuid));
fprintf(f, "Filesystem magic number: 0x%04X\n", sb->s_magic);
fprintf(f, "Filesystem revision #: %d", sb->s_rev_level);
@@ -259,7 +257,8 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
print_super_flags(sb, f);
print_mntopts(sb, f);
if (sb->s_mount_opts[0])
- fprintf(f, "Mount options: %s\n", sb->s_mount_opts);
+ fprintf(f, "Mount options: %.*s\n",
+ EXT2_LEN_STR(sb->s_mount_opts));
fprintf(f, "Filesystem state: ");
print_fs_state (f, sb->s_state);
fprintf(f, "\n");
@@ -270,12 +269,15 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
fprintf(f, "Filesystem OS type: %s\n", str);
free(str);
fprintf(f, "Inode count: %u\n", sb->s_inodes_count);
- fprintf(f, "Block count: %llu\n", e2p_blocks_count(sb));
- fprintf(f, "Reserved block count: %llu\n", e2p_r_blocks_count(sb));
- if (sb->s_overhead_blocks)
- fprintf(f, "Overhead blocks: %u\n",
- sb->s_overhead_blocks);
- fprintf(f, "Free blocks: %llu\n", e2p_free_blocks_count(sb));
+ fprintf(f, "Block count: %llu\n",
+ (unsigned long long) e2p_blocks_count(sb));
+ fprintf(f, "Reserved block count: %llu\n",
+ (unsigned long long) e2p_r_blocks_count(sb));
+ if (sb->s_overhead_clusters)
+ fprintf(f, "Overhead clusters: %u\n",
+ sb->s_overhead_clusters);
+ fprintf(f, "Free blocks: %llu\n",
+ (unsigned long long) e2p_free_blocks_count(sb));
fprintf(f, "Free inodes: %u\n", sb->s_free_inodes_count);
fprintf(f, "First block: %u\n", sb->s_first_data_block);
fprintf(f, "Block size: %u\n", EXT2_BLOCK_SIZE(sb));
@@ -337,18 +339,19 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
if (sb->s_kbytes_written) {
fprintf(f, "Lifetime writes: ");
if (sb->s_kbytes_written < POW2(13))
- fprintf(f, "%llu kB\n", sb->s_kbytes_written);
+ fprintf(f, "%llu kB\n",
+ (unsigned long long) sb->s_kbytes_written);
else if (sb->s_kbytes_written < POW2(23))
- fprintf(f, "%llu MB\n",
- (sb->s_kbytes_written + POW2(9)) >> 10);
+ fprintf(f, "%llu MB\n", (unsigned long long)
+ (sb->s_kbytes_written + POW2(9)) >> 10);
else if (sb->s_kbytes_written < POW2(33))
- fprintf(f, "%llu GB\n",
+ fprintf(f, "%llu GB\n", (unsigned long long)
(sb->s_kbytes_written + POW2(19)) >> 20);
else if (sb->s_kbytes_written < POW2(43))
- fprintf(f, "%llu TB\n",
+ fprintf(f, "%llu TB\n", (unsigned long long)
(sb->s_kbytes_written + POW2(29)) >> 30);
else
- fprintf(f, "%llu PB\n",
+ fprintf(f, "%llu PB\n", (unsigned long long)
(sb->s_kbytes_written + POW2(39)) >> 40);
}
fprintf(f, "Reserved blocks uid: ");
@@ -408,7 +411,7 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
fprintf(f, "Snapshot ID: %u\n",
sb->s_snapshot_id);
fprintf(f, "Snapshot reserved blocks: %llu\n",
- sb->s_snapshot_r_blocks_count);
+ (unsigned long long) sb->s_snapshot_r_blocks_count);
}
if (sb->s_snapshot_list)
fprintf(f, "Snapshot list head: %u\n",
@@ -419,34 +422,40 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
if (sb->s_first_error_time) {
tm = sb->s_first_error_time;
fprintf(f, "First error time: %s", ctime(&tm));
- memset(buf, 0, sizeof(buf));
- strncpy(buf, (char *)sb->s_first_error_func,
- sizeof(sb->s_first_error_func));
- fprintf(f, "First error function: %s\n", buf);
+ fprintf(f, "First error function: %.*s\n",
+ EXT2_LEN_STR(sb->s_first_error_func));
fprintf(f, "First error line #: %u\n",
sb->s_first_error_line);
- fprintf(f, "First error inode #: %u\n",
- sb->s_first_error_ino);
- fprintf(f, "First error block #: %llu\n",
- sb->s_first_error_block);
+ if (sb->s_first_error_ino)
+ fprintf(f, "First error inode #: %u\n",
+ sb->s_first_error_ino);
+ if (sb->s_first_error_block)
+ fprintf(f, "First error block #: %llu\n",
+ (unsigned long long) sb->s_first_error_block);
+ if (sb->s_first_error_errcode)
+ fprintf(f, "First error err: %s\n",
+ e2p_errcode2str(sb->s_first_error_errcode));
}
if (sb->s_last_error_time) {
tm = sb->s_last_error_time;
fprintf(f, "Last error time: %s", ctime(&tm));
- memset(buf, 0, sizeof(buf));
- strncpy(buf, (char *)sb->s_last_error_func,
- sizeof(sb->s_last_error_func));
- fprintf(f, "Last error function: %s\n", buf);
+ fprintf(f, "Last error function: %.*s\n",
+ EXT2_LEN_STR(sb->s_last_error_func));
fprintf(f, "Last error line #: %u\n",
sb->s_last_error_line);
- fprintf(f, "Last error inode #: %u\n",
- sb->s_last_error_ino);
- fprintf(f, "Last error block #: %llu\n",
- sb->s_last_error_block);
+ if (sb->s_last_error_ino)
+ fprintf(f, "Last error inode #: %u\n",
+ sb->s_last_error_ino);
+ if (sb->s_last_error_block)
+ fprintf(f, "Last error block #: %llu\n",
+ (unsigned long long) sb->s_last_error_block);
+ if (sb->s_last_error_errcode)
+ fprintf(f, "Last error err: %s\n",
+ e2p_errcode2str(sb->s_last_error_errcode));
}
if (ext2fs_has_feature_mmp(sb)) {
fprintf(f, "MMP block number: %llu\n",
- (long long)sb->s_mmp_block);
+ (unsigned long long) sb->s_mmp_block);
fprintf(f, "MMP update interval: %u\n",
sb->s_mmp_update_interval);
}
diff --git a/lib/e2p/pf.c b/lib/e2p/pf.c
index 0c6998c4..81e3bb26 100644
--- a/lib/e2p/pf.c
+++ b/lib/e2p/pf.c
@@ -44,10 +44,12 @@ static struct flags_name flags_array[] = {
{ EXT2_TOPDIR_FL, "T", "Top_of_Directory_Hierarchies" },
{ EXT4_EXTENTS_FL, "e", "Extents" },
{ FS_NOCOW_FL, "C", "No_COW" },
+ { FS_DAX_FL, "x", "DAX" },
{ EXT4_CASEFOLD_FL, "F", "Casefold" },
{ EXT4_INLINE_DATA_FL, "N", "Inline_Data" },
{ EXT4_PROJINHERIT_FL, "P", "Project_Hierarchy" },
{ EXT4_VERITY_FL, "V", "Verity" },
+ { EXT2_NOCOMPR_FL, "m", "Dont_Compress" },
{ 0, NULL, NULL }
};
@@ -75,4 +77,3 @@ void print_flags (FILE * f, unsigned long flags, unsigned options)
if (long_opt && first)
fputs("---", f);
}
-
diff --git a/lib/et/Makefile.in b/lib/et/Makefile.in
index 16e29ea4..d411f231 100644
--- a/lib/et/Makefile.in
+++ b/lib/et/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/et
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
DEP_MAKEFILE = $(DEP_LIB_MAKEFILES)
diff --git a/lib/et/error_message.c b/lib/et/error_message.c
index bd18be78..cd9f57f5 100644
--- a/lib/et/error_message.c
+++ b/lib/et/error_message.c
@@ -113,6 +113,11 @@ gettextf set_com_err_gettext(gettextf new_proc)
return x;
}
+#ifdef __GNU__
+#define SYS_ERR_BASE 0x40000000
+#else
+#define SYS_ERR_BASE 0
+#endif
const char * error_message (errcode_t code)
{
@@ -124,14 +129,14 @@ const char * error_message (errcode_t code)
offset = (int) (code & ((1<<ERRCODE_RANGE)-1));
table_num = code - offset;
- if (!table_num) {
+ if (table_num == SYS_ERR_BASE) {
#ifdef HAS_SYS_ERRLIST
- if (offset < sys_nerr)
- return(sys_errlist[offset]);
+ if (code < sys_nerr)
+ return(sys_errlist[code]);
else
goto oops;
#else
- cp = strerror(offset);
+ cp = strerror(code);
if (cp)
return(cp);
else
diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index c2163bf5..5d9af86e 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -4,6 +4,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/ext2fs
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
DEPEND_CFLAGS = -I$(top_srcdir)/debugfs -I$(srcdir)/../../e2fsck -DDEBUGFS
# This nastiness is needed because of jfs_user.h hackery; when we finally
# clean up this mess, we should be able to drop it
@@ -377,7 +378,7 @@ extent_cmds.c extent_cmds.h: $(top_srcdir)/debugfs/extent_cmds.ct
debugfs.o: $(top_srcdir)/debugfs/debugfs.c
$(E) " CC $<"
- $(Q) $(CC) $(DEBUGFS_CFLAGS) -c $< -o $@
+ $(Q) $(CC) $(DEBUGFS_CFLAGS) -DSKIP_GLOBDEFS -c $< -o $@
extent_inode.o: $(top_srcdir)/debugfs/extent_inode.c
$(E) " CC $<"
@@ -713,7 +714,8 @@ blkmap64_rb.o: $(srcdir)/blkmap64_rb.c $(top_builddir)/lib/config.h \
$(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
$(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
$(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
- $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/bmap64.h $(srcdir)/rbtree.h
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/bmap64.h $(srcdir)/rbtree.h \
+ $(srcdir)/compiler.h
block.o: $(srcdir)/block.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
@@ -967,7 +969,8 @@ link.o: $(srcdir)/link.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
$(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
- $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ $(srcdir)/ext2fsP.h
llseek.o: $(srcdir)/llseek.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_types.h
@@ -991,7 +994,7 @@ mkjournal.o: $(srcdir)/mkjournal.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
$(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
$(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
- $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h $(srcdir)/compiler.h
mmp.o: $(srcdir)/mmp.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
@@ -1183,7 +1186,7 @@ write_bb_file.o: $(srcdir)/write_bb_file.c $(top_builddir)/lib/config.h \
$(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
-rbtree.o: $(srcdir)/rbtree.c $(srcdir)/rbtree.h
+rbtree.o: $(srcdir)/rbtree.c $(srcdir)/rbtree.h $(srcdir)/compiler.h
tst_libext2fs.o: $(srcdir)/tst_libext2fs.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
@@ -1214,7 +1217,7 @@ debugfs.o: $(top_srcdir)/debugfs/debugfs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/debugfs/../version.h \
$(srcdir)/../../e2fsck/jfs_user.h $(srcdir)/kernel-jbd.h \
- $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h $(srcdir)/compiler.h \
$(top_srcdir)/lib/support/plausible.h
util.o: $(top_srcdir)/debugfs/util.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ss/ss.h \
@@ -1304,7 +1307,8 @@ logdump.o: $(top_srcdir)/debugfs/logdump.c $(top_builddir)/lib/config.h \
$(top_srcdir)/debugfs/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/../../e2fsck/jfs_user.h \
- $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
+ $(srcdir)/compiler.h $(srcdir)/fast_commit.h
htree.o: $(top_srcdir)/debugfs/htree.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
$(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
@@ -1408,19 +1412,21 @@ journal.o: $(top_srcdir)/debugfs/journal.c $(top_builddir)/lib/config.h \
$(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
$(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
$(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
- $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h $(srcdir)/compiler.h
revoke.o: $(top_srcdir)/e2fsck/revoke.c $(top_srcdir)/e2fsck/jfs_user.h \
$(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
$(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
- $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
+ $(srcdir)/compiler.h
recovery.o: $(top_srcdir)/e2fsck/recovery.c $(top_srcdir)/e2fsck/jfs_user.h \
$(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
$(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
- $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
+ $(srcdir)/compiler.h
do_journal.o: $(top_srcdir)/debugfs/do_journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
$(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
@@ -1432,5 +1438,5 @@ do_journal.o: $(top_srcdir)/debugfs/do_journal.c $(top_builddir)/lib/config.h \
$(top_srcdir)/debugfs/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/kernel-jbd.h \
- $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h $(srcdir)/compiler.h \
$(top_srcdir)/debugfs/journal.h $(srcdir)/../../e2fsck/jfs_user.h
diff --git a/lib/ext2fs/bitmaps.c b/lib/ext2fs/bitmaps.c
index e25db2c6..834a3962 100644
--- a/lib/ext2fs/bitmaps.c
+++ b/lib/ext2fs/bitmaps.c
@@ -62,7 +62,8 @@ errcode_t ext2fs_allocate_inode_bitmap(ext2_filsys fs,
start = 1;
end = fs->super->s_inodes_count;
- real_end = (EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count);
+ real_end = (__u64)EXT2_INODES_PER_GROUP(fs->super) *
+ fs->group_desc_count;
/* Are we permitted to use new-style bitmaps? */
if (fs->flags & EXT2_FLAG_64BITS)
diff --git a/lib/ext2fs/blkmap64_ba.c b/lib/ext2fs/blkmap64_ba.c
index 85cb38d2..5d8f1548 100644
--- a/lib/ext2fs/blkmap64_ba.c
+++ b/lib/ext2fs/blkmap64_ba.c
@@ -313,7 +313,7 @@ static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap)
#ifdef ENABLE_BMAP_STATS
static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap)
{
- fprintf(stderr, "%16llu Bytes used by bitarray\n",
+ fprintf(stderr, "%16llu Bytes used by bitarray\n", (unsigned long long)
((bitmap->real_end - bitmap->start) >> 3) + 1 +
sizeof(struct ext2fs_ba_private_struct));
}
diff --git a/lib/ext2fs/blkmap64_rb.c b/lib/ext2fs/blkmap64_rb.c
index 1fd55274..0df58dc7 100644
--- a/lib/ext2fs/blkmap64_rb.c
+++ b/lib/ext2fs/blkmap64_rb.c
@@ -80,7 +80,8 @@ static void print_tree(struct rb_root *root)
node = ext2fs_rb_next(node)) {
ext = node_to_extent(node);
fprintf(stderr, "\t\t\t--> (%llu -> %llu)\n",
- ext->start, ext->start + ext->count);
+ (unsigned long long) ext->start,
+ (unsigned long long) ext->start + ext->count);
}
fprintf(stderr, "\t\t\t=================================\n");
}
@@ -96,16 +97,18 @@ static void check_tree(struct rb_root *root, const char *msg)
if (ext->count == 0) {
fprintf(stderr, "Tree Error: count is zero\n");
fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
- ext->start, ext->start + ext->count,
- ext->count);
+ (unsigned long long) ext->start,
+ (unsigned long long) ext->start + ext->count,
+ (unsigned long long) ext->count);
goto err_out;
}
if (ext->start + ext->count < ext->start) {
fprintf(stderr,
"Tree Error: start or count is crazy\n");
fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
- ext->start, ext->start + ext->count,
- ext->count);
+ (unsigned long long) ext->start,
+ (unsigned long long) ext->start + ext->count,
+ (unsigned long long) ext->count);
goto err_out;
}
@@ -113,24 +116,28 @@ static void check_tree(struct rb_root *root, const char *msg)
if (old->start > ext->start) {
fprintf(stderr, "Tree Error: start is crazy\n");
fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
- old->start, old->start + old->count,
- old->count);
+ (unsigned long long) old->start,
+ (unsigned long long) old->start + old->count,
+ (unsigned long long) old->count);
fprintf(stderr,
"extent next: %llu -> %llu (%llu)\n",
- ext->start, ext->start + ext->count,
- ext->count);
+ (unsigned long long) ext->start,
+ (unsigned long long) ext->start + ext->count,
+ (unsigned long long) ext->count);
goto err_out;
}
if ((old->start + old->count) >= ext->start) {
fprintf(stderr,
"Tree Error: extent is crazy\n");
fprintf(stderr, "extent: %llu -> %llu (%llu)\n",
- old->start, old->start + old->count,
- old->count);
+ (unsigned long long) old->start,
+ (unsigned long long) old->start + old->count,
+ (unsigned long long) old->count);
fprintf(stderr,
"extent next: %llu -> %llu (%llu)\n",
- ext->start, ext->start + ext->count,
- ext->count);
+ (unsigned long long) ext->start,
+ (unsigned long long) ext->start + ext->count,
+ (unsigned long long) ext->count);
goto err_out;
}
}
@@ -949,15 +956,17 @@ static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap)
bp->test_hit, t_hit, bp->mark_hit, m_hit);
#endif
fprintf(stderr, "%16llu extents (%llu bytes)\n",
- count, ((count * sizeof(struct bmap_rb_extent)) +
- sizeof(struct ext2fs_rb_private)));
+ (unsigned long long) count, (unsigned long long)
+ ((count * sizeof(struct bmap_rb_extent)) +
+ sizeof(struct ext2fs_rb_private)));
fprintf(stderr, "%16llu bits minimum size\n",
- min_size);
+ (unsigned long long) min_size);
fprintf(stderr, "%16llu bits maximum size\n"
"%16llu bits average size\n",
- max_size, avg_size);
- fprintf(stderr, "%16llu bits set in bitmap (out of %llu)\n", size,
- bitmap->real_end - bitmap->start);
+ (unsigned long long) max_size, (unsigned long long) avg_size);
+ fprintf(stderr, "%16llu bits set in bitmap (out of %llu)\n",
+ (unsigned long long) size,
+ (unsigned long long) bitmap->real_end - bitmap->start);
fprintf(stderr,
"%16.4lf memory / bitmap bit memory ratio (bitarray = 1)\n",
eff);
diff --git a/lib/ext2fs/blknum.c b/lib/ext2fs/blknum.c
index 9ee5c66e..3458b128 100644
--- a/lib/ext2fs/blknum.c
+++ b/lib/ext2fs/blknum.c
@@ -86,6 +86,22 @@ blk64_t ext2fs_inode_i_blocks(ext2_filsys fs,
}
/*
+ * Return the inode i_blocks in stat (512 byte) units
+ */
+blk64_t ext2fs_get_stat_i_blocks(ext2_filsys fs,
+ struct ext2_inode *inode)
+{
+ blk64_t ret = inode->i_blocks;
+
+ if (ext2fs_has_feature_huge_file(fs->super)) {
+ ret += ((long long) inode->osd2.linux2.l_i_blocks_hi) << 32;
+ if (inode->i_flags & EXT4_HUGE_FILE_FL)
+ ret *= (fs->blocksize / 512);
+ }
+ return ret;
+}
+
+/*
* Return the fs block count
*/
blk64_t ext2fs_blocks_count(struct ext2_super_block *super)
@@ -185,9 +201,42 @@ struct ext2_group_desc *ext2fs_group_desc(ext2_filsys fs,
struct opaque_ext2_group_desc *gdp,
dgrp_t group)
{
- int desc_size = EXT2_DESC_SIZE(fs->super) & ~7;
-
- return (struct ext2_group_desc *)((char *)gdp + group * desc_size);
+ struct ext2_group_desc *ret_gdp;
+ errcode_t retval;
+ static char *buf = 0;
+ static int bufsize = 0;
+ blk64_t blk;
+ int desc_size = EXT2_DESC_SIZE(fs->super) & ~7;
+ int desc_per_blk = EXT2_DESC_PER_BLOCK(fs->super);
+
+ if (group > fs->group_desc_count)
+ return NULL;
+ if (gdp)
+ return (struct ext2_group_desc *)((char *)gdp +
+ group * desc_size);
+ /*
+ * If fs->group_desc wasn't read in when the file system was
+ * opened, then read it on demand here.
+ */
+ if (bufsize < fs->blocksize)
+ ext2fs_free_mem(&buf);
+ if (!buf) {
+ retval = ext2fs_get_mem(fs->blocksize, &buf);
+ if (retval)
+ return NULL;
+ bufsize = fs->blocksize;
+ }
+ blk = ext2fs_descriptor_block_loc2(fs, fs->super->s_first_data_block,
+ group / desc_per_blk);
+ retval = io_channel_read_blk(fs->io, blk, 1, buf);
+ if (retval)
+ return NULL;
+ ret_gdp = (struct ext2_group_desc *)
+ (buf + ((group % desc_per_blk) * desc_size));
+#ifdef WORDS_BIGENDIAN
+ ext2fs_swap_group_desc2(fs, ret_gdp);
+#endif
+ return ret_gdp;
}
/* Do the same but as an ext4 group desc for internal use here */
@@ -521,18 +570,32 @@ void ext2fs_file_acl_block_set(ext2_filsys fs, struct ext2_inode *inode,
errcode_t ext2fs_inode_size_set(ext2_filsys fs, struct ext2_inode *inode,
ext2_off64_t size)
{
- /* Only regular files get to be larger than 4GB */
- if (!LINUX_S_ISREG(inode->i_mode) && (size >> 32))
- return EXT2_ET_FILE_TOO_BIG;
-
- /* If we're writing a large file, set the large_file flag */
- if (LINUX_S_ISREG(inode->i_mode) &&
- ext2fs_needs_large_file_feature(size) &&
- (!ext2fs_has_feature_large_file(fs->super) ||
- fs->super->s_rev_level == EXT2_GOOD_OLD_REV)) {
- ext2fs_set_feature_large_file(fs->super);
- ext2fs_update_dynamic_rev(fs);
- ext2fs_mark_super_dirty(fs);
+ if (size < 0)
+ return EINVAL;
+
+ /* If writing a large inode, set the large_file or large_dir flag */
+ if (ext2fs_needs_large_file_feature(size)) {
+ int dirty_sb = 0;
+
+ if (LINUX_S_ISREG(inode->i_mode)) {
+ if (!ext2fs_has_feature_large_file(fs->super)) {
+ ext2fs_set_feature_large_file(fs->super);
+ dirty_sb = 1;
+ }
+ } else if (LINUX_S_ISDIR(inode->i_mode)) {
+ if (!ext2fs_has_feature_largedir(fs->super)) {
+ ext2fs_set_feature_largedir(fs->super);
+ dirty_sb = 1;
+ }
+ } else {
+ /* Only regular files get to be larger than 4GB */
+ return EXT2_ET_FILE_TOO_BIG;
+ }
+ if (dirty_sb) {
+ if (fs->super->s_rev_level == EXT2_GOOD_OLD_REV)
+ ext2fs_update_dynamic_rev(fs);
+ ext2fs_mark_super_dirty(fs);
+ }
}
inode->i_size = size & 0xffffffff;
diff --git a/lib/ext2fs/closefs.c b/lib/ext2fs/closefs.c
index 1d4d5b7f..69cbdd8c 100644
--- a/lib/ext2fs/closefs.c
+++ b/lib/ext2fs/closefs.c
@@ -293,6 +293,11 @@ errcode_t ext2fs_flush2(ext2_filsys fs, int flags)
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
+ if ((fs->flags & EXT2_FLAG_SUPER_ONLY) == 0 &&
+ !ext2fs_has_feature_journal_dev(fs->super) &&
+ fs->group_desc == NULL)
+ return EXT2_ET_NO_GDESC;
+
fs_state = fs->super->s_state;
feature_incompat = fs->super->s_feature_incompat;
@@ -328,18 +333,22 @@ errcode_t ext2fs_flush2(ext2_filsys fs, int flags)
retval = ext2fs_get_mem(SUPERBLOCK_SIZE, &super_shadow);
if (retval)
goto errout;
- retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize,
- &group_shadow);
- if (retval)
- goto errout;
memcpy(super_shadow, fs->super, sizeof(struct ext2_super_block));
- memcpy(group_shadow, fs->group_desc, (size_t) fs->blocksize *
- fs->desc_blocks);
-
ext2fs_swap_super(super_shadow);
- for (j = 0; j < fs->group_desc_count; j++) {
- gdp = ext2fs_group_desc(fs, group_shadow, j);
- ext2fs_swap_group_desc2(fs, gdp);
+
+ if (((fs->flags & EXT2_FLAG_SUPER_ONLY) == 0) &&
+ !ext2fs_has_feature_journal_dev(fs->super)) {
+ retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize,
+ &group_shadow);
+ if (retval)
+ goto errout;
+ memcpy(group_shadow, fs->group_desc, (size_t) fs->blocksize *
+ fs->desc_blocks);
+
+ for (j = 0; j < fs->group_desc_count; j++) {
+ gdp = ext2fs_group_desc(fs, group_shadow, j);
+ ext2fs_swap_group_desc2(fs, gdp);
+ }
}
#else
super_shadow = fs->super;
diff --git a/lib/ext2fs/compiler.h b/lib/ext2fs/compiler.h
new file mode 100644
index 00000000..9aa9b4ec
--- /dev/null
+++ b/lib/ext2fs/compiler.h
@@ -0,0 +1,22 @@
+#ifndef _EXT2FS_COMPILER_H
+#define _EXT2FS_COMPILER_H
+
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#undef offsetof
+#if __has_builtin(__builtin_offsetof)
+#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
+#elif defined(__compiler_offsetof)
+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
+#define container_of(ptr, type, member) ({ \
+ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+
+#endif /* _EXT2FS_COMPILER_H */
diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c
index 98236137..da32d942 100644
--- a/lib/ext2fs/csum.c
+++ b/lib/ext2fs/csum.c
@@ -263,17 +263,21 @@ static errcode_t __get_dirent_tail(ext2_filsys fs,
errcode_t retval = 0;
__u16 (*translate)(__u16) = (need_swab ? disk_to_host16 : do_nothing16);
+ if (fs->blocksize < 1024)
+ return EXT2_FILSYS_CORRUPTED; /* Should never happen */
+
d = dirent;
top = EXT2_DIRENT_TAIL(dirent, fs->blocksize);
- rec_len = translate(d->rec_len);
- while (rec_len && !(rec_len & 0x3)) {
- d = (struct ext2_dir_entry *)(((char *)d) + rec_len);
- if ((void *)d >= top)
- break;
+ while ((void *) d < top) {
rec_len = translate(d->rec_len);
+ if ((rec_len < 8) || (rec_len & 0x03))
+ return EXT2_ET_DIR_CORRUPTED;
+ d = (struct ext2_dir_entry *)(((char *)d) + rec_len);
}
+ if ((char *)d > ((char *)dirent + fs->blocksize))
+ return EXT2_ET_DIR_CORRUPTED;
if (d != top)
return EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
@@ -290,7 +294,8 @@ static errcode_t __get_dirent_tail(ext2_filsys fs,
int ext2fs_dirent_has_tail(ext2_filsys fs, struct ext2_dir_entry *dirent)
{
- return __get_dirent_tail(fs, dirent, NULL, 0) == 0;
+ return __get_dirent_tail(fs, dirent, NULL, 0) !=
+ EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
}
static errcode_t ext2fs_dirent_csum(ext2_filsys fs, ext2_ino_t inum,
@@ -358,20 +363,31 @@ static errcode_t ext2fs_dirent_csum_set(ext2_filsys fs, ext2_ino_t inum,
return 0;
}
-static errcode_t ext2fs_dx_csum(ext2_filsys fs, ext2_ino_t inum,
- struct ext2_dir_entry *dirent,
- __u32 *crc, int count_offset, int count,
- struct ext2_dx_tail *t)
+errcode_t ext2fs_dx_csum(ext2_filsys fs, ext2_ino_t inum,
+ struct ext2_dir_entry *dirent,
+ __u32 *crc, struct ext2_dx_tail **ret_t)
{
errcode_t retval;
char *buf = (char *)dirent;
int size;
- __u32 old_csum, gen;
+ __u32 gen, dummy_csum = 0;
struct ext2_inode inode;
+ struct ext2_dx_tail *t;
+ struct ext2_dx_countlimit *c;
+ int count_offset, limit, count;
+
+ retval = __get_dx_countlimit(fs, dirent, &c, &count_offset, 1);
+ if (retval)
+ return retval;
+ limit = ext2fs_le16_to_cpu(c->limit);
+ count = ext2fs_le16_to_cpu(c->count);
+ if (count_offset + (limit * sizeof(struct ext2_dx_entry)) >
+ fs->blocksize - sizeof(struct ext2_dx_tail))
+ return EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
+ /* htree structs are accessed in LE order */
+ t = (struct ext2_dx_tail *)(((struct ext2_dx_entry *)c) + limit);
size = count_offset + (count * sizeof(struct ext2_dx_entry));
- old_csum = t->dt_checksum;
- t->dt_checksum = 0;
retval = ext2fs_read_inode(fs, inum, &inode);
if (retval)
@@ -383,10 +399,11 @@ static errcode_t ext2fs_dx_csum(ext2_filsys fs, ext2_ino_t inum,
sizeof(inum));
*crc = ext2fs_crc32c_le(*crc, (unsigned char *)&gen, sizeof(gen));
*crc = ext2fs_crc32c_le(*crc, (unsigned char *)buf, size);
- *crc = ext2fs_crc32c_le(*crc, (unsigned char *)t,
- sizeof(struct ext2_dx_tail));
- t->dt_checksum = old_csum;
+ *crc = ext2fs_crc32c_le(*crc, (unsigned char *)t, 4);
+ *crc = ext2fs_crc32c_le(*crc, (unsigned char *)&dummy_csum, 4);
+ if (ret_t)
+ *ret_t = t;
return 0;
}
@@ -395,22 +412,9 @@ static int ext2fs_dx_csum_verify(ext2_filsys fs, ext2_ino_t inum,
{
__u32 calculated;
errcode_t retval;
- struct ext2_dx_countlimit *c;
struct ext2_dx_tail *t;
- int count_offset, limit, count;
- retval = __get_dx_countlimit(fs, dirent, &c, &count_offset, 1);
- if (retval)
- return 1;
- limit = ext2fs_le16_to_cpu(c->limit);
- count = ext2fs_le16_to_cpu(c->count);
- if (count_offset + (limit * sizeof(struct ext2_dx_entry)) >
- fs->blocksize - sizeof(struct ext2_dx_tail))
- return 0;
- /* htree structs are accessed in LE order */
- t = (struct ext2_dx_tail *)(((struct ext2_dx_entry *)c) + limit);
- retval = ext2fs_dx_csum(fs, inum, dirent, &calculated, count_offset,
- count, t);
+ retval = ext2fs_dx_csum(fs, inum, dirent, &calculated, &t);
if (retval)
return 0;
@@ -422,22 +426,9 @@ static errcode_t ext2fs_dx_csum_set(ext2_filsys fs, ext2_ino_t inum,
{
__u32 crc;
errcode_t retval = 0;
- struct ext2_dx_countlimit *c;
struct ext2_dx_tail *t;
- int count_offset, limit, count;
- retval = __get_dx_countlimit(fs, dirent, &c, &count_offset, 1);
- if (retval)
- return retval;
- limit = ext2fs_le16_to_cpu(c->limit);
- count = ext2fs_le16_to_cpu(c->count);
- if (count_offset + (limit * sizeof(struct ext2_dx_entry)) >
- fs->blocksize - sizeof(struct ext2_dx_tail))
- return EXT2_ET_DIR_NO_SPACE_FOR_CSUM;
- t = (struct ext2_dx_tail *)(((struct ext2_dx_entry *)c) + limit);
-
- /* htree structs are accessed in LE order */
- retval = ext2fs_dx_csum(fs, inum, dirent, &crc, count_offset, count, t);
+ retval = ext2fs_dx_csum(fs, inum, dirent, &crc, &t);
if (retval)
return retval;
t->dt_checksum = ext2fs_cpu_to_le32(crc);
diff --git a/lib/ext2fs/dirhash.c b/lib/ext2fs/dirhash.c
index d560e20b..42fe98bb 100644
--- a/lib/ext2fs/dirhash.c
+++ b/lib/ext2fs/dirhash.c
@@ -20,6 +20,10 @@
#include "ext2fs.h"
#include "ext2fsP.h"
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
/*
* Keyed 32-bit hash function using TEA in a Davis-Meyer function
* H0 = Key
diff --git a/lib/ext2fs/expanddir.c b/lib/ext2fs/expanddir.c
index 9f023120..b5d5abd7 100644
--- a/lib/ext2fs/expanddir.c
+++ b/lib/ext2fs/expanddir.c
@@ -129,7 +129,10 @@ errcode_t ext2fs_expand_dir(ext2_filsys fs, ext2_ino_t dir)
if (retval)
return retval;
- inode.i_size += fs->blocksize;
+ retval = ext2fs_inode_size_set(fs, &inode,
+ EXT2_I_SIZE(&inode) + fs->blocksize);
+ if (retval)
+ return retval;
ext2fs_iblk_add_blocks(fs, &inode, es.newblocks);
retval = ext2fs_write_inode(fs, dir, &inode);
diff --git a/lib/ext2fs/ext2_err.c b/lib/ext2fs/ext2_err.c
index 7541d9f7..528fe9f7 100644
--- a/lib/ext2fs/ext2_err.c
+++ b/lib/ext2fs/ext2_err.c
@@ -8,7 +8,7 @@
#define N_(a) a
static const char * const text[] = {
- N_( "EXT2FS Library version v1.45.4-867-g4bc58792"),
+ N_( "EXT2FS Library version v1.46.2-1113-gb00aa279"),
N_( "Wrong magic number for ext2_filsys structure"),
N_( "Wrong magic number for badblocks_list structure"),
N_( "Wrong magic number for badblocks_iterate structure"),
@@ -187,6 +187,8 @@ static const char * const text[] = {
N_( "The journal superblock is corrupt"),
N_( "Inode is corrupted"),
N_( "Inode containing extended attribute value is corrupted"),
+ N_( "Group descriptors not loaded"),
+ N_( "The internal ext2_filsys data structure appears to be corrupted"),
0
};
@@ -201,7 +203,7 @@ struct et_list {
};
extern struct et_list *_et_list;
-const struct error_table et_ext2_error_table = { text, 2133571328L, 179 };
+const struct error_table et_ext2_error_table = { text, 2133571328L, 181 };
static struct et_list link = { 0, 0 };
diff --git a/lib/ext2fs/ext2_err.et.in b/lib/ext2fs/ext2_err.et.in
index b2ba71ad..cf0e00ea 100644
--- a/lib/ext2fs/ext2_err.et.in
+++ b/lib/ext2fs/ext2_err.et.in
@@ -545,4 +545,10 @@ ec EXT2_ET_INODE_CORRUPTED,
ec EXT2_ET_EA_INODE_CORRUPTED,
"Inode containing extended attribute value is corrupted"
+ec EXT2_ET_NO_GDESC,
+ "Group descriptors not loaded"
+
+ec EXT2_FILSYS_CORRUPTED,
+ "The internal ext2_filsys data structure appears to be corrupted"
+
end
diff --git a/lib/ext2fs/ext2_err.h b/lib/ext2fs/ext2_err.h
index b1c83e18..bfae93d5 100644
--- a/lib/ext2fs/ext2_err.h
+++ b/lib/ext2fs/ext2_err.h
@@ -184,6 +184,8 @@
#define EXT2_ET_CORRUPT_JOURNAL_SB (2133571504L)
#define EXT2_ET_INODE_CORRUPTED (2133571505L)
#define EXT2_ET_EA_INODE_CORRUPTED (2133571506L)
+#define EXT2_ET_NO_GDESC (2133571507L)
+#define EXT2_FILSYS_CORRUPTED (2133571508L)
extern const struct error_table et_ext2_error_table;
extern void initialize_ext2_error_table(void);
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 857658d9..e92a0452 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -269,8 +269,7 @@ struct ext2_dx_tail {
#define EXT2_MIN_DESC_SIZE_64BIT 64
#define EXT2_MAX_DESC_SIZE EXT2_MIN_BLOCK_SIZE
#define EXT2_DESC_SIZE(s) \
- ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? \
- (s)->s_desc_size : EXT2_MIN_DESC_SIZE)
+ (ext2fs_has_feature_64bit(s) ? (s)->s_desc_size : EXT2_MIN_DESC_SIZE)
#define EXT2_BLOCKS_PER_GROUP(s) (EXT2_SB(s)->s_blocks_per_group)
#define EXT2_INODES_PER_GROUP(s) (EXT2_SB(s)->s_inodes_per_group)
@@ -336,6 +335,7 @@ struct ext2_dx_tail {
/* EXT4_EOFBLOCKS_FL 0x00400000 was here */
#define FS_NOCOW_FL 0x00800000 /* Do not cow file */
#define EXT4_SNAPFILE_FL 0x01000000 /* Inode is a snapshot */
+#define FS_DAX_FL 0x02000000 /* Inode is DAX */
#define EXT4_SNAPFILE_DELETED_FL 0x04000000 /* Snapshot is being deleted */
#define EXT4_SNAPFILE_SHRUNK_FL 0x08000000 /* Snapshot shrink has completed */
#define EXT4_INLINE_DATA_FL 0x10000000 /* Inode has inline data */
@@ -543,6 +543,7 @@ struct ext2_inode *EXT2_INODE(struct ext2_inode_large *large_inode)
#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */
#define EXT2_ERROR_FS 0x0002 /* Errors detected */
#define EXT3_ORPHAN_FS 0x0004 /* Orphans being recovered */
+#define EXT4_FC_REPLAY 0x0020 /* Ext4 fast commit replay ongoing */
/*
* Misc. filesystem flags
@@ -683,8 +684,8 @@ struct ext2_super_block {
/*060*/ __u32 s_feature_incompat; /* incompatible feature set */
__u32 s_feature_ro_compat; /* readonly-compatible feature set */
/*068*/ __u8 s_uuid[16]; /* 128-bit uuid for volume */
-/*078*/ char s_volume_name[EXT2_LABEL_LEN]; /* volume name */
-/*088*/ char s_last_mounted[64]; /* directory where last mounted */
+/*078*/ __u8 s_volume_name[EXT2_LABEL_LEN]; /* volume name, no NUL? */
+/*088*/ __u8 s_last_mounted[64]; /* directory last mounted on, no NUL? */
/*0c8*/ __u32 s_algorithm_usage_bitmap; /* For compression */
/*
* Performance hints. Directory preallocation should only
@@ -732,18 +733,18 @@ struct ext2_super_block {
__u32 s_first_error_time; /* first time an error happened */
__u32 s_first_error_ino; /* inode involved in first error */
/*1a0*/ __u64 s_first_error_block; /* block involved in first error */
- __u8 s_first_error_func[32]; /* function where the error happened */
+ __u8 s_first_error_func[32]; /* function where error hit, no NUL? */
/*1c8*/ __u32 s_first_error_line; /* line number where error happened */
__u32 s_last_error_time; /* most recent time of an error */
/*1d0*/ __u32 s_last_error_ino; /* inode involved in last error */
__u32 s_last_error_line; /* line number where error happened */
__u64 s_last_error_block; /* block involved of last error */
-/*1e0*/ __u8 s_last_error_func[32]; /* function where the error happened */
+/*1e0*/ __u8 s_last_error_func[32]; /* function where error hit, no NUL? */
#define EXT4_S_ERR_END ext4_offsetof(struct ext2_super_block, s_mount_opts)
-/*200*/ __u8 s_mount_opts[64];
+/*200*/ __u8 s_mount_opts[64]; /* default mount options, no NUL? */
/*240*/ __u32 s_usr_quota_inum; /* inode number of user quota file */
__u32 s_grp_quota_inum; /* inode number of group quota file */
- __u32 s_overhead_blocks; /* overhead blocks/clusters in fs */
+ __u32 s_overhead_clusters; /* overhead blocks/clusters in fs */
/*24c*/ __u32 s_backup_bgs[2]; /* If sparse_super2 enabled */
/*254*/ __u8 s_encrypt_algos[4]; /* Encryption algorithms in use */
/*258*/ __u8 s_encrypt_pw_salt[16]; /* Salt used for string2key algorithm */
@@ -756,7 +757,8 @@ struct ext2_super_block {
__u8 s_lastcheck_hi;
__u8 s_first_error_time_hi;
__u8 s_last_error_time_hi;
- __u8 s_pad[2];
+ __u8 s_first_error_errcode;
+ __u8 s_last_error_errcode;
/*27c*/ __le16 s_encoding; /* Filename charset encoding */
__le16 s_encoding_flags; /* Filename charset encoding flags */
__le32 s_reserved[95]; /* Padding to the end of the block */
@@ -764,6 +766,7 @@ struct ext2_super_block {
};
#define EXT4_S_ERR_LEN (EXT4_S_ERR_END - EXT4_S_ERR_START)
+#define EXT2_LEN_STR(buf) (int)sizeof(buf), (char *)buf
/*
* Codes for operating systems
@@ -811,6 +814,7 @@ struct ext2_super_block {
/* #define EXT2_FEATURE_COMPAT_EXCLUDE_INODE 0x0080 not used, legacy */
#define EXT2_FEATURE_COMPAT_EXCLUDE_BITMAP 0x0100
#define EXT4_FEATURE_COMPAT_SPARSE_SUPER2 0x0200
+#define EXT4_FEATURE_COMPAT_FAST_COMMIT 0x0400
#define EXT4_FEATURE_COMPAT_STABLE_INODES 0x0800
@@ -913,6 +917,7 @@ EXT4_FEATURE_COMPAT_FUNCS(dir_index, 2, DIR_INDEX)
EXT4_FEATURE_COMPAT_FUNCS(lazy_bg, 2, LAZY_BG)
EXT4_FEATURE_COMPAT_FUNCS(exclude_bitmap, 2, EXCLUDE_BITMAP)
EXT4_FEATURE_COMPAT_FUNCS(sparse_super2, 4, SPARSE_SUPER2)
+EXT4_FEATURE_COMPAT_FUNCS(fast_commit, 4, FAST_COMMIT)
EXT4_FEATURE_COMPAT_FUNCS(stable_inodes, 4, STABLE_INODES)
EXT4_FEATURE_RO_COMPAT_FUNCS(sparse_super, 2, SPARSE_SUPER)
@@ -1131,9 +1136,9 @@ static inline unsigned int ext2fs_dir_rec_len(__u8 name_len,
struct mmp_struct {
__u32 mmp_magic; /* Magic number for MMP */
__u32 mmp_seq; /* Sequence no. updated periodically */
- __u64 mmp_time; /* Time last updated */
- char mmp_nodename[64]; /* Node which last updated MMP block */
- char mmp_bdevname[32]; /* Bdev which last updated MMP block */
+ __u64 mmp_time; /* Time last updated (seconds) */
+ __u8 mmp_nodename[64]; /* Node updating MMP block, no NUL? */
+ __u8 mmp_bdevname[32]; /* Bdev updating MMP block, no NUL? */
__u16 mmp_check_interval; /* Changed mmp_check_interval */
__u16 mmp_pad1;
__u32 mmp_pad2[226];
diff --git a/lib/ext2fs/ext2_io.h b/lib/ext2fs/ext2_io.h
index 5540900a..95c25a7b 100644
--- a/lib/ext2fs/ext2_io.h
+++ b/lib/ext2fs/ext2_io.h
@@ -33,6 +33,7 @@ typedef struct struct_io_stats *io_stats;
#define CHANNEL_FLAGS_WRITETHROUGH 0x01
#define CHANNEL_FLAGS_DISCARD_ZEROES 0x02
#define CHANNEL_FLAGS_BLOCK_DEVICE 0x04
+#define CHANNEL_FLAGS_THREADS 0x08
#define io_channel_discard_zeroes_data(i) (i->flags & CHANNEL_FLAGS_DISCARD_ZEROES)
@@ -104,6 +105,8 @@ struct struct_io_manager {
#define IO_FLAG_EXCLUSIVE 0x0002
#define IO_FLAG_DIRECT_IO 0x0004
#define IO_FLAG_FORCE_BOUNCE 0x0008
+#define IO_FLAG_THREADS 0x0010
+#define IO_FLAG_NOCACHE 0x0020
/*
* Convenience functions....
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index 5012b50d..df150f00 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -77,8 +77,8 @@ typedef __u32 __bitwise ext2_ino_t;
typedef __u32 __bitwise blk_t;
typedef __u64 __bitwise blk64_t;
typedef __u32 __bitwise dgrp_t;
-typedef __u32 __bitwise ext2_off_t;
-typedef __u64 __bitwise ext2_off64_t;
+typedef __s32 __bitwise ext2_off_t;
+typedef __s64 __bitwise ext2_off64_t;
typedef __s64 __bitwise e2_blkcnt_t;
typedef __u32 __bitwise ext2_dirhash_t;
@@ -206,6 +206,7 @@ typedef struct ext2_file *ext2_file_t;
#define EXT2_FLAG_IGNORE_SB_ERRORS 0x800000
#define EXT2_FLAG_BBITMAP_TAIL_PROBLEM 0x1000000
#define EXT2_FLAG_IBITMAP_TAIL_PROBLEM 0x2000000
+#define EXT2_FLAG_THREADS 0x4000000
/*
* Special flag in the ext2 inode i_flag field that means that this is
@@ -220,6 +221,12 @@ typedef struct ext2_file *ext2_file_t;
#define EXT2_MKJOURNAL_LAZYINIT 0x0000002 /* don't zero journal inode before use*/
#define EXT2_MKJOURNAL_NO_MNT_CHECK 0x0000004 /* don't check mount status */
+/*
+ * Normal journal area size to fast commit area size ratio. This is used to
+ * set default size of fast commit area.
+ */
+#define EXT2_JOURNAL_TO_FC_BLKS_RATIO 64
+
struct blk_alloc_ctx;
struct opaque_ext2_group_desc;
@@ -612,6 +619,7 @@ typedef struct ext2_icount *ext2_icount_t;
EXT2_FEATURE_COMPAT_DIR_INDEX|\
EXT2_FEATURE_COMPAT_EXT_ATTR|\
EXT4_FEATURE_COMPAT_SPARSE_SUPER2|\
+ EXT4_FEATURE_COMPAT_FAST_COMMIT|\
EXT4_FEATURE_COMPAT_STABLE_INODES)
#ifdef CONFIG_MMP
@@ -687,6 +695,14 @@ struct ext2_xattr_handle;
#define XATTR_CHANGED 2
/*
+ * flags for ext2fs_rw_bitmaps()
+ */
+#define EXT2FS_BITMAPS_WRITE 0x0001
+#define EXT2FS_BITMAPS_BLOCK 0x0002
+#define EXT2FS_BITMAPS_INODE 0x0004
+#define EXT2FS_BITMAPS_VALID_FLAGS 0x0007
+
+/*
* function prototypes
*/
static inline int ext2fs_has_group_desc_csum(ext2_filsys fs)
@@ -836,10 +852,6 @@ extern void ext2fs_free_block_bitmap(ext2fs_block_bitmap bitmap);
extern void ext2fs_free_inode_bitmap(ext2fs_inode_bitmap bitmap);
extern errcode_t ext2fs_copy_bitmap(ext2fs_generic_bitmap src,
ext2fs_generic_bitmap *dest);
-extern errcode_t ext2fs_write_inode_bitmap(ext2_filsys fs);
-extern errcode_t ext2fs_write_block_bitmap (ext2_filsys fs);
-extern errcode_t ext2fs_read_inode_bitmap (ext2_filsys fs);
-extern errcode_t ext2fs_read_block_bitmap(ext2_filsys fs);
extern errcode_t ext2fs_allocate_block_bitmap(ext2_filsys fs,
const char *descr,
ext2fs_block_bitmap *ret);
@@ -858,8 +870,6 @@ extern errcode_t ext2fs_fudge_block_bitmap_end2(ext2fs_block_bitmap bitmap,
blk64_t end, blk64_t *oend);
extern void ext2fs_clear_inode_bitmap(ext2fs_inode_bitmap bitmap);
extern void ext2fs_clear_block_bitmap(ext2fs_block_bitmap bitmap);
-extern errcode_t ext2fs_read_bitmaps(ext2_filsys fs);
-extern errcode_t ext2fs_write_bitmaps(ext2_filsys fs);
extern errcode_t ext2fs_resize_inode_bitmap(__u32 new_end, __u32 new_real_end,
ext2fs_inode_bitmap bmap);
extern errcode_t ext2fs_resize_inode_bitmap2(__u64 new_end,
@@ -909,7 +919,9 @@ extern int ext2fs_group_blocks_count(ext2_filsys fs, dgrp_t group);
extern blk64_t ext2fs_inode_data_blocks2(ext2_filsys fs,
struct ext2_inode *inode);
extern blk64_t ext2fs_inode_i_blocks(ext2_filsys fs,
- struct ext2_inode *inode);
+ struct ext2_inode *inode);
+extern blk64_t ext2fs_get_stat_i_blocks(ext2_filsys fs,
+ struct ext2_inode *inode);
extern blk64_t ext2fs_blocks_count(struct ext2_super_block *super);
extern void ext2fs_blocks_count_set(struct ext2_super_block *super,
blk64_t blk);
@@ -1081,6 +1093,9 @@ extern errcode_t ext2fs_get_dx_countlimit(ext2_filsys fs,
struct ext2_dir_entry *dirent,
struct ext2_dx_countlimit **cc,
int *offset);
+extern errcode_t ext2fs_dx_csum(ext2_filsys fs, ext2_ino_t inum,
+ struct ext2_dir_entry *dirent,
+ __u32 *crc, struct ext2_dx_tail **ret_t);
extern errcode_t ext2fs_extent_block_csum_set(ext2_filsys fs,
ext2_ino_t inum,
struct ext3_extent_header *eh);
@@ -1320,6 +1335,10 @@ extern errcode_t ext2fs_extent_fix_parents(ext2_extent_handle_t handle);
extern size_t ext2fs_max_extent_depth(ext2_extent_handle_t handle);
extern errcode_t ext2fs_fix_extents_checksums(ext2_filsys fs, ext2_ino_t ino,
struct ext2_inode *inode);
+extern errcode_t ext2fs_count_blocks(ext2_filsys fs, ext2_ino_t ino,
+ struct ext2_inode *inode, blk64_t *ret_count);
+extern errcode_t ext2fs_decode_extent(struct ext2fs_extent *to, void *from,
+ int len);
/* fallocate.c */
#define EXT2_FALLOCATE_ZERO_BLOCKS (0x1)
@@ -1438,6 +1457,8 @@ errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap,
void *in);
errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
ext2fs_block_bitmap *bitmap);
+errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
+ blk64_t end, blk64_t *out);
/* get_num_dirs.c */
extern errcode_t ext2fs_get_num_dirs(ext2_filsys fs, ext2_ino_t *ret_num_dirs);
@@ -1476,6 +1497,7 @@ errcode_t ext2fs_write_ind_block(ext2_filsys fs, blk_t blk, void *buf);
extern errcode_t ext2fs_initialize(const char *name, int flags,
struct ext2_super_block *param,
io_manager manager, ext2_filsys *ret_fs);
+extern errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs, int super_only);
/* icount.c */
extern void ext2fs_free_icount(ext2_icount_t icount);
@@ -1605,12 +1627,23 @@ extern errcode_t ext2fs_new_dir_inline_data(ext2_filsys fs, ext2_ino_t dir_ino,
/* nls_utf8.c */
extern const struct ext2fs_nls_table *ext2fs_load_nls_table(int encoding);
+extern int ext2fs_check_encoded_name(const struct ext2fs_nls_table *table,
+ char *s, size_t len, char **pos);
+extern int ext2fs_casefold_cmp(const struct ext2fs_nls_table *table,
+ const unsigned char *str1, size_t len1,
+ const unsigned char *str2, size_t len2);
/* mkdir.c */
extern errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
const char *name);
/* mkjournal.c */
+struct ext2fs_journal_params {
+ blk_t num_journal_blocks;
+ blk_t num_fc_blocks;
+};
+extern errcode_t ext2fs_get_journal_params(
+ struct ext2fs_journal_params *params, ext2_filsys fs);
extern errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num,
blk_t *ret_blk, int *ret_count);
extern errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num,
@@ -1618,12 +1651,18 @@ extern errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num,
extern errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
__u32 num_blocks, int flags,
char **ret_jsb);
+extern errcode_t ext2fs_create_journal_superblock2(ext2_filsys fs,
+ struct ext2fs_journal_params *params,
+ int flags, char **ret_jsb);
extern errcode_t ext2fs_add_journal_device(ext2_filsys fs,
ext2_filsys journal_dev);
extern errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t num_blocks,
int flags);
extern errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
blk64_t goal, int flags);
+extern errcode_t ext2fs_add_journal_inode3(ext2_filsys fs,
+ struct ext2fs_journal_params *params,
+ blk64_t goal, int flags);
extern int ext2fs_default_journal_size(__u64 num_blocks);
extern int ext2fs_journal_sb_start(int blocksize);
@@ -1653,6 +1692,10 @@ extern errcode_t ext2fs_get_pathname(ext2_filsys fs, ext2_ino_t dir, ext2_ino_t
char **name);
/* link.c */
+#define EXT2FS_UNLINK_FORCE 0x1 /* Forcefully unlink even if
+ * the inode number doesn't
+ * match the dirent
+ */
errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name,
ext2_ino_t ino, int flags);
errcode_t ext2fs_unlink(ext2_filsys fs, ext2_ino_t dir, const char *name,
@@ -1694,6 +1737,15 @@ extern errcode_t ext2fs_read_bb_FILE(ext2_filsys fs, FILE *f,
/* res_gdt.c */
extern errcode_t ext2fs_create_resize_inode(ext2_filsys fs);
+/* rw_bitmaps.c */
+extern errcode_t ext2fs_rw_bitmaps(ext2_filsys fs, int flags, int num_threads);
+extern errcode_t ext2fs_read_bitmaps(ext2_filsys fs);
+extern errcode_t ext2fs_read_inode_bitmap (ext2_filsys fs);
+extern errcode_t ext2fs_read_block_bitmap(ext2_filsys fs);
+extern errcode_t ext2fs_write_bitmaps(ext2_filsys fs);
+extern errcode_t ext2fs_write_inode_bitmap(ext2_filsys fs);
+extern errcode_t ext2fs_write_block_bitmap (ext2_filsys fs);
+
/*sha256.c */
#define EXT2FS_SHA256_LENGTH 32
#if 0
@@ -1761,6 +1813,8 @@ extern errcode_t ext2fs_get_arrayzero(unsigned long count,
extern errcode_t ext2fs_free_mem(void *ptr);
extern errcode_t ext2fs_resize_mem(unsigned long old_size,
unsigned long size, void *ptr);
+extern errcode_t ext2fs_resize_array(unsigned long old_count, unsigned long count,
+ unsigned long size, void *ptr);
extern void ext2fs_mark_super_dirty(ext2_filsys fs);
extern void ext2fs_mark_changed(ext2_filsys fs);
extern int ext2fs_test_changed(ext2_filsys fs);
@@ -1838,7 +1892,8 @@ _INLINE_ errcode_t ext2fs_get_memzero(unsigned long size, void *ptr)
return 0;
}
-_INLINE_ errcode_t ext2fs_get_array(unsigned long count, unsigned long size, void *ptr)
+_INLINE_ errcode_t ext2fs_get_array(unsigned long count, unsigned long size,
+ void *ptr)
{
if (count && (~0UL)/count < size)
return EXT2_ET_NO_MEMORY;
@@ -1848,15 +1903,10 @@ _INLINE_ errcode_t ext2fs_get_array(unsigned long count, unsigned long size, voi
_INLINE_ errcode_t ext2fs_get_arrayzero(unsigned long count,
unsigned long size, void *ptr)
{
- void *pp;
-
if (count && (~0UL)/count < size)
return EXT2_ET_NO_MEMORY;
- pp = calloc(count, size);
- if (!pp)
- return EXT2_ET_NO_MEMORY;
- memcpy(ptr, &pp, sizeof(pp));
- return 0;
+
+ return ext2fs_get_memzero((size_t)count * size, ptr);
}
/*
@@ -1890,6 +1940,36 @@ _INLINE_ errcode_t ext2fs_resize_mem(unsigned long EXT2FS_ATTR((unused)) old_siz
memcpy(ptr, &p, sizeof(p));
return 0;
}
+
+/*
+ * Resize array. The 'ptr' arg must point to a pointer.
+ */
+_INLINE_ errcode_t ext2fs_resize_array(unsigned long size,
+ unsigned long old_count,
+ unsigned long count, void *ptr)
+{
+ unsigned long old_size;
+ errcode_t retval;
+
+ if (count && (~0UL)/count < size)
+ return EXT2_ET_NO_MEMORY;
+
+ size *= count;
+ old_size = size * old_count;
+ retval = ext2fs_resize_mem(old_size, size, ptr);
+ if (retval)
+ return retval;
+
+ if (size > old_size) {
+ void *p;
+
+ memcpy(&p, ptr, sizeof(p));
+ memset((char *)p + old_size, 0, size - old_size);
+ memcpy(ptr, &p, sizeof(p));
+ }
+
+ return 0;
+}
#endif /* Custom memory routines */
/*
@@ -2011,7 +2091,13 @@ _INLINE_ blk_t ext2fs_inode_data_blocks(ext2_filsys fs,
_INLINE_ int ext2fs_htree_intnode_maxrecs(ext2_filsys fs, int blocks)
{
- return blocks * ((fs->blocksize - 8) / sizeof(struct ext2_dx_entry));
+ int csum_size = 0;
+
+ if ((EXT2_SB(fs->super)->s_feature_ro_compat &
+ EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) != 0)
+ csum_size = sizeof(struct ext2_dx_tail);
+ return blocks * ((fs->blocksize - (8 + csum_size)) /
+ sizeof(struct ext2_dx_entry));
}
/*
diff --git a/lib/ext2fs/ext2fsP.h b/lib/ext2fs/ext2fsP.h
index ad8b7d52..a20a0502 100644
--- a/lib/ext2fs/ext2fsP.h
+++ b/lib/ext2fs/ext2fsP.h
@@ -104,6 +104,11 @@ struct ext2fs_nls_ops {
int (*casefold)(const struct ext2fs_nls_table *charset,
const unsigned char *str, size_t len,
unsigned char *dest, size_t dlen);
+ int (*validate)(const struct ext2fs_nls_table *table,
+ char *s, size_t len, char **pos);
+ int (*casefold_cmp)(const struct ext2fs_nls_table *table,
+ const unsigned char *str1, size_t len1,
+ const unsigned char *str2, size_t len2);
};
/* Function prototypes */
diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c
index 78a823a9..148fae5b 100644
--- a/lib/ext2fs/ext_attr.c
+++ b/lib/ext2fs/ext_attr.c
@@ -293,7 +293,9 @@ errcode_t ext2fs_adjust_ea_refcount(ext2_filsys fs, blk_t blk,
/* Manipulate the contents of extended attribute regions */
struct ext2_xattr {
+ int name_index;
char *name;
+ char *short_name;
void *value;
unsigned int value_len;
ext2_ino_t ea_ino;
@@ -336,6 +338,7 @@ struct ea_name_index {
/* Keep these names sorted in order of decreasing specificity. */
static struct ea_name_index ea_names[] = {
+ {10, "gnu."},
{3, "system.posix_acl_default"},
{2, "system.posix_acl_access"},
{8, "system.richacl"},
@@ -626,7 +629,6 @@ static errcode_t convert_disk_buffer_to_posix_acl(const void *value, size_t size
default:
ext2fs_free_mem(&out);
return EINVAL;
- break;
}
entry++;
}
@@ -643,29 +645,23 @@ write_xattrs_to_buffer(ext2_filsys fs, struct ext2_xattr *attrs, int count,
struct ext2_xattr *x;
struct ext2_ext_attr_entry *e = entries_start;
char *end = (char *) entries_start + storage_size;
- const char *shortname;
unsigned int value_size;
- int idx, ret;
errcode_t err;
memset(entries_start, 0, storage_size);
for (x = attrs; x < attrs + count; x++) {
- /* Calculate index and shortname position */
- shortname = x->name;
- ret = find_ea_index(x->name, &shortname, &idx);
-
value_size = ((x->value_len + EXT2_EXT_ATTR_PAD - 1) /
EXT2_EXT_ATTR_PAD) * EXT2_EXT_ATTR_PAD;
/* Fill out e appropriately */
- e->e_name_len = strlen(shortname);
- e->e_name_index = (ret ? idx : 0);
+ e->e_name_len = strlen(x->short_name);
+ e->e_name_index = x->name_index;
e->e_value_size = x->value_len;
e->e_value_inum = x->ea_ino;
/* Store name */
- memcpy((char *)e + sizeof(*e), shortname, e->e_name_len);
+ memcpy((char *)e + sizeof(*e), x->short_name, e->e_name_len);
if (x->ea_ino) {
e->e_value_offs = 0;
} else {
@@ -875,6 +871,8 @@ static errcode_t read_xattrs_from_buffer(struct ext2_xattr_handle *handle,
memcpy(x->name + prefix_len,
(char *)entry + sizeof(*entry),
entry->e_name_len);
+ x->short_name = x->name + prefix_len;
+ x->name_index = entry->e_name_index;
/* Check & copy value */
if (!ext2fs_has_feature_ea_inode(handle->fs->super) &&
@@ -924,8 +922,8 @@ static errcode_t read_xattrs_from_buffer(struct ext2_xattr_handle *handle,
!(ea_inode->i_flags & EXT4_EA_INODE_FL) ||
ea_inode->i_links_count == 0)
err = EXT2_ET_EA_INODE_CORRUPTED;
- else if (ext2fs_file_get_size(ea_file) !=
- entry->e_value_size)
+ else if ((__u64) ext2fs_file_get_size(ea_file) !=
+ entry->e_value_size)
err = EXT2_ET_EA_BAD_VALUE_SIZE;
else
err = ext2fs_file_read(ea_file, x->value,
@@ -1302,7 +1300,8 @@ out:
}
static errcode_t xattr_update_entry(ext2_filsys fs, struct ext2_xattr *x,
- const char *name, const void *value,
+ const char *name, const char *short_name,
+ int index, const void *value,
size_t value_len, int in_inode)
{
ext2_ino_t ea_ino = 0;
@@ -1336,8 +1335,11 @@ static errcode_t xattr_update_entry(ext2_filsys fs, struct ext2_xattr *x,
goto fail;
}
- if (!x->name)
+ if (!x->name) {
x->name = new_name;
+ x->short_name = new_name + (short_name - name);
+ }
+ x->name_index = index;
if (x->value)
ext2fs_free_mem(&x->value);
@@ -1356,31 +1358,27 @@ fail:
}
static int xattr_find_position(struct ext2_xattr *attrs, int count,
- const char *name)
+ const char *shortname, int name_idx)
{
struct ext2_xattr *x;
int i;
- const char *shortname, *x_shortname;
- int name_idx, x_name_idx;
int shortname_len, x_shortname_len;
- find_ea_index(name, &shortname, &name_idx);
shortname_len = strlen(shortname);
for (i = 0, x = attrs; i < count; i++, x++) {
- find_ea_index(x->name, &x_shortname, &x_name_idx);
- if (name_idx < x_name_idx)
+ if (name_idx < x->name_index)
break;
- if (name_idx > x_name_idx)
+ if (name_idx > x->name_index)
continue;
- x_shortname_len = strlen(x_shortname);
+ x_shortname_len = strlen(x->short_name);
if (shortname_len < x_shortname_len)
break;
if (shortname_len > x_shortname_len)
continue;
- if (memcmp(shortname, x_shortname, shortname_len) <= 0)
+ if (memcmp(shortname, x->short_name, shortname_len) <= 0)
break;
}
return i;
@@ -1395,8 +1393,8 @@ static errcode_t xattr_array_update(struct ext2_xattr_handle *h,
struct ext2_xattr tmp;
int add_to_ibody;
int needed;
- int name_len, name_idx;
- const char *shortname;
+ int name_len, name_idx = 0;
+ const char *shortname = name;
int new_idx;
int ret;
@@ -1423,7 +1421,8 @@ static errcode_t xattr_array_update(struct ext2_xattr_handle *h,
/* Update the existing entry. */
ret = xattr_update_entry(h->fs, &h->attrs[old_idx], name,
- value, value_len, in_inode);
+ shortname, name_idx, value,
+ value_len, in_inode);
if (ret)
return ret;
if (h->ibody_count <= old_idx) {
@@ -1451,7 +1450,8 @@ static errcode_t xattr_array_update(struct ext2_xattr_handle *h,
if (old_idx >= 0) {
/* Update the existing entry. */
ret = xattr_update_entry(h->fs, &h->attrs[old_idx], name,
- value, value_len, in_inode);
+ shortname, name_idx, value,
+ value_len, in_inode);
if (ret)
return ret;
if (old_idx < h->ibody_count) {
@@ -1460,7 +1460,8 @@ static errcode_t xattr_array_update(struct ext2_xattr_handle *h,
* entries in the block are sorted.
*/
new_idx = xattr_find_position(h->attrs + h->ibody_count,
- h->count - h->ibody_count, name);
+ h->count - h->ibody_count,
+ shortname, name_idx);
new_idx += h->ibody_count - 1;
tmp = h->attrs[old_idx];
memmove(h->attrs + old_idx, h->attrs + old_idx + 1,
@@ -1472,7 +1473,8 @@ static errcode_t xattr_array_update(struct ext2_xattr_handle *h,
}
new_idx = xattr_find_position(h->attrs + h->ibody_count,
- h->count - h->ibody_count, name);
+ h->count - h->ibody_count,
+ shortname, name_idx);
new_idx += h->ibody_count;
add_to_ibody = 0;
@@ -1483,8 +1485,8 @@ add_new:
return ret;
}
- ret = xattr_update_entry(h->fs, &h->attrs[h->count], name, value,
- value_len, in_inode);
+ ret = xattr_update_entry(h->fs, &h->attrs[h->count], name, shortname,
+ name_idx, value, value_len, in_inode);
if (ret)
return ret;
@@ -1502,12 +1504,10 @@ static int space_used(struct ext2_xattr *attrs, int count)
{
int total = 0;
struct ext2_xattr *x;
- const char *shortname;
- int i, len, name_idx;
+ int i, len;
for (i = 0, x = attrs; i < count; i++, x++) {
- find_ea_index(x->name, &shortname, &name_idx);
- len = strlen(shortname);
+ len = strlen(x->short_name);
total += EXT2_EXT_ATTR_LEN(len);
if (!x->ea_ino)
total += EXT2_EXT_ATTR_SIZE(x->value_len);
@@ -1550,14 +1550,15 @@ errcode_t ext2fs_xattr_set(struct ext2_xattr_handle *h,
new_value, &value_len);
if (ret)
goto out;
- } else
+ } else if (value_len)
memcpy(new_value, value, value_len);
/* Imitate kernel behavior by skipping update if value is the same. */
for (x = h->attrs; x < h->attrs + h->count; x++) {
if (!strcmp(x->name, name)) {
if (!x->ea_ino && x->value_len == value_len &&
- !memcmp(x->value, new_value, value_len)) {
+ (!value_len ||
+ !memcmp(x->value, new_value, value_len))) {
ret = 0;
goto out;
}
diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c
index ac3dbfec..b324c7b0 100644
--- a/lib/ext2fs/extent.c
+++ b/lib/ext2fs/extent.c
@@ -1785,6 +1785,73 @@ out:
return errcode;
}
+errcode_t ext2fs_decode_extent(struct ext2fs_extent *to, void *addr, int len)
+{
+ struct ext3_extent *from = (struct ext3_extent *)addr;
+
+ if (len != sizeof(struct ext3_extent))
+ return EXT2_ET_INVALID_ARGUMENT;
+
+ to->e_pblk = ext2fs_le32_to_cpu(from->ee_start) +
+ ((__u64) ext2fs_le16_to_cpu(from->ee_start_hi)
+ << 32);
+ to->e_lblk = ext2fs_le32_to_cpu(from->ee_block);
+ to->e_len = ext2fs_le16_to_cpu(from->ee_len);
+ to->e_flags = EXT2_EXTENT_FLAGS_LEAF;
+ if (to->e_len > EXT_INIT_MAX_LEN) {
+ to->e_len -= EXT_INIT_MAX_LEN;
+ to->e_flags |= EXT2_EXTENT_FLAGS_UNINIT;
+ }
+
+ return 0;
+}
+
+errcode_t ext2fs_count_blocks(ext2_filsys fs, ext2_ino_t ino,
+ struct ext2_inode *inode, blk64_t *ret_count)
+{
+ ext2_extent_handle_t handle = NULL;
+ struct ext2fs_extent extent;
+ errcode_t errcode;
+ int i;
+ blk64_t blkcount = 0;
+ blk64_t *intermediate_nodes;
+
+ errcode = ext2fs_extent_open2(fs, ino, inode, &handle);
+ if (errcode)
+ goto out;
+
+ errcode = ext2fs_extent_get(handle, EXT2_EXTENT_ROOT, &extent);
+ if (errcode)
+ goto out;
+
+ errcode = ext2fs_get_array(handle->max_depth, sizeof(blk64_t),
+ &intermediate_nodes);
+ if (errcode)
+ goto out;
+
+ blkcount = handle->level;
+ while (!errcode) {
+ if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) {
+ blkcount += extent.e_len;
+ for (i = 0; i < handle->level; i++) {
+ if (intermediate_nodes[i] !=
+ handle->path[i].end_blk) {
+ blkcount++;
+ intermediate_nodes[i] =
+ handle->path[i].end_blk;
+ }
+ }
+ }
+ errcode = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT, &extent);
+ }
+ ext2fs_free_mem(&intermediate_nodes);
+out:
+ *ret_count = blkcount;
+ ext2fs_extent_free(handle);
+
+ return 0;
+}
+
#ifdef DEBUG
/*
* Override debugfs's prompt
diff --git a/lib/ext2fs/fallocate.c b/lib/ext2fs/fallocate.c
index 31e47f8d..5cde7d5c 100644
--- a/lib/ext2fs/fallocate.c
+++ b/lib/ext2fs/fallocate.c
@@ -805,7 +805,8 @@ errcode_t ext2fs_fallocate(ext2_filsys fs, int flags, ext2_ino_t ino,
blk64_t start, blk64_t len)
{
struct ext2_inode inode_buf;
- blk64_t blk, x;
+ blk64_t blk, x, zero_blk, last = 0;
+ int zero_len = 0;
errcode_t err;
if (((flags & EXT2_FALLOCATE_FORCE_INIT) &&
@@ -841,15 +842,32 @@ errcode_t ext2fs_fallocate(ext2_filsys fs, int flags, ext2_ino_t ino,
if (x)
continue;
- err = ext2fs_bmap2(fs, ino, inode, NULL,
- BMAP_ALLOC | BMAP_UNINIT | BMAP_ZERO, blk,
- 0, &x);
+ err = ext2fs_bmap2(fs, ino, inode, NULL, BMAP_ALLOC,
+ blk, 0, &x);
if (err)
- return err;
+ goto errout;
+ if ((zero_len && (x != last+1)) ||
+ (zero_len >= 65536)) {
+ err = ext2fs_zero_blocks2(fs, zero_blk, zero_len,
+ NULL, NULL);
+ zero_len = 0;
+ if (err)
+ goto errout;
+ }
+ if (zero_len == 0) {
+ zero_blk = x;
+ zero_len = 1;
+ } else {
+ zero_len++;
+ }
+ last = x;
}
out:
if (inode == &inode_buf)
ext2fs_write_inode(fs, ino, inode);
+errout:
+ if (zero_len)
+ ext2fs_zero_blocks2(fs, zero_blk, zero_len, NULL, NULL);
return err;
}
diff --git a/lib/ext2fs/fast_commit.h b/lib/ext2fs/fast_commit.h
new file mode 100644
index 00000000..b83e1810
--- /dev/null
+++ b/lib/ext2fs/fast_commit.h
@@ -0,0 +1,203 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __FAST_COMMIT_H__
+#define __FAST_COMMIT_H__
+
+#include "jfs_compat.h"
+
+/*
+ * Note this file is present in e2fsprogs/lib/ext2fs/fast_commit.h and
+ * linux/fs/ext4/fast_commit.h. These file should always be byte identical.
+ */
+
+/* Fast commit tags */
+#define EXT4_FC_TAG_ADD_RANGE 0x0001
+#define EXT4_FC_TAG_DEL_RANGE 0x0002
+#define EXT4_FC_TAG_CREAT 0x0003
+#define EXT4_FC_TAG_LINK 0x0004
+#define EXT4_FC_TAG_UNLINK 0x0005
+#define EXT4_FC_TAG_INODE 0x0006
+#define EXT4_FC_TAG_PAD 0x0007
+#define EXT4_FC_TAG_TAIL 0x0008
+#define EXT4_FC_TAG_HEAD 0x0009
+
+#define EXT4_FC_SUPPORTED_FEATURES 0x0
+
+/* On disk fast commit tlv value structures */
+
+/* Fast commit on disk tag length structure */
+struct ext4_fc_tl {
+ __le16 fc_tag;
+ __le16 fc_len;
+};
+
+/* Value structure for tag EXT4_FC_TAG_HEAD. */
+struct ext4_fc_head {
+ __le32 fc_features;
+ __le32 fc_tid;
+};
+
+/* Value structure for EXT4_FC_TAG_ADD_RANGE. */
+struct ext4_fc_add_range {
+ __le32 fc_ino;
+ __u8 fc_ex[12];
+};
+
+/* Value structure for tag EXT4_FC_TAG_DEL_RANGE. */
+struct ext4_fc_del_range {
+ __le32 fc_ino;
+ __le32 fc_lblk;
+ __le32 fc_len;
+};
+
+/*
+ * This is the value structure for tags EXT4_FC_TAG_CREAT, EXT4_FC_TAG_LINK
+ * and EXT4_FC_TAG_UNLINK.
+ */
+struct ext4_fc_dentry_info {
+ __le32 fc_parent_ino;
+ __le32 fc_ino;
+ __u8 fc_dname[0];
+};
+
+/* Value structure for EXT4_FC_TAG_INODE and EXT4_FC_TAG_INODE_PARTIAL. */
+struct ext4_fc_inode {
+ __le32 fc_ino;
+ __u8 fc_raw_inode[0];
+};
+
+/* Value structure for tag EXT4_FC_TAG_TAIL. */
+struct ext4_fc_tail {
+ __le32 fc_tid;
+ __le32 fc_crc;
+};
+
+/*
+ * Fast commit reason codes
+ */
+enum {
+ /*
+ * Commit status codes:
+ */
+ EXT4_FC_REASON_OK = 0,
+ EXT4_FC_REASON_INELIGIBLE,
+ EXT4_FC_REASON_ALREADY_COMMITTED,
+ EXT4_FC_REASON_FC_START_FAILED,
+ EXT4_FC_REASON_FC_FAILED,
+
+ /*
+ * Fast commit ineligiblity reasons:
+ */
+ EXT4_FC_REASON_XATTR = 0,
+ EXT4_FC_REASON_CROSS_RENAME,
+ EXT4_FC_REASON_JOURNAL_FLAG_CHANGE,
+ EXT4_FC_REASON_NOMEM,
+ EXT4_FC_REASON_SWAP_BOOT,
+ EXT4_FC_REASON_RESIZE,
+ EXT4_FC_REASON_RENAME_DIR,
+ EXT4_FC_REASON_FALLOC_RANGE,
+ EXT4_FC_REASON_INODE_JOURNAL_DATA,
+ EXT4_FC_COMMIT_FAILED,
+ EXT4_FC_REASON_MAX
+};
+
+#ifdef __KERNEL__
+/*
+ * In memory list of dentry updates that are performed on the file
+ * system used by fast commit code.
+ */
+struct ext4_fc_dentry_update {
+ int fcd_op; /* Type of update create / unlink / link */
+ int fcd_parent; /* Parent inode number */
+ int fcd_ino; /* Inode number */
+ struct qstr fcd_name; /* Dirent name */
+ unsigned char fcd_iname[DNAME_INLINE_LEN]; /* Dirent name string */
+ struct list_head fcd_list;
+};
+
+struct ext4_fc_stats {
+ unsigned int fc_ineligible_reason_count[EXT4_FC_REASON_MAX];
+ unsigned long fc_num_commits;
+ unsigned long fc_ineligible_commits;
+ unsigned long fc_numblks;
+};
+
+#define EXT4_FC_REPLAY_REALLOC_INCREMENT 4
+
+/*
+ * Physical block regions added to different inodes due to fast commit
+ * recovery. These are set during the SCAN phase. During the replay phase,
+ * our allocator excludes these from its allocation. This ensures that
+ * we don't accidentally allocating a block that is going to be used by
+ * another inode.
+ */
+struct ext4_fc_alloc_region {
+ ext4_lblk_t lblk;
+ ext4_fsblk_t pblk;
+ int ino, len;
+};
+
+/*
+ * Fast commit replay state.
+ */
+struct ext4_fc_replay_state {
+ int fc_replay_num_tags;
+ int fc_replay_expected_off;
+ int fc_current_pass;
+ int fc_cur_tag;
+ int fc_crc;
+ struct ext4_fc_alloc_region *fc_regions;
+ int fc_regions_size, fc_regions_used, fc_regions_valid;
+ int *fc_modified_inodes;
+ int fc_modified_inodes_used, fc_modified_inodes_size;
+};
+
+#define region_last(__region) (((__region)->lblk) + ((__region)->len) - 1)
+#endif
+
+#define fc_for_each_tl(__start, __end, __tl) \
+ for (tl = (struct ext4_fc_tl *)(__start); \
+ (__u8 *)tl < (__u8 *)(__end); \
+ tl = (struct ext4_fc_tl *)((__u8 *)tl + \
+ sizeof(struct ext4_fc_tl) + \
+ + le16_to_cpu(tl->fc_len)))
+
+static inline const char *tag2str(__u16 tag)
+{
+ switch (tag) {
+ case EXT4_FC_TAG_LINK:
+ return "ADD_ENTRY";
+ case EXT4_FC_TAG_UNLINK:
+ return "DEL_ENTRY";
+ case EXT4_FC_TAG_ADD_RANGE:
+ return "ADD_RANGE";
+ case EXT4_FC_TAG_CREAT:
+ return "CREAT_DENTRY";
+ case EXT4_FC_TAG_DEL_RANGE:
+ return "DEL_RANGE";
+ case EXT4_FC_TAG_INODE:
+ return "INODE";
+ case EXT4_FC_TAG_PAD:
+ return "PAD";
+ case EXT4_FC_TAG_TAIL:
+ return "TAIL";
+ case EXT4_FC_TAG_HEAD:
+ return "HEAD";
+ default:
+ return "ERROR";
+ }
+}
+
+/* Get length of a particular tlv */
+static inline int ext4_fc_tag_len(struct ext4_fc_tl *tl)
+{
+ return le16_to_cpu(tl->fc_len);
+}
+
+/* Get a pointer to "value" of a tlv */
+static inline __u8 *ext4_fc_tag_val(struct ext4_fc_tl *tl)
+{
+ return (__u8 *)tl + sizeof(*tl);
+}
+
+#endif /* __FAST_COMMIT_H__ */
diff --git a/lib/ext2fs/fiemap.h b/lib/ext2fs/fiemap.h
index 0d1072ac..33ab8fb7 100644
--- a/lib/ext2fs/fiemap.h
+++ b/lib/ext2fs/fiemap.h
@@ -45,10 +45,23 @@ struct fiemap {
#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
#endif
+#if defined(__linux__) && !defined(FS_IOC_GETSTATE)
+#define EXT4_IOC_GETSTATE _IOW('f', 41, __u32)
+#endif
+
+#if defined(__linux__) && !defined(EXT4_IOC_GET_ES_CACHE)
+#define EXT4_IOC_GET_ES_CACHE _IOWR('f', 42, struct fiemap)
+#endif
+
+#if defined(__linux__) && !defined(EXT4_STATE_FLAG_EXT_PRECACHED)
+#define EXT4_STATE_FLAG_EXT_PRECACHED 0x00000001
+#endif
+
#define FIEMAP_MAX_OFFSET (~0ULL)
#define FIEMAP_FLAG_SYNC 0x00000001 /* sync file data before map */
#define FIEMAP_FLAG_XATTR 0x00000002 /* map extended attribute tree */
+#define FIEMAP_FLAG_CACHE 0x00000004 /* request caching of the extents */
#define FIEMAP_FLAGS_COMPAT (FIEMAP_FLAG_SYNC | FIEMAP_FLAG_XATTR)
@@ -74,4 +87,7 @@ struct fiemap {
#define FIEMAP_EXTENT_SHARED 0x00002000 /* Space shared with other
* files. */
+#define EXT4_FIEMAP_EXTENT_HOLE 0x08000000 /* Entry in extent status
+ cache for a hole*/
+
#endif /* _LINUX_FIEMAP_H */
diff --git a/lib/ext2fs/gen_bitmap.c b/lib/ext2fs/gen_bitmap.c
index c94c21b6..1536d4b3 100644
--- a/lib/ext2fs/gen_bitmap.c
+++ b/lib/ext2fs/gen_bitmap.c
@@ -418,7 +418,7 @@ errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
if ((start < bmap->start) || (start+num-1 > bmap->real_end))
return EXT2_ET_INVALID_ARGUMENT;
- memcpy(out, bmap->bitmap + (start >> 3), (num+7) >> 3);
+ memcpy(out, bmap->bitmap + ((start - bmap->start) >> 3), (num+7) >> 3);
return 0;
}
@@ -435,7 +435,7 @@ errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
if ((start < bmap->start) || (start+num-1 > bmap->real_end))
return EXT2_ET_INVALID_ARGUMENT;
- memcpy(bmap->bitmap + (start >> 3), in, (num+7) >> 3);
+ memcpy(bmap->bitmap + ((start - bmap->start) >> 3), in, (num+7) >> 3);
return 0;
}
diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c
index 6e4d8b71..a2b89898 100644
--- a/lib/ext2fs/gen_bitmap64.c
+++ b/lib/ext2fs/gen_bitmap64.c
@@ -74,9 +74,11 @@ static void warn_bitmap(ext2fs_generic_bitmap_64 bitmap,
#ifndef OMIT_COM_ERR
if (bitmap->description)
com_err(0, bitmap->base_error_code+code,
- "#%llu for %s", arg, bitmap->description);
+ "#%llu for %s", (unsigned long long) arg,
+ bitmap->description);
else
- com_err(0, bitmap->base_error_code + code, "#%llu", arg);
+ com_err(0, bitmap->base_error_code + code, "#%llu",
+ (unsigned long long) arg);
#endif
}
@@ -799,8 +801,7 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
ext2fs_generic_bitmap_64 bmap, cmap;
ext2fs_block_bitmap gen_bmap = *bitmap, gen_cmap;
errcode_t retval;
- blk64_t i, b_end, c_end;
- int n, ratio;
+ blk64_t i, next, b_end, c_end;
bmap = (ext2fs_generic_bitmap_64) gen_bmap;
if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap))
@@ -817,18 +818,13 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
bmap->end = bmap->real_end;
c_end = cmap->end;
cmap->end = cmap->real_end;
- n = 0;
- ratio = 1 << fs->cluster_ratio_bits;
while (i < bmap->real_end) {
- if (ext2fs_test_block_bitmap2(gen_bmap, i)) {
- ext2fs_mark_block_bitmap2(gen_cmap, i);
- i += ratio - n;
- n = 0;
- continue;
- }
- i++; n++;
- if (n >= ratio)
- n = 0;
+ retval = ext2fs_find_first_set_block_bitmap2(gen_bmap,
+ i, bmap->real_end, &next);
+ if (retval)
+ break;
+ ext2fs_mark_block_bitmap2(gen_cmap, next);
+ i = EXT2FS_C2B(fs, EXT2FS_B2C(fs, next) + 1);
}
bmap->end = b_end;
cmap->end = c_end;
@@ -946,3 +942,38 @@ errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
return ENOENT;
}
+
+errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
+ blk64_t end, blk64_t *out)
+{
+ blk64_t next;
+ blk64_t tot_set = 0;
+ errcode_t retval;
+
+ while (start < end) {
+ retval = ext2fs_find_first_set_block_bitmap2(fs->block_map,
+ start, end, &next);
+ if (retval) {
+ if (retval == ENOENT)
+ retval = 0;
+ break;
+ }
+ start = next;
+
+ retval = ext2fs_find_first_zero_block_bitmap2(fs->block_map,
+ start, end, &next);
+ if (retval == 0) {
+ tot_set += next - start;
+ start = next + 1;
+ } else if (retval == ENOENT) {
+ retval = 0;
+ tot_set += end - start + 1;
+ break;
+ } else
+ break;
+ }
+
+ if (!retval)
+ *out = EXT2FS_NUM_B2C(fs, tot_set);
+ return retval;
+}
diff --git a/lib/ext2fs/imager.c b/lib/ext2fs/imager.c
index 7fd06f74..586227fc 100644
--- a/lib/ext2fs/imager.c
+++ b/lib/ext2fs/imager.c
@@ -61,19 +61,20 @@ static int check_zero_block(char *buf, int blocksize)
errcode_t ext2fs_image_inode_write(ext2_filsys fs, int fd, int flags)
{
- unsigned int group, left, c, d;
+ dgrp_t group;
+ ssize_t left, c, d;
char *buf, *cp;
blk64_t blk;
ssize_t actual;
errcode_t retval;
- off_t r;
+ ext2_loff_t r;
buf = malloc(fs->blocksize * BUF_BLOCKS);
if (!buf)
return ENOMEM;
for (group = 0; group < fs->group_desc_count; group++) {
- blk = ext2fs_inode_table_loc(fs, (unsigned)group);
+ blk = ext2fs_inode_table_loc(fs, group);
if (!blk) {
retval = EXT2_ET_MISSING_INODE_TABLE;
goto errout;
@@ -107,23 +108,25 @@ errcode_t ext2fs_image_inode_write(ext2_filsys fs, int fd, int flags)
continue;
}
/* Find non-zero blocks */
- for (d=1; d < c; d++) {
- if (check_zero_block(cp + d*fs->blocksize, fs->blocksize))
+ for (d = 1; d < c; d++) {
+ if (check_zero_block(cp +
+ d * fs->blocksize,
+ fs->blocksize))
break;
}
skip_sparse:
- actual = write(fd, cp, fs->blocksize * d);
+ actual = write(fd, cp, d * fs->blocksize);
if (actual == -1) {
retval = errno;
goto errout;
}
- if (actual != (ssize_t) (fs->blocksize * d)) {
+ if (actual != d * fs->blocksize) {
retval = EXT2_ET_SHORT_WRITE;
goto errout;
}
blk += d;
left -= d;
- cp += fs->blocksize * d;
+ cp += d * fs->blocksize;
c -= d;
}
}
@@ -141,7 +144,8 @@ errout:
errcode_t ext2fs_image_inode_read(ext2_filsys fs, int fd,
int flags EXT2FS_ATTR((unused)))
{
- unsigned int group, c, left;
+ dgrp_t group;
+ ssize_t c, left;
char *buf;
blk64_t blk;
ssize_t actual;
@@ -152,7 +156,7 @@ errcode_t ext2fs_image_inode_read(ext2_filsys fs, int fd,
return ENOMEM;
for (group = 0; group < fs->group_desc_count; group++) {
- blk = ext2fs_inode_table_loc(fs, (unsigned)group);
+ blk = ext2fs_inode_table_loc(fs, group);
if (!blk) {
retval = EXT2_ET_MISSING_INODE_TABLE;
goto errout;
@@ -167,7 +171,7 @@ errcode_t ext2fs_image_inode_read(ext2_filsys fs, int fd,
retval = errno;
goto errout;
}
- if (actual != (ssize_t) (fs->blocksize * c)) {
+ if (actual != fs->blocksize * c) {
retval = EXT2_ET_SHORT_READ;
goto errout;
}
@@ -201,6 +205,9 @@ errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd,
int j;
#endif
+ if (fs->group_desc == NULL)
+ return EXT2_ET_NO_GDESC;
+
buf = malloc(fs->blocksize);
if (!buf)
return ENOMEM;
@@ -242,22 +249,22 @@ errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd,
* if needed
*/
groups_per_block = EXT2_DESC_PER_BLOCK(fs->super);
- gdp = (struct ext2_group_desc *) cp;
for (j=0; j < groups_per_block*fs->desc_blocks; j++) {
gdp = ext2fs_group_desc(fs, fs->group_desc, j);
- ext2fs_swap_group_desc2(fs, gdp);
+ if (gdp)
+ ext2fs_swap_group_desc2(fs, gdp);
}
#endif
- actual = write(fd, cp, fs->blocksize * fs->desc_blocks);
+ actual = write(fd, cp, (ssize_t)fs->blocksize * fs->desc_blocks);
#ifdef WORDS_BIGENDIAN
groups_per_block = EXT2_DESC_PER_BLOCK(fs->super);
- gdp = (struct ext2_group_desc *) cp;
for (j=0; j < groups_per_block*fs->desc_blocks; j++) {
gdp = ext2fs_group_desc(fs, fs->group_desc, j);
- ext2fs_swap_group_desc2(fs, gdp);
+ if (gdp)
+ ext2fs_swap_group_desc2(fs, gdp);
}
#endif
@@ -265,7 +272,7 @@ errcode_t ext2fs_image_super_write(ext2_filsys fs, int fd,
retval = errno;
goto errout;
}
- if (actual != (ssize_t) (fs->blocksize * fs->desc_blocks)) {
+ if (actual != (ssize_t)fs->blocksize * fs->desc_blocks) {
retval = EXT2_ET_SHORT_WRITE;
goto errout;
}
@@ -287,7 +294,7 @@ errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd,
ssize_t actual, size;
errcode_t retval;
- size = fs->blocksize * (fs->group_desc_count + 1);
+ size = (ssize_t)fs->blocksize * (fs->group_desc_count + 1);
buf = malloc(size);
if (!buf)
return ENOMEM;
@@ -311,7 +318,7 @@ errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd,
memcpy(fs->super, buf, SUPERBLOCK_SIZE);
memcpy(fs->group_desc, buf + fs->blocksize,
- fs->blocksize * fs->group_desc_count);
+ (ssize_t)fs->blocksize * fs->group_desc_count);
retval = 0;
@@ -340,7 +347,8 @@ errcode_t ext2fs_image_bitmap_write(ext2_filsys fs, int fd, int flags)
}
bmap = fs->inode_map;
itr = 1;
- cnt = EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count;
+ cnt = (__u64)EXT2_INODES_PER_GROUP(fs->super) *
+ fs->group_desc_count;
size = (EXT2_INODES_PER_GROUP(fs->super) / 8);
} else {
if (!fs->block_map) {
@@ -415,7 +423,8 @@ errcode_t ext2fs_image_bitmap_read(ext2_filsys fs, int fd, int flags)
}
bmap = fs->inode_map;
itr = 1;
- cnt = EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count;
+ cnt = (__u64)EXT2_INODES_PER_GROUP(fs->super) *
+ fs->group_desc_count;
size = (EXT2_INODES_PER_GROUP(fs->super) / 8);
} else {
if (!fs->block_map) {
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 96ec1cff..edd692bb 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -575,3 +575,97 @@ cleanup:
ext2fs_free(fs);
return retval;
}
+
+errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs, int super_only)
+{
+ blk64_t blk;
+ ext2_ino_t ino;
+ unsigned int group = 0;
+ unsigned int count = 0;
+ int total_free = 0;
+ int group_free = 0;
+ int last_allocated = 0;
+ int uninit;
+
+ /*
+ * First calculate the block statistics
+ */
+ uninit = 1;
+ for (blk = fs->super->s_first_data_block;
+ blk < ext2fs_blocks_count(fs->super); blk++) {
+ if (!ext2fs_fast_test_block_bitmap2(fs->block_map, blk)) {
+ group_free++;
+ total_free++;
+ } else {
+ uninit = 0;
+ }
+ count++;
+ if ((count == fs->super->s_blocks_per_group) ||
+ (blk == ext2fs_blocks_count(fs->super)-1)) {
+ ext2fs_bg_free_blocks_count_set(fs, group,
+ group_free);
+ if (!super_only) {
+ if (uninit && blk !=
+ ext2fs_blocks_count(fs->super) - 1)
+ ext2fs_bg_flags_set(fs, group,
+ EXT2_BG_BLOCK_UNINIT);
+ else
+ ext2fs_bg_flags_clear(fs, group,
+ EXT2_BG_BLOCK_UNINIT);
+ }
+ count = 0;
+ group_free = 0;
+ uninit = 1;
+ group++;
+ }
+ }
+ total_free = EXT2FS_C2B(fs, total_free);
+ ext2fs_free_blocks_count_set(fs->super, total_free);
+
+ /*
+ * Next, calculate the inode statistics
+ */
+ group_free = 0;
+ total_free = 0;
+ last_allocated = 0;
+ count = 0;
+ group = 0;
+
+ /* Protect loop from wrap-around if s_inodes_count maxed */
+ for (ino = 1; ino <= fs->super->s_inodes_count && ino > 0; ino++) {
+ if (!ext2fs_test_inode_bitmap2(fs->inode_map, ino)) {
+ group_free++;
+ total_free++;
+ } else {
+ last_allocated = ino;
+ }
+ count++;
+ if ((count == fs->super->s_inodes_per_group) ||
+ (ino == fs->super->s_inodes_count)) {
+ if (!super_only) {
+ if (last_allocated) {
+ ext2fs_bg_flags_clear(fs, group,
+ EXT2_BG_INODE_UNINIT);
+ ext2fs_bg_itable_unused_set(fs, group,
+ fs->super->s_inodes_per_group -
+ (last_allocated %
+ fs->super->s_inodes_per_group));
+ } else {
+ ext2fs_bg_flags_set(fs, group,
+ EXT2_BG_INODE_UNINIT);
+ ext2fs_bg_itable_unused_set(fs, group,
+ 0);
+ }
+ ext2fs_bg_free_inodes_count_set(fs, group,
+ group_free);
+ }
+ group++;
+ count = 0;
+ group_free = 0;
+ last_allocated = 0;
+ }
+ }
+ fs->super->s_free_inodes_count = total_free;
+ ext2fs_mark_super_dirty(fs);
+ return 0;
+}
diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c
index 75df418d..6f42882e 100644
--- a/lib/ext2fs/inode.c
+++ b/lib/ext2fs/inode.c
@@ -144,6 +144,8 @@ errcode_t ext2fs_open_inode_scan(ext2_filsys fs, int buffer_blocks,
errcode_t (*save_get_blocks)(ext2_filsys f, ext2_ino_t ino, blk_t *blocks);
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
+ if (fs->blocksize < 1024)
+ return EXT2_FILSYS_CORRUPTED; /* Should never happen */
/*
* If fs->badblocks isn't set, then set it --- since the inode
@@ -309,6 +311,7 @@ errcode_t ext2fs_inode_scan_goto_blockgroup(ext2_inode_scan scan,
{
scan->current_group = group - 1;
scan->groups_left = scan->fs->group_desc_count - group;
+ scan->bad_block_ptr = 0;
return get_next_blockgroup(scan);
}
@@ -332,6 +335,12 @@ static errcode_t check_for_inode_bad_blocks(ext2_inode_scan scan,
if (blk == 0)
return 0;
+ /* Make sure bad_block_ptr is still valid */
+ if (scan->bad_block_ptr >= bb->num) {
+ scan->scan_flags &= ~EXT2_SF_CHK_BADBLOCKS;
+ return 0;
+ }
+
/*
* If the current block is greater than the bad block listed
* in the bad block list, then advance the pointer until this
@@ -757,6 +766,8 @@ errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino,
int cache_slot, fail_csum;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
+ if (fs->blocksize < 1024)
+ return EXT2_FILSYS_CORRUPTED; /* Should never happen */
/* Check to see if user has an override function */
if (fs->read_inode &&
diff --git a/lib/ext2fs/inode_io.c b/lib/ext2fs/inode_io.c
index f3d94c89..d7474a6d 100644
--- a/lib/ext2fs/inode_io.c
+++ b/lib/ext2fs/inode_io.c
@@ -215,9 +215,9 @@ static errcode_t inode_read_blk64(io_channel channel,
data = (struct inode_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_INODE_IO_CHANNEL);
- if ((retval = ext2fs_file_lseek(data->file,
- block * channel->block_size,
- EXT2_SEEK_SET, 0)))
+ if ((retval = ext2fs_file_llseek(data->file,
+ (ext2_off64_t)(block * channel->block_size),
+ EXT2_SEEK_SET, 0)))
return retval;
count = (count < 0) ? -count : (count * channel->block_size);
@@ -241,9 +241,9 @@ static errcode_t inode_write_blk64(io_channel channel,
data = (struct inode_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_INODE_IO_CHANNEL);
- if ((retval = ext2fs_file_lseek(data->file,
- block * channel->block_size,
- EXT2_SEEK_SET, 0)))
+ if ((retval = ext2fs_file_llseek(data->file,
+ (ext2_off64_t) (block * channel->block_size),
+ EXT2_SEEK_SET, 0)))
return retval;
count = (count < 0) ? -count : (count * channel->block_size);
diff --git a/lib/ext2fs/io_manager.c b/lib/ext2fs/io_manager.c
index c395d615..996c31a1 100644
--- a/lib/ext2fs/io_manager.c
+++ b/lib/ext2fs/io_manager.c
@@ -134,9 +134,11 @@ errcode_t io_channel_alloc_buf(io_channel io, int count, void *ptr)
else
size = -count;
- if (io->align)
+ if (io->align) {
+ if (io->align > size)
+ size = io->align;
return ext2fs_get_memalign(size, io->align, ptr);
- else
+ } else
return ext2fs_get_mem(size, ptr);
}
diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c
index 6cd497dc..46d330d9 100644
--- a/lib/ext2fs/ismounted.c
+++ b/lib/ext2fs/ismounted.c
@@ -128,8 +128,19 @@ static errcode_t check_mntent_file(const char *mtab_file, const char *file,
while ((mnt = getmntent (f)) != NULL) {
if (mnt->mnt_fsname[0] != '/')
continue;
- if (strcmp(file, mnt->mnt_fsname) == 0)
+ if (stat(mnt->mnt_dir, &st_buf) != 0)
+ continue;
+ if (strcmp(file, mnt->mnt_fsname) == 0) {
+ if (file_rdev && (file_rdev != st_buf.st_dev)) {
+#ifdef DEBUG
+ printf("Bogus entry in %s! "
+ "(%s does not exist)\n",
+ mtab_file, mnt->mnt_dir);
+#endif /* DEBUG */
+ continue;
+ }
break;
+ }
if (stat(mnt->mnt_fsname, &st_buf) == 0) {
if (ext2fsP_is_disk_device(st_buf.st_mode)) {
#ifndef __GNU__
@@ -168,32 +179,6 @@ static errcode_t check_mntent_file(const char *mtab_file, const char *file,
#endif /* __GNU__ */
goto errout;
}
-#ifndef __GNU__ /* The GNU hurd is deficient; what else is new? */
- /* Validate the entry in case /etc/mtab is out of date */
- /*
- * We need to be paranoid, because some broken distributions
- * (read: Slackware) don't initialize /etc/mtab before checking
- * all of the non-root filesystems on the disk.
- */
- if (stat(mnt->mnt_dir, &st_buf) < 0) {
- retval = errno;
- if (retval == ENOENT) {
-#ifdef DEBUG
- printf("Bogus entry in %s! (%s does not exist)\n",
- mtab_file, mnt->mnt_dir);
-#endif /* DEBUG */
- retval = 0;
- }
- goto errout;
- }
- if (file_rdev && (st_buf.st_dev != file_rdev)) {
-#ifdef DEBUG
- printf("Bogus entry in %s! (%s not mounted on %s)\n",
- mtab_file, file, mnt->mnt_dir);
-#endif /* DEBUG */
- goto errout;
- }
-#endif /* __GNU__ */
*mount_flags = EXT2_MF_MOUNTED;
#ifdef MNTOPT_RO
@@ -242,7 +227,7 @@ static errcode_t check_mntent(const char *file, int *mount_flags,
#ifdef __linux__
retval = check_mntent_file("/proc/mounts", file, mount_flags,
mtpt, mtlen);
- if (retval == 0 && (*mount_flags != 0))
+ if (retval == 0)
return 0;
#endif /* __linux__ */
#if defined(MOUNTED) || defined(_PATH_MOUNTED)
@@ -367,6 +352,7 @@ errcode_t ext2fs_check_mount_point(const char *device, int *mount_flags,
char *mtpt, int mtlen)
{
errcode_t retval = 0;
+ int busy = 0;
if (getenv("EXT2FS_PRETEND_RO_MOUNT")) {
*mount_flags = EXT2_MF_MOUNTED | EXT2_MF_READONLY;
@@ -381,6 +367,30 @@ errcode_t ext2fs_check_mount_point(const char *device, int *mount_flags,
return 0;
}
+#ifdef __linux__ /* This only works on Linux 2.6+ systems */
+ {
+ struct stat st_buf;
+
+ if (stat(device, &st_buf) == 0 &&
+ ext2fsP_is_disk_device(st_buf.st_mode)) {
+ int fd = open(device, O_RDONLY | O_EXCL);
+
+ if (fd >= 0) {
+ /*
+ * The device is not busy so it's
+ * definitelly not mounted. No need to
+ * to perform any more checks.
+ */
+ close(fd);
+ *mount_flags = 0;
+ return 0;
+ } else if (errno == EBUSY) {
+ busy = 1;
+ }
+ }
+ }
+#endif
+
if (is_swap_device(device)) {
*mount_flags = EXT2_MF_MOUNTED | EXT2_MF_SWAP;
strncpy(mtpt, "<swap>", mtlen);
@@ -401,21 +411,8 @@ errcode_t ext2fs_check_mount_point(const char *device, int *mount_flags,
if (retval)
return retval;
-#ifdef __linux__ /* This only works on Linux 2.6+ systems */
- {
- struct stat st_buf;
-
- if (stat(device, &st_buf) == 0 &&
- ext2fsP_is_disk_device(st_buf.st_mode)) {
- int fd = open(device, O_RDONLY | O_EXCL);
-
- if (fd >= 0)
- close(fd);
- else if (errno == EBUSY)
- *mount_flags |= EXT2_MF_BUSY;
- }
- }
-#endif
+ if (busy)
+ *mount_flags |= EXT2_MF_BUSY;
return 0;
}
diff --git a/lib/ext2fs/jfs_compat.h b/lib/ext2fs/jfs_compat.h
index f1a3f968..96fe34a4 100644
--- a/lib/ext2fs/jfs_compat.h
+++ b/lib/ext2fs/jfs_compat.h
@@ -12,18 +12,28 @@
#else
#include <arpa/inet.h>
#endif
+#include <stdbool.h>
#define printk printf
#define KERN_ERR ""
#define KERN_DEBUG ""
-#define READ 0
-#define WRITE 1
+#define REQ_OP_READ 0
+#define REQ_OP_WRITE 1
-#define cpu_to_be32(n) htonl(n)
-#define be32_to_cpu(n) ntohl(n)
-#define cpu_to_be16(n) htons(n)
-#define be16_to_cpu(n) ntohs(n)
+#define cpu_to_le16(x) ext2fs_cpu_to_le16(x)
+#define cpu_to_be16(x) ext2fs_cpu_to_be16(x)
+#define cpu_to_le32(x) ext2fs_cpu_to_le32(x)
+#define cpu_to_be32(x) ext2fs_cpu_to_be32(x)
+#define cpu_to_le64(x) ext2fs_cpu_to_le64(x)
+#define cpu_to_be64(x) ext2fs_cpu_to_be64(x)
+
+#define le16_to_cpu(x) ext2fs_le16_to_cpu(x)
+#define be16_to_cpu(x) ext2fs_be16_to_cpu(x)
+#define le32_to_cpu(x) ext2fs_le32_to_cpu(x)
+#define be32_to_cpu(x) ext2fs_be32_to_cpu(x)
+#define le64_to_cpu(x) ext2fs_le64_to_cpu(x)
+#define be64_to_cpu(x) ext2fs_be64_to_cpu(x)
typedef unsigned int tid_t;
typedef struct journal_s journal_t;
@@ -32,14 +42,14 @@ typedef struct kdev_s *kdev_t;
struct buffer_head;
struct inode;
+typedef unsigned int gfp_t;
#define GFP_KERNEL 0
-#define JFS_TAG_SIZE32 JBD_TAG_SIZE32
-#define JFS_BARRIER 0
+#define GFP_NOFS 0
+#define __GFP_NOFAIL 0
+#define JBD2_TAG_SIZE32 JBD_TAG_SIZE32
+#define JBD2_BARRIER 0
typedef __u64 u64;
-#define JFS_CRC32_CHKSUM JBD2_CRC32_CHKSUM
-#define JFS_CRC32_CHKSUM_SIZE JBD2_CRC32_CHKSUM_SIZE
#define put_bh(x) brelse(x)
-#define be64_to_cpu(x) ext2fs_be64_to_cpu(x)
static inline __u32 jbd2_chksum(journal_t *j EXT2FS_ATTR((unused)),
__u32 crc, const void *address,
@@ -51,15 +61,21 @@ static inline __u32 jbd2_chksum(journal_t *j EXT2FS_ATTR((unused)),
#define spin_lock_init(x)
#define spin_lock(x)
#define spin_unlock(x)
-#define yield()
#define SLAB_HWCACHE_ALIGN 0
#define SLAB_TEMPORARY 0
#define KMEM_CACHE(__struct, __flags) kmem_cache_create(#__struct,\
sizeof(struct __struct), __alignof__(struct __struct),\
(__flags), NULL)
-#define blkdev_issue_flush(kdev, a, b) sync_blockdev(kdev)
+#define blkdev_issue_flush(kdev, a) sync_blockdev(kdev)
#define is_power_of_2(x) ((x) != 0 && (((x) & ((x) - 1)) == 0))
+#define pr_emerg(fmt)
+#define pr_err(...)
+
+enum passtype {PASS_SCAN, PASS_REVOKE, PASS_REPLAY};
+
+#define JBD2_FC_REPLAY_STOP 0
+#define JBD2_FC_REPLAY_CONTINUE 1
struct journal_s
{
@@ -70,13 +86,16 @@ struct journal_s
int j_format_version;
unsigned long j_head;
unsigned long j_tail;
+ unsigned long j_fc_first;
+ unsigned long j_fc_off;
+ unsigned long j_fc_last;
unsigned long j_free;
unsigned long j_first, j_last;
kdev_t j_dev;
kdev_t j_fs_dev;
int j_blocksize;
unsigned int j_blk_offset;
- unsigned int j_maxlen;
+ unsigned int j_total_len;
struct inode * j_inode;
tid_t j_tail_sequence;
tid_t j_transaction_sequence;
@@ -85,6 +104,11 @@ struct journal_s
struct jbd2_revoke_table_s *j_revoke_table[2];
tid_t j_failed_commit;
__u32 j_csum_seed;
+ int (*j_fc_replay_callback)(struct journal_s *journal,
+ struct buffer_head *bh,
+ enum passtype pass, int off,
+ tid_t expected_tid);
+
};
#define is_journal_abort(x) 0
diff --git a/lib/ext2fs/kernel-jbd.h b/lib/ext2fs/kernel-jbd.h
index a7507b57..c94de237 100644
--- a/lib/ext2fs/kernel-jbd.h
+++ b/lib/ext2fs/kernel-jbd.h
@@ -24,9 +24,8 @@
#define __FUNCTION__ ""
#endif
-#define journal_oom_retry 1
+#define journal_oom_retry 0
-#ifdef __STDC__
#ifdef CONFIG_JBD_DEBUG
/*
* Define JBD_EXPENSIVE_CHECKING to enable more expensive internal
@@ -35,7 +34,11 @@
*/
#define JBD_EXPENSIVE_CHECKING
extern int journal_enable_debug;
+#else
+#define journal_enable_debug (-1)
+#endif /* !CONFIG_JBD_DEBUG */
+#ifdef __STDC__
#define jbd_debug(n, f, a...) \
do { \
if ((n) <= journal_enable_debug) { \
@@ -45,27 +48,8 @@ extern int journal_enable_debug;
} \
} while (0)
#else
-#ifdef __GNUC__
-#if defined(__KERNEL__) || !defined(CONFIG_JBD_DEBUG)
-#define jbd_debug(f, a...) /**/
-#else
-extern int journal_enable_debug;
-#define jbd_debug(n, f, a...) \
- do { \
- if ((n) <= journal_enable_debug) { \
- printf("(%s, %d): %s: ", \
- __FILE__, __LINE__, __func__); \
- printf(f, ## a); \
- } \
- } while (0)
-#endif /*__KERNEL__ */
-#else
-#define jbd_debug(f, ...) /**/
-#endif
-#endif
-#else
#define jbd_debug(x) /* AIX doesn't do STDC */
-#endif
+#endif /* !__STDC__ */
extern void * __jbd_kmalloc (char *where, size_t size, int flags, int retry);
#define jbd_kmalloc(size, flags) \
@@ -73,13 +57,14 @@ extern void * __jbd_kmalloc (char *where, size_t size, int flags, int retry);
#define jbd_rep_kmalloc(size, flags) \
__jbd_kmalloc(__FUNCTION__, (size), (flags), 1)
-#define JFS_MIN_JOURNAL_BLOCKS 1024
+#define JBD2_MIN_JOURNAL_BLOCKS 1024
+#define JBD2_DEFAULT_FAST_COMMIT_BLOCKS 256
/*
* Internal structures used by the logging mechanism:
*/
-#define JFS_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */
+#define JBD2_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */
/*
* On-disk structures
@@ -89,20 +74,21 @@ extern void * __jbd_kmalloc (char *where, size_t size, int flags, int retry);
* Descriptor block types:
*/
-#define JFS_DESCRIPTOR_BLOCK 1
-#define JFS_COMMIT_BLOCK 2
-#define JFS_SUPERBLOCK_V1 3
-#define JFS_SUPERBLOCK_V2 4
-#define JFS_REVOKE_BLOCK 5
+#define JBD2_DESCRIPTOR_BLOCK 1
+#define JBD2_COMMIT_BLOCK 2
+#define JBD2_SUPERBLOCK_V1 3
+#define JBD2_SUPERBLOCK_V2 4
+#define JBD2_REVOKE_BLOCK 5
+#define JBD2_FC_BLOCK 6
/*
* Standard header for all descriptor blocks:
*/
typedef struct journal_header_s
{
- __u32 h_magic;
- __u32 h_blocktype;
- __u32 h_sequence;
+ __be32 h_magic;
+ __be32 h_blocktype;
+ __be32 h_sequence;
} journal_header_t;
/*
@@ -135,15 +121,15 @@ typedef struct journal_header_s
* Checksum v1, v2, and v3 are mutually exclusive features.
*/
struct commit_header {
- __u32 h_magic;
- __u32 h_blocktype;
- __u32 h_sequence;
+ __be32 h_magic;
+ __be32 h_blocktype;
+ __be32 h_sequence;
unsigned char h_chksum_type;
unsigned char h_chksum_size;
unsigned char h_padding[2];
- __u32 h_chksum[JBD2_CHECKSUM_BYTES];
- __u64 h_commit_sec;
- __u32 h_commit_nsec;
+ __be32 h_chksum[JBD2_CHECKSUM_BYTES];
+ __be64 h_commit_sec;
+ __be32 h_commit_nsec;
};
/*
@@ -151,22 +137,22 @@ struct commit_header {
*/
typedef struct journal_block_tag3_s
{
- __u32 t_blocknr; /* The on-disk block number */
- __u32 t_flags; /* See below */
- __u32 t_blocknr_high; /* most-significant high 32bits. */
- __u32 t_checksum; /* crc32c(uuid+seq+block) */
+ __be32 t_blocknr; /* The on-disk block number */
+ __be32 t_flags; /* See below */
+ __be32 t_blocknr_high; /* most-significant high 32bits. */
+ __be32 t_checksum; /* crc32c(uuid+seq+block) */
} journal_block_tag3_t;
typedef struct journal_block_tag_s
{
- __u32 t_blocknr; /* The on-disk block number */
- __u16 t_checksum; /* truncated crc32c(uuid+seq+block) */
- __u16 t_flags; /* See below */
- __u32 t_blocknr_high; /* most-significant high 32bits. */
+ __be32 t_blocknr; /* The on-disk block number */
+ __be16 t_checksum; /* truncated crc32c(uuid+seq+block) */
+ __be16 t_flags; /* See below */
+ __be32 t_blocknr_high; /* most-significant high 32bits. */
} journal_block_tag_t;
-/* Tail of descriptor block, for checksumming */
-struct journal_block_tail {
+/* Tail of descriptor or revoke block, for checksumming */
+struct jbd2_journal_block_tail {
__be32 t_checksum;
};
@@ -177,24 +163,19 @@ struct journal_block_tail {
typedef struct journal_revoke_header_s
{
journal_header_t r_header;
- int r_count; /* Count of bytes used in the block */
-} journal_revoke_header_t;
-
-/* Tail of revoke block, for checksumming */
-struct journal_revoke_tail {
- __be32 r_checksum;
-};
+ __be32 r_count; /* Count of bytes used in the block */
+} jbd2_journal_revoke_header_t;
/* Definitions for the journal tag flags word: */
-#define JFS_FLAG_ESCAPE 1 /* on-disk block is escaped */
-#define JFS_FLAG_SAME_UUID 2 /* block has same uuid as previous */
-#define JFS_FLAG_DELETED 4 /* block deleted by this transaction */
-#define JFS_FLAG_LAST_TAG 8 /* last tag in this descriptor block */
+#define JBD2_FLAG_ESCAPE 1 /* on-disk block is escaped */
+#define JBD2_FLAG_SAME_UUID 2 /* block has same uuid as previous */
+#define JBD2_FLAG_DELETED 4 /* block deleted by this transaction */
+#define JBD2_FLAG_LAST_TAG 8 /* last tag in this descriptor block */
#define UUID_SIZE 16
-#define JFS_USERS_MAX 48
-#define JFS_USERS_SIZE (UUID_SIZE * JFS_USERS_MAX)
+#define JBD2_USERS_MAX 48
+#define JBD2_USERS_SIZE (UUID_SIZE * JBD2_USERS_MAX)
/*
* The journal superblock. All fields are in big-endian byte order.
*/
@@ -205,14 +186,14 @@ typedef struct journal_superblock_s
/* 0x000C */
/* Static information describing the journal */
- __u32 s_blocksize; /* journal device blocksize */
- __u32 s_maxlen; /* total blocks in journal file */
- __u32 s_first; /* first block of log information */
+ __be32 s_blocksize; /* journal device blocksize */
+ __be32 s_maxlen; /* total blocks in journal file */
+ __be32 s_first; /* first block of log information */
/* 0x0018 */
/* Dynamic information describing the current state of the log */
- __u32 s_sequence; /* first commit ID expected in log */
- __u32 s_start; /* blocknr of start of log */
+ __be32 s_sequence; /* first commit ID expected in log */
+ __be32 s_start; /* blocknr of start of log */
/* 0x0020 */
/* Error value, as set by journal_abort(). */
@@ -220,63 +201,68 @@ typedef struct journal_superblock_s
/* 0x0024 */
/* Remaining fields are only valid in a version-2 superblock */
- __u32 s_feature_compat; /* compatible feature set */
- __u32 s_feature_incompat; /* incompatible feature set */
- __u32 s_feature_ro_compat; /* readonly-compatible feature set */
+ __be32 s_feature_compat; /* compatible feature set */
+ __be32 s_feature_incompat; /* incompatible feature set */
+ __be32 s_feature_ro_compat; /* readonly-compatible feature set */
/* 0x0030 */
__u8 s_uuid[16]; /* 128-bit uuid for journal */
/* 0x0040 */
- __u32 s_nr_users; /* Nr of filesystems sharing log */
+ __be32 s_nr_users; /* Nr of filesystems sharing log */
- __u32 s_dynsuper; /* Blocknr of dynamic superblock copy*/
+ __be32 s_dynsuper; /* Blocknr of dynamic superblock copy*/
/* 0x0048 */
- __u32 s_max_transaction; /* Limit of journal blocks per trans.*/
- __u32 s_max_trans_data; /* Limit of data blocks per trans. */
+ __be32 s_max_transaction; /* Limit of journal blocks per trans.*/
+ __be32 s_max_trans_data; /* Limit of data blocks per trans. */
/* 0x0050 */
__u8 s_checksum_type; /* checksum type */
__u8 s_padding2[3];
- __u32 s_padding[42];
- __u32 s_checksum; /* crc32c(superblock) */
+/* 0x0054 */
+ __be32 s_num_fc_blks; /* Number of fast commit blocks */
+/* 0x0058 */
+ __be32 s_padding[41];
+ __be32 s_checksum; /* crc32c(superblock) */
/* 0x0100 */
- __u8 s_users[JFS_USERS_SIZE]; /* ids of all fs'es sharing the log */
+ __u8 s_users[JBD2_USERS_SIZE]; /* ids of all fs'es sharing the log */
/* 0x0400 */
} journal_superblock_t;
-#define JFS_HAS_COMPAT_FEATURE(j,mask) \
+#define JBD2_HAS_COMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_compat & ext2fs_cpu_to_be32((mask))))
-#define JFS_HAS_RO_COMPAT_FEATURE(j,mask) \
+#define JBD2_HAS_RO_COMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_ro_compat & ext2fs_cpu_to_be32((mask))))
-#define JFS_HAS_INCOMPAT_FEATURE(j,mask) \
+#define JBD2_HAS_INCOMPAT_FEATURE(j,mask) \
((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_incompat & ext2fs_cpu_to_be32((mask))))
-#define JFS_FEATURE_COMPAT_CHECKSUM 0x00000001
+#define JBD2_FEATURE_COMPAT_CHECKSUM 0x00000001
-#define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001
-#define JFS_FEATURE_INCOMPAT_64BIT 0x00000002
-#define JFS_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004
-#define JFS_FEATURE_INCOMPAT_CSUM_V2 0x00000008
-#define JFS_FEATURE_INCOMPAT_CSUM_V3 0x00000010
+#define JBD2_FEATURE_INCOMPAT_REVOKE 0x00000001
+#define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002
+#define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004
+#define JBD2_FEATURE_INCOMPAT_CSUM_V2 0x00000008
+#define JBD2_FEATURE_INCOMPAT_CSUM_V3 0x00000010
+#define JBD2_FEATURE_INCOMPAT_FAST_COMMIT 0x00000020
/* Features known to this kernel version: */
-#define JFS_KNOWN_COMPAT_FEATURES 0
-#define JFS_KNOWN_ROCOMPAT_FEATURES 0
-#define JFS_KNOWN_INCOMPAT_FEATURES (JFS_FEATURE_INCOMPAT_REVOKE|\
- JFS_FEATURE_INCOMPAT_ASYNC_COMMIT|\
- JFS_FEATURE_INCOMPAT_64BIT|\
- JFS_FEATURE_INCOMPAT_CSUM_V2|\
- JFS_FEATURE_INCOMPAT_CSUM_V3)
+#define JBD2_KNOWN_COMPAT_FEATURES 0
+#define JBD2_KNOWN_ROCOMPAT_FEATURES 0
+#define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE|\
+ JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT| \
+ JBD2_FEATURE_INCOMPAT_64BIT|\
+ JBD2_FEATURE_INCOMPAT_CSUM_V2| \
+ JBD2_FEATURE_INCOMPAT_CSUM_V3 | \
+ JBD2_FEATURE_INCOMPAT_FAST_COMMIT)
#ifdef NO_INLINE_FUNCS
extern size_t journal_tag_bytes(journal_t *journal);
-extern int journal_has_csum_v2or3(journal_t *journal);
+extern int jbd2_journal_has_csum_v2or3(journal_t *journal);
extern int tid_gt(tid_t x, tid_t y) EXT2FS_ATTR((unused));
extern int tid_geq(tid_t x, tid_t y) EXT2FS_ATTR((unused));
#endif
@@ -301,94 +287,95 @@ extern int tid_geq(tid_t x, tid_t y) EXT2FS_ATTR((unused));
#endif /* INCLUDE_INLINE_FUNCS */
/* journal feature predicate functions */
-#define JFS_FEATURE_COMPAT_FUNCS(name, flagname) \
-_INLINE_ int jfs_has_feature_##name(journal_t *j); \
-_INLINE_ int jfs_has_feature_##name(journal_t *j) \
+#define JBD2_FEATURE_COMPAT_FUNCS(name, flagname) \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j); \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j) \
{ \
return ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_compat & \
- ext2fs_cpu_to_be32(JFS_FEATURE_COMPAT_##flagname)) != 0); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_COMPAT_##flagname)) != 0); \
} \
-_INLINE_ void jfs_set_feature_##name(journal_t *j); \
-_INLINE_ void jfs_set_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_compat |= \
- ext2fs_cpu_to_be32(JFS_FEATURE_COMPAT_##flagname); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_COMPAT_##flagname); \
} \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j); \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_compat &= \
- ~ext2fs_cpu_to_be32(JFS_FEATURE_COMPAT_##flagname); \
+ ~ext2fs_cpu_to_be32(JBD2_FEATURE_COMPAT_##flagname); \
}
-#define JFS_FEATURE_RO_COMPAT_FUNCS(name, flagname) \
-_INLINE_ int jfs_has_feature_##name(journal_t *j); \
-_INLINE_ int jfs_has_feature_##name(journal_t *j) \
+#define JBD2_FEATURE_RO_COMPAT_FUNCS(name, flagname) \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j); \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j) \
{ \
return ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_ro_compat & \
- ext2fs_cpu_to_be32(JFS_FEATURE_RO_COMPAT_##flagname)) != 0); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_RO_COMPAT_##flagname)) != 0); \
} \
-_INLINE_ void jfs_set_feature_##name(journal_t *j); \
-_INLINE_ void jfs_set_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_ro_compat |= \
- ext2fs_cpu_to_be32(JFS_FEATURE_RO_COMPAT_##flagname); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_RO_COMPAT_##flagname); \
} \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j); \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_ro_compat &= \
- ~ext2fs_cpu_to_be32(JFS_FEATURE_RO_COMPAT_##flagname); \
+ ~ext2fs_cpu_to_be32(JBD2_FEATURE_RO_COMPAT_##flagname); \
}
-#define JFS_FEATURE_INCOMPAT_FUNCS(name, flagname) \
-_INLINE_ int jfs_has_feature_##name(journal_t *j); \
-_INLINE_ int jfs_has_feature_##name(journal_t *j) \
+#define JBD2_FEATURE_INCOMPAT_FUNCS(name, flagname) \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j); \
+_INLINE_ int jbd2_has_feature_##name(journal_t *j) \
{ \
return ((j)->j_format_version >= 2 && \
((j)->j_superblock->s_feature_incompat & \
- ext2fs_cpu_to_be32(JFS_FEATURE_INCOMPAT_##flagname)) != 0); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_INCOMPAT_##flagname)) != 0); \
} \
-_INLINE_ void jfs_set_feature_##name(journal_t *j); \
-_INLINE_ void jfs_set_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_set_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_incompat |= \
- ext2fs_cpu_to_be32(JFS_FEATURE_INCOMPAT_##flagname); \
+ ext2fs_cpu_to_be32(JBD2_FEATURE_INCOMPAT_##flagname); \
} \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j); \
-_INLINE_ void jfs_clear_feature_##name(journal_t *j) \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j); \
+_INLINE_ void jbd2_clear_feature_##name(journal_t *j) \
{ \
(j)->j_superblock->s_feature_incompat &= \
- ~ext2fs_cpu_to_be32(JFS_FEATURE_INCOMPAT_##flagname); \
+ ~ext2fs_cpu_to_be32(JBD2_FEATURE_INCOMPAT_##flagname); \
}
#else
-#define JFS_FEATURE_COMPAT_FUNCS(name, flagname) \
-extern int jfs_has_feature_##name(journal_t *j); \
-extern void jfs_set_feature_##name(journal_t *j); \
-extern void jfs_clear_feature_##name(journal_t *j);
+#define JBD2_FEATURE_COMPAT_FUNCS(name, flagname) \
+extern int jbd2_has_feature_##name(journal_t *j); \
+extern void jbd2_set_feature_##name(journal_t *j); \
+extern void jbd2_clear_feature_##name(journal_t *j);
-#define JFS_FEATURE_RO_COMPAT_FUNCS(name, flagname) \
-extern int jfs_has_feature_##name(journal_t *j); \
-extern void jfs_set_feature_##name(journal_t *j); \
-extern void jfs_clear_feature_##name(journal_t *j);
+#define JBD2_FEATURE_RO_COMPAT_FUNCS(name, flagname) \
+extern int jbd2_has_feature_##name(journal_t *j); \
+extern void jbd2_set_feature_##name(journal_t *j); \
+extern void jbd2_clear_feature_##name(journal_t *j);
-#define JFS_FEATURE_INCOMPAT_FUNCS(name, flagname) \
-extern int jfs_has_feature_##name(journal_t *j); \
-extern void jfs_set_feature_##name(journal_t *j); \
-extern void jfs_clear_feature_##name(journal_t *j);
+#define JBD2_FEATURE_INCOMPAT_FUNCS(name, flagname) \
+extern int jbd2_has_feature_##name(journal_t *j); \
+extern void jbd2_set_feature_##name(journal_t *j); \
+extern void jbd2_clear_feature_##name(journal_t *j);
#endif /* (defined(E2FSCK_INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS)) */
-JFS_FEATURE_COMPAT_FUNCS(checksum, CHECKSUM)
+JBD2_FEATURE_COMPAT_FUNCS(checksum, CHECKSUM)
-JFS_FEATURE_INCOMPAT_FUNCS(revoke, REVOKE)
-JFS_FEATURE_INCOMPAT_FUNCS(64bit, 64BIT)
-JFS_FEATURE_INCOMPAT_FUNCS(async_commit, ASYNC_COMMIT)
-JFS_FEATURE_INCOMPAT_FUNCS(csum2, CSUM_V2)
-JFS_FEATURE_INCOMPAT_FUNCS(csum3, CSUM_V3)
+JBD2_FEATURE_INCOMPAT_FUNCS(revoke, REVOKE)
+JBD2_FEATURE_INCOMPAT_FUNCS(64bit, 64BIT)
+JBD2_FEATURE_INCOMPAT_FUNCS(async_commit, ASYNC_COMMIT)
+JBD2_FEATURE_INCOMPAT_FUNCS(csum2, CSUM_V2)
+JBD2_FEATURE_INCOMPAT_FUNCS(csum3, CSUM_V3)
+JBD2_FEATURE_INCOMPAT_FUNCS(fast_commit, FAST_COMMIT)
#if (defined(E2FSCK_INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS))
/*
@@ -398,28 +385,35 @@ _INLINE_ size_t journal_tag_bytes(journal_t *journal)
{
size_t sz;
- if (jfs_has_feature_csum3(journal))
+ if (jbd2_has_feature_csum3(journal))
return sizeof(journal_block_tag3_t);
sz = sizeof(journal_block_tag_t);
- if (jfs_has_feature_csum2(journal))
+ if (jbd2_has_feature_csum2(journal))
sz += sizeof(__u16);
- if (jfs_has_feature_64bit(journal))
+ if (jbd2_has_feature_64bit(journal))
return sz;
return sz - sizeof(__u32);
}
-_INLINE_ int journal_has_csum_v2or3(journal_t *journal)
+_INLINE_ int jbd2_journal_has_csum_v2or3(journal_t *journal)
{
- if (jfs_has_feature_csum2(journal) || jfs_has_feature_csum3(journal))
+ if (jbd2_has_feature_csum2(journal) || jbd2_has_feature_csum3(journal))
return 1;
return 0;
}
+_INLINE_ int jbd2_journal_get_num_fc_blks(journal_superblock_t *jsb)
+{
+ int num_fc_blocks = be32_to_cpu(jsb->s_num_fc_blks);
+
+ return num_fc_blocks ? num_fc_blocks : JBD2_DEFAULT_FAST_COMMIT_BLOCKS;
+}
+
/* Comparison functions for transaction IDs: perform comparisons using
* modulo arithmetic so that they work over sequence number wraps. */
diff --git a/lib/ext2fs/kernel-list.h b/lib/ext2fs/kernel-list.h
index 01f4f6b9..dd7b8e07 100644
--- a/lib/ext2fs/kernel-list.h
+++ b/lib/ext2fs/kernel-list.h
@@ -1,6 +1,8 @@
#ifndef _LINUX_LIST_H
#define _LINUX_LIST_H
+#include "compiler.h"
+
/*
* Simple doubly linked list implementation.
*
@@ -101,7 +103,7 @@ static __inline__ void list_splice(struct list_head *list, struct list_head *hea
}
#define list_entry(ptr, type, member) \
- ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+ container_of(ptr, type, member)
#define list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); pos = pos->next)
diff --git a/lib/ext2fs/link.c b/lib/ext2fs/link.c
index 65dc8877..a2c34ac5 100644
--- a/lib/ext2fs/link.c
+++ b/lib/ext2fs/link.c
@@ -18,6 +18,154 @@
#include "ext2_fs.h"
#include "ext2fs.h"
+#include "ext2fsP.h"
+
+#define EXT2_DX_ROOT_OFF 24
+
+struct dx_frame {
+ void *buf;
+ blk64_t pblock;
+ struct ext2_dx_countlimit *head;
+ struct ext2_dx_entry *entries;
+ struct ext2_dx_entry *at;
+};
+
+struct dx_lookup_info {
+ const char *name;
+ int namelen;
+ int hash_alg;
+ __u32 hash;
+ int levels;
+ struct dx_frame frames[EXT4_HTREE_LEVEL];
+};
+
+static errcode_t alloc_dx_frame(ext2_filsys fs, struct dx_frame *frame)
+{
+ return ext2fs_get_mem(fs->blocksize, &frame->buf);
+}
+
+static void dx_release(struct dx_lookup_info *info)
+{
+ int level;
+
+ for (level = 0; level < info->levels; level++) {
+ if (info->frames[level].buf == NULL)
+ break;
+ ext2fs_free_mem(&(info->frames[level].buf));
+ }
+ info->levels = 0;
+}
+
+static void dx_search_entry(struct dx_frame *frame, int count, __u32 hash)
+{
+ struct ext2_dx_entry *p, *q, *m;
+
+ p = frame->entries + 1;
+ q = frame->entries + count - 1;
+ while (p <= q) {
+ m = p + (q - p) / 2;
+ if (ext2fs_le32_to_cpu(m->hash) > hash)
+ q = m - 1;
+ else
+ p = m + 1;
+ }
+ frame->at = p - 1;
+}
+
+static errcode_t load_logical_dir_block(ext2_filsys fs, ext2_ino_t dir,
+ struct ext2_inode *diri, blk64_t block,
+ blk64_t *pblk, void *buf)
+{
+ errcode_t errcode;
+ int ret_flags;
+
+ errcode = ext2fs_bmap2(fs, dir, diri, NULL, 0, block, &ret_flags,
+ pblk);
+ if (errcode)
+ return errcode;
+ if (ret_flags & BMAP_RET_UNINIT)
+ return EXT2_ET_DIR_CORRUPTED;
+ return ext2fs_read_dir_block4(fs, *pblk, buf, 0, dir);
+}
+
+static errcode_t dx_lookup(ext2_filsys fs, ext2_ino_t dir,
+ struct ext2_inode *diri, struct dx_lookup_info *info)
+{
+ struct ext2_dx_root_info *root;
+ errcode_t errcode;
+ int level = 0;
+ int count, limit;
+ int hash_alg;
+ int hash_flags = diri->i_flags & EXT4_CASEFOLD_FL;
+ __u32 minor_hash;
+ struct dx_frame *frame;
+
+ errcode = alloc_dx_frame(fs, &(info->frames[0]));
+ if (errcode)
+ return errcode;
+ info->levels = 1;
+
+ errcode = load_logical_dir_block(fs, dir, diri, 0,
+ &(info->frames[0].pblock),
+ info->frames[0].buf);
+ if (errcode)
+ goto out_err;
+ root = info->frames[0].buf + EXT2_DX_ROOT_OFF;
+ hash_alg = root->hash_version;
+ if (hash_alg != EXT2_HASH_TEA && hash_alg != EXT2_HASH_HALF_MD4 &&
+ hash_alg != EXT2_HASH_LEGACY) {
+ errcode = EXT2_ET_DIRHASH_UNSUPP;
+ goto out_err;
+ }
+ if (hash_alg <= EXT2_HASH_TEA &&
+ fs->super->s_flags & EXT2_FLAGS_UNSIGNED_HASH)
+ hash_alg += 3;
+ if (root->indirect_levels >= ext2_dir_htree_level(fs)) {
+ errcode = EXT2_ET_DIR_CORRUPTED;
+ goto out_err;
+ }
+ info->hash_alg = hash_alg;
+
+ errcode = ext2fs_dirhash2(hash_alg, info->name, info->namelen,
+ fs->encoding, hash_flags,
+ fs->super->s_hash_seed, &info->hash,
+ &minor_hash);
+ if (errcode)
+ goto out_err;
+
+ for (level = 0; level <= root->indirect_levels; level++) {
+ frame = &(info->frames[level]);
+ if (level > 0) {
+ errcode = alloc_dx_frame(fs, frame);
+ if (errcode)
+ goto out_err;
+ info->levels++;
+
+ errcode = load_logical_dir_block(fs, dir, diri,
+ ext2fs_le32_to_cpu(info->frames[level-1].at->block) & 0x0fffffff,
+ &(frame->pblock), frame->buf);
+ if (errcode)
+ goto out_err;
+ }
+ errcode = ext2fs_get_dx_countlimit(fs, frame->buf,
+ &(frame->head), NULL);
+ if (errcode)
+ goto out_err;
+ count = ext2fs_le16_to_cpu(frame->head->count);
+ limit = ext2fs_le16_to_cpu(frame->head->limit);
+ frame->entries = (struct ext2_dx_entry *)(frame->head);
+ if (!count || count > limit) {
+ errcode = EXT2_ET_DIR_CORRUPTED;
+ goto out_err;
+ }
+
+ dx_search_entry(frame, count, info->hash);
+ }
+ return 0;
+out_err:
+ dx_release(info);
+ return errcode;
+}
struct link_struct {
ext2_filsys fs;
@@ -31,7 +179,9 @@ struct link_struct {
struct ext2_super_block *sb;
};
-static int link_proc(struct ext2_dir_entry *dirent,
+static int link_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
+ int entru EXT2FS_ATTR((unused)),
+ struct ext2_dir_entry *dirent,
int offset,
int blocksize,
char *buf,
@@ -42,7 +192,6 @@ static int link_proc(struct ext2_dir_entry *dirent,
unsigned int rec_len, min_rec_len, curr_rec_len;
int ret = 0;
int csum_size = 0;
- struct ext2_dir_entry_tail *t;
if (ls->done)
return DIRENT_ABORT;
@@ -71,40 +220,6 @@ static int link_proc(struct ext2_dir_entry *dirent,
}
/*
- * Since ext2fs_link blows away htree data, we need to be
- * careful -- if metadata_csum is enabled and we're passed in
- * a dirent that contains htree data, we need to create the
- * fake entry at the end of the block that hides the checksum.
- */
-
- /* De-convert a dx_node block */
- if (csum_size &&
- curr_rec_len == ls->fs->blocksize &&
- !dirent->inode) {
- curr_rec_len -= csum_size;
- ls->err = ext2fs_set_rec_len(ls->fs, curr_rec_len, dirent);
- if (ls->err)
- return DIRENT_ABORT;
- t = EXT2_DIRENT_TAIL(buf, ls->fs->blocksize);
- ext2fs_initialize_dirent_tail(ls->fs, t);
- ret = DIRENT_CHANGED;
- }
-
- /* De-convert a dx_root block */
- if (csum_size &&
- curr_rec_len == ls->fs->blocksize - EXT2_DIR_REC_LEN(1) &&
- offset == EXT2_DIR_REC_LEN(1) &&
- dirent->name[0] == '.' && dirent->name[1] == '.') {
- curr_rec_len -= csum_size;
- ls->err = ext2fs_set_rec_len(ls->fs, curr_rec_len, dirent);
- if (ls->err)
- return DIRENT_ABORT;
- t = EXT2_DIRENT_TAIL(buf, ls->fs->blocksize);
- ext2fs_initialize_dirent_tail(ls->fs, t);
- ret = DIRENT_CHANGED;
- }
-
- /*
* If the directory entry is used, see if we can split the
* directory entry to make room for the new name. If so,
* truncate it and return.
@@ -144,6 +259,343 @@ static int link_proc(struct ext2_dir_entry *dirent,
return DIRENT_ABORT|DIRENT_CHANGED;
}
+static errcode_t add_dirent_to_buf(ext2_filsys fs, e2_blkcnt_t blockcnt,
+ char *buf, ext2_ino_t dir,
+ struct ext2_inode *diri, const char *name,
+ ext2_ino_t ino, int flags, blk64_t *pblkp)
+{
+ struct dir_context ctx;
+ struct link_struct ls;
+ errcode_t retval;
+
+ retval = load_logical_dir_block(fs, dir, diri, blockcnt, pblkp, buf);
+ if (retval)
+ return retval;
+ ctx.errcode = 0;
+ ctx.func = link_proc;
+ ctx.dir = dir;
+ ctx.flags = DIRENT_FLAG_INCLUDE_EMPTY;
+ ctx.buf = buf;
+ ctx.priv_data = &ls;
+
+ ls.fs = fs;
+ ls.name = name;
+ ls.namelen = strlen(name);
+ ls.inode = ino;
+ ls.flags = flags;
+ ls.done = 0;
+ ls.sb = fs->super;
+ ls.blocksize = fs->blocksize;
+ ls.err = 0;
+
+ ext2fs_process_dir_block(fs, pblkp, blockcnt, 0, 0, &ctx);
+ if (ctx.errcode)
+ return ctx.errcode;
+ if (ls.err)
+ return ls.err;
+ if (!ls.done)
+ return EXT2_ET_DIR_NO_SPACE;
+ return 0;
+}
+
+struct dx_hash_map {
+ __u32 hash;
+ int size;
+ int off;
+};
+
+static EXT2_QSORT_TYPE dx_hash_map_cmp(const void *ap, const void *bp)
+{
+ const struct dx_hash_map *a = ap, *b = bp;
+
+ if (a->hash < b->hash)
+ return -1;
+ if (a->hash > b->hash)
+ return 1;
+ return 0;
+}
+
+static errcode_t dx_move_dirents(ext2_filsys fs, struct dx_hash_map *map,
+ int count, void *from, void *to)
+{
+ struct ext2_dir_entry *de;
+ int i;
+ int rec_len = 0;
+ errcode_t retval;
+ int csum_size = 0;
+ void *base = to;
+
+ if (ext2fs_has_feature_metadata_csum(fs->super))
+ csum_size = sizeof(struct ext2_dir_entry_tail);
+
+ for (i = 0; i < count; i++) {
+ de = from + map[i].off;
+ rec_len = EXT2_DIR_REC_LEN(ext2fs_dirent_name_len(de));
+ memcpy(to, de, rec_len);
+ retval = ext2fs_set_rec_len(fs, rec_len, to);
+ if (retval)
+ return retval;
+ to += rec_len;
+ }
+ /*
+ * Update rec_len of the last dir entry to stretch to the end of block
+ */
+ to -= rec_len;
+ rec_len = fs->blocksize - (to - base) - csum_size;
+ retval = ext2fs_set_rec_len(fs, rec_len, to);
+ if (retval)
+ return retval;
+ if (csum_size)
+ ext2fs_initialize_dirent_tail(fs,
+ EXT2_DIRENT_TAIL(base, fs->blocksize));
+ return 0;
+}
+
+static errcode_t dx_insert_entry(ext2_filsys fs, ext2_ino_t dir,
+ struct dx_lookup_info *info, int level,
+ __u32 hash, blk64_t lblk)
+{
+ int pcount;
+ struct ext2_dx_entry *top, *new;
+
+ pcount = ext2fs_le16_to_cpu(info->frames[level].head->count);
+ top = info->frames[level].entries + pcount;
+ new = info->frames[level].at + 1;
+ memmove(new + 1, new, (char *)top - (char *)new);
+ new->hash = ext2fs_cpu_to_le32(hash);
+ new->block = ext2fs_cpu_to_le32(lblk);
+ info->frames[level].head->count = ext2fs_cpu_to_le16(pcount + 1);
+ return ext2fs_write_dir_block4(fs, info->frames[level].pblock,
+ info->frames[level].buf, 0, dir);
+}
+
+static errcode_t dx_split_leaf(ext2_filsys fs, ext2_ino_t dir,
+ struct ext2_inode *diri,
+ struct dx_lookup_info *info, void *buf,
+ blk64_t leaf_pblk, blk64_t new_lblk,
+ blk64_t new_pblk)
+{
+ int hash_flags = diri->i_flags & EXT4_CASEFOLD_FL;
+ struct ext2_dir_entry *de;
+ void *buf2;
+ errcode_t retval = 0;
+ unsigned int rec_len;
+ unsigned int offset, move_size;
+ int i, count = 0;
+ struct dx_hash_map *map;
+ int continued;
+ __u32 minor_hash;
+
+ retval = ext2fs_get_mem(fs->blocksize, &buf2);
+ if (retval)
+ return retval;
+ retval = ext2fs_get_array(fs->blocksize / 12,
+ sizeof(struct dx_hash_map), &map);
+ if (retval) {
+ ext2fs_free_mem(&buf2);
+ return retval;
+ }
+ for (offset = 0; offset < fs->blocksize; offset += rec_len) {
+ de = buf + offset;
+ retval = ext2fs_get_rec_len(fs, de, &rec_len);
+ if (retval)
+ goto out;
+ if (ext2fs_dirent_name_len(de) > 0 && de->inode) {
+ map[count].off = offset;
+ map[count].size = rec_len;
+ retval = ext2fs_dirhash2(info->hash_alg, de->name,
+ ext2fs_dirent_name_len(de),
+ fs->encoding, hash_flags,
+ fs->super->s_hash_seed,
+ &(map[count].hash),
+ &minor_hash);
+ if (retval)
+ goto out;
+ count++;
+ }
+ }
+ qsort(map, count, sizeof(struct dx_hash_map), dx_hash_map_cmp);
+ move_size = 0;
+ /* Find place to split block */
+ for (i = count - 1; i >= 0; i--) {
+ if (move_size + map[i].size / 2 > fs->blocksize / 2)
+ break;
+ move_size += map[i].size;
+ }
+ /* Let i be the first entry to move */
+ i++;
+ /* Move selected directory entries to new block */
+ retval = dx_move_dirents(fs, map + i, count - i, buf, buf2);
+ if (retval)
+ goto out;
+ retval = ext2fs_write_dir_block4(fs, new_pblk, buf2, 0, dir);
+ if (retval)
+ goto out;
+ /* Repack remaining entries in the old block */
+ retval = dx_move_dirents(fs, map, i, buf, buf2);
+ if (retval)
+ goto out;
+ retval = ext2fs_write_dir_block4(fs, leaf_pblk, buf2, 0, dir);
+ if (retval)
+ goto out;
+ /* Update parent node */
+ continued = map[i].hash == map[i-1].hash;
+ retval = dx_insert_entry(fs, dir, info, info->levels - 1,
+ map[i].hash + continued, new_lblk);
+out:
+ ext2fs_free_mem(&buf2);
+ ext2fs_free_mem(&map);
+ return retval;
+}
+
+static errcode_t dx_grow_tree(ext2_filsys fs, ext2_ino_t dir,
+ struct ext2_inode *diri,
+ struct dx_lookup_info *info, void *buf,
+ blk64_t leaf_pblk)
+{
+ int i;
+ errcode_t retval;
+ ext2_off64_t size = EXT2_I_SIZE(diri);
+ blk64_t lblk, pblk;
+ struct ext2_dir_entry *de;
+ struct ext2_dx_countlimit *head;
+ int csum_size = 0;
+ int count;
+
+ if (ext2fs_has_feature_metadata_csum(fs->super))
+ csum_size = sizeof(struct ext2_dx_tail);
+
+ /* Find level which can accommodate new child */
+ for (i = info->levels - 1; i >= 0; i--)
+ if (ext2fs_le16_to_cpu(info->frames[i].head->count) <
+ ext2fs_le16_to_cpu(info->frames[i].head->limit))
+ break;
+ /* Need to grow tree depth? */
+ if (i < 0 && info->levels >= ext2_dir_htree_level(fs))
+ return EXT2_ET_DIR_NO_SPACE;
+ lblk = size / fs->blocksize;
+ size += fs->blocksize;
+ retval = ext2fs_inode_size_set(fs, diri, size);
+ if (retval)
+ return retval;
+ retval = ext2fs_fallocate(fs,
+ EXT2_FALLOCATE_FORCE_INIT | EXT2_FALLOCATE_ZERO_BLOCKS,
+ dir, diri, 0, lblk, 1);
+ if (retval)
+ return retval;
+ retval = ext2fs_write_inode(fs, dir, diri);
+ if (retval)
+ return retval;
+ retval = ext2fs_bmap2(fs, dir, diri, NULL, 0, lblk, NULL, &pblk);
+ if (retval)
+ return retval;
+ /* Only leaf addition needed? */
+ if (i == info->levels - 1)
+ return dx_split_leaf(fs, dir, diri, info, buf, leaf_pblk,
+ lblk, pblk);
+
+ de = buf;
+ de->inode = 0;
+ ext2fs_dirent_set_name_len(de, 0);
+ ext2fs_dirent_set_file_type(de, 0);
+ retval = ext2fs_set_rec_len(fs, fs->blocksize, de);
+ if (retval)
+ return retval;
+ head = buf + 8;
+ count = ext2fs_le16_to_cpu(info->frames[i+1].head->count);
+ /* Growing tree depth? */
+ if (i < 0) {
+ struct ext2_dx_root_info *root;
+
+ memcpy(head, info->frames[0].entries,
+ count * sizeof(struct ext2_dx_entry));
+ head->limit = ext2fs_cpu_to_le16(
+ (fs->blocksize - (8 + csum_size)) /
+ sizeof(struct ext2_dx_entry));
+ /* head->count gets set by memcpy above to correct value */
+
+ /* Now update tree root */
+ info->frames[0].head->count = ext2fs_cpu_to_le16(1);
+ info->frames[0].entries[0].block = ext2fs_cpu_to_le32(lblk);
+ root = info->frames[0].buf + EXT2_DX_ROOT_OFF;
+ root->indirect_levels++;
+ } else {
+ /* Splitting internal node in two */
+ int count1 = count / 2;
+ int count2 = count - count1;
+ __u32 split_hash = ext2fs_le32_to_cpu(info->frames[i+1].entries[count1].hash);
+
+ memcpy(head, info->frames[i+1].entries + count1,
+ count2 * sizeof(struct ext2_dx_entry));
+ head->count = ext2fs_cpu_to_le16(count2);
+ head->limit = ext2fs_cpu_to_le16(
+ (fs->blocksize - (8 + csum_size)) /
+ sizeof(struct ext2_dx_entry));
+ info->frames[i+1].head->count = ext2fs_cpu_to_le16(count1);
+
+ /* Update parent node */
+ retval = dx_insert_entry(fs, dir, info, i, split_hash, lblk);
+ if (retval)
+ return retval;
+
+ }
+ /* Writeout split block / updated root */
+ retval = ext2fs_write_dir_block4(fs, info->frames[i+1].pblock,
+ info->frames[i+1].buf, 0, dir);
+ if (retval)
+ return retval;
+ /* Writeout new tree block */
+ retval = ext2fs_write_dir_block4(fs, pblk, buf, 0, dir);
+ if (retval)
+ return retval;
+ return 0;
+}
+
+static errcode_t dx_link(ext2_filsys fs, ext2_ino_t dir,
+ struct ext2_inode *diri, const char *name,
+ ext2_ino_t ino, int flags)
+{
+ struct dx_lookup_info dx_info;
+ errcode_t retval;
+ void *blockbuf;
+ int restart = 0;
+ blk64_t leaf_pblk;
+
+ retval = ext2fs_get_mem(fs->blocksize, &blockbuf);
+ if (retval)
+ return retval;
+
+ dx_info.name = name;
+ dx_info.namelen = strlen(name);
+again:
+ retval = dx_lookup(fs, dir, diri, &dx_info);
+ if (retval)
+ goto free_buf;
+
+ retval = add_dirent_to_buf(fs,
+ ext2fs_le32_to_cpu(dx_info.frames[dx_info.levels-1].at->block) & 0x0fffffff,
+ blockbuf, dir, diri, name, ino, flags, &leaf_pblk);
+ /*
+ * Success or error other than ENOSPC...? We are done. We may need upto
+ * two tries to add entry. One to split htree node and another to add
+ * new leaf block.
+ */
+ if (restart >= dx_info.levels || retval != EXT2_ET_DIR_NO_SPACE)
+ goto free_frames;
+ retval = dx_grow_tree(fs, dir, diri, &dx_info, blockbuf, leaf_pblk);
+ if (retval)
+ goto free_frames;
+ /* Restart everything now that the tree is larger */
+ restart++;
+ dx_release(&dx_info);
+ goto again;
+free_frames:
+ dx_release(&dx_info);
+free_buf:
+ ext2fs_free_mem(&blockbuf);
+ return retval;
+}
+
/*
* Note: the low 3 bits of the flags field are used as the directory
* entry filetype.
@@ -163,6 +615,12 @@ errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name,
if (!(fs->flags & EXT2_FLAG_RW))
return EXT2_ET_RO_FILSYS;
+ if ((retval = ext2fs_read_inode(fs, dir, &inode)) != 0)
+ return retval;
+
+ if (inode.i_flags & EXT2_INDEX_FL)
+ return dx_link(fs, dir, &inode, name, ino, flags);
+
ls.fs = fs;
ls.name = name;
ls.namelen = name ? strlen(name) : 0;
@@ -173,8 +631,8 @@ errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name,
ls.blocksize = fs->blocksize;
ls.err = 0;
- retval = ext2fs_dir_iterate(fs, dir, DIRENT_FLAG_INCLUDE_EMPTY,
- 0, link_proc, &ls);
+ retval = ext2fs_dir_iterate2(fs, dir, DIRENT_FLAG_INCLUDE_EMPTY,
+ NULL, link_proc, &ls);
if (retval)
return retval;
if (ls.err)
@@ -182,20 +640,5 @@ errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name,
if (!ls.done)
return EXT2_ET_DIR_NO_SPACE;
-
- if ((retval = ext2fs_read_inode(fs, dir, &inode)) != 0)
- return retval;
-
- /*
- * If this function changes to preserve the htree, remove the
- * two hunks in link_proc that shove checksum tails into the
- * former dx_root/dx_node blocks.
- */
- if (inode.i_flags & EXT2_INDEX_FL) {
- inode.i_flags &= ~EXT2_INDEX_FL;
- if ((retval = ext2fs_write_inode(fs, dir, &inode)) != 0)
- return retval;
- }
-
return 0;
}
diff --git a/lib/ext2fs/mkdir.c b/lib/ext2fs/mkdir.c
index 2a63aad1..437c8ffc 100644
--- a/lib/ext2fs/mkdir.c
+++ b/lib/ext2fs/mkdir.c
@@ -43,6 +43,7 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
blk64_t blk;
char *block = 0;
int inline_data = 0;
+ int drop_refcount = 0;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -144,6 +145,14 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
}
/*
+ * Update accounting....
+ */
+ if (!inline_data)
+ ext2fs_block_alloc_stats2(fs, blk, +1);
+ ext2fs_inode_alloc_stats2(fs, ino, +1, 1);
+ drop_refcount = 1;
+
+ /*
* Link the directory into the filesystem hierarchy
*/
if (name) {
@@ -174,17 +183,16 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
if (retval)
goto cleanup;
}
-
- /*
- * Update accounting....
- */
- if (!inline_data)
- ext2fs_block_alloc_stats2(fs, blk, +1);
- ext2fs_inode_alloc_stats2(fs, ino, +1, 1);
+ drop_refcount = 0;
cleanup:
if (block)
ext2fs_free_mem(&block);
+ if (drop_refcount) {
+ if (!inline_data)
+ ext2fs_block_alloc_stats2(fs, blk, -1);
+ ext2fs_inode_alloc_stats2(fs, ino, -1, 1);
+ }
return retval;
}
diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
index a90e80e0..11d73e30 100644
--- a/lib/ext2fs/mkjournal.c
+++ b/lib/ext2fs/mkjournal.c
@@ -12,6 +12,7 @@
#include "config.h"
#include <stdio.h>
#include <string.h>
+#include <assert.h>
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -43,14 +44,14 @@
* This function automatically sets up the journal superblock and
* returns it as an allocated block.
*/
-errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
- __u32 num_blocks, int flags,
- char **ret_jsb)
+errcode_t ext2fs_create_journal_superblock2(ext2_filsys fs,
+ struct ext2fs_journal_params *jparams,
+ int flags, char **ret_jsb)
{
errcode_t retval;
journal_superblock_t *jsb;
- if (num_blocks < JFS_MIN_JOURNAL_BLOCKS)
+ if (jparams->num_journal_blocks < JBD2_MIN_JOURNAL_BLOCKS)
return EXT2_ET_JOURNAL_TOO_SMALL;
if ((retval = ext2fs_get_mem(fs->blocksize, &jsb)))
@@ -58,16 +59,17 @@ errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
memset (jsb, 0, fs->blocksize);
- jsb->s_header.h_magic = htonl(JFS_MAGIC_NUMBER);
+ jsb->s_header.h_magic = htonl(JBD2_MAGIC_NUMBER);
if (flags & EXT2_MKJOURNAL_V1_SUPER)
- jsb->s_header.h_blocktype = htonl(JFS_SUPERBLOCK_V1);
+ jsb->s_header.h_blocktype = htonl(JBD2_SUPERBLOCK_V1);
else
- jsb->s_header.h_blocktype = htonl(JFS_SUPERBLOCK_V2);
+ jsb->s_header.h_blocktype = htonl(JBD2_SUPERBLOCK_V2);
jsb->s_blocksize = htonl(fs->blocksize);
- jsb->s_maxlen = htonl(num_blocks);
+ jsb->s_maxlen = htonl(jparams->num_journal_blocks + jparams->num_fc_blocks);
jsb->s_nr_users = htonl(1);
jsb->s_first = htonl(1);
jsb->s_sequence = htonl(1);
+ jsb->s_num_fc_blks = htonl(jparams->num_fc_blocks);
memcpy(jsb->s_uuid, fs->super->s_uuid, sizeof(fs->super->s_uuid));
/*
* If we're creating an external journal device, we need to
@@ -82,20 +84,32 @@ errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
return 0;
}
+errcode_t ext2fs_create_journal_superblock(ext2_filsys fs, __u32 num_blocks,
+ int flags, char **ret_sb)
+{
+ struct ext2fs_journal_params jparams;
+
+ jparams.num_journal_blocks = num_blocks;
+ jparams.num_fc_blocks = 0;
+
+ return ext2fs_create_journal_superblock2(fs, &jparams, flags, ret_sb);
+}
+
/*
* This function writes a journal using POSIX routines. It is used
* for creating external journals and creating journals on live
* filesystems.
*/
static errcode_t write_journal_file(ext2_filsys fs, char *filename,
- blk_t num_blocks, int flags)
+ struct ext2fs_journal_params *jparams,
+ int flags)
{
errcode_t retval;
char *buf = 0;
int fd, ret_size;
blk_t i;
- if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
+ if ((retval = ext2fs_create_journal_superblock2(fs, jparams, flags,
&buf)))
return retval;
@@ -119,7 +133,7 @@ static errcode_t write_journal_file(ext2_filsys fs, char *filename,
if (flags & EXT2_MKJOURNAL_LAZYINIT)
goto success;
- for (i = 1; i < num_blocks; i++) {
+ for (i = 1; i < jparams->num_journal_blocks + jparams->num_fc_blocks; i++) {
ret_size = write(fd, buf, fs->blocksize);
if (ret_size < 0) {
retval = errno;
@@ -262,7 +276,8 @@ static blk64_t get_midpoint_journal_block(ext2_filsys fs)
* This function creates a journal using direct I/O routines.
*/
static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
- blk_t num_blocks, blk64_t goal, int flags)
+ struct ext2fs_journal_params *jparams,
+ blk64_t goal, int flags)
{
char *buf;
errcode_t retval;
@@ -271,7 +286,7 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
int falloc_flags = EXT2_FALLOCATE_FORCE_INIT;
blk64_t zblk;
- if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
+ if ((retval = ext2fs_create_journal_superblock2(fs, jparams, flags,
&buf)))
return retval;
@@ -295,7 +310,8 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
if (!(flags & EXT2_MKJOURNAL_LAZYINIT))
falloc_flags |= EXT2_FALLOCATE_ZERO_BLOCKS;
- inode_size = (unsigned long long)fs->blocksize * num_blocks;
+ inode_size = (unsigned long long)fs->blocksize *
+ (jparams->num_journal_blocks + jparams->num_fc_blocks);
inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
inode.i_links_count = 1;
inode.i_mode = LINUX_S_IFREG | 0600;
@@ -304,7 +320,8 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
goto out2;
retval = ext2fs_fallocate(fs, falloc_flags, journal_ino,
- &inode, goal, 0, num_blocks);
+ &inode, goal, 0,
+ jparams->num_journal_blocks + jparams->num_fc_blocks);
if (retval)
goto out2;
@@ -358,6 +375,43 @@ int ext2fs_default_journal_size(__u64 num_blocks)
return 262144; /* 1 GB */
}
+errcode_t ext2fs_get_journal_params(struct ext2fs_journal_params *params,
+ ext2_filsys fs)
+{
+ blk_t total_blks;
+ int ret;
+
+ memset(params, 0, sizeof(*params));
+ if (ext2fs_has_feature_journal_dev(fs->super)) {
+ total_blks = ext2fs_blocks_count(fs->super);
+ if (total_blks < JBD2_MIN_JOURNAL_BLOCKS)
+ return EXT2_ET_JOURNAL_TOO_SMALL;
+
+ if (!ext2fs_has_feature_fast_commit(fs->super)) {
+ params->num_journal_blocks = total_blks;
+ params->num_fc_blocks = 0;
+ return 0;
+ }
+ params->num_journal_blocks = ext2fs_blocks_count(fs->super) *
+ EXT2_JOURNAL_TO_FC_BLKS_RATIO /
+ (EXT2_JOURNAL_TO_FC_BLKS_RATIO + 1);
+ if (JBD2_MIN_JOURNAL_BLOCKS > params->num_journal_blocks)
+ params->num_journal_blocks = JBD2_MIN_JOURNAL_BLOCKS;
+ params->num_fc_blocks = total_blks - params->num_journal_blocks;
+ return 0;
+ }
+
+ ret = ext2fs_default_journal_size(ext2fs_blocks_count(fs->super));
+ if (ret < 0)
+ return EXT2_ET_JOURNAL_TOO_SMALL;
+
+ params->num_journal_blocks = ret;
+ if (ext2fs_has_feature_fast_commit(fs->super))
+ params->num_fc_blocks = params->num_journal_blocks /
+ EXT2_JOURNAL_TO_FC_BLKS_RATIO;
+ return 0;
+}
+
int ext2fs_journal_sb_start(int blocksize)
{
if (blocksize == EXT2_MIN_BLOCK_SIZE)
@@ -392,8 +446,8 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
return retval;
jsb = (journal_superblock_t *) buf;
- if ((jsb->s_header.h_magic != (unsigned) ntohl(JFS_MAGIC_NUMBER)) ||
- (jsb->s_header.h_blocktype != (unsigned) ntohl(JFS_SUPERBLOCK_V2)))
+ if ((jsb->s_header.h_magic != (unsigned) ntohl(JBD2_MAGIC_NUMBER)) ||
+ (jsb->s_header.h_blocktype != (unsigned) ntohl(JBD2_SUPERBLOCK_V2)))
return EXT2_ET_NO_JOURNAL_SB;
if (ntohl(jsb->s_blocksize) != (unsigned long) fs->blocksize)
@@ -401,7 +455,7 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
/* Check and see if this filesystem has already been added */
nr_users = ntohl(jsb->s_nr_users);
- if (nr_users > JFS_USERS_MAX)
+ if (nr_users > JBD2_USERS_MAX)
return EXT2_ET_CORRUPT_JOURNAL_SB;
for (i=0; i < nr_users; i++) {
if (memcmp(fs->super->s_uuid,
@@ -434,7 +488,7 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
* POSIX routines if the filesystem is mounted, or using direct I/O
* functions if it is not.
*/
-errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
+errcode_t ext2fs_add_journal_inode3(ext2_filsys fs, struct ext2fs_journal_params *jparams,
blk64_t goal, int flags)
{
errcode_t retval;
@@ -470,7 +524,7 @@ errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
retval = ioctl(fd, EXT2_IOC_SETFLAGS, &f);
close(fd);
if (retval)
- return retval;
+ return errno;
}
#endif
#endif
@@ -486,7 +540,7 @@ errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
* filesystems is extremely rare these days... Ignore it. */
flags &= ~EXT2_MKJOURNAL_LAZYINIT;
- if ((retval = write_journal_file(fs, jfile, num_blocks, flags)))
+ if ((retval = write_journal_file(fs, jfile, jparams, flags)))
goto errout;
/* Get inode number of the journal file */
@@ -528,7 +582,7 @@ errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
}
journal_ino = EXT2_JOURNAL_INO;
if ((retval = write_journal_inode(fs, journal_ino,
- num_blocks, goal, flags)))
+ jparams, goal, flags)))
return retval;
}
@@ -546,6 +600,17 @@ errout:
return retval;
}
+errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
+ blk64_t goal, int flags)
+{
+ struct ext2fs_journal_params jparams;
+
+ jparams.num_journal_blocks = num_blocks;
+ jparams.num_fc_blocks = 0;
+
+ return ext2fs_add_journal_inode3(fs, &jparams, goal, flags);
+}
+
errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t num_blocks, int flags)
{
return ext2fs_add_journal_inode2(fs, num_blocks, ~0ULL, flags);
@@ -572,7 +637,7 @@ main(int argc, char **argv)
exit(1);
}
- retval = ext2fs_add_journal_inode(fs, JFS_MIN_JOURNAL_BLOCKS, 0);
+ retval = ext2fs_add_journal_inode(fs, JBD2_MIN_JOURNAL_BLOCKS, 0);
if (retval) {
com_err(argv[0], retval, "while adding journal to %s",
device_name);
diff --git a/lib/ext2fs/mmp.c b/lib/ext2fs/mmp.c
index 2da935e0..9ef45809 100644
--- a/lib/ext2fs/mmp.c
+++ b/lib/ext2fs/mmp.c
@@ -57,7 +57,20 @@ errcode_t ext2fs_mmp_read(ext2_filsys fs, blk64_t mmp_blk, void *buf)
* regardless of how the io_manager is doing reads, to avoid caching of
* the MMP block by the io_manager or the VM. It needs to be fresh. */
if (fs->mmp_fd <= 0) {
- fs->mmp_fd = open(fs->device_name, O_RDWR | O_DIRECT);
+ struct stat st;
+ int flags = O_RDWR | O_DIRECT;
+
+ /*
+ * There is no reason for using O_DIRECT if we're working with
+ * regular file. Disabling it also avoids problems with
+ * alignment when the device of the host file system has sector
+ * size larger than blocksize of the fs we're working with.
+ */
+ if (stat(fs->device_name, &st) == 0 &&
+ S_ISREG(st.st_mode))
+ flags &= ~O_DIRECT;
+
+ fs->mmp_fd = open(fs->device_name, flags);
if (fs->mmp_fd < 0) {
retval = EXT2_ET_MMP_OPEN_DIRECT;
goto out;
@@ -159,9 +172,11 @@ unsigned ext2fs_mmp_new_seq(void)
#ifdef CONFIG_MMP
unsigned new_seq;
struct timeval tv;
+ unsigned long pid = getpid();
gettimeofday(&tv, 0);
- srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
+ pid = (pid >> 16) | ((pid & 0xFFFF) << 16);
+ srand(pid ^ getuid() ^ tv.tv_sec ^ tv.tv_usec);
gettimeofday(&tv, 0);
/* Crank the random number generator a few times */
@@ -197,11 +212,11 @@ static errcode_t ext2fs_mmp_reset(ext2_filsys fs)
mmp_s->mmp_seq = EXT4_MMP_SEQ_CLEAN;
mmp_s->mmp_time = 0;
#ifdef HAVE_GETHOSTNAME
- gethostname(mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
+ gethostname((char *) mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
#else
mmp_s->mmp_nodename[0] = '\0';
#endif
- strncpy(mmp_s->mmp_bdevname, fs->device_name,
+ strncpy((char *) mmp_s->mmp_bdevname, fs->device_name,
sizeof(mmp_s->mmp_bdevname));
mmp_s->mmp_check_interval = fs->super->s_mmp_update_interval;
@@ -339,11 +354,11 @@ clean_seq:
mmp_s->mmp_seq = seq = ext2fs_mmp_new_seq();
#ifdef HAVE_GETHOSTNAME
- gethostname(mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
+ gethostname((char *) mmp_s->mmp_nodename, sizeof(mmp_s->mmp_nodename));
#else
strcpy(mmp_s->mmp_nodename, "unknown host");
#endif
- strncpy(mmp_s->mmp_bdevname, fs->device_name,
+ strncpy((char *) mmp_s->mmp_bdevname, fs->device_name,
sizeof(mmp_s->mmp_bdevname));
retval = ext2fs_mmp_write(fs, fs->super->s_mmp_block, fs->mmp_buf);
@@ -388,7 +403,8 @@ errcode_t ext2fs_mmp_stop(ext2_filsys fs)
errcode_t retval = 0;
if (!ext2fs_has_feature_mmp(fs->super) ||
- !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP))
+ !(fs->flags & EXT2_FLAG_RW) || (fs->flags & EXT2_FLAG_SKIP_MMP) ||
+ (fs->mmp_buf == NULL) || (fs->mmp_cmp == NULL))
goto mmp_error;
retval = ext2fs_mmp_read(fs, fs->super->s_mmp_block, fs->mmp_buf);
diff --git a/lib/ext2fs/nls_utf8.c b/lib/ext2fs/nls_utf8.c
index e4c4e7a3..43bab9a3 100644
--- a/lib/ext2fs/nls_utf8.c
+++ b/lib/ext2fs/nls_utf8.c
@@ -920,8 +920,57 @@ invalid_seq:
return -EINVAL;
}
+static int utf8_validate(const struct ext2fs_nls_table *table,
+ char *s, size_t len, char **pos)
+{
+ const struct utf8data *data = utf8nfdicf(table->version);
+ utf8leaf_t *leaf;
+ unsigned char hangul[UTF8HANGULLEAF];
+
+ if (!data)
+ return -1;
+ while (len && *s) {
+ leaf = utf8nlookup(data, hangul, s, len);
+ if (!leaf) {
+ *pos = s;
+ return 1;
+ }
+ len -= utf8clen(s);
+ s += utf8clen(s);
+ }
+ return 0;
+}
+
+static int utf8_casefold_cmp(const struct ext2fs_nls_table *table,
+ const unsigned char *str1, size_t len1,
+ const unsigned char *str2, size_t len2)
+{
+ const struct utf8data *data = utf8nfdicf(table->version);
+ int c1, c2;
+ struct utf8cursor cur1, cur2;
+
+ if (utf8ncursor(&cur1, data, (const char *) str1, len1) < 0)
+ return -1;
+ if (utf8ncursor(&cur2, data, (const char *) str2, len2) < 0)
+ return -1;
+
+ do {
+ c1 = utf8byte(&cur1);
+ c2 = utf8byte(&cur2);
+
+ if (c1 < 0 || c2 < 0)
+ return -1;
+ if (c1 != c2)
+ return c1 - c2;
+ } while (c1);
+
+ return 0;
+}
+
static const struct ext2fs_nls_ops utf8_ops = {
.casefold = utf8_casefold,
+ .validate = utf8_validate,
+ .casefold_cmp = utf8_casefold_cmp,
};
static const struct ext2fs_nls_table nls_utf8 = {
@@ -936,3 +985,16 @@ const struct ext2fs_nls_table *ext2fs_load_nls_table(int encoding)
return NULL;
}
+
+int ext2fs_check_encoded_name(const struct ext2fs_nls_table *table,
+ char *name, size_t len, char **pos)
+{
+ return table->ops->validate(table, name, len, pos);
+}
+
+int ext2fs_casefold_cmp(const struct ext2fs_nls_table *table,
+ const unsigned char *str1, size_t len1,
+ const unsigned char *str2, size_t len2)
+{
+ return table->ops->casefold_cmp(table, str1, len1, str2, len2);
+}
diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
index 51b54a44..5ec8ed5c 100644
--- a/lib/ext2fs/openfs.c
+++ b/lib/ext2fs/openfs.c
@@ -134,6 +134,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
int j;
#endif
char *time_env;
+ int csum_retries = 0;
EXT2_CHECK_MAGIC(manager, EXT2_ET_MAGIC_IO_MANAGER);
@@ -169,6 +170,8 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
io_flags |= IO_FLAG_EXCLUSIVE;
if (flags & EXT2_FLAG_DIRECT_IO)
io_flags |= IO_FLAG_DIRECT_IO;
+ if (flags & EXT2_FLAG_THREADS)
+ io_flags |= IO_FLAG_THREADS;
retval = manager->open(fs->device_name, io_flags, &fs->io);
if (retval)
goto cleanup;
@@ -221,6 +224,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
if (retval)
goto cleanup;
}
+retry:
retval = io_channel_read_blk(fs->io, superblock, -SUPERBLOCK_SIZE,
fs->super);
if (retval)
@@ -232,8 +236,11 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
retval = 0;
if (!ext2fs_verify_csum_type(fs, fs->super))
retval = EXT2_ET_UNKNOWN_CSUM;
- if (!ext2fs_superblock_csum_verify(fs, fs->super))
+ if (!ext2fs_superblock_csum_verify(fs, fs->super)) {
+ if (csum_retries++ < 3)
+ goto retry;
retval = EXT2_ET_SB_CSUM_INVALID;
+ }
}
#ifdef WORDS_BIGENDIAN
@@ -393,6 +400,8 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
}
fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count,
EXT2_DESC_PER_BLOCK(fs->super));
+ if (flags & EXT2_FLAG_SUPER_ONLY)
+ goto skip_read_bg;
retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize,
&fs->group_desc);
if (retval)
@@ -433,7 +442,8 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
gdp = (struct ext2_group_desc *) dest;
for (j=0; j < groups_per_block*first_meta_bg; j++) {
gdp = ext2fs_group_desc(fs, fs->group_desc, j);
- ext2fs_swap_group_desc2(fs, gdp);
+ if (gdp)
+ ext2fs_swap_group_desc2(fs, gdp);
}
#endif
dest += fs->blocksize*first_meta_bg;
@@ -453,7 +463,8 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
for (j=0; j < groups_per_block; j++) {
gdp = ext2fs_group_desc(fs, fs->group_desc,
i * groups_per_block + j);
- ext2fs_swap_group_desc2(fs, gdp);
+ if (gdp)
+ ext2fs_swap_group_desc2(fs, gdp);
}
#endif
dest += fs->blocksize;
@@ -479,7 +490,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
if (fs->flags & EXT2_FLAG_RW)
ext2fs_mark_super_dirty(fs);
}
-
+skip_read_bg:
if (ext2fs_has_feature_mmp(fs->super) &&
!(flags & EXT2_FLAG_SKIP_MMP) &&
(flags & (EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE))) {
diff --git a/lib/ext2fs/progress.c b/lib/ext2fs/progress.c
index 83556b1a..fe4292fa 100644
--- a/lib/ext2fs/progress.c
+++ b/lib/ext2fs/progress.c
@@ -85,8 +85,8 @@ void ext2fs_numeric_progress_update(ext2_filsys fs,
return;
last_update = now;
- printf("%*llu/%*llu", progress->log_max, val,
- progress->log_max, progress->max);
+ printf("%*llu/%*llu", progress->log_max, (unsigned long long) val,
+ progress->log_max, (unsigned long long) progress->max);
fprintf(stdout, "%.*s", (2*progress->log_max)+1, backspaces);
}
diff --git a/lib/ext2fs/punch.c b/lib/ext2fs/punch.c
index c704bf32..effa1e2d 100644
--- a/lib/ext2fs/punch.c
+++ b/lib/ext2fs/punch.c
@@ -502,8 +502,8 @@ errcode_t ext2fs_punch(ext2_filsys fs, ext2_ino_t ino,
return retval;
#ifdef PUNCH_DEBUG
- printf("%u: write inode size now %u blocks %u\n",
- ino, inode->i_size, inode->i_blocks);
+ printf("%u: write inode size now %lu blocks %u\n",
+ ino, EXT2_I_SIZE(inode), inode->i_blocks);
#endif
return ext2fs_write_inode(fs, ino, inode);
}
diff --git a/lib/ext2fs/qcow2.c b/lib/ext2fs/qcow2.c
index 71a4792f..ee701f7a 100644
--- a/lib/ext2fs/qcow2.c
+++ b/lib/ext2fs/qcow2.c
@@ -114,7 +114,7 @@ static int qcow2_read_l1_table(struct ext2_qcow2_image *img)
}
static int qcow2_read_l2_table(struct ext2_qcow2_image *img,
- ext2_off64_t offset, blk64_t **l2_table)
+ __u64 offset, blk64_t **l2_table)
{
int fd = img->fd;
size_t size;
@@ -131,8 +131,8 @@ static int qcow2_read_l2_table(struct ext2_qcow2_image *img,
return 0;
}
-static int qcow2_copy_data(int fdin, int fdout, ext2_off64_t off_in,
- ext2_off64_t off_out, void *buf, size_t count)
+static int qcow2_copy_data(int fdin, int fdout, __u64 off_in,
+ __u64 off_out, void *buf, size_t count)
{
size_t size;
@@ -162,7 +162,7 @@ int qcow2_write_raw_image(int qcow2_fd, int raw_fd,
struct ext2_qcow2_image img;
errcode_t ret = 0;
unsigned int l1_index, l2_index;
- ext2_off64_t offset;
+ __u64 offset;
blk64_t *l1_table, *l2_table = NULL;
void *copy_buf = NULL;
size_t size;
@@ -212,7 +212,7 @@ int qcow2_write_raw_image(int qcow2_fd, int raw_fd,
l1_table = img.l1_table;
/* Walk through l1 table */
for (l1_index = 0; l1_index < img.l1_size; l1_index++) {
- ext2_off64_t off_out;
+ __u64 off_out;
offset = ext2fs_be64_to_cpu(l1_table[l1_index]) &
~QCOW_OFLAG_COPIED;
diff --git a/lib/ext2fs/qcow2.h b/lib/ext2fs/qcow2.h
index 5576348a..b649c9cf 100644
--- a/lib/ext2fs/qcow2.h
+++ b/lib/ext2fs/qcow2.h
@@ -30,8 +30,8 @@
#define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb)
#define QCOW_VERSION 2
-#define QCOW_OFLAG_COPIED (1LL << 63)
-#define QCOW_OFLAG_COMPRESSED (1LL << 62)
+#define QCOW_OFLAG_COPIED (1ULL << 63)
+#define QCOW_OFLAG_COMPRESSED (1ULL << 62)
#define QCOW_COMPRESSED 1
#define QCOW_ENCRYPTED 2
diff --git a/lib/ext2fs/rbtree.h b/lib/ext2fs/rbtree.h
index 9e806779..dfeeb234 100644
--- a/lib/ext2fs/rbtree.h
+++ b/lib/ext2fs/rbtree.h
@@ -96,17 +96,7 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
#include <stdlib.h>
#include <stdint.h>
-
-#undef offsetof
-#ifdef __compiler_offsetof
-#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
-#else
-#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-#endif
-
-#define container_of(ptr, type, member) ({ \
- const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
+#include "compiler.h"
struct rb_node
{
diff --git a/lib/ext2fs/read_bb_file.c b/lib/ext2fs/read_bb_file.c
index 8d1ad1a5..a6d3beba 100644
--- a/lib/ext2fs/read_bb_file.c
+++ b/lib/ext2fs/read_bb_file.c
@@ -39,7 +39,7 @@ errcode_t ext2fs_read_bb_FILE2(ext2_filsys fs, FILE *f,
void *priv_data))
{
errcode_t retval;
- blk64_t blockno;
+ unsigned long long blockno;
int count;
char buf[128];
@@ -65,10 +65,10 @@ errcode_t ext2fs_read_bb_FILE2(ext2_filsys fs, FILE *f,
((blockno < fs->super->s_first_data_block) ||
(blockno >= ext2fs_blocks_count(fs->super)))) {
if (invalid)
- (invalid)(fs, blockno, buf, priv_data);
+ (invalid)(fs, (blk64_t) blockno, buf, priv_data);
continue;
}
- retval = ext2fs_badblocks_list_add(*bb_list, blockno);
+ retval = ext2fs_badblocks_list_add(*bb_list, (blk64_t) blockno);
if (retval)
return retval;
}
diff --git a/lib/ext2fs/res_gdt.c b/lib/ext2fs/res_gdt.c
index 6bcf01e1..fa8d8d6b 100644
--- a/lib/ext2fs/res_gdt.c
+++ b/lib/ext2fs/res_gdt.c
@@ -223,8 +223,8 @@ out_dindir:
}
out_inode:
#ifdef RES_GDT_DEBUG
- printf("inode.i_blocks = %u, i_size = %u\n", inode.i_blocks,
- inode.i_size);
+ printf("inode.i_blocks = %u, i_size = %lu\n", inode.i_blocks,
+ EXT2_I_SIZE(&inode));
#endif
if (inode_dirty) {
inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(0);
diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c
index f1c4188b..d760064c 100644
--- a/lib/ext2fs/rw_bitmaps.c
+++ b/lib/ext2fs/rw_bitmaps.c
@@ -23,11 +23,33 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
#include "ext2_fs.h"
#include "ext2fs.h"
#include "e2image.h"
+#ifdef HAVE_PTHREAD
+typedef pthread_mutex_t mutex_t;
+
+static void unix_pthread_mutex_lock(mutex_t *mutex)
+{
+ if (mutex)
+ pthread_mutex_lock(mutex);
+}
+static void unix_pthread_mutex_unlock(mutex_t *mutex)
+{
+ if (mutex)
+ pthread_mutex_unlock(mutex);
+}
+#else
+typedef int mutex_t;
+#define unix_pthread_mutex_lock(mutex_t) do {} while (0)
+#define unix_pthread_mutex_unlock(mutex_t) do {} while (0)
+#endif
+
static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block)
{
dgrp_t i;
@@ -205,22 +227,12 @@ static int bitmap_tail_verify(unsigned char *bitmap, int first, int last)
return 1;
}
-static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
+static errcode_t read_bitmaps_range_prepare(ext2_filsys fs, int flags)
{
- dgrp_t i;
- char *block_bitmap = 0, *inode_bitmap = 0;
- char *buf;
errcode_t retval;
int block_nbytes = EXT2_CLUSTERS_PER_GROUP(fs->super) / 8;
int inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8;
- int tail_flags = 0;
- int csum_flag;
- unsigned int cnt;
- blk64_t blk;
- blk64_t blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
- blk64_t blk_cnt;
- ext2_ino_t ino_itr = 1;
- ext2_ino_t ino_cnt;
+ char *buf;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -230,12 +242,11 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
fs->write_bitmaps = ext2fs_write_bitmaps;
- csum_flag = ext2fs_has_group_desc_csum(fs);
-
retval = ext2fs_get_mem(strlen(fs->device_name) + 80, &buf);
if (retval)
return retval;
- if (do_block) {
+
+ if (flags & EXT2FS_BITMAPS_BLOCK) {
if (fs->block_map)
ext2fs_free_block_bitmap(fs->block_map);
strcpy(buf, "block bitmap for ");
@@ -243,12 +254,9 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
retval = ext2fs_allocate_block_bitmap(fs, buf, &fs->block_map);
if (retval)
goto cleanup;
- retval = io_channel_alloc_buf(fs->io, 0, &block_bitmap);
- if (retval)
- goto cleanup;
- } else
- block_nbytes = 0;
- if (do_inode) {
+ }
+
+ if (flags & EXT2FS_BITMAPS_INODE) {
if (fs->inode_map)
ext2fs_free_inode_bitmap(fs->inode_map);
strcpy(buf, "inode bitmap for ");
@@ -256,13 +264,60 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
retval = ext2fs_allocate_inode_bitmap(fs, buf, &fs->inode_map);
if (retval)
goto cleanup;
+ }
+ ext2fs_free_mem(&buf);
+ return retval;
+
+cleanup:
+ if (flags & EXT2FS_BITMAPS_BLOCK) {
+ ext2fs_free_block_bitmap(fs->block_map);
+ fs->block_map = 0;
+ }
+ if (flags & EXT2FS_BITMAPS_INODE) {
+ ext2fs_free_inode_bitmap(fs->inode_map);
+ fs->inode_map = 0;
+ }
+ ext2fs_free_mem(&buf);
+ return retval;
+}
+
+static errcode_t read_bitmaps_range_start(ext2_filsys fs, int flags,
+ dgrp_t start, dgrp_t end,
+ mutex_t *mutex,
+ int *tail_flags)
+{
+ dgrp_t i;
+ char *block_bitmap = 0, *inode_bitmap = 0;
+ errcode_t retval = 0;
+ int block_nbytes = EXT2_CLUSTERS_PER_GROUP(fs->super) / 8;
+ int inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8;
+ int csum_flag;
+ unsigned int cnt;
+ blk64_t blk;
+ blk64_t blk_itr = EXT2FS_B2C(fs, fs->super->s_first_data_block);
+ blk64_t blk_cnt;
+ ext2_ino_t ino_itr = 1;
+ ext2_ino_t ino_cnt;
+
+ csum_flag = ext2fs_has_group_desc_csum(fs);
+
+ if (flags & EXT2FS_BITMAPS_BLOCK) {
+ retval = io_channel_alloc_buf(fs->io, 0, &block_bitmap);
+ if (retval)
+ goto cleanup;
+ } else {
+ block_nbytes = 0;
+ }
+
+ if (flags & EXT2FS_BITMAPS_INODE) {
retval = io_channel_alloc_buf(fs->io, 0, &inode_bitmap);
if (retval)
goto cleanup;
- } else
+ } else {
inode_nbytes = 0;
- ext2fs_free_mem(&buf);
+ }
+ /* io should be null */
if (fs->flags & EXT2_FLAG_IMAGE_FILE) {
blk = (ext2fs_le32_to_cpu(fs->image_header->offset_inodemap) / fs->blocksize);
ino_cnt = fs->super->s_inodes_count;
@@ -300,15 +355,18 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
blk_itr += cnt;
blk_cnt -= cnt;
}
- goto success_cleanup;
+ goto cleanup;
}
- for (i = 0; i < fs->group_desc_count; i++) {
+ blk_itr += ((blk64_t)start * (block_nbytes << 3));
+ ino_itr += ((blk64_t)start * (inode_nbytes << 3));
+ for (i = start; i <= end; i++) {
if (block_bitmap) {
blk = ext2fs_block_bitmap_loc(fs, i);
- if (csum_flag &&
- ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) &&
- ext2fs_group_desc_csum_verify(fs, i))
+ if ((csum_flag &&
+ ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) &&
+ ext2fs_group_desc_csum_verify(fs, i)) ||
+ (blk >= ext2fs_blocks_count(fs->super)))
blk = 0;
if (blk) {
retval = io_channel_read_blk64(fs->io, blk,
@@ -328,21 +386,24 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
}
if (!bitmap_tail_verify((unsigned char *) block_bitmap,
block_nbytes, fs->blocksize - 1))
- tail_flags |= EXT2_FLAG_BBITMAP_TAIL_PROBLEM;
+ *tail_flags |= EXT2_FLAG_BBITMAP_TAIL_PROBLEM;
} else
memset(block_bitmap, 0, block_nbytes);
cnt = block_nbytes << 3;
+ unix_pthread_mutex_lock(mutex);
retval = ext2fs_set_block_bitmap_range2(fs->block_map,
blk_itr, cnt, block_bitmap);
+ unix_pthread_mutex_unlock(mutex);
if (retval)
goto cleanup;
blk_itr += block_nbytes << 3;
}
if (inode_bitmap) {
blk = ext2fs_inode_bitmap_loc(fs, i);
- if (csum_flag &&
- ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) &&
- ext2fs_group_desc_csum_verify(fs, i))
+ if ((csum_flag &&
+ ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT) &&
+ ext2fs_group_desc_csum_verify(fs, i)) ||
+ (blk >= ext2fs_blocks_count(fs->super)))
blk = 0;
if (blk) {
retval = io_channel_read_blk64(fs->io, blk,
@@ -363,63 +424,224 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block)
}
if (!bitmap_tail_verify((unsigned char *) inode_bitmap,
inode_nbytes, fs->blocksize - 1))
- tail_flags |= EXT2_FLAG_IBITMAP_TAIL_PROBLEM;
+ *tail_flags |= EXT2_FLAG_IBITMAP_TAIL_PROBLEM;
} else
memset(inode_bitmap, 0, inode_nbytes);
cnt = inode_nbytes << 3;
+ unix_pthread_mutex_lock(mutex);
retval = ext2fs_set_inode_bitmap_range2(fs->inode_map,
ino_itr, cnt, inode_bitmap);
+ unix_pthread_mutex_unlock(mutex);
if (retval)
goto cleanup;
ino_itr += inode_nbytes << 3;
}
}
+cleanup:
+ if (inode_bitmap)
+ ext2fs_free_mem(&inode_bitmap);
+ if (block_bitmap)
+ ext2fs_free_mem(&block_bitmap);
+ return retval;
+}
+
+static errcode_t read_bitmaps_range_end(ext2_filsys fs, int flags,
+ int tail_flags)
+{
+ errcode_t retval;
+
/* Mark group blocks for any BLOCK_UNINIT groups */
- if (do_block) {
+ if (flags & EXT2FS_BITMAPS_BLOCK) {
retval = mark_uninit_bg_group_blocks(fs);
if (retval)
- goto cleanup;
- }
-
-success_cleanup:
- if (inode_bitmap) {
- ext2fs_free_mem(&inode_bitmap);
- fs->flags &= ~EXT2_FLAG_IBITMAP_TAIL_PROBLEM;
- }
- if (block_bitmap) {
- ext2fs_free_mem(&block_bitmap);
+ return retval;
fs->flags &= ~EXT2_FLAG_BBITMAP_TAIL_PROBLEM;
}
+ if (flags & EXT2FS_BITMAPS_INODE)
+ fs->flags &= ~EXT2_FLAG_IBITMAP_TAIL_PROBLEM;
fs->flags |= tail_flags;
+
return 0;
+}
-cleanup:
- if (do_block) {
- ext2fs_free_mem(&fs->block_map);
+static void read_bitmaps_cleanup_on_error(ext2_filsys fs, int flags)
+{
+ if (flags & EXT2FS_BITMAPS_BLOCK) {
+ ext2fs_free_block_bitmap(fs->block_map);
fs->block_map = 0;
}
- if (do_inode) {
- ext2fs_free_mem(&fs->inode_map);
+ if (flags & EXT2FS_BITMAPS_INODE) {
+ ext2fs_free_inode_bitmap(fs->inode_map);
fs->inode_map = 0;
}
- if (inode_bitmap)
- ext2fs_free_mem(&inode_bitmap);
- if (block_bitmap)
- ext2fs_free_mem(&block_bitmap);
- if (buf)
- ext2fs_free_mem(&buf);
+}
+
+static errcode_t read_bitmaps_range(ext2_filsys fs, int flags,
+ dgrp_t start, dgrp_t end)
+{
+ errcode_t retval;
+ int tail_flags = 0;
+
+ retval = read_bitmaps_range_prepare(fs, flags);
+ if (retval)
+ return retval;
+
+ retval = read_bitmaps_range_start(fs, flags, start, end,
+ NULL, &tail_flags);
+ if (retval == 0)
+ retval = read_bitmaps_range_end(fs, flags, tail_flags);
+ if (retval)
+ read_bitmaps_cleanup_on_error(fs, flags);
+ return retval;
+}
+
+#ifdef HAVE_PTHREAD
+struct read_bitmaps_thread_info {
+ ext2_filsys rbt_fs;
+ int rbt_flags;
+ dgrp_t rbt_grp_start;
+ dgrp_t rbt_grp_end;
+ errcode_t rbt_retval;
+ pthread_mutex_t *rbt_mutex;
+ int rbt_tail_flags;
+};
+
+static void *read_bitmaps_thread(void *data)
+{
+ struct read_bitmaps_thread_info *rbt = data;
+
+ rbt->rbt_retval = read_bitmaps_range_start(rbt->rbt_fs, rbt->rbt_flags,
+ rbt->rbt_grp_start, rbt->rbt_grp_end,
+ rbt->rbt_mutex, &rbt->rbt_tail_flags);
+ return NULL;
+}
+#endif
+
+errcode_t ext2fs_rw_bitmaps(ext2_filsys fs, int flags, int num_threads)
+{
+#ifdef HAVE_PTHREAD
+ pthread_attr_t attr;
+ pthread_t *thread_ids = NULL;
+ struct read_bitmaps_thread_info *thread_infos = NULL;
+ pthread_mutex_t rbt_mutex = PTHREAD_MUTEX_INITIALIZER;
+ errcode_t retval;
+ errcode_t rc;
+ unsigned flexbg_size = 1 << fs->super->s_log_groups_per_flex;
+ dgrp_t average_group;
+ int i, tail_flags = 0;
+#endif
+
+ if (flags & ~EXT2FS_BITMAPS_VALID_FLAGS)
+ return EXT2_ET_INVALID_ARGUMENT;
+
+ if (flags & EXT2FS_BITMAPS_WRITE)
+ return write_bitmaps(fs, flags & EXT2FS_BITMAPS_INODE,
+ flags & EXT2FS_BITMAPS_BLOCK);
+
+#ifdef HAVE_PTHREAD
+ if (((fs->io->flags & CHANNEL_FLAGS_THREADS) == 0) ||
+ (num_threads == 1) || (fs->flags & EXT2_FLAG_IMAGE_FILE))
+ goto fallback;
+
+#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_CONF)
+ if (num_threads < 0)
+ num_threads = sysconf(_SC_NPROCESSORS_CONF);
+#endif
+ /*
+ * Guess for now; eventually we should probably define
+ * ext2fs_get_num_cpus() and teach it how to get this info on
+ * MacOS, FreeBSD, etc.
+ * ref: https://stackoverflow.com/questions/150355
+ */
+ if (num_threads < 0)
+ num_threads = 4;
+
+ if (num_threads > fs->group_desc_count)
+ num_threads = fs->group_desc_count;
+ average_group = fs->group_desc_count / num_threads;
+ if (ext2fs_has_feature_flex_bg(fs->super)) {
+ average_group = (average_group / flexbg_size) * flexbg_size;
+ }
+ if (average_group == 0)
+ goto fallback;
+
+ io_channel_set_options(fs->io, "cache=off");
+ retval = pthread_attr_init(&attr);
+ if (retval)
+ return retval;
+
+ thread_ids = calloc(sizeof(pthread_t), num_threads);
+ if (!thread_ids)
+ return ENOMEM;
+
+ thread_infos = calloc(sizeof(struct read_bitmaps_thread_info),
+ num_threads);
+ if (!thread_infos)
+ goto out;
+
+ retval = read_bitmaps_range_prepare(fs, flags);
+ if (retval)
+ goto out;
+
+// fprintf(stdout, "Multiple threads triggered to read bitmaps\n");
+ for (i = 0; i < num_threads; i++) {
+ thread_infos[i].rbt_fs = fs;
+ thread_infos[i].rbt_flags = flags;
+ thread_infos[i].rbt_mutex = &rbt_mutex;
+ thread_infos[i].rbt_tail_flags = 0;
+ if (i == 0)
+ thread_infos[i].rbt_grp_start = 0;
+ else
+ thread_infos[i].rbt_grp_start = average_group * i + 1;
+
+ if (i == num_threads - 1)
+ thread_infos[i].rbt_grp_end = fs->group_desc_count - 1;
+ else
+ thread_infos[i].rbt_grp_end = average_group * (i + 1);
+ retval = pthread_create(&thread_ids[i], &attr,
+ &read_bitmaps_thread, &thread_infos[i]);
+ if (retval)
+ break;
+ }
+ for (i = 0; i < num_threads; i++) {
+ if (!thread_ids[i])
+ break;
+ rc = pthread_join(thread_ids[i], NULL);
+ if (rc && !retval)
+ retval = rc;
+ rc = thread_infos[i].rbt_retval;
+ if (rc && !retval)
+ retval = rc;
+ tail_flags |= thread_infos[i].rbt_tail_flags;
+ }
+out:
+ rc = pthread_attr_destroy(&attr);
+ if (rc && !retval)
+ retval = rc;
+ free(thread_infos);
+ free(thread_ids);
+
+ if (retval == 0)
+ retval = read_bitmaps_range_end(fs, flags, tail_flags);
+ if (retval)
+ read_bitmaps_cleanup_on_error(fs, flags);
+ /* XXX should save and restore cache setting */
+ io_channel_set_options(fs->io, "cache=on");
return retval;
+fallback:
+#endif /* HAVE_PTHREAD */
+ return read_bitmaps_range(fs, flags, 0, fs->group_desc_count - 1);
}
errcode_t ext2fs_read_inode_bitmap(ext2_filsys fs)
{
- return read_bitmaps(fs, 1, 0);
+ return ext2fs_rw_bitmaps(fs, EXT2FS_BITMAPS_INODE, -1);
}
errcode_t ext2fs_read_block_bitmap(ext2_filsys fs)
{
- return read_bitmaps(fs, 0, 1);
+ return ext2fs_rw_bitmaps(fs, EXT2FS_BITMAPS_BLOCK, -1);
}
errcode_t ext2fs_write_inode_bitmap(ext2_filsys fs)
@@ -434,10 +656,15 @@ errcode_t ext2fs_write_block_bitmap (ext2_filsys fs)
errcode_t ext2fs_read_bitmaps(ext2_filsys fs)
{
- if (fs->inode_map && fs->block_map)
- return 0;
+ int flags = 0;
- return read_bitmaps(fs, !fs->inode_map, !fs->block_map);
+ if (!fs->inode_map)
+ flags |= EXT2FS_BITMAPS_INODE;
+ if (!fs->block_map)
+ flags |= EXT2FS_BITMAPS_BLOCK;
+ if (flags == 0)
+ return 0;
+ return ext2fs_rw_bitmaps(fs, flags, -1);
}
errcode_t ext2fs_write_bitmaps(ext2_filsys fs)
diff --git a/lib/ext2fs/sparse_io.c b/lib/ext2fs/sparse_io.c
index 5e0e2cd9..f287e76d 100644
--- a/lib/ext2fs/sparse_io.c
+++ b/lib/ext2fs/sparse_io.c
@@ -138,7 +138,7 @@ static errcode_t io_manager_configure(struct sparse_io_params *params,
retval = io_manager_import_sparse(params, sm, io);
if (retval) {
if (!params->block_size || !params->blocks_count) {
- retval = -EINVAL;
+ retval = EINVAL;
goto err_params;
}
sm->block_size = params->block_size;
@@ -229,7 +229,7 @@ static errcode_t read_sparse_argv(const char *name, bool is_fd,
if (ret < 1) {
free(sparse_params->file);
- return -EINVAL;
+ return EINVAL;
}
return 0;
}
diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
index a1560045..1006b2d2 100644
--- a/lib/ext2fs/swapfs.c
+++ b/lib/ext2fs/swapfs.c
@@ -22,7 +22,6 @@
#include "ext2fsP.h"
#include <ext2fs/ext2_ext_attr.h>
-#ifdef WORDS_BIGENDIAN
void ext2fs_swap_super(struct ext2_super_block * sb)
{
int i;
@@ -121,7 +120,7 @@ void ext2fs_swap_super(struct ext2_super_block * sb)
/* sb->s_mount_opts is __u8 and does not need swabbing */
sb->s_usr_quota_inum = ext2fs_swab32(sb->s_usr_quota_inum);
sb->s_grp_quota_inum = ext2fs_swab32(sb->s_grp_quota_inum);
- sb->s_overhead_blocks = ext2fs_swab32(sb->s_overhead_blocks);
+ sb->s_overhead_clusters = ext2fs_swab32(sb->s_overhead_clusters);
sb->s_backup_bgs[0] = ext2fs_swab32(sb->s_backup_bgs[0]);
sb->s_backup_bgs[1] = ext2fs_swab32(sb->s_backup_bgs[1]);
/* sb->s_encrypt_algos is __u8 and does not need swabbing */
@@ -246,7 +245,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
{
unsigned i, extra_isize, attr_magic;
int has_extents, has_inline_data, islnk, fast_symlink;
- int inode_size;
+ unsigned int inode_size;
__u32 *eaf, *eat;
/*
@@ -417,10 +416,11 @@ errcode_t ext2fs_dirent_swab_in2(ext2_filsys fs, char *buf,
errcode_t retval;
char *p, *end;
struct ext2_dir_entry *dirent;
- unsigned int name_len, rec_len;
+ unsigned int name_len, rec_len, left;
p = (char *) buf;
end = (char *) buf + size;
+ left = size;
while (p < end-8) {
dirent = (struct ext2_dir_entry *) p;
dirent->inode = ext2fs_swab32(dirent->inode);
@@ -437,6 +437,9 @@ errcode_t ext2fs_dirent_swab_in2(ext2_filsys fs, char *buf,
retval = EXT2_ET_DIR_CORRUPTED;
} else if (((name_len & 0xFF) + 8) > rec_len)
retval = EXT2_ET_DIR_CORRUPTED;
+ if (rec_len > left)
+ return EXT2_ET_DIR_CORRUPTED;
+ left -= rec_len;
p += rec_len;
}
@@ -472,6 +475,9 @@ errcode_t ext2fs_dirent_swab_out2(ext2_filsys fs, char *buf,
dirent->inode = ext2fs_swab32(dirent->inode);
dirent->rec_len = ext2fs_swab16(dirent->rec_len);
dirent->name_len = ext2fs_swab16(dirent->name_len);
+ if (rec_len > size)
+ return EXT2_ET_DIR_CORRUPTED;
+ size -= rec_len;
if (flags & EXT2_DIRBLOCK_V2_STRUCT)
dirent->name_len = ext2fs_swab16(dirent->name_len);
@@ -479,5 +485,3 @@ errcode_t ext2fs_dirent_swab_out2(ext2_filsys fs, char *buf,
return 0;
}
-
-#endif
diff --git a/lib/ext2fs/symlink.c b/lib/ext2fs/symlink.c
index 7f78c5f7..a66fb7ec 100644
--- a/lib/ext2fs/symlink.c
+++ b/lib/ext2fs/symlink.c
@@ -54,6 +54,7 @@ errcode_t ext2fs_symlink(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t ino,
int fastlink, inlinelink;
unsigned int target_len;
char *block_buf = 0;
+ int drop_refcount = 0;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -163,6 +164,14 @@ need_block:
}
/*
+ * Update accounting....
+ */
+ if (!fastlink && !inlinelink)
+ ext2fs_block_alloc_stats2(fs, blk, +1);
+ ext2fs_inode_alloc_stats2(fs, ino, +1, 0);
+ drop_refcount = 1;
+
+ /*
* Link the symlink into the filesystem hierarchy
*/
if (name) {
@@ -178,17 +187,16 @@ need_block:
if (retval)
goto cleanup;
}
-
- /*
- * Update accounting....
- */
- if (!fastlink && !inlinelink)
- ext2fs_block_alloc_stats2(fs, blk, +1);
- ext2fs_inode_alloc_stats2(fs, ino, +1, 0);
+ drop_refcount = 0;
cleanup:
if (block_buf)
ext2fs_free_mem(&block_buf);
+ if (drop_refcount) {
+ if (!fastlink && !inlinelink)
+ ext2fs_block_alloc_stats2(fs, blk, -1);
+ ext2fs_inode_alloc_stats2(fs, ino, -1, 0);
+ }
return retval;
}
diff --git a/lib/ext2fs/test_io.c b/lib/ext2fs/test_io.c
index ee828be7..480e68fc 100644
--- a/lib/ext2fs/test_io.c
+++ b/lib/ext2fs/test_io.c
@@ -197,6 +197,7 @@ static errcode_t test_open(const char *name, int flags, io_channel *channel)
io->read_error = 0;
io->write_error = 0;
io->refcount = 1;
+ io->flags = 0;
memset(data, 0, sizeof(struct test_private_data));
data->magic = EXT2_ET_MAGIC_TEST_IO_CHANNEL;
@@ -237,8 +238,11 @@ static errcode_t test_open(const char *name, int flags, io_channel *channel)
if ((value = safe_getenv("TEST_IO_WRITE_ABORT")) != NULL)
data->write_abort_count = strtoul(value, NULL, 0);
- if (data->real)
+ if (data->real) {
io->align = data->real->align;
+ if (data->real->flags & CHANNEL_FLAGS_THREADS)
+ io->flags |= CHANNEL_FLAGS_THREADS;
+ }
*channel = io;
return 0;
diff --git a/lib/ext2fs/tst_bitmaps.c b/lib/ext2fs/tst_bitmaps.c
index f6196b31..cb3c70dc 100644
--- a/lib/ext2fs/tst_bitmaps.c
+++ b/lib/ext2fs/tst_bitmaps.c
@@ -439,7 +439,7 @@ void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
error_message(retval));
return;
}
- printf("First unmarked block is %llu\n", out);
+ printf("First unmarked block is %llu\n", (unsigned long long) out);
}
void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
@@ -473,7 +473,7 @@ void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
error_message(retval));
return;
}
- printf("First marked block is %llu\n", out);
+ printf("First marked block is %llu\n", (unsigned long long) out);
}
diff --git a/lib/ext2fs/tst_iscan.c b/lib/ext2fs/tst_iscan.c
index 70bfbecc..76aaa9a6 100644
--- a/lib/ext2fs/tst_iscan.c
+++ b/lib/ext2fs/tst_iscan.c
@@ -182,7 +182,8 @@ static void check_map(void)
for (i=0; test_vec[i]; i++) {
if (ext2fs_test_block_bitmap2(touched_map, test_vec[i])) {
- printf("Bad block was touched --- %llu\n", test_vec[i]);
+ printf("Bad block was touched --- %llu\n",
+ (unsigned long long) test_vec[i]);
failed++;
first_no_comma = 1;
}
@@ -194,7 +195,8 @@ static void check_map(void)
j++, blk++) {
if (!ext2fs_test_block_bitmap2(touched_map, blk) &&
!ext2fs_test_block_bitmap2(bad_block_map, blk)) {
- printf("Missing block --- %llu\n", blk);
+ printf("Missing block --- %llu\n",
+ (unsigned long long) blk);
failed++;
}
}
diff --git a/lib/ext2fs/tst_libext2fs.c b/lib/ext2fs/tst_libext2fs.c
index 3e7497cd..4c86464c 100644
--- a/lib/ext2fs/tst_libext2fs.c
+++ b/lib/ext2fs/tst_libext2fs.c
@@ -38,7 +38,8 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
void *private EXT2FS_ATTR((unused)))
{
printf("%6lld %8llu (%d %llu)\n", (long long) blockcnt,
- (unsigned long long)*blocknr, ref_offset, ref_block);
+ (unsigned long long) *blocknr, ref_offset,
+ (unsigned long long) ref_block);
return 0;
}
diff --git a/lib/ext2fs/tst_super_size.c b/lib/ext2fs/tst_super_size.c
index a932685d..80a5269b 100644
--- a/lib/ext2fs/tst_super_size.c
+++ b/lib/ext2fs/tst_super_size.c
@@ -135,7 +135,7 @@ int main(int argc, char **argv)
check_field(s_mount_opts, 64);
check_field(s_usr_quota_inum, 4);
check_field(s_grp_quota_inum, 4);
- check_field(s_overhead_blocks, 4);
+ check_field(s_overhead_clusters, 4);
check_field(s_backup_bgs, 8);
check_field(s_encrypt_algos, 4);
check_field(s_encrypt_pw_salt, 16);
@@ -148,7 +148,8 @@ int main(int argc, char **argv)
check_field(s_lastcheck_hi, 1);
check_field(s_first_error_time_hi, 1);
check_field(s_last_error_time_hi, 1);
- check_field(s_pad, 2);
+ check_field(s_first_error_errcode, 1);
+ check_field(s_last_error_errcode, 1);
check_field(s_encoding, 2);
check_field(s_encoding_flags, 2);
check_field(s_reserved, 95 * 4);
diff --git a/lib/ext2fs/undo_io.c b/lib/ext2fs/undo_io.c
index 19862414..eb56f53d 100644
--- a/lib/ext2fs/undo_io.c
+++ b/lib/ext2fs/undo_io.c
@@ -698,6 +698,8 @@ static errcode_t undo_open(const char *name, int flags, io_channel *channel)
int undo_fd = -1;
errcode_t retval;
+ /* We don't support multi-threading, at least for now */
+ flags &= ~IO_FLAG_THREADS;
if (name == 0)
return EXT2_ET_BAD_DEVICE_NAME;
retval = ext2fs_get_mem(sizeof(struct struct_io_channel), &io);
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 74fc8a75..3bb8d238 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -67,6 +67,9 @@
#if HAVE_LINUX_FALLOC_H
#include <linux/falloc.h>
#endif
+#ifdef HAVE_PTHREAD
+#include <pthread.h>
+#endif
#if defined(__linux__) && defined(_IO) && !defined(BLKROGET)
#define BLKROGET _IO(0x12, 94) /* Get read-only status (0 = read_write). */
@@ -107,11 +110,58 @@ struct unix_private_data {
struct unix_cache cache[CACHE_SIZE];
void *bounce;
struct struct_io_stats io_stats;
+#ifdef HAVE_PTHREAD
+ pthread_mutex_t cache_mutex;
+ pthread_mutex_t bounce_mutex;
+ pthread_mutex_t stats_mutex;
+#endif
};
#define IS_ALIGNED(n, align) ((((uintptr_t) n) & \
((uintptr_t) ((align)-1))) == 0)
+typedef enum lock_kind {
+ CACHE_MTX, BOUNCE_MTX, STATS_MTX
+} kind_t;
+
+#ifdef HAVE_PTHREAD
+static inline pthread_mutex_t *get_mutex(struct unix_private_data *data,
+ kind_t kind)
+{
+ if (data->flags & IO_FLAG_THREADS) {
+ switch (kind) {
+ case CACHE_MTX:
+ return &data->cache_mutex;
+ case BOUNCE_MTX:
+ return &data->bounce_mutex;
+ case STATS_MTX:
+ return &data->stats_mutex;
+ }
+ }
+ return NULL;
+}
+#endif
+
+static inline void mutex_lock(struct unix_private_data *data, kind_t kind)
+{
+#ifdef HAVE_PTHREAD
+ pthread_mutex_t *mtx = get_mutex(data,kind);
+
+ if (mtx)
+ pthread_mutex_lock(mtx);
+#endif
+}
+
+static inline void mutex_unlock(struct unix_private_data *data, kind_t kind)
+{
+#ifdef HAVE_PTHREAD
+ pthread_mutex_t *mtx = get_mutex(data,kind);
+
+ if (mtx)
+ pthread_mutex_unlock(mtx);
+#endif
+}
+
static errcode_t unix_get_stats(io_channel channel, io_stats *stats)
{
errcode_t retval = 0;
@@ -122,8 +172,11 @@ static errcode_t unix_get_stats(io_channel channel, io_stats *stats)
data = (struct unix_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
- if (stats)
+ if (stats) {
+ mutex_lock(data, STATS_MTX);
*stats = &data->io_stats;
+ mutex_unlock(data, STATS_MTX);
+ }
return retval;
}
@@ -165,23 +218,23 @@ static errcode_t raw_read_blk(io_channel channel,
int actual = 0;
unsigned char *buf = bufv;
ssize_t really_read = 0;
+ unsigned long long aligned_blk;
+ int align_size, offset;
- size = (count < 0) ? -count : count * channel->block_size;
+ size = (count < 0) ? -count : (ext2_loff_t) count * channel->block_size;
+ mutex_lock(data, STATS_MTX);
data->io_stats.bytes_read += size;
+ mutex_unlock(data, STATS_MTX);
location = ((ext2_loff_t) block * channel->block_size) + data->offset;
- if (data->flags & IO_FLAG_FORCE_BOUNCE) {
- if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
- goto error_out;
- }
+ if (data->flags & IO_FLAG_FORCE_BOUNCE)
goto bounce_read;
- }
#ifdef HAVE_PREAD64
/* Try an aligned pread */
if ((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align))) {
actual = pread64(data->dev, buf, size, location);
if (actual == size)
@@ -193,6 +246,7 @@ static errcode_t raw_read_blk(io_channel channel,
if ((sizeof(off_t) >= sizeof(ext2_loff_t)) &&
((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align)))) {
actual = pread(data->dev, buf, size, location);
if (actual == size)
@@ -201,13 +255,15 @@ static errcode_t raw_read_blk(io_channel channel,
}
#endif /* HAVE_PREAD */
- if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
- goto error_out;
- }
if ((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align))) {
+ mutex_lock(data, BOUNCE_MTX);
+ if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) {
+ retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+ goto error_unlock;
+ }
actual = read(data->dev, buf, size);
if (actual != size) {
short_read:
@@ -216,9 +272,9 @@ static errcode_t raw_read_blk(io_channel channel,
actual = 0;
} else
retval = EXT2_ET_SHORT_READ;
- goto error_out;
+ goto error_unlock;
}
- return 0;
+ goto success_unlock;
}
#ifdef ALIGN_DEBUG
@@ -231,25 +287,48 @@ static errcode_t raw_read_blk(io_channel channel,
* to the O_DIRECT rules, so we need to do this the hard way...
*/
bounce_read:
+ if (channel->align == 0)
+ channel->align = 1;
+ if ((channel->block_size > channel->align) &&
+ (channel->block_size % channel->align) == 0)
+ align_size = channel->block_size;
+ else
+ align_size = channel->align;
+ aligned_blk = location / align_size;
+ offset = location % align_size;
+
+ mutex_lock(data, BOUNCE_MTX);
+ if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) {
+ retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+ goto error_unlock;
+ }
while (size > 0) {
- actual = read(data->dev, data->bounce, channel->block_size);
- if (actual != channel->block_size) {
+ actual = read(data->dev, data->bounce, align_size);
+ if (actual != align_size) {
+ mutex_unlock(data, BOUNCE_MTX);
actual = really_read;
buf -= really_read;
size += really_read;
goto short_read;
}
actual = size;
- if (size > channel->block_size)
- actual = channel->block_size;
- memcpy(buf, data->bounce, actual);
+ if (actual > align_size)
+ actual = align_size;
+ actual -= offset;
+ memcpy(buf, data->bounce + offset, actual);
+
really_read += actual;
size -= actual;
buf += actual;
+ offset = 0;
+ aligned_blk++;
}
+success_unlock:
+ mutex_unlock(data, BOUNCE_MTX);
return 0;
-error_out:
+error_unlock:
+ mutex_unlock(data, BOUNCE_MTX);
if (actual >= 0 && actual < size)
memset((char *) buf+actual, 0, size-actual);
if (channel->read_error)
@@ -268,6 +347,8 @@ static errcode_t raw_write_blk(io_channel channel,
int actual = 0;
errcode_t retval;
const unsigned char *buf = bufv;
+ unsigned long long aligned_blk;
+ int align_size, offset;
if (count == 1)
size = channel->block_size;
@@ -275,24 +356,22 @@ static errcode_t raw_write_blk(io_channel channel,
if (count < 0)
size = -count;
else
- size = count * channel->block_size;
+ size = (ext2_loff_t) count * channel->block_size;
}
+ mutex_lock(data, STATS_MTX);
data->io_stats.bytes_written += size;
+ mutex_unlock(data, STATS_MTX);
location = ((ext2_loff_t) block * channel->block_size) + data->offset;
- if (data->flags & IO_FLAG_FORCE_BOUNCE) {
- if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
- goto error_out;
- }
+ if (data->flags & IO_FLAG_FORCE_BOUNCE)
goto bounce_write;
- }
#ifdef HAVE_PWRITE64
/* Try an aligned pwrite */
if ((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align))) {
actual = pwrite64(data->dev, buf, size, location);
if (actual == size)
@@ -303,6 +382,7 @@ static errcode_t raw_write_blk(io_channel channel,
if ((sizeof(off_t) >= sizeof(ext2_loff_t)) &&
((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align)))) {
actual = pwrite(data->dev, buf, size, location);
if (actual == size)
@@ -310,15 +390,17 @@ static errcode_t raw_write_blk(io_channel channel,
}
#endif /* HAVE_PWRITE */
- if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
- retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
- goto error_out;
- }
-
if ((channel->align == 0) ||
(IS_ALIGNED(buf, channel->align) &&
+ IS_ALIGNED(location, channel->align) &&
IS_ALIGNED(size, channel->align))) {
+ mutex_lock(data, BOUNCE_MTX);
+ if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) {
+ retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+ goto error_out;
+ }
actual = write(data->dev, buf, size);
+ mutex_unlock(data, BOUNCE_MTX);
if (actual < 0) {
retval = errno;
goto error_out;
@@ -340,40 +422,64 @@ static errcode_t raw_write_blk(io_channel channel,
* to the O_DIRECT rules, so we need to do this the hard way...
*/
bounce_write:
+ if (channel->align == 0)
+ channel->align = 1;
+ if ((channel->block_size > channel->align) &&
+ (channel->block_size % channel->align) == 0)
+ align_size = channel->block_size;
+ else
+ align_size = channel->align;
+ aligned_blk = location / align_size;
+ offset = location % align_size;
+
while (size > 0) {
- if (size < channel->block_size) {
+ int actual_w;
+
+ mutex_lock(data, BOUNCE_MTX);
+ if (size < align_size || offset) {
+ if (ext2fs_llseek(data->dev, aligned_blk * align_size,
+ SEEK_SET) < 0) {
+ retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
+ goto error_unlock;
+ }
actual = read(data->dev, data->bounce,
- channel->block_size);
- if (actual != channel->block_size) {
+ align_size);
+ if (actual != align_size) {
if (actual < 0) {
retval = errno;
- goto error_out;
+ goto error_unlock;
}
memset((char *) data->bounce + actual, 0,
- channel->block_size - actual);
+ align_size - actual);
}
}
actual = size;
- if (size > channel->block_size)
- actual = channel->block_size;
- memcpy(data->bounce, buf, actual);
- if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) {
+ if (actual > align_size)
+ actual = align_size;
+ actual -= offset;
+ memcpy(((char *)data->bounce) + offset, buf, actual);
+ if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) {
retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
- goto error_out;
+ goto error_unlock;
}
- actual = write(data->dev, data->bounce, channel->block_size);
- if (actual < 0) {
+ actual_w = write(data->dev, data->bounce, align_size);
+ mutex_unlock(data, BOUNCE_MTX);
+ if (actual_w < 0) {
retval = errno;
goto error_out;
}
- if (actual != channel->block_size)
+ if (actual_w != align_size)
goto short_write;
size -= actual;
buf += actual;
location += actual;
+ aligned_blk++;
+ offset = 0;
}
return 0;
+error_unlock:
+ mutex_unlock(data, BOUNCE_MTX);
error_out:
if (channel->write_error)
retval = (channel->write_error)(channel, block, count, buf,
@@ -481,24 +587,28 @@ static void reuse_cache(io_channel channel, struct unix_private_data *data,
cache->access_time = ++data->access_time;
}
+#define FLUSH_INVALIDATE 0x01
+#define FLUSH_NOLOCK 0x02
+
/*
* Flush all of the blocks in the cache
*/
static errcode_t flush_cached_blocks(io_channel channel,
struct unix_private_data *data,
- int invalidate)
-
+ int flags)
{
struct unix_cache *cache;
errcode_t retval, retval2;
int i;
retval2 = 0;
+ if ((flags & FLUSH_NOLOCK) == 0)
+ mutex_lock(data, CACHE_MTX);
for (i=0, cache = data->cache; i < CACHE_SIZE; i++, cache++) {
if (!cache->in_use)
continue;
- if (invalidate)
+ if (flags & FLUSH_INVALIDATE)
cache->in_use = 0;
if (!cache->dirty)
@@ -511,6 +621,8 @@ static errcode_t flush_cached_blocks(io_channel channel,
else
cache->dirty = 0;
}
+ if ((flags & FLUSH_NOLOCK) == 0)
+ mutex_unlock(data, CACHE_MTX);
return retval2;
}
#endif /* NO_IO_CACHE */
@@ -597,6 +709,7 @@ static errcode_t unix_open_channel(const char *name, int fd,
io->read_error = 0;
io->write_error = 0;
io->refcount = 1;
+ io->flags = 0;
memset(data, 0, sizeof(struct unix_private_data));
data->magic = EXT2_ET_MAGIC_UNIX_IO_CHANNEL;
@@ -704,6 +817,25 @@ static errcode_t unix_open_channel(const char *name, int fd,
}
}
#endif
+#ifdef HAVE_PTHREAD
+ if (flags & IO_FLAG_THREADS) {
+ io->flags |= CHANNEL_FLAGS_THREADS;
+ retval = pthread_mutex_init(&data->cache_mutex, NULL);
+ if (retval)
+ goto cleanup;
+ retval = pthread_mutex_init(&data->bounce_mutex, NULL);
+ if (retval) {
+ pthread_mutex_destroy(&data->cache_mutex);
+ goto cleanup;
+ }
+ retval = pthread_mutex_init(&data->stats_mutex, NULL);
+ if (retval) {
+ pthread_mutex_destroy(&data->cache_mutex);
+ pthread_mutex_destroy(&data->bounce_mutex);
+ goto cleanup;
+ }
+ }
+#endif
*channel = io;
return 0;
@@ -733,7 +865,7 @@ static errcode_t unixfd_open(const char *str_fd, int flags,
#if defined(HAVE_FCNTL)
fd_flags = fcntl(fd, F_GETFD);
if (fd_flags == -1)
- return -EBADF;
+ return EBADF;
flags = 0;
if (fd_flags & O_RDWR)
@@ -796,6 +928,13 @@ static errcode_t unix_close(io_channel channel)
if (close(data->dev) < 0)
retval = errno;
free_cache(data);
+#ifdef HAVE_PTHREAD
+ if (data->flags & IO_FLAG_THREADS) {
+ pthread_mutex_destroy(&data->cache_mutex);
+ pthread_mutex_destroy(&data->bounce_mutex);
+ pthread_mutex_destroy(&data->stats_mutex);
+ }
+#endif
ext2fs_free_mem(&channel->private_data);
if (channel->name)
@@ -807,24 +946,27 @@ static errcode_t unix_close(io_channel channel)
static errcode_t unix_set_blksize(io_channel channel, int blksize)
{
struct unix_private_data *data;
- errcode_t retval;
+ errcode_t retval = 0;
EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
data = (struct unix_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
if (channel->block_size != blksize) {
+ mutex_lock(data, CACHE_MTX);
+ mutex_lock(data, BOUNCE_MTX);
#ifndef NO_IO_CACHE
- if ((retval = flush_cached_blocks(channel, data, 0)))
+ if ((retval = flush_cached_blocks(channel, data, FLUSH_NOLOCK)))
return retval;
#endif
channel->block_size = blksize;
free_cache(data);
- if ((retval = alloc_cache(channel, data)))
- return retval;
+ retval = alloc_cache(channel, data);
+ mutex_unlock(data, BOUNCE_MTX);
+ mutex_unlock(data, CACHE_MTX);
}
- return 0;
+ return retval;
}
static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
@@ -832,7 +974,7 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
{
struct unix_private_data *data;
struct unix_cache *cache, *reuse[READ_DIRECT_SIZE];
- errcode_t retval;
+ errcode_t retval = 0;
char *cp;
int i, j;
@@ -843,6 +985,8 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
#ifdef NO_IO_CACHE
return raw_read_blk(channel, data, block, count, buf);
#else
+ if (data->flags & IO_FLAG_NOCACHE)
+ return raw_read_blk(channel, data, block, count, buf);
/*
* If we're doing an odd-sized read or a very large read,
* flush out the cache and then do a direct read.
@@ -854,6 +998,7 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
}
cp = buf;
+ mutex_lock(data, CACHE_MTX);
while (count > 0) {
/* If it's in the cache, use it! */
if ((cache = find_cached_block(data, block, &reuse[0]))) {
@@ -876,10 +1021,11 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
if ((retval = raw_read_blk(channel, data, block, 1,
cache->buf))) {
cache->in_use = 0;
- return retval;
+ break;
}
memcpy(cp, cache->buf, channel->block_size);
- return 0;
+ retval = 0;
+ break;
}
/*
@@ -893,7 +1039,7 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
printf("Reading %d blocks starting at %lu\n", i, block);
#endif
if ((retval = raw_read_blk(channel, data, block, i, cp)))
- return retval;
+ break;
/* Save the results in the cache */
for (j=0; j < i; j++) {
@@ -904,7 +1050,8 @@ static errcode_t unix_read_blk64(io_channel channel, unsigned long long block,
cp += channel->block_size;
}
}
- return 0;
+ mutex_unlock(data, CACHE_MTX);
+ return retval;
#endif /* NO_IO_CACHE */
}
@@ -930,12 +1077,15 @@ static errcode_t unix_write_blk64(io_channel channel, unsigned long long block,
#ifdef NO_IO_CACHE
return raw_write_blk(channel, data, block, count, buf);
#else
+ if (data->flags & IO_FLAG_NOCACHE)
+ return raw_write_blk(channel, data, block, count, buf);
/*
* If we're doing an odd-sized write or a very large write,
* flush out the cache completely and then do a direct write.
*/
if (count < 0 || count > WRITE_DIRECT_SIZE) {
- if ((retval = flush_cached_blocks(channel, data, 1)))
+ if ((retval = flush_cached_blocks(channel, data,
+ FLUSH_INVALIDATE)))
return retval;
return raw_write_blk(channel, data, block, count, buf);
}
@@ -950,6 +1100,7 @@ static errcode_t unix_write_blk64(io_channel channel, unsigned long long block,
retval = raw_write_blk(channel, data, block, count, buf);
cp = buf;
+ mutex_lock(data, CACHE_MTX);
while (count > 0) {
cache = find_cached_block(data, block, &reuse);
if (!cache) {
@@ -963,6 +1114,7 @@ static errcode_t unix_write_blk64(io_channel channel, unsigned long long block,
block++;
cp += channel->block_size;
}
+ mutex_unlock(data, CACHE_MTX);
return retval;
#endif /* NO_IO_CACHE */
}
@@ -1013,7 +1165,7 @@ static errcode_t unix_write_byte(io_channel channel, unsigned long offset,
/*
* Flush out the cache completely
*/
- if ((retval = flush_cached_blocks(channel, data, 1)))
+ if ((retval = flush_cached_blocks(channel, data, FLUSH_INVALIDATE)))
return retval;
#endif
@@ -1056,6 +1208,7 @@ static errcode_t unix_set_option(io_channel channel, const char *option,
{
struct unix_private_data *data;
unsigned long long tmp;
+ errcode_t retval;
char *end;
EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
@@ -1074,6 +1227,20 @@ static errcode_t unix_set_option(io_channel channel, const char *option,
return EXT2_ET_INVALID_ARGUMENT;
return 0;
}
+ if (!strcmp(option, "cache")) {
+ if (!arg)
+ return EXT2_ET_INVALID_ARGUMENT;
+ if (!strcmp(arg, "on")) {
+ data->flags &= ~IO_FLAG_NOCACHE;
+ return 0;
+ }
+ if (!strcmp(arg, "off")) {
+ retval = flush_cached_blocks(channel, data, 0);
+ data->flags |= IO_FLAG_NOCACHE;
+ return retval;
+ }
+ return EXT2_ET_INVALID_ARGUMENT;
+ }
return EXT2_ET_INVALID_ARGUMENT;
}
diff --git a/lib/ext2fs/unlink.c b/lib/ext2fs/unlink.c
index 8ab27ee2..3ec04cfb 100644
--- a/lib/ext2fs/unlink.c
+++ b/lib/ext2fs/unlink.c
@@ -49,7 +49,7 @@ static int unlink_proc(struct ext2_dir_entry *dirent,
if (strncmp(ls->name, dirent->name, ext2fs_dirent_name_len(dirent)))
return 0;
}
- if (ls->inode) {
+ if (!(ls->flags & EXT2FS_UNLINK_FORCE) && ls->inode) {
if (dirent->inode != ls->inode)
return 0;
} else {
@@ -70,7 +70,7 @@ static int unlink_proc(struct ext2_dir_entry *dirent,
#endif
errcode_t ext2fs_unlink(ext2_filsys fs, ext2_ino_t dir,
const char *name, ext2_ino_t ino,
- int flags EXT2FS_ATTR((unused)))
+ int flags)
{
errcode_t retval;
struct link_struct ls;
@@ -86,7 +86,7 @@ errcode_t ext2fs_unlink(ext2_filsys fs, ext2_ino_t dir,
ls.name = name;
ls.namelen = name ? strlen(name) : 0;
ls.inode = ino;
- ls.flags = 0;
+ ls.flags = flags;
ls.done = 0;
ls.prev = 0;
diff --git a/lib/ss/Makefile.in b/lib/ss/Makefile.in
index bf2989b1..40294db0 100644
--- a/lib/ss/Makefile.in
+++ b/lib/ss/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/ss
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
DLOPEN_LIB = @DLOPEN_LIB@
@MCONFIG@
diff --git a/lib/support/Makefile.in b/lib/support/Makefile.in
index 1d278642..f3c7981e 100644
--- a/lib/support/Makefile.in
+++ b/lib/support/Makefile.in
@@ -7,6 +7,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/support
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/lib/support/dict.c b/lib/support/dict.c
index 6a5c15ce..f8277c4a 100644
--- a/lib/support/dict.c
+++ b/lib/support/dict.c
@@ -267,6 +267,7 @@ dict_t *dict_create(dictcount_t maxcount, dict_comp_t comp)
new->allocnode = dnode_alloc;
new->freenode = dnode_free;
new->context = NULL;
+ new->cmp_ctx = NULL;
new->nodecount = 0;
new->maxcount = maxcount;
new->nilnode.left = &new->nilnode;
@@ -294,6 +295,14 @@ void dict_set_allocator(dict_t *dict, dnode_alloc_t al,
dict->context = context;
}
+void dict_set_cmp_context(dict_t *dict, void *cmp_ctx)
+{
+ dict_assert (!dict->cmp_ctx);
+ dict_assert (dict_count(dict) == 0);
+
+ dict->cmp_ctx = cmp_ctx;
+}
+
#ifdef E2FSCK_NOTUSED
/*
* Free a dynamically allocated dictionary object. Removing the nodes
@@ -467,7 +476,7 @@ dnode_t *dict_lookup(dict_t *dict, const void *key)
/* simple binary search adapted for trees that contain duplicate keys */
while (root != nil) {
- result = dict->compare(key, root->key);
+ result = dict->compare(dict->cmp_ctx, key, root->key);
if (result < 0)
root = root->left;
else if (result > 0)
@@ -479,7 +488,8 @@ dnode_t *dict_lookup(dict_t *dict, const void *key)
do {
saved = root;
root = root->left;
- while (root != nil && dict->compare(key, root->key))
+ while (root != nil
+ && dict->compare(dict->cmp_ctx, key, root->key))
root = root->right;
} while (root != nil);
return saved;
@@ -503,7 +513,7 @@ dnode_t *dict_lower_bound(dict_t *dict, const void *key)
dnode_t *tentative = 0;
while (root != nil) {
- int result = dict->compare(key, root->key);
+ int result = dict->compare(dict->cmp_ctx, key, root->key);
if (result > 0) {
root = root->right;
@@ -535,7 +545,7 @@ dnode_t *dict_upper_bound(dict_t *dict, const void *key)
dnode_t *tentative = 0;
while (root != nil) {
- int result = dict->compare(key, root->key);
+ int result = dict->compare(dict->cmp_ctx, key, root->key);
if (result < 0) {
root = root->left;
@@ -580,7 +590,7 @@ void dict_insert(dict_t *dict, dnode_t *node, const void *key)
while (where != nil) {
parent = where;
- result = dict->compare(key, where->key);
+ result = dict->compare(dict->cmp_ctx, key, where->key);
/* trap attempts at duplicate key insertion unless it's explicitly allowed */
dict_assert (dict->dupes || result != 0);
if (result < 0)
@@ -1261,7 +1271,7 @@ static int tokenize(char *string, ...)
return tokcount;
}
-static int comparef(const void *key1, const void *key2)
+static int comparef(const void *cmp_ctx, const void *key1, const void *key2)
{
return strcmp(key1, key2);
}
diff --git a/lib/support/dict.h b/lib/support/dict.h
index 838079d6..d9462a33 100644
--- a/lib/support/dict.h
+++ b/lib/support/dict.h
@@ -56,7 +56,7 @@ typedef struct dnode_t {
#endif
} dnode_t;
-typedef int (*dict_comp_t)(const void *, const void *);
+typedef int (*dict_comp_t)(const void *, const void *, const void *);
typedef dnode_t *(*dnode_alloc_t)(void *);
typedef void (*dnode_free_t)(dnode_t *, void *);
@@ -69,6 +69,7 @@ typedef struct dict_t {
dnode_alloc_t dict_allocnode;
dnode_free_t dict_freenode;
void *dict_context;
+ void *cmp_ctx;
int dict_dupes;
#else
int dict_dummmy;
@@ -88,6 +89,7 @@ typedef struct dict_load_t {
extern dict_t *dict_create(dictcount_t, dict_comp_t);
extern void dict_set_allocator(dict_t *, dnode_alloc_t, dnode_free_t, void *);
+extern void dict_set_cmp_context(dict_t *, void *);
extern void dict_destroy(dict_t *);
extern void dict_free_nodes(dict_t *);
extern void dict_free(dict_t *);
diff --git a/lib/support/mkquota.c b/lib/support/mkquota.c
index ddb53124..71f42c2c 100644
--- a/lib/support/mkquota.c
+++ b/lib/support/mkquota.c
@@ -234,7 +234,8 @@ out:
/* Helper functions for computing quota in memory. */
/******************************************************************/
-static int dict_uint_cmp(const void *a, const void *b)
+static int dict_uint_cmp(const void *cmp_ctx EXT2FS_ATTR((unused)),
+ const void *a, const void *b)
{
unsigned int c, d;
@@ -503,8 +504,8 @@ errcode_t quota_compute_usage(quota_ctx_t qctx)
if (inode->i_links_count &&
(ino == EXT2_ROOT_INO ||
ino >= EXT2_FIRST_INODE(fs->super))) {
- space = ext2fs_inode_i_blocks(fs,
- EXT2_INODE(inode)) << 9;
+ space = ext2fs_get_stat_i_blocks(fs,
+ EXT2_INODE(inode)) << 9;
quota_data_add(qctx, inode, ino, space);
quota_data_inodes(qctx, inode, ino, +1);
}
diff --git a/lib/support/plausible.c b/lib/support/plausible.c
index a7268980..024f205e 100644
--- a/lib/support/plausible.c
+++ b/lib/support/plausible.c
@@ -101,7 +101,6 @@ static void print_ext2_info(const char *device)
ext2_filsys fs;
errcode_t retval;
time_t tm;
- char buf[80];
retval = ext2fs_open2(device, 0, EXT2_FLAG_64BITS, 0, 0,
unix_io_manager, &fs);
@@ -111,13 +110,10 @@ static void print_ext2_info(const char *device)
if (sb->s_mtime) {
tm = sb->s_mtime;
- if (sb->s_last_mounted[0]) {
- memset(buf, 0, sizeof(buf));
- strncpy(buf, sb->s_last_mounted,
- sizeof(sb->s_last_mounted));
- printf(_("\tlast mounted on %s on %s"), buf,
- ctime(&tm));
- } else
+ if (sb->s_last_mounted[0])
+ printf(_("\tlast mounted on %.*s on %s"),
+ EXT2_LEN_STR(sb->s_last_mounted), ctime(&tm));
+ else
printf(_("\tlast mounted on %s"), ctime(&tm));
} else if (sb->s_mkfs_time) {
tm = sb->s_mkfs_time;
diff --git a/lib/support/quotaio_v2.c b/lib/support/quotaio_v2.c
index 73906676..23717f03 100644
--- a/lib/support/quotaio_v2.c
+++ b/lib/support/quotaio_v2.c
@@ -197,7 +197,8 @@ static int v2_init_io(struct quota_handle *h)
(filesize + QT_BLKSIZE - 1) >> QT_BLKSIZE_BITS)) {
log_err("Quota inode %u corrupted: file size %llu; "
"dqi_blocks %u", h->qh_qf.ino,
- filesize, info->dqi_qtree.dqi_blocks);
+ (unsigned long long) filesize,
+ info->dqi_qtree.dqi_blocks);
return -1;
}
if (info->dqi_qtree.dqi_free_blk >= info->dqi_qtree.dqi_blocks) {
diff --git a/lib/support/sort_r.h b/lib/support/sort_r.h
new file mode 100644
index 00000000..dc17e8af
--- /dev/null
+++ b/lib/support/sort_r.h
@@ -0,0 +1,321 @@
+/* Isaac Turner 29 April 2014 Public Domain */
+#ifndef SORT_R_H_
+#define SORT_R_H_
+
+#include <stdlib.h>
+#include <string.h>
+
+/*
+
+sort_r function to be exported.
+
+Parameters:
+ base is the array to be sorted
+ nel is the number of elements in the array
+ width is the size in bytes of each element of the array
+ compar is the comparison function
+ arg is a pointer to be passed to the comparison function
+
+void sort_r(void *base, size_t nel, size_t width,
+ int (*compar)(const void *_a, const void *_b, void *_arg),
+ void *arg);
+
+*/
+
+#define _SORT_R_INLINE inline
+
+#if (defined __APPLE__ || defined __MACH__ || defined __DARWIN__ || \
+ defined __FreeBSD__ || defined __DragonFly__)
+# define _SORT_R_BSD
+#elif (defined _GNU_SOURCE || defined __gnu_hurd__ || defined __GNU__ || \
+ defined __linux__ || defined __MINGW32__ || defined __GLIBC__)
+# define _SORT_R_LINUX
+#elif (defined _WIN32 || defined _WIN64 || defined __WINDOWS__)
+# define _SORT_R_WINDOWS
+# undef _SORT_R_INLINE
+# define _SORT_R_INLINE __inline
+#else
+ /* Using our own recursive quicksort sort_r_simple() */
+#endif
+
+#if (defined NESTED_QSORT && NESTED_QSORT == 0)
+# undef NESTED_QSORT
+#endif
+
+#define SORT_R_SWAP(a,b,tmp) ((tmp) = (a), (a) = (b), (b) = (tmp))
+
+/* swap a and b */
+/* a and b must not be equal! */
+static _SORT_R_INLINE void sort_r_swap(char *__restrict a, char *__restrict b,
+ size_t w)
+{
+ char tmp, *end = a+w;
+ for(; a < end; a++, b++) { SORT_R_SWAP(*a, *b, tmp); }
+}
+
+/* swap a, b iff a>b */
+/* a and b must not be equal! */
+/* __restrict is same as restrict but better support on old machines */
+static _SORT_R_INLINE int sort_r_cmpswap(char *__restrict a,
+ char *__restrict b, size_t w,
+ int (*compar)(const void *_a,
+ const void *_b,
+ void *_arg),
+ void *arg)
+{
+ if(compar(a, b, arg) > 0) {
+ sort_r_swap(a, b, w);
+ return 1;
+ }
+ return 0;
+}
+
+/*
+Swap consecutive blocks of bytes of size na and nb starting at memory addr ptr,
+with the smallest swap so that the blocks are in the opposite order. Blocks may
+be internally re-ordered e.g.
+
+ 12345ab -> ab34512
+ 123abc -> abc123
+ 12abcde -> deabc12
+*/
+static _SORT_R_INLINE void sort_r_swap_blocks(char *ptr, size_t na, size_t nb)
+{
+ if(na > 0 && nb > 0) {
+ if(na > nb) { sort_r_swap(ptr, ptr+na, nb); }
+ else { sort_r_swap(ptr, ptr+nb, na); }
+ }
+}
+
+/* Implement recursive quicksort ourselves */
+/* Note: quicksort is not stable, equivalent values may be swapped */
+static _SORT_R_INLINE void sort_r_simple(void *base, size_t nel, size_t w,
+ int (*compar)(const void *_a,
+ const void *_b,
+ void *_arg),
+ void *arg)
+{
+ char *b = (char *)base, *end = b + nel*w;
+
+ /* for(size_t i=0; i<nel; i++) {printf("%4i", *(int*)(b + i*sizeof(int)));}
+ printf("\n"); */
+
+ if(nel < 10) {
+ /* Insertion sort for arbitrarily small inputs */
+ char *pi, *pj;
+ for(pi = b+w; pi < end; pi += w) {
+ for(pj = pi; pj > b && sort_r_cmpswap(pj-w,pj,w,compar,arg); pj -= w) {}
+ }
+ }
+ else
+ {
+ /* nel > 6; Quicksort */
+
+ int cmp;
+ char *pl, *ple, *pr, *pre, *pivot;
+ char *last = b+w*(nel-1), *tmp;
+
+ /*
+ Use median of second, middle and second-last items as pivot.
+ First and last may have been swapped with pivot and therefore be extreme
+ */
+ char *l[3];
+ l[0] = b + w;
+ l[1] = b+w*(nel/2);
+ l[2] = last - w;
+
+ /* printf("pivots: %i, %i, %i\n", *(int*)l[0], *(int*)l[1], *(int*)l[2]); */
+
+ if(compar(l[0],l[1],arg) > 0) { SORT_R_SWAP(l[0], l[1], tmp); }
+ if(compar(l[1],l[2],arg) > 0) {
+ SORT_R_SWAP(l[1], l[2], tmp);
+ if(compar(l[0],l[1],arg) > 0) { SORT_R_SWAP(l[0], l[1], tmp); }
+ }
+
+ /* swap mid value (l[1]), and last element to put pivot as last element */
+ if(l[1] != last) { sort_r_swap(l[1], last, w); }
+
+ /*
+ pl is the next item on the left to be compared to the pivot
+ pr is the last item on the right that was compared to the pivot
+ ple is the left position to put the next item that equals the pivot
+ ple is the last right position where we put an item that equals the pivot
+
+ v- end (beyond the array)
+ EEEEEELLLLLLLLuuuuuuuuGGGGGGGEEEEEEEE.
+ ^- b ^- ple ^- pl ^- pr ^- pre ^- last (where the pivot is)
+
+ Pivot comparison key:
+ E = equal, L = less than, u = unknown, G = greater than, E = equal
+ */
+ pivot = last;
+ ple = pl = b;
+ pre = pr = last;
+
+ /*
+ Strategy:
+ Loop into the list from the left and right at the same time to find:
+ - an item on the left that is greater than the pivot
+ - an item on the right that is less than the pivot
+ Once found, they are swapped and the loop continues.
+ Meanwhile items that are equal to the pivot are moved to the edges of the
+ array.
+ */
+ while(pl < pr) {
+ /* Move left hand items which are equal to the pivot to the far left.
+ break when we find an item that is greater than the pivot */
+ for(; pl < pr; pl += w) {
+ cmp = compar(pl, pivot, arg);
+ if(cmp > 0) { break; }
+ else if(cmp == 0) {
+ if(ple < pl) { sort_r_swap(ple, pl, w); }
+ ple += w;
+ }
+ }
+ /* break if last batch of left hand items were equal to pivot */
+ if(pl >= pr) { break; }
+ /* Move right hand items which are equal to the pivot to the far right.
+ break when we find an item that is less than the pivot */
+ for(; pl < pr; ) {
+ pr -= w; /* Move right pointer onto an unprocessed item */
+ cmp = compar(pr, pivot, arg);
+ if(cmp == 0) {
+ pre -= w;
+ if(pr < pre) { sort_r_swap(pr, pre, w); }
+ }
+ else if(cmp < 0) {
+ if(pl < pr) { sort_r_swap(pl, pr, w); }
+ pl += w;
+ break;
+ }
+ }
+ }
+
+ pl = pr; /* pr may have gone below pl */
+
+ /*
+ Now we need to go from: EEELLLGGGGEEEE
+ to: LLLEEEEEEEGGGG
+
+ Pivot comparison key:
+ E = equal, L = less than, u = unknown, G = greater than, E = equal
+ */
+ sort_r_swap_blocks(b, ple-b, pl-ple);
+ sort_r_swap_blocks(pr, pre-pr, end-pre);
+
+ /*for(size_t i=0; i<nel; i++) {printf("%4i", *(int*)(b + i*sizeof(int)));}
+ printf("\n");*/
+
+ sort_r_simple(b, (pl-ple)/w, w, compar, arg);
+ sort_r_simple(end-(pre-pr), (pre-pr)/w, w, compar, arg);
+ }
+}
+
+
+#if defined NESTED_QSORT
+
+ static _SORT_R_INLINE void sort_r(void *base, size_t nel, size_t width,
+ int (*compar)(const void *_a,
+ const void *_b,
+ void *aarg),
+ void *arg)
+ {
+ int nested_cmp(const void *a, const void *b)
+ {
+ return compar(a, b, arg);
+ }
+
+ qsort(base, nel, width, nested_cmp);
+ }
+
+#else /* !NESTED_QSORT */
+
+ /* Declare structs and functions */
+
+ #if defined _SORT_R_BSD
+
+ /* Ensure qsort_r is defined */
+ extern void qsort_r(void *base, size_t nel, size_t width, void *thunk,
+ int (*compar)(void *_thunk,
+ const void *_a, const void *_b));
+
+ #endif
+
+ #if defined _SORT_R_BSD || defined _SORT_R_WINDOWS
+
+ /* BSD (qsort_r), Windows (qsort_s) require argument swap */
+
+ struct sort_r_data
+ {
+ void *arg;
+ int (*compar)(const void *_a, const void *_b, void *_arg);
+ };
+
+ static _SORT_R_INLINE int sort_r_arg_swap(void *s,
+ const void *a, const void *b)
+ {
+ struct sort_r_data *ss = (struct sort_r_data*)s;
+ return (ss->compar)(a, b, ss->arg);
+ }
+
+ #endif
+
+ #if defined _SORT_R_LINUX
+
+ typedef int(* __compar_d_fn_t)(const void *, const void *, void *);
+ extern void qsort_r(void *base, size_t nel, size_t width,
+ __compar_d_fn_t __compar, void *arg)
+ __attribute__((nonnull (1, 4)));
+
+ #endif
+
+ /* implementation */
+
+ static _SORT_R_INLINE void sort_r(void *base, size_t nel, size_t width,
+ int (*compar)(const void *_a,
+ const void *_b, void *_arg),
+ void *arg)
+ {
+ #if defined _SORT_R_LINUX
+
+ #if defined __GLIBC__ && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 8))
+
+ /* no qsort_r in glibc before 2.8, need to use nested qsort */
+ sort_r_simple(base, nel, width, compar, arg);
+
+ #else
+
+ qsort_r(base, nel, width, compar, arg);
+
+ #endif
+
+ #elif defined _SORT_R_BSD
+
+ struct sort_r_data tmp;
+ tmp.arg = arg;
+ tmp.compar = compar;
+ qsort_r(base, nel, width, &tmp, sort_r_arg_swap);
+
+ #elif defined _SORT_R_WINDOWS
+
+ struct sort_r_data tmp;
+ tmp.arg = arg;
+ tmp.compar = compar;
+ qsort_s(base, nel, width, sort_r_arg_swap, &tmp);
+
+ #else
+
+ /* Fall back to our own quicksort implementation */
+ sort_r_simple(base, nel, width, compar, arg);
+
+ #endif
+ }
+
+#endif /* !NESTED_QSORT */
+
+#undef _SORT_R_INLINE
+#undef _SORT_R_WINDOWS
+#undef _SORT_R_LINUX
+#undef _SORT_R_BSD
+
+#endif /* SORT_R_H_ */
diff --git a/lib/uuid/Makefile.in b/lib/uuid/Makefile.in
index 972459f8..5f697792 100644
--- a/lib/uuid/Makefile.in
+++ b/lib/uuid/Makefile.in
@@ -7,6 +7,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = lib/uuid
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/misc/Makefile.in b/misc/Makefile.in
index f2554446..3b949d35 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = misc
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -18,13 +19,16 @@ INSTALL = @INSTALL@
@LINUX_CMT@E4CRYPT_MAN= e4crypt.8
@IMAGER_CMT@E2IMAGE_PROG= e2image
+@IMAGER_CMT@E2IMAGE_STATIC= e2image.static
@IMAGER_CMT@E2IMAGE_MAN= e2image.8
@UUIDD_CMT@UUIDD_PROG= uuidd
+@UUIDD_CMT@UUIDD_STATIC= uuidd.static
@UUIDD_CMT@UUIDD_MAN= uuidd.8
@UUIDD_CMT@UUIDD_PROFILED= uuidd.profiled
@BLKID_CMT@BLKID_PROG= blkid
+@BLKID_CMT@BLKID_STATIC= blkid.static
@BLKID_CMT@BLKID_MAN= blkid.8
@BLKID_CMT@FINDFS_LINK= findfs
@@ -102,7 +106,8 @@ SRCS= $(srcdir)/tune2fs.c $(srcdir)/mklost+found.c $(srcdir)/mke2fs.c $(srcdir)/
$(srcdir)/filefrag.c $(srcdir)/base_device.c \
$(srcdir)/ismounted.c $(srcdir)/e2undo.c \
$(srcdir)/e2freefrag.c $(srcdir)/create_inode.c \
- $(srcdir)/fuse2fs.c \
+ $(srcdir)/fuse2fs.c $(srcdir)/e2fuzz.c \
+ $(srcdir)/check_fuzzer.c \
$(srcdir)/../debugfs/journal.c $(srcdir)/../e2fsck/revoke.c \
$(srcdir)/../e2fsck/recovery.c
@@ -134,6 +139,9 @@ DEPEND_CFLAGS = -I$(top_srcdir)/e2fsck
all:: profiled $(SPROGS) $(UPROGS) $(USPROGS) $(SMANPAGES) $(UMANPAGES) \
$(FMANPAGES) $(LPROGS) $(E4DEFRAG_PROG) $(E4CRYPT_PROGS) e2fuzz
+all-static:: $(E2IMAGE_STATIC) $(UUIDD_STATIC) $(BLKID_STATIC) \
+ dumpe2fs.static mke2fs.static tune2fs.static lsattr.static chattr.static
+
@PROFILE_CMT@all:: tune2fs.profiled blkid.profiled e2image.profiled \
e2undo.profiled mke2fs.profiled dumpe2fs.profiled fsck.profiled \
logsave.profiled filefrag.profiled uuidgen.profiled $(UUIDD_PROFILED) \
@@ -241,7 +249,7 @@ e4defrag: $(E4DEFRAG_OBJS) $(DEPLIBS)
e4crypt: $(E4CRYPT_OBJS) $(DEPLIBS) $(DEPSTATIC_LIBUUID)
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o e4crypt $(E4CRYPT_OBJS) \
- $(LIBUUID) $(LIBS)
+ $(LIBUUID) $(LIBS) $(SYSLIBS)
e4defrag.profiled: $(E4DEFRAG_OBJS) $(PROFILED_DEPLIBS)
$(E) " LD $@"
@@ -296,11 +304,21 @@ chattr: $(CHATTR_OBJS) $(DEPLIBS_E2P)
$(Q) $(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS_E2P) \
$(LIBINTL) $(SYSLIBS)
+chattr.static: $(CHATTR_OBJS) $(STATIC_LIBE2P) $(STATIC_LIBCOM_ERR)
+ $(E) " LD $@"
+ $(Q) $(CC) $(ALL_LDFLAGS) -o chattr.static $(CHATTR_OBJS) $(STATIC_LIBE2P) \
+ $(STATIC_LIBCOM_ERR) $(LIBINTL) $(SYSLIBS)
+
lsattr: $(LSATTR_OBJS) $(DEPLIBS_E2P)
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS_E2P) \
$(LIBINTL) $(SYSLIBS)
+lsattr.static: $(LSATTR_OBJS) $(STATIC_LIBE2P) $(STATIC_LIBCOM_ERR)
+ $(E) " LD $@"
+ $(Q) $(CC) $(ALL_LDFLAGS) -o lsattr.static $(LSATTR_OBJS) $(STATIC_LIBE2P) \
+ $(STATIC_LIBCOM_ERR) $(LIBINTL) $(SYSLIBS)
+
uuidgen: $(UUIDGEN_OBJS) $(DEPLIBUUID)
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o uuidgen $(UUIDGEN_OBJS) $(LIBUUID) \
@@ -388,6 +406,10 @@ e2fuzz: $(E2FUZZ_OBJS) $(DEPLIBS) $(DEPLIBBLKID) $(DEPLIBUUID) \
$(Q) $(CC) $(ALL_LDFLAGS) -o e2fuzz $(E2FUZZ_OBJS) $(LIBS) \
$(LIBBLKID) $(LIBUUID) $(LIBEXT2FS) $(SYSLIBS)
+check_fuzzer: check_fuzzer.o $(DEPLIBS)
+ $(E) " LD $@"
+ $(Q) $(CC) $(ALL_LDFLAGS) -o check_fuzzer check_fuzzer.o $(LIBS)
+
filefrag: $(FILEFRAG_OBJS)
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o filefrag $(FILEFRAG_OBJS) $(SYSLIBS)
@@ -712,8 +734,8 @@ tune2fs.o: $(srcdir)/tune2fs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/kernel-jbd.h \
$(top_srcdir)/lib/ext2fs/jfs_compat.h $(top_srcdir)/lib/ext2fs/kernel-list.h \
- $(top_srcdir)/lib/support/plausible.h $(top_srcdir)/lib/support/quotaio.h \
- $(top_srcdir)/lib/support/dqblk_v2.h \
+ $(top_srcdir)/lib/ext2fs/compiler.h $(top_srcdir)/lib/support/plausible.h \
+ $(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h $(top_srcdir)/lib/e2p/e2p.h \
$(srcdir)/util.h $(top_srcdir)/version.h \
$(top_srcdir)/lib/support/nls-enable.h
@@ -764,7 +786,7 @@ dumpe2fs.o: $(srcdir)/dumpe2fs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
$(top_srcdir)/lib/support/nls-enable.h $(top_srcdir)/lib/support/plausible.h \
$(top_srcdir)/version.h
badblocks.o: $(srcdir)/badblocks.c $(top_builddir)/lib/config.h \
@@ -840,6 +862,19 @@ fuse2fs.o: $(srcdir)/fuse2fs.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/version.h
+e2fuzz.o: $(srcdir)/e2fuzz.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
+ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
+ $(top_srcdir)/lib/ext2fs/bitops.h
+check_fuzzer.o: $(srcdir)/check_fuzzer.c $(top_srcdir)/lib/ext2fs/ext2_fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
+ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
+ $(top_srcdir)/lib/ext2fs/bitops.h
journal.o: $(srcdir)/../debugfs/journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/../debugfs/journal.h \
$(top_srcdir)/e2fsck/jfs_user.h $(top_srcdir)/e2fsck/e2fsck.h \
@@ -852,9 +887,11 @@ journal.o: $(srcdir)/../debugfs/journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h
revoke.o: $(srcdir)/../e2fsck/revoke.c $(srcdir)/../e2fsck/jfs_user.h \
+ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
$(srcdir)/../e2fsck/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
$(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
@@ -864,9 +901,11 @@ revoke.o: $(srcdir)/../e2fsck/revoke.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h
recovery.o: $(srcdir)/../e2fsck/recovery.c $(srcdir)/../e2fsck/jfs_user.h \
+ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
$(srcdir)/../e2fsck/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
$(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
@@ -876,5 +915,6 @@ recovery.o: $(srcdir)/../e2fsck/recovery.c $(srcdir)/../e2fsck/jfs_user.h \
$(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
$(top_srcdir)/lib/support/dqblk_v2.h \
$(top_srcdir)/lib/support/quotaio_tree.h \
- $(top_srcdir)/lib/ext2fs/kernel-jbd.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
- $(top_srcdir)/lib/ext2fs/kernel-list.h
+ $(top_srcdir)/lib/ext2fs/fast_commit.h $(top_srcdir)/lib/ext2fs/jfs_compat.h \
+ $(top_srcdir)/lib/ext2fs/kernel-list.h $(top_srcdir)/lib/ext2fs/compiler.h \
+ $(top_srcdir)/lib/ext2fs/kernel-jbd.h
diff --git a/misc/badblocks.c b/misc/badblocks.c
index abf315cd..afeb3da9 100644
--- a/misc/badblocks.c
+++ b/misc/badblocks.c
@@ -892,7 +892,6 @@ static unsigned int test_nd (int dev, blk_t last_block,
test_ptr += got * block_size;
currently_testing += got;
if (got != try) {
- try = 1;
if (recover_block == ~0U)
recover_block = currently_testing -
got + blocks_at_once;
@@ -1066,7 +1065,7 @@ int main (int argc, char ** argv)
unsigned int);
int open_flag;
long sysval;
- blk64_t inblk;
+ unsigned long long inblk;
setbuf(stdout, NULL);
setbuf(stderr, NULL);
@@ -1201,6 +1200,19 @@ int main (int argc, char ** argv)
exit(1);
}
}
+ if ((block_size <= 0) || (block_size > (1 << 24)) ||
+ (block_size & (block_size - 1))) {
+ com_err(program_name, 0, _("Invalid block size: %d\n"),
+ block_size);
+ exit(1);
+ }
+ if ((blocks_at_once <= 0) ||
+ (((unsigned long long) block_size * blocks_at_once) > 0xFFFFFFFF)) {
+ com_err(program_name, 0, _("Invalid blocks_at_once: %d\n"),
+ blocks_at_once);
+ exit(1);
+ }
+
if (optind > argc - 1)
usage();
device_name = argv[optind++];
@@ -1231,14 +1243,15 @@ int main (int argc, char ** argv)
} else first_block = 0;
if (first_block >= last_block) {
com_err (program_name, 0, _("invalid starting block (%llu): must be less than %llu"),
- first_block, last_block);
+ (unsigned long long) first_block,
+ (unsigned long long) last_block);
exit (1);
}
/* ext2 badblocks file can't handle large values */
if (last_block >> 32) {
com_err(program_name, EOVERFLOW,
_("invalid end block (%llu): must be 32-bit value"),
- last_block);
+ (unsigned long long) last_block);
exit(1);
}
if (w_flag)
diff --git a/misc/chattr.1.in b/misc/chattr.1.in
index 1c9e8964..5e1eeb79 100644
--- a/misc/chattr.1.in
+++ b/misc/chattr.1.in
@@ -23,13 +23,13 @@ chattr \- change file attributes on a Linux file system
.B chattr
changes the file attributes on a Linux file system.
.PP
-The format of a symbolic mode is +-=[aAcCdDeijPsStTu].
+The format of a symbolic mode is +-=[aAcCdDeFijmPsStTux].
.PP
The operator '+' causes the selected attributes to be added to the
existing attributes of the files; '-' causes them to be removed; and '='
causes them to be the only attributes that the files have.
.PP
-The letters 'aAcCdDeFijPsStTu' select the new attributes for the files:
+The letters 'aAcCdDeFijmPsStTux' select the new attributes for the files:
append only (a),
no atime updates (A),
compressed (c),
@@ -40,19 +40,22 @@ extent format (e),
case-insensitive directory lookups (F),
immutable (i),
data journalling (j),
+don't compress (m),
project hierarchy (P),
secure deletion (s),
synchronous updates (S),
no tail-merging (t),
top of directory hierarchy (T),
-and undeletable (u).
+undeletable (u),
+and direct access for files (x).
.PP
The following attributes are read-only, and may be listed by
.BR lsattr (1)
but not modified by chattr:
encrypted (E),
indexed directory (I),
-and inline data (N).
+inline data (N),
+and verity (V).
.PP
Not all flags are supported or utilized by all filesystems; refer to
filesystem-specific man pages such as
@@ -78,20 +81,26 @@ Set the file's version/generation number.
.BI \-p " project"
Set the file's project number.
.SH ATTRIBUTES
-A file with the 'a' attribute set can only be open in append mode for writing.
-Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE
-capability can set or clear this attribute.
-.PP
+.TP
+.B a
+A file with the 'a' attribute set can only be opened in append mode for
+writing. Only the superuser or a process possessing the
+CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
+.TP
+.B A
When a file with the 'A' attribute set is accessed, its atime record is
not modified. This avoids a certain amount of disk I/O for laptop
systems.
-.PP
+.TP
+.B c
A file with the 'c' attribute set is automatically compressed on the disk
by the kernel. A read from this file returns uncompressed data. A write to
this file compresses data before storing them on the disk. Note: please
make sure to read the bugs and limitations section at the end of this
-document.
-.PP
+document. (Note: For btrfs, If the 'c' flag is set, then the 'C' flag
+cannot be set. Also conflicts with btrfs mount option 'nodatasum')
+.TP
+.B C
A file with the 'C' attribute set will not be subject to copy-on-write
updates. This flag is only supported on file systems which perform
copy-on-write. (Note: For btrfs, the 'C' flag should be
@@ -99,44 +108,52 @@ set on new or empty files. If it is set on a file which already has
data blocks, it is undefined when the blocks assigned to the file will
be fully stable. If the 'C' flag is set on a directory, it will have no
effect on the directory, but new files created in that directory will
-have the No_COW attribute set.)
-.PP
-A file with the 'd' attribute set is not candidate for backup when the
+have the No_COW attribute set. If the 'C' flag is set, then the 'c' flag
+cannot be set.)
+.TP
+.B d
+A file with the 'd' attribute set is not a candidate for backup when the
.BR dump (8)
program is run.
-.PP
+.TP
+.B D
When a directory with the 'D' attribute set is modified,
-the changes are written synchronously on the disk; this is equivalent to
+the changes are written synchronously to the disk; this is equivalent to
the 'dirsync' mount option applied to a subset of the files.
-.PP
+.TP
+.B e
The 'e' attribute indicates that the file is using extents for mapping
the blocks on disk. It may not be removed using
.BR chattr (1).
-.PP
-The 'E' attribute is used by the experimental encryption patches to
-indicate that the file has been encrypted. It may not be
-set or reset using
+.TP
+.B E
+A file, directory, or symlink with the 'E' attribute set is encrypted by the
+filesystem. This attribute may not be set or cleared using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
-.PP
+.TP
+.B F
A directory with the 'F' attribute set indicates that all the path
lookups inside that directory are made in a case-insensitive fashion.
This attribute can only be changed in empty directories on file systems
with the casefold feature enabled.
-.PP
+.TP
+.B i
A file with the 'i' attribute cannot be modified: it cannot be deleted or
renamed, no link can be created to this file, most of the file's
metadata can not be modified, and the file can not be opened in write mode.
Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE
capability can set or clear this attribute.
-.PP
+.TP
+.B I
The 'I' attribute is used by the htree code to indicate that a directory
-is being indexed using hashed trees. It may not be set or reset using
+is being indexed using hashed trees. It may not be set or cleared using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
-.PP
+.TP
+.B j
A file with the 'j' attribute has all of its data written to the ext3 or
ext4 journal before being written to the file itself, if the file system
is mounted with the "data=ordered" or "data=writeback" options and the
@@ -144,36 +161,47 @@ file system has a journal. When the filesystem is mounted with the
"data=journal" option all file data is already journalled and this
attribute has no effect. Only the superuser or a process possessing the
CAP_SYS_RESOURCE capability can set or clear this attribute.
-.PP
+.TP
+.B m
+A file with the 'm' attribute is excluded from compression on file
+systems that support per-file compression.
+.TP
+.B N
A file with the 'N' attribute set indicates that the file has data
-stored inline, within the inode itself. It may not be set or reset using
+stored inline, within the inode itself. It may not be set or cleared
+using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
-.PP
+.TP
+.B P
A directory with the 'P' attribute set will enforce a hierarchical
-structure for project id's. This means that files and directory created
+structure for project id's. This means that files and directories created
in the directory will inherit the project id of the directory, rename
operations are constrained so when a file or directory is moved into
-another directory, that the project id's much match. In addition, a
+another directory, that the project ids must match. In addition, a
hard link to file can only be created when the project id for the file
and the destination directory match.
-.PP
+.TP
+.B s
When a file with the 's' attribute set is deleted, its blocks are zeroed
and written back to the disk. Note: please make sure to read the bugs
and limitations section at the end of this document.
-.PP
+.TP
+.B S
When a file with the 'S' attribute set is modified,
-the changes are written synchronously on the disk; this is equivalent to
+the changes are written synchronously to the disk; this is equivalent to
the 'sync' mount option applied to a subset of the files.
-.PP
+.TP
+.B t
A file with the 't' attribute will not have a partial block fragment at
the end of the file merged with other files (for those filesystems which
support tail-merging). This is necessary for applications such as LILO
which read the filesystem directly, and which don't understand tail-merged
-files. Note: As of this writing, the ext2 or ext3 filesystems do not
-(yet, except in very experimental patches) support tail-merging.
-.PP
+files. Note: As of this writing, the ext2, ext3, and ext4 filesystems do
+not support tail-merging.
+.TP
+.B T
A directory with the 'T' attribute will be deemed to be the top of
directory hierarchies for the purposes of the Orlov block allocator.
This is a hint to the block allocator used by ext3 and ext4 that the
@@ -183,11 +211,30 @@ idea to set the 'T' attribute on the /home directory, so that /home/john
and /home/mary are placed into separate block groups. For directories
where this attribute is not set, the Orlov block allocator will try to
group subdirectories closer together where possible.
-.PP
+.TP
+.B u
When a file with the 'u' attribute set is deleted, its contents are
saved. This allows the user to ask for its undeletion. Note: please
make sure to read the bugs and limitations section at the end of this
document.
+.TP
+.B x
+The 'x' attribute can be set on a directory or file. If the attribute
+is set on an existing directory, it will be inherited by all files and
+subdirectories that are subsequently created in the directory. If an
+existing directory has contained some files and subdirectories, modifying
+the attribute on the parent directory doesn't change the attributes on
+these files and subdirectories.
+.TP
+.B V
+A file with the 'V' attribute set has fs-verity enabled. It cannot be
+written to, and the filesystem will automatically verify all data read
+from it against a cryptographic hash that covers the entire file's
+contents, e.g. via a Merkle tree. This makes it possible to efficiently
+authenticate the file. This attribute may not be set or cleared using
+.BR chattr (1),
+although it can be displayed by
+.BR lsattr (1).
.PP
.SH AUTHOR
.B chattr
diff --git a/misc/chattr.c b/misc/chattr.c
index a5d60170..644ef4e9 100644
--- a/misc/chattr.c
+++ b/misc/chattr.c
@@ -86,7 +86,7 @@ static unsigned long sf;
static void usage(void)
{
fprintf(stderr,
- _("Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"),
+ _("Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"),
program_name);
exit(1);
}
@@ -102,6 +102,7 @@ static const struct flags_char flags_array[] = {
{ EXT2_DIRSYNC_FL, 'D' },
{ EXT2_APPEND_FL, 'a' },
{ EXT2_COMPR_FL, 'c' },
+ { EXT2_NOCOMPR_FL, 'm' },
{ EXT2_NODUMP_FL, 'd' },
{ EXT4_EXTENTS_FL, 'e'},
{ EXT2_IMMUTABLE_FL, 'i' },
@@ -112,6 +113,7 @@ static const struct flags_char flags_array[] = {
{ EXT2_NOTAIL_FL, 't' },
{ EXT2_TOPDIR_FL, 'T' },
{ FS_NOCOW_FL, 'C' },
+ { FS_DAX_FL, 'x' },
{ EXT4_CASEFOLD_FL, 'F' },
{ 0, 0 }
};
@@ -202,7 +204,6 @@ static int decode_arg (int * i, int argc, char ** argv)
break;
default:
return EOF;
- break;
}
return 1;
}
diff --git a/misc/check_fuzzer.c b/misc/check_fuzzer.c
new file mode 100644
index 00000000..cee21bfe
--- /dev/null
+++ b/misc/check_fuzzer.c
@@ -0,0 +1,61 @@
+/*
+ * Play with a file system image quickly to find UBSAN problems
+ *
+ * Run a file system through some of the libext2fs functions used by
+ * some fuzzer reports.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <ext2fs/ext2_fs.h>
+#include <ext2fs/ext2fs.h>
+
+int main (int argc, char *argv[])
+{
+ errcode_t retval = 0;
+ ext2_filsys fs;
+ int exit_status = 1;
+
+ initialize_ext2_error_table();
+
+ if (argc != 2) {
+ fprintf(stderr, "%s: Usage <device|filesystem>\n", argv[0]);
+ exit(1);
+ }
+
+ retval = ext2fs_open(argv[1], 0, 0, 0,
+ unix_io_manager, &fs);
+ if (retval) {
+ com_err(argv[0], retval, "while trying to open '%s'",
+ argv[1]);
+ exit(1);
+ }
+
+ retval = ext2fs_read_inode_bitmap(fs);
+ if (retval) {
+ com_err(argv[0], retval, "while trying to read inode bitmaps");
+ goto errout;
+ }
+
+ retval = ext2fs_read_block_bitmap(fs);
+ if (retval) {
+ com_err(argv[0], retval, "while trying to read inode bitmaps");
+ goto errout;
+ }
+
+ retval = ext2fs_check_directory(fs, EXT2_ROOT_INO);
+ if (retval) {
+ com_err(argv[0], retval, "while trying to read inode bitmaps");
+ goto errout;
+ }
+ exit_status = 0;
+errout:
+ ext2fs_close(fs);
+ return exit_status;
+}
diff --git a/misc/create_inode.c b/misc/create_inode.c
index 0091b723..54d8d343 100644
--- a/misc/create_inode.c
+++ b/misc/create_inode.c
@@ -121,8 +121,10 @@ static errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
}
inode.i_uid = st->st_uid;
+ ext2fs_set_i_uid_high(inode, st->st_uid >> 16);
inode.i_gid = st->st_gid;
- inode.i_mode |= st->st_mode;
+ ext2fs_set_i_gid_high(inode, st->st_gid >> 16);
+ inode.i_mode = (LINUX_S_IFMT & inode.i_mode) | (~S_IFMT & st->st_mode);
inode.i_atime = st->st_atime;
inode.i_mtime = st->st_mtime;
inode.i_ctime = st->st_ctime;
@@ -164,6 +166,13 @@ static errcode_t set_inode_xattr(ext2_filsys fs, ext2_ino_t ino,
return retval;
}
+ retval = ext2fs_xattrs_read(handle);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while reading xattrs for inode %u"), ino);
+ goto out;
+ }
+
retval = ext2fs_get_mem(size, &list);
if (retval) {
com_err(__func__, retval, _("while allocating memory"));
@@ -617,9 +626,10 @@ errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, const char *src,
{
int fd;
struct stat statbuf;
- ext2_ino_t newfile;
+ ext2_ino_t newfile, parent_ino;
errcode_t retval;
struct ext2_inode inode;
+ char *cp;
fd = ext2fs_open_file(src, O_RDONLY, 0);
if (fd < 0) {
@@ -633,25 +643,37 @@ errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, const char *src,
goto out;
}
- retval = ext2fs_namei(fs, root, cwd, dest, &newfile);
+ cp = strrchr(dest, '/');
+ if (cp) {
+ *cp = 0;
+ retval = ext2fs_namei(fs, root, cwd, dest, &parent_ino);
+ if (retval) {
+ com_err(dest, retval, _("while looking up \"%s\""),
+ dest);
+ goto out;
+ }
+ dest = cp+1;
+ } else
+ parent_ino = cwd;
+
+ retval = ext2fs_namei(fs, root, parent_ino, dest, &newfile);
if (retval == 0) {
retval = EXT2_ET_FILE_EXISTS;
goto out;
}
- retval = ext2fs_new_inode(fs, cwd, 010755, 0, &newfile);
+ retval = ext2fs_new_inode(fs, parent_ino, 010755, 0, &newfile);
if (retval)
goto out;
#ifdef DEBUGFS
printf("Allocated inode: %u\n", newfile);
#endif
- retval = ext2fs_link(fs, cwd, dest, newfile,
- EXT2_FT_REG_FILE);
+ retval = ext2fs_link(fs, parent_ino, dest, newfile, EXT2_FT_REG_FILE);
if (retval == EXT2_ET_DIR_NO_SPACE) {
- retval = ext2fs_expand_dir(fs, cwd);
+ retval = ext2fs_expand_dir(fs, parent_ino);
if (retval)
goto out;
- retval = ext2fs_link(fs, cwd, dest, newfile,
+ retval = ext2fs_link(fs, parent_ino, dest, newfile,
EXT2_FT_REG_FILE);
}
if (retval)
@@ -660,7 +682,7 @@ errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, const char *src,
com_err(__func__, 0, "Warning: inode already set");
ext2fs_inode_alloc_stats2(fs, newfile, +1, 0);
memset(&inode, 0, sizeof(inode));
- inode.i_mode = (statbuf.st_mode & ~LINUX_S_IFMT) | LINUX_S_IFREG;
+ inode.i_mode = (statbuf.st_mode & ~S_IFMT) | LINUX_S_IFREG;
inode.i_atime = inode.i_ctime = inode.i_mtime =
fs->now ? fs->now : time(0);
inode.i_links_count = 1;
@@ -1048,9 +1070,17 @@ errcode_t populate_fs2(ext2_filsys fs, ext2_ino_t parent_ino,
file_info.path_max_len = 255;
file_info.path = calloc(file_info.path_max_len, 1);
+ retval = set_inode_xattr(fs, root, source_dir);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while copying xattrs on root directory"));
+ goto out;
+ }
+
retval = __populate_fs(fs, parent_ino, source_dir, root, &hdlinks,
&file_info, fs_callbacks);
+out:
free(file_info.path);
free(hdlinks.hdl);
return retval;
diff --git a/misc/default_profile.c b/misc/default_profile.c
index ba040c93..585a34d3 100644
--- a/misc/default_profile.c
+++ b/misc/default_profile.c
@@ -46,7 +46,4 @@ const char *mke2fs_default_profile =
" blocksize = 4096\n"
" inode_size = 128\n"
" }\n"
- "\n"
- "[options]\n"
- " fname_encoding = utf8\n"
;
diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c
index 384ce925..3f4fc4ed 100644
--- a/misc/dumpe2fs.c
+++ b/misc/dumpe2fs.c
@@ -196,9 +196,9 @@ static void list_desc(ext2_filsys fs, int grp_only)
&old_desc_blk, &new_desc_blk, 0);
if (grp_only) {
- printf("%lu:%llu:", i, first_block);
+ printf("%lu:%llu:", i, (unsigned long long) first_block);
if (i == 0 || super_blk)
- printf("%llu:", super_blk);
+ printf("%llu:", (unsigned long long) super_blk);
else
printf("-1:");
if (old_desc_blk) {
@@ -206,13 +206,13 @@ static void list_desc(ext2_filsys fs, int grp_only)
old_desc_blk + old_desc_blocks - 1);
printf(":");
} else if (new_desc_blk)
- printf("%llu:", new_desc_blk);
+ printf("%llu:", (unsigned long long) new_desc_blk);
else
printf("-1:");
printf("%llu:%llu:%llu\n",
- ext2fs_block_bitmap_loc(fs, i),
- ext2fs_inode_bitmap_loc(fs, i),
- ext2fs_inode_table_loc(fs, i));
+ (unsigned long long) ext2fs_block_bitmap_loc(fs, i),
+ (unsigned long long) ext2fs_inode_bitmap_loc(fs, i),
+ (unsigned long long) ext2fs_inode_table_loc(fs, i));
continue;
}
@@ -362,8 +362,9 @@ static void print_inline_journal_information(ext2_filsys fs)
struct ext2_inode inode;
ext2_file_t journal_file;
errcode_t retval;
- ino_t ino = fs->super->s_journal_inum;
+ ext2_ino_t ino = fs->super->s_journal_inum;
char buf[1024];
+ int flags;
if (fs->flags & EXT2_FLAG_IMAGE_FILE)
return;
@@ -387,12 +388,14 @@ static void print_inline_journal_information(ext2_filsys fs)
}
ext2fs_file_close(journal_file);
jsb = (journal_superblock_t *) buf;
- if (be32_to_cpu(jsb->s_header.h_magic) != JFS_MAGIC_NUMBER) {
+ if (be32_to_cpu(jsb->s_header.h_magic) != JBD2_MAGIC_NUMBER) {
fprintf(stderr, "%s",
_("Journal superblock magic number invalid!\n"));
exit(1);
}
- e2p_list_journal_super(stdout, buf, fs->blocksize, 0);
+ flags = ext2fs_has_feature_fast_commit(fs->super) ?
+ E2P_LIST_JOURNAL_FLAG_FC : 0;
+ e2p_list_journal_super(stdout, buf, fs->blocksize, flags);
}
static void print_journal_information(ext2_filsys fs)
@@ -400,6 +403,7 @@ static void print_journal_information(ext2_filsys fs)
errcode_t retval;
char buf[1024];
journal_superblock_t *jsb;
+ int flags;
/* Get the journal superblock */
if ((retval = io_channel_read_blk64(fs->io,
@@ -410,14 +414,16 @@ static void print_journal_information(ext2_filsys fs)
exit(1);
}
jsb = (journal_superblock_t *) buf;
- if ((jsb->s_header.h_magic != (unsigned) ntohl(JFS_MAGIC_NUMBER)) ||
+ if ((jsb->s_header.h_magic != (unsigned) ntohl(JBD2_MAGIC_NUMBER)) ||
(jsb->s_header.h_blocktype !=
- (unsigned) ntohl(JFS_SUPERBLOCK_V2))) {
+ (unsigned) ntohl(JBD2_SUPERBLOCK_V2))) {
com_err(program_name, 0, "%s",
_("Couldn't find journal superblock magic numbers"));
exit(1);
}
- e2p_list_journal_super(stdout, buf, fs->blocksize, 0);
+ flags = ext2fs_has_feature_fast_commit(fs->super) ?
+ E2P_LIST_JOURNAL_FLAG_FC : 0;
+ e2p_list_journal_super(stdout, buf, fs->blocksize, flags);
}
static int check_mmp(ext2_filsys fs)
@@ -439,8 +445,10 @@ static int check_mmp(ext2_filsys fs)
time_t mmp_time = mmp->mmp_time;
fprintf(stderr,
- "%s: MMP last updated by '%s' on %s",
- program_name, mmp->mmp_nodename,
+ "%s: MMP update by '%.*s%.*s' at %s",
+ program_name,
+ EXT2_LEN_STR(mmp->mmp_nodename),
+ EXT2_LEN_STR(mmp->mmp_bdevname),
ctime(&mmp_time));
}
retval = 1;
@@ -477,7 +485,8 @@ static void print_mmp_block(ext2_filsys fs)
if (retval) {
com_err(program_name, retval,
_("reading MMP block %llu from '%s'\n"),
- fs->super->s_mmp_block, fs->device_name);
+ (unsigned long long) fs->super->s_mmp_block,
+ fs->device_name);
return;
}
@@ -488,9 +497,12 @@ static void print_mmp_block(ext2_filsys fs)
printf(" mmp_check_interval: %d\n", mmp->mmp_check_interval);
printf(" mmp_sequence: %#08x\n", mmp->mmp_seq);
printf(" mmp_update_date: %s", ctime(&mmp_time));
- printf(" mmp_update_time: %lld\n", mmp->mmp_time);
- printf(" mmp_node_name: %s\n", mmp->mmp_nodename);
- printf(" mmp_device_name: %s\n", mmp->mmp_bdevname);
+ printf(" mmp_update_time: %llu\n",
+ (unsigned long long) mmp->mmp_time);
+ printf(" mmp_node_name: %.*s\n",
+ EXT2_LEN_STR(mmp->mmp_nodename));
+ printf(" mmp_device_name: %.*s\n",
+ EXT2_LEN_STR(mmp->mmp_bdevname));
}
static void parse_extended_opts(const char *opts, blk64_t *superblock,
@@ -661,11 +673,13 @@ int main (int argc, char ** argv)
device_name = argv[optind++];
flags = EXT2_FLAG_JOURNAL_DEV_OK | EXT2_FLAG_SOFTSUPP_FEATURES |
- EXT2_FLAG_64BITS;
+ EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
if (force)
flags |= EXT2_FLAG_FORCE;
if (image_dump)
flags |= EXT2_FLAG_IMAGE_FILE;
+ if (header_only)
+ flags |= EXT2_FLAG_SUPER_ONLY;
try_open_again:
if (use_superblock && !use_blocksize) {
for (use_blocksize = EXT2_MIN_BLOCK_SIZE;
diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
index 9c23fadc..49b6346e 100644
--- a/misc/e2freefrag.c
+++ b/misc/e2freefrag.c
@@ -265,8 +265,8 @@ static errcode_t dump_chunk_info(ext2_filsys fs, struct chunk_info *info,
int i, retval = 0;
fprintf(f, "Total blocks: %llu\nFree blocks: %llu (%0.1f%%)\n",
- ext2fs_blocks_count(fs->super),
- free_blks,
+ (unsigned long long) ext2fs_blocks_count(fs->super),
+ (unsigned long long) free_blks,
(double)free_blks * 100 /
ext2fs_blocks_count(fs->super));
@@ -363,7 +363,7 @@ static void collect_info(ext2_filsys fs, struct chunk_info *chunk_info, FILE *f)
static void open_device(char *device_name, ext2_filsys *fs)
{
int retval;
- int flag = EXT2_FLAG_FORCE | EXT2_FLAG_64BITS;
+ int flag = EXT2_FLAG_FORCE | EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
retval = ext2fs_open(device_name, flag, 0, 0, unix_io_manager, fs);
if (retval) {
diff --git a/misc/e2fuzz.c b/misc/e2fuzz.c
index 8576d4ee..0ceece9e 100644
--- a/misc/e2fuzz.c
+++ b/misc/e2fuzz.c
@@ -33,9 +33,10 @@ static unsigned long long user_corrupt_bytes = 0;
static double user_corrupt_pct = 0.0;
#if !defined HAVE_PWRITE64 && !defined HAVE_PWRITE
-static ssize_t my_pwrite(int fd, const void *buf, size_t count, off_t offset)
+static ssize_t my_pwrite(int fd, const void *buf, size_t count,
+ ext2_loff_t offset)
{
- if (lseek(fd, offset, SEEK_SET) < 0)
+ if (ext2fs_llseek(fd, offset, SEEK_SET) < 0)
return 0;
return write(fd, buf, count);
@@ -82,7 +83,7 @@ static int find_block_helper(ext2_filsys fs EXT2FS_ATTR((unused)),
}
static errcode_t find_metadata_blocks(ext2_filsys fs, ext2fs_block_bitmap bmap,
- off_t *corrupt_bytes)
+ ext2_loff_t *corrupt_bytes)
{
dgrp_t i;
blk64_t b, c;
@@ -172,7 +173,8 @@ static uint64_t rand_num(uint64_t min, uint64_t max)
for (i = 0; i < sizeof(x); i++)
px[i] = random();
- return min + (uint64_t)((double)(max - min) * (x / (UINT64_MAX + 1.0)));
+ return min + (uint64_t)((double)(max - min) *
+ (x / ((double) UINT64_MAX + 1.0)));
}
static int process_fs(const char *fsname)
@@ -181,9 +183,8 @@ static int process_fs(const char *fsname)
int flags, fd;
ext2_filsys fs = NULL;
ext2fs_block_bitmap corrupt_map;
- off_t hsize, count, off, offset, corrupt_bytes;
+ ext2_loff_t hsize, count, off, offset, corrupt_bytes, i;
unsigned char c;
- off_t i;
/* If mounted rw, force dryrun mode */
ret = ext2fs_check_if_mounted(fsname, &flags);
@@ -201,8 +202,8 @@ static int process_fs(const char *fsname)
}
/* Ensure the fs is clean and does not have errors */
- ret = ext2fs_open(fsname, EXT2_FLAG_64BITS, 0, 0, unix_io_manager,
- &fs);
+ ret = ext2fs_open(fsname, EXT2_FLAG_64BITS | EXT2_FLAG_THREADS,
+ 0, 0, unix_io_manager, &fs);
if (ret) {
fprintf(stderr, "%s: failed to open filesystem.\n",
fsname);
@@ -277,8 +278,8 @@ static int process_fs(const char *fsname)
c |= 0x80;
if (verbose)
printf("Corrupting byte %lld in block %lld to 0x%x\n",
- (long long) off % fs->blocksize,
- (long long) off / fs->blocksize, c);
+ off % fs->blocksize,
+ off / fs->blocksize, c);
if (dryrun)
continue;
#ifdef HAVE_PWRITE64
diff --git a/misc/e2image.8.in b/misc/e2image.8.in
index bbbb57ae..ef124867 100644
--- a/misc/e2image.8.in
+++ b/misc/e2image.8.in
@@ -8,10 +8,12 @@ e2image \- Save critical ext2/ext3/ext4 filesystem metadata to a file
.SH SYNOPSIS
.B e2image
[
-.B \-r|Q
+.B \-r|\-Q
]
[
.B \-f
+]
+[
.B \-b
.I superblock
]
@@ -19,9 +21,6 @@ e2image \- Save critical ext2/ext3/ext4 filesystem metadata to a file
.B \-B
.I blocksize
]
-[
-.B \-fr
-]
.I device
.I image-file
.br
diff --git a/misc/e2image.c b/misc/e2image.c
index 3c881fee..347759b2 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -54,7 +54,7 @@ extern int optind;
#include "support/plausible.h"
#include "../version.h"
-#define QCOW_OFLAG_COPIED (1LL << 63)
+#define QCOW_OFLAG_COPIED (1ULL << 63)
#define NO_BLK ((blk64_t) -1)
/* Image types */
@@ -104,11 +104,11 @@ static int get_bits_from_size(size_t size)
static void usage(void)
{
- fprintf(stderr, _("Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize]"
- "[ -fr ] device image-file\n"),
+ fprintf(stderr, _("Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] "
+ "device image-file\n"),
program_name);
fprintf(stderr, _(" %s -I device image-file\n"), program_name);
- fprintf(stderr, _(" %s -ra [ -cfnp ] [ -o src_offset ] "
+ fprintf(stderr, _(" %s -ra [ -cfnp ] [ -o src_offset ] "
"[ -O dest_offset ] src_fs [ dest_fs ]\n"),
program_name);
exit (1);
@@ -192,7 +192,8 @@ static void generic_write(int fd, void *buf, int blocksize, blk64_t block)
if (block)
com_err(program_name, err,
- _("error writing block %llu"), block);
+ _("error writing block %llu"),
+ (unsigned long long) block);
else
com_err(program_name, err, "%s",
_("error in generic_write()"));
@@ -312,7 +313,7 @@ struct process_block_struct {
* structure, so there's no point in letting the ext2fs library read
* the inode again.
*/
-static ino_t stashed_ino = 0;
+static ext2_ino_t stashed_ino = 0;
static struct ext2_inode *stashed_inode;
static errcode_t meta_get_blocks(ext2_filsys fs EXT2FS_ATTR((unused)),
@@ -565,8 +566,10 @@ static void sigint_handler(int unused EXT2FS_ATTR((unused)))
static int print_progress(blk64_t num, blk64_t total)
{
- return fprintf(stderr, _("%llu / %llu blocks (%d%%)"), num, total,
- calc_percent(num, total));
+ return fprintf(stderr, _("%llu / %llu blocks (%d%%)"),
+ (unsigned long long) num,
+ (unsigned long long) total,
+ calc_percent(num, total));
}
static void output_meta_data_blocks(ext2_filsys fs, int fd, int flags)
@@ -671,7 +674,8 @@ more_blocks:
retval = io_channel_read_blk64(fs->io, blk, 1, buf);
if (retval) {
com_err(program_name, retval,
- _("error reading block %llu"), blk);
+ _("error reading block %llu"),
+ (unsigned long long) blk);
}
total_written++;
if (scramble_block_map &&
@@ -726,7 +730,8 @@ more_blocks:
fputc('\r', stderr);
strftime(buff, 30, "%T", gmtime(&duration));
fprintf(stderr, _("Copied %llu / %llu blocks (%d%%) in %s "),
- total_written, meta_blocks_count,
+ (unsigned long long) total_written,
+ (unsigned long long) meta_blocks_count,
calc_percent(total_written, meta_blocks_count), buff);
if (duration)
fprintf(stderr, _("at %.2f MB/s"),
@@ -892,8 +897,9 @@ static errcode_t initialize_qcow2_image(int fd, ext2_filsys fs,
int cluster_bits = get_bits_from_size(fs->blocksize);
struct ext2_super_block *sb = fs->super;
- if (fs->blocksize < 1024)
- return EINVAL; /* Can never happen, but just in case... */
+ /* Sbould never happen, but just in case... */
+ if (cluster_bits < 0)
+ return EXT2_FILSYS_CORRUPTED;
/* Allocate header */
ret = ext2fs_get_memzero(sizeof(struct ext2_qcow2_hdr), &header);
@@ -1201,7 +1207,8 @@ static void output_qcow2_meta_data_blocks(ext2_filsys fs, int fd)
retval = io_channel_read_blk64(fs->io, blk, 1, buf);
if (retval) {
com_err(program_name, retval,
- _("error reading block %llu"), blk);
+ _("error reading block %llu"),
+ (unsigned long long) blk);
continue;
}
if (scramble_block_map &&
@@ -1482,7 +1489,8 @@ int main (int argc, char ** argv)
ext2_filsys fs;
char *image_fn, offset_opt[64];
struct ext2_qcow2_hdr *header = NULL;
- int open_flag = EXT2_FLAG_64BITS | EXT2_FLAG_IGNORE_CSUM_ERRORS;
+ int open_flag = EXT2_FLAG_64BITS | EXT2_FLAG_THREADS |
+ EXT2_FLAG_IGNORE_CSUM_ERRORS;
int img_type = 0;
int flags = 0;
int mount_flags = 0;
@@ -1620,7 +1628,7 @@ int main (int argc, char ** argv)
goto skip_device;
}
}
- sprintf(offset_opt, "offset=%llu", source_offset);
+ sprintf(offset_opt, "offset=%llu", (unsigned long long) source_offset);
retval = ext2fs_open2(device_name, offset_opt, open_flag,
superblock, blocksize, unix_io_manager, &fs);
if (retval) {
diff --git a/misc/e2label.c b/misc/e2label.c
index 526a62c3..910ccc77 100644
--- a/misc/e2label.c
+++ b/misc/e2label.c
@@ -81,7 +81,7 @@ static void print_label (char *dev)
char label[VOLNAMSZ+1];
open_e2fs (dev, O_RDONLY);
- strncpy(label, sb.s_volume_name, VOLNAMSZ);
+ snprintf(label, sizeof(label), "%.*s", EXT2_LEN_STR(sb.s_volume_name));
label[VOLNAMSZ] = 0;
printf("%s\n", label);
}
diff --git a/misc/e2undo.c b/misc/e2undo.c
index 71991e05..bc78fb2e 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -127,9 +127,12 @@ static void usage(void)
static void dump_header(struct undo_header *hdr)
{
- printf("nr keys:\t%llu\n", ext2fs_le64_to_cpu(hdr->num_keys));
- printf("super block:\t%llu\n", ext2fs_le64_to_cpu(hdr->super_offset));
- printf("key block:\t%llu\n", ext2fs_le64_to_cpu(hdr->key_offset));
+ printf("nr keys:\t%llu\n",
+ (unsigned long long) ext2fs_le64_to_cpu(hdr->num_keys));
+ printf("super block:\t%llu\n",
+ (unsigned long long) ext2fs_le64_to_cpu(hdr->super_offset));
+ printf("key block:\t%llu\n",
+ (unsigned long long) ext2fs_le64_to_cpu(hdr->key_offset));
printf("block size:\t%u\n", ext2fs_le32_to_cpu(hdr->block_size));
printf("fs block size:\t%u\n", ext2fs_le32_to_cpu(hdr->fs_block_size));
printf("super crc:\t0x%x\n", ext2fs_le32_to_cpu(hdr->sb_crc));
@@ -138,7 +141,8 @@ static void dump_header(struct undo_header *hdr)
printf("incompat:\t0x%x\n", ext2fs_le32_to_cpu(hdr->f_incompat));
printf("rocompat:\t0x%x\n", ext2fs_le32_to_cpu(hdr->f_rocompat));
if (e2undo_has_feature_fs_offset(hdr))
- printf("fs offset:\t%llu\n", ext2fs_le64_to_cpu(hdr->fs_offset));
+ printf("fs offset:\t%llu\n",
+ (unsigned long long) ext2fs_le64_to_cpu(hdr->fs_offset));
printf("header crc:\t0x%x\n", ext2fs_le32_to_cpu(hdr->header_crc));
}
@@ -460,7 +464,7 @@ int main(int argc, char *argv[])
if (!*opt_offset_string)
offset = ext2fs_le64_to_cpu(undo_ctx.hdr.fs_offset);
retval = snprintf(opt_offset_string, sizeof(opt_offset_string),
- "offset=%llu", offset);
+ "offset=%llu", (unsigned long long) offset);
if ((size_t) retval >= sizeof(opt_offset_string)) {
/* should not happen... */
com_err(prg_name, 0, _("specified offset is too large"));
@@ -517,7 +521,7 @@ int main(int argc, char *argv[])
if (!force &&
ext2fs_le32_to_cpu(keyb->magic) != KEYBLOCK_MAGIC) {
fprintf(stderr, _("%s: wrong key magic at %llu\n"),
- tdb_file, lblk);
+ tdb_file, (unsigned long long) lblk);
exit(1);
}
crc = keyb->crc;
@@ -527,7 +531,7 @@ int main(int argc, char *argv[])
if (!force && ext2fs_le32_to_cpu(crc) != key_crc) {
fprintf(stderr,
_("%s: key block checksum error at %llu.\n"),
- tdb_file, lblk);
+ tdb_file, (unsigned long long) lblk);
exit(1);
}
@@ -550,7 +554,8 @@ int main(int argc, char *argv[])
ikey->size) {
com_err(prg_name, retval,
_("%s: block %llu is too long."),
- tdb_file, ikey->fsblk);
+ tdb_file,
+ (unsigned long long) ikey->fsblk);
exit(1);
}
@@ -562,7 +567,7 @@ int main(int argc, char *argv[])
if (retval) {
com_err(prg_name, retval,
_("while fetching block %llu."),
- ikey->fileblk);
+ (unsigned long long) ikey->fileblk);
if (!force)
exit(1);
io_error = 1;
@@ -575,7 +580,8 @@ int main(int argc, char *argv[])
fprintf(stderr,
_("checksum error in filesystem block "
"%llu (undo blk %llu)\n"),
- ikey->fsblk, ikey->fileblk);
+ (unsigned long long) ikey->fsblk,
+ (unsigned long long) ikey->fileblk);
if (!force)
exit(1);
csum_error = 1;
@@ -598,21 +604,23 @@ int main(int argc, char *argv[])
if (retval) {
com_err(prg_name, retval,
_("while fetching block %llu."),
- ikey->fileblk);
+ (unsigned long long) ikey->fileblk);
io_error = 1;
continue;
}
if (verbose)
printf("Replayed block of size %u from %llu to %llu\n",
- ikey->size, ikey->fileblk, ikey->fsblk);
+ ikey->size, (unsigned long long) ikey->fileblk,
+ (unsigned long long) ikey->fsblk);
if (dry_run)
continue;
retval = io_channel_write_blk64(channel, ikey->fsblk,
-(int)ikey->size, buf);
if (retval) {
com_err(prg_name, retval,
- _("while writing block %llu."), ikey->fsblk);
+ _("while writing block %llu."),
+ (unsigned long long) ikey->fsblk);
io_error = 1;
}
}
diff --git a/misc/e4crypt.8.in b/misc/e4crypt.8.in
index 75b968a0..fe9372cf 100644
--- a/misc/e4crypt.8.in
+++ b/misc/e4crypt.8.in
@@ -48,7 +48,9 @@ values are 4, 8, 16, and 32.
If one or more directory paths are specified, e4crypt will try to
set the policy of those directories to use the key just added by the
.B add_key
-command.
+command. If a salt was explicitly specified, then it will be used
+to derive the encryption key of those directories. Otherwise a
+directory-specific default salt will be used.
.TP
.B e4crypt get_policy \fIpath\fR ...
Print the policy for the directories specified on the command line.
diff --git a/misc/e4crypt.c b/misc/e4crypt.c
index 2ae6254a..67d25d88 100644
--- a/misc/e4crypt.c
+++ b/misc/e4crypt.c
@@ -26,6 +26,7 @@
#include <getopt.h>
#include <dirent.h>
#include <errno.h>
+#include <stdbool.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -652,6 +653,7 @@ static void do_help(int argc, char **argv, const struct cmd_desc *cmd);
static void do_add_key(int argc, char **argv, const struct cmd_desc *cmd)
{
struct salt *salt;
+ bool explicit_salt = false;
char *keyring = NULL;
int i, opt, pad = 4;
unsigned j;
@@ -666,8 +668,13 @@ static void do_add_key(int argc, char **argv, const struct cmd_desc *cmd)
pad = atoi(optarg);
break;
case 'S':
+ if (explicit_salt) {
+ fputs("May only provide -S once\n", stderr);
+ exit(1);
+ }
/* Salt value for passphrase. */
parse_salt(optarg, 0);
+ explicit_salt = true;
break;
case 'v':
options |= OPT_VERBOSE;
@@ -692,8 +699,9 @@ static void do_add_key(int argc, char **argv, const struct cmd_desc *cmd)
exit(1);
}
validate_paths(argc, argv, optind);
- for (i = optind; i < argc; i++)
- parse_salt(argv[i], PARSE_FLAGS_FORCE_FN);
+ if (!explicit_salt)
+ for (i = optind; i < argc; i++)
+ parse_salt(argv[i], PARSE_FLAGS_FORCE_FN);
printf("Enter passphrase (echo disabled): ");
get_passphrase(in_passphrase, sizeof(in_passphrase));
for (j = 0, salt = salt_list; j < num_salt; j++, salt++) {
@@ -702,8 +710,10 @@ static void do_add_key(int argc, char **argv, const struct cmd_desc *cmd)
generate_key_ref_str(salt);
insert_key_into_keyring(keyring, salt);
}
- if (optind != argc)
- set_policy(NULL, pad, argc, argv, optind);
+ if (optind != argc) {
+ salt = explicit_salt ? salt_list : NULL;
+ set_policy(salt, pad, argc, argv, optind);
+ }
clear_secrets();
exit(0);
}
diff --git a/misc/e4defrag.c b/misc/e4defrag.c
index c6c6f134..86e97ee3 100644
--- a/misc/e4defrag.c
+++ b/misc/e4defrag.c
@@ -362,7 +362,7 @@ static int page_in_core(int fd, struct move_extent defrag_data,
{
long pagesize;
void *page = NULL;
- loff_t offset, end_offset, length;
+ ext2_loff_t offset, end_offset, length;
if (vec == NULL || *vec != NULL)
return -1;
@@ -371,8 +371,8 @@ static int page_in_core(int fd, struct move_extent defrag_data,
if (pagesize < 0)
return -1;
/* In mmap, offset should be a multiple of the page size */
- offset = (loff_t)defrag_data.orig_start * block_size;
- length = (loff_t)defrag_data.len * block_size;
+ offset = (ext2_loff_t)defrag_data.orig_start * block_size;
+ length = (ext2_loff_t)defrag_data.len * block_size;
end_offset = offset + length;
/* Round the offset down to the nearest multiple of pagesize */
offset = (offset / pagesize) * pagesize;
@@ -418,18 +418,18 @@ static int defrag_fadvise(int fd, struct move_extent defrag_data,
SYNC_FILE_RANGE_WRITE |
SYNC_FILE_RANGE_WAIT_AFTER;
unsigned int i;
- loff_t offset;
+ ext2_loff_t offset;
if (pagesize < 1)
return -1;
- offset = (loff_t)defrag_data.orig_start * block_size;
+ offset = (ext2_loff_t)defrag_data.orig_start * block_size;
offset = (offset / pagesize) * pagesize;
#ifdef HAVE_SYNC_FILE_RANGE
/* Sync file for fadvise process */
if (sync_file_range(fd, offset,
- (loff_t)pagesize * page_num, sync_flag) < 0)
+ (ext2_loff_t)pagesize * page_num, sync_flag) < 0)
return -1;
#endif
@@ -1179,10 +1179,13 @@ static int file_statistic(const char *file, const struct stat64 *buf,
do {
count++;
printf("[ext %d]:\tstart %llu:\tlogical "
- "%llu:\tlen %llu\n", count,
- ext_list_tmp->data.physical,
- ext_list_tmp->data.logical,
- ext_list_tmp->data.len);
+ "%llu:\tlen %llu\n", count,
+ (unsigned long long)
+ ext_list_tmp->data.physical,
+ (unsigned long long)
+ ext_list_tmp->data.logical,
+ (unsigned long long)
+ ext_list_tmp->data.len);
ext_list_tmp = ext_list_tmp->next;
} while (ext_list_tmp != logical_list_head);
@@ -1192,12 +1195,14 @@ static int file_statistic(const char *file, const struct stat64 *buf,
if (current_uid == ROOT_UID) {
if (strlen(file) > 40)
printf("%s\n%50d/%-10d%6llu KB\n",
- file, now_ext_count,
- best_ext_count, size_per_ext);
+ file, now_ext_count,
+ best_ext_count,
+ (unsigned long long) size_per_ext);
else
printf("%-40s%10d/%-10d%6llu KB\n",
- file, now_ext_count,
- best_ext_count, size_per_ext);
+ file, now_ext_count,
+ best_ext_count,
+ (unsigned long long) size_per_ext);
} else {
if (strlen(file) > 40)
printf("%s\n%50d/%-10s%7s\n",
@@ -1220,14 +1225,16 @@ static int file_statistic(const char *file, const struct stat64 *buf,
if (current_uid == ROOT_UID) {
if (strlen(msg_buffer) > 40)
printf("\033[79;0H\033[K%s\n"
- "%50d/%-10d%6llu KB\n",
- msg_buffer, now_ext_count,
- best_ext_count, size_per_ext);
+ "%50d/%-10d%6llu KB\n",
+ msg_buffer, now_ext_count,
+ best_ext_count,
+ (unsigned long long) size_per_ext);
else
printf("\033[79;0H\033[K%-40s"
- "%10d/%-10d%6llu KB\n",
- msg_buffer, now_ext_count,
- best_ext_count, size_per_ext);
+ "%10d/%-10d%6llu KB\n",
+ msg_buffer, now_ext_count,
+ best_ext_count,
+ (unsigned long long) size_per_ext);
} else {
if (strlen(msg_buffer) > 40)
printf("\033[79;0H\033[K%s\n%50d/%-10s%7s\n",
@@ -1286,7 +1293,8 @@ out:
* @start: logical offset for defrag target file
* @file_size: defrag target filesize
*/
-static void print_progress(const char *file, loff_t start, loff_t file_size)
+static void print_progress(const char *file, ext2_loff_t start,
+ ext2_loff_t file_size)
{
int percent = (start * 100) / file_size;
printf("\033[79;0H\033[K[%u/%u]%s:\t%3d%%",
@@ -1308,7 +1316,7 @@ static void print_progress(const char *file, loff_t start, loff_t file_size)
static int call_defrag(int fd, int donor_fd, const char *file,
const struct stat64 *buf, struct fiemap_extent_list *ext_list_head)
{
- loff_t start = 0;
+ ext2_loff_t start = 0;
unsigned int page_num;
unsigned char *vec = NULL;
int defraged_ret = 0;
@@ -1561,8 +1569,8 @@ static int file_defrag(const char *file, const struct stat64 *buf,
orig_group_tmp = orig_group_head;
do {
ret = fallocate64(donor_fd, 0,
- (loff_t)orig_group_tmp->start->data.logical * block_size,
- (loff_t)orig_group_tmp->len * block_size);
+ (ext2_loff_t)orig_group_tmp->start->data.logical * block_size,
+ (ext2_loff_t)orig_group_tmp->len * block_size);
if (ret < 0) {
if (mode_flag & DETAIL) {
PRINT_FILE_NAME(file);
@@ -1897,6 +1905,7 @@ int main(int argc, char *argv[])
frag_rank[j].msg_buffer,
frag_rank[j].now_count,
frag_rank[j].best_count,
+ (unsigned long long)
frag_rank[j].
size_per_ext);
} else if (strlen(frag_rank[j].
@@ -1907,6 +1916,7 @@ int main(int argc, char *argv[])
frag_rank[j].msg_buffer,
frag_rank[j].now_count,
frag_rank[j].best_count,
+ (unsigned long long)
frag_rank[j].
size_per_ext);
} else
@@ -1999,12 +2009,12 @@ int main(int argc, char *argv[])
100 / files_block_count;
score = CALC_SCORE(files_ratio);
printf("\n Total/best extents\t\t\t\t%d/%d\n"
- " Average size per extent"
- "\t\t\t%llu KB\n"
- " Fragmentation score\t\t\t\t%.0f\n",
- extents_before_defrag,
- extents_after_defrag,
- size_per_ext, score);
+ " Average size per extent"
+ "\t\t\t%llu KB\n"
+ " Fragmentation score\t\t\t\t%.0f\n",
+ extents_before_defrag,
+ extents_after_defrag,
+ (unsigned long long) size_per_ext, score);
printf(" [0-30 no problem:"
" 31-55 a little bit fragmented:"
" 56- needs defrag]\n");
diff --git a/misc/ext4.5.in b/misc/ext4.5.in
index 1db61a5f..90bc4f88 100644
--- a/misc/ext4.5.in
+++ b/misc/ext4.5.in
@@ -299,6 +299,20 @@ feature is essentially a more extreme version of sparse_super and is
designed to allow a much larger percentage of the disk to have
contiguous blocks available for data files.
.TP
+.B stable_inodes
+.br
+Marks the filesystem's inode numbers and UUID as stable.
+.BR resize2fs (8)
+will not allow shrinking a filesystem with this feature, nor
+will
+.BR tune2fs (8)
+allow changing its UUID. This feature allows the use of specialized encryption
+settings that make use of the inode numbers and UUID. Note that the
+.B encrypt
+feature still needs to be enabled separately.
+.B stable_inodes
+is a "compat" feature, so old kernels will allow it.
+.TP
.B uninit_bg
.br
This ext4 file system feature indicates that the block group descriptors
@@ -788,6 +802,8 @@ ext4, 4.13
ext4, 5.2
.IP "\fBverity\fR" 2i
ext4, 5.4
+.IP "\fBstable_inodes\fR" 2i
+ext4, 5.5
.SH SEE ALSO
.BR mke2fs (8),
.BR mke2fs.conf (5),
diff --git a/misc/filefrag.8.in b/misc/filefrag.8.in
index 5292672f..d15d3632 100644
--- a/misc/filefrag.8.in
+++ b/misc/filefrag.8.in
@@ -33,8 +33,8 @@ testing purposes.
.BI \-b blocksize
Use
.I blocksize
-in bytes for output instead of the filesystem blocksize.
-For compatibility with earlier versions of
+in bytes, or with [KMG] suffix, up to 1GB for output instead of the
+filesystem blocksize. For compatibility with earlier versions of
.BR filefrag ,
if
.I blocksize
@@ -43,6 +43,14 @@ is unspecified it defaults to 1024 bytes.
.B \-e
Print output in extent format, even for block-mapped files.
.TP
+.B \-E
+Display the contents of ext4's extent status cache. This feature is not
+supported on all kernels, and is only supported on ext4 file systems.
+.TP
+.TP
+.B -P
+Pre-load the ext4's extent status cache for the file. This feature is not
+supported on all kernels, and is only supported on ext4 file systems.
.B \-k
Use 1024\-byte blocksize for output (identical to '\-b 1024').
.TP
diff --git a/misc/filefrag.c b/misc/filefrag.c
index 1eec146d..1e43131e 100644
--- a/misc/filefrag.c
+++ b/misc/filefrag.c
@@ -53,11 +53,13 @@ extern int optind;
#include <ext2fs/fiemap.h>
int verbose = 0;
-int blocksize; /* Use specified blocksize (default 1kB) */
+unsigned int blocksize; /* Use specified blocksize (default 1kB) */
int sync_file = 0; /* fsync file before getting the mapping */
+int precache_file = 0; /* precache the file before getting the mapping */
int xattr_map = 0; /* get xattr mapping */
int force_bmap; /* force use of FIBMAP instead of FIEMAP */
int force_extent; /* print output in extent format always */
+int use_extent_cache; /* Use extent cache */
int logical_width = 8;
int physical_width = 10;
const char *ext_fmt = "%4d: %*llu..%*llu: %*llu..%*llu: %6llu: %s\n";
@@ -73,7 +75,7 @@ const char *hex_fmt = "%4d: %*llx..%*llx: %*llx..%*llx: %6llx: %s\n";
#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */
#define EXT3_IOC_GETFLAGS _IOR('f', 1, long)
-static int int_log2(int arg)
+static int ulong_log2(unsigned long arg)
{
int l = 0;
@@ -85,7 +87,7 @@ static int int_log2(int arg)
return l;
}
-static int int_log10(unsigned long long arg)
+static int ulong_log10(unsigned long long arg)
{
int l = 0;
@@ -145,6 +147,7 @@ static void print_extent_info(struct fiemap_extent *fm_extent, int cur_ex,
unsigned long long logical_blk;
unsigned long long ext_len;
unsigned long long ext_blks;
+ unsigned long long ext_blks_phys;
__u32 fe_flags, mask;
char flags[256] = "";
@@ -161,13 +164,15 @@ static void print_extent_info(struct fiemap_extent *fm_extent, int cur_ex,
physical_blk = fm_extent->fe_physical >> blk_shift;
}
- if (expected)
+ fe_flags = fm_extent->fe_flags;
+ if (expected &&
+ !(fe_flags & FIEMAP_EXTENT_UNKNOWN) &&
+ !(fe_flags & EXT4_FIEMAP_EXTENT_HOLE))
sprintf(flags, ext_fmt == hex_fmt ? "%*llx: " : "%*llu: ",
physical_width, expected >> blk_shift);
else
sprintf(flags, "%.*s ", physical_width, " ");
- fe_flags = fm_extent->fe_flags;
print_flag(&fe_flags, FIEMAP_EXTENT_LAST, flags, "last,");
print_flag(&fe_flags, FIEMAP_EXTENT_UNKNOWN, flags, "unknown_loc,");
print_flag(&fe_flags, FIEMAP_EXTENT_DELALLOC, flags, "delalloc,");
@@ -179,6 +184,7 @@ static void print_extent_info(struct fiemap_extent *fm_extent, int cur_ex,
print_flag(&fe_flags, FIEMAP_EXTENT_UNWRITTEN, flags, "unwritten,");
print_flag(&fe_flags, FIEMAP_EXTENT_MERGED, flags, "merged,");
print_flag(&fe_flags, FIEMAP_EXTENT_SHARED, flags, "shared,");
+ print_flag(&fe_flags, EXT4_FIEMAP_EXTENT_HOLE, flags, "hole,");
/* print any unknown flags as hex values */
for (mask = 1; fe_flags != 0 && mask != 0; mask <<= 1) {
char hex[sizeof(mask) * 2 + 4]; /* 2 chars/byte + 0x, + NUL */
@@ -197,10 +203,17 @@ static void print_extent_info(struct fiemap_extent *fm_extent, int cur_ex,
if (flags[0] != '\0')
flags[strnlen(flags, sizeof(flags)) - 1] = '\0';
+ if ((fm_extent->fe_flags & FIEMAP_EXTENT_UNKNOWN) ||
+ (fm_extent->fe_flags & EXT4_FIEMAP_EXTENT_HOLE)) {
+ ext_len = 0;
+ ext_blks_phys = 0;
+ } else
+ ext_blks_phys = ext_blks;
+
printf(ext_fmt, cur_ex, logical_width, logical_blk,
logical_width, logical_blk + ext_blks,
physical_width, physical_blk,
- physical_width, physical_blk + ext_blks,
+ physical_width, physical_blk + ext_blks_phys,
ext_len, flags);
}
@@ -217,6 +230,7 @@ static int filefrag_fiemap(int fd, int blk_shift, int *num_extents,
unsigned long long expected_dense = 0;
unsigned long flags = 0;
unsigned int i;
+ unsigned long cmd = FS_IOC_FIEMAP;
int fiemap_header_printed = 0;
int tot_extents = 0, n = 0;
int last = 0;
@@ -228,14 +242,20 @@ static int filefrag_fiemap(int fd, int blk_shift, int *num_extents,
if (sync_file)
flags |= FIEMAP_FLAG_SYNC;
+ if (precache_file)
+ flags |= FIEMAP_FLAG_CACHE;
+
if (xattr_map)
flags |= FIEMAP_FLAG_XATTR;
+ if (use_extent_cache)
+ cmd = EXT4_IOC_GET_ES_CACHE;
+
do {
fiemap->fm_length = ~0ULL;
fiemap->fm_flags = flags;
fiemap->fm_extent_count = count;
- rc = ioctl(fd, FS_IOC_FIEMAP, (unsigned long) fiemap);
+ rc = ioctl(fd, cmd, (unsigned long) fiemap);
if (rc < 0) {
static int fiemap_incompat_printed;
@@ -354,9 +374,9 @@ static int filefrag_fibmap(int fd, int blk_shift, int *num_extents,
if (verbose && expected != 0) {
printf("Discontinuity: Block %llu is at %llu "
"(was %llu)\n",
- fm_ext.fe_logical / st->st_blksize,
- fm_ext.fe_physical / st->st_blksize,
- expected / st->st_blksize);
+ (unsigned long long) (fm_ext.fe_logical / st->st_blksize),
+ (unsigned long long) (fm_ext.fe_physical / st->st_blksize),
+ (unsigned long long) (expected / st->st_blksize));
}
/* create the new extent */
fm_last = fm_ext;
@@ -418,13 +438,13 @@ static int frag_report(const char *filename)
goto out_close;
}
- if (last_device != st.st_dev) {
+ if ((last_device != st.st_dev) || !st.st_dev) {
if (fstatfs(fd, &fsinfo) < 0) {
rc = -errno;
perror("fstatfs");
goto out_close;
}
- if (ioctl(fd, FIGETBSZ, &blksize) < 0)
+ if ((ioctl(fd, FIGETBSZ, &blksize) < 0) || !blksize)
blksize = fsinfo.f_bsize;
if (verbose)
printf("Filesystem type is: %lx\n",
@@ -452,28 +472,49 @@ static int frag_report(const char *filename)
}
last_device = st.st_dev;
- width = int_log10(fsinfo.f_blocks);
+ width = ulong_log10(fsinfo.f_blocks);
if (width > physical_width)
physical_width = width;
numblocks = (st.st_size + blksize - 1) / blksize;
if (blocksize != 0)
- blk_shift = int_log2(blocksize);
+ blk_shift = ulong_log2(blocksize);
else
- blk_shift = int_log2(blksize);
+ blk_shift = ulong_log2(blksize);
- width = int_log10(numblocks);
+ if (use_extent_cache)
+ width = 10;
+ else
+ width = ulong_log10(numblocks);
if (width > logical_width)
logical_width = width;
- if (verbose)
- printf("File size of %s is %llu (%llu block%s of %d bytes)\n",
- filename, (unsigned long long)st.st_size,
- numblocks * blksize >> blk_shift,
+ if (verbose) {
+ __u32 state;
+
+ printf("File size of %s is %llu (%llu block%s of %d bytes)",
+ filename, (unsigned long long) st.st_size,
+ (unsigned long long) (numblocks * blksize >> blk_shift),
numblocks == 1 ? "" : "s", 1 << blk_shift);
+ if (use_extent_cache &&
+ ioctl(fd, EXT4_IOC_GETSTATE, &state) == 0 &&
+ (state & EXT4_STATE_FLAG_EXT_PRECACHED))
+ fputs(" -- pre-cached", stdout);
+ fputc('\n', stdout);
+ }
if (!force_bmap) {
rc = filefrag_fiemap(fd, blk_shift, &num_extents, &st);
expected = 0;
+ if (rc < 0 &&
+ (use_extent_cache || precache_file || xattr_map)) {
+ if (rc != -EBADR)
+ fprintf(stderr, "%s: %s: %s\n ",
+ filename,
+ use_extent_cache ?
+ "EXT4_IOC_GET_ES_CACHE" :
+ "FS_IOC_FIEMAP", strerror(-rc));
+ goto out_close;
+ }
}
if (force_bmap || rc < 0) { /* FIEMAP failed, try FIBMAP instead */
@@ -517,7 +558,7 @@ out_close:
static void usage(const char *progname)
{
- fprintf(stderr, "Usage: %s [-b{blocksize}] [-BeksvxX] file ...\n",
+ fprintf(stderr, "Usage: %s [-b{blocksize}[KMG]] [-BeEksvxX] file ...\n",
progname);
exit(1);
}
@@ -527,7 +568,7 @@ int main(int argc, char**argv)
char **cpp;
int rc = 0, c;
- while ((c = getopt(argc, argv, "Bb::eksvxX")) != EOF) {
+ while ((c = getopt(argc, argv, "Bb::eEkPsvxX")) != EOF) {
switch (c) {
case 'B':
force_bmap++;
@@ -535,7 +576,9 @@ int main(int argc, char**argv)
case 'b':
if (optarg) {
char *end;
- blocksize = strtoul(optarg, &end, 0);
+ unsigned long val;
+
+ val = strtoul(optarg, &end, 0);
if (end) {
#if __GNUC_PREREQ (7, 0)
#pragma GCC diagnostic push
@@ -544,15 +587,15 @@ int main(int argc, char**argv)
switch (end[0]) {
case 'g':
case 'G':
- blocksize *= 1024;
+ val *= 1024;
/* fall through */
case 'm':
case 'M':
- blocksize *= 1024;
+ val *= 1024;
/* fall through */
case 'k':
case 'K':
- blocksize *= 1024;
+ val *= 1024;
break;
default:
break;
@@ -561,6 +604,16 @@ int main(int argc, char**argv)
#pragma GCC diagnostic pop
#endif
}
+ /* Specifying too large a blocksize will just
+ * shift all extents down to zero length. Even
+ * 1GB is questionable, but caveat emptor. */
+ if (val > 1024 * 1024 * 1024) {
+ fprintf(stderr,
+ "%s: blocksize %lu over 1GB\n",
+ argv[0], val);
+ usage(argv[0]);
+ }
+ blocksize = val;
} else { /* Allow -b without argument for compat. Remove
* this eventually so "-b {blocksize}" works */
fprintf(stderr, "%s: -b needs a blocksize "
@@ -569,6 +622,9 @@ int main(int argc, char**argv)
blocksize = 1024;
}
break;
+ case 'E':
+ use_extent_cache++;
+ /* fallthrough */
case 'e':
force_extent++;
if (!verbose)
@@ -577,6 +633,9 @@ int main(int argc, char**argv)
case 'k':
blocksize = 1024;
break;
+ case 'P':
+ precache_file++;
+ break;
case 's':
sync_file++;
break;
diff --git a/misc/findsuper.c b/misc/findsuper.c
index ff20b988..7e78c1fc 100644
--- a/misc/findsuper.c
+++ b/misc/findsuper.c
@@ -115,11 +115,11 @@ static void usage(void)
int main(int argc, char *argv[])
{
int skiprate=512; /* one sector */
- loff_t sk=0, skl=0;
+ ext2_loff_t sk=0, skl=0;
int fd;
char *s;
time_t tm, last = time(0);
- loff_t interval = 1024 * 1024;
+ ext2_loff_t interval = 1024 * 1024;
int c, print_jnl_copies = 0;
const char * device_name;
struct ext2_super_block ext2;
@@ -251,7 +251,7 @@ int main(int argc, char *argv[])
sb_offset = 0;
if (jnl_copy && !print_jnl_copies)
continue;
- printf("\r%11Lu %11Lu%s %11Lu%s %9u %5Lu %4u%s %s %02x%02x%02x%02x %s\n",
+ printf("\r%11Lu %11Lu%s %11Lu%s %9u %5Lu %4u%s %s %02x%02x%02x%02x %.*s\n",
sk, sk - ext2.s_block_group_nr * grpsize - sb_offset,
jnl_copy ? "*":" ",
sk + ext2fs_blocks_count(&ext2) * bsize -
@@ -259,7 +259,8 @@ int main(int argc, char *argv[])
jnl_copy ? "*" : " ", ext2fs_blocks_count(&ext2), bsize,
ext2.s_block_group_nr, jnl_copy ? "*" : " ", s,
ext2.s_uuid[0], ext2.s_uuid[1],
- ext2.s_uuid[2], ext2.s_uuid[3], ext2.s_volume_name);
+ ext2.s_uuid[2], ext2.s_uuid[3],
+ EXT2_LEN_STR(ext2.s_volume_name));
}
printf(_("\n%11Lu: finished with errno %d\n"), sk, errno);
close(fd);
diff --git a/misc/fuse2fs.1.in b/misc/fuse2fs.1.in
index 3bc7ada3..1a0c9d54 100644
--- a/misc/fuse2fs.1.in
+++ b/misc/fuse2fs.1.in
@@ -48,6 +48,9 @@ pretend to be root for permission checks
\fB-o\fR no_default_opts
do not include default fuse options
.TP
+\fB-o\fR norecovery
+do not replay the journal and mount the file system read-only
+.TP
\fB-o\fR fuse2fs_debug
enable fuse2fs debugging
.SS "FUSE options:"
diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c
index be2cd1db..c5957212 100644
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -324,6 +324,7 @@ struct fuse2fs {
int minixdf;
int fakeroot;
int alloc_all_blocks;
+ int norecovery;
FILE *err_fp;
unsigned int next_generation;
};
@@ -648,8 +649,8 @@ static int check_inum_access(ext2_filsys fs, ext2_ino_t ino, mode_t mask)
dbg_printf("access ino=%d mask=e%s%s%s perms=0%o fuid=%d fgid=%d "
"uid=%d gid=%d\n", ino,
(mask & R_OK ? "r" : ""), (mask & W_OK ? "w" : ""),
- (mask & X_OK ? "x" : ""), perms, inode.i_uid, inode.i_gid,
- ctxt->uid, ctxt->gid);
+ (mask & X_OK ? "x" : ""), perms, inode_uid(inode),
+ inode_gid(inode), ctxt->uid, ctxt->gid);
/* existence check */
if (mask == 0)
@@ -679,14 +680,14 @@ static int check_inum_access(ext2_filsys fs, ext2_ino_t ino, mode_t mask)
}
/* allow owner, if perms match */
- if (inode.i_uid == ctxt->uid) {
+ if (inode_uid(inode) == ctxt->uid) {
if ((mask & (perms >> 6)) == mask)
return 0;
return -EACCES;
}
/* allow group, if perms match */
- if (inode.i_gid == ctxt->gid) {
+ if (inode_gid(inode) == ctxt->gid) {
if ((mask & (perms >> 3)) == mask)
return 0;
return -EACCES;
@@ -754,23 +755,6 @@ static void *op_init(struct fuse_conn_info *conn)
return ff;
}
-static blkcnt_t blocks_from_inode(ext2_filsys fs,
- struct ext2_inode_large *inode)
-{
- blkcnt_t b;
-
- b = inode->i_blocks;
- if (ext2fs_has_feature_huge_file(fs->super))
- b += ((long long) inode->osd2.linux2.l_i_blocks_hi) << 32;
-
- if (!ext2fs_has_feature_huge_file(fs->super) ||
- !(inode->i_flags & EXT4_HUGE_FILE_FL))
- b *= fs->blocksize / 512;
- b *= EXT2FS_CLUSTER_RATIO(fs);
-
- return b;
-}
-
static int stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *statbuf)
{
struct ext2_inode_large inode;
@@ -790,11 +774,12 @@ static int stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *statbuf)
statbuf->st_ino = ino;
statbuf->st_mode = inode.i_mode;
statbuf->st_nlink = inode.i_links_count;
- statbuf->st_uid = inode.i_uid;
- statbuf->st_gid = inode.i_gid;
+ statbuf->st_uid = inode_uid(inode);
+ statbuf->st_gid = inode_gid(inode);
statbuf->st_size = EXT2_I_SIZE(&inode);
statbuf->st_blksize = fs->blocksize;
- statbuf->st_blocks = blocks_from_inode(fs, &inode);
+ statbuf->st_blocks = ext2fs_get_stat_i_blocks(fs,
+ (struct ext2_inode *)&inode);
EXT4_INODE_GET_XTIME(i_atime, &tv, &inode);
statbuf->st_atime = tv.tv_sec;
EXT4_INODE_GET_XTIME(i_mtime, &tv, &inode);
@@ -1014,7 +999,9 @@ static int op_mknod(const char *path, mode_t mode, dev_t dev)
inode.i_extra_isize = sizeof(struct ext2_inode_large) -
EXT2_GOOD_OLD_INODE_SIZE;
inode.i_uid = ctxt->uid;
+ ext2fs_set_i_uid_high(inode, ctxt->uid >> 16);
inode.i_gid = ctxt->gid;
+ ext2fs_set_i_gid_high(inode, ctxt->gid >> 16);
err = ext2fs_write_new_inode(fs, child, (struct ext2_inode *)&inode);
if (err) {
@@ -1138,7 +1125,9 @@ static int op_mkdir(const char *path, mode_t mode)
}
inode.i_uid = ctxt->uid;
+ ext2fs_set_i_uid_high(inode, ctxt->uid >> 16);
inode.i_gid = ctxt->gid;
+ ext2fs_set_i_gid_high(inode, ctxt->gid >> 16);
inode.i_mode = LINUX_S_IFDIR | (mode & ~(S_ISUID | fs->umask)) |
parent_sgid;
inode.i_generation = ff->next_generation++;
@@ -1511,7 +1500,9 @@ static int op_symlink(const char *src, const char *dest)
}
inode.i_uid = ctxt->uid;
+ ext2fs_set_i_uid_high(inode, ctxt->uid >> 16);
inode.i_gid = ctxt->gid;
+ ext2fs_set_i_gid_high(inode, ctxt->gid >> 16);
inode.i_generation = ff->next_generation++;
err = ext2fs_write_inode_full(fs, child, (struct ext2_inode *)&inode,
@@ -1907,7 +1898,7 @@ static int op_chmod(const char *path, mode_t mode)
goto out;
}
- if (!ff->fakeroot && ctxt->uid != 0 && ctxt->uid != inode.i_uid) {
+ if (!ff->fakeroot && ctxt->uid != 0 && ctxt->uid != inode_uid(inode)) {
ret = -EPERM;
goto out;
}
@@ -1917,7 +1908,7 @@ static int op_chmod(const char *path, mode_t mode)
* of the user's groups, but FUSE only tells us about the primary
* group.
*/
- if (!ff->fakeroot && ctxt->uid != 0 && ctxt->gid != inode.i_gid)
+ if (!ff->fakeroot && ctxt->uid != 0 && ctxt->gid != inode_gid(inode))
mode &= ~S_ISGID;
inode.i_mode &= ~0xFFF;
@@ -1971,22 +1962,25 @@ static int op_chown(const char *path, uid_t owner, gid_t group)
if (owner != (uid_t) ~0) {
/* Only root gets to change UID. */
if (!ff->fakeroot && ctxt->uid != 0 &&
- !(inode.i_uid == ctxt->uid && owner == ctxt->uid)) {
+ !(inode_uid(inode) == ctxt->uid && owner == ctxt->uid)) {
ret = -EPERM;
goto out;
}
inode.i_uid = owner;
+ ext2fs_set_i_uid_high(inode, owner >> 16);
}
if (group != (gid_t) ~0) {
/* Only root or the owner get to change GID. */
- if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid) {
+ if (!ff->fakeroot && ctxt->uid != 0 &&
+ inode_uid(inode) != ctxt->uid) {
ret = -EPERM;
goto out;
}
/* XXX: We /should/ check group membership but FUSE */
inode.i_gid = group;
+ ext2fs_set_i_gid_high(inode, group >> 16);
}
ret = update_ctime(fs, ino, &inode);
@@ -2364,7 +2358,7 @@ static int op_statfs(const char *path EXT2FS_ATTR((unused)),
overhead = 0;
else
overhead = fs->desc_blocks +
- fs->group_desc_count *
+ (blk64_t)fs->group_desc_count *
(fs->inode_blocks_per_group + 2);
reserved = ext2fs_r_blocks_count(fs->super);
if (!reserved)
@@ -2914,7 +2908,9 @@ static int op_create(const char *path, mode_t mode, struct fuse_file_info *fp)
inode.i_extra_isize = sizeof(struct ext2_inode_large) -
EXT2_GOOD_OLD_INODE_SIZE;
inode.i_uid = ctxt->uid;
+ ext2fs_set_i_uid_high(inode, ctxt->uid >> 16);
inode.i_gid = ctxt->gid;
+ ext2fs_set_i_gid_high(inode, ctxt->gid >> 16);
if (ext2fs_has_feature_extents(fs->super)) {
ext2_extent_handle_t handle;
@@ -3132,7 +3128,7 @@ static int ioctl_setflags(ext2_filsys fs, struct fuse2fs_file_handle *fh,
if (err)
return translate_error(fs, fh->ino, err);
- if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid)
+ if (!ff->fakeroot && ctxt->uid != 0 && inode_uid(inode) != ctxt->uid)
return -EPERM;
if ((inode.i_flags ^ flags) & ~FUSE2FS_MODIFIABLE_IFLAGS)
@@ -3189,7 +3185,7 @@ static int ioctl_setversion(ext2_filsys fs, struct fuse2fs_file_handle *fh,
if (err)
return translate_error(fs, fh->ino, err);
- if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid)
+ if (!ff->fakeroot && ctxt->uid != 0 && inode_uid(inode) != ctxt->uid)
return -EPERM;
inode.i_generation = generation;
@@ -3662,6 +3658,7 @@ static struct fuse_opt fuse2fs_opts[] = {
FUSE2FS_OPT("fakeroot", fakeroot, 1),
FUSE2FS_OPT("fuse2fs_debug", debug, 1),
FUSE2FS_OPT("no_default_opts", no_default_opts, 1),
+ FUSE2FS_OPT("norecovery", norecovery, 1),
FUSE_OPT_KEY("-V", FUSE2FS_VERSION),
FUSE_OPT_KEY("--version", FUSE2FS_VERSION),
@@ -3700,6 +3697,7 @@ static int fuse2fs_opt_proc(void *data, const char *arg,
" -o minixdf minix-style df\n"
" -o fakeroot pretend to be root for permission checks\n"
" -o no_default_opts do not include default fuse options\n"
+ " -o norecovery don't replay the journal (implies ro)\n"
" -o fuse2fs_debug enable fuse2fs debugging\n"
"\n",
outargs->argv[0]);
@@ -3729,7 +3727,8 @@ int main(int argc, char *argv[])
errcode_t err;
char *logfile;
char extra_args[BUFSIZ];
- int ret = 0, flags = EXT2_FLAG_64BITS | EXT2_FLAG_EXCLUSIVE;
+ int ret = 0;
+ int flags = EXT2_FLAG_64BITS | EXT2_FLAG_THREADS | EXT2_FLAG_EXCLUSIVE;
memset(&fctx, 0, sizeof(fctx));
fctx.magic = FUSE2FS_MAGIC;
@@ -3741,6 +3740,8 @@ int main(int argc, char *argv[])
exit(1);
}
+ if (fctx.norecovery)
+ fctx.ro = 1;
if (fctx.ro)
printf("%s", _("Mounting read-only.\n"));
@@ -3788,7 +3789,11 @@ int main(int argc, char *argv[])
ret = 3;
if (ext2fs_has_feature_journal_needs_recovery(global_fs->super)) {
- if (!fctx.ro) {
+ if (fctx.norecovery) {
+ printf(_("%s: mounting read-only without "
+ "recovering journal\n"),
+ fctx.device);
+ } else if (!fctx.ro) {
printf(_("%s: recovering journal\n"), fctx.device);
err = ext2fs_run_ext3_journal(&global_fs);
if (err) {
diff --git a/misc/mk_hugefiles.c b/misc/mk_hugefiles.c
index 24acca8c..0280b41e 100644
--- a/misc/mk_hugefiles.c
+++ b/misc/mk_hugefiles.c
@@ -337,7 +337,8 @@ static errcode_t mk_hugefile(ext2_filsys fs, blk64_t num,
if (retval)
com_err(program_name, retval,
_("while zeroing block %llu "
- "for hugefile"), ret_blk);
+ "for hugefile"),
+ (unsigned long long) ret_blk);
}
while (n) {
@@ -514,7 +515,7 @@ errcode_t mk_hugefiles(ext2_filsys fs, const char *device_name)
fprintf(stderr,
_("Partition offset of %llu (%uk) blocks "
"not compatible with cluster size %u.\n"),
- part_offset, fs->blocksize,
+ (unsigned long long) part_offset, fs->blocksize,
EXT2_CLUSTER_SIZE(fs->super));
exit(1);
}
@@ -583,7 +584,8 @@ errcode_t mk_hugefiles(ext2_filsys fs, const char *device_name)
printf("%s", _("Huge files will be zero'ed\n"));
printf(_("Creating %lu huge file(s) "), num_files);
if (num_blocks)
- printf(_("with %llu blocks each"), num_blocks);
+ printf(_("with %llu blocks each"),
+ (unsigned long long) num_blocks);
fputs(": ", stdout);
}
for (i=0; i < num_files; i++) {
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index 5bcee25e..84248ffc 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -207,12 +207,14 @@ manual page for more details.
.SH OPTIONS
.TP
.BI \-b " block-size"
-Specify the size of blocks in bytes. Valid block-size values are 1024,
-2048 and 4096 bytes per block. If omitted,
-block-size is heuristically determined by the filesystem size and
+Specify the size of blocks in bytes. Valid block-size values are powers of two
+from 1024 up to 65536 (however note that the kernel is able to mount only
+filesystems with block-size smaller or equal to the system page size - 4k on
+x86 systems, up to 64k on ppc64 or aarch64 depending on kernel configuration).
+If omitted, block-size is heuristically determined by the filesystem size and
the expected usage of the filesystem (see the
.B \-T
-option). If
+option). In most common cases, the default block size is 4k. If
.I block-size
is preceded by a negative sign ('-'), then
.B mke2fs
@@ -484,13 +486,10 @@ space in the filesystem and can also negatively impact performance.
It is not
possible to change this value after the filesystem is created.
.IP
-In kernels after 2.6.10 and some
-earlier vendor kernels it is possible to utilize inodes larger than
-128 bytes to store
-extended attributes for improved performance.
-Extended attributes
-stored in large inodes are not visible with older kernels, and such
-filesystems will not be mountable with 2.4 kernels at all.
+File systems with an inode size of 128 bytes do not support timestamps
+beyond January 19, 2038. Inodes which are 256 bytes or larger will
+support extended timestamps, project id's, and the ability to store some
+extended attributes in the inode table for improved performance.
.IP
The default inode size is controlled by the
.BR mke2fs.conf (5)
@@ -524,6 +523,27 @@ The size of the journal must be at least 1024 filesystem blocks
and may be no more than 10,240,000 filesystem blocks or half the total
file system size (whichever is smaller)
.TP
+.BI fast_commit_size= fast-commit-size
+Create an additional fast commit journal area of size
+.I fast-commit-size
+kilobytes.
+This option is only valid if
+.B fast_commit
+feature is enabled
+on the file system. If this option is not specified and if
+.B fast_commit
+feature is turned on, fast commit area size defaults to
+.I journal-size
+/ 64 megabytes. The total size of the journal with
+.B fast_commit
+feature set is
+.I journal-size
++ (
+.I fast-commit-size
+* 1024) megabytes. The total journal size may be no more than
+10,240,000 filesystem blocks or half the total file system size
+(whichever is smaller).
+.TP
.BI location =journal-location
Specify the location of the journal. The argument
.I journal-location
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 879e3914..bd60d49e 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -93,6 +93,7 @@ static uid_t root_uid;
static gid_t root_gid;
int journal_size;
int journal_flags;
+int journal_fc_size;
static int lazy_itable_init;
static int packed_meta_blocks;
int no_copy_xattrs;
@@ -256,7 +257,8 @@ static void test_disk(ext2_filsys fs, badblocks_list *bb_list)
sprintf(buf, "badblocks -b %d -X %s%s%s %llu", fs->blocksize,
quiet ? "" : "-s ", (cflag > 1) ? "-w " : "",
- fs->device_name, ext2fs_blocks_count(fs->super)-1);
+ fs->device_name,
+ (unsigned long long) ext2fs_blocks_count(fs->super)-1);
if (verbose)
printf(_("Running command: %s\n"), buf);
f = popen(buf, "r");
@@ -344,7 +346,7 @@ _("Warning: the backup superblock/group descriptors at block %u contain\n"
exit(1);
}
while (ext2fs_badblocks_list_iterate(bb_iter, &blk))
- ext2fs_mark_block_bitmap2(fs->block_map, EXT2FS_B2C(fs, blk));
+ ext2fs_mark_block_bitmap2(fs->block_map, blk);
ext2fs_badblocks_list_iterate_end(bb_iter);
}
@@ -441,7 +443,8 @@ static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
if (retval) {
fprintf(stderr, _("\nCould not write %d "
"blocks in inode table starting at %llu: %s\n"),
- num, blk, error_message(retval));
+ num, (unsigned long long) blk,
+ error_message(retval));
exit(1);
}
}
@@ -604,9 +607,16 @@ static void create_journal_dev(ext2_filsys fs)
char *buf;
blk64_t blk, err_blk;
int c, count, err_count;
+ struct ext2fs_journal_params jparams;
- retval = ext2fs_create_journal_superblock(fs,
- ext2fs_blocks_count(fs->super), 0, &buf);
+ retval = ext2fs_get_journal_params(&jparams, fs);
+ if (retval) {
+ com_err("create_journal_dev", retval, "%s",
+ _("while splitting the journal size"));
+ exit(1);
+ }
+
+ retval = ext2fs_create_journal_superblock2(fs, &jparams, 0, &buf);
if (retval) {
com_err("create_journal_dev", retval, "%s",
_("while initializing journal superblock"));
@@ -631,7 +641,7 @@ static void create_journal_dev(ext2_filsys fs)
com_err("create_journal_dev", retval,
_("while zeroing journal device "
"(block %llu, count %d)"),
- err_blk, err_count);
+ (unsigned long long) err_blk, err_count);
exit(1);
}
blk += c;
@@ -655,7 +665,6 @@ write_superblock:
static void show_stats(ext2_filsys fs)
{
struct ext2_super_block *s = fs->super;
- char buf[80];
char *os;
blk64_t group_block;
dgrp_t i;
@@ -664,18 +673,18 @@ static void show_stats(ext2_filsys fs)
if (!verbose) {
printf(_("Creating filesystem with %llu %dk blocks and "
"%u inodes\n"),
- ext2fs_blocks_count(s), fs->blocksize >> 10,
- s->s_inodes_count);
+ (unsigned long long) ext2fs_blocks_count(s),
+ fs->blocksize >> 10, s->s_inodes_count);
goto skip_details;
}
if (ext2fs_blocks_count(&fs_param) != ext2fs_blocks_count(s))
fprintf(stderr, _("warning: %llu blocks unused.\n\n"),
- ext2fs_blocks_count(&fs_param) - ext2fs_blocks_count(s));
+ (unsigned long long) (ext2fs_blocks_count(&fs_param) -
+ ext2fs_blocks_count(s)));
+
+ printf(_("Filesystem label=%.*s\n"), EXT2_LEN_STR(s->s_volume_name));
- memset(buf, 0, sizeof(buf));
- strncpy(buf, s->s_volume_name, sizeof(s->s_volume_name));
- printf(_("Filesystem label=%s\n"), buf);
os = e2p_os2string(fs->super->s_creator_os);
if (os)
printf(_("OS type: %s\n"), os);
@@ -692,9 +701,9 @@ static void show_stats(ext2_filsys fs)
printf(_("Stride=%u blocks, Stripe width=%u blocks\n"),
s->s_raid_stride, s->s_raid_stripe_width);
printf(_("%u inodes, %llu blocks\n"), s->s_inodes_count,
- ext2fs_blocks_count(s));
+ (unsigned long long) ext2fs_blocks_count(s));
printf(_("%llu blocks (%2.2f%%) reserved for the super user\n"),
- ext2fs_r_blocks_count(s),
+ (unsigned long long) ext2fs_r_blocks_count(s),
100.0 * ext2fs_r_blocks_count(s) / ext2fs_blocks_count(s));
printf(_("First data block=%u\n"), s->s_first_data_block);
if (root_uid != 0 || root_gid != 0)
@@ -738,7 +747,7 @@ skip_details:
col_left = 72;
}
col_left -= need;
- printf("%llu", group_block);
+ printf("%llu", (unsigned long long) group_block);
}
printf("\n\n");
}
@@ -1144,6 +1153,7 @@ static __u32 ok_features[3] = {
EXT2_FEATURE_COMPAT_DIR_INDEX |
EXT2_FEATURE_COMPAT_EXT_ATTR |
EXT4_FEATURE_COMPAT_SPARSE_SUPER2 |
+ EXT4_FEATURE_COMPAT_FAST_COMMIT |
EXT4_FEATURE_COMPAT_STABLE_INODES,
/* Incompat */
EXT2_FEATURE_INCOMPAT_FILETYPE|
@@ -1469,23 +1479,30 @@ int get_bool_from_profile(char **types, const char *opt, int def_val)
extern const char *mke2fs_default_profile;
static const char *default_files[] = { "<default>", 0 };
+struct device_param {
+ unsigned long min_io; /* prefered minimum IO size */
+ unsigned long opt_io; /* optimal IO size */
+ unsigned long alignment_offset; /* alignment offset wrt physical block size */
+ unsigned int dax:1; /* supports dax? */
+};
+
#ifdef HAVE_BLKID_PROBE_GET_TOPOLOGY
/*
* Sets the geometry of a device (stripe/stride), and returns the
* device's alignment offset, if any, or a negative error.
*/
static int get_device_geometry(const char *file,
- struct ext2_super_block *param,
- unsigned int psector_size)
+ unsigned int blocksize,
+ unsigned int psector_size,
+ struct device_param *dev_param)
{
int rc = -1;
- unsigned int blocksize;
blkid_probe pr;
blkid_topology tp;
- unsigned long min_io;
- unsigned long opt_io;
struct stat statbuf;
+ memset(dev_param, 0, sizeof(*dev_param));
+
/* Nothing to do for a regular file */
if (!stat(file, &statbuf) && S_ISREG(statbuf.st_mode))
return 0;
@@ -1498,23 +1515,20 @@ static int get_device_geometry(const char *file,
if (!tp)
goto out;
- min_io = blkid_topology_get_minimum_io_size(tp);
- opt_io = blkid_topology_get_optimal_io_size(tp);
- blocksize = EXT2_BLOCK_SIZE(param);
- if ((min_io == 0) && (psector_size > blocksize))
- min_io = psector_size;
- if ((opt_io == 0) && min_io)
- opt_io = min_io;
- if ((opt_io == 0) && (psector_size > blocksize))
- opt_io = psector_size;
-
- /* setting stripe/stride to blocksize is pointless */
- if (min_io > blocksize)
- param->s_raid_stride = min_io / blocksize;
- if (opt_io > blocksize)
- param->s_raid_stripe_width = opt_io / blocksize;
-
- rc = blkid_topology_get_alignment_offset(tp);
+ dev_param->min_io = blkid_topology_get_minimum_io_size(tp);
+ dev_param->opt_io = blkid_topology_get_optimal_io_size(tp);
+ if ((dev_param->min_io == 0) && (psector_size > blocksize))
+ dev_param->min_io = psector_size;
+ if ((dev_param->opt_io == 0) && dev_param->min_io > 0)
+ dev_param->opt_io = dev_param->min_io;
+ if ((dev_param->opt_io == 0) && (psector_size > blocksize))
+ dev_param->opt_io = psector_size;
+
+ dev_param->alignment_offset = blkid_topology_get_alignment_offset(tp);
+#ifdef HAVE_BLKID_TOPOLOGY_GET_DAX
+ dev_param->dax = blkid_topology_get_dax(tp);
+#endif
+ rc = 0;
out:
blkid_free_probe(pr);
return rc;
@@ -1563,6 +1577,9 @@ static void PRS(int argc, char *argv[])
int use_bsize;
char *newpath;
int pathlen = sizeof(PATH_SET) + 1;
+#ifdef HAVE_BLKID_PROBE_GET_TOPOLOGY
+ struct device_param dev_param;
+#endif
if (oldpath)
pathlen += strlen(oldpath);
@@ -1749,6 +1766,8 @@ profile_error:
case 'j':
if (!journal_size)
journal_size = -1;
+ if (!journal_fc_size)
+ journal_fc_size = -1;
break;
case 'J':
parse_journal_opts(optarg);
@@ -1972,15 +1991,9 @@ profile_error:
dev_size = fs_blocks_count;
retval = 0;
} else
-#ifndef _WIN32
retval = ext2fs_get_device_size2(device_name,
EXT2_BLOCK_SIZE(&fs_param),
&dev_size);
-#else
- retval = ext2fs_get_device_size(device_name,
- EXT2_BLOCK_SIZE(&fs_param),
- &dev_size);
-#endif
if (retval && (retval != EXT2_ET_UNIMPLEMENTED)) {
com_err(program_name, retval, "%s",
_("while trying to determine filesystem size"));
@@ -2178,8 +2191,8 @@ profile_error:
fprintf(stderr, _("%s: Size of device (0x%llx blocks) %s "
"too big to be expressed\n\t"
"in 32 bits using a blocksize of %d.\n"),
- program_name, fs_blocks_count, device_name,
- EXT2_BLOCK_SIZE(&fs_param));
+ program_name, (unsigned long long) fs_blocks_count,
+ device_name, EXT2_BLOCK_SIZE(&fs_param));
exit(1);
}
/*
@@ -2192,8 +2205,8 @@ profile_error:
fprintf(stderr, _("%s: Size of device (0x%llx blocks) %s "
"too big to create\n\t"
"a filesystem using a blocksize of %d.\n"),
- program_name, fs_blocks_count, device_name,
- EXT2_BLOCK_SIZE(&fs_param));
+ program_name, (unsigned long long) fs_blocks_count,
+ device_name, EXT2_BLOCK_SIZE(&fs_param));
exit(1);
}
@@ -2308,17 +2321,35 @@ profile_error:
}
#ifdef HAVE_BLKID_PROBE_GET_TOPOLOGY
- retval = get_device_geometry(device_name, &fs_param,
- (unsigned int) psector_size);
+ retval = get_device_geometry(device_name, blocksize,
+ psector_size, &dev_param);
if (retval < 0) {
fprintf(stderr,
_("warning: Unable to get device geometry for %s\n"),
device_name);
- } else if (retval) {
- printf(_("%s alignment is offset by %lu bytes.\n"),
- device_name, retval);
- printf(_("This may result in very poor performance, "
- "(re)-partitioning suggested.\n"));
+ } else {
+ /* setting stripe/stride to blocksize is pointless */
+ if (dev_param.min_io > blocksize)
+ fs_param.s_raid_stride = dev_param.min_io / blocksize;
+ if (dev_param.opt_io > blocksize) {
+ fs_param.s_raid_stripe_width =
+ dev_param.opt_io / blocksize;
+ }
+
+ if (dev_param.alignment_offset) {
+ printf(_("%s alignment is offset by %lu bytes.\n"),
+ device_name, dev_param.alignment_offset);
+ printf(_("This may result in very poor performance, "
+ "(re)-partitioning suggested.\n"));
+ }
+
+ if (dev_param.dax && blocksize != sys_page_size) {
+ fprintf(stderr,
+ _("%s is capable of DAX but current block size "
+ "%u is different from system page size %u so "
+ "filesystem will not support DAX.\n"),
+ device_name, blocksize, sys_page_size);
+ }
}
#endif
@@ -2570,14 +2601,15 @@ profile_error:
else {
com_err(program_name, 0,
_("too many inodes (%llu), raise "
- "inode ratio?"), n);
+ "inode ratio?"),
+ (unsigned long long) n);
exit(1);
}
}
} else if (num_inodes > MAX_32_NUM) {
com_err(program_name, 0,
_("too many inodes (%llu), specify < 2^32 inodes"),
- num_inodes);
+ (unsigned long long) num_inodes);
exit(1);
}
/*
@@ -2910,7 +2942,9 @@ int main (int argc, char *argv[])
errcode_t retval = 0;
ext2_filsys fs;
badblocks_list bb_list = 0;
- unsigned int journal_blocks = 0;
+ badblocks_iterate bb_iter;
+ blk_t blk;
+ struct ext2fs_journal_params jparams = {0};
unsigned int i, checkinterval;
int max_mnt_count;
int val, hash_alg;
@@ -2920,6 +2954,7 @@ int main (int argc, char *argv[])
char opt_string[40];
char *hash_alg_str;
int itable_zeroed = 0;
+ blk64_t overhead;
#ifdef ENABLE_NLS
setlocale(LC_MESSAGES, "");
@@ -3019,13 +3054,13 @@ int main (int argc, char *argv[])
/* Calculate journal blocks */
if (!journal_device && ((journal_size) ||
ext2fs_has_feature_journal(&fs_param)))
- journal_blocks = figure_journal_size(journal_size, fs);
+ figure_journal_size(&jparams, journal_size, journal_fc_size, fs);
sprintf(opt_string, "tdb_data_size=%d", fs->blocksize <= 4096 ?
32768 : fs->blocksize * 8);
io_channel_set_options(fs->io, opt_string);
if (offset) {
- sprintf(opt_string, "offset=%llu", offset);
+ sprintf(opt_string, "offset=%llu", (unsigned long long) offset);
io_channel_set_options(fs->io, opt_string);
}
@@ -3151,7 +3186,7 @@ int main (int argc, char *argv[])
if (volume_label) {
memset(fs->super->s_volume_name, 0,
sizeof(fs->super->s_volume_name));
- strncpy(fs->super->s_volume_name, volume_label,
+ strncpy((char *) fs->super->s_volume_name, volume_label,
sizeof(fs->super->s_volume_name));
}
@@ -3161,7 +3196,7 @@ int main (int argc, char *argv[])
if (mount_dir) {
memset(fs->super->s_last_mounted, 0,
sizeof(fs->super->s_last_mounted));
- strncpy(fs->super->s_last_mounted, mount_dir,
+ strncpy((char *) fs->super->s_last_mounted, mount_dir,
sizeof(fs->super->s_last_mounted));
}
@@ -3211,6 +3246,23 @@ int main (int argc, char *argv[])
if (!quiet)
printf("%s", _("done \n"));
+ /*
+ * Unmark bad blocks to calculate overhead, because metadata
+ * blocks and bad blocks can land on the same allocation cluster.
+ */
+ if (bb_list) {
+ retval = ext2fs_badblocks_list_iterate_begin(bb_list,
+ &bb_iter);
+ if (retval) {
+ com_err("ext2fs_badblocks_list_iterate_begin", retval,
+ "%s", _("while unmarking bad blocks"));
+ exit(1);
+ }
+ while (ext2fs_badblocks_list_iterate(bb_iter, &blk))
+ ext2fs_unmark_block_bitmap2(fs->block_map, blk);
+ ext2fs_badblocks_list_iterate_end(bb_iter);
+ }
+
retval = ext2fs_convert_subcluster_bitmap(fs, &fs->block_map);
if (retval) {
com_err(program_name, retval, "%s",
@@ -3218,6 +3270,28 @@ int main (int argc, char *argv[])
exit(1);
}
+ retval = ext2fs_count_used_clusters(fs, fs->super->s_first_data_block,
+ ext2fs_blocks_count(fs->super) - 1,
+ &overhead);
+ if (retval) {
+ com_err(program_name, retval, "%s",
+ _("while calculating overhead"));
+ exit(1);
+ }
+
+ if (bb_list) {
+ retval = ext2fs_badblocks_list_iterate_begin(bb_list,
+ &bb_iter);
+ if (retval) {
+ com_err("ext2fs_badblocks_list_iterate_begin", retval,
+ "%s", _("while marking bad blocks as used"));
+ exit(1);
+ }
+ while (ext2fs_badblocks_list_iterate(bb_iter, &blk))
+ ext2fs_mark_block_bitmap2(fs->block_map, blk);
+ ext2fs_badblocks_list_iterate_end(bb_iter);
+ }
+
if (super_only) {
check_plausibility(device_name, CHECK_FS_EXIST, NULL);
printf(_("%s may be further corrupted by superblock rewrite\n"),
@@ -3262,7 +3336,7 @@ int main (int argc, char *argv[])
if (retval) {
com_err(program_name, retval,
_("while zeroing block %llu at end of filesystem"),
- ret_blk);
+ (unsigned long long) ret_blk);
}
write_inode_tables(fs, lazy_itable_init, itable_zeroed);
create_root_dir(fs);
@@ -3315,22 +3389,23 @@ int main (int argc, char *argv[])
free(journal_device);
} else if ((journal_size) ||
ext2fs_has_feature_journal(&fs_param)) {
+ overhead += EXT2FS_NUM_B2C(fs, jparams.num_journal_blocks + jparams.num_fc_blocks);
if (super_only) {
printf("%s", _("Skipping journal creation in super-only mode\n"));
fs->super->s_journal_inum = EXT2_JOURNAL_INO;
goto no_journal;
}
- if (!journal_blocks) {
+ if (!jparams.num_journal_blocks) {
ext2fs_clear_feature_journal(fs->super);
goto no_journal;
}
if (!quiet) {
printf(_("Creating journal (%u blocks): "),
- journal_blocks);
+ jparams.num_journal_blocks + jparams.num_fc_blocks);
fflush(stdout);
}
- retval = ext2fs_add_journal_inode2(fs, journal_blocks,
+ retval = ext2fs_add_journal_inode3(fs, &jparams,
journal_location,
journal_flags);
if (retval) {
@@ -3357,6 +3432,10 @@ no_journal:
fs->super->s_mmp_update_interval);
}
+ overhead += fs->super->s_first_data_block;
+ if (!super_only)
+ fs->super->s_overhead_clusters = overhead;
+
if (ext2fs_has_feature_bigalloc(&fs_param))
fix_cluster_bg_counts(fs);
if (ext2fs_has_feature_quota(&fs_param))
diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
index 00afd912..01e35cf8 100644
--- a/misc/mke2fs.conf.in
+++ b/misc/mke2fs.conf.in
@@ -45,6 +45,3 @@
blocksize = 4096
inode_size = 128
}
-
-[options]
- fname_encoding = utf8
diff --git a/misc/profile-to-c.awk b/misc/profile-to-c.awk
index f964efd6..814f7236 100644
--- a/misc/profile-to-c.awk
+++ b/misc/profile-to-c.awk
@@ -4,6 +4,7 @@ BEGIN {
}
{
+ gsub("\"","\\\"",$0);
printf(" \"%s\\n\"\n", $0);
}
diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
index 94b6c8ee..b963f30e 100644
--- a/misc/tune2fs.8.in
+++ b/misc/tune2fs.8.in
@@ -117,6 +117,9 @@ Adjust the number of mounts after which the filesystem will be checked by
.BR e2fsck (8).
If
.I max-mount-counts
+is the string "random", tune2fs will use a random value between 20 and 40.
+If
+.I max-mount-counts
is 0 or \-1, the number of times the filesystem is mounted will be disregarded
by
.BR e2fsck (8)
@@ -127,21 +130,13 @@ checked will avoid all filesystems being checked at one time
when using journaled filesystems.
.sp
Mount-count-dependent checking is disabled by default to avoid
-unanticipated long reboots while e2fsck does its work. However,
-you may wish to consider the consequences of disabling
-mount-count-dependent checking entirely. Bad disk drives, cables,
-memory, and kernel bugs could all corrupt a filesystem without
-marking the filesystem dirty or in error. If you are using
-journaling on your filesystem, your filesystem will
-.B never
-be marked dirty, so it will not normally be checked. A
-filesystem error detected by the kernel will still force
-an fsck on the next reboot, but it may already be too late
-to prevent data loss at that point.
-.sp
-See also the
-.B \-i
-option for time-dependent checking.
+unanticipated long reboots while e2fsck does its work. If you
+are concerned about file system corruptions caused by potential hardware
+problems of kernel bugs, a better solution than mount-count-dependent
+checking is to use the
+.BR e2scrub (8)
+program. This does require placing the file system on an LVM volume,
+however.
.TP
.BI \-C " mount-count"
Set the number of times the filesystem has been mounted.
@@ -323,7 +318,13 @@ consistency first using
.BR e2fsck (8).
This operation can also take a while and the file system can be
corrupted and data lost if it is interrupted while in the middle of
-converting the file system.
+converting the file system. Backing up the file system before changing
+inode size is recommended.
+.IP
+File systems with an inode size of 128 bytes do not support timestamps
+beyond January 19, 2038. Inodes which are 256 bytes or larger will
+support extended timestamps, project id's, and the ability to store some
+extended attributes in the inode table for improved performance.
.TP
.B \-j
Add an ext3 journal to the filesystem. If the
@@ -375,6 +376,27 @@ and may be no more than 10,240,000 filesystem blocks.
There must be enough free space in the filesystem to create a journal of
that size.
.TP
+.BI fast_commit_size= fast-commit-size
+Create an additional fast commit journal area of size
+.I fast-commit-size
+kilobytes.
+This option is only valid if
+.B fast_commit
+feature is enabled
+on the file system. If this option is not specified and if
+.B fast_commit
+feature is turned on, fast commit area size defaults to
+.I journal-size
+/ 64 megabytes. The total size of the journal with
+.B fast_commit
+feature set is
+.I journal-size
++ (
+.I fast-commit-size
+* 1024) megabytes. The total journal size may be no more than
+10,240,000 filesystem blocks or half the total file system size
+(whichever is smaller).
+.TP
.BI location =journal-location
Specify the location of the journal. The argument
.I journal-location
@@ -609,6 +631,10 @@ Setting the filesystem feature is equivalent to using the
.B \-j
option.
.TP
+.TP
+.B fast_commit
+Enable fast commit journaling feature to improve fsync latency.
+.TP
.B large_dir
Increase the limit on the number of files per directory.
.B Tune2fs
@@ -653,6 +679,13 @@ Limit the number of backup superblocks to save space on large filesystems.
.B Tune2fs
currently only supports setting this filesystem feature.
.TP
+.B stable_inodes
+Prevent the filesystem from being shrunk or having its UUID changed, in order to
+allow the use of specialized encryption settings that make use of the inode
+numbers and UUID.
+.B Tune2fs
+currently only supports setting this filesystem feature.
+.TP
.B uninit_bg
Allow the kernel to initialize bitmaps and inode tables lazily, and to
keep a high watermark for the unused inodes in a filesystem, to reduce
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index b721696f..f739f16c 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -103,7 +103,7 @@ static int fsck_requested;
static char *undo_file;
int enabling_casefold;
-int journal_size, journal_flags;
+int journal_size, journal_fc_size, journal_flags;
char *journal_device;
static blk64_t journal_location = ~0LL;
@@ -151,6 +151,7 @@ static __u32 ok_features[3] = {
/* Compat */
EXT3_FEATURE_COMPAT_HAS_JOURNAL |
EXT2_FEATURE_COMPAT_DIR_INDEX |
+ EXT4_FEATURE_COMPAT_FAST_COMMIT |
EXT4_FEATURE_COMPAT_STABLE_INODES,
/* Incompat */
EXT2_FEATURE_INCOMPAT_FILETYPE |
@@ -182,7 +183,7 @@ static __u32 clear_ok_features[3] = {
EXT3_FEATURE_COMPAT_HAS_JOURNAL |
EXT2_FEATURE_COMPAT_RESIZE_INODE |
EXT2_FEATURE_COMPAT_DIR_INDEX |
- EXT4_FEATURE_COMPAT_STABLE_INODES,
+ EXT4_FEATURE_COMPAT_FAST_COMMIT,
/* Incompat */
EXT2_FEATURE_INCOMPAT_FILETYPE |
EXT4_FEATURE_INCOMPAT_FLEX_BG |
@@ -222,8 +223,8 @@ static int get_journal_sb(ext2_filsys jfs, char buf[SUPERBLOCK_SIZE])
}
jsb = (journal_superblock_t *) buf;
- if ((jsb->s_header.h_magic != (unsigned)ntohl(JFS_MAGIC_NUMBER)) ||
- (jsb->s_header.h_blocktype != (unsigned)ntohl(JFS_SUPERBLOCK_V2))) {
+ if ((jsb->s_header.h_magic != (unsigned)ntohl(JBD2_MAGIC_NUMBER)) ||
+ (jsb->s_header.h_blocktype != (unsigned)ntohl(JBD2_SUPERBLOCK_V2))) {
fputs(_("Journal superblock not found!\n"), stderr);
return EXT2_ET_BAD_MAGIC;
}
@@ -231,7 +232,7 @@ static int get_journal_sb(ext2_filsys jfs, char buf[SUPERBLOCK_SIZE])
return 0;
}
-static __u8 *journal_user(__u8 uuid[UUID_SIZE], __u8 s_users[JFS_USERS_SIZE],
+static __u8 *journal_user(__u8 uuid[UUID_SIZE], __u8 s_users[JBD2_USERS_SIZE],
int nr_users)
{
int i;
@@ -296,7 +297,7 @@ static int remove_journal_device(ext2_filsys fs)
jsb = (journal_superblock_t *) buf;
/* Find the filesystem UUID */
nr_users = ntohl(jsb->s_nr_users);
- if (nr_users > JFS_USERS_MAX) {
+ if (nr_users > JBD2_USERS_MAX) {
fprintf(stderr, _("Journal superblock is corrupted, nr_users\n"
"is too high (%d).\n"), nr_users);
commit_remove_journal = 1;
@@ -369,7 +370,7 @@ static errcode_t remove_journal_inode(ext2_filsys fs)
{
struct ext2_inode inode;
errcode_t retval;
- ino_t ino = fs->super->s_journal_inum;
+ ext2_ino_t ino = fs->super->s_journal_inum;
retval = ext2fs_read_inode(fs, ino, &inode);
if (retval) {
@@ -427,7 +428,7 @@ static int update_mntopts(ext2_filsys fs, char *mntopts)
return 0;
}
-static void check_fsck_needed(ext2_filsys fs, const char *prompt)
+static int check_fsck_needed(ext2_filsys fs, const char *prompt)
{
/* Refuse to modify anything but a freshly checked valid filesystem. */
if (!(fs->super->s_state & EXT2_VALID_FS) ||
@@ -437,15 +438,17 @@ static void check_fsck_needed(ext2_filsys fs, const char *prompt)
puts(_(please_fsck));
if (mount_flags & EXT2_MF_READONLY)
printf("%s", _("(and reboot afterwards!)\n"));
- exit(1);
+ return 1;
}
/* Give the admin a few seconds to bail out of a dangerous op. */
if (!getenv("TUNE2FS_FORCE_PROMPT") && (!isatty(0) || !isatty(1)))
- return;
+ return 0;
puts(prompt);
proceed_question(5);
+
+ return 0;
}
static void request_dir_fsck_afterwards(ext2_filsys fs)
@@ -508,7 +511,8 @@ struct rewrite_dir_context {
char *buf;
errcode_t errcode;
ext2_ino_t dir;
- int is_htree;
+ int is_htree:1;
+ int clear_htree:1;
};
static int rewrite_dir_block(ext2_filsys fs,
@@ -527,8 +531,13 @@ static int rewrite_dir_block(ext2_filsys fs,
if (ctx->errcode)
return BLOCK_ABORT;
- /* if htree node... */
- if (ctx->is_htree)
+ /*
+ * if htree node... Note that if we are clearing htree structures from
+ * the directory, we treat the htree internal block as an ordinary leaf.
+ * The code below will do the right thing and make space for checksum
+ * there.
+ */
+ if (ctx->is_htree && !ctx->clear_htree)
ext2fs_get_dx_countlimit(fs, (struct ext2_dir_entry *)ctx->buf,
&dcl, &dcl_offset);
if (dcl) {
@@ -657,7 +666,8 @@ static errcode_t rewrite_directory(ext2_filsys fs, ext2_ino_t dir,
if (retval)
return retval;
- ctx.is_htree = (inode->i_flags & EXT2_INDEX_FL);
+ ctx.is_htree = !!(inode->i_flags & EXT2_INDEX_FL);
+ ctx.clear_htree = !ext2fs_has_feature_dir_index(fs->super);
ctx.dir = dir;
ctx.errcode = 0;
retval = ext2fs_block_iterate3(fs, dir, BLOCK_FLAG_READ_ONLY |
@@ -668,6 +678,13 @@ static errcode_t rewrite_directory(ext2_filsys fs, ext2_ino_t dir,
if (retval)
return retval;
+ if (ctx.is_htree && ctx.clear_htree) {
+ inode->i_flags &= ~EXT2_INDEX_FL;
+ retval = ext2fs_write_inode(fs, dir, inode);
+ if (retval)
+ return retval;
+ }
+
return ctx.errcode;
}
@@ -822,28 +839,67 @@ static void rewrite_one_inode(struct rewrite_context *ctx, ext2_ino_t ino,
fatal_err(retval, "while rewriting extended attribute");
}
-/*
- * Forcibly set checksums in all inodes.
- */
-static void rewrite_inodes(ext2_filsys fs)
+#define REWRITE_EA_FL 0x01 /* Rewrite EA inodes */
+#define REWRITE_DIR_FL 0x02 /* Rewrite directories */
+#define REWRITE_NONDIR_FL 0x04 /* Rewrite other inodes */
+#define REWRITE_ALL (REWRITE_EA_FL | REWRITE_DIR_FL | REWRITE_NONDIR_FL)
+
+static void rewrite_inodes_pass(struct rewrite_context *ctx, unsigned int flags)
{
ext2_inode_scan scan;
errcode_t retval;
ext2_ino_t ino;
struct ext2_inode *inode;
- int pass;
+ int rewrite;
+
+ retval = ext2fs_get_mem(ctx->inode_size, &inode);
+ if (retval)
+ fatal_err(retval, "while allocating memory");
+
+ retval = ext2fs_open_inode_scan(ctx->fs, 0, &scan);
+ if (retval)
+ fatal_err(retval, "while opening inode scan");
+
+ do {
+ retval = ext2fs_get_next_inode_full(scan, &ino, inode,
+ ctx->inode_size);
+ if (retval)
+ fatal_err(retval, "while getting next inode");
+ if (!ino)
+ break;
+
+ rewrite = 0;
+ if (inode->i_flags & EXT4_EA_INODE_FL) {
+ if (flags & REWRITE_EA_FL)
+ rewrite = 1;
+ } else if (LINUX_S_ISDIR(inode->i_mode)) {
+ if (flags & REWRITE_DIR_FL)
+ rewrite = 1;
+ } else {
+ if (flags & REWRITE_NONDIR_FL)
+ rewrite = 1;
+ }
+ if (rewrite)
+ rewrite_one_inode(ctx, ino, inode);
+ } while (ino);
+ ext2fs_close_inode_scan(scan);
+ ext2fs_free_mem(&inode);
+}
+
+/*
+ * Forcibly rewrite checksums in inodes specified by 'flags'
+ */
+static void rewrite_inodes(ext2_filsys fs, unsigned int flags)
+{
struct rewrite_context ctx = {
.fs = fs,
.inode_size = EXT2_INODE_SIZE(fs->super),
};
+ errcode_t retval;
if (fs->super->s_creator_os == EXT2_OS_HURD)
return;
- retval = ext2fs_get_mem(ctx.inode_size, &inode);
- if (retval)
- fatal_err(retval, "while allocating memory");
-
retval = ext2fs_get_memzero(ctx.inode_size, &ctx.zero_inode);
if (retval)
fatal_err(retval, "while allocating memory");
@@ -862,39 +918,16 @@ static void rewrite_inodes(ext2_filsys fs)
*
* pass 2: go over other inodes to update their checksums.
*/
- if (ext2fs_has_feature_ea_inode(fs->super))
- pass = 1;
- else
- pass = 2;
- for (;pass <= 2; pass++) {
- retval = ext2fs_open_inode_scan(fs, 0, &scan);
- if (retval)
- fatal_err(retval, "while opening inode scan");
-
- do {
- retval = ext2fs_get_next_inode_full(scan, &ino, inode,
- ctx.inode_size);
- if (retval)
- fatal_err(retval, "while getting next inode");
- if (!ino)
- break;
-
- if (((pass == 1) &&
- (inode->i_flags & EXT4_EA_INODE_FL)) ||
- ((pass == 2) &&
- !(inode->i_flags & EXT4_EA_INODE_FL)))
- rewrite_one_inode(&ctx, ino, inode);
- } while (ino);
-
- ext2fs_close_inode_scan(scan);
- }
+ if (ext2fs_has_feature_ea_inode(fs->super) && (flags & REWRITE_EA_FL))
+ rewrite_inodes_pass(&ctx, REWRITE_EA_FL);
+ flags &= ~REWRITE_EA_FL;
+ rewrite_inodes_pass(&ctx, flags);
ext2fs_free_mem(&ctx.zero_inode);
ext2fs_free_mem(&ctx.ea_buf);
- ext2fs_free_mem(&inode);
}
-static void rewrite_metadata_checksums(ext2_filsys fs)
+static void rewrite_metadata_checksums(ext2_filsys fs, unsigned int flags)
{
errcode_t retval;
dgrp_t i;
@@ -906,7 +939,7 @@ static void rewrite_metadata_checksums(ext2_filsys fs)
retval = ext2fs_read_bitmaps(fs);
if (retval)
fatal_err(retval, "while reading bitmaps");
- rewrite_inodes(fs);
+ rewrite_inodes(fs, flags);
ext2fs_mark_ib_dirty(fs);
ext2fs_mark_bb_dirty(fs);
ext2fs_mmp_update2(fs, 1);
@@ -1205,6 +1238,24 @@ mmp_error:
uuid_generate((unsigned char *) sb->s_hash_seed);
}
+ if (FEATURE_OFF(E2P_FEATURE_COMPAT, EXT2_FEATURE_COMPAT_DIR_INDEX) &&
+ ext2fs_has_feature_metadata_csum(sb)) {
+ if (check_fsck_needed(fs,
+ _("Disabling directory index on filesystem with "
+ "checksums could take some time.")))
+ return 1;
+ if (mount_flags & EXT2_MF_MOUNTED) {
+ fputs(_("Cannot disable dir_index on a mounted "
+ "filesystem!\n"), stderr);
+ exit(1);
+ }
+ /*
+ * Clearing dir_index on checksummed filesystem requires
+ * rewriting all directories to update checksums.
+ */
+ rewrite_checksums |= REWRITE_DIR_FL;
+ }
+
if (FEATURE_OFF(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_FLEX_BG)) {
if (ext2fs_check_desc(fs)) {
fputs(_("Clearing the flex_bg flag would "
@@ -1228,12 +1279,13 @@ mmp_error:
if (FEATURE_ON(E2P_FEATURE_RO_INCOMPAT,
EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) {
- check_fsck_needed(fs,
- _("Enabling checksums could take some time."));
+ if (check_fsck_needed(fs,
+ _("Enabling checksums could take some time.")))
+ return 1;
if (mount_flags & EXT2_MF_MOUNTED) {
fputs(_("Cannot enable metadata_csum on a mounted "
"filesystem!\n"), stderr);
- exit(1);
+ return 1;
}
if (!ext2fs_has_feature_extents(fs->super))
printf("%s",
@@ -1248,7 +1300,7 @@ mmp_error:
"The larger fields afforded by this feature "
"enable full-strength checksumming. "
"Run resize2fs -b to rectify.\n"));
- rewrite_checksums = 1;
+ rewrite_checksums = REWRITE_ALL;
/* metadata_csum supersedes uninit_bg */
ext2fs_clear_feature_gdt_csum(fs->super);
@@ -1269,14 +1321,15 @@ mmp_error:
EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) {
__u32 test_features[3];
- check_fsck_needed(fs,
- _("Disabling checksums could take some time."));
+ if (check_fsck_needed(fs,
+ _("Disabling checksums could take some time.")))
+ return 1;
if (mount_flags & EXT2_MF_MOUNTED) {
fputs(_("Cannot disable metadata_csum on a mounted "
"filesystem!\n"), stderr);
- exit(1);
+ return 1;
}
- rewrite_checksums = 1;
+ rewrite_checksums = REWRITE_ALL;
/* Enable uninit_bg unless the user expressly turned it off */
memcpy(test_features, old_features, sizeof(test_features));
@@ -1312,6 +1365,12 @@ mmp_error:
if (FEATURE_ON(E2P_FEATURE_RO_INCOMPAT,
EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
+ if (mount_flags & EXT2_MF_MOUNTED) {
+ fputs(_("Cannot enable uninit_bg on a mounted "
+ "filesystem!\n"), stderr);
+ return 1;
+ }
+
/* Do not enable uninit_bg when metadata_csum enabled */
if (ext2fs_has_feature_metadata_csum(fs->super))
ext2fs_clear_feature_gdt_csum(fs->super);
@@ -1321,6 +1380,12 @@ mmp_error:
if (FEATURE_OFF(E2P_FEATURE_RO_INCOMPAT,
EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
+ if (mount_flags & EXT2_MF_MOUNTED) {
+ fputs(_("Cannot disable uninit_bg on a mounted "
+ "filesystem!\n"), stderr);
+ return 1;
+ }
+
err = disable_uninit_bg(fs,
EXT4_FEATURE_RO_COMPAT_GDT_CSUM);
if (err)
@@ -1337,7 +1402,7 @@ mmp_error:
if (mount_flags & EXT2_MF_MOUNTED) {
fprintf(stderr, _("Cannot enable 64-bit mode "
"while mounted!\n"));
- exit(1);
+ return 1;
}
ext2fs_clear_feature_64bit(sb);
feature_64bit = 1;
@@ -1347,7 +1412,7 @@ mmp_error:
if (mount_flags & EXT2_MF_MOUNTED) {
fprintf(stderr, _("Cannot disable 64-bit mode "
"while mounted!\n"));
- exit(1);
+ return 1;
}
ext2fs_set_feature_64bit(sb);
feature_64bit = -1;
@@ -1377,7 +1442,7 @@ mmp_error:
if (fs->super->s_inode_size == EXT2_GOOD_OLD_INODE_SIZE) {
fprintf(stderr, _("Cannot enable project feature; "
"inode size too small.\n"));
- exit(1);
+ return 1;
}
Q_flag = 1;
quota_enable[PRJQUOTA] = QOPT_ENABLE;
@@ -1449,9 +1514,10 @@ mmp_error:
stderr);
return 1;
}
- check_fsck_needed(fs, _("Recalculating checksums "
- "could take some time."));
- rewrite_checksums = 1;
+ if (check_fsck_needed(fs, _("Recalculating checksums "
+ "could take some time.")))
+ return 1;
+ rewrite_checksums = REWRITE_ALL;
}
}
@@ -1485,7 +1551,7 @@ mmp_error:
*/
static int add_journal(ext2_filsys fs)
{
- unsigned long journal_blocks;
+ struct ext2fs_journal_params jparams;
errcode_t retval;
ext2_filsys jfs;
io_manager io_ptr;
@@ -1531,13 +1597,13 @@ static int add_journal(ext2_filsys fs)
} else if (journal_size) {
fputs(_("Creating journal inode: "), stdout);
fflush(stdout);
- journal_blocks = figure_journal_size(journal_size, fs);
+ figure_journal_size(&jparams, journal_size, journal_fc_size, fs);
if (journal_location_string)
journal_location =
parse_num_blocks2(journal_location_string,
fs->super->s_log_block_size);
- retval = ext2fs_add_journal_inode2(fs, journal_blocks,
+ retval = ext2fs_add_journal_inode3(fs, &jparams,
journal_location,
journal_flags);
if (retval) {
@@ -1563,7 +1629,7 @@ err:
return 1;
}
-static void handle_quota_options(ext2_filsys fs)
+static int handle_quota_options(ext2_filsys fs)
{
errcode_t retval;
quota_ctx_t qctx;
@@ -1577,13 +1643,13 @@ static void handle_quota_options(ext2_filsys fs)
break;
if (qtype == MAXQUOTAS)
/* Nothing to do. */
- return;
+ return 0;
if (quota_enable[PRJQUOTA] == QOPT_ENABLE &&
fs->super->s_inode_size == EXT2_GOOD_OLD_INODE_SIZE) {
fprintf(stderr, _("Cannot enable project quota; "
"inode size too small.\n"));
- exit(1);
+ return 1;
}
for (qtype = 0; qtype < MAXQUOTAS; qtype++) {
@@ -1595,7 +1661,7 @@ static void handle_quota_options(ext2_filsys fs)
if (retval) {
com_err(program_name, retval,
_("while initializing quota context in support library"));
- exit(1);
+ return 1;
}
if (qtype_bits)
@@ -1611,7 +1677,9 @@ static void handle_quota_options(ext2_filsys fs)
com_err(program_name, retval,
_("while updating quota limits (%d)"),
qtype);
- exit(1);
+ quota_errout:
+ quota_release_context(&qctx);
+ return 1;
}
}
retval = quota_write_inode(qctx, 1 << qtype);
@@ -1619,7 +1687,7 @@ static void handle_quota_options(ext2_filsys fs)
com_err(program_name, retval,
_("while writing quota file (%d)"),
qtype);
- exit(1);
+ goto quota_errout;
}
/* Enable Quota feature if one of quota enabled */
if (!ext2fs_has_feature_quota(fs->super)) {
@@ -1637,7 +1705,7 @@ static void handle_quota_options(ext2_filsys fs)
com_err(program_name, retval,
_("while removing quota file (%d)"),
qtype);
- exit(1);
+ goto quota_errout;
}
if (qtype == PRJQUOTA) {
ext2fs_clear_feature_project(fs->super);
@@ -1660,7 +1728,7 @@ static void handle_quota_options(ext2_filsys fs)
}
if (need_dirty)
ext2fs_mark_super_dirty(fs);
- return;
+ return 0;
}
static int option_handle_function(char *token)
@@ -1705,7 +1773,7 @@ static void parse_e2label_options(int argc, char ** argv)
argv[1]);
exit(1);
}
- open_flag = EXT2_FLAG_JOURNAL_DEV_OK;
+ open_flag = EXT2_FLAG_JOURNAL_DEV_OK | EXT2_FLAG_SUPER_ONLY;
if (argc == 3) {
open_flag |= EXT2_FLAG_RW;
L_flag = 1;
@@ -1758,8 +1826,15 @@ static void parse_tune2fs_options(int argc, char **argv)
while ((c = getopt(argc, argv, optstring)) != EOF)
switch (c) {
case 'c':
+ open_flag = EXT2_FLAG_RW;
+ c_flag = 1;
+ if (strcmp(optarg, "random") == 0) {
+ max_mount_count = 65536;
+ break;
+ }
max_mount_count = strtol(optarg, &tmp, 0);
- if (*tmp || max_mount_count > 16000) {
+ if (*tmp || max_mount_count > 16000 ||
+ max_mount_count < -16000) {
com_err(program_name, 0,
_("bad mounts count - %s"),
optarg);
@@ -1767,8 +1842,6 @@ static void parse_tune2fs_options(int argc, char **argv)
}
if (max_mount_count == 0)
max_mount_count = -1;
- c_flag = 1;
- open_flag = EXT2_FLAG_RW;
break;
case 'C':
mount_count = strtoul(optarg, &tmp, 0);
@@ -2604,63 +2677,6 @@ err_out:
return retval;
}
-static errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs)
-{
- blk64_t blk;
- ext2_ino_t ino;
- unsigned int group = 0;
- unsigned int count = 0;
- int total_free = 0;
- int group_free = 0;
-
- /*
- * First calculate the block statistics
- */
- for (blk = fs->super->s_first_data_block;
- blk < ext2fs_blocks_count(fs->super); blk++) {
- if (!ext2fs_fast_test_block_bitmap2(fs->block_map, blk)) {
- group_free++;
- total_free++;
- }
- count++;
- if ((count == fs->super->s_blocks_per_group) ||
- (blk == ext2fs_blocks_count(fs->super)-1)) {
- ext2fs_bg_free_blocks_count_set(fs, group++,
- group_free);
- count = 0;
- group_free = 0;
- }
- }
- total_free = EXT2FS_C2B(fs, total_free);
- ext2fs_free_blocks_count_set(fs->super, total_free);
-
- /*
- * Next, calculate the inode statistics
- */
- group_free = 0;
- total_free = 0;
- count = 0;
- group = 0;
-
- /* Protect loop from wrap-around if s_inodes_count maxed */
- for (ino = 1; ino <= fs->super->s_inodes_count && ino > 0; ino++) {
- if (!ext2fs_fast_test_inode_bitmap2(fs->inode_map, ino)) {
- group_free++;
- total_free++;
- }
- count++;
- if ((count == fs->super->s_inodes_per_group) ||
- (ino == fs->super->s_inodes_count)) {
- ext2fs_bg_free_inodes_count_set(fs, group++,
- group_free);
- count = 0;
- group_free = 0;
- }
- }
- fs->super->s_free_inodes_count = total_free;
- ext2fs_mark_super_dirty(fs);
- return 0;
-}
#define list_for_each_safe(pos, pnext, head) \
for (pos = (head)->next, pnext = pos->next; pos != (head); \
@@ -2739,7 +2755,7 @@ static int resize_inode(ext2_filsys fs, unsigned long new_size)
if (retval)
goto err_out_undo;
- ext2fs_calculate_summary_stats(fs);
+ ext2fs_calculate_summary_stats(fs, 1 /* super only */);
fs->super->s_state |= EXT2_VALID_FS;
/* mark super block and block bitmap as dirty */
@@ -2877,7 +2893,7 @@ fs_update_journal_user(struct ext2_super_block *sb, __u8 old_uuid[UUID_SIZE])
jsb = (journal_superblock_t *) buf;
/* Find the filesystem UUID */
nr_users = ntohl(jsb->s_nr_users);
- if (nr_users > JFS_USERS_MAX) {
+ if (nr_users > JBD2_USERS_MAX) {
fprintf(stderr, _("Journal superblock is corrupted, nr_users\n"
"is too high (%d).\n"), nr_users);
return EXT2_ET_CORRUPT_JOURNAL_SB;
@@ -2951,7 +2967,8 @@ retry_open:
if ((open_flag & EXT2_FLAG_RW) == 0 || f_flag)
open_flag |= EXT2_FLAG_SKIP_MMP;
- open_flag |= EXT2_FLAG_64BITS | EXT2_FLAG_JOURNAL_DEV_OK;
+ open_flag |= EXT2_FLAG_64BITS | EXT2_FLAG_THREADS |
+ EXT2_FLAG_JOURNAL_DEV_OK;
/* keep the filesystem struct around to dump MMP data */
open_flag |= EXT2_FLAG_NOFREE_ON_ERROR;
@@ -3014,8 +3031,10 @@ retry_open:
rc = 1;
goto closefs;
}
- check_fsck_needed(fs,
+ rc = check_fsck_needed(fs,
_("Resizing inodes could take some time."));
+ if (rc)
+ goto closefs;
/*
* If inode resize is requested use the
* Undo I/O manager
@@ -3042,8 +3061,7 @@ retry_open:
if (print_label) {
/* For e2label emulation */
- printf("%.*s\n", (int) sizeof(sb->s_volume_name),
- sb->s_volume_name);
+ printf("%.*s\n", EXT2_LEN_STR(sb->s_volume_name));
remove_error_table(&et_ext2_error_table);
goto closefs;
}
@@ -3072,16 +3090,16 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
/* Recover the journal if possible. */
if ((open_flag & EXT2_FLAG_RW) && !(mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) &&
ext2fs_has_feature_journal_needs_recovery(fs->super)) {
- errcode_t err;
-
printf(_("Recovering journal.\n"));
- err = ext2fs_run_ext3_journal(&fs);
- if (err) {
- com_err("tune2fs", err, "while recovering journal.\n");
+ retval = ext2fs_run_ext3_journal(&fs);
+ if (retval) {
+ com_err("tune2fs", retval,
+ "while recovering journal.\n");
printf(_("Please run e2fsck -fy %s.\n"), argv[1]);
if (fs)
ext2fs_close_free(&fs);
- exit(1);
+ rc = 1;
+ goto closefs;
}
sb = fs->super;
}
@@ -3091,6 +3109,9 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
fs->flags |= EXT2_FLAG_SUPER_ONLY;
if (c_flag) {
+ if (max_mount_count == 65536)
+ max_mount_count = EXT2_DFL_MAX_MNT_COUNT +
+ (random() % EXT2_DFL_MAX_MNT_COUNT);
sb->s_max_mnt_count = max_mount_count;
ext2fs_mark_super_dirty(fs);
printf(_("Setting maximal mount count to %d\n"),
@@ -3129,20 +3150,21 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
ext2fs_blocks_count(sb) / 100.0);
ext2fs_mark_super_dirty(fs);
printf (_("Setting reserved blocks percentage to %g%% (%llu blocks)\n"),
- reserved_ratio, ext2fs_r_blocks_count(sb));
+ reserved_ratio,
+ (unsigned long long) ext2fs_r_blocks_count(sb));
}
if (r_flag) {
if (reserved_blocks > ext2fs_blocks_count(sb)/2) {
com_err(program_name, 0,
_("reserved blocks count is too big (%llu)"),
- reserved_blocks);
+ (unsigned long long) reserved_blocks);
rc = 1;
goto closefs;
}
ext2fs_r_blocks_count_set(sb, reserved_blocks);
ext2fs_mark_super_dirty(fs);
printf(_("Setting reserved blocks count to %llu\n"),
- reserved_blocks);
+ (unsigned long long) reserved_blocks);
}
if (s_flag == 1) {
if (ext2fs_has_feature_sparse_super(sb)) {
@@ -3185,13 +3207,13 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
fputs(_("Warning: label too long, truncating.\n"),
stderr);
memset(sb->s_volume_name, 0, sizeof(sb->s_volume_name));
- strncpy(sb->s_volume_name, new_label,
+ strncpy((char *)sb->s_volume_name, new_label,
sizeof(sb->s_volume_name));
ext2fs_mark_super_dirty(fs);
}
if (M_flag) {
memset(sb->s_last_mounted, 0, sizeof(sb->s_last_mounted));
- strncpy(sb->s_last_mounted, new_last_mounted,
+ strncpy((char *)sb->s_last_mounted, new_last_mounted,
sizeof(sb->s_last_mounted));
ext2fs_mark_super_dirty(fs);
}
@@ -3233,7 +3255,9 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
rc = 1;
goto closefs;
}
- handle_quota_options(fs);
+ rc = handle_quota_options(fs);
+ if (rc)
+ goto closefs;
}
if (U_flag) {
@@ -3242,13 +3266,22 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
char buf[SUPERBLOCK_SIZE] __attribute__ ((aligned(8)));
__u8 old_uuid[UUID_SIZE];
+ if (ext2fs_has_feature_stable_inodes(fs->super)) {
+ fputs(_("Cannot change the UUID of this filesystem "
+ "because it has the stable_inodes feature "
+ "flag.\n"), stderr);
+ exit(1);
+ }
+
if (!ext2fs_has_feature_csum_seed(fs->super) &&
(ext2fs_has_feature_metadata_csum(fs->super) ||
ext2fs_has_feature_ea_inode(fs->super))) {
- check_fsck_needed(fs,
+ rc = check_fsck_needed(fs,
_("Setting the UUID on this "
"filesystem could take some time."));
- rewrite_checksums = 1;
+ if (rc)
+ goto closefs;
+ rewrite_checksums = REWRITE_ALL;
}
if (ext2fs_has_group_desc_csum(fs)) {
@@ -3269,7 +3302,8 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
"metadata_csum_seed' and re-run this "
"command.\n"), stderr);
try_confirm_csum_seed_support();
- exit(1);
+ rc = 1;
+ goto closefs;
}
/*
@@ -3359,7 +3393,7 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
if (retval == 0) {
printf(_("Setting inode size %lu\n"),
new_inode_size);
- rewrite_checksums = 1;
+ rewrite_checksums = REWRITE_ALL;
} else {
printf("%s", _("Failed to change inode size\n"));
rc = 1;
@@ -3368,7 +3402,7 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
}
if (rewrite_checksums)
- rewrite_metadata_checksums(fs);
+ rewrite_metadata_checksums(fs, rewrite_checksums);
if (l_flag)
list_super(sb);
diff --git a/misc/util.c b/misc/util.c
index 77991589..48e623dc 100644
--- a/misc/util.c
+++ b/misc/util.c
@@ -200,6 +200,14 @@ void parse_journal_opts(const char *opts)
journal_size = strtoul(arg, &p, 0);
if (*p)
journal_usage++;
+ } else if (strcmp(token, "fast_commit_size") == 0) {
+ if (!arg) {
+ journal_usage++;
+ continue;
+ }
+ journal_fc_size = strtoul(arg, &p, 0);
+ if (*p)
+ journal_usage++;
} else if (!strcmp(token, "location")) {
if (!arg) {
journal_usage++;
@@ -229,42 +237,63 @@ void parse_journal_opts(const char *opts)
free(buf);
}
+static inline int jsize_to_blks(ext2_filsys fs, int size)
+{
+ return (size * 1024) / (fs->blocksize / 1024);
+}
+
+/* Fast commit size is in KBs */
+static inline int fcsize_to_blks(ext2_filsys fs, int size)
+{
+ return (size * 1024) / (fs->blocksize);
+}
+
/*
* Determine the number of journal blocks to use, either via
* user-specified # of megabytes, or via some intelligently selected
* defaults.
*
- * Find a reasonable journal file size (in blocks) given the number of blocks
- * in the filesystem. For very small filesystems, it is not reasonable to
- * have a journal that fills more than half of the filesystem.
+ * Find a reasonable journal file size (in blocks) given the number of blocks in
+ * the filesystem. For very small filesystems, it is not reasonable to have a
+ * journal that fills more than half of the filesystem.
*/
-unsigned int figure_journal_size(int size, ext2_filsys fs)
+void figure_journal_size(struct ext2fs_journal_params *jparams,
+ int requested_j_size, int requested_fc_size, ext2_filsys fs)
{
- int j_blocks;
+ int total_blocks, ret;
- j_blocks = ext2fs_default_journal_size(ext2fs_blocks_count(fs->super));
- if (j_blocks < 0) {
+ ret = ext2fs_get_journal_params(jparams, fs);
+ if (ret) {
fputs(_("\nFilesystem too small for a journal\n"), stderr);
- return 0;
+ return;
}
- if (size > 0) {
- j_blocks = size * 1024 / (fs->blocksize / 1024);
- if (j_blocks < 1024 || j_blocks > 10240000) {
- fprintf(stderr, _("\nThe requested journal "
+ if (requested_j_size > 0 ||
+ (ext2fs_has_feature_fast_commit(fs->super) && requested_fc_size > 0)) {
+ if (requested_j_size > 0)
+ jparams->num_journal_blocks =
+ jsize_to_blks(fs, requested_j_size);
+ if (ext2fs_has_feature_fast_commit(fs->super) &&
+ requested_fc_size > 0)
+ jparams->num_fc_blocks =
+ fcsize_to_blks(fs, requested_fc_size);
+ else if (!ext2fs_has_feature_fast_commit(fs->super))
+ jparams->num_fc_blocks = 0;
+ total_blocks = jparams->num_journal_blocks + jparams->num_fc_blocks;
+ if (total_blocks < 1024 || total_blocks > 10240000) {
+ fprintf(stderr, _("\nThe total requested journal "
"size is %d blocks; it must be\n"
"between 1024 and 10240000 blocks. "
"Aborting.\n"),
- j_blocks);
+ total_blocks);
exit(1);
}
- if ((unsigned) j_blocks > ext2fs_free_blocks_count(fs->super) / 2) {
- fputs(_("\nJournal size too big for filesystem.\n"),
+ if ((unsigned int) total_blocks > ext2fs_free_blocks_count(fs->super) / 2) {
+ fputs(_("\nTotal journal size too big for filesystem.\n"),
stderr);
exit(1);
}
}
- return j_blocks;
}
void print_check_message(int mnt, unsigned int check)
@@ -288,7 +317,8 @@ void dump_mmp_msg(struct mmp_struct *mmp, const char *msg)
if (mmp) {
time_t t = mmp->mmp_time;
- printf("MMP error info: last update: %s node: %s device: %s\n",
- ctime(&t), mmp->mmp_nodename, mmp->mmp_bdevname);
+ printf("MMP error info: node: %.*s, device: %.*s, updated: %s",
+ EXT2_LEN_STR(mmp->mmp_nodename),
+ EXT2_LEN_STR(mmp->mmp_bdevname), ctime(&t));
}
}
diff --git a/misc/util.h b/misc/util.h
index 49b4b9c1..ccdc7fbc 100644
--- a/misc/util.h
+++ b/misc/util.h
@@ -11,6 +11,7 @@
*/
extern int journal_size;
+extern int journal_fc_size;
extern int journal_flags;
extern char *journal_device;
extern char *journal_location_string;
@@ -22,6 +23,7 @@ extern char *get_progname(char *argv_zero);
extern void proceed_question(int delay);
extern void parse_journal_opts(const char *opts);
extern void check_mount(const char *device, int force, const char *type);
-extern unsigned int figure_journal_size(int size, ext2_filsys fs);
+extern void figure_journal_size(struct ext2fs_journal_params *jparams,
+ int requested_j_size, int requested_fc_size, ext2_filsys fs);
extern void print_check_message(int, unsigned int);
extern void dump_mmp_msg(struct mmp_struct *mmp, const char *msg);
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 67e1f2f4..f21852fe 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -1,18 +1,19 @@
# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
+# 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.
#
-# Origin: gettext-0.14
+# Origin: gettext-0.19.8
+GETTEXT_MACRO_VERSION = 0.19
PACKAGE = @PACKAGE@
VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+SED = @SED@
SHELL = /bin/sh
@SET_MAKE@
@@ -24,16 +25,41 @@ prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
datadir = @datadir@
-localedir = $(datadir)/locale
+localedir = @localedir@
gettextsrcdir = $(datadir)/gettext/po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
-mkinstalldirs = @MKDIR_P@
-GMSGFMT = @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = @XGETTEXT@
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+# When building gettext-tools, we prefer to use the built programs
+# rather than installed programs. However, we can't do that when we
+# are cross compiling.
+CROSS_COMPILING = @CROSS_COMPILING@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
MSGMERGE = msgmerge
MSGMERGE_UPDATE = @MSGMERGE@ --update
MSGINIT = msginit
@@ -46,7 +72,7 @@ UPDATEPOFILES = @UPDATEPOFILES@
DUMMYPOFILES = @DUMMYPOFILES@
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
$(POFILES) $(GMOFILES) \
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
@@ -54,20 +80,30 @@ POTFILES = \
CATALOGS = @CATALOGS@
+POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot
+POFILESDEPS_yes = $(POFILESDEPS_)
+POFILESDEPS_no =
+POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT))
+
+DISTFILESDEPS_ = update-po
+DISTFILESDEPS_yes = $(DISTFILESDEPS_)
+DISTFILESDEPS_no =
+DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
+
# Makevars gets inserted here. (Don't remove this line!)
.SUFFIXES:
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
.po.mo:
- $(E) "$(MSGFMT) -c -o $@ $<"
+ $(E) "$(MSGFMT) -c -o $@ $<"; \
$(Q) $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
.po.gmo:
@lang=`echo $* | sed -e 's,.*/,,'`; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
.sin.sed:
sed -e '/^#/d' $< > t-$@
@@ -78,6 +114,22 @@ all: all-@USE_NLS@
all-yes: @MAINTAINER_CMT@stamp-po
all-no:
+all-static:
+depend:
+coverage.txt:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+CHECK_MACRO_VERSION = \
+ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+ exit 1; \
+ }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
# been loosely updated. Its purpose is that when a developer or translator
@@ -88,10 +140,14 @@ all-no:
# $(POFILES) has been designed to not touch files that don't need to be
# changed.
stamp-po: $(srcdir)/$(DOMAIN).pot
- test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
- @echo "touch stamp-po"
- @echo timestamp > stamp-poT
- @mv stamp-poT stamp-po
+ @$(CHECK_MACRO_VERSION)
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
# otherwise packages like GCC can not be built if only parts of the source
@@ -99,18 +155,65 @@ stamp-po: $(srcdir)/$(DOMAIN).pot
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+# The determination of whether the package xyz is a GNU one is based on the
+# heuristic whether some file in the top level directory mentions "GNU xyz".
+# If GNU 'find' is available, we avoid grepping through monster files.
$(DOMAIN).pot-update: $(srcdir)/POTFILES.in remove-potcdate.sed \
$(srcdir)/at-expand.pl
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --directory=$(top_builddir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)'
+ package_gnu="$(PACKAGE_GNU)"; \
+ test -n "$$package_gnu" || { \
+ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
+ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
+ -size -10000000c -exec grep 'GNU @PACKAGE@' \
+ /dev/null '{}' ';' 2>/dev/null; \
+ else \
+ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+ fi; \
+ } | grep -v 'libtool:' >/dev/null; then \
+ package_gnu=yes; \
+ else \
+ package_gnu=no; \
+ fi; \
+ }; \
+ if test "$$package_gnu" = "yes"; then \
+ package_prefix='GNU '; \
+ else \
+ package_prefix=''; \
+ fi; \
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --directory=$(top_builddir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ ;; \
+ *) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --directory=$(top_builddir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --package-name="$${package_prefix}@PACKAGE@" \
+ --package-version='@VERSION@' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ ;; \
+ esac
perl $(srcdir)/at-expand.pl < $(DOMAIN).po > $(DOMAIN).po.new
mv $(DOMAIN).po $(DOMAIN).po.bak
mv $(DOMAIN).po.new $(DOMAIN).po
test ! -f $(DOMAIN).po || { \
+ if test -f $(srcdir)/$(DOMAIN).pot-header; then \
+ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \
+ cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \
+ rm -f $(DOMAIN).1po; \
+ fi; \
if test -f $(srcdir)/$(DOMAIN).pot; then \
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
@@ -133,12 +236,20 @@ $(srcdir)/$(DOMAIN).pot:
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
+$(POFILES): $(POFILESDEPS)
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
if test -f "$(srcdir)/$${lang}.po"; then \
+ test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) \
+ && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+ esac; \
+ }; \
else \
$(MAKE) $${lang}.po-create; \
fi
@@ -148,7 +259,7 @@ install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
for file in $(DISTFILES.common) Makevars.template; do \
$(INSTALL_DATA) $(srcdir)/$$file \
$(DESTDIR)$(gettextsrcdir)/$$file; \
@@ -161,13 +272,12 @@ install-data: install-data-@USE_NLS@
fi
install-data-no: all
install-data-yes: all
- $(mkinstalldirs) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
@@ -207,19 +317,18 @@ installdirs: installdirs-exec installdirs-data
installdirs-exec:
installdirs-data: installdirs-data-@USE_NLS@
if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
else \
: ; \
fi
installdirs-data-no:
installdirs-data-yes:
- $(mkinstalldirs) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkinstalldirs) $(DESTDIR)$$dir; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
if test -n "$$lc"; then \
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
@@ -274,15 +383,13 @@ fullcheck check: all
info dvi ps pdf html tags TAGS ctags CTAGS ID:
mostlyclean:
- rm -f remove-potcdate.sed
+ rm -f remove-potcdate.sed
rm -f stamp-poT
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
rm -f $(DOMAIN).po.bak
rm -fr *.o
-coverage.txt::
-
-clean:: mostlyclean
+clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo
@@ -294,14 +401,17 @@ maintainer-clean: distclean
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir:
- $(MAKE) update-po
+ test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
-dist2: $(DISTFILES)
+dist2: stamp-po $(DISTFILES)
dists="$(DISTFILES)"; \
if test "$(PACKAGE)" = "gettext-tools"; then \
dists="$$dists Makevars.template"; \
fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
if test -f $(srcdir)/ChangeLog; then \
dists="$$dists ChangeLog"; \
fi; \
@@ -313,9 +423,9 @@ dist2: $(DISTFILES)
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
for file in $$dists; do \
if test -f $$file; then \
- cp -p $$file $(distdir); \
+ cp -p $$file $(distdir) || exit 1; \
else \
- cp -p $(srcdir)/$$file $(distdir); \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
fi; \
done
@@ -335,13 +445,19 @@ update-po: Makefile
.nop.po-update:
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \
tmpdir=`pwd`; \
echo "$$lang:"; \
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
cd $(srcdir); \
- if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ *) \
+ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+ esac; \
+ }; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
@@ -362,10 +478,13 @@ $(DUMMYPOFILES):
update-gmo: Makefile $(GMOFILES)
@:
-Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@
+# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
+# because execution permission bits may not work on the current file system.
+# Use @SHELL@, which is the shell determined by autoconf for the use by its
+# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
- $(SHELL) ./config.status
+ && CONFIG_FILES=$(subdir)/$@.in @SHELL@ ./config.status po-directories
force:
diff --git a/po/Makevars b/po/Makevars
index cdd9d301..932a209c 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -39,3 +39,33 @@ MSGID_BUGS_ADDRESS = tytso@alum.mit.edu
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
+
+# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
+# context. Possible values are "yes" and "no". Set this to yes if the
+# package uses functions taking also a message context, like pgettext(), or
+# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
+USE_MSGCTXT = no
+
+# These options get passed to msgmerge.
+# Useful options are in particular:
+# --previous to keep previous msgids of translated messages,
+# --quiet to reduce the verbosity.
+MSGMERGE_OPTIONS =
+
+# These options get passed to msginit.
+# If you want to disable line wrapping when writing PO files, add
+# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
+# MSGINIT_OPTIONS.
+MSGINIT_OPTIONS =
+
+# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
+# has changed. Possible values are "yes" and "no". Set this to no if
+# the POT file is checked in the repository and the version control
+# program ignores timestamps.
+PO_DEPENDS_ON_POT = no
+
+# This tells whether or not to forcibly update $(DOMAIN).pot and
+# regenerate PO files on "make dist". Possible values are "yes" and
+# "no". Set this to no if the POT file and PO files are maintained
+# externally.
+DIST_DEPENDS_ON_UPDATE_PO = no
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d6b4f433..f5b5936e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,6 +5,7 @@ e2fsck/e2fsck.c
e2fsck/ea_refcount.c
e2fsck/ehandler.c
e2fsck/emptydir.c
+e2fsck/encrypted_files.c
e2fsck/extend.c
e2fsck/extents.c
e2fsck/flushb.c
diff --git a/po/Rules-quot b/po/Rules-quot
index 9c2a995e..baf65285 100644
--- a/po/Rules-quot
+++ b/po/Rules-quot
@@ -1,3 +1,4 @@
+# This file, Rules-quot, can be copied and used freely without restrictions.
# Special Makefile rules for English message catalogs with quotation marks.
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
@@ -14,13 +15,23 @@ en@boldquot.po-update: en@boldquot.po-update-en
.insert-header.po-update-en:
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
tmpdir=`pwd`; \
echo "$$lang:"; \
ll=`echo $$lang | sed -e 's/@.*//'`; \
LC_ALL=C; export LC_ALL; \
cd $(srcdir); \
- if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+ if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \
+ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \
+ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \
+ $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
+ ;; \
+ *) \
+ $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \
+ ;; \
+ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \
+ ; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
diff --git a/po/cs.gmo b/po/cs.gmo
index cbae9731..3a73e4ef 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 7fad882b..df473fa5 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the e2fsprogs package.
# Miloslav Trmac <mitr@volny.cz>, 2003.
# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
-# Petr Pisar <petr.pisar@atlas.cz>, 2016, 2017, 2018, 2019.
+# Petr Pisar <petr.pisar@atlas.cz>, 2016, 2017, 2018, 2019, 2021.
#
# %i, %b, %N in e2fsck/problem.c do not support positional ordering (%2$i).
# But they can be freely reordered because those are extracted from a context,
@@ -80,10 +80,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.45.3\n"
+"Project-Id-Version: e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-20 16:26+02:00\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-02 20:05+01:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"Language: cs\n"
@@ -109,9 +109,9 @@ msgstr "při čtení iuzlu špatných bloků"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "při pokusu otevřít %s"
@@ -134,7 +134,7 @@ msgstr "při aktualizaci iuzlu špatných bloků"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Varování: v iuzlu špatných bloků nalezen nepovolený blok %u. Vymazán.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "při uvolňování TDB souboru dir_info"
@@ -166,15 +166,15 @@ msgstr "Chyba při zápisu bloku %lu (%s) při %s. "
msgid "Error writing block %lu (%s). "
msgstr "Chyba při zápisu bloku %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "prázdné bloky adresářů"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "mapa prázdných adresářů"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Prázdný blok adresáře %u (#%d) v iuzlu %u\n"
@@ -184,12 +184,12 @@ msgstr "Prázdný blok adresáře %u (#%d) v iuzlu %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s název_souboru p_bloků velikost_bloku\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Neplatný počet bloků!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Nemohu alokovat vyrovnávací paměť bloku (velikost=%d)\n"
@@ -220,7 +220,7 @@ msgstr "Použití: %s [-F] [-I bloky_inode_bufferů] zařízení\n"
msgid "while opening %s for flushing"
msgstr "při otevírání %s pro synchronizaci"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "při pokusu synchronizovat %s"
@@ -257,7 +257,7 @@ msgstr "%s: nenalezen platný superblok žurnálu\n"
msgid "%s: journal too short\n"
msgstr "%s: žurnál příliš krátký\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: obnovuje se žurnál\n"
@@ -519,113 +519,113 @@ msgstr "neznámého druhu"
msgid "multiply claimed inode map"
msgstr "mapa několikrát alokovaných iuzlů"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "vnitřní chyba: nemohu najít dup_blk pro %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "vrácený z clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "Vnitřní chyba: nemohu najít záznam EA bloku pro %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "Vnitřní chyba: nemohu najít záznam EA iuzlu pro %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "při výpočtu hashe položky s e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "čtení adresářového bloku"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "získávání dalšího iuzlu z průzkumu"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "mapa používaných iuzlů"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "mapa iuzlů adresářů"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "mapa iuzlů obyčejných souborů"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "mapa používaných bloků"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "mapa bloků metadat"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "otevírání průzkumu iuzlů"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "získávání dalšího iuzlu z průzkumu"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Průchod 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "čtu nepřímé bloky iuzlu %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "mapa špatných iuzlů"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "iuzel v mapě špatných bloků"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "mapa imagic iuzlů"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "mapa několikrát alokovaných bloků"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "mapa bloků rozšířených atributů"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): očekáváno %6lu, obdrženo fyz. %6lu (bloků %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "bitmapa bloků"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "bitmapa iuzlů"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "tabulka iuzlů"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Průchod 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Nemohu pokračovat."
@@ -641,11 +641,11 @@ msgstr "Maximum paměti"
msgid "Pass 3"
msgstr "Průchod 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "bitmapa detekce cyklů iuzlů"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Průchod 4"
@@ -661,187 +661,195 @@ msgstr "check_inode_bitmap_checksum: Chyba při alokaci paměti"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: Chyba při alokaci paměti"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(žádná výzva)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Opravit"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Vymazat"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Přemístit"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Alokovat"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Zvětšit"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Připojit do /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Vytvořit"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Zachránit"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Useknout"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Vyčistit iuzel"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Přerušit"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Rozdělit"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Pokračovat"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Klonovat více krát alokované bloky"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Odstranit soubor"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Potlačit zprávy"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Odstranit odkaz"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Vymazat index HTree"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Znovu vytvořit"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Optimalizovat"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Vymazat příznak"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(ŽÁDNÝ)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "OPRAVENO"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "VYMAZÁNO"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "PŘEMÍSTĚNO"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "ALOKOVÁNO"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "ZVĚTŠENO"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "PŘIPOJENO"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "VYTVOŘENO"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "ZACHRÁNĚNO"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "USEKNUTO"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "INODE VYMAZÁNA"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "PŘERUŠENO"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "ROZDĚLENO"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "POKRAČUJI"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "VÍCE KRÁT ALOKOVANÉ BLOKU NAKLONOVÁNY"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "SOUBOR ODSTRANĚN"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "POTLAČENO"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "ODKAZ ODSTRANĚN"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "INDEX HTREE VYMAZÁN"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "BUDE ZNOVU VYTVOŘENO"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "BUDE SE OPTIMALIZOVAT"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "PŘÍZNAK VYMAZÁN"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "Bitmapa bloků pro skupinu %g není ve skupině. (blok %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "Bitmapa iuzlů pro skupinu %g není ve skupině. (blok %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -858,7 +866,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -883,7 +891,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -896,7 +904,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -907,18 +915,18 @@ msgstr ""
"od velikosti bloku.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "V superbloku blocks_per_group = %b, mělo by být %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "V superbloku first_data_block = %b, mělo by být %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -926,7 +934,7 @@ msgstr ""
"Systém souborů neměl UUID; generuji je.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -945,48 +953,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "V superbloku nalezeno poškození. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Chyba při zjišťování velikosti fyzického zařízení: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "Počet iuzlů v superbloku je %i, měl by být %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Hurd nepodporuje vlastnost filetype.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "Superblok má neplatný žurnál (iuzel %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Externí žurnál používá více systémů souborů (nepodporováno).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Nemohu nalézt externí žurnál\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "Externí žurnál má špatný superblok\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Externí žurnál nepodporuje tento systém souborů\n"
@@ -994,7 +1002,7 @@ msgstr "Externí žurnál nepodporuje tento systém souborů\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -1005,80 +1013,80 @@ msgstr ""
"Je také možné, že superblok žurnálu je poškozen.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "Superblok žurnálu je poškozen.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "Příznak superbloku has_journal (má_žurnál) není nastaven, avšak žurnál je přítomen.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "Superblok má nastaven příznak needs_recovery (potřebuje_obnovit), avšak žádný žurnál neexistuje.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "Příznak superbloku needs_recovery (potřebuje_obnovit) není nastaven, avšak žurnál obsahuje data.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Vymazat žurnál"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "Systém souborů má příznak(y) vlastností nastaveny, ačkoliv se jedná o revizi 0. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "%s osiřelý iuzel %i (uid=%Iu, gid=%Ig, práva=%Im, velikost=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "Neplatný %B (%b) nalezen v osiřelém iuzlu %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Již vymazaný %B (%b) nalezen v osiřelém iuzlu %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "V superbloku neplatný osiřelý iuzel %i.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "Neplatný iuzel %i v seznamu osiřelých iuzlů.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "Superblok žurnálu má nastaven příznak neznámé vlastnosti „jen pro čtení“.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "Superblok žurnálu má nastaven příznak neznámé vlastnosti „nekompatibilní“.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "Verze žurnálu nepodporována tímto e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1089,7 +1097,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1101,7 +1109,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1112,18 +1120,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Přesto spustit žurnál"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "Příznak obnovení není nastaven v záložním superbloku, takže přesto spouštím žurnál.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1133,7 +1141,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1142,18 +1150,18 @@ msgstr ""
"ale s_reserved_gdt_blocks je %N, ačkoliv by mělo být nula."
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_inode není zapnuto, avšak iuzel pro měnění velikosti není nula."
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "Iuzel na měnění velikosti není platný. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1163,7 +1171,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1172,14 +1180,14 @@ msgstr ""
"\tnyní = %T) leží v budoucnosti.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "Nápověda superbloku pro externí superblok by měla být %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1188,39 +1196,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "Kontrolní součet deskriptoru skupiny %g je %04x, měl by být %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "Deskriptor skupiny %g označen jako neinicializovaný bez sady vlastností.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "Deskriptor skupiny %g má neplatný počet nepoužitých bloků %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "Poslední bitmapa bloků skupiny není inicializována. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Transakce žurnálu %i byla poškozena, přehrání bylo zrušeno.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Příznak test_fs je nastaven (a ext4 je dostupný). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1231,7 +1239,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1240,103 +1248,103 @@ msgstr ""
"\t(rozdíl menší než den, pravděpodobně jsou chybně nastaveny hardwarové hodiny)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Jeden nebo více kontrolních součtů deskriptoru skupiny bloků je chybných. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Nastavuje se počet volných iuzlů na %j (byl %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Nastavuje se počet volných bloků na %c (byl %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Iuzel %i kvóty %U (%Q) se označuje jako skrytý.\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "Superblok má špatný blok MMP. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "Superblok má neplatná čísla MMP. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "metadata_csum superbloku nahrazuje uninit_bg, oba bity vlastností nemohou být nastaveny zároveň."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "Kontrolní součet bloku superbloku MMP neodpovídá. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "Superblok 64bitových souborových systémů potřebuje rozsahy, aby bylo možné přistoupit na celý disk. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg je příliš velký. (%N, maximální hodnota %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "Kontrolní součet superbloku externího žurnálu neodpovídá superbloku. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "metadata_csum_seed superbloku není bez metadata_csum potřeba."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Chyba při inicializaci kontextu kvót v podpůrné knihovně: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Špatná vyžadovaná extra velikost iuzlu v superbloku (%N)."
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Špatná vytoužená extra velikost iuzlu v superbloku (%N)."
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "Neplatný iuzel %i kvóty %U. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "Superblok by měl příliš mnoho iuzlů (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1345,117 +1353,117 @@ msgstr ""
"Měnění velikosti iuzlu bude vypnuto. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Průchod 1: Kontrolují se iuzly, bloky a velikosti\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "Kořenový iuzel není adresář. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "Kořenový iuzel má nastaven dtime (možná kvůli starém mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "Rezervovaný iuzel %i (%Q) má špatný mód. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "Odstraněný iuzel %i má nulový dtime. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "Iuzel %i se používá, ale má nastaven dtime. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "Iuzel %i je adresář nulové délky. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "Bitmapa bloků skupiny %g v %b koliduje s jiným blokem systému souborů.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "Bitmapa iuzlů skupiny %g v %b koliduje s jiným blokem systému souborů.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "Tabulka iuzlů skupiny %g v %b koliduje s jiným blokem systému souborů.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "Bitmapa bloků skupiny %g (%b) je špatná. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "Bitmapa iuzlů skupiny %g (%b) je špatná. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "V iuzlu %i je i_size %Is, měla by být %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "V iuzlu %i je i_blocks %Ib, mělo by být %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "Neplatný %B (%b) v iuzlu %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) se překrývá s metadaty systému souborů v iuzlu %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "Iuzel %i má neplatný blok(y). "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Příliš mnoho neplatných bloků v iuzlu %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "Neplatný %B (%b) v iuzlu špatných bloků. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "Iuzel špatných bloků má neplatný blok(y). "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "Používá se duplikátní nebo špatný blok!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Špatný blok %b používán jako nepřímý blok špatných bloků. "
@@ -1463,7 +1471,7 @@ msgstr "Špatný blok %b používán jako nepřímý blok špatných bloků. "
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1476,7 +1484,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1487,7 +1495,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1498,122 +1506,122 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Primární superblok (%b) je na seznamu špatných bloků.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Blok %b v primárních deskriptorech skupin je na seznamu špatných bloků\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Varování: superblok skupiny %g (%b) je špatný.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Varování: Kopie deskriptorů skupin ve skupině %g má špatný blok (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Chyba při programování? Blok #%b bezdůvodně použit v process_bad_blocks.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "Chyba při alokaci %N souvislých bloků ve skupině bloků %g pro %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "Chyba při alokaci vyrovnávací paměti bloků pro přemístění %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Přemísťuji %s skupiny %g z %b do %c…\n"
# FIXME: no-c-format so that I can reorder it properly
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Přemísťuji skupiny %g %s do %c…\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Varování: nemohu načíst blok %s %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Varování: nemohu zapsat blok %b pro %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "Chyba při alokaci bitmapy iuzlů (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "Chyba při alokaci bitmapy bloků (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "Chyba při alokaci informací odkazů icount: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "Chyba při alokaci pole bloků adresáře: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Chyba při zkoumání iuzlů (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Chyba při iteraci přes bloky v iuzlu %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Chyba při ukládání informace o četnosti iuzlu (iuzel=%i, počet=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Chyba při ukládání informace o bloku adresáře (iuzel=%i, blok=%b, čís=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Chyba při čtení iuzlu %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "Iuzel %i má nastaven příznak imagic. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1623,143 +1631,143 @@ msgstr ""
"má nastaven příznak immutable nebo append-only. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "Speciální (zařízení/socket/fifo) iuzel %i má nenulovou délku. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "Iuzel žurnálu se nepoužívá, ale obsahuje data. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "Žurnál není obyčejný soubor. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "Iuzel %i byl součástí seznamu osiřelých iuzlů. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "Nalezeny iuzly, které byly součástí poškozeného spojového seznamu osiřelých. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "Chyba při alokaci struktury refcount (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Chyba při čtení bloku rozšířených atributů %b pro iuzel %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "Iuzel %i má špatný blok rozšířených atributů %b. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Chyba při čtení bloku rozšířených atributů %b (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "Blok rozšířených atributů %b má počet odkazů %r, měl by být %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Chyba při zápisu bloku rozšířených atributů %b (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "Blok rozšířených atributů %b má h_blocks > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "Chyba při alokaci struktury pro alokaci oblasti rozšířených atributů. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "Blok rozšířených atributů %b je poškozen (kolize alokace). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "Blok rozšířených atributů %b je poškozen (neplatný název). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "Blok rozšířených atributů %b je poškozen (neplatná hodnota). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "Iuzel %i je příliš velká. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) způsobuje, že adresář je příliš velký. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) způsobuje, že soubor je příliš velký. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) způsobuje, že symbolický odkaz je příliš velký. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "Iuzel %i má nastaven příznak INDEX_FL na systému souborů bez podpory htree.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "Iuzel %i má nastaven příznak INDEX_FL, ale není adresář.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "Iuzel HTREE adresáře %i má neplatný kořenový uzel.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "Iuzel HTREE adresáře %i má nepodporovanou verzi hashe (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "Iuzel HTREE adresáře %i používá nekompatibilní příznak kořenového uzlu htree.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "Iuzel HTREE adresáře %i má hloubku stromu (%N), která je příliš velká\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1768,55 +1776,55 @@ msgstr ""
"souborového systému. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "(Znovu) vytvoření iuzlu pro změny velikosti selhalo: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "Iuzel %i má velikost navíc (%IS), která není platná\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "Rozšířený atribut v iuzlu %i má délku jména (%N), která není platná\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "Rozšířený atribut v iuzlu %i má pozici hodnoty (%N), která není platná\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "Rozšířený atribut v iuzlu %i má blok hodnot (%N), který není platný (musí být 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "Rozšířený atribut v iuzlu %i má velikost hodnoty (%N), která není platná\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "Rozšířený atribut v iuzlu %i má hash (%N), který není platný\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "Iuzel %i je %It, ale ve skutečnosti vypadá na adresář.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Chyba při pročítání stromu @x v iuzlu %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1826,7 +1834,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1836,7 +1844,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1845,31 +1853,31 @@ msgstr ""
"\t(logický blok %c, fyzický blok %b, neplatná délka %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "Iuzel %i má nastaven příznak EXTENTS_FL na systému souborů bez podpory rozsahů.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "Iuzel %i rozsahový formát, ale superbloku chybí vlastnost EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "Iuzlu %i chybí EXTENT_FL, ale je v rozsahovém formátu\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Rychlý symbolický odkaz %i na nastaveno EXTENT_FL. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1878,39 +1886,39 @@ msgstr ""
"\t(neplatný logický blok %c, fyzický blok %b, délka %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "Iuzel %i má neplatný uzel rozsahů (op %s, blk %b, lblk %c): %m\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Chyba při převodu bitmapy bloků subclusteru: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "Iuzel kvóty není obyčejný soubor. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "Iuzel kvóty se nepoužívá, ale obsahuje data. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "Iuzel kvóty je pro uživatele viditelný. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "Iuzel špatných bloků se zdá být neplatný. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1919,26 +1927,26 @@ msgstr ""
"\t(neplatný logický blok %c, fyzický blok %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "Zdá se, že Iuzel %i obsahuje nesmysly. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "Iuzel %i projde kontrolami, ale kontrolní součet iuzlu neodpovídá. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "Rozšířený atribut iuzlu %i je poškozen (kolize alokace). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1948,14 +1956,14 @@ msgstr ""
"\t(logický blok %c, fyzický blok %b, délka %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "Blok %b rozšířeného atributu iuzlu %i projde kontrolami, ale kontrolní součet bloku neodpovídá. "
# ??? WTF
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1965,7 +1973,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1974,37 +1982,37 @@ msgstr ""
"\t(logický blok %c, fyzický blok %b, délka %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "Iuzel %i má data v sobě, ale superbloku chybí vlastnost INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "Iuzel %i má nastaven příznak INLINE_DATA_FL na systému souborů bez podpory vestavěných dat.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "Blok %b iuzlu %i se neslučuje s kritickými metadaty, kontrola bloku se vynechá.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "Iuzel adresáře %i blok %b by měl být na bloku %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "Iuzel adresáře %i má na bloku %c rozsah označený jako neinicializovaný. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -2013,14 +2021,14 @@ msgstr ""
"alokace clusteru. Bude opraveno v průchodu 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "Iuzel %i má nastaven příznak INLINE_DATA_FL, ale rozšířený atribut nenalezen. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2030,42 +2038,42 @@ msgstr ""
"má nastaven příznak rozsahů nebo vestavěných dat. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "Iuzel %i má hlavičku pro rozsah, ale příznak vestavěných dat je nastaven.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "Iuzel %i se zdá mít vestavěná data, ale příznak rozsahu je nastaven.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "Iuzel %i se zdá mít mapu bloků, ale příznaky vestavěných data a rozsahu jsou nastaveny.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "Iuzel %i má nastavené příznaky vestavěných dat a rozsahu, ale i_block obsahuje nesmysly.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "Seznam chybných bloků říká, že iuzel seznamu chybných bloků je chybný. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "Chyba při alokaci struktury pro alokaci oblasti rozsahu. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2074,46 +2082,46 @@ msgstr ""
"\t(logický blok %c, neplatný fyzický blok %b, délka %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "Chyba při alokaci paměti pro seznam šifrovaných adresářů\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "Strom rozsahů iuzlu %i by mohl být mělčí (%b, mohl by být <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "Iuzel %i na souborovém systému s bigalloc nemůže mapován do bloků. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "Iuzel %i má poškozenou hlavičku rozsahu. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Časové údaje iuzlu %i po 4. dubnu 2310 pravděpodobně spadají před rok 1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "Iuzel %i má zakázaný iuzel rozšířených atributů %N.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "Iuzel %i má neplatný rozšířený atribut. Iuzlu rozšířeného atributu %N chybí příznak EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2121,10 +2129,38 @@ msgstr ""
"Iuzlu rozšířeného atributu %N pro rodičovský iuzel %i chybí příznak EA_INODE.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "Iuzel %i má nastaven příznak casefold, ale není adresářem. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"Adresář %p má příznak casefold, ale\n"
+"vlastnost casefold není zapnuta. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "Iuzel %i HTREE adresáře používá verzi hashe (%N), ale měl by používat SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "Iuzel %i HTREE adresáře používá SipHash, ale neměl by. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2136,46 +2172,46 @@ msgstr ""
"Průchod 1B: Znovu vyšetřuji více krát alokované bloky\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "Více krát alokovaný(é) blok(y) v iuzlu %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Chyba při zkoumání iuzlů (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "Chyba při alokaci bitmapy iuzlů (inode_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Chyba při iteraci přes bloky v iuzlu %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Chyba při úpravě počtu odkazů bloku rozšířených atributů %b (iuzel %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Průchod 1C: Hledání iuzlů s duplikovanými bloky v adresářích.\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Průchod 1D: Opravuji duplikátní bloky\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2184,18 +2220,18 @@ msgstr ""
" má %r duplikovaný(ch) blok(ů) sdílený(ch) mezi %N soubory/souborem:\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr " %Q (iuzel %i, čas změny %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<metadata systému souborů>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2205,7 +2241,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2213,347 +2249,347 @@ msgstr ""
"Duplikátní bloky již přiřazeny nebo naklonovány.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Nemohu klonovat soubor: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Průchod 1E: Optimalizují se stromy rozsahů\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Optimalizace stromu rozsahů %p (%i) selhala: %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optimalizují se stromy rozsahů: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Vnitřní chyba: maximální hloubka stromu rozsahů je příliš velká (%b, očekáváno=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "Strom rozsahu iuzlu %i (na úrovni %b) by mohl být kratší. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "Strom rozsahu iuzlu %i (na úrovni %b) by mohl být užší. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Průchod 2: Kontroluje se struktura adresářů\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "Špatné číslo iuzlu pro „.“ v iuzlu adresáře %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "Položka „%Dn“ v %p (%i) má špatné číslo iuzlu: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "Položka „%Dn“ v %p (%i) má odstraněný/nepoužívaný iuzel %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "Položka „%Dn“ v %p (%i) je odkaz na „.“ "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "Položka „%Dn“ v %p (%i) ukazuje na iuzel (%Di) umístěný ve špatném bloku.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "Položka „%Dn“ v %p (%i) je odkaz na adresář %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "Položka „%Dn“ v %p (%i) je odkaz na kořenový iuzel.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "Položka „%Dn“ v %p (%i) má ve svém jméně neplatné znaky.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "Chybí „.“ v iuzlu adresáře %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "Chybí „..“ v iuzlu adresáře %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "První položka „%Dn“ (iuzel=%Di) v iuzlu adresáře %i (%p) by měla být „.“\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "Druhá položka „%Dn“ (iuzel=%Di) v iuzlu adresáře %i by měla být „..“\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr pro iuzel %i (%Q) je %IF, měla by být nula.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl pro iuzel %i (%Q) je %If, mělo by být nula.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high pro iuzel %i (%Q) je %Id, měla by být nula.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag pro iuzel %i (%Q) je %N, mělo by být nula.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize pro iuzel %i (%Q) je %N, měla by být nula.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "Iuzel %i (%Q) má špatný mód (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "Iuzel adresáře %i, %B, pozice %N: adresář poškozen\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "Iuzel adresáře %i, blok %B, pozice %N: název souboru příliš dlouhý\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "Iuzel adresáře %i má nealokovaný %B. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "Položka adresáře „.“ v iuzlu adresáře %i není ukončena NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "Položka adresáře „..“ v iuzlu adresáře %i není ukončena NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "Iuzel %i (%q) je neplatné znakové zařízení.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "Iuzel %i (%Q) je neplatné blokové zařízení.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "Položka „%Dn“ v %p (%i) je duplikátní položka „.“.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "Položka „%Dn“ v %p (%i) je duplikátní položka „..“.\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Interní chyba: nemohu najít dir_info pro %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "Položka „%Dn“ v %p (%i) má rec_len %Dr, měla by být %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "Chyba při alokaci struktury icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Chyba při iterování přes bloky adresáře: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Chyba při čtení bloku adresáře %b (iuzel %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Chyba při zápisu bloku adresáře %b (iuzel %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "Chyba při alokaci nového bloku adresáře pro iuzel %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Chyba při dealokaci iuzlu %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "Položka adresáře pro „.“ v %p (%i) je velká.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "Iuzel %i (%Q) je neplatná FIFO.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "Iuzel %i (%Q) je neplatný socket.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Nastavuje se filetype pro položku „%Dn“ v %p (%i) na %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "Položka „%Dn“ v %p (%i) má chybný filetype (byl %Dt, měl by být %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "Položka „%Dn“ v %p (%i) má nastaven filetype.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "Položka „%Dn“ v %p (%i) má název nulové délky.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Symbolický odkaz %Q (iuzel #%i) není platný.\n"
# FIXME: @F already ends with 'is'
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "Blok rozšířených atributů pro iuzel %i (%Q) není platný (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "Systém souborů obsahuje velké soubory, ale v superbloku nemá příznak LARGE_FILE.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "Problém v iuzlu HTREE adresáře %d: na %B neexistuje odkaz\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "Problém v iuzlu HTREE adresáře %d: na %B vedou dva odkazy\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má špatný min hash\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má špatný max hash\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "Neplatný iuzel HTREE adresáře %d (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "Problém v iuzlu HTREE adresáře %d (%q): špatné číslo bloku %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "Problém v iuzlu HTREE adresáře %d: kořenový uzel není platný\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má špatný limit (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má špatný počet (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má nesetříděnou hash tabulku\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "Problém v iuzlu HTREE adresáře %d: %B má špatnou hloubku (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "Nalezena duplikátní položka „%Dn“ v %p (%i). "
# FIXME: no-c-format
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2565,7 +2601,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2576,155 +2612,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi pro iuzel %i (%Q) je %N, měl by být nula.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Neočekávaný blok v iuzlu HTREE adresáře %d (%q).\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "Položka „%Di“ v %p (%i) odkazuje na iuzel %Di ve skupině %g, kde je nastaveno _INODE_UNINIT.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "Položka „%Dn“ v %p (%i) odkazuje na iuzel %Di nalezený ve skupině %g oblasti nepoužitých iuzlů.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi pro iuzel %i (%Q) je %N, mělo by být nula.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "Problém v iuzlu HTREE adresáře %d: kontrolní součet kořenového uzlu nesouhlasí.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "Problém v iuzlu HTREE adresáře %d: kontrolní součet vnitřního uzlu nesouhlasí.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "Iuzel adresáře %i, %B, pozice %N: adresář nemá kontrolní součet.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "Iuzel adresáře %i, %B: adresář prošel kontrolami, ale součet nesouhlasí.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "Velikost (%N) iuzlu %i vestavěného adresáře musí být násobek čtyř.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Oprava velikosti iuzly vestavěného adresáře %i se nepodařila.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "Zašifrovaný záznam „%Dn“ v %p (%i) je příliš krátký.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Nalezena duplikátní položka názvu souboru „%Dn“ v %p (%i). "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Průchod 3: Kontroluje se dosažitelnost adresářů\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "Kořenový iuzel nealokován. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "Není místo v adresáři lost+found. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "Nepřipojený adresářový iuzel %i (%p)\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "/lost+found nenalezeno. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "„..“ v %Q (%i) je %P (%j), mělo by být %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "Špatné nebo neexistující /lost+found. Nemohu znovu připojit.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Nemohu zvětšit /lost+found: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Nemohu znovu připojit %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Chyba při pokusu najít /lost+found: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_block: %m při pokusu vytvořit adresář /lost+found\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_inode: %m při pokusu vytvořit adresář /lost+found\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block: %m při pokusu vytváření nového adresáře /lost+found\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_block: %m při zápisu bloku adresáře pro /lost+found\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Chyba při úpravě četnosti iuzlu v iuzlu %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2735,7 +2776,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2745,41 +2786,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Chyba při vytváření kořenového adresáře (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Chyba při vytváření adresáře /lost+found (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "Kořenový iuzel není adresář; končím.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Nemohu pokračovat bez kořenového iuzlu.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/lost+found není adresář (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/lost+found má vestavěná data\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2790,7 +2831,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2800,52 +2841,52 @@ msgstr ""
"Přesuňte data ze souborového systému a e2fsck spusťte znovu.\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/lost+found je zašifrován\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Průchod 3A: Optimalizuji adresáře\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Nemohu vytvořit iterátor dirs_to_hash: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Nemohu optimalizovat adresář %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Optimalizuji adresáře: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Průchod 4: Kontrolují se počty odkazů\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "Osiřelý iuzel %i s nulovou délkou. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "Osiřelý iuzel %i\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "Počet odkazů na iuzel %i je %Il, měl by být %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2857,146 +2898,151 @@ msgstr ""
"inode_link_info[%i] je %N, inode.i_links_count je %Il. Měly by být stejné!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "Počet odkazů na iuzel rozšířeného atributu %i je %N, měl by být %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "Adresář překračuje maximum odkazů, ale v superbloku chybí vlastnost DIR_NLINK.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "Počítadlo odkazů iuzlu %i adresáře nastaveno na přetečeno, ale mohlo by být přesně %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Průchod 5: Kontrolují se souhrnné informace skupin\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Výplň na konci bitmapy iuzlů není nastavena. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Výplň na konci bitmapy bloků není nastavena. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "Rozdíly v bitmapě bloků: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "Rozdíly v bitmapě iuzlů: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Počet volných iuzlů ve skupině č. %g špatně (%i, spočteno=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Počet adresářů ve skupině č. %g špatně (%i, spočteno=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Počet volných iuzlů špatně (%i, spočteno=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Počet volných bloků ve skupině č. %g špatně (%b, spočteno=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Počet volných bloků špatně (%b, spočteno=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "CHYBA PŘI PROGRAMOVÁNÍ: hranice (%b, %c) bitmapy systému souborů (#%N) neodpovídají vypočteným hranicím bitmapy (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Interní chyba: pokažený konec bitmapy (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Chyba při kopírování do náhradní bitmapy iuzlů: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Chyba při kopírování do náhradní bitmapy bloků: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "Blok(y) skupiny %g je/jsou používán(y), ale skupina je označena jako BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "Iuzel/iuzly skupiny %g je/jsou používán(y), ale skupina je označena jako INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "Bitmapa iuzlů skupiny %g neodpovídá kontrolnímu součtu.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "Bitmapa bloků skupiny %g neodpovídá kontrolnímu součtu.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Znovu vytvořit žurnál"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Aktualizovat údaje o kvótách pro druh kvót %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Chyba při nastavování informace o kontrolním součtu skupiny bloků: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Chyba při zápisu údajů o souborovém systému: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Chyba při synchronizaci zápisů na zařízení úložiště: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Chyba při zápisu údajů o kvótách pro druh kvót %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Neobsloužený kód chyby (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "IGNOROVÁNO"
@@ -3006,8 +3052,8 @@ msgstr "v move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Použitá paměť: %d, strávený čas: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Použitá paměť: %lu, strávený čas: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3252,8 +3298,8 @@ msgstr[0] "%12u soubor\n"
msgstr[1] "%12u soubory\n"
msgstr[2] "%12u souborů\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "při zjišťování, jestli je %s připojen."
@@ -3426,7 +3472,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "Přepínač -t není v této verzi e2fsck podporován.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Nelze vyřešit „%s“"
@@ -3498,8 +3544,8 @@ msgid "while reading MMP block"
msgstr "při čtení bloku MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3509,13 +3555,13 @@ msgstr ""
"Přepisuji existující systém souborů, toto může být odčiněno příkazem:\n"
" e2undo %s %s\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "při pokusu smazat %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "při pokusu nastavit soubor pro odvolání změn\n"
@@ -3607,70 +3653,70 @@ msgstr "%s: Superblok se zkusí načíst i přes chyby…\n"
msgid "Get a newer version of e2fsck!"
msgstr "Sežeňte novější verzi e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "při kontrole žurnálu pro %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Nelze pokračovat v kontrole souborového systému"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr ""
"Varování: přeskakuji obnovu žurnálu, protože provádím kontrolu systému\n"
"souborů jen pro čtení.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "nemohu nastavit příznaky superbloku na %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Nalezena chyba kontrolního součtu žurnálu v %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Žurnál poškozen v %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "při obnově žurnálu %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s má nepodporovanou vlastnost(i):"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s má nepodporované kódování: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s při čtení iuzlu špatných bloků\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Toto nevypadá dobře, ale zkusíme pokračovat…\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Vytváří se žurnál (%d bloků): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Hotovo.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3678,24 +3724,24 @@ msgstr ""
"\n"
"*** žurnál byl znovu vytvořen ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "přerušen"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck přerušen.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Spouštím e2fsck od začátku…\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "při nulování kontextu"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3704,12 +3750,12 @@ msgstr ""
"\n"
"%s: ***** CHYBY SOUBOROVÉHO SYSTÉM BYLY OPRAVENY *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: Souborový systém byl pozměněn.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3718,12 +3764,12 @@ msgstr ""
"\n"
"%s: ***** SYSTÉM SOUBORŮ BYL ZMĚNĚN *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** ZNOVU ZAVEĎTE SYSTÉM *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3734,51 +3780,51 @@ msgstr ""
"%s: ********** VAROVÁNÍ: Systém souborů má stále chyby **********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "aA"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "vV"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " („v“ zapne „ano“ pro vše) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<a>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (a/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "přerušeno!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "ano pro vše\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "ano\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "ne\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3787,7 +3833,7 @@ msgstr ""
"%s? ne\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3796,38 +3842,38 @@ msgstr ""
"%s? ano\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "ano"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "ne"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: neplatný blok(y) bitmapy pro %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "čtení bitmap iuzlů a bloků"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "při opakovaném pokusu načíst bitmapy pro %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "zápisu bitmap bloků a iuzlů"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "při přepisu bitmap bloků a iuzlů pro %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3840,37 +3886,37 @@ msgstr ""
"%s: NEOČEKÁVANÁ NEKONZISTENCE; SPUSŤTE fsck RUČNĚ.\n"
"\t(tj. bez přepínačů -a nebo -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Použitá paměť: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Použitá paměť: %llu k/%llu k (%llu k/%llu k), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Použitá paměť: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Použitá paměť: %llu k, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "čas: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "strávený čas: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "při čtení iuzlu %lu v %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "při zápisu iuzlu %lu v %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "NEČEKANÁ NEKONZISTENCE: souborový systém je měněn, zatímco fsck běží.\n"
@@ -4081,68 +4127,68 @@ msgstr "Průchod dokončen, nalezeno %u špatných bloků (%d/%d/%d chyb).\n"
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Použití: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v verze] soubory…\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Použití: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v verze] soubory…\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "špatný projekt – %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "špatná verze – %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "při pokusu stat %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "při čtení příznaků %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Příznaky %s nastaveny na "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "při nastavování příznaků %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Verze %s nastavena na %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "při nastavování verze %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Verze %s nastavena na %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "při nastavování projektu na %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Nemohu alokovat proměnou path v chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= je neslučitelné s - a +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Musíte použít '-v', =, - nebo +\n"
@@ -4151,8 +4197,8 @@ msgstr "Musíte použít '-v', =, - nebo +\n"
msgid "while reading inode %u"
msgstr "při čtení iuzlu %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "při zvětšování adresáře"
@@ -4161,143 +4207,147 @@ msgstr "při zvětšování adresáře"
msgid "while linking \"%s\""
msgstr "při vytváření odkazu „%s“"
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "při zápisu iuzlu %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "při vypisování atributů „%s“"
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "při otevírání iuzlu %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "při alokaci paměti"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "při čtení atributu „%s“ u „%s“"
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "při zápisu atributu „%s“ do iuzlu %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "při uzavírání iuzlu %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "při alokaci iuzlu „%s“"
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "při vytváření iuzlu „%s“"
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "při vytváření symbolického odkazu „%s“"
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "při vyhledávání „%s“"
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "při vytváření adresáře „%s“"
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "při otevírání „%s“ za účelem kopírování"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "při změně pracovního adresáře na „%s“"
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "při zkoumání adresáře „%s“"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "při volání lstat nad „%s“"
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "při vytváření zvláštního souboru „%s“"
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "volání malloc selhalo"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "při pokusu přečíst odkaz „%s“"
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "mezi voláním lstat() a readlink() se velikost symbolického odkazu prodloužila"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "při zápisu symbolického odkazu „%s“"
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "při zápisu souboru „%s“"
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "při výrobě adresáře „%s“"
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "při změně adresáře"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ignoruje se záznam „%s“"
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "při nastavování iuzlu pro „%s“"
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "při nastavování rozšířených atributů u „%s“"
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "při ukládání dat iuzlu"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "při kopírování rozšířených atributů kořenového adresáře"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4422,7 +4472,7 @@ msgstr "při tisku seznamu špatných bloků"
msgid "Bad blocks: %u"
msgstr "Špatné bloky: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "při čtení iuzlu žurnálu"
@@ -4438,7 +4488,7 @@ msgstr "při čtení superbloku žurnálu"
msgid "Journal superblock magic number invalid!\n"
msgstr "Magické číslo superbloku žurnálu je špatně!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "při čtení superbloku žurnálu"
@@ -4446,30 +4496,30 @@ msgstr "při čtení superbloku žurnálu"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Nemohu najít magická čísla superbloku žurnálu"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "alokace vyrovnávací paměti pro MMP selhala\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "čtení MMP bloku %llu z „%s“\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Nemohu alokovat paměť pro zpracování přepínačů!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Neplatný parametr superblok: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Neplatný parametr blocksize (velikost_bloku): %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4492,27 +4542,27 @@ msgstr ""
"\tsuperblock=<číslo superbloku>\n"
"\tblocksize=<velikost bloku>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tPoužívám %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Nemohu najít platný superblok systému souborů.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: vlastnost MMP není zapnuta.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "při pokusu načíst bitmapy pro %s\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4522,8 +4572,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Použití: %s [-r|Q] [-f] [-b superblok] [-B velikost_bloku] [-fr] zařízení soubor_s_obrazem\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Použití: %s [-r|Q] [-f] [-b superblok] [-B velikost_bloku] zařízení soubor_s_obrazem\n"
#: misc/e2image.c:110
#, c-format
@@ -4532,9 +4582,9 @@ msgstr " %s -I zařízení soubor_s_obrazem\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
msgstr ""
-" %s -ra [-cfnp] [-o pozice_zdroje] [ -O pozice_cíle]\n"
+" %s -ra [-cfnp] [-o pozice_zdroje] [-O pozice_cíle]\n"
" zdrojový_souborový_systém [cílový_souborový_systém]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
@@ -4796,7 +4846,7 @@ msgstr "e2label: chyba při čtení superbloku\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: není systém souborů ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Varování: jmenovka příliš dlouhá, zkracuji.\n"
@@ -4811,7 +4861,7 @@ msgstr "e2label: nemohu se zase posunout na superblok\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: chyba při zápisu superbloku\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Použití: e2label zařízení [novájmenovka]\n"
@@ -5017,7 +5067,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "bajt_posun bajt_začát bajt_konec ss_bloky velbl sku mkfs/čas_připojení sb_uuid jmenovka\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5125,51 +5175,51 @@ msgstr "%s: příliš mnoho zařízení\n"
msgid "%s: too many arguments\n"
msgstr "%s: příliš mnoho argumentů\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Připojuje se jen pro čtení.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Uživatelé budou mít dovoleno alokovat všechny bloky. To je nebezpečné!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Spusťte prosím „e2fsck -fy %s“.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Žurnál potřebuje obnovu, je třeba spustit „e2fsck -E journal_only“.\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: Zapisování do žurnálu není podporováno.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Pozor: Připojuje se nezkontrolovaný systém, doporučuje se spustit e2fsck.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Pozor: Dosaženo maximálního počtu připojení, doporučuje se spustit e2fsck.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Pozor: Čas kontroly dosažen, doporučuje se spustit e2fsck.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Nalezeni sirotci, doporučuje se spustit e2fsck.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Nalezeny chyby, doporučuje se spustit e2fsck.\n"
@@ -5275,7 +5325,7 @@ msgstr ""
"\n"
"Nemohu zapsat %d bloků do tabulky iuzlů počínaje %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "hotovo \n"
@@ -5339,13 +5389,13 @@ msgstr "při nulování zařízení žurnálu (blok %llu, počet %d)"
msgid "while writing journal superblock"
msgstr "při zápisu superbloku žurnálu"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "Vytváří se systém souborů s %'llu (%dk) bloky a %'u uzly\n"
# TODO pluralize
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5354,164 +5404,164 @@ msgstr ""
"pozor: nepoužito %'llu bloků.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Jmenovka systému souborů=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Jmenovka systému souborů=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Typ OS: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Velikost bloku=%u (log=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Velikost clusteru=%u (log=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Velikost fragmentu=%u (log=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Krok=%u bloků, Šířka pásu=%u bloků\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u iuzlů, %llu bloků\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu bloků (%2.2f %%) rezervováno pro superuživatele\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "První blok dat=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Vlastník kořenového adresáře=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Maximum bloků v systému souborů=%'lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u skupin bloků\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u skupina bloků\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u bloků ve skupině, %u clusterů ve skupině\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u bloků ve skupině, %u fragmentů ve skupině\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u iuzlů ve skupině\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID systému souborů=%s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Zálohy superbloku uloženy v blocích: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s vyžaduje „-O 64bit“\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "„%s“ musí být před „resize=%u“\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "Neplatná desc_size: „%s“\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Neplatná počáteční hodnota hashe: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Neplatná pozice: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "Neplatný interval_aktualizace_mmp: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Neplatný počet záložních superbloků: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Neplatný parametr kroku (stride): %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Neplatný parametr šířka-pásu (stripe-width): %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Neplatný parametr změny velikosti: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "Maximum změny velkosti musí být větší než velikost systému souborů.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "Revize 0 souborového systému nepodporuje změnu velikosti za běhu\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "Neplatný vlastník kořenu: „%s“\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Neplatné kódování: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5564,7 +5614,7 @@ msgstr ""
"\tquotatype=<zapnuté druhy kvót>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5575,17 +5625,17 @@ msgstr ""
"Varování: šířka pruhu RAIDu %u není sudý násobek kroku (stride) %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "chyba: Neplatné příznaky kódování: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "chyba: Jsou-li předány příznaky kódování, je třeba explicitně určit kódování\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5594,17 +5644,17 @@ msgstr ""
"Chyba syntaxe v konfiguračním souboru mke2fs (%s, řádek č. %d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Neplatná sada přepínačů systému souborů: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Nastaven neplatný přepínač připojení: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5613,7 +5663,7 @@ msgstr ""
"\n"
"Váš soubor mke2fs.conf nedefinuje druh souborového systému %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5621,11 +5671,11 @@ msgstr ""
"Pravděpodobně potřebujete nainstalovat aktualizovaný soubor mke2fs.conf.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Přerušuje se…\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5636,146 +5686,146 @@ msgstr ""
"Pozor: fs_type (druh SS) %s není v mke2fs.conf definován\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Nemohu alokovat paměť pro novou proměnnou PATH.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Profil nebylo možné správně inicializovat (chyba: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "špatná velikost bloku – %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Varování: velikost bloku %d není na většině systémů použitelná.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "špatná velikost clusteru – %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "Přepínač „-R“ je zastaralý, použijte místo něj „-E“"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "špatné chování při chybách - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Neplatný počet bloků ve skupině"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "bloky ve skupině musí být násobek 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Neplatné číslo pro velikost flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "Velikost flex_bg musí být mocninou 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "Velikost flex_bg (%lu) musí menší nebo rovna 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "špatný podíl iuzlů %s (min %d/max %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "špatná velikost iuzlu – %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Pozor: Přepínač -K je zastaralý a neměl by se již používat. Místo něj použijte rozšířený přepínač „-E nodiscard“!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "v malloc pro bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr "Pozor: jmenovka je příliš dlouhá, bude zkrácena na „%s“\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "špatné procento rezervovaných bloků – %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "chybný počet iuzlů – %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "při alokaci řetězce fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "špatné číslo revize – %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "při pokusu vytvořit revizi %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "Přepínač -t lze použít jen jednou"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "Přepínač -T lze použít jen jednou"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "při pokusu otevřít zařízení žurnálu %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "Velikost bloku zařízení žurnálu (%d) menší než minimální velikost bloku %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Použiji velikost bloku žurnálovacího zařízení: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "špatné bloky „%s“ na zařízení „%s“"
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "systém souborů"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "při pokusu zjistit velikost systému souborů"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5783,7 +5833,7 @@ msgstr ""
"Nemohu zjistit velikost zařízení; musíte zadat\n"
"velikost systému souborů\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5795,48 +5845,48 @@ msgstr ""
" oddíl se používá. Možná budete muset pro opětovné načtení\n"
" své tabulky oddílů znovu zavést systém.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "Systém souborů větší než velikost zařízení."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Seznam druhů souborových systému se nezdařilo rozebrat\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "Hurd nepodporuje vlastnost filetype (druh souboru).\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "Hurd nepodporuje vlastnost huge_file (velký soubor).\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "Hurd nepodporuje vlastnost metadata_csum (kontrolní součet metadat).\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "Hurd nepodporuje vlastnost ea_inode (iuzly rozšířených atributů).\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "při pokusu zjistit velikost hardwarového sektoru"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "při pokusu určit velikost fyzického sektoru"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "při nastavování velikosti bloku; pro zařízení příliš malá hodnota\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Pozor: zadaná velikost bloku %d je menší než velikost fyzického sektoru %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5845,7 +5895,7 @@ msgstr ""
"%s: Velikost zařízení (0x%llx bloků) %s je příliš velká, aby byla\n"
"vyjádřena v 32 bitech za použití bloku o velikosti %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5854,82 +5904,87 @@ msgstr ""
"%s: Velikost zařízení (0x%llx bloků) %s je příliš velká, aby bylo\n"
"možné vytvořit souborový systém za použití bloku o velikosti %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "fs_types (druhy SS) pro řešení v mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "Vlastnosti systému souborů nejsou v revizi 0 podporovány\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Řídké superbloky systému souborů nejsou v revizi 0 podporovány\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Revize 0 systému souborů žurnály nepodporuje\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "špatné procento rezervovaných bloků – %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr ""
"Rozsahy MUSÍ být u 64bitových souborových systémů zapnuty. Toho docílíte\n"
"zadáním „-O extents“.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "Velikost clusteru nemusí být menší než velikost bloku.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "definice velikosti clusteru vyžaduje vlastnost bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "varování: Není možné zjistit geometrii %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "Zarovnání %s představuje posun o %'lu bajtů.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Toto může vést k velmi špatnému výkonu, doporučuje se (nové) vytvoření oddílů.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s umí DAX, avšak současná velikost bloku %u se liší od velikosti stránky systému %u, takže souborový systém DAX podporovat nebude.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "%d-bajtové bloky příliš velké pro systém (max %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "Varování: %d-bajtové bloky příliš velké pro systém (max %d), donucen pokračovat\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Návrh: Pro vyšší stabilitu metadat a schopnost kontrolních součtů žurnálu použijte linuxové jádro >= 3.18.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Neznámé kódování názvů souborů v profilu: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Neznámé příznaky kódování v profilu: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5944,24 +5999,16 @@ msgstr ""
"nemusí být to, co chcete.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "%dbajtové iuzly jsou příliš malé pro projektové kvóty"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Vlastnosti encrypt a casefold nejsou slučitelné.\n"
-"Obě nemohou být zapnuty současně.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "Vlastnost bigalloc nelze bez vlastnosti rozsahů zapnout"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5969,7 +6016,7 @@ msgstr ""
"Vlastnosti resize_inode a meta_bg nejsou slučitelné.\n"
"Obě nemohou být zapnuty současně.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5981,41 +6028,41 @@ msgstr ""
"Podrobnosti naleznete na <https://ext4.wiki.kernel.org/index.php/Bigalloc>.\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr ""
"bloky vyhrazené pro změnu velikosti za běhu nejsou podporovány na neřídkém\n"
"\tsystému souborů"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "počet bloků ve skupině mimo rozsah"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "Vlastnost flex_bg není povolena, takže její velikost nemůže být zadána"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "špatná velikost iuzlu %d (min %d/max %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "%dbajtové iuzly jsou příliš malé pro vestavěná data. Zadejte větší velikost."
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "příliš mnoho iuzlů (%'llu), zvýšit poměr iuzlů?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "příliš mnoho iuzlů (%'llu), zadejte < 2^32 iuzlů"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6026,72 +6073,72 @@ msgstr ""
"\tsystém souborů s %'llu bloky, zadejte vyšší poměr_iuzlu (-i)\n"
"\tnebo snižte počet iuzlů (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Zahazují se bloky zařízení: "
# Continuation of "Calling BLKDISCARD from %llu to %llu "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "selhalo – "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "při inicializaci kontextu kvót"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "při zápisu iuzlů kvót"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "v profilu je špatné chování při chybě - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "v malloc pro android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "při nastavování superbloku"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr ""
"Rozsahy nejsou zapnuty. Strom rozsahů souborů může být kontrolován součty,\n"
"zatímco mapy bloků nikoliv. Nezapnutí rozsahů snižuje pokrytí metadat\n"
"kontrolními součty. Situaci lze napravit uvedením -O extents.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr ""
"Podpora 64bitového souborového systému není zapnuta. Větší položky dostupné\n"
"s touto vlastností umožňují silnější kontrolní součty. Situaci lze napravit\n"
"uvedením -I 64bit.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "Vlastnost metadata_csum_seed vyžaduje vlastnost metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "Skartování (discard) uspělo a bude vráceno 0s – vynechá se výmaz tabulky iuzlů\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "neznámý os – %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Alokují se tabulky skupin: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "při pokusu alokovat tabulky systému souborů"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6099,30 +6146,30 @@ msgstr ""
"\n"
"\tpři převodu bitmapy subclusterů"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s může být dále poškozen přepsáním superbloku\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "při nulování bloku %llu na konci systému souborů"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "při rezervaci bloků pro změnu velikosti za běhu"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "žurnál"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Přidávám žurnál k zařízení %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6131,21 +6178,21 @@ msgstr ""
"\n"
"\tpři pokusu přidat žurnál k zařízení %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "hotovo\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "V režimu jen-superdata bude vynechána tvorba žurnálu\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Vytváří se žurnál (%'u bloků): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6153,7 +6200,7 @@ msgstr ""
"\n"
"\tpři pokusu vytvořit žurnál"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6162,28 +6209,28 @@ msgstr ""
"Chyba při zapínání ochrany proti násobnému připojení."
# TODO: Pluralize
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "Ochrana proti násobnému připojení je zapnuta s aktualizačním intervalem %d sekund.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Kopírování souborů na zařízení: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "při naplňování souborového systému"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Zapisuji superbloky a účtovací informace systému souborů: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "při zapisování a uzavírání systému souborů"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6261,7 +6308,7 @@ msgstr "Nelze získat velikost %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d začátek=%8d velikost=%8lu konec=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6269,15 +6316,15 @@ msgstr ""
"\n"
"Tato operace vyžaduje nově zkontrolovaný souborový systém.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Spusťte prosím na tomto systému souborů e2fsck -f.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Spusťte prosím na tomto systému souborů e2fsck -fD.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6298,20 +6345,20 @@ msgstr ""
"\t[-E rozšířený_přepínač[,…]] [-T čas_poslední_kontroly] [-U UUID]\n"
"\t[-I nová_velikost_iuzlu] [-z soubor_pro_odvolání_změn] zařízení\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Superblok žurnálu nenalezen!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "při pokusu otevřít externí žurnál"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s není zařízení žurnálu.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6320,11 +6367,11 @@ msgstr ""
"Superblok žurnálu je poškozený, hodnota nr_users\n"
"je příliš vysoká (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "UUID systému souborů nenalezeno na zařízení žurnálu.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6332,52 +6379,52 @@ msgstr ""
"Zařízení žurnálu nelze nalézt. Odstraněno NEBYLO.\n"
"Chybějící zařízení žurnálu lze odebrat přepínačem -f.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Žurnál odstraněn\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "při čtení bitmap"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "při čištění iuzlu žurnálu"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "při zápisu iuzlu žurnálu"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(a po té rebootujte!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Po dokončení e2fsck spusťte, prosím, „resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Spusťte, prosím, „resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z „%s“"
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "“, abyste zapnuli 64bitový režim.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "“, abyste vypnuli 64bitový režim.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6385,17 +6432,17 @@ msgstr ""
"POZOR: Nebylo možné potvrdit podporu pro metadata_csum_seed v jádře.\n"
"Tato vlastnost vyžaduje Linux >= v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Odstranění vlastnosti systému souborů „%s“ není podporováno.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Nastavená vlastnosti systému souborů „%s“ není podporováno.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6403,7 +6450,7 @@ msgstr ""
"Příznak has_journal může být vymazán jen, když je systém souborů\n"
"odpojen nebo připojen jen pro čtení.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6411,7 +6458,7 @@ msgstr ""
"Příznak needs_recovery je nastaven. Před vymazáním příznaku has_journal\n"
"prosím spusťte e2fsck.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6419,7 +6466,7 @@ msgstr ""
"Na souborových systémech se zapnutou vlastností meta_bg není nastavení\n"
"vlastnosti „sparse_super“ podporováno.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6428,12 +6475,12 @@ msgstr ""
"Ochranu před násobným připojením nelze nastavit,\n"
"pokud je systém souborů připojen nebo je-li jen pro čtení.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Ochrana před násobným připojením byla zapnuta s intervalem aktualizace %d s.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6441,20 +6488,20 @@ msgstr ""
"Ochranu před násobným přijením nelze vypnout,\n"
"je-li souborový systém jen pro čtení.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Chyba při čtení bitmap\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Magické číslo v bloku MMP se neshoduje. Očekáváno: %x, skutečnost: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "při čtení bloku MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6462,7 +6509,7 @@ msgstr ""
"Odstranění příznaku flex_bg by mohlo způsobit nekonzistenci systému\n"
"souborů.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6470,52 +6517,60 @@ msgstr ""
"Příznak huge_file může být vymazán jen, když je systém souborů\n"
"odpojen nebo připojen jen pro čtení.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Zapnutí kontrolních součtů by mohlo trvat nějakou dobu."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Na připojeném souborovém systému nelze zapnout metadata_csum!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr ""
"Rozsahy nejsou zapnuty. Strom rozsahů souborů může být prověřen na\n"
"kontrolní součty, ale mapy bloků nikoliv. Nezapnutí rozsahů snižuje pokrytí\n"
"metadat kontrolními součty. Situaci lze napravit spuštěním s -O extent.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr ""
"Podpora pro 64bitový souborový systém není zapnuta. Větší položky dostupné\n"
"s touto podporou umožní silnější kontrolní součty. Situaci lze napravit\n"
"spuštěním resize2fs -b.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Vypnutí kontrolních součtů by mohlo trvat nějakou dobu."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Na připojeném souborovém systému nelze vypnout metadata_csum!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Na připojeném souborovém systému nelze zapnout uninit_bg!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Na připojeném souborovém systému nelze vypnout uninit_bg!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "64bitový režim nelze zapnout, je-li systém připojen!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "64bitový systém nelze vypnout, je-li systém připojen!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Nelze zapnout vlastnost projekty, velikost iuzlu je příliš malá.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6523,11 +6578,11 @@ msgstr ""
"\n"
"Pozor: přepínač „^quota“ přebije argumenty „–Q“.\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Na souborových systémech se zapnutou vlastností encoding nelze zapnout vlastnost encrypt.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "Vlastnost casefold smí být změněna, jen když je systém souborů odpojen.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6535,7 +6590,7 @@ msgstr ""
"Nastavení vlastnosti „metadata_csum_seed“ je podporováno jen\n"
"na souborových systémech se zapnutou vlastností metadata_csum.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6543,15 +6598,15 @@ msgstr ""
"Od zapnutí metadata_csum se UUID změnilo. Aby se bezpečně přepsala\n"
"všechna metadata na nové UUID, souborový systém musí být odpojen.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Přepočet kontrolních součtů by mohlo trvat nějakou dobu."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "Systém souborů již žurnál má.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6560,21 +6615,21 @@ msgstr ""
"\n"
"\tpři pokusu otevřít žurnál na %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Vytváří se žurnál na zařízení %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "při přidávání systému souborů do žurnálu na %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Vytváří se iuzel žurnálu: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6582,31 +6637,31 @@ msgstr ""
"\n"
"\tpři pokusu vytvořit soubor žurnálu"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Nelze zapnout projektové kvóty, iuzel je příliš malý.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "při inicializaci kontextu kvóty v podpůrné knihovně"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "při aktualizaci hodnot kvót (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "při zápisu souboru s kvótami (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "při odstraňovaní souboru s kvótami (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6628,65 +6683,65 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Nemohu zpracovat určení data/času: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "špatný počet připojení - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "špatné gid/jméno skupiny - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "Špatný interval - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "špatný podíl rezervovaných bloků - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o může být zadáno jen jednou"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O může být zadáno jen jednou"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "špatný počet rezervovaných bloků - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "špatné uid/jméno uživatele - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "špatná velikost iuzlu – %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Velikost iuzlu musí být mocnina dvou – %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "interval_aktualizace_mmp je příliš velký: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
@@ -6694,32 +6749,52 @@ msgstr[0] "Nastavuje se interval aktualizace ochrany proti násobnému připojen
msgstr[1] "Nastavuje se interval aktualizace ochrany proti násobnému připojení na %'lu sekundy\n"
msgstr[2] "Nastavuje se interval aktualizace ochrany proti násobnému připojení na %'lu sekund\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Nastavuje se příznak chyby souborového systému, aby se vynutila jeho kontrola.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Neplatný kroku (stride) RAIDu: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Neplatná šířka pruhu RAIDu (stripe-width): %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Neplatný hashovací algoritmus: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Implicitní hashovací algoritmus se nastavuje na %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Stávající kódování nelze změnit\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Neplatné kódování: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Kódování se nastavuje na „%s“\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "encoding_flags se nastavuje na „%s“\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6737,6 +6812,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Zadány špatné přepínače.\n"
@@ -6754,32 +6831,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<kódování>\n"
+"\tencoding_flags=<příznaky>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Čtení bitmapy iuzlů selhalo.\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Čtení bitmapy bloků selhalo\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "bloky pro přesun"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Během zvětšování iuzlu selhala alokace bitmapy bloků\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Nedostatek místa pro zvětšení iuzlu\n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Během změny velikosti iuzlu selhala realokace bloků\n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6787,7 +6866,7 @@ msgstr ""
"Chyba při měnění velikost iuzlu.\n"
"Spusťte e2undo, abyste vrátili změny provedené na systému souborů.\n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6795,7 +6874,7 @@ msgstr ""
"Jste-li si jisti, že souborový systém není používán na žádném uzlu, spusťte:\n"
"„tune2fs -f -E clear_mmp ZAŘÍZENÍ“\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6804,29 +6883,29 @@ msgstr ""
"Magické číslo bloku MMP je chybné. Můžete jej zkusit opravit pomocí:\n"
"„e2fsck -f %s“\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Zařízení žurnálu nelze upravit.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "Velikost iuzlu již je %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "Zmenšování velikosti iuzlu není podporováno\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "špatná velikost iuzlu %lu (max %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Změna velikosti iuzlů by mohla trvat nějakou dobu."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6843,57 +6922,57 @@ msgstr ""
"Pak tento příkaz spusťte znovu. Jinak jakékoliv provedené změny mohou být\n"
"přepsány při obnově žurnálu.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Obnovuje se žurnál.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Nastavuje se maximální počet připojení na %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Nastavuje se aktuální počet připojení na %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Nastavuje se chování při chybách na %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Nastavuje se GID rezervovaných bloků na %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "interval mezi kontrolami je příliš dlouhý (%'lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Interval mezi kontrolami se nastavuje na %'lu sekund\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Procento rezervovaných bloků se nastavuje na %g %% (%'llu bloků)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "počet rezervovaných bloků je příliš velký (%'llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Počet rezervovaných bloků se nastavuje na %'llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6901,7 +6980,7 @@ msgstr ""
"\n"
"Systém souborů již má řídké superbloky.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6911,7 +6990,7 @@ msgstr ""
"Na souborových systémech se zapnutou vlastností meta_bg není nastavení\n"
"příznaku řídkého superbloku podporováno.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6920,7 +6999,7 @@ msgstr ""
"\n"
"Příznak řídkých superbloků nastaven. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6928,51 +7007,51 @@ msgstr ""
"\n"
"Odstranění příznaku řídkého superbloku není podporováno.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Nastavuje se čas poslední kontroly systému souborů na %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Nastavuje se UID rezervovaných bloků na %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Chybné použití clear_mmp. Je třeba jej použít s -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "Vlastnost kvóty smí být změněna, jen když je systém souborů odpojen.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Nastavení UUID na tomto souborovém systému může nějakou dobu trvat."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "UUID smí být změněno, jen když je systém souborů odpojen.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr ""
"Pouze pokud používáte jádra novější než v4.4, spusťte\n"
"„tune2fs -O metadata_csum_seed“ a poté znovu tento příkaz.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Neplatný formát UUID\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Je třeba aktualizovat superblok žurnálu.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "Velikost iuzlu smí být změněna, jen když je systém souborů odpojen.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6980,26 +7059,26 @@ msgstr ""
"Na souborových systémech se zapnutou vlastností flex_bg není změna velikosti\n"
"iuzlu podporována.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Velikost iuzlu se nastavuje na %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Změna velikosti iuzlu selhala.\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Velikost kroku (stride) se nastavuje na %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Šířka pruhu (stripe width) se nastavuje na %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Implicitní rozšířené přepínače při přípojení se nastavují na „%s“\n"
@@ -7306,17 +7385,17 @@ msgstr ""
"použijte přepínač vynucení.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "při otevírání %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "při zjišťování stat informací o %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7325,30 +7404,34 @@ msgstr ""
"Spusťte prosím nejdříve „e2fsck -f %s“.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Odhadovaná minimální velikost systému souborů: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "Chybná nová velikost: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "Nová velikost je příliš, aby byla vyjádřena ve 32 bitech\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Nová velikost ústí v příliš mnoho deskriptorů skupin bloků.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "Nová velikost je menší než minimum (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Neplatná délka kroku"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7359,31 +7442,31 @@ msgstr ""
"Požadovali jste novou velikost %'llu bloků.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Vlastnost 64 bitů nelze zapnout a vypnout.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr ""
"Na souborovém systému, který je větší než 2^32 bloků, nelze přepnout\n"
"vlastnost 64 bitů.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "Je-li systém souborů připojen, vlastnost 64 bitů nelze přepnout.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr ""
"Před tím než zapnete vlastnost 64 bitů, prosím, nejprve zapněte vlastnost\n"
"rozsahy pomocí tune2fs.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7392,37 +7475,37 @@ msgstr ""
"Souborový systém již je dlouhý %'llu (%dk) bloků. Není co dělat!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "Systém souborů již je 64bitový.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "Systém souborů již je 32bitový.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Souborový systém se převádí do 64 bitů.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Souborový systém se převádí do 32 bitů.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "Velikost systému souborů %s se mění na %'llu (%dk) bloků.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "při pokusu změnit velikost %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7431,7 +7514,7 @@ msgstr ""
"Po přerušené změně velikosti, prosím, opravte souborový systém pomocí\n"
"„e2fsck -fy %s“\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7440,7 +7523,7 @@ msgstr ""
"Systém souborů na %s je nyní %'llu (%dk) bloků dlouhý.\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "při pokusu zkrátit %s"
@@ -7543,8 +7626,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Toto by se nikdy nemělo stát: iuzly pro změnu velikosti jsou poškozeny!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Knihovna EXT2FS verze 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Knihovna EXT2FS verze 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8260,6 +8343,10 @@ msgstr "Iuzel je poškozený"
msgid "Inode containing extended attribute value is corrupted"
msgstr "Iuzel obsahující hodnotu rozšířeného atributu je poškozený"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Deskriptory skupin nenačteny"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Profil verze 0.0"
@@ -8384,47 +8471,47 @@ msgstr "Neplatná celočíselná hodnota"
msgid "Bad magic value in profile_file_data_t"
msgstr "Chybné magické číslo v profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\tnaposledy připojeno do %s v %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tnaposledy připojeno do %.*s v %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\tnaposledy připojeno v %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tvytvořeno v %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tnaposledy změněno v %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Nalezena tabulka rozdělení disku %s v %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "Soubor %s neexistuje a žádná velikost nebyla zadána.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Vytváří se obyčejný soubor %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Nebylo možné otevřít %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8432,26 +8519,36 @@ msgstr ""
"\n"
"Zařízení zřejmě neexistuje; zadali jste je správně?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s není speciální blokové zařízení.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s obsahuje systém souborů %s se jmenovkou „%s“\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s obsahuje systém souborů %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s obsahuje data „%s“\n"
+#~ msgid ""
+#~ "The encrypt and casefold features are not compatible.\n"
+#~ "They can not be both enabled simultaneously.\n"
+#~ msgstr ""
+#~ "Vlastnosti encrypt a casefold nejsou slučitelné.\n"
+#~ "Obě nemohou být zapnuty současně.\n"
+
+#~ msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+#~ msgstr "Na souborových systémech se zapnutou vlastností encoding nelze zapnout vlastnost encrypt.\n"
+
#~ msgid "while opening directory \"%s\""
#~ msgstr "při otevírání adresáře „%s“"
diff --git a/po/de.gmo b/po/de.gmo
index 6c790839..75517eda 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/e2fsprogs.pot b/po/e2fsprogs.pot
index 9dcf76dd..1ecd767d 100644
--- a/po/e2fsprogs.pot
+++ b/po/e2fsprogs.pot
@@ -1,9 +1,9 @@
# E2fsprogs translation template file
# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-# 2013, 2014, 2015, 2016, 2017, 2018, 2019 by Theodore Ts'o
+# 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 by Theodore Ts'o
# This file is distributed under the same license as the e2fsprogs package.
-# Theodore Ts'o <tytso@mit.edu>, 2019.
+# Theodore Ts'o <tytso@mit.edu>, 2021.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -77,9 +77,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs v1.45.4\n"
+"Project-Id-Version: e2fsprogs 1.46.2\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-09-23 15:43-0400\n"
+"POT-Creation-Date: 2021-02-28 09:37-0500\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"
@@ -89,7 +89,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: e2fsck/badblocks.c:23 misc/mke2fs.c:220
+#: e2fsck/badblocks.c:23 misc/mke2fs.c:221
#, c-format
msgid "Bad block %u out of range; ignored.\n"
msgstr ""
@@ -102,35 +102,35 @@ msgstr ""
msgid "while reading the bad blocks inode"
msgstr ""
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
-#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
-#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
-#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1584
+#: e2fsck/unix.c:1698 misc/badblocks.c:1264 misc/badblocks.c:1272
+#: misc/badblocks.c:1286 misc/badblocks.c:1298 misc/dumpe2fs.c:437
+#: misc/dumpe2fs.c:702 misc/dumpe2fs.c:706 misc/e2image.c:1437
+#: misc/e2image.c:1635 misc/e2image.c:1656 misc/mke2fs.c:237
+#: misc/tune2fs.c:2880 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr ""
-#: e2fsck/badblocks.c:83
+#: e2fsck/badblocks.c:84
#, c-format
msgid "while trying popen '%s'"
msgstr ""
-#: e2fsck/badblocks.c:94 misc/mke2fs.c:243
+#: e2fsck/badblocks.c:95 misc/mke2fs.c:244
msgid "while reading in list of bad blocks from file"
msgstr ""
-#: e2fsck/badblocks.c:105
+#: e2fsck/badblocks.c:106
msgid "while updating bad block inode"
msgstr ""
-#: e2fsck/badblocks.c:133
+#: e2fsck/badblocks.c:134
#, c-format
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr ""
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr ""
@@ -162,15 +162,15 @@ msgstr ""
msgid "Error writing block %lu (%s). "
msgstr ""
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr ""
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr ""
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr ""
@@ -180,12 +180,12 @@ msgstr ""
msgid "%s: %s filename nblocks blocksize\n"
msgstr ""
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr ""
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr ""
@@ -204,64 +204,36 @@ msgstr ""
msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n"
msgstr ""
-#: e2fsck/iscan.c:44
-#, c-format
-msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
-msgstr ""
-
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1082
-#, c-format
-msgid "while opening %s for flushing"
-msgstr ""
-
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
-#, c-format
-msgid "while trying to flush %s"
-msgstr ""
-
-#: e2fsck/iscan.c:110
-#, c-format
-msgid "while trying to open '%s'"
-msgstr ""
-
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1323
-msgid "while opening inode scan"
-msgstr ""
-
-#: e2fsck/iscan.c:127 misc/e2image.c:1342
-msgid "while getting next inode"
-msgstr ""
-
-#: e2fsck/iscan.c:136
-#, c-format
-msgid "%u inodes scanned.\n"
-msgstr ""
-
-#: e2fsck/journal.c:597
+#: e2fsck/journal.c:1263
msgid "reading journal superblock\n"
msgstr ""
-#: e2fsck/journal.c:670
+#: e2fsck/journal.c:1336
#, c-format
msgid "%s: no valid journal superblock found\n"
msgstr ""
-#: e2fsck/journal.c:679
+#: e2fsck/journal.c:1345
#, c-format
msgid "%s: journal too short\n"
msgstr ""
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:1358
+#, c-format
+msgid "%s: incorrect fast commit blocks\n"
+msgstr ""
+
+#: e2fsck/journal.c:1660 misc/fuse2fs.c:3797
#, c-format
msgid "%s: recovering journal\n"
msgstr ""
-#: e2fsck/journal.c:974
+#: e2fsck/journal.c:1662
#, c-format
msgid "%s: won't do journal recovery while read-only\n"
msgstr ""
-#: e2fsck/journal.c:1001
+#: e2fsck/journal.c:1689
#, c-format
msgid "while trying to re-open %s"
msgstr ""
@@ -430,56 +402,56 @@ msgstr ""
msgid "<Reserved inode 10>"
msgstr ""
-#: e2fsck/message.c:327
+#: e2fsck/message.c:325
msgid "regular file"
msgstr ""
-#: e2fsck/message.c:329
+#: e2fsck/message.c:327
msgid "directory"
msgstr ""
-#: e2fsck/message.c:331
+#: e2fsck/message.c:329
msgid "character device"
msgstr ""
-#: e2fsck/message.c:333
+#: e2fsck/message.c:331
msgid "block device"
msgstr ""
-#: e2fsck/message.c:335
+#: e2fsck/message.c:333
msgid "named pipe"
msgstr ""
-#: e2fsck/message.c:337
+#: e2fsck/message.c:335
msgid "symbolic link"
msgstr ""
-#: e2fsck/message.c:339 misc/uuidd.c:162
+#: e2fsck/message.c:337 misc/uuidd.c:162
msgid "socket"
msgstr ""
-#: e2fsck/message.c:341
+#: e2fsck/message.c:339
#, c-format
msgid "unknown file type with mode 0%o"
msgstr ""
-#: e2fsck/message.c:412
+#: e2fsck/message.c:410
msgid "indirect block"
msgstr ""
-#: e2fsck/message.c:414
+#: e2fsck/message.c:412
msgid "double indirect block"
msgstr ""
-#: e2fsck/message.c:416
+#: e2fsck/message.c:414
msgid "triple indirect block"
msgstr ""
-#: e2fsck/message.c:418
+#: e2fsck/message.c:416
msgid "translator block"
msgstr ""
-#: e2fsck/message.c:420
+#: e2fsck/message.c:418
msgid "block #"
msgstr ""
@@ -503,113 +475,121 @@ msgstr ""
msgid "multiply claimed inode map"
msgstr ""
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr ""
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:957
msgid "returned from clone_file_block"
msgstr ""
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:981
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr ""
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:994
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr ""
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:349
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr ""
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:767 e2fsck/pass2.c:1133
msgid "reading directory block"
msgstr ""
-#: e2fsck/pass1.c:1225
+#: e2fsck/pass1.c:1166
+msgid "getting next inode from scan"
+msgstr ""
+
+#: e2fsck/pass1.c:1218
msgid "in-use inode map"
msgstr ""
-#: e2fsck/pass1.c:1236
+#: e2fsck/pass1.c:1229
msgid "directory inode map"
msgstr ""
-#: e2fsck/pass1.c:1246
+#: e2fsck/pass1.c:1239
msgid "regular file inode map"
msgstr ""
-#: e2fsck/pass1.c:1255 misc/e2image.c:1282
+#: e2fsck/pass1.c:1248 misc/e2image.c:1289
msgid "in-use block map"
msgstr ""
-#: e2fsck/pass1.c:1264
+#: e2fsck/pass1.c:1257
msgid "metadata block map"
msgstr ""
-#: e2fsck/pass1.c:1326
-msgid "opening inode scan"
+#: e2fsck/pass1.c:1268
+msgid "inode casefold map"
msgstr ""
-#: e2fsck/pass1.c:1366
-msgid "getting next inode from scan"
+#: e2fsck/pass1.c:1333
+msgid "opening inode scan"
msgstr ""
-#: e2fsck/pass1.c:2079
+#: e2fsck/pass1.c:2103
msgid "Pass 1"
msgstr ""
-#: e2fsck/pass1.c:2140
+#: e2fsck/pass1.c:2164
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr ""
-#: e2fsck/pass1.c:2191
+#: e2fsck/pass1.c:2215
msgid "bad inode map"
msgstr ""
-#: e2fsck/pass1.c:2231
+#: e2fsck/pass1.c:2255
msgid "inode in bad block map"
msgstr ""
-#: e2fsck/pass1.c:2251
+#: e2fsck/pass1.c:2275
msgid "imagic inode map"
msgstr ""
-#: e2fsck/pass1.c:2282
+#: e2fsck/pass1.c:2306
msgid "multiply claimed block map"
msgstr ""
-#: e2fsck/pass1.c:2407
+#: e2fsck/pass1.c:2431
msgid "ext attr block map"
msgstr ""
-#: e2fsck/pass1.c:3652
+#: e2fsck/pass1.c:3726
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr ""
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4147
msgid "block bitmap"
msgstr ""
-#: e2fsck/pass1.c:4078
+#: e2fsck/pass1.c:4153
msgid "inode bitmap"
msgstr ""
-#: e2fsck/pass1.c:4084
+#: e2fsck/pass1.c:4159
msgid "inode table"
msgstr ""
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:317
msgid "Pass 2"
msgstr ""
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:554
+msgid "NLS is broken."
+msgstr ""
+
+#: e2fsck/pass2.c:1206 e2fsck/pass2.c:1390
msgid "Can not continue."
msgstr ""
@@ -629,7 +609,7 @@ msgstr ""
msgid "inode loop detection bitmap"
msgstr ""
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr ""
@@ -1491,7 +1471,7 @@ msgstr ""
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr ""
-#: e2fsck/problem.c:726 e2fsck/problem.c:1883
+#: e2fsck/problem.c:726 e2fsck/problem.c:1936
#. @-expanded: error allocating inode bitmap (%N): %m\n
msgid "@A @i @B (%N): %m\n"
msgstr ""
@@ -1983,8 +1963,8 @@ msgid ""
msgstr ""
#: e2fsck/problem.c:1204
-#. @-expanded: error allocating memory for encrypted directory list\n
-msgid "@A memory for encrypted @d list\n"
+#. @-expanded: error allocating %N bytes of memory for encrypted inode list\n
+msgid "@A %N bytes of memory for encrypted @i list\n"
msgstr ""
#: e2fsck/problem.c:1209
@@ -2028,13 +2008,19 @@ msgid ""
" "
msgstr ""
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1249
+#, no-c-format
+#. @-expanded: inode %i has extent marked uninitialized at block %c (len %N).
+msgid "@i %i has @x marked uninitialized at @b %c (len %N). "
+msgstr ""
+
+#: e2fsck/problem.c:1254
#, c-format
#. @-expanded: inode %i has the casefold flag set but is not a directory.
msgid "@i %i has the casefold flag set but is not a directory. "
msgstr ""
-#: e2fsck/problem.c:1253
+#: e2fsck/problem.c:1259
#, c-format
#. @-expanded: directory %p has the casefold flag, but the\n
#. @-expanded: casefold feature is not enabled.
@@ -2043,7 +2029,30 @@ msgid ""
"casefold feature is not enabled. "
msgstr ""
-#: e2fsck/problem.c:1260
+#: e2fsck/problem.c:1264
+#, c-format
+#. @-expanded: inode %i has encrypt flag but no encryption extended attribute.\n
+msgid "@i %i has encrypt flag but no encryption @a.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1269
+#, c-format
+#. @-expanded: Encrypted inode %i has corrupt encryption extended attribute.\n
+msgid "Encrypted @i %i has corrupt encryption @a.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1274
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr ""
+
+#: e2fsck/problem.c:1279
+#, c-format
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+msgid "@h %i uses SipHash, but should not. "
+msgstr ""
+
+#: e2fsck/problem.c:1287
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
@@ -2053,45 +2062,45 @@ msgid ""
"Pass 1B: Rescanning for @m @bs\n"
msgstr ""
-#: e2fsck/problem.c:1267
+#: e2fsck/problem.c:1294
#, no-c-format
#. @-expanded: multiply-claimed block(s) in inode %i:
msgid "@m @b(s) in @i %i:"
msgstr ""
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1310
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr ""
-#: e2fsck/problem.c:1289
+#: e2fsck/problem.c:1316
#, no-c-format
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr ""
-#: e2fsck/problem.c:1295
+#: e2fsck/problem.c:1322
#, no-c-format
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr ""
-#: e2fsck/problem.c:1300 e2fsck/problem.c:1675
+#: e2fsck/problem.c:1327 e2fsck/problem.c:1707
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr ""
-#: e2fsck/problem.c:1310
+#: e2fsck/problem.c:1337
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr ""
-#: e2fsck/problem.c:1316
+#: e2fsck/problem.c:1343
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr ""
-#: e2fsck/problem.c:1321
+#: e2fsck/problem.c:1348
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
msgid ""
@@ -2099,17 +2108,17 @@ msgid ""
" has %r @m @b(s), shared with %N file(s):\n"
msgstr ""
-#: e2fsck/problem.c:1327
+#: e2fsck/problem.c:1354
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr ""
-#: e2fsck/problem.c:1332
+#: e2fsck/problem.c:1359
#. @-expanded: \t<filesystem metadata>\n
msgid "\t<@f metadata>\n"
msgstr ""
-#: e2fsck/problem.c:1337
+#: e2fsck/problem.c:1364
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
msgid ""
@@ -2117,7 +2126,7 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1342
+#: e2fsck/problem.c:1369
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
msgid ""
@@ -2125,343 +2134,348 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1383
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr ""
-#: e2fsck/problem.c:1362
+#: e2fsck/problem.c:1389
#. @-expanded: Pass 1E: Optimizing extent trees\n
msgid "Pass 1E: Optimizing @x trees\n"
msgstr ""
-#: e2fsck/problem.c:1368
+#: e2fsck/problem.c:1395
#, no-c-format
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr ""
-#: e2fsck/problem.c:1373
+#: e2fsck/problem.c:1400
#. @-expanded: Optimizing extent trees:
msgid "Optimizing @x trees: "
msgstr ""
-#: e2fsck/problem.c:1388
+#: e2fsck/problem.c:1415
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr ""
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1420
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr ""
-#: e2fsck/problem.c:1398
+#: e2fsck/problem.c:1425
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr ""
-#: e2fsck/problem.c:1405
+#: e2fsck/problem.c:1432
#. @-expanded: Pass 2: Checking directory structure\n
msgid "Pass 2: Checking @d structure\n"
msgstr ""
-#: e2fsck/problem.c:1411
+#: e2fsck/problem.c:1438
#, no-c-format
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr ""
-#: e2fsck/problem.c:1416
+#: e2fsck/problem.c:1443
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
msgid "@E has @n @i #: %Di.\n"
msgstr ""
-#: e2fsck/problem.c:1421
+#: e2fsck/problem.c:1448
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
msgid "@E has @D/unused @i %Di. "
msgstr ""
-#: e2fsck/problem.c:1426
+#: e2fsck/problem.c:1453
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
msgid "@E @L to '.' "
msgstr ""
-#: e2fsck/problem.c:1431
+#: e2fsck/problem.c:1458
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr ""
-#: e2fsck/problem.c:1436
+#: e2fsck/problem.c:1463
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
msgid "@E @L to @d %P (%Di).\n"
msgstr ""
-#: e2fsck/problem.c:1441
+#: e2fsck/problem.c:1468
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
msgid "@E @L to the @r.\n"
msgstr ""
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1473
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
msgid "@E has illegal characters in its name.\n"
msgstr ""
-#: e2fsck/problem.c:1452
+#: e2fsck/problem.c:1479
#, no-c-format
#. @-expanded: Missing '.' in directory inode %i.\n
msgid "Missing '.' in @d @i %i.\n"
msgstr ""
-#: e2fsck/problem.c:1458
+#: e2fsck/problem.c:1485
#, no-c-format
#. @-expanded: Missing '..' in directory inode %i.\n
msgid "Missing '..' in @d @i %i.\n"
msgstr ""
-#: e2fsck/problem.c:1463
+#: e2fsck/problem.c:1490
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr ""
-#: e2fsck/problem.c:1468
+#: e2fsck/problem.c:1495
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr ""
-#: e2fsck/problem.c:1473
+#: e2fsck/problem.c:1500
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
msgid "i_faddr @F %IF, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1478
+#: e2fsck/problem.c:1505
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
msgid "i_file_acl @F %If, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1483
+#: e2fsck/problem.c:1510
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
msgid "i_size_high @F %Id, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1488
+#: e2fsck/problem.c:1515
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
msgid "i_frag @F %N, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1493
+#: e2fsck/problem.c:1520
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
msgid "i_fsize @F %N, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1498
+#: e2fsck/problem.c:1525
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr ""
-#: e2fsck/problem.c:1503
+#: e2fsck/problem.c:1530
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr ""
-#: e2fsck/problem.c:1508
+#: e2fsck/problem.c:1535
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr ""
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1540
#. @-expanded: directory inode %i has an unallocated %B.
msgid "@d @i %i has an unallocated %B. "
msgstr ""
-#: e2fsck/problem.c:1519
+#: e2fsck/problem.c:1546
#, no-c-format
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr ""
-#: e2fsck/problem.c:1525
+#: e2fsck/problem.c:1552
#, no-c-format
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr ""
-#: e2fsck/problem.c:1530
+#: e2fsck/problem.c:1557
#. @-expanded: inode %i (%Q) is an illegal character device.\n
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr ""
-#: e2fsck/problem.c:1535
+#: e2fsck/problem.c:1562
#. @-expanded: inode %i (%Q) is an illegal block device.\n
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr ""
-#: e2fsck/problem.c:1540
+#: e2fsck/problem.c:1567
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
msgid "@E is duplicate '.' @e.\n"
msgstr ""
-#: e2fsck/problem.c:1545
+#: e2fsck/problem.c:1572
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
msgid "@E is duplicate '..' @e.\n"
msgstr ""
-#: e2fsck/problem.c:1551 e2fsck/problem.c:1910
+#: e2fsck/problem.c:1578 e2fsck/problem.c:1963
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr ""
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1583
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr ""
-#: e2fsck/problem.c:1562
+#: e2fsck/problem.c:1589
#, no-c-format
#. @-expanded: error allocating icount structure: %m\n
msgid "@A icount structure: %m\n"
msgstr ""
-#: e2fsck/problem.c:1568
+#: e2fsck/problem.c:1595
#, no-c-format
#. @-expanded: Error iterating over directory blocks: %m\n
msgid "Error iterating over @d @bs: %m\n"
msgstr ""
-#: e2fsck/problem.c:1573
+#: e2fsck/problem.c:1600
#. @-expanded: Error reading directory block %b (inode %i): %m\n
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr ""
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1605
#. @-expanded: Error writing directory block %b (inode %i): %m\n
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr ""
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1611
#, no-c-format
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr ""
-#: e2fsck/problem.c:1590
+#: e2fsck/problem.c:1617
#, no-c-format
#. @-expanded: Error deallocating inode %i: %m\n
msgid "Error deallocating @i %i: %m\n"
msgstr ""
-#: e2fsck/problem.c:1596
+#: e2fsck/problem.c:1623
#, no-c-format
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr ""
-#: e2fsck/problem.c:1601
+#: e2fsck/problem.c:1628
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr ""
-#: e2fsck/problem.c:1606
+#: e2fsck/problem.c:1633
#. @-expanded: inode %i (%Q) is an illegal socket.\n
msgid "@i %i (%Q) is an @I socket.\n"
msgstr ""
-#: e2fsck/problem.c:1611
+#: e2fsck/problem.c:1638
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
msgid "Setting filetype for @E to %N.\n"
msgstr ""
-#: e2fsck/problem.c:1616
+#: e2fsck/problem.c:1643
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr ""
-#: e2fsck/problem.c:1621
+#: e2fsck/problem.c:1648
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
msgid "@E has filetype set.\n"
msgstr ""
-#: e2fsck/problem.c:1626
+#: e2fsck/problem.c:1653
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
msgid "@E has a @z name.\n"
msgstr ""
-#: e2fsck/problem.c:1631
+#: e2fsck/problem.c:1658
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr ""
-#: e2fsck/problem.c:1636
+#: e2fsck/problem.c:1663
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
msgid "@a @b @F @n (%If).\n"
msgstr ""
-#: e2fsck/problem.c:1641
+#: e2fsck/problem.c:1668
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr ""
-#: e2fsck/problem.c:1646
+#: e2fsck/problem.c:1673
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
msgid "@p @h %d: %B not referenced\n"
msgstr ""
-#: e2fsck/problem.c:1651
+#: e2fsck/problem.c:1678
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
msgid "@p @h %d: %B referenced twice\n"
msgstr ""
-#: e2fsck/problem.c:1656
+#: e2fsck/problem.c:1683
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
msgid "@p @h %d: %B has bad min hash\n"
msgstr ""
-#: e2fsck/problem.c:1661
+#: e2fsck/problem.c:1688
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
msgid "@p @h %d: %B has bad max hash\n"
msgstr ""
-#: e2fsck/problem.c:1666
+#: e2fsck/problem.c:1693
#. @-expanded: invalid HTREE directory inode %d (%q).
msgid "@n @h %d (%q). "
msgstr ""
-#: e2fsck/problem.c:1670
+#: e2fsck/problem.c:1697
+#. @-expanded: filesystem has large directories, but lacks LARGE_DIR flag in superblock.\n
+msgid "@f has large directories, but lacks LARGE_DIR flag in @S.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1702
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr ""
-#: e2fsck/problem.c:1681
+#: e2fsck/problem.c:1713
#, no-c-format
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
msgid "@p @h %d: root node is @n\n"
msgstr ""
-#: e2fsck/problem.c:1686
+#: e2fsck/problem.c:1718
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr ""
-#: e2fsck/problem.c:1691
+#: e2fsck/problem.c:1723
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr ""
-#: e2fsck/problem.c:1696
+#: e2fsck/problem.c:1728
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr ""
-#: e2fsck/problem.c:1701
+#: e2fsck/problem.c:1733
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr ""
-#: e2fsck/problem.c:1706
+#: e2fsck/problem.c:1738
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
msgid "Duplicate @E found. "
msgstr ""
-#: e2fsck/problem.c:1711
+#: e2fsck/problem.c:1743
#, no-c-format
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
@@ -2470,7 +2484,7 @@ msgid ""
"Rename to %s"
msgstr ""
-#: e2fsck/problem.c:1716
+#: e2fsck/problem.c:1748
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
@@ -2480,154 +2494,175 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1721
+#: e2fsck/problem.c:1753
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1726
+#: e2fsck/problem.c:1758
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
msgid "Unexpected @b in @h %d (%q).\n"
msgstr ""
-#: e2fsck/problem.c:1731
+#: e2fsck/problem.c:1763
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr ""
-#: e2fsck/problem.c:1736
+#: e2fsck/problem.c:1768
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr ""
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1773
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr ""
-#: e2fsck/problem.c:1747
+#: e2fsck/problem.c:1779
#, no-c-format
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
msgid "@p @h %d: root node fails checksum.\n"
msgstr ""
-#: e2fsck/problem.c:1753
+#: e2fsck/problem.c:1785
#, no-c-format
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
msgid "@p @h %d: internal node fails checksum.\n"
msgstr ""
-#: e2fsck/problem.c:1758
+#: e2fsck/problem.c:1790
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr ""
-#: e2fsck/problem.c:1763
+#: e2fsck/problem.c:1795
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr ""
-#: e2fsck/problem.c:1768
+#: e2fsck/problem.c:1800
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr ""
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1806
#, no-c-format
#. @-expanded: Fixing size of inline directory inode %i failed.\n
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr ""
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1811
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
msgid "Encrypted @E is too short.\n"
msgstr ""
-#: e2fsck/problem.c:1786
+#: e2fsck/problem.c:1816
+#. @-expanded: Encrypted entry '%Dn' in %p (%i) references unencrypted inode %Di.\n
+msgid "Encrypted @E references unencrypted @i %Di.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1821
+#. @-expanded: Encrypted entry '%Dn' in %p (%i) references inode %Di, which has a different encryption policy.\n
+msgid ""
+"Encrypted @E references @i %Di, which has a different encryption policy.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1826
+#. @-expanded: entry '%Dn' in %p (%i) has illegal UTF-8 characters in its name.\n
+msgid "@E has illegal UTF-8 characters in its name.\n"
+msgstr ""
+
+#: e2fsck/problem.c:1831
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+msgid "Duplicate filename @E found. "
+msgstr ""
+
+#: e2fsck/problem.c:1839
#. @-expanded: Pass 3: Checking directory connectivity\n
msgid "Pass 3: Checking @d connectivity\n"
msgstr ""
-#: e2fsck/problem.c:1791
+#: e2fsck/problem.c:1844
#. @-expanded: root inode not allocated.
msgid "@r not allocated. "
msgstr ""
-#: e2fsck/problem.c:1796
+#: e2fsck/problem.c:1849
#. @-expanded: No room in lost+found directory.
msgid "No room in @l @d. "
msgstr ""
-#: e2fsck/problem.c:1802
+#: e2fsck/problem.c:1855
#, no-c-format
#. @-expanded: Unconnected directory inode %i (%p)\n
msgid "Unconnected @d @i %i (%p)\n"
msgstr ""
-#: e2fsck/problem.c:1807
+#: e2fsck/problem.c:1860
#. @-expanded: /lost+found not found.
msgid "/@l not found. "
msgstr ""
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1865
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr ""
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1871
#, no-c-format
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr ""
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1877
#, no-c-format
#. @-expanded: Could not expand /lost+found: %m\n
msgid "Could not expand /@l: %m\n"
msgstr ""
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1883
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr ""
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1889
#, no-c-format
#. @-expanded: Error while trying to find /lost+found: %m\n
msgid "Error while trying to find /@l: %m\n"
msgstr ""
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1895
#, no-c-format
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr ""
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1901
#, no-c-format
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr ""
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1907
#, no-c-format
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr ""
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1913
#, no-c-format
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr ""
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1919
#, no-c-format
#. @-expanded: Error while adjusting inode count on inode %i\n
msgid "Error while adjusting @i count on @i %i\n"
msgstr ""
-#: e2fsck/problem.c:1872
+#: e2fsck/problem.c:1925
#, no-c-format
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
@@ -2636,7 +2671,7 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1878
+#: e2fsck/problem.c:1931
#, no-c-format
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
@@ -2645,40 +2680,40 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1889
+#: e2fsck/problem.c:1942
#, no-c-format
#. @-expanded: Error creating root directory (%s): %m\n
msgid "Error creating root @d (%s): %m\n"
msgstr ""
-#: e2fsck/problem.c:1895
+#: e2fsck/problem.c:1948
#, no-c-format
#. @-expanded: Error creating /lost+found directory (%s): %m\n
msgid "Error creating /@l @d (%s): %m\n"
msgstr ""
-#: e2fsck/problem.c:1900
+#: e2fsck/problem.c:1953
#. @-expanded: root inode is not a directory; aborting.\n
msgid "@r is not a @d; aborting.\n"
msgstr ""
-#: e2fsck/problem.c:1905
+#: e2fsck/problem.c:1958
#. @-expanded: Cannot proceed without a root inode.\n
msgid "Cannot proceed without a @r.\n"
msgstr ""
-#: e2fsck/problem.c:1916
+#: e2fsck/problem.c:1969
#, no-c-format
#. @-expanded: /lost+found is not a directory (ino=%i)\n
msgid "/@l is not a @d (ino=%i)\n"
msgstr ""
-#: e2fsck/problem.c:1921
+#: e2fsck/problem.c:1974
#. @-expanded: /lost+found has inline data\n
msgid "/@l has inline data\n"
msgstr ""
-#: e2fsck/problem.c:1926
+#: e2fsck/problem.c:1979
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
msgid ""
@@ -2686,7 +2721,7 @@ msgid ""
"Place lost files in root directory instead"
msgstr ""
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1984
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
@@ -2696,50 +2731,50 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/problem.c:1936
+#: e2fsck/problem.c:1989
#. @-expanded: /lost+found is encrypted\n
msgid "/@l is encrypted\n"
msgstr ""
-#: e2fsck/problem.c:1943
+#: e2fsck/problem.c:1996
msgid "Pass 3A: Optimizing directories\n"
msgstr ""
-#: e2fsck/problem.c:1949
+#: e2fsck/problem.c:2002
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr ""
-#: e2fsck/problem.c:1954
+#: e2fsck/problem.c:2007
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr ""
-#: e2fsck/problem.c:1959
+#: e2fsck/problem.c:2012
msgid "Optimizing directories: "
msgstr ""
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2029
msgid "Pass 4: Checking reference counts\n"
msgstr ""
-#: e2fsck/problem.c:1982
+#: e2fsck/problem.c:2035
#, no-c-format
#. @-expanded: unattached zero-length inode %i.
msgid "@u @z @i %i. "
msgstr ""
-#: e2fsck/problem.c:1988
+#: e2fsck/problem.c:2041
#, no-c-format
#. @-expanded: unattached inode %i\n
msgid "@u @i %i\n"
msgstr ""
-#: e2fsck/problem.c:1993
+#: e2fsck/problem.c:2046
#. @-expanded: inode %i ref count is %Il, should be %N.
msgid "@i %i ref count is %Il, @s %N. "
msgstr ""
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2050
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
@@ -2749,67 +2784,72 @@ msgid ""
"@i_link_info[%i] is %N, @i.i_links_count is %Il. They @s the same!\n"
msgstr ""
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2057
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
msgid "@a @i %i ref count is %N, @s %n. "
msgstr ""
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2062
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr ""
-#: e2fsck/problem.c:2016
+#: e2fsck/problem.c:2067
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr ""
+
+#: e2fsck/problem.c:2074
#. @-expanded: Pass 5: Checking group summary information\n
msgid "Pass 5: Checking @g summary information\n"
msgstr ""
-#: e2fsck/problem.c:2021
+#: e2fsck/problem.c:2079
#. @-expanded: Padding at end of inode bitmap is not set.
msgid "Padding at end of @i @B is not set. "
msgstr ""
-#: e2fsck/problem.c:2026
+#: e2fsck/problem.c:2084
#. @-expanded: Padding at end of block bitmap is not set.
msgid "Padding at end of @b @B is not set. "
msgstr ""
-#: e2fsck/problem.c:2031
+#: e2fsck/problem.c:2089
#. @-expanded: block bitmap differences:
msgid "@b @B differences: "
msgstr ""
-#: e2fsck/problem.c:2053
+#: e2fsck/problem.c:2111
#. @-expanded: inode bitmap differences:
msgid "@i @B differences: "
msgstr ""
-#: e2fsck/problem.c:2075
+#: e2fsck/problem.c:2133
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr ""
-#: e2fsck/problem.c:2080
+#: e2fsck/problem.c:2138
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr ""
-#: e2fsck/problem.c:2085
+#: e2fsck/problem.c:2143
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr ""
-#: e2fsck/problem.c:2090
+#: e2fsck/problem.c:2148
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr ""
-#: e2fsck/problem.c:2095
+#: e2fsck/problem.c:2153
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr ""
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2158
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
msgid ""
@@ -2817,81 +2857,81 @@ msgid ""
"endpoints (%i, %j)\n"
msgstr ""
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2164
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr ""
-#: e2fsck/problem.c:2112
+#: e2fsck/problem.c:2170
#, no-c-format
#. @-expanded: Error copying in replacement inode bitmap: %m\n
msgid "Error copying in replacement @i @B: %m\n"
msgstr ""
-#: e2fsck/problem.c:2118
+#: e2fsck/problem.c:2176
#, no-c-format
#. @-expanded: Error copying in replacement block bitmap: %m\n
msgid "Error copying in replacement @b @B: %m\n"
msgstr ""
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2206
#, no-c-format
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr ""
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2212
#, no-c-format
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr ""
-#: e2fsck/problem.c:2160
+#: e2fsck/problem.c:2218
#, no-c-format
#. @-expanded: group %g inode bitmap does not match checksum.\n
msgid "@g %g @i @B does not match checksum.\n"
msgstr ""
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2224
#, no-c-format
#. @-expanded: group %g block bitmap does not match checksum.\n
msgid "@g %g @b @B does not match checksum.\n"
msgstr ""
-#: e2fsck/problem.c:2173
+#: e2fsck/problem.c:2231
#. @-expanded: Recreate journal
msgid "Recreate @j"
msgstr ""
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2236
msgid "Update quota info for quota type %N"
msgstr ""
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2242
#, no-c-format
#. @-expanded: Error setting block group checksum info: %m\n
msgid "Error setting @b @g checksum info: %m\n"
msgstr ""
-#: e2fsck/problem.c:2190
+#: e2fsck/problem.c:2248
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr ""
-#: e2fsck/problem.c:2196
+#: e2fsck/problem.c:2254
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr ""
-#: e2fsck/problem.c:2201
+#: e2fsck/problem.c:2259
msgid "Error writing quota info for quota type %N: %m\n"
msgstr ""
-#: e2fsck/problem.c:2364
+#: e2fsck/problem.c:2422
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr ""
-#: e2fsck/problem.c:2494 e2fsck/problem.c:2498
+#: e2fsck/problem.c:2552 e2fsck/problem.c:2556
msgid "IGNORED"
msgstr ""
@@ -2901,7 +2941,7 @@ msgstr ""
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
msgstr ""
#: e2fsck/scantest.c:98
@@ -2909,6 +2949,10 @@ msgstr ""
msgid "size of inode=%d\n"
msgstr ""
+#: e2fsck/scantest.c:114 misc/e2image.c:1330
+msgid "while opening inode scan"
+msgstr ""
+
#: e2fsck/scantest.c:119
msgid "while starting inode scan"
msgstr ""
@@ -2971,7 +3015,7 @@ msgstr ""
msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
msgstr ""
-#: e2fsck/unix.c:163
+#: e2fsck/unix.c:164
#, c-format
msgid ""
"\n"
@@ -2982,51 +3026,51 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:167
+#: e2fsck/unix.c:168
#, c-format
msgid "%12u non-contiguous file (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:172
+#: e2fsck/unix.c:173
#, c-format
msgid "%12u non-contiguous directory (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:177
+#: e2fsck/unix.c:178
#, c-format
msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
msgstr ""
-#: e2fsck/unix.c:185
+#: e2fsck/unix.c:186
msgid " Extent depth histogram: "
msgstr ""
-#: e2fsck/unix.c:194
+#: e2fsck/unix.c:195
#, c-format
msgid "%12llu block used (%2.2f%%, out of %llu)\n"
msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:198
+#: e2fsck/unix.c:200
#, c-format
msgid "%12u bad block\n"
msgid_plural "%12u bad blocks\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:200
+#: e2fsck/unix.c:202
#, c-format
msgid "%12u large file\n"
msgid_plural "%12u large files\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:202
+#: e2fsck/unix.c:204
#, c-format
msgid ""
"\n"
@@ -3037,102 +3081,102 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:204
+#: e2fsck/unix.c:206
#, c-format
msgid "%12u directory\n"
msgid_plural "%12u directories\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:206
+#: e2fsck/unix.c:208
#, c-format
msgid "%12u character device file\n"
msgid_plural "%12u character device files\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:209
+#: e2fsck/unix.c:211
#, c-format
msgid "%12u block device file\n"
msgid_plural "%12u block device files\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:211
+#: e2fsck/unix.c:213
#, c-format
msgid "%12u fifo\n"
msgid_plural "%12u fifos\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:213
+#: e2fsck/unix.c:215
#, c-format
msgid "%12u link\n"
msgid_plural "%12u links\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:215
+#: e2fsck/unix.c:217
#, c-format
msgid "%12u symbolic link"
msgid_plural "%12u symbolic links"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:217
+#: e2fsck/unix.c:219
#, c-format
msgid " (%u fast symbolic link)\n"
msgid_plural " (%u fast symbolic links)\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:221
+#: e2fsck/unix.c:223
#, c-format
msgid "%12u socket\n"
msgid_plural "%12u sockets\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:225
+#: e2fsck/unix.c:227
#, c-format
msgid "%12u file\n"
msgid_plural "%12u files\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:240 misc/badblocks.c:1001 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr ""
-#: e2fsck/unix.c:259
+#: e2fsck/unix.c:261
#, c-format
msgid "Warning! %s is mounted.\n"
msgstr ""
-#: e2fsck/unix.c:262
+#: e2fsck/unix.c:264
#, c-format
msgid "Warning! %s is in use.\n"
msgstr ""
-#: e2fsck/unix.c:268
+#: e2fsck/unix.c:270
#, c-format
msgid "%s is mounted.\n"
msgstr ""
-#: e2fsck/unix.c:270
+#: e2fsck/unix.c:272
#, c-format
msgid "%s is in use.\n"
msgstr ""
-#: e2fsck/unix.c:272
+#: e2fsck/unix.c:274
msgid ""
"Cannot continue, aborting.\n"
"\n"
msgstr ""
-#: e2fsck/unix.c:274
+#: e2fsck/unix.c:276
msgid ""
"\n"
"\n"
@@ -3141,85 +3185,85 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:279
+#: e2fsck/unix.c:281
msgid "Do you really want to continue"
msgstr ""
-#: e2fsck/unix.c:281
+#: e2fsck/unix.c:283
msgid "check aborted.\n"
msgstr ""
-#: e2fsck/unix.c:375
+#: e2fsck/unix.c:377
msgid " contains a file system with errors"
msgstr ""
-#: e2fsck/unix.c:377
+#: e2fsck/unix.c:379
msgid " was not cleanly unmounted"
msgstr ""
-#: e2fsck/unix.c:379
+#: e2fsck/unix.c:381
msgid " primary superblock features different from backup"
msgstr ""
-#: e2fsck/unix.c:383
+#: e2fsck/unix.c:385
#, c-format
msgid " has been mounted %u times without being checked"
msgstr ""
-#: e2fsck/unix.c:390
+#: e2fsck/unix.c:392
msgid " has filesystem last checked time in the future"
msgstr ""
-#: e2fsck/unix.c:396
+#: e2fsck/unix.c:398
#, c-format
msgid " has gone %u days without being checked"
msgstr ""
-#: e2fsck/unix.c:404
+#: e2fsck/unix.c:406
msgid "ignoring check interval, broken_system_clock set\n"
msgstr ""
-#: e2fsck/unix.c:410
+#: e2fsck/unix.c:412
msgid ", check forced.\n"
msgstr ""
-#: e2fsck/unix.c:443
+#: e2fsck/unix.c:445
#, c-format
msgid "%s: clean, %u/%u files, %llu/%llu blocks"
msgstr ""
-#: e2fsck/unix.c:463
+#: e2fsck/unix.c:465
msgid " (check deferred; on battery)"
msgstr ""
-#: e2fsck/unix.c:466
+#: e2fsck/unix.c:468
msgid " (check after next mount)"
msgstr ""
-#: e2fsck/unix.c:468
+#: e2fsck/unix.c:470
#, c-format
msgid " (check in %ld mounts)"
msgstr ""
-#: e2fsck/unix.c:618
+#: e2fsck/unix.c:620
#, c-format
msgid "ERROR: Couldn't open /dev/null (%s)\n"
msgstr ""
-#: e2fsck/unix.c:689
+#: e2fsck/unix.c:691
msgid "Invalid EA version.\n"
msgstr ""
-#: e2fsck/unix.c:702
+#: e2fsck/unix.c:704
msgid "Invalid readahead buffer size.\n"
msgstr ""
-#: e2fsck/unix.c:757
+#: e2fsck/unix.c:767
#, c-format
msgid "Unknown extended option: %s\n"
msgstr ""
-#: e2fsck/unix.c:765
+#: e2fsck/unix.c:775
msgid ""
"\n"
"Extended options are separated by commas, and may take an argument which\n"
@@ -3227,77 +3271,87 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:769
+#: e2fsck/unix.c:779
msgid "\tea_ver=<ea_version (1 or 2)>\n"
msgstr ""
-#: e2fsck/unix.c:778
+#: e2fsck/unix.c:788
msgid "\treadahead_kb=<buffer size>\n"
msgstr ""
-#: e2fsck/unix.c:790
+#: e2fsck/unix.c:801
#, c-format
msgid ""
"Syntax error in e2fsck config file (%s, line #%d)\n"
"\t%s\n"
msgstr ""
-#: e2fsck/unix.c:863
+#: e2fsck/unix.c:874
#, c-format
msgid "Error validating file descriptor %d: %s\n"
msgstr ""
-#: e2fsck/unix.c:867
+#: e2fsck/unix.c:878
msgid "Invalid completion information file descriptor"
msgstr ""
-#: e2fsck/unix.c:882
+#: e2fsck/unix.c:893
msgid "Only one of the options -p/-a, -n or -y may be specified."
msgstr ""
-#: e2fsck/unix.c:903
+#: e2fsck/unix.c:914
#, c-format
msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr ""
-#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: e2fsck/unix.c:946 e2fsck/unix.c:1024 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1772 misc/tune2fs.c:2072 misc/tune2fs.c:2090
#, c-format
msgid "Unable to resolve '%s'"
msgstr ""
-#: e2fsck/unix.c:991
+#: e2fsck/unix.c:1003
msgid "The -n and -D options are incompatible."
msgstr ""
-#: e2fsck/unix.c:996
+#: e2fsck/unix.c:1008
msgid "The -n and -c options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1001
+#: e2fsck/unix.c:1013
msgid "The -n and -l/-L options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1025
+#: e2fsck/unix.c:1037
msgid "The -D and -E fixes_only options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1031
+#: e2fsck/unix.c:1043
msgid "The -E bmap2extent and fixes_only options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1095
+#: e2fsck/unix.c:1094
+#, c-format
+msgid "while opening %s for flushing"
+msgstr ""
+
+#: e2fsck/unix.c:1100 resize/main.c:385
+#, c-format
+msgid "while trying to flush %s"
+msgstr ""
+
+#: e2fsck/unix.c:1107
msgid "The -c and the -l/-L options may not be both used at the same time.\n"
msgstr ""
-#: e2fsck/unix.c:1142
+#: e2fsck/unix.c:1154
#, c-format
msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
msgstr ""
-#: e2fsck/unix.c:1151
+#: e2fsck/unix.c:1163
#, c-format
msgid ""
"\n"
@@ -3305,31 +3359,31 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:1242
+#: e2fsck/unix.c:1254
#, c-format
msgid ""
"MMP interval is %u seconds and total wait time is %u seconds. Please "
"wait...\n"
msgstr ""
-#: e2fsck/unix.c:1259 e2fsck/unix.c:1264
+#: e2fsck/unix.c:1271 e2fsck/unix.c:1276
msgid "while checking MMP block"
msgstr ""
-#: e2fsck/unix.c:1266
+#: e2fsck/unix.c:1278
#, c-format
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp %s'\n"
msgstr ""
-#: e2fsck/unix.c:1282
+#: e2fsck/unix.c:1294
msgid "while reading MMP block"
msgstr ""
-#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1314 e2fsck/unix.c:1366 misc/e2undo.c:240 misc/e2undo.c:285
+#: misc/mke2fs.c:2724 misc/mke2fs.c:2775 misc/tune2fs.c:2797
+#: misc/tune2fs.c:2842 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3337,210 +3391,210 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1355 misc/e2undo.c:274 misc/mke2fs.c:2764 misc/tune2fs.c:2831
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr ""
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1381 misc/mke2fs.c:2790 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr ""
-#: e2fsck/unix.c:1412
+#: e2fsck/unix.c:1425
msgid "Error: ext2fs library version out of date!\n"
msgstr ""
-#: e2fsck/unix.c:1419
+#: e2fsck/unix.c:1432
msgid "while trying to initialize program"
msgstr ""
-#: e2fsck/unix.c:1456
+#: e2fsck/unix.c:1469
#, c-format
msgid "\tUsing %s, %s\n"
msgstr ""
-#: e2fsck/unix.c:1468
+#: e2fsck/unix.c:1481
msgid "need terminal for interactive repairs"
msgstr ""
-#: e2fsck/unix.c:1529
+#: e2fsck/unix.c:1542
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr ""
-#: e2fsck/unix.c:1531
+#: e2fsck/unix.c:1544
msgid "Superblock invalid,"
msgstr ""
-#: e2fsck/unix.c:1532
+#: e2fsck/unix.c:1545
msgid "Group descriptors look bad..."
msgstr ""
-#: e2fsck/unix.c:1542
+#: e2fsck/unix.c:1555
#, c-format
msgid "%s: %s while using the backup blocks"
msgstr ""
-#: e2fsck/unix.c:1546
+#: e2fsck/unix.c:1559
#, c-format
msgid "%s: going back to original superblock\n"
msgstr ""
-#: e2fsck/unix.c:1575
+#: e2fsck/unix.c:1588
msgid ""
"The filesystem revision is apparently too high for this version of e2fsck.\n"
"(Or the filesystem superblock is corrupt)\n"
"\n"
msgstr ""
-#: e2fsck/unix.c:1582
+#: e2fsck/unix.c:1595
msgid "Could this be a zero-length partition?\n"
msgstr ""
-#: e2fsck/unix.c:1584
+#: e2fsck/unix.c:1597
#, c-format
msgid "You must have %s access to the filesystem or be root\n"
msgstr ""
-#: e2fsck/unix.c:1590
+#: e2fsck/unix.c:1603
msgid "Possibly non-existent or swap device?\n"
msgstr ""
-#: e2fsck/unix.c:1592
+#: e2fsck/unix.c:1605
msgid "Filesystem mounted or opened exclusively by another program?\n"
msgstr ""
-#: e2fsck/unix.c:1596
+#: e2fsck/unix.c:1609
msgid "Possibly non-existent device?\n"
msgstr ""
-#: e2fsck/unix.c:1599
+#: e2fsck/unix.c:1612
msgid ""
"Disk write-protected; use the -n option to do a read-only\n"
"check of the device.\n"
msgstr ""
-#: e2fsck/unix.c:1613
+#: e2fsck/unix.c:1626
#, c-format
msgid "%s: Trying to load superblock despite errors...\n"
msgstr ""
-#: e2fsck/unix.c:1688
+#: e2fsck/unix.c:1701
msgid "Get a newer version of e2fsck!"
msgstr ""
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1761
#, c-format
msgid "while checking journal for %s"
msgstr ""
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1764
msgid "Cannot proceed with file system check"
msgstr ""
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1775
msgid ""
"Warning: skipping journal recovery because doing a read-only filesystem "
"check.\n"
msgstr ""
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1787
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr ""
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1793
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr ""
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1797
#, c-format
msgid "Journal corrupted in %s\n"
msgstr ""
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1801
#, c-format
msgid "while recovering journal of %s"
msgstr ""
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1823
#, c-format
msgid "%s has unsupported feature(s):"
msgstr ""
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1838
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr ""
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1888
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr ""
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1891
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr ""
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1934
#, c-format
msgid "Creating journal (%d blocks): "
msgstr ""
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1943
msgid " Done.\n"
msgstr ""
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1945
msgid ""
"\n"
"*** journal has been regenerated ***\n"
msgstr ""
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1951
msgid "aborted"
msgstr ""
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1953
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr ""
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1980
msgid "Restarting e2fsck from the beginning...\n"
msgstr ""
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1984
msgid "while resetting context"
msgstr ""
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2043
#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
msgstr ""
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2045
#, c-format
msgid "%s: File system was modified.\n"
msgstr ""
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2049 e2fsck/util.c:67
#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
msgstr ""
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2054
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr ""
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2064 e2fsck/util.c:73
#, c-format
msgid ""
"\n"
@@ -3548,96 +3602,96 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:191 misc/util.c:93
msgid "yY"
msgstr ""
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:192 misc/util.c:112
msgid "nN"
msgstr ""
-#: e2fsck/util.c:198
+#: e2fsck/util.c:193
msgid "aA"
msgstr ""
-#: e2fsck/util.c:202
+#: e2fsck/util.c:197
msgid " ('a' enables 'yes' to all) "
msgstr ""
-#: e2fsck/util.c:219
+#: e2fsck/util.c:214
msgid "<y>"
msgstr ""
-#: e2fsck/util.c:221
+#: e2fsck/util.c:216
msgid "<n>"
msgstr ""
-#: e2fsck/util.c:223
+#: e2fsck/util.c:218
msgid " (y/n)"
msgstr ""
-#: e2fsck/util.c:246
+#: e2fsck/util.c:241
msgid "cancelled!\n"
msgstr ""
-#: e2fsck/util.c:279
+#: e2fsck/util.c:274
msgid "yes to all\n"
msgstr ""
-#: e2fsck/util.c:281
+#: e2fsck/util.c:276
msgid "yes\n"
msgstr ""
-#: e2fsck/util.c:283
+#: e2fsck/util.c:278
msgid "no\n"
msgstr ""
-#: e2fsck/util.c:293
+#: e2fsck/util.c:288
#, c-format
msgid ""
"%s? no\n"
"\n"
msgstr ""
-#: e2fsck/util.c:297
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? yes\n"
"\n"
msgstr ""
-#: e2fsck/util.c:301
+#: e2fsck/util.c:296
msgid "yes"
msgstr ""
-#: e2fsck/util.c:301
+#: e2fsck/util.c:296
msgid "no"
msgstr ""
-#: e2fsck/util.c:317
+#: e2fsck/util.c:312
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr ""
-#: e2fsck/util.c:322
+#: e2fsck/util.c:317
msgid "reading inode and block bitmaps"
msgstr ""
-#: e2fsck/util.c:334
+#: e2fsck/util.c:329
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr ""
-#: e2fsck/util.c:346
+#: e2fsck/util.c:341
msgid "writing block and inode bitmaps"
msgstr ""
-#: e2fsck/util.c:351
+#: e2fsck/util.c:346
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr ""
-#: e2fsck/util.c:363
+#: e2fsck/util.c:358
#, c-format
msgid ""
"\n"
@@ -3646,37 +3700,37 @@ msgid ""
"\t(i.e., without -a or -p options)\n"
msgstr ""
-#: e2fsck/util.c:444
+#: e2fsck/util.c:438
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
msgstr ""
-#: e2fsck/util.c:448
+#: e2fsck/util.c:444
#, c-format
-msgid "Memory used: %lu, "
+msgid "Memory used: %lluk, "
msgstr ""
-#: e2fsck/util.c:455
+#: e2fsck/util.c:450
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr ""
-#: e2fsck/util.c:460
+#: e2fsck/util.c:455
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr ""
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:490 e2fsck/util.c:504
#, c-format
msgid "while reading inode %lu in %s"
msgstr ""
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:518 e2fsck/util.c:531
#, c-format
msgid "while writing inode %lu in %s"
msgstr ""
-#: e2fsck/util.c:792
+#: e2fsck/util.c:790
msgid ""
"UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
"running.\n"
@@ -3787,160 +3841,170 @@ msgstr ""
msgid "during test data write, block %lu"
msgstr ""
-#: misc/badblocks.c:1007 misc/util.c:134
+#: misc/badblocks.c:1006 misc/util.c:134
#, c-format
msgid "%s is mounted; "
msgstr ""
-#: misc/badblocks.c:1009
+#: misc/badblocks.c:1008
msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n"
msgstr ""
-#: misc/badblocks.c:1014
+#: misc/badblocks.c:1013
msgid "it's not safe to run badblocks!\n"
msgstr ""
-#: misc/badblocks.c:1019 misc/util.c:145
+#: misc/badblocks.c:1018 misc/util.c:145
#, c-format
msgid "%s is apparently in use by the system; "
msgstr ""
-#: misc/badblocks.c:1022
+#: misc/badblocks.c:1021
msgid "badblocks forced anyway.\n"
msgstr ""
-#: misc/badblocks.c:1042
+#: misc/badblocks.c:1041
#, c-format
msgid "invalid %s - %s"
msgstr ""
-#: misc/badblocks.c:1136
+#: misc/badblocks.c:1135
#, c-format
msgid "Too big max bad blocks count %u - maximum is %u"
msgstr ""
-#: misc/badblocks.c:1163
+#: misc/badblocks.c:1162
#, c-format
msgid "can't allocate memory for test_pattern - %s"
msgstr ""
-#: misc/badblocks.c:1193
+#: misc/badblocks.c:1192
msgid "Maximum of one test_pattern may be specified in read-only mode"
msgstr ""
-#: misc/badblocks.c:1199
+#: misc/badblocks.c:1198
msgid "Random test_pattern is not allowed in read-only mode"
msgstr ""
-#: misc/badblocks.c:1213
+#: misc/badblocks.c:1205
+#, c-format
+msgid "Invalid block size: %d\n"
+msgstr ""
+
+#: misc/badblocks.c:1211
+#, c-format
+msgid "Invalid blocks_at_once: %d\n"
+msgstr ""
+
+#: misc/badblocks.c:1225
msgid ""
"Couldn't determine device size; you must specify\n"
"the size manually\n"
msgstr ""
-#: misc/badblocks.c:1219
+#: misc/badblocks.c:1231
msgid "while trying to determine device size"
msgstr ""
-#: misc/badblocks.c:1224
+#: misc/badblocks.c:1236
msgid "last block"
msgstr ""
-#: misc/badblocks.c:1230
+#: misc/badblocks.c:1242
msgid "first block"
msgstr ""
-#: misc/badblocks.c:1233
+#: misc/badblocks.c:1245
#, c-format
msgid "invalid starting block (%llu): must be less than %llu"
msgstr ""
-#: misc/badblocks.c:1240
+#: misc/badblocks.c:1253
#, c-format
msgid "invalid end block (%llu): must be 32-bit value"
msgstr ""
-#: misc/badblocks.c:1296
+#: misc/badblocks.c:1309
msgid "while creating in-memory bad blocks list"
msgstr ""
-#: misc/badblocks.c:1305
+#: misc/badblocks.c:1318
msgid "input file - bad format"
msgstr ""
-#: misc/badblocks.c:1313 misc/badblocks.c:1322
+#: misc/badblocks.c:1326 misc/badblocks.c:1335
msgid "while adding to in-memory bad block list"
msgstr ""
-#: misc/badblocks.c:1347
+#: misc/badblocks.c:1360
#, c-format
msgid "Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"
msgstr ""
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
msgstr ""
-#: misc/chattr.c:160
+#: misc/chattr.c:162
#, c-format
msgid "bad project - %s\n"
msgstr ""
-#: misc/chattr.c:174
+#: misc/chattr.c:176
#, c-format
msgid "bad version - %s\n"
msgstr ""
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr ""
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr ""
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr ""
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr ""
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr ""
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr ""
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr ""
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr ""
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr ""
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr ""
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr ""
@@ -3949,8 +4013,8 @@ msgstr ""
msgid "while reading inode %u"
msgstr ""
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:297 misc/create_inode.c:362
+#: misc/create_inode.c:400
msgid "while expanding directory"
msgstr ""
@@ -3959,143 +4023,152 @@ msgstr ""
msgid "while linking \"%s\""
msgstr ""
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:331
#, c-format
msgid "while writing inode %u"
msgstr ""
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:185
#, c-format
msgid "while listing attributes of \"%s\""
msgstr ""
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr ""
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
-#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
-#: misc/mke2fs.c:359
+#: misc/create_inode.c:172
+#, c-format
+msgid "while reading xattrs for inode %u"
+msgstr ""
+
+#: misc/create_inode.c:178 misc/create_inode.c:205 misc/create_inode.c:1065
+#: misc/e2undo.c:186 misc/e2undo.c:483 misc/e2undo.c:489 misc/e2undo.c:495
+#: misc/mke2fs.c:361
msgid "while allocating memory"
msgstr ""
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:198 misc/create_inode.c:214
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr ""
-#: misc/create_inode.c:214
+#: misc/create_inode.c:223
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr ""
-#: misc/create_inode.c:224
+#: misc/create_inode.c:233
#, c-format
msgid "while closing inode %u"
msgstr ""
-#: misc/create_inode.c:275
+#: misc/create_inode.c:284
#, c-format
msgid "while allocating inode \"%s\""
msgstr ""
-#: misc/create_inode.c:294
+#: misc/create_inode.c:303
#, c-format
msgid "while creating inode \"%s\""
msgstr ""
-#: misc/create_inode.c:360
+#: misc/create_inode.c:369
#, c-format
msgid "while creating symlink \"%s\""
msgstr ""
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:387 misc/create_inode.c:651 misc/create_inode.c:985
#, c-format
msgid "while looking up \"%s\""
msgstr ""
-#: misc/create_inode.c:398
+#: misc/create_inode.c:407
#, c-format
msgid "while creating directory \"%s\""
msgstr ""
-#: misc/create_inode.c:627
+#: misc/create_inode.c:637
#, c-format
msgid "while opening \"%s\" to copy"
msgstr ""
-#: misc/create_inode.c:805
+#: misc/create_inode.c:827
#, c-format
msgid "while changing working directory to \"%s\""
msgstr ""
-#: misc/create_inode.c:815
+#: misc/create_inode.c:837
#, c-format
msgid "while scanning directory \"%s\""
msgstr ""
-#: misc/create_inode.c:825
+#: misc/create_inode.c:847
#, c-format
msgid "while lstat \"%s\""
msgstr ""
-#: misc/create_inode.c:875
+#: misc/create_inode.c:897
#, c-format
msgid "while creating special file \"%s\""
msgstr ""
-#: misc/create_inode.c:884
+#: misc/create_inode.c:906
msgid "malloc failed"
msgstr ""
-#: misc/create_inode.c:892
+#: misc/create_inode.c:914
#, c-format
msgid "while trying to read link \"%s\""
msgstr ""
-#: misc/create_inode.c:899
+#: misc/create_inode.c:921
msgid "symlink increased in size between lstat() and readlink()"
msgstr ""
-#: misc/create_inode.c:910
+#: misc/create_inode.c:932
#, c-format
msgid "while writing symlink\"%s\""
msgstr ""
-#: misc/create_inode.c:921
+#: misc/create_inode.c:943
#, c-format
msgid "while writing file \"%s\""
msgstr ""
-#: misc/create_inode.c:934
+#: misc/create_inode.c:956
#, c-format
msgid "while making dir \"%s\""
msgstr ""
-#: misc/create_inode.c:952
+#: misc/create_inode.c:974
msgid "while changing directory"
msgstr ""
-#: misc/create_inode.c:958
+#: misc/create_inode.c:980
#, c-format
msgid "ignoring entry \"%s\""
msgstr ""
-#: misc/create_inode.c:971
+#: misc/create_inode.c:993
#, c-format
msgid "while setting inode for \"%s\""
msgstr ""
-#: misc/create_inode.c:978
+#: misc/create_inode.c:1000
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr ""
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1026
msgid "while saving inode data"
msgstr ""
+#: misc/create_inode.c:1076
+msgid "while copying xattrs on root directory"
+msgstr ""
+
#: misc/dumpe2fs.c:56
#, c-format
msgid ""
@@ -4210,54 +4283,54 @@ msgstr ""
msgid "Bad blocks: %u"
msgstr ""
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:374 misc/tune2fs.c:378
msgid "while reading journal inode"
msgstr ""
-#: misc/dumpe2fs.c:379
+#: misc/dumpe2fs.c:380
msgid "while opening journal inode"
msgstr ""
-#: misc/dumpe2fs.c:385
+#: misc/dumpe2fs.c:386
msgid "while reading journal super block"
msgstr ""
-#: misc/dumpe2fs.c:392
+#: misc/dumpe2fs.c:393
msgid "Journal superblock magic number invalid!\n"
msgstr ""
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:413 misc/tune2fs.c:221
msgid "while reading journal superblock"
msgstr ""
-#: misc/dumpe2fs.c:417
+#: misc/dumpe2fs.c:421
msgid "Couldn't find journal superblock magic numbers"
msgstr ""
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:476
msgid "failed to alloc MMP buffer\n"
msgstr ""
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:487
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr ""
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:519 misc/mke2fs.c:809 misc/tune2fs.c:2112
msgid "Couldn't allocate memory to parse options!\n"
msgstr ""
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:545
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr ""
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:560
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr ""
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:571
#, c-format
msgid ""
"\n"
@@ -4271,27 +4344,27 @@ msgid ""
"\tblocksize=<blocksize>\n"
msgstr ""
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:661 misc/mke2fs.c:1907
#, c-format
msgid "\tUsing %s\n"
msgstr ""
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:708 misc/e2image.c:1637 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr ""
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:730
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr ""
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:761
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr ""
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:770
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4300,8 +4373,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
msgid ""
-"Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device "
-"image-file\n"
+"Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-"
+"file\n"
msgstr ""
#: misc/e2image.c:110
@@ -4312,11 +4385,11 @@ msgstr ""
#: misc/e2image.c:111
#, c-format
msgid ""
-" %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs "
+" %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs "
"[ dest_fs ]\n"
msgstr ""
-#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595 misc/e2image.c:1194
+#: misc/e2image.c:176 misc/e2image.c:592 misc/e2image.c:598 misc/e2image.c:1200
msgid "while allocating buffer"
msgstr ""
@@ -4330,166 +4403,170 @@ msgstr ""
msgid "error writing block %llu"
msgstr ""
-#: misc/e2image.c:198
+#: misc/e2image.c:199
msgid "error in generic_write()"
msgstr ""
-#: misc/e2image.c:215
+#: misc/e2image.c:216
msgid "Error: header size is bigger than wrt_size\n"
msgstr ""
-#: misc/e2image.c:220
+#: misc/e2image.c:221
msgid "Couldn't allocate header buffer\n"
msgstr ""
-#: misc/e2image.c:248
+#: misc/e2image.c:249
msgid "while writing superblock"
msgstr ""
-#: misc/e2image.c:257
+#: misc/e2image.c:258
msgid "while writing inode table"
msgstr ""
-#: misc/e2image.c:265
+#: misc/e2image.c:266
msgid "while writing block bitmap"
msgstr ""
-#: misc/e2image.c:273
+#: misc/e2image.c:274
msgid "while writing inode bitmap"
msgstr ""
-#: misc/e2image.c:515
+#: misc/e2image.c:516
#, c-format
msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
msgstr ""
-#: misc/e2image.c:527
+#: misc/e2image.c:528
#, c-format
msgid "Corrupt directory block %llu: bad name_len (%d)\n"
msgstr ""
-#: misc/e2image.c:568
+#: misc/e2image.c:569
#, c-format
msgid "%llu / %llu blocks (%d%%)"
msgstr ""
-#: misc/e2image.c:599 misc/e2image.c:639
+#: misc/e2image.c:602 misc/e2image.c:642
msgid "Copying "
msgstr ""
-#: misc/e2image.c:636
+#: misc/e2image.c:639
msgid ""
"Stopping now will destroy the filesystem, interrupt again if you are sure\n"
msgstr ""
-#: misc/e2image.c:662
+#: misc/e2image.c:665
#, c-format
msgid " %s remaining at %.2f MB/s"
msgstr ""
-#: misc/e2image.c:674 misc/e2image.c:1204
+#: misc/e2image.c:677 misc/e2image.c:1210
#, c-format
msgid "error reading block %llu"
msgstr ""
-#: misc/e2image.c:728
+#: misc/e2image.c:732
#, c-format
msgid "Copied %llu / %llu blocks (%d%%) in %s "
msgstr ""
-#: misc/e2image.c:732
+#: misc/e2image.c:737
#, c-format
msgid "at %.2f MB/s"
msgstr ""
-#: misc/e2image.c:768
+#: misc/e2image.c:773
msgid "while allocating l1 table"
msgstr ""
-#: misc/e2image.c:813
+#: misc/e2image.c:818
msgid "while allocating l2 cache"
msgstr ""
-#: misc/e2image.c:836
+#: misc/e2image.c:841
msgid ""
"Warning: There are still tables in the cache while putting the cache, data "
"will be lost so the image may not be valid.\n"
msgstr ""
-#: misc/e2image.c:1161
+#: misc/e2image.c:1167
msgid "while allocating ext2_qcow2_image"
msgstr ""
-#: misc/e2image.c:1168
+#: misc/e2image.c:1174
msgid "while initializing ext2_qcow2_image"
msgstr ""
-#: misc/e2image.c:1227 misc/e2image.c:1245
+#: misc/e2image.c:1234 misc/e2image.c:1252
msgid "Programming error: multiple sequential refcount blocks created!\n"
msgstr ""
-#: misc/e2image.c:1286
+#: misc/e2image.c:1293
msgid "while allocating block bitmap"
msgstr ""
-#: misc/e2image.c:1295
+#: misc/e2image.c:1302
msgid "while allocating scramble block bitmap"
msgstr ""
-#: misc/e2image.c:1318
+#: misc/e2image.c:1325
msgid "Scanning inodes...\n"
msgstr ""
-#: misc/e2image.c:1330
+#: misc/e2image.c:1337
msgid "Can't allocate block buffer"
msgstr ""
-#: misc/e2image.c:1369 misc/e2image.c:1383
+#: misc/e2image.c:1349
+msgid "while getting next inode"
+msgstr ""
+
+#: misc/e2image.c:1376 misc/e2image.c:1390
#, c-format
msgid "while iterating over inode %u"
msgstr ""
-#: misc/e2image.c:1415
+#: misc/e2image.c:1422
msgid "Raw and qcow2 images cannot be installed"
msgstr ""
-#: misc/e2image.c:1437
+#: misc/e2image.c:1444
msgid "error reading bitmaps"
msgstr ""
-#: misc/e2image.c:1449
+#: misc/e2image.c:1456
msgid "while opening device file"
msgstr ""
-#: misc/e2image.c:1460
+#: misc/e2image.c:1467
msgid "while restoring the image table"
msgstr ""
-#: misc/e2image.c:1565
+#: misc/e2image.c:1573
msgid "-a option can only be used with raw or QCOW2 images."
msgstr ""
-#: misc/e2image.c:1570
+#: misc/e2image.c:1578
msgid "-b option can only be used with raw or QCOW2 images."
msgstr ""
-#: misc/e2image.c:1576
+#: misc/e2image.c:1584
msgid "Offsets are only allowed with raw images."
msgstr ""
-#: misc/e2image.c:1581
+#: misc/e2image.c:1589
msgid "Move mode is only allowed with raw images."
msgstr ""
-#: misc/e2image.c:1586
+#: misc/e2image.c:1594
msgid "Move mode requires all data mode."
msgstr ""
-#: misc/e2image.c:1596
+#: misc/e2image.c:1604
msgid "checking if mounted"
msgstr ""
-#: misc/e2image.c:1603
+#: misc/e2image.c:1611
msgid ""
"\n"
"Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4497,51 +4574,51 @@ msgid ""
"Use -f option if you really want to do that.\n"
msgstr ""
-#: misc/e2image.c:1657
+#: misc/e2image.c:1665
msgid "QCOW2 image can not be written to the stdout!\n"
msgstr ""
-#: misc/e2image.c:1663
+#: misc/e2image.c:1671
msgid "Can not stat output\n"
msgstr ""
-#: misc/e2image.c:1673
+#: misc/e2image.c:1681
#, c-format
msgid "Image (%s) is compressed\n"
msgstr ""
-#: misc/e2image.c:1676
+#: misc/e2image.c:1684
#, c-format
msgid "Image (%s) is encrypted\n"
msgstr ""
-#: misc/e2image.c:1679
+#: misc/e2image.c:1687
#, c-format
msgid "Image (%s) is corrupted\n"
msgstr ""
-#: misc/e2image.c:1683
+#: misc/e2image.c:1691
#, c-format
msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
msgstr ""
-#: misc/e2image.c:1693
+#: misc/e2image.c:1701
msgid "The -c option only supported in raw mode\n"
msgstr ""
-#: misc/e2image.c:1698
+#: misc/e2image.c:1706
msgid "The -c option not supported when writing to stdout\n"
msgstr ""
-#: misc/e2image.c:1705
+#: misc/e2image.c:1713
msgid "while allocating check_buf"
msgstr ""
-#: misc/e2image.c:1711
+#: misc/e2image.c:1719
msgid "The -p option only supported in raw mode\n"
msgstr ""
-#: misc/e2image.c:1721
+#: misc/e2image.c:1729
#, c-format
msgid "%d blocks already contained the data to be copied\n"
msgstr ""
@@ -4571,7 +4648,7 @@ msgstr ""
msgid "e2label: not an ext2 filesystem\n"
msgstr ""
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3207
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr ""
@@ -4586,7 +4663,7 @@ msgstr ""
msgid "e2label: error writing superblock\n"
msgstr ""
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1764
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr ""
@@ -4598,151 +4675,151 @@ msgid ""
"<filesystem>\n"
msgstr ""
-#: misc/e2undo.c:149
+#: misc/e2undo.c:153
msgid "The file system superblock doesn't match the undo file.\n"
msgstr ""
-#: misc/e2undo.c:152
+#: misc/e2undo.c:156
msgid "UUID does not match.\n"
msgstr ""
-#: misc/e2undo.c:154
+#: misc/e2undo.c:158
msgid "Last mount time does not match.\n"
msgstr ""
-#: misc/e2undo.c:156
+#: misc/e2undo.c:160
msgid "Last write time does not match.\n"
msgstr ""
-#: misc/e2undo.c:158
+#: misc/e2undo.c:162
msgid "Lifetime write counter does not match.\n"
msgstr ""
-#: misc/e2undo.c:172
+#: misc/e2undo.c:176
msgid "while reading filesystem superblock."
msgstr ""
-#: misc/e2undo.c:188
+#: misc/e2undo.c:192
msgid "while fetching superblock"
msgstr ""
-#: misc/e2undo.c:201
+#: misc/e2undo.c:205
#, c-format
msgid "Undo file superblock checksum doesn't match.\n"
msgstr ""
-#: misc/e2undo.c:340
+#: misc/e2undo.c:344
#, c-format
msgid "illegal offset - %s"
msgstr ""
-#: misc/e2undo.c:364
+#: misc/e2undo.c:368
#, c-format
msgid "Will not write to an undo file while replaying it.\n"
msgstr ""
-#: misc/e2undo.c:373
+#: misc/e2undo.c:377
#, c-format
msgid "while opening undo file `%s'\n"
msgstr ""
-#: misc/e2undo.c:380
+#: misc/e2undo.c:384
msgid "while reading undo file"
msgstr ""
-#: misc/e2undo.c:385
+#: misc/e2undo.c:389
#, c-format
msgid "%s: Not an undo file.\n"
msgstr ""
-#: misc/e2undo.c:396
+#: misc/e2undo.c:400
#, c-format
msgid "%s: Header checksum doesn't match.\n"
msgstr ""
-#: misc/e2undo.c:403
+#: misc/e2undo.c:407
#, c-format
msgid "%s: Corrupt undo file header.\n"
msgstr ""
-#: misc/e2undo.c:407
+#: misc/e2undo.c:411
#, c-format
msgid "%s: Undo block size too large.\n"
msgstr ""
-#: misc/e2undo.c:412
+#: misc/e2undo.c:416
#, c-format
msgid "%s: Undo block size too small.\n"
msgstr ""
-#: misc/e2undo.c:425
+#: misc/e2undo.c:429
#, c-format
msgid "%s: Unknown undo file feature set.\n"
msgstr ""
-#: misc/e2undo.c:433
+#: misc/e2undo.c:437
#, c-format
msgid "Error while determining whether %s is mounted."
msgstr ""
-#: misc/e2undo.c:439
+#: misc/e2undo.c:443
msgid "e2undo should only be run on unmounted filesystems"
msgstr ""
-#: misc/e2undo.c:455
+#: misc/e2undo.c:459
#, c-format
msgid "while opening `%s'"
msgstr ""
-#: misc/e2undo.c:466
+#: misc/e2undo.c:470
msgid "specified offset is too large"
msgstr ""
-#: misc/e2undo.c:507
+#: misc/e2undo.c:511
msgid "while reading keys"
msgstr ""
-#: misc/e2undo.c:519
+#: misc/e2undo.c:523
#, c-format
msgid "%s: wrong key magic at %llu\n"
msgstr ""
-#: misc/e2undo.c:529
+#: misc/e2undo.c:533
#, c-format
msgid "%s: key block checksum error at %llu.\n"
msgstr ""
-#: misc/e2undo.c:552
+#: misc/e2undo.c:556
#, c-format
msgid "%s: block %llu is too long."
msgstr ""
-#: misc/e2undo.c:564 misc/e2undo.c:600
+#: misc/e2undo.c:569 misc/e2undo.c:606
#, c-format
msgid "while fetching block %llu."
msgstr ""
-#: misc/e2undo.c:576
+#: misc/e2undo.c:581
#, c-format
msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
msgstr ""
-#: misc/e2undo.c:615
+#: misc/e2undo.c:622
#, c-format
msgid "while writing block %llu."
msgstr ""
-#: misc/e2undo.c:621
+#: misc/e2undo.c:629
#, c-format
msgid "Undo file corruption; run e2fsck NOW!\n"
msgstr ""
-#: misc/e2undo.c:623
+#: misc/e2undo.c:631
#, c-format
msgid "IO error during replay; run e2fsck NOW!\n"
msgstr ""
-#: misc/e2undo.c:626
+#: misc/e2undo.c:634
#, c-format
msgid "Incomplete undo record; run e2fsck.\n"
msgstr ""
@@ -4791,7 +4868,7 @@ msgid ""
"mount_time sb_uuid label\n"
msgstr ""
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -4892,51 +4969,56 @@ msgstr ""
msgid "%s: too many arguments\n"
msgstr ""
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3746
msgid "Mounting read-only.\n"
msgstr ""
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3770
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr ""
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3800
#, c-format
msgid "%s: %s.\n"
msgstr ""
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3783 misc/fuse2fs.c:3802 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr ""
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3793
+#, c-format
+msgid "%s: mounting read-only without recovering journal\n"
+msgstr ""
+
+#: misc/fuse2fs.c:3809
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr ""
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3817
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr ""
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3832
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3836
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3841
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3845
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3849
msgid "Errors detected; running e2fsck is required.\n"
msgstr ""
@@ -4960,7 +5042,7 @@ msgstr ""
msgid "While reading version on %s"
msgstr ""
-#: misc/mke2fs.c:130
+#: misc/mke2fs.c:131
#, c-format
msgid ""
"Usage: %s [-c|-l filename] [-b block-size] [-C cluster-size]\n"
@@ -4974,35 +5056,35 @@ msgid ""
"\t[-jnqvDFSV] device [blocks-count]\n"
msgstr ""
-#: misc/mke2fs.c:261
+#: misc/mke2fs.c:263
#, c-format
msgid "Running command: %s\n"
msgstr ""
-#: misc/mke2fs.c:265
+#: misc/mke2fs.c:267
#, c-format
msgid "while trying to run '%s'"
msgstr ""
-#: misc/mke2fs.c:272
+#: misc/mke2fs.c:274
msgid "while processing list of bad blocks from program"
msgstr ""
-#: misc/mke2fs.c:299
+#: misc/mke2fs.c:301
#, c-format
msgid "Block %d in primary superblock/group descriptor area bad.\n"
msgstr ""
-#: misc/mke2fs.c:301
+#: misc/mke2fs.c:303
#, c-format
msgid "Blocks %u through %u must be good in order to build a filesystem.\n"
msgstr ""
-#: misc/mke2fs.c:304
+#: misc/mke2fs.c:306
msgid "Aborting....\n"
msgstr ""
-#: misc/mke2fs.c:324
+#: misc/mke2fs.c:326
#, c-format
msgid ""
"Warning: the backup superblock/group descriptors at block %u contain\n"
@@ -5010,259 +5092,263 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:343
+#: misc/mke2fs.c:345 misc/mke2fs.c:3285
msgid "while marking bad blocks as used"
msgstr ""
-#: misc/mke2fs.c:368
+#: misc/mke2fs.c:370
msgid "while writing reserved inodes"
msgstr ""
-#: misc/mke2fs.c:420
+#: misc/mke2fs.c:422
msgid "Writing inode tables: "
msgstr ""
-#: misc/mke2fs.c:442
+#: misc/mke2fs.c:444
#, c-format
msgid ""
"\n"
"Could not write %d blocks in inode table starting at %llu: %s\n"
msgstr ""
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:459 misc/mke2fs.c:2837 misc/mke2fs.c:3245
msgid "done \n"
msgstr ""
-#: misc/mke2fs.c:471
+#: misc/mke2fs.c:474
msgid "while creating root dir"
msgstr ""
-#: misc/mke2fs.c:478
+#: misc/mke2fs.c:481
msgid "while reading root inode"
msgstr ""
-#: misc/mke2fs.c:490
+#: misc/mke2fs.c:493
msgid "while setting root inode ownership"
msgstr ""
-#: misc/mke2fs.c:508
+#: misc/mke2fs.c:511
msgid "while creating /lost+found"
msgstr ""
-#: misc/mke2fs.c:515
+#: misc/mke2fs.c:518
msgid "while looking up /lost+found"
msgstr ""
-#: misc/mke2fs.c:528
+#: misc/mke2fs.c:531
msgid "while expanding /lost+found"
msgstr ""
-#: misc/mke2fs.c:543
+#: misc/mke2fs.c:546
msgid "while setting bad block inode"
msgstr ""
-#: misc/mke2fs.c:570
+#: misc/mke2fs.c:573
#, c-format
msgid "Out of memory erasing sectors %d-%d\n"
msgstr ""
-#: misc/mke2fs.c:580
+#: misc/mke2fs.c:583
#, c-format
msgid "Warning: could not read block 0: %s\n"
msgstr ""
-#: misc/mke2fs.c:596
+#: misc/mke2fs.c:599
#, c-format
msgid "Warning: could not erase sector %d: %s\n"
msgstr ""
-#: misc/mke2fs.c:612
+#: misc/mke2fs.c:615
+msgid "while splitting the journal size"
+msgstr ""
+
+#: misc/mke2fs.c:622
msgid "while initializing journal superblock"
msgstr ""
-#: misc/mke2fs.c:620
+#: misc/mke2fs.c:630
msgid "Zeroing journal device: "
msgstr ""
-#: misc/mke2fs.c:632
+#: misc/mke2fs.c:642
#, c-format
msgid "while zeroing journal device (block %llu, count %d)"
msgstr ""
-#: misc/mke2fs.c:650
+#: misc/mke2fs.c:660
msgid "while writing journal superblock"
msgstr ""
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:674
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr ""
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:682
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:686
#, c-format
-msgid "Filesystem label=%s\n"
+msgid "Filesystem label=%.*s\n"
msgstr ""
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:690
#, c-format
msgid "OS type: %s\n"
msgstr ""
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:692
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:695
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:699
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:701
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr ""
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:703
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr ""
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:705
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr ""
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:708
#, c-format
msgid "First data block=%u\n"
msgstr ""
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:710
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr ""
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:712
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr ""
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:716
#, c-format
msgid "%u block groups\n"
msgstr ""
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:718
#, c-format
msgid "%u block group\n"
msgstr ""
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:720
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr ""
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:723
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr ""
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:725
#, c-format
msgid "%u inodes per group\n"
msgstr ""
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:734
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr ""
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:735
msgid "Superblock backups stored on blocks: "
msgstr ""
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:831
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr ""
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:837
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr ""
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:850
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr ""
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:864
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr ""
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:876
#, c-format
msgid "Invalid offset: %s\n"
msgstr ""
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:890 misc/tune2fs.c:2140
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr ""
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:907
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr ""
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:929
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:944
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:967
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:974
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr ""
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:998
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1024 misc/mke2fs.c:1033
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr ""
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1078
#, c-format
msgid "Invalid encoding: %s"
msgstr ""
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1096
#, c-format
msgid ""
"\n"
@@ -5291,7 +5377,7 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1123
#, c-format
msgid ""
"\n"
@@ -5299,52 +5385,52 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1134 misc/tune2fs.c:2276
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr ""
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1140 misc/tune2fs.c:2285
#, c-format
msgid ""
"error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr ""
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1190
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
"\t%s\n"
msgstr ""
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1203 misc/tune2fs.c:1105
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr ""
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1215 misc/tune2fs.c:422
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr ""
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1351
#, c-format
msgid ""
"\n"
"Your mke2fs.conf file does not define the %s filesystem type.\n"
msgstr ""
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1355
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1359
msgid "Aborting...\n"
msgstr ""
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1400
#, c-format
msgid ""
"\n"
@@ -5352,154 +5438,154 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1587
msgid "Couldn't allocate memory for new PATH.\n"
msgstr ""
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1624
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr ""
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1657
#, c-format
msgid "invalid block size - %s"
msgstr ""
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1661
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr ""
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1677
#, c-format
msgid "invalid cluster size - %s"
msgstr ""
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1690
msgid "'-R' is deprecated, use '-E' instead"
msgstr ""
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1704 misc/tune2fs.c:1866
#, c-format
msgid "bad error behavior - %s"
msgstr ""
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1716
msgid "Illegal number for blocks per group"
msgstr ""
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1721
msgid "blocks per group must be multiple of 8"
msgstr ""
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1729
msgid "Illegal number for flex_bg size"
msgstr ""
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1735
msgid "flex_bg size must be a power of 2"
msgstr ""
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1740
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr ""
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1750
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr ""
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1760
#, c-format
msgid "invalid inode size - %s"
msgstr ""
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1775
msgid ""
"Warning: -K option is deprecated and should not be used anymore. Use '-E "
"nodiscard' extended option instead!\n"
msgstr ""
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1786
msgid "in malloc for bad_blocks_filename"
msgstr ""
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1795
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1804
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr ""
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1819
#, c-format
msgid "bad num inodes - %s"
msgstr ""
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1832
msgid "while allocating fs_feature string"
msgstr ""
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1849
#, c-format
msgid "bad revision level - %s"
msgstr ""
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1854
#, c-format
msgid "while trying to create revision %d"
msgstr ""
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1868
msgid "The -t option may only be used once"
msgstr ""
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1876
msgid "The -T option may only be used once"
msgstr ""
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1932 misc/mke2fs.c:3368
#, c-format
msgid "while trying to open journal device %s\n"
msgstr ""
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1938
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr ""
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1944
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr ""
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1955
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr ""
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1985
msgid "filesystem"
msgstr ""
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:2003 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr ""
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:2009
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
msgstr ""
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2016
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5507,142 +5593,149 @@ msgid ""
"\tto re-read your partition table.\n"
msgstr ""
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2033
msgid "Filesystem larger than apparent device size."
msgstr ""
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2053
msgid "Failed to parse fs types list\n"
msgstr ""
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the filetype feature.\n"
msgstr ""
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2108
msgid "The HURD does not support the huge_file feature.\n"
msgstr ""
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2113
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr ""
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2118
msgid "The HURD does not support the ea_inode feature.\n"
msgstr ""
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2128
msgid "while trying to determine hardware sector size"
msgstr ""
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2134
msgid "while trying to determine physical sector size"
msgstr ""
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2166
msgid "while setting blocksize; too small for device\n"
msgstr ""
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2171
#, c-format
msgid ""
"Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr ""
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2195
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
"\tin 32 bits using a blocksize of %d.\n"
msgstr ""
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2209
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
"\ta filesystem using a blocksize of %d.\n"
msgstr ""
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2231
msgid "fs_types for mke2fs.conf resolution: "
msgstr ""
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2238
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2246
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2256
msgid "Journals not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2269
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr ""
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2286
msgid ""
"Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to "
"rectify.\n"
msgstr ""
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2306
msgid "The cluster size may not be smaller than the block size.\n"
msgstr ""
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2312
msgid "specifying a cluster size requires the bigalloc feature"
msgstr ""
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2332
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr ""
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2344
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr ""
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2346
#, c-format
msgid ""
"This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr ""
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2352
+#, c-format
+msgid ""
+"%s is capable of DAX but current block size %u is different from system page "
+"size %u so filesystem will not support DAX.\n"
+msgstr ""
+
+#: misc/mke2fs.c:2376
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr ""
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2380
#, c-format
msgid ""
"Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr ""
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2388
#, c-format
msgid ""
"Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
"and journal checksum features.\n"
msgstr ""
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2434
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr ""
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2445
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr ""
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2470
#, c-format
msgid ""
"\n"
@@ -5652,28 +5745,22 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2485
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr ""
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2507
msgid "Can't support bigalloc feature without extents feature"
msgstr ""
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2514
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
msgstr ""
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2522
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5681,39 +5768,39 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2534
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr ""
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2543
msgid "blocks per group count out of range"
msgstr ""
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2565
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr ""
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2577
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr ""
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2592
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr ""
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2607
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr ""
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2615
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr ""
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2629
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5721,153 +5808,161 @@ msgid ""
"\tor lower inode count (-N).\n"
msgstr ""
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2816
msgid "Discarding device blocks: "
msgstr ""
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2832
msgid "failed - "
msgstr ""
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2891
msgid "while initializing quota context"
msgstr ""
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2898
msgid "while writing quota inodes"
msgstr ""
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2923
#, c-format
msgid "bad error behavior in profile - %s"
msgstr ""
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:3002
msgid "in malloc for android_sparse_params"
msgstr ""
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:3016
msgid "while setting up superblock"
msgstr ""
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3032
msgid ""
"Extents are not enabled. The file extent tree can be checksummed, whereas "
"block maps cannot. Not enabling extents reduces the coverage of metadata "
"checksumming. Pass -O extents to rectify.\n"
msgstr ""
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3039
msgid ""
"64-bit filesystem support is not enabled. The larger fields afforded by "
"this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr ""
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3047
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr ""
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3071
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr ""
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3170
#, c-format
msgid "unknown os - %s"
msgstr ""
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3233
msgid "Allocating group tables: "
msgstr ""
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3241
msgid "while trying to allocate filesystem tables"
msgstr ""
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3256
+msgid "while unmarking bad blocks"
+msgstr ""
+
+#: misc/mke2fs.c:3267
msgid ""
"\n"
"\twhile converting subcluster bitmap"
msgstr ""
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3276
+msgid "while calculating overhead"
+msgstr ""
+
+#: misc/mke2fs.c:3295
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr ""
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3336
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr ""
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3349
msgid "while reserving blocks for online resize"
msgstr ""
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3361 misc/tune2fs.c:1567
msgid "journal"
msgstr ""
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3373
#, c-format
msgid "Adding journal to device %s: "
msgstr ""
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3380
#, c-format
msgid ""
"\n"
"\twhile trying to add journal to device %s"
msgstr ""
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3385 misc/mke2fs.c:3415 misc/mke2fs.c:3457
+#: misc/mk_hugefiles.c:602 misc/tune2fs.c:1596 misc/tune2fs.c:1615
msgid "done\n"
msgstr ""
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3392
msgid "Skipping journal creation in super-only mode\n"
msgstr ""
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3402
#, c-format
msgid "Creating journal (%u blocks): "
msgstr ""
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3411
msgid ""
"\n"
"\twhile trying to create journal"
msgstr ""
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3423 misc/tune2fs.c:1170
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
msgstr ""
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3428
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr ""
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3448
msgid "Copying files into the device: "
msgstr ""
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3454
msgid "while populating file system"
msgstr ""
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3461
msgid "Writing superblocks and filesystem accounting information: "
msgstr ""
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3468
msgid "while writing out and closing file system"
msgstr ""
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3471
msgid ""
"done\n"
"\n"
@@ -5878,27 +5973,27 @@ msgstr ""
msgid "while zeroing block %llu for hugefile"
msgstr ""
-#: misc/mk_hugefiles.c:515
+#: misc/mk_hugefiles.c:516
#, c-format
msgid ""
"Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
msgstr ""
-#: misc/mk_hugefiles.c:583
+#: misc/mk_hugefiles.c:584
msgid "Huge files will be zero'ed\n"
msgstr ""
-#: misc/mk_hugefiles.c:584
+#: misc/mk_hugefiles.c:585
#, c-format
msgid "Creating %lu huge file(s) "
msgstr ""
-#: misc/mk_hugefiles.c:586
+#: misc/mk_hugefiles.c:587
#, c-format
msgid "with %llu blocks each"
msgstr ""
-#: misc/mk_hugefiles.c:595
+#: misc/mk_hugefiles.c:597
#, c-format
msgid "while creating huge file %lu"
msgstr ""
@@ -5937,21 +6032,21 @@ msgstr ""
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr ""
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -5964,288 +6059,304 @@ msgid ""
"\t[-I new_inode_size] [-z undo_file] device\n"
msgstr ""
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:228
msgid "Journal superblock not found!\n"
msgstr ""
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:286
msgid "while trying to open external journal"
msgstr ""
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:292 misc/tune2fs.c:2888
#, c-format
msgid "%s is not a journal device.\n"
msgstr ""
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:301 misc/tune2fs.c:2897
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
"is too high (%d).\n"
msgstr ""
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:308 misc/tune2fs.c:2904
msgid "Filesystem's UUID not found on journal device.\n"
msgstr ""
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:332
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
msgstr ""
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:341
msgid "Journal removed\n"
msgstr ""
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:385
msgid "while reading bitmaps"
msgstr ""
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:393
msgid "while clearing journal inode"
msgstr ""
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:404
msgid "while writing journal inode"
msgstr ""
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:440 misc/tune2fs.c:465 misc/tune2fs.c:478
msgid "(and reboot afterwards!)\n"
msgstr ""
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:493
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr ""
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:496
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr ""
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:500
#, c-format
msgid " -z \"%s\""
msgstr ""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:502
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr ""
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:504
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr ""
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1072
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
msgstr ""
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1108
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr ""
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1114
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr ""
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1123
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1131
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
msgstr ""
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1149
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1162
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
"read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1180
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr ""
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1189
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
msgstr ""
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1197
msgid "Error while reading bitmaps\n"
msgstr ""
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1206
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr ""
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1211
msgid "while reading MMP block."
msgstr ""
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1244
+msgid ""
+"Disabling directory index on filesystem with checksums could take some time."
+msgstr ""
+
+#: misc/tune2fs.c:1248
+msgid "Cannot disable dir_index on a mounted filesystem!\n"
+msgstr ""
+
+#: misc/tune2fs.c:1261
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
msgstr ""
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1272
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1283
msgid "Enabling checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1286
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1292
msgid ""
"Extents are not enabled. The file extent tree can be checksummed, whereas "
"block maps cannot. Not enabling extents reduces the coverage of metadata "
"checksumming. Re-run with -O extent to rectify.\n"
msgstr ""
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1299
msgid ""
"64-bit filesystem support is not enabled. The larger fields afforded by "
"this feature enable full-strength checksumming. Run resize2fs -b to "
"rectify.\n"
msgstr ""
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1325
msgid "Disabling checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1328
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1369
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr ""
+
+#: misc/tune2fs.c:1384
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr ""
+
+#: misc/tune2fs.c:1403
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr ""
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1413
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr ""
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1443
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1464
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
msgstr ""
-#: misc/tune2fs.c:1405
+#: misc/tune2fs.c:1481 misc/tune2fs.c:2238
msgid ""
-"Cannot enable encrypt feature on filesystems with the encoding feature "
-"enabled.\n"
+"The casefold feature may only be enabled when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1493
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1511
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be "
"unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
msgstr ""
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1517
msgid "Recalculating checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1560
msgid "The filesystem already has a journal.\n"
msgstr ""
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1580
#, c-format
msgid ""
"\n"
"\twhile trying to open journal on %s\n"
msgstr ""
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1584
#, c-format
msgid "Creating journal on device %s: "
msgstr ""
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1592
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr ""
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1598
msgid "Creating journal inode: "
msgstr ""
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1612
msgid ""
"\n"
"\twhile trying to create journal file"
msgstr ""
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1650
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1663
msgid "while initializing quota context in support library"
msgstr ""
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1678
#, c-format
msgid "while updating quota limits (%d)"
msgstr ""
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1688
#, c-format
msgid "while writing quota file (%d)"
msgstr ""
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1706
#, c-format
msgid "while removing quota file (%d)"
msgstr ""
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1749
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6259,65 +6370,65 @@ msgid ""
"\n"
msgstr ""
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1807
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr ""
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1839 misc/tune2fs.c:1850
#, c-format
msgid "bad mounts count - %s"
msgstr ""
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1893
#, c-format
msgid "bad gid/group name - %s"
msgstr ""
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1926
#, c-format
msgid "bad interval - %s"
msgstr ""
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1955
#, c-format
msgid "bad reserved block ratio - %s"
msgstr ""
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1970
msgid "-o may only be specified once"
msgstr ""
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1979
msgid "-O may only be specified once"
msgstr ""
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1996
#, c-format
msgid "bad reserved blocks count - %s"
msgstr ""
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:2025
#, c-format
msgid "bad uid/user name - %s"
msgstr ""
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:2042
#, c-format
msgid "bad inode size - %s"
msgstr ""
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:2049
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr ""
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2149
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr ""
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2154
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural ""
@@ -6325,32 +6436,52 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2163
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr ""
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2181
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr ""
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2196
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr ""
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2211
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr ""
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2217
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr ""
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2244
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr ""
+
+#: misc/tune2fs.c:2250
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr ""
+
+#: misc/tune2fs.c:2256
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr ""
+
+#: misc/tune2fs.c:2280
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr ""
+
+#: misc/tune2fs.c:2290
msgid ""
"\n"
"Bad options specified.\n"
@@ -6368,74 +6499,76 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2706
msgid "Failed to read inode bitmap\n"
msgstr ""
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2711
msgid "Failed to read block bitmap\n"
msgstr ""
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2728 resize/resize2fs.c:1279
msgid "blocks to be moved"
msgstr ""
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2731
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr ""
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2737
msgid "Not enough space to increase inode size \n"
msgstr ""
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2742
msgid "Failed to relocate blocks during inode resize \n"
msgstr ""
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2774
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
msgstr ""
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
msgstr ""
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
"'e2fsck -f %s'\n"
msgstr ""
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr ""
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr ""
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr ""
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr ""
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr ""
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6446,153 +6579,159 @@ msgid ""
"by journal recovery.\n"
msgstr ""
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr ""
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3117
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr ""
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3123
#, c-format
msgid "Setting current mount count to %d\n"
msgstr ""
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3128
#, c-format
msgid "Setting error behavior to %d\n"
msgstr ""
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3133
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr ""
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3138
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr ""
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3145
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr ""
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3152
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr ""
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3159
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr ""
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3166
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr ""
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3171
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
msgstr ""
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3174
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3184
#, c-format
msgid ""
"\n"
"Sparse superblock flag set. %s"
msgstr ""
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3189
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
msgstr ""
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3197
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr ""
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3203
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr ""
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3235
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr ""
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3253
msgid ""
"The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3270
+msgid ""
+"Cannot change the UUID of this filesystem because it has the stable_inodes "
+"feature flag.\n"
+msgstr ""
+
+#: misc/tune2fs.c:3280
msgid "Setting the UUID on this filesystem could take some time."
msgstr ""
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3297
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3300
msgid ""
"If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
"and re-run this command.\n"
msgstr ""
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3331
msgid "Invalid UUID format\n"
msgstr ""
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3347
msgid "Need to update journal superblock.\n"
msgstr ""
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3369
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3376
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3394
#, c-format
msgid "Setting inode size %lu\n"
msgstr ""
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3398
msgid "Failed to change inode size\n"
msgstr ""
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3412
#, c-format
msgid "Setting stride size to %d\n"
msgstr ""
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3417
#, c-format
msgid "Setting stripe width to %d\n"
msgstr ""
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3424
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr ""
@@ -6634,7 +6773,7 @@ msgid ""
"Could not find journal device matching %s\n"
msgstr ""
-#: misc/util.c:216
+#: misc/util.c:224
msgid ""
"\n"
"Bad journal options specified.\n"
@@ -6651,27 +6790,27 @@ msgid ""
"\n"
msgstr ""
-#: misc/util.c:247
+#: misc/util.c:267
msgid ""
"\n"
"Filesystem too small for a journal\n"
msgstr ""
-#: misc/util.c:254
+#: misc/util.c:284
#, c-format
msgid ""
"\n"
-"The requested journal size is %d blocks; it must be\n"
+"The total requested journal size is %d blocks; it must be\n"
"between 1024 and 10240000 blocks. Aborting.\n"
msgstr ""
-#: misc/util.c:262
+#: misc/util.c:292
msgid ""
"\n"
-"Journal size too big for filesystem.\n"
+"Total journal size too big for filesystem.\n"
msgstr ""
-#: misc/util.c:276
+#: misc/util.c:305
#, c-format
msgid ""
"This filesystem will be automatically checked every %d mounts or\n"
@@ -6865,47 +7004,51 @@ msgid ""
"\n"
msgstr ""
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr ""
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr ""
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
"\n"
msgstr ""
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr ""
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr ""
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr ""
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr ""
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr ""
-#: resize/main.c:540
+#: resize/main.c:555
msgid "Invalid stride length"
msgstr ""
-#: resize/main.c:564
+#: resize/main.c:579
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -6913,82 +7056,89 @@ msgid ""
"\n"
msgstr ""
-#: resize/main.c:571
+#: resize/main.c:586
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr ""
-#: resize/main.c:575
+#: resize/main.c:590
#, c-format
msgid ""
"Cannot change the 64bit feature on a filesystem that is larger than 2^32 "
"blocks.\n"
msgstr ""
-#: resize/main.c:581
+#: resize/main.c:596
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr ""
-#: resize/main.c:587
+#: resize/main.c:602
#, c-format
msgid ""
"Please enable the extents feature with tune2fs before enabling the 64bit "
"feature.\n"
msgstr ""
-#: resize/main.c:593
+#: resize/main.c:608
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
"\n"
msgstr ""
-#: resize/main.c:600
+#: resize/main.c:616
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr ""
-#: resize/main.c:605
+#: resize/main.c:621
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr ""
-#: resize/main.c:613
+#: resize/main.c:626
+#, c-format
+msgid ""
+"Cannot shrink this filesystem because it has the stable_inodes feature "
+"flag.\n"
+msgstr ""
+
+#: resize/main.c:635
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr ""
-#: resize/main.c:615
+#: resize/main.c:637
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr ""
-#: resize/main.c:617
+#: resize/main.c:639
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr ""
-#: resize/main.c:626
+#: resize/main.c:649
#, c-format
msgid "while trying to resize %s"
msgstr ""
-#: resize/main.c:629
+#: resize/main.c:652
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
"after the aborted resize operation.\n"
msgstr ""
-#: resize/main.c:635
+#: resize/main.c:658
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
"\n"
msgstr ""
-#: resize/main.c:650
+#: resize/main.c:673
#, c-format
msgid "while trying to truncate %s"
msgstr ""
@@ -7045,53 +7195,53 @@ msgstr ""
msgid "Performing an on-line resize of %s to %llu (%dk) blocks.\n"
msgstr ""
-#: resize/online.c:230
+#: resize/online.c:231
msgid "While trying to extend the last group"
msgstr ""
-#: resize/online.c:277
+#: resize/online.c:278
#, c-format
msgid "While trying to add group #%d"
msgstr ""
-#: resize/online.c:288
+#: resize/online.c:289
#, c-format
msgid ""
"Filesystem at %s is mounted on %s, and on-line resizing is not supported on "
"this system.\n"
msgstr ""
-#: resize/resize2fs.c:759
+#: resize/resize2fs.c:760
#, c-format
msgid "inodes (%llu) must be less than %u\n"
msgstr ""
-#: resize/resize2fs.c:1038
+#: resize/resize2fs.c:1039
msgid "reserved blocks"
msgstr ""
-#: resize/resize2fs.c:1282
+#: resize/resize2fs.c:1284
msgid "meta-data blocks"
msgstr ""
-#: resize/resize2fs.c:1386 resize/resize2fs.c:2421
+#: resize/resize2fs.c:1388 resize/resize2fs.c:2430
msgid "new meta blocks"
msgstr ""
-#: resize/resize2fs.c:2644
+#: resize/resize2fs.c:2654
msgid "Should never happen! No sb in last super_sparse bg?\n"
msgstr ""
-#: resize/resize2fs.c:2649
+#: resize/resize2fs.c:2659
msgid "Should never happen! Unexpected old_desc in super_sparse bg?\n"
msgstr ""
-#: resize/resize2fs.c:2722
+#: resize/resize2fs.c:2732
msgid "Should never happen: resize inode corrupt!\n"
msgstr ""
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.4"
+msgid "EXT2FS Library version 1.46.2"
msgstr ""
#: lib/ext2fs/ext2_err.c:12
@@ -7806,6 +7956,14 @@ msgstr ""
msgid "Inode containing extended attribute value is corrupted"
msgstr ""
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr ""
+
+#: lib/ext2fs/ext2_err.c:191
+msgid "The internal ext2_filsys data structure appears to be corrupted"
+msgstr ""
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr ""
@@ -7930,68 +8088,68 @@ msgstr ""
msgid "Bad magic value in profile_file_data_t"
msgstr ""
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
+msgid "\tlast mounted on %.*s on %s"
msgstr ""
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr ""
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr ""
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr ""
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr ""
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr ""
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr ""
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr ""
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
msgstr ""
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr ""
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr ""
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr ""
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr ""
diff --git a/po/es.gmo b/po/es.gmo
index bee89a4d..a3f46fb9 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 35045664..5e3a330a 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,7 +4,7 @@
#
# Max de Mendizábal <max@upn.mx>, 2003, 2005.
# Benno Schulenberg <benno@vertaalt.nl>, 2008, 2014.
-# Antonio Ceballos <aceballos@gmail.com>, 2014, 2015, 2016, 2017, 2018, 2019.
+# Antonio Ceballos <aceballos@gmail.com>, 2014, 2015, 2016, 2017, 2018, 2019, 2021.
#
# Comienzo de un vocabulario (lista de palabras usadas aquí):
# block --> bloque
@@ -95,10 +95,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs-1.45.3\n"
+"Project-Id-Version: e2fsprogs-1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-23 19:08+0200\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-20 12:02+0100\n"
"Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
@@ -138,9 +138,9 @@ msgstr "mientras se leía el nodo-i de bloques dañados"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "mientras se intentaba abrir %s"
@@ -165,7 +165,7 @@ msgstr "mientras se actualizaba el nodo-i de bloques dañados"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Atención: se encontró un bloque no válido %u en el nodo-i de bloques dañados. Limpiado.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "mientras se liberaba el fichero tdb dir_info"
@@ -197,15 +197,15 @@ msgstr "Error al escribir el bloque %lu (%s) mientras %s. "
msgid "Error writing block %lu (%s). "
msgstr "Error al escribir el bloque %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "bloques de directorio vacíos"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "mapa de directorios vacío"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "El bloque del directorio %u (#%d) está vacío en el nodo-i %u\n"
@@ -215,12 +215,12 @@ msgstr "El bloque del directorio %u (#%d) está vacío en el nodo-i %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s fichero númerodebloques tamañodelbloque\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "¡Número inválido de bloques!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "No se puede reservar un búfer de bloques (tamaño=%d)\n"
@@ -249,7 +249,7 @@ msgstr "Modo de empleo: %s [-F] [-I bloques_del_búfer_del_nodo_i] dispositivo\n
msgid "while opening %s for flushing"
msgstr "mientras se abría %s para su vaciado"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "mientras se intentaba vaciar %s"
@@ -291,7 +291,7 @@ msgstr "%s: no se ha encontrado un superbloque válido en el fichero de transacc
msgid "%s: journal too short\n"
msgstr "%s: el fichero de transacciones es demasiado corto\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: recuperando el fichero de transacciones\n"
@@ -543,113 +543,113 @@ msgstr "tipo de cuota desconocido"
msgid "multiply claimed inode map"
msgstr "mapa de nodos-i reclamados en múltiples ocasiones"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "error interno: no se ha encontrado el dup_blk para %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "regresado del clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "Error interno: no se puede encontrar el registro de bloque EA para %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "Error interno: no se puede encontrar el registro de bloque EA %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "mientras se hace «hash» de la entrada con e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "leyendo bloque de directorio"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "obteniendo el siguiente nodo-i para examinar"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "mapa de nodos-i usados"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "mapa de nodos-i de directorio"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "mapa de nodos-i de ficheros normales"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "mapa de bloques usados"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "mapa de bloques de metadatos"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "iniciando la exploración de los nodos-i"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "obteniendo el siguiente nodo-i para examinar"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Paso 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "leyendo bloques indirectos del nodo-i %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "mapa de nodos-i dañados"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "el nodo-i está en el mapa de bloques dañados"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "mapa de nodos-i con 'imagic'"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "mapa de bloques reclamados en múltiples ocasiones"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "mapa de bloques de atributos extendidos"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): se esperaba %6lu, pero se han obtenido bloques físicos %6lu (número de bloques %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "mapa de bits de bloques"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "mapa de bits de nodos-i"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "tabla de nodos-i"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Paso 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "No se puede continuar."
@@ -665,11 +665,11 @@ msgstr "Pico de memoria"
msgid "Pass 3"
msgstr "Paso 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "mapa de bits de detección de bucles de nodos-i"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Paso 4"
@@ -685,7 +685,7 @@ msgstr "check_inode_bitmap_checksum: Error de asignación de memoria"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: Error de asignación de memoria"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(sin cursor)"
@@ -693,183 +693,191 @@ msgstr "(sin cursor)"
# mejor en forma impersonal. Fíjate que todos los demás verbos que siguen
# están en infinitivo.
# Cierto. mm
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Arreglar"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Borrar"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Reubicar"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Reservar"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Expandir"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Conectar a /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Crear"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Recuperar"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Truncar"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Borrar nodo-i"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Interrumpir"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Dividir"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Continuar"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Clonar los bloques reclamados en múltiples ocasiones"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Borrar fichero"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Eliminar mensajes"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Desvincular"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Borrar el índice del árbol-H"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Recrear"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Optimizar"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Borrar bandera"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(NINGUNO)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "ARREGLADO"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "BORRADO"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "REUBICADO"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "RESERVADO"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "EXPANDIDO"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "RECONECTADO"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "CREADO"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "RECUPERADO"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "TRUNCADO"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "NODO-I BORRADO"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "INTERRUMPIDO"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "DIVIDIDO"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "CONTINUANDO"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "SE CLONARON LOS BLOQUES RECLAMADOS EN MÚLTIPLES OCASIONES"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "FICHERO BORRADO"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "SUPRIMIDO"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "DESVINCULADO"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "SE HA LIMPIADO EL ÍNDICE DEL ÁRBOL-H"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "SE CREARÁ DE NUEVO"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "SE OPTIMIZARÁ"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "BANDERA BORRADA"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "El mapa de bits de bloques para el grupo %g no está en el grupo. (bloque %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "El mapa de bits de nodos-i para el grupo %g no está en el grupo. (bloque %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -886,7 +894,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -911,7 +919,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -925,7 +933,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -936,24 +944,24 @@ msgstr ""
"tamaños de fragmento distintos al del @b.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "El «blocks_per_group» del @S es %b y debería haber sido %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "El «first_data_block» del @S es %b y debería haber sido %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
msgstr "El @f no tiene un UUID; se generará uno.\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -972,48 +980,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "El @S está corrupto. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Error al determinar el tamaño del @v físico: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "La cuenta @i en el @S es %i, @s %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "El Hurd no tiene implementada la opción de tipos de fichero.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "@S tiene un @j @n (@i %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "El @j externo tiene varios usuarios del @f (no implementado).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "No se ha encontrado un @j externo\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "El @j externo tiene un @S dañado\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "El @j externo no tiene implementado este @f\n"
@@ -1021,7 +1029,7 @@ msgstr "El @j externo no tiene implementado este @f\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -1033,82 +1041,82 @@ msgstr ""
"También es posible que el @S del @j esté corrupto.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "El @S del @j está corrupto.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "La bandera has_journal del @S está quitada, pero hay un @j.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "La bandera de recuperación del superbloque está puesta, pero no hay @j.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr ""
"La bandera de recuperación del superbloque está limpia, pero el @j\n"
"contiene información.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Borrar el @j"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "El @f tiene una(s) bandera(s) especial(es), pero es una revisión 0 del @f. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "%s @i @o %i (uid=%Iu, gid=%Ig, modo=%Im, tamaño=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "@I %B (%b) encontrado en un @i @o %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Ya se borró el %B (%b) encontrado en el @i @o %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "@i @o @I %i en el @S.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "@i @I %i en la lista de nodos-i huérfanos.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "El @S del @j tiene puesta una bandera desconocida de sólo lectura.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "El @S del @j tiene puesta una bandera desconocida incompatible.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "La versión del @j no está implementada en este e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1119,7 +1127,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1131,7 +1139,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1143,12 +1151,12 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Ejecutar el @j de todas formas"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr ""
"La bandera de recuperación no está puesta en el @S de respaldo,\n"
@@ -1156,7 +1164,7 @@ msgstr ""
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1166,7 +1174,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1175,18 +1183,18 @@ msgstr ""
"es %N; debería ser cero. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "El 'resize_inode' no está habilitado, pero el nodo-i de cambio del tamaño no es cero. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "Cambio de tamaño de nodo-i no válido. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1196,7 +1204,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1205,14 +1213,14 @@ msgstr ""
"se escribió en el superbloque es en el futuro.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "La pista de superbloque para un superbloque externo debería ser %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1221,39 +1229,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "El «checksum» del descriptor de @g %g es %04x; debería ser %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "El descriptor de @g %g etiquetado como no inicializado no tiene activada esa funcionalidad.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "La cuenta de nodos-i no utilizados %b del descriptor de @g %g no es válida. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "El mapa de bits de bloque del último grupo no está inicializado. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "La transacción %i del fichero de transacciones estaba corrupta; se ha interrumpido la repetición.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "La bandera test_fs está puesta (y ext4 está disponible). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1264,7 +1272,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1273,103 +1281,103 @@ msgstr ""
"\t(por menos de un día, probablemente debido a que el reloj del hardware está mal puesto)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Los «checksums» de uno o más descriptores de @gs de @bs son inválidos. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Se pone la cantidad de nodos-i libres a %j (era %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Se pone la cantidad de bloques libres a %c (era %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Ocultando el %U @i de @q %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "El superbloque tiene un bloque MMP inválido. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "El superbloque tiene un número mágico de MMP inválido. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2(): %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc(): %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "El metadata_csum de superbloque reemplaza a uninit_bg; no pueden ponerse los dos bits a la vez."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "El «checksum» del @b MMP del @S no cuadra. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "@S de un @f de 64 bits necesita «extents» para acceder al disco entero. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg es demasiado grande. (%N, valor máx. %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "El «checksum» del @S externo @j no cuadra con el @S. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "El metadata_csum_seed de @S no es necesario sin metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Error al inicializar el contexto de cuota en la biblioteca de soporte: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Tamaño-i extra requerido en @S incorrecto (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Tamaño-i extra deseado en @S incorrecto (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "%U @i de @q %i no válido. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "El @S tendría demasiados nodos-i (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1382,117 +1390,117 @@ msgstr ""
# da la impresión de que en ese momento se están haciendo las cosas.
# En este caso en particular, creo que es conveniente el gerundio. mm
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Paso 1: Verificando nodos-i, @bs y tamaños\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "El @r no es un @d. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "El @r tiene puesto el dtime (probablemente debido a una versión antigua del mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "El @i reservado %i %Q tiene un modo incorrecto. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "El @i %i @, tiene un dtime cero. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "El @i %i está en uso, pero tiene puesto dtime. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "El @i %i es un @d con @z. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "El @B de bloques del @g %g en el lugar %b @C.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "El @B de nodos-i del @g %g en el lugar %b @C.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "La tabla de nodos-i del @g %g en el lugar %b @C.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "El @B (%b) de bloques del @g %g está dañado. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "El @B (%b) de nodos-i del @g %g está dañado. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "@i %i, i_size es %Is, @s %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "@i %i, i_@bs es %Ib, @s %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "@I %B (%b) en @i %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) se solapa con los metadatos del @f en el @i %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "@i %i tiene @b(s) inválido(s). "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Demasiados @bs inválidos en el @i %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "Número de bloque inválido (%b) en el nodo-i de bloques dañados. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "El nodo-i de bloques dañados tiene @b(s) inválido(s). "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "¡@b duplicado o dañado está en uso!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "El @b dañado %b se usa como bloque indirecto en el nodo-i de bloques dañados"
@@ -1500,7 +1508,7 @@ msgstr "El @b dañado %b se usa como bloque indirecto en el nodo-i de bloques da
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1516,7 +1524,7 @@ msgstr ""
# cuando se traducen.
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1527,7 +1535,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1538,122 +1546,122 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "El @S primario (%b) está en la lista de @bs dañados.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "El bloque %b en los descriptores primarios de grupos está en la lista de @bs dañados\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Atención: el @S (%b) del grupo %g está dañado.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Atención: la copia de los descriptores del @g %g tiene un @b (%b) dañado.\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "¿Será un error de programación? El @b #%b se reclama sin razón en el process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "@A %N, es contigua a los @bs en el @b del @g %g para %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "@A del búfer del @b para reubicar %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Reubicando %s del @g %g de %b a %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Reubicando el @g %g de %s hacia %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Atención: no se puede leer el @b %b de %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Atención: no se puede escribir el @b %b para %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "Hay un @A del @B del @i (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "Hay un @A del @b del @B (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "@A en la cuenta-i de la información del enlace: %m\n"
# array -> matriz
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "@A del arreglo del @b de @ds: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Error mientras se exploraba el @i (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Error mientras se iteraba sobre los @bs en el @i %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Error al guardar la información de la cuenta del @i (@i=%i, cuenta=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Error al guardar la información del @b de @ds (@i=%i, @b=%b, núm=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Error al leer el @i %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "@i %i tiene puesta la bandera imagic. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1663,7 +1671,7 @@ msgstr ""
"no es modificable o tiene la bandera 'append-only' (sólo añadir). "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr ""
@@ -1671,137 +1679,137 @@ msgstr ""
"tiene un tamaño distinto de cero. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "El @i del @j no está en uso, pero contiene información. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "el @j no es un fichero normal. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "el @i %i era parte de la lista de nodos-i @os. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "Los nodos-i fueron parte de una lista enlazada que estaba huérfana y dañada. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "@A de la estructura refcount (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Error al leer el @b del @a %b para el @i %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "@i %i tiene un @b del @a %b dañado. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Error al leer el @b del @a %b (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "El @b del @a %b tiene una cuenta de referencia %r y @s %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Error al escribir el @b de @a %b (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "El @b del @a %b tiene h_@bs > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "@A de la estructura de reserva de región de @a. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "el @b del @a %b está dañado (hubo una colisión en la reserva). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "el @b del @a %b está dañado (nombre no válido). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "el @b del @a %b está dañado (valor no válido). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "el @i %i es demasiado grande. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) provoca que el @d sea demasiado grande. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) provoca que el fichero sea demasiado grande. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) provoca que el enlace simbólico sea demasiado grande. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "el @i %i tiene la bandera INDEX_FL puesta en el @f sin el árbol-h implementado.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "@i %i tiene puesta la bandera INDEX_FL pero no es un @d.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "El @h %i tiene un nodo raíz no válido.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "El @h %i tiene una versión de hash no implementada (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "El @h %i utiliza una bandera incompatible para el nodo raíz del árbol-h.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "El @h %i tiene una profundidad (%N) muy grande\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1810,55 +1818,55 @@ msgstr ""
"entra en conflicto con la metainformación del @f. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Falló la (re)creación del nodo-i de cambio de tamaño: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "El @i %i tiene un tamaño adicional (%IS) que es @n\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "El @a en el @i %i tiene una longitud de nombre (%N) que es @n\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "El @a en @i %i tiene un valor de desplazamiento (%N) que es @n\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "El @a en el @i %i tiene un valor de @b (%N) que es @n (debe ser 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "El @a en el @i %i tiene un valor de tamaño (%N) que es @n\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "El @a en el @i %i tiene un hash (%N) que es @n\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "El nodo-i %i está marcado como un %It pero parece ser un directorio.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Error mientras se leía el árbol de «@xs» en el @i %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1868,7 +1876,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1878,7 +1886,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1887,31 +1895,31 @@ msgstr ""
"\t(@b lógico %c, @b físico %b, longitud @n %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "El @i %i tiene la bandera EXTENTS_FL puesta en el @f sin «extents» implementado.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "el @i %i está en formato «extent», pero el @S no tiene la característica EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "el @i %i no tiene EXTENT_FL, pero está en formato «extents»\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "El enlace simbólico rápido %i tiene puesto EXTENT_FL. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1920,39 +1928,39 @@ msgstr ""
"\t(@b lógico @n %c, @b físico %b, longitud %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "el @i %i tiene un modo de «extent» no válido (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Error al convertir el @B de @bs del «subcluster»: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "El @i de la @q no es un fichero normal. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "El @i de la @q no está en uso, pero contiene datos. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "El @i de la @q es visible para el usuario. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "El nodo-i de bloques dañados parece inválido. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1961,26 +1969,26 @@ msgstr ""
"\t(@b lógico @n %c, @b físico %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "el @i %i parece que contiene basura. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "el @i %i pasa las comprobaciones, pero el «checksum» no cuadra con el @i. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "el @a del @i %i está dañado (hubo una colisión en la reserva). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1989,13 +1997,13 @@ msgstr ""
"\t(@b lógico %c, @b físico %b, longitud %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "el @b de @a %b del @i %i pasa las comprobaciones, pero el «checksum» no concuerda con el @b. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -2005,7 +2013,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -2014,37 +2022,37 @@ msgstr ""
"\t(@b lógico %c, @b físico %b, longitud %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "el @i %i tiene datos en línea, pero el @S no tiene la característica INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "el @i %i tiene la bandera INLINE_DATA_FL puesta en el @f pero no tiene capacidad de datos en línea.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "El bloque %b del @i %i está en conflicto con metadatos críticos; saltar comprobaciones de bloque.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "El @b %b del @i %i de @d debería estar en el @b %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "El @i %i del @d tiene un @x marcado como no inicializado en el @b %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -2053,14 +2061,14 @@ msgstr ""
"Se corregirá en el paso 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "El @i %i tiene puesta la bandera INLINE_DATA_FL pero no se ha encontrado @a. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2070,42 +2078,42 @@ msgstr ""
"o tiene la bandera 'inline-data' (datos en línea). "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "El @i %i tiene cabecera de @x pero la bandera de datos en línea está puesta.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "El @i %i parece tener datos en línea pero la bandera @x está puesta.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "El @i %i parece tener mapa de @b pero datos en línea y la bandera @x está puesta.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "El @i %i tiene datos en línea y las banderas @x están puestas pero el i_block contiene basura.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "La lista de bloques defectuosos dice que el @i de dicha lista es defectuoso. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "Error asignando estructura de reserva de la región de @x. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2114,46 +2122,46 @@ msgstr ""
"\t(@b lógico %c, @b físico @n %b, longitud %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "@A memoria para la lista de @d cifrados\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "el árbol de @x del @i %i podía ser más superficial (%b; podía ser <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "El @i %i del @f de «bigalloc» no puede asociarse a bloque. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "el @i %i tiene dañada la cabecera de @x. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "La(s) fecha(s) del @i %i posteriores a 2310-04-04 probablemente son anteriores a 1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "@i %i tiene un valor de @I @a @i %N.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "el @i %i tiene @n, @a, EA @i %N no tiene el indicador EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2161,10 +2169,38 @@ msgstr ""
"EA @i %N para el padre @i %i no tiene el indicador EA_INODE.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "@i %i tiene puesta la bandera casefold pero no es un directorio. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"@d %p tiene puesta la bandera casefold, pero\n"
+"la característica casefold no está activada. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "@h %i utiliza la versión de hash (%N), pero debería utilizar SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "@h %i utiliza SipHash, pero no debería. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2175,46 +2211,46 @@ msgstr ""
"Paso 1B: Se vuelven a explorar para los @bs reclamados en múltiples ocasiones\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "Bloque(s) reclamado(s) en múltiples ocasiones en @i %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Error mientras se exploraban los nodos-i (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "@A del @B del @i (@i_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Error mientras se iteraba sobre los @bs en el @i %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Error al ajustar la cuenta de referencia para el @b del @a %b (@i %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Paso 1C: Explorando los directorios para buscar nodos-i con @bs reclamados en múltiples ocasiones\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Paso 1D: Reconciliando los @bs reclamados en múltiples ocasiones\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2223,18 +2259,18 @@ msgstr ""
" tiene %r @b(s) reclamado(s) en múltiples ocasiones, compartido(s) con %N fichero(s):\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (@i #%i, fecha de modificación %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<metadatos del @f>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2244,357 +2280,357 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
msgstr "Los @bs reclamados en múltiples ocasiones ya se reasignaron o se clonaron.\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "No se puede clonar el fichero: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Paso 1E: Optimizando los árboles @x\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Fallo al optimizar el árbol @x %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optimizando los árboles @x: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Error interno: máxima profundidad de árbol «extent» demasiado grande (%b; esperada=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "El árbol @x del @i %i (nivel %b) podría ser más corto. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "El árbol @x del @i %i (nivel %b) podría ser más estrecho. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Paso 2: Verificando la estructura de @ds\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "Número @n del @i para '.' en el @i del @d %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "@E tiene un @i @n #: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "@E tiene un @i %Di @D/no utilizado. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "@E @L a '.' "
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "@E apunta al @i (%Di) ubicado en un @b dañado.\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "@E @L al @d %P (%Di).\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "@E @L al @r.\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "@E contiene caracteres no válidos en el nombre.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "Falta '.' en el @d @i %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "Falta '..' en el @i del @d %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "La primera @e '%Dn' (@i=%Di) en el @i del @d %i (%p) @s '.'\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "La segunda @e '%Dn' (@i=%Di) en el @i del @d %i @s '..'\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "El i_faddr @F %IF, @s cero.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "El i_file_acl @F %If, @s cero.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "El i_size @F %Id, @s cero.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "El i_frag @F %N, @s cero.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "El i_fsize @F %N, @s cero.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "El @i %i (%Q) tiene un modo @n (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "El @i del @d %i, %B, desplazamiento %N: el @d está dañado\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "El @i del @d %i, %B, desplazamiento %N: el nombre del fichero es muy largo\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "El @i %i del @d tiene un %B que no está reservado. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "La @e del @d '.' en el @i del @d %i no termina con NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "La @e del @d '..' en el @i %i del @d no termina con NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "El @i %i (%Q) es un @v de carácter @I.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "El @i %i (%Q) es un @v de @b @I.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "La @E está duplicada en la @e '.'.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "La @E está duplicada en la @e '..'.\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Error interno: no se puede encontrar el dir_info para %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "La @E tiene un rec_len de %Dr y @s %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "@A de la estructura icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Error al iterar sobre los @bs del @d: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Error al leer el @b %b del @d (@i %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Error al escribir el @b %b del @d (@i %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "@A del @b del @d para el @i %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Error al liberar el @i %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "La @e del @d para '.' en %p (%i) es grande.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "El @i %i (%Q) es un FIFO @I.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "El @i %i (%Q) es un «socket» @I.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Se pone el tipo de fichero para la @E a %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "La @E tiene un tipo de fichero incorrecto (era %Dt y @s %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "La @E tiene puesto el tipo de fichero.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "La @E tiene un nombre de @z.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "El enlace simbólico %Q (@i #%i) es @n.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "El @b del @a @F es @n (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "El @f contiene ficheros grandes, pero no tiene la bandera LARGE_FILE en el @S.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "Hay un @p el @h %d: %B no ha sido referenciado\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "Hay un @p el @h %d: %B ha sido referenciado dos veces\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "Hay un @en el @h %d: %B tiene un hash mínimo incorrecto\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "Hay un @p el @h %d: %B tiene un hash máximo incorrecto\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "El @h %d es @n (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "Hay un @p el @h %d (%q): el número del @b %b es incorrecto.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "Hay un @p el @h %d: el nodo raíz es @n.\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "Hay un @p el @h %d: %B tiene un límite @n (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "Hay un @p el @h %d: %B tiene una cuenta @n (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "Hay un @p el @h %d: %B tiene una tabla de hash no ordenada\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "Hay un @p el @h %d: %B tiene una profundidad que no es válida (%N)\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "@E está duplicada. "
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2606,7 +2642,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2617,158 +2653,164 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "El i_blocks_hi @F %N, @s cero.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "@b inesperado en el @h %d (%q).\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "@E hace referencia al @i %Di del @g %g en el que _INODE_UNINIT está puesto.\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "@E hace referencia al @i %Di encontrado en la zona de nodos-i no utilizados del @g %g.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "El i_file_acl @F %N, @s cero.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "Hay un @p el @h %d: falla la suma de comprobación del nodo raíz.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "Hay un @p el @h %d: falla el «checksum» del nodo interno.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "El @i de @d %i, %B, desplazamiento %N: el @d no tiene «checksum».\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "el @i de @d %i, %B: el @d pasa las comprobaciones pero falla el «checksum».\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "El tamaño (%N) del @i de @d en línea %i debe ser múltiplo de 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Fallo al reparar el tamaño del @i de @d en línea %i.\n"
# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "@E cifrada es demasiado corta.\n"
+# '@E' o 'La @e', no 'La @E'. Ver: e2fsck/message.c:125
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Nombre de fichero @E duplicado. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Paso 3: Revisando la conectividad de directorios\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "El @r no ha sido reservado. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "No hay espacio en el @d @l. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "El @d del @i %i (%p) está desconectado\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "No se encontró /@l. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "'..' en %Q (%i) es %P (%j) y debería ser %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "El /@l no existe o está dañado. No se puede reconectar.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "No se puede expandir /@l: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "No se puede reconectar %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Error mientras se intentaba encontrar /@l: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_block: %m mientras se intentaba crear el @d /@l.\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_inode: %m cuando se intentaba crear el @d /@l.\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block: %m mientras se creaba un nuevo @b de @d.\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_block: %m mientras se escribía el @b de @d para /@l\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Error mientras se ajustaba la cuenta del @i en el @i %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2782,7 +2824,7 @@ msgstr ""
# Hay alguna regla que se me escape? mm
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2792,42 +2834,42 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Error al crear el @d raíz (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Error al crear el @d /@l (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "El @r no es un @d; se finaliza la operación.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "No se puede proceder sin un @r.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/@l no es un @d (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/@l tiene datos en línea\n"
# Parece que habría que redactarlo como una orden: Coloque los ficheros perdidos en el directorio raíz
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2838,7 +2880,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2848,52 +2890,52 @@ msgstr ""
"Saque datos fuera del @f y ejecute otra vez e2fsck.\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/@l está cifrado\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Paso 3A: Optimizando directorios\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Fallo al crear el iterador dirs_to_hash: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Fallo al optimizar el directorio %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Optimizando directorios: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Paso 4: Revisando las cuentas de referencia\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "@i %i que tiene @z está @u. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "el @i %i está @u\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "La cuenta de referencia del @i %i es %Il, y @s %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2904,146 +2946,151 @@ msgstr ""
"inode_link_info[%i] es %N, inode.i_links_count es %Il. ¡Y deberían ser el mismo!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "La cuenta de referencia del @a @i %i es %N, y @s %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "El @d excede el número máximo de enlaces, pero no hay característica DIR_NLINK en el @S.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "La cuenta de referencia del @d @i %i está puesta a desbordamiento pero podría ser el valor exacto %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Paso 5: Revisando el resumen de información de grupos\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "No está puesto el relleno al final del @B del @i. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "No está puesto el relleno al final del @B del @b. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "Diferencias del @B del @b: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "Diferencias del @B del @i: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "La cuenta de nodos-i libres es incorrecta para el @g #%g (%i, contados=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "La cuenta de directorios es incorrecta para @g #%g (%i, contados=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "La cuenta de nodos-i libres es incorrecta (%i, contados=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "La cuenta de @bs libres es incorrecta para el @g #%g (%b, contados=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "La cuenta de @bs libres es incorrecta (%b, contados=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "ERROR DE PROGRAMACIÓN: los puntos finales del %B (%b, %c) del @f (#%N) no coinciden con los puntos finales del @B calculados (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Error interno: el final del bitmap (%N) no tiene sentido\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Error al copiar el reemplazo del @i @B: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Error al copiar el reemplazo del @b @B: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "El(los) @b(s) del @g %g está(n) en uso, pero el grupo está etiquetado como BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "El(los) nodo(s)-i del @g %g está(n) en uso, pero el grupo está etiquetado como INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "El @B del @i del @g %g no concuerda con el «checksum».\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "El @B del @b del @g %g no concuerda con el «checksum».\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Vuelva a crear el @j"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Actualizar la información de cuota para el tipo de cuota %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Error al poner la información de «checksum» del grupo de bloques: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Error al escribir la información del sistema de ficheros: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Error al hacer efectivas las escrituras en el dispositivo de almacenamiento: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Error al escribir la información de cuota para el tipo de cuota %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "¡Código de error no previsto (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "SE IGNORA"
@@ -3053,8 +3100,8 @@ msgstr "en move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Memoria utilizada: %d, tiempo transcurrido: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Memoria utilizada: %lu, tiempo transcurrido: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3287,8 +3334,8 @@ msgid_plural "%12u files\n"
msgstr[0] "%12u fichero\n"
msgstr[1] "%12u ficheros\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "mientras se determinaba si %s está montado."
@@ -3461,7 +3508,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "La opción -t no está implementada en esta versión de e2fsck.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "No es posible resolver '%s'"
@@ -3533,8 +3580,8 @@ msgid "while reading MMP block"
msgstr "mientras se leía el bloque MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3545,13 +3592,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "mientras se intentaba borrar %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "mientras se intentaba configurar el fichero de anulación\n"
@@ -3648,68 +3695,68 @@ msgstr "%s: Se intenta cargar el superbloque a pesar de los errores...\n"
msgid "Get a newer version of e2fsck!"
msgstr "¡Consiga una versión más moderna de e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "mientras se revisaba el fichero de transacciones para %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "No se puede proceder con la comprobación del sistema de ficheros"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr "Atención: se omitirá la recuperación del fichero de transacciones debido a que se está haciendo una revisión de sólo lectura del sistema de ficheros.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "no es posible poner las banderas de superbloque en %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Se ha encontrado un error en el fichero de transacciones en %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Fichero de transacciones corrupto en %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "mientras se recuperaba el fichero de transacciones de %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s tiene características no implementadas:"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s tiene una codificación no implementada: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s mientras se leía el nodo-i de los bloques dañados\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Esto no se ve muy bien, pero se intentará continuar...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Creando el fichero de transacciones (%d bloques): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Hecho.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3717,24 +3764,24 @@ msgstr ""
"\n"
"*** el fichero de transacciones se ha regenerado ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "finalizado"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: se cancela e2fsck.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Se reinicia e2fsck desde el principio...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "mientras se reajusta el contexto"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3743,12 +3790,12 @@ msgstr ""
"\n"
"%s: ***** ERRORES CORREGIDOS DEL SISTEMA DE FICHEROS *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: El sistema de ficheros se ha modificado.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3757,12 +3804,12 @@ msgstr ""
"\n"
"%s: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** REINICIE EL SISTEMA *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3773,51 +3820,51 @@ msgstr ""
"%s: ********** ATENCIÓN: El sistema de ficheros todavía tiene errores ***********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "sS"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "tT"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " ('t' aplica 'sí' a todo) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<s>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (s/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "¡cancelado!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "sí a todo\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "sí\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "no\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3826,7 +3873,7 @@ msgstr ""
"¿%s? no\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3835,38 +3882,38 @@ msgstr ""
"¿%s? sí\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "sí"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "no"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: bloque(s) no válido(s) de mapas de bits para %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "leyendo los mapas de bits del nodo-i y del bloque"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "mientras se intentaban leer los mapas de bits para %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "escribiendo los mapas de bits del bloque y del nodo-i"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "mientras se reescribían los mapas de bits de bloques y de nodos-i para %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3879,37 +3926,37 @@ msgstr ""
"%s: INCONSISTENCIA INESPERADA; EJECUTE fsck MANUALMENTE.\n"
"(i.e., sin las opciones -a o -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Memoria utilizada: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Memoria utilizada: %lluk/%lluk (%lluk/%lluk), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Memoria utilizada: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Memoria utilizada: %lluk, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "fecha: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "tiempo transcurrido: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "mientras se leía el nodo-i %lu en %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "mientras se escribía el nodo-i %lu en %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "INCONSISTENCIA INESPERADA: se está modificando el sistema de ficheros mientras fsck está corriendo.\n"
@@ -4119,68 +4166,68 @@ msgstr "Paso terminado, se encontraron %u bloques dañados. (%d/%d/%d errores)\n
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Modo de empleo: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v versión] ficheros...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Modo de empleo: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v versión] ficheros...\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "proyecto incorrecto - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "versión incorrecta - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "mientras se intentaba ver el estado del fichero %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "mientras se estaban leyendo las banderas en %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Las banderas de %s están puestas como "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "mientras se ponían las banderas en %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "La versión de %s está puesta como %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "mientras se estaba poniendo la versión en %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "El proyecto de %s está puesto como %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "mientras se estaba poniendo el proyecto en %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "No se puede reservar la variable de ruta en chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= es incompatible con - y +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Se debe usar '-v', =, - o +\n"
@@ -4189,8 +4236,8 @@ msgstr "Se debe usar '-v', =, - o +\n"
msgid "while reading inode %u"
msgstr "mientras se leía el nodo-i %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "mientras se expandía el directorio"
@@ -4199,143 +4246,147 @@ msgstr "mientras se expandía el directorio"
msgid "while linking \"%s\""
msgstr "mientras se enlazaba \"%s\""
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "mientras se escribía el nodo-i %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "mientras se listaban los atributos de \"%s\""
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "mientras se abría el nodo-i %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "mientras se reservaba memoria"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "mientras se estaban leyendo los atributos \"%s\" de \"%s\""
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "mientras se escribía el atributo \"%s\" del nodo-i %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "mientras se cerraba el nodo-i %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "mientras se reservaba al nodo-i \"%s\""
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "mientras se creaba el nodo-i \"%s\""
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "mientras se creaba el enlace simbólico \"%s\""
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "mientras se buscaba \"%s\""
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "mientras se creaba el directorio \"%s\""
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "mientras se abría \"%s\" para copiar"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "mientras se cambiaba el directorio de trabajo a \"%s\""
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "mientras se exploraba el directorio \"%s\""
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "mientras se intentaba lstat con \"%s\""
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "mientras se creaba el fichero especial \"%s\""
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "fallo de malloc"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "mientras se intentaba leer el enlace \"%s\""
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "el tamaño del enlace simbólico ha aumentado entre lstat() y readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "mientras se escribía el enlace simbólico \"%s\""
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "mientras se escribía el fichero \"%s\""
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "mientras se creaba el directorio \"%s\""
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "mientras se cambiaba de directorio"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ignorar la entrada \"%s\""
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "mientras se estaba poniendo el nodo-i para \"%s\""
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "mientras se ponían los xattrs para \"%s\""
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "mientras se guardaban los datos de nodo-i"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "mientras se copiaban xattrs en el directorio raíz"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4461,7 +4512,7 @@ msgstr "mientras se imprimía la lista de bloques dañados"
msgid "Bad blocks: %u"
msgstr "Bloques dañados: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "mientras se leía el nodo-i del fichero de transacciones"
@@ -4477,7 +4528,7 @@ msgstr "mientras se leía el superbloque del fichero de transacciones"
msgid "Journal superblock magic number invalid!\n"
msgstr "¡El número mágico del superbloque del fichero de transacciones es inválido!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "mientras se leía el superbloque del fichero de transacciones"
@@ -4485,30 +4536,30 @@ msgstr "mientras se leía el superbloque del fichero de transacciones"
msgid "Couldn't find journal superblock magic numbers"
msgstr "No se pueden encontrar los números mágicos del superbloque del fichero de transacciones"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "no se ha podido reservar un búfer MMP\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "leyendo el bloque MMP %llu desde '%s'\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "¡No se puede reservar memoria para analizar sintácticamente las opciones!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Parámetro de superbloque no válido: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Parámetro de tamaño del bloque no válido: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4531,27 +4582,27 @@ msgstr ""
"\tsuperblock=<número_del_superbloque>\n"
"\tblocksize=<tamaño_del_bloque>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tSe emplea %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "No se pudo encontrar un superbloque válido para el sistema de ficheros.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: característica MMP no habilitada.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "mientras se intentaban leer los mapas de bits '%s'\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4561,18 +4612,18 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Modo de empleo: %s [ -r|Q ] [ -f ] [ -b superbloque ] [ -B tamaño_de_bloque][ -fr ] dispositivo fichero_de_imagen\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Modo de empleo: %s [ -r|-Q ] [ -f ] [ -b superbloque ] [ -B tamaño_de_bloque ] dispositivo fichero_de_imagen\n"
#: misc/e2image.c:110
#, c-format
msgid " %s -I device image-file\n"
-msgstr " %s -I dispositivo fichero_de_imagen\n"
+msgstr " %s -I dispositivo fichero_de_imagen\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cfnp ] [ -o desplz_orig ] [ -O desplz_dest ] fs_orig [ fs_dest ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o desplz_orig ] [ -O desplz_dest ] fs_orig [ fs_dest ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4831,7 +4882,7 @@ msgstr "e2label: error leyendo el superbloque\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: no es un sistema de ficheros ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Atención: la etiqueta es muy larga, se trunca.\n"
@@ -4846,7 +4897,7 @@ msgstr "e2label: de nuevo, no se puede encontrar al superbloque\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: error al escribir el superbloque\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Modo de empleo: e2label dispositivo [nuevabandera]\n"
@@ -5049,7 +5100,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "depsplaz_oct comienzo_oct fin_oct bloqs_sf blqtam grp mkfs/hora_mount sb_uuid etiq\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5157,51 +5208,51 @@ msgstr "%s: demasiados dispositivos\n"
msgid "%s: too many arguments\n"
msgstr "%s: demasiados argumentos\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Montando solo para lectura.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Se permite a los usuarios reservar todos los bloques. ¡Es peligroso!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Por favor, ejecute 'e2fsck -fy %s'.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Hay que recuperar el fichero de transacciones; hace falta ejecutar `e2fsck -E journal_only'.\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: No está contemplado escribir en el fichero de transacciones.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Atención: se está montando un sistema de ficheros sin comprobar; se recomienda ejecutar e2fsck.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Atención: se ha llegado al número máximo de montajes; se recomienda ejecutar e2fsck.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Atención: se ha llegado al tiempo límite de una comprobación; se recomienda ejecutar e2fsck.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Se han detectado huérfanos; se recomienda ejecutar e2fsck.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Se han detectado errores; es preciso ejecutar e2fsck.\n"
@@ -5306,7 +5357,7 @@ msgstr ""
"\n"
"No se pueden escribir %d bloques en la tabla de nodos-i comenzando en %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "hecho \n"
@@ -5370,12 +5421,12 @@ msgstr "mientras se inicializaba con ceros el dispositivo del fichero de transac
msgid "while writing journal superblock"
msgstr "mientras se escribía el superbloque del fichero de transacciones"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "Se está creando un sistema de ficheros con %llu bloques de %dk y %u nodos-i\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5384,164 +5435,164 @@ msgstr ""
"Atención: hay %llu bloques sin usar.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Etiqueta del sistema de ficheros=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Etiqueta del sistema de ficheros=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Tipo de SO: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Tamaño del bloque=%u (log=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Tamaño del «cluster»=%u (log=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Tamaño del fragmento=%u (log=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Stride=%u bloques, anchura de stripe=%u bloques\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u nodos-i, %llu bloques\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu bloques (%2.2f%%) reservados para el superusuario\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "Primer bloque de datos=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Propietario del directorio raíz=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Número máximo de bloques del sistema de ficheros=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u grupos de bloques\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u grupo de bloques\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u bloques por grupo, %u «clusters» por grupo\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u bloques por grupo, %u fragmentos por grupo\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u nodos-i por grupo\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID del sistema de ficheros: %s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Respaldos del superbloque guardados en los bloques: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s requiere '-O 64bit'\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "'%s' debe estar antes de 'resize=%u'\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "desc_size no válido: '%s'\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "La semilla «hash» no es válida: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Desplazamiento no válido: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "mmp_update_interval no válido: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Número de superbloques de respaldo no válido: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Parámetro de «stride» no válido: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Parámetro stripe-width no válido: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Parámetro de variación de tamaño no válido: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "El máximo de la variación de tamaño debe ser mayor que el tamaño del sistema de ficheros.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "El cambio de tamaño en línea no es posible en sistemas de archivos de revisión 0\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "root_owner no válido: '%s'\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "La codificación no es válida: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5594,7 +5645,7 @@ msgstr ""
"\tquotatype=<tipo(s) de cuota para activar>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5605,17 +5656,17 @@ msgstr ""
"Atención: El parámetro «stripe-width» de RAID %u no es un múltiplo par del parámetro «stride» %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "error: Indicador de codificación no válido: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "error: Debe especificarse explícitamente una codifiación cuando se pasan las banderas de codificación\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5624,17 +5675,17 @@ msgstr ""
"Error de sintaxis en el fichero de configuración de mke2fs (%s, línea #%d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Se puso una opción no válida para el sistema de ficheros: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Se puso una opción de montaje no válida: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5643,7 +5694,7 @@ msgstr ""
"\n"
"El fichero mke2fs.conf no define el tipo de sistema de ficheros %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5651,11 +5702,11 @@ msgstr ""
"Probablemente sea necesario instalar un fichero mke2fs.conf actualizado.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Interrumpiendo...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5666,149 +5717,149 @@ msgstr ""
"Atención: el fs_type %s no está definido en mke2fs.conf\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "No se puede reservar memoria para la nueva RUTA.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "No se puede inicializar correctamente el perfil (error: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "tamaño del bloque inválido - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Atención: el tamaño del bloque %d no se puede utilizar en muchos sistemas.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "tamaño del «cluster» no válido - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "'-R' está en desuso; utilice '-E' en su lugar"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "comportamiento de errores incorrecto - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Número no válido de bloques por grupo"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "los bloques por grupo deben ser un múltiplo de 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Número no válido para el tamaño de flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "el tamaño de flex_bg debe ser una potencia de 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "el tamaño de flex_bg (%lu) debe ser menor o igual que 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "proporción de nodos-i inválida %s (min %d/max %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "tamaño de los nodos-i inválido - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "¡Atención: la opción -K está en desuso y no debería utilizarse nunca más. Utilice la opción extendida '-E nodiscard' en su lugar!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "en malloc para fichero_de_bloques_dañados"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr "Atención: la etiqueta es demasiado larga; se trunca a '%s'\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "el porcentaje de bloques reservados es inválido - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "número de los nodos-i inválido - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "mientras se reservaba la cadena de fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "nivel de revisión incorrecto - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "mientras se intentaba crear la revisión %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "La opción -t solo puede utilizarse una vez"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "La opción -T solo puede utilizarse una vez"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "mientras se intentaba abrir el dispositivo del fichero de transacciones %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr ""
"El tamaño del bloque del dispositivo del fichero de transacciones (%d) es\n"
"menor que el tamaño del bloque mínimo %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Utilizando el tamaño de bloque del dispositivo del fichero de transacciones: %d\n"
# The specified number of blocks is invalid.
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "bloques no válidos '%s' en el dispositivo '%s'"
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "sistema de ficheros"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "mientras se intentaba determinar el tamaño del sistema de ficheros"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5817,7 +5868,7 @@ msgstr ""
"explícitamente el tamaño del sistema de ficheros\n"
# Se informó que -> Se informó de que
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5830,48 +5881,48 @@ msgstr ""
"\tpartición modificada está ocupada o en uso. Es necesario reiniciar\n"
"\tpara poder releer la tabla de particiones.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "El sistema de ficheros es más grande que el tamaño aparente del dispositivo."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Fallo al analizar sintácticamente la lista de tipos de sf\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "El HURD no tiene implementada la opción de tipos de fichero.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "El HURD no tiene implementada la opción huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "El HURD no tiene implementada la opción metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "El HURD no tiene implementada la opción ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "mientras se intentaba determinar el tamaño del sector del hardware"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "mientras se intentaba determinar el tamaño del sector físico"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "mientras se establecía el tamaño de bloque; demasiado pequeño para el dispositivo\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Atención: el tamaño de bloque especificado %d es menor que el tamaño de sector físico del dispositivo %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5880,7 +5931,7 @@ msgstr ""
"%s: Tamaño del dispositivo (0x%llx bloques) %s demasiado grande para expresarse\n"
"\ten 32 bits utilizando un tamaño de bloque de %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5889,82 +5940,87 @@ msgstr ""
"%s: Tamaño del dispositivo (0x%llx bloques) %s demasiado grande para crear\n"
"\tun sistema de ficheros utilizando un tamaño de bloque de %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "resolución de fs_types para mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "Características del sistema de ficheros no disponibles con la revisión 0 de los sistemas de ficheros\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Superbloques dispersos no disponibles con la revisión 0 de los sistemas de ficheros\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Fichero de transacciones no implementado para la revisión 0 de los sistemas de ficheros\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "el porcentaje de bloques reservados es inválido - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Los «extents» DEBEN estar activados para un sistema de ficheros de 64 bits. Pase -O extents para rectificar.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "El tamaño de «cluster» no puede ser menor que el tamaño de bloque.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "para especificar un tamaño de «cluster» hace falta la característica «bigalloc»"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "atención: no se puede obtener la geometría del dispositivo para %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "el alineamiento de %s está desplazado en %lu bytes.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Esto puede provocar un rendimiento muy bajo; se sugiere (re)particionar.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s tiene capacidad DAX pero el tamaño actual %u de bloque difiere del tamaño %u de página del sistema, por lo que el sistema de ficheros no admitirá DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "los bloques de %d bytes son muy grandes para el sistema (máx %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr ""
"Atención: los bloques de %d bytes son muy grandes para el sistema\n"
"(máx %d): continuación forzada\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Sugerencia: utilice un núcleo de Linux >= 3.18 para disponer de una mejor estabilidad de los metadatos y de suma de comprobación del fichero de transacciones.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Codificación de nombre de fichero desconocida en el perfil: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Banderas de codificación desconocidas en el perfil: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5979,24 +6035,16 @@ msgstr ""
"pero esto podría no ser lo que usted desea.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "los nodos-i de %d octetos son demasiado pequeños para cuota de proyecto"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Las características de cifrado y «casefold» no son compatibles.\n"
-"No pueden estar activadas las dos a la vez.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "No se puede disponer de la característica «bigalloc» sin la característica «extents»"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -6004,7 +6052,7 @@ msgstr ""
"Las características resize_inode y meta_bg no son compatibles.\n"
"No pueden estar activadas las dos a la vez.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -6016,39 +6064,39 @@ msgstr ""
"Véase https://ext4.wiki.kernel.org/index.php/Bigalloc para más información\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "el cambio de tamaño en línea de los bloques reservados no está implementado para los sistemas de ficheros que no están esparcidos"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "la cuenta de bloques por grupo está fuera del intervalo"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "La característica flex_bg no está activada, por lo que no puede especificarse el tamaño de flex_bg"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "tamaño incorrecto del nodo-i %d (mín %d/máx %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "los nodos-i de %d octetos son demasiado pequeños para datos en línea; especifique un tamaño mayor"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "demasiados nodos-i (%llu), ¿aumentar el ratio de los nodos-i?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "demasiados nodos-i (%llu), especifique menos que 2^32 nodos-i"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6059,65 +6107,65 @@ msgstr ""
"\tgrande para un sistema de ficheros con %llu bloques; especifique\n"
"\tun ratio mayor de nodos-i (-i) o un menor número de nodos-i (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Descartando los bloques del dispositivo: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "fallo - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "mientras se inicializaba el contexto de cuota"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "mientras se escribían los nodos-i de la cuota"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "comportamiento de errores incorrecto en el perfil - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "en malloc para parámetros_dispersos_de_android"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "mientras se ajustaba el superbloque"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Los «extents» no están activados. Es posible calcular la suma de comprobación de los árboles «extent» de ficheros, no de los mapas de bloques. No activar los «extents» reduce la cobertura de las sumas de comprobación de metadatos. Pase -O «extents» para rectificar.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "No está activado que se admitan sistemas de ficheros de 64 bits. Los campos más grandes ofrecidos por esta característica permiten la suma de comprobación más potente. Pase -O 64bit para rectificar.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "La característica metadata_csum_seed requiere la característica metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "El descarte ha sido correcto y devolverá 0s - se salta el borrado de la tabla de nodos-i\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "sistema operativo desconocido - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Reservando las tablas de grupo: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "mientras se intentaba reservar las tablas del sistema de ficheros"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6125,30 +6173,30 @@ msgstr ""
"\n"
"\tmientras se convertía el mapa de bits de «subcluster»"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s puede corromperse aún más por reescritura de superbloque\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "mientras se inicializaba a cero el bloque %llu al final del sistema de ficheros"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "mientras se reservaban los bloques para el cambio de tamaño en línea"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "fichero de transacciones"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Añadiendo el fichero de transacciones al dispositivo %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6157,21 +6205,21 @@ msgstr ""
"\n"
"\tmientras se intentaba añadir el fichero de transacciones al dispositivo %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "hecho\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "Se omite la creación del fichero de transacciones en modo solo-super\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Creando el fichero de transacciones (%u bloques): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6179,7 +6227,7 @@ msgstr ""
"\n"
"\tmientras se intentaba crear el fichero de transacciones"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6187,28 +6235,28 @@ msgstr ""
"\n"
"Error mientras se activaba la característica de protección de montaje múltiple."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "La protección de montaje múltiple está activada con un intervalo de actualización de %d segundos.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Copiando ficheros al dispositivo: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "mientras se poblaba el sistema de ficheros"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Escribiendo superbloques y la información contable del sistema de ficheros: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "mientras se escribía y se cerraba el sistema de ficheros"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6284,7 +6332,7 @@ msgstr "No se puede obtener el tamaño de %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d inicio=%8d tamaño=%8lu fin=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6292,15 +6340,15 @@ msgstr ""
"\n"
"Esta operación requiere un systema de ficheros recién comprobado.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Por favor, ejecute e2fsck -f sobre el sistema de ficheros.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Por favor, ejecute e2fsck -fD sobre el sistema de ficheros.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6321,20 +6369,20 @@ msgstr ""
"\t[-E opción-extendida[,...]] [-T última-fecha-de-revisón] [-U UUID]\n"
"\t[-I nuevo-tamaño-de-nodo-i] [-z fichero-deshacer] dispositivo\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "¡No se encontró el superbloque del fichero de transacciones!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "mientras se intentaba abrir el fichero de transacciones externo"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s no es un dispositivo con fichero de transacciones.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6343,13 +6391,13 @@ msgstr ""
"El superbloque del fichero de transacciones está corrupto;\n"
"nr_users es demasiado grande (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr ""
"No se encontró el UUID del sistema de ficheros en el fichero de\n"
"transacciones del dispositivo.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6357,52 +6405,52 @@ msgstr ""
"No se puede localizar el dispositivo del fichero de transacciones. NO se eliminó\n"
"Utilice la opción -f para eliminar el dispositivo del fichero de transacciones perdido.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Fichero de transacciones eliminado\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "mientras se leían los mapas de bits"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "mientras se borraba el nodo-i del fichero de transacciones"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "mientras se escribía el nodo-i del fichero de transacciones"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(¡y reinicie después!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Después de ejecutar e2fsck, por favor, ejecute `resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Por favor, ejecute `resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "' para activar el modo de 64 bits.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "' para desactivar el modo de 64 bits.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6410,17 +6458,17 @@ msgstr ""
"ATENCIÓN: no se ha podido confirmar la capacidad del núcleo para metadata_csum_seed.\n"
" Se requiere Linux >= v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "No se puede desactivar la característica '%s' del sistema de ficheros.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "El ajuste de la característica '%s' del sistema de ficheros no está implementado.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6428,7 +6476,7 @@ msgstr ""
"La bandera 'has_journal' sólo puede ser borrada cuando el sistema de\n"
"ficheros no está montado o está montado en modo de sólo lectura.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6436,7 +6484,7 @@ msgstr ""
"La bandera 'needs_recovery' está puesta. Por favor ejecute e2fsck antes\n"
"de deactivar la bandera 'has_journal'.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6444,7 +6492,7 @@ msgstr ""
"La característica 'sparse_super' no se puede activar\n"
"en sistemas de ficheros que tengan la característica meta_bg activada.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6454,12 +6502,12 @@ msgstr ""
"ponerse si el sistema de ficheros está montado o es\n"
"de solo lectura.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Se ha activado la protección de montaje múltiple con un intervalo de actualización de %ds.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6467,20 +6515,20 @@ msgstr ""
"La característica de montaje múltiple no se puede\n"
"desactivar si el sistema de ficheros es de solo lectura.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Error mientras se leían los mapas de bits\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "El número mágico en el bloque MMP no cuadra. esperado: %x, real: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "mientras se leía el bloque MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6488,7 +6536,7 @@ msgstr ""
"Borrar la bandera flex_bg provocaría que el sistema de ficheros se\n"
"volviera inconsistente.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6496,46 +6544,54 @@ msgstr ""
"La característica 'huge_file' sólo puede ser borrada cuando el sistema de\n"
"ficheros no está montado o está en modo de sólo lectura.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Podría tardarse un poco en activar la suma de comprobación."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "¡No puede activarse metadata_csum en un sistema de ficheros montado!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Los «extents» no están activados. Puede calcularse la suma de comprobación del árbol «extent» de ficheros, no de mapas de bloques. No activar los «extents» reduce la cobertura de la suma de comprobación de metadatos. Ejecute otra vez con -O «extent» para rectificar.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "No está activado que se admitan sistemas de ficheros de 64 bits. Los campos más grandes ofrecidos por esta característica permiten la suma de comprobación más potente. Ejecute resize2fs -b para rectificar.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Podría tardarse un rato en desactivar la suma de comprobación."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "¡No se puede desactivar metadata_csum en un sistema de ficheros montado!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "¡No se puede activar uninit_bg en un sistema de ficheros montado!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "¡No se puede desactivar uninit_bg en un sistema de ficheros montado!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "¡No se puede activar el modo de 64 bits cuando está montado!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "¡No se puede desactivar el modo de 64 bits cuando está montado!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "No se puede activar la característica del proyecto; el tamaño del nodo-i es demasiado pequeño.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6543,13 +6599,11 @@ msgstr ""
"\n"
"Atención: la opción '^quota' deja sin efecto los argumentos '-Q'.\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr ""
-"No es posible activar la característica de cifrado en sistemas de ficheros que tengan\n"
-"la característica de codificación activada.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "La característica casefold sólo puede activarse cuando el sistema de ficheros no está montado.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6557,7 +6611,7 @@ msgstr ""
"La característica 'metadata_csum_seed' solo se puede activar\n"
"en sistemas de ficheros que tengan activada la característica meta_csum.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6566,15 +6620,15 @@ msgstr ""
"sistema de ficheros para que puedan reescribirse sin peligro todos los metadatos \n"
"y casen con el nuevo UUID.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Podría tardarse un poco en recalcular las sumas de comprobación."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "El sistema de ficheros ya tiene un fichero de transacciones.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6583,21 +6637,21 @@ msgstr ""
"\n"
"\tmientras se intentaba abrir el fichero de transacciones en %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Creando un fichero de transacciones en el dispositivo %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "mientras se agregaba un sistema de ficheros al fichero de transacciones en %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Creando el nodo-i del fichero de transacciones: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6605,31 +6659,31 @@ msgstr ""
"\n"
"\tmientras intentaba crear el fichero de transacciones"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "No se puede activar la cuota del proyecto; el tamaño del nodo-i es demasiado pequeño.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "mientras se inicializaba el contexto de cuota en la biblioteca de soporte"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "mientras se actualizaban los límites de cuota (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "mientras se escribía el fichero de cuota (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "mientras se borraba el fichero de cuota (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6651,97 +6705,117 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "No se puede analizar sintácticamente el especificador de fecha/hora: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "cuenta de montajes incorrectos - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "nombre del gid/grupo incorrecto - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "intervalo incorrecto - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "proporción de bloques reservados incorrecta - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o solo puede especificarse una vez"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O sólo se puede especificar una vez"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "cuenta de bloques reservados incorrecta - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "nombre de uid/usuario incorrecto - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "tamaño de nodo-i no válido - %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "El tamaño de nodo-i debe ser potencia de dos - %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "mmp_update_interval demasiado grande: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
msgstr[0] "Se pone el intervalo de actualización de protección de montaje múltiple a %lu segundo\n"
msgstr[1] "Se pone el intervalo de actualización de protección de montaje múltiple a %lu segundos\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Se pone el indicador de error del sistema de ficheros para forzar fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "«Stride» de RAID no válido: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "«stripe-width» de RAID no válido: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Algoritmo «hash» no válido: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Poniendo el algoritmo «hash» predeterminado a %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "No se puede alterar la condificación existente\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "La codificación no es válida: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Se pone la condificación '%s'\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Se ponen encoding_flags a '%s' \n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6759,6 +6833,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Las opciones especificadas son incorrectas.\n"
@@ -6776,32 +6852,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<condificación>\n"
+"\tencoding_flags=<banderas>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Fallo mientras se leía el mapa de bits del nodo-i\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Fallo leyendo el mapa de bits del bloque\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "bloques por ser movidos"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Fallo reservando el mapa de bits del bloque al incrementar el tamaño de nodo-i\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "No hay espacio suficiente para aumentar el tamaño de nodo-i \n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Fallo mientras se reservaban los bloques para el cambio de tamaño de nodo-i \n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6809,7 +6887,7 @@ msgstr ""
"Error al cambiar el tamaño del nodo-i.\n"
"Ejecute e2undo para deshacer los cambios del sistema de ficheros. \n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6817,7 +6895,7 @@ msgstr ""
"Si se sabe con certeza que el sistema de ficheros no está en uso en ningún\n"
"modo, ejecute 'tune2fs -f -E clear_mmp {device}'\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6826,29 +6904,29 @@ msgstr ""
"El número mágico del bloque MMP es incorrecto. Trate de arreglarlo ejecutando:\n"
"'e2fsck -f %s'\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "No se puede modificar el dispositivo de un fichero de transacciones.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "El tamaño del nodo-i ya es %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "No es posible reducir el tamaño del nodo-i\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Tamaño incorrecto del nodo-i %lu (máx %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Podría tardarse un rato en cambiar el tamaño de los nodos-i."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6865,57 +6943,57 @@ msgstr ""
"después ejecute otra vez esta orden. De lo contrario, podrían perderse los cambios\n"
"al recuperar el fichero de transacciones.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Recuperando el fichero de transacciones.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Se pone la cuenta de montajes máxima a %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Se pone la cuenta de montajes actual a %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Se pone el comportamiento de errores a %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Se pone el gid de los bloques reservados a %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "el intervalo entre revisiones es demasiado grande (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Se pone el intervalo entre revisiones en %lu segundos\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Se pone el porcentaje de bloques reservados a %g%% (%llu bloques)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "la cantidad de bloques reservados es demasiado grande (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Se pone la cantidad de bloques reservados a %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6923,7 +7001,7 @@ msgstr ""
"\n"
"El sistema de ficheros ya tiene superbloques dispersos.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6933,7 +7011,7 @@ msgstr ""
"La característica de superbloques dispersos no se puede activar\n"
"en sistemas de ficheros que tengan la característica meta_bg activada.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6942,7 +7020,7 @@ msgstr ""
"\n"
"La bandera de superbloques dispersos está puesta. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6950,49 +7028,49 @@ msgstr ""
"\n"
"No es posible quitar la bandera de superbloques dispersos.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Se pone la hora de la última revisión al sistema de ficheros a %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Se pone el uid de los bloques reservados a %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Error al utilizar clear_mmp. Debe utilizarse con -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "La característica de cuota sólo puede cambiarse cuando el sistema de ficheros no está montado.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Podría tardarse un rato en establecer el UUID en este sistema de ficheros."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "El UUID solo puede cambiarse cuando el sistema de ficheros no está montado.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Si solo utiliza núcleos más recientes que v4.4, ejecute 'tune2fs -O metadata_csum_seed' y ejecute otra vez esta orden.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Formato del UUID no válido\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Hace falta actualizar el superbloque del fichero de transacciones.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "El tamaño de nodo-i solo puede cambiarse cuando el sistema de ficheros no está montado.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -7000,26 +7078,26 @@ msgstr ""
"No es posible cambiar el tamaño de nodo-i en sistemas de ficheros que tengan\n"
"la característica flex_bg activada.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Se pone el tamaño de nodo-i %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Fallo mientras se cambiaba el tamaño de nodo-i\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Configurando el tamaño de «stride» a %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Configurando la anchura de «stripe» a %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Se ponen las opciones de montaje extendidas predeterminadas a '%s'\n"
@@ -7321,17 +7399,17 @@ msgstr ""
"bajo su cuenta y riesgo! Utilice la opción «force» si desea seguir adelante de todos modos.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "mientras se abría %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "mientras se estaba obteniendo información del estado de %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7340,30 +7418,34 @@ msgstr ""
"Por favor ejecute antes 'e2fsck -f %s'.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Tamaño mínimo estimado del sistema de ficheros: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "El nuevo tamaño no es válido: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "El nuevo tamaño es demasiado grande para poder expresarse en 32 bits\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "El nuevo tamaño da lugar a demasiados descriptores del grupo de bloques.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "El nuevo tamaño es menor que el mínimo (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Longitud de «stride» no válida"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7374,27 +7456,27 @@ msgstr ""
"Y se ha solicitado un nuevo tamaño de %llu bloques.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "No se puede poner y quitar la característica 64bit.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "No se puede cambiar la característica 64bit en un sistema de ficheros mayor de 2^32 bloques.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "No se puede cambiar la característica 64bit cuando el sistema de ficheros está montado.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Por favor, active la característica «extents» con tune2fs antes de activar la característica 64bit.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7403,37 +7485,37 @@ msgstr ""
"El sistema de ficheros ya tiene %llu bloques (%dk) de longitud. ¡No hay que hacer nada!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "El sistema de ficheros ya es de 64 bits.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "El sistema de ficheros ya es de 32 bits.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Se convierte el sistema de ficheros a 64 bits.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Se convierte el sistema de ficheros a 32 bits.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "Cambiando el tamaño del sistema de ficheros en %s a %llu (%dk) bloques.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "mientras se intentaba modificar el tamaño %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7442,7 +7524,7 @@ msgstr ""
"Por favor, ejecute 'e2fsck -fy %s' para arreglar el sistema de ficheros\n"
"después de la operación de cambio de tamaño interrumpida.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7451,7 +7533,7 @@ msgstr ""
"El sistema de ficheros en %s tiene ahora %llu bloques (de %dk).\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "mientras se intentaba truncar %s"
@@ -7553,8 +7635,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Esto nunca debería suceder: ¡El nodo-i de cambio de tamaño está corrupto!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Biblioteca EXT2FS versión 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Biblioteca EXT2FS versión 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8268,6 +8350,10 @@ msgstr "El nodo-i está corrupto"
msgid "Inode containing extended attribute value is corrupted"
msgstr "El nodo-i que contiene el valor de un atributo extendido está corrupto"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Descriptores de grupo no cargados"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Versión de «profile» 0.0"
@@ -8392,47 +8478,47 @@ msgstr "Valor entero no válido"
msgid "Bad magic value in profile_file_data_t"
msgstr "Valor mágico incorrecto en profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\túltima fecha de montaje de %s %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\túltima fecha de montaje en %.*s %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\túltima fecha de montaje %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tfecha de creación %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tfecha de última modificación %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Se ha encontrado una tabla de particiones %s en %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "El fichero %s no existe y no se ha especificado ningún tamaño.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Creando el fichero ordinario %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "No se puede abrir %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8440,26 +8526,38 @@ msgstr ""
"\n"
"En apariencia, el dispositivo no existe; ¿Se especificó correctamente?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s no es un dispositivo especial de bloques.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s contiene un sistema de ficheros %s etiquetado '%s'\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s contiene un sistema de ficheros %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s contiene datos `%s'\n"
+#~ msgid ""
+#~ "The encrypt and casefold features are not compatible.\n"
+#~ "They can not be both enabled simultaneously.\n"
+#~ msgstr ""
+#~ "Las características de cifrado y «casefold» no son compatibles.\n"
+#~ "No pueden estar activadas las dos a la vez.\n"
+
+#~ msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+#~ msgstr ""
+#~ "No es posible activar la característica de cifrado en sistemas de ficheros que tengan\n"
+#~ "la característica de codificación activada.\n"
+
#~ msgid "while opening directory \"%s\""
#~ msgstr "mientras se abría el directorio \"%s\""
diff --git a/po/fr.gmo b/po/fr.gmo
index 1423fc6b..23db0353 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 01fa8dea..96662a7a 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the e2fsprogs package.
# Copyright 1996 Free Software Foundation, Inc.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
-# Samuel Thibault <samuel.thibault@ens-lyon.org>, 2006-2018.
+# Samuel Thibault <samuel.thibault@ens-lyon.org>, 2006-2021.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -76,10 +76,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: GNU e2fsprogs 1.45.3\n"
+"Project-Id-Version: GNU e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-21 23:21+0200\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-02 21:07+0100\n"
"Last-Translator: Samuel Thibault <samuel.thibault@ens-lyon.org>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -105,9 +105,9 @@ msgstr "lors de la lecture de l'i-noeud des blocs dfectueux"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "lors de la tentative d'ouverture de %s"
@@ -132,7 +132,7 @@ msgstr ""
"Avertissement: bloc illgal %u repr dans l'i-noeud des blocs\n"
"dfectueux. Effac.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "lors de la libration du fichier tdb dir_info"
@@ -164,15 +164,15 @@ msgstr "Erreur lors de l'criture du bloc %lu (%s) lors de %s. "
msgid "Error writing block %lu (%s). "
msgstr "Erreur lors de d'criture du bloc %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "blocs des rpertoires vides"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "carte des rpertoires vide"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Bloc des rpertoires %u (n%d) vide dans l'i-noeud %u\n"
@@ -182,12 +182,12 @@ msgstr "Bloc des rpertoires %u (n%d) vide dans l'i-noeud %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s nom-de-fichier nombre-de-blocs taille-des-blocs\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Nombre illgal de blocs!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Ne peut allouer le tampon de bloc (taille=%d)\n"
@@ -216,7 +216,7 @@ msgstr "Utilisation: %s [-F] [-Inombre_blocs_du_tampon_d_i_noeud] priphrique
msgid "while opening %s for flushing"
msgstr "lors de l'ouverture de %s pour la vidange"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "lors de la tentative de vidange de %s"
@@ -253,7 +253,7 @@ msgstr "%s: aucun superbloc de journal valide n'a t trouv\n"
msgid "%s: journal too short\n"
msgstr "%s: journal trop court\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: rcupration du journal\n"
@@ -507,113 +507,113 @@ msgstr "type de quota inconnu"
msgid "multiply claimed inode map"
msgstr "carte des i-noeuds rclams plusieurs fois"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "erreur interne: ne peut trouver dup_blk pour %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "retourn de clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "erreur interne: impossible de trouver l'enregistrement de bloc EA pour %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "erreur interne: impossible de trouver l'enregistrement d'i-noeud EA pour %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "lors du hachage de l'entre avec e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "lecture des blocs de rpertoire"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "l'obtention de l'i-noeud suivant depuis l'examen"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "carte des i-noeuds utiliss"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "carte des i-noeuds de rpertoires"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "carte des i-noeuds de fichiers normaux"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "carte des blocs utiliss"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "carte des blocs de mtadonnes"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "l'ouverture de l'examen des i-noeuds"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "l'obtention de l'i-noeud suivant depuis l'examen"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Passe1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "lecture des blocs indirects de l'i-noeud %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "carte des i-noeuds dfectueux"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "i-noeud dans la carte des blocs dfectueux"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "carte d'i-noeuds magiques"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "carte des blocs rclams plusieurs fois"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "carte des blocs d'attributs tendus"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): %6lu attendu, obtenu phys %6lu (blkcnt %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "bitmap de blocs"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "bitmap d'i-noeuds"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "table d'i-noeuds"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Passe2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Ne peut continuer."
@@ -629,11 +629,11 @@ msgstr "Pointe mmoire"
msgid "Pass 3"
msgstr "Passe3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "bitmap de dtection des boucles d'i-noeuds"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Passe4"
@@ -649,187 +649,195 @@ msgstr "check_inode_bitmap_checksum: Erreur d'allocation mmoire"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: Erreur d'allocation mmoire"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(pas d'invite)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Corriger"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Effacer"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Relocaliser"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Allouer"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "tendre"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Connecter /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Crer"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Rcuprer"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Tronquer"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Effacer l'i-noeud"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Arrter"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Scinder"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Continuer"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Cloner les blocs rclams plusieurs fois"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Dtruire le fichier"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Supprimer les messages"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Dlier"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Effacer l'index HTree"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Recrer"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Optimiser"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Effacer le drapeau"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(AUCUN)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "CORRIG"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "EFFAC"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "RELOCALIS"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "ALLOU"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "TENDU"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "RECONNECT"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "CR"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "RCUPR"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "TRONQU"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "INODE EFFAC"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "ARRT"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "SCIND"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "POURSUITE"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "BLOCS RCLAMS PLUSIEURS FOIS CLONS"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "FICHIER DTRUIT"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "SUPPRIM"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "DLI"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "INDEX HTREE EFFAC"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "RECRERA"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "OPTIMISERA"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "DRAPEAU EFFAC"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "le @B de @bs pour le @g %g n'est pas dans le @g. (@b %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "le @B d'@is pour le @g %g n'est pas dans le @g. (@b %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -846,7 +854,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -872,7 +880,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -885,7 +893,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -896,18 +904,18 @@ msgstr ""
"de la taille des @b.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "@S @bs_per_group = %b, aurait d tre %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "@S first_data_@b = %b, aurait d tre %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -915,7 +923,7 @@ msgstr ""
"Le @f n'a pas d'UUID; on en gnre un.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -935,48 +943,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Corruption repre dans le @S. (%s=%N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Erreur lors de la dtermination de la taille du @v physique: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "le compteur d'@i dans le @S est %i, @s %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Le Hurd ne supporte pas la fonctionnalit filetype.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "le @S a un @j @n (@i%i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Le @j externe a plusieurs utilisateurs de @f (non support).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Ne peut trouver le @j externe\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "Le @j externe a un @S corrompu\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Le @j externe ne supporte pas ce @f\n"
@@ -984,7 +992,7 @@ msgstr "Le @j externe ne supporte pas ce @f\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -996,80 +1004,80 @@ msgstr ""
"Il est aussi possible que le @S du @j soit corrompu.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "Le @S du @j est corrompu.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "Le drapeau has_@j du @S n'est pas activ, mais un @j est prsent.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "Le @S a le drapeau needs_recovery activ, mais n'a pas de de @j.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "le drapeau needs_recovery n'est pas activ, mais le @j contient des donnes.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Effacer le @j"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "le @f a des drapeaux de fonctionnalits activs mais est un @f de version 0. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "%s l'@i @o %i (uid=%Iu, gid=%Ig, mode=%Im, taille=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "%B (%b) @I repr dans l'@i @o %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Dj effa le %B (%b) repr dans l'@i @o %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "@i @o %i @I dans le @S.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "@i %i @I dans la liste des @is @os.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "Le @S du @j a un drapeau de fonctionnalits inconnu slectionn en lecture seule.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "Le @S du @j contient un drapeau non reconnu de fonctionnalits incompatibles.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "cette version de @j n'est pas supporte par cet e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1080,7 +1088,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1092,7 +1100,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1103,18 +1111,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Excuter quand mme le @j"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "Le drapeau de rcupration n'est pas activ dans le @S de secours, le @j sera donc quand mme excut.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1124,7 +1132,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1133,18 +1141,18 @@ msgstr ""
"est %N; @s zro. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_inode n'est pas activ, mais l'@i de changement de taille n'est pas nul. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "L'@i de changement de taille n'est pas valide. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1154,7 +1162,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1163,14 +1171,14 @@ msgstr ""
"\tmaintenant = %T) est dans le futur.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "L'indication du @S pour le @S externe @s %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1179,12 +1187,12 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "Le checksum du descripteur de @g %g est %04x, devrait tre %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr ""
@@ -1192,28 +1200,28 @@ msgstr ""
"fonctionnalit n'est pas active.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "Le descripteur de @g %g a un nombre invalide d'i-noeuds non utiliss %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "Le @B de @b du dernier @g n'est pas initialis. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "La transaction %i du journal tait corrompue, le rejeu a t abandonn.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Le drapeau test_fs est positionn (et ext4 est disponible). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1224,7 +1232,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1233,103 +1241,103 @@ msgstr ""
"\t(de moins d'un jour, probablement cause d'une horloge matrielle mal configure)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Le checksum d'un ou de plusieurs descripteurs de @g de @b est invalide. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Dfinition du compteur d'@is libres %j (tait %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Dfinition du compteur des @bs libres %c (tait %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Dissimulation de %U @i de @q %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "Le @S a un @b MMP invalide. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "@S a un numro magique MMP invalide. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "exet2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "Le metadata_csum du @S annule uninit_bg; les deux bits de fonctionalits ne peuvent tre positionns simultanment."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "La somme de contrle du @b MMP du @S ne correspond. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "Le superbloc d'un @f 64bit a besoin des extents pour accder l'ensemble du disque. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg est trop grand. (%N, valeur maximum %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "La somme de contrle du @S du @j externe ne correspond pas au @S"
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "Le metadata_csum_seed du @S n'est pas ncessaire sans metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Erreur lors de l'initialisation du contexte de quota dans la bibliothque support: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Extra isize requis invalide dans le @S (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Extra isize dsir invalide dans le @S (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "%U @i de @q %i invalide. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "Le @S aurait trop d'i-noeuds (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1338,117 +1346,117 @@ msgstr ""
"ne sont pas compatibles. resize_inode devrait tre dsactive. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Passe1: vrification des @is, des @bs et des tailles\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "l'@r n'est pas un @d. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "l'@r a un dtime (probablement en raison d'un vieux mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "l'@i rserv %i (%Q) a un mode @n. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "l'@i @D %i a un dtime nul. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "l'@i %i est utilis, mais a un dtime. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "l'@i %i est un @d @z. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "le @B de @bs du @g %g %b @C.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "le @B d'@is du @g %g %b @C.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "la table d'@is du @g %g %b @C.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "le @B (%b) de @bs du @g %g's est corrompu. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "le @B (%b) d'@is du @g %g's est corrompu. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "@i %i, i_size est %Is, @s %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "@i %i, i_@bs est %Ib, @s %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "%B (%b) @I dans l'@i %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "le %B (%b) chevauche les mtadonnes de @f dans l'@i %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "l'@i %i a un(des) @b(s) illgal(aux). "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Trop de @bs illgaux dans l'@i %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "%B (%b) @I dans l'@i des @b dfectueux. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "L'@i des @bs dfectueux a un(des) @b(s) illgal(aux). "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "@b dupliqu ou dfectueux actuellement utilis!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "%b dfectueux utilis en tant que @b indirect d'@i des @bs dfectueux. "
@@ -1456,7 +1464,7 @@ msgstr "%b dfectueux utilis en tant que @b indirect d'@i des @bs dfectueux. "
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1470,7 +1478,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1481,7 +1489,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1492,121 +1500,121 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Le @S primaire (%b) est sur la liste des @bs dfectueux.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Le bloc %b dans les descripteurs de @gs primaires est dans la liste des @bs dfectueux\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Avertissement: le @S (%b) du @g %g est corrompu.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Avertissement: la copie des descripteurs de @gs du @g %g a un @b (%b) dfectueux.\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Erreur de programmation? @b n%b reclam sans aucune raison dans process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "@A de %N @b(s) contigus dans le @g de @b %g pour %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "@A d'un tampon de @b pour la relocalisation de %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Relocalisation du %s du @g %g de %b vers %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Relocalisation pour le @g %g du %s vers %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Avertissement: impossible de lire le @b %b de %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Avertissement: impossible d'crire le @b %b pour %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "@A du @B d'@is (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "@A du @B de @bs (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "@A de l'information du compteur de liens: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "@A du tableau des @bs de @ds: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Erreur lors de l'examen des @is (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Erreur lors de la boucle d'itration sur les @bs dans l'@i %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Erreur lors du stockage du compteur d'information d'@i (@i=%i, compteur=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Erreur lors du stockage de l'information du @b de @ds (@i=%i, @b=%b, num=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Erreur lors de la lecture de l'@i %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "l'@i %i a un drapeau imagic activ. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1616,198 +1624,198 @@ msgstr ""
"immutable ou append-only activ. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "L'@i spcial (@v/socket/fifo) %i a une taille non nulle. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "l'@i de @j n'est pas utilis mais contient des donnes. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "le @j n'est pas un fichier normal. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "l'@i %i fait partie de la liste des @is @os. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "des @is qui faisaient partie d'une liste chane d'orphelins corrompue ont t reprs. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "@A d'une structure de comptage de rfrences (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Erreur lors de la lecture du @b %b d'@a pour l'@i %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "l'@i %i a un mauvais @b %b d'@a. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Erreur de lecture du @b %b d'@a (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "le @b %b d'@a a un compteur de rfrence %r, @s %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Erreur d'criture du @b %b d'@a (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "le @b %b d'@a a h_blocks>1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "@A d'une structure d'allocation de rgion d'@a. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "le @b %b d'@a est corrompu (collision d'allocation). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "le @b %b d'@a est corrompu (nom @n). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "le @b %b d'@a est corrompu (valeur @n). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "l'@i %i est trop grand. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "le %B (%b) rend le @d trop grand. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "le %B (%b) rend le fichier trop grand. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "le %B (%b) rend le lien symbolique trop grand. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "l'@i %i a le drapeau INDEX_FL activ sur le @f sans support des htrees.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "l'@i %i a le drapeau INDEX_FL activ mais n'est pas un @d.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "l'@h %i a un noeud root @n.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "l'@h %i dispose d'une version de hachage non supporte (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "l'@h %i utilise un drapeau de noeud root incompatible.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "l'@h %i a une hauteur d'arbre (%N) qui est trop grande\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
msgstr "l'@i des @bs dfectueux a un @b indirect (%b) qui entre en conflit avec les mtadonnes du @f. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "La (re-)cration de l'@i de changement de taille a chou: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "l'@i %i a une taille extra (%IS) qui est @n\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "l'@a dans l'@i %i a une longueur de nom (%N) qui est @n\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "l'@a dans l'@i %i a une valeur de dcalage (%N) qui est @n\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "l'@a dans l'@i %i a un @b de valeur (%N) qui est @n (doit tre 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "l'@a dans l'@i %i a une valeur de taille (%N) qui est @n\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "l'@a dans l'@i %i a un hachage (%N) qui est @n\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "l'@i %i est un %It mais il semble qu'il soit en fait un rpertoire.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Erreur lors de l'itration sur l'arbre d'@xs dans l'@i %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1817,7 +1825,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1827,7 +1835,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1836,31 +1844,31 @@ msgstr ""
"\t(@b logique %c, @b physique %b, longueur @n %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "l'@i %i a le drapeau EXTENTS_FL activ sur le @f sans support des extents.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "L'@i %i a un format d'extent, mais le @S n'a pas la fonctionnalit EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "L'@i %i n'a pas le drapeau EXTENT_FL, mais a un format d'extent\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Le fast symlink %i a le drapeau EXTENT_FL activ. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1869,39 +1877,39 @@ msgstr ""
"\t(@b logique @n %c, @b physique %b, longueur %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "L'@i %i a un noeud d'extent invalide (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Erreur lors de la conversion du @B de @b de sous-cluster: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "L'@i de @q n'est pas un fichier normal. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "L'@i de @q n'est pas utilis mais contient des donnes. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "L'@i de @q est visible par l'utilisateur. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "L'@i des @bs dfectueux a l'air @n. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1910,26 +1918,26 @@ msgstr ""
"\t(@b logique @n %c, @b physique %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "l'@i %i semble contenir des donnes incorrectes. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "L'@i %i passe les vrifications, mais la somme de contrle ne correspond pas l'@i. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "L'@ de l'@i %i est corrompu (collision d'allocation). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1938,13 +1946,13 @@ msgstr ""
"\t(@b logique %c, @b physique %b, longueur %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "Le @b d'@a de l'@i %i passe les vrifications, mais la somme de contrle ne correspond pas au @b. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1954,7 +1962,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1963,37 +1971,37 @@ msgstr ""
"\t(@b logique %c, @b physique %b, longueur %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "L'@i %i a des donnes en ligne, mais le @S n'a pas la fonctionnalit INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "L'@i %i a le drapeau INLINE_DATA_FL activ sur le @f sans support des donnes en ligne.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "Le bloc %b de l'@i %i conflicte avec des meta-donnes critiques, saute les vrifications du bloc.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "@i de @d %i a un mauvais @b %b d'@a. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "L'@i de @d %i a un @x marqu non initialis au @b %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -2002,14 +2010,14 @@ msgstr ""
"Sera corrig pendant la passe 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "L'@i %i a le drapeau INLINE_DATA_FL activ mais l'@a n'a pas t trouv. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2019,42 +2027,42 @@ msgstr ""
"extents ou inline-data. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "L'@i %i a un en-tte d'@x mais le drapeau de donnes en ligne est positionn.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "L'@i %i semble avec des donnes en ligne mais le drapeau d'@x est positionn.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "L'@i %i semble avoir une carte de @b mais les drapeaux de donnes en ligne et d'@x sont positionns.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "L'@i %i a des donnes en ligne et le drapeau d'@x positionn mais l'i_block contient des dchets.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "La liste des blocs dfectueux indique que la liste de blocs dfectueux %i est dfectueuse. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "@A d'une structure d'allocation de rgion d'@x. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2063,46 +2071,46 @@ msgstr ""
"\t(@b logique %c, @b physique @n %b, longueur %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "@A de mmoire pour la liste des @d chiffrs\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "L'arbre d'@x de l'i-noeud @i pourrait tre moins profond (%b; pourrait tre <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "L'@i %i sur le @f bigalloc ne peut pas tre projet sur un @b. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "L'@i %i a un en-tte d'@x corrompu. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Les horodatages sur l'@i %i au-del du 04/04/2310 sont probablement pr-1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "l'@i %i a une valeur d'@a @i %N @I.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "l'@i %i un @a @n. L'@i EA %N n'a pas le drapeau EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2110,10 +2118,38 @@ msgstr ""
"il manque l'@i EA %N pour l'l@i parent %i le drapeau EA_INODE.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "l'@i %i a le drapeau casefold activ mais n'est pas un rpertoire. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"le @d %p a le drapeau casefold, mais la\n"
+"fonctionalit casefold n'est pas active. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "L'@h %i utilise la version de hachage (%N), mais devrait utiliser SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "L'@h %i utilise SipHash, mais ne le devrait pas. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2124,46 +2160,46 @@ msgstr ""
"Passe1B: r-examen pour les @bs @m\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "@b(s) @m dans l'@i %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Erreur lors de l'examen des i-noeuds (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "@A du @B d'@is (i_node_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Erreur lors des itrations sur les @bs dans l'@i %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Erreur d'ajustement de refcount pour le @b %b d'@a (@i %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Passe 1C: examen des rpertoires pour les @is avec des @bs @m\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Passe 1D: ajustement des @bs @m\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2172,18 +2208,18 @@ msgstr ""
" a %r @b(s) @m, partags avec %N fichier(s):\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (@i n%i, date de modification %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<mtadonne du @f>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2193,7 +2229,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2201,345 +2237,345 @@ msgstr ""
"@bs @m dj t rassigns ou clons.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "N'a pu cloner le fichier: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Passe 1E: Optimisation des arbres d'@x\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "chec d'optimisation de l'arbre d'@x %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optimisation des arbres d'@x: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Erreur interne: la largeur maximale de l'arbre d'extents est trop grande (%b; attendu=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "L'arbre d'@x de l'@i %i (au niveau %b) pourrait tre plus court. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "L'arbre d'@x de l'@i %i (au niveau %b) pourrait tre plus troit. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Passe 2: vrification de la structure des @ds\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "Numro d'@i @n pour . dans l'@i de @d %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "L'@E a un n d'@i @n: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "L'@E a un @i @D/non utilis %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "L'@E @L vers . "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "L'@E pointe vers l'@i (%Di) localis dans un @b dfectueux.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "L'@E @L vers le @d %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "L'@E @L vers l'@r.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "L'@E a un caractre illgal dans son nom.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr ". manquant dans l'@i de @d %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr ".. manquant dans l'@i de @d %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "La premire @e %Dn (@i=%Di) dans l'@i de @d %i (%p) @s .\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "La seconde @e %Dn (@i=%Di) dans l'@i de @d %i @s ..\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr @F %IF, @s zro.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl @F %If, @s zro.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high @F %Id, @s zro.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag @F %N, @s zro.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize @F %N, @s zro.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "L'@i %i (%Q) a un mode @n (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "@i de @d %i, %B, dplacement %N: @d corrompu\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "@i de @d %i, %B, dplacement %N: nom de fichier trop long\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "L'@i de @d %i a un %B non allou. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "L'@e de @d . dans l'@i de @d %i n'est pas termine pas un NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "L'@e de @d .. dans l'@i de @d %i n'est pas termine pas un NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "L'@i %i (%Q) est un @v de caractre @I.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "L'@i %i (%Q) est un @v de @b @I.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "L'@E est un doublon de l'@e ..\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "L'@E est un doublon de l'@e ...\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Erreur interne: impossible de trouver dir_info pour %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "L'@E a un rec_len de %Dr, @s %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "@A d'une structure icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Erreur d'itration sur les @bs de @d: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Erreur de lecture du @b %b de @d (@i %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Erreur d'criture du @b %b de @d (@i %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "@A d'un nouveau @b de @d pour l'@i %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Erreur lors de la dsallocation de l'@i %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "L'@e de @d pour . dans %p (%i) est grande.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "L'@i %i (%Q) est un FIFO @I.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "L'@i %i (%Q) est une socket @I.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Dfinition du type de fichier pour l'@E %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "L'@E a un type de fichier incorrect (tait %Dt, @s %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "L'@E a un type de fichier initialis.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "L'@E a un nom @z.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Le lien symbolique %Q (@i n%i) est @n.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "le @b d'@a @F @n (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "le @f contient de grands fichiers, mais n'a pas le drapeau LARGE_FILE activ dans le @S.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "@p l'@h %d: %B n'est pas rfrenc\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "@p l'@h %d: %B est rfrenc deux fois\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "@p l'@h %d: %B a un hachage mininal erron\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "@p l'@h %d: %B a un hachage maximal erron\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "@h %d @n (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "@p l'@h %d (%q): numro de @b %b erron.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "@p l'@h %d: le noeud root est @n\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "@p l'@h %d: %B a une limite @n (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "@p l'@h %d: %B a un compteur @n (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "@p l'@h %d: %B a une table de hachage non ordonne\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "@p l'@h %d: %B a une profondeur @n (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "@E doublon repre. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2551,7 +2587,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2562,155 +2598,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi @F %N, @s zro.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "@b dans l'@h %d (%q) inattendu.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "@E rfrence l'@i %Di dans le @g %g o _INODE_UNINIT est positionn.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "@E rfrence l'@i %Di trouv dans la zone d'i-noeuds non utiliss du @g %g.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi @F %N, @s zro.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "@p l'@h %d: le noeud root a une somme de contrle incorrecte.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "@p l'@h %d: le noeud interne a une somme de contrle incorrecte.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "@i de @d %i, %B, dplacement %N: le @d n'a pas de somme de contrle.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "@i de @d %i, %B: le @d passe les vrifications, mais a une somme de contrle incorrecte.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "La taille de l'@i de @d en ligne (%N) doit tre un multiple de 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "La correction de la taille de l'@i %i de @d en ligne a chou.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "L'@E chiffre est trop courte.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "@E de nom de fichier doublon repre. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Passe3: vrification de la connectivit des @ds\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "L'@r n'est pas allou. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "Pas d'espace dans le @d @l. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "@i %i (%p) de @d non connect\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "/@l n'a pas t trouv. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr ".. dans %Q (%i) est %P (%j), @s %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "/@l erron ou inexistent. Ne peut reconnecter.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Ne peut tendre /@l: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Ne peut reconnecter %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Erreur lors de la tentative de reprage de /@l: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@b: %m lors de la tentative de cration du @d /@l\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@i: %m lors de la tentative de cration du @d /@l\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_@b: %m lors de la tentative de cration d'un nouveau @b de @d\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_@b: %m lors de la tentative d'criture du @b de @d pour /@l\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Erreur lors de l'ajustement du compteur d'@i sur l'@i %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2721,7 +2762,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2731,41 +2772,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Erreur de cration du @d racine (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Erreur de cration du @d /@l (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "L'@r n'est pas un @d; arrt immdiat.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Ne peut procder sans un @r.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/@l n'est pas un @d (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/@l a des donnes en ligne\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2776,7 +2817,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2786,52 +2827,52 @@ msgstr ""
"Librez des donnes du @f et relancez e2fsck.\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/@l est chiffr\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Passe 3A: optimisation des rpertoires\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "chec de cration de l'itrateur dirs_to_hash: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "chec d'optimisation du rpertoire %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Optimisation des rpertoires: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Passe 4: vrification des compteurs de rfrence\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "@i %i @z @u. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "@i %i @u\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "le compteur de rfrence de l'@i %i est %Il, @s %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2843,146 +2884,151 @@ msgstr ""
"\ti-node.i_links_count est %Il. Ils devraient tre les mmes!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
-msgstr "le compteur de rfrence de l'@i %i d'@a est %N, @s %n. "
+msgstr "le compteur de rfrence de l'@i d'@a %i est %N, @s %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "le @d dpasse ne nombre de liens maximum, mais la fonctionalit DIR_NLINK n'est pas active dans le @S.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "Le compteur de rfrence de l'@i de @d %i est la valeur de dbordement mais pourrait tre la valeur exacte %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Passe 5: vrification de l'information du sommaire de @g\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Le remplissage la fin du @B d'@i n'est pas initialis. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Le remplissage la fin du @B de @bs n'est pas initialis. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "diffrences de @B de @bs: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "diffrences de @B d'@is: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Le dcompte des @is libres est erron pour le @g n%g (%i, dcompt=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Le dcompte des rpertoires est erron pour le @g n%g (%i, dcompt=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Le dcompte des @is libres est erron (%i, dcompt=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Le dcompte des @bs libres est erron pour le @g n%g (%b, dcompt=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Le dcompte des @bs libres est erron (%b, dcompt=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "ERREUR DE PROGRAMMATION: les points de terminaison (%b, %c) de @Bs du @f (n%N) ne concordent pas avec les points de terminaison de @Bs calculs (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Erreur interne: ajustement approximatif de la fin du bitmap (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Erreur lors de la copie du @B d'@is de remplacement: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Erreur lors de la copie du @B des @bs de remplacement: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "Un ou des @b(s) du @g %g en cours d'utilisation alors que le @g est marqu BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "Un ou des @i(s) du @g %g en cours d'utilisation alors que le @g est marqu INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "Le @B d'@i du @g %g ne correspond pas la somme de contrle.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "Le @B de @b du @g %g ne correspond pas la somme de contrle.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Recrer le @j"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Mise jour de l'information de quota pour le type de quota %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Erreur lors de l'initialisation de l'information de checksum du @g de @b\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Erreur lors de l'criture de l'information de systme de fichier: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Erreur lors de la vidange des tampons d'criture vers le priphrique de stockage: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Erreur lors de l'criture de l'information de quota pour le type de quota %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Code d'erreur non trait (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "IGNOR"
@@ -2992,8 +3038,8 @@ msgstr "dans move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Mmoire utilise: %d, temps requis: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Mmoire utilise: %lu, temps requis: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3221,8 +3267,8 @@ msgid_plural "%12u files\n"
msgstr[0] "%12u fichier\n"
msgstr[1] "%12u fichiers\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "lors de la dtermination savoir si %s est mont."
@@ -3397,7 +3443,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "L'option -t n'est pas supporte sur cette version d'e2fsck.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Impossible de rsoudre %s"
@@ -3469,8 +3515,8 @@ msgid "while reading MMP block"
msgstr "lors de la lecture du bloc MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3481,13 +3527,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "lors de la tentative d'effacement de %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "lors de la tentative de mise en place du fichier d'annulation\n"
@@ -3582,70 +3628,70 @@ msgstr "%s: Essai de chargement du superblock malgr les erreurs...\n"
msgid "Get a newer version of e2fsck!"
msgstr "Veuillez obtenir une version plus rcente d'e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "lors de la vrification du journal pour %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Ne peut procder une vrification du systme de fichier."
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr ""
"Avertissement: saute la rcupration du journal puisque l'on\n"
"procde l'examen d'un systme de fichiers en lecture seule.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "impossible d'initialiser les drapeaux du superbloc sur %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Erreur de somme de contrle de journal trouve dans %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Journal corrompu dans %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "lors de la rcupration du journal de %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s a une(des) fonctionnalit(s) non supporte(s):"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s a un encodage non support: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s lors de la lecture de l'i-noeud des blocs dfectueux\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Cela ne semble pas tre bien, mais on va quand mme essayer...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Cration du journal (%d blocs): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr "Complt.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3653,24 +3699,24 @@ msgstr ""
"\n"
"*** le journal a t regnr ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "arrt"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck a t annul.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Re-dmarrons e2fsck depuis le dbut...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "lors de la rinitialisation du contexte"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3679,12 +3725,12 @@ msgstr ""
"\n"
"%s: ***** LES ERREURS DU SYSTME DE FICHIERS ONT T CORRIGES *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: Le systme de fichier a t modifi.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3693,12 +3739,12 @@ msgstr ""
"\n"
"%s: ***** LE SYSTME DE FICHIERS A T MODIFI *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** R-AMORCER LE SYSTME *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3709,51 +3755,51 @@ msgstr ""
"%s: **ATTENTION: le systme de fichiers contient encore des erreurs**\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "oO"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "tT"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " ('t' active 'oui' pour tout) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<o>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (o/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "annul!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "oui pour tout\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "oui\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "non\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3762,7 +3808,7 @@ msgstr ""
"%s? non\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3771,38 +3817,38 @@ msgstr ""
"%s? oui\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "oui"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "non"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: bloc(s) de bitmap illgal(aux) pour %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "la lecture des bitmaps d'i-noeuds et de blocs"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "lors de la tentative de re-lecture des bitmaps pour %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "l'criture des bitmaps de blocs et d'i-noeuds"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "lors d'une nouvelle tentative d'criture de bitmaps de blocs et d'i-noeuds pour %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3815,37 +3861,37 @@ msgstr ""
"%s: INCONSISTENCE INATTENDUE; EXCUTEZ fsck MANUELLEMENT.\n"
"\t(i.e., sans options -a ou -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Mmoire utilise: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Mmoire utilise: %lluk/%lluk (%lluk/%lluk), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Mmoire utilise: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Mmoire utilise: %llu, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "temps: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "temps coul: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "lors de la lecture de l'i-noeud %lu dans %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "lors de l'criture de l'i-noeud %lu dans %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "INCOHRENCE INATTENDUE: le systme de fichiers a t modifi pendant le droulement de fsck.\n"
@@ -4061,68 +4107,68 @@ msgstr "Passe complte, %u blocs dfectueux reprs. (%d/%d/%d erreurs)\n"
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Utilisation: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] fichiers...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Utilisation: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] fichiers...\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "projet erron - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "version errone - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "lors de l'valuation par stat() de %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "lors de la lecture des drapeaux sur %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Drapeaux de %s initialiss comme "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "lors de l'initialisation des drapeaux sur %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Version de %s initialise %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "lors de l'initialisation de la version sur %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Projet de %s initialis %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "lors de l'initialisation du projet sur %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Ne peut allouer une variable de chemin dans chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= est incompatible avec - et +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Vous devez utiliser -v, = - ou +\n"
@@ -4131,8 +4177,8 @@ msgstr "Vous devez utiliser -v, = - ou +\n"
msgid "while reading inode %u"
msgstr "lors de la lecture de l'i-noeud %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "lors de l'extension du rpertoire"
@@ -4141,143 +4187,147 @@ msgstr "lors de l'extension du rpertoire"
msgid "while linking \"%s\""
msgstr "lors de la liaison de %s"
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "lors de l'criture de l'i-noeud %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "lors du listage des attributs de %s"
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "lors de l'ouverture de l'i-noeud %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "lors d'une allocation mmoire"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "lors de la lecture de l'attribut %s de %s"
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "lors de l'criture de l'attribut %s dans l'i-noeud %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "lors de la fermeture de l'i-noeud %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "lors de l'allocation de l'i-noeud %s"
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "lors de la cration de l'i-noeud %s"
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "lors de la cration du lien symbolique %s"
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "lors de la recherche de %s"
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "lors de la cration du rpertoire %s"
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "lors de l'ouverture de %s pour copie"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "lors du changement de rpertoire courant vers %s"
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "lors du parcours du rpertoire %s"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "lors d'un lstat sur %s"
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "lors de la cration du fichier spcial %s"
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "chec de malloc"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "lors de la tentative de lecture du lien %s"
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "la taille du lien symbolique a augment entre lstat() et readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "lors de l'criture du lien symbolique %s"
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "lors de l'criture du fichier %s"
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "lors de la fabrication du rpertoire %s"
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "lors du changement de rpertoire"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ignorons l'entre %s"
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "lors de l'initialisation de l'i-noeud pour %s"
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "lors de l'initialisation des xattrs pour %s"
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "lors de la sauvegarde des donnes de l'i-noeud"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "lors de la copie des xattrs sur le rpertoire racine"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4399,7 +4449,7 @@ msgstr "lors de l'affichage de la liste des blocs dfectueux"
msgid "Bad blocks: %u"
msgstr "Blocs dfectueux: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "lors de la lecture de l'i-noeud du journal"
@@ -4415,7 +4465,7 @@ msgstr "lors de la lecture du journal du superbloc"
msgid "Journal superblock magic number invalid!\n"
msgstr "Le numro magique du superbloc de journal est invalide!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "lors de la lecture du journal du superbloc"
@@ -4423,30 +4473,30 @@ msgstr "lors de la lecture du journal du superbloc"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Ne peut trouver les numros magiques du superbloc du journal"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "n'a pus allouer de tampon MMP\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "lecture du bloc MMP %llu depuis '%s'\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Impossible d'allouer de la mmoire pour analyser les options!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Paramtre de superbloc invalide: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Paramtre de taille de bloc invalide: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4470,27 +4520,27 @@ msgstr ""
"\tblocksize=<taille de bloc>\n"
"\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tUtilisation de %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Impossible de trouver un superbloc de systme de fichiers valide.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: la fonctionalit MMP n'est pas active.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "lors de la tentative de lecture des bitmaps '%s'\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4500,8 +4550,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Utilisation: %s [ -r|Q ] [ -fr ] [ -b superbloc ] [ -B taille_bloc ] priphrique fichier_image\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Utilisation: %s [ -r|Q ] [ -f ] [ -b superbloc ] [ -B taille_bloc ] priphrique fichier_image\n"
#: misc/e2image.c:110
#, c-format
@@ -4510,8 +4560,8 @@ msgstr " %s -I priphrique fichier_image\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cfnp ] [ -o dcalage-src ] [ -O dcalage-dst ] src_fs [ dest_fs ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o dcalage-src ] [ -O dcalage-dst ] src_fs [ dest_fs ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4771,7 +4821,7 @@ msgstr "e2label: erreur de lecture du superbloc\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: n'est pas un systme de fichiers ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Avertissement: tiquette trop longue, sera tronque.\n"
@@ -4786,7 +4836,7 @@ msgstr "e2label: ne peut atteindre le superbloc nouveau\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: erreur lors de l'criture du superbloc\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Utilisation: e2label priphrique [nouvelle_tiquette]\n"
@@ -4989,7 +5039,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "dcalage_o dbut_o find_o blocs_sf blksz grp mkfs/date_montage sb_uuid tiquette\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5096,51 +5146,51 @@ msgstr "%s: trop de priphriques\n"
msgid "%s: too many arguments\n"
msgstr "%s: trop d'arguments\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Montage en lecture seule.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Utilisateurs autoriss allouer tous les blocs. Ceci est dangereux!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "SVP excutez e2fsck -fy %s.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Le journal a besoin d'une rcupration; lancer e2fsck -E journal_only est ncessaire.\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: crire dans le journal n'est pas support.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Avertissement: Montage d'un systme de fichier non vrifi, lancer e2fsck est recommand.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Avertissement: Nombre maximum de montage atteint, lancer e2fsck est recommand.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Avertissement: Date de vrification atteinte; lancer e2fsck est recommand.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Orphelins dtects; lancer e2fsck est recommand.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Erreurs dtectes; lancer e2fsck est requis.\n"
@@ -5247,7 +5297,7 @@ msgstr ""
"\n"
"Impossible d'crire %d blocs dans la table d'i-noeuds dbutant %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "complt \n"
@@ -5311,12 +5361,12 @@ msgstr "lors de la mise zro du priphrique de journal (bloc %llu, compte %d)
msgid "while writing journal superblock"
msgstr "lors de l'criture du superbloc de journal"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "En train de crer un systme de fichiers avec %llu %dk blocs et %u i-noeuds.\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5325,168 +5375,168 @@ msgstr ""
"Avertissement: %llu blocs inutiliss.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "tiquette de systme de fichiers=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "tiquette de systme de fichiers=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Type de systme d'exploitation: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Taille de bloc=%u (log=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Taille de cluster=%u (log=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Taille de fragment=%u (log=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Stride = %u blocs, Stripe width = %u blocs\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u i-noeuds, %llu blocs\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu blocs (%2.2f%%) rservs pour le super utilisateur\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "Premier bloc de donnes=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Propritaire du rpertoire racine=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Nombre maximum de blocs du systme de fichiers=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u groupes de blocs\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u groupe de bloc\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u blocs par groupe, %u clusters par groupe\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u blocs par groupe, %u fragments par groupe\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u i-noeuds par groupe\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID de systme de fichiers=%s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Superblocs de secours stocks sur les blocs: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s ncessite '-O 64bit'\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "'%s' doit tre avant 'resize=%u'\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "desc_size invalide: '%s'\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Graine de hachage invalide: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Dcalage invalide: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "mmp_update_interval invalide: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Nombre de superbloc de secours invalide: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Paramtre stride invalide: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Paramtre stripe-width invalide: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Paramtre de changement de taille invalide: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr ""
"La taille maximale de l'agrandissement doit tre plus grande que la taille\n"
"du systme de fichiers.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr ""
"Le changement de taille en ligne n'est pas supporte avec les systmes de\n"
"fichiers de version 0\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "root_owner invalide: %s\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Encodage invalide: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5539,7 +5589,7 @@ msgstr ""
"\tquotatype=<type(s) de quota(s) activer>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5550,17 +5600,17 @@ msgstr ""
"Attention: le stripe-width RAID %u n'est pas multiple impair du stride %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "erreur: drapeau d'encodage invalide: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "erreur: Un encodage doit tre explicitement spcifi lorsque encoding-flags est pass\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5570,17 +5620,17 @@ msgstr ""
"\t(%s, ligne n%d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Jeu d'options de systme de fichiers invalide: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Jeu d'options pour le montage invalide: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5590,7 +5640,7 @@ msgstr ""
"Votre mke2fs.conf ne prcise pas le type de systme de fichiers de\n"
"%s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5598,11 +5648,11 @@ msgstr ""
"Il vous faut sans doute installer un fichier mke2fs.conf mis jour.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Arrt immdiat...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5613,81 +5663,81 @@ msgstr ""
"Avertissement: le fs_type %s n'est pas dfini dans mke2fs.conf\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Impossible d'allouer de la mmoire pour un nouveau chemin.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "N'a pu initialiser le profilage correctement (erreur: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "taille invalide des blocs - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr ""
"Avertissement: la taille de bloc %d n'est pas utilisable\n"
"sur la plupart des systmes.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "taille de cluster invalide - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "-R est dprci, utiliser plutt -E"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "mauvais comportement en cas d'erreur - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Nombre de blocs par groupe illgal"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "le nombre de blocs par groupe doit tre un multiple de 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Nombre illgal pour la taille flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "La taille flex_bg doit tre une puissance de 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "La taille flex_bg (%lu) doit tre infrieur ou gal 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "taux d'i-noeuds invalides %s (min %d/max %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "taille d'i-noeud invalide - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Avertissement: l'option -K est dprcie et ne devrait plus tre utilise. Utiliser plutt l'option tendue -E nodiscard!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "dans malloc pour bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
@@ -5696,69 +5746,69 @@ msgstr ""
"Avertissement: tiquette trop longue; sera tronque %s\n"
"\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "pourcentage de blocs rservs invalide - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "mauvais nombre d'i-noeuds - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "lors de l'allocation de la chane fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "mauvais numro de version - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "lors de la tentative de cration de la rvision %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "L'option -t ne peut tre spcifie qu'une fois"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "L'option -T ne peut tre spcifie qu'une fois"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "lors de la tentative d'ouverture du priphrique de journal %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr ""
"la taille de bloc du priphrique de journal (%d) est plus petit que la\n"
"taille de blocs minimum %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Utilisation de la taille de bloc du priphrique de journal: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "blocs '%s' invalides sur le priphrique %s"
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "systme de fichiers"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "lors de la tentative de dtermination de la taille du systme de fichiers"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5766,7 +5816,7 @@ msgstr ""
"Ne peut dterminer la taille du priphrique; vous devez spcifier\n"
"la taille du systme de fichiers\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5779,48 +5829,48 @@ msgstr ""
"\toccupe et utilise. Vous devez r-amorcer pour forcer une\n"
"\trelecture de la table de partitions.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "Systme de fichiers plus grand que la taille apparente du priphrique"
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "chec du parcours de la liste de types de systmes de fichiers\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "Le HURD ne supporte pas la fonctionnalit filetype.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "Le HURD ne supporte pas la fonctionnalit huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "Le HURD ne supporte pas la fonctionnalit metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "Le HURD ne supporte pas la fonctionnalit ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "lors de la tentative de dtermination de la taille matrielle de secteur"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "lors de la tentative de dtermination de la taille de secteur matriel"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "lors de la dfinition de la taille de bloc; trop petite pour le priphrique\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Avertissement: la taille de bloc %d spcifie est plus petite que la taille de secteur physique %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5829,7 +5879,7 @@ msgstr ""
"%s: La taille (0x%llx blocs) du priphrique %s est trop grande pour\n"
"\tpouvoir tre exprime sur 32 bits en utilisant une taille de bloc de %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5838,88 +5888,93 @@ msgstr ""
"%s: La taille (0x%llx blocs) du priphrique %s est trop grande pour\n"
"\tcrer un systme de fichier utilisant une taille de block de %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "rsolution de fs_types pour mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr ""
"Fonctionnalits du systme de fichiers non supportes par les systmes de\n"
"fichiers de version 0\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr ""
"Les superblocs creux ne sont pas supports par les systmes de\n"
"fichiers de version 0\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr ""
"Les journaux ne sont pas supports par les systmes de\n"
"fichiers de version 0\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "pourcentage de blocs rservs invalide - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Les extents DOIVENT tre actives pour un systme de fichiers 64bit. Passez -O extents pour corriger.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "La taille d'un cluster ne peut pas tre plus petite que la taille d'un bloc.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "Spcifier une taille de cluster ncessite la fonctionalit bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "attention: Impossible d'obtenir la gomtrie du priphrique %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "L'alignement de %s est dcal de %lu octets.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Cela peut induire de trs mauvaises performances, il est suggr de (re)-partitionner.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s a la capacit DAX, mais la taille de bloc courante %u est diffrente de la taille de page %u du systme donc le systme de fichier ne supportera pas DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "blocs de %d octets trop gros pour le systme (max %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr ""
"Avertissement: blocs de %d octets trop gros pour le systme (max %d),\n"
"poursuite force\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Suggestion: Utilisez un noyau Linux >= 3.18 pour amliorer la stabilit des fonctionalits de mta-donnes et somme de contrle de journal.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Encodage de nom de fichier inconnu du profil: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Drapeau d'encodage inconnu du profil: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5935,24 +5990,16 @@ msgstr ""
"peut-tre pas ce que vous vouliez.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "des i-noeuds de %d octets sont trop petits pour des quota de projet"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Les fonctionnalits de chiffrement et d'insensibilit la casse ne sont pas compatibles.\n"
-"Elles ne peuvent pas tre actives simultanment.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "La fonctionalit bigalloc ne peut pas tre supporte sans la fonctionalit extent"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5960,7 +6007,7 @@ msgstr ""
"Les fonctionnalits resize_inode et meta_bg ne sont pas compatibles.\n"
"Elles ne peuvent pas tre actives simultanment.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5972,41 +6019,41 @@ msgstr ""
"Voir https://ext4.wiki.kernel.org/index.php/Bigalloc pour plus d'informations\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr ""
"la rservation de blocs de changement de taille en ligne n'est pas\n"
"supporte sur un systme de fichiers non creux"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "compteur de blocs par groupe hors limite"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "La fonctionnalit flex_bg n'est pas active, la taille flex_bg ne peut donc pas tre spcifie"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "taille d'i-noeud invalide %d (min %d/max %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "des i-noeuds de %d octets sont trop petits pour des donnes en ligne; spcifiez une taille plus grande"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "trop d'i-noeuds (%llu), augmenter le ratio d'i-noeuds?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "trop d'i-noeuds (%llu), indiquer < 2^32 i-noeuds"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6017,65 +6064,65 @@ msgstr ""
"\tsystme de fichiers avec %llu blocs, indiquer un ratio_i_noeud (-i)\n"
"\tplus grand ou un nombre d'i-noeud plus petit (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Rejet des blocs de priphrique: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "chou - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "lors de l'initialization du contexte de quota"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "lors de l'criture des i-noeuds de quota"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "mauvais comportement en cas d'erreur dans le profile - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "dans malloc pour android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "lors de l'initialisation du superbloc"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Les extents ne sont pas activs. L'arbre des extents de fichier peut avoir une somme de contrle, mais les cartes de blocs ne le peuvent pas. Ne pas activer les extents rduit la couverture des sommes de contrle des mta-donnes. Passez -O extents pour corriger.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "Le support de systme 64-bits n'est pas activ. La taille de champs plus grande apporte par cette fonctionalit permet des sommes de contrle fortes. Passez -O 64bit pour corriger.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "La fonctionalit metadata_csum_seed require la fonctionalit metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "La libration a russi et retournera des 0s - inutile d'effacer la table des i-noeuds\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "systme d'exploitation inconnu - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Allocation des tables de groupe: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "lors de la tentative d'allocation des tables de systmes de fichiers"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6083,30 +6130,30 @@ msgstr ""
"\n"
"\tlors de la conversion du bitmap de sous-cluster"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s peut tre encore plus corrompu par une rcriture du superbloc\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "lors de la mise zro du bloc %llu la fin du systme de fichiers"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "lors de la rservation de blocs pour un changement de taille en ligne"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "journal"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Ajout du journal au priphrique %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6115,21 +6162,21 @@ msgstr ""
"\n"
"\tlors de la tentative d'ajout d'un journal au priphrique %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "complt\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "Pas de cration de journal en mode super-seul\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Cration du journal (%u blocs): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6137,7 +6184,7 @@ msgstr ""
"\n"
"\tlors de la tentative de cration du journal"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6145,30 +6192,30 @@ msgstr ""
"\n"
"Erreur lors de l'activation de la fonctionnalit de protection contre le montage multiple."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "La protection contre le montage multiple est active avec un intervale de mise jour de %d secondes.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Copie des fichiers dans le priphrique: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "lors du peuplement du systme de fichier"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr ""
"criture des superblocs et de l'information de comptabilit du systme de\n"
"fichiers: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "lors de l'criture et la fermeture du systme de fichiers"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6243,7 +6290,7 @@ msgstr "Impossible d'obtenir la taille de %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d dbut=%8d taille=%8lu fin=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6251,15 +6298,15 @@ msgstr ""
"\n"
"Cette opration ncessite un systme de fichier frachement vrifi.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "SVP excutez e2fsck -f sur le systme de fichiers.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "SVP excutez e2fsck -fD sur le systme de fichiers.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6282,20 +6329,20 @@ msgstr ""
"\t[-U UUID] [-I nouvelle-taille-i-noeuds] [-z fichier_annulation]\n"
"\tpriphrique\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Le superbloc de journal n'a pas t trouv!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "lors de la tentative d'ouverture du journal externe"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s n'est pas un priphrique de journal.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6304,13 +6351,13 @@ msgstr ""
"Le superbloc du journal est corrompu, nr_users\n"
"est trop grand (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr ""
"L'UUID du systme de fichiers n'a pas t trouv sur le priphrique de\n"
"journal.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6318,52 +6365,52 @@ msgstr ""
"Ne peut reprer le priphrique de journal. Il n'a PAS t supprim\n"
"Utiliser l'option -f pour supprimer le priphrique de journal manquant.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Journal enlev\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "lors de la lecture des bitmaps"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "lors de l'effacement de l'i-noeud du journal"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "lors de l'criture de l'i-noeud du journal"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(et rebootez aprs!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Aprs avoir lanc e2fsck, veuillez lancer resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Veuillez excuter resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr " pour activer le mode 64-bits.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr " pour dsactiver le mode 64-bits.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6371,21 +6418,21 @@ msgstr ""
"AVERTISSEMENT: N'a pas pu confirmer le support noyau pour metadata_csum_seed.\n"
" Cela ncessite Linux >= v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr ""
"La suppression de la fonctionnalit de systme de fichiers '%s' n'est pas\n"
"supporte.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr ""
"L'ajout de la fonctionnalit de systme de fichiers '%s' n'est pas\n"
"support.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6393,7 +6440,7 @@ msgstr ""
"La fonctionnaliti has_journal peut tre dsactive uniquement lorsque le\n"
"systme de fichiers est dmont ou mont en lecture seule.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6401,7 +6448,7 @@ msgstr ""
"Le drapeau needs_recovery est activ. SVP excutez e2fsck avant\n"
"de dsactiver le drapeau has_journal.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6409,7 +6456,7 @@ msgstr ""
"Dfinir la fonctionalit de systme de fichier 'sparse_super' n'est pas\n"
"support pour les systmes de fichiers avec la fonctionalit flex_bg active.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6419,12 +6466,12 @@ msgstr ""
"montages multiples ne peut tre active lorsque\n"
"le systme de fichier est mont ou en lecture seule.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "La protection contre le montage multiple a t active avec un intervale de mise jour de %ds.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6432,26 +6479,26 @@ msgstr ""
"La fonctionnalit de protection contre le montage multiple ne peut\n"
"tre dsactive si le systme de fichiers est en lecture seule.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Erreur lors de la lecture des bitmaps\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Le numro magique dans le bloc MMP ne correspond pas. attendu: %x, actuel: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "lors de la lecture du bloc MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
msgstr "Effacer le drapeau flex_bg rendrait le systme de fichiers incohrent.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6459,46 +6506,54 @@ msgstr ""
"La fonctionnalit huge_file peut tre dsactive uniquement lorsque le\n"
"systme de fichiers est dmont ou mont en lecture seule.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Activer les sommes de contrle pourrait prendre du temps. "
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Ne peut pas activer metadata_csum sur un systme de fichiers mont!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Les extents ne sont pas activs. L'arbre des extents de fichiers peut avoir une somme de contrle, mais les cartes de blocs ne le peuvent pas. Ne pas activer les extents rduit la couverture des sommes de contrle des mta-donnes. Relancez avec -O extent pour corriger.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "Le support de systme de fichier 64-bits n'est pas activ. La taille de champs plus grande apporte par cette fonctionalit permet des sommes de contrle fortes. Lancez resize2fs -b pour corriger.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Dsactiver lse sommes de contrle pourrait prendre du temps."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Ne peut pas dsactiver metadata_sum sur un systme de fichiers mont!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Ne peut pas activer uninit_bg sur un systme de fichiers mont!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Ne peut pas dsactiver uninit_bg sur un systme de fichiers mont!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Ne peut pas activer le mode 64-bits alors que le systme de fichiers est mont!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Ne peut pas dsactiver le mode 64-bits alors que le systme de fichiers est mont!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Ne peut pas activer la fonctionalit projet; la taille d'i-noeud est trop petite.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6506,11 +6561,11 @@ msgstr ""
"\n"
"Avertissement: l'option ^quota supplante les arguments -Q.\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Impossible d'activer la fonctionnalit de chiffrement alors que celle d'insensibilit la casse est active.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "La fonctionalit casefold ne peut tre change que lorsque le systme de fichiers est dmont.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6518,7 +6573,7 @@ msgstr ""
"Dfinir la fonctionalit 'metadata_csum_seed' n'est support que sur\n"
"les systmes de fichiers avec la fonctionalit metadata_csum active.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6527,15 +6582,15 @@ msgstr ""
"doit tre dmont pour rcrire sans risque toutes les donnes pour \n"
"correspondre au nouvel UUID.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Recalculer les sommes de contrle pourrait prendre du temps."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "Le systme de fichiers a dj un journal.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6544,21 +6599,21 @@ msgstr ""
"\n"
"\tlors de la tentative d'ouverture du journal sur %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Cration du journal sur le priphrique %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "lors de l'ajout du systme de fichiers au journal sur %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Cration de l'i-noeud du journal: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6566,31 +6621,31 @@ msgstr ""
"\n"
"\tlors de la tentative de cration du fichier journal"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Ne peut pas activer les quotas de projet; la tailles des i-noeud est trop petite.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "lors de l'initialisation du contexte de quota dans la bibliothque support"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "lors de la mise jour des limites de quota (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "lors de l'criture du fichier de quota (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "lors de la suppression du fichier de quota (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6612,97 +6667,117 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Ne peut analyser la spcification de date/heure: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "compteur de montages erron - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "nom gid/groupe erron - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "intervalle erron - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "taux de blocs rservs erron - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o ne peut tre spcifi qu'une fois"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O ne peut tre spcifi qu'une fois"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "compteur de blocs rservs erron - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "nom utilisateur/uid erron - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "taille d'i-noeud invalide - %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "La taille des i-noeuds doit tre une puissance de deux - %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "mmp_update_interval trop grand: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
msgstr[0] "Dfinition de l'intervale de mise jour de la protection contre les montages multiples %lu seconde\n"
msgstr[1] "Dfinition de l'intervale de mise jour de la protection contre les montages multiples %lu secondes\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Activation du drapeau d'erreur de systme de fichier pour forcer une passe fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Paramtre stride RAID invalide: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Paramtre stripe-width RAID invalide: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Algorithme de hachage invalide: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Dfinition de l'algorithme de hachage par dfaut %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Le peut pas changer l'encodage existant\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Encodage invalide: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Dfinition de l'encodage '%s'\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Dfinition du drapeau encoding_flags '%s'\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6720,6 +6795,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Une ou des options spcifies sont errones.\n"
@@ -6737,32 +6814,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encodage>\n"
+"\tencoding_flags=<drapeaux>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "chec de lecture du bitmap d'i-noeuds\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "chec de lecture du bitmap de bloc\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "blocs dplacer"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "N'a pu allouer de bitmap de blocs lors d'une augmentation de taille d'i-noeud \n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Pas assez d'espace pour augmenter la taille d'i-noeud \n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "N'a pu reloger des blocs lors d'un changement de taille d'i-noeud \n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6770,7 +6849,7 @@ msgstr ""
"Erreur lors du changement de la taille des i-noeuds.\n"
"Excutez e2undo pour dfaire les changements du systme de fichiers. \n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6778,7 +6857,7 @@ msgstr ""
"Si vous tes sr(e) que le systme de fichiers n'est en cours d'utilisation sur aucun noeud, lancer:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6787,29 +6866,29 @@ msgstr ""
"Le numro magique du bloc MMP est incorrect. Essayer de le corriger en lanant:\n"
"'e2fsck -f %s'\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Ne peut pas modifier un priphrique de journal.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "La taille des i-noeuds est dj %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "La rduction de la taille d'un i-noeud n'est pas supporte\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Taille d'i-noeud invalide %lu (max %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Retailles les i-noeuds pourrait prendre du temps."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6827,57 +6906,57 @@ msgstr ""
"et ensuite relancer cette commande. Sinon, tout changement effectu pourrait\n"
"tre cras par la rcupration du journal.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Rcupration du journal.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Dfinition du nombre maximal de montages %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Dfinition du nombre courant de montages %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Dfinition du comportement en cas d'erreur %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Dfinition du gid des blocs rservs %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "l'intervalle entre les vrifications est trop grand (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Dfinition de l'intervalle de vrification %lu secondes\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Dfinition du pourcentage de blocs rservs %g%% (%llu blocs)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "le nombre de blocs rservs est trop grand (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Dfinition du nombre de blocs rservs %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6885,7 +6964,7 @@ msgstr ""
"\n"
"Le systme de fichiers a dj des superblocs creux.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6895,7 +6974,7 @@ msgstr ""
"Dfinir le drapeau creux du superbloc n'est pas support pour les systmes\n"
"de fichiers avec la fonctionalit flex_bg active.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6904,7 +6983,7 @@ msgstr ""
"\n"
"Drapeau de superbloc creux activ. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6912,55 +6991,55 @@ msgstr ""
"\n"
"La suppression du drapeau creux du superbloc n'est pas supporte.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr ""
"Dfinition de la date de la dernire vrification du systme de\n"
"fichiers %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Dfinition de l'uid de blocs rservs %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Erreur lors de l'utilisation de clear_mmp. Elle doit tre utilise avec -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "La fonctionalit de quota ne peut tre change que lorsque le systme de fichiers est dmont.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Dfinir l'UUID sur ce systme de fichier pourrait prendre du temps."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr ""
"L'UUID ne peut tre chang que lorsque le systme\n"
"de fichiers et dmont.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Si vous utiliser seulement des noyaux plus rcents que v4.4, lancez tune2fs -O metadata_csum_seed et relancez cette commande.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Format UUID invalide\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Doit mettre jour le superbloc du journal\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr ""
"La taille des i-noeuds ne peut tre change que lorsque le systme\n"
"de fichiers et dmont.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6968,26 +7047,26 @@ msgstr ""
"Changer la taille des i-noeuds n'est pas support pour les systmes de\n"
"fichiers avec la fonctionalit flex_bg active.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Dfinition de la taille des i-noeuds %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "N'a pu changer la taille d'i-noeud \n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Dfinition de la taille de stride %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Dfinition de la taille du stripe width %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Dfinition des options de montage tendues par dfaut %s\n"
@@ -7294,17 +7373,17 @@ msgstr ""
"voulez continuer malgr tout.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "lors de l'ouverture de %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "lors de la rcuprartion de l'tat de %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7313,30 +7392,34 @@ msgstr ""
"SVP excutez e2fsck -f %s d'abord.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Taille minimale estime du systme de fichiers: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "taille d'i-noeud invalide - %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "La nouvelle taille est trop grande pour tre exprime sur 32 bits\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "La nouvelle taille produit trop de descripteurs de groupes de blocs.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "La nouvelle taille est plus petite que le minimum (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Longueur stride invalide"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7347,27 +7430,27 @@ msgstr ""
"Vous avez demand une nouvelle taille de %llu blocs.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Ne peut pas positionner et dpositionner la fonctionnalit 64-bits.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "Ne peut pas changer la fonctionnalit sur un systme de fichiers qui est plus grand que 2^32 blocs.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "La fonctionalit de 64bits ne peut tre change lorsque le systme de fichiers est mont.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Veuillez activer la fonctionnalit des extents avec tune2fs avant d'activer la fonctionalit 64-bits.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7376,37 +7459,37 @@ msgstr ""
"Le systme de fichiers a dj %llu blocs (%dk). Rien faire!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "Le systme de fichiers est dj 64bits.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "Le systme de fichiers est dj 32bits.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Conversion du systme de fichiers en 64bits.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Conversion du systme de fichiers en 32bits.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "En train de redimensionner le systme de fichiers sur %s %llu (%dk) blocs.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "lors de la tentative de changement de taille de %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7415,7 +7498,7 @@ msgstr ""
"Veuillez lancer e2fsck -fy %s pour corriger le systme de fichiers\n"
"aprs l'opration de changement de taille avorte.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7424,7 +7507,7 @@ msgstr ""
"Le systme de fichiers sur %s a maintenant une taille de %llu blocs (%dk).\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "lors de la troncature de %s"
@@ -7525,8 +7608,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Ne devrait jamais se produire: i-noeud de redimensionnement corrompu!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Bibliothque EXT2FS version 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Bibliothque EXT2FS version 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8240,6 +8323,10 @@ msgstr "L'i-noeud est corrompu"
msgid "Inode containing extended attribute value is corrupted"
msgstr "L'i-noeud contenant la valeur d'attribut tendu est corrompu"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Descripteurs de groupes non chargs"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Profilage version 0.0"
@@ -8364,47 +8451,47 @@ msgstr "Valeur entire invalide"
msgid "Bad magic value in profile_file_data_t"
msgstr "Valeur magique invalide dans profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\tdernier montage sur %s le %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tdernier montage sur %.*s le %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\tdernier montage le %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tcr le %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tmodifi la dernire fois le %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Trouv une table de partitions %s dans %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "Le fichier %s n'existe pas et aucune taille n'a t spcifie.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Cration d'un fichier normal %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Impossible d'ouvrir %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8413,50 +8500,22 @@ msgstr ""
"Le priphrique n'existe apparemment pas; l'avez-vous spcifi\n"
"correctement?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s n'est pas un priphrique spcial en mode bloc.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s contient un systme de fichiers %s tiquet %s\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s contient un systme de fichiers %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s contient une donne %s\n"
-
-#~ msgid "while opening directory \"%s\""
-#~ msgstr "lors de l'ouverture du rpertoire %s"
-
-#~ msgid ""
-#~ "\n"
-#~ "*** Checksum errors detected in filesystem! Run e2fsck now!\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "*** Erreurs de somme de contrle dtectes dans le systme de fichier! Lancez e2fsck maintenant!\n"
-#~ "\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "*** Checksum errors detected in bitmaps! Run e2fsck now!\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "*** Erreurs de somme de contrle dtectes dans les bitmaps! Lancez e2fsck maintenant!\n"
-#~ "\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "%s: %s: error reading bitmaps: %s\n"
-#~ msgstr ""
-#~ "\n"
-#~ "%s: %s: erreur lors de la lecture des bitmaps: %s\n"
diff --git a/po/ms.gmo b/po/ms.gmo
index ea16c11e..e3ae66cf 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index 4269dcbc..da0bdbf7 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -1,7 +1,7 @@
# e2fsprogs Bahasa Melayu (Malay) (ms).
-# Copyright (C) 2008, 2009, 2015, 2018, 2019 Theodore Tso (msgids)
+# Copyright (C) 2008, 2009, 2015, 2018, 2019, 2020, 2021 Theodore Tso (msgids)
# This file is distributed under the same license as the e2fsprogs package.
-# Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>, 2008, 2009, 2015, 2018, 2019.
+# Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>, 2008, 2009, 2015, 2018, 2019, 2020, 2021.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -77,7 +77,7 @@ msgstr ""
"Project-Id-Version: e2fsprogs 1.45.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-09-01 22:24+0800\n"
+"PO-Revision-Date: 2021-01-31 11:41+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
"Language: ms\n"
@@ -86,7 +86,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.4.2\n"
#: e2fsck/badblocks.c:23 misc/mke2fs.c:220
#, c-format
@@ -132,10 +132,8 @@ msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Amaran: blok tidak sah %u terdapat di dalam blok inode buruk. Dibersihkan.\n"
#: e2fsck/dirinfo.c:331
-#, fuzzy
-#| msgid "while reading root inode"
msgid "while freeing dir_info tdb file"
-msgstr "Ralat apabila membaca fail."
+msgstr "ketika membebaskan fail dir_info tdb"
#: e2fsck/ehandler.c:55
#, c-format
@@ -170,12 +168,12 @@ msgstr "Ralat membaca blok %lu (%s) ketika %s. "
#: e2fsck/emptydir.c:57
#, fuzzy
msgid "empty dirblocks"
-msgstr "kosong"
+msgstr "%%empty pada hukum bukan kosong"
#: e2fsck/emptydir.c:62
#, fuzzy
msgid "empty dir map"
-msgstr "Peta terjemahan: sintaks tidak betul"
+msgstr "Tiada ruang bebas dalam peta takat"
#: e2fsck/emptydir.c:98
#, c-format
@@ -200,12 +198,12 @@ msgstr ""
#: e2fsck/extents.c:42
#, fuzzy
msgid "extent rebuild inode map"
-msgstr "fail kosong biasa"
+msgstr "Tiada ruang bebas dalam peta takat"
#: e2fsck/flushb.c:35
#, fuzzy, c-format
msgid "Usage: %s disk\n"
-msgstr "Penggunaan: %s [PILIHAN]\n"
+msgstr "%s\t\tPenggunaan Kekunci (%s):\n"
#: e2fsck/flushb.c:64
#, c-format
@@ -327,7 +325,7 @@ msgstr ""
#: e2fsck/message.c:127
#, fuzzy
msgid "Ffor @i %i (%Q) is"
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr "@i %i (%Q) adalah @I FIFO.\n"
#: e2fsck/message.c:128
msgid "ggroup"
@@ -373,9 +371,8 @@ msgid "oorphaned"
msgstr ""
#: e2fsck/message.c:138
-#, fuzzy
msgid "pproblem in"
-msgstr "Sedang Diguna"
+msgstr "pproblem dalam"
#: e2fsck/message.c:139
msgid "qquota"
@@ -384,7 +381,7 @@ msgstr ""
#: e2fsck/message.c:140
#, fuzzy
msgid "rroot @i"
-msgstr "<i>(tiada cadangan)</i>"
+msgstr "@u @z @i %i. "
#: e2fsck/message.c:141
#, fuzzy
@@ -432,7 +429,7 @@ msgstr ""
#: e2fsck/message.c:161
#, fuzzy
msgid "<The group quota inode>"
-msgstr ", Penghurai kumpulan di"
+msgstr ", Penerangan kumpulan di "
#: e2fsck/message.c:162
#, fuzzy
@@ -475,7 +472,7 @@ msgstr "direktori"
#: e2fsck/message.c:331
#, fuzzy
msgid "character device"
-msgstr "peranti tidak sah %s %s"
+msgstr "aksara"
#: e2fsck/message.c:333
#, fuzzy
@@ -542,7 +539,7 @@ msgstr ""
#, fuzzy
#| msgid "unknown os - %s"
msgid "unknown quota type"
-msgstr "%s mempunyai jenis fail yang tidak diketahui"
+msgstr "Jenis kandungan struktur PKCS tidak diketahui."
#: e2fsck/pass1b.c:222
msgid "multiply claimed inode map"
@@ -580,17 +577,17 @@ msgstr "membaca direktori %s"
#: e2fsck/pass1.c:1224
#, fuzzy
msgid "in-use inode map"
-msgstr "Tidak dapat memetakan nama \"%s\" ke menu\n"
+msgstr "Inode tidak menggunakan takat"
#: e2fsck/pass1.c:1235
#, fuzzy
msgid "directory inode map"
-msgstr "Peta terjemahan: sintaks tidak betul"
+msgstr "Tiada ruang bebas dalam peta takat"
#: e2fsck/pass1.c:1245
#, fuzzy
msgid "regular file inode map"
-msgstr "Mencipta fail biasa %s\n"
+msgstr "fail kosong biasa"
#: e2fsck/pass1.c:1254 misc/e2image.c:1282
#, fuzzy
@@ -723,12 +720,9 @@ msgstr "Auto simpan ketika keluar, jangan maklum"
#: e2fsck/problem.c:53
#, fuzzy
msgid "Fix"
-msgstr ""
-"Tidak dapat membaiki induk untuk @i %i: %m\n"
-"\n"
+msgstr "pembetulan boleh diterapkan. Ulang laksana dengan pilihan '--update'."
#: e2fsck/problem.c:54
-#, fuzzy
msgid "Clear"
msgstr "Padam"
@@ -776,7 +770,7 @@ msgstr ""
#: e2fsck/problem.c:62
#, fuzzy
msgid "Clear inode"
-msgstr "saiz inod=%d\n"
+msgstr "Padam"
#: e2fsck/problem.c:63
#, fuzzy
@@ -809,7 +803,7 @@ msgstr "Padam"
#: e2fsck/problem.c:68
#, fuzzy
msgid "Suppress messages"
-msgstr "Memindahkan mesej..."
+msgstr "Tiada mesej untuk fail ini"
#: e2fsck/problem.c:69
#, fuzzy
@@ -819,7 +813,7 @@ msgstr "takboleh nyahpaut %s"
#: e2fsck/problem.c:70
#, fuzzy
msgid "Clear HTree index"
-msgstr "indeks"
+msgstr "Padam"
#: e2fsck/problem.c:71
#, fuzzy
@@ -852,7 +846,7 @@ msgstr ""
#: e2fsck/problem.c:85
#, fuzzy
msgid "ALLOCATED"
-msgstr "@r tidak diumpukkan."
+msgstr "@r tidak diumpukkan. "
#: e2fsck/problem.c:86
msgid "EXPANDED"
@@ -906,7 +900,7 @@ msgstr ""
#: e2fsck/problem.c:96
#, fuzzy
msgid "FILE DELETED"
-msgstr " %d %d%% dipadam"
+msgstr " %d %.0f%% dipadam"
#: e2fsck/problem.c:97
msgid "SUPPRESSED"
@@ -932,15 +926,13 @@ msgstr ""
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
#: e2fsck/problem.c:115
-#, fuzzy
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
-msgstr "%s adalah nama hos yang tidak sah"
+msgstr "@b @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
#: e2fsck/problem.c:119
-#, fuzzy
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
-msgstr "%s adalah nama hos yang tidak sah"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
@@ -999,9 +991,8 @@ msgstr ""
#. @-expanded: superblock first_data_block = %b, should have been %c\n
#: e2fsck/problem.c:160
-#, fuzzy
msgid "@S first_data_@b = %b, should have been %c\n"
-msgstr " Semua data anda yang dipilih telah"
+msgstr "@S first_data_@b = %b, sepatutnya adalah %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
@@ -1026,7 +1017,7 @@ msgstr ""
#: e2fsck/problem.c:180
#, fuzzy
msgid "Corruption found in @S. (%s = %N).\n"
-msgstr "%s: `%s': padanan tak dijumpai"
+msgstr "Hujah sah adalah nombor bulat n seperti: %s\n"
#. @-expanded: Error determining size of the physical device: %m\n
#: e2fsck/problem.c:186
@@ -1088,7 +1079,7 @@ msgstr ""
#: e2fsck/problem.c:235
#, fuzzy
msgid "@j @S is corrupt.\n"
-msgstr "Imej PXE ialah %s/%s"
+msgstr "Takat rosak"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
#: e2fsck/problem.c:240
@@ -1125,7 +1116,7 @@ msgstr ""
#: e2fsck/problem.c:270
#, fuzzy
msgid "@I %B (%b) found in @o @i %i.\n"
-msgstr "@i %i (%Q) adalah @I @b @v.\n"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
#: e2fsck/problem.c:275
@@ -1279,7 +1270,7 @@ msgstr ""
#: e2fsck/problem.c:394
#, fuzzy
msgid "Last @g @b @B uninitialized. "
-msgstr "Disimpan terakhir:"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#: e2fsck/problem.c:400
#, no-c-format
@@ -1340,12 +1331,12 @@ msgstr "saiz blok tidak sah - %s"
#: e2fsck/problem.c:447
#, fuzzy
msgid "@S has invalid MMP magic. "
-msgstr "%s: fail `%s' mempunyai cecikut magik buruk\n"
+msgstr "MMP: nombor magic tidak sah"
#: e2fsck/problem.c:453
#, fuzzy, no-c-format
msgid "ext2fs_open2: %m\n"
-msgstr "Tidak dapat mengembang /@l: %m\n"
+msgstr "@A @i @B (%N): %m\n"
#: e2fsck/problem.c:459
#, fuzzy, no-c-format
@@ -1362,7 +1353,7 @@ msgstr ""
#: e2fsck/problem.c:471
#, fuzzy
msgid "@S MMP @b checksum does not match. "
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr "Pengiraan bitmap MMP tidak sepadan"
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
#: e2fsck/problem.c:476
@@ -1403,7 +1394,7 @@ msgstr ""
#: e2fsck/problem.c:512
#, fuzzy
msgid "Invalid %U @q @i %i. "
-msgstr "@i %i (%Q) adalah @I FIFO.\n"
+msgstr "@u @z @i %i. "
#. @-expanded: superblock would have too many inodes (%N).\n
#: e2fsck/problem.c:517
@@ -1456,39 +1447,37 @@ msgstr ""
#: e2fsck/problem.c:562
#, fuzzy, no-c-format
msgid "@i %i is a @z @d. "
-msgstr "/@l adalah bukan sejenis @d (ino=%i)\n"
+msgstr "@u @z @i %i. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:567
#, fuzzy
msgid "@g %g's @b @B at %b @C.\n"
-msgstr "P&ada:"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:572
#, fuzzy
msgid "@g %g's @i @B at %b @C.\n"
-msgstr "P&ada:"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:577
#, fuzzy
msgid "@g %g's @i table at %b @C.\n"
-msgstr ""
-"\n"
-" Jadual inode di"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
#: e2fsck/problem.c:582
#, fuzzy
msgid "@g %g's @b @B (%b) is bad. "
-msgstr "@p @h %d (%q): buruk @b nombor %b.\n"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: group %g's inode bitmap (%b) is bad.
#: e2fsck/problem.c:587
#, fuzzy
msgid "@g %g's @i @B (%b) is bad. "
-msgstr "Sijil buruk"
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: inode %i, i_size is %Is, should be %N.
#: e2fsck/problem.c:592
@@ -1506,7 +1495,7 @@ msgstr "i_blocks_hi @F %N, @s sifar.\n"
#: e2fsck/problem.c:602
#, fuzzy
msgid "@I %B (%b) in @i %i. "
-msgstr "@i @B perbezaan: "
+msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
#: e2fsck/problem.c:607
@@ -1530,7 +1519,7 @@ msgstr ""
#: e2fsck/problem.c:624
#, fuzzy
msgid "@I %B (%b) in bad @b @i. "
-msgstr "@i %i (%Q) adalah @I @b @v.\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: Bad block inode has illegal block(s).
#: e2fsck/problem.c:629
@@ -1646,15 +1635,13 @@ msgstr "Tidak dapat menulis kepada fail %s"
#. @-expanded: error allocating inode bitmap (%N): %m\n
#: e2fsck/problem.c:723 e2fsck/problem.c:1871
-#, fuzzy
msgid "@A @i @B (%N): %m\n"
-msgstr "Ralat menyalin dalam penggantian @i @B: %m\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
#: e2fsck/problem.c:728
-#, fuzzy
msgid "@A @b @B (%N): %m\n"
-msgstr "Ralat menyalin dalam gantian @b @B: %m\n"
+msgstr "@A @b @B (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
#: e2fsck/problem.c:734
@@ -1666,7 +1653,7 @@ msgstr "Maklumat Peranti Terlampir"
#: e2fsck/problem.c:740
#, fuzzy, no-c-format
msgid "@A @d @b array: %m\n"
-msgstr "%b %e %H:%M"
+msgstr "@A @b @B (%N): %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
#: e2fsck/problem.c:746
@@ -1719,14 +1706,15 @@ msgstr ""
#. @-expanded: journal inode is not in use, but contains data.
#: e2fsck/problem.c:801
+#, fuzzy
msgid "@j @i is not in use, but contains data. "
-msgstr ""
+msgstr "Data EXIF mengandungi gambar kecil (%i byte)."
#. @-expanded: journal is not regular file.
#: e2fsck/problem.c:806
#, fuzzy
msgid "@j is not regular file. "
-msgstr "Mencipta fail biasa %s\n"
+msgstr "fail kosong biasa"
#. @-expanded: inode %i was part of the orphaned inode list.
#: e2fsck/problem.c:812
@@ -1741,8 +1729,9 @@ msgstr ""
#. @-expanded: error allocating refcount structure (%N): %m\n
#: e2fsck/problem.c:823
+#, fuzzy
msgid "@A refcount structure (%N): %m\n"
-msgstr ""
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
#: e2fsck/problem.c:828
@@ -1754,7 +1743,7 @@ msgstr "Ralat membaca @d @b %b (@i %i): %m\n"
#: e2fsck/problem.c:833
#, fuzzy
msgid "@i %i has a bad @a @b %b. "
-msgstr "@i %i (%Q) adalah @I @b @v.\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b (%m).
#: e2fsck/problem.c:838
@@ -1795,13 +1784,13 @@ msgstr ""
#: e2fsck/problem.c:868
#, fuzzy
msgid "@a @b %b is corrupt (@n name). "
-msgstr "Nama terlalu panjang"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: extended attribute block %b is corrupt (invalid value).
#: e2fsck/problem.c:873
#, fuzzy
msgid "@a @b %b is corrupt (@n value). "
-msgstr "Nilai diminta adalah bukan integer"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: inode %i is too big.
#: e2fsck/problem.c:879
@@ -1988,8 +1977,9 @@ msgstr "@i %i (%Q) adalah soket @I.\n"
#. @-expanded: quota inode is not in use, but contains data.
#: e2fsck/problem.c:1046
+#, fuzzy
msgid "@q @i is not in use, but contains data. "
-msgstr ""
+msgstr "Data EXIF mengandungi gambar kecil (%i byte)."
#. @-expanded: quota inode is visible to the user.
#: e2fsck/problem.c:1051
@@ -2001,7 +1991,7 @@ msgstr "@i %i (%Q) adalah soket @I.\n"
#: e2fsck/problem.c:1056
#, fuzzy
msgid "The bad @b @i looks @n. "
-msgstr "saiz inode buruk - %s"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
@@ -2080,7 +2070,7 @@ msgstr ""
#: e2fsck/problem.c:1132
#, fuzzy
msgid "@d @i %i @b %b should be at @b %c. "
-msgstr "@A baru @d @b untuk @i %i (%s): %m\n"
+msgstr "Ralat menulis @d @b %b (@i %i): %m\n"
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
#: e2fsck/problem.c:1138
@@ -2216,7 +2206,7 @@ msgstr ""
#: e2fsck/problem.c:1255
#, fuzzy, no-c-format
msgid "@m @b(s) in @i %i:"
-msgstr "@A baru @d @b untuk @i %i (%s): %m\n"
+msgstr "@A @i @B (%N): %m\n"
#: e2fsck/problem.c:1271
#, fuzzy, no-c-format
@@ -2227,7 +2217,7 @@ msgstr "Ralat apabila membaca fail."
#: e2fsck/problem.c:1277
#, fuzzy, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
-msgstr "Ralat membaca @d @b %b (@i %i): %m\n"
+msgstr "@A baru @d @b untuk @i %i (%s): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
#: e2fsck/problem.c:1283
@@ -2239,7 +2229,7 @@ msgstr ""
#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
#, fuzzy
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
-msgstr "Ralat membaca @d @b %b (@i %i): %m\n"
+msgstr "Ralat menyalin dalam penggantian @i @B: %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
#: e2fsck/problem.c:1298
@@ -2278,7 +2268,7 @@ msgstr "font %f terlalu besar"
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
-msgstr "Ralat mengulang ke atas @d @bs: %m\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
@@ -2291,9 +2281,7 @@ msgstr ""
#: e2fsck/problem.c:1344
#, fuzzy, no-c-format
msgid "Couldn't clone file: %m\n"
-msgstr ""
-"Tidak dapat membaiki induk untuk @i %i: %m\n"
-"\n"
+msgstr "Tidak dapat membuka fail profil"
#. @-expanded: Pass 1E: Optimizing extent trees\n
#: e2fsck/problem.c:1350
@@ -2312,7 +2300,7 @@ msgstr "Gagal untuk mengoptima direktori %q (%d): %m"
#, fuzzy
#| msgid "Optimizing directories: "
msgid "Optimizing @x trees: "
-msgstr "\t\tX: "
+msgstr "Mengoptimumkan direktori: "
#: e2fsck/problem.c:1376
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
@@ -2338,7 +2326,7 @@ msgstr "Ulangan 3: Memeriksa sambungan @d\n"
#: e2fsck/problem.c:1399
#, fuzzy, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
#: e2fsck/problem.c:1404
@@ -2358,7 +2346,7 @@ msgstr ""
#: e2fsck/problem.c:1414
#, fuzzy
msgid "@E @L to '.' "
-msgstr "/@l tidak dijumpai."
+msgstr "@E adalah salinan '.' @e.\n"
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
#: e2fsck/problem.c:1419
@@ -2502,7 +2490,7 @@ msgstr ""
#: e2fsck/problem.c:1550
#, fuzzy, no-c-format
msgid "@A icount structure: %m\n"
-msgstr "Tidak dapat mengembang /@l: %m\n"
+msgstr "@A @i @B (%N): %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
#: e2fsck/problem.c:1556
@@ -2577,7 +2565,7 @@ msgstr "Symlink %Q (@i #%i) adalah @n.\n"
#: e2fsck/problem.c:1624
#, fuzzy
msgid "@a @b @F @n (%If).\n"
-msgstr "Tiada"
+msgstr "@A @b @B (%N): %m\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
#: e2fsck/problem.c:1629
@@ -2610,9 +2598,8 @@ msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
#: e2fsck/problem.c:1654
-#, fuzzy
msgid "@n @h %d (%q). "
-msgstr "@p @h %d: nod root node ialah @n\n"
+msgstr "@n @h %d (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
#: e2fsck/problem.c:1658
@@ -2652,7 +2639,7 @@ msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
#: e2fsck/problem.c:1694
msgid "Duplicate @E found. "
-msgstr "Salinan @E dijumpai."
+msgstr "Salinan @E dijumpai. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
@@ -2749,7 +2736,7 @@ msgstr "Ulangan 3: Memeriksa sambungan @d\n"
#. @-expanded: root inode not allocated.
#: e2fsck/problem.c:1779
msgid "@r not allocated. "
-msgstr "@r tidak diumpukkan."
+msgstr "@r tidak diumpukkan. "
#. @-expanded: No room in lost+found directory.
#: e2fsck/problem.c:1784
@@ -2765,7 +2752,7 @@ msgstr "'..' dalam %Q (%i) adalah %P (%j), @s %q (%d).\n"
#. @-expanded: /lost+found not found.
#: e2fsck/problem.c:1795
msgid "/@l not found. "
-msgstr "/@l tidak dijumpai."
+msgstr "/@l tidak dijumpai. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
#: e2fsck/problem.c:1800
@@ -2875,8 +2862,9 @@ msgstr "/@l adalah bukan sejenis @d (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
#: e2fsck/problem.c:1909
+#, fuzzy
msgid "/@l has inline data\n"
-msgstr ""
+msgstr "Inode tidak mempunyai data sebaris"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
@@ -2900,12 +2888,12 @@ msgstr ""
#: e2fsck/problem.c:1924
#, fuzzy
msgid "/@l is encrypted\n"
-msgstr "/@l tidak dijumpai."
+msgstr "/@l tidak dijumpai. "
#: e2fsck/problem.c:1931
#, fuzzy
msgid "Pass 3A: Optimizing directories\n"
-msgstr "Mengoptimakan direktori"
+msgstr "Mengoptimumkan direktori: "
#: e2fsck/problem.c:1937
#, no-c-format
@@ -2919,7 +2907,7 @@ msgstr "Gagal untuk mengoptima direktori %q (%d): %m"
#: e2fsck/problem.c:1947
msgid "Optimizing directories: "
-msgstr "Mengoptimakan direktori"
+msgstr "Mengoptimumkan direktori: "
#: e2fsck/problem.c:1964
msgid "Pass 4: Checking reference counts\n"
@@ -2927,15 +2915,15 @@ msgstr ""
#. @-expanded: unattached zero-length inode %i.
#: e2fsck/problem.c:1970
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@u @z @i %i. "
-msgstr "<i>(tiada cadangan)</i>"
+msgstr "@u @z @i %i. "
#. @-expanded: unattached inode %i\n
#: e2fsck/problem.c:1976
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@u @i %i\n"
-msgstr "<i>(tiada cadangan)</i>"
+msgstr "@u @i %i\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
#: e2fsck/problem.c:1981
@@ -3103,9 +3091,7 @@ msgstr "DIABAIKAN"
#: e2fsck/quota.c:30 e2fsck/quota.c:37 e2fsck/quota.c:50 e2fsck/quota.c:59
#, fuzzy
msgid "in move_quota_inode"
-msgstr ""
-"\n"
-" Jadual inode di"
+msgstr "Semakan inode tidak sepadan inode"
#: e2fsck/scantest.c:79
#, c-format
@@ -3208,7 +3194,7 @@ msgstr ""
#: e2fsck/unix.c:185
#, fuzzy
msgid " Extent depth histogram: "
-msgstr "Kedalaman maksimum %s"
+msgstr "Pengepala takat rosak"
#: e2fsck/unix.c:194
#, c-format
@@ -3220,13 +3206,13 @@ msgstr[0] ""
#, fuzzy, c-format
msgid "%12u bad block\n"
msgid_plural "%12u bad blocks\n"
-msgstr[0] "ketika menetapkan inod blok buruk"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:200
#, fuzzy, c-format
msgid "%12u large file\n"
msgid_plural "%12u large files\n"
-msgstr[0] "%s adalah terlalu besar"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:202
#, fuzzy, c-format
@@ -3236,13 +3222,13 @@ msgid ""
msgid_plural ""
"\n"
"%12u regular files\n"
-msgstr[0] "Mencipta fail biasa %s\n"
+msgstr[0] "fail biasa"
#: e2fsck/unix.c:204
#, fuzzy, c-format
msgid "%12u directory\n"
msgid_plural "%12u directories\n"
-msgstr[0] "direktori"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:206
#, fuzzy, c-format
@@ -3257,16 +3243,16 @@ msgid_plural "%12u block device files\n"
msgstr[0] "%s adalah bukan peranti khas.\n"
#: e2fsck/unix.c:211
-#, fuzzy, c-format
+#, c-format
msgid "%12u fifo\n"
msgid_plural "%12u fifos\n"
-msgstr[0] "fifo"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:213
#, fuzzy, c-format
msgid "%12u link\n"
msgid_plural "%12u links\n"
-msgstr[0] "Pautan ke %s\n"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:215
#, fuzzy, c-format
@@ -3284,13 +3270,13 @@ msgstr[0] "pautan simbolik"
#, fuzzy, c-format
msgid "%12u socket\n"
msgid_plural "%12u sockets\n"
-msgstr[0] "soket"
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:225
#, fuzzy, c-format
msgid "%12u file\n"
msgid_plural "%12u files\n"
-msgstr[0] " Fail: ..."
+msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
#: resize/main.c:354
@@ -3301,7 +3287,7 @@ msgstr "ketika menentukan sama ada %s telah dilekapkan."
#: e2fsck/unix.c:259
#, fuzzy, c-format
msgid "Warning! %s is mounted.\n"
-msgstr "\tterakhir dilekapkan pada %s"
+msgstr "\tterakhir dilekapkan pada %s pada %s"
#: e2fsck/unix.c:262
#, fuzzy, c-format
@@ -3312,7 +3298,7 @@ msgstr "AMARAN: %s"
#, fuzzy, c-format
#| msgid "%s is mounted. "
msgid "%s is mounted.\n"
-msgstr "%s dilekapkan;"
+msgstr "%s dilekapkan; "
#: e2fsck/unix.c:270
#, fuzzy, c-format
@@ -3412,7 +3398,7 @@ msgstr "Versi EA tidak sah.\n"
#, fuzzy
#| msgid "Invalid resize parameter: %s\n"
msgid "Invalid readahead buffer size.\n"
-msgstr "saiz blok tidak sah - %s"
+msgstr "Tidak dapat memperoleh saiz buffer paip"
#: e2fsck/unix.c:757
#, c-format
@@ -3520,7 +3506,7 @@ msgstr ""
#: e2fsck/unix.c:1259 e2fsck/unix.c:1264
#, fuzzy
msgid "while checking MMP block"
-msgstr "ketika menulis bitmap blok"
+msgstr "Pengiraan bitmap MMP tidak sepadan"
#: e2fsck/unix.c:1266
#, c-format
@@ -3532,7 +3518,7 @@ msgstr ""
#: e2fsck/unix.c:1282
#, fuzzy
msgid "while reading MMP block"
-msgstr "ketika menulis bitmap blok"
+msgstr "Pengiraan bitmap MMP tidak sepadan"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
@@ -3566,7 +3552,7 @@ msgstr "ketika cuba memulakan program"
#: e2fsck/unix.c:1456
#, fuzzy, c-format
msgid "\tUsing %s, %s\n"
-msgstr "kurang menggunakan hukum %d (%s)"
+msgstr "ditandatangan menggunakan %s, "
#: e2fsck/unix.c:1468
msgid "need terminal for interactive repairs"
@@ -3656,7 +3642,7 @@ msgstr ""
#: e2fsck/unix.c:1775
#, fuzzy, c-format
msgid "unable to set superblock flags on %s\n"
-msgstr "Bendera bagi %s ditetapkan sebagai"
+msgstr "Bendera bagi %s ditetapkan sebagai "
#: e2fsck/unix.c:1781
#, fuzzy, c-format
@@ -3668,7 +3654,7 @@ msgstr "Superblok jurnal tidak dijumpai!\n"
#, fuzzy, c-format
#| msgid "Journal removed\n"
msgid "Journal corrupted in %s\n"
-msgstr "jurnal"
+msgstr "%s adalah bukan peranti jurnal.\n"
#: e2fsck/unix.c:1789
#, fuzzy, c-format
@@ -3699,7 +3685,7 @@ msgstr ""
#: e2fsck/unix.c:1919
#, c-format
msgid "Creating journal (%d blocks): "
-msgstr "Mencipta jurnal (%d blok):"
+msgstr "Mencipta jurnal (%d blok): "
#: e2fsck/unix.c:1929
msgid " Done.\n"
@@ -3778,9 +3764,8 @@ msgid "nN"
msgstr "tTnN"
#: e2fsck/util.c:198
-#, fuzzy
msgid "aA"
-msgstr "Ss"
+msgstr "aA"
#: e2fsck/util.c:202
#, fuzzy
@@ -3788,9 +3773,8 @@ msgid " ('a' enables 'yes' to all) "
msgstr "Semua"
#: e2fsck/util.c:219
-#, fuzzy
msgid "<y>"
-msgstr "\t\tY: "
+msgstr "<y>"
#: e2fsck/util.c:221
#, fuzzy
@@ -3863,7 +3847,7 @@ msgstr ""
#: e2fsck/util.c:346
#, fuzzy
msgid "writing block and inode bitmaps"
-msgstr "ketika menulis bitmap blok"
+msgstr "ketika menulis jadual inod"
#: e2fsck/util.c:351
#, fuzzy, c-format
@@ -3902,7 +3886,7 @@ msgstr "masa lepas: %6.3f\n"
#: e2fsck/util.c:495 e2fsck/util.c:509
#, fuzzy, c-format
msgid "while reading inode %lu in %s"
-msgstr "Ralat membaca blok %lu (%s) ketika %s. "
+msgstr "ketika membaca inod jurnal"
#: e2fsck/util.c:523 e2fsck/util.c:536
#, fuzzy, c-format
@@ -3942,7 +3926,7 @@ msgstr ""
#: misc/badblocks.c:337
#, fuzzy
msgid "Testing with random pattern: "
-msgstr "Menyemai penjana nombor rawak..."
+msgstr "Gagal untuk mendapatkan data rawak."
#: misc/badblocks.c:355
#, fuzzy
@@ -4000,7 +3984,7 @@ msgstr "Dari blok %lu ke %lu\n"
#: misc/badblocks.c:684
msgid "Reading and comparing: "
-msgstr "Membaca dan membanding:"
+msgstr "Membaca dan membanding: "
#: misc/badblocks.c:790
msgid "Checking for bad blocks in non-destructive read-write mode\n"
@@ -4024,7 +4008,7 @@ msgstr ""
#: misc/badblocks.c:1007 misc/util.c:134
#, c-format
msgid "%s is mounted; "
-msgstr "%s dilekapkan;"
+msgstr "%s dilekapkan; "
#: misc/badblocks.c:1009
msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n"
@@ -4103,7 +4087,7 @@ msgstr "ketika membaca dalam senarai blok buruk dari fail"
#: misc/badblocks.c:1305
#, fuzzy
msgid "input file - bad format"
-msgstr "fail masukan mengecil"
+msgstr "Jika FAIL adalah '-', baca masukan piawai."
#: misc/badblocks.c:1313 misc/badblocks.c:1322
msgid "while adding to in-memory bad block list"
@@ -4143,7 +4127,7 @@ msgstr "ketika membaca penanda pada %s"
#: misc/chattr.c:232 misc/chattr.c:244
#, c-format
msgid "Flags of %s set as "
-msgstr "Bendera bagi %s ditetapkan sebagai"
+msgstr "Bendera bagi %s ditetapkan sebagai "
#: misc/chattr.c:253
#, c-format
@@ -4294,7 +4278,7 @@ msgstr "tak dapat lstat %s"
#: misc/create_inode.c:875
#, fuzzy, c-format
msgid "while creating special file \"%s\""
-msgstr "Mencipta fail biasa %s\n"
+msgstr "tak boleh mencipta fail istimewa %s"
#: misc/create_inode.c:884
#, fuzzy
@@ -4319,13 +4303,13 @@ msgstr "ketika menulis jadual inod"
#: misc/create_inode.c:921
#, fuzzy, c-format
msgid "while writing file \"%s\""
-msgstr "Ralat menulis fail sementara: %s"
+msgstr "ketika menulis superblok"
#: misc/create_inode.c:934
#, fuzzy, c-format
#| msgid "while opening %s"
msgid "while making dir \"%s\""
-msgstr "ketika mencipta direktori root"
+msgstr "%s: Ketidakkonsistenan luar dugaan bila membuat direktori"
#: misc/create_inode.c:952
#, fuzzy
@@ -4335,7 +4319,7 @@ msgstr "penukaran hakmilik %s"
#: misc/create_inode.c:958
#, fuzzy, c-format
msgid "ignoring entry \"%s\""
-msgstr "kemasukan `%s' usang. Diabaikan"
+msgstr "Masukan EXIF '%s' "
#: misc/create_inode.c:971
#, fuzzy, c-format
@@ -4353,7 +4337,7 @@ msgstr "ketika menetapkan versi pada %s"
#, fuzzy
#| msgid "while starting inode scan"
msgid "while saving inode data"
-msgstr "ketika membaca inod root"
+msgstr "ketika memulakan pengesanan inod"
#: misc/dumpe2fs.c:56
#, c-format
@@ -4372,7 +4356,7 @@ msgstr " %d gugusan,"
#: misc/dumpe2fs.c:219
#, c-format
msgid "Group %lu: (Blocks "
-msgstr "Kumpulan %lu: (Blok"
+msgstr "Kumpulan %lu: (Blok "
#: misc/dumpe2fs.c:226
#, fuzzy, c-format
@@ -4387,7 +4371,7 @@ msgstr "(0x%04x, '%s'): "
#: misc/dumpe2fs.c:233
#, c-format
msgid " %s superblock at "
-msgstr " %s superblok di"
+msgstr " %s superblok di "
#: misc/dumpe2fs.c:234
msgid "Primary"
@@ -4399,7 +4383,7 @@ msgstr "Backup"
#: misc/dumpe2fs.c:238
msgid ", Group descriptors at "
-msgstr ", Penghurai kumpulan di"
+msgstr ", Penerangan kumpulan di "
#: misc/dumpe2fs.c:242
#, fuzzy
@@ -4423,13 +4407,15 @@ msgstr "(0x%x, '%s') "
#: misc/dumpe2fs.c:263
msgid ","
-msgstr ""
+msgstr ","
#: misc/dumpe2fs.c:265
msgid ""
"\n"
" "
msgstr ""
+"\n"
+" "
#: misc/dumpe2fs.c:266
#, fuzzy
@@ -4482,7 +4468,7 @@ msgstr "ketika membaca inod jurnal"
#: misc/dumpe2fs.c:379
#, fuzzy
msgid "while opening journal inode"
-msgstr "ketika mengosongkan inod jurnal"
+msgstr "ketika membaca inod jurnal"
#: misc/dumpe2fs.c:385
#, fuzzy
@@ -4492,7 +4478,7 @@ msgstr "ketika membaca superblok jurnal"
#: misc/dumpe2fs.c:392
#, fuzzy
msgid "Journal superblock magic number invalid!\n"
-msgstr "Superblok jurnal tidak dijumpai!\n"
+msgstr "MMP: nombor magic tidak sah"
#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
msgid "while reading journal superblock"
@@ -4544,7 +4530,7 @@ msgstr ""
#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
#, fuzzy, c-format
msgid "\tUsing %s\n"
-msgstr "sambugan %s menggunakan %s (%u bit)"
+msgstr "ditandatangan menggunakan %s, "
#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
#: resize/main.c:416
@@ -4643,7 +4629,7 @@ msgstr ""
#: misc/e2image.c:568
#, fuzzy, c-format
msgid "%llu / %llu blocks (%d%%)"
-msgstr "inod (%llu) mesti kurang dari %u"
+msgstr "inode (%llu) mesti kurang dari %u"
#: misc/e2image.c:599 misc/e2image.c:639
#, fuzzy
@@ -4795,7 +4781,7 @@ msgstr ""
#: misc/e2image.c:1663
#, fuzzy
msgid "Can not stat output\n"
-msgstr "Keluaran:\n"
+msgstr "ketika cuba untuk stat %s"
#: misc/e2image.c:1673
#, fuzzy, c-format
@@ -4862,7 +4848,7 @@ msgstr "e2label: ralat membaca superblok\n"
#: misc/e2label.c:72
#, fuzzy, c-format
msgid "e2label: not an ext2 filesystem\n"
-msgstr "Sistem fail "
+msgstr "sistemfail"
#: misc/e2label.c:97 misc/tune2fs.c:3117
#, c-format
@@ -4931,7 +4917,7 @@ msgstr ""
#: misc/e2undo.c:340
#, fuzzy, c-format
msgid "illegal offset - %s"
-msgstr "%s: opsyen tidak dibenarkan -- %c\n"
+msgstr "%s: pilihan salah -- %c\n"
#: misc/e2undo.c:364
#, c-format
@@ -4953,7 +4939,7 @@ msgstr "Ralat apabila membaca fail."
#, fuzzy, c-format
#| msgid "%s: too many devices\n"
msgid "%s: Not an undo file.\n"
-msgstr "Nyahbuat"
+msgstr "Undur fail yang rosak"
#: misc/e2undo.c:396
#, c-format
@@ -4963,7 +4949,7 @@ msgstr ""
#: misc/e2undo.c:403
#, fuzzy, c-format
msgid "%s: Corrupt undo file header.\n"
-msgstr "BUANG HEADER [%s]"
+msgstr "Undur fail yang rosak"
#: misc/e2undo.c:407
#, c-format
@@ -4999,7 +4985,7 @@ msgstr "ketika membuka %s"
#: misc/e2undo.c:466
#, fuzzy
msgid "specified offset is too large"
-msgstr "%s adalah terlalu besar"
+msgstr "kod bagi token %s terlalu besar"
#: misc/e2undo.c:507
#, fuzzy
@@ -5061,9 +5047,7 @@ msgstr ""
#: misc/findsuper.c:155
#, fuzzy, c-format
msgid "skipbytes should be a number, not %s\n"
-msgstr ""
-"Pengunaan: %s [NOMBOR]...\n"
-" atau: %s OPSYEN\n"
+msgstr "\t\tNombor CRL (%s): "
#: misc/findsuper.c:162
#, fuzzy, c-format
@@ -5073,9 +5057,7 @@ msgstr "Saiz rekod mesti dalam gandaan %d."
#: misc/findsuper.c:169
#, fuzzy, c-format
msgid "startkb should be a number, not %s\n"
-msgstr ""
-"Pengunaan: %s [NOMBOR]...\n"
-" atau: %s OPSYEN\n"
+msgstr "\t\tNombor CRL (%s): "
#: misc/findsuper.c:175
#, c-format
@@ -5208,12 +5190,9 @@ msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr ""
#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s.\n"
-msgstr ""
-"Ditulis oleh %s, %s, %s,\n"
-"%s, %s, %s, %s,\n"
-"%s, and %s.\n"
+msgstr "%s: %s.\n"
#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
#, c-format
@@ -5264,7 +5243,7 @@ msgstr "Ketika membaca penanda pada %s"
#, fuzzy, c-format
#| msgid "While reading version on %s"
msgid "While reading project on %s"
-msgstr "Ketika membaca versi pada %s"
+msgstr "ketika membaca penanda pada %s"
#: misc/lsattr.c:102
#, c-format
@@ -5324,7 +5303,7 @@ msgstr ""
#: misc/mke2fs.c:343
#, fuzzy
msgid "while marking bad blocks as used"
-msgstr "ketika membaca dalam senarai blok buruk dari fail"
+msgstr "ketika memeriksa kewarasan blok inode buruk"
#: misc/mke2fs.c:368
#, fuzzy
@@ -5442,7 +5421,7 @@ msgstr "Saiz blok=%u (log=%u)\n"
#: misc/mke2fs.c:686
#, fuzzy, c-format
msgid "Cluster size=%u (log=%u)\n"
-msgstr "Saiz blok=%u (log=%u)\n"
+msgstr "Saiz pecahan=%u (log=%u)\n"
#: misc/mke2fs.c:690
#, c-format
@@ -5457,7 +5436,7 @@ msgstr ""
#: misc/mke2fs.c:694
#, fuzzy, c-format
msgid "%u inodes, %llu blocks\n"
-msgstr "inod (%llu) mesti kurang dari %u"
+msgstr "inode (%llu) mesti kurang dari %u"
#: misc/mke2fs.c:696
#, c-format
@@ -5532,7 +5511,7 @@ msgstr "saiz blok tidak sah - %s"
#: misc/mke2fs.c:855
#, fuzzy, c-format
msgid "Invalid hash seed: %s\n"
-msgstr "mod tidak sah: %s"
+msgstr "%s: pilihan yang tidak sah -- %c\n"
#: misc/mke2fs.c:867
#, fuzzy, c-format
@@ -5548,7 +5527,7 @@ msgstr "jarakmasa `%s' tidak sah"
#, fuzzy, c-format
#| msgid "Invalid superblock parameter: %s\n"
msgid "Invalid # of backup superblocks: %s\n"
-msgstr "tak dapat backup %s"
+msgstr "%s: Tak dapat backup fail ini"
#: misc/mke2fs.c:920
#, c-format
@@ -5695,7 +5674,7 @@ msgstr ""
#: misc/mke2fs.c:1661
#, fuzzy, c-format
msgid "invalid cluster size - %s"
-msgstr "saiz blok tidak sah - %s"
+msgstr "saiz pecahan tidak sah - %s"
#: misc/mke2fs.c:1674
msgid "'-R' is deprecated, use '-E' instead"
@@ -6186,7 +6165,7 @@ msgstr "Mengosongkan peranti jurnal:"
#: misc/mke2fs.c:3379
#, fuzzy
msgid "while populating file system"
-msgstr "Ralat apabila membaca fail."
+msgstr "Abai fail tetapan sistem"
#: misc/mke2fs.c:3386
msgid "Writing superblocks and filesystem accounting information: "
@@ -6218,7 +6197,7 @@ msgstr ""
#: misc/mk_hugefiles.c:583
#, fuzzy
msgid "Huge files will be zero'ed\n"
-msgstr "Salinan fail"
+msgstr " %d fail,"
#: misc/mk_hugefiles.c:584
#, fuzzy, c-format
@@ -6358,14 +6337,14 @@ msgid "Please run `resize2fs %s %s"
msgstr "ketika cuba untuk melaksana '%s'"
#: misc/tune2fs.c:493
-#, fuzzy, c-format
+#, c-format
msgid " -z \"%s\""
-msgstr "@E mempunyai nama @z.\n"
+msgstr " -z \"%s\""
#: misc/tune2fs.c:495
#, fuzzy, c-format
msgid "' to enable 64-bit mode.\n"
-msgstr "Aktifkan gantungan"
+msgstr "enable/disable"
#: misc/tune2fs.c:497
#, fuzzy, c-format
@@ -6437,7 +6416,7 @@ msgstr ""
#: misc/tune2fs.c:1174
#, fuzzy
msgid "while reading MMP block."
-msgstr "ketika menulis bitmap blok"
+msgstr "Pengiraan bitmap MMP tidak sepadan"
#: misc/tune2fs.c:1206
msgid ""
@@ -6955,7 +6934,7 @@ msgstr ""
#: misc/util.c:141
#, c-format
msgid "will not make a %s here!\n"
-msgstr "tidak akam membuat %s disini!\n"
+msgstr "tidak akan membuat %s disini!\n"
#: misc/util.c:148
msgid "mke2fs forced anyway.\n"
@@ -7032,18 +7011,9 @@ msgid " %s [-r|t] [-n num] [-s socketpath]\n"
msgstr ""
#: misc/uuidd.c:53
-#, fuzzy, c-format
+#, c-format
msgid " %s -k\n"
-msgstr ""
-" --prologue=FAIL masukkan FAIL.pro sebagai prolog PostScript\n"
-" --ppd[=KEKUNCI] pilihan PPD automatik atau tetapkan kepada KEKUNCI\n"
-" -n, --copies=NOM cetak NOM salinan bagi setiap laman\n"
-" -s, --sides=MOD tetapkan MOD dupleks (`1' atau `simplex',\n"
-" `2' atau `duplex', `tumble')\n"
-" -S, --setpagedevice=K[:V] hantar laman definisi alat kepada keluaran\n"
-" --statusdict=K[:[:]V] hantar definisi statusdict kepada keluaran\n"
-" -k, --page-prefeed hidupkan laman prasuap\n"
-" -K, --no-page-prefeed matikan laman prasuap\n"
+msgstr " %s -k\n"
#: misc/uuidd.c:155
#, fuzzy
@@ -7053,12 +7023,12 @@ msgstr "Sijil buruk"
#: misc/uuidd.c:173
#, fuzzy
msgid "connect"
-msgstr "IDENT: connect() gagal: %s."
+msgstr "IDENT: connect() gagal"
#: misc/uuidd.c:192
#, fuzzy
msgid "write"
-msgstr "Tidak dapat menulis diluar daripada %s"
+msgstr "tidak dapat menulis fail stat"
#: misc/uuidd.c:200
#, fuzzy
@@ -7068,7 +7038,7 @@ msgstr "Kiraan Perkataan"
#: misc/uuidd.c:206
#, fuzzy
msgid "bad response length"
-msgstr "Panjang stride tidak sah"
+msgstr "\t\t\tKekangan Panjang Laluan: %d\n"
#: misc/uuidd.c:271
#, c-format
@@ -7103,7 +7073,7 @@ msgstr ""
#: misc/uuidd.c:381
#, fuzzy, c-format
msgid "Generated time UUID: %s\n"
-msgstr "tak memperolehi setem masa bagi %s"
+msgstr "masa dalam %s: %ld.%06ld (%ld%%)\n"
#: misc/uuidd.c:391
#, c-format
@@ -7124,7 +7094,7 @@ msgstr "Format UUID tidak sah\n"
#: misc/uuidd.c:433
#, fuzzy, c-format
msgid "Invalid operation %d\n"
-msgstr "nilai $ tidak sah: %d"
+msgstr "nilai $ tidak sah: $%d"
#: misc/uuidd.c:477 misc/uuidd.c:499
#, fuzzy, c-format
@@ -7344,7 +7314,7 @@ msgstr ""
#: resize/main.c:650
#, fuzzy, c-format
msgid "while trying to truncate %s"
-msgstr "ketika cuba untuk melaksana '%s'"
+msgstr "ketika cuba untuk memadam %s"
#: resize/online.c:81
msgid "kernel does not support online resize with sparse_super2"
@@ -7417,7 +7387,7 @@ msgstr ""
#, fuzzy, c-format
#| msgid "inodes (%llu) must be less than %u"
msgid "inodes (%llu) must be less than %u\n"
-msgstr "inod (%llu) mesti kurang dari %u"
+msgstr "inode (%llu) mesti kurang dari %u"
#: resize/resize2fs.c:1038
msgid "reserved blocks"
@@ -7448,11 +7418,12 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:11
#, fuzzy
msgid "EXT2FS Library version 1.45.3"
-msgstr "Versi pustaka gcrypt terlalu lama."
+msgstr "Versi pustaka tasn1 terlalu lama."
#: lib/ext2fs/ext2_err.c:12
+#, fuzzy
msgid "Wrong magic number for ext2_filsys structure"
-msgstr ""
+msgstr "Nombor ajaib yang salah --- RESERVED_15"
#: lib/ext2fs/ext2_err.c:13
msgid "Wrong magic number for badblocks_list structure"
@@ -7499,8 +7470,9 @@ msgid "Wrong magic number for directory block list structure"
msgstr ""
#: lib/ext2fs/ext2_err.c:24
+#, fuzzy
msgid "Wrong magic number for icount structure"
-msgstr ""
+msgstr "Nombor ajaib yang salah --- RESERVED_15"
#: lib/ext2fs/ext2_err.c:25
msgid "Wrong magic number for Powerquest io_channel structure"
@@ -7541,12 +7513,12 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:33
#, fuzzy
msgid "Can't read group descriptors"
-msgstr ", Penghurai kumpulan di"
+msgstr ", Penerangan kumpulan di "
#: lib/ext2fs/ext2_err.c:34
#, fuzzy
msgid "Can't write group descriptors"
-msgstr ", Penghurai kumpulan di"
+msgstr ", Penerangan kumpulan di "
#: lib/ext2fs/ext2_err.c:35
msgid "Corrupt group descriptor: bad block for block bitmap"
@@ -7606,7 +7578,7 @@ msgstr "%s: saiz alamat mempunyai nilai %u tidak dijangka\n"
#: lib/ext2fs/ext2_err.c:46
#, fuzzy
msgid "EXT2 directory corrupted"
-msgstr "direktori"
+msgstr "Fail Ext2 sudah wujud"
#: lib/ext2fs/ext2_err.c:47
msgid "Attempt to read block from filesystem resulted in short read"
@@ -7619,7 +7591,7 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:49
#, fuzzy
msgid "No free space in the directory"
-msgstr "ruang (i.e., ` ')"
+msgstr "Tiada ruang bebas dalam data sebaris"
#: lib/ext2fs/ext2_err.c:50
#, fuzzy
@@ -7634,7 +7606,7 @@ msgstr " Bitmap block di"
#: lib/ext2fs/ext2_err.c:52
#, fuzzy
msgid "Illegal inode number"
-msgstr "Nombot inod tidak sah"
+msgstr "Nombor tidak sah untuk saiz flex_bg"
#: lib/ext2fs/ext2_err.c:53
#, fuzzy
@@ -7644,7 +7616,7 @@ msgstr "Nombor tidak sah untuk saiz flex_bg"
#: lib/ext2fs/ext2_err.c:54
#, fuzzy
msgid "Internal error in ext2fs_expand_dir"
-msgstr "Ralat aliran data dalaman."
+msgstr "Ralat dalaman GnuTLS."
#: lib/ext2fs/ext2_err.c:55
msgid "Not enough space to build proposed filesystem"
@@ -7718,7 +7690,7 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:71
#, fuzzy
msgid "The ext2 superblock is corrupt"
-msgstr "ketika membaca superblok jurnal"
+msgstr "Superblock jurnal ini rosak"
#: lib/ext2fs/ext2_err.c:72
msgid "Illegal generic bit number passed to ext2fs_mark_generic_bitmap"
@@ -7779,7 +7751,7 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:85
#, fuzzy
msgid "Ext2 inode is not a directory"
-msgstr "direktori"
+msgstr "Fail Ext2 sudah wujud"
#: lib/ext2fs/ext2_err.c:86
#, fuzzy
@@ -7799,12 +7771,12 @@ msgstr "Mod lihat (baca sahaja)"
#: lib/ext2fs/ext2_err.c:89
#, fuzzy
msgid "Ext2 directory block not found"
-msgstr "Menulis bitmap blok"
+msgstr "Senarai blok direktori Ext2fs kosong"
#: lib/ext2fs/ext2_err.c:90
#, fuzzy
msgid "Ext2 directory already exists"
-msgstr "tak dapat menyenaraikan direktori tersedia-tersenarai: %s"
+msgstr "Fail Ext2 sudah wujud"
#: lib/ext2fs/ext2_err.c:91
msgid "Unimplemented ext2 library function"
@@ -7818,7 +7790,7 @@ msgstr "pengguna"
#: lib/ext2fs/ext2_err.c:93
#, fuzzy
msgid "Ext2 file too big"
-msgstr "font %f terlalu besar"
+msgstr "Fail Ext2 sudah wujud"
#: lib/ext2fs/ext2_err.c:94
#, fuzzy
@@ -7855,8 +7827,9 @@ msgid "Directory hash unsupported"
msgstr "Algoritma hash tidak diketahui."
#: lib/ext2fs/ext2_err.c:101
+#, fuzzy
msgid "Illegal extended attribute block number"
-msgstr ""
+msgstr "Semakan blok atribut lanjutan tidak sepadan dengan blok"
#: lib/ext2fs/ext2_err.c:102
msgid "Cannot create filesystem with requested number of inodes"
@@ -7875,7 +7848,7 @@ msgstr " Penghurai kumpulan di"
#: lib/ext2fs/ext2_err.c:105
#, fuzzy
msgid "Resize inode is corrupt"
-msgstr "Tidak dapat mengubah saiz tetingkap bawah"
+msgstr "Menerima data yang rosak."
#: lib/ext2fs/ext2_err.c:106
msgid "Tried to set block bmap with missing indirect block"
@@ -7884,12 +7857,12 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:107
#, fuzzy
msgid "TDB: Success"
-msgstr "tdb_fetch %s gagal\n"
+msgstr "Berjaya."
#: lib/ext2fs/ext2_err.c:108
#, fuzzy
msgid "TDB: Corrupt database"
-msgstr "tdb_fetch %s gagal\n"
+msgstr "TDB: Tulis tidak dibenarkan"
#: lib/ext2fs/ext2_err.c:109
#, fuzzy
@@ -7897,43 +7870,36 @@ msgid "TDB: IO Error"
msgstr "tdb_open %s gagal\n"
#: lib/ext2fs/ext2_err.c:110
-#, fuzzy
msgid "TDB: Locking error"
-msgstr "tdb_open %s gagal\n"
+msgstr "TDB: Ralat penguncian"
#: lib/ext2fs/ext2_err.c:111
-#, fuzzy
msgid "TDB: Out of memory"
-msgstr "nano tidak cukup memori!"
+msgstr "TDB: Tidak cukup memori"
#: lib/ext2fs/ext2_err.c:112
-#, fuzzy
msgid "TDB: Record exists"
-msgstr "tdb_open %s gagal\n"
+msgstr "TDB: Rekod wujud"
#: lib/ext2fs/ext2_err.c:113
msgid "TDB: Lock exists on other keys"
msgstr ""
#: lib/ext2fs/ext2_err.c:114
-#, fuzzy
msgid "TDB: Invalid parameter"
-msgstr "Parameter lebar stripe tidak sah: %s\n"
+msgstr "TDB: Parameter tidak sah"
#: lib/ext2fs/ext2_err.c:115
-#, fuzzy
msgid "TDB: Record does not exist"
-msgstr "pengguna %s tidak wujud"
+msgstr "TDB: Rekod tidak wujud"
#: lib/ext2fs/ext2_err.c:116
-#, fuzzy
msgid "TDB: Write not permitted"
-msgstr "tdb_fetch %s gagal\n"
+msgstr "TDB: Tulis tidak dibenarkan"
#: lib/ext2fs/ext2_err.c:117
-#, fuzzy
msgid "Ext2fs directory block list is empty"
-msgstr "Blok direktori kosong %u (#%d) dalam inode %u\n"
+msgstr "Senarai blok direktori Ext2fs kosong"
#: lib/ext2fs/ext2_err.c:118
msgid "Attempt to modify a block mapping via a read-only block iterator"
@@ -7956,92 +7922,76 @@ msgid "Wrong magic number for 64-bit inode bitmap"
msgstr ""
#: lib/ext2fs/ext2_err.c:123
-#, fuzzy
msgid "Wrong magic number --- RESERVED_13"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_13"
#: lib/ext2fs/ext2_err.c:124
-#, fuzzy
msgid "Wrong magic number --- RESERVED_14"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_14"
#: lib/ext2fs/ext2_err.c:125
-#, fuzzy
msgid "Wrong magic number --- RESERVED_15"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_15"
#: lib/ext2fs/ext2_err.c:126
-#, fuzzy
msgid "Wrong magic number --- RESERVED_16"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_16"
#: lib/ext2fs/ext2_err.c:127
-#, fuzzy
msgid "Wrong magic number --- RESERVED_17"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_17"
#: lib/ext2fs/ext2_err.c:128
-#, fuzzy
msgid "Wrong magic number --- RESERVED_18"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_18"
#: lib/ext2fs/ext2_err.c:129
-#, fuzzy
msgid "Wrong magic number --- RESERVED_19"
-msgstr "Pixbuf mempunyai bilangan saluran yang salah"
+msgstr "Nombor ajaib yang salah --- RESERVED_19"
#: lib/ext2fs/ext2_err.c:130
-#, fuzzy
msgid "Corrupt extent header"
-msgstr "# Loggokan extent:\n"
+msgstr "Pengepala takat rosak"
#: lib/ext2fs/ext2_err.c:131
-#, fuzzy
msgid "Corrupt extent index"
-msgstr "# Loggokan extent:\n"
+msgstr "Takat indeks rosak"
#: lib/ext2fs/ext2_err.c:132
-#, fuzzy
msgid "Corrupt extent"
-msgstr "# Loggokan extent:\n"
+msgstr "Takat rosak"
#: lib/ext2fs/ext2_err.c:133
msgid "No free space in extent map"
-msgstr ""
+msgstr "Tiada ruang bebas dalam peta takat"
#: lib/ext2fs/ext2_err.c:134
msgid "Inode does not use extents"
-msgstr ""
+msgstr "Inode tidak menggunakan takat"
#: lib/ext2fs/ext2_err.c:135
-#, fuzzy
msgid "No 'next' extent"
-msgstr "# Loggokan extent:\n"
+msgstr "Tiada takat 'seterusnya'"
#: lib/ext2fs/ext2_err.c:136
-#, fuzzy
msgid "No 'previous' extent"
-msgstr "# Loggokan extent:\n"
+msgstr "Tiada takat 'terdahulu'"
#: lib/ext2fs/ext2_err.c:137
-#, fuzzy
msgid "No 'up' extent"
-msgstr "# Loggokan extent:\n"
+msgstr "Tiada takat 'atas'"
#: lib/ext2fs/ext2_err.c:138
-#, fuzzy
msgid "No 'down' extent"
-msgstr "Turun"
+msgstr "Tiada takat 'bawah'"
#: lib/ext2fs/ext2_err.c:139
-#, fuzzy
msgid "No current node"
-msgstr "Tiada corak carian semasa"
+msgstr "Tiada nod semasa"
#: lib/ext2fs/ext2_err.c:140
-#, fuzzy
msgid "Ext2fs operation not supported"
-msgstr "Arahan tidak disokong."
+msgstr "Operasi Ext2fs tidak disokong"
#: lib/ext2fs/ext2_err.c:141
msgid "No room to insert extent in node"
@@ -8052,18 +8002,16 @@ msgid "Splitting would result in empty node"
msgstr ""
#: lib/ext2fs/ext2_err.c:143
-#, fuzzy
msgid "Extent not found"
-msgstr "# Loggokan extent:\n"
+msgstr "Takat tidak dijumpai"
#: lib/ext2fs/ext2_err.c:144
msgid "Operation not supported for inodes containing extents"
msgstr ""
#: lib/ext2fs/ext2_err.c:145
-#, fuzzy
msgid "Extent length is invalid"
-msgstr "panjang konteks `%s' tidak sah"
+msgstr "Panjang takat tidak sah"
#: lib/ext2fs/ext2_err.c:146
msgid "I/O Channel does not support 64-bit block numbers"
@@ -8078,9 +8026,8 @@ msgid "Filesystem too large to use legacy bitmaps"
msgstr ""
#: lib/ext2fs/ext2_err.c:149
-#, fuzzy
msgid "MMP: invalid magic number"
-msgstr "jumlah hujah tidak sah"
+msgstr "MMP: nombor magic tidak sah"
#: lib/ext2fs/ext2_err.c:150
msgid "MMP: device currently active"
@@ -8107,57 +8054,52 @@ msgid "MMP: open with O_DIRECT failed"
msgstr ""
#: lib/ext2fs/ext2_err.c:156
-#, fuzzy
msgid "Block group descriptor size incorrect"
-msgstr " Penghurai kumpulan di"
+msgstr "Saiz huraian kumpulan blok tidak tepat"
#: lib/ext2fs/ext2_err.c:157
msgid "Inode checksum does not match inode"
-msgstr ""
+msgstr "Semakan inode tidak sepadan inode"
#: lib/ext2fs/ext2_err.c:158
msgid "Inode bitmap checksum does not match bitmap"
-msgstr ""
+msgstr "Semakan peta bit inode peta bit tidak sepadan peta bit"
#: lib/ext2fs/ext2_err.c:159
msgid "Extent block checksum does not match extent block"
-msgstr ""
+msgstr "Semakan blok medan tidak sepadan dengan blok medan"
#: lib/ext2fs/ext2_err.c:160
msgid "Directory block does not have space for checksum"
-msgstr ""
+msgstr "Blok direktori tidak mempunyai ruang untuk semakan"
#: lib/ext2fs/ext2_err.c:161
msgid "Directory block checksum does not match directory block"
-msgstr ""
+msgstr "Semakan blok direktori tidak sepadan dengan blok direktori"
#: lib/ext2fs/ext2_err.c:162
msgid "Extended attribute block checksum does not match block"
-msgstr ""
+msgstr "Semakan blok atribut lanjutan tidak sepadan dengan blok"
#: lib/ext2fs/ext2_err.c:163
msgid "Superblock checksum does not match superblock"
-msgstr ""
+msgstr "Pengiraan superblock tidak sepadan superblok"
#: lib/ext2fs/ext2_err.c:164
-#, fuzzy
msgid "Unknown checksum algorithm"
-msgstr "Algoritma hash tidak diketahui."
+msgstr "Algoritma pengiraan tidak diketahui"
#: lib/ext2fs/ext2_err.c:165
-#, fuzzy
msgid "MMP block checksum does not match"
-msgstr "Perkara yang sama bagi hujah pilihan.\n"
+msgstr "Pengiraan bitmap MMP tidak sepadan"
#: lib/ext2fs/ext2_err.c:166
-#, fuzzy
msgid "Ext2 file already exists"
-msgstr "File wujud, TULISGANTI ?"
+msgstr "Fail Ext2 sudah wujud"
#: lib/ext2fs/ext2_err.c:167
-#, fuzzy
msgid "Block bitmap checksum does not match bitmap"
-msgstr "Perkara yang sama bagi hujah pilihan.\n"
+msgstr "Pengiraan bitmap blok tidak padan bitmap"
#: lib/ext2fs/ext2_err.c:168
msgid "Cannot iterate data blocks of an inode containing inline data"
@@ -8180,9 +8122,8 @@ msgid "Extended attribute block has a bad header"
msgstr ""
#: lib/ext2fs/ext2_err.c:173
-#, fuzzy
msgid "Extended attribute key not found"
-msgstr "# Loggokan extent:\n"
+msgstr "Kekunci atribut lanjutan tidak dijumpai"
#: lib/ext2fs/ext2_err.c:174
msgid "Insufficient space to store extended attribute data"
@@ -8194,17 +8135,15 @@ msgstr ""
#: lib/ext2fs/ext2_err.c:176
msgid "Inode doesn't have inline data"
-msgstr ""
+msgstr "Inode tidak mempunyai data sebaris"
#: lib/ext2fs/ext2_err.c:177
-#, fuzzy
msgid "No block for an inode with inline data"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr "Tiada blok untuk inode dengan data sebaris"
#: lib/ext2fs/ext2_err.c:178
-#, fuzzy
msgid "No free space in inline data"
-msgstr "direktori"
+msgstr "Tiada ruang bebas dalam data sebaris"
#: lib/ext2fs/ext2_err.c:179
msgid "Wrong magic number for extended attribute structure"
@@ -8219,73 +8158,52 @@ msgid "Extended attribute has an invalid value offset"
msgstr ""
#: lib/ext2fs/ext2_err.c:182
-#, fuzzy
msgid "Journal flags inconsistent"
-msgstr "jurnal"
+msgstr "Bendera jurnal tidak konsisten"
#: lib/ext2fs/ext2_err.c:183
-#, fuzzy
msgid "Undo file corrupt"
-msgstr "Nyahbuat"
+msgstr "Undur fail yang rosak"
#: lib/ext2fs/ext2_err.c:184
-#, fuzzy
msgid "Wrong undo file for this filesystem"
-msgstr "Penggunaan: %s <fail transaksi> <sistemfail>\n"
+msgstr "Fail undur yang salah untuk sistem fail ini"
#: lib/ext2fs/ext2_err.c:185
-#, fuzzy
msgid "File system is corrupted"
-msgstr ""
-"\n"
-"%s: ***** SISTEM FAIL TELAH DIUBAHSUAI *****\n"
+msgstr "Sistem fail rosak"
#: lib/ext2fs/ext2_err.c:186
msgid "Bad CRC detected in file system"
msgstr ""
#: lib/ext2fs/ext2_err.c:187
-#, fuzzy
msgid "The journal superblock is corrupt"
-msgstr "ketika membaca superblok jurnal"
+msgstr "Superblock jurnal ini rosak"
#: lib/ext2fs/ext2_err.c:188
-#, fuzzy
msgid "Inode is corrupted"
-msgstr ""
-"\n"
-" Jadual inode di"
+msgstr "Inode rosak"
#: lib/ext2fs/ext2_err.c:189
msgid "Inode containing extended attribute value is corrupted"
msgstr ""
#: lib/support/prof_err.c:11
-#, fuzzy
msgid "Profile version 0.0"
-msgstr ""
-"\n"
-"\n"
-"\n"
-"profil mendatar:\n"
+msgstr "Versi profil 0.0"
#: lib/support/prof_err.c:12
msgid "Bad magic value in profile_node"
msgstr ""
#: lib/support/prof_err.c:13
-#, fuzzy
msgid "Profile section not found"
-msgstr "Bahagian Bras"
+msgstr "Seksyen profil tidak dijumpai"
#: lib/support/prof_err.c:14
-#, fuzzy
msgid "Profile relation not found"
-msgstr ""
-"\n"
-"\n"
-"\n"
-"profil mendatar:\n"
+msgstr "Kaitan profil tidak dijumpai"
#: lib/support/prof_err.c:15
msgid "Attempt to add a relation to node which is not a section"
@@ -8325,24 +8243,23 @@ msgstr ""
#: lib/support/prof_err.c:24
msgid "Profile section header not at top level"
-msgstr ""
+msgstr "Profail seksyen pengepala tidak di peringkat tertinggi"
#: lib/support/prof_err.c:25
msgid "Syntax error in profile section header"
-msgstr ""
+msgstr "Ralat sintaks dalam pengepala seksyen profil"
#: lib/support/prof_err.c:26
-#, fuzzy
msgid "Syntax error in profile relation"
-msgstr "ralat sintaks, tidak menjangka %s"
+msgstr "Ralat sintaks dalam kaitan profil"
#: lib/support/prof_err.c:27
msgid "Extra closing brace in profile"
-msgstr ""
+msgstr "Penutup pendakap tambahan dalam profil"
#: lib/support/prof_err.c:28
msgid "Missing open brace in profile"
-msgstr ""
+msgstr "Hilang pembuka pendakap dalam profil"
#: lib/support/prof_err.c:29
msgid "Bad magic value in profile_t"
@@ -8357,23 +8274,20 @@ msgid "Iteration through all top level section not supported"
msgstr ""
#: lib/support/prof_err.c:32
-#, fuzzy
msgid "Invalid profile_section object"
-msgstr "Tetapan pilihan sistemfail tidak sah: %s\n"
+msgstr "Objek profile_section tidak sah"
#: lib/support/prof_err.c:33
-#, fuzzy
msgid "No more sections"
-msgstr "Lagi..."
+msgstr "Tiada lagi seksyen"
#: lib/support/prof_err.c:34
msgid "Bad nameset passed to query routine"
msgstr ""
#: lib/support/prof_err.c:35
-#, fuzzy
msgid "No profile file open"
-msgstr "tidak dapat membuka fail `%s'"
+msgstr "Tiada fail profil dibuka"
#: lib/support/prof_err.c:36
msgid "Bad magic value in profile_file_t"
diff --git a/po/nl.gmo b/po/nl.gmo
index 29031fd9..517931f2 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 2263dd32..dae6e3a0 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,7 +6,7 @@
# lies more in manipulation and cooperation than in exceptional personal skills.»
#
# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008, 2010, 2011, 2012.
-# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014, 2016, 2017, 2018, 2019.
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014, 2016, 2017, 2018, 2019, 2020.
#
# Woordgebruik:
# block -> blok
@@ -96,7 +96,7 @@ msgstr ""
"Project-Id-Version: e2fsprogs-1.45.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-08-01 07:45+0200\n"
+"PO-Revision-Date: 2020-10-18 15:58+0200\n"
"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -1346,6 +1346,8 @@ msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
msgstr ""
+"De functies 'resize_inode' en 'meta_bg' zijn beide actief, maar ze gaan\n"
+"niet samen. Functie 'resize_inode' zou uitgeschakeld moeten worden. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
#: e2fsck/problem.c:530
@@ -1858,13 +1860,13 @@ msgstr "Inode %i heeft de 'EXTENTS_FL'-vlag gezet op een bestandssysteem zonder
#: e2fsck/problem.c:1009
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
-msgstr "Inode %i heeft extent-opmaak, maar superblok heeft EXTENTS-functievlag niet gezet.\n"
+msgstr "Inode %i heeft extent-opmaak, maar superblok heeft EXTENTS-vlag niet gezet.\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
#: e2fsck/problem.c:1015
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
-msgstr "Inode %i heeft extent-opmaak, maar heeft 'EXTENT_FL'-vlag niet gezet.\n"
+msgstr "Inode %i heeft extent-opmaak, maar heeft EXTENT_FL-vlag niet gezet.\n"
#: e2fsck/problem.c:1021
#, no-c-format
@@ -1979,7 +1981,7 @@ msgstr ""
#: e2fsck/problem.c:1113
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
-msgstr "Inode %i bevat inline gegevens, maar superblok heeft INLINE_DATA-functievlag niet gezet.\n"
+msgstr "Inode %i bevat inline gegevens, maar superblok heeft INLINE_DATA-vlag niet gezet.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
#: e2fsck/problem.c:1119
@@ -2110,9 +2112,8 @@ msgstr "Inode %i bevat een ongeldig slecht blok %b met uitgebreide kenmerken. \
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
#: e2fsck/problem.c:1235
-#, fuzzy
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
-msgstr "Inode %i bevat inline gegevens, maar superblok heeft INLINE_DATA-functievlag niet gezet.\n"
+msgstr "Inode %i heeft een ongeldig uitgebreid kenmerk. Uitgebreidkenmerk-inode %N heeft EA_INODE-vlag niet gezet.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
@@ -2242,12 +2243,12 @@ msgstr ""
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
#: e2fsck/problem.c:1381
msgid "@i %i @x tree (at level %b) could be shorter. "
-msgstr ""
+msgstr "Extents-boom van inode %i zou korter kunnen (op niveau %b). "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
#: e2fsck/problem.c:1386
msgid "@i %i @x tree (at level %b) could be narrower. "
-msgstr ""
+msgstr "Extents-boom van inode %i zou smaller kunnen (op niveau %b). "
#. @-expanded: Pass 2: Checking directory structure\n
#: e2fsck/problem.c:1393
@@ -2329,9 +2330,8 @@ msgstr "'i_file_acl' @F is %If, moet nul zijn.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
#: e2fsck/problem.c:1471
-#, fuzzy
msgid "i_size_high @F %Id, @s zero.\n"
-msgstr "'i_fsize' @F is %N, moet nul zijn.\n"
+msgstr "'i_size_high' @F is %Id, moet nul zijn.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
#: e2fsck/problem.c:1476
@@ -2855,14 +2855,13 @@ msgstr ""
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
#: e2fsck/problem.c:1992
-#, fuzzy
msgid "@a @i %i ref count is %N, @s %n. "
-msgstr "Verwijzingsaantal van inode %i is %Il, zou %N moeten zijn. "
+msgstr "Verwijzingsaantal van uitgebreidkenmerk-inode %i is %N, zou %n moeten zijn. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
#: e2fsck/problem.c:1997
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
-msgstr ""
+msgstr "Map overschrijdt maximum aantal koppelingen, maar superblok heeft DIR_NLINK-vlag niet gezet.\n"
#. @-expanded: Pass 5: Checking group summary information\n
#: e2fsck/problem.c:2004
@@ -3021,14 +3020,14 @@ msgid "while doing inode scan"
msgstr "tijdens uitvoering van inode-scan"
#: e2fsck/super.c:224
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_block_iterate for inode %u"
-msgstr "tijdens aanroep van ext2fs_block_iterate() voor inode %d"
+msgstr "tijdens aanroep van ext2fs_block_iterate() voor inode %u"
#: e2fsck/super.c:249
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_adjust_ea_refcount2 for inode %u"
-msgstr "tijdens aanroep van ext2fs_adjust_ea_refcount2() voor inode %d"
+msgstr "tijdens aanroep van ext2fs_adjust_ea_refcount2() voor inode %u"
#: e2fsck/super.c:374
msgid "Truncating"
@@ -3369,12 +3368,11 @@ msgstr ""
#: e2fsck/unix.c:769
msgid "\tea_ver=<ea_version (1 or 2)>\n"
-msgstr ""
+msgstr " ea_ver=<uitgebreidekenmerkenversie (1 of 2)>\n"
#: e2fsck/unix.c:778
-#, fuzzy
msgid "\treadahead_kb=<buffer size>\n"
-msgstr "Ongeldige grootte van vooruitleesbuffer.\n"
+msgstr " readahead_kb=<buffergrootte>\n"
#: e2fsck/unix.c:790
#, c-format
@@ -3463,13 +3461,13 @@ msgid "while checking MMP block"
msgstr "tijdens controleren van MMP-blok"
#: e2fsck/unix.c:1266
-#, fuzzy, c-format
+#, c-format
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp %s'\n"
msgstr ""
-"Als u zeker weet dat het bestandssysteem nergens gebruikt wordt,\n"
-"geef dan deze opdracht: 'tune2fs -f -E clear_mmp {apparaat}'\n"
+"Als u zeker weet dat het bestandssysteem nergens in gebruik is,\n"
+"geef dan deze opdracht: 'tune2fs -f -E clear_mmp %s'\n"
#: e2fsck/unix.c:1282
msgid "while reading MMP block"
@@ -3583,7 +3581,7 @@ msgstr ""
#: e2fsck/unix.c:1613
#, c-format
msgid "%s: Trying to load superblock despite errors...\n"
-msgstr ""
+msgstr "%s: Poging om superblok te laden ondanks fouten...\n"
#: e2fsck/unix.c:1688
msgid "Get a newer version of e2fsck!"
@@ -3630,9 +3628,9 @@ msgid "%s has unsupported feature(s):"
msgstr "Bestandssysteem %s heeft functies ingeschakeld die niet ondersteund worden:"
#: e2fsck/unix.c:1826
-#, fuzzy, c-format
+#, c-format
msgid "%s has unsupported encoding: %0x\n"
-msgstr "Bestandssysteem %s heeft functies ingeschakeld die niet ondersteund worden:"
+msgstr "Bestandssysteem %s heeft een niet-ondersteunde codering: %0x\n"
#: e2fsck/unix.c:1876
#, c-format
@@ -4005,7 +4003,7 @@ msgstr "ongeldige %s: %s"
#: misc/badblocks.c:1136
#, c-format
msgid "Too big max bad blocks count %u - maximum is %u"
-msgstr ""
+msgstr "Te groot aantal (%u) slechte blokken -- maximum is %u"
#: misc/badblocks.c:1163
#, c-format
@@ -4504,9 +4502,9 @@ msgstr ""
"\n"
#: misc/e2image.c:107
-#, fuzzy, c-format
+#, c-format
msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Gebruik: %s [-r|-Q] [-fr] apparaat imagebestand\n"
+msgstr "Gebruik: %s [-r|-Q] [-f] [-b superblok] [-B blokgrootte] apparaat imagebestand\n"
#: misc/e2image.c:110
#, c-format
@@ -4802,9 +4800,11 @@ msgid "Usage: e2label device [newlabel]\n"
msgstr "Gebruik: e2label apparaat [nieuw_label]\n"
#: misc/e2undo.c:124
-#, fuzzy, c-format
+#, c-format
msgid "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> <filesystem>\n"
-msgstr "Gebruik: %s [-f] [-h] [-n] [-v] <transactiebestand> <bestandssysteem>\n"
+msgstr ""
+"Gebruik: %s [-f] [-h] [-n] [-o positie] [-v] [-z ongedaanmakenbestand]\n"
+" <transactiebestand> <bestandssysteem>\n"
#: misc/e2undo.c:149
msgid "The file system superblock doesn't match the undo file.\n"
@@ -5093,7 +5093,7 @@ msgstr "--wachten-- (volgnummer %d)\n"
msgid "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
msgstr ""
"Gebruik: fsck [-AMNPRTV] [-C [descriptor]] [-t bestandssysteemsoort]\n"
-" [bestandssysteemopties] [bestandssysteem...]\n"
+" [bestandssysteemopties] [bestandssysteem...]\n"
#: misc/fsck.c:1127
#, c-format
@@ -5136,22 +5136,28 @@ msgstr "%s: Schrijven naar het journal wordt niet ondersteund.\n"
#: misc/fuse2fs.c:3827
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr ""
+"Waarschuwing: een ongecontroleerd bestandssysteem wordt aangekoppeld;\n"
+"het uitvoeren van 'e2fsck' wordt aangeraden.\n"
#: misc/fuse2fs.c:3831
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr ""
+"Waarschuwing: het maximum aantal aankoppelingen is bereikt;\n"
+"het uitvoeren van 'e2fsck' wordt aangeraden.\n"
#: misc/fuse2fs.c:3836
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr ""
+"Waarschuwing: de controletijd is bereikt;\n"
+"het uitvoeren van 'e2fsck' wordt aangeraden.\n"
#: misc/fuse2fs.c:3840
msgid "Orphans detected; running e2fsck is recommended.\n"
-msgstr ""
+msgstr "Wees-inodes gevonden; het uitvoeren van 'e2fsck' wordt aangeraden.\n"
#: misc/fuse2fs.c:3844
msgid "Errors detected; running e2fsck is required.\n"
-msgstr ""
+msgstr "Fouten gedetecteerd; het uitvoeren van 'e2fsck' wordt aangeraden.\n"
#: misc/lsattr.c:75
#, c-format
@@ -5174,7 +5180,7 @@ msgid "While reading version on %s"
msgstr "Tijdens lezen van versie op %s"
#: misc/mke2fs.c:130
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-c|-l filename] [-b block-size] [-C cluster-size]\n"
"\t[-i bytes-per-inode] [-I inode-size] [-J journal-options]\n"
@@ -5186,12 +5192,14 @@ msgid ""
"\t[-jnqvDFSV] device [blocks-count]\n"
msgstr ""
"Gebruik: %s [-b blokgrootte] [-c|-l bestandsnaam] [-C clustergrootte]\n"
+" [-d hoofdmap] [-e gedrag_bij_fouten] [-E uitgebreide_optie[,...]]\n"
" [-g blokken_per_groep] [-G flexgroepgrootte] [-i bytes_per_inode]\n"
" [-I inode-grootte] [-J journal-opties] [-L label] [-N aantal_inodes]\n"
" [-m percentage_gereserveerde_blokken] [-M laatste_aankoppelingspunt]\n"
-" [-o naam_van_aanmakende_besturingssyteem] [-O functie[,...]] [-U UUID]\n"
-" [-r bestandssysteemversie] [-t bestandssysteemsoort] [-T gebruikstype]\n"
-" [-E uitgebreide_optie[,...]] [-jnqvDFKSV] apparaat [aantal_blokken]\n"
+" [-o naam_van_aanmakende_besturingssyteem] [-O functie[,...]]\n"
+" [-r bestandssysteemversie] [-t bestandssysteemsoort]\n"
+" [-T gebruikstype] [-U UUID] [-z ongedaanmakenbestand]\n"
+" [-jnqvDFKSV] apparaat [aantal_blokken]\n"
#: misc/mke2fs.c:261
#, c-format
@@ -5493,7 +5501,7 @@ msgid "Invalid encoding: %s"
msgstr "Ongeldige codering: %s"
#: misc/mke2fs.c:1087
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"Bad option(s) specified: %s\n"
@@ -5536,12 +5544,13 @@ msgstr ""
" packed_meta_blocks=<0 voor uitschakelen, 1 voor inschakelen>\n"
" lazy_itable_init=<0 voor uitschakelen, 1 voor inschakelen>\n"
" lazy_journal_init=<0 voor uitschakelen, 1 voor inschakelen>\n"
-" root_uid=<UID van hoofdmap>\n"
-" root_gid=<GID van hoofdmap>\n"
+" root_owner=<UID van hoofdmap>:<GID van hoofdmap>\n"
" test_fs\n"
" discard\n"
" nodiscard\n"
-" quotatype=<usr OF grp>\n"
+" encoding=<codering>\n"
+" encoding_flags=<vlaggen>\n"
+" quotatype=<in_te_schakelen_quotatypes>\n"
#: misc/mke2fs.c:1114
#, c-format
@@ -5932,17 +5941,16 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:2449
-#, fuzzy, c-format
+#, c-format
msgid "%d byte inodes are too small for project quota"
-msgstr "inodes van %d bytes zijn te klein voor projectquota -- geef een grotere grootte op"
+msgstr "inodes van %d bytes zijn te klein voor projectquota"
#: misc/mke2fs.c:2465
-#, fuzzy
msgid ""
"The encrypt and casefold features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
msgstr ""
-"De functies 'resize_inode' en 'meta_bg' gaan niet samen.\n"
+"De functies 'encrypt' en 'casefold' gaan niet samen.\n"
"Ze kunnen niet beide ingeschakeld worden.\n"
#: misc/mke2fs.c:2480
@@ -6035,9 +6043,8 @@ msgid "bad error behavior in profile - %s"
msgstr "onjuist foutengedrag gegeven in profile - %s"
#: misc/mke2fs.c:2971
-#, fuzzy
msgid "in malloc for android_sparse_params"
-msgstr "onvoldoende geheugen in bad_blocks_filename()"
+msgstr "onvoldoende geheugen in android_sparse_params()"
#: misc/mke2fs.c:2985
msgid "while setting up superblock"
@@ -6052,9 +6059,8 @@ msgid "64-bit filesystem support is not enabled. The larger fields afforded by
msgstr ""
#: misc/mke2fs.c:3016
-#, fuzzy
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
-msgstr "Superblok 'metadata_csum_seed' is onnodig zonder 'metadata_csum'."
+msgstr "De 'metadata_csum_seed'-functie vereist de 'metadata_csum'-functie.\n"
#: misc/mke2fs.c:3040
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
@@ -6164,9 +6170,8 @@ msgid "Writing superblocks and filesystem accounting information: "
msgstr "Schrijven van superblokken en bestandssysteem-metagegevens: "
#: misc/mke2fs.c:3393
-#, fuzzy
msgid "while writing out and closing file system"
-msgstr "tijdens nulmaken van blok %llu aan het eind van het bestandssysteem"
+msgstr "tijdens schrijven en sluiten van het bestandssysteem"
#: misc/mke2fs.c:3396
msgid ""
@@ -6177,14 +6182,14 @@ msgstr ""
"\n"
#: misc/mk_hugefiles.c:339
-#, fuzzy, c-format
+#, c-format
msgid "while zeroing block %llu for hugefile"
-msgstr "tijdens nulmaken van blok %llu aan het eind van het bestandssysteem"
+msgstr "tijdens nulmaken van blok %llu voor enorm bestand"
#: misc/mk_hugefiles.c:515
#, c-format
msgid "Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
-msgstr ""
+msgstr "Partitiepositie van %llu (%uK) blokken is niet compatibel met clustergrootte %u.\n"
#: misc/mk_hugefiles.c:583
msgid "Huge files will be zero'ed\n"
@@ -6250,6 +6255,8 @@ msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
msgstr ""
+"\n"
+"Deze bewerking vereist een vers-gecontroleerd bestandssysteem.\n"
#: misc/tune2fs.c:121
msgid "Please run e2fsck -f on the filesystem.\n"
@@ -6260,7 +6267,7 @@ msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Controleer het bestandssysteem met 'e2fsck -fD'.\n"
#: misc/tune2fs.c:136
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
"\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
@@ -6272,13 +6279,14 @@ msgid ""
"\t[-I new_inode_size] [-z undo_file] device\n"
msgstr ""
"Gebruik: %s [-c maximum_aantal_aankoppelingen] [-C aankoppelingental]\n"
-" [-e gedrag_bij_fouten] [-E uitgebreide_optie[,...]] [-f] [-g groep]\n"
-" [-i interval[d|w|m]] [-j] [-J journal-opties] [-l] [-L label]\n"
+" [-e gedrag_bij_fouten] [-E uitgebreide_optie[,...]] [-f]\n"
+" [-g groep] [-i interval[d|w|m]] [-I nieuwe_inode-grootte]\n"
+" [-j] [-J journal-opties] [-l] [-L label]\n"
" [-m percentage_gereserveerde_blokken] [-M laatste_aankoppelingspunt]\n"
" [-o [^]aankoppelingsopties[,...]] [-O [^]functie[,...]]\n"
-" [-p MMP-bijwerkingsinterval] [-r aantal_gereserveerde_blokken]\n"
-" [-T tijdstip_van_laatste_controle] [-u gebruiker] [-U UUID]\n"
-" [-I nieuwe_inode-grootte] [-Q quota-opties] apparaat\n"
+" [-Q quota-opties] [-r aantal_gereserveerde_blokken]\n"
+" [-T tijdstip_van_laatste_controle] [-u gebruiker]\n"
+" [-U UUID] [-z ongedaanmakenbestand] apparaat\n"
#: misc/tune2fs.c:223
msgid "Journal superblock not found!\n"
@@ -6695,7 +6703,6 @@ msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Het standaard-hash-algoritme is op %s (%d) gezet\n"
#: misc/tune2fs.c:2151
-#, fuzzy
msgid ""
"\n"
"Bad options specified.\n"
@@ -6724,8 +6731,10 @@ msgstr ""
" clear_mmp\n"
" hash_alg=<hash-algoritme>\n"
" mount_opts=<uitgebreide standaard aankoppelingsopties>\n"
+" mmp_update_interval=<update-interval voor MMP in seconden>\n"
" stride=<aantal blokken dat samen per RAID-schijf wordt gelezen/geschreven>\n"
" stripe_width=<aantal blokken per stripe> (meestal stride × aantal schijven)\n"
+" force_fsck\n"
" test_fs\n"
" ^test_fs\n"
@@ -7235,7 +7244,8 @@ msgid ""
"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] [-S RAID-stride] [-z undo_file]\n"
"\n"
msgstr ""
-"Gebruik: %s [-d debugvlaggen] [-fFMPp] apparaat [-b|-s|nieuwe_grootte] [-S RAID-stride] [-z ongedaanmakenbestand]\n"
+"Gebruik: %s [-d debugvlaggen] [-fFMPp] apparaat [-b|-s|nieuwe_grootte]\n"
+" [-S RAID-stride] [-z ongedaanmakenbestand]\n"
"\n"
#: resize/main.c:73
diff --git a/po/pl.gmo b/po/pl.gmo
index bf9ab7e3..8d510d4a 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index ec39b955..ee80b8a9 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,7 +1,7 @@
# Polish translation for e2fsprogs.
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Theodore Tso (msgids)
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2021 Theodore Tso (msgids)
# This file is distributed under the same license as the e2fsprogs package.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2019.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2021.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -74,10 +74,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.45.3\n"
+"Project-Id-Version: e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-20 17:45+0200\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-02 20:30+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -103,9 +103,9 @@ msgstr "podczas odczytu i-węzła wadliwych bloków"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "podczas próby otworzenia %s"
@@ -128,7 +128,7 @@ msgstr "podczas uaktualniania i-węzła wadliwego bloku"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Uwaga: znaleziono niedopuszczalny blok %u w i-węźle wadliwego bloku. Wyczyszczono.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "podczas zwalniania pliku tdb dir_info"
@@ -160,15 +160,15 @@ msgstr "Błąd przy zapisie bloku %lu (%s) podczas %s. "
msgid "Error writing block %lu (%s). "
msgstr "Błąd przy zapisie bloku %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "puste bloki katalogu"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "pusta mapa katalogu"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Pusty blok katalogu %u (#%d) w i-węźle %u\n"
@@ -178,12 +178,12 @@ msgstr "Pusty blok katalogu %u (#%d) w i-węźle %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s nazwa_pliku liczba_bloków rozmiar_bloku\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Niedopuszczalna liczba bloków!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Nie można przydzielić bufora bloku (rozmiar=%d)\n"
@@ -212,7 +212,7 @@ msgstr "Składnia: %s [-F] [-I bloki_bufora_i-węzłów] urządzenie\n"
msgid "while opening %s for flushing"
msgstr "podczas otwierania %s w celu opróżnienia"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "podczas próby opróżnienia %s"
@@ -249,7 +249,7 @@ msgstr "%s: nie znaleziono poprawnego superbloku kroniki\n"
msgid "%s: journal too short\n"
msgstr "%s: kronika za krótka\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: odtwarzanie z kroniki\n"
@@ -501,113 +501,113 @@ msgstr "nieznany rodzaj limitów"
msgid "multiply claimed inode map"
msgstr "wielokrotnie zadeklarowana mapa i-węzłów"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "błąd wewnętrzny; nie można znaleźć dup_blk dla %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "powrót z clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "błąd wewnętrzny: nie można znaleźć rekordu bloku EA dla %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "Błąd wewnętrzny: nie można znaleźć rekordu i-węzła EA dla %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "podczas haszowania wpisu z e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "odczytu bloku katalogu"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "pobierania następnego i-węzła"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "mapa używanych i-węzłów"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "mapa i-węzłów katalogów"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "mapa i-węzłów zwykłych plików"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "mapa używanych bloków"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "mapa bloków metadanych"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "rozpoczynania przeszukiwania i-węzłów"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "pobierania następnego i-węzła"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Przebieg 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "odczytu niebezpośrednich bloków i-węzła %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "błędna mapa i-węzłów"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "i-węzeł w mapie wadliwych bloków"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "mapa i-węzłów imagic"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "wielokrotnie zadeklarowana mapa bloków"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "mapa bloków rozszerzonych atrybutów"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): oczekiwano %6lu, otrzymano phys %6lu (blkcnt %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "bitmapa bloków"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "bitmapa i-węzłów"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "tablica i-węzłów"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Przebieg 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Nie można kontynuować."
@@ -623,11 +623,11 @@ msgstr "Największe użycie pamięci"
msgid "Pass 3"
msgstr "Przebieg 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "bitmapa wykrywania pętli i-węzłów"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Przebieg 4"
@@ -643,187 +643,195 @@ msgstr "check_inode_bitmap_checksum: błąd przydzielania pamięci"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: błąd przydzielania pamięci"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(bez pytania)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Poprawić"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Wyczyścić"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Przenieść"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Przydzielić"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Rozszerzyć"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Dołączyć do /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Wyczyścić"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Uratować"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Uciąć"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Wyczyścić i-węzeł"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Przerwać"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Podzielić"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Kontynuować"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Sklonować wielokrotnie zadeklarowane bloki"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Usunąć plik"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Pominąć komunikaty"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Odłączyć"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Wyczyścić indeks HTree"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Odtworzyć"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Zoptymalizować"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Wyczyścić flagę"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(NIC)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "POPRAWIONO"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "WYCZYSZCZONO"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "PRZENIESIONO"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "PRZYDZIELONO"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "ROZSZERZONO"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "PODŁĄCZONO"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "UTWORZONO"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "URATOWANO"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "SKRÓCONO"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "I-WĘZEŁ WYCZYSZCZONY"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "PRZERWANO"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "PODZIELONO"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "KONTYNUACJA"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "SKLONOWANO WIELOKROTNIE ZADEKLAROWANE BLOKI"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "PLIK USUNIĘTY"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "POMINIĘTO"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "ODŁĄCZONO"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "INDEKS HTREE WYCZYSZCZONY"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "ZOSTANIE ODTWORZONY"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "ZOSTANIE ZOPTYMALIZOWANE"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "WYCZYSZCZONO FLAGĘ"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "@B @bów dla grupy %g nie jest w grupie. (@b %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "@B i-węzłów dla grupy %g nie jest w grupie. (@b %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -840,7 +848,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -866,7 +874,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -879,7 +887,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -890,18 +898,18 @@ msgstr ""
"@bu.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "W @Su blocks_per_group (bloków w grupie) = %b, powinno być %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "W @Su first_data_block (1. @b danych) = %b, powinien być %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -909,7 +917,7 @@ msgstr ""
"@f nie miał UUID-a; wygenerowano.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -926,48 +934,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Znaleziono uszkodzenia w @Su. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Błąd podczas określania rozmiaru fizycznego urządzenia: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "licznik i-węzłów w @Su wynosi %i, powinien być %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Hurd nie obsługuje własności filetype.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "@S ma błędną kronikę (@i %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Zewnętrzna @j ma wielu użytkowników systemu plików (nie obsługiwane).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Nie można znaleźć zewnętrznej kroniki\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "Zewnętrzna @j ma błędny @S\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Zewnętrzna @j nie obsługuje tego systemu plików\n"
@@ -975,7 +983,7 @@ msgstr "Zewnętrzna @j nie obsługuje tego systemu plików\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -987,80 +995,80 @@ msgstr ""
"Możliwe też, że @S kroniki jest uszkodzony.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "@S kroniki jest uszkodzony.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "flaga @Su has_journal jest wyzerowana, ale @j istnieje.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "@S ma ustawioną flagę needs_recovery, ale nie ma kroniki.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "flaga needs_recovery @Su jest wyzerowana, ale @j zawiera dane.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Wyczyścić kronikę"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "@f ma ustawione flagi właściwości, ale ma wersję 0 systemu plików. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "%s @o @i %i (uid=%Iu, gid=%Ig, uprawnienia=%Im, rozmiar=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "znaleziono @I %B (%b) w @om i-węźle %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Już wyczyszczono %B (%b) znaleziony w @om i-węźle %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "@I @o @i %i w @Su.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "@I @i %i w liście @och i-węzłów.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "@S kroniki ma ustawioną nieznaną flagę tylko do odczytu.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "@S kroniki ma ustawioną flagę nieznanej właściwości.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "Wersja kroniki nie obsługiwana przez ten e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1071,7 +1079,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1083,7 +1091,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1094,12 +1102,12 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Wykonać zapisy z kroniki"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr ""
"Flaga odtworzenia nie ustawiona w zapasowym @Su,\n"
@@ -1107,7 +1115,7 @@ msgstr ""
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1115,7 +1123,7 @@ msgstr "Tworzenie kopii zapasowej informacji z @bu i-węzła kroniki.\n"
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1124,18 +1132,18 @@ msgstr ""
"wynosi %N; @s zero. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_inode nie włączone, ale i-węzeł zmiany rozmiaru jest niezerowy. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "i-węzeł zmiany rozmiaru (resize) nieprawidłowy. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1145,7 +1153,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1154,14 +1162,14 @@ msgstr ""
"\tteraz = %T) jest w przyszłości.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "Podpowiedź @Su dla zewnętrznego superbloku powinna być %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1170,39 +1178,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "Suma kontrolna deskryptora grupy %g to %04x, powinna wynosić %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "Deskryptor grupy %g oznaczony jako nie zainicjowany bez zbioru właściwości.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "Deskryptor grupy %g ma błędną liczbę nie używanych i-węzłów %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "@B @bu ostatniej grupy niezainicjowana. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Transakcja %i kroniki była uszkodzona, odtwarzanie przerwano.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Flags test_fs jest ustawiona (i ext4 jest dostępny). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1213,7 +1221,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1222,103 +1230,103 @@ msgstr ""
"\t(o mniej niż dzień, zapewne z powodu złego ustawienia zegara sprzętowego)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Jeden lub więcej deskryptorów grup bloków jest błędnych. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Ustawianie liczby wolnych i-węzłów na %j (było %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Ustawianie liczby wolnych @bów na %c (było %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Ukrywanie i-węzła @qów %U %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "@S ma błędny blok MMP. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "@S ma błędną liczbę magiczną MMP. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "Pole @Su metadata_csum zastępuje uninit_bg: oba bity właściwości nie mogą być użyte jednocześnie."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "Suma kontrolna @bu MMP @Su nie zgadza się. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "@S 64-bitowych systemów plików wymaga ekstentów do dostępu do całego dysku. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg jest zbyt duże (%N, wartość maksymalna %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "Suma kontrolna superbloku zewnętrznej kroniki nie zgadza się z superblokiem"
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "Pole metadata_csum_seed @Su nie jest potrzebne bez metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Błąd inicjowania kontekstu limitów w bibliotece wspierającej: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Wadliwy dodatkowy wymagany isize w @Su (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Wadliwy dodatkowy pożądany isize w @Su (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "Błędny i-węzeł @q %U %i. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "@S miałby zbyt dużo i-węzłów (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1327,117 +1335,117 @@ msgstr ""
"kompatybilne. Resize_inode powinno być wyłączone. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Przebieg 1: Sprawdzanie i-węzłów, @bów i rozmiarów\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "@r nie jest @diem. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "@r ma ustawiony dtime (zapewne przez stary mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "Zarezerwowany @i %i (%Q) ma błędne uprawnienia. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "@D @i %i ma zerowy dtime. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "@i %i jest używany, ale ma ustawiony dtime. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "@i %i jest @diem @z. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "@B @bów grupy %g w %b jest w konflikcie z innym @biem.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "@B i-węzłów grupy %g w %b jest w konflikcie z innym @biem.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "tablica i-węzłów grupy %g w %b jest w konflikcie z innym @biem.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "@B @bów grupy %g (%b) jest błędna. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "@B i-węzłów grupy %g (%b) jest błędna. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "@i %i, i_size wynosi %Is, @s %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "@i %i, i_blocks wynosi %Ib, @s %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "@I %B (%b) w i-węźle %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) nakłada się na metadane systemu plików w i-węźle %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "@i %i ma niedopuszczalne @bi. "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Za dużo niedopuszczalnych @bów w i-węźle %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "@I %B (%b) w i-węźle wadliwych @bów. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "I-węzeł wadliwych @bów ma niedopuszczalne @bi. "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "Podwójny lub wadliwy @b jest używany!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Wadliwy @b %b jest używany jako niebiezpośredni @b i-węźła z wadliwym @biem. "
@@ -1445,7 +1453,7 @@ msgstr "Wadliwy @b %b jest używany jako niebiezpośredni @b i-węźła z wadliw
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1459,7 +1467,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1470,7 +1478,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1481,121 +1489,121 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Główny @S (%b) jest na liście wadliwych @bów.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Blok %b z deskryptorów głównej grupy jest na liście wadliwych @bów\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Uwaga: w grupie %g @S (%b) jest wadliwy.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Uwaga: kopia deskryptorów grupy %g ma błędny @b (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Błąd programu? @b #%b uznany bez powodu w process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "@A %N ciągłych @bów w grupie @bów %g dla %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "@A bufora @bów do przenoszenia %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Przenoszenie w grupie %g %s z %b do %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Przenoszenie w grupie %g %s do %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Uwaga: nie można odczytać @bu %b z %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Uwaga: nie można zapisać @bu %b do %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "@A bitmapy i-węzłów (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "@A bitmapy i-węzłów (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "@A informacji o liczniku dowiązań (icount): %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "@A tablicy @dch @bów: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Błąd podczas przeszukiwania i-węzłów (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Błąd podczas iteracji po @bach w i-węźle %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Błąd podczas zapisu informacji o liczbie i-węzłów (@i=%i, liczba=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Błąd podczas zapisu informacji o @dch @bach (@i=%i, @b=%b, liczba=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Błąd podczas odczytu i-węzła %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "@i %i ma ustawioną flagę imagic. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1605,143 +1613,143 @@ msgstr ""
"flagę nienaruszalności (immutable) lub dopisywania (append-only). "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "Specjalny (@v/gniazdo/potok/dowiązanie) @i %i ma niezerowy rozmiar. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "@i kroniki nie jest używany, ale zawiera dane. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "@j nie jest zwykłym plikiem. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "@i %i był częścią listy osieroconych i-węzłów. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "Znaleziono i-węzły, które były częścią uszkodzonej listy sierot. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "@A struktury refcount (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Błąd podczas odczytu @bu rozszerzonych atrybutów %b dla i-węzła %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "@i %i ma błędny @b rozszerzonych atrybutów %b. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Błąd podczas odczytu @bu rozszerzonych atrybutów %b (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "@b rozszerzonych atrybutów %b ma liczbę odniesień %r, powinno być %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Błąd podczas zapisu @bu rozszerzonych atrybutów %b (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "@b rozszerzonych atrybutów %b ma h_blocks > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "@A struktury przydzielania regionu rozszerzonych atrybutów. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "@b rozszerzonych atrybutów %b jest uszkodzony (kolizja przydzielania). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "@b rozszerzonych atrybutów %b jest uszkodzony (błędna nazwa). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "@b rozszerzonych atrybutów %b jest uszkodzony (błędna wartość). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "@i %i jest zbyt duży. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) powoduje, że @d jest zbyt duży. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) powoduje, że plik jest zbyt duży. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) powoduje, że dowiązanie jest zbyt duże. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "@i %i ma ustawioną flagę INDEX_FL na systemie plików bez obsługi htree.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "@i %i ma ustawioną flagę INDEX_FL, ale nie jest @diem.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "@h %i ma błędny główny węzeł.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "@h %i ma nie obsługiwaną wersję hasza (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "@h %i używa niekompatybilnej flagi głównego węzła htree.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "@h %i ma zbyt dużą głębokość drzewa (%N)\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1750,55 +1758,55 @@ msgstr ""
"w konflikcie z metadanymi systemu plików. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Tworzenie/odtwarzanie i-węzła zmiany rozmiaru nie powiodło się: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "@i %i ma dodatkowy rozmiar (%IS), co jest błędne\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "@a w i-węźle %i ma namelen (%N), co jest błędne\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "@a w i-węźle %i ma przesunięcie wartości (%N), co jest błędne\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "@a w i-węźle %i ma @b wartości (%N), co jest błędne (musi być 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "@a w i-węźle %i ma rozmiar wartości (%N), co jest błędne\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "@a w i-węźle %i ma hash (%N), co jest błędne\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "@i %i to %It, ale wygląda jakby w rzeczywistości był katalogiem.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Błąd podczas czytania po @xach w i-węźle %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1808,7 +1816,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1818,7 +1826,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1827,31 +1835,31 @@ msgstr ""
"\t(@b logiczny %c, @b fizyczny %b, błędna długość %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "@i %i ma ustawioną flagę EXTENTS_FL na systemie plików bez obsługi ekstentów.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "@i %i ma format z ekstentami, ale w superbloku brakuje właściwości EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "@i %i nie ma flagi EXTENT_FL, ale jest w formacie z ekstentami\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Szybkie dowiązanie symboliczne %i ma ustawioną flagę EXTENT_FL. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1860,39 +1868,39 @@ msgstr ""
"\t(@n @b logiczny %c, @b fizyczny %b, długość %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "@i %i ma błędny węzeł ekstentu (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Błąd podczas przekształcania bitmapy @bów podklastra: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "@i @qów nie jest zwykłym plikiem. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "@i @qów nie jest używany, ale zawiera dane. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "@i @qów jest widoczny dla użytkownika. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "I-węzeł wadliwych @bów wygląda na błędny. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1901,26 +1909,26 @@ msgstr ""
"\t(@n @b logiczny %c, @b fizyczny %b, długość %N)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "@i %i zdaje się zawierać śmieci. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "@i %i przechodzi testy, ale suma kontrolna nie zgadza się z i-węzłem. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "@a i-węzła %i jest uszkodzony (kolizja przydzielania). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1929,13 +1937,13 @@ msgstr ""
"\t(@b logiczny %c, @b fizyczny %b, długość %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "@b rozszerzonych atrybutów i-węzła %i %b przechodzi testy, ale suma kontrolna nie zgadza się z @biem. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1945,7 +1953,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1954,37 +1962,37 @@ msgstr ""
"\t(@b logiczny %c, @b fizyczny %b, długość %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "@i %i ma dane wewnętrzne, ale w @Su brak właściwości INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "@i %i ma flagę INLINE_DATA_FL w systemie plików bez obsługi danych wewnętrznych.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "blok i-węzła %i %b jest w konflikcie z krytycznymi metadanymi, pominięto sprawdzanie bloku.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "Dla i-węzła @du %i @b %b powinien być przy @bu %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "@i @du %i ma @x oznaczony jako niezainicjowany przy @bu %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -1993,14 +2001,14 @@ msgstr ""
"Zostanie poprawiony w przebiegu 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "@i %i ma flagę INLINE_DATA_FL, ale nie znaleziono rozszerzonych atrybutów. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2010,42 +2018,42 @@ msgstr ""
"flagę nienaruszalności (immutable) lub dopisywania (append-only). "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "@i %i ma nagłówek @xu, ale flaga danych wewnętrznych jest ustawiona.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "@i %i wydaje się mieć dane wewnętrzne, ale ustawiona jest flaga @xu.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "@i %i wydaje się mieć mapę @bów, ale ustawione flagi danych wewnętrznych i @xu.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "@i %i ma ustawione flagi danych wewnętrznych i @xu, ale pole i_block zawiera śmieci.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "Lista wadliwych bloków twierdzi, że @i listy wadliwych bloków jest wadliwy. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "@A struktury przydzielania regionu @xu. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2054,46 +2062,46 @@ msgstr ""
"\t(@b logiczny %c, @n @b fizyczny %b, długość %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "@A pamięci dla listy zaszyfrowanych @dów\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "drzewo ekstentów i-węzła %i mogłoby być płytsze (%b; mogłoby być <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "@i %i w systemie plików bigalloc nie może być odwzorowany na @b. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "@i %i ma uszkodzony nagłówek @xu. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Znaczniki czasu w i-węźle %i po 2310-04-04 są prawdopodobnie sprzed 1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "@i %i ma niedopuszczalny i-węzeł wartości rozszerzonego atrybutu %N.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "@i %i ma błędny @a. I-węzeł EA nie ma flagi EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2101,10 +2109,38 @@ msgstr ""
"@i EA %N dla i-węzła rodzica %i nie ma flagi EA_INODE.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "@i %i ma ustawioną flagę casefold, ale nie jest @diem. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"@d %p ma flagę casefold, ale właściwość\n"
+"casefold nie jest włączona. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "@h %i używa wersji hasza (%N), a powinien używać SipHasha (6)\n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "@h %i używa SipHasha, a nie powinien. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2116,46 +2152,46 @@ msgstr ""
"Przebieg 1B: Ponowne przeszukiwanie @mch @bów\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "@m @b(i) w i-węźle %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Błąd podczas szukania i-węzła (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "@A bitmapy i-węzłów (inode_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Błąd podczas iteracji po @bach w i-węźle %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Błąd podczas poprawiania refcount dla @bu rozszerzonych atrybutów %b (@i %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Przebieg 1C: Przeszukiwanie katalogów pod kątem i-węzłów z @mmi @bami\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Przebieg 1D: Uzgadnianie @mch @bów\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2164,18 +2200,18 @@ msgstr ""
" ma %r @mch @bów, dzielonych z %N plikami:\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (@i #%i, czas modyfikacji %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<metadane systemu plików>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2185,7 +2221,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2193,345 +2229,345 @@ msgstr ""
"Podwójnie zadeklarowane @bi już przepisane lub sklonowane.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Nie można sklonować pliku: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Przebieg 1E: Optymalizacja drzew @xów\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Nie udało się zoptymalizować drzewa @xów %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optymalizacja drzew @xów: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Błąd wewnętrzny: zbut duża głębokość maksymalna drzewa ekstentów (%b; oczekiwana=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "drzewo @xów i-węzła %i (na poziomie %b) mogłoby być krótsze. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "drzewo @xów i-węzła %i (na poziomie %b) mogłoby być węższe. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Przebieg 2: Sprawdzanie struktury @dów\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "Błędny numer i-węzła dla '.' w i-węźle @du %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "@E ma błędny numer i-węzła: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "@E ma @D/nie używany @i %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "@E @L do '.' "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "@E wskazuje na @i (%Di) położony w wadliwym @b.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "@E @L do @du %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "@E @L do głównego katalogu.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "@E ma niedopuszczalne znaki w nazwie.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "Brakuje '.' w i-węźle @du %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "Brakuje '..' w i-węźle @du %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "Pierwszym @eem '%Dn' (@i=%Di) w i-węźle @du %i (%p) @s '.'\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "Drugim @eem '%Dn' (@i=%Di) w i-węźle @du %i @s '..'\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr @F %IF, @s zero.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl @F %If, @s zero.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high @F %Id, @s zero.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag @F %N, @s zero.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize @F %N, @s zero.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "@i %i (%Q) ma błędne uprawnienia (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "@i @du %i, %B, offset %N: @d uszkodzony\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "@i @du %i, %B, offset %N: nazwa pliku zbyt długa\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "@i @du %i ma nie przydzielony %B. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "@e @du '.' w i-węźle @du %i nie jest zakończony przez NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "@e @du '..' w i-węźle @du %i nie jest zakończony przez NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "@i %i (%Q) jest @Im @vm znakowym.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "@i %i (%Q) jest @Im @vm @bowym.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "@E jest powielonym @eem '.'.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "@E jest powielonym @eem '..'.\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Błąd wewnętrzny: nie można znaleźć dir_info dla %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "@E ma rec_len %Dr, @s %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "@A struktury icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Błąd podczas iteracji po @bach @du: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Błąd podczas odczytu @b %b @du (@i %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Błąd podczas zapisu @b %b @du (@i %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "@A nowego @bu @du dla i-węzła %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Błąd podczas zwalniania i-węzła %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "@e @du dla '.' w %p (%i) jest duży.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "@i %i (%Q) jest @Im FIFO.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "@i %i (%Q) jest @Im gniazdem.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Ustawiono filetype dla @eu '%Dn' w %p (%i) na %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "@E ma błędny filetype (był %Dt, powinien być %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "@E ma ustawione filetype.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "@E ma nazwę zerowej długości.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Dowiązanie symboliczne %Q (@i #%i) jest błędne.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "@b rozszerzonych atrybutów dla i-węzła %i (%Q) jest błędny (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "@f zawiera duże pliki, ale brak flagi LARGE_FILE w @Su.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "@p i-węźle @du HTREE %d: %B nie ma odwołań\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "@p i-węźle @du HTREE %d: %B ma podwójne odwołanie\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "@p i-węźle @du HTREE %d: %B ma błędny minimalny hasz\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "@p i-węźle @du HTREE %d: %B ma błędny maksymalny hasz\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "Błędne @h %d (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "@p i-węźle @du HTREE %d (%q): błędny numer @bu %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "@p i-węźle @du HTREE %d: główny węzeł jest błędny\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "@p i-węźle @du HTREE %d: %B ma błędny limit (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "@p i-węźle @du HTREE %d: %B ma błędny licznik (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "@p i-węźle @du HTREE %d: %B ma nie uporządkowaną tablicę haszującą\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "@p i-węźle @du HTREE %d: %B ma błędną głębokość (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "Znaleziono podwójny @E. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2543,7 +2579,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2554,155 +2590,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi @F %N, @s zero.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Nieoczekiwany @b w i-węźle @du HTREE %d (%q)\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "@i %Di znaleziony w grupie %g, która ma ustawioną flagę _INONE_UNINIT.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "@i %Di znaleziony w grupie %g obszaru nie używanych i-węzłów.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi @F %N, @s zero.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "@p i-węźle @du HTREE %d: główny węzeł ma błędną sumę kontrolną.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "@p i-węźle @du HTREE %d: wewnętrzny węzeł ma błędną sumę kontrolną.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "@i @du %i, %B, offset %N: @d nie ma sumy kontrolnej.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "@i @du %i, %B: @d przechodzi testy, ale ma błędną sumę kontrolną.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "Rozmiar i-węzła @du wewnętrznego %i (%N) musi być wielokrotnością 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Poprawienie rozmiaru i-węzła @du wewnętrznego %i nie powiodło się.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "Szyfrowany @E jest zbyt krótki.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Znaleziono podwójną nazwę pliku @E. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Przebieg 3: Sprawdzanie łączności @dów\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "@r jest nie przydzielony. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "Brak miejsca w @du @l. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "Nie podłączony @i @du %i (%p)\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "Nie znaleziono /@l. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "'..' w %Q (%i) jest %P (%j), @s %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "Błędny lub nie istniejący /@l. Nie można podłączyć.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Nie można rozszerzyć /@l: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Nie można podłączyć %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Błąd podczas szukania /@l: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_block: %m podczas próby utworzenia @du /@l\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_inode: %m podczas próby utworzenia @du /@l\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block: %m podczas tworzenia nowego @bu @du\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_block: %m podczas zapisu @bu @du dla /@l\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Błąd podczas poprawiania liczby i-węzłów w i-węźle %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2713,7 +2754,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2723,41 +2764,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Błąd podczas tworzenia głównego @du (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Błąd podczas tworzenia @du /@l (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "@r nie jest @diem; przerwanie.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Nie można kontynuować bez głównego katalogu.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/@l nie jest @diem (@i=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/@l ma dane wewnętrzne\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2768,7 +2809,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2779,52 +2820,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/@l jest zaszyfrowany\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Przebieg 3A: Optymalizacja katalogów\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Tworzenie iteratora dirs_to_hash nie powiodło się: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Optymalizacja katalogu %q (%d) nie powiodła się: %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Optymalizacja katalogów: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Przebieg 4: Sprawdzanie liczników odwołań\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "@u @i @z %i. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "@u @i %i\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "licznik odwołań i-węzła %i wynosi %Il, @s %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2835,146 +2876,151 @@ msgstr ""
"inode_link_info[%i]=%N, inode.i_links_count=%Il. Powinny być takie same!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "Licznik odwołań i-węzła rozszerzonych atrybutów %i wynosi %N, @s %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "@d przekracza maksymalną liczbę dowiązań, ale brak cechy DIR_NLINK w @Su.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "Licznik odwołań i-węzła @du %i ustawiony na przepełnienie, a powinien być równy %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Przebieg 5: Sprawdzanie sumarycznych informacji o @gch\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Wypełnienie na końcu bitmapy i-węzłów nie jest ustawione. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Wypełnienie na końcu bitmapy @bów nie jest ustawione. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "Różnice bitmapy @bów: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "Różnice bitmapy i-węzłów: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Błędna liczba wolnych i-węzłów dla grupy #%g (%i, naliczono %j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Błędna liczba katalogów dla grupy #%g (%i, naliczono %j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Błędna liczba wolnych i-węzłów (%i, naliczono %j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Błędna liczba wolnych @bów dla grupy #%g (%b, naliczono %c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Błędna liczba wolnych @bów (%b, naliczono %c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "BŁĄD PROGRAMU: końce bitmap systemu plików (#%N) (%b, %c) nie zgadzają się z policzonymi końcami bitmap (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Błąd wewnętrzny: fałszywy koniec bitmapy (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Błąd podczas kopiowania w zastępczej bitmapie i-węzłów: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Błąd podczas kopiowania w zastępczej bitmapie @bów: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "@b(i) grupy %g są używane, ale @g ma flagę BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "i-węzły grupy %g są używane, ale @g ma flagę INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "@B i-węzłów grupy %g nie zgadza się z sumą kontrolną.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "@B @bów grupy %g nie zgadza się z sumą kontrolną.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Odtworzyć kronikę"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Uaktualnić informacje o limitach typu %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Błąd podczas ustawiania informacji o sumie kontrolnej grupy bloków: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Błąd podczas zapisu informacji o systemie plików: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Błąd podczas zrzucania zapisów na urządzenie przechowujące: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Błąd podczas zapisu informacji o limitach typu %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Nie obsłużony kod błędu (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "ZIGNOROWANO"
@@ -2984,8 +3030,8 @@ msgstr "w move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Użyta pamięć: %d, upłynął czas: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Użyta pamięć: %lu, upłynął czas: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3227,8 +3273,8 @@ msgstr[0] "%12u plik\n"
msgstr[1] "%12u pliki\n"
msgstr[2] "%12u plików\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "podczas sprawdzania, czy %s jest zamontowany."
@@ -3401,7 +3447,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "Opcja -t nie jest obsługiwana przez tę wersję e2fsck.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Nie udało się rozwiązać '%s'"
@@ -3473,8 +3519,8 @@ msgid "while reading MMP block"
msgstr "podczas odczytu bloku MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3485,13 +3531,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "podczas próby usunięcia %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "podczas próby utworzenia pliku cofnięcia (undo)\n"
@@ -3583,70 +3629,70 @@ msgstr "%s: Próba załadowania superbloku mimo błędów...\n"
msgid "Get a newer version of e2fsck!"
msgstr "Potrzeba nowszej wersji e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "podczas sprawdzania kroniki dla %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Nie można kontynuować sprawdzania systemu plików"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr ""
"Uwaga: pominięto odtwarzanie z kroniki z powodu sprawdzania w trybie tylko\n"
"do odczytu.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "nie można ustawić flag superbloku na %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Napotkano błąd sumy kontrolnej kroniki w %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Uszkodzona kronika w %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "podczas odtwarzania kroniki dla %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s ma włączone nie obsługiwane właściwości:"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s ma nie obsługiwane kodowanie: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s podczas odczytu i-węzła wadliwych bloków\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Nie wróży to dobrze, ale spróbuję kontynuować...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Tworzenie kroniki (%d bloków): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Wykonano.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3654,24 +3700,24 @@ msgstr ""
"\n"
"*** kronika została zregenerowana ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "przerwano"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck przerwany.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Restart e2fsck od początku...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "podczas resetowania kontekstu"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3680,12 +3726,12 @@ msgstr ""
"\n"
"%s: ***** BŁĘDY SYSTEMU PLIKÓW NAPRAWIONE *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: System plików został zmodyfikowany.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3694,12 +3740,12 @@ msgstr ""
"\n"
"%s: ***** SYSTEM PLIKÓW ZMODYFIKOWANY *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** WYMAGANY RESTART SYSTEMU *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3710,51 +3756,51 @@ msgstr ""
"%s: ********** UWAGA: System plików nadal ma błędy **********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "tTyY"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "wWaA"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " ('w' włącza 'tak' na wszystko) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<t>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (t/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "anulowano!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "tak na wszystko\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "tak\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "nie\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3763,7 +3809,7 @@ msgstr ""
"%s? nie\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3772,38 +3818,38 @@ msgstr ""
"%s? tak\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "tak"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "nie"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: niedopuszczalne bloki bitmapy dla %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "odczytu bitmap i-węzłów i bloków"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "podczas ponawiania próby odczytu bitmap dla %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "zapisu bitmap bloków i i-węzłów"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "podczas ponownego zapisu bitmap blików i i-węzłów dla %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3816,37 +3862,37 @@ msgstr ""
"%s: NIEOCZEKIWANA NIESPÓJNOŚĆ; TRZEBA URUCHOMIĆ fsck RĘCZNIE.\n"
"\t(tzn. bez opcji -a ani -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Użyta pamięć: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Użyta pamięć: %lluk/%lluk (%lluk/%lluk), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Użyta pamięć: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Użyta pamięć: %lluk, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "czas: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
-msgstr "upłynął czas: %6.f\n"
+msgstr "upłynął czas: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "podczas odczytu i-węzła %lu w %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "podczas zapisu i-węzła %lu w %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "NIEOCZEKIWANA NIESPÓJNOŚĆ: system plików został zmodyfikowany podczas działania fsck.\n"
@@ -4058,68 +4104,68 @@ msgstr "Przebieg zakończony, znaleziono %u wadliwych bloków (błędów: %d/%d/
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Składnia: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v wersja] pliki...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Składnia: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v wersja] pliki...\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "błędny projekt - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "błędna wersja - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "podczas próby stat %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "podczas odczytu flag %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Flagi %s ustawiono jako "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "podczas ustawiania flag %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Wersja %s ustawiona jako %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "podczas ustawiania wersji %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Projekt %s ustawiony na %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "podczas ustawiania projektu %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Nie można przydzielić zmiennej path w chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= jest niekompatybilne z - i +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Trzeba użyć '-v', =, - lub +\n"
@@ -4128,8 +4174,8 @@ msgstr "Trzeba użyć '-v', =, - lub +\n"
msgid "while reading inode %u"
msgstr "podczas odczytu i-węzła %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "podczas rozszerzania katalogu"
@@ -4138,143 +4184,147 @@ msgstr "podczas rozszerzania katalogu"
msgid "while linking \"%s\""
msgstr "podczas dowiązywania \"%s\""
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "podczas zapisu i-węzła %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "podczas wypisywania atrybutów \"%s\""
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "podczas otwierania i-węzła %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "podczas przydzielania pamięci"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "podczas odczytu atrubytu \"%s\" dla \"%s\""
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "podczas zapisu atrybutu \"%s\" do i-węzła %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "podczas zamykania i-węzła %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "podczas przydzielania i-węzła \"%s\""
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "podczas tworzenia i-węzła \"%s\""
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "podczas tworzenia dowiązania symbolicznego \"%s\""
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "podczas szukania \"%s\""
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "podczas tworzenia katalogu \"%s\""
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "podczas otwierania \"%s\" w celu skopiowania"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "podczas zmiany katalogu roboczego na \"%s\""
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "podczas skanowania katalogu \"%s\""
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "podczas wykonywania lstat na \"%s\""
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "podczas tworzenia pliku specjalnego \"%s\""
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "malloc nie powiodło się"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "podczas próby odczytu dowiązania \"%s\""
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "dowiązanie symboliczne zwiększyło rozmiar między lstat() a readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "podczas zapisu dowiązania symbolicznego \"%s\""
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "podczas zapisu pliku \"%s\""
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "podczas tworzenia katalogu \"%s\""
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "podczas zmiany katalogu"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ignorowanie wpisu \"%s\""
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "podczas ustawiania i-węzła dla \"%s\""
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "podczas ustawiania rozszerzonych atrybutów dla \"%s\""
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "podczas zapisywania danych i-węzła"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "podczas kopiowania atrybutów rozszerzonych katalogu głównego"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4396,7 +4446,7 @@ msgstr "podczas wypisywania listy wadliwych bloków"
msgid "Bad blocks: %u"
msgstr "Wadliwe bloki: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "podczas odczytu i-węzła kroniki"
@@ -4412,7 +4462,7 @@ msgstr "podczas odczytu superbloku kroniki"
msgid "Journal superblock magic number invalid!\n"
msgstr "Błędna liczba magiczna superbloku kroniki!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "podczas odczytu superbloku kroniki"
@@ -4420,30 +4470,30 @@ msgstr "podczas odczytu superbloku kroniki"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Nie można znaleźć magicznych liczb superbloku kroniki"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "nie udało się przydzielić bufora MMP\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "podczas odczytu bloku MMP %llu z '%s'\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Nie można przydzielić pamięci do analizy opcji!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Błędny parametr superblock: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Błędny parametr blocksize: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4466,27 +4516,27 @@ msgstr ""
"\tsuperblock=<numer superbloku>\n"
"\tblocksize=<rozmiar bloku>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tUżywane %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Nie można znaleźć poprawnego superbloku systemu plików.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: cecha MMP nie jest włączona.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "podczas próby odczytu bitmap '%s'\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4496,8 +4546,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Składnia: %s [ -r|Q ] [ -f ] [ -b superblok ] [ -B rozm_bloku ] [ -fr ] urządzenie plik_obrazu\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Składnia: %s [ -r|Q ] [ -f ] [ -b superblok ] [ -B rozm_bloku ] urządzenie plik_obrazu\n"
#: misc/e2image.c:110
#, c-format
@@ -4506,8 +4556,8 @@ msgstr " %s -I urządzenie plik_obrazu\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cnfp ] [ -o offset_źr ] [ -O offset_doc ] fs_źr [ fs_doc ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o offset_źr ] [ -O offset_doc ] fs_źr [ fs_doc ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4766,7 +4816,7 @@ msgstr "e2label: błąd podczas odczytu superbloku\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: to nie jest system plików ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Uwaga: etykieta za długa, skrócono.\n"
@@ -4781,7 +4831,7 @@ msgstr "e2label: nie można przejść ponownie do superbloku\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: błąd podczas zapisu superbloku\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Składnia: e2label urządzenie [nowa-etykieta]\n"
@@ -4984,7 +5034,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "offset_b pocz_b koniec_b bloki_fs rozmb grp mkfs/czas_mont sb_uuid etykieta\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5089,51 +5139,51 @@ msgstr "%s: za dużo urządzeń\n"
msgid "%s: too many arguments\n"
msgstr "%s: za dużo parametrów\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Montowanie tylko do odczytu.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Zezwolenie użytkownikom na przydzielenie wszystkich bloków. To niebezpieczne!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Proszę uruchomić e2fsck -fy %s.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Kronika wymaga odtworzenia; wymagane uruchomienie `e2fsck -E journal_only'.\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: Zapis do kroniki nie jest obsługiwany.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Uwaga: Montowanie nie sprawdzonego systemu plików, zalecane jest uruchomienie e2fsck.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Uwaga: Osiągnięto maksymalną liczbę montowań, zalecane jest uruchomienie e2fsck.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Uwaga: Osiągnięto czas sprawdzenia; zalecane jest uruchomienie e2fsck.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Wykryto sieroty; zalecane jest uruchomienie e2fsck.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Wykryto błędy; konieczne jest uruchomienie e2fsck.\n"
@@ -5238,7 +5288,7 @@ msgstr ""
"\n"
"Nie udało się zapisać %d bloków w tablicy i-węzłów począwszy od %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "zakończono \n"
@@ -5302,12 +5352,12 @@ msgstr "podczas zerowania urządzenia kroniki (blok %llu, liczba %d)"
msgid "while writing journal superblock"
msgstr "podczas zapisu superbloku kroniki"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "Tworzenie systemu plików o %llu blokach %dk oraz %u i-węzłach\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5316,164 +5366,164 @@ msgstr ""
"uwaga: %llu bloków nie używanych.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Etykieta systemu plików=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Etykieta systemu plików=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Typ OS: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Rozmiar bloku=%u (log=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Rozmiar klastra=%u (log=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Rozmiar fragmentu=%u (log=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Stride=%u bloków, szerokość Stripe=%u bloków\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u i-węzłów, %llu bloków\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu bloków (%2.2f%%) zarezerwowanych dla superużytkownika\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "Pierwszy blok danych=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Właściciel głównego katalogu=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Maksymalna liczba bloków systemu plików=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u grup bloków\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u grupa bloków\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u bloków w grupie, %u klastrów w grupie\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u bloków w grupie, %u fragmentów w grupie\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u i-węzłów w grupie\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID systemu plików: %s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Kopie zapasowe superbloku zapisane w blokach: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s wymaga '-O 64bit'\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "'%s' musi być przed 'resize=%u'\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "Błędny desc_size: '%s'\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Błędny zarodek haszowania: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Błędny offset: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "Błędny okres uaktualniania mmp: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Błędna liczba kopii zapasowych superbloku: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Błędny parametr stride: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Błędny parametr stripe-width: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Błędny parametr resize: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "Maksymalny rozmiar (resize) musi być większy od rozmiaru systemu plików.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "Zmiana rozmiaru w locie nie jest obsługiwana przez systemy plików w wersji 0\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "Błędny root_owner: '%s'\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Błędne kodowanie: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5526,7 +5576,7 @@ msgstr ""
"\tquotatype=<rodzaj(e) limitów do włączenia>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5537,17 +5587,17 @@ msgstr ""
"Uwaga: RAID stripe-width %u nie jest parzystą wielokrotnością stride %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "błąd: Błędna flaga kodowania: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "błąd: W przypadku podawania flag kodowania trzeba podać bezpośrednio kodowanie\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5556,17 +5606,17 @@ msgstr ""
"Błąd składni w pliku konfiguracyjnym mke2fs (%s, linia %d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Ustawiona błędna opcja systemu plików: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Ustawiona błędna opcja montowania: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5575,7 +5625,7 @@ msgstr ""
"\n"
"Uwaga! Plik mke2fs.conf nie określa typu systemu plików %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5583,11 +5633,11 @@ msgstr ""
"Prawdopodobnie trzeba zainstalować uaktualniony plik mke2fs.conf.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Przerwano...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5598,146 +5648,146 @@ msgstr ""
"Uwaga: typ systemu plików %s nie jest zdefiniowany w mke2fs.conf\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Nie udało się przydzielić pamięci na nową PATH\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Nie udało się poprawnie zainicjować profilu (błąd: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "błędny rozmiar bloku - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Uwaga: rozmiar bloku %d nie używalny na większości systemów.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "błędny rozmiar klastra - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "'-%' jest przestarzałe, zamiast niego należy używać '-E'"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "błędne traktowanie błędów - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Błędna liczba bloków w grupie"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "liczba bloków w grupie musi być wielokrotnością 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Niedopuszczalny rozmiar flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "rozmiar flex_bg musi być potęgą 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "rozmiar flex_bg (%lu) musi być mniejszy lub równy 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "błędny stosunek i-węzłów %s (min %d/max %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "błędny rozmiar i-węzła - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Uwaga: opcja -K jest przestarzała i nie powinna już być używana. Zamiast niej należy użyć opcji rozszerzonej '-E nodiscard'.\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "w malloc dla bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr "Uwaga: etykieta za długa; zostanie skrócona do '%s'\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "błędny procent zarezerwowanych bloków - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "błędna liczba i-węzłów - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "podczas przydzielania łańcucha fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "błędny poziom wersji - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "tpodczas próby utworzenia rewizji %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "Opcja -t może być użyta tylko raz"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "Opcja -T może być użyta tylko raz"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "podczas próby otwarcia urządzenia kroniki %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "Rozmiar bloku urządzenia z kroniką (%d) mniejszy od minimalnego %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Użycie rozmiaru bloku urządzenia kroniki: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "błędna liczba bloków '%s' na urządzeniu '%s'"
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "system plików"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "podczas próby określenia rozmiaru systemu plików"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5745,7 +5795,7 @@ msgstr ""
"Nie można określić rozmiaru urządzenia; rozmiar systemu\n"
"plików musi być podany\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5757,48 +5807,48 @@ msgstr ""
"\tfdiska z powodu zajętej modyfikowanej partycji. Ponowny odczyt\n"
"\ttablicy partycji może wymagać rebootu.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "System plików większy od widocznego rozmiaru urządzenia."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Nie udało się przeanalizować listy typów systemów plików\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "HURD nie obsługuje właściwości filetype.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "HURD nie obsługuje właściwości huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "HURD nie obsługuje właściwości metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "HURD nie obsługuje właściwości ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "podczas próby określenia rozmiaru sprzętowego sektora"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "podczas próby określenia rozmiaru sektora fizycznego"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "podczas ustawiania rozmiaru bloku; zbyt mały dla urządzenia\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Uwaga: podany rozmiar bloku %d jest mniejszy niż rozmiar sektora fizycznego %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5807,7 +5857,7 @@ msgstr ""
"%s: Rozmiar urządzenia (0x%llx bloków) %s jest zbyt duży, aby wyrazić go\n"
"\tw 32 bitach przy użyciu rozmiaru bloku %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5816,80 +5866,85 @@ msgstr ""
"%s: Rozmiar urządzenia (0x%llx bloków) %s jest zbyt duży, aby utworzyć\n"
"\tsystem plików przy użyciu rozmiaru bloku %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "Rozwinięcie fs_types dla mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "Właściwości systemu plików nie obsługiwane przez systemy plików w wersji 0\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Rzadkie superbloki nie są obsługiwane przez systemy plików w wersji 0\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Kroniki nie są obsługiwane przez systemy plików w wersji 0\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "błędny procent zarezerwowanych bloków - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Ekstenty MUSZĄ być włączone dla 64-bitowego systemu plików. Aby to poprawić, należy przekazać -O extents.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "Rozmiar klastra nie może być mniejszy niż rozmiar bloku.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "określenie rozmiaru klastra wymaga własności bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "uwaga: nie udało się odczytać geometrii urządzenia dla %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "Wyrównanie %s jest przesunięte o %lu bajtów.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Może to powodować bardzo niską wydajność, zalecane jest (prze)partycjonowanie.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s obsługuje DAX, ale bieżący rozmiar bloku %u jest inny niż rozmiar strony systemowej %u, więc system plików nie będzie obsługiwał DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "%d-bajtowe bloki są zbyt duże dla systemu (max %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "Uwaga: %d-bajtowe bloki są zbyt duże dla systemu (max %d), wymuszono kontynuację\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Sugestia: jądro Linuksa >= 3.18 daje lepszą stabilność metadanych oraz sumy kontrolne kroniki.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Nieznane kodowanie nazw plików z profilu: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Nieznane flagi kodowania z profilu: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5903,24 +5958,16 @@ msgstr ""
"Tworzenie systemu plików o %llu blokach, ale być może nie o to chodziło.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "i-węzły %d-bajtowe są zbyt małe dla limitów projektu"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Właściwości encrypt i casefold nie są kompatybilne.\n"
-"Nie można ich włączyć jednocześnie.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "Obsługa własności bigalloc jest niemożliwa bez własności extents"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5928,7 +5975,7 @@ msgstr ""
"Właściwości resize_inode i meta_bg nie są kompatybilne.\n"
"Nie można ich włączyć jednocześnie.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5940,39 +5987,39 @@ msgstr ""
"Więcej informacji pod https://ext4.wiki.kernel.org/index.php/Bigalloc\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "zarezerwowane bloki do zmiany rozmiaru w locie nie obsługiwane na nieciągłym systemie plików"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "liczba bloków w grupie spoza zakresu"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "Właściwość flex_bg nie jest włączona, więc nie można określić rozmiaru flex_bg"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "błędny rozmiar i-węzła %d (min %d/max %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "i-węzły %d-bajtowe są zbyt małe dla danych wewnętrznych; proszę podać większy rozmiar"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "zbyt dużo i-węzłów (%llu), zwiększyć współczynnik i-węzłów?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "zbyt dużo i-węzłów (%llu), należy podać < 2^32"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5983,65 +6030,65 @@ msgstr ""
"\tplików o liczbie bloków %llu, należy podać większy współczynnik (-i)\n"
"\tlub mniejszą liczbę i-węzłów (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Porzucanie bloków urządzenia: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "nie powiodło się - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "podczas inicjowania kontekstu limitów"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "podczas zapisu i-węzłów limitów"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "błędne traktowanie błędów w profilu - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "w malloc dla android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "podczas ustawiania superbloku"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Ekstenty nie są włączone. Drzewo ekstenów plików może mieć sumy kontrolne, a mapy bloków nie. Niewłączenie ekstentów zmniejsza pokrycie sum kontrolnych metadanych. Aby to poprawić, należy dodać opcję -O extents.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "Obsługa 64-bitowego systemu plików nie jest włączona. Większe pola dostarczane przez tę właściwość pozwalają na silniejsze sumy kontrolne. Aby to poprawić, należy dodać opcję -O 64bit.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "Właściwość metadata_csum_seed wymaga właściwości metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "Czyszczenie się powiodło i będzie zwracać zera - pominięto czyszczenie tablicy i-węzłów\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "nieznany os - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Przydzielanie tablicy grup: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "podczas próby przydzielenia tablic systemu plików"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6049,30 +6096,30 @@ msgstr ""
"\n"
"\tpodczas próby przekształcenia bitmapy podklastrów"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s może być bardziej uszkodzony poprzez nadpisanie superbloku\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "podczas zerowania bloku %llu na końcu systemu plików"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "podczas rezerwowania bloków na zmianę rozmiaru w locie"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "kronika"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Dodano kronikę do urządzenia %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6081,21 +6128,21 @@ msgstr ""
"\n"
"\tpodczas próby dodania kroniki do urządzenia %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "wykonano\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "Pominięto tworzenie kroniki w trybie super-only\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Tworzenie kroniki (%u bloków): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6103,7 +6150,7 @@ msgstr ""
"\n"
"\tpodczas próby utworzenia kroniki"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6111,28 +6158,28 @@ msgstr ""
"\n"
"Błąd podczas włączania funkcji zabezpieczenia przed wielokrotnym montowaniem."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "Zabezpieczenie przed wielokrotnym montowaniem jest włączone z okresem uaktualniania %d sekund.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Kopiowanie plików na urzędzenie: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "podczas zapełniania systemu plików"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Zapis superbloków i podsumowania systemu plików: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "podczas zapisu i zamykania systemu plików"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6208,7 +6255,7 @@ msgstr "Nie można pobrać rozmiaru %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d początek=%8d rozmiar=%8lu koniec=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6216,15 +6263,15 @@ msgstr ""
"\n"
"Ta operacja wymaga świeżo sprawdzonego systemu plików.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Proszę uruchomić e2fsck -f na systemie plików.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Proszę uruchomić e2fsck -fD na systemie plików.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6245,20 +6292,20 @@ msgstr ""
"\t[-E opcja_rozszerzona[,...]] [-T czas_ost._sprawdz.] [-U UUID]\n"
"\t[-I nowy_rozmiar_i-węzła] [-z plik_undo] urządzenie\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Nie znaleziono superbloku kroniki!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "podczas próby otworzenia zewnętrznej kroniki"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s nie jest urządzeniem kroniki.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6267,11 +6314,11 @@ msgstr ""
"Superblok kroniki jest uszkodzony, nr_users\n"
"jest zbyt duże (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "UUID systemu plików nie znaleziony na urządzeniu kroniki.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6279,52 +6326,52 @@ msgstr ""
"Nie można zlokalizować urządzenia kroniki. NIE zostało usunięte.\n"
"Można użyć opcji -f, aby usunąć nieistniejące urządzenie kroniki.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Kronika usunięta\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "podczas odczytu bitmap"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "podczas czyszczenia i-węzła kroniki"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "podczas zapisu i-węzła kroniki"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(proszę zrestartować potem system!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Po uruchomieniu e2fsck proszę uruchomić `resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Proszę uruchomić `resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "', aby włączyć tryb 64-bitowy.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "', aby wyłączyć tryb 64-bitowy.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6332,17 +6379,17 @@ msgstr ""
"UWAGA: nie udało się upewnić co do obsługi właściwości metadata_csum_seed w jądrze.\n"
" Wymaga to Linuksa w wersji >= 4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Usuwanie właściwości systemu plików '%s' nie jest obsługiwane.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Ustawianie właściwości systemu plików '%s' nie jest obsługiwane.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6350,7 +6397,7 @@ msgstr ""
"Flaga has_journal może być wyczyszczona tylko kiedy system plików\n"
"jest odmontowany lub zamontowany tylko do odczytu.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6358,7 +6405,7 @@ msgstr ""
"Flaga needs_recovery jest ustawiona. Proszę uruchomić e2fsck przed\n"
"czyszczeniem flagi has_journal.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6366,7 +6413,7 @@ msgstr ""
"Ustawienie właściwości systemu plików 'sparse_super' nie jest obsługiwane\n"
"dla systemów plików z włączoną właściwością meta_bg.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6375,12 +6422,12 @@ msgstr ""
"Funkcja ochrony przed wielokrotnym montowaniem nie może zostać\n"
"włączona, jeśli system plików jest zamontowany lub tylko do odczytu.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Zavezpieczenie przed wielokrotnym montowaniem została włączona z czasem uaktualniania %ds.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6388,26 +6435,26 @@ msgstr ""
"Funkcja zabezpieczenia przed wielokrotnym montowaniem nie może zostać\n"
"wyłączona, jeśli system plików jest tylko do odczytu.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Błąd podczas odczytu bitmap\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Liczba magiczna w bloku MMP się nie zgadza; oczekiwano %x, jest %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "podczas odczytu bloku MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
msgstr "Wyłączenie flagi flex_bg spowoduje niespójność systemu plików.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6415,46 +6462,54 @@ msgstr ""
"Flaga huge_file może być wyczyszczona tylko kiedy system plików\n"
"jest odmontowany lub zamontowany tylko do odczytu.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Włączenie sum kontrolnych może zająć trochę czasu."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Nie można włączyć właściwości metadata_csum na zamontowanym systemie plików!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Ekstenty nie są włączone. Drzewo ekstenów plików może mieć sumy kontrolne, a mapy bloków nie. Niewłączenie ekstentów zmniejsza pokrycie sum kontrolnych metadanych. Aby to poprawić, należy uruchomić ponownie z opcją -O extents.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "Obsługa 64-bitowego systemu plików nie jest włączona. Większe pola dostarczane przez tę właściwość pozwalają na silniejsze sumy kontrolne. Aby to poprawić, należy uruchomić resize2fs -b.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Wyłączenie sum kontrolnych może zająć trochę czasu."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Nie można wyłączyć właściwości metadata_csum na zamontowanym systemie plików!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Nie można włączyć właściwości uninit_bg na zamontowanym systemie plików!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Nie można wyłączyć właściwości uninit_bg na zamontowanym systemie plików!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Nie można włączyć trybu 64-bitowego, kiedy system plików jest zamontowany!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Nie można wyłączyć trybu 64-bitowego, kiedy system plików jest zamontowany!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Nie można włączyć właściwości project; rozmiar i-węzła zbyt mały.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6462,11 +6517,11 @@ msgstr ""
"\n"
"Uwaga: opcja '^quota' nadpisuje argumenty '-Q'.\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Nie można zmienić właściwości encrypt na systemach plików z włączoną właściwością encoding.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "Właściwość casefold można włączyć tylko na niezamontowanym systemie plików.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6474,7 +6529,7 @@ msgstr ""
"Ustawienie właściwości 'metadata_csum_seed' jest obsługiwane\n"
"tylko dla systemów plików z włączoną właściwością metadata_csum.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6483,15 +6538,15 @@ msgstr ""
"być odmontowany, aby bezpiecznie nadpisać wszystkie metadane, żeby zgadzały\n"
"się z nowym UUID-em.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Przeliczanie sum kontrolnych może zająć trochę czasu."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "System plików już ma kronikę.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6500,21 +6555,21 @@ msgstr ""
"\n"
"\tpodczas próby otworzenia kroniki na %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Tworzenie kroniki na urządzeniu %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "podczas dodawania systemu plików do kroniki na %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Tworzenie i-węzła kroniki: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6522,31 +6577,31 @@ msgstr ""
"\n"
"\tpodczas próby utworzenia pliku kroniki"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Nie można włączyć limitów projektów; rozmiar i-węzła zbyt mały.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "podczas inicjowania kontekstu limitów w bibliotece wspierającej"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "podczas uaktualniania limitów (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "podczas zapisu pliku limitów (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "podczas usuwania pliku limitów (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6568,65 +6623,65 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Nie można przeanalizować podanej daty/czasu: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "błędna liczba montowań - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "błędny gid/nazwa grupy - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "błędny odstęp - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "błędny procent zarezerwowanych bloków - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o może być podane tylko raz"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O może być podane tylko raz"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "błędna liczba zarezerwowanych bloków - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "błędny uid/nazwa użytkownika - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "błędny rozmiar i-węzła - %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Rozmiar i-węzła musi być potęgą dwójki - %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "Okres uaktualniania mmp zbyt duży: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
@@ -6634,32 +6689,52 @@ msgstr[0] "Ustawianie okresu uaktualniania zabezpieczenia przed wielokrotnym mon
msgstr[1] "Ustawianie okresu uaktualniania zabezpieczenia przed wielokrotnym montowaniem na %lu sekundy\n"
msgstr[2] "Ustawianie okresu uaktualniania zabezpieczenia przed wielokrotnym montowaniem na %lu sekund\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Ustawianie flagi błędu systemu plików w celu wymuszenia fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Błędny parametr RAID stride: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Błędny parametr RAID stripe-width: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Błędny algorytm haszowania: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Ustawianie domyślnego algorytmu haszowania na %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Nie można zmienić istniejącego kodowania\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Błędne kodowanie: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Ustawianie kodowania na '%s'\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Ustawianie flag kodowania na '%s'\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6677,6 +6752,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Podano błędne opcje.\n"
@@ -6694,32 +6771,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<kodowanie>\n"
+"\tencoding_flags=<flagi>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Nie udało się odczytać bitmapy i-węzłów\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Nie udało się odczytać bitmapy bloków\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "bloki do przeniesienia"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Nie udało się przydzielić bitmapy bloków podczas zwiększania rozmiaru i-węzła\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Za mało miejsca, aby zwiększyć rozmiar i-węzła\n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Nie udało się przemieścić bloków podczas zmiany rozmiaru i-węzła\n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6727,7 +6806,7 @@ msgstr ""
"Błąd podczas zmiany rozmiaru i-węzła.\n"
"Należy uruchomić e2undo w celu wycofania zmian w systemie plików.\n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6735,7 +6814,7 @@ msgstr ""
"Jeśli system plików nie jest na pewno używany przez żaden system, można uruchomić:\n"
"'tune2fs -f -E clear_mmp {urządzenie}'\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6744,29 +6823,29 @@ msgstr ""
"Liczba magiczna bloku MMP jest błędna. Można próbować to naprawić uruchamiając:\n"
"'e2fsck -f %s'\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Nie można zmodyfikować urządzenia kroniki.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "Rozmiar i-węzła już wynosi %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "Zmniejszanie rozmiaru i-węzła nie jest obsługiwane\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Błędny rozmiar i-węzła %lu (max %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Zmiana rozmiaru i-węzłów może zająć trochę czasu."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6783,57 +6862,57 @@ msgstr ""
"a następnie uruchomić ponownie to polecenie. W innym przypadku wszelkie\n"
"wykonane zmiany mogą zostać nadpisane przy odtwarzaniu kroniki.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Odtwarzanie kroniki.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Ustawianie maksymalnej liczby montowań na %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Ustawianie aktualnego licznika montowań na %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Ustawianie traktowania błędów na %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Ustawianie gid-a zarezerwowanych bloków na %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "odstęp pomiędzy sprawdzeniami jest zbyt duży (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Ustawianie odstępu pomiędzy sprawdzeniami na %lu sekund\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Ustawianie procentu zarezerwowanych bloków na %g%% (%llu bloków)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "liczba zarezerwowanych bloków jest zbyt duża (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Ustawianie liczby zarezerwowanych bloków na %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6841,7 +6920,7 @@ msgstr ""
"\n"
"System plików już ma rzadkie superbloki.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6851,7 +6930,7 @@ msgstr ""
"Ustawienie flagi rzadkiego superbloku nie jest obsługiwane\n"
"dla systemów plików z włączoną właściwością meta_bg.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6860,7 +6939,7 @@ msgstr ""
"\n"
"Flaga rzadkich superbloków ustawiona. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6868,49 +6947,49 @@ msgstr ""
"\n"
"Usuwanie flagi rzadkiego superbloku nie jest obsługiwane.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Ustawianie czasu ostatniego sprawdzenia systemu plików na %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Ustawianie uid-a zarezerwowanych bloków na %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Błąd w użyciu clear_mmp. Opcja ta musi być użyta z -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "Funkcję limitów można zmienić tylko na niezamontowanym systemie plików.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Ustawienie UUID-a w tym systemie plików może zająć trochę czasu."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "UUID można zmienić tylko na niezamontowanym systemie plików.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Jeżeli używane są tylko jądra nowsze niż 4.4, można uruchomić 'tune2fs -O metadata_csum_seed', a następnie ponownie to polecenie.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Błędny format UUID-a\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Trzeba uaktualnić superblok kroniki.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "Rozmiar i-węzła można zmienić tylko na niezamontowanym systemie plików.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6918,26 +6997,26 @@ msgstr ""
"Zmiana rozmiaru i-węzła nie jest obsługiwana dla systemów plików\n"
"z włączoną właściwością flex_bg.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Ustawianie rozmiaru i-węzła na %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Nie udało się zmienić rozmiaru i-węzła\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Ustawianie rozmiaru stride na %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Ustawianie szerokości stripe na na %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Ustawianie rozszerzonych domyślnych opcji montowania na '%s'\n"
@@ -7243,17 +7322,17 @@ msgstr ""
"to wykonać, należy użyć opcji force.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "podczas otwierania %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "podczas pobierania informacji stat dla %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7262,30 +7341,34 @@ msgstr ""
"Proszę uruchomić najpierw 'e2fsck -f %s'.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Przybliżony minimalny rozmiar systemu plików: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "Błędny nowy rozmiar: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "Nowy rozmiar zbyt duży, by mógł być wyrażony w 32 bitach\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Nowy rozmiar powoduje zbyt dużo deskryptorów grup bloków.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "Nowy rozmiar jest mniejszy niż minimalny (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Błędna długość stride"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7296,27 +7379,27 @@ msgstr ""
"Zażądano nowego rozmiaru %llu bloków.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Nie można włączyć i wyłączyć właściwości 64bit.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "Nie można zmienić właściwości 64bit w systemie plików większym niż 2^32 bloków.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "Nie można zmienić właściwości 64bit, kiedy system plików jest zamontowany.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Proszę włączyć właściwość extents przy użyciu tune2fs przed włączeniem właściwości 64bit.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7325,37 +7408,37 @@ msgstr ""
"System plików już ma wielkość %llu (%dk) bloków. Nie ma nic do roboty!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "System plików jest już 64-bitowy.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "System plików jest już 32-bitowy.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Konwersja systemu plików na 64 bity.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Konwersja systemu plików na 32 bity.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "Zmiana rozmiaru systemu plików %s na %llu (%dk) bloków.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "podczas próby zmiany rozmiaru %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7364,7 +7447,7 @@ msgstr ""
"Proszę uruchomić 'e2fsck -fy %s', aby naprawić system plików\n"
"po przerwanej operacji zmiany rozmiaru.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7373,7 +7456,7 @@ msgstr ""
"System plików na %s ma teraz %llu (%dk) bloków.\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "podczas próby skrócenia %s"
@@ -7474,8 +7557,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Nigdy się nie powinno zdarzyć: i-węzeł zmiany rozmiaru uszkodzony!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Biblioteka EXT2FS w wersji 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Biblioteka EXT2FS w wersji 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8189,6 +8272,10 @@ msgstr "I-węzeł jest uszkodzony"
msgid "Inode containing extended attribute value is corrupted"
msgstr "I-węzeł zawierający wartość rozszerzonego atrybutu jest uszkodzony"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Deskryptory grup nie załadowane"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Profil w wersji 0.0"
@@ -8313,47 +8400,47 @@ msgstr "Błędna wartość całkowita"
msgid "Bad magic value in profile_file_data_t"
msgstr "Błędna wartość magiczna w profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\tostatnio montowano %s pod %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tostatnio montowano %.*s pod %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\tostatnio montowano %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tutworzono %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tostatnio zmodyfikowano %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Znaleziono tablicę partycji %s w %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "Plik %s nie istnieje i nie podano rozmiaru.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Tworzenie zwykłego pliku %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Nie udało się otworzyć %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8361,22 +8448,22 @@ msgstr ""
"\n"
"Urządzenie najwyraźniej nie istnieje; czy zostało podane poprawnie?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s nie jest specjalnym urządzeniem blokowym.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s zawiera system plików %s z etykietą '%s'\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s zawiera system plików %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s zawiera dane `%s'\n"
diff --git a/po/pt.gmo b/po/pt.gmo
index 5b692831..931592ec 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index be549fc3..f4cf86bf 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -4,7 +4,7 @@
# 2013, 2014, 2015, 2016, 2017, 2018 by Theodore Ts'o
# This file is distributed under the same license as the e2fsprogs package.
# Theodore Ts'o <tytso@mit.edu>, 2018.
-# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018, 2019.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2021.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -77,11 +77,11 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.45.3\n"
+"Project-Id-Version: e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-21 08:48+0100\n"
-"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-03 06:04+0000\n"
+"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
@@ -89,7 +89,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Geany / PoHelper 1.36\n"
+"X-Generator: Geany / PoHelper 1.37\n"
#: e2fsck/badblocks.c:23 misc/mke2fs.c:220
#, c-format
@@ -107,9 +107,9 @@ msgstr "ao ler inodes de maus blocos"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "ao tentar abrir %s"
@@ -132,7 +132,7 @@ msgstr "ao actualizar inode de mau bloco"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Aviso: bloco %u ilegal encontrado em inode de mau bloco. Limpo.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "ao libertar ficheiro dir_info tdb"
@@ -164,15 +164,15 @@ msgstr "Erro ao escrever bloco %lu (%s) enquanto %s. "
msgid "Error writing block %lu (%s). "
msgstr "Erro ao escrever bloco %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "dirblocks vazio"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "dir map vazio"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Bloco de pastas vazio %u (nº %d) em inode %u\n"
@@ -182,12 +182,12 @@ msgstr "Bloco de pastas vazio %u (nº %d) em inode %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s nome de ficheiro nblocks tamanho de bloco\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Número ilegal de blocos!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Impossível alocar buffer do bloco (tamanho=%d)\n"
@@ -216,7 +216,7 @@ msgstr "Uso: %s [-F] [-I inode_buffer_blocks] dispositivo\n"
msgid "while opening %s for flushing"
msgstr "ao abrir %s para despejo"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "ao tentar despejar %s"
@@ -253,7 +253,7 @@ msgstr "%s: sem super-bloco de diário válido\n"
msgid "%s: journal too short\n"
msgstr "%s: diário muito curto\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: a recuperar diário\n"
@@ -505,113 +505,113 @@ msgstr "tipo de quota desconhecido"
msgid "multiply claimed inode map"
msgstr "multiplicar mapa de inode reclamado"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "erro interno: impossível encontrar dup_blk para %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "devolvido de clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "erro interno: impossível procurar registo de bloco EA para %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "erro interno: impossível procurar registo de inode EA para %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "ao criar hash da entrada com e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "a ler bloco de pasta"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "a obter inode seguinte da análise"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "mapa de inode em-uso"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "mapa de inode de pasta"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "mapa de inode de ficheiro normal"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "mapa de bloco em-uso"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "mapa de bloco de meta-dados"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "a abrir análise de inode"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "a obter inode seguinte da análise"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Passagem 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "a ler blocos indirectos de inode %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "mau mapa de inode"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "inode em mau mapa de bloco"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "mapa de inode imagic"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "multiplicar mapa de bloco reclamado"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "mapa de bloco de atributo estendido"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): esperado %6lu, obtido phys %6lu (blkcnt %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "bitmap de bloco"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "bitmap de inode"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "tabela de inode"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Passagem 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Impossível continuar."
@@ -627,11 +627,11 @@ msgstr "Memória pico"
msgid "Pass 3"
msgstr "Passagem 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "bitmap de detecção de ciclos de inode"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Passagem 4"
@@ -647,187 +647,195 @@ msgstr "check_inode_bitmap_checksum: erro de alocação de memória"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: erro de alocação de memória"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(sem prompt)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Reparar"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Limpar"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Relocalizar"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Alocar"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Expandir"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Ligar a/perdido+achado"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Criar"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Salvar"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Truncar"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Limpar inode"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Abortar"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Dividir"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Continuar"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Clonar blocos multiplicar-reclamado"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Eliminar ficheiro"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Suprimir mensagens"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Desligar"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Limpar índice HTree"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Recriar"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Optimizar"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Limpar bandeira"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(NADA)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "REPARADO"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "LIMPO"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "RELOCALIZADO"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "ALOCADO"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "EXPANDIDO"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "RELIGADO"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "CRIADO"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "SALVO"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "TRUNCADO"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "INODE LIMPO"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "ABORTADO"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "DIVIDIDO"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "A CONTINUAR"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "BLOCOS MULTIPLICAR-RECLAMADO CLONADOS"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "FICHEIRO ELIMINADO"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "SUPRIMIDAS"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "DESLIGADO"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "ÍNDICE HTREE LIMPO"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "SERÁ RECRIADO"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "SERÁ OPTIMIZADO"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "BANDEIRA LIMPA"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "bitmap do bloco para o grupo %g não está no grupo. (bloco %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "Bitmap de inode para grupo %g não está em grupo. (bloco %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -844,7 +852,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -869,7 +877,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -882,7 +890,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -893,18 +901,18 @@ msgstr ""
"do tamanho de bloco.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "super-bloco blocks_per_group = %b, devia ter sido %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "super-bloco first_data_block = %b, devia ter sido %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -912,7 +920,7 @@ msgstr ""
"sistema de ficheiros não tinha UUID; a gerar uma.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -930,48 +938,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Encontrada corrupção em super-bloco (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Erro ao determinar o tamanho do dispositivo físico: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "total de inode no super-bloco é %i, devia ser %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "The Hurd não suporta a funcionalidade de tipo de ficheiro.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "super-bloco tem um diário inválido (inode %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Diário externo tem múltiplos utilizadores de sistema de ficheiros (não suportado).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Impossível encontrar diário externo\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "Diário externo tem um mau super-bloco\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Diário externo não suporta este sistema de ficheiros\n"
@@ -979,7 +987,7 @@ msgstr "Diário externo não suporta este sistema de ficheiros\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -990,80 +998,80 @@ msgstr ""
"Também é possível que o super-bloco de diário esteja corrompido.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "Super-bloco de diário corrompido.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "Bandeira has_journal de super-bloco limpa, mas está presente um diário.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "Bandeira needs_recovery de super-bloco definida, mas não há um diário presente.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "Bandeira needs_recovery de super-bloco limpa, mas o diário tem dados.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Diário limpo"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "Sistema de ficheiros tem bandeiras de funcionalidade definidas, mas é um sistema de ficheiros revisão 0. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "inode orfanado %s %i (uid=%Iu, gid=%Ig, modo=%Im, tamanho=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "%B (%b) ilegal encontrado em inode orfanado %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "%B (%b) já limpo encontrado em inode orfanado %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "inode orfanado %i ilegal em super-bloco.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "inode %i ilegal na lista de inode orfanados.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "Super-bloco de diário tem uma bandeira só-de-leitura desconhecida definida.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "Super-bloco de diário tem uma bandeira de incompatibilidade desconhecida definida.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "Versão de diário não suportada por este e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1074,7 +1082,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1086,7 +1094,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1097,18 +1105,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Executar diário mesmo assim"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "Bandeira de recuperação não definida na segurança de super-bloco, a executar diário mesmo assim.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1118,7 +1126,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1127,18 +1135,18 @@ msgstr ""
"é %N; devia ser zero. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_inode não activo, mas resize inode é não-zero. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "Resize inode inválido. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1148,7 +1156,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1157,14 +1165,14 @@ msgstr ""
"\tagora = %T) está no futuro.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "Dica de super-bloco para super-bloco externo devia ser %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1173,39 +1181,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "checksum de descritor de grupo %g é %04x, deveria ser %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "descritor de grupo %g marcado como inicializado sem conjunto de funcionalidades.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "Descritor de grupo %g tem um total %b de inodes não utilizados. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "Último bitmap de grupo de blocos não inicializados. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Transacção de diário %i estava corrompida, reprodução abortada.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "A bandeira test_fs está definida (e ext4 está disponível). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1216,7 +1224,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1225,103 +1233,103 @@ msgstr ""
"\t(por menos de um dia, provavelmente devido ao relógio do equipamento não estar certo)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Uma ou mais checksums de descritores de grupo de blocos são inválidas. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "A definir total de inodes livres para %j (era %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "A definir total de blocos livres para %c (era %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "A ocultar quota %U de inode %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "Super-bloco tem um bloco MMP inválido. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "Super-bloco tem magia MMP inválida. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "metadata_csum suplanta uninit_bg; impossível definir ambos os bits em simultâneo."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "chcecksum de super-bloco MMP bloco não coincide. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "Sistema de ficheiros de super-bloco 64bit precisa de extents para aceder a todo o disco. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg é muito grande. (%N, valor máximo %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "Checksum de super-bloco de diário externo não coincide com super-bloco. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "metadata_csum_seed não é necessário sem metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Erro ao inicializar contexto de quota em biblioteca de suporte: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
-msgstr "isize extra requerido incorrecto em super-bloco (%N). "
+msgstr "Extra isize requerido errado em @S (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
-msgstr "isize extra desejado incorrecto em super-bloco (%N). "
+msgstr "Extra isize desejado errado em @S (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "Quota %U de inode %i inválida. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "super-bloco teria demasiados inodes (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1330,117 +1338,117 @@ msgstr ""
"não são compatíveis. Deve desactivar Resize @i. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Passo 1: a verificar inodes, blocos e tamanhos\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "inode root não é pasta. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "inode root tem dtime definido (provavelmente devido a um mke2fs antigo). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
-msgstr "inode %i (%Q) reservado tem modo inválido. "
+msgstr "@i %i (%Q) reservado tem modo @n. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "inode %i eliminado tem dtime zero. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "inode %i está em uso, mas tem dtime definido. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "inode %i é pasta de tamanho zero. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "Bitmap de bloco de grupo %g em %b em conflito com outro bloco do sistema de ficheiros.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "Bitmap de inode de grupo %g em %b em conflito com outro bloco do sistema de ficheiros.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "tabela inode de grupo %g em %b em conflito com outro bloco do sistema de ficheiros.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "Bitmap de bloco de grupo %g (%b) está mau. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "Bitmap de inode de grupo %g (%b) está mau. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "inode %i, i_size é %Is, devia ser %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "inode %i, i_blocks é %Ib, devia ser %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "ilegal %B (%b) em inode %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) sobrepõe-se aos meta-dados do sistema de ficheiros em inode %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "inode %i tem blocos ilegais. "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Demasiados blocos ilegais em inode %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "%B (%b) ilegal em mau inode de bloco. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "Mau inode de bloco tem blocos ilegais. "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "Bloco duplicado ou mau em uso!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Mau bloco %b usado como mau bloco indirecto de inode de bloco. "
@@ -1448,7 +1456,7 @@ msgstr "Mau bloco %b usado como mau bloco indirecto de inode de bloco. "
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1462,7 +1470,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1473,7 +1481,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1484,121 +1492,121 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "O super-bloco (%b) primário está na lista de maus blocos.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "O bloco %b nos descritores primários do grupo está na lista de maus blocos\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Aviso: o super-bloco (%b) do grupo %g está mau.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Aviso: a cópia dos descritores grupo do grupo %g tem um bloco (%b) mau.\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Erro de programação? Bloco nº %b reclamado sem razão em process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "Erro ao alocar %N bloco(s) contíguos no grupo de blocos %g para %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "Erro ao alocar o buffer de bloco para relocalizar %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "A relocalizar %s de grupo %g de %b para %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "A relocalizar grupo %g - %s para %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Aviso: impossível ler bloco %b de %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Aviso: impossível escrever bloco %b em %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "Erro ao alocar bitmap de inode (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "Erro ao alocar bitmap de bloco (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "Erro ao alocar informação de ligação icount: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "Erro ao alocar pasta de matriz de bloco: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Erro ao analisar inodes (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Erro ao iterar sobre blocos em inode %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Erro ao armazenar informação de total de inodes (inode=%i, total=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Erro ao armazenar informação de bloco de pasta (inode=%i, bloco=%b, núm=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Erro ao ler inode %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "inode %i tem bandeira imagic definida. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1608,143 +1616,143 @@ msgstr ""
"immuttable ou append-only definidas. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
-msgstr "inode %i especial (dispositivo/socket/fifo) tem tamanho não-zero. "
+msgstr "@i %i especial (@v/socket/fifo) tem tamanho não-zero. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "inode de diário não está em uso, mas contém dados. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "o diário não é um ficheiro regular. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "inode %i fazia parte da lista de inodes orfanados. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "inodes que faziam parte de uma lista ligada orfanada corrompida. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "Erro ao alocar estrutura refcount (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Erro ao ler bloco %b de atributo estendido para inode %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "inode %i tem um mau bloco %b de atributo estendido. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Erro ao ler bloco %b de atributo estendido (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "bloco %b de atributo estendido tem total de referência %r, devia ser %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Erro ao escrever bloco %b de atributo estendido (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "bloco %b de atributo estendido tem h_blocks > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "Erro ao alocar estrutura de alocação de região de atributo estendido. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "bloco %b de atributo estendido está corrompido (colisão de alocação). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "bloco %b de atributo estendido está corrompido (nome inválido). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "bloco %b de atributo estendido está corrompido (valor inválido). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "inode %i muito grande. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) faz com que a pasta seja muito grande. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) faz com que o ficheiro seja muito grande. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) faz com que a symlink seja muito grande. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "inode %i tem bandeira INDEX_FL definida em sistema de ficheiros sem suporte a htree.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "inode %i tem bandeira INDEX_FL definida mas não é uma pasta.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "pasta HTREE inode %i tem nó raiz inválido.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "pasta HTREE inode %i tem versãi hash não suportada (%N).\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "pasta HTREE inode %i usa uma bandeira de nó raiz htree incompatível.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "pasta HTREE inode %i tem uma profundidade de árvore (%N) muito grande\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1753,55 +1761,55 @@ msgstr ""
"meta-dados do sistema de ficheiros. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Falha ao redimensionar (re)criação de inode: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "inode %i tem um tamanho extra (%IS) que é inválido\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "atributo estendido em inode %i tem um namelen (%N) que é inválido\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "atributo estendido em inode %i tem um desvio de valor (%N) que é inválido\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "atributo estendido em inode %i tem um bloco de valor (%N) que é inválido (tem de ser 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "atributo estendido em inode %i tem um tamanho de valor (%N) que é inválido\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "atributo estendido em inode %i tem uma hash (%N) que é inválida\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "inode %i é %It mas parece que é realmente uma pasta.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Erro ao ler sobre árvore estendida em inode %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1811,7 +1819,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1821,7 +1829,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1830,31 +1838,31 @@ msgstr ""
"\t(bloco lógico %c, bloco físico %b, tamanho inválido %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "inode %i tem bandeira EXTENTS_FL definida em sistema de ficheiros sem suporte a extensões.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "inode %i está em formato de extensão, mas o super-bloco tem a funcionalidade EXTENTS em falta\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "inode %i com EXTENT_FL em falta, mas está em formato de extensão\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
-msgstr "symlink %i rápida tem EXTENT_FL definida. "
+msgstr "symlink %i rápida tem EXTENT_FL definida. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1863,39 +1871,39 @@ msgstr ""
"\t(bloco lógico %c inválido, bloco físico %b, tamanho %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "inode %i tem um nó de extensão inválido (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Erro ao converter bitmap de bloco de sub-cluster: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "inode de quota não é um ficheiro normal. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "inode de quota não está em uso, mas contém dados. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "inode de quota é visível pelo utilizador. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "O inode de bloco mau parece inválido. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1904,26 +1912,26 @@ msgstr ""
"\t(bloco lógico %c inválido, bloco físico %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "inode %i parece conter lixo. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "inode %i passa os testes, mas a checksum não corresponde a inode. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "atributo estendido de inode %i está corrompido (colisão de alocação). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1932,13 +1940,13 @@ msgstr ""
"\t(bloco lógico %c, bloco físico %b, tamanho %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "bloco %b de atributo estendido de inode %i passa os testes, mas a checksum não corresponde ao bloco. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1948,7 +1956,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1957,37 +1965,37 @@ msgstr ""
"\t(bloco lógico %c, bloco físico %b, tamanho %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "inode %i tem dados em linha, mas o super-bloco tem a funcionalidade INLINE_DATA em falta\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "inode %i tem bandeira INLINE_DATA_FL em sistema de ficheiros sem suporte a dados em linha.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "inode %i bloco %b conflitua com meta-dados críticos, a saltar testes de bloco.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "bloco %b de inode %i de pasta devia estar em bloco %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "inode %i de pasta tem extensão marcada como não-inicializada no bloco %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -1996,14 +2004,14 @@ msgstr ""
"Será reparado no passo 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "inode %i tem bandeira INLINE_DATA_FL mas não se encontrou atributo estendido. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2013,42 +2021,42 @@ msgstr ""
"ou bandeira inline-data definida. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "inode %i tem cabeçalho de extensão mas a bandeira de dados em linha está definida.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "inode %i parece ter dados em linha, mas a bandeira de extensão está definida.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "inode %i parece ter mapa de bloco, mas as bandeiras de dados em linha e extensão estão definidas.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "inode %i tem as bandeiras de dados em linha e extensão definidas, mas i_block contém lixo.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "Lista de blocos maus diz que o inode da lista de blocos maus está mau. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "Erro ao alocar estrutura de alocação de região de extensão. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2057,57 +2065,85 @@ msgstr ""
"\t(bloco lógico %c, bloco físico %b inválido, tamanho %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "Erro ao alocar memória para lista de pastas encriptada\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "árvore de extensões de inode %i podia ser mais rasa (%b; podia ser <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "inode %i em sistema de ficheiros bigalloc não pode ser mapeada em blocos. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "inode %i tem cabeçalho de extensão corrompido. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Carimbo(s) em inode %i além de 04-04-2310 são provavelmente pré-1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "inode %i tem valor de atributo estendido ilegal inode %N.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "inode %i tem atributo estendido inválido. inode EA %N com bandeira EA_INODE em falta.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
msgstr ""
-"inode EA %N para inode-mãe %i com bandeira EA_INODE em falta.\n"
+"@i EA %N para @i-mãe %i com bandeira EA_INODE em falta.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "@i %i tem bandeira casefold definida mas não é uma pasta."
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"a @d %p tem a bandeira casefold, mas a\n"
+"funcionalidade casefold não está activa. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "@h %i usa a versão hash (%N), mas devia usar SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "@h %i usa SipHash, mas não devia. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2118,46 +2154,46 @@ msgstr ""
"Passo 1B: re-analisar blocos multiplicar-reclamados\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "blocos multiplicar-reclamados em inode %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Erro ao analisar inodes (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "Erro ao alocar bitmap de inode (inode_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Erro ao iterar sobre blocos em inode %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Erro ao ajustar refcount para bloco %b de atributo estendido (@i %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Passo 1C: analisar pastas para inodes com blocos multiplicar-reclamados\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Passo 1D: reconciliar blocos multiplicar-reclamados\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2166,18 +2202,18 @@ msgstr ""
" tem %r bloco(s) multiplicar-reclamado(s), partilhados com %N ficheiro(s):\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (inode nº %i, hora de mod. %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<meta-dados do sistema de ficheiros>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2187,7 +2223,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2195,345 +2231,345 @@ msgstr ""
"blocos multiplicar-reclamados já re-atribuídos ou clonados.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Impossível clonar o ficheiro: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Passo 1E: optimizar árvores de extensões\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Falha ao optimizar árvore de extensão %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optimizar árvores de extensões: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Erro interno: profundidade máxima da árvore de extensões muito grande (%b; esperada=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "árvore de extensão de inode %i (no nível %b) podia ser mais curta. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "árvore de extensão de inode %i (no nível %b) podia ser mais estreita. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Passo 2: verificar estrutura de pastas\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "número de inode inválido para '.' em inode de pasta %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "Entrada \"%Dn\" em %p (%i) tem número de inode inválido: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "Entrada \"%Dn\" em %p (%i) tem inode %Di eliminado/não utilizado. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "Entrada \"%Dn\" em %p (%i) é ligação a '.' "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "Entrada \"%Dn\" em %p (%i) aponta para indode (%Di) localizado num mau bloco.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "Entrada \"%Dn\" em %p (%i) é ligação a pasta %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "Entrada \"%Dn\" em %p (%i) é ligação ao inode raiz.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "Entrada \"%Dn\" em %p (%i) tem caracteres ilegais no nome.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "'.' em falta em inode de pasta %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "'..' em falta em inode de pasta %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "Primeira entrada '%Dn' (inode=%Di) em inode de pastai %i (%p) devia ser '.'\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "Segunda entrada '%Dn' (inode=%Di) em inode de pasta %i devia ser '..'\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr para inode %i(%Q) é %IF, devia ser zero.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl para inode %i(%Q) é %If, devia ser zero.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high para inode %i(%Q) é %Id, devia zero.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag para inode %i(%Q) é %N, devia ser zero.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize para inode %i(%Q) é %N, devia ser zero.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "inode %i (%Q) tem modo inválido (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "inode de pasta %i, %B, desvio %N: pasta corrompida\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "inode de pasta %i, %B, desvio %N: nome de ficheiro muito grande\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "inode de pasta %i tem %B não alocado. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "entrada de pasta '.' em inode de pasta %i não termina em NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "entrada de pasta '..' em inode de pasta %i não termina em NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "inode %i (%Q) é um dispositivo de carácter ilegal.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "inode %i (%Q) é um dispositivo de bloco ilegal.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "Entrada \"%Dn\" em %p(%i) é entrada '.' duplicada.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "Entrada \"%Dn\" em %p(%i) é entrada '..' duplicada.\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Erro interno: impossível encontrar dir_info para %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "Entrada \"%Dn\" em %p(%i) tem rec_len de %Dr, devia ser %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "Erro ao alocar estrutura icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Erro ao iterar sobre blocos de pasta: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Erro ao ler bloco de pasta %b (inode %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Erro ao escrever bloco de pasta %b (inode %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "Erro ao alocar novo bloco de pasta para inode %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Erro ao desalocar inode %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "Entrada de pasta para '.' em %p (%i) é grande.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "inode %i (%Q) é FIFO ilegal.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "inode %i (%Q) é um socket ilegal.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "A definir tipo de ficheiro para entrada \"%Dn\" em %p(%i) como %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "Entrada \"%Dn\" em %p(%i) tem um tipo de ficheiro incorrecto (era %Dt, devia ser %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "Entrada \"%Dn\" em %p(%i) tem tipo de ficheiro definido.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "Entrada \"%Dn\" em %p(%i) tem nome de tamanho zero.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Symlink %Q (inode nº %i) é inválido.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "bloco de atributo estendido para inode %i(%Q) é inválido (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "o sistema de ficheiros contém ficheiros grandes, mas te bandeira LARGE_FILE em super-bloco.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "problema em pasta HTREE inode %d: %B não referenciado\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "problema em pasta HTREE inode %d: %B referenciado duas vezes\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "problema em pasta HTREE inode %d: %B tem hash mínima má\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "Problema em pasta HTREE inode %d: %B tem má hash máxima\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "Pasta HTREE inode %d (%q) inválida. "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "Problema em pasta HTREE inode %d (%q): mau número de bloco %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "Problema em pasta HTREE inode %d: nó raiz inválido\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "Problema em pasta HTREE inode %d: %B tem limite inválido (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "Problema em pasta HTREE inode %d: %B tem total inválido (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "Problema em pasta HTREE inode %d: %B tem tabela de hash desordenada\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "Problema em pasta HTREE inode %d: %B tem profundidade inválida (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "Encontrada entrada \"%Dn\" em %p (%i) duplicada. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2545,7 +2581,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2556,155 +2592,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi para inode %i(%Q) é %N, devia ser zero.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Bloco inesperado em pasta HTREE inode %d (%q).\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "Entrada \"%Dn\" em %p(%i) referencia inode %Di em grupo %g onde _INODE_UNINIT está definida.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "Entrada \"%Dn\" em %p(%i) referencia inode %Di encontrado na área de inodes não usados do grupo %g.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi para inode %i(%Q) é %N, devia ser zero.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "Problema em pasta HTREE inode %d: nó raiz falha a checksum.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "Problema em pasta HTREE inode %d: nó interno falha a checksum.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "inode de pasta %i, %B, desvio %N: pasta sem checksum.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "inode de pasta %i, %B: a pasta passa os testes mas falha a checksum.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "O tamanho do inode de pasta %i em linha (%N) tem de ser múltiplo de 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Falha ao reparar o tamanho do inode de pasta %i em linha.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "Entrada \"%Dn\" em %p(%i) encriptada muito curta.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Encontrado nome de ficheiro @E duplicado. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Passo 3: verificar conectividade da pasta\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
-msgstr "inode raiz não alocado..."
+msgstr "@r não alocado. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
-msgstr "sem espaço na pasta perdido+achado. "
+msgstr "Sem espaço na @d @l. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
-msgstr "inode de pasta %i (%p) não ligado\n"
+msgstr "@i %i (%p) de @d não ligado\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "/perdido+achado não encontrado. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "'..' em %Q (%i) é %P (%j), devia ser %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "/perdido+achado mau ou não-existente. Impossível religar.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Impossível expandir /perdido+achado: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Impossível religar %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Erro ao tentar encontrar /perdido+achado: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@b: %m ao tentar criar pasta /perdido+achado\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@i: %m ao tentar criar pasta /perdido+achado\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_@b: %m ao criar novo bloco de pasta\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_@b: %m ao escrever o bloco de pasta para /perdido+achado\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Erro ao ajustar total de inodes no inode %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2715,7 +2756,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2725,41 +2766,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Erro ao criar pasta raiz (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Erro ao criar pasta /perdido+achado (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "inode raiz não é uma pasta; a abortar.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Impossível prosseguir sem um inode raiz.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/perdido+achado não é uma pasta (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/perdido+achado tem dados em linha\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2770,7 +2811,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2781,52 +2822,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/perdido+achado está encriptada\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Passo 3A: optimizar pastas\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Falha ao criar iterador dirs_to_hash: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Falha ao optimizar a pasta %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "A optimizar pastas: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Passo 4: verificar totais de referência\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "inode %i desanexado de tamanho zero. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "inode %i desanexado\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "total referência de inode %i é %Il, devia ser %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2837,146 +2878,151 @@ msgstr ""
"@i_link_info[%i] é %N, inode.i_links_count é %Il. Deviam ser iguais!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "total de referência do inode %i de atributo estendido é %N, devia ser %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "A pasta excede o máximo de ligações, mas não há funcionalidade DIR_NLINK no super-bloco.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "@d @i %i: contagem de referências definida para fazer transporte, mas podia ser um valor exacto %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Passo 5: verificar informação de resumo do grupo\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Espaço no final do bitmap de inode não está definido. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Espaço no final do bitmap de bloco não está definido. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "diferenças do bitmap de bloco: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "diferenças do bitmap de inode: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Total de inodes livres para o grupo nº %g errado (%i, contados=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Total de pastas para o grupo nº %g (%i, contadas=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Total de inodes livres errado (%i, contados=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Total de blocos livres para o grupo nº %g errado (%b, contados=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Total de blocos livres errado (%b, contados=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "ERRO DE PROGRAMAÇÃO: pontos finais do bitmap do sistema de ficheiros (nº %N) (%b, %c) não correspondem aos pontos finais calculados (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Erro interno: final de bitmap disparatado (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Erro de cópia no bitmap de inode substituto: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Erro de cópia no bitmap de bloco substituto: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "blocos de grupo %g em uso, mas o grupo está marcado como BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "inodes de grupo %g em uso, mas o grupo está marcado como INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "bitmap de inode do grupo %g não corresponde à checksum.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "bitmap de bloco do grupo %g não corresponde à checksum.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Recriar diário"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Actualizar informação de quota para quota tipo %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Erro ao definir informação de checksum de grupo do bloco: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Erro ao escrever informação do sistema de ficheiros: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Erro ao despejar escritas para o dispositivo de armazenamento: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Erro ao escrever informação de quota para quota tipo %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Código de erro não gerido (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "IGNORADO"
@@ -2986,8 +3032,8 @@ msgstr "em move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Memória usada: %d, tempo decorrido: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Memória usada: %lu, tempo decorrido: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3209,8 +3255,8 @@ msgid_plural "%12u files\n"
msgstr[0] "%12u ficheiro\n"
msgstr[1] "%12u ficheiros\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "ao determinar se %s está montado."
@@ -3383,7 +3429,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "A opção -t não é suportada nesta versão do e2fsck.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Impossível resolver \"%s\""
@@ -3455,8 +3501,8 @@ msgid "while reading MMP block"
msgstr "ao ler bloco MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3467,13 +3513,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "ao tentar eliminar %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "ao tentar configurar o ficheiro de desfazer\n"
@@ -3565,68 +3611,68 @@ msgstr "%s: a tentar carregar o super-bloco, apesar dos erros...\n"
msgid "Get a newer version of e2fsck!"
msgstr "Obtenha uma nova versão do e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "ao verificar diário para %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Impossível prosseguir com a verificação do sistema de ficheiros"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr "Aviso: a saltar recuperação do diário por estar em curso uma verificação só-de-leitura do sistema de ficheiros.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "impossível definir bandeiras do super-bloco em %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Encontrado erro de checksum de diário em %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Diário corrompido em %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "ao recuperar diário de %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s tem funcionalidades não suportadas:"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s tem codificação não suportada: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s ao ler inode de maus blocos\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Isto não augura nada de bom, mas vamos tentar continuar...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "A criar diário (%d blocos): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Feito.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3634,24 +3680,24 @@ msgstr ""
"\n"
"*** o diário foi regenerado ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "abortado"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck cancelado.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "A recomeçar o e2fsck desde o princípio...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "ao repor o contexto"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3660,12 +3706,12 @@ msgstr ""
"\n"
"%s: ***** ERROS DO SISTEMA DE FICHEIROS CORRIGIDOS *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: o sistema de ficheiros foi modificado.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3674,12 +3720,12 @@ msgstr ""
"\n"
"%s: ***** O SISTEMA DE FICHEIROS FOI MODIFICADO *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** REINICIAR O SISTEMA *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3690,51 +3736,51 @@ msgstr ""
"%s: ********** AVISO: o sistema de ficheiros ainda tem erros **********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "sS"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "tT"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " ('t' activa \"sim\" para todos) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<s>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (s/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "cancelado!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "sim para todos\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "sim\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "não\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3743,7 +3789,7 @@ msgstr ""
"%s? não\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3752,38 +3798,38 @@ msgstr ""
"%s? sim\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "sim"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "não"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: blocos de bitmap ilegais para %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "a ler bitmaps de inode e bloco"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "ao tentar ler bitmaps para %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "escrever bitmaps de bloco e inode"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "ao reescrever bitmaps de bloco e inode para %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3796,37 +3842,37 @@ msgstr ""
"%s: INCONSISTENCIA INESPERADA; EXECUTE fsck MANUALMENTE.\n"
"\t(i.e., sem opções -a ou -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Memória usada: %luk/%luk (%luk/%luk), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Memória usada: %lluk/%lluk (%lluk/%lluk), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Memória usada: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Memória usada: %lluk, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "hora: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "tempo decorrido: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "ao ler inode %lu em %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "ao escrever inode %lu em %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "INCONSISTENCIA INESPERADA: o sistema de ficheiros está a ser modificado enquanto o fsck está em execução.\n"
@@ -4036,68 +4082,68 @@ msgstr "Passo concluído, encontrados %u maus blocos. (%d/%d/%d erros)\n"
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Uso: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v versão] ficheiros...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Uso: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v versão] ficheiros...\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "projecto errado - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "versão errada - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "ao tentar analisar %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "ao ler bandeiras em %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Bandeiras de %s definidas como "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "ao definir bandeiras em %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Versão de %s definida como %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "ao definir versão em %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Projecto de %s definido como %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "ao definir projecto em %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Impossível alocar variável de caminho em chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= é incompatível com - e +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Deve usar \"-v\", =, - ou +\n"
@@ -4106,8 +4152,8 @@ msgstr "Deve usar \"-v\", =, - ou +\n"
msgid "while reading inode %u"
msgstr "ao ler inode %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "ao expandir pasta"
@@ -4116,143 +4162,147 @@ msgstr "ao expandir pasta"
msgid "while linking \"%s\""
msgstr "ao ligar \"%s\""
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "ao escrever inode %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "ao listar atributos de \"%s\""
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "ao abrir inode %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "ao alocar memória"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "ao ler atributo \"%s\" de \"%s\""
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "ao escrever atributo \"%s\" no inode %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "ao fechar inode %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "ao alocar inode \"%s\""
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "ao criar inode \"%s\""
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "ao criar ligação simbólica \"%s\""
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "ao procurar \"%s\""
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "ao criar pasta \"%s\""
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "ao abrir \"%s\" para cópia"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "ao mudar pasta de trabalho para \"%s\""
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "ao analisar pasta \"%s\""
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "ao lstat \"%s\""
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "ao criar o ficheiro especial \"%s\""
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "malloc falhou"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "ao tentar ler a ligação \"%s\""
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "a ligação simbólica aumentou de tamanho entre lstat() e readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "ao escrever ligação simbólica \"%s\""
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "ao escrever ficheiro \"%s\""
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "ao fazer pasta \"%s\""
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "ao mudar de pasta"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "a ignorar entrada \"%s\""
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "ao definir inode para \"%s\""
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "ao definir xattrs para \"%s\""
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "ao gravar dados do inode"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "ao copiar xattrs na pasta raiz"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4374,7 +4424,7 @@ msgstr "ao imprimir lista de maus blocos"
msgid "Bad blocks: %u"
msgstr "Maus blocos: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "ao ler inode de diário"
@@ -4390,7 +4440,7 @@ msgstr "ao ler super-bloco de diário"
msgid "Journal superblock magic number invalid!\n"
msgstr "Número mágico do super-bloco de diário inválido!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "ao ler super-bloco de diário"
@@ -4398,30 +4448,30 @@ msgstr "ao ler super-bloco de diário"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Impossível encontrar números mágicos do super-bloco de diário"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "falha ao alocar buffer MMP\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "a ler bloco MMP %llu de \"%s\"\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Impossível alocar memória para processar opções!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Parâmetro de super-bloco inválido: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Parâmetro de tamanho de bloco inválido: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4444,27 +4494,27 @@ msgstr ""
"\tsuperblock=<número do super-bloco>\n"
"\tblocksize=<tamanho do bloco>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tA usar %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Impossível encontrar um super-bloco de sistema de ficheiros válido.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: funcionalidade MMP não activada.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "ao tentar ler bitmaps de \"%s\"\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4474,8 +4524,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Uso: %s [ -r|Q ] [ -f ] [ -b super-bloco ] [ -B tam-bloco][ -fr ] dispositivo ficheiro-imagem\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Uso: %s [ -r|-Q ] [ -f ] [ -b super-bloco ] [ -B tambloco ] disp fich-imagem\n"
#: misc/e2image.c:110
#, c-format
@@ -4484,8 +4534,8 @@ msgstr " %s -I dispositivo ficheiro-imagem\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4652,7 +4702,7 @@ msgstr "O modo move só é permitido com imagens raw."
#: misc/e2image.c:1586
msgid "Move mode requires all data mode."
-msgstr "O modo move requer o modo all data"
+msgstr "O modo move requer o modo all data."
#: misc/e2image.c:1596
msgid "checking if mounted"
@@ -4744,7 +4794,7 @@ msgstr "e2label: erro ao ler super-bloco\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: não é sistema ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Aviso: rótulo muito longo, a truncar.\n"
@@ -4759,7 +4809,7 @@ msgstr "e2label: impossível procurar para super-bloco de novo\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: erro ao escrever super-bloco\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Uso: e2label dispositivo [novo-rótulo]\n"
@@ -4962,7 +5012,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5068,51 +5118,51 @@ msgstr "%s: demasiados dispositivos\n"
msgid "%s: too many arguments\n"
msgstr "%s: demasiados argumentos\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "A montar só-de-leitura.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: permissão a todos os utilizadores para alocar todos os blocos. Isto é perigoso!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Por favor, execute e2fsck -fy %s.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "O diário precisa de recuperação; é requerida a execução de \"e2fsck -E journal_only\"\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: escrever no diário não é suportado.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Aviso: a montar sf não verificado, recomenda-se a execução de e2fsck.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Aviso: atingido o máximo total de montagem, recomenda-se a execução de e2fsck.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Aviso: atingida hora de verificação; recomenda-se a execução de e2fsck.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Órfãos detectados; recomenda-se a execução de e2fsck.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Erros detectados; é requerida a execução de e2fsck.\n"
@@ -5217,7 +5267,7 @@ msgstr ""
"\n"
"Impossível escrever %d blocos na tabela de inodes começando em %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "feito \n"
@@ -5281,12 +5331,12 @@ msgstr "ao pôr a zero o dispositivo de diário (bloco %llu, total %d)"
msgid "while writing journal superblock"
msgstr "ao escrever super-bloco de diário"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "A criar sistema de ficheiros com %llu %dk blocos e %u inodes\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5295,164 +5345,164 @@ msgstr ""
"aviso: %llu blocos não usados.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Rótulo do sistema de ficheiros=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Rótulo do sistema de ficheiros=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Tipo de SO: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Tamanho de bloco=%u (diário=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Tamanho de cluster=%u (diário=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Tamanho de fragmento=%u (diário=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Passo=%u blocos, Largura de banda=%u blocos\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u inodes, %llu blocos\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu blocos (%2.2f%%) reservado para super-utilizador\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "1º bloco de dados=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Dono da pasta raiz=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Máximo de blocos do sistema de ficheiros=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u grupos de blocos\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u grupo de blocos\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u blocos por grupo, %u clusters por grupo\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u blocos por grupo, %u fragmentos por grupo\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u inodes por grupo\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID do sistema de ficheiros: %s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Seguranças de super-blocos armazenadas em blocos: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s requer \"-O 64bit\"\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "\"%s\" tem de estar antes de \"resize=%u\"\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "desc_size inválido: \"%s\"\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Semente de hash inválida: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Desvio inválido: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "mmp_update_interval inválido: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Nº de super-blocos de segurança inválido: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Parâmetro de passo inválido: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Parâmetro de largura de banda inválido: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Parâmetro de redimensionamento inválido: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "O redimensionamento máximo tem de ser maior que o tamanho do sistema de ficheiros.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "Redimensionamento em linha não suportado com sistemas de ficheiros revisão 0\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "root_owner inválido: \"%s\"\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Codificação inválida: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5505,7 +5555,7 @@ msgstr ""
"\tquotatype=<tipo(s) de quota a activar>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5516,17 +5566,17 @@ msgstr ""
"Aviso: largura de banda RAID %u não é um múltiplo par do passo %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "erro: bandeira de codificação inválida: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "erro: tem de especificar explicitamente uma codificação ao passar bandeiras de codificação\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5535,17 +5585,17 @@ msgstr ""
"Erro de sintaxe no ficheiro de configuração de mke2fs (%s, linha #%d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Opção de sistema de ficheiros definida inválida: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Opção de montagem definida inválida: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5554,7 +5604,7 @@ msgstr ""
"\n"
"O seu ficheiro mke2fs.conf não define o tipo de sistema de ficheiros %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5562,11 +5612,11 @@ msgstr ""
"Provavelmente tem de instalar um ficheiro mke2fs.conf actualizado.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "A abortar...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5577,79 +5627,79 @@ msgstr ""
"Aviso: fs_type %s não definido em mke2fs.conf\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Impossível alocar memória para o novo PATH.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Impossível inicializar o perfil com sucesso (erro: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "tamanho de bloco inválido - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Aviso: tamanho de bloco %d não utilizável na maioria dos sistemas.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "tamanho de cluster inválido - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "\"-R\" é obsoleto, use antes \"-E\""
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "mau comportamento de erro - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Número ilegal para blocos por grupo"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "blocos por grupo tem de ser múltiplo de 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Número ilegal para tamanho de flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "tamanho de flex_bg tem de ser uma potência de 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "tamanho de flex_bg (%lu) tem de ser menor ou igual a 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "proporção de inode inválida %s (mín %d/máx %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "tamanho de inode inválido - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Aviso: a opção -K option é obsoleta e já não devia ser usada. Use antes a opção estendida \"-E nodiscard\"!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "em malloc para bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
@@ -5658,67 +5708,67 @@ msgstr ""
"Aviso: rótulo muito grande; será truncado para \"%s\"\n"
"\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "percentagem de blocos reservados inválida - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "mau núm inodes - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "ao alocar cadeia fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "mau nível de revisão - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "ao tentar criar revisão %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "A opção -t só pode ser usada uma vez"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "A opção -T só pode ser usada uma vez"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "ao tentar abrir dispositivo de diário %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "Tamanho de bloco do dispositivo de diário (%d) menor que o tamanho mínimo de bloco %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "A usar tamanho de bloco do dispositivo de diário: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
-msgstr "Blocos \"%s\" inválidos no dispositivo \"%s\""
+msgstr "blocos \"%s\" inválidos no dispositivo \"%s\""
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "sistema de ficheiros"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
-msgstr "Ao tentar determinar o tamanho do sistema de ficheiros"
+msgstr "ao tentar determinar o tamanho do sistema de ficheiros"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5726,7 +5776,7 @@ msgstr ""
"Impossível determinar o tamanho do dispositivo; tem de especificar\n"
"o tamanho do sistema de ficheiros\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5738,48 +5788,48 @@ msgstr ""
"\tpartição modificada estar ocupada e em uso. Pode precisar de reiniciar\n"
"\tpara voltar a ler a tabela de partições.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "Sistema de ficheiros maior que o tamanho aparente do dispositivo."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Falha ao analisar a lista de tipos de sistemas de ficheiros\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "HURD não suporta a funcionalidade de tipo de ficheiro.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "HURD não suporta a funcionalidade huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "HURD não suporta a funcionalidade metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "HURD não suporta a funcionalidade ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "ao tentar determinar o tamanho do sector do equipamento"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "ao tentar determinar o tamanho do sector físico"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "ao definir tamanho de bloco; muito pequeno para o dispositivo\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Aviso: tamanho de bloco especificado %d menor que tamanho do sector físico do dispositivo %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5788,7 +5838,7 @@ msgstr ""
"%s: tamanho do dispositivo (0x%llx blocos) %s muito grande para expressar\n"
"\tem 32 bits usando um tamanho de bloco de %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5797,80 +5847,85 @@ msgstr ""
"%s: tamanho de dispositivo (0x%llx blocos) %s muito grande para criar\n"
"\tum sistema de ficheiros usando tamanho de bloco %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "fs_types para resolução mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "Funcionalidades de sistema de ficheiros não suportadas com sistemas de ficheiros revisão 0\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Super-blocos esparsos não suportados com sistemas de ficheiros revisão 0\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Diários não suportados com sistemas de ficheiros revisão 0\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "percentagem de blocos reservados inválida - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Extents TÊM de estar activadas para um sistema de ficheiros 64-bit. Passe -O extents para rectificar.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "O tamanho de cluster não pode ser menor que o tamanho de bloco.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "especificar um tamanho de cluster requer a funcionalidade bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "aviso: impossível obter a geometria do dispositivo para %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "alinhamento de %s está desviado em %lu bytes.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Isto pode resultar num desempenho muito pobre, recomenda-se re-particionamento.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s é capaz de DAX, mas o tamanho de blco actual %u é diferente do tamanho de página do sistema %u, logo o sistema de ficheiros não suportará DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "blocos %d-byte muito grandes para o sistema (máx %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "Aviso: blocos %d-byte muito grandes para o sistema (máx %d), forçado a continuar\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Sugestão: use kernel Linux >= 3.18 para estabilidade melhorada das funcionalidades de checksum dos meta-dados e diários.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Codificação de nome de ficheiro a partir de perfil desconhecida: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Bandeiras de codificação a partir do perfil desconhecidas: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5885,24 +5940,16 @@ msgstr ""
"pode não ser o que deseja.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "inodes de %d byte são muito pequenos para a quota do projecto"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"As funcionalidades encrypt e casefold não são compatíveis.\n"
-"Não podem estar activas simultaneamente.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "Impossível suportar a funcionalidade bigalloc sem a funcionalidade extents"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5910,7 +5957,7 @@ msgstr ""
"As funcionalidades resize_inode e meta_bg não são compatíveis.\n"
"Não podem estar activas simultaneamente.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5922,39 +5969,39 @@ msgstr ""
"Veja https://ext4.wiki.kernel.org/index.php/Bigalloc para mais informação\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "redimensionamento de blocos em linha reservado não é suportado em sistemas de ficheiros não-esparsos"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "total de blocos por grupo fora do intervalo"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "Funcionalidade Flex_bg não activa, não pode especificar tamanho flex_bg"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "tamanho de inode inválido %d (mín %d/máx %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "inodes de %d byte muito pequenos para dados em linha; especifique um tamanho maior"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "demasiados inodes (%llu), aumentar a proporção de inodes?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "demasiados inodes (%llu), especifique < 2^32 inodes"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5965,65 +6012,65 @@ msgstr ""
"\tsistema de ficheiros com %llu blocos, especifique inode_ratio (-i) maior\n"
"\tou menor total de inode (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "A descartar blocos de dispositivo: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "falhou - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "ao inicializar contexto de quota"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "ao escrever inodes de quota"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "mau comportamento de erro em perfil - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "em malloc para android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "ao configurar super-bloco"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Extensões não activadas. A árvore de extensões de ficheiro pode ter a checksum, mas os mapas de bloco não. Não activar as extensões reduz a cobertura das checksums de meta-dados. Passe -0 extends para rectificar.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "Suporte a sistemas de ficheiros 64 bits não activado. Os campos maiores oferecidos por esta funcionalidade activam as checksums de máxima força. Passe -0 64bit para rectificar\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "A funcionalidade metadata_csum_seed requer a funcionalidade metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "Descarte com sucesso e devolverá 0s - a saltar limpeza da tabela de inodes\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "so desconhecido - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "A alocar tabelas de grupo: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "ao tentar alocar tabelas de sistemas de ficheiros"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6031,30 +6078,30 @@ msgstr ""
"\n"
"\tao converter bitmap de sub-cluster"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s pode estar mais comprometido pela re-escrita do super-bloco\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "ao pôr a zero o bloco %llu no final do sistema de ficheiros"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "ao reservar blocos para redimensionamento em linha"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "diário"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "A adicionar diário ao dispositivo %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6063,21 +6110,21 @@ msgstr ""
"\n"
"\tao tentar adicionar diário ao dispositivo %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "feito\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "A saltar criação de diário em modo super-only\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "A criar diário (%u blocos): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6085,7 +6132,7 @@ msgstr ""
"\n"
"\tao tentar criar diário"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6093,28 +6140,28 @@ msgstr ""
"\n"
"Erro ao activar funcionalidade de protecção de múltipla montagem."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "Protecção de múltipla montagem activada com intervalo de actualização de %d segundos.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "A copiar ficheiros para o dispositivo: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "ao povoar o sistema de ficheiros"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "A escrever super-blocos e informação de contabilidade do sistema de ficheiros: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "ao escrever e fechar o sistema de ficheiros"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6139,7 +6186,7 @@ msgstr "Ficheiros enormes serão postos a zero\n"
#: misc/mk_hugefiles.c:584
#, c-format
msgid "Creating %lu huge file(s) "
-msgstr "A criar %lu ficheiros enormes."
+msgstr "a criar %lu ficheiros enormes."
#: misc/mk_hugefiles.c:586
#, c-format
@@ -6190,7 +6237,7 @@ msgstr "Impossível obter o tamanho de %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d início=%8d tamanho=%8lu fim=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6198,15 +6245,15 @@ msgstr ""
"\n"
"Esta operação requer um sistema de ficheiros acabado de verificar.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Por favor, execute e2fsck -f no sistema de ficheiros.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Por favor, execute e2fsck -fD no sistema de ficheiros.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6227,20 +6274,20 @@ msgstr ""
"\t[-E extended-option[,...]] [-T last_check_time] [-U UUID]\n"
"\t[-I new_inode_size] [-z undo_file] dispositivo\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Super-bloco de diário não encontrado!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "ao tentar abrir diário externo"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s não é dispositivo de diário.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6249,11 +6296,11 @@ msgstr ""
"Super-bloco de diário corrompido, nr_users\n"
"muito alto (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "UUID do sistema de ficheiros não encontrada no dispositivo de diário.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6261,52 +6308,52 @@ msgstr ""
"Impossível localizar o dispositivo de diário. NÃO foi removido\n"
"Use a opção -f para remover o dispositivo de diário em falta.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Diário removido\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "ao ler bitmaps"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "ao limpar inode de diário"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "ao escrever inode de diário"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(e reiniciar depois!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Após executar e2fsck, por favor execute `resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Por favor, execute `resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "' para activar o modo 64-bit.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "' para desactivar o modo 64-bit.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6314,17 +6361,17 @@ msgstr ""
"AVISO: impossível confirmar o suporte do kernel a metadata_csum_seed.\n"
" Isto requer o Linux >= v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Funcionalidade \"%s\" de limpeza do sistema de ficheiros não suportada.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Funcionalidade \"%s\" de definição do sistema de ficheiros não suportada.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6332,7 +6379,7 @@ msgstr ""
"A funcionalidade has_journal só pode ser limpa quando o sistema de ficheiros estiver\n"
"desmontado ou montado como só-de-leitura.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6340,7 +6387,7 @@ msgstr ""
"A bandeira needs_recovery está definida. Por favor, execute e2fsck antes de limpar\n"
"a bandeira has_journal.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6348,7 +6395,7 @@ msgstr ""
"Definiçã da funcionalidade \"sparse_super\" do sistema de ficheiros não suportada\n"
"em sistemas de ficheiros com meta_bg feature activa.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6358,12 +6405,12 @@ msgstr ""
"pode ser definida se o sistema de ficheiros estiver montado\n"
"seja só de leitura.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Protecção de montagem múltipla activada com intervalo de actualização de %ds.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6371,20 +6418,20 @@ msgstr ""
"A funcionalidade de protecção de montagem múltipla não pode\n"
"ser desactivada se o sistema de ficheiros for só de leitura.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Erro ao ler bitmaps\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "O número mágico no bloco MMP não corresponde. Esperado: %x, actual: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "ao ler bloco MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6392,7 +6439,7 @@ msgstr ""
"Limpar a bandeira flex_bg faria com que o sistema de ficheiros se\n"
"tornasse inconsistente.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6400,46 +6447,54 @@ msgstr ""
"A funcionalidade huge_file só pode ser limpa quando o sistema de ficheiros estiver\n"
"desmontado ou montado só-de-leitura.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Activar as checksums pode levar algum tempo."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Impossível activar metadata_csum num sistema de ficheiros montado!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Extents não estão activas. A árvore de extensão do ficheiro pode aceitar a checksum, mas os mapas de bloco não. Não activar as extensões reduz a cobertura das checksums de meta-dados. Re-execute com -O extent para rectificar.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "Suporte a sistemas de ficheiros de 64-bit não activo. Os campos mais largos oferecidos por esta funcionalidade permitem as checksums de máxima força. Execute resize2fs -b para rectificar.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Desactivar as checksums pode levar algum tempo."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Impossível desactivar metadata_csum num sistema de ficheiros montado!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Impossível activar uninit_bg num sistema de ficheiros montado!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Impossível desactivar uninit_bg num sistema de ficheiros montado!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Impossível activar o modo 64-bit enquanto montado!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Impossível desactivar o modo 64-bit enquanto montado!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Impossível activar a funcionalidade do projecto; tamanho de inode muito pequeno.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6447,11 +6502,11 @@ msgstr ""
"\n"
"Aviso: a opção \"^quota\" sobrpõe-se a argumentos \"-Q\".\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Impossível activar a funcionalidade de encriptação em sistemas de ficheiros com codificação activa.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "A funcionalidade casefold só pode ser activada com o sistema de ficheiros desmontado.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6459,7 +6514,7 @@ msgstr ""
"Definir a funcionalidade \"metadata_csum_seed\" só é suportado\n"
"em sistemas de ficheiroscom a funcionalidade metadata_csum activa.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6467,15 +6522,15 @@ msgstr ""
"UUID alterada desde a activação de metadata_csum. O sistema de ficheiros tem de ser\n"
"desmontado para reescrever com segurança os meta-dados correspondentes à nova UUID.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Recalcular as checksums pode levar algum tempo."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "O sistema de ficheiros já tem um diário.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6484,21 +6539,21 @@ msgstr ""
"\n"
"\tao tentar abrir o diário em %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "A criar diário no dispositivo %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "ao adicionar sistema de ficheiros ao diário em %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "A criar inode de diário: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6506,31 +6561,31 @@ msgstr ""
"\n"
"\tao tentar criar ficheiros de diário"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Impossível activar quota do projecto; tamanho de inode muito pequeno.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "ao inicializar contexto de quota em biblioteca de suporte"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "ao actualizar limites de quota (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "ao escrever ficheiro de quota (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "ao remover ficheiro de quota (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6552,97 +6607,119 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Impossível analisar especificador de data/hora: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "total de montagem mau - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "mau nome de gid/grupo - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "mau intervalo - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "má proporção de bloco reservado - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o só pode ser especificado uma vez"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O só pode ser especificado uma vez"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "mau total de blocos reservados - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "mau nome de uid/utilizador - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "mau tamanho de inode - %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Tamanho de inode tem de ser uma potência de 2- %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "mmp_update_interval muito grande: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
msgstr[0] "A definir intervalo de actualização de protecção de montagem múltipla para %lu segundo\n"
msgstr[1] "A definir intervalo de actualização de protecção de montagem múltipla para %lu segundos\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "A definir bandeira de erro do sistema de ficheiros para forçar fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Passo RAID inválido: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Largura de banda RAID inválida: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Algoritmo hash inválido: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "A predefinir algoritmo hash para %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Impossível alterar a codificação existente\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Codificação inválida: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr ""
+"A definir codificação para \"%s\"\n"
+"\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "A definir encoding_flags como \"%s\"\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6660,14 +6737,16 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
-"Especificou más opções estendidas: %s\n"
+"Especificou más opções.\n"
"\n"
"Opções estendidas são separadas por vírgulas e podem receber um argumento\n"
"\tiniciado por um sinal de igual (\"=\").\n"
"\n"
-"As opções válidas são:\n"
+"As opções estendidas válidas são:\n"
"\tclear_mmp\n"
"\thash_alg=<algoritmo hash>\n"
"\tmount_opts=<opções de montagem estendidas predefinidas>\n"
@@ -6677,32 +6756,35 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<codificação>\n"
+"\tencoding_flags=<bandeiras>\n"
+"\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Falha ao ler bitmap de inode\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Falha ao ler bitmap de bloco\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "blocos a mover"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Falha ao alocar bimap de bloco ao aumentar tamanho do inode\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Sem espaço suficiente para aumentar tamanho do inode \n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Falha ao relocalizar blocos durante o redimensionamento do inode \n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6710,7 +6792,7 @@ msgstr ""
"Erro ao redimensionar o inode.\n"
"Execute e2undo para desfazer as alterações ao sistema de ficheiros. \n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6718,7 +6800,7 @@ msgstr ""
"Se tem a certeza de que o sistema de ficheiros não está em uso em nenhum nó, execute:\n"
"\"tune2fs -f -E clear_mmp {dispositivo}\"\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6727,29 +6809,29 @@ msgstr ""
"A magia do bloco MMP está má. Tente repará-la executando:\n"
"\"e2fsck -f %s\"\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Impossível modificar um dispositivo de diário.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "O tamanho do inode já é %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "Diminuição do tamanho do inode não suportada\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Tamanho de inode inválido %lu (máx %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Redimensionar inodes pode levar algum tempo."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6766,57 +6848,57 @@ msgstr ""
"e depois re-executar este comando. Senão, quaisquer alterações podem ser sobrescritas\n"
"pela recuperação do diário.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "A recuperar diário.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "A definir máximo de total de montagens para %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "A definir total de montagens actual para %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "A definir comportamento de erro para %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "A definir gid de blocos reservados para %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "intervalo entre verificações muito grande (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "A definir intervalo entre verificações para %lu segundos\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "A definir percentagem de blocos reservados para %g%% (%llu blocos)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "total de blocos reservados muito grande (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "A definir total de blocos reservados para %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6824,7 +6906,7 @@ msgstr ""
"\n"
"O sistema de ficheiros já tem super-blocos esparsos.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6834,7 +6916,7 @@ msgstr ""
"Definição de bandeira de super-bloco esparso não suportada\n"
"em sistemas de ficheiros com a funcionalidade meta_bg activa.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6843,7 +6925,7 @@ msgstr ""
"\n"
"Bandeira de super-bloco esparso definida. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6851,49 +6933,49 @@ msgstr ""
"\n"
"Limpeza da bandeira de super-bloco esparso não suportada.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "A definir hora da última verificação do sistema de ficheiros para %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "A definir uid de blocos reservados para %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Erro ao usar clear_mmp. Tem de ser usado com -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "A funcionalidade de quota só pode ser alterada com o sistema de ficheiros desmontado.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Definir a UUID neste sistema de ficheiros pode levar algum tempo."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "A UUID só pode ser alterada com o sistema de ficheiros desmontado.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Se só utiliza kernels mais recentes que o v4.4, execute \"tune2fs -O metadata_csum_seed\" e re-execute este comando.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Formato de UUID inválido\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Tem de actualizar o super-bloco de diário.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "O tamanho de inode só pode ser alterado com o sistema de ficheiros desmontado.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6901,26 +6983,26 @@ msgstr ""
"Alteração de tamanho de inode não suportada em sistemas de ficheiros com a funcionalidade\n"
"flex_bg activa.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "A definir tamanho de inode %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Falha ao alterar o tamanho de inode\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "A definir tamanho de passo para %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "A definir largura de banda para %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "A predefinir opções de montagem estendidas para \"%s\"\n"
@@ -7222,17 +7304,17 @@ msgstr ""
"por sua conta e risco! Use a opção de forçar se pretende continuar de qualquer forma.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "ao abri %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "ao obter estatísticas para %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7241,30 +7323,34 @@ msgstr ""
"Por favor, execute \"e2fsck -f %s\" primeiro.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Tamanho mínimo estimado do sistema de ficheiros: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "Novo tamanho inválido: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "Novo tamanho muito grade para ser expressado em 32 bits\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Novos resultados de tamanho em demasiados descritores de grupos de bloco.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "Novo tamanho menor que o mínimo (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Tamanho de passo inválido"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7275,27 +7361,27 @@ msgstr ""
"Pediu um novo tamanho de %llu blocos.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Impossível definir e limpar a funcionalidade 64bit.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "Impossível alterar a funcionalidade 64bit num sistema de ficheiros maior que 2^32 blocos.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "Impossível alterar a funcionalidade 64bit enquanto o sistema de ficheiros estiver montado.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Por favor, active a funcionalidade de extensões com tune2fs antes de activar a funcionalidade 64bit.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7304,37 +7390,37 @@ msgstr ""
"O sistema de ficheiros já tem %llu (%dk) blocos. Nada a fazer!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "O sistema de ficheiros já é 64-bit.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "O sistema de ficheiros já é 32-bit.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "A converter o sistema de ficheiros para 64-bit.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "A converter o sistema de ficheiros para 32-bit.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "A redimensionar o sistema de ficheiros em %s para %llu (%dk) blocos.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "ao tentar redimensionar %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7343,7 +7429,7 @@ msgstr ""
"Por favor, execute \"e2fsck -fy %s\" para reparar o sistema de ficheiros\n"
"após a operação de redimensionamento abortada.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7352,7 +7438,7 @@ msgstr ""
"O sistema de ficheiros em %s tem agora %llu (%dk) blocos.\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "ao tentar truncar %s"
@@ -7452,9 +7538,10 @@ msgstr "Nunca devia acontecer! old_desc inesperado em super_sparse bg?\n"
msgid "Should never happen: resize inode corrupt!\n"
msgstr "Nunca devia acontecer! inode de redimensionamento corrompido!\n"
+# Version could be replaced by a variable, avoiding a new translation.
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "EXT2FS Library versão 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "EXT2FS Library versão 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8168,6 +8255,10 @@ msgstr "Inode corrompido"
msgid "Inode containing extended attribute value is corrupted"
msgstr "O inode contendo o valor do atributo estendido está corrompido"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Descritores de grupo não carregados"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Profile versão 0.0"
@@ -8292,47 +8383,47 @@ msgstr "Valor inteiro inválido"
msgid "Bad magic value in profile_file_data_t"
msgstr "Mau valor mágico em profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\túltima montagem em %s em %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\túltima montagem em %.*s em %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\túltima montagem em %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tcriado em %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\túltima modificação em %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Encontrada uma tabela de partições %s em %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "O ficheiro %s não existe e não foi especificado um tamanho.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "A criar ficheiro normal %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Impossível abrir %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8340,25 +8431,35 @@ msgstr ""
"\n"
"Aparentemente, o dispositivo não existe; especificou-o correctamente?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s não é um dispositivo especial de bloco.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s contém um sistema de ficheiros %s rotulado \"%s\"\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s contém um sistema de ficheiros %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s contém dados \"%s\"\n"
+#~ msgid ""
+#~ "The encrypt and casefold features are not compatible.\n"
+#~ "They can not be both enabled simultaneously.\n"
+#~ msgstr ""
+#~ "As funcionalidades encrypt e casefold não são compatíveis.\n"
+#~ "Não podem estar activas simultaneamente.\n"
+
+#~ msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+#~ msgstr "Impossível activar a funcionalidade de encriptação em sistemas de ficheiros com codificação activa.\n"
+
#~ msgid "while opening directory \"%s\""
#~ msgstr "ao abrir a pasta \"%s\""
diff --git a/po/sr.gmo b/po/sr.gmo
index af04201f..29918a36 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 3b477fbd..f91c7516 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -3,7 +3,7 @@
# Translators:
# Marko Uskokovic <uskokovic@etf.bg.ac.yu>, 2007—2008.
# Алојз Јакоб <jakobyu@yahoo.com>, 2008.
-# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2016, 2017.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2016, 2017, 2020.
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
#. there is an @-expansion, where strings like "@i" are expanded to
@@ -28,7 +28,14 @@
#. it can expand to either the string "indirect block" (possibly preceded
#. by the word "double" or "triple"), or the string "block #" immediately
#. followed by an integer indicating a block sequence number.
-#.
+#.
+#. Please note that the %-expansion for most e2fsck's problem.c should not
+#. use positional indicators such as %1, since although they look like c-style
+#. format strings, they are NOT c-style format strings, and the positional
+#. indicators (which BTW are GNU extensions and so won't work on other Unix
+#. gettext implementations) won't work with e2fsck's print_e2fsck_message()
+#. function found in e2fsck/message.c
+#.
#. %b <blk> block number
#. %B "indirect block" | "block #"<blkcount> string | string+integer
#. %c <blk2> block number
@@ -68,18 +75,18 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: GNU e2fsprogs 1.43.5\n"
+"Project-Id-Version: GNU e2fsprogs 1.45.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2018-08-18 21:03-0400\n"
-"PO-Revision-Date: 2017-11-05 09:06+0200\n"
+"POT-Creation-Date: 2019-07-14 20:56-0400\n"
+"PO-Revision-Date: 2020-04-01 12:44+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\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"
+"X-Generator: Virtaal 0.7.1\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: e2fsck/badblocks.c:23 misc/mke2fs.c:220
@@ -95,12 +102,12 @@ msgstr "приликом провере исправности и-чвора л
msgid "while reading the bad blocks inode"
msgstr "приликом читања и-чвора лоших блокова"
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1550
-#: e2fsck/unix.c:1664 misc/badblocks.c:1251 misc/badblocks.c:1259
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
+#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1404
-#: misc/e2image.c:1588 misc/e2image.c:1609 misc/mke2fs.c:236
-#: misc/tune2fs.c:2837 misc/tune2fs.c:2931 resize/main.c:414
+#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
+#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
#, c-format
msgid "while trying to open %s"
msgstr "док сам покушавао да отворим „%s“"
@@ -121,13 +128,11 @@ msgstr "приликом освежавања и-чвора лоших блок
#: e2fsck/badblocks.c:133
#, c-format
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
-msgstr ""
-"Упозорење: нађох недозвољени блок „%u“ у и-чвору лошег блока. Очистих га.\n"
+msgstr "Упозорење: нађох недозвољени блок „%u“ у и-чвору лошег блока. Очистих га.\n"
#: e2fsck/dirinfo.c:331
-#, fuzzy
msgid "while freeing dir_info tdb file"
-msgstr "приликом читања датотеке опозива"
+msgstr "приликом ослобађања „dir_info“ тбп датотеке"
#: e2fsck/ehandler.c:55
#, c-format
@@ -204,12 +209,12 @@ msgstr "„BLKFLSBUF ioctl“ није подржано! Не могу да п
msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
msgstr "Употреба: %s [-F] [-I међумеморија_блокова_и-чвора] уређај\n"
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1075
+#: e2fsck/iscan.c:81 e2fsck/unix.c:1082
#, c-format
msgid "while opening %s for flushing"
msgstr "приликом отварања „%s“ за пресипање"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1081 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
#, c-format
msgid "while trying to flush %s"
msgstr "док сам покушавао да пресунем „%s“"
@@ -219,11 +224,11 @@ msgstr "док сам покушавао да пресунем „%s“"
msgid "while trying to open '%s'"
msgstr "док сам покушавао да отворим „%s“"
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1297
+#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1323
msgid "while opening inode scan"
msgstr "приликом отварања скенирања и-чвора"
-#: e2fsck/iscan.c:127 misc/e2image.c:1316
+#: e2fsck/iscan.c:127 misc/e2image.c:1342
msgid "while getting next inode"
msgstr "приликом добављања следећег и-чвора"
@@ -246,7 +251,7 @@ msgstr "%s: нисам нашао исправан суперблок дневн
msgid "%s: journal too short\n"
msgstr "%s: дневник је прекратак\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3786
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: опорављам дневник\n"
@@ -488,7 +493,7 @@ msgstr "група"
#: e2fsck/message.c:488
msgid "project"
-msgstr ""
+msgstr "пројекат"
#: e2fsck/message.c:491
msgid "unknown quota type"
@@ -517,86 +522,86 @@ msgstr "унутрашња грешка: не могу да претражим
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "унутрашња грешка: не могу да претражим запис ЕА и-чвора за „%u“"
-#: e2fsck/pass1.c:356
+#: e2fsck/pass1.c:357
#, c-format
msgid "while hashing entry with e_value_inum = %u"
-msgstr ""
+msgstr "приликом хеширања уноса са „e_value_inum = %u“"
-#: e2fsck/pass1.c:774 e2fsck/pass2.c:1005
+#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
msgid "reading directory block"
msgstr "читам блок директоријума"
-#: e2fsck/pass1.c:1223
+#: e2fsck/pass1.c:1224
msgid "in-use inode map"
msgstr "мапа и-чвора у употреби"
-#: e2fsck/pass1.c:1234
+#: e2fsck/pass1.c:1235
msgid "directory inode map"
msgstr "мапа и-чвора директоријума"
-#: e2fsck/pass1.c:1244
+#: e2fsck/pass1.c:1245
msgid "regular file inode map"
msgstr "мапа и-чвора обичне датотеке"
-#: e2fsck/pass1.c:1253 misc/e2image.c:1272
+#: e2fsck/pass1.c:1254 misc/e2image.c:1282
msgid "in-use block map"
msgstr "мапа блока у употреби"
-#: e2fsck/pass1.c:1262
+#: e2fsck/pass1.c:1263
msgid "metadata block map"
msgstr "мапа блока метаподатака"
-#: e2fsck/pass1.c:1324
+#: e2fsck/pass1.c:1325
msgid "opening inode scan"
msgstr "отварам скенирање и-чворова"
-#: e2fsck/pass1.c:1362
+#: e2fsck/pass1.c:1363
msgid "getting next inode from scan"
msgstr "добављам следећи и-чвор из скенираних"
-#: e2fsck/pass1.c:2066
+#: e2fsck/pass1.c:2067
msgid "Pass 1"
msgstr "1. пролаз"
-#: e2fsck/pass1.c:2127
+#: e2fsck/pass1.c:2128
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "читам индиректне блокове и-чвора „%u“"
-#: e2fsck/pass1.c:2178
+#: e2fsck/pass1.c:2179
msgid "bad inode map"
msgstr "лоша мапа и-чвора"
-#: e2fsck/pass1.c:2218
+#: e2fsck/pass1.c:2219
msgid "inode in bad block map"
msgstr "и-чвор у мапи лошег блока"
-#: e2fsck/pass1.c:2238
+#: e2fsck/pass1.c:2239
msgid "imagic inode map"
msgstr "сликовна мапа и-чвора"
-#: e2fsck/pass1.c:2269
+#: e2fsck/pass1.c:2270
msgid "multiply claimed block map"
msgstr "више пута затражена мапа блока"
-#: e2fsck/pass1.c:2394
+#: e2fsck/pass1.c:2395
msgid "ext attr block map"
msgstr "мапа блокова спољних атрибута"
-#: e2fsck/pass1.c:3637
+#: e2fsck/pass1.c:3640
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): очекивах „%6lu“ а добих физички „%6lu“ (бр. блокова: %lld)\n"
-#: e2fsck/pass1.c:4054
+#: e2fsck/pass1.c:4060
msgid "block bitmap"
msgstr "битмапа блока"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4066
msgid "inode bitmap"
msgstr "битмапа и-чвора"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4072
msgid "inode table"
msgstr "табела и-чвора"
@@ -604,7 +609,7 @@ msgstr "табела и-чвора"
msgid "Pass 2"
msgstr "2. пролаз"
-#: e2fsck/pass2.c:1077 e2fsck/pass2.c:1244
+#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
msgid "Can not continue."
msgstr "Не могу да наставим."
@@ -640,179 +645,187 @@ msgstr "провера_суме_провере_битмапе_и-чвора: Г
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "провера_суме_провере_битмапе_блока: Грешка доделе меморије"
-#: e2fsck/problem.c:51
+#: e2fsck/problem.c:52
msgid "(no prompt)"
msgstr "(нема упита)"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "Fix"
msgstr "Исправи"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Clear"
msgstr "Очисти"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Relocate"
msgstr "Премести"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Allocate"
msgstr "Додели"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Expand"
msgstr "Рашири"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Connect to /lost+found"
msgstr "Повежи се са „/изгубљено+нађено“"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Create"
msgstr "Направи"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Salvage"
msgstr "Сачувај"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Truncate"
msgstr "Скрати"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Clear inode"
msgstr "Очисти и-чвор"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Abort"
msgstr "Прекини"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Split"
msgstr "Подели"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Continue"
msgstr "Настави"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Clone multiply-claimed blocks"
msgstr "Клонирај више пута затражене блокове"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Delete file"
msgstr "Обриши датотеку"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Suppress messages"
msgstr "Потисни поруке"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Unlink"
msgstr "Развежи"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Clear HTree index"
msgstr "Очисти индекс Х-стабла"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Recreate"
msgstr "Поново направи"
-#: e2fsck/problem.c:79
+#: e2fsck/problem.c:72
+msgid "Optimize"
+msgstr "Прилагоди"
+
+#: e2fsck/problem.c:81
msgid "(NONE)"
msgstr "(НИШТА)"
-#: e2fsck/problem.c:80
+#: e2fsck/problem.c:82
msgid "FIXED"
msgstr "ИСПРАВЉЕНО"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:83
msgid "CLEARED"
msgstr "ОЧИШЋЕНО"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "RELOCATED"
msgstr "ПРЕМЕШТЕНО"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "ALLOCATED"
msgstr "ДОДЕЉЕНО"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "EXPANDED"
msgstr "РАШИРЕНО"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "RECONNECTED"
msgstr "ПОНОВО_ПОВЕЗАНО"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "CREATED"
msgstr "НАПРАВЉЕНО"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "SALVAGED"
msgstr "СПАШЕНО"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "TRUNCATED"
msgstr "СКРАЋЕНО"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "INODE CLEARED"
msgstr "ОБРИСАН И-ЧВОР"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "ABORTED"
msgstr "ПРЕКИНУТО"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "SPLIT"
msgstr "ПОДЕЉЕНО"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "CONTINUING"
msgstr "НАСТАВЉАМ"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "ВИШЕ ПУТА ЗАТРАЖЕНИ БЛОКОВИ СУ КЛОНИРАНИ"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "FILE DELETED"
msgstr "ОБРИСАНА ДАТОТЕКА"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "SUPPRESSED"
msgstr "ПОТИСНУТО"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "UNLINKED"
msgstr "РАЗВЕЗАНО"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "HTREE INDEX CLEARED"
msgstr "ИНДЕКС Х-СТАБЛА ЈЕ ОЧИШЋЕН"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "WILL RECREATE"
msgstr "НАПРАВИЋУ ПОНОВО"
+#: e2fsck/problem.c:101
+msgid "WILL OPTIMIZE"
+msgstr "ПРИЛАГОДИЋУ"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:112
+#: e2fsck/problem.c:115
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "Битмапа блока за групу „%g“ није у групи. (%b. блок)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:116
+#: e2fsck/problem.c:119
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "Битмапа и-чвора за групу „%g“ није у групи. (%b. блок)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:121
+#: e2fsck/problem.c:124
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -829,7 +842,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:127
+#: e2fsck/problem.c:130
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -842,11 +855,9 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Не могу да прочитам супер-блок или не описује исправан систем датотека "
-"„екст2/екст3/екст4“.\n"
+"Не могу да прочитам супер-блок или не описује исправан систем датотека „екст2/екст3/екст4“.\n"
"Ако је уређај исправан и ако стварно садржи „екст2/екст3/екст4“\n"
-"систем датотека (а не разменску партицију или усд или нешто друго), онда је "
-"супер-блок\n"
+"систем датотека (а не разменску партицију или усд или нешто друго), онда је супер-блок\n"
"оштећен, онда морате покренути „e2fsck“ са неким другим супер-блоком:\n"
" „e2fsck“ -b 8193 <уређај>\n"
" или\n"
@@ -856,7 +867,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:138
+#: e2fsck/problem.c:141
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -869,7 +880,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:145
+#: e2fsck/problem.c:148
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -880,18 +891,18 @@ msgstr ""
"од величине блока.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:152
+#: e2fsck/problem.c:155
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "Блокова_по_групи суперблока = %b, треба да буде %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:157
+#: e2fsck/problem.c:160
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "Први_блок_података суперблока = %b, треба да буде %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:162
+#: e2fsck/problem.c:165
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -899,8 +910,8 @@ msgstr ""
"Систем датотека нема УУИД; стварам га.\n"
"\n"
-#: e2fsck/problem.c:167
-#, c-format
+#: e2fsck/problem.c:171
+#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
"of the inode table require relocation, you may wish to try\n"
@@ -917,48 +928,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:176
+#: e2fsck/problem.c:180
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Нађох оштећење у супер-блоку. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:181
-#, c-format
+#: e2fsck/problem.c:186
+#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Грешка одређивања величине физичког уређаја: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:191
msgid "@i count in @S is %i, @s %j.\n"
msgstr "Број и-чворова у суперблоку је %i, треба бити %j.\n"
-#: e2fsck/problem.c:190
+#: e2fsck/problem.c:195
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Хурд не подржава функцију врсте датотеке.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:195
-#, c-format
+#: e2fsck/problem.c:201
+#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "Суперблок има неисправан дневник (%i. и-чвор).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:200
+#: e2fsck/problem.c:206
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Спољни дневник има више корисника система датотека (није подржано).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:205
+#: e2fsck/problem.c:211
msgid "Can't find external @j\n"
msgstr "Не могу да нађем спољни дневник\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:210
+#: e2fsck/problem.c:216
msgid "External @j has bad @S\n"
msgstr "Спољни дневник има лош суперблок\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:215
+#: e2fsck/problem.c:221
msgid "External @j does not support this @f\n"
msgstr "Спољни дневник не подржава овај систем датотека\n"
@@ -966,104 +977,92 @@ msgstr "Спољни дневник не подржава овај систем
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:220
+#: e2fsck/problem.c:226
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
-"It is likely that your copy of e2fsck is old and/or doesn't support this @j "
-"format.\n"
+"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
"It is also possible the @j @S is corrupt.\n"
msgstr ""
"Суперблок дневника система датотека је непознате врсте „%N“ (неподржано).\n"
-"Највероватније да је ваш примерак „e2fsck“-а стар и/или не подржава овај "
-"запис дневника.\n"
+"Највероватније да је ваш примерак „e2fsck“-а стар и/или не подржава овај запис дневника.\n"
"Такође може бити да је оштећен суперблок дневника.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:228
+#: e2fsck/problem.c:235
msgid "@j @S is corrupt.\n"
msgstr "Суперблок дневника је оштећен.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:233
+#: e2fsck/problem.c:240
msgid "@S has_@j flag is clear, but a @j is present.\n"
-msgstr ""
-"Заставица суперблока „има_дневник“ је поништена, али је дневник присутан.\n"
+msgstr "Заставица суперблока „има_дневник“ је поништена, али је дневник присутан.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:238
+#: e2fsck/problem.c:245
msgid "@S needs_recovery flag is set, but no @j is present.\n"
-msgstr ""
-"Заставица суперблока „захтева_опоравак“ је постављена, али нема никаквог "
-"дневника.\n"
+msgstr "Заставица суперблока „захтева_опоравак“ је постављена, али нема никаквог дневника.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:243
+#: e2fsck/problem.c:250
msgid "@S needs_recovery flag is clear, but @j has data.\n"
-msgstr ""
-"Заставица суперблока „захтева_опоравак“ је поништена, али дневник садржи "
-"податке.\n"
+msgstr "Заставица суперблока „захтева_опоравак“ је поништена, али дневник садржи податке.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:248
+#: e2fsck/problem.c:255
msgid "Clear @j"
msgstr "Очисти дневник"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:253 e2fsck/problem.c:764
+#: e2fsck/problem.c:260 e2fsck/problem.c:796
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
-msgstr ""
-"Систем датотека има постављену заставицу функције, али је ревизија 0 система "
-"датотека. "
+msgstr "Систем датотека има постављену заставицу функције, али је ревизија 0 система датотека. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:258
+#: e2fsck/problem.c:265
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
-msgstr ""
-"%s напуштених и-чворова %i (уид=%Iu, гид=%Ig, режим=%Im, величина=%Is)\n"
+msgstr "%s напуштених и-чворова %i (уид=%Iu, гид=%Ig, режим=%Im, величина=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:263
+#: e2fsck/problem.c:270
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "Нађох недозвољени „%B“ (%b) у напуштеном и-чвору %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:268
+#: e2fsck/problem.c:275
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Нађох већ очишћени „%B“ (%b) у напуштеном и-чвору %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:273
-#, c-format
+#: e2fsck/problem.c:281
+#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "Недозвољени напуштени и-чвор „%i“ у суперблоку.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:278
-#, c-format
+#: e2fsck/problem.c:287
+#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "Недозвољени и-чвор „%i“ на списку напуштених и-чворова.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:283
+#: e2fsck/problem.c:292
msgid "@j @S has an unknown read-only feature flag set.\n"
-msgstr ""
-"Суперблок дневника има постављену непознату заставицу функције само-читања.\n"
+msgstr "Суперблок дневника има постављену непознату заставицу функције само-читања.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:288
+#: e2fsck/problem.c:297
msgid "@j @S has an unknown incompatible feature flag set.\n"
-msgstr ""
-"Суперблок дневника има постављену непознату несагласну заставицу функције.\n"
+msgstr "Суперблок дневника има постављену непознату несагласну заставицу функције.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:293
+#: e2fsck/problem.c:302
msgid "@j version not supported by this e2fsck.\n"
msgstr "Овај „e2fsck“ не подржава издање дневника.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:298
-#, c-format
+#: e2fsck/problem.c:308
+#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
"\n"
@@ -1073,8 +1072,8 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:303
-#, c-format
+#: e2fsck/problem.c:314
+#, no-c-format
msgid ""
"Error moving @j: %m\n"
"\n"
@@ -1085,7 +1084,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:319
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1096,20 +1095,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:325
msgid "Run @j anyway"
msgstr "Ипак покрени дневник"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:330
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
-msgstr ""
-"Заставица опоравка није постављена у суперблоку резерве, тако да ипак "
-"покрећем дневник.\n"
+msgstr "Заставица опоравка није постављена у суперблоку резерве, тако да ипак покрећем дневник.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:324
+#: e2fsck/problem.c:335
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1119,30 +1116,27 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:341
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
msgstr ""
-"На систему датотека није укључена промена величине и-чвора, али "
-"„с_резервисани_гдт_блокови“\n"
+"На систему датотека није укључена промена величине и-чвора, али „с_резервисани_гдт_блокови“\n"
"је %N; треба бити нула. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:336
+#: e2fsck/problem.c:347
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
-msgstr ""
-"Није укључена промена величине и-чвора, али промена величине и-чвора није "
-"нула. "
+msgstr "Није укључена промена величине и-чвора, али промена величине и-чвора није нула. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:352
msgid "Resize @i not valid. "
msgstr "Промена величине и-чвора није исправна. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:346
+#: e2fsck/problem.c:357
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1152,7 +1146,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:351
+#: e2fsck/problem.c:362
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1161,14 +1155,14 @@ msgstr ""
"\tсада = %T) је у будућности.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:356
-#, c-format
+#: e2fsck/problem.c:368
+#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "Погодак суперблока за спољни суперблок треба бити %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:361
+#: e2fsck/problem.c:373
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1177,292 +1171,274 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:366
+#: e2fsck/problem.c:378
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "Сума провере описника групе „%g“ је %04x, треба бити %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:371
-#, c-format
+#: e2fsck/problem.c:384
+#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
-msgstr ""
-"Описник групе „%g“ је означен као непокренут без постављене функције.\n"
+msgstr "Описник групе „%g“ је означен као непокренут без постављене функције.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:376
+#: e2fsck/problem.c:389
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "Описник групе „%g“ има неисправан број некоришћених и-чворова %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:381
+#: e2fsck/problem.c:394
msgid "Last @g @b @B uninitialized. "
msgstr "Није покренута битмапа последњег блока групе. "
-#: e2fsck/problem.c:386
-#, c-format
+#: e2fsck/problem.c:400
+#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Пренос дневника „%i“ беше оштећен, одговор је прекинут.\n"
-#: e2fsck/problem.c:391
+#: e2fsck/problem.c:405
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Заставица „испробај_сд“ је постављена (а и екст4 је доступан). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:396
+#: e2fsck/problem.c:410
msgid ""
"@S last mount time is in the future.\n"
-"\t(by less than a day, probably due to the hardware clock being incorrectly "
-"set)\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
msgstr ""
"Време последњег качења суперблока је у будућности.\n"
-"\t(мање од једног дана, вероватно услед погрешно подешеног хардверског "
-"сата)\n"
+"\t(мање од једног дана, вероватно услед погрешно подешеног хардверског сата)\n"
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:402
+#: e2fsck/problem.c:416
msgid ""
"@S last write time is in the future.\n"
-"\t(by less than a day, probably due to the hardware clock being incorrectly "
-"set)\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
msgstr ""
"Време последњег писања суперблока је у будућности.\n"
-"\t(мање од једног дана, вероватно услед погрешно подешеног хардверског "
-"сата)\n"
+"\t(мање од једног дана, вероватно услед погрешно подешеног хардверског сата)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:408
+#: e2fsck/problem.c:422
msgid "One or more @b @g descriptor checksums are invalid. "
-msgstr ""
-"Неисправна је једна или неколико сума провере описника групе блокова. "
+msgstr "Неисправна је једна или неколико сума провере описника групе блокова. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:413
+#: e2fsck/problem.c:427
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Постављам број слободних и-чворова на %j (беше %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:418
+#: e2fsck/problem.c:432
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Постављам број слободних блокова на %c (беше %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:423
+#: e2fsck/problem.c:437
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Скривам %U квоту и-чвора %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:428
+#: e2fsck/problem.c:442
msgid "@S has invalid MMP block. "
msgstr "Супер-блок има неисправан ММП блок. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:433
+#: e2fsck/problem.c:447
msgid "@S has invalid MMP magic. "
msgstr "Супер-блок има неисправну ММП магију. "
-#: e2fsck/problem.c:438
-#, c-format
+#: e2fsck/problem.c:453
+#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "екст2сд_отвори2: %m\n"
-#: e2fsck/problem.c:443
-#, c-format
+#: e2fsck/problem.c:459
+#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "екст2сд_провери_описник: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:449
-msgid ""
-"@S metadata_csum supersedes uninit_bg; both feature bits cannot be set "
-"simultaneously."
-msgstr ""
-"„metadata_csum“ суперблока замењује „uninit_bg“; битови обе функције се не "
-"могу подесити истовремено."
+#: e2fsck/problem.c:465
+msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
+msgstr "„metadata_csum“ суперблока замењује „uninit_bg“; битови обе функције се не могу подесити истовремено."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:455
-#, fuzzy
+#: e2fsck/problem.c:471
msgid "@S MMP @b checksum does not match. "
-msgstr "Сума провере ММП блока суперблока не одговара ММП блоку. "
+msgstr "Сума провере ММП блока суперблока не одговара. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:460
+#: e2fsck/problem.c:476
msgid "@S 64bit @f needs extents to access the whole disk. "
-msgstr ""
-"Суперблоку 64-битног система датотека су потребни распони да би приступио "
-"читавом диску. "
+msgstr "Суперблоку 64-битног система датотека су потребни распони да би приступио читавом диску. "
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:481
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "Први_мета_бг је превелик. (%N, највећа вредност је %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:470
+#: e2fsck/problem.c:486
msgid "External @j @S checksum does not match @S. "
msgstr "Сума провере суперблока спољног дневника не одговара суперблоку. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:475
+#: e2fsck/problem.c:491
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "„metadata_csum_seed“ суперблок није неопходан без „metadata_csum“."
-#: e2fsck/problem.c:480
-#, c-format
+#: e2fsck/problem.c:497
+#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Грешка покретања контекста квоте у библиотеци подршке: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:485
+#: e2fsck/problem.c:502
msgid "Bad required extra isize in @S (%N). "
msgstr "Лоша затражена додатна и-величина у суперблоку (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:490
+#: e2fsck/problem.c:507
msgid "Bad desired extra isize in @S (%N). "
msgstr "Лоша жељена додатна и-величина у суперблоку (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:495
+#: e2fsck/problem.c:512
msgid "Invalid %U @q @i %i. "
msgstr "Неисправна %U квота и-чвора %i. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:500
+#: e2fsck/problem.c:517
msgid "@S would have too many inodes (%N).\n"
-msgstr ""
+msgstr "Супер блок ће имати превише и-чворова (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:505
+#: e2fsck/problem.c:522
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
msgstr ""
+"Функције Промени_величину_и-чвора и мета_бг су укључене. Те функције\n"
+"нису сагласне. Треба да искључите промену_величине_и-чвора. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:513
+#: e2fsck/problem.c:530
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "1. пролаз: Проверавам и-чворове, блокове, и величине\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:534
msgid "@r is not a @d. "
msgstr "корени и-чвор није директоријум. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:539
msgid "@r has dtime set (probably due to old mke2fs). "
-msgstr ""
-"корени и-чвор има подешено д-време (вероватно због старог „mke2fs“-а). "
+msgstr "корени и-чвор има подешено д-време (вероватно због старог „mke2fs“-а). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:527
+#: e2fsck/problem.c:544
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "Резервисани и-чвор „%i“ (%Q) има неисправан режим. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:532
-#, c-format
+#: e2fsck/problem.c:550
+#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "обрисани и-чвор „%i“ има нулто д-време. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:537
-#, c-format
+#: e2fsck/problem.c:556
+#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "и-чвор „%i“ је у употреби, али има постављено д-време. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:542
-#, c-format
+#: e2fsck/problem.c:562
+#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "и-чвор „%i“ је директоријум нулте дужине. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:547
+#: e2fsck/problem.c:567
msgid "@g %g's @b @B at %b @C.\n"
-msgstr ""
-"битмапа блокова групе „%g“ на „%b“ се сукобљава са неким другим блоком "
-"система датотека.\n"
+msgstr "битмапа блокова групе „%g“ на „%b“ се сукобљава са неким другим блоком система датотека.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:552
+#: e2fsck/problem.c:572
msgid "@g %g's @i @B at %b @C.\n"
-msgstr ""
-"битмапа и-чворова групе „%g“ на „%b“ се сукобљава са неким другим блоком "
-"система датотека.\n"
+msgstr "битмапа и-чворова групе „%g“ на „%b“ се сукобљава са неким другим блоком система датотека.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:557
+#: e2fsck/problem.c:577
msgid "@g %g's @i table at %b @C.\n"
-msgstr ""
-"табела и-чвора групе „%g“ на „%b“ се сукобљава са неким другим блоком "
-"система датотека.\n"
+msgstr "табела и-чвора групе „%g“ на „%b“ се сукобљава са неким другим блоком система датотека.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:582
msgid "@g %g's @b @B (%b) is bad. "
msgstr "битмапа блокова (%b) групе „%g“ је лоша. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:587
msgid "@g %g's @i @B (%b) is bad. "
msgstr "битмапа и-чвора (%b) групе „%g“ је лоша. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:592
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "и-чвор %i, и_величина је %Is, треба бити %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:597
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "и-чвор %i, и_блокова је %Ib, треба бити %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:602
msgid "@I %B (%b) in @i %i. "
msgstr "недозвољено „%B“ (%b) у и-чвору %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:607
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "„%B“ (%b) преклапа метаподатке система датотека у и-чвору %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:592
-#, c-format
+#: e2fsck/problem.c:613
+#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "и-чвор „%i“ има недозвољен(е) блок(ове). "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:597
-#, c-format
+#: e2fsck/problem.c:619
+#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "Превише недозвољених блокова у и-чвору %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:624
msgid "@I %B (%b) in bad @b @i. "
msgstr "Недозвољено „%B“ (%b) у и-чвору лошег блока. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:629
msgid "Bad @b @i has illegal @b(s). "
msgstr "и-чвор лошег блока има недозвољен(е) блок(ове). "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:612
+#: e2fsck/problem.c:634
msgid "Duplicate or bad @b in use!\n"
msgstr "Удвостручени или лош блок је у употреби!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:617
+#: e2fsck/problem.c:639
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Лош блок „%b“ се користи као индиректни блок и-чвора лошег блока. "
@@ -1470,7 +1446,7 @@ msgstr "Лош блок „%b“ се користи као индиректни
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:622
+#: e2fsck/problem.c:644
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1484,7 +1460,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:651
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1495,7 +1471,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:656
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1506,281 +1482,267 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:640
+#: e2fsck/problem.c:662
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Примарни супер-блок (%b) је на списку лоших блокова.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:645
+#: e2fsck/problem.c:667
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Блок „%b“ у описницима примарне групе је на списку лоших блокова\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:673
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Упозорење: Супер-блок (%b) групе „%g“ је лош.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:657
+#: e2fsck/problem.c:679
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Упозорење: Умножак групе „%g“ описника групе има лош блок (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:663
+#: e2fsck/problem.c:685
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
-msgstr ""
-"Грешка програма? Блок бр. %b је затражен без разлога у "
-"обради_лоших_блокова.\n"
+msgstr "Грешка програма? Блок бр. %b је затражен без разлога у обради_лоших_блокова.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:669
+#: e2fsck/problem.c:691
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
-msgstr ""
-"Грешка доделе %N непрекидна(их) блока(ова) у групи блока „%g“ за „%s“: %m\n"
+msgstr "Грешка доделе %N непрекидна(их) блока(ова) у групи блока „%g“ за „%s“: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:674
-#, c-format
+#: e2fsck/problem.c:697
+#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "грешка доделе међумеморије блока за премештање „%s“\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:702
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Премештам „%g“ групе „%s“ из „%b“ у „%c“...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:684
-#, c-format
+#: e2fsck/problem.c:708
+#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Премештам „%g“ групе „%s“ у „%c“...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:689
+#: e2fsck/problem.c:713
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Упозорење: не могу да прочитам блок „%b“ од „%s“: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:694
+#: e2fsck/problem.c:718
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Упозорење: не могу да упишем блок „%b“ од „%s“: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:699 e2fsck/problem.c:1776
+#: e2fsck/problem.c:723 e2fsck/problem.c:1871
msgid "@A @i @B (%N): %m\n"
msgstr "грешка доделе битмапе и-чвора (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:704
+#: e2fsck/problem.c:728
msgid "@A @b @B (%N): %m\n"
msgstr "грешка доделе битмапе блокова (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:709
-#, c-format
+#: e2fsck/problem.c:734
+#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "грешка доделе података везе и-броја: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:714
-#, c-format
+#: e2fsck/problem.c:740
+#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "грешка доделе низа блокова директоријума: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:719
-#, c-format
+#: e2fsck/problem.c:746
+#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Грешка приликом скенирања и-чворова (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:724
-#, c-format
+#: e2fsck/problem.c:752
+#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Грешка приликом понављања на блоковима у и-чвору „%i“: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:729
+#: e2fsck/problem.c:757
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Грешка смештања података о броју и-чворова (и-чвор=%i, број=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:762
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
-msgstr ""
-"Грешка смештања података блока директоријума (и-чвор=%i, блок=%b, број=%N): "
-"%m\n"
+msgstr "Грешка смештања података блока директоријума (и-чвор=%i, блок=%b, број=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:740
-#, c-format
+#: e2fsck/problem.c:769
+#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Грешка читања и-чвора „%i“: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:748
-#, c-format
+#: e2fsck/problem.c:778
+#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "и-чвор „%i“ има постављену и-магичну заставицу. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:753
-#, c-format
+#: e2fsck/problem.c:784
+#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
"or append-only flag set. "
msgstr ""
-"Нарочита датотека (уређај/прикључница/пупи/симболичка_веза) (и-чвор „%i“) "
-"има непроменљиву\n"
+"Нарочита датотека (уређај/прикључница/пупи/симболичка_веза) (и-чвор „%i“) има непроменљиву\n"
"или постављену заставицу прикачињања-само. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:759
-#, c-format
+#: e2fsck/problem.c:791
+#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
-msgstr ""
-"Нарочити и-чвор „%i“ (уређај/прикључница/пупи) има не-нулту величину. "
+msgstr "Нарочити и-чвор „%i“ (уређај/прикључница/пупи) има не-нулту величину. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:801
msgid "@j @i is not in use, but contains data. "
msgstr "и-чвор дневника није у употреби, али садржи податке. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:774
+#: e2fsck/problem.c:806
msgid "@j is not regular file. "
msgstr "дневник није обична датотека. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:779
-#, c-format
+#: e2fsck/problem.c:812
+#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "и-чвор „%i“ беше део списка напуштених и-чворова. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:785
+#: e2fsck/problem.c:818
msgid "@is that were part of a corrupted orphan linked list found. "
-msgstr ""
-"Нађох и-чворове који су били део оштећеног напуштеног свезаног списка. "
+msgstr "Нађох и-чворове који су били део оштећеног напуштеног свезаног списка. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:790
+#: e2fsck/problem.c:823
msgid "@A refcount structure (%N): %m\n"
msgstr "грешка доделе структуре броја упуте (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:795
+#: e2fsck/problem.c:828
msgid "Error reading @a @b %b for @i %i. "
msgstr "Грешка читања блока „%b“ проширеног атрибута за и-чвор „%i“. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:800
+#: e2fsck/problem.c:833
msgid "@i %i has a bad @a @b %b. "
msgstr "и-чвор „%i“ има лош блок „%b“ проширеног атрибута. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:805
+#: e2fsck/problem.c:838
msgid "Error reading @a @b %b (%m). "
msgstr "Грешка читања блока „%b“ проширеног атрибута (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:810
+#: e2fsck/problem.c:843
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "блок „%b“ проширеног атрибута има број упуте %r, треба бити %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:815
+#: e2fsck/problem.c:848
msgid "Error writing @a @b %b (%m). "
msgstr "Грешка писања блока „%b“ проширеног атрибута (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:820
+#: e2fsck/problem.c:853
msgid "@a @b %b has h_@bs > 1. "
msgstr "блок „%b“ проширеног атрибута има h_блокове > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:825
+#: e2fsck/problem.c:858
msgid "@A @a region allocation structure. "
msgstr "грешка доделе структуре доделе области проширеног атрибута. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:830
+#: e2fsck/problem.c:863
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "блок „%b“ проширеног атрибута је оштећен (сукоб доделе). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:835
+#: e2fsck/problem.c:868
msgid "@a @b %b is corrupt (@n name). "
msgstr "блок „%b“ проширеног атрибута је оштећен (неисправан назив). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:840
+#: e2fsck/problem.c:873
msgid "@a @b %b is corrupt (@n value). "
msgstr "блок „%b“ проширеног атрибута је оштећен (неисправна вредност). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:845
-#, c-format
+#: e2fsck/problem.c:879
+#, no-c-format
msgid "@i %i is too big. "
msgstr "и-чвор „%i“ је превелик. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:849
+#: e2fsck/problem.c:883
msgid "%B (%b) causes @d to be too big. "
msgstr "„%B“ (%b) доводи до тога да директоријум буде превелик. "
-#: e2fsck/problem.c:854
+#: e2fsck/problem.c:888
msgid "%B (%b) causes file to be too big. "
msgstr "„%B“ (%b) доводи до тога да датотека буде превелика. "
-#: e2fsck/problem.c:859
+#: e2fsck/problem.c:893
msgid "%B (%b) causes symlink to be too big. "
msgstr "„%B“ (%b) доводи до тога да симболичка веза буде превелика. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:864
-#, c-format
+#: e2fsck/problem.c:899
+#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
-msgstr ""
-"и-чвор „%i“ има постављену заставицу „INDEX_FL“ на систему датотека без "
-"подршке х-стабла.\n"
+msgstr "и-чвор „%i“ има постављену заставицу „INDEX_FL“ на систему датотека без подршке х-стабла.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:869
-#, c-format
+#: e2fsck/problem.c:905
+#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
-msgstr ""
-"и-чвор „%i“ има постављену заставицу „INDEX_FL“ али није директоријум.\n"
+msgstr "и-чвор „%i“ има постављену заставицу „INDEX_FL“ али није директоријум.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:874
-#, c-format
+#: e2fsck/problem.c:911
+#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "и-чвор „%i“ директоријума Х-СТАБЛА има неисправан корени чвор.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:916
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "и-чвор „%i“ директоријума Х-СТАБЛА има неподржано издање хеша (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:884
-#, c-format
+#: e2fsck/problem.c:922
+#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
-msgstr ""
-"и-чвор „%i“ директоријума Х-СТАБЛА користи неодговарајућу заставицу кореног "
-"чвора х-стабла.\n"
+msgstr "и-чвор „%i“ директоријума Х-СТАБЛА користи неодговарајућу заставицу кореног чвора х-стабла.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:889
+#: e2fsck/problem.c:927
msgid "@h %i has a tree depth (%N) which is too big\n"
-msgstr ""
-"и-чвор „%i“ директоријума Х-СТАБЛА има дубину стабла (%N) која је превелика\n"
+msgstr "и-чвор „%i“ директоријума Х-СТАБЛА има дубину стабла (%N) која је превелика\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:895
+#: e2fsck/problem.c:933
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1789,62 +1751,55 @@ msgstr ""
"метаподацима система датотека. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:901
-#, c-format
+#: e2fsck/problem.c:940
+#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Није успело (поновно)стварање промене величине и-чвора: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:906
+#: e2fsck/problem.c:945
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "и-чвор „%i“ има додатну величину (%IS) која је неисправна\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:950
msgid "@a in @i %i has a namelen (%N) which is @n\n"
-msgstr ""
-"проширени атрибут у и-чвору „%i“ има дужину назива (%N) која је неисправна\n"
+msgstr "проширени атрибут у и-чвору „%i“ има дужину назива (%N) која је неисправна\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:955
msgid "@a in @i %i has a value offset (%N) which is @n\n"
-msgstr ""
-"проширени атрибут у и-чвору „%i“ има померај вредности (%N) који је "
-"неисправан\n"
+msgstr "проширени атрибут у и-чвору „%i“ има померај вредности (%N) који је неисправан\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:921
+#: e2fsck/problem.c:960
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
-msgstr ""
-"проширени атрибут у и-чвору „%i“ има блок вредности (%N) који је неисправан "
-"(мора бити 0)\n"
+msgstr "проширени атрибут у и-чвору „%i“ има блок вредности (%N) који је неисправан (мора бити 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:926
+#: e2fsck/problem.c:965
msgid "@a in @i %i has a value size (%N) which is @n\n"
-msgstr ""
-"проширени атрибут у и-чвору „%i“ има величину вредности (%N) која је "
-"неисправна\n"
+msgstr "проширени атрибут у и-чвору „%i“ има величину вредности (%N) која је неисправна\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:931
+#: e2fsck/problem.c:970
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "проширени атрибут у и-чвору „%i“ има хеш (%N) који је неисправан\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:936
+#: e2fsck/problem.c:975
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "и-чвор „%i“ је %It али изгледа као да је стваран директоријум.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:941
-#, c-format
+#: e2fsck/problem.c:981
+#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Грешка приликом читања стабла распона у и-чвору „%i“: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:946
+#: e2fsck/problem.c:986
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1854,7 +1809,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:952
+#: e2fsck/problem.c:992
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1864,7 +1819,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:957
+#: e2fsck/problem.c:997
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1873,35 +1828,31 @@ msgstr ""
"\t(логички блок „%c“, физички блок „%b“, неисправне дужине %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:962
-#, c-format
+#: e2fsck/problem.c:1003
+#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
-msgstr ""
-"и-чвор „%i“ има постављену заставицу „EXTENTS_FL“ на систему датотека без "
-"подршке распона.\n"
+msgstr "и-чвор „%i“ има постављену заставицу „EXTENTS_FL“ на систему датотека без подршке распона.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:967
-#, c-format
+#: e2fsck/problem.c:1009
+#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
-msgstr ""
-"и-чвор „%i“ је у запису распона, али супер-блоку недостаје функција "
-"„EXTENTS“\n"
+msgstr "и-чвор „%i“ је у запису распона, али супер-блоку недостаје функција „EXTENTS“\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:972
-#, c-format
+#: e2fsck/problem.c:1015
+#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "и-чвору „%i“ недостаје „EXTENT_FL“, али је у запису распона\n"
-#: e2fsck/problem.c:977
-#, c-format
+#: e2fsck/problem.c:1021
+#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Брза симболичка веза „%i“ има постављено „EXTENT_FL“. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:982
+#: e2fsck/problem.c:1026
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1910,39 +1861,39 @@ msgstr ""
"\t(неисправан логички блок „%c“, физички блок „%b“, дужина %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:1030
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "и-чвор „%i“ има неисправан чвор распона (блок „%b“, лблк %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:991
-#, c-format
+#: e2fsck/problem.c:1036
+#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Грешка претварања битмапе блока подкластера: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:996
+#: e2fsck/problem.c:1041
msgid "@q @i is not a regular file. "
msgstr "квота и-чвора није обична датотека. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1001
+#: e2fsck/problem.c:1046
msgid "@q @i is not in use, but contains data. "
msgstr "и-чвор квоте није у употреби, али садржи податке. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1006
+#: e2fsck/problem.c:1051
msgid "@q @i is visible to the user. "
msgstr "и-чвор квоте је видљив кориснику. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1011
+#: e2fsck/problem.c:1056
msgid "The bad @b @i looks @n. "
msgstr "и-чвор лошег блока изгледа неисправно. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1016
+#: e2fsck/problem.c:1061
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1951,44 +1902,41 @@ msgstr ""
"\t(неисправан логички блок „%c“, физички блок „%b“)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1021
-#, c-format
+#: e2fsck/problem.c:1067
+#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "и-чвор %i изгледа да садржи ђубре. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1026
-#, c-format
+#: e2fsck/problem.c:1073
+#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "и-чвор %i пролази провере, али сума провере не одговара и-чвору. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1031
-#, c-format
+#: e2fsck/problem.c:1079
+#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "проширени атрибута и-чвора %i је оштећен (сукоб доделе). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1039
+#: e2fsck/problem.c:1087
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
msgstr ""
-"блок распона и-чвора %i је прошао провере, али сума провере не одговара "
-"логичком\n"
+"блок распона и-чвора %i је прошао провере, али сума провере не одговара логичком\n"
"\t(блоку распона „%c“, физичком блоку „%b“, дужини %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1048
+#: e2fsck/problem.c:1096
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
-msgstr ""
-"и-чвор %i блока %b проширеног атрибута пролази провере, али сума провере не "
-"одговара и-чвору. "
+msgstr "и-чвор %i блока %b проширеног атрибута пролази провере, али сума провере не одговара и-чвору. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1053
+#: e2fsck/problem.c:1101
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1998,7 +1946,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1059
+#: e2fsck/problem.c:1107
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -2007,64 +1955,54 @@ msgstr ""
"\t(логички блок „%c“, физички блок „%b“, дужина %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1064
-#, c-format
+#: e2fsck/problem.c:1113
+#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
-msgstr ""
-"и-чвор %i има уграђене податке, али суперблоку недостаје функција "
-"„INLINE_DATA“\n"
+msgstr "и-чвор %i има уграђене податке, али суперблоку недостаје функција „INLINE_DATA“\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1069
-#, c-format
+#: e2fsck/problem.c:1119
+#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
-msgstr ""
-"и-чвор %i има постављену заставицу „INLINE_DATA_FL“ на систему датотека без "
-"подршке уграђених података.\n"
+msgstr "и-чвор %i има постављену заставицу „INLINE_DATA_FL“ на систему датотека без подршке уграђених података.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1076
-msgid ""
-"@i %i block %b conflicts with critical metadata, skipping block checks.\n"
-msgstr ""
-"и-чвор %i блока %b се сукобљава са критичним метаподацима, прескачем провере "
-"блока.\n"
+#: e2fsck/problem.c:1127
+#, no-c-format
+msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
+msgstr "и-чвор %i блока %b се сукобљава са критичним метаподацима, прескачем провере блока.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1081
+#: e2fsck/problem.c:1132
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "блок „%b“ и-чвора „%i“ директоријума треба да буде на блоку „%c“. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1086
-#, c-format
+#: e2fsck/problem.c:1138
+#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
-msgstr ""
-"и-чвор „%i“ директоријума има распон означен некоришћеним на блоку „%c“. "
+msgstr "и-чвор „%i“ директоријума има распон означен некоришћеним на блоку „%c“. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1091
+#: e2fsck/problem.c:1143
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
msgstr ""
-"и-чвор „%i“ логичког блока „%b“ (физички блок „%c“) нарушава правила доделе "
-"кластера.\n"
+"и-чвор „%i“ логичког блока „%b“ (физички блок „%c“) нарушава правила доделе кластера.\n"
"Биће поправљен у пролазу 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1096
-#, c-format
+#: e2fsck/problem.c:1149
+#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
-msgstr ""
-"и-чвор %i има постављену заставицу „INLINE_DATA_FL“ али нисам нашао "
-"проширени атрибут. "
+msgstr "и-чвор %i има постављену заставицу „INLINE_DATA_FL“ али нисам нашао проширени атрибут. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1102
-#, c-format
+#: e2fsck/problem.c:1156
+#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
"or inline-data flag set. "
@@ -2073,50 +2011,42 @@ msgstr ""
"или постављену заставицу уграђених података. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1108
-#, c-format
+#: e2fsck/problem.c:1163
+#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
-msgstr ""
-"и-чвор %i има заглавље распона али је постављена заставица уграђених "
-"података.\n"
+msgstr "и-чвор %i има заглавље распона али је постављена заставица уграђених података.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1113
-#, c-format
+#: e2fsck/problem.c:1169
+#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
-msgstr ""
-"и-чвор %i изгледа да има уграђене податке али је постављена заставица "
-"распона.\n"
+msgstr "и-чвор %i изгледа да има уграђене податке али је постављена заставица распона.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1118
-#, c-format
+#: e2fsck/problem.c:1175
+#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
-msgstr ""
-"и-чвор %i изгледа да има мапу блока али су постављене заставице уграђених "
-"података и распона.\n"
+msgstr "и-чвор %i изгледа да има мапу блока али су постављене заставице уграђених података и распона.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1123
-#, c-format
+#: e2fsck/problem.c:1181
+#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
-msgstr ""
-"и-чвор %i има постављене заставице уграђених података и распона али и_блок "
-"садржи ђубре.\n"
+msgstr "и-чвор %i има постављене заставице уграђених података и распона али и_блок садржи ђубре.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1128
+#: e2fsck/problem.c:1186
msgid "Bad block list says the bad block list @i is bad. "
msgstr "Лош списак блока каже да је лош и-чвор лошег списка блока. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1133
+#: e2fsck/problem.c:1191
msgid "@A @x region allocation structure. "
msgstr "грешка доделе структуре доделе области распона. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1196
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2125,117 +2055,107 @@ msgstr ""
"\t(логички блок „%c“, неисправан физички блок „%b“, дужине %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1201
msgid "@A memory for encrypted @d list\n"
msgstr "грешка доделе меморије за шифровани списак директоријума\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1148
+#: e2fsck/problem.c:1206
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
-msgstr ""
-"стабло распона и-чвора %i треба бити површније (%b; треба бити <= %c)\n"
+msgstr "стабло распона и-чвора %i треба бити површније (%b; треба бити <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1153
-#, c-format
+#: e2fsck/problem.c:1212
+#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
-msgstr ""
-"и-чвор %i на систему датотека велике доделе не може бити мапиран блоком. "
+msgstr "и-чвор %i на систему датотека велике доделе не може бити мапиран блоком. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1158
-#, c-format
+#: e2fsck/problem.c:1218
+#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "и-чвор %i има оштећено заглавље распона. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1163
-#, c-format
+#: e2fsck/problem.c:1224
+#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
-msgstr ""
-"Временска ознака на и-чвору %i после 04.04.2310. је вероватно пре-1970.\n"
+msgstr "Временска ознака на и-чвору %i после 04.04.2310. је вероватно пре-1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1168
-#, fuzzy
+#: e2fsck/problem.c:1229
msgid "@i %i has @I @a value @i %N.\n"
-msgstr "и-чвор „%i“ има лош блок „%b“ проширеног атрибута. "
+msgstr "и-чвор „%i“ има неисправн и-чвор проширеног атрибута вредности „%N“.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1174
-#, fuzzy
+#: e2fsck/problem.c:1235
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
-msgstr ""
-"и-чвор %i има уграђене податке, али суперблоку недостаје функција "
-"„INLINE_DATA“\n"
+msgstr "и-чвор „%i“ има неисправан проширени атрибут. ЕА и-чвору „%N“ недостаје обележје „EA_INODE“.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1179
+#: e2fsck/problem.c:1240
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
msgstr ""
+"ЕА и-чвору „%N“ родитељског и-чвора „%i“ недостаје обележје „EA_INODE“.\n"
+" "
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1187
+#: e2fsck/problem.c:1248
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
"Pass 1B: Rescanning for @m @bs\n"
msgstr ""
"\n"
-"Покрећем додатне пролазе да решим блокове које тражи више од једног и-"
-"чвора...\n"
+"Покрећем додатне пролазе да решим блокове које тражи више од једног и-чвора...\n"
"Пролаз 1B: Поново прегледам има ли блокова који су неколико пута затражени\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1193
-#, c-format
+#: e2fsck/problem.c:1255
+#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "блок(ови) неколико пута затражени у и-чвору „%i“:"
-#: e2fsck/problem.c:1208
-#, c-format
+#: e2fsck/problem.c:1271
+#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Грешка приликом скенирања и-чворова (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1213
-#, c-format
+#: e2fsck/problem.c:1277
+#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "грешка доделе битмапе и-чвора (двострука_мапа_и_чвора): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1218
-#, c-format
+#: e2fsck/problem.c:1283
+#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Грешка приликом понављања на блоковима у и-чвору „%i“ (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1223 e2fsck/problem.c:1585
+#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
-msgstr ""
-"Грешка дотеривања броја упута за блок „%b“ проширеног атрибута (и-чвор "
-"„%i“): %m\n"
+msgstr "Грешка дотеривања броја упута за блок „%b“ проширеног атрибута (и-чвор „%i“): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1233
+#: e2fsck/problem.c:1298
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
-msgstr ""
-"Пролаз 1C: Прегледам директоријуме за и-чворовима са неколико пута "
-"затраженим блоковима\n"
+msgstr "Пролаз 1C: Прегледам директоријуме за и-чворовима са неколико пута затраженим блоковима\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1239
+#: e2fsck/problem.c:1304
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Пролаз 1D: Поново дотерујем неколико пута затражене блокове\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1244
+#: e2fsck/problem.c:1309
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2244,18 +2164,18 @@ msgstr ""
" има %r неколико пута затражен(е) блок(ове), дељен(е) са %N датотеком(е):\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1250
+#: e2fsck/problem.c:1315
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (и-чвор „%i“, датум измене %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1320
msgid "\t<@f metadata>\n"
msgstr "\t<метаподаци система датотека>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1260
+#: e2fsck/problem.c:1325
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2265,7 +2185,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1265
+#: e2fsck/problem.c:1330
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2273,373 +2193,345 @@ msgstr ""
"неколико пута затражени блокови су већ поново додељени или клонирани.\n"
"\n"
-#: e2fsck/problem.c:1278
-#, c-format
+#: e2fsck/problem.c:1344
+#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Не могу да клонирам датотеку: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1284
+#: e2fsck/problem.c:1350
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Пролаз 1Е: Оптимизујем стабла распона\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1289
-#, c-format
+#: e2fsck/problem.c:1356
+#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Нисам успео да оптимизујем стабло распона „%p“ (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1294
+#: e2fsck/problem.c:1361
msgid "Optimizing @x trees: "
msgstr "Оптимизујем стабла распона: "
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1376
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
-msgstr ""
-"Унутрашња грешка: навећа дубина стабла распона је превелика (%b; очекивано="
-"%c).\n"
+msgstr "Унутрашња грешка: навећа дубина стабла распона је превелика (%b; очекивано=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1314
+#: e2fsck/problem.c:1381
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "стабло распона и-чвора %i (на нивоу %b) треба бити краће. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1319
+#: e2fsck/problem.c:1386
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "стабло распона и-чвора %i (на нивоу %b) треба бити уже. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1326
+#: e2fsck/problem.c:1393
msgid "Pass 2: Checking @d structure\n"
msgstr "2. пролаз: Проверавам структуру директоријума\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1331
-#, c-format
+#: e2fsck/problem.c:1399
+#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "неисправан број и-чвора за „.“ у „%i“ и-чвору директоријума.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1336
+#: e2fsck/problem.c:1404
msgid "@E has @n @i #: %Di.\n"
msgstr "унос „%Dn“ у „%p“ (%i) има неисправан и-чвор бр.: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1341
+#: e2fsck/problem.c:1409
msgid "@E has @D/unused @i %Di. "
msgstr "унос „%Dn“ у „%p“ (%i) има обрисан/некоришћени и-чвор %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1346
+#: e2fsck/problem.c:1414
msgid "@E @L to '.' "
msgstr "унос „%Dn“ у „%p“ (%i) је веза са „.“ "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1351
+#: e2fsck/problem.c:1419
msgid "@E points to @i (%Di) located in a bad @b.\n"
-msgstr ""
-"унос „%Dn“ у „%p“ (%i) указује на и-чвор (%Di) који се налази у лошем "
-"блоку.\n"
+msgstr "унос „%Dn“ у „%p“ (%i) указује на и-чвор (%Di) који се налази у лошем блоку.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1424
msgid "@E @L to @d %P (%Di).\n"
msgstr "унос „%Dn“ у „%p“ (%i) је веза ка директоријуму „%P“ (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1429
msgid "@E @L to the @r.\n"
msgstr "унос „%Dn“ у „%p“ (%i) је веза ка кореном и-чвору.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1366
+#: e2fsck/problem.c:1434
msgid "@E has illegal characters in its name.\n"
msgstr "унос „%Dn“ у „%p“ (%i) има недозвољени знак у називу.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1371
-#, c-format
+#: e2fsck/problem.c:1440
+#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "Недостаје „.“ у „%i“ и-чвору директоријума.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1376
-#, c-format
+#: e2fsck/problem.c:1446
+#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "Недостају „..“ у „%i“ и-чвору директоријума.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1451
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
-msgstr ""
-"Први унос „%Dn“ (и-чвор=%Di) у „%i“ и-чвору директоријума (%p) треба бити "
-"„.“\n"
+msgstr "Први унос „%Dn“ (и-чвор=%Di) у „%i“ и-чвору директоријума (%p) треба бити „.“\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1456
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
-msgstr ""
-"Други унос „%Dn“ (и-чвор=%Di) у „%i“ и-чвору директоријума треба бити „..“\n"
+msgstr "Други унос „%Dn“ (и-чвор=%Di) у „%i“ и-чвору директоријума треба бити „..“\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1391
+#: e2fsck/problem.c:1461
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "„i_faddr“ за и-чвор „%i“ (%Q) је „%IF“, треба бити нула.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1396
+#: e2fsck/problem.c:1466
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "„i_file_acl“ за и-чвор „%i“ (%Q) је „%If“, треба бити нула.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1401
-#, fuzzy
+#: e2fsck/problem.c:1471
msgid "i_size_high @F %Id, @s zero.\n"
-msgstr "„i_fsize“ за и-чвор „%i“ (%Q) је „%N“, треба бити нула.\n"
+msgstr "„i_size_high“ за и-чвор „%i“ (%Q) је „%If“, треба бити нула.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1406
+#: e2fsck/problem.c:1476
msgid "i_frag @F %N, @s zero.\n"
msgstr "„i_frag“ за и-чвор „%i“ (%Q) је „%N“, треба бити нула.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1411
+#: e2fsck/problem.c:1481
msgid "i_fsize @F %N, @s zero.\n"
msgstr "„i_fsize“ за и-чвор „%i“ (%Q) је „%N“, треба бити нула.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1416
+#: e2fsck/problem.c:1486
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "и-чвор „%i“ (%Q) има неисправан режим (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1421
+#: e2fsck/problem.c:1491
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "и-чвор „%i“ директоријума, %B, померај „%N“: директоријум је оштећен\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1426
+#: e2fsck/problem.c:1496
msgid "@d @i %i, %B, offset %N: filename too long\n"
-msgstr ""
-"и-чвор „%i“ директоријума, %B, померај „%N“: назив датотеке је предуг\n"
+msgstr "и-чвор „%i“ директоријума, %B, померај „%N“: назив датотеке је предуг\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1431
+#: e2fsck/problem.c:1501
msgid "@d @i %i has an unallocated %B. "
msgstr "и-чвор „%i“ директоријума има недодељен %B. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1436
-#, c-format
+#: e2fsck/problem.c:1507
+#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
-msgstr ""
-"унос директоријума „.“ у и-чвору „%i“ директоријума се не завршава на НИШТА\n"
+msgstr "унос директоријума „.“ у и-чвору „%i“ директоријума се не завршава на НИШТА\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1441
-#, c-format
+#: e2fsck/problem.c:1513
+#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
-msgstr ""
-"унос директоријума „..“ у и-чвору „%i“ директоријума се не завршава на "
-"НИШТА\n"
+msgstr "унос директоријума „..“ у и-чвору „%i“ директоријума се не завршава на НИШТА\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1518
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "и-чвор „%i“ (%Q) је недозвољени знаковни уређај.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1523
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "и-чвор „%i“ (%Q) је недозвољени блок уређај.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1528
msgid "@E is duplicate '.' @e.\n"
msgstr "унос „%Dn“ у „%p“ (%i) је удвостручени унос „.“.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1533
msgid "@E is duplicate '..' @e.\n"
msgstr "унос „%Dn“ у „%p“ (%i) је удвостручени унос „..“.\n"
-#: e2fsck/problem.c:1466 e2fsck/problem.c:1801
-#, c-format
+#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Унутрашња грешка: не могу да нађем податке_директоријума за „%i“.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1544
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "унос „%Dn“ у „%p“ (%i) има дужину_записа %Dr, треба бити %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1476
-#, c-format
+#: e2fsck/problem.c:1550
+#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "грешка доделе структуре и-броја: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1481
-#, c-format
+#: e2fsck/problem.c:1556
+#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Грешка понављања у блоковима директоријума: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1561
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Грешка читања блока „%b“ директоријума (и-чвор „%i“): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1566
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Грешка писања блока „%b“ директоријума (и-чвор „%i“): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1496
-#, c-format
+#: e2fsck/problem.c:1572
+#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "грешка доделе новог блока директоријума за и-чвор „%i“ (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1501
-#, c-format
+#: e2fsck/problem.c:1578
+#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Грешка размештања и-чвора „%i“: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1506
-#, c-format
+#: e2fsck/problem.c:1584
+#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "унос директоријума за „.“ у „%p“ (%i) је велик.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1511
+#: e2fsck/problem.c:1589
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "и-чвор „%i“ (%Q) је недозвољени ПУПИ.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1516
+#: e2fsck/problem.c:1594
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "и-чвор „%i“ (%Q) је недозвољена прикључница.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1521
+#: e2fsck/problem.c:1599
msgid "Setting filetype for @E to %N.\n"
msgstr "Постављам врсту датотеке за унос „%Dn“ у „%p“ (%i) на „%N“.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1526
+#: e2fsck/problem.c:1604
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
-msgstr ""
-"унос „%Dn“ у „%p“ (%i) има неисправну врсту датотека (беше „%Dt“, треба бити "
-"„%N“).\n"
+msgstr "унос „%Dn“ у „%p“ (%i) има неисправну врсту датотека (беше „%Dt“, треба бити „%N“).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1531
+#: e2fsck/problem.c:1609
msgid "@E has filetype set.\n"
msgstr "унос „%Dn“ у „%p“ (%i) има постављену врсту датотека.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1536
+#: e2fsck/problem.c:1614
msgid "@E has a @z name.\n"
msgstr "унос „%Dn“ у „%p“ (%i) има назив нулте дужине.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1541
+#: e2fsck/problem.c:1619
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Симболичка веза „%Q“ (и-чвор „%i“) је неисправна.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1546
+#: e2fsck/problem.c:1624
msgid "@a @b @F @n (%If).\n"
msgstr "блок проширеног атрибута за и-чвор „%i“ (%Q) је неисправан (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1551
+#: e2fsck/problem.c:1629
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
-msgstr ""
-"систем датотека садржи велике датотеке, али му недостаје заставица "
-"„LARGE_FILE“ у супер-блоку.\n"
+msgstr "систем датотека садржи велике датотеке, али му недостаје заставица „LARGE_FILE“ у супер-блоку.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1634
msgid "@p @h %d: %B not referenced\n"
msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ нема упуту\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1639
msgid "@p @h %d: %B referenced twice\n"
msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ је двоупутно\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1644
msgid "@p @h %d: %B has bad min hash\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има лош најмањи хеш\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има лош најмањи хеш\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1571
+#: e2fsck/problem.c:1649
msgid "@p @h %d: %B has bad max hash\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има лош највећи хеш\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има лош највећи хеш\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1576
+#: e2fsck/problem.c:1654
msgid "@n @h %d (%q). "
msgstr "и-чвор „%d“ директоријума Х-СТАБЛА је неисправан (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1580
+#: e2fsck/problem.c:1658
msgid "@p @h %d (%q): bad @b number %b.\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА (%q): лош број блока %b.\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА (%q): лош број блока %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1590
-#, c-format
+#: e2fsck/problem.c:1669
+#, no-c-format
msgid "@p @h %d: root node is @n\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: корени чвор је неисправан\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: корени чвор је неисправан\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1595
+#: e2fsck/problem.c:1674
msgid "@p @h %d: %B has @n limit (%N)\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправно "
-"ограничење (%N)\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправно ограничење (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1600
+#: e2fsck/problem.c:1679
msgid "@p @h %d: %B has @n count (%N)\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправан број "
-"(%N)\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправан број (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1605
+#: e2fsck/problem.c:1684
msgid "@p @h %d: %B has an unordered hash table\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неуређену хеш "
-"табелу\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неуређену хеш табелу\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1610
+#: e2fsck/problem.c:1689
msgid "@p @h %d: %B has @n depth (%N)\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправну дубину "
-"(%N)\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: „%B“ има неисправну дубину (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1615
+#: e2fsck/problem.c:1694
msgid "Duplicate @E found. "
msgstr "Нађох удвостручени унос „%Dn“ у „%p“ (%i). "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1620
+#: e2fsck/problem.c:1699
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2651,7 +2543,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1625
+#: e2fsck/problem.c:1704
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2662,177 +2554,156 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1630
+#: e2fsck/problem.c:1709
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "„i_blocks_hi“ за и-чвор „%i“ (%Q) је „%N“, треба бити нула.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1635
+#: e2fsck/problem.c:1714
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Неочекивани блок у и-чвору „%d“ директоријума Х-СТАБЛА (%q).\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1719
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
-msgstr ""
-"унос „%Dn“ у „%p“ (%i) упућује на и-чвор „%Di“ у групи „%g“ је постављено "
-"„_INODE_UNINIT“.\n"
+msgstr "унос „%Dn“ у „%p“ (%i) упућује на и-чвор „%Di“ у групи „%g“ је постављено „_INODE_UNINIT“.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1724
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
-msgstr ""
-"унос „%Dn“ у „%p“ (%i) упућује на и-чвор „%Di“ нађен у групи „%g“ "
-"некоришћене области и-чвора.\n"
+msgstr "унос „%Dn“ у „%p“ (%i) упућује на и-чвор „%Di“ нађен у групи „%g“ некоришћене области и-чвора.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1729
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "„i_file_acl_hi“ за и-чвор „%i“ (%Q) је „%N“, треба бити нула.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1654
-#, c-format
+#: e2fsck/problem.c:1735
+#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: није успела сума провере на "
-"кореном чвору.\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: није успела сума провере на кореном чвору.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1659
-#, c-format
+#: e2fsck/problem.c:1741
+#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
-msgstr ""
-"проблем у и-чвору „%d“ директоријума Х-СТАБЛА: није успела сума провере на "
-"унутрашњем чвору.\n"
+msgstr "проблем у и-чвору „%d“ директоријума Х-СТАБЛА: није успела сума провере на унутрашњем чвору.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1664
+#: e2fsck/problem.c:1746
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
-msgstr ""
-"и-чвор „%i“ директоријума, %B, померај „%N“: директоријум нема суму "
-"провере.\n"
+msgstr "и-чвор „%i“ директоријума, %B, померај „%N“: директоријум нема суму провере.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1751
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
-msgstr ""
-"и-чвор директоријума %i, %B: директоријум пролази провере али му не успева "
-"сума провере.\n"
+msgstr "и-чвор директоријума %i, %B: директоријум пролази провере али му не успева сума провере.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1756
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
-msgstr ""
-"Величина и-чвора уграђеног директоријума %i (%N) мора бити производ 4.\n"
+msgstr "Величина и-чвора уграђеног директоријума %i (%N) мора бити производ 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1679
-#, c-format
+#: e2fsck/problem.c:1762
+#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Поправљање величине и-чвора уграђеног директоријума %i није успело.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1767
msgid "Encrypted @E is too short.\n"
msgstr "Шифровани унос „%Dn“ у „%p“ (%i) је прекратак.\n"
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1691
+#: e2fsck/problem.c:1774
msgid "Pass 3: Checking @d connectivity\n"
msgstr "3. пролаз: Проверавам повезивост директоријума\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1696
+#: e2fsck/problem.c:1779
msgid "@r not allocated. "
msgstr "корени и-чвор није додељен. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1701
+#: e2fsck/problem.c:1784
msgid "No room in @l @d. "
msgstr "Нема места у директоријуму изгубљено+нађено. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1706
-#, c-format
+#: e2fsck/problem.c:1790
+#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "и-чвор „%i“ (%p) директоријума није повезан\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1711
+#: e2fsck/problem.c:1795
msgid "/@l not found. "
msgstr "нисам нашао „/изгубљено+нађено“. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1716
+#: e2fsck/problem.c:1800
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "„..“ у „%Q“ (%i) је „%P“ (%j), треба бити „%q“ (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1721
+#: e2fsck/problem.c:1806
+#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
-msgstr ""
-"„/изгубљено+нађено“ је лош или не постоји. Не могу поново да се повежем.\n"
+msgstr "„/изгубљено+нађено“ је лош или не постоји. Не могу поново да се повежем.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1726
-#, c-format
+#: e2fsck/problem.c:1812
+#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Не могу да раширим „/изгубљено+нађено“: %m\n"
-#: e2fsck/problem.c:1731
-#, c-format
+#: e2fsck/problem.c:1818
+#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Не могу поново да повежем „%i“: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1736
-#, c-format
+#: e2fsck/problem.c:1824
+#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Грешка када сам покушао да нађем „/изгубљено+нађено“: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1741
-#, c-format
+#: e2fsck/problem.c:1830
+#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
-msgstr ""
-"екст2сд_нови_блок: „%m“ када сам покушао да направим директоријум „/изгубљено"
-"+нађено“\n"
+msgstr "екст2сд_нови_блок: „%m“ када сам покушао да направим директоријум „/изгубљено+нађено“\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1746
-#, c-format
+#: e2fsck/problem.c:1836
+#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
-msgstr ""
-"екст2сд_нови_и-чвор: „%m“ када сам покушао да направим директоријум „/"
-"изгубљено+нађено“\n"
+msgstr "екст2сд_нови_и-чвор: „%m“ када сам покушао да направим директоријум „/изгубљено+нађено“\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1751
-#, c-format
+#: e2fsck/problem.c:1842
+#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
-msgstr ""
-"екст2сд_нови_дир_блок: „%m“ када сам покушао да направим нови блок "
-"директоријума\n"
+msgstr "екст2сд_нови_дир_блок: „%m“ када сам покушао да направим нови блок директоријума\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1756
-#, c-format
+#: e2fsck/problem.c:1848
+#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
-msgstr ""
-"екст2сд_пиши_дир_блок: „%m“ када сам писао блок директоријума за „/изгубљено"
-"+нађено“\n"
+msgstr "екст2сд_пиши_дир_блок: „%m“ када сам писао блок директоријума за „/изгубљено+нађено“\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1761
-#, c-format
+#: e2fsck/problem.c:1854
+#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Грешка приликом дотеривања броја и-чвора на и-чвору „%i“\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1766
-#, c-format
+#: e2fsck/problem.c:1860
+#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
"\n"
@@ -2842,52 +2713,51 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1771
-#, c-format
+#: e2fsck/problem.c:1866
+#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
"\n"
msgstr ""
-"Не могу да поправим полазиште и-чвора „%i“: Не могу да нађем унос полазног "
-"директоријума\n"
+"Не могу да поправим полазиште и-чвора „%i“: Не могу да нађем унос полазног директоријума\n"
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1781
-#, c-format
+#: e2fsck/problem.c:1877
+#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Грешка стварања кореног директоријума (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1786
-#, c-format
+#: e2fsck/problem.c:1883
+#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Грешка стварања директоријума „/изгубљено+нађено“ (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1791
+#: e2fsck/problem.c:1888
msgid "@r is not a @d; aborting.\n"
msgstr "корени и-чвор није директоријум; прекидам.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1796
+#: e2fsck/problem.c:1893
msgid "Cannot proceed without a @r.\n"
msgstr "Не могу да наставим без кореног и-чвора.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1806
-#, c-format
+#: e2fsck/problem.c:1904
+#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "„/изгубљено+нађено“ није директоријум (и-чвор=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1811
+#: e2fsck/problem.c:1909
msgid "/@l has inline data\n"
msgstr "/изгубљено+нађено има уграђене податке\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1816
+#: e2fsck/problem.c:1914
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2898,7 +2768,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1821
+#: e2fsck/problem.c:1919
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2909,52 +2779,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1826
+#: e2fsck/problem.c:1924
msgid "/@l is encrypted\n"
msgstr "„/изгубљено+нађено“ је шифровано\n"
-#: e2fsck/problem.c:1833
+#: e2fsck/problem.c:1931
msgid "Pass 3A: Optimizing directories\n"
msgstr "Пролаз 3A: Оптимизујем директоријуме\n"
-#: e2fsck/problem.c:1838
-#, c-format
+#: e2fsck/problem.c:1937
+#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Нисам успео да створим приступник „директоријуми_у_хеш“: %m\n"
-#: e2fsck/problem.c:1843
+#: e2fsck/problem.c:1942
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Нисам успео да оптимизујем директоријум „%q“ (%d): %m\n"
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1947
msgid "Optimizing directories: "
msgstr "Оптимизација директоријума: "
-#: e2fsck/problem.c:1865
+#: e2fsck/problem.c:1964
msgid "Pass 4: Checking reference counts\n"
msgstr "Пролаз 4: Проверавам бројеве упута\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1870
-#, c-format
+#: e2fsck/problem.c:1970
+#, no-c-format
msgid "@u @z @i %i. "
msgstr "не закачен и-чвор „%i“ нулте дужине. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1875
-#, c-format
+#: e2fsck/problem.c:1976
+#, no-c-format
msgid "@u @i %i\n"
msgstr "не закачен и-чвор „%i“\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1880
+#: e2fsck/problem.c:1981
msgid "@i %i ref count is %Il, @s %N. "
msgstr "број упута и-чвора „%i“ је %Il, треба бити %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1884
+#: e2fsck/problem.c:1985
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2962,160 +2832,149 @@ msgid ""
msgstr ""
"УПОЗОРЕЊЕ: ГРЕШКА ПРОГРАМИРАЊА У „E2FSCK“-у!\n"
"\tИЛИ НЕКИ ТУПАВКО (МОЖДА ВИ) ПРОВЕРАВА ПРИКАЧЕНИ (ЖИВИ) СИСТЕМ ДАТОТЕКА\n"
-"податак_везе_и-чвора[%i] је %N,\t„и-чвор.број_и_везе“ је %Il. Требало би да "
-"буду исти!\n"
+"податак_везе_и-чвора[%i] је %N,\t„и-чвор.број_и_везе“ је %Il. Требало би да буду исти!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1891
-#, fuzzy
+#: e2fsck/problem.c:1992
msgid "@a @i %i ref count is %N, @s %n. "
-msgstr "број упута и-чвора „%i“ је %Il, треба бити %N. "
+msgstr "број упута и-чвора „%i“ је %N, треба бити %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1896
+#: e2fsck/problem.c:1997
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
-msgstr ""
+msgstr "директоријум прелази максимум веза, али нема „DIR_NLINK“ функције у супер блоку.\n"
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:1903
+#: e2fsck/problem.c:2004
msgid "Pass 5: Checking @g summary information\n"
msgstr "Пролаз 5: Проверавам податке сажетка групе\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:1908
+#: e2fsck/problem.c:2009
msgid "Padding at end of @i @B is not set. "
msgstr "Попуњавање на крају битмапе и-чвора није постављено. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:1913
+#: e2fsck/problem.c:2014
msgid "Padding at end of @b @B is not set. "
msgstr "Попуњавање на крају битмапе блока није постављено. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:1918
+#: e2fsck/problem.c:2019
msgid "@b @B differences: "
msgstr "разлике битмапе блокова: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:1938
+#: e2fsck/problem.c:2041
msgid "@i @B differences: "
msgstr "разлике битмапе и-чворова: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1958
+#: e2fsck/problem.c:2063
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
-msgstr ""
-"Број слободних и-чворова је погрешан за групу бр. %g (%i, избројано=%j).\n"
+msgstr "Број слободних и-чворова је погрешан за групу бр. %g (%i, избројано=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1963
+#: e2fsck/problem.c:2068
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Број директоријума је погрешан за групу бр. %g (%i, избројано=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:1968
+#: e2fsck/problem.c:2073
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Број слободних и-чворова је погрешан (%i, избројано=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:1973
+#: e2fsck/problem.c:2078
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
-msgstr ""
-"Број слободних блокова је погрешан за групу бр. %g (%b, избројано=%c).\n"
+msgstr "Број слободних блокова је погрешан за групу бр. %g (%b, избројано=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:1978
+#: e2fsck/problem.c:2083
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Број слободних блокова је погрешан (%b, избројано=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:1983
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
-msgstr ""
-"ГРЕШКА ПРОГРАМИРАЊА: крајње тачке (%b, %c) битмапе система датотека (бр. %N) "
-"не одговарају израчунатим крајњим тачкама битмапе (%i, %j)\n"
+#: e2fsck/problem.c:2088
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
+msgstr "ГРЕШКА ПРОГРАМИРАЊА: крајње тачке (%b, %c) битмапе система датотека (бр. %N) не одговарају израчунатим крајњим тачкама битмапе (%i, %j)\n"
-#: e2fsck/problem.c:1989
+#: e2fsck/problem.c:2094
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Унутрашња грешка: привидно дотерујем крај битмапе (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:1994
-#, c-format
+#: e2fsck/problem.c:2100
+#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Грешка умножавања у битмапи замене и-чвора: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:1999
-#, c-format
+#: e2fsck/problem.c:2106
+#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Грешка умножавања у битмапи замене блока: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2024
-#, c-format
+#: e2fsck/problem.c:2136
+#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
-msgstr ""
-"блок(ови) групе „%g“ је(су) у употреби али је група означена „BLOCK_UNINIT“\n"
+msgstr "блок(ови) групе „%g“ је(су) у употреби али је група означена „BLOCK_UNINIT“\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2029
-#, c-format
+#: e2fsck/problem.c:2142
+#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
-msgstr ""
-"и-чвор(ови) групе „%g“ је(су) у употреби али је група означена "
-"„INODE_UNINIT“\n"
+msgstr "и-чвор(ови) групе „%g“ је(су) у употреби али је група означена „INODE_UNINIT“\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2034
-#, c-format
+#: e2fsck/problem.c:2148
+#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "битмапа и-чвора групе „%g“ не одговара суми провере.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2039
-#, c-format
+#: e2fsck/problem.c:2154
+#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "битмапа блока групе „%g“ не одговара суми провере.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2046
+#: e2fsck/problem.c:2161
msgid "Recreate @j"
msgstr "Поново направи дневник"
-#: e2fsck/problem.c:2051
+#: e2fsck/problem.c:2166
msgid "Update quota info for quota type %N"
msgstr "Освежи податке квоте за врсту квоте „%N“"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2056
-#, c-format
+#: e2fsck/problem.c:2172
+#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Грешка постављања података суме провере групе блока: %m\n"
-#: e2fsck/problem.c:2061
-#, c-format
+#: e2fsck/problem.c:2178
+#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Грешка писања података система датотека: %m\n"
-#: e2fsck/problem.c:2066
-#, c-format
+#: e2fsck/problem.c:2184
+#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Грешка пресипања писања на складишни уређај: %m\n"
-#: e2fsck/problem.c:2071
+#: e2fsck/problem.c:2189
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Грешка писања података квоте за врсту квоте „%N“: %m\n"
-#: e2fsck/problem.c:2194
+#: e2fsck/problem.c:2352
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Непозната грешка кода (0x%x)!\n"
-#: e2fsck/problem.c:2320 e2fsck/problem.c:2324
+#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
msgid "IGNORED"
msgstr "ЗАНЕМАРЕНО"
@@ -3142,14 +3001,14 @@ msgid "while doing inode scan"
msgstr "приликом обављања скенирања и-чвора"
#: e2fsck/super.c:224
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_block_iterate for inode %u"
-msgstr "приликом позивања „ext2fs_block_iterate“ за и-чвор „%d“"
+msgstr "приликом позивања „ext2fs_block_iterate“ за и-чвор „%u“"
#: e2fsck/super.c:249
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_adjust_ea_refcount2 for inode %u"
-msgstr "приликом позивања „ext2fs_adjust_ea_refcount2“ за и-чвор „%d“"
+msgstr "приликом позивања „ext2fs_adjust_ea_refcount2“ за и-чвор „%u“"
#: e2fsck/super.c:374
msgid "Truncating"
@@ -3159,7 +3018,7 @@ msgstr "Скраћујем"
msgid "Clearing"
msgstr "Чистим"
-#: e2fsck/unix.c:77
+#: e2fsck/unix.c:78
#, c-format
msgid ""
"Usage: %s [-panyrcdfktvDFV] [-b superblock] [-B blocksize]\n"
@@ -3170,15 +3029,14 @@ msgstr ""
"\t\t[-l|-L дттка_лоших_блокова] [-C описник_дттке] [-j спољни_дневник]\n"
"\t\t[-E проширене-опције] [-z опозив_дттке] уређај\n"
-#: e2fsck/unix.c:82
+#: e2fsck/unix.c:83
msgid ""
"\n"
"Emergency help:\n"
" -p Automatic repair (no questions)\n"
" -n Make no changes to the filesystem\n"
" -y Assume \"yes\" to all questions\n"
-" -c Check for bad blocks and add them to the badblock "
-"list\n"
+" -c Check for bad blocks and add them to the badblock list\n"
" -f Force checking even if filesystem is marked clean\n"
msgstr ""
"\n"
@@ -3191,7 +3049,7 @@ msgstr ""
" -f Приморава проверу чак и ако је систем\n"
"\t\t\tдатотека означен као чист\n"
-#: e2fsck/unix.c:88
+#: e2fsck/unix.c:89
msgid ""
" -v Be verbose\n"
" -b superblock Use alternative superblock\n"
@@ -3209,12 +3067,12 @@ msgstr ""
" -L дттка_лшх_блква Поставља списак лоших блокова\n"
" -z опозив_дттке Ствара датотеку опозива\n"
-#: e2fsck/unix.c:136
+#: e2fsck/unix.c:137
#, c-format
msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
msgstr "%s: %u/%u датотеке (%0d.%d%% са прекидима), %llu/%llu блока\n"
-#: e2fsck/unix.c:162
+#: e2fsck/unix.c:163
#, c-format
msgid ""
"\n"
@@ -3232,7 +3090,7 @@ msgstr[2] ""
"\n"
"%12u и-чворова је коришћено (%2.2f%%, од %u)\n"
-#: e2fsck/unix.c:166
+#: e2fsck/unix.c:167
#, c-format
msgid "%12u non-contiguous file (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
@@ -3240,7 +3098,7 @@ msgstr[0] "%12u датотека са прекидима (%0d.%d%%)\n"
msgstr[1] "%12u датотеке са прекидима (%0d.%d%%)\n"
msgstr[2] "%12u датотека са прекидима (%0d.%d%%)\n"
-#: e2fsck/unix.c:171
+#: e2fsck/unix.c:172
#, c-format
msgid "%12u non-contiguous directory (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
@@ -3248,16 +3106,16 @@ msgstr[0] "%12u директоријум са прекидима (%0d.%d%%)\n"
msgstr[1] "%12u директоријума са прекидима (%0d.%d%%)\n"
msgstr[2] "%12u директоријума са прекидима (%0d.%d%%)\n"
-#: e2fsck/unix.c:176
+#: e2fsck/unix.c:177
#, c-format
msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
msgstr " број и-чворова са „ind/dind/tind“ блокова: %u/%u/%u\n"
-#: e2fsck/unix.c:184
+#: e2fsck/unix.c:185
msgid " Extent depth histogram: "
msgstr " Хистограм дубине распона: "
-#: e2fsck/unix.c:193
+#: e2fsck/unix.c:194
#, c-format
msgid "%12llu block used (%2.2f%%, out of %llu)\n"
msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
@@ -3265,7 +3123,7 @@ msgstr[0] "%12llu блок је коришћен (%2.2f%%, од %llu)\n"
msgstr[1] "%12llu блока су коришћена (%2.2f%%, од %llu)\n"
msgstr[2] "%12llu блокова је коришћено (%2.2f%%, од %llu)\n"
-#: e2fsck/unix.c:197
+#: e2fsck/unix.c:198
#, c-format
msgid "%12u bad block\n"
msgid_plural "%12u bad blocks\n"
@@ -3273,7 +3131,7 @@ msgstr[0] "%12u лош блок\n"
msgstr[1] "%12u лоша блока\n"
msgstr[2] "%12u лоших блокова\n"
-#: e2fsck/unix.c:199
+#: e2fsck/unix.c:200
#, c-format
msgid "%12u large file\n"
msgid_plural "%12u large files\n"
@@ -3281,7 +3139,7 @@ msgstr[0] "%12u велика датотека\n"
msgstr[1] "%12u велике датотеке\n"
msgstr[2] "%12u великих датотека\n"
-#: e2fsck/unix.c:201
+#: e2fsck/unix.c:202
#, c-format
msgid ""
"\n"
@@ -3299,7 +3157,7 @@ msgstr[2] ""
"\n"
"%12u обичних датотека\n"
-#: e2fsck/unix.c:203
+#: e2fsck/unix.c:204
#, c-format
msgid "%12u directory\n"
msgid_plural "%12u directories\n"
@@ -3307,7 +3165,7 @@ msgstr[0] "%12u директоријум\n"
msgstr[1] "%12u директоријума\n"
msgstr[2] "%12u директоријума\n"
-#: e2fsck/unix.c:205
+#: e2fsck/unix.c:206
#, c-format
msgid "%12u character device file\n"
msgid_plural "%12u character device files\n"
@@ -3315,7 +3173,7 @@ msgstr[0] "%12u датотека знаковног уређаја\n"
msgstr[1] "%12u датотеке знаковног уређаја\n"
msgstr[2] "%12u датотека знаковног уређаја\n"
-#: e2fsck/unix.c:208
+#: e2fsck/unix.c:209
#, c-format
msgid "%12u block device file\n"
msgid_plural "%12u block device files\n"
@@ -3323,7 +3181,7 @@ msgstr[0] "%12u датотека блок уређаја\n"
msgstr[1] "%12u датотеке блок уређаја\n"
msgstr[2] "%12u датотека блок уређаја\n"
-#: e2fsck/unix.c:210
+#: e2fsck/unix.c:211
#, c-format
msgid "%12u fifo\n"
msgid_plural "%12u fifos\n"
@@ -3331,7 +3189,7 @@ msgstr[0] "%12u пупи\n"
msgstr[1] "%12u пупи-ја\n"
msgstr[2] "%12u пупи-ја\n"
-#: e2fsck/unix.c:212
+#: e2fsck/unix.c:213
#, c-format
msgid "%12u link\n"
msgid_plural "%12u links\n"
@@ -3339,7 +3197,7 @@ msgstr[0] "%12u веза\n"
msgstr[1] "%12u везе\n"
msgstr[2] "%12u веза\n"
-#: e2fsck/unix.c:214
+#: e2fsck/unix.c:215
#, c-format
msgid "%12u symbolic link"
msgid_plural "%12u symbolic links"
@@ -3347,7 +3205,7 @@ msgstr[0] "%12u симболичка веза"
msgstr[1] "%12u симболичке везе"
msgstr[2] "%12u симболичких веза"
-#: e2fsck/unix.c:216
+#: e2fsck/unix.c:217
#, c-format
msgid " (%u fast symbolic link)\n"
msgid_plural " (%u fast symbolic links)\n"
@@ -3355,7 +3213,7 @@ msgstr[0] " (%u брза симболичка веза)\n"
msgstr[1] " (%u брзе симболичке везе)\n"
msgstr[2] " (%u брзих симболичких веза)\n"
-#: e2fsck/unix.c:220
+#: e2fsck/unix.c:221
#, c-format
msgid "%12u socket\n"
msgid_plural "%12u sockets\n"
@@ -3363,7 +3221,7 @@ msgstr[0] "%12u прикључница\n"
msgstr[1] "%12u прикључнице\n"
msgstr[2] "%12u прикључница\n"
-#: e2fsck/unix.c:224
+#: e2fsck/unix.c:225
#, c-format
msgid "%12u file\n"
msgid_plural "%12u files\n"
@@ -3371,33 +3229,33 @@ msgstr[0] "%12u датотека\n"
msgstr[1] "%12u датотеке\n"
msgstr[2] "%12u датотека\n"
-#: e2fsck/unix.c:237 misc/badblocks.c:1002 misc/tune2fs.c:3022 misc/util.c:126
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
#: resize/main.c:354
#, c-format
msgid "while determining whether %s is mounted."
msgstr "приликом одређивања да ли је „%s“ прикачен."
-#: e2fsck/unix.c:258
+#: e2fsck/unix.c:259
#, c-format
msgid "Warning! %s is mounted.\n"
msgstr "Упозорење! „%s“ је прикачен.\n"
-#: e2fsck/unix.c:261
+#: e2fsck/unix.c:262
#, c-format
msgid "Warning! %s is in use.\n"
msgstr "Упозорење! „%s“ је у употреби.\n"
-#: e2fsck/unix.c:267
+#: e2fsck/unix.c:268
#, c-format
msgid "%s is mounted.\n"
msgstr "„%s“ је прикачен.\n"
-#: e2fsck/unix.c:269
+#: e2fsck/unix.c:270
#, c-format
msgid "%s is in use.\n"
msgstr "„%s“ је у употреби.\n"
-#: e2fsck/unix.c:271
+#: e2fsck/unix.c:272
msgid ""
"Cannot continue, aborting.\n"
"\n"
@@ -3405,7 +3263,7 @@ msgstr ""
"Не могу да наставим, прекидам.\n"
"\n"
-#: e2fsck/unix.c:273
+#: e2fsck/unix.c:274
msgid ""
"\n"
"\n"
@@ -3419,86 +3277,85 @@ msgstr ""
"***ОЗБИЉНО*** ћете ***ОШТЕТИТИ*** систем датотека.\n"
"\n"
-#: e2fsck/unix.c:278
+#: e2fsck/unix.c:279
msgid "Do you really want to continue"
msgstr "Да ли стварно желите да наставите"
-#: e2fsck/unix.c:280
+#: e2fsck/unix.c:281
msgid "check aborted.\n"
msgstr "провера је прекинута.\n"
-#: e2fsck/unix.c:374
+#: e2fsck/unix.c:375
msgid " contains a file system with errors"
msgstr " садржи систем датотека са грешкама"
-#: e2fsck/unix.c:376
+#: e2fsck/unix.c:377
msgid " was not cleanly unmounted"
msgstr " није исправно откачен"
-#: e2fsck/unix.c:378
+#: e2fsck/unix.c:379
msgid " primary superblock features different from backup"
msgstr " функције примарног суперблока се разликују од резерве"
-#: e2fsck/unix.c:382
+#: e2fsck/unix.c:383
#, c-format
msgid " has been mounted %u times without being checked"
msgstr " је био прикачен %u пута а да није провераван"
-#: e2fsck/unix.c:389
+#: e2fsck/unix.c:390
msgid " has filesystem last checked time in the future"
msgstr " има време провере система датотека у будућности"
-#: e2fsck/unix.c:395
+#: e2fsck/unix.c:396
#, c-format
msgid " has gone %u days without being checked"
msgstr " прошла су %u дана а да није провераван"
-#: e2fsck/unix.c:403
+#: e2fsck/unix.c:404
msgid "ignoring check interval, broken_system_clock set\n"
-msgstr ""
+msgstr "занемарујем период провере, подешено је „broken_system_clock“\n"
-#: e2fsck/unix.c:409
+#: e2fsck/unix.c:410
msgid ", check forced.\n"
msgstr ", провера је присилна.\n"
-#: e2fsck/unix.c:442
+#: e2fsck/unix.c:443
#, c-format
msgid "%s: clean, %u/%u files, %llu/%llu blocks"
msgstr "%s: чист, %u/%u датотеке, %llu/%llu блока"
-#: e2fsck/unix.c:462
+#: e2fsck/unix.c:463
msgid " (check deferred; on battery)"
msgstr " (провера је одложена; ради на батерији)"
-#: e2fsck/unix.c:465
+#: e2fsck/unix.c:466
msgid " (check after next mount)"
msgstr " (провера након следећег качења)"
-#: e2fsck/unix.c:467
+#: e2fsck/unix.c:468
#, c-format
msgid " (check in %ld mounts)"
msgstr " (провера након %ld качења)"
-#: e2fsck/unix.c:617
+#: e2fsck/unix.c:618
#, c-format
msgid "ERROR: Couldn't open /dev/null (%s)\n"
msgstr "ГРЕШКА: Не могу да отворим „/dev/null“ (%s)\n"
-#: e2fsck/unix.c:688
+#: e2fsck/unix.c:689
msgid "Invalid EA version.\n"
msgstr "Неисправно ЕА издање.\n"
-#: e2fsck/unix.c:701
+#: e2fsck/unix.c:702
msgid "Invalid readahead buffer size.\n"
msgstr "Неисправна величина међумеморије.\n"
-#: e2fsck/unix.c:750
+#: e2fsck/unix.c:757
#, c-format
msgid "Unknown extended option: %s\n"
msgstr "Непозната проширена опција: %s\n"
-#: e2fsck/unix.c:758
-#, fuzzy
+#: e2fsck/unix.c:765
msgid ""
"\n"
"Extended options are separated by commas, and may take an argument which\n"
@@ -3506,25 +3363,19 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Наведене су лоше проширене опције: %s\n"
-"\n"
"Проширене опције су раздвојене зарезима, и могу имати аргумент\n"
-"\tкоји је постављен знаком једнакости (=).\n"
+"\tкоји је подешен знаком једнакости (=). Исправне проширене опције су:\n"
"\n"
-"Исправне проширене опције су:\n"
-"\tsuperblock=<број суперблока>\n"
-"\tblocksize=<величина блока>\n"
-#: e2fsck/unix.c:762
+#: e2fsck/unix.c:769
msgid "\tea_ver=<ea_version (1 or 2)>\n"
-msgstr ""
+msgstr "\tea_ver=<еа_издање (1 или 2)>\n"
-#: e2fsck/unix.c:771
-#, fuzzy
+#: e2fsck/unix.c:778
msgid "\treadahead_kb=<buffer size>\n"
-msgstr "Неисправна величина међумеморије.\n"
+msgstr "\treadahead_kb=<величина међумеморије>\n"
-#: e2fsck/unix.c:783
+#: e2fsck/unix.c:790
#, c-format
msgid ""
"Syntax error in e2fsck config file (%s, line #%d)\n"
@@ -3533,55 +3384,55 @@ msgstr ""
"Грешка синтаксе у датотеци подешавања „e2fsck“-а (%s, %d. ред)\n"
"\t%s\n"
-#: e2fsck/unix.c:856
+#: e2fsck/unix.c:863
#, c-format
msgid "Error validating file descriptor %d: %s\n"
msgstr "Грешка потврђивања описника датотеке „%d“: %s\n"
-#: e2fsck/unix.c:860
+#: e2fsck/unix.c:867
msgid "Invalid completion information file descriptor"
msgstr "Неисправан описник датотеке података довршавања"
-#: e2fsck/unix.c:875
+#: e2fsck/unix.c:882
msgid "Only one of the options -p/-a, -n or -y may be specified."
msgstr "Може бити наведена само једна од опција „-p/-a“, „-n“ или „-y“."
-#: e2fsck/unix.c:896
+#: e2fsck/unix.c:903
#, c-format
msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "Опција „-t“ није подржана на овом издању „e2fsck“-а.\n"
-#: e2fsck/unix.c:927 e2fsck/unix.c:1005 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1741 misc/tune2fs.c:2036 misc/tune2fs.c:2054
+#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Не могу да решим „%s“"
-#: e2fsck/unix.c:984
+#: e2fsck/unix.c:991
msgid "The -n and -D options are incompatible."
msgstr "Опције „-n“ и „-D“ нису сагласне."
-#: e2fsck/unix.c:989
+#: e2fsck/unix.c:996
msgid "The -n and -c options are incompatible."
msgstr "Опције „-n“ и „-c“ нису сагласне."
-#: e2fsck/unix.c:994
+#: e2fsck/unix.c:1001
msgid "The -n and -l/-L options are incompatible."
msgstr "Опције „-n“ и „-l/-L“ нису сагласне."
-#: e2fsck/unix.c:1018
+#: e2fsck/unix.c:1025
msgid "The -D and -E fixes_only options are incompatible."
msgstr "Опције „-D“ и „-E fixes_only“ нису сагласне."
-#: e2fsck/unix.c:1024
+#: e2fsck/unix.c:1031
msgid "The -E bmap2extent and fixes_only options are incompatible."
msgstr "Опције „-E bmap2extent“ и „fixes_only“ нису сагласне."
-#: e2fsck/unix.c:1088
+#: e2fsck/unix.c:1095
msgid "The -c and the -l/-L options may not be both used at the same time.\n"
msgstr "Не можете користити у исто време опције „-c“ и „-l/-L“.\n"
-#: e2fsck/unix.c:1135
+#: e2fsck/unix.c:1142
#, c-format
msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
@@ -3590,7 +3441,7 @@ msgstr ""
"E2FSCK_JBD_DEBUG „%s“ није цео број\n"
"\n"
-#: e2fsck/unix.c:1144
+#: e2fsck/unix.c:1151
#, c-format
msgid ""
"\n"
@@ -3601,36 +3452,31 @@ msgstr ""
"Неисправан не-бројевни аргумент за „-%c“ (%s)\n"
"\n"
-#: e2fsck/unix.c:1235
+#: e2fsck/unix.c:1242
#, c-format
-msgid ""
-"MMP interval is %u seconds and total wait time is %u seconds. Please "
-"wait...\n"
-msgstr ""
-"ММП период је %u секунде а укупно време чекања је %u секунде. Сачекајте "
-"малко...\n"
+msgid "MMP interval is %u seconds and total wait time is %u seconds. Please wait...\n"
+msgstr "ММП период је %u секунде а укупно време чекања је %u секунде. Сачекајте малко...\n"
-#: e2fsck/unix.c:1252 e2fsck/unix.c:1257
+#: e2fsck/unix.c:1259 e2fsck/unix.c:1264
msgid "while checking MMP block"
msgstr "приликом провере ММП блока"
-#: e2fsck/unix.c:1259
-#, fuzzy, c-format
+#: e2fsck/unix.c:1266
+#, c-format
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp %s'\n"
msgstr ""
-"Ако сте сигурни да систем датотека није у употреби ни на једном чвору, "
-"покрените:\n"
-"„tune2fs -f -E clear_mmp {уређај}“\n"
+"Ако сте сигурни да систем датотека није у употреби ни на једном чвору, покрените:\n"
+"„tune2fs -f -E clear_mmp %s“\n"
-#: e2fsck/unix.c:1275
+#: e2fsck/unix.c:1282
msgid "while reading MMP block"
msgstr "приликом читања ММП блока"
-#: e2fsck/unix.c:1295 e2fsck/unix.c:1347 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2613 misc/mke2fs.c:2664 misc/tune2fs.c:2754
-#: misc/tune2fs.c:2799 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
+#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
+#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3641,57 +3487,57 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1336 misc/e2undo.c:270 misc/mke2fs.c:2653 misc/tune2fs.c:2788
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "приликом покушаја брисања „%s“"
-#: e2fsck/unix.c:1362 misc/mke2fs.c:2679 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "приликом покушаја постављања датотеке поништавања\n"
-#: e2fsck/unix.c:1405
+#: e2fsck/unix.c:1412
msgid "Error: ext2fs library version out of date!\n"
msgstr "Грешка: издање библиотеке „ext2fs“ је застарело!\n"
-#: e2fsck/unix.c:1412
+#: e2fsck/unix.c:1419
msgid "while trying to initialize program"
msgstr "када сам покушао да покренем програм"
-#: e2fsck/unix.c:1435
+#: e2fsck/unix.c:1456
#, c-format
msgid "\tUsing %s, %s\n"
msgstr "\tКористим „%s“, %s\n"
-#: e2fsck/unix.c:1447
+#: e2fsck/unix.c:1468
msgid "need terminal for interactive repairs"
msgstr "потребан је терминал за међудејствене поправке"
-#: e2fsck/unix.c:1508
+#: e2fsck/unix.c:1529
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr "%s: „%s“ покушавам да направим резерву блокова...\n"
-#: e2fsck/unix.c:1510
+#: e2fsck/unix.c:1531
msgid "Superblock invalid,"
msgstr "Суперблок је неисправан,"
-#: e2fsck/unix.c:1511
+#: e2fsck/unix.c:1532
msgid "Group descriptors look bad..."
msgstr "Описник групе изгледа лоше..."
-#: e2fsck/unix.c:1521
+#: e2fsck/unix.c:1542
#, c-format
msgid "%s: %s while using the backup blocks"
msgstr "%s: „%s“ приликом коришћења резерве блокова"
-#: e2fsck/unix.c:1525
+#: e2fsck/unix.c:1546
#, c-format
msgid "%s: going back to original superblock\n"
msgstr "%s: враћам се на изворни суперблок\n"
-#: e2fsck/unix.c:1554
+#: e2fsck/unix.c:1575
msgid ""
"The filesystem revision is apparently too high for this version of e2fsck.\n"
"(Or the filesystem superblock is corrupt)\n"
@@ -3701,28 +3547,28 @@ msgstr ""
"(Или је суперблок система датотека оштећен)\n"
"\n"
-#: e2fsck/unix.c:1561
+#: e2fsck/unix.c:1582
msgid "Could this be a zero-length partition?\n"
msgstr "Да није ово партиција нулте дужине?\n"
-#: e2fsck/unix.c:1563
+#: e2fsck/unix.c:1584
#, c-format
msgid "You must have %s access to the filesystem or be root\n"
msgstr "Морате имати право „%s“ на систему датотека или бити администратор\n"
-#: e2fsck/unix.c:1569
+#: e2fsck/unix.c:1590
msgid "Possibly non-existent or swap device?\n"
msgstr "Можда је непостојећи или разменски уређај?\n"
-#: e2fsck/unix.c:1571
+#: e2fsck/unix.c:1592
msgid "Filesystem mounted or opened exclusively by another program?\n"
msgstr "Систем датотека је прикачен или отворен искључиво другим програмом?\n"
-#: e2fsck/unix.c:1575
+#: e2fsck/unix.c:1596
msgid "Possibly non-existent device?\n"
msgstr "Можда је непостојећи или уређај?\n"
-#: e2fsck/unix.c:1578
+#: e2fsck/unix.c:1599
msgid ""
"Disk write-protected; use the -n option to do a read-only\n"
"check of the device.\n"
@@ -3730,76 +3576,77 @@ msgstr ""
"Диск је заштићен од писања; користите опцију „-n“ да одрадите проверу\n"
"само за читање уређаја.\n"
-#: e2fsck/unix.c:1592
+#: e2fsck/unix.c:1613
#, c-format
msgid "%s: Trying to load superblock despite errors...\n"
-msgstr ""
+msgstr "%s: Покушавам да учитам суперблок упркос грешкама...\n"
-#: e2fsck/unix.c:1667
+#: e2fsck/unix.c:1688
msgid "Get a newer version of e2fsck!"
msgstr "Набавите најновије издање „e2fsck“-а!"
-#: e2fsck/unix.c:1711
+#: e2fsck/unix.c:1749
#, c-format
msgid "while checking journal for %s"
msgstr "приликом провере дневника за „%s“"
-#: e2fsck/unix.c:1714
+#: e2fsck/unix.c:1752
msgid "Cannot proceed with file system check"
msgstr "Не могу наставити са провером система датотека"
-#: e2fsck/unix.c:1725
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
-msgstr ""
-"Упозорење: прескачем опоравак дневника зато што вршим проверу система "
-"датотека само за читање.\n"
+#: e2fsck/unix.c:1763
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
+msgstr "Упозорење: прескачем опоравак дневника зато што вршим проверу система датотека само за читање.\n"
-#: e2fsck/unix.c:1737
+#: e2fsck/unix.c:1775
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "не могу да поставим заставице суперблока на „%s“\n"
-#: e2fsck/unix.c:1743
+#: e2fsck/unix.c:1781
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Нађох грешку провере суме дневника у „%s“\n"
-#: e2fsck/unix.c:1747
+#: e2fsck/unix.c:1785
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Дневник је оштећен у „%s“\n"
-#: e2fsck/unix.c:1751
+#: e2fsck/unix.c:1789
#, c-format
msgid "while recovering journal of %s"
msgstr "приликом поправке дневника за „%s“"
-#: e2fsck/unix.c:1773
+#: e2fsck/unix.c:1811
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "„%s“ има неподржану(е) функцију(е):"
-#: e2fsck/unix.c:1832
+#: e2fsck/unix.c:1826
+#, c-format
+msgid "%s has unsupported encoding: %0x\n"
+msgstr "„%s“ има неподржано кодирање: %0x\n"
+
+#: e2fsck/unix.c:1876
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: „%s“ приликом читања и-чвора лоших блокова\n"
-#: e2fsck/unix.c:1835
+#: e2fsck/unix.c:1879
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Ово не слути на добро, али ћемо покушати да наставимо...\n"
-#: e2fsck/unix.c:1875
+#: e2fsck/unix.c:1919
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Правим дневник (%d блока): "
-#: e2fsck/unix.c:1885
+#: e2fsck/unix.c:1929
msgid " Done.\n"
msgstr " Готово.\n"
-#: e2fsck/unix.c:1887
+#: e2fsck/unix.c:1931
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3807,24 +3654,24 @@ msgstr ""
"\n"
"*** дневник је поново створен ***\n"
-#: e2fsck/unix.c:1893
+#: e2fsck/unix.c:1937
msgid "aborted"
msgstr "прекинуто"
-#: e2fsck/unix.c:1895
+#: e2fsck/unix.c:1939
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: „e2fsck“ је отказан.\n"
-#: e2fsck/unix.c:1922
+#: e2fsck/unix.c:1966
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Поново покрећем „e2fsck“ из почетка...\n"
-#: e2fsck/unix.c:1926
+#: e2fsck/unix.c:1970
msgid "while resetting context"
msgstr "приликом враћања поставки контекста"
-#: e2fsck/unix.c:1985
+#: e2fsck/unix.c:2029
#, c-format
msgid ""
"\n"
@@ -3833,12 +3680,12 @@ msgstr ""
"\n"
"%s: ***** ГРЕШКЕ СИСТЕМА ДАТОТЕКА СУ ИСПРАВЉЕНЕ *****\n"
-#: e2fsck/unix.c:1987
+#: e2fsck/unix.c:2031
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: Систем датотека је измењен.\n"
-#: e2fsck/unix.c:1991 e2fsck/util.c:71
+#: e2fsck/unix.c:2035 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3847,12 +3694,12 @@ msgstr ""
"\n"
"%s: ***** СИСТЕМ ДАТОТЕКА ЈЕ ИЗМЕЊЕН *****\n"
-#: e2fsck/unix.c:1996
+#: e2fsck/unix.c:2040
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** ПОНОВО ПОДИЖЕМ СИСТЕМ *****\n"
-#: e2fsck/unix.c:2006 e2fsck/util.c:77
+#: e2fsck/unix.c:2050 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3867,7 +3714,7 @@ msgstr ""
msgid "yY"
msgstr "дД"
-#: e2fsck/util.c:197
+#: e2fsck/util.c:197 misc/util.c:112
msgid "nN"
msgstr "нН"
@@ -4000,29 +3847,23 @@ msgid "while writing inode %lu in %s"
msgstr "приликом писања и-чвора „%lu“ у „%s“"
#: e2fsck/util.c:792
-msgid ""
-"UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
-"running.\n"
-msgstr ""
-"НЕОЧЕКИВАНА НЕДОСЛЕДНОСТ: систем датотека је измењен док је „fsck“ био "
-"покренут.\n"
+msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
+msgstr "НЕОЧЕКИВАНА НЕДОСЛЕДНОСТ: систем датотека је измењен док је „fsck“ био покренут.\n"
#: misc/badblocks.c:75
msgid "done \n"
msgstr "готово \n"
#: misc/badblocks.c:100
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnfBX]\n"
-" [-c blocks_at_once] [-d delay_factor_between_reads] [-e "
-"max_bad_blocks]\n"
+" [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]\n"
" [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
" device [last_block [first_block]]\n"
msgstr ""
-"Usage: %s [-b величина_блока] [-i улазна_дттка] [-o излазна_дттка] [-svwnf]\n"
-" [-c блокови_одједном] [-d чинилац_застоја_између_читања] [-e најв."
-"_лоших_блокова]\n"
+"Употреба: %s [-b величина_блока] [-i улазна_дттка] [-o излазна_дттка] [-svwnfBX]\n"
+" [-c блокови_одједном] [-d чинилац_застоја_између_читања] [-e најв._лоших_блокова]\n"
" [-p бр._пролаза] [-t тест_шаблон [-t тест_шаблон [...]]]\n"
" уређај [последњи_блок [први_блок]]\n"
@@ -4102,8 +3943,7 @@ msgstr "Читам и упоређујем: "
#: misc/badblocks.c:790
msgid "Checking for bad blocks in non-destructive read-write mode\n"
-msgstr ""
-"Проверавам има ли лоших блокова у не-разарајућем режиму писања и читања\n"
+msgstr "Проверавам има ли лоших блокова у не-разарајућем режиму писања и читања\n"
#: misc/badblocks.c:796
msgid "Checking for bad blocks (non-destructive read-write test)\n"
@@ -4122,7 +3962,7 @@ msgstr ""
msgid "during test data write, block %lu"
msgstr "приликом писања података теста, блок %lu"
-#: misc/badblocks.c:1007 misc/util.c:131
+#: misc/badblocks.c:1007 misc/util.c:134
#, c-format
msgid "%s is mounted; "
msgstr "„%s“ је прикачен; "
@@ -4135,7 +3975,7 @@ msgstr "лоши блокови су ипак присиљени. Надам с
msgid "it's not safe to run badblocks!\n"
msgstr "није безбедно покренути лоше блокове!\n"
-#: misc/badblocks.c:1019 misc/util.c:142
+#: misc/badblocks.c:1019 misc/util.c:145
#, c-format
msgid "%s is apparently in use by the system; "
msgstr "„%s“ се делимично користи на систему; "
@@ -4216,230 +4056,227 @@ msgstr "Пролаз је обављен, нађених лоших блоков
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTu] [-v version] files...\n"
-msgstr "Употреба: %s [-pRVf] [-+=aAcCdDeijPsStTu] [-v издање] датотеке...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
+msgstr "Употреба: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v издање] датотеке...\n"
-#: misc/chattr.c:159
+#: misc/chattr.c:160
#, c-format
msgid "bad project - %s\n"
msgstr "лош пројекат — %s\n"
-#: misc/chattr.c:173
+#: misc/chattr.c:174
#, c-format
msgid "bad version - %s\n"
msgstr "лоше издање — %s\n"
-#: misc/chattr.c:219 misc/lsattr.c:127
+#: misc/chattr.c:220 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "приликом покушаја да добавим податке „%s“"
-#: misc/chattr.c:226
+#: misc/chattr.c:227
#, c-format
msgid "while reading flags on %s"
msgstr "приликом читања заставица на „%s“"
-#: misc/chattr.c:231 misc/chattr.c:243
+#: misc/chattr.c:232 misc/chattr.c:244
#, c-format
msgid "Flags of %s set as "
msgstr "Заставице за „%s“ су постављене као "
-#: misc/chattr.c:252
+#: misc/chattr.c:253
#, c-format
msgid "while setting flags on %s"
msgstr "приликом постављања заставица на „%s“"
-#: misc/chattr.c:260
+#: misc/chattr.c:261
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Издање за „%s“ је постављено као %lu\n"
-#: misc/chattr.c:264
+#: misc/chattr.c:265
#, c-format
msgid "while setting version on %s"
msgstr "приликом постављања издања на „%s“"
-#: misc/chattr.c:271
+#: misc/chattr.c:272
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Пројекат за „%s“ је постављено као %lu\n"
-#: misc/chattr.c:275
+#: misc/chattr.c:276
#, c-format
msgid "while setting project on %s"
msgstr "приликом постављања пројекта на „%s“"
-#: misc/chattr.c:297
+#: misc/chattr.c:298
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Не могу да доделим променљиву путање у „chattr_dir_proc“"
-#: misc/chattr.c:337
+#: misc/chattr.c:338
msgid "= is incompatible with - and +\n"
msgstr "= није сагласно са - и +\n"
-#: misc/chattr.c:345
+#: misc/chattr.c:346
msgid "Must use '-v', =, - or +\n"
msgstr "Морате користити „-v“, =, - или +\n"
-#: misc/create_inode.c:79 misc/create_inode.c:118
+#: misc/create_inode.c:80 misc/create_inode.c:119
#, c-format
msgid "while reading inode %u"
msgstr "приликом читања и-чвора „%u“"
-#: misc/create_inode.c:89 misc/create_inode.c:287 misc/create_inode.c:352
-#: misc/create_inode.c:390
+#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
+#: misc/create_inode.c:391
msgid "while expanding directory"
msgstr "приликом ширења директоријума"
-#: misc/create_inode.c:96
+#: misc/create_inode.c:97
#, c-format
msgid "while linking \"%s\""
msgstr "приликом повезивања „%s“"
-#: misc/create_inode.c:104 misc/create_inode.c:131 misc/create_inode.c:321
+#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
#, c-format
msgid "while writing inode %u"
msgstr "приликом писања и-чвора „%u“"
-#: misc/create_inode.c:151 misc/create_inode.c:175
+#: misc/create_inode.c:152 misc/create_inode.c:176
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "приликом исписивања атрибута за „%s“"
-#: misc/create_inode.c:162
+#: misc/create_inode.c:163
#, c-format
msgid "while opening inode %u"
msgstr "приликом отварања и-чвора „%u“"
-#: misc/create_inode.c:168 misc/create_inode.c:195 misc/create_inode.c:975
+#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "приликом доделе меморије"
-#: misc/create_inode.c:188 misc/create_inode.c:204
+#: misc/create_inode.c:189 misc/create_inode.c:205
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "приликом читања атрибута „%s“ за „%s“"
-#: misc/create_inode.c:213
+#: misc/create_inode.c:214
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "приликом писања атрибута „%s“ у и-чвор „%u“"
-#: misc/create_inode.c:223
+#: misc/create_inode.c:224
#, c-format
msgid "while closing inode %u"
msgstr "приликом затварања и-чвора „%u“"
-#: misc/create_inode.c:274
+#: misc/create_inode.c:275
#, c-format
msgid "while allocating inode \"%s\""
msgstr "приликом доделе и-чвора „%s“"
-#: misc/create_inode.c:293
+#: misc/create_inode.c:294
#, c-format
msgid "while creating inode \"%s\""
msgstr "приликом стварања и-чвора „%s“"
-#: misc/create_inode.c:359
+#: misc/create_inode.c:360
#, c-format
msgid "while creating symlink \"%s\""
msgstr "приликом стварања симболичке везе „%s“"
-#: misc/create_inode.c:377 misc/create_inode.c:896
+#: misc/create_inode.c:378 misc/create_inode.c:963
#, c-format
msgid "while looking up \"%s\""
msgstr "приликом тражења „%s“"
-#: misc/create_inode.c:397
+#: misc/create_inode.c:398
#, c-format
msgid "while creating directory \"%s\""
msgstr "приликом стварања директоријума „%s“"
-#: misc/create_inode.c:625
+#: misc/create_inode.c:627
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "приликом отварања „%s“ за умножавање"
-#: misc/create_inode.c:739
+#: misc/create_inode.c:805
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "приликом промене радног директоријума у „%s“"
-#: misc/create_inode.c:747
+#: misc/create_inode.c:815
#, c-format
-msgid "while opening directory \"%s\""
-msgstr "приликом отварања директоријума „%s“"
+msgid "while scanning directory \"%s\""
+msgstr "приликом прегледа директоријума „%s“"
-#: misc/create_inode.c:757
+#: misc/create_inode.c:825
#, c-format
msgid "while lstat \"%s\""
msgstr "приликом покушаја да добавим податке за „%s“"
-#: misc/create_inode.c:808
+#: misc/create_inode.c:875
#, c-format
msgid "while creating special file \"%s\""
msgstr "приликом стварања специјалне датотеке „%s“"
-#: misc/create_inode.c:817
+#: misc/create_inode.c:884
msgid "malloc failed"
msgstr "није успела додела меморије"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:892
#, c-format
msgid "while trying to read link \"%s\""
msgstr "приликом покушаја читања везе „%s“"
-#: misc/create_inode.c:832
+#: misc/create_inode.c:899
msgid "symlink increased in size between lstat() and readlink()"
msgstr "симболичкој вези се повећала величина између „lstat()“ и „readlink()“"
-#: misc/create_inode.c:843
+#: misc/create_inode.c:910
#, c-format
msgid "while writing symlink\"%s\""
msgstr "приликом писања симболичке везе „%s“"
-#: misc/create_inode.c:854
+#: misc/create_inode.c:921
#, c-format
msgid "while writing file \"%s\""
msgstr "приликом писања датотеке „%s“"
-#: misc/create_inode.c:867
+#: misc/create_inode.c:934
#, c-format
msgid "while making dir \"%s\""
msgstr "приликом прављења директоријума „%s“"
-#: misc/create_inode.c:885
+#: misc/create_inode.c:952
msgid "while changing directory"
msgstr "приликом промене директоријума"
-#: misc/create_inode.c:891
+#: misc/create_inode.c:958
#, c-format
msgid "ignoring entry \"%s\""
msgstr "занемарујем унос „%s“"
-#: misc/create_inode.c:904
+#: misc/create_inode.c:971
#, c-format
msgid "while setting inode for \"%s\""
msgstr "приликом подешавања и-чвора за „%s“"
-#: misc/create_inode.c:911
+#: misc/create_inode.c:978
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "приликом постављања х-атрибута за „%s“"
-#: misc/create_inode.c:937
+#: misc/create_inode.c:1004
msgid "while saving inode data"
msgstr "приликом чувања података и-чвора"
#: misc/dumpe2fs.c:56
-#, fuzzy, c-format
-msgid ""
-"Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
-msgstr ""
-"Употреба: %s [-bfghixV] [-o суперблок=<бр.>] [-o величина_блока=<бр.>] "
-"уређај\n"
+#, c-format
+msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
+msgstr "Употреба: %s [-bfghimxV] [-o суперблок=<бр.>] [-o величина_блока=<бр.>] уређај\n"
#: misc/dumpe2fs.c:159
msgid "blocks"
@@ -4557,7 +4394,7 @@ msgstr "приликом штампања списка оштећених бло
msgid "Bad blocks: %u"
msgstr "Лоших блокова: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:367
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
msgid "while reading journal inode"
msgstr "приликом читања и-чвора дневника"
@@ -4582,16 +4419,15 @@ msgid "Couldn't find journal superblock magic numbers"
msgstr "Не могу да нађем чаробне бројеве суперблока дневника"
#: misc/dumpe2fs.c:468
-#, fuzzy
msgid "failed to alloc MMP buffer\n"
-msgstr "приликом доделе међумеморије"
+msgstr "нисам успео да доделим ММП међумеморију\n"
#: misc/dumpe2fs.c:479
-#, fuzzy, c-format
+#, c-format
msgid "reading MMP block %llu from '%s'\n"
-msgstr "Проверавам блокове од %lu до %lu\n"
+msgstr "читам ММП блок %llu из „%s“\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:798 misc/tune2fs.c:2073
+#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Не могу да доделим меморију да бих обрадио опције!\n"
@@ -4622,18 +4458,18 @@ msgstr ""
"Наведене су лоше проширене опције: %s\n"
"\n"
"Проширене опције су раздвојене зарезима, и могу имати аргумент\n"
-"\tкоји је постављен знаком једнакости (=).\n"
+"\tкоји је подешен знаком једнакости (=).\n"
"\n"
"Исправне проширене опције су:\n"
"\tsuperblock=<број суперблока>\n"
"\tblocksize=<величина блока>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1845
+#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
#, c-format
msgid "\tUsing %s\n"
msgstr "\tКористим „%s“\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1590 misc/tune2fs.c:2949
+#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
#: resize/main.c:416
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Не могу да нађем исправан суперблок система датотека.\n"
@@ -4641,212 +4477,208 @@ msgstr "Не могу да нађем исправан суперблок сис
#: misc/dumpe2fs.c:716
#, c-format
msgid "%s: MMP feature not enabled.\n"
-msgstr ""
+msgstr "%s: ММП функција није укључена.\n"
#: misc/dumpe2fs.c:747
-#, fuzzy, c-format
+#, c-format
msgid "while trying to read '%s' bitmaps\n"
-msgstr "док сам поново покушао да читам битмапе за „%s“"
+msgstr "приликом покушаја читања битмапа „%s“\n"
#: misc/dumpe2fs.c:756
msgid ""
"*** Run e2fsck now!\n"
"\n"
msgstr ""
+"*** Покрећем „e2fsck“!\n"
+"\n"
#: misc/e2image.c:107
-#, fuzzy, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] device image-file\n"
-msgstr "Употреба: %s [ -r|Q ] [ -fr ] уређај датотека_слике\n"
+#, c-format
+msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
+msgstr "Употреба: %s [ -r|Q ] [ -f ] [ -b супер блок ] [ -B величина блока][ -fr ] уређај датотека-слике\n"
-#: misc/e2image.c:109
+#: misc/e2image.c:110
#, c-format
msgid " %s -I device image-file\n"
msgstr " %s -I уређај датотека_слике\n"
-#: misc/e2image.c:110
+#: misc/e2image.c:111
#, c-format
-msgid ""
-" %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs "
-"[ dest_fs ]\n"
-msgstr ""
-" %s -ra [ -cfnp ] [ -o померај_извора ] [ -O померај_одредишта ] "
-"сд_извора [ сд_одредишта ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o померај_извора ] [ -O померај_одредишта ] сд_извора [ сд_одредишта ]\n"
-#: misc/e2image.c:175 misc/e2image.c:580 misc/e2image.c:586 misc/e2image.c:1185
+#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
+#: misc/e2image.c:1194
msgid "while allocating buffer"
msgstr "приликом доделе међумеморије"
-#: misc/e2image.c:180
+#: misc/e2image.c:181
#, c-format
msgid "Writing block %llu\n"
msgstr "Пишем блок %llu\n"
-#: misc/e2image.c:194
+#: misc/e2image.c:195
#, c-format
msgid "error writing block %llu"
msgstr "грешка писања блока %llu"
-#: misc/e2image.c:197
+#: misc/e2image.c:198
msgid "error in generic_write()"
msgstr "грешка у функцији „generic_write()“"
-#: misc/e2image.c:214
+#: misc/e2image.c:215
msgid "Error: header size is bigger than wrt_size\n"
msgstr "Грешка: величина заглавља је већа од величине писања\n"
-#: misc/e2image.c:219
+#: misc/e2image.c:220
msgid "Couldn't allocate header buffer\n"
msgstr "Не могу да доделим међумеморију заглавља\n"
-#: misc/e2image.c:247
+#: misc/e2image.c:248
msgid "while writing superblock"
msgstr "приликом писања суперблока"
-#: misc/e2image.c:256
+#: misc/e2image.c:257
msgid "while writing inode table"
msgstr "приликом писања табеле и-чвора"
-#: misc/e2image.c:264
+#: misc/e2image.c:265
msgid "while writing block bitmap"
msgstr "приликом писања битмапе блока"
-#: misc/e2image.c:272
+#: misc/e2image.c:273
msgid "while writing inode bitmap"
msgstr "приликом писања битмапе и-чвора"
-#: misc/e2image.c:506
+#: misc/e2image.c:515
#, c-format
msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
msgstr "Оштећени блок директоријума %llu: лоша дужина_записа (%d)\n"
-#: misc/e2image.c:518
+#: misc/e2image.c:527
#, c-format
msgid "Corrupt directory block %llu: bad name_len (%d)\n"
msgstr "Оштећени блок директоријума %llu: лоша дужина_назива (%d)\n"
-#: misc/e2image.c:559
+#: misc/e2image.c:568
#, c-format
msgid "%llu / %llu blocks (%d%%)"
msgstr "%llu / %llu блока (%d%%)"
-#: misc/e2image.c:590 misc/e2image.c:630
+#: misc/e2image.c:599 misc/e2image.c:639
msgid "Copying "
msgstr "Умножавам "
-#: misc/e2image.c:627
-msgid ""
-"Stopping now will destroy the filesystem, interrupt again if you are sure\n"
-msgstr ""
-"Заустављање ће оштетити систем датотека, прекините опет ако сте сигурни\n"
+#: misc/e2image.c:636
+msgid "Stopping now will destroy the filesystem, interrupt again if you are sure\n"
+msgstr "Заустављање ће оштетити систем датотека, прекините опет ако сте сигурни\n"
-#: misc/e2image.c:653
+#: misc/e2image.c:662
#, c-format
msgid " %s remaining at %.2f MB/s"
msgstr " преостаје %s при %.2f MB/s"
-#: misc/e2image.c:665 misc/e2image.c:1195
+#: misc/e2image.c:674 misc/e2image.c:1204
#, c-format
msgid "error reading block %llu"
msgstr "грешка читања блока %llu"
-#: misc/e2image.c:719
+#: misc/e2image.c:728
#, c-format
msgid "Copied %llu / %llu blocks (%d%%) in %s "
msgstr "Умножих %llu / %llu блока (%d%%) у „%s“ "
-#: misc/e2image.c:723
+#: misc/e2image.c:732
#, c-format
msgid "at %.2f MB/s"
msgstr "при %.2f MB/s"
-#: misc/e2image.c:759
+#: misc/e2image.c:768
msgid "while allocating l1 table"
msgstr "приликом додељивања табеле „l1“"
-#: misc/e2image.c:804
+#: misc/e2image.c:813
msgid "while allocating l2 cache"
msgstr "приликом додељивања оставе „l2“"
-#: misc/e2image.c:827
-msgid ""
-"Warning: There are still tables in the cache while putting the cache, data "
-"will be lost so the image may not be valid.\n"
-msgstr ""
-"Упозорење: Још увек има табела у остави приликом стављања оставе, подаци ће "
-"бити изгубљени тако да слика можда неће бити исправна.\n"
+#: misc/e2image.c:836
+msgid "Warning: There are still tables in the cache while putting the cache, data will be lost so the image may not be valid.\n"
+msgstr "Упозорење: Још увек има табела у остави приликом стављања оставе, подаци ће бити изгубљени тако да слика можда неће бити исправна.\n"
-#: misc/e2image.c:1152
+#: misc/e2image.c:1161
msgid "while allocating ext2_qcow2_image"
msgstr "приликом доделе „ext2_qcow2_image“"
-#: misc/e2image.c:1159
+#: misc/e2image.c:1168
msgid "while initializing ext2_qcow2_image"
msgstr "приликом покретања „ext2_qcow2_image“"
-#: misc/e2image.c:1218 misc/e2image.c:1236
+#: misc/e2image.c:1227 misc/e2image.c:1245
msgid "Programming error: multiple sequential refcount blocks created!\n"
-msgstr ""
-"Грешка програма: направљено је неколико секвентних блокова броја упута!\n"
+msgstr "Грешка програма: направљено је неколико секвентних блокова броја упута!\n"
-#: misc/e2image.c:1276
+#: misc/e2image.c:1286
msgid "while allocating block bitmap"
msgstr "приликом доделе битмапе блока"
-#: misc/e2image.c:1285
+#: misc/e2image.c:1295
msgid "while allocating scramble block bitmap"
msgstr "приликом доделе битмапе испремештаних блокова"
-#: misc/e2image.c:1292
+#: misc/e2image.c:1318
msgid "Scanning inodes...\n"
msgstr "Прегледам и-чворове...\n"
-#: misc/e2image.c:1304
+#: misc/e2image.c:1330
msgid "Can't allocate block buffer"
msgstr "Не могу да доделим међумеморију блока"
-#: misc/e2image.c:1343 misc/e2image.c:1357
+#: misc/e2image.c:1369 misc/e2image.c:1383
#, c-format
msgid "while iterating over inode %u"
msgstr "приликом понављања на и-чвору %u"
-#: misc/e2image.c:1389
+#: misc/e2image.c:1415
msgid "Raw and qcow2 images cannot be installed"
msgstr "Сирова и „qcow2“ слике не могу бити инсталиране"
-#: misc/e2image.c:1411
+#: misc/e2image.c:1437
msgid "error reading bitmaps"
msgstr "грешка читања битмапа"
-#: misc/e2image.c:1423
+#: misc/e2image.c:1449
msgid "while opening device file"
msgstr "приликом отварања датотеке уређаја"
-#: misc/e2image.c:1434
+#: misc/e2image.c:1460
msgid "while restoring the image table"
msgstr "приликом враћања табеле слике"
-#: misc/e2image.c:1531
+#: misc/e2image.c:1565
msgid "-a option can only be used with raw or QCOW2 images."
msgstr "Опција „-a“ се може користити само са сировим или „QCOW2“ сликама."
-#: misc/e2image.c:1537
+#: misc/e2image.c:1570
+msgid "-b option can only be used with raw or QCOW2 images."
+msgstr "Опција „-b“ се може користити само са сировим или „QCOW2“ сликама."
+
+#: misc/e2image.c:1576
msgid "Offsets are only allowed with raw images."
msgstr "Помераји су дозвољени само са сировим сликама."
-#: misc/e2image.c:1542
+#: misc/e2image.c:1581
msgid "Move mode is only allowed with raw images."
msgstr "Режим премештања је дозвољен само са сировим сликама."
-#: misc/e2image.c:1547
+#: misc/e2image.c:1586
msgid "Move mode requires all data mode."
msgstr "Режим премештања захтева све режиме података."
-#: misc/e2image.c:1557
+#: misc/e2image.c:1596
msgid "checking if mounted"
msgstr "проверавам да ли је прикачен"
-#: misc/e2image.c:1564
+#: misc/e2image.c:1603
msgid ""
"\n"
"Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4854,57 +4686,55 @@ msgid ""
"Use -f option if you really want to do that.\n"
msgstr ""
"\n"
-"Покретање „e2image“-а на системима датотека монтираним за читање/писање може "
-"довести до\n"
-"недоследности слике која потом неће бити корисна у сврхе исправљања "
-"грешака.\n"
+"Покретање „e2image“-а на системима датотека монтираним за читање/писање може довести до\n"
+"недоследности слике која потом неће бити корисна у сврхе исправљања грешака.\n"
"Користите опцију „-f“ ако стварно желите ово.\n"
-#: misc/e2image.c:1618
+#: misc/e2image.c:1657
msgid "QCOW2 image can not be written to the stdout!\n"
msgstr "„QCOW2“ слика не може бити исписана на стандардном излазу!\n"
-#: misc/e2image.c:1624
+#: misc/e2image.c:1663
msgid "Can not stat output\n"
msgstr "Не могу да добавим податке излаза\n"
-#: misc/e2image.c:1634
+#: misc/e2image.c:1673
#, c-format
msgid "Image (%s) is compressed\n"
msgstr "Слика (%s) је сажета\n"
-#: misc/e2image.c:1637
+#: misc/e2image.c:1676
#, c-format
msgid "Image (%s) is encrypted\n"
msgstr "Слика (%s) је шифрована\n"
-#: misc/e2image.c:1640
-#, fuzzy, c-format
+#: misc/e2image.c:1679
+#, c-format
msgid "Image (%s) is corrupted\n"
-msgstr "Слика (%s) је шифрована\n"
+msgstr "Слика (%s) је оштећена\n"
-#: misc/e2image.c:1644
+#: misc/e2image.c:1683
#, c-format
msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
msgstr "приликом покушаја претварања „qcow2“ слике (%s) у сирову слику (%s)"
-#: misc/e2image.c:1654
+#: misc/e2image.c:1693
msgid "The -c option only supported in raw mode\n"
msgstr "Опција „-c“ је подржана једино у сировом режиму\n"
-#: misc/e2image.c:1659
+#: misc/e2image.c:1698
msgid "The -c option not supported when writing to stdout\n"
msgstr "Опција „-c“ није подржана приликом писања на стандардном излазу\n"
-#: misc/e2image.c:1666
+#: misc/e2image.c:1705
msgid "while allocating check_buf"
msgstr "приликом доделе међумеморије провере"
-#: misc/e2image.c:1672
+#: misc/e2image.c:1711
msgid "The -p option only supported in raw mode\n"
msgstr "Опција „-p“ је подржана једино у сировом режиму\n"
-#: misc/e2image.c:1682
+#: misc/e2image.c:1721
#, c-format
msgid "%d blocks already contained the data to be copied\n"
msgstr "%d блока већ садрже податке за умножавање\n"
@@ -4934,7 +4764,7 @@ msgstr "e2label: грешка читања суперблока\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: није систем датотека екст2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3152
+#: misc/e2label.c:97 misc/tune2fs.c:3117
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Упозорење: натпис је предуг, скраћујем.\n"
@@ -4949,17 +4779,15 @@ msgstr "e2label: не могу опет да пређем на супербло
msgid "e2label: error writing superblock\n"
msgstr "e2label: грешка писања суперблока\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1733
+#: misc/e2label.c:117 misc/tune2fs.c:1687
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Употреба: e2label уређај [нови_натпис]\n"
#: misc/e2undo.c:124
-#, fuzzy, c-format
-msgid ""
-"Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> "
-"<filesystem>\n"
-msgstr "Употреба: %s [-f] [-h] [-n] [-v] <дттка преноса> <систем_дттка>\n"
+#, c-format
+msgid "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> <filesystem>\n"
+msgstr "Употреба: %s [-f] [-h] [-n] [-o померај] [-v] [-z дттка_врати] <датотека преноса> <систем датотека>\n"
#: misc/e2undo.c:149
msgid "The file system superblock doesn't match the undo file.\n"
@@ -5088,8 +4916,7 @@ msgstr "приликом довлачења блока %llu."
#: misc/e2undo.c:576
#, c-format
msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
-msgstr ""
-"грешка суме провере у блоку система датотека %llu (поништавам „blk %llu“)\n"
+msgstr "грешка суме провере у блоку система датотека %llu (поништавам „blk %llu“)\n"
#: misc/e2undo.c:615
#, c-format
@@ -5152,12 +4979,8 @@ msgstr ""
#: misc/findsuper.c:190
#, c-format
-msgid ""
-"byte_offset byte_start byte_end fs_blocks blksz grp mkfs/"
-"mount_time sb_uuid label\n"
-msgstr ""
-"померај_бајта почетак_бајта крај_бајта сд_блокови блквел грп mkfs/"
-"време_качења цб_ууид натпис\n"
+msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
+msgstr "померај_бајта почетак_бајта крај_бајта сд_блокови блквел грп mkfs/време_качења цб_ууид натпис\n"
#: misc/findsuper.c:264
#, c-format
@@ -5225,8 +5048,7 @@ msgid ""
"Either all or none of the filesystem types passed to -t must be prefixed\n"
"with 'no' or '!'.\n"
msgstr ""
-"Или све или ниједна врста система датотека прослеђена за „-t“ мора имати "
-"префикс\n"
+"Или све или ниједна врста система датотека прослеђена за „-t“ мора имати префикс\n"
"„no“ или „!“.\n"
#: misc/fsck.c:768
@@ -5235,12 +5057,8 @@ msgstr "Не могу да доделим меморију за врсте си
#: misc/fsck.c:891
#, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
-msgstr ""
-"%s: прескачем лош ред у датотеци „/etc/fstab“: свезујем качење са не-нултим "
-"бројем пролаза „fsck“-а\n"
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: прескачем лош ред у датотеци „/etc/fstab“: свезујем качење са не-нултим бројем пролаза „fsck“-а\n"
#: misc/fsck.c:918
#, c-format
@@ -5257,11 +5075,8 @@ msgid "--waiting-- (pass %d)\n"
msgstr "——чекам—— (%d. корак)\n"
#: misc/fsck.c:1085
-msgid ""
-"Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"Употреба: fsck [-AMNPRTV] [ -C [ од ] ] [-t врста_сис_дат] [опције_сис_дат] "
-"[сис_дттка...]\n"
+msgid "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Употреба: fsck [-AMNPRTV] [ -C [ од ] ] [-t врста_сис_дат] [опције_сис_дат] [сис_дттка...]\n"
#: misc/fsck.c:1127
#, c-format
@@ -5273,56 +5088,51 @@ msgstr "%s: превише уређаја\n"
msgid "%s: too many arguments\n"
msgstr "%s: превише аргумената\n"
-#: misc/fuse2fs.c:3739
+#: misc/fuse2fs.c:3745
msgid "Mounting read-only.\n"
msgstr "Качим само за читање.\n"
-#: misc/fuse2fs.c:3763
+#: misc/fuse2fs.c:3769
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Омогућавам корисницима да доделе све блокове. Ово је опасно!\n"
-#: misc/fuse2fs.c:3775 misc/fuse2fs.c:3789
+#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3791 misc/tune2fs.c:3049
+#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Покрените „e2fsck -fy“ „%s“.\n"
-#: misc/fuse2fs.c:3798
+#: misc/fuse2fs.c:3804
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
-msgstr ""
-"Дневнику је потребан опоравак; треба да покренете „e2fsck -E дневник_само“.\n"
+msgstr "Дневнику је потребан опоравак; треба да покренете „e2fsck -E дневник_само“.\n"
-#: misc/fuse2fs.c:3806
+#: misc/fuse2fs.c:3812
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: Писање у дневник није подржано.\n"
-#: misc/fuse2fs.c:3821
+#: misc/fuse2fs.c:3827
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
-msgstr ""
-"Упозорење: Качим непроверени сис_дттка, покретање „e2fsck“ је препоручљиво.\n"
+msgstr "Упозорење: Качим непроверени сис_дттка, покретање „e2fsck“ је препоручљиво.\n"
-#: misc/fuse2fs.c:3825
+#: misc/fuse2fs.c:3831
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
-msgstr ""
-"Упозорење: Достигнут је највећи број качења, покретање „e2fsck“ је "
-"препоручљиво.\n"
+msgstr "Упозорење: Достигнут је највећи број качења, покретање „e2fsck“ је препоручљиво.\n"
-#: misc/fuse2fs.c:3830
+#: misc/fuse2fs.c:3836
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
-msgstr ""
-"Упозорење: Достигнуто је време провере, покретање „e2fsck“ је препоручљиво.\n"
+msgstr "Упозорење: Достигнуто је време провере, покретање „e2fsck“ је препоручљиво.\n"
-#: misc/fuse2fs.c:3834
+#: misc/fuse2fs.c:3840
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Откривени су сирочићи; покретање „e2fsck“ је препоручљиво.\n"
-#: misc/fuse2fs.c:3838
+#: misc/fuse2fs.c:3844
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Откривене су грешке; покретање „e2fsck“ је препоручљиво.\n"
@@ -5355,20 +5165,16 @@ msgid ""
"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
"\t[-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]\n"
"\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]\n"
-"\t[-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z "
-"undo_file]\n"
+"\t[-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file]\n"
"\t[-jnqvDFSV] device [blocks-count]\n"
msgstr ""
-"Употреба: %s [-c|-l назив_датотеке] [-b величина_блока] [-C "
-"величина_кластера]\n"
+"Употреба: %s [-c|-l назив_датотеке] [-b величина_блока] [-C величина_кластера]\n"
"\t[-i бајтова_по_и-чвору] [-I величина_и-чвора] [-J опције_дневника]\n"
"\t[-G величина_флекс_групе] [-N број_и-чворова] [-d корени_директоријум]\n"
"\t[-m проценат_резервисаних_блокова] [-o ос_творца]\n"
-"\t[-g блокова_по_групи] [-L натпис_волумена] [-M "
-"последњи_прикачени_директоријум]\n"
+"\t[-g блокова_по_групи] [-L натпис_волумена] [-M последњи_прикачени_директоријум]\n"
"\t[-O функција[,...]] [-r ревизија_сд-а] [-E проширена_опција[,...]]\n"
-"\t[-t fs-type] [-T врста_употребе ] [-U UUID] [-e понашање_грешака][-z "
-"датотека_опозива]\n"
+"\t[-t fs-type] [-T врста_употребе ] [-U UUID] [-e понашање_грешака][-z датотека_опозива]\n"
" [-jnqvDFSV] уређај [број_блокова]\n"
#: misc/mke2fs.c:261
@@ -5393,8 +5199,7 @@ msgstr "Блок %d у области описника примарног суп
#: misc/mke2fs.c:301
#, c-format
msgid "Blocks %u through %u must be good in order to build a filesystem.\n"
-msgstr ""
-"Блокови од %u до %u морају бити добри да би се изградио систем датотека.\n"
+msgstr "Блокови од %u до %u морају бити добри да би се изградио систем датотека.\n"
#: misc/mke2fs.c:304
msgid "Aborting....\n"
@@ -5416,9 +5221,8 @@ msgid "while marking bad blocks as used"
msgstr "приликом обележавања лоших блокова коришћеним"
#: misc/mke2fs.c:368
-#, fuzzy
msgid "while writing reserved inodes"
-msgstr "приликом писања и-чвора квоте"
+msgstr "приликом писања резервисаних и-чворова"
#: misc/mke2fs.c:420
msgid "Writing inode tables: "
@@ -5433,7 +5237,7 @@ msgstr ""
"\n"
"Не могу да запишем %d блока у табели и-чвора са почетком %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2726 misc/mke2fs.c:3131
+#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
msgid "done \n"
msgstr "готово \n"
@@ -5600,73 +5404,75 @@ msgstr "УУИД система датотека: %s\n"
msgid "Superblock backups stored on blocks: "
msgstr "Резерве суперблока смештене на блоковима: "
-#: misc/mke2fs.c:820
+#: misc/mke2fs.c:822
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "„%s“ захтева „-O 64бита“\n"
-#: misc/mke2fs.c:826
+#: misc/mke2fs.c:828
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "„%s“ мора бити пре „resize=%u“\n"
-#: misc/mke2fs.c:839
+#: misc/mke2fs.c:841
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "Неисправна величина описника: %s\n"
-#: misc/mke2fs.c:853
-#, fuzzy, c-format
+#: misc/mke2fs.c:855
+#, c-format
msgid "Invalid hash seed: %s\n"
-msgstr "Неисправна нова величина: %s\n"
+msgstr "Неисправно семе хеша: %s\n"
-#: misc/mke2fs.c:865
+#: misc/mke2fs.c:867
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Неисправан померај: %s\n"
-#: misc/mke2fs.c:879 misc/tune2fs.c:2101
+#: misc/mke2fs.c:881 misc/tune2fs.c:2055
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "Неисправан период освежавања ммп-а: %s\n"
-#: misc/mke2fs.c:896
+#: misc/mke2fs.c:898
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Неисправан број суперблокова резерве: %s\n"
-#: misc/mke2fs.c:918
+#: misc/mke2fs.c:920
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Неисправан параметар искорака: %s\n"
-#: misc/mke2fs.c:933
+#: misc/mke2fs.c:935
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Неисправан параметар ширине траке: %s\n"
-#: misc/mke2fs.c:956
+#: misc/mke2fs.c:958
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Неисправан параметар промене величине: %s\n"
-#: misc/mke2fs.c:963
+#: misc/mke2fs.c:965
msgid "The resize maximum must be greater than the filesystem size.\n"
-msgstr ""
-"Највећа вредност промене величине мора бити већа од величине система "
-"датотека.\n"
+msgstr "Највећа вредност промене величине мора бити већа од величине система датотека.\n"
-#: misc/mke2fs.c:987
+#: misc/mke2fs.c:989
msgid "On-line resizing not supported with revision 0 filesystems\n"
-msgstr ""
-"Промена величине на мрежи није подржана са системима датотека ревизије 0\n"
+msgstr "Промена величине на мрежи није подржана са системима датотека ревизије 0\n"
-#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
+#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "Неисправан корени власник: %s\n"
-#: misc/mke2fs.c:1065
+#: misc/mke2fs.c:1069
+#, c-format
+msgid "Invalid encoding: %s"
+msgstr "Неисправно кодирање: %s"
+
+#: misc/mke2fs.c:1087
#, c-format
msgid ""
"\n"
@@ -5689,6 +5495,8 @@ msgid ""
"\ttest_fs\n"
"\tdiscard\n"
"\tnodiscard\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
"\tquotatype=<quota type(s) to be enabled>\n"
"\n"
msgstr ""
@@ -5696,7 +5504,7 @@ msgstr ""
"Наведена је лоша опција: %s\n"
"\n"
"Проширене опције су раздвојене зарезима, и могу имати аргумент\n"
-"\tкоји је постављен знаком једнакости (=).\n"
+"\tкоји је подешен знаком једнакости (=).\n"
"\n"
"Исправне проширене опције су:\n"
"\tmmp_update_interval=<период>\n"
@@ -5712,10 +5520,12 @@ msgstr ""
"\ttest_fs\n"
"\tdiscard\n"
"\tnodiscard\n"
+"\tencoding=<кодирање>\n"
+"\tencoding_flags=<заставице>\n"
"\tquotatype=<врста квоте за укључивање>\n"
"\n"
-#: misc/mke2fs.c:1090
+#: misc/mke2fs.c:1114
#, c-format
msgid ""
"\n"
@@ -5726,7 +5536,17 @@ msgstr ""
"Упозорење: РАИД ширина траке %u није парни умножак искорака %u.\n"
"\n"
-#: misc/mke2fs.c:1135
+#: misc/mke2fs.c:1125
+#, c-format
+msgid "error: Invalid encoding flag: %s\n"
+msgstr "грешка: Неисправна заставица кодирања: %s\n"
+
+#: misc/mke2fs.c:1131
+#, c-format
+msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
+msgstr "грешка: Кодирање мора изричито бити наведено приликом давања заставица кодирања\n"
+
+#: misc/mke2fs.c:1179
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5735,17 +5555,17 @@ msgstr ""
"Грешка синтаксе у датотеци подешавања „mke2fs“-а (%s, %d. ред)\n"
"\t%s\n"
-#: misc/mke2fs.c:1148 misc/tune2fs.c:1120
+#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Постављена је неисправна опција система датотека: %s\n"
-#: misc/mke2fs.c:1160 misc/tune2fs.c:411
+#: misc/mke2fs.c:1204 misc/tune2fs.c:417
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Постављена је неисправна опција качења: %s\n"
-#: misc/mke2fs.c:1296
+#: misc/mke2fs.c:1340
#, c-format
msgid ""
"\n"
@@ -5754,7 +5574,7 @@ msgstr ""
"\n"
"Ваша датотека „mke2fs.conf“ не дефинише „%s“ врсту система датотека.\n"
-#: misc/mke2fs.c:1300
+#: misc/mke2fs.c:1344
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5762,11 +5582,11 @@ msgstr ""
"Вероватно треба да инсталирате освежену датотеку „mke2fs.conf“.\n"
"\n"
-#: misc/mke2fs.c:1304
+#: misc/mke2fs.c:1348
msgid "Aborting...\n"
msgstr "Прекидам...\n"
-#: misc/mke2fs.c:1345
+#: misc/mke2fs.c:1389
#, c-format
msgid ""
"\n"
@@ -5774,87 +5594,82 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Упозорење: врста система датотека „%s“ није дефинисана у датотеци „mke2fs."
-"conf“\n"
+"Упозорење: врста система датотека „%s“ није дефинисана у датотеци „mke2fs.conf“\n"
"\n"
-#: misc/mke2fs.c:1527
+#: misc/mke2fs.c:1571
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Не могу да доделим меморију за нову ПУТАЊУ.\n"
-#: misc/mke2fs.c:1564
+#: misc/mke2fs.c:1608
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Не могу успешно да покренем профил (грешка: %ld).\n"
-#: misc/mke2fs.c:1597
+#: misc/mke2fs.c:1641
#, c-format
msgid "invalid block size - %s"
msgstr "неисправна величина блока — %s"
-#: misc/mke2fs.c:1601
+#: misc/mke2fs.c:1645
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Упозорење: величина блока %d није употребљива на већини система.\n"
-#: misc/mke2fs.c:1617
+#: misc/mke2fs.c:1661
#, c-format
msgid "invalid cluster size - %s"
msgstr "неисправна величина кластера — %s"
-#: misc/mke2fs.c:1630
+#: misc/mke2fs.c:1674
msgid "'-R' is deprecated, use '-E' instead"
msgstr "„-R“ је застарело, користите „-E“"
-#: misc/mke2fs.c:1644 misc/tune2fs.c:1830
+#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
#, c-format
msgid "bad error behavior - %s"
msgstr "лоше понашање грешке — %s"
-#: misc/mke2fs.c:1656
+#: misc/mke2fs.c:1700
msgid "Illegal number for blocks per group"
msgstr "Недозвољени број за блокове по групи"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1705
msgid "blocks per group must be multiple of 8"
msgstr "блокова по групи мора бити умножак од 8"
-#: misc/mke2fs.c:1669
+#: misc/mke2fs.c:1713
msgid "Illegal number for flex_bg size"
msgstr "Недозвољени број за величину „flex_bg“"
-#: misc/mke2fs.c:1675
+#: misc/mke2fs.c:1719
msgid "flex_bg size must be a power of 2"
msgstr "Величина „flex_bg“ мора бити степен 2"
-#: misc/mke2fs.c:1680
+#: misc/mke2fs.c:1724
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "Величина „flex_bg“ (%lu) мора бити мање или једнака са 2^31"
-#: misc/mke2fs.c:1690
+#: misc/mke2fs.c:1734
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "неисправан опсег и-чвора %s (најм. %d/најв. %d)"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1744
#, c-format
msgid "invalid inode size - %s"
msgstr "неисправна величина и-чвора — %s"
-#: misc/mke2fs.c:1713
-msgid ""
-"Warning: -K option is deprecated and should not be used anymore. Use '-E "
-"nodiscard' extended option instead!\n"
-msgstr ""
-"Упозорење: Опција „-K“ је застарела и не треба више да се користи. Користите "
-"проширену опцију „-E nodiscard“!\n"
+#: misc/mke2fs.c:1757
+msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
+msgstr "Упозорење: Опција „-K“ је застарела и не треба више да се користи. Користите проширену опцију „-E nodiscard“!\n"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1768
msgid "in malloc for bad_blocks_filename"
msgstr "у додели меморије за назив_датотеке_лоших_блокова"
-#: misc/mke2fs.c:1733
+#: misc/mke2fs.c:1777
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
@@ -5863,68 +5678,67 @@ msgstr ""
"Упозорење: натпис је предуг; биће скраћен на „%s“\n"
"\n"
-#: misc/mke2fs.c:1742
+#: misc/mke2fs.c:1786
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "неисправан проценат резервисаних блокова — %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1801
#, c-format
msgid "bad num inodes - %s"
msgstr "лош број и-чворова — %s"
-#: misc/mke2fs.c:1770
+#: misc/mke2fs.c:1814
msgid "while allocating fs_feature string"
msgstr "приликом доделе ниске функције система датотека"
-#: misc/mke2fs.c:1787
+#: misc/mke2fs.c:1831
#, c-format
msgid "bad revision level - %s"
msgstr "лош ниво ревизије — %s"
-#: misc/mke2fs.c:1792
+#: misc/mke2fs.c:1836
#, c-format
msgid "while trying to create revision %d"
msgstr "приликом покушаја стварања ревизије %d"
-#: misc/mke2fs.c:1806
+#: misc/mke2fs.c:1850
msgid "The -t option may only be used once"
msgstr "Опција „-t“ се може користити само једном"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1858
msgid "The -T option may only be used once"
msgstr "Опција „-T“ се може користити само једном"
-#: misc/mke2fs.c:1870 misc/mke2fs.c:3215
+#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "приликом покушаја отварања уређаја дневника „%s“\n"
-#: misc/mke2fs.c:1876
+#: misc/mke2fs.c:1920
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
-msgstr ""
-"Величина блока уређаја дневника (%d) је мања од најмање величине блока %d\n"
+msgstr "Величина блока уређаја дневника (%d) је мања од најмање величине блока %d\n"
-#: misc/mke2fs.c:1882
+#: misc/mke2fs.c:1926
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Користим величину блока уређаја дневника: %d\n"
-#: misc/mke2fs.c:1893
+#: misc/mke2fs.c:1937
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "неисправни блокови „%s“ на уређају „%s“"
-#: misc/mke2fs.c:1923
+#: misc/mke2fs.c:1967
msgid "filesystem"
msgstr "систем датотека"
-#: misc/mke2fs.c:1941 resize/main.c:497
+#: misc/mke2fs.c:1985 resize/main.c:497
msgid "while trying to determine filesystem size"
msgstr "док сам покушавао да одредим величину система датотека"
-#: misc/mke2fs.c:1947
+#: misc/mke2fs.c:1991
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5932,76 +5746,69 @@ msgstr ""
"Не могу да одредим величину уређаја; морате навести\n"
"величину система датотека\n"
-#: misc/mke2fs.c:1954
+#: misc/mke2fs.c:1998
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
"\ta modified partition being busy and in use. You may need to reboot\n"
"\tto re-read your partition table.\n"
msgstr ""
-"Извештено је да је величина уређаја нула. Наведена је неисправна партиција, "
-"или\n"
-"\tтабела партиција није поново прочитана након покретања „fdisk“-а, зато што "
-"је\n"
+"Извештено је да је величина уређаја нула. Наведена је неисправна партиција, или\n"
+"\tтабела партиција није поново прочитана након покретања „fdisk“-а, зато што је\n"
"\tизмењена партиција заузета и у употреби. Морате поново да подигнете\n"
"\tсистем да бисте поново прочитали табелу патриција.\n"
-#: misc/mke2fs.c:1971
+#: misc/mke2fs.c:2015
msgid "Filesystem larger than apparent device size."
msgstr "Систем датотека је већи од привидне величине уређаја."
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:2035
msgid "Failed to parse fs types list\n"
msgstr "Нисам успео да обрадим списак врста система датотека\n"
-#: misc/mke2fs.c:2040
+#: misc/mke2fs.c:2085
msgid "The HURD does not support the filetype feature.\n"
msgstr "ХУРД не подржава функцију врсте датотеке.\n"
-#: misc/mke2fs.c:2045
+#: misc/mke2fs.c:2090
msgid "The HURD does not support the huge_file feature.\n"
msgstr "ХУРД не подржава функцију велике датотеке.\n"
-#: misc/mke2fs.c:2050
+#: misc/mke2fs.c:2095
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "ХУРД не подржава функцију суме провере метаподатака.\n"
-#: misc/mke2fs.c:2055
-#, fuzzy
+#: misc/mke2fs.c:2100
msgid "The HURD does not support the ea_inode feature.\n"
-msgstr "ХУРД не подржава функцију велике датотеке.\n"
+msgstr "ХУРД не подржава функцију „еа_чвор“.\n"
-#: misc/mke2fs.c:2065
+#: misc/mke2fs.c:2110
msgid "while trying to determine hardware sector size"
msgstr "док сам покушавао да одредим величину хардверског сектора"
-#: misc/mke2fs.c:2071
+#: misc/mke2fs.c:2116
msgid "while trying to determine physical sector size"
msgstr "док сам покушавао да одредим величину физичког сектора"
-#: misc/mke2fs.c:2103
+#: misc/mke2fs.c:2148
msgid "while setting blocksize; too small for device\n"
msgstr "приликом постављања величине блока; премала је за уређај\n"
-#: misc/mke2fs.c:2108
+#: misc/mke2fs.c:2153
#, c-format
-msgid ""
-"Warning: specified blocksize %d is less than device physical sectorsize %d\n"
-msgstr ""
-"Упозорење: наведена величина блока %d је мања од величине физичког сектора "
-"уређаја %d\n"
+msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
+msgstr "Упозорење: наведена величина блока %d је мања од величине физичког сектора уређаја %d\n"
-#: misc/mke2fs.c:2132
+#: misc/mke2fs.c:2177
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
"\tin 32 bits using a blocksize of %d.\n"
msgstr ""
-"%s: Величина уређаја (0x%llx blocs) „%s“ је превише велика да би била "
-"изражена\n"
+"%s: Величина уређаја (0x%llx blocs) „%s“ је превише велика да би била изражена\n"
"\tса 32 бита коришћењем величине блока од %d.\n"
-#: misc/mke2fs.c:2144
+#: misc/mke2fs.c:2191
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -6010,85 +5817,80 @@ msgstr ""
"%s: Величина уређаја (0x%llx blocs) „%s“ је превише велика за прављење\n"
"\tс истема датотека коришћењем величине блока од %d.\n"
-#: misc/mke2fs.c:2166
+#: misc/mke2fs.c:2213
msgid "fs_types for mke2fs.conf resolution: "
msgstr "врсте_сд-а за резолуцију „mke2fs.conf“-а: "
-#: misc/mke2fs.c:2173
+#: misc/mke2fs.c:2220
msgid "Filesystem features not supported with revision 0 filesystems\n"
-msgstr ""
-"Функције система датотека нису подржане са системима датотека ревизије 0\n"
+msgstr "Функције система датотека нису подржане са системима датотека ревизије 0\n"
-#: misc/mke2fs.c:2181
+#: misc/mke2fs.c:2228
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Оскудни суперблокови нису подржани са системима датотека ревизије 0\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2238
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Дневници нису подржани са системима датотека ревизије 0\n"
-#: misc/mke2fs.c:2204
+#: misc/mke2fs.c:2251
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "неисправан проценат резервисаних блокова — %lf"
-#: misc/mke2fs.c:2221
-msgid ""
-"Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to "
-"rectify.\n"
-msgstr ""
-"Распони МОРАЈУ бити укључени за 64-битни систем датотека. Проследите распоне "
-"„-O“ да исправите.\n"
+#: misc/mke2fs.c:2268
+msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
+msgstr "Распони МОРАЈУ бити укључени за 64-битни систем датотека. Проследите распоне „-O“ да исправите.\n"
-#: misc/mke2fs.c:2241
+#: misc/mke2fs.c:2288
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "Величина кластера не може бити мања од величине блока.\n"
-#: misc/mke2fs.c:2247
+#: misc/mke2fs.c:2294
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "навођење величине кластера захтева функцију „bigalloc“"
-#: misc/mke2fs.c:2267
+#: misc/mke2fs.c:2314
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "упозорење: Не могу да добавим геометрију уређаја за „%s“\n"
-#: misc/mke2fs.c:2270
+#: misc/mke2fs.c:2317
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "Поравнање „%s“ је померено за %lu бајта.\n"
-#: misc/mke2fs.c:2272
+#: misc/mke2fs.c:2319
#, c-format
-msgid ""
-"This may result in very poor performance, (re)-partitioning suggested.\n"
-msgstr ""
-"Ово може довести до врло слабог учинка, предлаже вам се (поновно)-"
-"партиционисање.\n"
+msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
+msgstr "Ово може довести до врло слабог учинка, предлаже вам се (поновно)-партиционисање.\n"
-#: misc/mke2fs.c:2293
+#: misc/mke2fs.c:2340
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "блокови од %d бајта су превелики за систем (најв. %d)"
-#: misc/mke2fs.c:2297
+#: misc/mke2fs.c:2344
#, c-format
-msgid ""
-"Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
-msgstr ""
-"Упозорење: блокови од %d бајта су превелики за систем (најв. %d), приморано "
-"је настављање\n"
+msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
+msgstr "Упозорење: блокови од %d бајта су превелики за систем (најв. %d), приморано је настављање\n"
-#: misc/mke2fs.c:2305
+#: misc/mke2fs.c:2352
#, c-format
-msgid ""
-"Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
-"and journal checksum features.\n"
-msgstr ""
-"Предлог: КОристите језгро Линукса >= 3.18 због побољшане стабилности "
-"функција метаподатака и суме провере дневника.\n"
+msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
+msgstr "Предлог: КОристите језгро Линукса >= 3.18 због побољшане стабилности функција метаподатака и суме провере дневника.\n"
-#: misc/mke2fs.c:2360
+#: misc/mke2fs.c:2398
+#, c-format
+msgid "Unknown filename encoding from profile: %s"
+msgstr "Непознато кодирање назива датотеке из профила: %s"
+
+#: misc/mke2fs.c:2409
+#, c-format
+msgid "Unknown encoding flags from profile: %s"
+msgstr "Непознате заставице кодирања из профила: %s"
+
+#: misc/mke2fs.c:2434
#, c-format
msgid ""
"\n"
@@ -6103,17 +5905,24 @@ msgstr ""
"оно што ви желите.\n"
"\n"
-#: misc/mke2fs.c:2375
-#, fuzzy, c-format
+#: misc/mke2fs.c:2449
+#, c-format
msgid "%d byte inodes are too small for project quota"
+msgstr "и-чворови од %d бајта су премали за квоту пројекта"
+
+#: misc/mke2fs.c:2465
+msgid ""
+"The encrypt and casefold features are not compatible.\n"
+"They can not be both enabled simultaneously.\n"
msgstr ""
-"и-чворови од %d бајта су премали за квоту пројекта; наведите већу величину"
+"Функције кодирања и увијања слова нису сагласне.\n"
+"Не могу бити укључене истовремено.\n"
-#: misc/mke2fs.c:2397
+#: misc/mke2fs.c:2480
msgid "Can't support bigalloc feature without extents feature"
msgstr "Не могу да подржим функцију „bigalloc“ без функције распона"
-#: misc/mke2fs.c:2404
+#: misc/mke2fs.c:2487
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -6121,7 +5930,7 @@ msgstr ""
"Функције „resize_inode“ и „meta_bg“ нису сагласне.\n"
"Не могу бити укључене истовремено.\n"
-#: misc/mke2fs.c:2412
+#: misc/mke2fs.c:2495
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -6133,44 +5942,39 @@ msgstr ""
"Видите „https://ext4.wiki.kernel.org/index.php/Bigalloc“ за више о томе\n"
"\n"
-#: misc/mke2fs.c:2424
+#: misc/mke2fs.c:2507
msgid "reserved online resize blocks not supported on non-sparse filesystem"
-msgstr ""
-"резервисани блокови промене величине на мрежи нису подржани на не-оскудном "
-"систему датотека"
+msgstr "резервисани блокови промене величине на мрежи нису подржани на не-оскудном систему датотека"
-#: misc/mke2fs.c:2433
+#: misc/mke2fs.c:2516
msgid "blocks per group count out of range"
msgstr "број блокова по групи је ван опсега"
-#: misc/mke2fs.c:2455
+#: misc/mke2fs.c:2538
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
-msgstr ""
-"Функција „flex_bg“ није укључена, тако да величина „flex_bg“ не може бити "
-"наведена"
+msgstr "Функција „flex_bg“ није укључена, тако да величина „flex_bg“ не може бити наведена"
-#: misc/mke2fs.c:2467
+#: misc/mke2fs.c:2550
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "неисправна величина и-чвора %d (најм. %d/најв. %d)"
-#: misc/mke2fs.c:2482
+#: misc/mke2fs.c:2565
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
-msgstr ""
-"и-чворови од %d бајта су премали за уграђене податке; наведите већу величину"
+msgstr "и-чворови од %d бајта су премали за уграђене податке; наведите већу величину"
-#: misc/mke2fs.c:2497
+#: misc/mke2fs.c:2580
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "превише и-чворова (%llu), да повећам опсег и-чвора?"
-#: misc/mke2fs.c:2504
+#: misc/mke2fs.c:2587
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "превише и-чворова (%llu), наведи < 2^32 и-чвора"
-#: misc/mke2fs.c:2518
+#: misc/mke2fs.c:2601
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -6181,80 +5985,65 @@ msgstr ""
"\tсистем датотека са %llu блок(ов)а, наведите већи опсег_и-чвора (-i)\n"
"\tили смањите број_и-чворова (-N).\n"
-#: misc/mke2fs.c:2705
+#: misc/mke2fs.c:2788
msgid "Discarding device blocks: "
msgstr "Одбацујем блокове уређаја: "
-#: misc/mke2fs.c:2721
+#: misc/mke2fs.c:2804
msgid "failed - "
msgstr "неуспех — "
-#: misc/mke2fs.c:2780
+#: misc/mke2fs.c:2863
msgid "while initializing quota context"
msgstr "приликом покретања контекста квоте"
-#: misc/mke2fs.c:2787
+#: misc/mke2fs.c:2870
msgid "while writing quota inodes"
msgstr "приликом писања и-чвора квоте"
-#: misc/mke2fs.c:2812
+#: misc/mke2fs.c:2895
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "лоше понашање грешке у профилу — %s"
-#: misc/mke2fs.c:2888
-#, fuzzy
+#: misc/mke2fs.c:2971
msgid "in malloc for android_sparse_params"
-msgstr "у додели меморије за назив_датотеке_лоших_блокова"
+msgstr "у додели меморије за „android_sparse_params“"
-#: misc/mke2fs.c:2902
+#: misc/mke2fs.c:2985
msgid "while setting up superblock"
msgstr "приликом постављања суперблока"
-#: misc/mke2fs.c:2918
-msgid ""
-"Extents are not enabled. The file extent tree can be checksummed, whereas "
-"block maps cannot. Not enabling extents reduces the coverage of metadata "
-"checksumming. Pass -O extents to rectify.\n"
-msgstr ""
-"Распони нису укључени. Стаблу распона датотеке се може урадити сума "
-"провере, док мапама блокова не. Не укључивање распона смањује покривање "
-"метаподатака током суме провере. Проследите „-O“ распонима да исправите.\n"
+#: misc/mke2fs.c:3001
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
+msgstr "Распони нису укључени. Стаблу распона датотеке се може урадити сума провере, док мапама блокова не. Не укључивање распона смањује покривање метаподатака током суме провере. Проследите „-O“ распонима да исправите.\n"
-#: misc/mke2fs.c:2925
-msgid ""
-"64-bit filesystem support is not enabled. The larger fields afforded by "
-"this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
-msgstr ""
-"Подршка 64-битног система датотека није укључена. Већа поља обезбеђена овом "
-"функцијом укључују свеобухватну суму проевере. Проследите „-O 64-бита“ да "
-"исправите.\n"
+#: misc/mke2fs.c:3008
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
+msgstr "Подршка 64-битног система датотека није укључена. Већа поља обезбеђена овом функцијом укључују свеобухватну суму проевере. Проследите „-O 64-бита“ да исправите.\n"
-#: misc/mke2fs.c:2933
-#, fuzzy
+#: misc/mke2fs.c:3016
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
-msgstr "Функција „metadata_csum_seed“ захтеца функцију „metadata_csum“.\n"
+msgstr "Функција „metadata_csum_seed“ захтева функцију „metadata_csum“.\n"
-#: misc/mke2fs.c:2957
+#: misc/mke2fs.c:3040
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
-msgstr ""
-"Одбацивање је успело а као резултат даће 0s — прескачем брисање табеле и-"
-"чвора\n"
+msgstr "Одбацивање је успело а као резултат даће 0s — прескачем брисање табеле и-чвора\n"
-#: misc/mke2fs.c:3056
+#: misc/mke2fs.c:3139
#, c-format
msgid "unknown os - %s"
msgstr "непознат ос — %s"
-#: misc/mke2fs.c:3119
+#: misc/mke2fs.c:3202
msgid "Allocating group tables: "
msgstr "Додељујем табеле групе: "
-#: misc/mke2fs.c:3127
+#: misc/mke2fs.c:3210
msgid "while trying to allocate filesystem tables"
msgstr "приликом покушаја додељивања табела система датотека"
-#: misc/mke2fs.c:3136
+#: misc/mke2fs.c:3219
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6262,30 +6051,30 @@ msgstr ""
"\n"
"\tприликом претварања битмапе подкластера"
-#: misc/mke2fs.c:3142
+#: misc/mke2fs.c:3225
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "„%s“ може бити и даље оштећено преписивањем суперблоком\n"
-#: misc/mke2fs.c:3183
+#: misc/mke2fs.c:3266
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "приликом постављања на нулу блока %llu на крају система датотека"
-#: misc/mke2fs.c:3196
+#: misc/mke2fs.c:3279
msgid "while reserving blocks for online resize"
msgstr "приликом резервисања блокова за промену величине на мрежи"
-#: misc/mke2fs.c:3208 misc/tune2fs.c:1538
+#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
msgid "journal"
msgstr "дневник"
-#: misc/mke2fs.c:3220
+#: misc/mke2fs.c:3303
#, c-format
msgid "Adding journal to device %s: "
msgstr "Додајем дневник уређају „%s“: "
-#: misc/mke2fs.c:3227
+#: misc/mke2fs.c:3310
#, c-format
msgid ""
"\n"
@@ -6294,21 +6083,21 @@ msgstr ""
"\n"
"\tприликом покушаја додавања дневника уређају „%s“"
-#: misc/mke2fs.c:3232 misc/mke2fs.c:3261 misc/mke2fs.c:3299
-#: misc/mk_hugefiles.c:598 misc/tune2fs.c:1567 misc/tune2fs.c:1586
+#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
msgid "done\n"
msgstr "готово\n"
-#: misc/mke2fs.c:3238
+#: misc/mke2fs.c:3321
msgid "Skipping journal creation in super-only mode\n"
msgstr "Прескачем стварање дневника у режиму само-супер\n"
-#: misc/mke2fs.c:3248
+#: misc/mke2fs.c:3331
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Правим дневник (%u блока): "
-#: misc/mke2fs.c:3257
+#: misc/mke2fs.c:3340
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6316,7 +6105,7 @@ msgstr ""
"\n"
"\tприликом покушаја стварања дневника"
-#: misc/mke2fs.c:3269 misc/tune2fs.c:1185
+#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6324,31 +6113,28 @@ msgstr ""
"\n"
"Грешка приликом укључивања функције заштите од вишеструког качења."
-#: misc/mke2fs.c:3274
+#: misc/mke2fs.c:3357
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
-msgstr ""
-"Заштита од вишеструког качења је укључена са периодом освежавања од %d "
-"секунде.\n"
+msgstr "Заштита од вишеструког качења је укључена са периодом освежавања од %d секунде.\n"
-#: misc/mke2fs.c:3290
+#: misc/mke2fs.c:3373
msgid "Copying files into the device: "
msgstr "Умножавам датотеке на уређај: "
-#: misc/mke2fs.c:3296
+#: misc/mke2fs.c:3379
msgid "while populating file system"
msgstr "приликом попуњавања система датотека"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3386
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Записујем податке предрачуна суперблокова и система датотека: "
-#: misc/mke2fs.c:3310
-#, fuzzy
+#: misc/mke2fs.c:3393
msgid "while writing out and closing file system"
-msgstr "приликом постављања на нулу блока %llu на крају система датотека"
+msgstr "приликом писања и затварања система датотека"
-#: misc/mke2fs.c:3313
+#: misc/mke2fs.c:3396
msgid ""
"done\n"
"\n"
@@ -6361,29 +6147,26 @@ msgstr ""
msgid "while zeroing block %llu for hugefile"
msgstr "приликом постављања на нулу блока %llu за велику датотеку"
-#: misc/mk_hugefiles.c:514
+#: misc/mk_hugefiles.c:515
#, c-format
-msgid ""
-"Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
-msgstr ""
-"Померај партиције од %llu (%uk) блока није сагласан са величином кластера "
-"%u.\n"
+msgid "Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
+msgstr "Померај партиције од %llu (%uk) блока није сагласан са величином кластера %u.\n"
-#: misc/mk_hugefiles.c:581
+#: misc/mk_hugefiles.c:583
msgid "Huge files will be zero'ed\n"
msgstr "Огромне датотеке биће сведене на нулу\n"
-#: misc/mk_hugefiles.c:582
+#: misc/mk_hugefiles.c:584
#, c-format
msgid "Creating %lu huge file(s) "
msgstr "Стварам %lu огромну(е) датотеку(е) "
-#: misc/mk_hugefiles.c:584
+#: misc/mk_hugefiles.c:586
#, c-format
msgid "with %llu blocks each"
msgstr "са %llu блока свака"
-#: misc/mk_hugefiles.c:593
+#: misc/mk_hugefiles.c:595
#, c-format
msgid "while creating huge file %lu"
msgstr "приликом стварања огромне датотеке %lu"
@@ -6432,6 +6215,8 @@ msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
msgstr ""
+"\n"
+"Ова операција захтева недавно проверени систем датотека.\n"
#: misc/tune2fs.c:121
msgid "Please run e2fsck -f on the filesystem.\n"
@@ -6442,7 +6227,7 @@ msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Покрените „e2fsck -fD“ на систему датотека.\n"
#: misc/tune2fs.c:136
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
"\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
@@ -6454,14 +6239,13 @@ msgid ""
"\t[-I new_inode_size] [-z undo_file] device\n"
msgstr ""
"Употреба: %s [-c највећи_број_качења] [-e понашање_грешака] [-f] [-g група]\n"
-"\t[-i период[д|м|в]] [-j] [-J опције_дневника] [-l]\n"
+"\t[-i период[d|m|w]] [-j] [-J опције_дневника] [-l]\n"
"\t[-m проценат_резервисаних_блокова] [-o [^]опције_качења[,...]]\n"
-" [-p период_ммп_освежавања] [-r број_резервисаних_блокова] [-u "
-"корисник]\n"
-" [-C број_качења] [-L натпис_волумена] [-M последњи_прикачени_дир]\n"
-" [-O [^]функција[,...]] [-Q опције_квоте]\n"
-"\t[-E проширена_опција[,...]] [-T време_последње_провере] [-U УУИД]\n"
-"\t[-I нова_величина_и-чвора] [-z датотека_опозива] уређај\n"
+"\t[-r број_резервисаних_блокова] [-u корисник] [-C број_качења]\n"
+"\t[-L натпис_волумена] [-M последњи_качени_дир]\n"
+"\t[-O [^]функција[,...]] [-Q опције_квоте]\n"
+"\t[-E проширена_опција[,...]] [-T последње_време_провере] [-U УУИД]\n"
+"\t[-I нова_величина_и-чвора] [-z датотека_поништења] уређај\n"
#: misc/tune2fs.c:223
msgid "Journal superblock not found!\n"
@@ -6471,16 +6255,25 @@ msgstr "Нисам нашао суперблок дневника!\n"
msgid "while trying to open external journal"
msgstr "приликом покушаја отварања спољног дневника"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2845
+#: misc/tune2fs.c:287 misc/tune2fs.c:2804
#, c-format
msgid "%s is not a journal device.\n"
msgstr "„%s“ није уређај дневника.\n"
-#: misc/tune2fs.c:297 misc/tune2fs.c:2856
+#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#, c-format
+msgid ""
+"Journal superblock is corrupted, nr_users\n"
+"is too high (%d).\n"
+msgstr ""
+"Суперблок дневника је оштећен, бр_корисника\n"
+"је превисок (%d).\n"
+
+#: misc/tune2fs.c:303 misc/tune2fs.c:2820
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "Нисам нашао УУИД система датотека на уређају дневника.\n"
-#: misc/tune2fs.c:321
+#: misc/tune2fs.c:327
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6488,52 +6281,52 @@ msgstr ""
"Не могу да нађем уређај дневника. НИЈЕ уклоњен\n"
"Користите опцију „-f“ да уклоните недостајући уређај дневника.\n"
-#: misc/tune2fs.c:330
+#: misc/tune2fs.c:336
msgid "Journal removed\n"
msgstr "Дневник је уклоњен\n"
-#: misc/tune2fs.c:374
+#: misc/tune2fs.c:380
msgid "while reading bitmaps"
msgstr "приликом читања битмапа"
-#: misc/tune2fs.c:382
+#: misc/tune2fs.c:388
msgid "while clearing journal inode"
msgstr "приликом брисања и-чвора дневника"
-#: misc/tune2fs.c:393
+#: misc/tune2fs.c:399
msgid "while writing journal inode"
msgstr "приликом писања и-чвора дневника"
-#: misc/tune2fs.c:429 misc/tune2fs.c:452 misc/tune2fs.c:465
+#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
msgid "(and reboot afterwards!)\n"
msgstr "(и после поново подигните систем!)\n"
-#: misc/tune2fs.c:480
+#: misc/tune2fs.c:486
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Након што покренете „e2fsck“, покрените „resize2fs %s %s“"
-#: misc/tune2fs.c:483
+#: misc/tune2fs.c:489
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Покрените „resize2fs %s %s"
-#: misc/tune2fs.c:487
+#: misc/tune2fs.c:493
#, c-format
msgid " -z \"%s\""
msgstr " -z „%s“"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:495
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "“ да укључите 64-битни режим.\n"
-#: misc/tune2fs.c:491
+#: misc/tune2fs.c:497
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "“ да искључите 64-битни режим.\n"
-#: misc/tune2fs.c:1087
+#: misc/tune2fs.c:1035
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6541,17 +6334,17 @@ msgstr ""
"УПОЗОРЕЊЕ: Не могу да потврдим подршку језгра за „metadata_csum_seed“.\n"
" Ово захтева Линукс >= v4.4.\n"
-#: misc/tune2fs.c:1123
+#: misc/tune2fs.c:1071
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Брисање „%s“ функције система датотека није подржано.\n"
-#: misc/tune2fs.c:1129
+#: misc/tune2fs.c:1077
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Постављање „%s“ функције система датотека није подржано.\n"
-#: misc/tune2fs.c:1138
+#: misc/tune2fs.c:1086
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6559,7 +6352,7 @@ msgstr ""
"Функција „has_journal“ може бити очишћена само када је систем датотека\n"
"откачен или прикачен само за читање.\n"
-#: misc/tune2fs.c:1146
+#: misc/tune2fs.c:1094
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6567,7 +6360,7 @@ msgstr ""
"Заставица „needs_recovery“ је постављена. Покрените „e2fsck“ пре\n"
"брисања заставице „has_journal“.\n"
-#: misc/tune2fs.c:1164
+#: misc/tune2fs.c:1112
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6575,7 +6368,7 @@ msgstr ""
"Постављање „sparse_super“ функције система датотека није подржано\n"
"за системе датотека са укљученом функцијом „meta_bg“.\n"
-#: misc/tune2fs.c:1177
+#: misc/tune2fs.c:1125
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6585,14 +6378,12 @@ msgstr ""
"бити постављена ако је систем датотека прикачен\n"
"или само за читање.\n"
-#: misc/tune2fs.c:1195
+#: misc/tune2fs.c:1143
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
-msgstr ""
-"Заштита од вишеструког качења је била укључена са периодом освежавања од %d "
-"сек.\n"
+msgstr "Заштита од вишеструког качења је била укључена са периодом освежавања од %d сек.\n"
-#: misc/tune2fs.c:1204
+#: misc/tune2fs.c:1152
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6600,20 +6391,20 @@ msgstr ""
"Функција заштите од вишеструког качења не може бити\n"
"искључена ако је систем датотека само за читање.\n"
-#: misc/tune2fs.c:1212
+#: misc/tune2fs.c:1160
msgid "Error while reading bitmaps\n"
msgstr "Грешка приликом читања битмапа\n"
-#: misc/tune2fs.c:1221
+#: misc/tune2fs.c:1169
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Магични број у ММП блоку не одговара. очекиван: %x, стваран: %x\n"
-#: misc/tune2fs.c:1226
+#: misc/tune2fs.c:1174
msgid "while reading MMP block."
msgstr "приликом читања ММП блока."
-#: misc/tune2fs.c:1258
+#: misc/tune2fs.c:1206
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6621,7 +6412,7 @@ msgstr ""
"Брисање заставице „flex_bg“ ће довести до недоследности\n"
"система датотека.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1217
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6629,59 +6420,46 @@ msgstr ""
"Функција „huge_file“ може бити очишћена само када је систем датотека\n"
"откачен или прикачен само за читање.\n"
-#: misc/tune2fs.c:1280
+#: misc/tune2fs.c:1228
msgid "Enabling checksums could take some time."
msgstr "Укључивање сума провере може потрајати."
-#: misc/tune2fs.c:1282
+#: misc/tune2fs.c:1230
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Не могу да укључим „metadata_csum“ на прикаченом систему датотека!\n"
-#: misc/tune2fs.c:1288
-msgid ""
-"Extents are not enabled. The file extent tree can be checksummed, whereas "
-"block maps cannot. Not enabling extents reduces the coverage of metadata "
-"checksumming. Re-run with -O extent to rectify.\n"
-msgstr ""
-"Распони нису укључени. Стаблу распона датотеке се може урадити сума "
-"провере, док мапама блокова не. Не укључивање распона смањује покривање "
-"метаподатака током суме провере. Поново покрените са „-O“ распоном да "
-"исправите.\n"
+#: misc/tune2fs.c:1236
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
+msgstr "Распони нису укључени. Стаблу распона датотеке се може урадити сума провере, док мапама блокова не. Не укључивање распона смањује покривање метаподатака током суме провере. Поново покрените са „-O“ распоном да исправите.\n"
-#: misc/tune2fs.c:1295
-msgid ""
-"64-bit filesystem support is not enabled. The larger fields afforded by "
-"this feature enable full-strength checksumming. Run resize2fs -b to "
-"rectify.\n"
-msgstr ""
-"Подршка 64-битног система датотека није укључена. Већа поља обезбеђена овом "
-"функцијом укључују свеобухватну суму проевере. Покрените „resize2fs -b“ да "
-"исправите.\n"
+#: misc/tune2fs.c:1243
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
+msgstr "Подршка 64-битног система датотека није укључена. Већа поља обезбеђена овом функцијом укључују свеобухватну суму проевере. Покрените „resize2fs -b“ да исправите.\n"
-#: misc/tune2fs.c:1321
+#: misc/tune2fs.c:1269
msgid "Disabling checksums could take some time."
msgstr "Искључивање сума провере може потрајати."
-#: misc/tune2fs.c:1323
+#: misc/tune2fs.c:1271
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Не могу да искључим „metadata_csum“ на прикаченом систему датотека!\n"
-#: misc/tune2fs.c:1386
+#: misc/tune2fs.c:1334
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Не могу да укључим 64-битни режим док је прикачен!\n"
-#: misc/tune2fs.c:1396
+#: misc/tune2fs.c:1344
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Не могу да искључим 64-битни режим док је прикачен!\n"
-#: misc/tune2fs.c:1426
+#: misc/tune2fs.c:1374
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
-msgstr ""
+msgstr "Не могу да омогућим функцију пројекта; величина и-чвора је премала.\n"
-#: misc/tune2fs.c:1447
+#: misc/tune2fs.c:1395
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6689,7 +6467,11 @@ msgstr ""
"\n"
"Упозорење: Опција „^quota“ превазилази аргументе „-Q“.\n"
-#: misc/tune2fs.c:1465
+#: misc/tune2fs.c:1405
+msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+msgstr "Не могу да омогућим функцију шифровања на системима датотека са укљученом функцијом кодирања.\n"
+
+#: misc/tune2fs.c:1419
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6697,26 +6479,23 @@ msgstr ""
"Постављање функције „metadata_csum_seed“ је подржано само\n"
"на системима датотека са укљученом функцијом „metadata_csum“.\n"
-#: misc/tune2fs.c:1483
+#: misc/tune2fs.c:1437
msgid ""
-"UUID has changed since enabling metadata_csum. Filesystem must be "
-"unmounted \n"
+"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
msgstr ""
-"УУИД је измењен од укључивања функције „metadata_csum“. Систем датотека "
-"мора бити откачен \n"
+"УУИД је измењен од укључивања функције „metadata_csum“. Систем датотека мора бити откачен \n"
"да би се безбедно преписали сви метаподаци како би одговарали новом УУИД-у.\n"
-#: misc/tune2fs.c:1489
-#, fuzzy
+#: misc/tune2fs.c:1443
msgid "Recalculating checksums could take some time."
-msgstr "Укључивање сума провере може потрајати."
+msgstr "Поновно израчунавање сума провере може потрајати."
-#: misc/tune2fs.c:1531
+#: misc/tune2fs.c:1485
msgid "The filesystem already has a journal.\n"
msgstr "Систем датотека већ има дневник.\n"
-#: misc/tune2fs.c:1551
+#: misc/tune2fs.c:1505
#, c-format
msgid ""
"\n"
@@ -6725,21 +6504,21 @@ msgstr ""
"\n"
"\tприликом покушаја отварања дневника на „%s“\n"
-#: misc/tune2fs.c:1555
+#: misc/tune2fs.c:1509
#, c-format
msgid "Creating journal on device %s: "
msgstr "Стварам дневник на уређају „%s“: "
-#: misc/tune2fs.c:1563
+#: misc/tune2fs.c:1517
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "приликом додавања система датотека дневнику на „%s“"
-#: misc/tune2fs.c:1569
+#: misc/tune2fs.c:1523
msgid "Creating journal inode: "
msgstr "Стварам и-чвор дневника: "
-#: misc/tune2fs.c:1583
+#: misc/tune2fs.c:1537
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6747,37 +6526,36 @@ msgstr ""
"\n"
"\tприликом покушаја стварања датотеке дневника"
-#: misc/tune2fs.c:1621
+#: misc/tune2fs.c:1575
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
-msgstr ""
+msgstr "Не могу да омогућим квоту пројекта; величина и-чвора је премала.\n"
-#: misc/tune2fs.c:1634
+#: misc/tune2fs.c:1588
msgid "while initializing quota context in support library"
msgstr "приликом покретања контекста квоте у библиотеци подршке"
-#: misc/tune2fs.c:1649
+#: misc/tune2fs.c:1603
#, c-format
msgid "while updating quota limits (%d)"
msgstr "приликом освежавања ограничења квоте (%d)"
-#: misc/tune2fs.c:1657
+#: misc/tune2fs.c:1611
#, c-format
msgid "while writing quota file (%d)"
msgstr "приликом писања датотеке квоте (%d)"
-#: misc/tune2fs.c:1675
+#: misc/tune2fs.c:1629
#, c-format
msgid "while removing quota file (%d)"
msgstr "приликом уклањања датотеке квоте (%d)"
-#: misc/tune2fs.c:1718
+#: misc/tune2fs.c:1672
msgid ""
"\n"
"Bad quota options specified.\n"
"\n"
-"Following valid quota options are available (pass by separating with "
-"comma):\n"
+"Following valid quota options are available (pass by separating with comma):\n"
"\t[^]usr[quota]\n"
"\t[^]grp[quota]\n"
"\t[^]prj[quota]\n"
@@ -6787,106 +6565,105 @@ msgstr ""
"\n"
"Наведене су лоше опције квоте.\n"
"\n"
-"Доступне су следеће исправне опције квоте (прослеђују се раздвојене "
-"зарезом):\n"
+"Доступне су следеће исправне опције квоте (прослеђују се раздвојене зарезом):\n"
"\t[^]usr[quota]\n"
"\t[^]grp[quota]\n"
"\t[^]prj[quota]\n"
"\n"
"\n"
-#: misc/tune2fs.c:1776
+#: misc/tune2fs.c:1730
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Не могу да обрадим одредник датума/времена: %s"
-#: misc/tune2fs.c:1801 misc/tune2fs.c:1814
+#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
#, c-format
msgid "bad mounts count - %s"
msgstr "лош број качења — %s"
-#: misc/tune2fs.c:1857
+#: misc/tune2fs.c:1811
#, c-format
msgid "bad gid/group name - %s"
msgstr "лош назив гид-а/групе — %s"
-#: misc/tune2fs.c:1890
+#: misc/tune2fs.c:1844
#, c-format
msgid "bad interval - %s"
msgstr "лош период — %s"
-#: misc/tune2fs.c:1919
+#: misc/tune2fs.c:1873
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "лош опсег резервисаног блока — %s"
-#: misc/tune2fs.c:1934
+#: misc/tune2fs.c:1888
msgid "-o may only be specified once"
msgstr "„-o“ се може навести само једном"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1897
msgid "-O may only be specified once"
msgstr "„-O“ се може навести само једном"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1914
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "лош број резервисаних блокова — %s"
-#: misc/tune2fs.c:1989
+#: misc/tune2fs.c:1943
#, c-format
msgid "bad uid/user name - %s"
msgstr "лош назив уид-а/корисника — %s"
-#: misc/tune2fs.c:2006
+#: misc/tune2fs.c:1960
#, c-format
msgid "bad inode size - %s"
msgstr "лоша величина и-чвора — %s"
-#: misc/tune2fs.c:2013
+#: misc/tune2fs.c:1967
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Величина и-чвора мора бити степен двојке — %s"
-#: misc/tune2fs.c:2110
+#: misc/tune2fs.c:2064
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "период_ммп_освежавања је превелик: %lu\n"
-#: misc/tune2fs.c:2115
+#: misc/tune2fs.c:2069
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
-msgid_plural ""
-"Setting multiple mount protection update interval to %lu seconds\n"
-msgstr[0] ""
-"Постављам период освежавања заштите од вишеструког качења на %lu секунду\n"
-msgstr[1] ""
-"Постављам период освежавања заштите од вишеструког качења на %lu секунде\n"
-msgstr[2] ""
-"Постављам период освежавања заштите од вишеструког качења на %lu секунди\n"
+msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
+msgstr[0] "Постављам период освежавања заштите од вишеструког качења на %lu секунду\n"
+msgstr[1] "Постављам период освежавања заштите од вишеструког качења на %lu секунде\n"
+msgstr[2] "Постављам период освежавања заштите од вишеструког качења на %lu секунди\n"
-#: misc/tune2fs.c:2138
+#: misc/tune2fs.c:2078
+#, c-format
+msgid "Setting filesystem error flag to force fsck.\n"
+msgstr "Постављам зставицу грешке система датотека на присилну проверу истог.\n"
+
+#: misc/tune2fs.c:2096
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Неисправан РАИД искорак: %s\n"
-#: misc/tune2fs.c:2153
+#: misc/tune2fs.c:2111
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Неисправна РАИД ширина траке: %s\n"
-#: misc/tune2fs.c:2168
+#: misc/tune2fs.c:2126
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Неисправан хеш алгоритам: %s\n"
-#: misc/tune2fs.c:2174
+#: misc/tune2fs.c:2132
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Постављам основни хеш алгоритам на „%s“ (%d)\n"
-#: misc/tune2fs.c:2193
-#, fuzzy
+#: misc/tune2fs.c:2151
msgid ""
"\n"
"Bad options specified.\n"
@@ -6901,6 +6678,7 @@ msgid ""
"\tmmp_update_interval=<mmp update interval in seconds>\n"
"\tstride=<RAID per-disk chunk size in blocks>\n"
"\tstripe_width=<RAID stride*data disks in blocks>\n"
+"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
msgstr ""
@@ -6908,43 +6686,44 @@ msgstr ""
"Наведене су лоше опције.\n"
"\n"
"Проширене опције су раздвојене зарезима, и могу имати аргумент\n"
-"\tкоји је постављен знаком једнакости (=).\n"
+"\tкоји је подешен знаком једнакости (=).\n"
"\n"
"Исправне проширене опције су:\n"
"\tclear_mmp\n"
"\thash_alg=<хеш алгоритам>\n"
"\tmount_opts=<проширене подразумеване опције качења>\n"
+"\tmmp_update_interval=<ммп период освежавања у секундама>\n"
"\tstride=<РАИД величина комада по диску у блоковима>\n"
"\tstripe_width=<РАИД дискови искорак*подаци у блоковима>\n"
+"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
-#: misc/tune2fs.c:2663
+#: misc/tune2fs.c:2622
msgid "Failed to read inode bitmap\n"
msgstr "Нисам успео да прочитам битмапу и-чвора\n"
-#: misc/tune2fs.c:2668
+#: misc/tune2fs.c:2627
msgid "Failed to read block bitmap\n"
msgstr "Нисам успео да прочитам битмапу блока\n"
-#: misc/tune2fs.c:2685 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "блокови за премештање"
-#: misc/tune2fs.c:2688
+#: misc/tune2fs.c:2647
msgid "Failed to allocate block bitmap when increasing inode size\n"
-msgstr ""
-"Нисам успео да доделим битмау блока приликом повећања величине и-чвора\n"
+msgstr "Нисам успео да доделим битмау блока приликом повећања величине и-чвора\n"
-#: misc/tune2fs.c:2694
+#: misc/tune2fs.c:2653
msgid "Not enough space to increase inode size \n"
msgstr "Нема довољно простора за повећање величине и-чвора \n"
-#: misc/tune2fs.c:2699
+#: misc/tune2fs.c:2658
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Нисам успео да преместим блокове приликом промене величине и-чвора \n"
-#: misc/tune2fs.c:2731
+#: misc/tune2fs.c:2690
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6952,16 +6731,15 @@ msgstr ""
"Грешка промене величине и-чвора.\n"
"Покрените „e2undo“ да поништите измене система датотека. \n"
-#: misc/tune2fs.c:2936
+#: misc/tune2fs.c:2900
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
msgstr ""
-"Ако сте сигурни да систем датотека није у употреби ни на једном чвору, "
-"покрените:\n"
+"Ако сте сигурни да систем датотека није у употреби ни на једном чвору, покрените:\n"
"„tune2fs -f -E clear_mmp {уређај}“\n"
-#: misc/tune2fs.c:2943
+#: misc/tune2fs.c:2907
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6970,29 +6748,29 @@ msgstr ""
"Магија ММП блока је лоша. Покушајте да је поправите покретањем:\n"
"„e2fsck -f %s“\n"
-#: misc/tune2fs.c:2955
+#: misc/tune2fs.c:2919
msgid "Cannot modify a journal device.\n"
msgstr "Не могу да изменим уређај дневника.\n"
-#: misc/tune2fs.c:2968
+#: misc/tune2fs.c:2932
#, c-format
msgid "The inode size is already %lu\n"
msgstr "Величина и-чвора је већ %lu\n"
-#: misc/tune2fs.c:2975
+#: misc/tune2fs.c:2939
msgid "Shrinking inode size is not supported\n"
msgstr "Скупљање величине и-чвора није подржано\n"
-#: misc/tune2fs.c:2980
+#: misc/tune2fs.c:2944
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Неисправна величина и-чвора %lu (најв. %d)\n"
-#: misc/tune2fs.c:2986
+#: misc/tune2fs.c:2950
msgid "Resizing inodes could take some time."
msgstr "Промена величине и-чворова може потрајати мало дуже."
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:2998
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -7006,61 +6784,60 @@ msgstr ""
"\n"
"\te2fsck -E само_дневник %s\n"
"\n"
-"затим поново покренути ову наредбу. У супротном, све начињене измене могу "
-"бити преписане\n"
+"затим поново покренути ову наредбу. У супротном, све начињене измене могу бити преписане\n"
"опоравком дневника.\n"
-#: misc/tune2fs.c:3045
+#: misc/tune2fs.c:3009
#, c-format
msgid "Recovering journal.\n"
msgstr "Опорављам дневник.\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3028
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Постављам највећи број качења на %d\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3034
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Постављам текући број качења на %d\n"
-#: misc/tune2fs.c:3074
+#: misc/tune2fs.c:3039
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Постављам понашање грешке на %d\n"
-#: misc/tune2fs.c:3079
+#: misc/tune2fs.c:3044
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Постављам гид резервисаних блокова на %lu\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3049
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "период између провера је превелик (%lu)"
-#: misc/tune2fs.c:3091
+#: misc/tune2fs.c:3056
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Постављам период између провера на %lu секунде\n"
-#: misc/tune2fs.c:3098
+#: misc/tune2fs.c:3063
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Постављам проценат резервисаних блокова на %g%% (%llu блока)\n"
-#: misc/tune2fs.c:3104
+#: misc/tune2fs.c:3069
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "број резервисаних блокова је превелик (%llu)"
-#: misc/tune2fs.c:3111
+#: misc/tune2fs.c:3076
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Постављам брј резервисаних блокова на %llu\n"
-#: misc/tune2fs.c:3116
+#: misc/tune2fs.c:3081
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -7068,7 +6845,7 @@ msgstr ""
"\n"
"Систем датотека већ има оскудне суперблокове.\n"
-#: misc/tune2fs.c:3119
+#: misc/tune2fs.c:3084
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -7078,7 +6855,7 @@ msgstr ""
"Постављање заставице оскудног суперблока није подржано\n"
"за системе датотека са укљученом функцијом „meta_bg“.\n"
-#: misc/tune2fs.c:3129
+#: misc/tune2fs.c:3094
#, c-format
msgid ""
"\n"
@@ -7087,7 +6864,7 @@ msgstr ""
"\n"
"Заставица оскудног суперблока је постављена. %s"
-#: misc/tune2fs.c:3134
+#: misc/tune2fs.c:3099
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -7095,58 +6872,49 @@ msgstr ""
"\n"
"Брисање заставице оскудног суперблока није подржано.\n"
-#: misc/tune2fs.c:3142
+#: misc/tune2fs.c:3107
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Постављам време последње провере система датотека на %s\n"
-#: misc/tune2fs.c:3148
+#: misc/tune2fs.c:3113
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Постављам уид резервисаних блокова на %lu\n"
-#: misc/tune2fs.c:3180
+#: misc/tune2fs.c:3145
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Грешка коришћења „clear_mmp“-а. Мора се користити са „-f“\n"
-#: misc/tune2fs.c:3198
-msgid ""
-"The quota feature may only be changed when the filesystem is unmounted.\n"
-msgstr ""
-"Функција квоте се може изменити само када је систем датотека откачен.\n"
+#: misc/tune2fs.c:3163
+msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
+msgstr "Функција квоте се може изменити само када је систем датотека откачен.\n"
+
+#: misc/tune2fs.c:3181
+msgid "Setting the UUID on this filesystem could take some time."
+msgstr "Подешавање УУИД-а на овом систему датотека може потрајати."
-#: misc/tune2fs.c:3222
+#: misc/tune2fs.c:3196
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "УУИД се може изменити само када је систем датотека откачен.\n"
-#: misc/tune2fs.c:3225
-msgid ""
-"If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
-"and re-run this command.\n"
-msgstr ""
-"Ако користите само језгра новија од v4.4, покрените „tune2fs -O "
-"metadata_csum_seed“ и поново је покрените.\n"
-
-#: misc/tune2fs.c:3234
-msgid "Setting UUID on a checksummed filesystem could take some time."
-msgstr ""
-"Подешавање УУИД-а на систему датотека са сумом провере може потрајати мало "
-"дуже."
+#: misc/tune2fs.c:3199
+msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
+msgstr "Ако користите само језгра новија од v4.4, покрените „tune2fs -O metadata_csum_seed“ и поново је покрените.\n"
-#: misc/tune2fs.c:3259
+#: misc/tune2fs.c:3229
msgid "Invalid UUID format\n"
msgstr "Неисправан УУИД запис\n"
-#: misc/tune2fs.c:3275
+#: misc/tune2fs.c:3245
msgid "Need to update journal superblock.\n"
msgstr "Потребно је освежавање суперблока дневника.\n"
-#: misc/tune2fs.c:3301
+#: misc/tune2fs.c:3267
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
-msgstr ""
-"Величина и-чвора се може изменити само када је систем датотека откачен.\n"
+msgstr "Величина и-чвора се може изменити само када је систем датотека откачен.\n"
-#: misc/tune2fs.c:3308
+#: misc/tune2fs.c:3274
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -7154,61 +6922,61 @@ msgstr ""
"Промена величине и-чвора није подржана за системе датотека са укљученом\n"
"функцијом „flex_bg“.\n"
-#: misc/tune2fs.c:3326
+#: misc/tune2fs.c:3292
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Постављам величину и-чвора %lu\n"
-#: misc/tune2fs.c:3330
+#: misc/tune2fs.c:3296
msgid "Failed to change inode size\n"
msgstr "Нисам успео да изменим величину и-чвора\n"
-#: misc/tune2fs.c:3344
+#: misc/tune2fs.c:3310
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Постављам величину искорака на %d\n"
-#: misc/tune2fs.c:3349
+#: misc/tune2fs.c:3315
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Постављам ширину траке на %d\n"
-#: misc/tune2fs.c:3356
+#: misc/tune2fs.c:3322
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Постављам проширене основне опције качења на „%s“\n"
-#: misc/util.c:100
+#: misc/util.c:101
msgid "<proceeding>\n"
msgstr "<настављам>\n"
-#: misc/util.c:104
-#, fuzzy, c-format
+#: misc/util.c:105
+#, c-format
msgid "Proceed anyway (or wait %d seconds to proceed) ? (y,N) "
-msgstr "Да наставим ипак (или да сачекам %d сек.) ? (y,N = да,не) "
+msgstr "Да наставим (или да сачекам %d сек.) ? (y,N = да,не) "
-#: misc/util.c:108
+#: misc/util.c:109
msgid "Proceed anyway? (y,N) "
msgstr "Да наставим ипак? (y,N = да,не) "
-#: misc/util.c:133
+#: misc/util.c:136
msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n"
msgstr "„mke2fs“ је ипак присиљено. Надам се да је „/etc/mtab“ неисправно.\n"
-#: misc/util.c:138
+#: misc/util.c:141
#, c-format
msgid "will not make a %s here!\n"
msgstr "неће овде направити „%s“!\n"
-#: misc/util.c:145
+#: misc/util.c:148
msgid "mke2fs forced anyway.\n"
msgstr "„mke2fs“ је ипак присиљено.\n"
-#: misc/util.c:161
+#: misc/util.c:164
msgid "Couldn't allocate memory to parse journal options!\n"
msgstr "Не могу да доделим меморију за обраду опција дневника!\n"
-#: misc/util.c:186
+#: misc/util.c:189
#, c-format
msgid ""
"\n"
@@ -7217,7 +6985,7 @@ msgstr ""
"\n"
"Не могу да нађем уређај дневника који одговара „%s“\n"
-#: misc/util.c:213
+#: misc/util.c:216
msgid ""
"\n"
"Bad journal options specified.\n"
@@ -7237,18 +7005,17 @@ msgstr ""
"Наведене су лоше опције дневника.\n"
"\n"
"Опције дневника су раздвојене зарезима, и могу имати аргумент\n"
-"\tкоји је постављен знаком једнакости „=“.\n"
+"\tкоји је подешен знаком једнакости „=“.\n"
"\n"
"Исправне опције дневника су:\n"
"\tsize=<величина дневника у мегабајтима>\n"
"\tdevice=<уређај дневника>\n"
"\tlocation=<место дневника>\n"
"\n"
-"Величина дневника мора бити између 1024 и 10240000 блокова система "
-"датотека.\n"
+"Величина дневника мора бити између 1024 и 10240000 блокова система датотека.\n"
"\n"
-#: misc/util.c:244
+#: misc/util.c:247
msgid ""
"\n"
"Filesystem too small for a journal\n"
@@ -7256,7 +7023,7 @@ msgstr ""
"\n"
"Систем датотека је премали за дневник\n"
-#: misc/util.c:251
+#: misc/util.c:254
#, c-format
msgid ""
"\n"
@@ -7267,7 +7034,7 @@ msgstr ""
"Затражена величина дневника је %d блока; мора бити\n"
"између 1024 и 10240000 блокова. Прекидам.\n"
-#: misc/util.c:259
+#: misc/util.c:262
msgid ""
"\n"
"Journal size too big for filesystem.\n"
@@ -7275,21 +7042,19 @@ msgstr ""
"\n"
"Величина дневника је превелика за систем датотека.\n"
-#: misc/util.c:273
+#: misc/util.c:276
#, c-format
msgid ""
"This filesystem will be automatically checked every %d mounts or\n"
"%g days, whichever comes first. Use tune2fs -c or -i to override.\n"
msgstr ""
-"Систем датотека ће бити самостално проверен након %d качења или након %g "
-"дана,\n"
+"Систем датотека ће бити самостално проверен након %d качења или након %g дана,\n"
"до чега прво дође. Користите „tune2fs -c“ или „-i“ за прескакање.\n"
#: misc/uuidd.c:49
#, c-format
msgid "Usage: %s [-d] [-p pidfile] [-s socketpath] [-T timeout]\n"
-msgstr ""
-"Употреба: %s [-d] [-p датотека_пид-а] [-s путања_утичнице] [-T време]\n"
+msgstr "Употреба: %s [-d] [-p датотека_пид-а] [-s путања_утичнице] [-T време]\n"
#: misc/uuidd.c:51
#, c-format
@@ -7431,14 +7196,12 @@ msgid "#\tNum=%llu, Size=%llu, Cursor=%llu, Sorted=%llu\n"
msgstr "#\tБрој=%llu, Величина=%llu, Курзор=%llu, Поређано=%llu\n"
#: resize/main.c:49
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] "
-"[-S RAID-stride] [-z undo_file]\n"
+"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] [-S RAID-stride] [-z undo_file]\n"
"\n"
msgstr ""
-"Употреба: %s [-d заставице_прочишћавања] [-f] [-F] [-M] [-P] [-p] уређај [-"
-"b|-s|нова_величина] [-z датотека_опозива]\n"
+"Употреба: %s [-d заставице_прочишћавања] [-f] [-F] [-M] [-P] [-p] уређај [-b|-s|нова_величина] [-S RAID-stride] [-z датотека_опозива]\n"
"\n"
#: resize/main.c:73
@@ -7478,10 +7241,8 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Промена величине „bigalloc“ система датотека није у потпуности испробана. "
-"Наставите на\n"
-"сопствену одговорност! Користите опцију „force“ ако ипак желите да "
-"наставите.\n"
+"Промена величине „bigalloc“ система датотека није у потпуности испробана. Наставите на\n"
+"сопствену одговорност! Користите опцију „force“ ако ипак желите да наставите.\n"
"\n"
#: resize/main.c:366
@@ -7544,27 +7305,18 @@ msgstr "Не могу да подесим и да поништим 64-битну
#: resize/main.c:575
#, c-format
-msgid ""
-"Cannot change the 64bit feature on a filesystem that is larger than 2^32 "
-"blocks.\n"
-msgstr ""
-"Не могу да изменим 64-битну функцију на систему датотека који је већи од "
-"2^32 блокова.\n"
+msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
+msgstr "Не могу да изменим 64-битну функцију на систему датотека који је већи од 2^32 блокова.\n"
#: resize/main.c:581
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
-msgstr ""
-"Не могу да изменим 64-битну функцију док је систем датотека прикачен.\n"
+msgstr "Не могу да изменим 64-битну функцију док је систем датотека прикачен.\n"
#: resize/main.c:587
#, c-format
-msgid ""
-"Please enable the extents feature with tune2fs before enabling the 64bit "
-"feature.\n"
-msgstr ""
-"Укључите функцију распона са „tune2fs“ пре него што укључите 64-битну "
-"функцију.\n"
+msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
+msgstr "Укључите функцију распона са „tune2fs“ пре него што укључите 64-битну функцију.\n"
#: resize/main.c:593
#, c-format
@@ -7635,9 +7387,7 @@ msgstr "језгро не подржава промену величине са
#: resize/online.c:86
#, c-format
msgid "Filesystem at %s is mounted on %s; on-line resizing required\n"
-msgstr ""
-"Систем датотека „%s“ је прикачен на „%s“; потребна је промена величине на "
-"мрежи\n"
+msgstr "Систем датотека „%s“ је прикачен на „%s“; потребна је промена величине на мрежи\n"
#: resize/online.c:90
msgid "On-line shrinking not supported"
@@ -7693,17 +7443,13 @@ msgstr "Када сам покушао да додам групу бр. %d"
#: resize/online.c:288
#, c-format
-msgid ""
-"Filesystem at %s is mounted on %s, and on-line resizing is not supported on "
-"this system.\n"
-msgstr ""
-"Систем датотека за „%s“ је прикачен на „%s“, а промена величине није "
-"подржана на том систему.\n"
+msgid "Filesystem at %s is mounted on %s, and on-line resizing is not supported on this system.\n"
+msgstr "Систем датотека за „%s“ је прикачен на „%s“, а промена величине није подржана на том систему.\n"
#: resize/resize2fs.c:759
-#, fuzzy, c-format
+#, c-format
msgid "inodes (%llu) must be less than %u\n"
-msgstr "број и-чворова (%llu) мора бити мањи од %u"
+msgstr "број и-чворова (%llu) мора бити мањи од %u\n"
#: resize/resize2fs.c:1038
msgid "reserved blocks"
@@ -7713,30 +7459,25 @@ msgstr "резервисани блокови"
msgid "meta-data blocks"
msgstr "блокови метаподатака"
-#: resize/resize2fs.c:1386 resize/resize2fs.c:2475
+#: resize/resize2fs.c:1386 resize/resize2fs.c:2421
msgid "new meta blocks"
msgstr "нови мета блокови"
-#: resize/resize2fs.c:2698
+#: resize/resize2fs.c:2644
msgid "Should never happen! No sb in last super_sparse bg?\n"
-msgstr ""
-"Ово није требало да се деси! Нема суперблока у последњој „super_sparse“ "
-"групи блока?\n"
+msgstr "Ово није требало да се деси! Нема суперблока у последњој „super_sparse“ групи блока?\n"
-#: resize/resize2fs.c:2703
+#: resize/resize2fs.c:2649
msgid "Should never happen! Unexpected old_desc in super_sparse bg?\n"
-msgstr ""
-"Ово није требало да се деси! Неочекивани стари описник (old_desc) у "
-"„super_sparse“ групи блока?\n"
+msgstr "Ово није требало да се деси! Неочекивани стари описник (old_desc) у „super_sparse“ групи блока?\n"
-#: resize/resize2fs.c:2776
+#: resize/resize2fs.c:2722
msgid "Should never happen: resize inode corrupt!\n"
msgstr "Ово није требало да се деси: промена величине и-чвора је оштећена!\n"
#: lib/ext2fs/ext2_err.c:11
-#, fuzzy
-msgid "EXT2FS Library version 1.44.4"
-msgstr "„EXT2FS“ библиотека издања 1.43.5"
+msgid "EXT2FS Library version 1.45.3"
+msgstr "„EXT2FS“ библиотека издања 1.45.3"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -7940,13 +7681,11 @@ msgstr "Неисправан број блока је прослеђен „ext2
#: lib/ext2fs/ext2_err.c:62
msgid "Attempt to fudge end of block bitmap past the real end"
-msgstr ""
-"Покушај да привидно дотерам крај битмапе блокова је прошао стварни крај"
+msgstr "Покушај да привидно дотерам крај битмапе блокова је прошао стварни крај"
#: lib/ext2fs/ext2_err.c:63
msgid "Attempt to fudge end of inode bitmap past the real end"
-msgstr ""
-"Покушај да привидно дотерам крај битмапе и-чворова је прошао стварни крај"
+msgstr "Покушај да привидно дотерам крај битмапе и-чворова је прошао стварни крај"
#: lib/ext2fs/ext2_err.c:64
msgid "Illegal indirect block found"
@@ -7986,8 +7725,7 @@ msgstr "Неисправан општи број бита је прослеђе
#: lib/ext2fs/ext2_err.c:73
msgid "Illegal generic bit number passed to ext2fs_unmark_generic_bitmap"
-msgstr ""
-"Неисправан општи број бита је прослеђен „ext2fs_unmark_generic_bitmap“-и"
+msgstr "Неисправан општи број бита је прослеђен „ext2fs_unmark_generic_bitmap“-и"
#: lib/ext2fs/ext2_err.c:74
msgid "Illegal generic bit number passed to ext2fs_test_generic_bitmap"
@@ -8119,8 +7857,7 @@ msgstr "Промена величине и-чвора је оштећена"
#: lib/ext2fs/ext2_err.c:106
msgid "Tried to set block bmap with missing indirect block"
-msgstr ""
-"Покушао сам да поставим битмапу блока са недостајућим индиректним блоком"
+msgstr "Покушао сам да поставим битмапу блока са недостајућим индиректним блоком"
#: lib/ext2fs/ext2_err.c:107
msgid "TDB: Success"
@@ -8168,8 +7905,7 @@ msgstr "Списак блока директоријума „ext2fs“-а је
#: lib/ext2fs/ext2_err.c:118
msgid "Attempt to modify a block mapping via a read-only block iterator"
-msgstr ""
-"Покушавам да изменим мапирање блока путем приступника блока само за читање"
+msgstr "Покушавам да изменим мапирање блока путем приступника блока само за читање"
#: lib/ext2fs/ext2_err.c:119
msgid "Wrong magic number for ext4 extent saved path"
@@ -8285,9 +8021,7 @@ msgstr "УИ канал не подржава 64-битне бројеве бл
#: lib/ext2fs/ext2_err.c:147
msgid "Can't check if filesystem is mounted due to missing mtab file"
-msgstr ""
-"Не могу да проверим да ли је систем датотека прикачен зато што недостаје "
-"мтаб датотека"
+msgstr "Не могу да проверим да ли је систем датотека прикачен зато што недостаје мтаб датотека"
#: lib/ext2fs/ext2_err.c:148
msgid "Filesystem too large to use legacy bitmaps"
@@ -8302,9 +8036,8 @@ msgid "MMP: device currently active"
msgstr "ММП: уређај је тренутно активан"
#: lib/ext2fs/ext2_err.c:151
-#, fuzzy
msgid "MMP: e2fsck being run"
-msgstr "ММП: „fsck“ је покренут"
+msgstr "ММП: „e2fsck“ је покренут"
#: lib/ext2fs/ext2_err.c:152
msgid "MMP: block number beyond filesystem range"
@@ -8359,9 +8092,8 @@ msgid "Unknown checksum algorithm"
msgstr "Алгоритам суме провере није познат"
#: lib/ext2fs/ext2_err.c:165
-#, fuzzy
msgid "MMP block checksum does not match"
-msgstr "Сума провере ММП блока не одговара ММП блоку"
+msgstr "Сума провере ММП блока не одговара"
#: lib/ext2fs/ext2_err.c:166
msgid "Ext2 file already exists"
@@ -8373,8 +8105,7 @@ msgstr "Сума провере битмапе блока не одговара
#: lib/ext2fs/ext2_err.c:168
msgid "Cannot iterate data blocks of an inode containing inline data"
-msgstr ""
-"Не могу да понављам блокове података и-чвора који садржи уграђене податаке"
+msgstr "Не могу да понављам блокове података и-чвора који садржи уграђене податаке"
#: lib/ext2fs/ext2_err.c:169
msgid "Extended attribute has an invalid name length"
@@ -8458,7 +8189,7 @@ msgstr "И-чвор је оштећен"
#: lib/ext2fs/ext2_err.c:189
msgid "Inode containing extended attribute value is corrupted"
-msgstr ""
+msgstr "И-чвор који садржи вредност проширеног атрибута је оштећен"
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
@@ -8652,14 +8383,19 @@ msgstr "„%s“ садржи „%s“ систем датотека\n"
msgid "%s contains `%s' data\n"
msgstr "„%s“ садржи податке „%s“\n"
+#~ msgid "i_dir_acl @F %Id, @s zero.\n"
+#~ msgstr "„i_dir_acl“ за и-чвор „%i“ (%Q) је „%Id“, треба бити нула.\n"
+
+#~ msgid "while opening directory \"%s\""
+#~ msgstr "приликом отварања директоријума „%s“"
+
#~ msgid ""
#~ "\n"
#~ "*** Checksum errors detected in filesystem! Run e2fsck now!\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
-#~ "*** Откривене су грешке суме провере у систему датотека! Сада покрените "
-#~ "„e2fsck“!\n"
+#~ "*** Откривене су грешке суме провере у систему датотека! Сада покрените „e2fsck“!\n"
#~ "\n"
#~ msgid ""
@@ -8668,8 +8404,7 @@ msgstr "„%s“ садржи податке „%s“\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
-#~ "*** Откривене су грешке суме провере у битмапама! Сада покрените "
-#~ "„e2fsck“!\n"
+#~ "*** Откривене су грешке суме провере у битмапама! Сада покрените „e2fsck“!\n"
#~ "\n"
#~ msgid ""
@@ -8686,9 +8421,6 @@ msgstr "„%s“ садржи податке „%s“\n"
#~ "\n"
#~ "Упозорење, имам проблема са писањем суперблокова.\n"
-#~ msgid "i_dir_acl @F %Id, @s zero.\n"
-#~ msgstr "„i_dir_acl“ за и-чвор „%i“ (%Q) је „%Id“, треба бити нула.\n"
-
#~ msgid "Journal features: "
#~ msgstr "Функције дневника: "
@@ -8748,9 +8480,7 @@ msgstr "„%s“ садржи податке „%s“\n"
#~ msgstr "Покрените „e2fsck“ на систему датотека.\n"
#~ msgid "@i %i has @cion flag set on @f without @cion support. "
-#~ msgstr ""
-#~ "и-чвор „%i“ има постављену заставицу сажимања на систему датотека без "
-#~ "подршке сажимања. "
+#~ msgstr "и-чвор „%i“ има постављену заставицу сажимања на систему датотека без подршке сажимања. "
#~ msgid "@A @a @b %b. "
#~ msgstr "грешка доделе блока „%b“ проширеног атрибута. "
diff --git a/po/sv.gmo b/po/sv.gmo
index 3088ec80..1e79a6df 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index d8631134..c8121989 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,10 +1,10 @@
# Swedish messages for e2fsprogs.
-# Copyright © 2003, 2005, 2006, 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2017, 2018, 2019 Theodore Tso (msgids)
+# Copyright © 2003, 2005, 2006, 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2017, 2018, 2019, 2021 Theodore Tso (msgids)
# This file is distributed under the same license as the e2fsprogs package.
#
-# Göran Uddeborg <goeran@uddeborg.se>, 2003, 2005, 2006, 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2017, 2018, 2019.
+# Göran Uddeborg <goeran@uddeborg.se>, 2003, 2005, 2006, 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2017, 2018, 2019, 2021.
#
-# $Revision: 1.103 $
+# $Revision: 1.105 $
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -77,10 +77,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.45.3\n"
+"Project-Id-Version: e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-20 16:33+0200\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-04 21:03+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -106,9 +106,9 @@ msgstr "vid läsning av inoden för dåliga block"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "vid försök att öppna %s"
@@ -131,7 +131,7 @@ msgstr "vid uppdatering av inoden för dåliga block"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Varning: otillåtet block %u hittat i inoden får dåliga block. Tömt.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "när dir_info-tdbfilen frigjordes"
@@ -163,15 +163,15 @@ msgstr "Fel vid skrivning av block %lu (%s) vid %s. "
msgid "Error writing block %lu (%s). "
msgstr "Fel vid skrivning av block %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "tomma katalogblock"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "tom katalogkarta"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Tomt katalogblock %u (nr. %d) i inod %u\n"
@@ -181,12 +181,12 @@ msgstr "Tomt katalogblock %u (nr. %d) i inod %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s filnamn nblock blockstorlek\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Otillåtet antal block!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Kunde inte allokera blockbuffert (storlek=%d)\n"
@@ -215,7 +215,7 @@ msgstr "Användning: %s [-F] [-I inodbuffertblock] enhet\n"
msgid "while opening %s for flushing"
msgstr "vid öppning av %s för utskrivning"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "vid försök att skriva ut %s"
@@ -252,7 +252,7 @@ msgstr "%s: inget giltigt journalsuperblock hittades\n"
msgid "%s: journal too short\n"
msgstr "%s: journalen för kort\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: återhämtar journalen\n"
@@ -520,113 +520,113 @@ msgstr "okänd kvottyp"
msgid "multiply claimed inode map"
msgstr "karta över flerfaldigt i anspråkstagna inoder"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "internt fel: kan inte hitta dup_blk för %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "återvände från clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "internt fel: det gick inte att slå upp EA-blockpost för %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "internt fel: det gick inte att slå upp EA-inodpost för %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "vid hashning av post med e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "läser katalogblock"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "hämtar nästa inod från sökning"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "karta över använda inoder"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "kataloginodskarta"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "inodskarta över reguljära filer"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "karta över använda block"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "blockkarta över metadata"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "öppnar inodsökning"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "hämtar nästa inod från sökning"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Pass 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "läser indirektblock för inod %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "karta över dåliga inoder"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "inod i karta över dåliga block"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "imagic inodskarta"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "karta över flerfaldigt i anspråkstagna block"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "karta över block för utökade attribut"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): förväntade %6lu fick fys %6lu (blkant %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "blockbitkarta"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "inodbitkarta"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "inodstabell"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Pass 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Kan inte fortsätta."
@@ -642,11 +642,11 @@ msgstr "Max minne"
msgid "Pass 3"
msgstr "Pass 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "bitkarta för upptäckt av inodsslingor"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Pass 4"
@@ -662,187 +662,195 @@ msgstr "check_inode_bitmap_checksum: Minnesallokeringsfel"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: Minnesallokeringsfel"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(ingen prompt)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Fixa"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Töm"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Relokera"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Allokera"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Expandera"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "Koppla till /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Skapa"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Rädda"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Kapa"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Töm inod"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Avbryt"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Dela"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Fortsätt"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Klona flerfaldigt ianspråkstagna block"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Ta bort fil"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Undertryck meddelanden"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Avlänka"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Töm HTree-index"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Återskapa"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Optimera"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Nollställ flagga"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(INGET)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "FIXAT"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "TÖMD"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "RELOKERAT"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "ALLOKERAT"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "EXPANDERAD"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "ÅTERKOPPLAD"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "SKAPAD"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "RÄDDAD"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "KAPAT"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "INOD TÖMD"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "AVBRUTET"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "DELAD"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "FORTSÄTTER"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "FLERFALDIG IANSPRÅKSTAGNA BLOCK KLONADE"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "FIL BORTTAGEN"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "UNDERTRYCKT"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "AVLÄNKAD"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "HTREE-INDEX TÖMT"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "KOMMER ÅTERSKAPA"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "KOMMER OPTIMERA"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "FLAGGAN NOLLSTÄLLD"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "blockbitkarta för grupp %g är inte i gruppen. (block %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "inodsbitkarta för grupp %g är inte i gruppen. (block %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -859,7 +867,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -885,7 +893,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -898,7 +906,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -909,18 +917,18 @@ msgstr ""
"blockstorleken.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "Superblockets block per grupp = %b, skulle ha varit %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "Superblockets första datablock = %b, skulle ha varit %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -928,7 +936,7 @@ msgstr ""
"filsystemet hade ingen UUID; genererar en.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -945,48 +953,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Skada hittad i superblock. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Fel vid bestämning av den fysiska enheten: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "inodsantal i superblock är %i, skall vara %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Hurd stödjer inte funktionen filtyp.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "Superblock har en ogiltig journal (inod %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "Extern journal har flera filsystemsanvändare (stödjs ej).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Kan inte hitta extern journal\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "Extern journal har dåligt superblock\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Extern journal stödjer inte detta filsystem\n"
@@ -994,7 +1002,7 @@ msgstr "Extern journal stödjer inte detta filsystem\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -1006,80 +1014,80 @@ msgstr ""
"Det är också möjligt att journalsuperblocket är trasigt.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "Journalsuperblock är trasigt.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "Superblocksflaggan has_journal är nollställd, men en journal finns.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "Superblockflagga behöver_rättas är satt, men ingen journal finns.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "Superblocksflagga behöver_rättas är nollställd, men journal har data.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Töm journal"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "filsystemet har funktionsflaggor satta, men är ett revision 0-filsystem. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "%s föräldralös inod %i (uid=%Iu, gid=%Ig, rättighet=%Im, storlek=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "Ogiltigt %B (%b) hittat i föräldralös inod %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Redan tömt %B (%b) hittat i föräldralös inod %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "Ogiltig föräldralös inod %i i superblock.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "Ogiltig inod %i i föräldralös inodlista.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "Journalsuperblock har okänd skrivskyddad funktionsflagga satt.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "Journalsuperblock har okänd inkompatibel funktionsflagga satt.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "Journalversion stöds inte av denna e2fsck.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1090,7 +1098,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1102,7 +1110,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1113,18 +1121,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Kör journal ändå"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "Rättningsflagga inte satt i reservsuperblock, så kör journal ändå.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1134,7 +1142,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1143,18 +1151,18 @@ msgstr ""
"är %N; skulle varit noll. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_inode är inte aktiverat, men storleksändringsinoden är inte noll. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "Storleksändringsinod är inte giltig. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1164,7 +1172,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1173,14 +1181,14 @@ msgstr ""
"\tnu = %T) är i framtiden.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "Superblocktips för externt superblock borde vara %X."
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1189,39 +1197,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "kontrollsumma för gruppbeskrivare %g är %04x, skall vara %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "gruppbeskrivare %g är markerad oinitierad utan att egenskapen är satt.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "gruppbeskrivare %g har ogiltigt antal oanvända inoder %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "Sista gruppblockbitkarta oinitierad. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Journaltransaktion %i var trasig, återuppspelningen avbröts.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Flaggan test_fs är satt (och ext4 är tillgängligt). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1232,7 +1240,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1241,103 +1249,103 @@ msgstr ""
"\t(med mindre än en dag, förmodligen för att hårdvaruklockan går fel)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Kontrollsumma för en eller flera blockgruppbeskrivare är ogiltig. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Sätter antalet fria inoder %j (var %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Sätter antalet fria block till %c (var %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Döljer kvotinod %i för %U (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "superblocket har ett felaktigt MMP-block. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "superblocket har ogiltigt MMP-magiskt tal. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "superblockets metadata_csum ersätter uninit_bg; båda funktionsbitarna kan inte vara satta samtidigt."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "Kontrollsumman för super-MMP-blocket stämmer inte. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "superblock på 64-bitars filsystem behöver utsträckningar för att komma åt hela disken. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "First_meta_bg är för stort. (%N, maxvärde %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "Extern kontrollsumma för journalsuperblock stämmer inte med superblocket. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "superblockets metadata_csum_seed är inte nödvändigt utan metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Fel vid initiering av kvotkontext i stödbiblioteket: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Felaktig krävd extra isize i superblocket (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Felaktig önskad extra isize i superblocket (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "Ogiltig kvotinod %i för %U. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "Superblocket skulle ha för många inoder (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1346,117 +1354,117 @@ msgstr ""
"är inte kompatibla. Storleksändingsinod skall avaktiveras. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Pass 1: Kontrollerar inoder, block och storlekar\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "Rotinod är inte en katalog. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "rotinod har dtid satt (förmodligen på grund av gammal mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "Reserverad inod %i (%Q) har ogiltiga rättigheter. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "Raderad inod %i har dtid noll. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "Inod %i används, men har dtid satt. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "Inod %i är en nollängds katalog. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "Grupp %g:s blockbitkarta vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "Grupp %g:s inodbitkarta vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "Grupp %g:s inodtabell vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "Grupp %g:s blockbitkarta (%b) år felaktig. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "Grupp %g:s inodbitkarta (%b) är felaktig. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "Inod %i, i_storlek är %Is, skulle varit %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "Inod %i, i_block är %Ib, skulle varit %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "Ogiltigt %B (%b) i inod %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) överlappar filsystemmetadata i inod %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "Inod %i har ogiltiga block. "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "För många ogiltiga block i inod %i.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "Ogiltigt %B (%b) i inod för felaktiga block. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "Inod för felaktiga block har ogiltiga block. "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "Duplicerat eller felaktigt block används!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Felaktigt block %b använt som indirektblock för inod för dåliga block. "
@@ -1464,7 +1472,7 @@ msgstr "Felaktigt block %b använt som indirektblock för inod för dåliga bloc
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1478,7 +1486,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1489,7 +1497,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1500,121 +1508,121 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Det primära superblocket (%b) är på listan över dåliga block.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Block %b i de primära gruppbeskrivarna är på listan över dåliga block\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Varning: Grupp %g:s superblock (%b) är dåligt.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Varning: Grupp %g:s kopia av gruppbeskrivarna har ett dåligt block (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Programmeringsfel? Block nr. %b tas i anspråk utan anledning i process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "Fel vid allokering av %N konsekutiva block i blockgrupp %g för %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "Fil vid allokering av blockbuffert för relokering av %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Relokerar grupp %g:s %s från %b till %c ...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Relokerar grupp %g:s %s till %c ...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Varning: kunde inte läsa block %b av %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Varning: kunde inte skriva block %b av %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "Fel vid allokering av inodbitkarta (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "Fel vid allokering av blockbitkarta (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "Fel vid allokering av icount-länkinformation: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "Fel vid allokering av katalogblockvektor: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Fel vid genomsökning av inoder (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Fel vid iterering över block i inod %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Fel vid lagring av inodsräknarinformation (inod=%i, antal=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Fel vid lagring av katalogblocksinformation (inod=%i, block=%b, antal=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Fel vid läsning av inod %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "Inod %i har flaggan imagic satt. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1624,143 +1632,143 @@ msgstr ""
"oföränderlig eller endast tillägg satt."
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "Specialinod (enhet/uttag (socket)/fifo) %i har nollskild storlek. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "Journalinod används, men innehåller data. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "Journal är inte en vanlig fil. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "Inod %i var med i listan över föräldralösa inoder. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "Inoder som var med i trasig lista över föräldralösa inoder hittad. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "Fel vid allokering av referensräknarstruktur (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Fel vid läsning av utökade attribut-block %b för inod %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "Inod %i har ett felaktigt utökade attribut-block %b. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Fel vid läsning av utökade attribut-block %b (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "Utökade attribut-block %b har referensräknare %r, skall vara %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Fel vid skrivning av utökade attribut-block %b (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "Utökade attribut-block %b har h_blocks > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "Fel vid allokering utökade attributs regionallokeringsstruktur. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "Utökade attribut-block %b är trasigt (allokeringskollision). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "Utökade attribut-block %b är trasigt (ogiltigt namn). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "Utökade attribut-block %b är trasigt (ogiltigt värde). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "Inod %i är för stor. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) får katalog att bli för stor. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) får fil att bli för stor. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) får symlänk att bli för stor. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "Inod %i har flagga INDEX_FL satt på filsystem utan stöd för htree.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "Inod %i har flagga INDEX_FL satt men är inte en katalog.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
-msgstr "HTREE kataloginod %i har en ogiltig rotnod.\n"
+msgstr "HTREE katalog-inod %i har en ogiltig rotnod.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "HTREE katalog-inod %i har en hashversion som inte stöds (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "HTREE katalog-inod %i använder en inkompatibel htree rotnodsflagga.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "HTREE katalog-inod %i har ett träddjup (%N) som är för stort\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1769,55 +1777,55 @@ msgstr ""
"med filsystemsmetadata. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Misslyckades att återskapa storleksändringsinod: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "Inod %i har en extra storlek (%IS) som är ogiltig\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "Utökat attribut i inod %i har ett namelen (%N) som är ogiltig\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "Utökat attribut i inod %i har en värdeposition (%N) som är ogiltig\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "Utökat attribut i inod %i har ett värdeblock (%N) som är ogiltigt (måste vara 0)\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "Utökat attribut i inod %i har ett värdestorlek (%N) som är ogiltig\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "Utökat attribut i inod %i har hash (%N) som är ogiltig\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "inod %i är en %It men det ser ut som det egentligen är en katalog.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Fel vid läsning över utsträckningsträd i inod %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1827,7 +1835,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1837,7 +1845,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1846,31 +1854,31 @@ msgstr ""
"\t(logiskt block %c, fysiskt block %b, ogiltig längd %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "Inod %i har flaggan EXTENTS_FL satt på filsystemet utan stöd för utsträckningar.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "inod %i är i utsträckningsformat, men superblocket saknar egenskapen EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "inod %i saknar EXTENT_FL, men är i utsträckningsformat\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Snabb symlänk %i har EXTENT_FL satt. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1879,39 +1887,39 @@ msgstr ""
"\t(ogiltigt logiskt block %c, fysiskt block %b, längd %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "inod %i har en ogiltig utsträckningsnod (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Fel vid konvertering av blockbitkarta över subkluster: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "Kvotinoden är inte en vanlig fil. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "Kvotinoden används inte, men innehåller data. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "Kvotinoden är synlig för användaren. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "Inoden för dåliga block verkar felaktig. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1920,26 +1928,26 @@ msgstr ""
"\t(ogiltigt logiskt block %c, fysiskt block %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "Inod %i verkar innehålla skräp. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "Inod %i klarar kontroller, men kontrollsumman stämmer inte med inoden. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "De utökade attributen för inod %i är trasiga (allokeringskollision). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1948,13 +1956,13 @@ msgstr ""
"\t(logiskt block %c, fysiskt block %b, längd %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "inod %i:s utökade attributblock %b passerar kontrollerna, men kontrollsumman stämmer inte med blocket. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1964,7 +1972,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1973,37 +1981,37 @@ msgstr ""
"\t(logiskt block %c, fysiskt block %b, längd %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "Inod %i har inline-data, men superblocket saknar egenskapen INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "Inod %i har flaggan INLINE_DATA_FL satt på filsystem utan stöd för inline-data.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "inod %i block %b står i konflikt med kritisk metadata, hoppar över blockkontroller.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "Kataloginod %i block %b skulle varit vid %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "Kataloginod %i en utsträckning markerad oinitierad vid block %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -2012,14 +2020,14 @@ msgstr ""
"Kommer fixa i pass 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "Inod %i har flaggan INLINE_DATA_FL satt men utökade attribut finns inte. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2029,42 +2037,42 @@ msgstr ""
"eller inline-data-flaggan satt. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "inod %i has utsträckningshuvud men inline-dataflaggan satt.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "inod %i verkar ha inline-data men utsträckningsflaggan är satt.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "inod %i verkar ha blockkarta men inline-data och utsträckningsflaggor satta.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "inod %i har inline-data och utsträckningsflaggor satta men i_block innehåller skräp.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "Trasig-block-lista säger att inoden för listan över trasiga block är trasig. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "Fel vid allokering utsträckningars regionallokeringsstruktur. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2073,46 +2081,46 @@ msgstr ""
"\t(logiskt block %c, ogiltigt fysiskt block %b, längd %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "fel vid allokering av minne för krypterad kataloglista\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "inod %i:s utsträckningsträd kunde vara grundare (%b; kunde vara ≤ %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "inod %i på ett bigalloc-filsystem kan inte vara blockkartestyrd. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "Inod %i har trasigt utsträckningshuvud. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Tidsstämplar på inod %i bortom 2310-04-04 är sannolikt före 1970.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "Inod %i har en otillåten värdeinod %N för utökade attribut.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "Inod %i har ett otillåtet utökat attribut. EA-inod %N saknar flaggan EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2120,10 +2128,38 @@ msgstr ""
"EA-inod %N för föräldrainod %i saknar EA_INODE-flaggan.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "Inod %i har flaggan casefold_FL satt men är inte en katalog. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"Katalogen %p har flaggan casefold satt, men\n"
+"funktionen casefold är inte aktiverad. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "HTREE katalog-inod %i använder hashversion (%N), men skulle använda SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "HTREE katalog-inod %i använder SipHash, men skulle inte. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2134,46 +2170,46 @@ msgstr ""
"Pass 1B: Söker igen efter block som används flera gånger\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "Flerfaldigt ianspråkstagna block i inod %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Fel vid genomsökning av inoder (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "Fel vid allokering av inodbitkarta (inode_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Fel vid iterering över block i inod %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Fel vid justering av referensräknare för externa attribut-block %b (inod %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Pass 1C: Söker kataloger efter inoder med flerfaldigt ianspråkstagna block\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Pass 1D: Förlikar flerfaldigt ianspråkstagna block\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2182,18 +2218,18 @@ msgstr ""
" har %r flerfaldigt ianspråkstagna block, delade med %N filer:\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (inod nr. %i, modifieringstid %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<filsystemsmetadata>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2203,7 +2239,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2211,347 +2247,347 @@ msgstr ""
"Flerfaldig ianspråkstagna block redan överlåtna eller klonade.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Kunde inte klona fil: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Pass 1E: Optimerar utsträckningsträd\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Misslyckades att optimera utsträckningsträd %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Optimerar utsträckningsträd: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Internt fel: max djup på utsträckningsträd är för stort (%b; förväntat=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "inod %i:s utsträckningsträd (på nivå %b) kunde vara kortare. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "inod %i:s utsträckningsträd (på nivå %b) kunde vara smalare. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Pass 2: Kontrollerar katalogstruktur\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "Ogiltigt inodsnummer för ”.” i kataloginod %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "Post ”%Dn” i %p (%i) har ogiltigt inodsnummer: %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "Post ”%Dn” i %p (%i) har raderad/oanvänd inod %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "Post ”%Dn” i %p (%i) är en länk till ”.” "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "Post ”%Dn” i %p (%i) pekar på inod (%Di) som finns i ett trasigt block.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "Post ”%Dn” i %p (%i) är en länk till katalog %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "Post ”%Dn” i %p (%i) är en länk till rotinoden.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "Post ”%Dn” i %p (%i) har ogiltiga tecken i namnet.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "”.” saknas i kataloginod %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "”..” saknas i kataloginod %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "Första post ”%Dn” (inod=%Di) i kataloginod %i (%p) skulle varit ”.”\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "Andra post ”%Dn” (inod=%Di) i kataloginod %i skulle varit ”..”\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr för inod %i (%Q) är %IF, skulle varit noll.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl för inod %i (%Q) är %If, skulle varit noll.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high för inod %i (%Q) är %Id, skulle varit noll.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag för inod %i (%Q) är %N, skulle varit noll.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize för inod %i (%Q) är %N, skulle varit noll.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "Inod %i (%Q) har ogiltiga rättigheter (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "Kataloginod %i, %B, position %N: katalogen trasig\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "Kataloginod %i, %B, position %N: för långt filnamn\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "Kataloginod %i har ett oallokerat %B. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "Katalogposten ”.” i kataloginod %i är inte nollterminerad\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "Katalogposten ”..” i kataloginod %i är inte nollterminerad\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "Inod %i (%Q) är en ogiltig teckenenhet.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "Inod %i (TQ är en ogiltig blockenhet.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "Post ”%Dn” i %p (%i) är duplicerad ”.”-post.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "Post ”%Dn” i %p (%i) är duplicerad ”..”-post.\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Internt fel: kunde inte hitta dir_info för %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "Post ”%Dn” i %p (%i) har rec_len %Dr, skulle varit %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "Fel vid allokering av icount-struktur: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Fel vid iterering över katalogblock: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Fel vid läsning av katalogblock %b (inod %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Fel vid skrivning av katalogblock %b (inod %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "Fel vid allokering av nytt katalogblock för inod %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Fel vid deallokering av inod %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "Katalogpost för ”.” i %p (%i) är stor.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "Inod %i (%Q) är en ogiltig FIFO.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "Inod %i (%Q) är ett ogiltigt uttag (socket).\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Sätter filtyp för post ”%Dn” i %p (%i) till %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "Post ”%Dn” i %p (%i) har felaktig filtyp (var %Dt, skulle varit %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "Post ”%Dn” i %p (%i) har filtyp satt.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "Post ”%Dn” i %p (%i) har nollängdsnamn.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Symlänk %Q (inod nr. %i) är ogiltig.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "Utökat attribut-block för inod %i (%Q) är ogiltigt (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "Filsystem innehåller stora filer, men saknar flaggan LARGE_FILE i superblock.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "Problem i HTREE-kataloginod %d: %B inte refererad\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "Problem i HTREE-kataloginod %d: %B refererat två gånger\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "Problem i HTREE-kataloginod %d: %B har felaktig min-hash\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "Problem i HTREE-kataloginod %d: %B har felaktig max-hash\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "Ogiltig HTREE-kataloginod %d (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "Problem i HTREE-kataloginod %d (%q): felaktigt blocknummer %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "Problem i HTREE-kataloginod %d: ogiltig rotnod.\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "Problem i HTREE-kataloginod %d: %B har ogiltig gräns (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr ""
"Problem i HTREE-kataloginod %d: %B har ogiltigt antal (%N)\n"
"\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "Problem i HTREE-kataloginod %d: %B har en oordnad hash-tabell\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "Problem i HTREE-kataloginod %d: %B har ogiltigt djup (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "Duplicerad post ”%Dn” i %p (%i) hittad. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2563,7 +2599,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2574,155 +2610,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi för inod %i (%Q) är %N, skulle varit noll.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Oväntat block i HTREE-katalog %d (%q).\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "Post ”%Dn” i %p (%i) refererar inod %Di i grupp %g där _INODE_UNINIT är satt.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "Post ”%Dn” i %p (%i) refererar inod %Di funnen i oanvänt inodsområde i grupp %g.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi för inod %i (%Q) är %N, skulle varit noll.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "Problem i HTREE-kataloginod %d: rotnoden stämmer inte med kontrollsumman.\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "Problem i HTREE-kataloginod %d: intern nod har inte rätt kontrollsumma.\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "Kataloginod %i, %B, position %N: katalogen har ingen kontrollsumma.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "kataloginod %i, %B: katalogen passerar kontrollerna men kontrollsumman stämmer inte.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "Inline-kataloginod %i:s storlek (%N) måste vara en multipel av 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Att rätta storleken på inline-kataloginod %i misslyckades.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "Krypterad post ”%Dn” i %p (%i) är för kort.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Duplicerad filnamnspost ”%Dn” i %p (%i) hittad. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Pass 3: Kontrollerar katalogförbindelser\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "Rotinod inte allokerad. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "Ingen plats i lost+found-katalog. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "Oförbunden kataloginod %i (%p)\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "/lost+found inte funnen. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "”..” i %Q (%i) är %P (%j), skulle varit %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "Felaktig eller ej existerande /lost+found. Kan inte återansluta.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Kunde inte expandera /lost+found: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Kunde inte återförbinda %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Fel vid försök att hitta /lost+found: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_block: %m ved försök att skapa /lost+found-katalog\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_inode: %m vid försök att skapa /lost+found-katalog\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block: %m när nytt katalogblock skapades\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_block: %m vid skrivning av katalogblocket för /lost+found\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Fel vid justering av inodräknare på inod %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2733,7 +2774,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2743,41 +2784,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Fel vid skapande av rotkatalog (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Fel vid skapande av /lost+found-katalog (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "Rotinod är inte en katalog; avbryter.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Kan inte fortsätta utan en rotinod.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/lost+found är inte en katalog (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/lost+found har inline-data\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2788,7 +2829,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2799,52 +2840,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/lost+found är krypterad\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Pass 3A: Optimerar kataloger\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Misslyckades att skapa dirs_to_hash-iterator: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Misslyckades att optimera katalog %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Optimerar kataloger: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Pass 4: Kontrollerar referensräknare\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "Lös nollängdsinod %i. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "lös inod %i\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "Inod %i referensräknare är %Il, skulle varit %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2855,148 +2896,153 @@ msgstr ""
"inod_link_info[%i] är %N, inod.i_links_count är %Il. De skulle vara samma!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "Inod %i för utökade attribut har referensräknare som är %N, skulle varit %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "Katalogen överskrider maximala antalet länkar, men DIR_NLINK-funktionen finns inte i superblocket.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "referensräknaren för kataloginod %i satt att spilla över men kan vara exakt värdet %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Pass 5: Kontrollerar gruppsammanfattningsinformation\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Utfyllnad vid slutet av inodsbitkarta är inte satt. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Utfyllnad vid slutet av blockbitkarta är inte satt. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "Blockbitkarteskillnader: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "Inodsbitkarteskillnader: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Antal fria inoder är fel för grupp nr. %g (%i, räknade=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Katalogantal fel för grupp nr. %g (%i, räknade=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Antal fria inoder är fel (%i, räknade=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Antal fria block är fel för grupp nr. %g (%b, räknade=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Antal fria block är fel (%b, räknade=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr ""
"PROGRAMMERINGSFEL: filsystem (nr. %N) bitkartas ändpunkter (%b, %c) stämmer\n"
"inte med beräknade bitkarteändpunkter (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Internt fel: fuskar till slut på bitkarta (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Fel vid kopiering av ersättningsinodskarta: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Fel vid inkopiering av ersättningsbitkarta: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "block i grupp %g används men gruppen är markerad BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "inoder i grupp %g används men gruppen är markerad INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "grupp %g:s inodsbitkarta stämmer inte med kontrollsumman.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "grupp %g:s blockbitkarta stämmer inte med kontrollsumman.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Återskapa journal"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Uppdatera kvotinformation för kvottyp %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Fel när kontrollsummeinformation för blockgrupp sattes: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Fel vid skrivning av filsystemsinformation: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Fel när skrivningar tömdes till lagringsenheten: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Fel när kvotinformation skrevs för kvottyp %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Ej hanterad felkod (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "IGNORERAT"
@@ -3006,8 +3052,8 @@ msgstr "i move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Använt minne: %d, förlupen tid: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Använt minne: %lu, förlupen tid: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3229,8 +3275,8 @@ msgid_plural "%12u files\n"
msgstr[0] "%12u fil\n"
msgstr[1] "%12u filer\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "när det avgjordes om %s är monterat."
@@ -3403,7 +3449,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "Flaggan -t stödjs inte i denna version av e2fsck.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Kan inte hitta ”%s”"
@@ -3475,8 +3521,8 @@ msgid "while reading MMP block"
msgstr "vid läsning av MMP-block"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3487,13 +3533,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "vid försök att ta bort %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "vid försök att skapa en gör-ogjort-fil\n"
@@ -3585,68 +3631,68 @@ msgstr "%s: Försöker läsa in superblocket trots fel …\n"
msgid "Get a newer version of e2fsck!"
msgstr "Hämta en nyare version av e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "vid kontroll av journal för %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Kan inte fortsätta med filsystemskontrollen"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr "Varning: hoppar över journalåterhämtning eftersom en läsningskontroll av filsystem görs.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "kan inte sätta superblocksflaggor på %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Fel i journalkontrollsumman funnet i %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "Journalen trasig i %s\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "vid återhämtning av journalen för %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s har funktioner som inte stöds:"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s har kodning som inte stöds: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s vid läsning av inod för dåliga block\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Detta bådar inte gott, men vi skall försöka att fortsätta ...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Skapar journal (%d block): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Klar.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3654,24 +3700,24 @@ msgstr ""
"\n"
"*** journalen har genererats om ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "avbruten"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck inställd.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Startar om e2fsck från början ...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "vid återställning av omgivning"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3680,12 +3726,12 @@ msgstr ""
"\n"
"%s: ***** FEL I FILSYSTEMET RÄTTADE *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: Filsystemet modifierades.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3694,12 +3740,12 @@ msgstr ""
"\n"
"%s: ***** FILSYSTEMET MODIFIERADES *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** STARTA OM SYSTEMET *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3710,51 +3756,51 @@ msgstr ""
"%s: ********** VARNING: Filsystemet har fortfarande fel **********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "yYjJ"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nN"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "aA"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " (”a” aktiverar ”ja” för alla) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<j>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (j/n)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "inställd!\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "ja för alla\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "ja\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "nej\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3763,7 +3809,7 @@ msgstr ""
"%s? nej\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3772,38 +3818,38 @@ msgstr ""
"%s? ja\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "ja"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "nej"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: ogiltiga bitkarteblock för %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "läser inod- och blockbitkartor"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "vid upprepat försök att läsa bitkarta för %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "skriver block- och inodsbitkartor"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "vid omskrivning av block- och inodsbitkartor för %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3816,37 +3862,37 @@ msgstr ""
"%s: OVÄNTAD INKONSEKVENS; KÖR fsck MANUELLT.\n"
"\t(d.v.s., utan flaggorna -a eller -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Använt minne: %lu k/%lu k (%lu k/%lu k), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Använt minne: %llu k/%llu k (%llu k/%llu k), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Använt minne: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Använt minne: %llu k, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "tid: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "förfluten tid: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "när inod %lu i %s lästes"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "när inod %lu i %s skrevs"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "OVÄNTAD INKONSISTENS: filsystemet modifieras medan fsck körs.\n"
@@ -4057,68 +4103,68 @@ msgstr "Pass avslutat, %u dåliga block hittade. (%d/%d/%d fel)\n"
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Användning: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] filer…\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Användning: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] filer…\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "felaktigt projekt - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "felaktig version - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "vid försök att ta status på %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "vid läsning av flaggor på %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Flaggor på %s satta som "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "vid sättning av flaggor på %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Version av %s satt som %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "vid sättning av version på %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Projektet för %s satt som %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "när projektet sattes på %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Kunde inte allokera sökvägsvariabel i chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= är inkompatibelt med - och +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Måste använda ”-v”, =, - eller +\n"
@@ -4127,8 +4173,8 @@ msgstr "Måste använda ”-v”, =, - eller +\n"
msgid "while reading inode %u"
msgstr "när inod %u lästes"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "vid utvidgning av katalogen"
@@ -4137,143 +4183,147 @@ msgstr "vid utvidgning av katalogen"
msgid "while linking \"%s\""
msgstr "när ”%s” länkades"
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "när inod %u skrevs"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "när attributen på ”%s” listades"
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "när inod %u öppnades"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "vid allokering av minne"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "när attributet ”%s” på ”%s” lästes"
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "när attributet ”%s” skrevs till inod %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "när inod %u stängdes"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "när inod ”%s” allokerades"
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "när inod ”%s” skapades"
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "när symlänk ”%s” skapades"
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "när ”%s” slogs upp"
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "när katalogen ”%s” skapades"
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "när ”%s” öppnades för att kopieras"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "när arbetskatalog byttes till ”%s”"
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "när katalogen ”%s” skannades"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "vid lstat ”%s”"
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "när specialfilen ”%s” skapades"
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "malloc misslyckades"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "vid försök att läsa länken ”%s”"
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "symlänk ökade i storlek mellan lstat() och readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "när symlänken ”%s” skrevs"
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "när filen ”%s” skrevs"
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "när katalogen ”%s” skapades"
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "vid byte av katalog"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ignorerar posten ”%s”"
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "när inoden för ”%s” sattes"
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "när xattrs för ”%s” sattes"
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "när inodsdata sparades"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "vid kopiering av xattr på rotkatalogen"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4395,7 +4445,7 @@ msgstr "vid utskrift av lista över dåliga block"
msgid "Bad blocks: %u"
msgstr "Dåliga block: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "vid läsning av journalinod"
@@ -4411,7 +4461,7 @@ msgstr "när journalsuperblocket lästes"
msgid "Journal superblock magic number invalid!\n"
msgstr "Journalsuperblockets magiska tal felaktigt!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "vid läsning av journalsuperblock"
@@ -4419,30 +4469,30 @@ msgstr "vid läsning av journalsuperblock"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Kunde inte hitta journalsuperblockets magiska tal"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "misslyckades att allokera en MMP-buffert\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "läser MMP-block %llu från ”%s”\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Kunde inte allokera minne för att tolka flaggor!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Ogiltig superblockparameter: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Ogiltig blockstorleksparameter: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4465,27 +4515,27 @@ msgstr ""
"\tsuperblock=<superblocknummer>\n"
"\tblocksize=<blockstorlek>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tAnvänder %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Kunde inte hitta giltigt filsystemssuperblock.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: funktionen MMP är inte aktiverad.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "vid försök att läsa ”%s”-bitkartor\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4495,8 +4545,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Användning: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blockstorlek ] [ -fr ] enhet avbildsfil\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Användning: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blockstorlek ] enhet avbildsfil\n"
#: misc/e2image.c:110
#, c-format
@@ -4505,8 +4555,8 @@ msgstr " %s -I enhet avbildsfil\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cfnp ] [ -o källavstånd ] [ -O målavstånd ] käll-fs [ mål-fs ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o källavstånd ] [ -O målavstånd ] käll-fs [ mål-fs ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4765,7 +4815,7 @@ msgstr "e2label: fel vid läsning av superblock\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: inte ett ext2-filsystem\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Varning: etikett för lång, avkortar.\n"
@@ -4780,7 +4830,7 @@ msgstr "e2label: kan inte söka till superblock igen\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label: fel vid skrivning av superblock\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Användning: e2label enhet [ny-etikett]\n"
@@ -4983,7 +5033,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "byteavstånd bytestart byteslut fs_block blkst grp mkfs/monteringstid sb_uuid etikett\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5089,51 +5139,51 @@ msgstr "%s: för många enheter\n"
msgid "%s: too many arguments\n"
msgstr "%s: för många argument\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Monterar endast läsbart.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: Låter användare allokera alla block. Detta är farligt!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Kör e2fsck -fy %s.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Journalen behöver återhämtas; ”e2fsck -E journal_only” behöver köras.\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: Att skriva till journalfilen stödjs inte.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Varning: monterar okontrollerat fs, att köra e2fsck rekommenderas.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Varning: maximalt antal monteringar uppnått, att köra e2fsck rekommenderas.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Varning: kontrolltiden uppnådd; att köra e2fsck rekommenderas.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Föräldralösa hittade; att köra e2fsck rekommenderas.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Fel upptäckta; att köra e2fsck rekommenderas.\n"
@@ -5238,7 +5288,7 @@ msgstr ""
"\n"
"Kunde inte skriva %d block i inodstabell som börjar vid %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "klar \n"
@@ -5302,12 +5352,12 @@ msgstr "vid nollställning av journalenhet (block %llu, antal %d)"
msgid "while writing journal superblock"
msgstr "vid skrivning av journalsuperblock"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "Skapar ett filsystem med %llu %d k-block och %u inoder\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5316,164 +5366,164 @@ msgstr ""
"varning: %llu block oanvända.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Filsystemsetikett=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Filsystemsetikett=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "OS-typ: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Blockstorlek=%u (log=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Klusterstorlek=%u (log=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Fragmentstorlek=%u (log=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Kliv=%u block, remsvidd=%u block\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u inoder, %llu block\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu block (%2.2f%%) reserverade för superanvändaren\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "Första datablock=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Rotkatalogägare=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Maximalt antal filsystemsblock=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u blockgrupper\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u blockgrupp\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u block per grupp, %u kluster per grupp\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u block per grupp, %u fragment per grupp\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u inoder per grupp\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "Filsystems-UUID: %s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Superblockkopior lagrade på block: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s förutsätter ”-O 64bit”\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "”%s” måste komma före ”resize=%u”\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "Ogiltig desc_size: ”%s”\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Ogiltigt hashfrö: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Ogiltigt avstånd: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "Ogiltigt mmp_update_interval: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Ogiltigt antal superblockskopior: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Ogiltig klivparameter: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Ogiltig remsbreddsparameter: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Ogiltig storleksändringsparameter: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "Storleksändringens maximum måste vara större än filsystemets storlek.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "Storleksändring under drift stöds inte med revision 0-filsystem\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "Ogiltig rotägare: ”%s”\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Felaktig kodning: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5526,7 +5576,7 @@ msgstr ""
"\tquotatype=<kvottyper att aktivera>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5537,17 +5587,17 @@ msgstr ""
"Varning: RAID-remsbredd %u är inte en jämn multipel av klivet %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "fel: felaktig kodningsflagga: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "fel: en kodning måste specificeras explicit när kodningsflaggor skickas\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5556,17 +5606,17 @@ msgstr ""
"Syntaxfel i mke2fs konfigurationsfil (%s, rad nr %d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Ogiltig filsystemsflagga satt: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Ogiltig monteringsflagga satt: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5575,7 +5625,7 @@ msgstr ""
"\n"
"Din mke2fs.conf-fil definierar inte filsystemstypen %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5583,11 +5633,11 @@ msgstr ""
"Du behöver förmodligen installera en uppdaterad mke2fs.conf-fil.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Avbryter...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5598,79 +5648,79 @@ msgstr ""
"Varning: fs_type %s är inte definierad i mke2fs.conf\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Kunde inte allokera minne för ny SÖKVÄG.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Kunde inte initiera profilen (fel: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "felaktig blockstorlek - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Varning: blockstorlek %d är inte användbar på de flesta system.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "felaktig klusterstorlek - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "”-R” undanbedes, använd ”-E” istället"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "felaktigt felbeteende - %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Ogiltigt antal för block per grupp"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "block per grupp måste vara en multipel av 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Felaktigt tal för flex_bg-storlek"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "storlek på flex_bg måste vara en multipel av 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "storlek på flex_bg (%lu) måste vara mindre än eller lika med 2³¹"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "ogiltig inodsförhållande %s (min %d/max %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "ogiltig inodsstorlek - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Varning: flaggan -K undanbedes och skall inte användas mera. Använd den utökade flaggan ”-E nodiscard” istället!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "i malloc för bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
@@ -5679,69 +5729,69 @@ msgstr ""
"Varning: etiketten för lång, kommer avkortas till ”%s”.\n"
"\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "ogiltig procentandel reserverade block - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "felaktigt antal inoder - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "vid allokering av fs_feature-sträng"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "felaktig versionsnivå - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "vid försök att skapa revision %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "Flaggan -t får endast anges en gång"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "Flaggan -T får endast anges en gång"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "vid försök att öppna journalenhet %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "Journalenhetens blockstorlek (%d) mindre än minsta blockstorlek %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Använder journalenhetens blockstorlek: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "felaktiga block ”%s” på enhet ”%s”"
# "Ett" för att detta sätts in i annan sträng där det föregås av "a".
# Även "journal" kan sättas in på samma plats. Felrapporterat.
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "ett filsystem"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "vid försök att avgöra filsystemstorlek"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5749,7 +5799,7 @@ msgstr ""
"Kunde inte avgöra enhetsstorlek; du måste ange\n"
"storleken på filsystemet\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5761,48 +5811,48 @@ msgstr ""
"\tav en modifierad partition används och är i bruk. Du kan behöva\n"
"\tstarta om för att läsa om din partitionstabell.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "Filsystem större än synbar enhetsstorlek."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Misslyckades tolka fs-typlista\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "HURD stödjer inte funktionen filtype.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "HURD stödjer inte funktionen huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "HURD stödjer inte funktionen metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "HURD stödjer inte funktionen ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "vid försök att avgöra hårdvarusektorstorlek"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "vid försök att avgöra fysisk sektorstorlek"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "när blockstorlek sattes; för liten för enheten\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Varning: angiven blockstorlek %d är mindre än enhetens fysiska sektorstorlek %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5811,7 +5861,7 @@ msgstr ""
"%s: Storleken på enhet (0x%llx block) %s är för stor för att uttryckas\n"
"\tmed 32 bitar med användning av en blockstorlek på %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5820,80 +5870,85 @@ msgstr ""
"%s: Storleken på enhet (0x%llx block) %s är för stor för att skapa\n"
"\tett filsystem som använder en blockstorlek på %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "upplösning av fs_types för mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "Filsystemsfunktioner som inte stöds med revision 0-filsystem\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "Glesa superblock stöds inte med revision 0-filsystem\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "Journaler stöds inte med revision 0-filsystem\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "ogiltig procentandel reserverade block - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Utsträckningar MÅSTE vara aktiverade på ett 64-bitars filsystem. Skicka -O extents för att rätta.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "Klusterstorleken får inte vara mindre än blockstorleken.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "att ange en klusterstorlek förutsätter funktionen bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "varning: Kan inte ta reda på enhetens geometri för %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "%s justering är förskjuten med %lu byte.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Detta kan medföra väldigt dåliga prestanda, (om)partitionering föreslås.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s har förmågan DAX men aktuell blockstorlek %u är skild från systemsidstorleken %u så filsystemet kommer inte stödja DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "%d-byteblock för stort för systemet (max %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "Varning: %d-byteblock för stort för systemet (max %d), tvingas fortsätta\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Förslag: använd en Linuxkärna ≥ 3.18 för förbättrad stabilitet av metadatan och funktionerna för journalkontrollsumma.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Okänd filnamnskodning från profilen: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Okända kodningsflaggor från profilen: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5908,24 +5963,16 @@ msgstr ""
"är vad du vill.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "%d-byteinoder är för små för projektkvoter"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Funktionerna encrypt och casefold är inte kompatibla.\n"
-"De kan inte båda aktiveras samtidigt.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "Kan inte stödja funktionen bigalloc utan funktionen utsträckningar"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5933,7 +5980,7 @@ msgstr ""
"Egenskaperna resize_inode och meta_bg är inte kompatibla\n"
"De kan inte båda aktiveras samtidigt.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5945,39 +5992,39 @@ msgstr ""
"Se https://ext4.wiki.kernel.org/index.php/Bigalloc för mer information\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "reserverade block för storleksändring under drift stöds inte på icke-glesa filsystem"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "antal block per grupp utanför giltigt intervall"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "Funktionen flex_bg är inte aktiverad, så fleg_bg-storlek kan inte anges"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "ogiltig inodstorlek %d (min %d/max %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "%d-byteinoder är för små för inline-data; ange en större storlek"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "för många inoder (%llu), öka inodsförhållandet?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "för många inoder (%llu), ange < 2³² inoder"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5988,65 +6035,65 @@ msgstr ""
"\tfilsystem med %llu block, ange högre inodsförhållande (-i)\n"
"\teller lägre inodantal (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Utrangerar enhetsblock: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "misslyckades - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "när kvotkontexten initierades"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "när kvotinoder skrevs"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "felaktigt felbeteende i profilen - %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "i malloc för android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "vid uppsättning av superblock"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Utsträckningar är inte aktiverade. I trädet med filutsträckningar kan blocksummor beräknas, medan blockkartor inte kan det. Att inte aktivera utsträckningar reducerar täckningen av kontrollsummor för metadata. Skicka -O extents för att rätta.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "Stöd för 64-bitars filsystem är inte aktiverat. De större fälten som denna funktion erbjuder gör kontrollsummor med full styrka möjliga. Skicka -O 64bit för att rätta.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "Funktionen metadata_csum_seed förutsätter funktionen metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "Utrangering lyckades och kommer returnera 0s — hoppar över rensning av inodstabell\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "okänt os - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Allokerar grupptabeller: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "vid försök att allokera filsystemstabeller"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6054,32 +6101,32 @@ msgstr ""
"\n"
"\tvid konvertering av underklustrets bitkarta"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s kan göras ännu trasigare av omskrivning av superblock\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "vid nollställning av block %llu vid slutet av filsystemet"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "vid reservation av block för storleksändring under drift"
# "En" för att detta sätts in i annan sträng där det föregås av "a".
# Även "filsystem" kan sättas in på samma plats. Felrapporterat.
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "en journal"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Lägger till journal till enhet %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6088,21 +6135,21 @@ msgstr ""
"\n"
"\tvid försök att lägga till journal till enhet %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "klar\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "Hoppar över att skapa journal i läget endast super\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Skapar journal (%u block): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6110,7 +6157,7 @@ msgstr ""
"\n"
"\tvid försök att skapa journal"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6118,28 +6165,28 @@ msgstr ""
"\n"
"Fel vid aktivering av funktionen för skydd mot flerfaldig montering."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "Skydd mot flerfaldig montering är aktiverat med uppdateringsintervall %d sekunder.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Kopierar filer till enheten: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "när filsystemet populerades"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Skriver superblock och bokföringsinformation för filsystemet: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "när filsystemet skrevs ut och stängdes"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6215,7 +6262,7 @@ msgstr "Kan inte få storlek av %s: %s"
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d start=%8d storlek=%8lu slut=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6223,15 +6270,15 @@ msgstr ""
"\n"
"Denna åtgärd kräver en nykontrollerat filsystem.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Kör e2fsck -f på filsystemet.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Kör e2fsck -fD på filsystemet.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6252,20 +6299,20 @@ msgstr ""
"\t[-E utökad-flagga[,…]] [-T senaste_kontrolltid] [-U UUID]\n"
"\t[-I ny_inodstorlek] [-z gör-ogjort-fil] enhet\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Journalsuperblock inte funnet!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "vid försök att öppna extern journal"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s är inte en journalenhet.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6274,11 +6321,11 @@ msgstr ""
"Journalsuperblocket är trasigt, nr_users\n"
"är för hög (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "Filsystems UUID inte funnet på journalenhet.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6286,52 +6333,52 @@ msgstr ""
"Kan inte hitta journalenheten. Den togs INTE bort.\n"
"Använd flaggan -f för att ta bort en saknad journalenhet.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Journal borttagen\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "vid läsning av bitkartor"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "vid nollställning av journalinod"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "vid skrivning av journalinod"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(och starta om efteråt!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Efter att ha kört e2fsck, kör ”resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Kör ”resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "” för att aktivera 64-bitarsläge.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "” för att avaktivera 64-bitarsläge.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6339,17 +6386,17 @@ msgstr ""
"VARNING: Kunde inte bekräfta stöd i kärnan för metadata_csum_seed.\n"
" Detta kräver Linux ≥ v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Nollställning av filsystemsfunktion ”%s” stöds inte.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Att sätta filsystemsfunktion ”%s” stöds inte.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6357,7 +6404,7 @@ msgstr ""
"Flaggan has_journal får endast nollställas när filsystemet är\n"
"omonterat eller monterat enbart för läsning.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6365,7 +6412,7 @@ msgstr ""
"Flaggan needs_recovery är satt. Kör e2fsck före flaggan has_journal\n"
"nollställs.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6373,7 +6420,7 @@ msgstr ""
"Att sätta filsystemsfunktionen ”sparse_super” stödjs inte\n"
"för filsystem med funktionen meta_bg aktiverad.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6383,12 +6430,12 @@ msgstr ""
"kan inte sättas på om filsystemet är monterat\n"
"eller skrivskyddat.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Skydd mot flerfaldig montering har aktiverats med uppdateringsintervallet %d s.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6396,20 +6443,20 @@ msgstr ""
"Funktionen för skydd mot flerfaldig montering kan inte\n"
"avaktiveras om filsystemet är skrivskyddat.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Fel vid läsning av bitkartor\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Magiskt tal i MMP-block stämmer inte. förväntat: %x, faktiskt: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "vid läsning av MMP-block."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6417,7 +6464,7 @@ msgstr ""
"Att nollställa flaggan flex_bg skulle få filsystemet att bli\n"
"inkonsistent.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6425,46 +6472,54 @@ msgstr ""
"Flaggan huge_file får endast nollställas när filsystemet är\n"
"omonterat eller monterat enbart för läsning.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Att aktivera kontrollsummor kan ta ett tag."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Kan inte aktivera metadata_csum på ett monterat filsystem!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Utsträckningar är inte aktiverade. I trädet med filutsträckningar kan blocksummor beräknas, medan blockkartor inte kan det. Att inte aktivera utsträckningar reducerar täckningen av kontrollsummor för metadata. Kör om med -O extents för att rätta.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "Stöd för 64-bitars filsystem är inte aktiverat. De större fälten som denna funktion erbjuder gör kontrollsummor med full styrka möjliga. Kör resize2fs -b för att rätta.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Att avaktivera kontrollsummor kan ta ett tag."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Kan inte avaktivera metadata_csum på ett monterat filsystem!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Det går inte att aktivera uninit_bg på ett monterat filsystem!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Det går inte att avaktivera uninit_bg på ett monterat filsystem!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Kan inte aktivera 64-bitarsläge när det är monterat!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Kan inte avaktivera 64-bitarsläge när det är monterat!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Kan inte aktivera projektfunktionen; inodstorleken är för liten.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6472,11 +6527,11 @@ msgstr ""
"\n"
"Varning: flaggan ”^quota” åsidosätter ”-Q”-argument.\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Det går inte att aktivera funktionen encrypt på filsystem med funktionen encoding aktiverad.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "Funktionen casefold kan endast aktiveras när filsystemet är omonterat.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6484,21 +6539,21 @@ msgstr ""
"Att sätta funktionen ”metadata_csum_seed” stödjs bara\n"
"för filsystem med funktionen metadata_csum aktiverad.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
msgstr "UUID har ändrats sedan metadata_csum aktiverades. Filsystem måste vara omonterade för att säkert skriva om alla metadata till att matcha det nya UUID:t.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Att beräkna om kontrollsummor kan ta ett tag."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "Filsystemet har redan en journal.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6507,21 +6562,21 @@ msgstr ""
"\n"
"\tvid försök att öppna journal på %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Skapar journal på enhet %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "vid tillägg av filsystem till journal på %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Skapar journalinod: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6529,31 +6584,31 @@ msgstr ""
"\n"
"\tvid försök att skapa journalfil"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Kan inte aktivera projektkvoter; inodstorleken är för liten.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "när kvotkontexten i stödbiblioteket initierades"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "när kvotgränser (%d) uppdaterades"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "när kvotfil (%d) skrevs"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "när kvotfil (%d) togs bort"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6575,97 +6630,117 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Kunde inte tolka datum-/tidsangivelse: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "felaktigt antal monteringar - %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "felaktigt gid/gruppnamn - %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "felaktigt intervall - %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "felaktig andel reserverade block - %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o får endast anges en gång"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O får endast anges en gång"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "felaktigt antal reserverade block - %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "felaktigt uid/användarnamn - %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "felaktig inodsstorlek - %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Inodsstorlek måste vara en multipel av två- %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "mmp_update_interval är för stort: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
msgstr[0] "Sätter uppdateringsintervall för skydd mot flerfaldig montering till %lu sekund\n"
msgstr[1] "Sätter uppdateringsintervall för skydd mot flerfaldig montering till %lu sekunder\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Sätter filsystemets felflagga för att framtvinga fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Ogiltig RAID-kliv: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Ogiltig RAID-remsbredd: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Ogiltig hash-algoritm: %s\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Sätter standardhashalgoritm till %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Det går inte att ändra en befintlig kodning\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Felaktig kodning: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Sätter kodningen till ”%s”\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Sätter encoding_flags till ”%s”\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6683,6 +6758,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Felaktiga flaggor angivna.\n"
@@ -6700,32 +6777,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<kodning>\n"
+"\tencoding_flags=<flaggor>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Misslyckades att läsa inodsbitkarta\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Misslyckades att läsa blockbitkarta\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "block att flytta"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Kunde inte allokera blockbitkarta när inodsstorleken ökades\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Inte tillräckligt med utrymme för att öka inodsstorleken \n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Misslyckades omlokalisera block under storleksändring av inoder \n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6733,7 +6812,7 @@ msgstr ""
"Fel när storleken på inoder ändrades.\n"
"Kör e2undo för att göra filsystemsändringarna ogjorda. \n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6741,7 +6820,7 @@ msgstr ""
"Om du är säker på att filsystemet inte används på någon nod, kör:\n"
"”tune2fs -f -E clear_mmp {enhet}”\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6750,29 +6829,29 @@ msgstr ""
"MMP-blockets magiska tal är felaktigt. Försök att rätta det genom att köra:\n"
"”e2fsck-f %s”\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Kan inte modifiera en journalenhet.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "Inodsstorleken är redan %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "Att krympa inodsstorleken stödjs inte\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Ogiltig inodstorlek %lu (max %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Att ändra storlek på inoder kan ta ett tag."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6789,57 +6868,57 @@ msgstr ""
"kör sedan om detta kommando. Annars kan eventuella ändringar skrivas över\n"
"när journalen återhämtas.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Återhämtar journalen.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Sätter max antal monteringar till %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Sätter aktuellt antal monteringar till %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Sätter felbeteende till %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Sätter gid för reserverade block till %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "intervall mellan kontroller är för stort (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Sätter intervall mellan kontroller till %lu sekunder\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Sätter procent reserverade block till %g %% (%llu block)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "antal reserverade block för stort (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Sätter antal reserverade block till %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6847,7 +6926,7 @@ msgstr ""
"\n"
"Filsystemet har redan glesa superblock.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6857,7 +6936,7 @@ msgstr ""
"Att sätta superblockflaggan gles stödjs inte\n"
"för filsystem med funktionen meta_bg aktiverad.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6866,7 +6945,7 @@ msgstr ""
"\n"
"Flaggan för glesa superblock satt. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6874,49 +6953,49 @@ msgstr ""
"\n"
"Nollställning av superblocksflaggan gles stödjs inte.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Sätter tidpunkt för senaste filsystemskontroll till %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Sätter uid för reserverade block till %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Fel vid användning av clear_mmp. Det måste användas med -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "Kvotfunktionen kan endast ändras när filsystemet är omonterat.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Att sätta UUID:n på detta filsystem kan ta ett tag."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "UUID:n får endast ändras när filsystemet är omonterat.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Om du bara använder kärnor nyare än v4.4, kör ”tune2fs -O metadata_csum_seed” och kör om detta kommando.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Ogiltigt UUID-format\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Behöver uppdatera journalsuperblock.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "Inodsstorleken får endast ändras när filsystemet är omonterat.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6924,26 +7003,26 @@ msgstr ""
"Att ändra inodsstorlek stöds inte för filsystem med funktionen flex_bg\n"
"aktiverad.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Sätter inodsstorlek till %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Misslyckades att ändra inodsstorlek\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Sätter klivstorlek till %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Sätter remsbredd till %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Sätter utökade standardmonteringsflaggor till ”%s”\n"
@@ -7249,17 +7328,17 @@ msgstr ""
"det ändå.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "när %s öppnades"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "när statusinformation för %s hämtades"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7268,30 +7347,34 @@ msgstr ""
"Kör ”e2fsck -f %s” först.\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Uppskattad minsta storlek på filsystemet: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "Ogiltig ny storlek: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "Ny storlek för stor för att uttryckas i 32 bitar\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Ny storlek resulterar i för mång blockgruppbeskrivare.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "Ny storlek mindre än minimum (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Ogiltig klivlängd"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7302,27 +7385,27 @@ msgstr ""
"Du begärde en ny storlek på %llu block.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Kan inte slå på och av 64-bitarsfunktionen.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "Kan inte ändra 64-bitarsfunktionen på ett filsystem som är större än 2³² block.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "Kan inte ändra 64-bitarsfunktionen när filsystemet är monterat.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Aktivera utsträckningsfunktionen med tune2fs före aktivering av 64-bitarsfunktionen.\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7331,37 +7414,37 @@ msgstr ""
"Filsystemet är redan %llu (%d k) block långt. Inget behöver göras!\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "Filsystemet är redan 64-bitars.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "Filsystemet är redan 32-bitars.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Konverterar filsystemet till 64-bitars.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Konverterar filsystemet till 32-bitars.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "Ändrar storlek på filsystemet på %s till %llu (%d k) block.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "vid försök att ändra storlek på %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7370,7 +7453,7 @@ msgstr ""
"Kör ”e2fsck -fy %s” för att laga filsystemet\n"
"efter den avbrutna storleksändringen.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7379,7 +7462,7 @@ msgstr ""
"Filsystemet på %s är nu %llu (%d k) block långt.\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "vid försök att korta av %s"
@@ -7480,8 +7563,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Skulle aldrig inträffa: storleksändringsinoden trasig!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "EXT2FS-bibliotek version 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "EXT2FS-bibliotek version 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8195,6 +8278,10 @@ msgstr "Inoden är trasig"
msgid "Inode containing extended attribute value is corrupted"
msgstr "Inod som innehåller ett utökat attributvärde är trasig"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Gruppbeskrivare inte inlästa"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Profil version 0.0"
@@ -8319,47 +8406,47 @@ msgstr "Ogiltigt heltalsvärde"
msgid "Bad magic value in profile_file_data_t"
msgstr "Felaktigt magiskt värde i profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\tsenast monterad på %s på %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tsenast monterad på %.*s på %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\tsenast monterad på %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tskapad %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tsenast modifierad på %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Hittade en %s-partitionstabell i %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "Filen %s finns inte och ingen storlek angavs.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Skapar normal fil %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Kunde inte öppna %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8367,22 +8454,22 @@ msgstr ""
"\n"
"Enheten existerar uppenbarligen inte; angav du den korrekt?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s är inte en blockspecialenhet.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s innehåller ett %s-filsystem med etiketten ”%s”\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s innehåller ett %s-filsystem\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s innehåller ”%s”-data\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index a992e993..59158d2a 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 1fc50c13..21c808d2 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -5,7 +5,7 @@
#
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,.
# Theodore Ts'o <tytso@mit.edu>, 2013.
-# Yuri Chornoivan <yurchor@ukr.net>, 2013, 2014, 2016, 2017, 2018, 2019.
+# Yuri Chornoivan <yurchor@ukr.net>, 2013, 2014, 2016, 2017, 2018, 2019, 2021.
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
#. there is an @-expansion, where strings like "@i" are expanded to
@@ -77,10 +77,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.45.3\n"
+"Project-Id-Version: e2fsprogs 1.46.0\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-07-14 20:56-0400\n"
-"PO-Revision-Date: 2019-07-20 17:17+0300\n"
+"POT-Creation-Date: 2021-01-28 13:42-0500\n"
+"PO-Revision-Date: 2021-02-02 21:03+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -89,7 +89,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\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"
-"X-Generator: Lokalize 19.03.70\n"
+"X-Generator: Lokalize 20.11.70\n"
#: e2fsck/badblocks.c:23 misc/mke2fs.c:220
#, c-format
@@ -107,9 +107,9 @@ msgstr "при читанні inode пошкоджених блоків"
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/dumpe2fs.c:692 misc/dumpe2fs.c:696 misc/e2image.c:1430
#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
-#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
+#: misc/tune2fs.c:2881 misc/tune2fs.c:2980 resize/main.c:416
#, c-format
msgid "while trying to open %s"
msgstr "під час спроби відкрити %s"
@@ -132,7 +132,7 @@ msgstr "при оновленні inode пошкоджених блоків"
msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "Попередження: в inode пошкоджених блоків знайдено недопустимий блок %u. Очищено.\n"
-#: e2fsck/dirinfo.c:331
+#: e2fsck/dirinfo.c:332
msgid "while freeing dir_info tdb file"
msgstr "під час вивільнення файла tdb dir_info"
@@ -164,15 +164,15 @@ msgstr "Помилка запису блоку %lu (%s) доки %s. "
msgid "Error writing block %lu (%s). "
msgstr "Помилка запису блоку %lu (%s). "
-#: e2fsck/emptydir.c:57
+#: e2fsck/emptydir.c:56
msgid "empty dirblocks"
msgstr "порожні блоки каталогів"
-#: e2fsck/emptydir.c:62
+#: e2fsck/emptydir.c:61
msgid "empty dir map"
msgstr "порожня карта каталогів"
-#: e2fsck/emptydir.c:98
+#: e2fsck/emptydir.c:97
#, c-format
msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Порожній блок каталогу %u (№%d) у inode %u\n"
@@ -182,12 +182,12 @@ msgstr "Порожній блок каталогу %u (№%d) у inode %u\n"
msgid "%s: %s filename nblocks blocksize\n"
msgstr "%s: %s назва файлу розмір блоків nblocks\n"
-#: e2fsck/extend.c:44
+#: e2fsck/extend.c:45
#, c-format
msgid "Illegal number of blocks!\n"
msgstr "Некоректна кількість блоків!\n"
-#: e2fsck/extend.c:50
+#: e2fsck/extend.c:51
#, c-format
msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr "Не вдалося отримати пам’ять під буфер блоків (розмір=%d)\n"
@@ -216,7 +216,7 @@ msgstr "Використання: %s [-F] [-I inode_buffer_blocks] пристр
msgid "while opening %s for flushing"
msgstr "під час спроби відкриття %s для спорожнення"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:385
#, c-format
msgid "while trying to flush %s"
msgstr "під час спроби спорожнення %s"
@@ -253,7 +253,7 @@ msgstr "%s: не знайдено коректного суперблоку жу
msgid "%s: journal too short\n"
msgstr "%s: журнал є надто коротким\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3787
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s: відновлюємо журнал\n"
@@ -505,113 +505,113 @@ msgstr "невідомий тип квоти"
msgid "multiply claimed inode map"
msgstr "карта inode кратного використання"
-#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:826
+#: e2fsck/pass1b.c:672 e2fsck/pass1b.c:830
#, c-format
msgid "internal error: can't find dup_blk for %llu\n"
msgstr "внутрішня помилка: не вдалося знайти dup_blk для %llu\n"
-#: e2fsck/pass1b.c:952
+#: e2fsck/pass1b.c:956
msgid "returned from clone_file_block"
msgstr "повернуто з clone_file_block"
-#: e2fsck/pass1b.c:976
+#: e2fsck/pass1b.c:980
#, c-format
msgid "internal error: couldn't lookup EA block record for %llu"
msgstr "внутрішня помилка: не вдалося виконати пошук запису блоку з розширеним атрибутом для %llu"
-#: e2fsck/pass1b.c:988
+#: e2fsck/pass1b.c:992
#, c-format
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "внутрішня помилка: не вдалося виконати пошук запису inode з розширеним атрибутом для %u"
-#: e2fsck/pass1.c:357
+#: e2fsck/pass1.c:358
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr "під час хешування запису з e_value_inum = %u"
-#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
+#: e2fsck/pass1.c:776 e2fsck/pass2.c:1018
msgid "reading directory block"
msgstr "читання блоку каталогу"
-#: e2fsck/pass1.c:1224
+#: e2fsck/pass1.c:1175
+msgid "getting next inode from scan"
+msgstr "отримуємо наступний inode від засобу сканування"
+
+#: e2fsck/pass1.c:1227
msgid "in-use inode map"
msgstr "карта використовуваних inode"
-#: e2fsck/pass1.c:1235
+#: e2fsck/pass1.c:1238
msgid "directory inode map"
msgstr "карта inode каталогів"
-#: e2fsck/pass1.c:1245
+#: e2fsck/pass1.c:1248
msgid "regular file inode map"
msgstr "карта inode звичайних файлів"
-#: e2fsck/pass1.c:1254 misc/e2image.c:1282
+#: e2fsck/pass1.c:1257 misc/e2image.c:1282
msgid "in-use block map"
msgstr "карта використовуваних блоків"
-#: e2fsck/pass1.c:1263
+#: e2fsck/pass1.c:1266
msgid "metadata block map"
msgstr "карта блоків метаданих"
-#: e2fsck/pass1.c:1325
+#: e2fsck/pass1.c:1328
msgid "opening inode scan"
msgstr "розпочинаємо сканування inode"
-#: e2fsck/pass1.c:1363
-msgid "getting next inode from scan"
-msgstr "отримуємо наступний inode від засобу сканування"
-
-#: e2fsck/pass1.c:2067
+#: e2fsck/pass1.c:2083
msgid "Pass 1"
msgstr "Прохід 1"
-#: e2fsck/pass1.c:2128
+#: e2fsck/pass1.c:2144
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "читаємо опосередковані блоки inode %u"
-#: e2fsck/pass1.c:2179
+#: e2fsck/pass1.c:2195
msgid "bad inode map"
msgstr "картка пошкоджених inode"
-#: e2fsck/pass1.c:2219
+#: e2fsck/pass1.c:2253
msgid "inode in bad block map"
msgstr "inode у карті пошкоджених блоків"
-#: e2fsck/pass1.c:2239
+#: e2fsck/pass1.c:2273
msgid "imagic inode map"
msgstr "карта inode imagic"
-#: e2fsck/pass1.c:2270
+#: e2fsck/pass1.c:2304
msgid "multiply claimed block map"
msgstr "карта блоків кратного використання"
-#: e2fsck/pass1.c:2395
+#: e2fsck/pass1.c:2429
msgid "ext attr block map"
msgstr "карта блоків з розширеним атрибутом"
-#: e2fsck/pass1.c:3640
+#: e2fsck/pass1.c:3685
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c): мало бути %6lu маємо фізичних %6lu (к-ть блоків %lld)\n"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4105
msgid "block bitmap"
msgstr "карта бітів блоку"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4111
msgid "inode bitmap"
msgstr "бітова карта inode"
-#: e2fsck/pass1.c:4072
+#: e2fsck/pass1.c:4117
msgid "inode table"
msgstr "таблиця inode"
-#: e2fsck/pass2.c:307
+#: e2fsck/pass2.c:312
msgid "Pass 2"
msgstr "Прохід 2"
-#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
+#: e2fsck/pass2.c:1091 e2fsck/pass2.c:1266
msgid "Can not continue."
msgstr "Продовження неможливе."
@@ -627,11 +627,11 @@ msgstr "Пікове споживання пам’яті"
msgid "Pass 3"
msgstr "Прохід 3"
-#: e2fsck/pass3.c:344
+#: e2fsck/pass3.c:350
msgid "inode loop detection bitmap"
msgstr "бітова карта виявлення циклів inode"
-#: e2fsck/pass4.c:277
+#: e2fsck/pass4.c:289
msgid "Pass 4"
msgstr "Прохід 4"
@@ -647,187 +647,195 @@ msgstr "check_inode_bitmap_checksum: помилка під час спроби
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum: помилка розміщення у пам’яті"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "(no prompt)"
msgstr "(без запиту)"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Fix"
msgstr "Виправити"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Clear"
msgstr "Очистити"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Relocate"
msgstr "Змінити розташування"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Allocate"
msgstr "Розподілити"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Розгорнути"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Connect to /lost+found"
msgstr "З’єднати з /lost+found"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Create"
msgstr "Створити"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Salvage"
msgstr "Врятувати"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Truncate"
msgstr "Вкоротити"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Clear inode"
msgstr "Спорожнити inode"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Abort"
msgstr "Перервати"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Split"
msgstr "Розділити"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Continue"
msgstr "Продовжити"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Clone multiply-claimed blocks"
msgstr "Клонувати блоки кратного використання"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Delete file"
msgstr "Вилучити файл"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Suppress messages"
msgstr "Придушити виведення повідомлень"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Unlink"
msgstr "Від’єднати"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Clear HTree index"
msgstr "Спорожнити покажчик HTree"
-#: e2fsck/problem.c:71
+#: e2fsck/problem.c:72
msgid "Recreate"
msgstr "Створити заново"
-#: e2fsck/problem.c:72
+#: e2fsck/problem.c:73
msgid "Optimize"
msgstr "Оптимізувати"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Зняти прапорець"
+
+#: e2fsck/problem.c:83
msgid "(NONE)"
msgstr "(НЕМАЄ)"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "FIXED"
msgstr "ВИПРАВЛЕНО"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "CLEARED"
msgstr "ОЧИЩЕНО"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "RELOCATED"
msgstr "ЗМІНЕНО РОЗТАШУВАННЯ"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "ALLOCATED"
msgstr "РОЗМІЩЕНО"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "EXPANDED"
msgstr "РОЗШИРЕНО"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "RECONNECTED"
msgstr "ПОВТОРНО З’ЄДНАНО"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "CREATED"
msgstr "СТВОРЕНО"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "SALVAGED"
msgstr "ВРЯТОВАНО"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "TRUNCATED"
msgstr "ОБРІЗАНО"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "INODE CLEARED"
msgstr "INODE СПОРОЖНЕНО"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "ABORTED"
msgstr "ПЕРЕРВАНО"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "SPLIT"
msgstr "РОЗДІЛЕНО"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "CONTINUING"
msgstr "ПРОДОВЖЕНО"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "КЛОНОВАНО БЛОКИ КРАТНОГО ВИКОРИСТАННЯ"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "FILE DELETED"
msgstr "ФАЙЛ ВИЛУЧЕНО"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "SUPPRESSED"
msgstr "ПРИДУШЕНО"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "UNLINKED"
msgstr "ВІД’ЄДНАНО"
-#: e2fsck/problem.c:99
+#: e2fsck/problem.c:101
msgid "HTREE INDEX CLEARED"
msgstr "ІНДЕКС HTREE ОЧИЩЕНО"
-#: e2fsck/problem.c:100
+#: e2fsck/problem.c:102
msgid "WILL RECREATE"
msgstr "ПЕРЕСТВОРИТЬ"
-#: e2fsck/problem.c:101
+#: e2fsck/problem.c:103
msgid "WILL OPTIMIZE"
msgstr "ОПТИМІЗУЄ"
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "ПРАПОРЕЦЬ ЗНЯТО"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:115
+#: e2fsck/problem.c:118
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "бітова карта блоків для групи %g не перебуває у групі. (блок %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:119
+#: e2fsck/problem.c:122
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "бітова карта inode для групи %g не перебуває у групі. (блок %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:124
+#: e2fsck/problem.c:127
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -844,7 +852,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:130
+#: e2fsck/problem.c:133
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -870,7 +878,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:141
+#: e2fsck/problem.c:144
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -883,7 +891,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:148
+#: e2fsck/problem.c:151
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -894,18 +902,18 @@ msgstr ""
"від розмірів блоку.\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:155
+#: e2fsck/problem.c:158
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "кількість блоків на групу у суперблоці = %b, мало б бути %c\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:160
+#: e2fsck/problem.c:163
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "перший блок даних у супрерблоці = %b, мав би бути %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:165
+#: e2fsck/problem.c:168
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -913,7 +921,7 @@ msgstr ""
"файлова система не мала UUID; створюємо відповідний UUID.\n"
"\n"
-#: e2fsck/problem.c:171
+#: e2fsck/problem.c:174
#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
@@ -932,48 +940,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:180
+#: e2fsck/problem.c:183
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "Виявлено пошкодження у @S. (%s = %N).\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:189
#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "Помилка під час визначення розміру фізичного тому: %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:191
+#: e2fsck/problem.c:194
msgid "@i count in @S is %i, @s %j.\n"
msgstr "Кількість @i у суперблоці дорівнює, має бути %j.\n"
-#: e2fsck/problem.c:195
+#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
msgstr "У Hurd не передбачено підтримки можливості визначення типу файлів.\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:201
+#: e2fsck/problem.c:204
#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "Журна суперблоку є некоректним (@i %i).\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:206
+#: e2fsck/problem.c:209
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "У зовнішньому журналі визначено декілька користувачів файлової системи (така конфігурація не підтримується).\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:211
+#: e2fsck/problem.c:214
msgid "Can't find external @j\n"
msgstr "Не вдалося знайти зовнішнього @j\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:216
+#: e2fsck/problem.c:219
msgid "External @j has bad @S\n"
msgstr "У зовнішнього журналу пошкоджено суперблок\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:221
+#: e2fsck/problem.c:224
msgid "External @j does not support this @f\n"
msgstr "Для зовнішнього журналу не передбачено підтримки цієї файлової системи\n"
@@ -981,7 +989,7 @@ msgstr "Для зовнішнього журналу не передбачено
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:226
+#: e2fsck/problem.c:229
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
@@ -992,80 +1000,80 @@ msgstr ""
"Ймовірно, суперблок журналу пошкоджено.\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:235
+#: e2fsck/problem.c:238
msgid "@j @S is corrupt.\n"
msgstr "суперблок журналу пошкоджено.\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:240
+#: e2fsck/problem.c:243
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "прапорець суперблоку has_journal скинуто, але наявним є журнал.\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:245
+#: e2fsck/problem.c:248
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "Встановлено прапорець needs_recovery для суперблоку, але не виявлено журналу.\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:250
+#: e2fsck/problem.c:253
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "Знято прапорець needs_recovery для суперблоку, але у журналі немає даних.\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:255
+#: e2fsck/problem.c:258
msgid "Clear @j"
msgstr "Очистити журнал"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:260 e2fsck/problem.c:796
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "Для файлової системи встановлено прапорці можливостей, але ця файлова система має версію 0. "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:265
+#: e2fsck/problem.c:268
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "осиротілий inode %s %i (uid=%Iu, gid=%Ig, режим=%Im, розмір=%Is)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:270
+#: e2fsck/problem.c:273
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "знайдено некоректний %B (%b) у осиротілому inode %i.\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:275
+#: e2fsck/problem.c:278
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "Вже спрожнено знайдені %B (%b) у осиротілому inode %i.\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:281
+#: e2fsck/problem.c:284
#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "некоректний осиротілий @i %i у суперблоці.\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:287
+#: e2fsck/problem.c:290
#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "некоректний @i %i у списку осиротілих @i.\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:292
+#: e2fsck/problem.c:295
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "Для суперблоку журналу встановлено невідомий придатний лише до читання прапорець можливості.\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:297
+#: e2fsck/problem.c:300
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "Для суперблоку журналу встановлено невідомий і несумісний прапорець можливості.\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:302
+#: e2fsck/problem.c:305
msgid "@j version not supported by this e2fsck.\n"
msgstr "Підтримки цієї версії журналу у поточній версії e2fsck не передбачено.\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:311
#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
@@ -1076,7 +1084,7 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:317
#, no-c-format
msgid ""
"Error moving @j: %m\n"
@@ -1088,7 +1096,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:322
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1099,18 +1107,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:325
+#: e2fsck/problem.c:328
msgid "Run @j anyway"
msgstr "Запустити журналювання попри це"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:333
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "У резервному суперблоці не встановлено прапорець відновлення, отже, попри все запускаємо журнал.\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:335
+#: e2fsck/problem.c:338
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1120,7 +1128,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:344
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1129,18 +1137,18 @@ msgstr ""
"має значення %N; має бути нульовим. "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:347
+#: e2fsck/problem.c:350
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "Resize_@i не увімкнено, але зміна розміру @i є ненульовою. "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:352
+#: e2fsck/problem.c:355
msgid "Resize @i not valid. "
msgstr "Зміна розміру @i є некоректною. "
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:357
+#: e2fsck/problem.c:360
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1150,7 +1158,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:362
+#: e2fsck/problem.c:365
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1159,14 +1167,14 @@ msgstr ""
"\tтепер = %T) лежить у майбутньому.\n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:368
+#: e2fsck/problem.c:371
#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "підказкою суперблоку для зовнішнього суперблоку має бути %X. "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:373
+#: e2fsck/problem.c:376
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1175,39 +1183,39 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:378
+#: e2fsck/problem.c:381
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "контрольна сума дескриптора групи %g дорівнює %04x, а має бути %04y. "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:384
+#: e2fsck/problem.c:387
#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "дескриптор групи %g позначено неініціалізованим без встановлення відповідної можливості.\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:389
+#: e2fsck/problem.c:392
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "дескриптор групи %g містить дані щодо некоректної кількості невикористаних inode %b. "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:394
+#: e2fsck/problem.c:397
msgid "Last @g @b @B uninitialized. "
msgstr "Бітову карту останнього блоку групи не ініціалізовано. "
-#: e2fsck/problem.c:400
+#: e2fsck/problem.c:403
#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "Запис дії журналу %i пошкоджено, повторне виконання перервано.\n"
-#: e2fsck/problem.c:405
+#: e2fsck/problem.c:408
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "Встановлено прапорець test_fs (і доступна ext4). "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:410
+#: e2fsck/problem.c:413
msgid ""
"@S last mount time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1218,7 +1226,7 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:416
+#: e2fsck/problem.c:419
msgid ""
"@S last write time is in the future.\n"
"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
@@ -1227,103 +1235,103 @@ msgstr ""
"\t(менше ніж на день, ймовірно через помилковий час на апаратному годиннику)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:422
+#: e2fsck/problem.c:425
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "Одна або декілька контрольних сум дескрипторів груп блоків є некоректними. "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:427
+#: e2fsck/problem.c:430
msgid "Setting free @is count to %j (was %i)\n"
msgstr "Встановлюємо для кількості вільних @inode значення %j (було %i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:432
+#: e2fsck/problem.c:435
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "Встановлюємо для кількості вільних блоків значення %c (було %b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:437
+#: e2fsck/problem.c:440
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr "Приховуємо квоти %U, @i %i (%Q).\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:442
+#: e2fsck/problem.c:445
msgid "@S has invalid MMP block. "
msgstr "Блок MMP суперблоку є некоректним. "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:447
+#: e2fsck/problem.c:450
msgid "@S has invalid MMP magic. "
msgstr "Контрольна сума MMP суперблоку є некоректною. "
-#: e2fsck/problem.c:453
+#: e2fsck/problem.c:456
#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:459
+#: e2fsck/problem.c:462
#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:468
msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
msgstr "metadata_csum суперблоку заміщує uninit_bg; не можна встановлювати обидва біти властивостей одночасно."
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:471
+#: e2fsck/problem.c:474
msgid "@S MMP @b checksum does not match. "
msgstr "Контрольна сума блоку MMP суперблоку не збігається із еталонною. "
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:476
+#: e2fsck/problem.c:479
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "64-бітові файлові системи суперблоку потребують розширень для доступу до усього диска. "
-#: e2fsck/problem.c:481
+#: e2fsck/problem.c:484
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "Значення First_meta_bg є надто великим. (%N, максимальним є значення %g). "
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:486
+#: e2fsck/problem.c:489
msgid "External @j @S checksum does not match @S. "
msgstr "Контрольна сума суперблоку зовнішнього журналу не відповідає суперблоку. "
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:491
+#: e2fsck/problem.c:494
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
msgstr "metadata_csum_seed суперблоку необов’язково без metadata_csum."
-#: e2fsck/problem.c:497
+#: e2fsck/problem.c:500
#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "Помилка під час спроби ініціалізувати контекст квот у бібліотеці підтримки: %m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:502
+#: e2fsck/problem.c:505
msgid "Bad required extra isize in @S (%N). "
msgstr "Помилкове значення потрібного додаткового розміру у @S (%N). "
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:507
+#: e2fsck/problem.c:510
msgid "Bad desired extra isize in @S (%N). "
msgstr "Помилкове значення бажаного додаткового розміру у @S (%N). "
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:512
+#: e2fsck/problem.c:515
msgid "Invalid %U @q @i %i. "
msgstr "Некоректна квота %U, @i %i. "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:520
msgid "@S would have too many inodes (%N).\n"
msgstr "@S мав би забагато inode (%N).\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:525
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
@@ -1332,117 +1340,117 @@ msgstr ""
"Слід вимкнути можливість Resize_@i. "
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:530
+#: e2fsck/problem.c:533
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "Прохід 1: перевіряємо @i, блоки та розміри\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:534
+#: e2fsck/problem.c:537
msgid "@r is not a @d. "
msgstr "кореневий inode не є каталогом. "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:539
+#: e2fsck/problem.c:542
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "для кореневого inode встановлено dtime (ймовірно, через застарілу програму mke2fs). "
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:544
+#: e2fsck/problem.c:547
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "Для зарезервованого @i %i (%Q) визначено некоректний режим. "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:550
+#: e2fsck/problem.c:553
#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "для вилученого @i %i визначено нульове значення dtime. "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:556
+#: e2fsck/problem.c:559
#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "@i %i використовується, але для нього встановлено dtime. "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:565
#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "@i %i є каталогом нульової довжини. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:570
msgid "@g %g's @b @B at %b @C.\n"
msgstr "бітова карта блоків групи %g за адресою %b конфліктує з іншим блоком файлової системи.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:575
msgid "@g %g's @i @B at %b @C.\n"
msgstr "бітова карта inode групи %g у %b конфліктує з якимось іншим блоком файлової системи.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:580
msgid "@g %g's @i table at %b @C.\n"
msgstr "таблиця inode групи %g у %b конфліктує з певним блоком іншої файлової системи.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:585
msgid "@g %g's @b @B (%b) is bad. "
msgstr "бітову карту блоків групи %g (%b) пошкоджено. "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:590
msgid "@g %g's @i @B (%b) is bad. "
msgstr "карту inode групи %g (%b) пошкоджено. "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:592
+#: e2fsck/problem.c:595
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "@i %i, i_size дорівнює %Is, має бути %N. "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:597
+#: e2fsck/problem.c:600
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "@i %i, i_blocks — %Ib, має бути %N. "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:605
msgid "@I %B (%b) in @i %i. "
msgstr "некоректне значення %B (%b) у @i %i. "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:610
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B (%b) перекриває метадані файлової системи у @i %i. "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:613
+#: e2fsck/problem.c:616
#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "@i %i містить некоректні блоки. "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:619
+#: e2fsck/problem.c:622
#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "У @i %i забагато неприпустимих блоків.\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:624
+#: e2fsck/problem.c:627
msgid "@I %B (%b) in bad @b @i. "
msgstr "некоректне %B (%b) у помилковому блоковому @i. "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:632
msgid "Bad @b @i has illegal @b(s). "
msgstr "Помилковий @i блоку містить некоректні блоки. "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:637
msgid "Duplicate or bad @b in use!\n"
msgstr "Використовується дублікат або помилковий блок!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:639
+#: e2fsck/problem.c:642
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "Пошкоджений блок %b використано як опосередкований блок @i пошкодженого блоку. "
@@ -1450,7 +1458,7 @@ msgstr "Пошкоджений блок %b використано як опос
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:644
+#: e2fsck/problem.c:647
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1464,7 +1472,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:654
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1475,7 +1483,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:656
+#: e2fsck/problem.c:659
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1486,121 +1494,121 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:662
+#: e2fsck/problem.c:665
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "Основний суперблок (%b) перебуває у списку помилкових блоків.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:667
+#: e2fsck/problem.c:670
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "Блок %b у основних дескрипторах груп перебуває у списку помилкових блоків\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:673
+#: e2fsck/problem.c:676
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "Попередження: суперблок групи %g (%b) є помилковим.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:682
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr "Попередження: копія дескрипторів груп групи %g містить пошкоджений блок (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:685
+#: e2fsck/problem.c:688
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "Помилка у програмі? Блок №%b витребувано без причини у process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:691
+#: e2fsck/problem.c:694
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "помилка під час отримання %N неперервних блоків у групі блоків %g для %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:697
+#: e2fsck/problem.c:700
#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "помилка під час отримання буфера блоків для пересування %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:702
+#: e2fsck/problem.c:705
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "Пересування %g групи %s з %b до %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:708
+#: e2fsck/problem.c:711
#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "Пересування %g групи %s до %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:713
+#: e2fsck/problem.c:716
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "Попередження: не вдалося прочитати блок %b з %s: %m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:718
+#: e2fsck/problem.c:721
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "Попередження: не вдалося записати блок %b для %s: %m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:723 e2fsck/problem.c:1871
+#: e2fsck/problem.c:726 e2fsck/problem.c:1898
msgid "@A @i @B (%N): %m\n"
msgstr "помилка під час отримання бітової кари @i (%N): %m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:728
+#: e2fsck/problem.c:731
msgid "@A @b @B (%N): %m\n"
msgstr "помилка під час отримання карти блоків (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:737
#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "помилка під час отримання даних щодо посилання icount: %m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:740
+#: e2fsck/problem.c:743
#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "помилка під час отримання масиву блоків каталогів: %m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:746
+#: e2fsck/problem.c:749
#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "Помилка під час сканування @i (%i): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:752
+#: e2fsck/problem.c:755
#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "Помилка під час виконання ітерації над блоками у @i %i: %m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:757
+#: e2fsck/problem.c:760
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "Помилка під час спроби зберегти дані щодо кількості @i (@i=%i, кількість=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:762
+#: e2fsck/problem.c:765
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "Помилка під час спроби зберегти дані щодо блоків каталогу (@i=%i, блок=%b, к-ть=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:772
#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "Помилка під час читання @i %i: %m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:778
+#: e2fsck/problem.c:781
#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "Для @i %i встановлено прапорець imagic. "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:784
+#: e2fsck/problem.c:787
#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
@@ -1610,143 +1618,143 @@ msgstr ""
"встановлено прапорець незмінності або лише дописування. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:791
+#: e2fsck/problem.c:794
#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "Спеціальний @i (пристрій/сокет/fifo) %i має ненульовий розмір. "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:801
+#: e2fsck/problem.c:804
msgid "@j @i is not in use, but contains data. "
msgstr "@i журналу не використовується, але містить дані. "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:806
+#: e2fsck/problem.c:809
msgid "@j is not regular file. "
msgstr "журнал не є звичайним файлом. "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:812
+#: e2fsck/problem.c:815
#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "@i %i є частиною списку осиротілих @i. "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:818
+#: e2fsck/problem.c:821
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "виявлено @i, які були частиною пов’язаного списку пошкоджених осиротілих блоків. "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:823
+#: e2fsck/problem.c:826
msgid "@A refcount structure (%N): %m\n"
msgstr "помилка під час розміщення структури кількості посилань (%N): %m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:828
+#: e2fsck/problem.c:831
msgid "Error reading @a @b %b for @i %i. "
msgstr "Помилка під час читання блоку атрибутів %b для @i %i. "
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:833
+#: e2fsck/problem.c:836
msgid "@i %i has a bad @a @b %b. "
msgstr "@i %i містить пошкоджений блок розширеного атрибута %b. "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:838
+#: e2fsck/problem.c:841
msgid "Error reading @a @b %b (%m). "
msgstr "Помилка під час читання блоку розширених атрибутів %b (%m). "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:843
+#: e2fsck/problem.c:846
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "у блоку розширеного атрибута %b кількість посилань дорівнює %r, а має бути %N. "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:848
+#: e2fsck/problem.c:851
msgid "Error writing @a @b %b (%m). "
msgstr "Помилка під час записування блоку розширених атрибутів %b (%m). "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:853
+#: e2fsck/problem.c:856
msgid "@a @b %b has h_@bs > 1. "
msgstr "блок розширеного атрибута %b має h_blocks > 1. "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:858
+#: e2fsck/problem.c:861
msgid "@A @a region allocation structure. "
msgstr "помилка під час спроби розмістити структуру розміщення регіонів розширених атрибутів. "
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:863
+#: e2fsck/problem.c:866
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "блок розширеного атрибута %b пошкодженого (конфлікт розміщення). "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:868
+#: e2fsck/problem.c:871
msgid "@a @b %b is corrupt (@n name). "
msgstr "блок розширених атрибутів %b пошкоджено (некоректна назва). "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:873
+#: e2fsck/problem.c:876
msgid "@a @b %b is corrupt (@n value). "
msgstr "блок розширених атрибутів %b пошкоджено (некоректне значення). "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:882
#, no-c-format
msgid "@i %i is too big. "
msgstr "@i %i є надто великим. "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:883
+#: e2fsck/problem.c:886
msgid "%B (%b) causes @d to be too big. "
msgstr "%B (%b) робить каталог надто великим. "
-#: e2fsck/problem.c:888
+#: e2fsck/problem.c:891
msgid "%B (%b) causes file to be too big. "
msgstr "%B (%b) робить файл надто великим. "
-#: e2fsck/problem.c:893
+#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B (%b) робить символічне посилання надто великим. "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:899
+#: e2fsck/problem.c:902
#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "для @i %i встановлено прапорець INDEX_FL у файловій системі, де підтримки htree не передбачено.\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:905
+#: e2fsck/problem.c:908
#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "для @i %i встановлено прапорець INDEX_FL, але він не є каталогом.\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:914
#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "inode каталогу HTREE %i має некоректний кореневий вузол.\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:919
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "@h %i належить до непідтримуваної версії хешу (%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:922
+#: e2fsck/problem.c:925
#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "inode каталогу HTREE %i використовує несумісний прапорець кореневого вузла htree.\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:927
+#: e2fsck/problem.c:930
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "inode каталогу HTREE %i має рівень вкладеності у ієрархії (%N), який є надто великим\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:933
+#: e2fsck/problem.c:936
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
@@ -1755,55 +1763,55 @@ msgstr ""
"метаданими файлової системи. "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:940
+#: e2fsck/problem.c:943
#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "Помилка (повторного) створення @i зміни розмірів: %m."
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:945
+#: e2fsck/problem.c:948
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "@i %i має надмірний розмір (%IS), це некоректно\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:950
+#: e2fsck/problem.c:953
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "розширений атрибут у @i %i має некоректне значення namelen (%N)\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:955
+#: e2fsck/problem.c:958
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "розширений атрибут у @i %i має некоректний відступ значення (%N)\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:960
+#: e2fsck/problem.c:963
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "розширений атрибут у @i %i має некоректний блок значення (%N), має бути 0\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:965
+#: e2fsck/problem.c:968
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "розширений атрибут у @i %i має некоректний розмір значення (%N)\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:970
+#: e2fsck/problem.c:973
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "розширений атрибут у @i %i має некоректний хеш (%N)\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:975
+#: e2fsck/problem.c:978
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "@i %i є %It, але, здається, він насправді є каталогом.\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:981
+#: e2fsck/problem.c:984
#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "Помилка під час читання розширеної ієрархії у inode %i: %m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:989
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1813,7 +1821,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:992
+#: e2fsck/problem.c:995
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1823,7 +1831,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:997
+#: e2fsck/problem.c:1000
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1832,31 +1840,31 @@ msgstr ""
"\t(логічний блок %c, фізичний блок %b, некоректна довжина %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:1003
+#: e2fsck/problem.c:1006
#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "для @i %i встановлено прапорець EXTENTS_FL на файловій системі без підтримки розширень.\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:1009
+#: e2fsck/problem.c:1012
#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "@i %i записано у форматі розширення, але у суперблоці немає можливості EXTENTS\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:1015
+#: e2fsck/problem.c:1018
#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "@i %i не має EXTENT_FL, але його записано у форматі розширення\n"
-#: e2fsck/problem.c:1021
+#: e2fsck/problem.c:1024
#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "Для швидкого символічного посилання %i встановлено EXTENT_FL. "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1026
+#: e2fsck/problem.c:1029
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1865,39 +1873,39 @@ msgstr ""
"\t(некоректний логічний блок %c, фізичний блок %b, довжина %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:1030
+#: e2fsck/problem.c:1033
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "@i %i містить некоректний вузол розширення (blk %b, lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:1036
+#: e2fsck/problem.c:1039
#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "Помилка під час перетворення бітової карти блоків підкластера: %m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:1041
+#: e2fsck/problem.c:1044
msgid "@q @i is not a regular file. "
msgstr "@i квоти не є звичайним файлом. "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1046
+#: e2fsck/problem.c:1049
msgid "@q @i is not in use, but contains data. "
msgstr "@i квоти не використовується, але містить дані. "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1051
+#: e2fsck/problem.c:1054
msgid "@q @i is visible to the user. "
msgstr "@i квоти є видимим користувачеві. "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1056
+#: e2fsck/problem.c:1059
msgid "The bad @b @i looks @n. "
msgstr "Помилковий @i блоку виглядає некоректним. "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1061
+#: e2fsck/problem.c:1064
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1906,26 +1914,26 @@ msgstr ""
"\t(некоректний логічний блок %c, фізичний блок %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1067
+#: e2fsck/problem.c:1070
#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "здається, @i %i містить мотлох. "
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1073
+#: e2fsck/problem.c:1076
#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "@i %i пройшов перевірку, але контрольна сума не відповідає @i. "
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1079
+#: e2fsck/problem.c:1082
#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "розширений атрибут @i %i пошкоджено (конфлікт розміщення). "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1087
+#: e2fsck/problem.c:1090
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1934,13 +1942,13 @@ msgstr ""
"\t(логічний блок %c, фізичний блок %b, довжина %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1096
+#: e2fsck/problem.c:1099
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "блок розширеного атрибута @i %i %b пройшов перевірку, але контрольна сума не відповідає блокові. "
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1101
+#: e2fsck/problem.c:1104
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1950,7 +1958,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1107
+#: e2fsck/problem.c:1110
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1959,37 +1967,37 @@ msgstr ""
"\t(логічний блок %c, фізичний блок %b, довжина %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1113
+#: e2fsck/problem.c:1116
#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "@i %i містить вбудовані дані, але у суперблоку немає властивості INLINE_DATA\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1119
+#: e2fsck/problem.c:1122
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "для @i %i встановлено прапорець INLINE_DATA_FL на файловій системі без підтримки вбудованих даних.\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1127
+#: e2fsck/problem.c:1130
#, no-c-format
msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "@i %i, блок %b конфліктує із критичними метаданими, пропускаємо перевірки блоків.\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1132
+#: e2fsck/problem.c:1135
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "@i каталогу %i, блок %b, має бути у блоці %c. "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1141
#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "@i каталогу %i позначено як неініціалізований у блоці %c. "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1146
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -1998,14 +2006,14 @@ msgstr ""
"Буде виправлено на кроці 1B.\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1149
+#: e2fsck/problem.c:1152
#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "для @i %i встановлено прапорець INLINE_DATA_FL, але відповідного атрибута не знайдено. "
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1156
+#: e2fsck/problem.c:1159
#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
@@ -2015,42 +2023,42 @@ msgstr ""
"встановлено розширення або прапорець вбудованих даних. "
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1163
+#: e2fsck/problem.c:1166
#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "@i %i має розширений заголовок, але встановлено прапорець вбудованих даних.\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1169
+#: e2fsck/problem.c:1172
#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "здається, @i %i містить вбудовані дані, але для нього встановлено прапорець розширення.\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1175
+#: e2fsck/problem.c:1178
#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "здається, @i %i містить карту блоків, але встановлено прапорці вбудованих даних і розширення.\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1181
+#: e2fsck/problem.c:1184
#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "@i %i містить вбудовані дані і встановлено прапорці розширення, але у i_block міститься мотлох.\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1186
+#: e2fsck/problem.c:1189
msgid "Bad block list says the bad block list @i is bad. "
msgstr "У списку пошкоджених блоків повідомляється, що @i списку пошкоджених блоків пошкоджено. "
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1191
+#: e2fsck/problem.c:1194
msgid "@A @x region allocation structure. "
msgstr "помилка під час спроби розмістити структуру розміщення регіонів розширення. "
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1196
+#: e2fsck/problem.c:1199
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2059,46 +2067,46 @@ msgstr ""
"\t(логічний блок %c, некоректний фізичний блок %b, довжина %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1201
+#: e2fsck/problem.c:1204
msgid "@A memory for encrypted @d list\n"
msgstr "помилка розміщення у пам’яті списку зашифрованих каталогів\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1206
+#: e2fsck/problem.c:1209
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "дерево розширень @i %i могло б бути вужчим (%b; могло бути <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1212
+#: e2fsck/problem.c:1215
#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "@i %i на файловій системі bigalloc не може бути пов’язане із блоком. "
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1218
+#: e2fsck/problem.c:1221
#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "@i %i має пошкоджений заголовок розширень. "
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1224
+#: e2fsck/problem.c:1227
#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "Часові позначки на @i %i після 4 квітня 2310 року ймовірно є часовими позначками періоду часу до 1970 року.\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1229
+#: e2fsck/problem.c:1232
msgid "@i %i has @I @a value @i %N.\n"
msgstr "@i %i містить @I @a значення @i %N.\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1235
+#: e2fsck/problem.c:1238
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "@i %i містить @n @a. EA @i %N не містить прапорця EA_INODE.\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1240
+#: e2fsck/problem.c:1243
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2106,10 +2114,38 @@ msgstr ""
"EA @i %N для батьківського @i %i не містить прапорця EA_INODE.\n"
" "
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1248
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "для @i %i встановлено прапорець приведення до нижнього регістру, але він не є каталогом. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1253
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"для @dу %p встановлено прапорець приведення до нижнього регістру, але\n"
+"можливість приведення не увімкнено. "
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1258
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "@h %i використовує версію хешу (%N), а має використовувати SipHash (6) \n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1263
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "@h %i використовує SipHash, а не має цього робити. "
+
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1248
+#: e2fsck/problem.c:1270
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2120,46 +2156,46 @@ msgstr ""
"Прохід 1B: повторюємо сканування для блоків кратного використання\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1277
#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "блок(и) кратного використання у @i %i:"
-#: e2fsck/problem.c:1271
+#: e2fsck/problem.c:1293
#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "Помилка під час сканування inode (%i): %m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1277
+#: e2fsck/problem.c:1299
#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "помилка під час спроби розміщення @i (@i_dup_map): %m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1283
+#: e2fsck/problem.c:1305
#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "Помилка під час виконання ітерації над блоками у @i %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
+#: e2fsck/problem.c:1310 e2fsck/problem.c:1685
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "Помилка під час спроби коригування кількості посилань для блоку розширеного атрибута %b (@i %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1298
+#: e2fsck/problem.c:1320
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "Прохід 1C: шукаємо у каталогах @i з кратним використанням блоків\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1304
+#: e2fsck/problem.c:1326
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "Прохід 1D: узгоджуємо блоки кратного використання\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1331
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2168,18 +2204,18 @@ msgstr ""
" має %r блоків кратного використання, які є спільними з %N файлами:\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1315
+#: e2fsck/problem.c:1337
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q (@i %i, час внесення змін: %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1320
+#: e2fsck/problem.c:1342
msgid "\t<@f metadata>\n"
msgstr "\t<метадані файлової системи>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1325
+#: e2fsck/problem.c:1347
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2189,7 +2225,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1330
+#: e2fsck/problem.c:1352
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2197,345 +2233,345 @@ msgstr ""
"блоки кратного використання вже повторно призначено або клоновано.\n"
"\n"
-#: e2fsck/problem.c:1344
+#: e2fsck/problem.c:1366
#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "Не вдалося клонувати файл: %m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1350
+#: e2fsck/problem.c:1372
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "Прохід 1A: оптимізуємо ієрархії розширень\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1378
#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "Не вдалося оптимізувати ієрархію розширень %p (%i): %m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1383
msgid "Optimizing @x trees: "
msgstr "Оптимізуємо ієрархії розширень: "
-#: e2fsck/problem.c:1376
+#: e2fsck/problem.c:1398
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "Внутрішня помилка: дерево максимального розширення є надто великим (%b; мало бути=%c).\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1403
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "дерево розширень @i %i (на рівні %b) мало б бути коротшим. "
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1408
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "дерево розширень @i %i (на рівні %b) мало б бути вужчим. "
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1393
+#: e2fsck/problem.c:1415
msgid "Pass 2: Checking @d structure\n"
msgstr "Прохід 2: перевіряємо структуру каталогів\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1399
+#: e2fsck/problem.c:1421
#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "некоректний номер @i для «.» у @i каталогу %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1404
+#: e2fsck/problem.c:1426
msgid "@E has @n @i #: %Di.\n"
msgstr "@E містить некоректний @i з номером %Di.\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1409
+#: e2fsck/problem.c:1431
msgid "@E has @D/unused @i %Di. "
msgstr "@E містить вилучений або невикористаний @i %Di. "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1414
+#: e2fsck/problem.c:1436
msgid "@E @L to '.' "
msgstr "@E @L на «.» "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1419
+#: e2fsck/problem.c:1441
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "@E вказує на @i (%Di), розташований у помилковому блоці.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1424
+#: e2fsck/problem.c:1446
msgid "@E @L to @d %P (%Di).\n"
msgstr "@E @L на каталог %P (%Di).\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1429
+#: e2fsck/problem.c:1451
msgid "@E @L to the @r.\n"
msgstr "@E @L на @r.\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1434
+#: e2fsck/problem.c:1456
msgid "@E has illegal characters in its name.\n"
msgstr "@E містить некоректні символи у назві.\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1440
+#: e2fsck/problem.c:1462
#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "Пропущено «.» у inode каталогу %i.\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1468
#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "Не вистачає «..» у @i каталогу %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1473
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "Першим записом «%Dn» (@i=%Di) у @i каталогу %i (%p) має бути «.»\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1478
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "Другим записом «%Dn» (@i=%Di) у @i каталогу %i має бути «..»\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1483
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "i_faddr для inode дорівнює %IF, має бути нульовим.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1466
+#: e2fsck/problem.c:1488
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "i_file_acl @F %If, а має бути нуль.\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1493
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "i_size_high для %Id, має бути нулем.\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1476
+#: e2fsck/problem.c:1498
msgid "i_frag @F %N, @s zero.\n"
msgstr "i_frag @F %N, а має бути нуль.\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1481
+#: e2fsck/problem.c:1503
msgid "i_fsize @F %N, @s zero.\n"
msgstr "i_fsize @F %N, а має бути нуль.\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1508
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "@i %i (%Q) має некоректний режим (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1513
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "@i каталогу %i, %B, відступ %N: каталог пошкоджено\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1496
+#: e2fsck/problem.c:1518
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "inode каталогу %i, %B, відступ %N: назва файла є надто довгою\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1501
+#: e2fsck/problem.c:1523
msgid "@d @i %i has an unallocated %B. "
msgstr "@i каталогу %i містить нерозподілений %B. "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1507
+#: e2fsck/problem.c:1529
#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "запис каталогу «.» у @i каталогу %i не завершено символом NULL\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1513
+#: e2fsck/problem.c:1535
#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "запис каталогу «..» у @i каталогу %i не завершено символом NULL\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1518
+#: e2fsck/problem.c:1540
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "@i %i (%Q) є некоректним символьним пристроєм.\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1523
+#: e2fsck/problem.c:1545
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "@i %i (%Q) є некоректним блоковим пристроєм.\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1528
+#: e2fsck/problem.c:1550
msgid "@E is duplicate '.' @e.\n"
msgstr "@E є дублікатом запису «.».\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1533
+#: e2fsck/problem.c:1555
msgid "@E is duplicate '..' @e.\n"
msgstr "@E є дублікатом запису «..».\n"
-#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#: e2fsck/problem.c:1561 e2fsck/problem.c:1925
#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "Внутрішня помилка: не вдалося знайти dir_info для %i.\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1544
+#: e2fsck/problem.c:1566
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "@E має rec_len %Dr, має бути %N.\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1550
+#: e2fsck/problem.c:1572
#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "помилка під час спроби розмістити структуру icount: %m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1578
#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "Помилка під час виконання ітерації списком блоків каталогів: %m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1583
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "Помилка під час спроби читання блоку каталогу %b (@i %i): %m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1588
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "Помилка під час спроби записати блок каталогу %b (@i %i): %m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1572
+#: e2fsck/problem.c:1594
#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "помилка під час спроби розмістити новий блок каталогу для @i %i (%s): %m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1578
+#: e2fsck/problem.c:1600
#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "Помилка під час спроби скасування розміщення @i %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1584
+#: e2fsck/problem.c:1606
#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "запис каталогу для «.» у %p (%i) є великим.\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1589
+#: e2fsck/problem.c:1611
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "@i %i (%Q) є некоректним FIFO.\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1594
+#: e2fsck/problem.c:1616
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "@i %i (%Q) є некоректним сокетом.\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1599
+#: e2fsck/problem.c:1621
msgid "Setting filetype for @E to %N.\n"
msgstr "Встановлюємо тип файла для @E у значення %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1604
+#: e2fsck/problem.c:1626
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "@E належить до некоректного типу файлів (було %Dt, має бути %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1609
+#: e2fsck/problem.c:1631
msgid "@E has filetype set.\n"
msgstr "@E має установлений тип файла.\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1614
+#: e2fsck/problem.c:1636
msgid "@E has a @z name.\n"
msgstr "@E має назву нульової довжини.\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1619
+#: e2fsck/problem.c:1641
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "Символічне посилання %Q (@i #%i) є некоректним.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1624
+#: e2fsck/problem.c:1646
msgid "@a @b @F @n (%If).\n"
msgstr "блок розширеного атрибута @F некоректним (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1629
+#: e2fsck/problem.c:1651
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "файлова система містить великі файли, але не має прапорця LARGE_FILE у суперблоці.\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1634
+#: e2fsck/problem.c:1656
msgid "@p @h %d: %B not referenced\n"
msgstr "проблема у inode каталогу HTREE %d: немає посилання\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1661
msgid "@p @h %d: %B referenced twice\n"
msgstr "проблема у inode каталогу HTREE %d: подвійне посилання на %B\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1666
msgid "@p @h %d: %B has bad min hash\n"
msgstr "проблема у @i каталогу HTREE %d: %B має помилкову мінімальну хеш-суму\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1671
msgid "@p @h %d: %B has bad max hash\n"
msgstr "проблема у @i каталогу HTREE %d: %B має помилкову максимальну хеш-суму\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1654
+#: e2fsck/problem.c:1676
msgid "@n @h %d (%q). "
msgstr "некоректний inode каталогу HTREE %d (%q). "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1658
+#: e2fsck/problem.c:1680
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "проблема у @i каталогу HTREE %d (%q): помилковий номер блоку %b.\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1691
#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "проблема у @i каталогу HTREE %d: кореневий вузол є некоректним\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1696
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "проблема у @i каталогу HTREE %d: %B має некоректне обмеження (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1679
+#: e2fsck/problem.c:1701
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "проблема у @i каталогу HTREE %d: %B має некоректну кількість (%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1706
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "проблема у @i каталогу HTREE %d: %B має невпорядковану таблицю хешів\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1689
+#: e2fsck/problem.c:1711
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "проблема у @i каталогу HTREE %d: %B має некоректний рівень вкладеності (%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1694
+#: e2fsck/problem.c:1716
msgid "Duplicate @E found. "
msgstr "Виявлено дублікат запису. "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1699
+#: e2fsck/problem.c:1721
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2547,7 +2583,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1704
+#: e2fsck/problem.c:1726
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2558,155 +2594,160 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1709
+#: e2fsck/problem.c:1731
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "i_blocks_hi @F %N, має бути нуль.\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1714
+#: e2fsck/problem.c:1736
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "Неочікуваний блок у @i каталогу HTREE %d (%q).\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1719
+#: e2fsck/problem.c:1741
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "@E посилається на @i %Di у групі %g, де встановлено _INODE_UNINIT.\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1724
+#: e2fsck/problem.c:1746
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "@E посилається на @i %Di, який знайдено у області невикористаних @i групи %g.\n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1729
+#: e2fsck/problem.c:1751
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "i_file_acl_hi @F %N, має бути нуль.\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1735
+#: e2fsck/problem.c:1757
#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "проблема у @i каталогу HTREE %d: кореневий вузол не пройшов перевірки контрольною сумою\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1741
+#: e2fsck/problem.c:1763
#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "проблема у @i каталогу HTREE %d: внутрішній вузол не пройшов перевірки контрольною сумою\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1746
+#: e2fsck/problem.c:1768
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "@i каталогу %i, %B, відступ %N: каталог не має контрольної суми.\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1751
+#: e2fsck/problem.c:1773
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "@i %i каталогу, %B: каталог пройшов перевірку, але має невідповідну контрольну суму.\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1756
+#: e2fsck/problem.c:1778
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "Розмір @i %i вбудованого каталогу (%N) має бути кратним до 4.\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1762
+#: e2fsck/problem.c:1784
#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "Спроба виправлення розміру @i %i вбудованого каталогу зазнала невдачі.\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1767
+#: e2fsck/problem.c:1789
msgid "Encrypted @E is too short.\n"
msgstr "Зашифрований @E є надто коротким.\n"
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1794
+msgid "Duplicate filename @E found. "
+msgstr "Виявлено дублювання назви файла — @E. "
+
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1774
+#: e2fsck/problem.c:1801
msgid "Pass 3: Checking @d connectivity\n"
msgstr "Прохід 3: перевіряємо можливість з’єднання каталогу\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1779
+#: e2fsck/problem.c:1806
msgid "@r not allocated. "
msgstr "кореневий inode не розміщено. "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1784
+#: e2fsck/problem.c:1811
msgid "No room in @l @d. "
msgstr "Недостатньо місця для каталогу @l. "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1790
+#: e2fsck/problem.c:1817
#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "Нез’єднаний @i каталогу %i (%p)\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1795
+#: e2fsck/problem.c:1822
msgid "/@l not found. "
msgstr "/@l не знайдено. "
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1800
+#: e2fsck/problem.c:1827
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "«..» у %Q (%i) дорівнює %P (%j), має бути %q (%d).\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1806
+#: e2fsck/problem.c:1833
#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "Помилковий каталог /@l або каталогу не існує. Повторне приєднання неможливе.\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1812
+#: e2fsck/problem.c:1839
#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "Не вдалося розгорнути /@l: %m\n"
-#: e2fsck/problem.c:1818
+#: e2fsck/problem.c:1845
#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "Не вдалося повторно приєднати %i: %m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1824
+#: e2fsck/problem.c:1851
#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "Помилка під час спроби знайти /@l: %m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1830
+#: e2fsck/problem.c:1857
#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@b: повідомлення %m під час спроби створити каталогу /@l\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1836
+#: e2fsck/problem.c:1863
#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_@i: повідомлення %m під час спроби створити каталогу /@l\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1842
+#: e2fsck/problem.c:1869
#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block: %m під час створення блоку каталогу\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1875
#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_write_dir_block: %m під час запису блоку каталогу для /@l\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1854
+#: e2fsck/problem.c:1881
#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "Помилка під час спроби коригування кількості @i на @i %i\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1860
+#: e2fsck/problem.c:1887
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
@@ -2717,7 +2758,7 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1866
+#: e2fsck/problem.c:1893
#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
@@ -2727,41 +2768,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1877
+#: e2fsck/problem.c:1904
#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "Помилка під час створення кореневого каталогу (%s): %m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1883
+#: e2fsck/problem.c:1910
#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "Помилка під час створення каталогу /@l (%s): %m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1888
+#: e2fsck/problem.c:1915
msgid "@r is not a @d; aborting.\n"
msgstr "кореневий @i не є каталогом; перериваємо обробку.\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1893
+#: e2fsck/problem.c:1920
msgid "Cannot proceed without a @r.\n"
msgstr "Продовження обробки без кореневого @i неможливе.\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1904
+#: e2fsck/problem.c:1931
#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/@l не є каталогом (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1909
+#: e2fsck/problem.c:1936
msgid "/@l has inline data\n"
msgstr "/@l містить вбудовані дані\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1914
+#: e2fsck/problem.c:1941
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2772,7 +2813,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1919
+#: e2fsck/problem.c:1946
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2783,52 +2824,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1924
+#: e2fsck/problem.c:1951
msgid "/@l is encrypted\n"
msgstr "/@l зашифровано\n"
-#: e2fsck/problem.c:1931
+#: e2fsck/problem.c:1958
msgid "Pass 3A: Optimizing directories\n"
msgstr "Прохід 3A: оптимізуємо каталоги\n"
-#: e2fsck/problem.c:1937
+#: e2fsck/problem.c:1964
#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "Не вдалося створити ітератор dirs_to_hash: %m\n"
-#: e2fsck/problem.c:1942
+#: e2fsck/problem.c:1969
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "Не вдалося оптимізувати каталог %q (%d): %m\n"
-#: e2fsck/problem.c:1947
+#: e2fsck/problem.c:1974
msgid "Optimizing directories: "
msgstr "Оптимізуємо каталоги: "
-#: e2fsck/problem.c:1964
+#: e2fsck/problem.c:1991
msgid "Pass 4: Checking reference counts\n"
msgstr "Прохід 4: перевіряємо кількості посилань\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1970
+#: e2fsck/problem.c:1997
#, no-c-format
msgid "@u @z @i %i. "
msgstr "нез’єднаний @i нульової довжини %i. "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1976
+#: e2fsck/problem.c:2003
#, no-c-format
msgid "@u @i %i\n"
msgstr "нез’єднаний @i %i\n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1981
+#: e2fsck/problem.c:2008
msgid "@i %i ref count is %Il, @s %N. "
msgstr "кількість посилань @i %i дорівнює %Il, а має бути %N. "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1985
+#: e2fsck/problem.c:2012
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2839,146 +2880,151 @@ msgstr ""
"@i_link_info[%i] дорівнює %N, а @i.i_links_count дорівнює %Il. Ці значення мають бути однаковими!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1992
+#: e2fsck/problem.c:2019
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "кількість посилань @i %i дорівнює %N, а має бути %n. "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1997
+#: e2fsck/problem.c:2024
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr "@d містить забагато посилань, але у суперблоці немає можливості DIR_NLINK.\n"
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2029
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "Для @i @dу %i лічильник посилань встановлено у значення переповнення, але він міг би бути точним значенням %N. "
+
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:2004
+#: e2fsck/problem.c:2036
msgid "Pass 5: Checking @g summary information\n"
msgstr "Прохід 5: перевіряємо інформацію резюме щодо груп\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:2009
+#: e2fsck/problem.c:2041
msgid "Padding at end of @i @B is not set. "
msgstr "Не встановлено доповнення наприкінці бітової карти inode. "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:2014
+#: e2fsck/problem.c:2046
msgid "Padding at end of @b @B is not set. "
msgstr "Не встановлено доповнення наприкінці бітової карти блоків. "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:2019
+#: e2fsck/problem.c:2051
msgid "@b @B differences: "
msgstr "відмінності у бітовій карті блоків: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:2041
+#: e2fsck/problem.c:2073
msgid "@i @B differences: "
msgstr "відмінності у бітовій карті @i: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2063
+#: e2fsck/problem.c:2095
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Кількість вільних @i у групі %g є помилковою (%i, нараховано=%j).\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:2068
+#: e2fsck/problem.c:2100
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "Помилкова кількість каталогів для групи %g (%i, пораховано=%j).\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:2073
+#: e2fsck/problem.c:2105
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "Помилкова кількість @i (%i, обчислено=%j).\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:2078
+#: e2fsck/problem.c:2110
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "Помилкова кількість вільних блоків для групи %g (%b, нараховано=%c).\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:2083
+#: e2fsck/problem.c:2115
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "Помилкова кількість вільних блоків (%b, нараховано=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:2088
+#: e2fsck/problem.c:2120
msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "ПОМИЛКА У КОДІ: кінцеві точки бітової картки файлової системи (%N) (%b, %c) не збігаються із обчисленими кінцевими точками бітової карти (%i, %j)\n"
-#: e2fsck/problem.c:2094
+#: e2fsck/problem.c:2126
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "Внутрішня помилка: помилкове завершення бітової карти (%N)\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:2100
+#: e2fsck/problem.c:2132
#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "Помилка під час копіювання замінника бітової карти @i: %m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:2106
+#: e2fsck/problem.c:2138
#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "Помилка під час копіювання бітової карти блоків: %m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2136
+#: e2fsck/problem.c:2168
#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "блоки групи %g використовуються, але групу позначено як BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2142
+#: e2fsck/problem.c:2174
#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "inode групи %g використовуються, але групу позначено як INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2148
+#: e2fsck/problem.c:2180
#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "група %g, бітова карта @i не відповідає контрольній сумі.\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2154
+#: e2fsck/problem.c:2186
#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "група %g, бітова карта блоків не відповідає контрольній сумі.\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2161
+#: e2fsck/problem.c:2193
msgid "Recreate @j"
msgstr "Повторно створюємо журнал"
-#: e2fsck/problem.c:2166
+#: e2fsck/problem.c:2198
msgid "Update quota info for quota type %N"
msgstr "Оновити дані щодо квоти для типу квоти %N"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2172
+#: e2fsck/problem.c:2204
#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "Помилка під час встановлення даних щодо контрольної суми групи блоків: %m\n"
-#: e2fsck/problem.c:2178
+#: e2fsck/problem.c:2210
#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "Помилка під час запису даних щодо файлової системи: %m\n"
-#: e2fsck/problem.c:2184
+#: e2fsck/problem.c:2216
#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "Помилка під час запису для витирання на пристрій зберігання даних: %m\n"
-#: e2fsck/problem.c:2189
+#: e2fsck/problem.c:2221
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "Помилка під час спроби записати дані щодо квот для типу квоти %N: %m\n"
-#: e2fsck/problem.c:2352
+#: e2fsck/problem.c:2384
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "Код непридатної до обробки помилки (0x%x)!\n"
-#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
+#: e2fsck/problem.c:2514 e2fsck/problem.c:2518
msgid "IGNORED"
msgstr "ПРОІГНОРОВАНО"
@@ -2988,8 +3034,8 @@ msgstr "у move_quota_inode"
#: e2fsck/scantest.c:79
#, c-format
-msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n"
-msgstr "Використано пам’яті: %d, витрачено часу: %6.3f/%6.3f/%6.3f\n"
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Використано пам’яті: %lu, витрачено часу: %6.3f/%6.3f/%6.3f\n"
#: e2fsck/scantest.c:98
#, c-format
@@ -3231,8 +3277,8 @@ msgstr[0] "%12u файл\n"
msgstr[1] "%12u файли\n"
msgstr[2] "%12u файлів\n"
-#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
-#: resize/main.c:354
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:3072 misc/util.c:129
+#: resize/main.c:356
#, c-format
msgid "while determining whether %s is mounted."
msgstr "під час спроби визначити, чи змонтовано %s."
@@ -3406,7 +3452,7 @@ msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "Підтримки параметра -t у цій версії e2fsck не передбачено.\n"
#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
+#: misc/tune2fs.c:1721 misc/tune2fs.c:2016 misc/tune2fs.c:2034
#, c-format
msgid "Unable to resolve '%s'"
msgstr "Не вдалося виконати визначення «%s»"
@@ -3478,8 +3524,8 @@ msgid "while reading MMP block"
msgstr "під час читання блоку MMP"
#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
-#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
+#: misc/mke2fs.c:2708 misc/mke2fs.c:2759 misc/tune2fs.c:2798
+#: misc/tune2fs.c:2843 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3490,13 +3536,13 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2748 misc/tune2fs.c:2832
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "під час спроби вилучити %s"
-#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2774 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "під час спроби налаштовування файла даних для скасування дій\n"
@@ -3588,68 +3634,68 @@ msgstr "%s: намагаємося завантажити суперблок, н
msgid "Get a newer version of e2fsck!"
msgstr "Встановіть новішу версію e2fsck!"
-#: e2fsck/unix.c:1749
+#: e2fsck/unix.c:1748
#, c-format
msgid "while checking journal for %s"
msgstr "під час перевірки журналу %s"
-#: e2fsck/unix.c:1752
+#: e2fsck/unix.c:1751
msgid "Cannot proceed with file system check"
msgstr "Продовження перевірки файлової системи неможливе"
-#: e2fsck/unix.c:1763
+#: e2fsck/unix.c:1762
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr "Попередження: не виконуємо відновлення журналу, оскільки перевірка виконується для файлової системи, доступ до якої здійснюється у режимі лише читання.\n"
-#: e2fsck/unix.c:1775
+#: e2fsck/unix.c:1774
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr "не вдалося встановити прапорці суперблоку на %s\n"
-#: e2fsck/unix.c:1781
+#: e2fsck/unix.c:1780
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "Виявлено помилку контрольної суми у %s\n"
-#: e2fsck/unix.c:1785
+#: e2fsck/unix.c:1784
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "У %s пошкоджено журнал\n"
-#: e2fsck/unix.c:1789
+#: e2fsck/unix.c:1788
#, c-format
msgid "while recovering journal of %s"
msgstr "під час відновлення журналу %s"
-#: e2fsck/unix.c:1811
+#: e2fsck/unix.c:1810
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s має непідтримувані можливості:"
-#: e2fsck/unix.c:1826
+#: e2fsck/unix.c:1825
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr "%s містить непідтримувані дані щодо кодування: %0x\n"
-#: e2fsck/unix.c:1876
+#: e2fsck/unix.c:1875
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s: %s під час читання inode пошкоджених блоків\n"
-#: e2fsck/unix.c:1879
+#: e2fsck/unix.c:1878
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "Прогнозуванню не піддається, але ми спробуємо щось зробити...\n"
-#: e2fsck/unix.c:1919
+#: e2fsck/unix.c:1918
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "Створюємо журнал (%d блоків): "
-#: e2fsck/unix.c:1929
+#: e2fsck/unix.c:1928
msgid " Done.\n"
msgstr " Виконано.\n"
-#: e2fsck/unix.c:1931
+#: e2fsck/unix.c:1930
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3657,24 +3703,24 @@ msgstr ""
"\n"
"*** журнал було створено повторно ***\n"
-#: e2fsck/unix.c:1937
+#: e2fsck/unix.c:1936
msgid "aborted"
msgstr "перервано"
-#: e2fsck/unix.c:1939
+#: e2fsck/unix.c:1938
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s: обробку за допомогою e2fsck скасовано.\n"
-#: e2fsck/unix.c:1966
+#: e2fsck/unix.c:1965
msgid "Restarting e2fsck from the beginning...\n"
msgstr "Перезапускаємо e2fsck з початку...\n"
-#: e2fsck/unix.c:1970
+#: e2fsck/unix.c:1969
msgid "while resetting context"
msgstr "під час скидання контексту"
-#: e2fsck/unix.c:2029
+#: e2fsck/unix.c:2028
#, c-format
msgid ""
"\n"
@@ -3683,12 +3729,12 @@ msgstr ""
"\n"
"%s: ***** ВИПРАВЛЕНО ПОМИЛКИ ФАЙЛОВОЇ СИСТЕМИ *****\n"
-#: e2fsck/unix.c:2031
+#: e2fsck/unix.c:2030
#, c-format
msgid "%s: File system was modified.\n"
msgstr "%s: внесено зміни до файлової системи.\n"
-#: e2fsck/unix.c:2035 e2fsck/util.c:71
+#: e2fsck/unix.c:2034 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3697,12 +3743,12 @@ msgstr ""
"\n"
"%s: ***** ДО ФАЙЛОВОЇ СИСТЕМИ БУЛО ВНЕСЕНО ЗМІНИ *****\n"
-#: e2fsck/unix.c:2040
+#: e2fsck/unix.c:2039
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s: ***** ПЕРЕЗАВАНТАЖТЕ СИСТЕМУ *****\n"
-#: e2fsck/unix.c:2050 e2fsck/util.c:77
+#: e2fsck/unix.c:2049 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3713,51 +3759,51 @@ msgstr ""
"%s: ********** ПОПЕРЕДЖЕННЯ: у файловій системі усе ще є помилки **********\n"
"\n"
-#: e2fsck/util.c:196 misc/util.c:93
+#: e2fsck/util.c:195 misc/util.c:93
msgid "yY"
msgstr "yYтТ"
-#: e2fsck/util.c:197 misc/util.c:112
+#: e2fsck/util.c:196 misc/util.c:112
msgid "nN"
msgstr "nNнН"
-#: e2fsck/util.c:198
+#: e2fsck/util.c:197
msgid "aA"
msgstr "aAуУ"
-#: e2fsck/util.c:202
+#: e2fsck/util.c:201
msgid " ('a' enables 'yes' to all) "
msgstr " («a» вмикає «yes/так» для усіх) "
-#: e2fsck/util.c:219
+#: e2fsck/util.c:218
msgid "<y>"
msgstr "<y>"
-#: e2fsck/util.c:221
+#: e2fsck/util.c:220
msgid "<n>"
msgstr "<n>"
-#: e2fsck/util.c:223
+#: e2fsck/util.c:222
msgid " (y/n)"
msgstr " (y/n або т/н)"
-#: e2fsck/util.c:246
+#: e2fsck/util.c:245
msgid "cancelled!\n"
msgstr "скасовано.\n"
-#: e2fsck/util.c:279
+#: e2fsck/util.c:278
msgid "yes to all\n"
msgstr "«так» для усіх\n"
-#: e2fsck/util.c:281
+#: e2fsck/util.c:280
msgid "yes\n"
msgstr "так\n"
-#: e2fsck/util.c:283
+#: e2fsck/util.c:282
msgid "no\n"
msgstr "ні\n"
-#: e2fsck/util.c:293
+#: e2fsck/util.c:292
#, c-format
msgid ""
"%s? no\n"
@@ -3766,7 +3812,7 @@ msgstr ""
"%s? ні\n"
"\n"
-#: e2fsck/util.c:297
+#: e2fsck/util.c:296
#, c-format
msgid ""
"%s? yes\n"
@@ -3775,38 +3821,38 @@ msgstr ""
"%s? так\n"
"\n"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "yes"
msgstr "так"
-#: e2fsck/util.c:301
+#: e2fsck/util.c:300
msgid "no"
msgstr "ні"
-#: e2fsck/util.c:317
+#: e2fsck/util.c:316
#, c-format
msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr "e2fsck_read_bitmaps: некоректні блоки бітової карти для %s"
-#: e2fsck/util.c:322
+#: e2fsck/util.c:321
msgid "reading inode and block bitmaps"
msgstr "читання бітових карт inode та блоків"
-#: e2fsck/util.c:334
+#: e2fsck/util.c:333
#, c-format
msgid "while retrying to read bitmaps for %s"
msgstr "під час повторення спроби читання бітових карт для %s"
-#: e2fsck/util.c:346
+#: e2fsck/util.c:345
msgid "writing block and inode bitmaps"
msgstr "записуємо бітові карти блоків та inode"
-#: e2fsck/util.c:351
+#: e2fsck/util.c:350
#, c-format
msgid "while rewriting block and inode bitmaps for %s"
msgstr "під час перезапису блоку та бітових карт inode для %s"
-#: e2fsck/util.c:363
+#: e2fsck/util.c:362
#, c-format
msgid ""
"\n"
@@ -3819,37 +3865,37 @@ msgstr ""
"%s: НЕОЧІКУВАНА ВТРАТА ЦІЛІСНОСТІ; ЗАПУСТІТЬ fsck ВРУЧНУ.\n"
"\t(тобто без параметрів -a та -p)\n"
-#: e2fsck/util.c:444
+#: e2fsck/util.c:442
#, c-format
-msgid "Memory used: %luk/%luk (%luk/%luk), "
-msgstr "Використано пам’яті: %lu кБ/%lu кБ (%lu кБ/%lu кБ), "
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Використано пам'яті: %lluk з %lluk (%lluk з %lluk), "
#: e2fsck/util.c:448
#, c-format
-msgid "Memory used: %lu, "
-msgstr "Використано пам’яті: %lu, "
+msgid "Memory used: %lluk, "
+msgstr "Використано пам'яті: %lluk, "
-#: e2fsck/util.c:455
+#: e2fsck/util.c:454
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr "час: %5.2f/%5.2f/%5.2f\n"
-#: e2fsck/util.c:460
+#: e2fsck/util.c:459
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr "витрачено часу: %6.3f\n"
-#: e2fsck/util.c:495 e2fsck/util.c:509
+#: e2fsck/util.c:494 e2fsck/util.c:508
#, c-format
msgid "while reading inode %lu in %s"
msgstr "під час читання inode %lu у %s"
-#: e2fsck/util.c:523 e2fsck/util.c:536
+#: e2fsck/util.c:522 e2fsck/util.c:535
#, c-format
msgid "while writing inode %lu in %s"
msgstr "під час запису inode %lu до %s"
-#: e2fsck/util.c:792
+#: e2fsck/util.c:793
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "НЕОЧІКУВАНА ВТРАТА ЦІЛІСНОСТІ: під час виконання fsck до файлової системи було внесено зміни.\n"
@@ -4059,68 +4105,68 @@ msgstr "Прохід завершено, знайдено %u пошкоджен
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
-msgstr "Користування: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v версія] файли...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...\n"
+msgstr "Користування: %s [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v версія] файли...\n"
-#: misc/chattr.c:160
+#: misc/chattr.c:161
#, c-format
msgid "bad project - %s\n"
msgstr "помилковий проект - %s\n"
-#: misc/chattr.c:174
+#: misc/chattr.c:175
#, c-format
msgid "bad version - %s\n"
msgstr "помилкова версія - %s\n"
-#: misc/chattr.c:220 misc/lsattr.c:127
+#: misc/chattr.c:221 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "під час спроби отримання статистичних даних щодо %s"
-#: misc/chattr.c:227
+#: misc/chattr.c:228
#, c-format
msgid "while reading flags on %s"
msgstr "під час читання прапорців на %s"
-#: misc/chattr.c:232 misc/chattr.c:244
+#: misc/chattr.c:233 misc/chattr.c:245
#, c-format
msgid "Flags of %s set as "
msgstr "Прапорці %s встановлено як "
-#: misc/chattr.c:253
+#: misc/chattr.c:254
#, c-format
msgid "while setting flags on %s"
msgstr "під час встановлення прапорців на %s"
-#: misc/chattr.c:261
+#: misc/chattr.c:262
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "Версію %s встановлено у значення %lu\n"
-#: misc/chattr.c:265
+#: misc/chattr.c:266
#, c-format
msgid "while setting version on %s"
msgstr "під час встановлення версії на %s"
-#: misc/chattr.c:272
+#: misc/chattr.c:273
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "Проект %s встановлено як %lu\n"
-#: misc/chattr.c:276
+#: misc/chattr.c:277
#, c-format
msgid "while setting project on %s"
msgstr "під час встановлення проекту на %s"
-#: misc/chattr.c:298
+#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "Не вдалося розмістити змінну шляху у chattr_dir_proc"
-#: misc/chattr.c:338
+#: misc/chattr.c:339
msgid "= is incompatible with - and +\n"
msgstr "= є несумісним з - і +\n"
-#: misc/chattr.c:346
+#: misc/chattr.c:347
msgid "Must use '-v', =, - or +\n"
msgstr "Слід використовувати «-v», =, - або +\n"
@@ -4129,8 +4175,8 @@ msgstr "Слід використовувати «-v», =, - або +\n"
msgid "while reading inode %u"
msgstr "під час читання inode %u"
-#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
-#: misc/create_inode.c:391
+#: misc/create_inode.c:90 misc/create_inode.c:290 misc/create_inode.c:355
+#: misc/create_inode.c:393
msgid "while expanding directory"
msgstr "під час розгортання каталогу"
@@ -4139,143 +4185,147 @@ msgstr "під час розгортання каталогу"
msgid "while linking \"%s\""
msgstr "під час спроби компонування «%s»"
-#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:324
#, c-format
msgid "while writing inode %u"
msgstr "під час запису inode %u"
-#: misc/create_inode.c:152 misc/create_inode.c:176
+#: misc/create_inode.c:154 misc/create_inode.c:178
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "під час створення списку атрибутів «%s»"
-#: misc/create_inode.c:163
+#: misc/create_inode.c:165
#, c-format
msgid "while opening inode %u"
msgstr "під час спроби відкрити inode %u"
-#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
+#: misc/create_inode.c:171 misc/create_inode.c:198 misc/create_inode.c:1045
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "під час розміщення у пам’яті"
-#: misc/create_inode.c:189 misc/create_inode.c:205
+#: misc/create_inode.c:191 misc/create_inode.c:207
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "під час читання атрибута «%s» «%s»"
-#: misc/create_inode.c:214
+#: misc/create_inode.c:216
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "під час запису атрибута «%s» до inode %u"
-#: misc/create_inode.c:224
+#: misc/create_inode.c:226
#, c-format
msgid "while closing inode %u"
msgstr "під час закриття inode %u"
-#: misc/create_inode.c:275
+#: misc/create_inode.c:277
#, c-format
msgid "while allocating inode \"%s\""
msgstr "під час розміщення inode «%s»"
-#: misc/create_inode.c:294
+#: misc/create_inode.c:296
#, c-format
msgid "while creating inode \"%s\""
msgstr "під час спроби створення inode «%s»"
-#: misc/create_inode.c:360
+#: misc/create_inode.c:362
#, c-format
msgid "while creating symlink \"%s\""
msgstr "під час спроби створення символічного посилання «%s»"
-#: misc/create_inode.c:378 misc/create_inode.c:963
+#: misc/create_inode.c:380 misc/create_inode.c:965
#, c-format
msgid "while looking up \"%s\""
msgstr "під час пошуку «%s»"
-#: misc/create_inode.c:398
+#: misc/create_inode.c:400
#, c-format
msgid "while creating directory \"%s\""
msgstr "під час спроби створення каталогу «%s»"
-#: misc/create_inode.c:627
+#: misc/create_inode.c:629
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "під час спроби відкриття «%s» для копіювання"
-#: misc/create_inode.c:805
+#: misc/create_inode.c:807
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "під час спроби змінити робочий каталог на «%s»"
-#: misc/create_inode.c:815
+#: misc/create_inode.c:817
#, c-format
msgid "while scanning directory \"%s\""
msgstr "під час сканування каталогу «%s»"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:827
#, c-format
msgid "while lstat \"%s\""
msgstr "під час спроби виконати lstat для «%s»"
-#: misc/create_inode.c:875
+#: misc/create_inode.c:877
#, c-format
msgid "while creating special file \"%s\""
msgstr "під час спроби створення спеціального файла «%s»"
-#: misc/create_inode.c:884
+#: misc/create_inode.c:886
msgid "malloc failed"
msgstr "невдала спроба виконати malloc"
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while trying to read link \"%s\""
msgstr "під час спроби прочитати посилання «%s»"
-#: misc/create_inode.c:899
+#: misc/create_inode.c:901
msgid "symlink increased in size between lstat() and readlink()"
msgstr "символічне посилання зросло у розмірі між lstat() і readlink()"
-#: misc/create_inode.c:910
+#: misc/create_inode.c:912
#, c-format
msgid "while writing symlink\"%s\""
msgstr "під час спроби записати символічне посилання «%s»"
-#: misc/create_inode.c:921
+#: misc/create_inode.c:923
#, c-format
msgid "while writing file \"%s\""
msgstr "під час спроби записати файл «%s»"
-#: misc/create_inode.c:934
+#: misc/create_inode.c:936
#, c-format
msgid "while making dir \"%s\""
msgstr "під час спроби створення каталогу «%s»"
-#: misc/create_inode.c:952
+#: misc/create_inode.c:954
msgid "while changing directory"
msgstr "під час спроби змінити каталог"
-#: misc/create_inode.c:958
+#: misc/create_inode.c:960
#, c-format
msgid "ignoring entry \"%s\""
msgstr "ігноруємо запис «%s»"
-#: misc/create_inode.c:971
+#: misc/create_inode.c:973
#, c-format
msgid "while setting inode for \"%s\""
msgstr "під час спроби встановлення inode для «%s»"
-#: misc/create_inode.c:978
+#: misc/create_inode.c:980
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "під час спроби встановлення розширених атрибутів (xattr) для «%s»"
-#: misc/create_inode.c:1004
+#: misc/create_inode.c:1006
msgid "while saving inode data"
msgstr "під час спроби зберегти дані inode"
+#: misc/create_inode.c:1056
+msgid "while copying xattrs on root directory"
+msgstr "під час копіювання x-атрибутів до кореневого каталогу"
+
#: misc/dumpe2fs.c:56
#, c-format
msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
@@ -4397,7 +4447,7 @@ msgstr "під час виведення списку помилкових бл
msgid "Bad blocks: %u"
msgstr "Помилкових блоків: %u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:375
msgid "while reading journal inode"
msgstr "під час читання inode журналу"
@@ -4413,7 +4463,7 @@ msgstr "під час читання суперблоку журналу"
msgid "Journal superblock magic number invalid!\n"
msgstr "Контрольна сума суперблоку журналу є некоректною!\n"
-#: misc/dumpe2fs.c:409 misc/tune2fs.c:216
+#: misc/dumpe2fs.c:409 misc/tune2fs.c:218
msgid "while reading journal superblock"
msgstr "під час читання суперблоку журналу"
@@ -4421,30 +4471,30 @@ msgstr "під час читання суперблоку журналу"
msgid "Couldn't find journal superblock magic numbers"
msgstr "Не вдалося знайти контрольні суми суперблоку журналу"
-#: misc/dumpe2fs.c:468
+#: misc/dumpe2fs.c:470
msgid "failed to alloc MMP buffer\n"
msgstr "не вдалося розмістити буфер MMP у пам'яті\n"
-#: misc/dumpe2fs.c:479
+#: misc/dumpe2fs.c:481
#, c-format
msgid "reading MMP block %llu from '%s'\n"
msgstr "читаємо блок MMP %llu з «%s»\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
+#: misc/dumpe2fs.c:511 misc/mke2fs.c:798 misc/tune2fs.c:2056
msgid "Couldn't allocate memory to parse options!\n"
msgstr "Не вдалося отримати область пам’яті для обробки параметрів!\n"
-#: misc/dumpe2fs.c:533
+#: misc/dumpe2fs.c:537
#, c-format
msgid "Invalid superblock parameter: %s\n"
msgstr "Некоректний параметр суперблоку: %s\n"
-#: misc/dumpe2fs.c:548
+#: misc/dumpe2fs.c:552
#, c-format
msgid "Invalid blocksize parameter: %s\n"
msgstr "Некоректний параметр розміру блоку: %s\n"
-#: misc/dumpe2fs.c:559
+#: misc/dumpe2fs.c:563
#, c-format
msgid ""
"\n"
@@ -4467,27 +4517,27 @@ msgstr ""
"\tsuperblock=<номер суперблоку>\n"
"\tblocksize=<розмір блоку>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
+#: misc/dumpe2fs.c:653 misc/mke2fs.c:1892
#, c-format
msgid "\tUsing %s\n"
msgstr "\tВикористовуємо %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
-#: resize/main.c:416
+#: misc/dumpe2fs.c:698 misc/e2image.c:1629 misc/tune2fs.c:2998
+#: resize/main.c:418
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "Не вдалося знайти коректний суперблок файлової системи.\n"
-#: misc/dumpe2fs.c:716
+#: misc/dumpe2fs.c:720
#, c-format
msgid "%s: MMP feature not enabled.\n"
msgstr "%s: можливість MMP не увімкнено.\n"
-#: misc/dumpe2fs.c:747
+#: misc/dumpe2fs.c:751
#, c-format
msgid "while trying to read '%s' bitmaps\n"
msgstr "під час спроби читання бітових карт для %s\n"
-#: misc/dumpe2fs.c:756
+#: misc/dumpe2fs.c:760
msgid ""
"*** Run e2fsck now!\n"
"\n"
@@ -4497,8 +4547,8 @@ msgstr ""
#: misc/e2image.c:107
#, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
-msgstr "Користування: %s [ -r|Q ] [ -f ] [ -b суперблок ] [ -B розмір_блоку][ -fr ] пристрій файл-образу\n"
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Користування: %s [ -r|-Q ] [ -f ] [ -b суперблок ] [ -B розмір_блоку] пристрій файл-образу\n"
#: misc/e2image.c:110
#, c-format
@@ -4507,8 +4557,8 @@ msgstr " %s -I пристрій файл-образу\n"
#: misc/e2image.c:111
#, c-format
-msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
-msgstr " %s -ra [ -cfnp ] [ -o відступ джерела ] [ -O відступ призначення ] ФС_джерела [ ФС_призначення ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o відступ джерела ] [ -O відступ призначення ] ФС_джерела [ ФС_призначення ]\n"
#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
#: misc/e2image.c:1194
@@ -4768,7 +4818,7 @@ msgstr "e2label: помилка під час спроби читання суп
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label: не є файловою системою ext2\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3117
+#: misc/e2label.c:97 misc/tune2fs.c:3203
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "Попередження: надто довга мітка, обрізаємо.\n"
@@ -4783,7 +4833,7 @@ msgstr "e2label: повторне позиціювання на супербло
msgid "e2label: error writing superblock\n"
msgstr "e2label: помилка під час спроби записати суперблок\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1687
+#: misc/e2label.c:117 misc/tune2fs.c:1713
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "Користування: e2label пристрій [нова мітка]\n"
@@ -4986,7 +5036,7 @@ msgstr ""
msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
msgstr "зміщ_у_байт поч_байт кінц_байт блок_фс роз_бл грп час_mkfs/mount sb_uuid мітка\n"
-#: misc/findsuper.c:264
+#: misc/findsuper.c:265
#, c-format
msgid ""
"\n"
@@ -5092,51 +5142,51 @@ msgstr "%s: забагато пристроїв\n"
msgid "%s: too many arguments\n"
msgstr "%s: занадто багато аргументів\n"
-#: misc/fuse2fs.c:3745
+#: misc/fuse2fs.c:3740
msgid "Mounting read-only.\n"
msgstr "Монтуємо лише для читання.\n"
-#: misc/fuse2fs.c:3769
+#: misc/fuse2fs.c:3764
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s: дозволяємо користувачам розміщувати усі блоки. Це небезпечно!\n"
-#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
+#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3790
#, c-format
msgid "%s: %s.\n"
msgstr "%s: %s.\n"
-#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
+#: misc/fuse2fs.c:3777 misc/fuse2fs.c:3792 misc/tune2fs.c:3098
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "Будь ласка, віддайте команду e2fsck -fy %s.\n"
-#: misc/fuse2fs.c:3804
+#: misc/fuse2fs.c:3799
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "Журнал потребує відновлення; слід запустити «e2fsck -E journal_only».\n"
-#: misc/fuse2fs.c:3812
+#: misc/fuse2fs.c:3807
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s: підтримки запису до журналу не передбачено.\n"
-#: misc/fuse2fs.c:3827
+#: misc/fuse2fs.c:3822
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "Попередження: монтуємо неперевірену файлову систему, рекомендуємо запустити e2fsck.\n"
-#: misc/fuse2fs.c:3831
+#: misc/fuse2fs.c:3826
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr "Попередження: досягнуто максимальної кількості монтувань, рекомендуємо запустити e2fsck.\n"
-#: misc/fuse2fs.c:3836
+#: misc/fuse2fs.c:3831
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "Попередження: прийшов час перевірки; рекомендуємо запустити e2fsck.\n"
-#: misc/fuse2fs.c:3840
+#: misc/fuse2fs.c:3835
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "Виявлено осиротілі блоки; рекомендуємо запустити e2fsck.\n"
-#: misc/fuse2fs.c:3844
+#: misc/fuse2fs.c:3839
msgid "Errors detected; running e2fsck is required.\n"
msgstr "Виявлено помилки; слід запустити e2fsck.\n"
@@ -5241,7 +5291,7 @@ msgstr ""
"\n"
"Не вдалося записати %d блоків до таблиці inode, що починається з %llu: %s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
+#: misc/mke2fs.c:456 misc/mke2fs.c:2821 misc/mke2fs.c:3226
msgid "done \n"
msgstr "виконано \n"
@@ -5305,12 +5355,12 @@ msgstr "під час занулення пристрою журналу (бло
msgid "while writing journal superblock"
msgstr "під час спроби записати суперблок журналу"
-#: misc/mke2fs.c:665
+#: misc/mke2fs.c:664
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr "Створюємо файлову систему з %llu %dК блоками та %u inode\n"
-#: misc/mke2fs.c:673
+#: misc/mke2fs.c:672
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
@@ -5319,164 +5369,164 @@ msgstr ""
"попередження: не використано %llu блоків.\n"
"\n"
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:675
#, c-format
-msgid "Filesystem label=%s\n"
-msgstr "Мітка файлової системи=%s\n"
+msgid "Filesystem label=%.*s\n"
+msgstr "Мітка файлової системи=%.*s\n"
-#: misc/mke2fs.c:681
+#: misc/mke2fs.c:679
#, c-format
msgid "OS type: %s\n"
msgstr "Тип ОС: %s\n"
-#: misc/mke2fs.c:683
+#: misc/mke2fs.c:681
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr "Розмір блоку=%u (журнал=%u)\n"
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:684
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr "Розмір кластера=%u (журнал=%u)\n"
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:688
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr "Розмір фрагмента=%u (журнал=%u)\n"
-#: misc/mke2fs.c:692
+#: misc/mke2fs.c:690
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr "Stride=%u блоків, Stripe width=%u блоків\n"
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:692
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr "%u inode, %llu блоків\n"
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:694
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr "%llu блоків (%2.2f%%) зарезервовано для суперкористувача\n"
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:697
#, c-format
msgid "First data block=%u\n"
msgstr "Перший блок даних=%u\n"
-#: misc/mke2fs.c:701
+#: misc/mke2fs.c:699
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr "Власник кореневого каталогу=%u:%u\n"
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:701
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr "Максимальна кількість блоків у файловій системі=%lu\n"
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:705
#, c-format
msgid "%u block groups\n"
msgstr "%u груп блоків\n"
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:707
#, c-format
msgid "%u block group\n"
msgstr "%u-блокова група\n"
-#: misc/mke2fs.c:711
+#: misc/mke2fs.c:709
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr "%u блоків на групу, %u кластерів на групу\n"
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:712
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr "%u блоків на групу, %u фрагментів на групу\n"
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:714
#, c-format
msgid "%u inodes per group\n"
msgstr "%u inode на групу\n"
-#: misc/mke2fs.c:725
+#: misc/mke2fs.c:723
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr "UUID файлової системи: %s\n"
-#: misc/mke2fs.c:726
+#: misc/mke2fs.c:724
msgid "Superblock backups stored on blocks: "
msgstr "Резервні копії суперблоку зберігаються у таких блоках: "
-#: misc/mke2fs.c:822
+#: misc/mke2fs.c:820
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr "%s потребує '-O 64bit'\n"
-#: misc/mke2fs.c:828
+#: misc/mke2fs.c:826
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "«%s» має бути до «resize=%u»\n"
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:839
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "Некоректне значення desc_size: «%s»\n"
-#: misc/mke2fs.c:855
+#: misc/mke2fs.c:853
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr "Некоректний породжувач хешу: %s\n"
-#: misc/mke2fs.c:867
+#: misc/mke2fs.c:865
#, c-format
msgid "Invalid offset: %s\n"
msgstr "Некоректний відступ: %s\n"
-#: misc/mke2fs.c:881 misc/tune2fs.c:2055
+#: misc/mke2fs.c:879 misc/tune2fs.c:2084
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "Некоректний mmp_update_interval: %s\n"
-#: misc/mke2fs.c:898
+#: misc/mke2fs.c:896
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "Некоректна кількість резервних суперблоків: %s\n"
-#: misc/mke2fs.c:920
+#: misc/mke2fs.c:918
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "Некоректне значення параметра stride: %s\n"
-#: misc/mke2fs.c:935
+#: misc/mke2fs.c:933
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "Некоректне значення параметра stripe-width: %s\n"
-#: misc/mke2fs.c:958
+#: misc/mke2fs.c:956
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "Некоректний параметр зміни розмірів: %s\n"
-#: misc/mke2fs.c:965
+#: misc/mke2fs.c:963
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "Максимум зміни розміру має перевищувати розмір файлової системи.\n"
-#: misc/mke2fs.c:989
+#: misc/mke2fs.c:987
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "Підтримки інтерактивної зміни розмірів для файлових систем модифікації 0 не передбачено\n"
-#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
+#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "Некоректне значення root_owner: «%s»\n"
-#: misc/mke2fs.c:1069
+#: misc/mke2fs.c:1067
#, c-format
msgid "Invalid encoding: %s"
msgstr "Некоректне кодування: %s"
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1085
#, c-format
msgid ""
"\n"
@@ -5529,7 +5579,7 @@ msgstr ""
"\tquotatype=<увімкнені типи квот>\n"
"\n"
-#: misc/mke2fs.c:1114
+#: misc/mke2fs.c:1112
#, c-format
msgid ""
"\n"
@@ -5540,17 +5590,17 @@ msgstr ""
"Попередження: stripe-width RAID, %u, не є парним кратним stride, %u.\n"
"\n"
-#: misc/mke2fs.c:1125
+#: misc/mke2fs.c:1123 misc/tune2fs.c:2220
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr "помилка: некоректний прапорець кодування: %s\n"
-#: misc/mke2fs.c:1131
+#: misc/mke2fs.c:1129 misc/tune2fs.c:2229
#, c-format
msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr "помилка: якщо передаються прапорці кодування (encoding-flags), має бути явно вказано і кодування\n"
-#: misc/mke2fs.c:1179
+#: misc/mke2fs.c:1177
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5559,17 +5609,17 @@ msgstr ""
"Синтаксична помилка у файлі налаштувань mke2fs (%s, рядок %d)\n"
"\t%s\n"
-#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
+#: misc/mke2fs.c:1190 misc/tune2fs.c:1072
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "Встановлено некоректний параметр файлової системи: %s\n"
-#: misc/mke2fs.c:1204 misc/tune2fs.c:417
+#: misc/mke2fs.c:1202 misc/tune2fs.c:419
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "Встановлено некоректний параметр монтування: %s\n"
-#: misc/mke2fs.c:1340
+#: misc/mke2fs.c:1338
#, c-format
msgid ""
"\n"
@@ -5578,7 +5628,7 @@ msgstr ""
"\n"
"У вашому файлі mke2fs.conf не міститься типу файлової системи %s.\n"
-#: misc/mke2fs.c:1344
+#: misc/mke2fs.c:1342
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5586,11 +5636,11 @@ msgstr ""
"Ймовірно, вам слід встановити оновлений файл mke2fs.conf.\n"
"\n"
-#: misc/mke2fs.c:1348
+#: misc/mke2fs.c:1346
msgid "Aborting...\n"
msgstr "Перериваємо обробку...\n"
-#: misc/mke2fs.c:1389
+#: misc/mke2fs.c:1387
#, c-format
msgid ""
"\n"
@@ -5601,79 +5651,79 @@ msgstr ""
"Попередження: fs_type для %s у mke2fs.conf не визначено\n"
"\n"
-#: misc/mke2fs.c:1571
+#: misc/mke2fs.c:1574
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "Не вдалося розмістити у пам’ять нову змінну PATH.\n"
-#: misc/mke2fs.c:1608
+#: misc/mke2fs.c:1611
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "Не вдалося успішно ініціалізувати профіль (помилка: %ld).\n"
-#: misc/mke2fs.c:1641
+#: misc/mke2fs.c:1644
#, c-format
msgid "invalid block size - %s"
msgstr "некоректний розмір блоку - %s"
-#: misc/mke2fs.c:1645
+#: misc/mke2fs.c:1648
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "Попередження: розмір блоку %d є непридатним для більшості систем.\n"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1664
#, c-format
msgid "invalid cluster size - %s"
msgstr "некоректний розмір кластера - %s"
-#: misc/mke2fs.c:1674
+#: misc/mke2fs.c:1677
msgid "'-R' is deprecated, use '-E' instead"
msgstr "«-R» є застарілим, вам варто скористатися «-E»"
-#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
+#: misc/mke2fs.c:1691 misc/tune2fs.c:1810
#, c-format
msgid "bad error behavior - %s"
msgstr "помилкова поведінка у відповідь на помилку: %s"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1703
msgid "Illegal number for blocks per group"
msgstr "Некоректна кількість блоків на групу"
-#: misc/mke2fs.c:1705
+#: misc/mke2fs.c:1708
msgid "blocks per group must be multiple of 8"
msgstr "кількість блоків на групу має бути кратною 8"
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1716
msgid "Illegal number for flex_bg size"
msgstr "Некоректне число для розміру flex_bg"
-#: misc/mke2fs.c:1719
+#: misc/mke2fs.c:1722
msgid "flex_bg size must be a power of 2"
msgstr "Розмір flex_bg має бути степенем 2"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1727
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "розмір flex_bg (%lu) має бути не більшим за 2^31"
-#: misc/mke2fs.c:1734
+#: misc/mke2fs.c:1737
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "некоректне відношення inode %s (мін. %d/макс. %d)"
-#: misc/mke2fs.c:1744
+#: misc/mke2fs.c:1747
#, c-format
msgid "invalid inode size - %s"
msgstr "некоректний розмір inode - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1760
msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr "Попередження: параметр -K є застарілим, ним не варто більше користуватися. Вам варто користуватися параметром «-E nodiscard»!\n"
-#: misc/mke2fs.c:1768
+#: misc/mke2fs.c:1771
msgid "in malloc for bad_blocks_filename"
msgstr "у malloc для bad_blocks_filename"
-#: misc/mke2fs.c:1777
+#: misc/mke2fs.c:1780
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
@@ -5682,67 +5732,67 @@ msgstr ""
"Попередження: надто довга мітка, обрізаємо до «%s».\n"
"\n"
-#: misc/mke2fs.c:1786
+#: misc/mke2fs.c:1789
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "некоректний відсоток зарезервованих блоків - %s"
-#: misc/mke2fs.c:1801
+#: misc/mke2fs.c:1804
#, c-format
msgid "bad num inodes - %s"
msgstr "помилкова кількість inode - %s"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1817
msgid "while allocating fs_feature string"
msgstr "під час розміщення у пам’яті рядка fs_feature"
-#: misc/mke2fs.c:1831
+#: misc/mke2fs.c:1834
#, c-format
msgid "bad revision level - %s"
msgstr "помилковий рівень модифікації - %s"
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1839
#, c-format
msgid "while trying to create revision %d"
msgstr "під час створення модифікації %d"
-#: misc/mke2fs.c:1850
+#: misc/mke2fs.c:1853
msgid "The -t option may only be used once"
msgstr "Параметр -t можна використовувати лише один раз"
-#: misc/mke2fs.c:1858
+#: misc/mke2fs.c:1861
msgid "The -T option may only be used once"
msgstr "Параметр -T можна використовувати лише один раз"
-#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
+#: misc/mke2fs.c:1917 misc/mke2fs.c:3310
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "під час спроби відкрити пристрій журналу %s\n"
-#: misc/mke2fs.c:1920
+#: misc/mke2fs.c:1923
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "Розмір блоку пристрою журналу (%d) є меншим за мінімальний розмір блоку %d\n"
-#: misc/mke2fs.c:1926
+#: misc/mke2fs.c:1929
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "Використовуємо розмір блоку пристрою журналу: %d\n"
-#: misc/mke2fs.c:1937
+#: misc/mke2fs.c:1940
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "некоректні блоки «%s» на пристрої «%s»"
-#: misc/mke2fs.c:1967
+#: misc/mke2fs.c:1970
msgid "filesystem"
msgstr "файлова система"
-#: misc/mke2fs.c:1985 resize/main.c:497
+#: misc/mke2fs.c:1988 resize/main.c:499
msgid "while trying to determine filesystem size"
msgstr "під час спроби визначити розмір файлової системи"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:1994
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
@@ -5750,7 +5800,7 @@ msgstr ""
"Не вдалося визначити розмір пристрою; вам слід вказати\n"
"розмір файлової системи\n"
-#: misc/mke2fs.c:1998
+#: misc/mke2fs.c:2001
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5763,48 +5813,48 @@ msgstr ""
"\tкористуванні. Вам варто перезавантажити систему, щоб\n"
"\tдані таблиці розділів було прочитано правильно.\n"
-#: misc/mke2fs.c:2015
+#: misc/mke2fs.c:2018
msgid "Filesystem larger than apparent device size."
msgstr "Файлова система є більшою за видимий розмір пристрою."
-#: misc/mke2fs.c:2035
+#: misc/mke2fs.c:2038
msgid "Failed to parse fs types list\n"
msgstr "Не вдалося обробити список типів файлової системи\n"
-#: misc/mke2fs.c:2085
+#: misc/mke2fs.c:2088
msgid "The HURD does not support the filetype feature.\n"
msgstr "У HURD не передбачено підтримки можливості визначення типу файлів.\n"
-#: misc/mke2fs.c:2090
+#: misc/mke2fs.c:2093
msgid "The HURD does not support the huge_file feature.\n"
msgstr "У HURD не передбачено підтримки можливості huge_file.\n"
-#: misc/mke2fs.c:2095
+#: misc/mke2fs.c:2098
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "У HURD не передбачено підтримки можливості metadata_csum.\n"
-#: misc/mke2fs.c:2100
+#: misc/mke2fs.c:2103
msgid "The HURD does not support the ea_inode feature.\n"
msgstr "У HURD не передбачено підтримки можливості ea_inode.\n"
-#: misc/mke2fs.c:2110
+#: misc/mke2fs.c:2113
msgid "while trying to determine hardware sector size"
msgstr "під час спроби визначити апаратний розмір сектора"
-#: misc/mke2fs.c:2116
+#: misc/mke2fs.c:2119
msgid "while trying to determine physical sector size"
msgstr "під час спроби визначити фізичний розмір сектора"
-#: misc/mke2fs.c:2148
+#: misc/mke2fs.c:2151
msgid "while setting blocksize; too small for device\n"
msgstr "під час встановлення розміру блоку; розмір є надто малим для пристрою\n"
-#: misc/mke2fs.c:2153
+#: misc/mke2fs.c:2156
#, c-format
msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "Попередження: вказаний розмір блоку, %d, є меншим за фізичний розмір сектора пристрою, %d\n"
-#: misc/mke2fs.c:2177
+#: misc/mke2fs.c:2180
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5813,7 +5863,7 @@ msgstr ""
"%s: розміри пристрою (0x%llx блоків) %s є надто великими для\n"
"\tзапису їх у 32-бітовому форматі з розміром блоку %d.\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2194
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
@@ -5822,80 +5872,85 @@ msgstr ""
"%s: розміри пристрою (0x%llx блоків) %s є надто великими для\n"
"\tстворення файлової системи із розміром блоку %d.\n"
-#: misc/mke2fs.c:2213
+#: misc/mke2fs.c:2216
msgid "fs_types for mke2fs.conf resolution: "
msgstr "fs_types для розв’язання mke2fs.conf: "
-#: misc/mke2fs.c:2220
+#: misc/mke2fs.c:2223
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr "У файлових системах модифікації 0 можливості файлової системи не підтримуються\n"
-#: misc/mke2fs.c:2228
+#: misc/mke2fs.c:2231
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "У файлових системах модифікації 0 підтримки розріджених суперблоків не передбачено\n"
-#: misc/mke2fs.c:2238
+#: misc/mke2fs.c:2241
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "У файлових системах модифікації 0 підтримки журналів не передбачено\n"
-#: misc/mke2fs.c:2251
+#: misc/mke2fs.c:2254
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "некоректний відсоток зарезервованих блоків - %lf"
-#: misc/mke2fs.c:2268
+#: misc/mke2fs.c:2271
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "Для 64-бітової файлової системи слід увімкнути розширення. Передайте програмі -O extents, щоб виправити це.\n"
-#: misc/mke2fs.c:2288
+#: misc/mke2fs.c:2291
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "Розмір кластера не може бути меншим за розмір блоку.\n"
-#: misc/mke2fs.c:2294
+#: misc/mke2fs.c:2297
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "для визначення розміру кластера потрібна можливість bigalloc"
-#: misc/mke2fs.c:2314
+#: misc/mke2fs.c:2317
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "попередження: не вдалося отримати параметри пристрою для %s\n"
-#: misc/mke2fs.c:2317
+#: misc/mke2fs.c:2329
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "вирівнювання %s зсунуто на %lu байтів.\n"
-#: misc/mke2fs.c:2319
+#: misc/mke2fs.c:2331
#, c-format
msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "Це може призвести до значної втрати швидкодії. Вам варто виконати повторний розподіл пристрою на розділи.\n"
-#: misc/mke2fs.c:2340
+#: misc/mke2fs.c:2337
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s має можливості DAX, але поточний розмір блоку %u відрізняється від розміру сторінки системи %u, тому файлова система не підтримуватиме DAX.\n"
+
+#: misc/mke2fs.c:2361
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "%d-байтові блоки є надто великими для системи (макс. - %d)"
-#: misc/mke2fs.c:2344
+#: misc/mke2fs.c:2365
#, c-format
msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "Попередження: %d-байтові блоки є надто великими для системи (макс. - %d), примусово продовжуємо роботу\n"
-#: misc/mke2fs.c:2352
+#: misc/mke2fs.c:2373
#, c-format
msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
msgstr "Пропозиція: скористайтеся ядром Linux >= 3.18, щоб поліпшити стабільність роботи з метаданими та можливості з обчислення контрольних сум журналу.\n"
-#: misc/mke2fs.c:2398
+#: misc/mke2fs.c:2419
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr "Невідоме кодування назви файла у профілі: %s"
-#: misc/mke2fs.c:2409
+#: misc/mke2fs.c:2430
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr "Невідомі прапорці кодування у профілі: %s"
-#: misc/mke2fs.c:2434
+#: misc/mke2fs.c:2455
#, c-format
msgid ""
"\n"
@@ -5910,24 +5965,16 @@ msgstr ""
"не збігатися із вашими очікуваннями.\n"
"\n"
-#: misc/mke2fs.c:2449
+#: misc/mke2fs.c:2470
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr "inode із %d байтів є надто малим для квот проектів"
-#: misc/mke2fs.c:2465
-msgid ""
-"The encrypt and casefold features are not compatible.\n"
-"They can not be both enabled simultaneously.\n"
-msgstr ""
-"Можливості encrypt та casefold несумісними.\n"
-"Їх не можна вмикати одночасно.\n"
-
-#: misc/mke2fs.c:2480
+#: misc/mke2fs.c:2492
msgid "Can't support bigalloc feature without extents feature"
msgstr "Підтримка можливості bigalloc неможлива без можливості extents"
-#: misc/mke2fs.c:2487
+#: misc/mke2fs.c:2499
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5935,7 +5982,7 @@ msgstr ""
"Можливості resize_inode і meta_bg є несумісними.\n"
"Їх не можна вмикати одночасно.\n"
-#: misc/mke2fs.c:2495
+#: misc/mke2fs.c:2507
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5947,39 +5994,39 @@ msgstr ""
"Докладніша інформація: https://ext4.wiki.kernel.org/index.php/Bigalloc\n"
"\n"
-#: misc/mke2fs.c:2507
+#: misc/mke2fs.c:2519
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "у нерозріджених файлових системах підтримки інтерактивної зміни розмірів блоків не передбачено"
-#: misc/mke2fs.c:2516
+#: misc/mke2fs.c:2528
msgid "blocks per group count out of range"
msgstr "кількість блоків на групу лежить за межами припустимого діапазону"
-#: misc/mke2fs.c:2538
+#: misc/mke2fs.c:2550
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "Можливість flex_bg не увімкнено, отже, розмір flex_bg не можна вказувати"
-#: misc/mke2fs.c:2550
+#: misc/mke2fs.c:2562
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "некоректний розмір inode %d (мін. %d/макс. %d)"
-#: misc/mke2fs.c:2565
+#: misc/mke2fs.c:2577
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "inode із %d байтів є надто малим для вбудованих даних; вкажіть більший розмір"
-#: misc/mke2fs.c:2580
+#: misc/mke2fs.c:2592
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "занадто багато inode (%llu), збільшити відношення inode?"
-#: misc/mke2fs.c:2587
+#: misc/mke2fs.c:2599
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "занадто багато inode (%llu), вкажіть < 2^32 inode"
-#: misc/mke2fs.c:2601
+#: misc/mke2fs.c:2613
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5990,65 +6037,65 @@ msgstr ""
"\tдля файлової системи з %llu блоків, вкажіть більше значення inode_ratio (-i)\n"
"\tабо зменшіть кількість inode (-N).\n"
-#: misc/mke2fs.c:2788
+#: misc/mke2fs.c:2800
msgid "Discarding device blocks: "
msgstr "Відкидаємо блоки пристрою: "
-#: misc/mke2fs.c:2804
+#: misc/mke2fs.c:2816
msgid "failed - "
msgstr "помилка - "
-#: misc/mke2fs.c:2863
+#: misc/mke2fs.c:2875
msgid "while initializing quota context"
msgstr "під час спроби ініціалізації контексту квоти"
-#: misc/mke2fs.c:2870
+#: misc/mke2fs.c:2882
msgid "while writing quota inodes"
msgstr "під час спроби запису inode-ів квоти"
-#: misc/mke2fs.c:2895
+#: misc/mke2fs.c:2907
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "помилкова поведінка у відповідь на помилки у профілі — %s"
-#: misc/mke2fs.c:2971
+#: misc/mke2fs.c:2983
msgid "in malloc for android_sparse_params"
msgstr "у malloc для android_sparse_params"
-#: misc/mke2fs.c:2985
+#: misc/mke2fs.c:2997
msgid "while setting up superblock"
msgstr "під час налаштовування суперблоку"
-#: misc/mke2fs.c:3001
+#: misc/mke2fs.c:3013
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
msgstr "Розширення не увімкнено. Для ієрархії розширень файлів можна обчислювати контрольні суми, а для карт блоків — ні. Вимикання розширень зменшує покриття контрольних сум метаданих. Передайте параметр -O extents, щоб виправити.\n"
-#: misc/mke2fs.c:3008
+#: misc/mke2fs.c:3020
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr "Не увімкнено підтримку 64-бітових файлових систем. Збільшення розміру полів, які надаються цією можливістю, уможливлює повноцінне обчислення контрольних сум. Передайте параметр -O 64bit, щоб виправити цю помилку.\n"
-#: misc/mke2fs.c:3016
+#: misc/mke2fs.c:3028
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "Можливість metadata_csum_seed потребує можливості metadata_csum.\n"
-#: misc/mke2fs.c:3040
+#: misc/mke2fs.c:3052
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "Успішно відкинуто, буде повернуто 0s - пропускаємо витирання таблиці inode\n"
-#: misc/mke2fs.c:3139
+#: misc/mke2fs.c:3151
#, c-format
msgid "unknown os - %s"
msgstr "невідома ОС - %s"
-#: misc/mke2fs.c:3202
+#: misc/mke2fs.c:3214
msgid "Allocating group tables: "
msgstr "Розміщуємо таблиці груп: "
-#: misc/mke2fs.c:3210
+#: misc/mke2fs.c:3222
msgid "while trying to allocate filesystem tables"
msgstr "під час спроби розмістити таблиці файлової системи"
-#: misc/mke2fs.c:3219
+#: misc/mke2fs.c:3231
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6056,30 +6103,30 @@ msgstr ""
"\n"
"\tпід час перетворення бітової карти підкластера"
-#: misc/mke2fs.c:3225
+#: misc/mke2fs.c:3237
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s може бути пошкоджено серйозніше перезаписом суперблоку\n"
-#: misc/mke2fs.c:3266
+#: misc/mke2fs.c:3278
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "під час занулення блоку %llu наприкінці файлової системи"
-#: misc/mke2fs.c:3279
+#: misc/mke2fs.c:3291
msgid "while reserving blocks for online resize"
msgstr "під час резервування блоків для інтерактивної зміни розміру"
-#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
+#: misc/mke2fs.c:3303 misc/tune2fs.c:1516
msgid "journal"
msgstr "журнал"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3315
#, c-format
msgid "Adding journal to device %s: "
msgstr "Додавання журналу на пристрої %s: "
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3322
#, c-format
msgid ""
"\n"
@@ -6088,21 +6135,21 @@ msgstr ""
"\n"
"\tпід час спроби додавання журналу на пристрою %s"
-#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
+#: misc/mke2fs.c:3327 misc/mke2fs.c:3356 misc/mke2fs.c:3394
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1545 misc/tune2fs.c:1564
msgid "done\n"
msgstr "виконано\n"
-#: misc/mke2fs.c:3321
+#: misc/mke2fs.c:3333
msgid "Skipping journal creation in super-only mode\n"
msgstr "Пропускаємо створення журналу у лише-супер режимі\n"
-#: misc/mke2fs.c:3331
+#: misc/mke2fs.c:3343
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "Створюємо журнал (%u блоків): "
-#: misc/mke2fs.c:3340
+#: misc/mke2fs.c:3352
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6110,7 +6157,7 @@ msgstr ""
"\n"
"\tпід час спроби створення журналу"
-#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
+#: misc/mke2fs.c:3364 misc/tune2fs.c:1137
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6118,28 +6165,28 @@ msgstr ""
"\n"
"Помилка під час вмикання можливості запобігання повторним монтуванням."
-#: misc/mke2fs.c:3357
+#: misc/mke2fs.c:3369
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "Увімкнено захист від повторного монтування з інтервалом оновлення у %d секунд.\n"
-#: misc/mke2fs.c:3373
+#: misc/mke2fs.c:3385
msgid "Copying files into the device: "
msgstr "Копіювання файлів на пристрій: "
-#: misc/mke2fs.c:3379
+#: misc/mke2fs.c:3391
msgid "while populating file system"
msgstr "під час заповнення файлової системи"
-#: misc/mke2fs.c:3386
+#: misc/mke2fs.c:3398
msgid "Writing superblocks and filesystem accounting information: "
msgstr "Записуємо дані щодо обліку суперблоків та файлової системи: "
-#: misc/mke2fs.c:3393
+#: misc/mke2fs.c:3405
msgid "while writing out and closing file system"
msgstr "під час записування і закриття файлової системи"
-#: misc/mke2fs.c:3396
+#: misc/mke2fs.c:3408
msgid ""
"done\n"
"\n"
@@ -6215,7 +6262,7 @@ msgstr "Не вдалося отримати дані щодо розміру %s
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr "%s: h=%3d s=%3d c=%4d початок=%8d розмір=%8lu кінець=%8d\n"
-#: misc/tune2fs.c:119
+#: misc/tune2fs.c:120
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
@@ -6223,15 +6270,15 @@ msgstr ""
"\n"
"Ця операція потребує щойно перевіреної файлової системи.\n"
-#: misc/tune2fs.c:121
+#: misc/tune2fs.c:122
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "Будь ласка, запустіть e2fsck -f для файлової системи.\n"
-#: misc/tune2fs.c:123
+#: misc/tune2fs.c:124
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "Будь ласка, запустіть e2fsck -fD для файлової системи.\n"
-#: misc/tune2fs.c:136
+#: misc/tune2fs.c:137
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6252,20 +6299,20 @@ msgstr ""
"\t[-E додатковий_параметр[,...]] [-T час_ост_перевірки] [-U UUID]\n"
"\t[ -I новий_розмір_inode] [-z файл скасування дій] пристрій\n"
-#: misc/tune2fs.c:223
+#: misc/tune2fs.c:225
msgid "Journal superblock not found!\n"
msgstr "Суперблок журналу не виявлено!\n"
-#: misc/tune2fs.c:281
+#: misc/tune2fs.c:283
msgid "while trying to open external journal"
msgstr "під час спроби відкрити зовнішній журнал"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2804
+#: misc/tune2fs.c:289 misc/tune2fs.c:2889
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s не є журнальованим пристроєм.\n"
-#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#: misc/tune2fs.c:298 misc/tune2fs.c:2898
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
@@ -6274,11 +6321,11 @@ msgstr ""
"Суперблок журналу пошкоджено, значення nr_users\n"
"є надто великим (%d).\n"
-#: misc/tune2fs.c:303 misc/tune2fs.c:2820
+#: misc/tune2fs.c:305 misc/tune2fs.c:2905
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "UUID файлової системи не знайдено на журнальованому пристрої.\n"
-#: misc/tune2fs.c:327
+#: misc/tune2fs.c:329
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6286,52 +6333,52 @@ msgstr ""
"Не вдалося виявити журнальований пристрій. Його НЕ вилучено.\n"
"Скористайтеся параметром -f для вилучення журнальованого пристрою.\n"
-#: misc/tune2fs.c:336
+#: misc/tune2fs.c:338
msgid "Journal removed\n"
msgstr "Журнал вилучено\n"
-#: misc/tune2fs.c:380
+#: misc/tune2fs.c:382
msgid "while reading bitmaps"
msgstr "під час читання бітових карт"
-#: misc/tune2fs.c:388
+#: misc/tune2fs.c:390
msgid "while clearing journal inode"
msgstr "під час спорожнення inode журналу"
-#: misc/tune2fs.c:399
+#: misc/tune2fs.c:401
msgid "while writing journal inode"
msgstr "під час запису inode журналу"
-#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
+#: misc/tune2fs.c:437 misc/tune2fs.c:462 misc/tune2fs.c:475
msgid "(and reboot afterwards!)\n"
msgstr "(і перезавантажте комп’ютер після цього!)\n"
-#: misc/tune2fs.c:486
+#: misc/tune2fs.c:490
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "Після запуску e2fsck, будь ласка, запустіть «resize2fs %s %s"
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:493
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "Будь ласка, віддайте команду «resize2fs %s %s"
-#: misc/tune2fs.c:493
+#: misc/tune2fs.c:497
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:495
+#: misc/tune2fs.c:499
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "», щоб увімкнути 64-бітовий режим.\n"
-#: misc/tune2fs.c:497
+#: misc/tune2fs.c:501
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "», щоб вимкнути 64-бітовий режим.\n"
-#: misc/tune2fs.c:1035
+#: misc/tune2fs.c:1039
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6339,17 +6386,17 @@ msgstr ""
"ПОПЕРЕДЖЕННЯ: не вдалося підтвердити підтримку metadata_csum_seed у ядрі.\n"
" Така підтримка потребує Linux >= v4.4.\n"
-#: misc/tune2fs.c:1071
+#: misc/tune2fs.c:1075
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "Підтримки спорожнення можливості файлової системи «%s» не передбачено.\n"
-#: misc/tune2fs.c:1077
+#: misc/tune2fs.c:1081
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "Підтримки встановлення можливості файлової системи «%s» не передбачено.\n"
-#: misc/tune2fs.c:1086
+#: misc/tune2fs.c:1090
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6357,7 +6404,7 @@ msgstr ""
"Можливість has_journal можна знімати, лише якщо файлову систему\n"
"демонтовано або змонтовано лише у режимі читання.\n"
-#: misc/tune2fs.c:1094
+#: misc/tune2fs.c:1098
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
@@ -6365,7 +6412,7 @@ msgstr ""
"Встановлено прапорець needs_recovery. Будь ласка, запустіть e2fsck до\n"
"зняття прапорця has_journal.\n"
-#: misc/tune2fs.c:1112
+#: misc/tune2fs.c:1116
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6373,7 +6420,7 @@ msgstr ""
"Для систем з увімкненою можливістю meta_bg встановлення можливості\n"
"файлової системи sparse_super не передбачено.\n"
-#: misc/tune2fs.c:1125
+#: misc/tune2fs.c:1129
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
@@ -6383,12 +6430,12 @@ msgstr ""
"не можна вмикати, якщо файлову систему змонтовано\n"
"або вона перебуває у режимі лише читання.\n"
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1147
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "Увімкнено захист від повторного монтування з інтервалом оновлення у %d секунд.\n"
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1156
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
@@ -6396,20 +6443,20 @@ msgstr ""
"Можливість захисту від повторного монтування не можна\n"
"вимкнути, якщо файлова система придатна лише для запису.\n"
-#: misc/tune2fs.c:1160
+#: misc/tune2fs.c:1164
msgid "Error while reading bitmaps\n"
msgstr "Помилка під час читання бітових карт\n"
-#: misc/tune2fs.c:1169
+#: misc/tune2fs.c:1173
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "Контрольна сума у блоці MMP є невідповідною. Мало бути: %x, маємо: %x\n"
-#: misc/tune2fs.c:1174
+#: misc/tune2fs.c:1178
msgid "while reading MMP block."
msgstr "під час читання блоку MMP."
-#: misc/tune2fs.c:1206
+#: misc/tune2fs.c:1210
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
@@ -6417,7 +6464,7 @@ msgstr ""
"Зняття прапорця flex_bg може призвести до втрати цілісності\n"
"файлової системи.\n"
-#: misc/tune2fs.c:1217
+#: misc/tune2fs.c:1221
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
@@ -6425,46 +6472,54 @@ msgstr ""
"Можливість huge_file можна знімати, лише якщо файлову систему\n"
"демонтовано або змонтовано лише у режимі читання.\n"
-#: misc/tune2fs.c:1228
+#: misc/tune2fs.c:1232
msgid "Enabling checksums could take some time."
msgstr "Вмикання контрольних сум потребуватиме певного часу."
-#: misc/tune2fs.c:1230
+#: misc/tune2fs.c:1235
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "Не можна вмикати metadata_csum для змонтованої файлової системи!\n"
-#: misc/tune2fs.c:1236
+#: misc/tune2fs.c:1241
msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
msgstr "Розширення не увімкнено. Для ієрархії розширень файлів можна обчислювати контрольні суми, а для карт блоків — ні. Вимикання розширень зменшує покриття контрольних сум метаданих. Повторно запустіть із -O extent, щоб виправити.\n"
-#: misc/tune2fs.c:1243
+#: misc/tune2fs.c:1248
msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
msgstr "Не увімкнено підтримку 64-бітових файлових систем. Збільшення розміру полів, які надаються цією можливістю, уможливлює повноцінне обчислення контрольних сум. Запустіть resize2fs -b, щоб виправити цю помилку.\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1274
msgid "Disabling checksums could take some time."
msgstr "Вимикання контрольних сум потребуватиме певного часу."
-#: misc/tune2fs.c:1271
+#: misc/tune2fs.c:1277
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "Не можна вимикати metadata_csum для змонтованої файлової системи!\n"
-#: misc/tune2fs.c:1334
+#: misc/tune2fs.c:1318
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Не можна вмикати uninit_bg для змонтованої файлової системи!\n"
+
+#: misc/tune2fs.c:1333
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Не можна вимикати uninit_bg для змонтованої файлової системи!\n"
+
+#: misc/tune2fs.c:1352
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "Не можна вмикати 64-бітовий режим, доки файлову систему змонтовано!\n"
-#: misc/tune2fs.c:1344
+#: misc/tune2fs.c:1362
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "Не можна вимикати 64-бітовий режим, доки файлову систему змонтовано!\n"
-#: misc/tune2fs.c:1374
+#: misc/tune2fs.c:1392
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr "Не вдалося увімкнути можливість проекту; розмір inode є надто малим.\n"
-#: misc/tune2fs.c:1395
+#: misc/tune2fs.c:1413
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6472,11 +6527,11 @@ msgstr ""
"\n"
"Попередження: параметр «^quota» перевизначає аргументи «-Q».\n"
-#: misc/tune2fs.c:1405
-msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
-msgstr "Не можна вмикати можливість шифрування для файлових систем, де увімкнено можливість кодування.\n"
+#: misc/tune2fs.c:1430 misc/tune2fs.c:2182
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "Вмикати можливість приведення до нижнього регістру можна, лише якщо файлову систему демонтовано.\n"
-#: misc/tune2fs.c:1419
+#: misc/tune2fs.c:1442
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6484,7 +6539,7 @@ msgstr ""
"Встановлення можливості «metadata_csum_seed» передбачено лише\n"
"для файлових систем із увімкненою можливістю metadata_csum.\n"
-#: misc/tune2fs.c:1437
+#: misc/tune2fs.c:1460
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
@@ -6492,15 +6547,15 @@ msgstr ""
"З часу вмикання metadata_csum змінилося значення UUID. Файлову систему слід демонтувати, \n"
"щоб безпечно перезаписати усі метадані, що відповідають новому UUID.\n"
-#: misc/tune2fs.c:1443
+#: misc/tune2fs.c:1466
msgid "Recalculating checksums could take some time."
msgstr "Повторне обчислення контрольних сум потребуватиме певного часу."
-#: misc/tune2fs.c:1485
+#: misc/tune2fs.c:1509
msgid "The filesystem already has a journal.\n"
msgstr "На файловій системі вже є журнал.\n"
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1529
#, c-format
msgid ""
"\n"
@@ -6509,21 +6564,21 @@ msgstr ""
"\n"
"\tпід час спроби відкрити журнал на %s\n"
-#: misc/tune2fs.c:1509
+#: misc/tune2fs.c:1533
#, c-format
msgid "Creating journal on device %s: "
msgstr "Створюємо журнал на пристрої %s: "
-#: misc/tune2fs.c:1517
+#: misc/tune2fs.c:1541
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "під час додавання файлової системи до журналу на %s"
-#: misc/tune2fs.c:1523
+#: misc/tune2fs.c:1547
msgid "Creating journal inode: "
msgstr "Створюємо inode журналу: "
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1561
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6531,31 +6586,31 @@ msgstr ""
"\n"
"\tпід час спроби створення файла журналу"
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1599
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr "Не вдалося увімкнути квоту проекту; розмір inode є надто малим.\n"
-#: misc/tune2fs.c:1588
+#: misc/tune2fs.c:1612
msgid "while initializing quota context in support library"
msgstr "під час спроби ініціалізації контексту квоти у бібліотеці підтримки"
-#: misc/tune2fs.c:1603
+#: misc/tune2fs.c:1627
#, c-format
msgid "while updating quota limits (%d)"
msgstr "під час оновлення обмежень квоти (%d)"
-#: misc/tune2fs.c:1611
+#: misc/tune2fs.c:1637
#, c-format
msgid "while writing quota file (%d)"
msgstr "під час записування файла квот (%d)"
-#: misc/tune2fs.c:1629
+#: misc/tune2fs.c:1655
#, c-format
msgid "while removing quota file (%d)"
msgstr "під час вилучення файла квот (%d)"
-#: misc/tune2fs.c:1672
+#: misc/tune2fs.c:1698
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6577,65 +6632,65 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1730
+#: misc/tune2fs.c:1756
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "Не вдалося обробити специфікатор дати/часу: %s"
-#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
+#: misc/tune2fs.c:1781 misc/tune2fs.c:1794
#, c-format
msgid "bad mounts count - %s"
msgstr "помилкова кількість монтувань: %s"
-#: misc/tune2fs.c:1811
+#: misc/tune2fs.c:1837
#, c-format
msgid "bad gid/group name - %s"
msgstr "помилковий ідентифікатор або назва групи: %s"
-#: misc/tune2fs.c:1844
+#: misc/tune2fs.c:1870
#, c-format
msgid "bad interval - %s"
msgstr "помилковий інтервал: %s"
-#: misc/tune2fs.c:1873
+#: misc/tune2fs.c:1899
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "помилкова частка зарезервованих блоків: %s"
-#: misc/tune2fs.c:1888
+#: misc/tune2fs.c:1914
msgid "-o may only be specified once"
msgstr "-o можна вказувати лише один раз"
-#: misc/tune2fs.c:1897
+#: misc/tune2fs.c:1923
msgid "-O may only be specified once"
msgstr "-O можна вказувати лише один раз"
-#: misc/tune2fs.c:1914
+#: misc/tune2fs.c:1940
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "помилкова кількість зарезервованих блоків: %s"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1969
#, c-format
msgid "bad uid/user name - %s"
msgstr "помилковий ідентифікатор або ім’я користувача: %s"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1986
#, c-format
msgid "bad inode size - %s"
msgstr "помилковий розмір inode: %s"
-#: misc/tune2fs.c:1967
+#: misc/tune2fs.c:1993
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Розмір inode має бути степенем двійки: %s"
-#: misc/tune2fs.c:2064
+#: misc/tune2fs.c:2093
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "Надто велике значення mmp_update_interval: %lu\n"
-#: misc/tune2fs.c:2069
+#: misc/tune2fs.c:2098
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
@@ -6643,32 +6698,52 @@ msgstr[0] "Встановлення інтервалу оновлення зах
msgstr[1] "Встановлення інтервалу оновлення захисту від повторного монтування у %lu секунди\n"
msgstr[2] "Встановлення інтервалу оновлення захисту від повторного монтування у %lu секунд\n"
-#: misc/tune2fs.c:2078
+#: misc/tune2fs.c:2107
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr "Встановлюємо прапорець помилки файлової системи для примусового виконання fsck.\n"
-#: misc/tune2fs.c:2096
+#: misc/tune2fs.c:2125
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "Некоректне значення stride RAID: %s\n"
-#: misc/tune2fs.c:2111
+#: misc/tune2fs.c:2140
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "Некоректне значення stripe-width RAID: %s\n"
-#: misc/tune2fs.c:2126
+#: misc/tune2fs.c:2155
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "Некоректний алгоритм хешування: «%s»\n"
-#: misc/tune2fs.c:2132
+#: misc/tune2fs.c:2161
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "Встановлюємо типовий алгоритм хешування %s (%d)\n"
-#: misc/tune2fs.c:2151
+#: misc/tune2fs.c:2188
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Неможливо змінити наявне кодування\n"
+
+#: misc/tune2fs.c:2194
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Некоректне кодування: %s\n"
+
+#: misc/tune2fs.c:2200
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Встановлюємо кодування «%s»\n"
+
+#: misc/tune2fs.c:2224
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Встановлюємо encoding_flags у значення «%s»\n"
+
+#: misc/tune2fs.c:2234
msgid ""
"\n"
"Bad options specified.\n"
@@ -6686,6 +6761,8 @@ msgid ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
msgstr ""
"\n"
"Вказано помилкові параметри.\n"
@@ -6703,32 +6780,34 @@ msgstr ""
"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
+"\tencoding=<кодування>\n"
+"\tencoding_flags=<прапорці>\n"
-#: misc/tune2fs.c:2622
+#: misc/tune2fs.c:2707
msgid "Failed to read inode bitmap\n"
msgstr "Не вдалося прочитати бітову карту inode\n"
-#: misc/tune2fs.c:2627
+#: misc/tune2fs.c:2712
msgid "Failed to read block bitmap\n"
msgstr "Не вдалося прочитати бітову карту блоків\n"
-#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2729 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "блоки, які буде пересунуто"
-#: misc/tune2fs.c:2647
+#: misc/tune2fs.c:2732
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "Не вдалося розмістити бітову карту блоків під час збільшення розмірів inode\n"
-#: misc/tune2fs.c:2653
+#: misc/tune2fs.c:2738
msgid "Not enough space to increase inode size \n"
msgstr "Недостатньо простору для збільшення розміру inode\n"
-#: misc/tune2fs.c:2658
+#: misc/tune2fs.c:2743
msgid "Failed to relocate blocks during inode resize \n"
msgstr "Не вдалося пересунути блоки під час зміни розмірів inode \n"
-#: misc/tune2fs.c:2690
+#: misc/tune2fs.c:2775
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6736,7 +6815,7 @@ msgstr ""
"Помилка під час зміни розмірів inode.\n"
"Запустіть e2undo для скасування змін, внесених до файлової системи. \n"
-#: misc/tune2fs.c:2900
+#: misc/tune2fs.c:2985
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6744,7 +6823,7 @@ msgstr ""
"Якщо ви впевнені, що файлова система не використовується жодним вузлом. Віддайте команду:\n"
"«tune2fs -f -E clear_mmp {пристрій}»\n"
-#: misc/tune2fs.c:2907
+#: misc/tune2fs.c:2992
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6753,29 +6832,29 @@ msgstr ""
"Контрольна сума блоку MMP вказує на пошкодженість. Спробуйте виправити це за допомогою команди:\n"
"«e2fsck -f %s»\n"
-#: misc/tune2fs.c:2919
+#: misc/tune2fs.c:3004
msgid "Cannot modify a journal device.\n"
msgstr "Не можна вносити зміни до пристрою журналювання.\n"
-#: misc/tune2fs.c:2932
+#: misc/tune2fs.c:3017
#, c-format
msgid "The inode size is already %lu\n"
msgstr "Розміром inode уже є %lu\n"
-#: misc/tune2fs.c:2939
+#: misc/tune2fs.c:3024
msgid "Shrinking inode size is not supported\n"
msgstr "Підтримки зменшення розмірів inode не передбачено\n"
-#: misc/tune2fs.c:2944
+#: misc/tune2fs.c:3029
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "Некоректний розмір inode %lu (максимальним є %d)\n"
-#: misc/tune2fs.c:2950
+#: misc/tune2fs.c:3035
msgid "Resizing inodes could take some time."
msgstr "Зміна розмірів inode-ів може бути доволі тривалою."
-#: misc/tune2fs.c:2998
+#: misc/tune2fs.c:3084
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6792,57 +6871,57 @@ msgstr ""
"а потім повторно віддати цю команду. Якщо ви цього не зробите, внесені нею зміни\n"
"може бути перезаписано після відновлення журналу.\n"
-#: misc/tune2fs.c:3009
+#: misc/tune2fs.c:3093
#, c-format
msgid "Recovering journal.\n"
msgstr "Відновлюємо журнал.\n"
-#: misc/tune2fs.c:3028
+#: misc/tune2fs.c:3114
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "Встановлюємо значення максимальної кількості монтувань %d\n"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:3120
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "Встановлюємо поточну кількість монтувань у значення %d\n"
-#: misc/tune2fs.c:3039
+#: misc/tune2fs.c:3125
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "Встановлюємо режим поведінки у відповідь на помилку %d\n"
-#: misc/tune2fs.c:3044
+#: misc/tune2fs.c:3130
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "Встановлюємо gid для зарезервованих блоків у значення %lu\n"
-#: misc/tune2fs.c:3049
+#: misc/tune2fs.c:3135
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "інтервал між перевірками є надто великим (%lu)"
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3142
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "Встановлюємо інтервал між перевірками у %lu секунд\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3149
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "Встановлюємо часту зарезервованих блоків %g%% (%llu блоків)\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3155
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "кількість зарезервованих блоків є надто великою (%llu)"
-#: misc/tune2fs.c:3076
+#: misc/tune2fs.c:3162
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "Встановлюємо кількість зарезервованих блоків у %llu\n"
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3167
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6850,7 +6929,7 @@ msgstr ""
"\n"
"Суперблоки файлової системи вже розріджено.\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3170
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6860,7 +6939,7 @@ msgstr ""
"Для систем з увімкненою можливістю meta_bg встановлення\n"
"прапорця розріджених суперблоків не передбачено.\n"
-#: misc/tune2fs.c:3094
+#: misc/tune2fs.c:3180
#, c-format
msgid ""
"\n"
@@ -6869,7 +6948,7 @@ msgstr ""
"\n"
"Встановлено прапорець розрідження суперблоків. %s"
-#: misc/tune2fs.c:3099
+#: misc/tune2fs.c:3185
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6877,49 +6956,49 @@ msgstr ""
"\n"
"Підтримки зняття прапорця розрідження суперблоків не передбачено.\n"
-#: misc/tune2fs.c:3107
+#: misc/tune2fs.c:3193
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "Встановлюємо час останньої перевірки файлової системи у значення %s\n"
-#: misc/tune2fs.c:3113
+#: misc/tune2fs.c:3199
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "Встановлюємо uid для зарезервованих блоків у значення %lu\n"
-#: misc/tune2fs.c:3145
+#: misc/tune2fs.c:3231
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "Помилка у використанні clear_mmp. Слід використовувати з -f\n"
-#: misc/tune2fs.c:3163
+#: misc/tune2fs.c:3249
msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "Змінювати значення цієї можливості обмеження квоти можна, лише якщо файлову систему демонтовано.\n"
-#: misc/tune2fs.c:3181
+#: misc/tune2fs.c:3269
msgid "Setting the UUID on this filesystem could take some time."
msgstr "Встановлення UUID на цій файловій системі може бути доволі тривалим."
-#: misc/tune2fs.c:3196
+#: misc/tune2fs.c:3286
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "Змінювати UUID можна, лише якщо файлову систему демонтовано.\n"
-#: misc/tune2fs.c:3199
+#: misc/tune2fs.c:3289
msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
msgstr "Якщо ви користуєтеся лише ядрами, новішими за версію 4.4, запустіть «tune2fs -O metadata_csum_seed», потім знову віддайте цю команду.\n"
-#: misc/tune2fs.c:3229
+#: misc/tune2fs.c:3320
msgid "Invalid UUID format\n"
msgstr "Некоректний формат UUID\n"
-#: misc/tune2fs.c:3245
+#: misc/tune2fs.c:3336
msgid "Need to update journal superblock.\n"
msgstr "Слід оновити суперблок журналу.\n"
-#: misc/tune2fs.c:3267
+#: misc/tune2fs.c:3358
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "Змінювати розмір inode можна, лише якщо файлову систему демонтовано.\n"
-#: misc/tune2fs.c:3274
+#: misc/tune2fs.c:3365
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
@@ -6927,26 +7006,26 @@ msgstr ""
"Підтримки зміни розмірів inode size для файлових систем з увімкненою можливістю flex_bg\n"
"не передбачено.\n"
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3383
#, c-format
msgid "Setting inode size %lu\n"
msgstr "Встановлюємо розмір inode у %lu\n"
-#: misc/tune2fs.c:3296
+#: misc/tune2fs.c:3387
msgid "Failed to change inode size\n"
msgstr "Не вдалося змінити розмір inode\n"
-#: misc/tune2fs.c:3310
+#: misc/tune2fs.c:3401
#, c-format
msgid "Setting stride size to %d\n"
msgstr "Встановлюємо розмір stride %d\n"
-#: misc/tune2fs.c:3315
+#: misc/tune2fs.c:3406
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "Встановлюємо ширину stripe %d\n"
-#: misc/tune2fs.c:3322
+#: misc/tune2fs.c:3413
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "Встановлюємо для розширених типових параметрів монтування значення «%s»\n"
@@ -7253,17 +7332,17 @@ msgstr ""
"параметром примусового виконання, якщо хочете ризикнути.\n"
"\n"
-#: resize/main.c:366
+#: resize/main.c:368
#, c-format
msgid "while opening %s"
msgstr "під час спроби відкриття %s"
-#: resize/main.c:374
+#: resize/main.c:376
#, c-format
msgid "while getting stat information for %s"
msgstr "під час отримання статистичних даних щодо %s"
-#: resize/main.c:451
+#: resize/main.c:453
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
@@ -7272,30 +7351,34 @@ msgstr ""
"Будь ласка, спочатку віддайте команду «e2fsck -f %s».\n"
"\n"
-#: resize/main.c:470
+#: resize/main.c:472
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr "Оцінка мінімального розміру файлової системи: %llu\n"
-#: resize/main.c:507
+#: resize/main.c:509
#, c-format
msgid "Invalid new size: %s\n"
msgstr "Некоректний новий розмір: %s\n"
-#: resize/main.c:526
+#: resize/main.c:528
msgid "New size too large to be expressed in 32 bits\n"
msgstr "Новий розмір є надто великим для представлення його у форматі 32-бітового числа\n"
-#: resize/main.c:534
+#: resize/main.c:541
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Новий розмір призведе до надто великої кількості дескрипторів груп блоків.\n"
+
+#: resize/main.c:548
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr "Новий розмір є меншим за мінімальний (%llu)\n"
-#: resize/main.c:540
+#: resize/main.c:554
msgid "Invalid stride length"
msgstr "Некоректна довжина stride"
-#: resize/main.c:564
+#: resize/main.c:578
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7306,27 +7389,27 @@ msgstr ""
"Вами надіслано запит щодо нового розміру у %llu блоків.\n"
"\n"
-#: resize/main.c:571
+#: resize/main.c:585
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr "Не можна встановлювати або скасовувати встановлення можливості 64-бітового режиму.\n"
-#: resize/main.c:575
+#: resize/main.c:589
#, c-format
msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "Не можна змінювати значення увімкненості можливості 64bit на файловій системі, розмір якої перевищує 2^32 блоків.\n"
-#: resize/main.c:581
+#: resize/main.c:595
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr "Не можна змінювати параметри можливості 64-бітового режиму, доки файлову систему змонтовано.\n"
-#: resize/main.c:587
+#: resize/main.c:601
#, c-format
msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "Будь ласка, увімкніть можливість розширень (extents) у tune2fs до вмикання можливості 64-бітового режиму (64bit).\n"
-#: resize/main.c:593
+#: resize/main.c:607
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
@@ -7335,37 +7418,37 @@ msgstr ""
"Файлова система вже складається з %llu (%dК) блоків. Потреби у додаткових діях немає.\n"
"\n"
-#: resize/main.c:600
+#: resize/main.c:614
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr "Файлова система вже є 64-бітовою.\n"
-#: resize/main.c:605
+#: resize/main.c:619
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr "Файлова система вже є 32-бітовою.\n"
-#: resize/main.c:613
+#: resize/main.c:627
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr "Перетворюємо файлову систему на 64-бітову.\n"
-#: resize/main.c:615
+#: resize/main.c:629
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr "Перетворюємо файлову систему на 32-бітову.\n"
-#: resize/main.c:617
+#: resize/main.c:631
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr "Змінюємо розмір файлової системи на %s до %llu (%d тисяч) блоків.\n"
-#: resize/main.c:626
+#: resize/main.c:640
#, c-format
msgid "while trying to resize %s"
msgstr "під час спроби змінити розмір %s"
-#: resize/main.c:629
+#: resize/main.c:643
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
@@ -7374,7 +7457,7 @@ msgstr ""
"Будь ласка, віддайте команду «e2fsck -fy %s», щоб виправити\n"
"файлову систему після переривання дії зі зміни розмірів.\n"
-#: resize/main.c:635
+#: resize/main.c:649
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
@@ -7383,7 +7466,7 @@ msgstr ""
"У файловій системі %s тепер %llu (%dК) блоків.\n"
"\n"
-#: resize/main.c:650
+#: resize/main.c:664
#, c-format
msgid "while trying to truncate %s"
msgstr "під час спроби обрізати %s"
@@ -7484,8 +7567,8 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr "Такого не повинно було статися: inode зміни розмірів пошкоджено!\n"
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.45.3"
-msgstr "Бібліотека EXT2FS версії 1.45.3"
+msgid "EXT2FS Library version 1.45.6"
+msgstr "Бібліотека EXT2FS версії 1.45.6"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8199,6 +8282,10 @@ msgstr "Inode пошкоджено"
msgid "Inode containing extended attribute value is corrupted"
msgstr "Inode, який містить значення розширеного атрибута, пошкоджено"
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Дескриптори групи не завантажено"
+
#: lib/support/prof_err.c:11
msgid "Profile version 0.0"
msgstr "Версія профілю 0.0"
@@ -8323,47 +8410,47 @@ msgstr "Некоректне ціле значення"
msgid "Bad magic value in profile_file_data_t"
msgstr "Помилкове значення магічної суми у profile_file_data_t"
-#: lib/support/plausible.c:118
+#: lib/support/plausible.c:114
#, c-format
-msgid "\tlast mounted on %s on %s"
-msgstr "\tвостаннє змонтовано %s, %s"
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tвостаннє змонтовано %.*s, %s"
-#: lib/support/plausible.c:121
+#: lib/support/plausible.c:117
#, c-format
msgid "\tlast mounted on %s"
msgstr "\tвостаннє змонтовано %s"
-#: lib/support/plausible.c:124
+#: lib/support/plausible.c:120
#, c-format
msgid "\tcreated on %s"
msgstr "\tстворено %s"
-#: lib/support/plausible.c:127
+#: lib/support/plausible.c:123
#, c-format
msgid "\tlast modified on %s"
msgstr "\tвостаннє змінено %s"
-#: lib/support/plausible.c:161
+#: lib/support/plausible.c:157
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr "Знайдено таблицю розділів %s у %s\n"
-#: lib/support/plausible.c:191
+#: lib/support/plausible.c:187
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr "Файла %s не існує, а розмір не було вказано.\n"
-#: lib/support/plausible.c:199
+#: lib/support/plausible.c:195
#, c-format
msgid "Creating regular file %s\n"
msgstr "Створюємо звичайний файл %s\n"
-#: lib/support/plausible.c:202
+#: lib/support/plausible.c:198
#, c-format
msgid "Could not open %s: %s\n"
msgstr "Не вдалося відкрити %s: %s\n"
-#: lib/support/plausible.c:205
+#: lib/support/plausible.c:201
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
@@ -8371,26 +8458,36 @@ msgstr ""
"\n"
"Ймовірно, пристрою не існує. Чи правильно ви його вказали?\n"
-#: lib/support/plausible.c:227
+#: lib/support/plausible.c:223
#, c-format
msgid "%s is not a block special device.\n"
msgstr "%s не є блоковим спеціальним пристроєм.\n"
-#: lib/support/plausible.c:249
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr "%s містить файлову систему %s з міткою %s\n"
-#: lib/support/plausible.c:252
+#: lib/support/plausible.c:248
#, c-format
msgid "%s contains a %s file system\n"
msgstr "%s місить файлову систему %s\n"
-#: lib/support/plausible.c:276
+#: lib/support/plausible.c:272
#, c-format
msgid "%s contains `%s' data\n"
msgstr "%s містить дані «%s»\n"
+#~ msgid ""
+#~ "The encrypt and casefold features are not compatible.\n"
+#~ "They can not be both enabled simultaneously.\n"
+#~ msgstr ""
+#~ "Можливості encrypt та casefold несумісними.\n"
+#~ "Їх не можна вмикати одночасно.\n"
+
+#~ msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+#~ msgstr "Не можна вмикати можливість шифрування для файлових систем, де увімкнено можливість кодування.\n"
+
#~ msgid "while opening directory \"%s\""
#~ msgstr "під час відкриття каталогу «%s»"
diff --git a/po/vi.gmo b/po/vi.gmo
index b49c1b78..707785ef 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 92bf4aec..500e6362 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 3c90b929..7278f478 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -3,6 +3,7 @@
# Dark Raven <drdarkraven@gmail.com>, 2009.
# zwpwjwtz <zwpwjwtz@126.com>, 2015.
# Mingye Wang (Arthur2e5) <arthur200126@gmail.com>, 2016.
+# Boyuan Yang <073plan@gmail.com>, 2019.
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -28,7 +29,14 @@
#. it can expand to either the string "indirect block" (possibly preceded
#. by the word "double" or "triple"), or the string "block #" immediately
#. followed by an integer indicating a block sequence number.
-#.
+#.
+#. Please note that the %-expansion for most e2fsck's problem.c should not
+#. use positional indicators such as %1, since although they look like c-style
+#. format strings, they are NOT c-style format strings, and the positional
+#. indicators (which BTW are GNU extensions and so won't work on other Unix
+#. gettext implementations) won't work with e2fsck's print_e2fsck_message()
+#. function found in e2fsck/message.c
+#.
#. %b <blk> block number
#. %B "indirect block" | "block #"<blkcount> string | string+integer
#. %c <blk2> block number
@@ -68,18 +76,18 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs-1.43.1\n"
+"Project-Id-Version: e2fsprogs-1.45.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2018-08-18 21:03-0400\n"
-"PO-Revision-Date: 2016-11-24 23:49-0500\n"
-"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
+"POT-Creation-Date: 2019-07-14 20:56-0400\n"
+"PO-Revision-Date: 2019-12-24 10:56-0500\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.2.4\n"
"X-Poedit-Bookmarks: -1,591,-1,-1,-1,-1,-1,-1,-1,-1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@@ -96,12 +104,12 @@ msgstr "进行坏块inode的健全性检查时"
msgid "while reading the bad blocks inode"
msgstr "读取坏块inode时"
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1550
-#: e2fsck/unix.c:1664 misc/badblocks.c:1251 misc/badblocks.c:1259
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1571
+#: e2fsck/unix.c:1685 misc/badblocks.c:1251 misc/badblocks.c:1259
#: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1404
-#: misc/e2image.c:1588 misc/e2image.c:1609 misc/mke2fs.c:236
-#: misc/tune2fs.c:2837 misc/tune2fs.c:2931 resize/main.c:414
+#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
+#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
#, c-format
msgid "while trying to open %s"
msgstr "尝试打开 %s 时"
@@ -125,9 +133,8 @@ msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
msgstr "警告:在坏块inode中发现非法的块%u。已清除。\n"
#: e2fsck/dirinfo.c:331
-#, fuzzy
msgid "while freeing dir_info tdb file"
-msgstr "读取坏撤销文件时"
+msgstr "释放 dir_info tdb 文件时"
#: e2fsck/ehandler.c:55
#, c-format
@@ -204,12 +211,12 @@ msgstr "不支持对BLKFLSBUF进行 ioctl 调用! 无法刷新缓存。\n"
msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
msgstr "用法:%s [-F] [-I inode缓冲块] 设备\n"
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1075
+#: e2fsck/iscan.c:81 e2fsck/unix.c:1082
#, c-format
msgid "while opening %s for flushing"
msgstr "打开并刷新 %s 时"
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1081 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1088 resize/main.c:383
#, c-format
msgid "while trying to flush %s"
msgstr "尝试刷新 %s 时"
@@ -219,11 +226,11 @@ msgstr "尝试刷新 %s 时"
msgid "while trying to open '%s'"
msgstr "尝试打开 “%s” 时"
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1297
+#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1323
msgid "while opening inode scan"
msgstr "进行inode扫描时"
-#: e2fsck/iscan.c:127 misc/e2image.c:1316
+#: e2fsck/iscan.c:127 misc/e2image.c:1342
msgid "while getting next inode"
msgstr "获取下一个inode时"
@@ -246,7 +253,7 @@ msgstr "%s: 没有发现日志超级块\n"
msgid "%s: journal too short\n"
msgstr "%s: 日志过短\n"
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3786
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
#, c-format
msgid "%s: recovering journal\n"
msgstr "%s:正在修复日志\n"
@@ -480,21 +487,19 @@ msgstr "块 #"
#: e2fsck/message.c:482
msgid "user"
-msgstr ""
+msgstr "用户"
#: e2fsck/message.c:485
-#, fuzzy
msgid "group"
-msgstr "g组"
+msgstr "组"
#: e2fsck/message.c:488
msgid "project"
msgstr ""
#: e2fsck/message.c:491
-#, fuzzy
msgid "unknown quota type"
-msgstr "未知操作系统 - %s"
+msgstr "未知配额类型"
#: e2fsck/pass1b.c:222
msgid "multiply claimed inode map"
@@ -519,86 +524,86 @@ msgstr "内部错误:无法查找 %llu 的EA块记录"
msgid "internal error: couldn't lookup EA inode record for %u"
msgstr "内部错误:无法查找 %u 的EA inode块记录"
-#: e2fsck/pass1.c:356
+#: e2fsck/pass1.c:357
#, c-format
msgid "while hashing entry with e_value_inum = %u"
msgstr ""
-#: e2fsck/pass1.c:774 e2fsck/pass2.c:1005
+#: e2fsck/pass1.c:775 e2fsck/pass2.c:1007
msgid "reading directory block"
msgstr "正在读取目录块"
-#: e2fsck/pass1.c:1223
+#: e2fsck/pass1.c:1224
msgid "in-use inode map"
msgstr "使用中的inode映射"
-#: e2fsck/pass1.c:1234
+#: e2fsck/pass1.c:1235
msgid "directory inode map"
msgstr "目录inode映射"
-#: e2fsck/pass1.c:1244
+#: e2fsck/pass1.c:1245
msgid "regular file inode map"
msgstr "普通文件inode映射"
-#: e2fsck/pass1.c:1253 misc/e2image.c:1272
+#: e2fsck/pass1.c:1254 misc/e2image.c:1282
msgid "in-use block map"
msgstr "使用中的块映射"
-#: e2fsck/pass1.c:1262
+#: e2fsck/pass1.c:1263
msgid "metadata block map"
msgstr "元数据块映射"
-#: e2fsck/pass1.c:1324
+#: e2fsck/pass1.c:1325
msgid "opening inode scan"
msgstr "开始 inode 扫描"
-#: e2fsck/pass1.c:1362
+#: e2fsck/pass1.c:1363
msgid "getting next inode from scan"
msgstr "从扫描进度中获取下一个 inode"
-#: e2fsck/pass1.c:2066
+#: e2fsck/pass1.c:2067
msgid "Pass 1"
msgstr "第 1 步"
-#: e2fsck/pass1.c:2127
+#: e2fsck/pass1.c:2128
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr "读取inode为 %u 的链接块时"
-#: e2fsck/pass1.c:2178
+#: e2fsck/pass1.c:2179
msgid "bad inode map"
msgstr "坏块映射"
-#: e2fsck/pass1.c:2218
+#: e2fsck/pass1.c:2219
msgid "inode in bad block map"
msgstr "更新坏块映射时"
-#: e2fsck/pass1.c:2238
+#: e2fsck/pass1.c:2239
msgid "imagic inode map"
msgstr "inode的imagic映射"
-#: e2fsck/pass1.c:2269
+#: e2fsck/pass1.c:2270
msgid "multiply claimed block map"
msgstr "重叠块映射"
-#: e2fsck/pass1.c:2394
+#: e2fsck/pass1.c:2395
msgid "ext attr block map"
msgstr "扩展属性块映射"
-#: e2fsck/pass1.c:3637
+#: e2fsck/pass1.c:3640
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr "%6lu(%c):应为 %6lu 但实际为 %6lu (块 %lld)\n"
-#: e2fsck/pass1.c:4054
+#: e2fsck/pass1.c:4060
msgid "block bitmap"
msgstr "块位图"
-#: e2fsck/pass1.c:4060
+#: e2fsck/pass1.c:4066
msgid "inode bitmap"
msgstr "inode 位图"
-#: e2fsck/pass1.c:4066
+#: e2fsck/pass1.c:4072
msgid "inode table"
msgstr "inode表"
@@ -606,7 +611,7 @@ msgstr "inode表"
msgid "Pass 2"
msgstr "第 2 步"
-#: e2fsck/pass2.c:1077 e2fsck/pass2.c:1244
+#: e2fsck/pass2.c:1079 e2fsck/pass2.c:1246
msgid "Can not continue."
msgstr "无法继续。"
@@ -642,179 +647,187 @@ msgstr "check_inode_bitmap_checksum:内存分配出错"
msgid "check_block_bitmap_checksum: Memory allocation error"
msgstr "check_block_bitmap_checksum:内存分配出错"
-#: e2fsck/problem.c:51
+#: e2fsck/problem.c:52
msgid "(no prompt)"
msgstr "(没有提示)"
-#: e2fsck/problem.c:52
+#: e2fsck/problem.c:53
msgid "Fix"
msgstr "处理"
-#: e2fsck/problem.c:53
+#: e2fsck/problem.c:54
msgid "Clear"
msgstr "清除"
-#: e2fsck/problem.c:54
+#: e2fsck/problem.c:55
msgid "Relocate"
msgstr "重定位"
-#: e2fsck/problem.c:55
+#: e2fsck/problem.c:56
msgid "Allocate"
msgstr "分配"
-#: e2fsck/problem.c:56
+#: e2fsck/problem.c:57
msgid "Expand"
msgstr "扩充"
-#: e2fsck/problem.c:57
+#: e2fsck/problem.c:58
msgid "Connect to /lost+found"
msgstr "连接到 /lost+found"
-#: e2fsck/problem.c:58
+#: e2fsck/problem.c:59
msgid "Create"
msgstr "创建"
-#: e2fsck/problem.c:59
+#: e2fsck/problem.c:60
msgid "Salvage"
msgstr "修复"
-#: e2fsck/problem.c:60
+#: e2fsck/problem.c:61
msgid "Truncate"
msgstr "截断"
-#: e2fsck/problem.c:61
+#: e2fsck/problem.c:62
msgid "Clear inode"
msgstr "清除inode"
-#: e2fsck/problem.c:62
+#: e2fsck/problem.c:63
msgid "Abort"
msgstr "中断"
-#: e2fsck/problem.c:63
+#: e2fsck/problem.c:64
msgid "Split"
msgstr "分割"
-#: e2fsck/problem.c:64
+#: e2fsck/problem.c:65
msgid "Continue"
msgstr "继续"
-#: e2fsck/problem.c:65
+#: e2fsck/problem.c:66
msgid "Clone multiply-claimed blocks"
msgstr "克隆重叠块"
-#: e2fsck/problem.c:66
+#: e2fsck/problem.c:67
msgid "Delete file"
msgstr "删除文件"
-#: e2fsck/problem.c:67
+#: e2fsck/problem.c:68
msgid "Suppress messages"
msgstr "不显示消息"
-#: e2fsck/problem.c:68
+#: e2fsck/problem.c:69
msgid "Unlink"
msgstr "解除链接"
-#: e2fsck/problem.c:69
+#: e2fsck/problem.c:70
msgid "Clear HTree index"
msgstr "清除HTree索引"
-#: e2fsck/problem.c:70
+#: e2fsck/problem.c:71
msgid "Recreate"
msgstr "重建"
-#: e2fsck/problem.c:79
+#: e2fsck/problem.c:72
+msgid "Optimize"
+msgstr "优化"
+
+#: e2fsck/problem.c:81
msgid "(NONE)"
msgstr "(空)"
-#: e2fsck/problem.c:80
+#: e2fsck/problem.c:82
msgid "FIXED"
msgstr "已处理"
-#: e2fsck/problem.c:81
+#: e2fsck/problem.c:83
msgid "CLEARED"
msgstr "已清除"
-#: e2fsck/problem.c:82
+#: e2fsck/problem.c:84
msgid "RELOCATED"
msgstr "已重定位"
-#: e2fsck/problem.c:83
+#: e2fsck/problem.c:85
msgid "ALLOCATED"
msgstr "已分配"
-#: e2fsck/problem.c:84
+#: e2fsck/problem.c:86
msgid "EXPANDED"
msgstr "已扩充"
-#: e2fsck/problem.c:85
+#: e2fsck/problem.c:87
msgid "RECONNECTED"
msgstr "已重新连接"
-#: e2fsck/problem.c:86
+#: e2fsck/problem.c:88
msgid "CREATED"
msgstr "已创建"
-#: e2fsck/problem.c:87
+#: e2fsck/problem.c:89
msgid "SALVAGED"
msgstr "已修复"
-#: e2fsck/problem.c:88
+#: e2fsck/problem.c:90
msgid "TRUNCATED"
msgstr "截断"
-#: e2fsck/problem.c:89
+#: e2fsck/problem.c:91
msgid "INODE CLEARED"
msgstr "INODE 已清除"
-#: e2fsck/problem.c:90
+#: e2fsck/problem.c:92
msgid "ABORTED"
msgstr "已中断"
-#: e2fsck/problem.c:91
+#: e2fsck/problem.c:93
msgid "SPLIT"
msgstr "分割"
-#: e2fsck/problem.c:92
+#: e2fsck/problem.c:94
msgid "CONTINUING"
msgstr "继续"
-#: e2fsck/problem.c:93
+#: e2fsck/problem.c:95
msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
msgstr "重叠块已克隆"
-#: e2fsck/problem.c:94
+#: e2fsck/problem.c:96
msgid "FILE DELETED"
msgstr "文件已删除"
-#: e2fsck/problem.c:95
+#: e2fsck/problem.c:97
msgid "SUPPRESSED"
msgstr "禁止"
-#: e2fsck/problem.c:96
+#: e2fsck/problem.c:98
msgid "UNLINKED"
msgstr "已解除链接"
-#: e2fsck/problem.c:97
+#: e2fsck/problem.c:99
msgid "HTREE INDEX CLEARED"
msgstr "HTree索引已清除"
-#: e2fsck/problem.c:98
+#: e2fsck/problem.c:100
msgid "WILL RECREATE"
msgstr "将会重建"
+#: e2fsck/problem.c:101
+msgid "WILL OPTIMIZE"
+msgstr "将会优化"
+
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:112
+#: e2fsck/problem.c:115
msgid "@b @B for @g %g is not in @g. (@b %b)\n"
msgstr "@g %g 的@b@B并不在 @g 中。(@b %b)\n"
#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
-#: e2fsck/problem.c:116
+#: e2fsck/problem.c:119
msgid "@i @B for @g %g is not in @g. (@b %b)\n"
msgstr "@g %g 的@i@B 并不在 @g 中。(@b %b)\n"
#. @-expanded: inode table for group %g is not in group. (block %b)\n
#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
-#: e2fsck/problem.c:121
+#: e2fsck/problem.c:124
msgid ""
"@i table for @g %g is not in @g. (@b %b)\n"
"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
@@ -831,7 +844,7 @@ msgstr ""
#. @-expanded: or\n
#. @-expanded: e2fsck -b 32768 <device>\n
#. @-expanded: \n
-#: e2fsck/problem.c:127
+#: e2fsck/problem.c:130
msgid ""
"\n"
"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
@@ -855,7 +868,7 @@ msgstr ""
#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
#. @-expanded: The physical size of the device is %c blocks\n
#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
-#: e2fsck/problem.c:138
+#: e2fsck/problem.c:141
msgid ""
"The @f size (according to the @S) is %b @bs\n"
"The physical size of the @v is %c @bs\n"
@@ -868,7 +881,7 @@ msgstr ""
#. @-expanded: superblock block_size = %b, fragsize = %c.\n
#. @-expanded: This version of e2fsck does not support fragment sizes different\n
#. @-expanded: from the block size.\n
-#: e2fsck/problem.c:145
+#: e2fsck/problem.c:148
msgid ""
"@S @b_size = %b, fragsize = %c.\n"
"This version of e2fsck does not support fragment sizes different\n"
@@ -879,18 +892,18 @@ msgstr ""
"@b大小不同。\n"
#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
-#: e2fsck/problem.c:152
+#: e2fsck/problem.c:155
msgid "@S @bs_per_group = %b, should have been %c\n"
msgstr "每组的@S@b数 = %b,应当为 %c。\n"
#. @-expanded: superblock first_data_block = %b, should have been %c\n
-#: e2fsck/problem.c:157
+#: e2fsck/problem.c:160
msgid "@S first_data_@b = %b, should have been %c\n"
msgstr "@S的第一个数据块 = %b,应当为 %c\n"
#. @-expanded: filesystem did not have a UUID; generating one.\n
#. @-expanded: \n
-#: e2fsck/problem.c:162
+#: e2fsck/problem.c:165
msgid ""
"@f did not have a UUID; generating one.\n"
"\n"
@@ -898,8 +911,8 @@ msgstr ""
"@f没有UUID;正在创建新的UUID。\n"
"\n"
-#: e2fsck/problem.c:167
-#, c-format
+#: e2fsck/problem.c:171
+#, no-c-format
msgid ""
"Note: if several inode or block bitmap blocks or part\n"
"of the inode table require relocation, you may wish to try\n"
@@ -915,48 +928,48 @@ msgstr ""
"\n"
#. @-expanded: Corruption found in superblock. (%s = %N).\n
-#: e2fsck/problem.c:176
+#: e2fsck/problem.c:180
msgid "Corruption found in @S. (%s = %N).\n"
msgstr "在@S中发现错误。(%s = %N)。\n"
#. @-expanded: Error determining size of the physical device: %m\n
-#: e2fsck/problem.c:181
-#, c-format
+#: e2fsck/problem.c:186
+#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
msgstr "决定物理@v的大小出错 %m\n"
#. @-expanded: inode count in superblock is %i, should be %j.\n
-#: e2fsck/problem.c:186
+#: e2fsck/problem.c:191
msgid "@i count in @S is %i, @s %j.\n"
msgstr "@S中的@i个数为 %i,@s %j。\n"
-#: e2fsck/problem.c:190
+#: e2fsck/problem.c:195
msgid "The Hurd does not support the filetype feature.\n"
msgstr "Hurd内核不支持文件类型\n"
#. @-expanded: superblock has an invalid journal (inode %i).\n
-#: e2fsck/problem.c:195
-#, c-format
+#: e2fsck/problem.c:201
+#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
msgstr "@S含有一个@n@j(@i %i)。\n"
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
-#: e2fsck/problem.c:200
+#: e2fsck/problem.c:206
msgid "External @j has multiple @f users (unsupported).\n"
msgstr "外部@j含有多个@f用户(不支持此特性)。\n"
#. @-expanded: Can't find external journal\n
-#: e2fsck/problem.c:205
+#: e2fsck/problem.c:211
msgid "Can't find external @j\n"
msgstr "无法找到外部@j\n"
#. @-expanded: External journal has bad superblock\n
-#: e2fsck/problem.c:210
+#: e2fsck/problem.c:216
msgid "External @j has bad @S\n"
msgstr "外部@j有坏@S\n"
#. @-expanded: External journal does not support this filesystem\n
-#: e2fsck/problem.c:215
+#: e2fsck/problem.c:221
msgid "External @j does not support this @f\n"
msgstr "外部@j不支持此@f\n"
@@ -964,11 +977,10 @@ msgstr "外部@j不支持此@f\n"
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
#. @-expanded: format.\n
#. @-expanded: It is also possible the journal superblock is corrupt.\n
-#: e2fsck/problem.c:220
+#: e2fsck/problem.c:226
msgid ""
"@f @j @S is unknown type %N (unsupported).\n"
-"It is likely that your copy of e2fsck is old and/or doesn't support this @j "
-"format.\n"
+"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
"It is also possible the @j @S is corrupt.\n"
msgstr ""
"@f@j@S为未知类型 %N(不支持此特性)。\n"
@@ -977,81 +989,81 @@ msgstr ""
"\n"
#. @-expanded: journal superblock is corrupt.\n
-#: e2fsck/problem.c:228
+#: e2fsck/problem.c:235
msgid "@j @S is corrupt.\n"
msgstr "@j@S被损坏。\n"
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
-#: e2fsck/problem.c:233
+#: e2fsck/problem.c:240
msgid "@S has_@j flag is clear, but a @j is present.\n"
msgstr "@S不具有has_journal标志,但发现了@j。\n"
#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
-#: e2fsck/problem.c:238
+#: e2fsck/problem.c:245
msgid "@S needs_recovery flag is set, but no @j is present.\n"
msgstr "@S被设置了needs_recovery标志,但找不到相应的@j。\n"
#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
-#: e2fsck/problem.c:243
+#: e2fsck/problem.c:250
msgid "@S needs_recovery flag is clear, but @j has data.\n"
msgstr "@S不具有的恢复标志,然而在@j中找到了恢复数据。\n"
#. @-expanded: Clear journal
-#: e2fsck/problem.c:248
+#: e2fsck/problem.c:255
msgid "Clear @j"
msgstr "清除@j"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
-#: e2fsck/problem.c:253 e2fsck/problem.c:764
+#: e2fsck/problem.c:260 e2fsck/problem.c:796
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
msgstr "@f被设置了特性标志,但特性版本号为0。 "
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
-#: e2fsck/problem.c:258
+#: e2fsck/problem.c:265
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
msgstr "@s@o@i %i(uid=%lu,gid=%lg,mode=%lm,size=%ls)\n"
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:263
+#: e2fsck/problem.c:270
msgid "@I %B (%b) found in @o @i %i.\n"
msgstr "@o@i %i 中发现 @I %B(%b)。\n"
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
-#: e2fsck/problem.c:268
+#: e2fsck/problem.c:275
msgid "Already cleared %B (%b) found in @o @i %i.\n"
msgstr "@o@i %i 中发现已清除的 %B(%b)。\n"
#. @-expanded: illegal orphaned inode %i in superblock.\n
-#: e2fsck/problem.c:273
-#, c-format
+#: e2fsck/problem.c:281
+#, no-c-format
msgid "@I @o @i %i in @S.\n"
msgstr "@S中有@I@o@i %i。\n"
#. @-expanded: illegal inode %i in orphaned inode list.\n
-#: e2fsck/problem.c:278
-#, c-format
+#: e2fsck/problem.c:287
+#, no-c-format
msgid "@I @i %i in @o @i list.\n"
msgstr "@o@i中发现@I@i %i。\n"
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
-#: e2fsck/problem.c:283
+#: e2fsck/problem.c:292
msgid "@j @S has an unknown read-only feature flag set.\n"
msgstr "@j@S被设置了未知的只读属性标签。\n"
#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
-#: e2fsck/problem.c:288
+#: e2fsck/problem.c:297
msgid "@j @S has an unknown incompatible feature flag set.\n"
msgstr "@j@S被设置了未知的不兼容属性标签。\n"
#. @-expanded: journal version not supported by this e2fsck.\n
-#: e2fsck/problem.c:293
+#: e2fsck/problem.c:302
msgid "@j version not supported by this e2fsck.\n"
msgstr "e2fsck不支持此@j版本。\n"
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
-#: e2fsck/problem.c:298
-#, c-format
+#: e2fsck/problem.c:308
+#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
"\n"
@@ -1061,8 +1073,8 @@ msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:303
-#, c-format
+#: e2fsck/problem.c:314
+#, no-c-format
msgid ""
"Error moving @j: %m\n"
"\n"
@@ -1073,7 +1085,7 @@ msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
#. @-expanded: \n
-#: e2fsck/problem.c:308
+#: e2fsck/problem.c:319
msgid ""
"Found @n V2 @j @S fields (from V1 @j).\n"
"Clearing fields beyond the V1 @j @S...\n"
@@ -1084,18 +1096,18 @@ msgstr ""
"\n"
#. @-expanded: Run journal anyway
-#: e2fsck/problem.c:314
+#: e2fsck/problem.c:325
msgid "Run @j anyway"
msgstr "强制@j"
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
-#: e2fsck/problem.c:319
+#: e2fsck/problem.c:330
msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
msgstr "备份@S中未设置恢复标志,继续处理日志。\n"
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
-#: e2fsck/problem.c:324
+#: e2fsck/problem.c:335
msgid ""
"Backing up @j @i @b information.\n"
"\n"
@@ -1105,7 +1117,7 @@ msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
-#: e2fsck/problem.c:330
+#: e2fsck/problem.c:341
msgid ""
"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
"is %N; @s zero. "
@@ -1114,18 +1126,18 @@ msgstr ""
"(但实际为%N)。 "
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
-#: e2fsck/problem.c:336
+#: e2fsck/problem.c:347
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
msgstr "不支持更改@i大小,但所给的变更值非零。 "
#. @-expanded: Resize inode not valid.
-#: e2fsck/problem.c:341
+#: e2fsck/problem.c:352
msgid "Resize @i not valid. "
msgstr "改变@i大小的值无效。"
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:346
+#: e2fsck/problem.c:357
msgid ""
"@S last mount time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1135,7 +1147,7 @@ msgstr ""
#. @-expanded: superblock last write time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
-#: e2fsck/problem.c:351
+#: e2fsck/problem.c:362
msgid ""
"@S last write time (%t,\n"
"\tnow = %T) is in the future.\n"
@@ -1144,14 +1156,14 @@ msgstr ""
"\t当前:%T)在未来。 \n"
#. @-expanded: superblock hint for external superblock should be %X.
-#: e2fsck/problem.c:356
-#, c-format
+#: e2fsck/problem.c:368
+#, no-c-format
msgid "@S hint for external superblock @s %X. "
msgstr "外部超级块的@S标记@s %X。 "
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
-#: e2fsck/problem.c:361
+#: e2fsck/problem.c:373
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
@@ -1160,43 +1172,42 @@ msgstr ""
"\n"
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
-#: e2fsck/problem.c:366
+#: e2fsck/problem.c:378
msgid "@g descriptor %g checksum is %04x, should be %04y. "
msgstr "@g描述符 %g 的校验值为%04x,应当为 %04y。 "
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
-#: e2fsck/problem.c:371
-#, c-format
+#: e2fsck/problem.c:384
+#, no-c-format
msgid "@g descriptor %g marked uninitialized without feature set.\n"
msgstr "@g描述符 %g被标记为未初始化,并且没有设定特性。\n"
#. @-expanded: group descriptor %g has invalid unused inodes count %b.
-#: e2fsck/problem.c:376
+#: e2fsck/problem.c:389
msgid "@g descriptor %g has invalid unused inodes count %b. "
msgstr "@g描述符 %g 中的未使用inode数 %b 为无效值。 "
#. @-expanded: Last group block bitmap uninitialized.
-#: e2fsck/problem.c:381
+#: e2fsck/problem.c:394
msgid "Last @g @b @B uninitialized. "
msgstr "最后一个@g的@b@B未初始化。 "
-#: e2fsck/problem.c:386
-#, c-format
+#: e2fsck/problem.c:400
+#, no-c-format
msgid "Journal transaction %i was corrupt, replay was aborted.\n"
msgstr "日志事务 %i 损坏,撤销过程已终止。\n"
-#: e2fsck/problem.c:391
+#: e2fsck/problem.c:405
msgid "The test_fs flag is set (and ext4 is available). "
msgstr "设置了 test_fs 标志(并且ext4可用)。 "
#. @-expanded: superblock last mount time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:396
+#: e2fsck/problem.c:410
msgid ""
"@S last mount time is in the future.\n"
-"\t(by less than a day, probably due to the hardware clock being incorrectly "
-"set)\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
msgstr ""
"@S上一次挂载时间在未来。\n"
"\t(相差不到一天,可能是硬件时钟设定错误所致)\n"
@@ -1204,240 +1215,235 @@ msgstr ""
#. @-expanded: superblock last write time is in the future.\n
#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
#. @-expanded: set)\n
-#: e2fsck/problem.c:402
+#: e2fsck/problem.c:416
msgid ""
"@S last write time is in the future.\n"
-"\t(by less than a day, probably due to the hardware clock being incorrectly "
-"set)\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
msgstr ""
"@S上一次写入时间在未来。\n"
"\t(相差不到一天,可能是硬件时钟设定错误所致)\n"
#. @-expanded: One or more block group descriptor checksums are invalid.
-#: e2fsck/problem.c:408
+#: e2fsck/problem.c:422
msgid "One or more @b @g descriptor checksums are invalid. "
msgstr "一个或多个@b@g描述符的校验值无效。 "
#. @-expanded: Setting free inodes count to %j (was %i)\n
-#: e2fsck/problem.c:413
+#: e2fsck/problem.c:427
msgid "Setting free @is count to %j (was %i)\n"
msgstr "设置未使用的@i数为 %j(曾为%i)\n"
#. @-expanded: Setting free blocks count to %c (was %b)\n
-#: e2fsck/problem.c:418
+#: e2fsck/problem.c:432
msgid "Setting free @bs count to %c (was %b)\n"
msgstr "设置未使用的@b数为 %c(曾为%b)\n"
#. @-expanded: Hiding %U quota inode %i (%Q).\n
-#: e2fsck/problem.c:423
+#: e2fsck/problem.c:437
#, fuzzy
+#| msgid "Making @q @i %i (%Q) hidden.\n"
msgid "Hiding %U @q @i %i (%Q).\n"
msgstr ""
"将@q@i %i(%Q)标记为隐藏的。\n"
"\n"
#. @-expanded: superblock has invalid MMP block.
-#: e2fsck/problem.c:428
+#: e2fsck/problem.c:442
msgid "@S has invalid MMP block. "
msgstr "@S含有无效的MMP块。 "
#. @-expanded: superblock has invalid MMP magic.
-#: e2fsck/problem.c:433
+#: e2fsck/problem.c:447
msgid "@S has invalid MMP magic. "
msgstr "@S含有无效的MMP幻数。 "
-#: e2fsck/problem.c:438
-#, c-format
+#: e2fsck/problem.c:453
+#, no-c-format
msgid "ext2fs_open2: %m\n"
msgstr "ext2fs_open2: %m\n"
-#: e2fsck/problem.c:443
-#, c-format
+#: e2fsck/problem.c:459
+#, no-c-format
msgid "ext2fs_check_desc: %m\n"
msgstr "ext2fs_check_desc: %m\n"
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
-#: e2fsck/problem.c:449
-msgid ""
-"@S metadata_csum supersedes uninit_bg; both feature bits cannot be set "
-"simultaneously."
-msgstr ""
-"@S 的 metadata_csum 特性将取代 uninit_bg 特性,因此不能同时将二者开启。"
+#: e2fsck/problem.c:465
+msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
+msgstr "@S 的 metadata_csum 特性将取代 uninit_bg 特性,因此不能同时将二者开启。"
#. @-expanded: superblock MMP block checksum does not match.
-#: e2fsck/problem.c:455
-#, fuzzy
+#: e2fsck/problem.c:471
msgid "@S MMP @b checksum does not match. "
-msgstr "@S MMP块校验值与MMP块自身不符。"
+msgstr "@S MMP @b 校验值不符。"
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
-#: e2fsck/problem.c:460
+#: e2fsck/problem.c:476
#, fuzzy
+#| msgid "@S 64bit filesystems needs extents to access the whole disk. "
msgid "@S 64bit @f needs extents to access the whole disk. "
msgstr "64位文件系统的@S需要extent来访问整个磁盘。 "
-#: e2fsck/problem.c:465
+#: e2fsck/problem.c:481
msgid "First_meta_bg is too big. (%N, max value %g). "
msgstr "第一个meta_bg太大。(%N,最大值 %g)"
#. @-expanded: External journal superblock checksum does not match superblock.
-#: e2fsck/problem.c:470
+#: e2fsck/problem.c:486
msgid "External @j @S checksum does not match @S. "
msgstr "外部@j@S校验值与@S自身不符"
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
-#: e2fsck/problem.c:475
+#: e2fsck/problem.c:491
msgid "@S metadata_csum_seed is not necessary without metadata_csum."
-msgstr ""
-"只有同时开启了@S的 metadata_csum 特性,metadata_csum_seed 特性才有意义。"
+msgstr "只有同时开启了@S的 metadata_csum 特性,metadata_csum_seed 特性才有意义。"
-#: e2fsck/problem.c:480
-#, c-format
+#: e2fsck/problem.c:497
+#, no-c-format
msgid "Error initializing quota context in support library: %m\n"
msgstr "初始化支持库中的引用上下文时出错:%m\n"
#. @-expanded: Bad required extra isize in superblock (%N).
-#: e2fsck/problem.c:485
+#: e2fsck/problem.c:502
msgid "Bad required extra isize in @S (%N). "
msgstr ""
#. @-expanded: Bad desired extra isize in superblock (%N).
-#: e2fsck/problem.c:490
+#: e2fsck/problem.c:507
msgid "Bad desired extra isize in @S (%N). "
msgstr ""
#. @-expanded: Invalid %U quota inode %i.
-#: e2fsck/problem.c:495
-#, fuzzy
+#: e2fsck/problem.c:512
msgid "Invalid %U @q @i %i. "
-msgstr "@u@z@i %i。 "
+msgstr "无效的 %U @q @i %i。 "
#. @-expanded: superblock would have too many inodes (%N).\n
-#: e2fsck/problem.c:500
+#: e2fsck/problem.c:517
msgid "@S would have too many inodes (%N).\n"
-msgstr ""
+msgstr "@S 将含有过多 inode(%N)。\n"
#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
#. @-expanded: not compatible. Resize inode should be disabled.
-#: e2fsck/problem.c:505
+#: e2fsck/problem.c:522
msgid ""
"Resize_@i and meta_bg features are enabled. Those features are\n"
"not compatible. Resize @i should be disabled. "
msgstr ""
#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
-#: e2fsck/problem.c:513
+#: e2fsck/problem.c:530
msgid "Pass 1: Checking @is, @bs, and sizes\n"
msgstr "第 1 步:检查@i、@b和大小\n"
#. @-expanded: root inode is not a directory.
-#: e2fsck/problem.c:517
+#: e2fsck/problem.c:534
msgid "@r is not a @d. "
msgstr "@r不是一个@d。 "
#. @-expanded: root inode has dtime set (probably due to old mke2fs).
-#: e2fsck/problem.c:522
+#: e2fsck/problem.c:539
msgid "@r has dtime set (probably due to old mke2fs). "
msgstr "@r被设置了删除时间(可能由老版本的mke2fs导致)。"
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
-#: e2fsck/problem.c:527
+#: e2fsck/problem.c:544
msgid "Reserved @i %i (%Q) has @n mode. "
msgstr "保留的@i %i(%Q)的模式无效。 "
#. @-expanded: deleted inode %i has zero dtime.
-#: e2fsck/problem.c:532
-#, c-format
+#: e2fsck/problem.c:550
+#, no-c-format
msgid "@D @i %i has zero dtime. "
msgstr "@D@i %i 的删除时间为零。 "
#. @-expanded: inode %i is in use, but has dtime set.
-#: e2fsck/problem.c:537
-#, c-format
+#: e2fsck/problem.c:556
+#, no-c-format
msgid "@i %i is in use, but has dtime set. "
msgstr "使用中的@i %i 被设置了删除时间。 "
#. @-expanded: inode %i is a zero-length directory.
-#: e2fsck/problem.c:542
-#, c-format
+#: e2fsck/problem.c:562
+#, no-c-format
msgid "@i %i is a @z @d. "
msgstr "@i %i 为@z@d。 "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:547
+#: e2fsck/problem.c:567
msgid "@g %g's @b @B at %b @C.\n"
msgstr "位于 %b 的@g %g的@b@B@C。\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:552
+#: e2fsck/problem.c:572
msgid "@g %g's @i @B at %b @C.\n"
msgstr "位于 %b 的@g %g的@i@B@C。\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
-#: e2fsck/problem.c:557
+#: e2fsck/problem.c:577
msgid "@g %g's @i table at %b @C.\n"
msgstr "位于 %b 的@g %g的@i表@C。\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
-#: e2fsck/problem.c:562
+#: e2fsck/problem.c:582
msgid "@g %g's @b @B (%b) is bad. "
msgstr "@g %g 的@b@B无效。 "
#. @-expanded: group %g's inode bitmap (%b) is bad.
-#: e2fsck/problem.c:567
+#: e2fsck/problem.c:587
msgid "@g %g's @i @B (%b) is bad. "
msgstr "@g %g 的@i@B无效。 "
#. @-expanded: inode %i, i_size is %Is, should be %N.
-#: e2fsck/problem.c:572
+#: e2fsck/problem.c:592
msgid "@i %i, i_size is %Is, @s %N. "
msgstr "@i %i的大小为 %ls,@s %N。 "
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
-#: e2fsck/problem.c:577
+#: e2fsck/problem.c:597
msgid "@i %i, i_@bs is %Ib, @s %N. "
msgstr "@i %i的i_blocks为 %ls,@s %N。 "
#. @-expanded: illegal %B (%b) in inode %i.
-#: e2fsck/problem.c:582
+#: e2fsck/problem.c:602
msgid "@I %B (%b) in @i %i. "
msgstr "@I %B(%b)于@i %i。 "
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
-#: e2fsck/problem.c:587
+#: e2fsck/problem.c:607
msgid "%B (%b) overlaps @f metadata in @i %i. "
msgstr "%B(%b)与@i %i 记录元数据的位置重叠。 "
#. @-expanded: inode %i has illegal block(s).
-#: e2fsck/problem.c:592
-#, c-format
+#: e2fsck/problem.c:613
+#, no-c-format
msgid "@i %i has illegal @b(s). "
msgstr "@i %i 中包含非法@b。 "
#. @-expanded: Too many illegal blocks in inode %i.\n
-#: e2fsck/problem.c:597
-#, c-format
+#: e2fsck/problem.c:619
+#, no-c-format
msgid "Too many illegal @bs in @i %i.\n"
msgstr "@i %i 中包含了过多的非法@b。\n"
#. @-expanded: illegal %B (%b) in bad block inode.
-#: e2fsck/problem.c:602
+#: e2fsck/problem.c:624
msgid "@I %B (%b) in bad @b @i. "
msgstr "@I %B(%b)于坏@b@i。 "
#. @-expanded: Bad block inode has illegal block(s).
-#: e2fsck/problem.c:607
+#: e2fsck/problem.c:629
msgid "Bad @b @i has illegal @b(s). "
msgstr "坏@b@i含有无效的@b。 "
#. @-expanded: Duplicate or bad block in use!\n
-#: e2fsck/problem.c:612
+#: e2fsck/problem.c:634
msgid "Duplicate or bad @b in use!\n"
msgstr "使用了重复@b或坏@b!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
-#: e2fsck/problem.c:617
+#: e2fsck/problem.c:639
msgid "Bad @b %b used as bad @b @i indirect @b. "
msgstr "坏@b %b 被用作坏@b@i的链接@b。 "
@@ -1445,7 +1451,7 @@ msgstr "坏@b %b 被用作坏@b@i的链接@b。 "
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
#. @-expanded: in the filesystem.\n
-#: e2fsck/problem.c:622
+#: e2fsck/problem.c:644
msgid ""
"\n"
"The bad @b @i has probably been corrupted. You probably\n"
@@ -1458,7 +1464,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
-#: e2fsck/problem.c:629
+#: e2fsck/problem.c:651
msgid ""
"\n"
"If the @b is really bad, the @f can not be fixed.\n"
@@ -1469,7 +1475,7 @@ msgstr ""
#. @-expanded: You can remove this block from the bad block list and hope\n
#. @-expanded: that the block is really OK. But there are no guarantees.\n
#. @-expanded: \n
-#: e2fsck/problem.c:634
+#: e2fsck/problem.c:656
msgid ""
"You can remove this @b from the bad @b list and hope\n"
"that the @b is really OK. But there are no guarantees.\n"
@@ -1480,124 +1486,124 @@ msgstr ""
"\n"
#. @-expanded: The primary superblock (%b) is on the bad block list.\n
-#: e2fsck/problem.c:640
+#: e2fsck/problem.c:662
msgid "The primary @S (%b) is on the bad @b list.\n"
msgstr "主@S(%b)位于坏@b列表中。\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
-#: e2fsck/problem.c:645
+#: e2fsck/problem.c:667
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
msgstr "主@g描述符中的块 %b 位于坏@b列表中\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
-#: e2fsck/problem.c:651
+#: e2fsck/problem.c:673
msgid "Warning: Group %g's @S (%b) is bad.\n"
msgstr "警告:组 %g 的@S(%b)为坏块。\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
-#: e2fsck/problem.c:657
+#: e2fsck/problem.c:679
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
msgstr ""
"警告:组 %g 描述符的备份含有一个坏@b(%b)。\n"
"\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
-#: e2fsck/problem.c:663
+#: e2fsck/problem.c:685
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
msgstr "检测到@b #%b 为坏@b,但原因未知(可能是程序错误导致的)。\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
-#: e2fsck/problem.c:669
+#: e2fsck/problem.c:691
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
msgstr "在@b@g %g 中为 %s 分配 %N 个连续的@b时出错:%m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
-#: e2fsck/problem.c:674
-#, c-format
+#: e2fsck/problem.c:697
+#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr "重定位 %s 时分配@b缓存出错\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
-#: e2fsck/problem.c:679
+#: e2fsck/problem.c:702
msgid "Relocating @g %g's %s from %b to %c...\n"
msgstr "正在将@g %g 的 %s 从 %b 重定位至 %c...\n"
#. @-expanded: Relocating group %g's %s to %c...\n
-#: e2fsck/problem.c:684
-#, c-format
+#: e2fsck/problem.c:708
+#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
msgstr "正在将@g %g 的 %s 重定位至 %c...\n"
#. @-expanded: Warning: could not read block %b of %s: %m\n
-#: e2fsck/problem.c:689
+#: e2fsck/problem.c:713
msgid "Warning: could not read @b %b of %s: %m\n"
msgstr "警告:无法从%s中读取@b %b:%m\n"
#. @-expanded: Warning: could not write block %b for %s: %m\n
-#: e2fsck/problem.c:694
+#: e2fsck/problem.c:718
msgid "Warning: could not write @b %b for %s: %m\n"
msgstr "警告:无法向%s中写入@b %b:%m\n"
#. @-expanded: error allocating inode bitmap (%N): %m\n
-#: e2fsck/problem.c:699 e2fsck/problem.c:1776
+#: e2fsck/problem.c:723 e2fsck/problem.c:1871
msgid "@A @i @B (%N): %m\n"
msgstr "分配@i@B(%N)时出错:%m\n"
#. @-expanded: error allocating block bitmap (%N): %m\n
-#: e2fsck/problem.c:704
+#: e2fsck/problem.c:728
msgid "@A @b @B (%N): %m\n"
msgstr "分配@b@B(%N)时出错:%m\n"
#. @-expanded: error allocating icount link information: %m\n
-#: e2fsck/problem.c:709
-#, c-format
+#: e2fsck/problem.c:734
+#, no-c-format
msgid "@A icount link information: %m\n"
msgstr "分配icount链接信息时出错:%m\n"
#. @-expanded: error allocating directory block array: %m\n
-#: e2fsck/problem.c:714
-#, c-format
+#: e2fsck/problem.c:740
+#, no-c-format
msgid "@A @d @b array: %m\n"
msgstr "分配@d@b数组时出错:%m\n"
#. @-expanded: Error while scanning inodes (%i): %m\n
-#: e2fsck/problem.c:719
-#, c-format
+#: e2fsck/problem.c:746
+#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
msgstr "扫描@i(%i)时出错:%m\n"
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
-#: e2fsck/problem.c:724
-#, c-format
+#: e2fsck/problem.c:752
+#, no-c-format
msgid "Error while iterating over @bs in @i %i: %m\n"
msgstr "迭代@i %i 中的@b时出错:%m\n"
#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
-#: e2fsck/problem.c:729
+#: e2fsck/problem.c:757
msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
msgstr "写入@i计数信息时出错(@i %i,计数=%N):%m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
-#: e2fsck/problem.c:734
+#: e2fsck/problem.c:762
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
msgstr "写入@d@b信息时出错(@i %i,@b %b,数量=%N)\n"
#. @-expanded: Error reading inode %i: %m\n
-#: e2fsck/problem.c:740
-#, c-format
+#: e2fsck/problem.c:769
+#, no-c-format
msgid "Error reading @i %i: %m\n"
msgstr "读取@i %i出错:%m\n"
#. @-expanded: inode %i has imagic flag set.
-#: e2fsck/problem.c:748
-#, c-format
+#: e2fsck/problem.c:778
+#, no-c-format
msgid "@i %i has imagic flag set. "
msgstr "@i %i 被设置了imagic标志。 "
#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
#. @-expanded: or append-only flag set.
-#: e2fsck/problem.c:753
-#, c-format
+#: e2fsck/problem.c:784
+#, no-c-format
msgid ""
"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
"or append-only flag set. "
@@ -1606,198 +1612,198 @@ msgstr ""
"(保护)或 a(仅追加) 标志。 "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
-#: e2fsck/problem.c:759
-#, c-format
+#: e2fsck/problem.c:791
+#, no-c-format
msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
msgstr "特殊文件(@v/套接字/队列)@i %i 为非零大小。 "
#. @-expanded: journal inode is not in use, but contains data.
-#: e2fsck/problem.c:769
+#: e2fsck/problem.c:801
msgid "@j @i is not in use, but contains data. "
msgstr "@j @i 未被使用,但含有数据。 "
#. @-expanded: journal is not regular file.
-#: e2fsck/problem.c:774
+#: e2fsck/problem.c:806
msgid "@j is not regular file. "
msgstr "@j不是普通文件。 "
#. @-expanded: inode %i was part of the orphaned inode list.
-#: e2fsck/problem.c:779
-#, c-format
+#: e2fsck/problem.c:812
+#, no-c-format
msgid "@i %i was part of the @o @i list. "
msgstr "@i %i 位于@o@i列表中。 "
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
-#: e2fsck/problem.c:785
+#: e2fsck/problem.c:818
msgid "@is that were part of a corrupted orphan linked list found. "
msgstr "发现了可能属于损坏的孤立链接表的@i。 "
#. @-expanded: error allocating refcount structure (%N): %m\n
-#: e2fsck/problem.c:790
+#: e2fsck/problem.c:823
msgid "@A refcount structure (%N): %m\n"
msgstr "分配refcount结构体(%N)时出错:%m\n"
#. @-expanded: Error reading extended attribute block %b for inode %i.
-#: e2fsck/problem.c:795
+#: e2fsck/problem.c:828
msgid "Error reading @a @b %b for @i %i. "
msgstr "读取@i %i 的@a@b %b 时出错。"
#. @-expanded: inode %i has a bad extended attribute block %b.
-#: e2fsck/problem.c:800
+#: e2fsck/problem.c:833
msgid "@i %i has a bad @a @b %b. "
msgstr "@i %i 有一个 @a@b %b。 "
#. @-expanded: Error reading extended attribute block %b (%m).
-#: e2fsck/problem.c:805
+#: e2fsck/problem.c:838
msgid "Error reading @a @b %b (%m). "
msgstr "读取@a@b %b 时出错(%m)。 "
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
-#: e2fsck/problem.c:810
+#: e2fsck/problem.c:843
msgid "@a @b %b has reference count %r, @s %N. "
msgstr "@a@b %b 的引用计数为 %r,@s %N。 "
#. @-expanded: Error writing extended attribute block %b (%m).
-#: e2fsck/problem.c:815
+#: e2fsck/problem.c:848
msgid "Error writing @a @b %b (%m). "
msgstr "写入@a@b %b 时出错(%m)。 "
#. @-expanded: extended attribute block %b has h_blocks > 1.
-#: e2fsck/problem.c:820
+#: e2fsck/problem.c:853
msgid "@a @b %b has h_@bs > 1. "
msgstr "@a@b %b 的h_blocks >1。 "
#. @-expanded: error allocating extended attribute region allocation structure.
-#: e2fsck/problem.c:825
+#: e2fsck/problem.c:858
msgid "@A @a region allocation structure. "
msgstr "构建外部属性区域的分配结构体时出错。"
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
-#: e2fsck/problem.c:830
+#: e2fsck/problem.c:863
msgid "@a @b %b is corrupt (allocation collision). "
msgstr "@a@b %b 已损坏(分配冲突)。 "
#. @-expanded: extended attribute block %b is corrupt (invalid name).
-#: e2fsck/problem.c:835
+#: e2fsck/problem.c:868
msgid "@a @b %b is corrupt (@n name). "
msgstr "@a@b %b 已损坏(@n名称)。 "
#. @-expanded: extended attribute block %b is corrupt (invalid value).
-#: e2fsck/problem.c:840
+#: e2fsck/problem.c:873
msgid "@a @b %b is corrupt (@n value). "
msgstr "@a@b %b 已损坏(@n值)。 "
#. @-expanded: inode %i is too big.
-#: e2fsck/problem.c:845
-#, c-format
+#: e2fsck/problem.c:879
+#, no-c-format
msgid "@i %i is too big. "
msgstr "@i %i 过大。 "
#. @-expanded: %B (%b) causes directory to be too big.
-#: e2fsck/problem.c:849
+#: e2fsck/problem.c:883
msgid "%B (%b) causes @d to be too big. "
msgstr "%B(%b)造成@d过大。 "
-#: e2fsck/problem.c:854
+#: e2fsck/problem.c:888
msgid "%B (%b) causes file to be too big. "
msgstr "%B(%b)造成文件过大。 "
-#: e2fsck/problem.c:859
+#: e2fsck/problem.c:893
msgid "%B (%b) causes symlink to be too big. "
msgstr "%B(%b)造成符号链接过大。 "
#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
-#: e2fsck/problem.c:864
-#, c-format
+#: e2fsck/problem.c:899
+#, no-c-format
msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
msgstr "@i %i 被设置了INDEX_FL标志,但文件系统不支持htree。\n"
#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
-#: e2fsck/problem.c:869
-#, c-format
+#: e2fsck/problem.c:905
+#, no-c-format
msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
msgstr "@i %i 被设置了INDEX_FL标志,但它并非目录。\n"
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
-#: e2fsck/problem.c:874
-#, c-format
+#: e2fsck/problem.c:911
+#, no-c-format
msgid "@h %i has an @n root node.\n"
msgstr "@h %i 有一个@n根节点。\n"
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
-#: e2fsck/problem.c:879
+#: e2fsck/problem.c:916
msgid "@h %i has an unsupported hash version (%N)\n"
msgstr "@h %i 有一个无效的hash版本(%N)\n"
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
-#: e2fsck/problem.c:884
-#, c-format
+#: e2fsck/problem.c:922
+#, no-c-format
msgid "@h %i uses an incompatible htree root node flag.\n"
msgstr "@h %i 使用了一个不兼容的htree根节点标志。\n"
#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
-#: e2fsck/problem.c:889
+#: e2fsck/problem.c:927
msgid "@h %i has a tree depth (%N) which is too big\n"
msgstr "@h %i 树的深度过大(%N)\n"
#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
#. @-expanded: filesystem metadata.
-#: e2fsck/problem.c:895
+#: e2fsck/problem.c:933
msgid ""
"Bad @b @i has an indirect @b (%b) that conflicts with\n"
"@f metadata. "
msgstr "坏@b@i含有一个与@f元数据冲突的连接@b(%b)。 "
#. @-expanded: Resize inode (re)creation failed: %m.
-#: e2fsck/problem.c:901
-#, c-format
+#: e2fsck/problem.c:940
+#, no-c-format
msgid "Resize @i (re)creation failed: %m."
msgstr "改变@i大小失败:%m。"
#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
-#: e2fsck/problem.c:906
+#: e2fsck/problem.c:945
msgid "@i %i has a extra size (%IS) which is @n\n"
msgstr "@i %i 有一个额外的大小 %lS(@n值)\n"
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
-#: e2fsck/problem.c:911
+#: e2fsck/problem.c:950
msgid "@a in @i %i has a namelen (%N) which is @n\n"
msgstr "@i %i 中的@a有一个名称长度%lS(@n值)\n"
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
-#: e2fsck/problem.c:916
+#: e2fsck/problem.c:955
msgid "@a in @i %i has a value offset (%N) which is @n\n"
msgstr "@i %i 中的@a含有一个@n的偏移量(%N)\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
-#: e2fsck/problem.c:921
+#: e2fsck/problem.c:960
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
msgstr "@i %i 中的@a含有一个@n的数值块(%N),应当为0\n"
#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
-#: e2fsck/problem.c:926
+#: e2fsck/problem.c:965
msgid "@a in @i %i has a value size (%N) which is @n\n"
msgstr "@i %i 中的@a含有一个@n的大小(%N)\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
-#: e2fsck/problem.c:931
+#: e2fsck/problem.c:970
msgid "@a in @i %i has a hash (%N) which is @n\n"
msgstr "@i %i 中的@a有一个@nhash值(%N)\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
-#: e2fsck/problem.c:936
+#: e2fsck/problem.c:975
msgid "@i %i is a %It but it looks like it is really a directory.\n"
msgstr "@i %i 是一个@lt,但它实际上可能是一个目录。\n"
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
-#: e2fsck/problem.c:941
-#, c-format
+#: e2fsck/problem.c:981
+#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
msgstr "读取@i %i 中的@x树时出错:%m\n"
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
-#: e2fsck/problem.c:946
+#: e2fsck/problem.c:986
msgid ""
"Failed to iterate extents in @i %i\n"
"\t(op %s, blk %b, lblk %c): %m\n"
@@ -1807,7 +1813,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:952
+#: e2fsck/problem.c:992
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -1817,7 +1823,7 @@ msgstr ""
#. @-expanded: inode %i has an invalid extent\n
#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
-#: e2fsck/problem.c:957
+#: e2fsck/problem.c:997
msgid ""
"@i %i has an @n extent\n"
"\t(logical @b %c, physical @b %b, @n len %N)\n"
@@ -1826,31 +1832,31 @@ msgstr ""
"\t(逻辑块 %c,物理块@b %b,长度 %N)\n"
#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
-#: e2fsck/problem.c:962
-#, c-format
+#: e2fsck/problem.c:1003
+#, no-c-format
msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
msgstr "@i %i 被设置了EXTENTS_FL标志,但文件系统不支持extent。\n"
#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
-#: e2fsck/problem.c:967
-#, c-format
+#: e2fsck/problem.c:1009
+#, no-c-format
msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
msgstr "@i %i 为extent格式,但@S不具有EXTENTS特性\n"
#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
-#: e2fsck/problem.c:972
-#, c-format
+#: e2fsck/problem.c:1015
+#, no-c-format
msgid "@i %i missing EXTENT_FL, but is in extents format\n"
msgstr "@i %i 不具有EXTENT_FL标志,但却为EXTENTS格式\n"
-#: e2fsck/problem.c:977
-#, c-format
+#: e2fsck/problem.c:1021
+#, no-c-format
msgid "Fast symlink %i has EXTENT_FL set. "
msgstr "直接符号链接 %i 被设置了EXTENT_FL标志。 "
#. @-expanded: inode %i has out of order extents\n
#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:982
+#: e2fsck/problem.c:1026
msgid ""
"@i %i has out of order extents\n"
"\t(@n logical @b %c, physical @b %b, len %N)\n"
@@ -1859,40 +1865,39 @@ msgstr ""
"\t(@n 逻辑@b %c,物理@b %b,长度 %N)\n"
#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
-#: e2fsck/problem.c:986
+#: e2fsck/problem.c:1030
msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
msgstr "@i %i 是一个无效的extent节点(块 %b,lblk %c)\n"
#. @-expanded: Error converting subcluster block bitmap: %m\n
-#: e2fsck/problem.c:991
-#, c-format
+#: e2fsck/problem.c:1036
+#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
msgstr "转换子簇的@d@b时出错:%m\n"
#. @-expanded: quota inode is not a regular file.
-#: e2fsck/problem.c:996
-#, fuzzy
+#: e2fsck/problem.c:1041
msgid "@q @i is not a regular file. "
-msgstr "@q@i不是普通文件。 "
+msgstr "@q @i 不是普通文件。 "
#. @-expanded: quota inode is not in use, but contains data.
-#: e2fsck/problem.c:1001
+#: e2fsck/problem.c:1046
msgid "@q @i is not in use, but contains data. "
msgstr "@q @i 未被使用,但含有数据。 "
#. @-expanded: quota inode is visible to the user.
-#: e2fsck/problem.c:1006
+#: e2fsck/problem.c:1051
msgid "@q @i is visible to the user. "
msgstr "使用中的@q@i被对用户可见。 "
#. @-expanded: The bad block inode looks invalid.
-#: e2fsck/problem.c:1011
+#: e2fsck/problem.c:1056
msgid "The bad @b @i looks @n. "
msgstr "坏@b@i似乎是@n。 "
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
-#: e2fsck/problem.c:1016
+#: e2fsck/problem.c:1061
msgid ""
"@i %i has zero length extent\n"
"\t(@n logical @b %c, physical @b %b)\n"
@@ -1901,26 +1906,26 @@ msgstr ""
"\t(@n 逻辑@b %c,物理@b %b)\n"
#. @-expanded: inode %i seems to contain garbage.
-#: e2fsck/problem.c:1021
-#, c-format
+#: e2fsck/problem.c:1067
+#, no-c-format
msgid "@i %i seems to contain garbage. "
msgstr "@i %i 含有无效数据。"
#. @-expanded: inode %i passes checks, but checksum does not match inode.
-#: e2fsck/problem.c:1026
-#, c-format
+#: e2fsck/problem.c:1073
+#, no-c-format
msgid "@i %i passes checks, but checksum does not match @i. "
msgstr "@i %i 通过检验,但其校验值与自身不符。"
#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
-#: e2fsck/problem.c:1031
-#, c-format
+#: e2fsck/problem.c:1079
+#, no-c-format
msgid "@i %i @a is corrupt (allocation collision). "
msgstr "@i %i @a 已损坏(分配冲突)。 "
#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1039
+#: e2fsck/problem.c:1087
msgid ""
"@i %i extent block passes checks, but checksum does not match extent\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1929,13 +1934,13 @@ msgstr ""
"\t(逻辑@b %c,物理@b %b,长度 %N)\n"
#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
-#: e2fsck/problem.c:1048
+#: e2fsck/problem.c:1096
msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
msgstr "@i %i 的@a @b %b 通过检验,但其校验值与自身不符。"
#. @-expanded: Interior extent node level %N of inode %i:\n
#. @-expanded: Logical start %b does not match logical start %c at next level.
-#: e2fsck/problem.c:1053
+#: e2fsck/problem.c:1101
msgid ""
"Interior @x node level %N of @i %i:\n"
"Logical start %b does not match logical start %c at next level. "
@@ -1945,7 +1950,7 @@ msgstr ""
#. @-expanded: inode %i, end of extent exceeds allowed value\n
#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
-#: e2fsck/problem.c:1059
+#: e2fsck/problem.c:1107
msgid ""
"@i %i, end of extent exceeds allowed value\n"
"\t(logical @b %c, physical @b %b, len %N)\n"
@@ -1954,37 +1959,37 @@ msgstr ""
"\t(逻辑@b %c,物理块@b %b,长度 %N)\n"
#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
-#: e2fsck/problem.c:1064
-#, c-format
+#: e2fsck/problem.c:1113
+#, no-c-format
msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgstr "@i %i 含有内联数据,但@S不具有 INLINE_DATA 特性\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
-#: e2fsck/problem.c:1069
-#, c-format
+#: e2fsck/problem.c:1119
+#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
msgstr "@i %i 被设置了 INLINE_DATA_FL 标志,但文件系统不支持内联数据。\n"
#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
-#: e2fsck/problem.c:1076
-msgid ""
-"@i %i block %b conflicts with critical metadata, skipping block checks.\n"
+#: e2fsck/problem.c:1127
+#, no-c-format
+msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
msgstr "@i %i 块 %b 与关键元数据冲突,跳过对块的检查。\n"
#. @-expanded: directory inode %i block %b should be at block %c.
-#: e2fsck/problem.c:1081
+#: e2fsck/problem.c:1132
msgid "@d @i %i @b %b should be at @b %c. "
msgstr "@d@i %i @b %b 应为@b %c。 "
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
-#: e2fsck/problem.c:1086
-#, c-format
+#: e2fsck/problem.c:1138
+#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
msgstr "@d@i %i 含有被标记为未初始化的@x,位于@b %c。 "
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
-#: e2fsck/problem.c:1091
+#: e2fsck/problem.c:1143
msgid ""
"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
"Will fix in pass 1B.\n"
@@ -1993,15 +1998,15 @@ msgstr ""
"将会在第 1B 步中进行修复。\n"
#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
-#: e2fsck/problem.c:1096
-#, c-format
+#: e2fsck/problem.c:1149
+#, no-c-format
msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
msgstr "@i %i 被设置了INDEX_DATA_FL标志,但找不到相应的@a。"
#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
#. @-expanded: or inline-data flag set.
-#: e2fsck/problem.c:1102
-#, c-format
+#: e2fsck/problem.c:1156
+#, no-c-format
msgid ""
"Special (@v/socket/fifo) file (@i %i) has extents\n"
"or inline-data flag set. "
@@ -2010,42 +2015,42 @@ msgstr ""
"extents 或内联数据标志。"
#. @-expanded: inode %i has extent header but inline data flag is set.\n
-#: e2fsck/problem.c:1108
-#, c-format
+#: e2fsck/problem.c:1163
+#, no-c-format
msgid "@i %i has @x header but inline data flag is set.\n"
msgstr "@i %i 含有@x头部,但被设置了内联数据标志。\n"
#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
-#: e2fsck/problem.c:1113
-#, c-format
+#: e2fsck/problem.c:1169
+#, no-c-format
msgid "@i %i seems to have inline data but @x flag is set.\n"
msgstr "@i %i 似乎含有内联数据,但被设置了@x标志。\n"
#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
-#: e2fsck/problem.c:1118
-#, c-format
+#: e2fsck/problem.c:1175
+#, no-c-format
msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
msgstr "@i %i 似乎含有@b位图,但被设置了内联数据标志和@x标志。\n"
#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
-#: e2fsck/problem.c:1123
-#, c-format
+#: e2fsck/problem.c:1181
+#, no-c-format
msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
msgstr "@i %i 含有内联数据且被设置了@x标志,但 i_block 中含有无效数据。\n"
#. @-expanded: Bad block list says the bad block list inode is bad.
-#: e2fsck/problem.c:1128
+#: e2fsck/problem.c:1186
msgid "Bad block list says the bad block list @i is bad. "
msgstr "坏块列表中的数据表明,坏块列表@i 已损坏。"
#. @-expanded: error allocating extent region allocation structure.
-#: e2fsck/problem.c:1133
+#: e2fsck/problem.c:1191
msgid "@A @x region allocation structure. "
msgstr "构建extent区域的分配结构体时出错。"
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
-#: e2fsck/problem.c:1138
+#: e2fsck/problem.c:1196
msgid ""
"@i %i has a duplicate @x mapping\n"
"\t(logical @b %c, @n physical @b %b, len %N)\n"
@@ -2054,48 +2059,48 @@ msgstr ""
"\t(逻辑块 %c,@n物理块@b %b,长度 %N)\n"
#. @-expanded: error allocating memory for encrypted directory list\n
-#: e2fsck/problem.c:1143
+#: e2fsck/problem.c:1201
msgid "@A memory for encrypted @d list\n"
msgstr "为加密@d列表分配内存时出错\n"
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
-#: e2fsck/problem.c:1148
+#: e2fsck/problem.c:1206
msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
msgstr "@i %i @x树的深度可以更小(当前为%b;可以 <= %c)\n"
#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
-#: e2fsck/problem.c:1153
-#, c-format
+#: e2fsck/problem.c:1212
+#, no-c-format
msgid "@i %i on bigalloc @f cannot be @b mapped. "
msgstr "位于 bigalloc @f 的@i %i on bigalloc @f 无法被@b映射。"
#. @-expanded: inode %i has corrupt extent header.
-#: e2fsck/problem.c:1158
-#, c-format
+#: e2fsck/problem.c:1218
+#, no-c-format
msgid "@i %i has corrupt @x header. "
msgstr "@i %i 含有损坏的@x头部。"
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
-#: e2fsck/problem.c:1163
-#, c-format
+#: e2fsck/problem.c:1224
+#, no-c-format
msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
msgstr "@i %i 的时间戳超过了 2310-04-04,可能应为 1970 年之前。\n"
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
-#: e2fsck/problem.c:1168
-#, fuzzy
+#: e2fsck/problem.c:1229
msgid "@i %i has @I @a value @i %N.\n"
-msgstr "@i %i 有一个 @a@b %b。 "
+msgstr "@i %i 有一个 @I @a 值 @i %N。\n"
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
-#: e2fsck/problem.c:1174
+#: e2fsck/problem.c:1235
#, fuzzy
+#| msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
msgstr "@i %i 含有内联数据,但@S不具有 INLINE_DATA 特性\n"
#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
#. @-expanded:
-#: e2fsck/problem.c:1179
+#: e2fsck/problem.c:1240
msgid ""
"EA @i %N for parent @i %i missing EA_INODE flag.\n"
" "
@@ -2104,7 +2109,7 @@ msgstr ""
#. @-expanded: \n
#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
-#: e2fsck/problem.c:1187
+#: e2fsck/problem.c:1248
msgid ""
"\n"
"Running additional passes to resolve @bs claimed by more than one @i...\n"
@@ -2115,46 +2120,46 @@ msgstr ""
"第 1B 步:重新扫描@m @b\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
-#: e2fsck/problem.c:1193
-#, c-format
+#: e2fsck/problem.c:1255
+#, no-c-format
msgid "@m @b(s) in @i %i:"
msgstr "@m@b位于@i %i:"
-#: e2fsck/problem.c:1208
-#, c-format
+#: e2fsck/problem.c:1271
+#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
msgstr "扫描Inode(%i\\)时出错:%m\n"
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
-#: e2fsck/problem.c:1213
-#, c-format
+#: e2fsck/problem.c:1277
+#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
msgstr "分配@i@B时出错(inode_dup_map):%m\n"
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
-#: e2fsck/problem.c:1218
-#, c-format
+#: e2fsck/problem.c:1283
+#, no-c-format
msgid "Error while iterating over @bs in @i %i (%s): %m\n"
msgstr "迭代@i %i中的@b时出错(%s):%m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
-#: e2fsck/problem.c:1223 e2fsck/problem.c:1585
+#: e2fsck/problem.c:1288 e2fsck/problem.c:1663
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
msgstr "为@aB %b(@i %i)调整refcount时出错:%m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
-#: e2fsck/problem.c:1233
+#: e2fsck/problem.c:1298
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
msgstr "第 1C 步:扫描含有@m@b的目录@i\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
-#: e2fsck/problem.c:1239
+#: e2fsck/problem.c:1304
msgid "Pass 1D: Reconciling @m @bs\n"
msgstr "第 1C 步:调整@m@b\n"
#. @-expanded: File %Q (inode #%i, mod time %IM) \n
#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
-#: e2fsck/problem.c:1244
+#: e2fsck/problem.c:1309
msgid ""
"File %Q (@i #%i, mod time %IM) \n"
" has %r @m @b(s), shared with %N file(s):\n"
@@ -2163,18 +2168,18 @@ msgstr ""
"与 %N 个文件共享 %r 个@m@b\n"
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
-#: e2fsck/problem.c:1250
+#: e2fsck/problem.c:1315
msgid "\t%Q (@i #%i, mod time %IM)\n"
msgstr "\t%Q(@i #%i,修改时间 %IM)\n"
#. @-expanded: \t<filesystem metadata>\n
-#: e2fsck/problem.c:1255
+#: e2fsck/problem.c:1320
msgid "\t<@f metadata>\n"
msgstr "\t<@f元数据>\n"
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
-#: e2fsck/problem.c:1260
+#: e2fsck/problem.c:1325
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
@@ -2184,7 +2189,7 @@ msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1265
+#: e2fsck/problem.c:1330
msgid ""
"@m @bs already reassigned or cloned.\n"
"\n"
@@ -2192,346 +2197,347 @@ msgstr ""
"@m@b已被重新分配或克隆。\n"
"\n"
-#: e2fsck/problem.c:1278
-#, c-format
+#: e2fsck/problem.c:1344
+#, no-c-format
msgid "Couldn't clone file: %m\n"
msgstr "无法克隆文件:%m\n"
#. @-expanded: Pass 1E: Optimizing extent trees\n
-#: e2fsck/problem.c:1284
+#: e2fsck/problem.c:1350
msgid "Pass 1E: Optimizing @x trees\n"
msgstr "第 1E 步:优化@x树\n"
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
-#: e2fsck/problem.c:1289
-#, c-format
+#: e2fsck/problem.c:1356
+#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
msgstr "优化@x树 %p(%i)失败:%m\n"
#. @-expanded: Optimizing extent trees:
-#: e2fsck/problem.c:1294
+#: e2fsck/problem.c:1361
msgid "Optimizing @x trees: "
msgstr "优化@x树:"
-#: e2fsck/problem.c:1309
+#: e2fsck/problem.c:1376
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
msgstr "内部错误:extent树的最大深度过大(当前为 %b;应为 %c)。\n"
#. @-expanded: inode %i extent tree (at level %b) could be shorter.
-#: e2fsck/problem.c:1314
+#: e2fsck/problem.c:1381
msgid "@i %i @x tree (at level %b) could be shorter. "
msgstr "@i %i 的@x树(位于第 %b 层)的深度可以更小。"
#. @-expanded: inode %i extent tree (at level %b) could be narrower.
-#: e2fsck/problem.c:1319
+#: e2fsck/problem.c:1386
msgid "@i %i @x tree (at level %b) could be narrower. "
msgstr "@i %i 的@x树(位于第 %b 层)可以更窄。"
#. @-expanded: Pass 2: Checking directory structure\n
-#: e2fsck/problem.c:1326
+#: e2fsck/problem.c:1393
msgid "Pass 2: Checking @d structure\n"
msgstr "第 2 步:检查目录结构\n"
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
-#: e2fsck/problem.c:1331
-#, c-format
+#: e2fsck/problem.c:1399
+#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
msgstr "@d@i %i 中“.”的@n@i编号无效。\n"
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
-#: e2fsck/problem.c:1336
+#: e2fsck/problem.c:1404
msgid "@E has @n @i #: %Di.\n"
msgstr "@E含有@n@i #:%Di\n"
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
-#: e2fsck/problem.c:1341
+#: e2fsck/problem.c:1409
msgid "@E has @D/unused @i %Di. "
msgstr "@E含有@D或未使用的@ %Di。 "
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
-#: e2fsck/problem.c:1346
+#: e2fsck/problem.c:1414
msgid "@E @L to '.' "
msgstr "@E是一个指向“.”的链接"
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
-#: e2fsck/problem.c:1351
+#: e2fsck/problem.c:1419
msgid "@E points to @i (%Di) located in a bad @b.\n"
msgstr "@E指向位于坏@b的@i(%Di)。\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
-#: e2fsck/problem.c:1356
+#: e2fsck/problem.c:1424
msgid "@E @L to @d %P (%Di).\n"
msgstr "@E是一个指向@d %P(%Di)的链接。\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
-#: e2fsck/problem.c:1361
+#: e2fsck/problem.c:1429
msgid "@E @L to the @r.\n"
msgstr "@E是一个指向@r的链接。\n"
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
-#: e2fsck/problem.c:1366
+#: e2fsck/problem.c:1434
msgid "@E has illegal characters in its name.\n"
msgstr "@E的名称中有无效字符。\n"
#. @-expanded: Missing '.' in directory inode %i.\n
-#: e2fsck/problem.c:1371
-#, c-format
+#: e2fsck/problem.c:1440
+#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
msgstr "@d@i %i 中缺少“.”。\n"
#. @-expanded: Missing '..' in directory inode %i.\n
-#: e2fsck/problem.c:1376
-#, c-format
+#: e2fsck/problem.c:1446
+#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
msgstr "@d@i %i 中缺少“..”。\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
-#: e2fsck/problem.c:1381
+#: e2fsck/problem.c:1451
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
msgstr "@d@i %i 中的第一个@e“%Dn”(@i=%Di)@s“.”\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
-#: e2fsck/problem.c:1386
+#: e2fsck/problem.c:1456
msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
msgstr "@d@i %i 中的第二个@e“%Dn”(@i=%Di)@s“..”\n"
#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
-#: e2fsck/problem.c:1391
+#: e2fsck/problem.c:1461
msgid "i_faddr @F %IF, @s zero.\n"
msgstr "@i %i (%Q)的i_faddr为 %IF,@s0。\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
-#: e2fsck/problem.c:1396
+#: e2fsck/problem.c:1466
msgid "i_file_acl @F %If, @s zero.\n"
msgstr "@i %i (%Q)的i_file_acl为 %IF,@s0。\n"
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
-#: e2fsck/problem.c:1401
+#: e2fsck/problem.c:1471
#, fuzzy
+#| msgid "i_fsize @F %N, @s zero.\n"
msgid "i_size_high @F %Id, @s zero.\n"
msgstr "@i %i (%Q)的i_size为 %N,@s0。\n"
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1406
+#: e2fsck/problem.c:1476
msgid "i_frag @F %N, @s zero.\n"
msgstr "@i %i (%Q)的i_frag为 %N,@s0。\n"
#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1411
+#: e2fsck/problem.c:1481
msgid "i_fsize @F %N, @s zero.\n"
msgstr "@i %i (%Q)的i_size为 %N,@s0。\n"
#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
-#: e2fsck/problem.c:1416
+#: e2fsck/problem.c:1486
msgid "@i %i (%Q) has @n mode (%Im).\n"
msgstr "@i %i(%Q)有@n模式 (%Im)。\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
-#: e2fsck/problem.c:1421
+#: e2fsck/problem.c:1491
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
msgstr "@d@i %i,%B,偏移量 %N:@d已损坏\n"
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
-#: e2fsck/problem.c:1426
+#: e2fsck/problem.c:1496
msgid "@d @i %i, %B, offset %N: filename too long\n"
msgstr "@d@i %i,%B,偏移量 %N:文件名过长\n"
#. @-expanded: directory inode %i has an unallocated %B.
-#: e2fsck/problem.c:1431
+#: e2fsck/problem.c:1501
msgid "@d @i %i has an unallocated %B. "
msgstr "@d@i %i 含有未分配的 %B。 "
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1436
-#, c-format
+#: e2fsck/problem.c:1507
+#, no-c-format
msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
msgstr "@d@i %i 中的“.”@d@e 没有以NULL终止\n"
#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
-#: e2fsck/problem.c:1441
-#, c-format
+#: e2fsck/problem.c:1513
+#, no-c-format
msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
msgstr "@d@i %i 中的“..”@d@e 没有以NULL终止\n"
#. @-expanded: inode %i (%Q) is an illegal character device.\n
-#: e2fsck/problem.c:1446
+#: e2fsck/problem.c:1518
msgid "@i %i (%Q) is an @I character @v.\n"
msgstr "@i %i(%Q)是一个@I的字符@v。\n"
#. @-expanded: inode %i (%Q) is an illegal block device.\n
-#: e2fsck/problem.c:1451
+#: e2fsck/problem.c:1523
msgid "@i %i (%Q) is an @I @b @v.\n"
msgstr "@i %i(%Q)是一个@I的@b@v。\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
-#: e2fsck/problem.c:1456
+#: e2fsck/problem.c:1528
msgid "@E is duplicate '.' @e.\n"
msgstr "@E为重复的“.”目录@e。\n"
#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
-#: e2fsck/problem.c:1461
+#: e2fsck/problem.c:1533
msgid "@E is duplicate '..' @e.\n"
msgstr "@E为重复的“..”目录@e。\n"
-#: e2fsck/problem.c:1466 e2fsck/problem.c:1801
-#, c-format
+#: e2fsck/problem.c:1539 e2fsck/problem.c:1898
+#, no-c-format
msgid "Internal error: couldn't find dir_info for %i.\n"
msgstr "内部错误:无法找到 %i 的dir_info。\n"
#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
-#: e2fsck/problem.c:1471
+#: e2fsck/problem.c:1544
msgid "@E has rec_len of %Dr, @s %N.\n"
msgstr "@E的rec_len为 %Dr,@s %N。\n"
#. @-expanded: error allocating icount structure: %m\n
-#: e2fsck/problem.c:1476
-#, c-format
+#: e2fsck/problem.c:1550
+#, no-c-format
msgid "@A icount structure: %m\n"
msgstr "分配icount结构体时出错:%m\n"
#. @-expanded: Error iterating over directory blocks: %m\n
-#: e2fsck/problem.c:1481
-#, c-format
+#: e2fsck/problem.c:1556
+#, no-c-format
msgid "Error iterating over @d @bs: %m\n"
msgstr "迭代@d@b时出错:%m\n"
#. @-expanded: Error reading directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1486
+#: e2fsck/problem.c:1561
msgid "Error reading @d @b %b (@i %i): %m\n"
msgstr "读取@d@b %b(@i %i)时出错:%m\n"
#. @-expanded: Error writing directory block %b (inode %i): %m\n
-#: e2fsck/problem.c:1491
+#: e2fsck/problem.c:1566
msgid "Error writing @d @b %b (@i %i): %m\n"
msgstr "写入@d@b %b(@i %i)时出错:%m\n"
#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
-#: e2fsck/problem.c:1496
-#, c-format
+#: e2fsck/problem.c:1572
+#, no-c-format
msgid "@A new @d @b for @i %i (%s): %m\n"
msgstr "为@i %i(%s)分配新@d@b时出错:%m\n"
#. @-expanded: Error deallocating inode %i: %m\n
-#: e2fsck/problem.c:1501
-#, c-format
+#: e2fsck/problem.c:1578
+#, no-c-format
msgid "Error deallocating @i %i: %m\n"
msgstr "取消分配@i %i时出错:%m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
-#: e2fsck/problem.c:1506
-#, c-format
+#: e2fsck/problem.c:1584
+#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
msgstr "%p(%i)中“.”的@d@e太大。\n"
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
-#: e2fsck/problem.c:1511
+#: e2fsck/problem.c:1589
msgid "@i %i (%Q) is an @I FIFO.\n"
msgstr "@i %i(%Q)是一个@I队列。\n"
#. @-expanded: inode %i (%Q) is an illegal socket.\n
-#: e2fsck/problem.c:1516
+#: e2fsck/problem.c:1594
msgid "@i %i (%Q) is an @I socket.\n"
msgstr "@i %i(%Q)是一个@I套接字。\n"
#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
-#: e2fsck/problem.c:1521
+#: e2fsck/problem.c:1599
msgid "Setting filetype for @E to %N.\n"
msgstr "将@E的文件类型设置为 %N。\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
-#: e2fsck/problem.c:1526
+#: e2fsck/problem.c:1604
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
msgstr "@E含有错误的文件类型(%Dt,@s %N)。\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
-#: e2fsck/problem.c:1531
+#: e2fsck/problem.c:1609
msgid "@E has filetype set.\n"
msgstr "@E被设置了文件类型。\n"
#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
-#: e2fsck/problem.c:1536
+#: e2fsck/problem.c:1614
msgid "@E has a @z name.\n"
msgstr "@E含有长度为零的名称。\n"
#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
-#: e2fsck/problem.c:1541
+#: e2fsck/problem.c:1619
msgid "Symlink %Q (@i #%i) is @n.\n"
msgstr "符号链接 %Q(@i #%i)无效。\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
-#: e2fsck/problem.c:1546
+#: e2fsck/problem.c:1624
msgid "@a @b @F @n (%If).\n"
msgstr "@i %i 的@a@b无效(%lf)。\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
-#: e2fsck/problem.c:1551
+#: e2fsck/problem.c:1629
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
msgstr "@f含有大文件,但@S中未设置LARGE_FILE标志。\n"
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
-#: e2fsck/problem.c:1556
+#: e2fsck/problem.c:1634
msgid "@p @h %d: %B not referenced\n"
msgstr "@h %d 中发现问题:%B\n"
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
-#: e2fsck/problem.c:1561
+#: e2fsck/problem.c:1639
msgid "@p @h %d: %B referenced twice\n"
msgstr "@h %d 中发现问题:%B 被引用了两次\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
-#: e2fsck/problem.c:1566
+#: e2fsck/problem.c:1644
msgid "@p @h %d: %B has bad min hash\n"
msgstr "@h %d 中发现问题:%B 含有错误的最小hash值\n"
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
-#: e2fsck/problem.c:1571
+#: e2fsck/problem.c:1649
msgid "@p @h %d: %B has bad max hash\n"
msgstr "@h %d 中发现问题:%B 含有错误的最大hash值\n"
#. @-expanded: invalid HTREE directory inode %d (%q).
-#: e2fsck/problem.c:1576
+#: e2fsck/problem.c:1654
msgid "@n @h %d (%q). "
msgstr "@n@h %d(%q)。 "
#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
-#: e2fsck/problem.c:1580
+#: e2fsck/problem.c:1658
msgid "@p @h %d (%q): bad @b number %b.\n"
msgstr "@h %d(%q)中发现问题:@b编号 %b 无效。\n"
#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
-#: e2fsck/problem.c:1590
-#, c-format
+#: e2fsck/problem.c:1669
+#, no-c-format
msgid "@p @h %d: root node is @n\n"
msgstr "@p@h %d:结点@n\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
-#: e2fsck/problem.c:1595
+#: e2fsck/problem.c:1674
msgid "@p @h %d: %B has @n limit (%N)\n"
msgstr "@h %d 中发现问题:%B 含有@n限制(%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
-#: e2fsck/problem.c:1600
+#: e2fsck/problem.c:1679
msgid "@p @h %d: %B has @n count (%N)\n"
msgstr "@h %d 中发现问题:%B 含有@n计数(%N)\n"
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
-#: e2fsck/problem.c:1605
+#: e2fsck/problem.c:1684
msgid "@p @h %d: %B has an unordered hash table\n"
msgstr "@h %d 中发现问题:%B 含有未排序的hash表\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
-#: e2fsck/problem.c:1610
+#: e2fsck/problem.c:1689
msgid "@p @h %d: %B has @n depth (%N)\n"
msgstr "@h %d 中发现问题:%B 含有@n深度(%N)\n"
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
-#: e2fsck/problem.c:1615
+#: e2fsck/problem.c:1694
msgid "Duplicate @E found. "
msgstr "发现%p(%i)中有重复项“%Dn”。 "
#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
#. @-expanded: Rename to %s
-#: e2fsck/problem.c:1620
+#: e2fsck/problem.c:1699
#, no-c-format
msgid ""
"@E has a non-unique filename.\n"
@@ -2543,7 +2549,7 @@ msgstr ""
#. @-expanded: Duplicate entry '%Dn' found.\n
#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1625
+#: e2fsck/problem.c:1704
msgid ""
"Duplicate @e '%Dn' found.\n"
"\tMarking %p (%i) to be rebuilt.\n"
@@ -2554,155 +2560,156 @@ msgstr ""
"\n"
#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1630
+#: e2fsck/problem.c:1709
msgid "i_blocks_hi @F %N, @s zero.\n"
msgstr "@i %i(%Q)的i_blocks_hi为 %N,@s0。\n"
#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
-#: e2fsck/problem.c:1635
+#: e2fsck/problem.c:1714
msgid "Unexpected @b in @h %d (%q).\n"
msgstr "@h %d(%q)中有额外的@b。\n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
-#: e2fsck/problem.c:1639
+#: e2fsck/problem.c:1719
msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
msgstr "@E引用了@g %g 中的@i %Di,但该@g被设置了_INODE_UNINIT标志。 \n"
#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
-#: e2fsck/problem.c:1644
+#: e2fsck/problem.c:1724
msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
msgstr "@E引用了@g %g 中的@i %Di,但该@i位于未使用inode区。 \n"
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
-#: e2fsck/problem.c:1649
+#: e2fsck/problem.c:1729
msgid "i_file_acl_hi @F %N, @s zero.\n"
msgstr "@i %i (%Q)的i_file_acl_hi为 %N,@s0。\n"
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
-#: e2fsck/problem.c:1654
-#, c-format
+#: e2fsck/problem.c:1735
+#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
msgstr "@p@h %d:根结点的校验值错误。\n"
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
-#: e2fsck/problem.c:1659
-#, c-format
+#: e2fsck/problem.c:1741
+#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
msgstr "@p@h %d:内部结点的校验值错误。\n"
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
-#: e2fsck/problem.c:1664
+#: e2fsck/problem.c:1746
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
msgstr "@d@i %i,%B,偏移量 %N:@d缺少校验值。\n"
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
-#: e2fsck/problem.c:1669
+#: e2fsck/problem.c:1751
msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
msgstr "@d@i %i,%B:@d通过了检验,但校验值错误。\n"
#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
-#: e2fsck/problem.c:1674
+#: e2fsck/problem.c:1756
msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
msgstr "内联@d @i %i 的大小(%N)必须为4的整数倍。\n"
#. @-expanded: Fixing size of inline directory inode %i failed.\n
-#: e2fsck/problem.c:1679
-#, c-format
+#: e2fsck/problem.c:1762
+#, no-c-format
msgid "Fixing size of inline @d @i %i failed.\n"
msgstr "修复内联@d @i %i 的大小失败。\n"
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
-#: e2fsck/problem.c:1684
+#: e2fsck/problem.c:1767
msgid "Encrypted @E is too short.\n"
msgstr "加密的@E太短。\n"
#. @-expanded: Pass 3: Checking directory connectivity\n
-#: e2fsck/problem.c:1691
+#: e2fsck/problem.c:1774
msgid "Pass 3: Checking @d connectivity\n"
msgstr "第 3 步:检查目录连接性\n"
#. @-expanded: root inode not allocated.
-#: e2fsck/problem.c:1696
+#: e2fsck/problem.c:1779
msgid "@r not allocated. "
msgstr "@r未被分配。 "
#. @-expanded: No room in lost+found directory.
-#: e2fsck/problem.c:1701
+#: e2fsck/problem.c:1784
msgid "No room in @l @d. "
msgstr "@l@d中没有空间。 "
#. @-expanded: Unconnected directory inode %i (%p)\n
-#: e2fsck/problem.c:1706
-#, c-format
+#: e2fsck/problem.c:1790
+#, no-c-format
msgid "Unconnected @d @i %i (%p)\n"
msgstr "未被连接的@d@i %i(%p)\n"
#. @-expanded: /lost+found not found.
-#: e2fsck/problem.c:1711
+#: e2fsck/problem.c:1795
msgid "/@l not found. "
msgstr "/@l未找到。"
#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
-#: e2fsck/problem.c:1716
+#: e2fsck/problem.c:1800
msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
msgstr "%Q(%i)中的“..”为 %P(%j),@s %q(%d)\n"
#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
-#: e2fsck/problem.c:1721
+#: e2fsck/problem.c:1806
+#, no-c-format
msgid "Bad or non-existent /@l. Cannot reconnect.\n"
msgstr "错误或不存在的/@l。无法重新连接。\n"
#. @-expanded: Could not expand /lost+found: %m\n
-#: e2fsck/problem.c:1726
-#, c-format
+#: e2fsck/problem.c:1812
+#, no-c-format
msgid "Could not expand /@l: %m\n"
msgstr "无法扩充/@l:%m\n"
-#: e2fsck/problem.c:1731
-#, c-format
+#: e2fsck/problem.c:1818
+#, no-c-format
msgid "Could not reconnect %i: %m\n"
msgstr "无法重新连接%i:%m\n"
#. @-expanded: Error while trying to find /lost+found: %m\n
-#: e2fsck/problem.c:1736
-#, c-format
+#: e2fsck/problem.c:1824
+#, no-c-format
msgid "Error while trying to find /@l: %m\n"
msgstr "尝试查找/@l时出错:%m\n"
#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1741
-#, c-format
+#: e2fsck/problem.c:1830
+#, no-c-format
msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_block:尝试创建/@l@d时%m\n"
#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
-#: e2fsck/problem.c:1746
-#, c-format
+#: e2fsck/problem.c:1836
+#, no-c-format
msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
msgstr "ext2fs_new_inode:尝试创建/@l@d时%m\n"
#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
-#: e2fsck/problem.c:1751
-#, c-format
+#: e2fsck/problem.c:1842
+#, no-c-format
msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
msgstr "ext2fs_new_dir_block:创建新的@d@b时%m\n"
#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
-#: e2fsck/problem.c:1756
-#, c-format
+#: e2fsck/problem.c:1848
+#, no-c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
msgstr "ext2fs_new_dir_block:为/@l创建新的@d@b时%m\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
-#: e2fsck/problem.c:1761
-#, c-format
+#: e2fsck/problem.c:1854
+#, no-c-format
msgid "Error while adjusting @i count on @i %i\n"
msgstr "调整@i %i的inode计数时出错\n"
#. @-expanded: Couldn't fix parent of inode %i: %m\n
#. @-expanded: \n
-#: e2fsck/problem.c:1766
-#, c-format
+#: e2fsck/problem.c:1860
+#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: %m\n"
"\n"
@@ -2712,8 +2719,8 @@ msgstr ""
#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
#. @-expanded: \n
-#: e2fsck/problem.c:1771
-#, c-format
+#: e2fsck/problem.c:1866
+#, no-c-format
msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
"\n"
@@ -2722,41 +2729,41 @@ msgstr ""
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
-#: e2fsck/problem.c:1781
-#, c-format
+#: e2fsck/problem.c:1877
+#, no-c-format
msgid "Error creating root @d (%s): %m\n"
msgstr "创建根@d(%s)时出错:%m\n"
#. @-expanded: Error creating /lost+found directory (%s): %m\n
-#: e2fsck/problem.c:1786
-#, c-format
+#: e2fsck/problem.c:1883
+#, no-c-format
msgid "Error creating /@l @d (%s): %m\n"
msgstr "创建/@l@d(%s)时出错:%m\n"
#. @-expanded: root inode is not a directory; aborting.\n
-#: e2fsck/problem.c:1791
+#: e2fsck/problem.c:1888
msgid "@r is not a @d; aborting.\n"
msgstr "@r不是一个@d;已终止执行。\n"
#. @-expanded: Cannot proceed without a root inode.\n
-#: e2fsck/problem.c:1796
+#: e2fsck/problem.c:1893
msgid "Cannot proceed without a @r.\n"
msgstr "无法在没有@r的情况下继续。\n"
#. @-expanded: /lost+found is not a directory (ino=%i)\n
-#: e2fsck/problem.c:1806
-#, c-format
+#: e2fsck/problem.c:1904
+#, no-c-format
msgid "/@l is not a @d (ino=%i)\n"
msgstr "/@l 不是一个@d(ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
-#: e2fsck/problem.c:1811
+#: e2fsck/problem.c:1909
msgid "/@l has inline data\n"
msgstr "/@l 含有内联数据\n"
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
-#: e2fsck/problem.c:1816
+#: e2fsck/problem.c:1914
msgid ""
"Cannot allocate space for /@l.\n"
"Place lost files in root directory instead"
@@ -2767,7 +2774,7 @@ msgstr ""
#. @-expanded: Insufficient space to recover lost files!\n
#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
#. @-expanded: \n
-#: e2fsck/problem.c:1821
+#: e2fsck/problem.c:1919
msgid ""
"Insufficient space to recover lost files!\n"
"Move data off the @f and re-run e2fsck.\n"
@@ -2778,52 +2785,52 @@ msgstr ""
"\n"
#. @-expanded: /lost+found is encrypted\n
-#: e2fsck/problem.c:1826
+#: e2fsck/problem.c:1924
msgid "/@l is encrypted\n"
msgstr "/@l 已被加密\n"
-#: e2fsck/problem.c:1833
+#: e2fsck/problem.c:1931
msgid "Pass 3A: Optimizing directories\n"
msgstr "第 3A 步:优化目录\n"
-#: e2fsck/problem.c:1838
-#, c-format
+#: e2fsck/problem.c:1937
+#, no-c-format
msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr "创建dirs_to_hash迭代器出错:%m\n"
-#: e2fsck/problem.c:1843
+#: e2fsck/problem.c:1942
msgid "Failed to optimize directory %q (%d): %m\n"
msgstr "优化目录 %q(%d)失败:%m\n"
-#: e2fsck/problem.c:1848
+#: e2fsck/problem.c:1947
msgid "Optimizing directories: "
msgstr "优化目录: "
-#: e2fsck/problem.c:1865
+#: e2fsck/problem.c:1964
msgid "Pass 4: Checking reference counts\n"
msgstr "第 4 步:检查引用计数\n"
#. @-expanded: unattached zero-length inode %i.
-#: e2fsck/problem.c:1870
-#, c-format
+#: e2fsck/problem.c:1970
+#, no-c-format
msgid "@u @z @i %i. "
msgstr "@u@z@i %i。 "
#. @-expanded: unattached inode %i\n
-#: e2fsck/problem.c:1875
-#, c-format
+#: e2fsck/problem.c:1976
+#, no-c-format
msgid "@u @i %i\n"
msgstr "@u@i %i。 \n"
#. @-expanded: inode %i ref count is %Il, should be %N.
-#: e2fsck/problem.c:1880
+#: e2fsck/problem.c:1981
msgid "@i %i ref count is %Il, @s %N. "
msgstr "@i %i 的引用计数为 %Il,@s %N。 "
#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
-#: e2fsck/problem.c:1884
+#: e2fsck/problem.c:1985
msgid ""
"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
@@ -2834,149 +2841,148 @@ msgstr ""
"@i_link_info[%i] 为 %N,@i.i_links_count 为 %Il。它们应当相同!\n"
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
-#: e2fsck/problem.c:1891
+#: e2fsck/problem.c:1992
#, fuzzy
+#| msgid "@i %i ref count is %Il, @s %N. "
msgid "@a @i %i ref count is %N, @s %n. "
msgstr "@i %i 的引用计数为 %Il,@s %N。 "
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
-#: e2fsck/problem.c:1896
+#: e2fsck/problem.c:1997
msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
msgstr ""
#. @-expanded: Pass 5: Checking group summary information\n
-#: e2fsck/problem.c:1903
+#: e2fsck/problem.c:2004
msgid "Pass 5: Checking @g summary information\n"
msgstr "第 5 步:检查@g概要信息\n"
#. @-expanded: Padding at end of inode bitmap is not set.
-#: e2fsck/problem.c:1908
+#: e2fsck/problem.c:2009
msgid "Padding at end of @i @B is not set. "
msgstr "@i@B末尾的填充值未设置。 "
#. @-expanded: Padding at end of block bitmap is not set.
-#: e2fsck/problem.c:1913
+#: e2fsck/problem.c:2014
msgid "Padding at end of @b @B is not set. "
msgstr "@b@B末尾的填充值未设置。 "
#. @-expanded: block bitmap differences:
-#: e2fsck/problem.c:1918
+#: e2fsck/problem.c:2019
msgid "@b @B differences: "
msgstr "@b@B的差异: "
#. @-expanded: inode bitmap differences:
-#: e2fsck/problem.c:1938
+#: e2fsck/problem.c:2041
msgid "@i @B differences: "
msgstr "@i@B的差异: "
#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1958
+#: e2fsck/problem.c:2063
msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
msgstr "@g #%g的可用@i计数错误(%i,实际为%j)。\n"
#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
-#: e2fsck/problem.c:1963
+#: e2fsck/problem.c:2068
msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
msgstr "@g #%g的目录计数错误(%i,实际为%j)\n"
#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
-#: e2fsck/problem.c:1968
+#: e2fsck/problem.c:2073
msgid "Free @is count wrong (%i, counted=%j).\n"
msgstr "可用@i数错误(%i,实际为%j)\n"
#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
-#: e2fsck/problem.c:1973
+#: e2fsck/problem.c:2078
msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
msgstr "@g #%g的可用@b计数错误(%i,实际为%j)。\n"
#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
-#: e2fsck/problem.c:1978
+#: e2fsck/problem.c:2083
msgid "Free @bs count wrong (%b, counted=%c).\n"
msgstr "可用@b数错误(%i,实际为%j)\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
-#: e2fsck/problem.c:1983
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
+#: e2fsck/problem.c:2088
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr "程序错误:@f(# %n)@B端点(%b,%c)与计算值(%i,%j)不符\n"
-#: e2fsck/problem.c:1989
+#: e2fsck/problem.c:2094
msgid "Internal error: fudging end of bitmap (%N)\n"
msgstr "内部错误:虚构的位图端点\n"
#. @-expanded: Error copying in replacement inode bitmap: %m\n
-#: e2fsck/problem.c:1994
-#, c-format
+#: e2fsck/problem.c:2100
+#, no-c-format
msgid "Error copying in replacement @i @B: %m\n"
msgstr "替换@i@B时拷贝错误:%m\n"
#. @-expanded: Error copying in replacement block bitmap: %m\n
-#: e2fsck/problem.c:1999
-#, c-format
+#: e2fsck/problem.c:2106
+#, no-c-format
msgid "Error copying in replacement @b @B: %m\n"
msgstr "替换@b@B时拷贝错误:%m\n"
#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
-#: e2fsck/problem.c:2024
-#, c-format
+#: e2fsck/problem.c:2136
+#, no-c-format
msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
msgstr "@g %g @b已被使用,但@g被标记为BLOCK_UNINIT\n"
#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
-#: e2fsck/problem.c:2029
-#, c-format
+#: e2fsck/problem.c:2142
+#, no-c-format
msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
msgstr "@g %g @i已被使用,但@g被标记为INODE_UNINIT\n"
#. @-expanded: group %g inode bitmap does not match checksum.\n
-#: e2fsck/problem.c:2034
-#, c-format
+#: e2fsck/problem.c:2148
+#, no-c-format
msgid "@g %g @i @B does not match checksum.\n"
msgstr "@g %g @i @B 与自身校验值不符。\n"
#. @-expanded: group %g block bitmap does not match checksum.\n
-#: e2fsck/problem.c:2039
-#, c-format
+#: e2fsck/problem.c:2154
+#, no-c-format
msgid "@g %g @b @B does not match checksum.\n"
msgstr "@g %g @b @B 与自身校验值不符。\n"
#. @-expanded: Recreate journal
-#: e2fsck/problem.c:2046
+#: e2fsck/problem.c:2161
msgid "Recreate @j"
msgstr "重建@j"
-#: e2fsck/problem.c:2051
+#: e2fsck/problem.c:2166
msgid "Update quota info for quota type %N"
msgstr "更新配额类型 %N 的配额信息"
#. @-expanded: Error setting block group checksum info: %m\n
-#: e2fsck/problem.c:2056
-#, c-format
+#: e2fsck/problem.c:2172
+#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
msgstr "设置@b@g的校验信息时出错:%m\n"
-#: e2fsck/problem.c:2061
-#, c-format
+#: e2fsck/problem.c:2178
+#, no-c-format
msgid "Error writing file system info: %m\n"
msgstr "写入文件系统信息时出错:%m\n"
-#: e2fsck/problem.c:2066
-#, c-format
+#: e2fsck/problem.c:2184
+#, no-c-format
msgid "Error flushing writes to storage device: %m\n"
msgstr "将缓冲写入到存储设备:%m\n"
-#: e2fsck/problem.c:2071
+#: e2fsck/problem.c:2189
msgid "Error writing quota info for quota type %N: %m\n"
msgstr "写入配额类型 %N 的配额信息时出错:%m\n"
-#: e2fsck/problem.c:2194
+#: e2fsck/problem.c:2352
#, c-format
msgid "Unhandled error code (0x%x)!\n"
msgstr "未处理的错误码 (0x%x)!\n"
-#: e2fsck/problem.c:2320 e2fsck/problem.c:2324
+#: e2fsck/problem.c:2482 e2fsck/problem.c:2486
msgid "IGNORED"
msgstr "已忽略"
@@ -3003,14 +3009,14 @@ msgid "while doing inode scan"
msgstr "进行inode扫描时"
#: e2fsck/super.c:224
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_block_iterate for inode %u"
-msgstr "为inode %d 调用ext2fs_block_iterate时"
+msgstr "为 inode %u 调用 ext2fs_block_iterate 时"
#: e2fsck/super.c:249
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_adjust_ea_refcount2 for inode %u"
-msgstr "为inode %d 调用ext2fs_adjust_ea_refcount2时"
+msgstr "为 inode %u 调用 ext2fs_adjust_ea_refcount2 时"
#: e2fsck/super.c:374
msgid "Truncating"
@@ -3020,7 +3026,7 @@ msgstr "正在截断"
msgid "Clearing"
msgstr "正在清除"
-#: e2fsck/unix.c:77
+#: e2fsck/unix.c:78
#, c-format
msgid ""
"Usage: %s [-panyrcdfktvDFV] [-b superblock] [-B blocksize]\n"
@@ -3031,15 +3037,14 @@ msgstr ""
"\t\t[-l|-L 坏块文件] [-C fd] [-j 外部日志]\n"
"\t\t[-E 扩展选项] [-z 撤销文件] 设备\n"
-#: e2fsck/unix.c:82
+#: e2fsck/unix.c:83
msgid ""
"\n"
"Emergency help:\n"
" -p Automatic repair (no questions)\n"
" -n Make no changes to the filesystem\n"
" -y Assume \"yes\" to all questions\n"
-" -c Check for bad blocks and add them to the badblock "
-"list\n"
+" -c Check for bad blocks and add them to the badblock list\n"
" -f Force checking even if filesystem is marked clean\n"
msgstr ""
"\n"
@@ -3050,7 +3055,7 @@ msgstr ""
" -c 检查可能的坏块,并将它们加入坏块列表\n"
" -f 强制进行检查,即使文件系统被标记为“没有问题”\n"
-#: e2fsck/unix.c:88
+#: e2fsck/unix.c:89
msgid ""
" -v Be verbose\n"
" -b superblock Use alternative superblock\n"
@@ -3068,12 +3073,12 @@ msgstr ""
" -L bad_blocks_file 指定坏块列表(文件)\n"
" -z undo_file 创建一个撤销文件\n"
-#: e2fsck/unix.c:136
+#: e2fsck/unix.c:137
#, c-format
msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
msgstr "%s:%u/%u 文件(%0d.%d%% 为非连续的), %llu/%llu 块\n"
-#: e2fsck/unix.c:162
+#: e2fsck/unix.c:163
#, c-format
msgid ""
"\n"
@@ -3085,46 +3090,46 @@ msgstr[0] ""
"\n"
"%12u 个已使用的inode(%2.2f%%,总共 %u)\n"
-#: e2fsck/unix.c:166
+#: e2fsck/unix.c:167
#, c-format
msgid "%12u non-contiguous file (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
msgstr[0] "%12u 个不连续的文件(%0d.%d%%)\n"
-#: e2fsck/unix.c:171
+#: e2fsck/unix.c:172
#, c-format
msgid "%12u non-contiguous directory (%0d.%d%%)\n"
msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
msgstr[0] "%12u 个不连续的目录(%0d.%d%%)\n"
-#: e2fsck/unix.c:176
+#: e2fsck/unix.c:177
#, c-format
msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
msgstr " # 一次/二次/三次链接块数:%u/%u/%u\n"
-#: e2fsck/unix.c:184
+#: e2fsck/unix.c:185
msgid " Extent depth histogram: "
msgstr " Extent深度直方图: "
-#: e2fsck/unix.c:193
+#: e2fsck/unix.c:194
#, c-format
msgid "%12llu block used (%2.2f%%, out of %llu)\n"
msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
msgstr[0] "%12llu 个已使用的块(%2.2f%%,总共 %llu)\n"
-#: e2fsck/unix.c:197
+#: e2fsck/unix.c:198
#, c-format
msgid "%12u bad block\n"
msgid_plural "%12u bad blocks\n"
msgstr[0] "%12u 个坏块\n"
-#: e2fsck/unix.c:199
+#: e2fsck/unix.c:200
#, c-format
msgid "%12u large file\n"
msgid_plural "%12u large files\n"
msgstr[0] "%12u 个大文件\n"
-#: e2fsck/unix.c:201
+#: e2fsck/unix.c:202
#, c-format
msgid ""
"\n"
@@ -3136,96 +3141,96 @@ msgstr[0] ""
"\n"
"%12u 个普通文件\n"
-#: e2fsck/unix.c:203
+#: e2fsck/unix.c:204
#, c-format
msgid "%12u directory\n"
msgid_plural "%12u directories\n"
msgstr[0] "%12u 个文件夹\n"
-#: e2fsck/unix.c:205
+#: e2fsck/unix.c:206
#, c-format
msgid "%12u character device file\n"
msgid_plural "%12u character device files\n"
msgstr[0] "%12u 个字符设备文件\n"
-#: e2fsck/unix.c:208
+#: e2fsck/unix.c:209
#, c-format
msgid "%12u block device file\n"
msgid_plural "%12u block device files\n"
msgstr[0] "%12u 个块设备文件\n"
-#: e2fsck/unix.c:210
+#: e2fsck/unix.c:211
#, c-format
msgid "%12u fifo\n"
msgid_plural "%12u fifos\n"
msgstr[0] "%12u 个队列文件\n"
-#: e2fsck/unix.c:212
+#: e2fsck/unix.c:213
#, c-format
msgid "%12u link\n"
msgid_plural "%12u links\n"
msgstr[0] "%12u 个链接\n"
-#: e2fsck/unix.c:214
+#: e2fsck/unix.c:215
#, c-format
msgid "%12u symbolic link"
msgid_plural "%12u symbolic links"
msgstr[0] "%12u 个符号链接"
-#: e2fsck/unix.c:216
+#: e2fsck/unix.c:217
#, c-format
msgid " (%u fast symbolic link)\n"
msgid_plural " (%u fast symbolic links)\n"
msgstr[0] " (%u 个直接符号链接)\n"
-#: e2fsck/unix.c:220
+#: e2fsck/unix.c:221
#, c-format
msgid "%12u socket\n"
msgid_plural "%12u sockets\n"
msgstr[0] "%12u 个套接字文件\n"
-#: e2fsck/unix.c:224
+#: e2fsck/unix.c:225
#, c-format
msgid "%12u file\n"
msgid_plural "%12u files\n"
msgstr[0] "%12u 个文件\n"
-#: e2fsck/unix.c:237 misc/badblocks.c:1002 misc/tune2fs.c:3022 misc/util.c:126
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:129
#: resize/main.c:354
#, c-format
msgid "while determining whether %s is mounted."
msgstr "确定 %s 是否已挂载时"
# Note:The second "%s" represents the current status of the device (defined by the first "%s"), thus it is not necessary to translate the word "is". The second "%s" will serve as the copula as well as the predicative (in Chinese).
-#: e2fsck/unix.c:258
+#: e2fsck/unix.c:259
#, c-format
msgid "Warning! %s is mounted.\n"
msgstr "警告! %s已被挂载。\n"
# Note:The second "%s" represents the current status of the device (defined by the first "%s"), thus it is not necessary to translate the word "is". The second "%s" will serve as the copula as well as the predicative (in Chinese).
-#: e2fsck/unix.c:261
+#: e2fsck/unix.c:262
#, c-format
msgid "Warning! %s is in use.\n"
msgstr "警告! %s正被使用。\n"
-#: e2fsck/unix.c:267
+#: e2fsck/unix.c:268
#, c-format
msgid "%s is mounted.\n"
msgstr "%s 已挂载。\n"
# Same as the above.
-#: e2fsck/unix.c:269
+#: e2fsck/unix.c:270
#, c-format
msgid "%s is in use.\n"
msgstr "%s正被使用。\n"
-#: e2fsck/unix.c:271
+#: e2fsck/unix.c:272
msgid ""
"Cannot continue, aborting.\n"
"\n"
msgstr "无法继续,已中止。\n"
-#: e2fsck/unix.c:273
+#: e2fsck/unix.c:274
msgid ""
"\n"
"\n"
@@ -3239,86 +3244,96 @@ msgstr ""
"使文件系统遭受 *** 严重损坏 ***!\n"
"\n"
-#: e2fsck/unix.c:278
+#: e2fsck/unix.c:279
msgid "Do you really want to continue"
msgstr "你真的想要继续吗"
-#: e2fsck/unix.c:280
+#: e2fsck/unix.c:281
msgid "check aborted.\n"
msgstr "检查被中止。\n"
-#: e2fsck/unix.c:374
+#: e2fsck/unix.c:375
msgid " contains a file system with errors"
msgstr " 有一个含有错误的文件系统"
-#: e2fsck/unix.c:376
+#: e2fsck/unix.c:377
msgid " was not cleanly unmounted"
msgstr " 未被彻底卸载"
-#: e2fsck/unix.c:378
+#: e2fsck/unix.c:379
msgid " primary superblock features different from backup"
msgstr " 主超级块与备份超级块有差异"
-#: e2fsck/unix.c:382
+#: e2fsck/unix.c:383
#, c-format
msgid " has been mounted %u times without being checked"
msgstr " 已被挂载 %u 次,但尚未被检查"
-#: e2fsck/unix.c:389
+#: e2fsck/unix.c:390
msgid " has filesystem last checked time in the future"
msgstr " 上一次检查的时间在未来"
-#: e2fsck/unix.c:395
+#: e2fsck/unix.c:396
#, c-format
msgid " has gone %u days without being checked"
msgstr " 已超过 %u 未被检查"
-#: e2fsck/unix.c:403
+#: e2fsck/unix.c:404
msgid "ignoring check interval, broken_system_clock set\n"
msgstr ""
-#: e2fsck/unix.c:409
+#: e2fsck/unix.c:410
msgid ", check forced.\n"
msgstr ",强制进行检查。\n"
-#: e2fsck/unix.c:442
+#: e2fsck/unix.c:443
#, c-format
msgid "%s: clean, %u/%u files, %llu/%llu blocks"
msgstr "%s:没有问题,%u/%u 文件,%llu/%llu 块"
-#: e2fsck/unix.c:462
+#: e2fsck/unix.c:463
msgid " (check deferred; on battery)"
msgstr " (正在使用电池;已推迟检查)"
-#: e2fsck/unix.c:465
+#: e2fsck/unix.c:466
msgid " (check after next mount)"
msgstr "(将于下次挂载时进行检查)"
-#: e2fsck/unix.c:467
+#: e2fsck/unix.c:468
#, c-format
msgid " (check in %ld mounts)"
msgstr " (每挂载 %ld 次就进行检查)"
-#: e2fsck/unix.c:617
+#: e2fsck/unix.c:618
#, c-format
msgid "ERROR: Couldn't open /dev/null (%s)\n"
msgstr "错误:无法打开/dev/null(%s)\n"
-#: e2fsck/unix.c:688
+#: e2fsck/unix.c:689
msgid "Invalid EA version.\n"
msgstr "无效的EA版本号。\n"
-#: e2fsck/unix.c:701
+#: e2fsck/unix.c:702
msgid "Invalid readahead buffer size.\n"
msgstr "预读取缓冲区大小无效。\n"
-#: e2fsck/unix.c:750
+#: e2fsck/unix.c:757
#, c-format
msgid "Unknown extended option: %s\n"
msgstr "未知的扩展属性:%s\n"
-#: e2fsck/unix.c:758
+#: e2fsck/unix.c:765
#, fuzzy
+#| msgid ""
+#| "\n"
+#| "Bad extended option(s) specified: %s\n"
+#| "\n"
+#| "Extended options are separated by commas, and may take an argument which\n"
+#| "\tis set off by an equals ('=') sign.\n"
+#| "\n"
+#| "Valid extended options are:\n"
+#| "\tsuperblock=<superblock number>\n"
+#| "\tblocksize=<blocksize>\n"
msgid ""
"\n"
"Extended options are separated by commas, and may take an argument which\n"
@@ -3334,16 +3349,15 @@ msgstr ""
"\tsuperblock=<超级块编号>\n"
"\tblocksize=<块大小>\n"
-#: e2fsck/unix.c:762
+#: e2fsck/unix.c:769
msgid "\tea_ver=<ea_version (1 or 2)>\n"
-msgstr ""
+msgstr "\tea_ver=<ea_version (1 或 2)>\n"
-#: e2fsck/unix.c:771
-#, fuzzy
+#: e2fsck/unix.c:778
msgid "\treadahead_kb=<buffer size>\n"
-msgstr "预读取缓冲区大小无效。\n"
+msgstr "\treadahead_kb=<缓冲大小>\n"
-#: e2fsck/unix.c:783
+#: e2fsck/unix.c:790
#, c-format
msgid ""
"Syntax error in e2fsck config file (%s, line #%d)\n"
@@ -3352,55 +3366,55 @@ msgstr ""
"e2fsck 配置文件中语法错误(%s,第 %d 行)\n"
"\t%s\n"
-#: e2fsck/unix.c:856
+#: e2fsck/unix.c:863
#, c-format
msgid "Error validating file descriptor %d: %s\n"
msgstr "验证文件描述符 %d 时出错:%s\n"
-#: e2fsck/unix.c:860
+#: e2fsck/unix.c:867
msgid "Invalid completion information file descriptor"
msgstr "无效的文件描述符信息"
-#: e2fsck/unix.c:875
+#: e2fsck/unix.c:882
msgid "Only one of the options -p/-a, -n or -y may be specified."
msgstr "只能使用选项 -p/-a、-n 或 -y 其中之一。"
-#: e2fsck/unix.c:896
+#: e2fsck/unix.c:903
#, c-format
msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr "此版本的e2fsck不支持 -t 选项。\n"
-#: e2fsck/unix.c:927 e2fsck/unix.c:1005 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1741 misc/tune2fs.c:2036 misc/tune2fs.c:2054
+#: e2fsck/unix.c:934 e2fsck/unix.c:1012 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
#, c-format
msgid "Unable to resolve '%s'"
msgstr "无法解析“%s”"
-#: e2fsck/unix.c:984
+#: e2fsck/unix.c:991
msgid "The -n and -D options are incompatible."
msgstr "%s:-n 和 -D 选项是互相排斥的。"
-#: e2fsck/unix.c:989
+#: e2fsck/unix.c:996
msgid "The -n and -c options are incompatible."
msgstr "%s:-n 和 -c 选项是互相排斥的。"
-#: e2fsck/unix.c:994
+#: e2fsck/unix.c:1001
msgid "The -n and -l/-L options are incompatible."
msgstr "%s:-n 和 -l/-L 选项是相互排斥的。"
-#: e2fsck/unix.c:1018
+#: e2fsck/unix.c:1025
msgid "The -D and -E fixes_only options are incompatible."
msgstr "-D 和 -E fixes_only 选项是互相排斥的。"
-#: e2fsck/unix.c:1024
+#: e2fsck/unix.c:1031
msgid "The -E bmap2extent and fixes_only options are incompatible."
msgstr "-E bmap2extent 和 fixes_only 选项是互相排斥的。"
-#: e2fsck/unix.c:1088
+#: e2fsck/unix.c:1095
msgid "The -c and the -l/-L options may not be both used at the same time.\n"
msgstr "-c 和 -l/-L 选项不能同时使用。\n"
-#: e2fsck/unix.c:1135
+#: e2fsck/unix.c:1142
#, c-format
msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
@@ -3409,7 +3423,7 @@ msgstr ""
"E2FSCK_JBD_DEBUG “%s”不是整数\n"
"\n"
-#: e2fsck/unix.c:1144
+#: e2fsck/unix.c:1151
#, c-format
msgid ""
"\n"
@@ -3420,33 +3434,31 @@ msgstr ""
"-%c 接收到无效的非数值参数(“%s”)\n"
"\n"
-#: e2fsck/unix.c:1235
+#: e2fsck/unix.c:1242
#, c-format
-msgid ""
-"MMP interval is %u seconds and total wait time is %u seconds. Please "
-"wait...\n"
+msgid "MMP interval is %u seconds and total wait time is %u seconds. Please wait...\n"
msgstr "MMP间隔为 %u 秒,总等候时间为 %u 秒。请稍候...\n"
-#: e2fsck/unix.c:1252 e2fsck/unix.c:1257
+#: e2fsck/unix.c:1259 e2fsck/unix.c:1264
msgid "while checking MMP block"
msgstr "检测 MMP 块时"
-#: e2fsck/unix.c:1259
-#, fuzzy, c-format
+#: e2fsck/unix.c:1266
+#, c-format
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp %s'\n"
msgstr ""
-"如果你确定文件系统并没有挂载到任何节点上,请运行:\n"
-"“tune2fs -f -E clear_mmp {设备}”\n"
+"如果您确定文件系统并没有挂载到任何节点上,请运行:\n"
+"“tune2fs -f -E clear_mmp %s”\n"
-#: e2fsck/unix.c:1275
+#: e2fsck/unix.c:1282
msgid "while reading MMP block"
msgstr "读取 MMP 块时"
-#: e2fsck/unix.c:1295 e2fsck/unix.c:1347 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2613 misc/mke2fs.c:2664 misc/tune2fs.c:2754
-#: misc/tune2fs.c:2799 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1302 e2fsck/unix.c:1354 misc/e2undo.c:236 misc/e2undo.c:281
+#: misc/mke2fs.c:2696 misc/mke2fs.c:2747 misc/tune2fs.c:2713
+#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3457,57 +3469,57 @@ msgstr ""
" e2undo %s %s\n"
"\n"
-#: e2fsck/unix.c:1336 misc/e2undo.c:270 misc/mke2fs.c:2653 misc/tune2fs.c:2788
+#: e2fsck/unix.c:1343 misc/e2undo.c:270 misc/mke2fs.c:2736 misc/tune2fs.c:2747
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr "尝试删除 %s 时"
-#: e2fsck/unix.c:1362 misc/mke2fs.c:2679 resize/main.c:243
+#: e2fsck/unix.c:1369 misc/mke2fs.c:2762 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr "尝试创建撤销记录时\n"
-#: e2fsck/unix.c:1405
+#: e2fsck/unix.c:1412
msgid "Error: ext2fs library version out of date!\n"
msgstr "错误:ext2fs库版本过旧!\n"
-#: e2fsck/unix.c:1412
+#: e2fsck/unix.c:1419
msgid "while trying to initialize program"
msgstr "尝试初始化程序时"
-#: e2fsck/unix.c:1435
+#: e2fsck/unix.c:1456
#, c-format
msgid "\tUsing %s, %s\n"
msgstr "\t使用 %s,%s\n"
-#: e2fsck/unix.c:1447
+#: e2fsck/unix.c:1468
msgid "need terminal for interactive repairs"
msgstr "需要在终端中进行交互式修复"
-#: e2fsck/unix.c:1508
+#: e2fsck/unix.c:1529
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr "%s:%s 尝试备份块\n"
-#: e2fsck/unix.c:1510
+#: e2fsck/unix.c:1531
msgid "Superblock invalid,"
msgstr "超级块无效,"
-#: e2fsck/unix.c:1511
+#: e2fsck/unix.c:1532
msgid "Group descriptors look bad..."
msgstr "组描述符似乎是错误的..."
-#: e2fsck/unix.c:1521
+#: e2fsck/unix.c:1542
#, c-format
msgid "%s: %s while using the backup blocks"
msgstr "%s:尝试备份块时 %s"
-#: e2fsck/unix.c:1525
+#: e2fsck/unix.c:1546
#, c-format
msgid "%s: going back to original superblock\n"
msgstr "%s:回到原先的超级块\n"
-#: e2fsck/unix.c:1554
+#: e2fsck/unix.c:1575
msgid ""
"The filesystem revision is apparently too high for this version of e2fsck.\n"
"(Or the filesystem superblock is corrupt)\n"
@@ -3517,105 +3529,108 @@ msgstr ""
"(也有可能超级块已损坏)\n"
"\n"
-#: e2fsck/unix.c:1561
+#: e2fsck/unix.c:1582
msgid "Could this be a zero-length partition?\n"
msgstr "分区长度为零吗?\n"
-#: e2fsck/unix.c:1563
+#: e2fsck/unix.c:1584
#, c-format
msgid "You must have %s access to the filesystem or be root\n"
msgstr "你必须具有对该文件系统的 %s 权限,或者为root\n"
-#: e2fsck/unix.c:1569
+#: e2fsck/unix.c:1590
msgid "Possibly non-existent or swap device?\n"
msgstr ""
"可能为swap分区,或该设备不存在?\n"
"\n"
-#: e2fsck/unix.c:1571
+#: e2fsck/unix.c:1592
msgid "Filesystem mounted or opened exclusively by another program?\n"
msgstr "文件系统可能已挂载,或正被其他程序独占使用?\n"
-#: e2fsck/unix.c:1575
+#: e2fsck/unix.c:1596
msgid "Possibly non-existent device?\n"
msgstr "可能该设备不存在?\n"
-#: e2fsck/unix.c:1578
+#: e2fsck/unix.c:1599
msgid ""
"Disk write-protected; use the -n option to do a read-only\n"
"check of the device.\n"
msgstr "磁盘写保护;请使用 -n 选项进行只读检查。\n"
-#: e2fsck/unix.c:1592
+#: e2fsck/unix.c:1613
#, c-format
msgid "%s: Trying to load superblock despite errors...\n"
-msgstr ""
+msgstr "%s:尽管有错误,仍然尝试读取超级块...\n"
-#: e2fsck/unix.c:1667
+#: e2fsck/unix.c:1688
msgid "Get a newer version of e2fsck!"
msgstr "请获取新版本的e2fsck!"
-#: e2fsck/unix.c:1711
+#: e2fsck/unix.c:1749
#, c-format
msgid "while checking journal for %s"
msgstr "检查 %s 的日志时"
-#: e2fsck/unix.c:1714
+#: e2fsck/unix.c:1752
msgid "Cannot proceed with file system check"
msgstr "无法在系统检查时进行"
-#: e2fsck/unix.c:1725
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
+#: e2fsck/unix.c:1763
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr "警告:由于只读系统检查,跳过日志恢复流程。\n"
-#: e2fsck/unix.c:1737
+#: e2fsck/unix.c:1775
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr ""
"无法设置 %s 的超级块标志。\n"
"\n"
-#: e2fsck/unix.c:1743
+#: e2fsck/unix.c:1781
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr "在 %s 中发现日志校验值错误\n"
-#: e2fsck/unix.c:1747
+#: e2fsck/unix.c:1785
#, c-format
msgid "Journal corrupted in %s\n"
msgstr "%s 中的日志已损坏\n"
-#: e2fsck/unix.c:1751
+#: e2fsck/unix.c:1789
#, c-format
msgid "while recovering journal of %s"
msgstr "恢复 %s 的日志时"
-#: e2fsck/unix.c:1773
+#: e2fsck/unix.c:1811
#, c-format
msgid "%s has unsupported feature(s):"
msgstr "%s 有不被支持的特性:"
-#: e2fsck/unix.c:1832
+#: e2fsck/unix.c:1826
+#, c-format
+msgid "%s has unsupported encoding: %0x\n"
+msgstr "%s 有不被支持的编码:%0x\n"
+
+#: e2fsck/unix.c:1876
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr "%s:读取坏块inode时%s\n"
-#: e2fsck/unix.c:1835
+#: e2fsck/unix.c:1879
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr "这并不是一个好预兆,然而我们将继续进行...\n"
-#: e2fsck/unix.c:1875
+#: e2fsck/unix.c:1919
#, c-format
msgid "Creating journal (%d blocks): "
msgstr "创建日志(%d 个块):"
-#: e2fsck/unix.c:1885
+#: e2fsck/unix.c:1929
msgid " Done.\n"
msgstr "完毕。\n"
-#: e2fsck/unix.c:1887
+#: e2fsck/unix.c:1931
msgid ""
"\n"
"*** journal has been regenerated ***\n"
@@ -3623,38 +3638,38 @@ msgstr ""
"\n"
"*** 日志已被重建 ***\n"
-#: e2fsck/unix.c:1893
+#: e2fsck/unix.c:1937
msgid "aborted"
msgstr "已中止"
-#: e2fsck/unix.c:1895
+#: e2fsck/unix.c:1939
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr "%s:e2fsck被取消。\n"
-#: e2fsck/unix.c:1922
+#: e2fsck/unix.c:1966
msgid "Restarting e2fsck from the beginning...\n"
msgstr "正在从头开始e2fsck...\n"
-#: e2fsck/unix.c:1926
+#: e2fsck/unix.c:1970
msgid "while resetting context"
msgstr "重置上下文时"
-#: e2fsck/unix.c:1985
-#, fuzzy, c-format
+#: e2fsck/unix.c:2029
+#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
msgstr ""
"\n"
-"%s:***** 文件系统已修改 *****\n"
+"%s:***** 文件系统错误已修正 *****\n"
-#: e2fsck/unix.c:1987
-#, fuzzy, c-format
+#: e2fsck/unix.c:2031
+#, c-format
msgid "%s: File system was modified.\n"
-msgstr "文件系统已损坏"
+msgstr "%s:文件系统已被修改。\n"
-#: e2fsck/unix.c:1991 e2fsck/util.c:71
+#: e2fsck/unix.c:2035 e2fsck/util.c:71
#, c-format
msgid ""
"\n"
@@ -3663,12 +3678,12 @@ msgstr ""
"\n"
"%s:***** 文件系统已修改 *****\n"
-#: e2fsck/unix.c:1996
+#: e2fsck/unix.c:2040
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr "%s:***** 请重新启动系统 *****\n"
-#: e2fsck/unix.c:2006 e2fsck/util.c:77
+#: e2fsck/unix.c:2050 e2fsck/util.c:77
#, c-format
msgid ""
"\n"
@@ -3683,7 +3698,7 @@ msgstr ""
msgid "yY"
msgstr "yY"
-#: e2fsck/util.c:197
+#: e2fsck/util.c:197 misc/util.c:112
msgid "nN"
msgstr "nN"
@@ -3816,9 +3831,7 @@ msgid "while writing inode %lu in %s"
msgstr "写入 %2$s 中的inode %1$lu 时"
#: e2fsck/util.c:792
-msgid ""
-"UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
-"running.\n"
+msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
msgstr "未预期的不连续性:文件系统在运行fsck时被修改。\n"
#: misc/badblocks.c:75
@@ -3826,15 +3839,14 @@ msgid "done \n"
msgstr "已完成 \n"
#: misc/badblocks.c:100
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnfBX]\n"
-" [-c blocks_at_once] [-d delay_factor_between_reads] [-e "
-"max_bad_blocks]\n"
+" [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]\n"
" [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
" device [last_block [first_block]]\n"
msgstr ""
-"用法:%s [-b 块大小] [-i 输入文件] [-o 输出文件] [-svwnf]\n"
+"用法:%s [-b 块大小] [-i 输入文件] [-o 输出文件] [-svwnfBX]\n"
" [-c 立即块数] [-d 读取延迟因子] [-e 最大坏块数]\n"
" [-p 需要通过测试的块数] [-t 测试模式 [-t 测试模式 [...]]]\n"
" 设备 [末块 [首块]]\n"
@@ -3935,7 +3947,7 @@ msgstr ""
msgid "during test data write, block %lu"
msgstr "正在测试数据写入,位于块 %lu"
-#: misc/badblocks.c:1007 misc/util.c:131
+#: misc/badblocks.c:1007 misc/util.c:134
#, c-format
msgid "%s is mounted; "
msgstr "%s 已经挂载; "
@@ -3948,7 +3960,7 @@ msgstr "强制进行坏块处理。期望/etc/mtab中反映的并非真实情况
msgid "it's not safe to run badblocks!\n"
msgstr "进行坏块处理有风险!\n"
-#: misc/badblocks.c:1019 misc/util.c:142
+#: misc/badblocks.c:1019 misc/util.c:145
#, c-format
msgid "%s is apparently in use by the system; "
msgstr "%s 显然正被系统使用; "
@@ -4027,230 +4039,227 @@ msgstr "此步已完成,发现了 %u 个坏块。(%d/%d/%d 个错误)\n"
#: misc/chattr.c:89
#, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTu] [-v version] files...\n"
-msgstr "用法:%s [-pRVf] [-+=aAcCdDeijPsStTu] [-v 版本] 文件...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
+msgstr "用法:%s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v 版本] 文件...\n"
-#: misc/chattr.c:159
+#: misc/chattr.c:160
#, c-format
msgid "bad project - %s\n"
msgstr "项目错误 - %s\n"
-#: misc/chattr.c:173
+#: misc/chattr.c:174
#, c-format
msgid "bad version - %s\n"
msgstr "版本错误 - %s\n"
-#: misc/chattr.c:219 misc/lsattr.c:127
+#: misc/chattr.c:220 misc/lsattr.c:127
#, c-format
msgid "while trying to stat %s"
msgstr "尝试对%s进行stat调用时"
-#: misc/chattr.c:226
+#: misc/chattr.c:227
#, c-format
msgid "while reading flags on %s"
msgstr "读取 %s 的标志时"
-#: misc/chattr.c:231 misc/chattr.c:243
+#: misc/chattr.c:232 misc/chattr.c:244
#, c-format
msgid "Flags of %s set as "
msgstr "%s的标志被设为 "
-#: misc/chattr.c:252
+#: misc/chattr.c:253
#, c-format
msgid "while setting flags on %s"
msgstr "设置 %s 的标志时"
-#: misc/chattr.c:260
+#: misc/chattr.c:261
#, c-format
msgid "Version of %s set as %lu\n"
msgstr "%s 的版本被设置为 %lu\n"
-#: misc/chattr.c:264
+#: misc/chattr.c:265
#, c-format
msgid "while setting version on %s"
msgstr "设置 %s 的版本时"
-#: misc/chattr.c:271
+#: misc/chattr.c:272
#, c-format
msgid "Project of %s set as %lu\n"
msgstr "%s 的项目被设置为 %lu\n"
-#: misc/chattr.c:275
+#: misc/chattr.c:276
#, c-format
msgid "while setting project on %s"
msgstr "设置 %s 的项目时"
-#: misc/chattr.c:297
+#: misc/chattr.c:298
msgid "Couldn't allocate path variable in chattr_dir_proc"
msgstr "无法在chattr_dir_proc中为路径变量分配内存"
-#: misc/chattr.c:337
+#: misc/chattr.c:338
msgid "= is incompatible with - and +\n"
msgstr "= 与 - / + 选项不相容\n"
-#: misc/chattr.c:345
+#: misc/chattr.c:346
msgid "Must use '-v', =, - or +\n"
msgstr "必须使用“-v”、=、- 或 + 其中之一\n"
-#: misc/create_inode.c:79 misc/create_inode.c:118
+#: misc/create_inode.c:80 misc/create_inode.c:119
#, c-format
msgid "while reading inode %u"
msgstr "读取 inode %u 时"
-#: misc/create_inode.c:89 misc/create_inode.c:287 misc/create_inode.c:352
-#: misc/create_inode.c:390
+#: misc/create_inode.c:90 misc/create_inode.c:288 misc/create_inode.c:353
+#: misc/create_inode.c:391
msgid "while expanding directory"
msgstr "扩充目录时"
-#: misc/create_inode.c:96
+#: misc/create_inode.c:97
#, c-format
msgid "while linking \"%s\""
msgstr "链接“%s”时"
-#: misc/create_inode.c:104 misc/create_inode.c:131 misc/create_inode.c:321
+#: misc/create_inode.c:105 misc/create_inode.c:132 misc/create_inode.c:322
#, c-format
msgid "while writing inode %u"
msgstr "写入 inode %u 时"
-#: misc/create_inode.c:151 misc/create_inode.c:175
+#: misc/create_inode.c:152 misc/create_inode.c:176
#, c-format
msgid "while listing attributes of \"%s\""
msgstr "尝试列出“%s”的属性时"
-#: misc/create_inode.c:162
+#: misc/create_inode.c:163
#, c-format
msgid "while opening inode %u"
msgstr "打开 inode %u 时"
-#: misc/create_inode.c:168 misc/create_inode.c:195 misc/create_inode.c:975
+#: misc/create_inode.c:169 misc/create_inode.c:196 misc/create_inode.c:1043
#: misc/e2undo.c:182 misc/e2undo.c:479 misc/e2undo.c:485 misc/e2undo.c:491
#: misc/mke2fs.c:359
msgid "while allocating memory"
msgstr "分配内存时"
-#: misc/create_inode.c:188 misc/create_inode.c:204
+#: misc/create_inode.c:189 misc/create_inode.c:205
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr "读取 %s 的“%s”标志时"
-#: misc/create_inode.c:213
+#: misc/create_inode.c:214
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr "写入标志“%s”到 inode %u 时"
-#: misc/create_inode.c:223
+#: misc/create_inode.c:224
#, c-format
msgid "while closing inode %u"
msgstr "关闭 inode %u 时"
-#: misc/create_inode.c:274
+#: misc/create_inode.c:275
#, c-format
msgid "while allocating inode \"%s\""
msgstr "分配 inode“%s”时"
-#: misc/create_inode.c:293
+#: misc/create_inode.c:294
#, c-format
msgid "while creating inode \"%s\""
msgstr "创建 inode “%s”时"
-#: misc/create_inode.c:359
+#: misc/create_inode.c:360
#, c-format
msgid "while creating symlink \"%s\""
msgstr "创建符号链接“%s”时"
-#: misc/create_inode.c:377 misc/create_inode.c:896
+#: misc/create_inode.c:378 misc/create_inode.c:963
#, c-format
msgid "while looking up \"%s\""
msgstr "查找“%s”时"
-#: misc/create_inode.c:397
+#: misc/create_inode.c:398
#, c-format
msgid "while creating directory \"%s\""
msgstr "创建目录“%s”时"
-#: misc/create_inode.c:625
+#: misc/create_inode.c:627
#, c-format
msgid "while opening \"%s\" to copy"
msgstr "打开“%s”并拷贝时"
-#: misc/create_inode.c:739
+#: misc/create_inode.c:805
#, c-format
msgid "while changing working directory to \"%s\""
msgstr "改变工作目录为“%s”时"
-#: misc/create_inode.c:747
+#: misc/create_inode.c:815
#, c-format
-msgid "while opening directory \"%s\""
-msgstr "打开目录“%s”时"
+msgid "while scanning directory \"%s\""
+msgstr "扫描目录“%s”时"
-#: misc/create_inode.c:757
+#: misc/create_inode.c:825
#, c-format
msgid "while lstat \"%s\""
msgstr "对“%s”进行lstat调用时"
-#: misc/create_inode.c:808
+#: misc/create_inode.c:875
#, c-format
msgid "while creating special file \"%s\""
msgstr "创建特殊文件“%s”时"
-#: misc/create_inode.c:817
+#: misc/create_inode.c:884
msgid "malloc failed"
msgstr "内存分配失败"
-#: misc/create_inode.c:825
+#: misc/create_inode.c:892
#, c-format
msgid "while trying to read link \"%s\""
msgstr "尝试读取链接“%s”时"
-#: misc/create_inode.c:832
+#: misc/create_inode.c:899
msgid "symlink increased in size between lstat() and readlink()"
msgstr "在执行 lstat() 和 readlink() 期间,符号链接的大小发生改变"
-#: misc/create_inode.c:843
+#: misc/create_inode.c:910
#, c-format
msgid "while writing symlink\"%s\""
msgstr "写入符号链接“%s”时"
-#: misc/create_inode.c:854
+#: misc/create_inode.c:921
#, c-format
msgid "while writing file \"%s\""
msgstr "写入文件“%s”时"
-#: misc/create_inode.c:867
+#: misc/create_inode.c:934
#, c-format
msgid "while making dir \"%s\""
msgstr "创建目录“%s”时"
-#: misc/create_inode.c:885
+#: misc/create_inode.c:952
msgid "while changing directory"
msgstr "改变目录时"
-#: misc/create_inode.c:891
+#: misc/create_inode.c:958
#, c-format
msgid "ignoring entry \"%s\""
msgstr "忽略项“%s”"
-#: misc/create_inode.c:904
+#: misc/create_inode.c:971
#, c-format
msgid "while setting inode for \"%s\""
msgstr "为“%s”设置 inode 时"
-#: misc/create_inode.c:911
+#: misc/create_inode.c:978
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr "设置“%s”的 xattrs 时"
-#: misc/create_inode.c:937
+#: misc/create_inode.c:1004
msgid "while saving inode data"
msgstr "保存 inode 数据时"
#: misc/dumpe2fs.c:56
-#, fuzzy, c-format
-msgid ""
-"Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
-msgstr ""
-"用法:%s [-bfghixV] [-o superblock=<超级块编号>] [-o blocksize=<块大小>] 设"
-"备\n"
+#, c-format
+msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
+msgstr "用法:%s [-bfghimxV] [-o superblock=<超级块编号>] [-o blocksize=<块大小>] 设备\n"
#: misc/dumpe2fs.c:159
msgid "blocks"
@@ -4368,7 +4377,7 @@ msgstr "输出坏块列表时"
msgid "Bad blocks: %u"
msgstr "坏块数:%u"
-#: misc/dumpe2fs.c:373 misc/tune2fs.c:367
+#: misc/dumpe2fs.c:373 misc/tune2fs.c:373
msgid "while reading journal inode"
msgstr "读取日志inode时"
@@ -4393,16 +4402,16 @@ msgid "Couldn't find journal superblock magic numbers"
msgstr "无法找到日志超级块的幻数"
#: misc/dumpe2fs.c:468
-#, fuzzy
msgid "failed to alloc MMP buffer\n"
-msgstr "为缓冲区分配内存时"
+msgstr "分配 MMP 缓冲失败\n"
#: misc/dumpe2fs.c:479
#, fuzzy, c-format
+#| msgid "Checking blocks %lu to %lu\n"
msgid "reading MMP block %llu from '%s'\n"
msgstr "正在检查从 %lu 到 %lu的块\n"
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:798 misc/tune2fs.c:2073
+#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
msgid "Couldn't allocate memory to parse options!\n"
msgstr "无法为解析选项获取内存!\n"
@@ -4438,12 +4447,12 @@ msgstr ""
"\tsuperblock=<超级块编号>\n"
"\tblocksize=<块大小>\n"
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1845
+#: misc/dumpe2fs.c:649 misc/mke2fs.c:1889
#, c-format
msgid "\tUsing %s\n"
msgstr "\t使用 %s\n"
-#: misc/dumpe2fs.c:694 misc/e2image.c:1590 misc/tune2fs.c:2949
+#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
#: resize/main.c:416
msgid "Couldn't find valid filesystem superblock.\n"
msgstr "找不到有效的文件系统超级块。\n"
@@ -4451,210 +4460,208 @@ msgstr "找不到有效的文件系统超级块。\n"
#: misc/dumpe2fs.c:716
#, c-format
msgid "%s: MMP feature not enabled.\n"
-msgstr ""
+msgstr "%s: MMP 特性未启用。\n"
#: misc/dumpe2fs.c:747
-#, fuzzy, c-format
+#, c-format
msgid "while trying to read '%s' bitmaps\n"
-msgstr "重新尝试读取 %s 的位图时"
+msgstr "尝试读取“%s”位图时\n"
#: misc/dumpe2fs.c:756
msgid ""
"*** Run e2fsck now!\n"
"\n"
msgstr ""
+"*** 请立刻运行 e2fsck!\n"
+"\n"
#: misc/e2image.c:107
-#, fuzzy, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] device image-file\n"
-msgstr "用法:%s [ -r|Q ] [ -fr ] 设备 镜像文件\n"
+#, c-format
+msgid "Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device image-file\n"
+msgstr "用法:%s [ -r|Q ] [ -f ] [ -b 超级块 ] [ -B 块大小][ -fr ] 设备 镜像文件\n"
-#: misc/e2image.c:109
+#: misc/e2image.c:110
#, c-format
msgid " %s -I device image-file\n"
msgstr " %s -I 设备 镜像文件\n"
-#: misc/e2image.c:110
+#: misc/e2image.c:111
#, c-format
-msgid ""
-" %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs "
-"[ dest_fs ]\n"
-msgstr ""
-" %s -ra [ -cfnp ] [ -o 源偏移量 ] [ -O 目标偏移量 ] 源文件系统 [ 目"
-"标文件系统 ]\n"
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o 源偏移量 ] [ -O 目标偏移量 ] 源文件系统 [ 目标文件系统 ]\n"
-#: misc/e2image.c:175 misc/e2image.c:580 misc/e2image.c:586 misc/e2image.c:1185
+#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595
+#: misc/e2image.c:1194
msgid "while allocating buffer"
msgstr "为缓冲区分配内存时"
-#: misc/e2image.c:180
+#: misc/e2image.c:181
#, c-format
msgid "Writing block %llu\n"
msgstr "正在写入到块 %llu\n"
-#: misc/e2image.c:194
+#: misc/e2image.c:195
#, c-format
msgid "error writing block %llu"
msgstr "写块 %llu 出错"
-#: misc/e2image.c:197
+#: misc/e2image.c:198
msgid "error in generic_write()"
msgstr "generic_write() 函数出错"
-#: misc/e2image.c:214
+#: misc/e2image.c:215
msgid "Error: header size is bigger than wrt_size\n"
msgstr "错误:头部大小超过wrt_size\n"
-#: misc/e2image.c:219
+#: misc/e2image.c:220
msgid "Couldn't allocate header buffer\n"
msgstr "无法为头缓冲区分配内存\n"
-#: misc/e2image.c:247
+#: misc/e2image.c:248
msgid "while writing superblock"
msgstr "写入超级块时"
-#: misc/e2image.c:256
+#: misc/e2image.c:257
msgid "while writing inode table"
msgstr "写入inode表时"
-#: misc/e2image.c:264
+#: misc/e2image.c:265
msgid "while writing block bitmap"
msgstr "写入块位图时"
-#: misc/e2image.c:272
+#: misc/e2image.c:273
msgid "while writing inode bitmap"
msgstr "写入inode位图时"
-#: misc/e2image.c:506
+#: misc/e2image.c:515
#, c-format
msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
msgstr "损坏的目录块 %llu:rec_len(%d)错误\n"
-#: misc/e2image.c:518
+#: misc/e2image.c:527
#, c-format
msgid "Corrupt directory block %llu: bad name_len (%d)\n"
msgstr "损坏的目录块 %llu:name_len(%d)错误\n"
-#: misc/e2image.c:559
+#: misc/e2image.c:568
#, c-format
msgid "%llu / %llu blocks (%d%%)"
msgstr "%llu / %llu 块(%d%%)"
-#: misc/e2image.c:590 misc/e2image.c:630
+#: misc/e2image.c:599 misc/e2image.c:639
msgid "Copying "
msgstr "正在拷贝 "
-#: misc/e2image.c:627
-msgid ""
-"Stopping now will destroy the filesystem, interrupt again if you are sure\n"
+#: misc/e2image.c:636
+msgid "Stopping now will destroy the filesystem, interrupt again if you are sure\n"
msgstr "现在终止将会损坏文件系统;如果你确定要终止,请再次进行打断\n"
-#: misc/e2image.c:653
+#: misc/e2image.c:662
#, c-format
msgid " %s remaining at %.2f MB/s"
msgstr " 剩余 %s,速度 %.2f MB/s"
-#: misc/e2image.c:665 misc/e2image.c:1195
+#: misc/e2image.c:674 misc/e2image.c:1204
#, c-format
msgid "error reading block %llu"
msgstr "读取块 %llu 错误"
-#: misc/e2image.c:719
+#: misc/e2image.c:728
#, c-format
msgid "Copied %llu / %llu blocks (%d%%) in %s "
msgstr "已复制 %llu / %llu 块(%d%%),用时 %s "
-#: misc/e2image.c:723
+#: misc/e2image.c:732
#, c-format
msgid "at %.2f MB/s"
msgstr "速度 %.2f MB/s"
-#: misc/e2image.c:759
+#: misc/e2image.c:768
msgid "while allocating l1 table"
msgstr "分配l1表时"
-#: misc/e2image.c:804
+#: misc/e2image.c:813
msgid "while allocating l2 cache"
msgstr "分配l2表时"
-#: misc/e2image.c:827
-msgid ""
-"Warning: There are still tables in the cache while putting the cache, data "
-"will be lost so the image may not be valid.\n"
-msgstr ""
-"警告:当put缓存时,这些表仍然储存在缓存中,这将导致数据丢失,镜像文件也可能无"
-"效。\n"
+#: misc/e2image.c:836
+msgid "Warning: There are still tables in the cache while putting the cache, data will be lost so the image may not be valid.\n"
+msgstr "警告:当put缓存时,这些表仍然储存在缓存中,这将导致数据丢失,镜像文件也可能无效。\n"
-#: misc/e2image.c:1152
+#: misc/e2image.c:1161
msgid "while allocating ext2_qcow2_image"
msgstr "为ext2_qcow2_image分配内存时"
-#: misc/e2image.c:1159
+#: misc/e2image.c:1168
msgid "while initializing ext2_qcow2_image"
msgstr "初始化ext2_qcow2_image时"
-#: misc/e2image.c:1218 misc/e2image.c:1236
+#: misc/e2image.c:1227 misc/e2image.c:1245
msgid "Programming error: multiple sequential refcount blocks created!\n"
msgstr "程序错误:创建了多重序列的引用计数块!\n"
-#: misc/e2image.c:1276
+#: misc/e2image.c:1286
msgid "while allocating block bitmap"
msgstr "写入块位图时"
-#: misc/e2image.c:1285
+#: misc/e2image.c:1295
msgid "while allocating scramble block bitmap"
msgstr "写入加扰块位图时"
-#: misc/e2image.c:1292
+#: misc/e2image.c:1318
msgid "Scanning inodes...\n"
msgstr "扫描inode中...\n"
-#: misc/e2image.c:1304
+#: misc/e2image.c:1330
msgid "Can't allocate block buffer"
msgstr "无法为块缓存分配内存"
-#: misc/e2image.c:1343 misc/e2image.c:1357
+#: misc/e2image.c:1369 misc/e2image.c:1383
#, c-format
msgid "while iterating over inode %u"
msgstr "获取遍历inode %u 时"
-#: misc/e2image.c:1389
+#: misc/e2image.c:1415
msgid "Raw and qcow2 images cannot be installed"
msgstr "原始镜像和qcow2镜像无法被安装"
-#: misc/e2image.c:1411
+#: misc/e2image.c:1437
msgid "error reading bitmaps"
msgstr "读取位图时发生错误"
-#: misc/e2image.c:1423
+#: misc/e2image.c:1449
msgid "while opening device file"
msgstr "打开设备文件时"
-#: misc/e2image.c:1434
+#: misc/e2image.c:1460
msgid "while restoring the image table"
msgstr "存储镜像表时"
-#: misc/e2image.c:1531
+#: misc/e2image.c:1565
msgid "-a option can only be used with raw or QCOW2 images."
-msgstr "-a 选项只能用于原始或qcow2镜像"
+msgstr "-a 选项只能用于原始或 QCOW2 镜像。"
+
+#: misc/e2image.c:1570
+msgid "-b option can only be used with raw or QCOW2 images."
+msgstr "-b 选项只能用于原始或 QCOW2 镜像。"
-#: misc/e2image.c:1537
+#: misc/e2image.c:1576
msgid "Offsets are only allowed with raw images."
msgstr "偏移量只能用于原始镜像"
-#: misc/e2image.c:1542
+#: misc/e2image.c:1581
msgid "Move mode is only allowed with raw images."
msgstr "移动模式只能用于原始镜像"
-#: misc/e2image.c:1547
+#: misc/e2image.c:1586
msgid "Move mode requires all data mode."
msgstr "原始镜像需要完全数据模式。"
-#: misc/e2image.c:1557
+#: misc/e2image.c:1596
msgid "checking if mounted"
msgstr "检测其是否已挂载"
-#: misc/e2image.c:1564
+#: misc/e2image.c:1603
msgid ""
"\n"
"Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4665,51 +4672,51 @@ msgstr ""
"对可读写的文件系统上运行e2image可能导致镜像不连续,\n"
"这样的镜像也无法用于调试。如果你确实需要这样做,请使用 -f 选项。\n"
-#: misc/e2image.c:1618
+#: misc/e2image.c:1657
msgid "QCOW2 image can not be written to the stdout!\n"
msgstr "无法写入qcow2镜像到标准输出!\n"
-#: misc/e2image.c:1624
+#: misc/e2image.c:1663
msgid "Can not stat output\n"
msgstr "无法对输出进行stat操作\n"
-#: misc/e2image.c:1634
+#: misc/e2image.c:1673
#, c-format
msgid "Image (%s) is compressed\n"
msgstr "镜像(%s)已被压缩\n"
-#: misc/e2image.c:1637
+#: misc/e2image.c:1676
#, c-format
msgid "Image (%s) is encrypted\n"
msgstr "镜像(%s)已被加密\n"
-#: misc/e2image.c:1640
-#, fuzzy, c-format
+#: misc/e2image.c:1679
+#, c-format
msgid "Image (%s) is corrupted\n"
-msgstr "镜像(%s)已被加密\n"
+msgstr "镜像(%s)已损坏\n"
-#: misc/e2image.c:1644
+#: misc/e2image.c:1683
#, c-format
msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
msgstr "尝试将qcow2镜像(%s)转换为raw镜像(%s)时"
-#: misc/e2image.c:1654
+#: misc/e2image.c:1693
msgid "The -c option only supported in raw mode\n"
msgstr "只有原始模式支持 -c 选项\n"
-#: misc/e2image.c:1659
+#: misc/e2image.c:1698
msgid "The -c option not supported when writing to stdout\n"
msgstr "写入到标准输出时无法使用 -c 选项\n"
-#: misc/e2image.c:1666
+#: misc/e2image.c:1705
msgid "while allocating check_buf"
msgstr "为check_buf分配内存时"
-#: misc/e2image.c:1672
+#: misc/e2image.c:1711
msgid "The -p option only supported in raw mode\n"
msgstr "只有原始模式支持 -p 选项\n"
-#: misc/e2image.c:1682
+#: misc/e2image.c:1721
#, c-format
msgid "%d blocks already contained the data to be copied\n"
msgstr "%d 个块已包含需要被拷贝的数据\n"
@@ -4739,7 +4746,7 @@ msgstr "e2label:读取superblock出错\n"
msgid "e2label: not an ext2 filesystem\n"
msgstr "e2label:不是一个ex2文件系统\n"
-#: misc/e2label.c:97 misc/tune2fs.c:3152
+#: misc/e2label.c:97 misc/tune2fs.c:3117
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr "警告:卷标太长,已截短。\n"
@@ -4754,17 +4761,15 @@ msgstr "e2label:无法定位到superblock\n"
msgid "e2label: error writing superblock\n"
msgstr "e2label:写入超级块时出错\n"
-#: misc/e2label.c:117 misc/tune2fs.c:1733
+#: misc/e2label.c:117 misc/tune2fs.c:1687
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr "用法:e2label 设备 [新卷标]\n"
#: misc/e2undo.c:124
-#, fuzzy, c-format
-msgid ""
-"Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> "
-"<filesystem>\n"
-msgstr "用法:%s [-f] [-h] [-n] [-v] <事务文件> <文件系统>\n"
+#, c-format
+msgid "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> <filesystem>\n"
+msgstr "用法:%s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <事务文件> <文件系统>\n"
#: misc/e2undo.c:149
msgid "The file system superblock doesn't match the undo file.\n"
@@ -4956,12 +4961,8 @@ msgstr ""
#: misc/findsuper.c:190
#, c-format
-msgid ""
-"byte_offset byte_start byte_end fs_blocks blksz grp mkfs/"
-"mount_time sb_uuid label\n"
-msgstr ""
-"偏移字节 起始字节 结束字节 块数 块大小 grp 创建/挂载时"
-"间 超级块 UUID 标签\n"
+msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
+msgstr "偏移字节 起始字节 结束字节 块数 块大小 grp 创建/挂载时间 超级块 UUID 标签\n"
#: misc/findsuper.c:264
#, c-format
@@ -5041,9 +5042,7 @@ msgstr ""
#: misc/fsck.c:891
#, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
msgstr "%s:跳过/etc/fstab中的错误行:传递给fsck非零值的bind挂载项\n"
#: misc/fsck.c:918
@@ -5061,11 +5060,8 @@ msgid "--waiting-- (pass %d)\n"
msgstr "--请稍候-- (第 %d 步)n\n"
#: misc/fsck.c:1085
-msgid ""
-"Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"用法:fsck [-AMNPRTV] [ -C [ fd ] ] [-t 文件系统类型] [文件系统选项] [文件系"
-"统 ...]\n"
+msgid "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "用法:fsck [-AMNPRTV] [ -C [ fd ] ] [-t 文件系统类型] [文件系统选项] [文件系统 ...]\n"
#: misc/fsck.c:1127
#, c-format
@@ -5077,53 +5073,53 @@ msgstr "%s:设备过多\n"
msgid "%s: too many arguments\n"
msgstr "%s:参数过多\n"
-#: misc/fuse2fs.c:3739
+#: misc/fuse2fs.c:3745
msgid "Mounting read-only.\n"
msgstr "以只读模式挂载。\n"
-#: misc/fuse2fs.c:3763
+#: misc/fuse2fs.c:3769
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr "%s:允许用户分配所有块。这样做很危险!\n"
-#: misc/fuse2fs.c:3775 misc/fuse2fs.c:3789
+#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
#, c-format
msgid "%s: %s.\n"
msgstr "%s:%s。\n"
-#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3791 misc/tune2fs.c:3049
+#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr "请先运行“e2fsck -fy %s”。\n"
-#: misc/fuse2fs.c:3798
+#: misc/fuse2fs.c:3804
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr "日志需要恢复;请运行“e2fsck -E journal_only”。\n"
-#: misc/fuse2fs.c:3806
+#: misc/fuse2fs.c:3812
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr "%s:不支持写入日志。\n"
-#: misc/fuse2fs.c:3821
+#: misc/fuse2fs.c:3827
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr "警告:正在挂载未经检查的文件系统,建议您先运行 e2fsck。\n"
-#: misc/fuse2fs.c:3825
+#: misc/fuse2fs.c:3831
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr ""
"警告:尝试挂载次数超过最大值,建议您运行 e2fsck。\n"
"\n"
-#: misc/fuse2fs.c:3830
+#: misc/fuse2fs.c:3836
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr "警告:检查超时,建议您运行 e2fsck。\n"
-#: misc/fuse2fs.c:3834
+#: misc/fuse2fs.c:3840
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr "检测到孤立块;建议您运行 e2fsck。\n"
-#: misc/fuse2fs.c:3838
+#: misc/fuse2fs.c:3844
msgid "Errors detected; running e2fsck is required.\n"
msgstr "检测到错误;请运行 e2fsck。\n"
@@ -5156,8 +5152,7 @@ msgid ""
"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
"\t[-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]\n"
"\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]\n"
-"\t[-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z "
-"undo_file]\n"
+"\t[-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file]\n"
"\t[-jnqvDFSV] device [blocks-count]\n"
msgstr ""
"用法:%s [-c|-l 文件名] [-b 块大小] [-C 簇大小]\n"
@@ -5212,9 +5207,8 @@ msgid "while marking bad blocks as used"
msgstr "将坏块标记为已使用的"
#: misc/mke2fs.c:368
-#, fuzzy
msgid "while writing reserved inodes"
-msgstr "写入配额 inode 时"
+msgstr "写入预留 inode 时"
#: misc/mke2fs.c:420
msgid "Writing inode tables: "
@@ -5229,7 +5223,7 @@ msgstr ""
"\n"
"无法写入 %d 个块到起始于%llu的inode表:%s\n"
-#: misc/mke2fs.c:456 misc/mke2fs.c:2726 misc/mke2fs.c:3131
+#: misc/mke2fs.c:456 misc/mke2fs.c:2809 misc/mke2fs.c:3214
msgid "done \n"
msgstr "完成 \n"
@@ -5400,73 +5394,102 @@ msgstr "文件系统UUID:%s\n"
msgid "Superblock backups stored on blocks: "
msgstr "超级块的备份存储于下列块: "
-#: misc/mke2fs.c:820
+#: misc/mke2fs.c:822
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr ""
"%s 需要“-O 64bit”选项\n"
"\n"
-#: misc/mke2fs.c:826
+#: misc/mke2fs.c:828
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr "“%s”选项必须位于“resize=%u”之前\n"
-#: misc/mke2fs.c:839
+#: misc/mke2fs.c:841
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr "desc_size值无效:“%s”\n"
-#: misc/mke2fs.c:853
+#: misc/mke2fs.c:855
#, fuzzy, c-format
+#| msgid "Invalid new size: %s\n"
msgid "Invalid hash seed: %s\n"
msgstr "无效的新大小: %s\n"
-#: misc/mke2fs.c:865
+#: misc/mke2fs.c:867
#, c-format
msgid "Invalid offset: %s\n"
msgstr "无效的偏移量: %s\n"
-#: misc/mke2fs.c:879 misc/tune2fs.c:2101
+#: misc/mke2fs.c:881 misc/tune2fs.c:2055
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr "无效mmp更新间隔:%s\n"
-#: misc/mke2fs.c:896
+#: misc/mke2fs.c:898
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr "备份超级块编号无效:%s\n"
-#: misc/mke2fs.c:918
+#: misc/mke2fs.c:920
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr "无效的步长参数:%s\n"
-#: misc/mke2fs.c:933
+#: misc/mke2fs.c:935
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr "无效的带宽参数:%s\n"
-#: misc/mke2fs.c:956
+#: misc/mke2fs.c:958
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr "无效的改变大小参数:%s\n"
-#: misc/mke2fs.c:963
+#: misc/mke2fs.c:965
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr "所需改变的大小必须大于当前文件系统的大小。\n"
-#: misc/mke2fs.c:987
+#: misc/mke2fs.c:989
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr "版本为0的文件系统不支持在线改变大小。\n"
-#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
+#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr "无效的根目录所有者:“%s”\n"
-#: misc/mke2fs.c:1065
+#: misc/mke2fs.c:1069
#, c-format
+msgid "Invalid encoding: %s"
+msgstr "无效的编码:%s"
+
+#: misc/mke2fs.c:1087
+#, fuzzy, c-format
+#| msgid ""
+#| "\n"
+#| "Bad option(s) specified: %s\n"
+#| "\n"
+#| "Extended options are separated by commas, and may take an argument which\n"
+#| "\tis set off by an equals ('=') sign.\n"
+#| "\n"
+#| "Valid extended options are:\n"
+#| "\tmmp_update_interval=<interval>\n"
+#| "\tnum_backup_sb=<0|1|2>\n"
+#| "\tstride=<RAID per-disk data chunk in blocks>\n"
+#| "\tstripe-width=<RAID stride * data disks in blocks>\n"
+#| "\toffset=<offset to create the file system>\n"
+#| "\tresize=<resize maximum size in blocks>\n"
+#| "\tpacked_meta_blocks=<0 to disable, 1 to enable>\n"
+#| "\tlazy_itable_init=<0 to disable, 1 to enable>\n"
+#| "\tlazy_journal_init=<0 to disable, 1 to enable>\n"
+#| "\troot_owner=<uid of root dir>:<gid of root dir>\n"
+#| "\ttest_fs\n"
+#| "\tdiscard\n"
+#| "\tnodiscard\n"
+#| "\tquotatype=<quota type(s) to be enabled>\n"
+#| "\n"
msgid ""
"\n"
"Bad option(s) specified: %s\n"
@@ -5488,6 +5511,8 @@ msgid ""
"\ttest_fs\n"
"\tdiscard\n"
"\tnodiscard\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
"\tquotatype=<quota type(s) to be enabled>\n"
"\n"
msgstr ""
@@ -5513,7 +5538,7 @@ msgstr ""
"\tquotatype=<要启用的配额类型>\n"
"\n"
-#: misc/mke2fs.c:1090
+#: misc/mke2fs.c:1114
#, c-format
msgid ""
"\n"
@@ -5525,7 +5550,17 @@ msgstr ""
"\n"
"\n"
-#: misc/mke2fs.c:1135
+#: misc/mke2fs.c:1125
+#, c-format
+msgid "error: Invalid encoding flag: %s\n"
+msgstr ""
+
+#: misc/mke2fs.c:1131
+#, c-format
+msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
+msgstr ""
+
+#: misc/mke2fs.c:1179
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
@@ -5534,17 +5569,17 @@ msgstr ""
"mke2fs配置文件中有语法错误(%s,第 %d 行)\n"
"\t%s\n"
-#: misc/mke2fs.c:1148 misc/tune2fs.c:1120
+#: misc/mke2fs.c:1192 misc/tune2fs.c:1068
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr "设置了无效的文件系统选项:%s\n"
-#: misc/mke2fs.c:1160 misc/tune2fs.c:411
+#: misc/mke2fs.c:1204 misc/tune2fs.c:417
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr "设置了无效的挂载选项:%s\n"
-#: misc/mke2fs.c:1296
+#: misc/mke2fs.c:1340
#, c-format
msgid ""
"\n"
@@ -5553,7 +5588,7 @@ msgstr ""
"\n"
"你的mke2fs.conf文件中没有定义类型 %s 的文件系统。\n"
-#: misc/mke2fs.c:1300
+#: misc/mke2fs.c:1344
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
@@ -5561,11 +5596,11 @@ msgstr ""
"你可能需要升级mke2fs.conf文件。\n"
"\n"
-#: misc/mke2fs.c:1304
+#: misc/mke2fs.c:1348
msgid "Aborting...\n"
msgstr "正在终止...\n"
-#: misc/mke2fs.c:1345
+#: misc/mke2fs.c:1389
#, c-format
msgid ""
"\n"
@@ -5576,156 +5611,154 @@ msgstr ""
"警告:mke2fs.conf中未定义文件系统类型 %s\n"
"\n"
-#: misc/mke2fs.c:1527
+#: misc/mke2fs.c:1571
msgid "Couldn't allocate memory for new PATH.\n"
msgstr "无法为新路径分配内存。\n"
-#: misc/mke2fs.c:1564
+#: misc/mke2fs.c:1608
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr "无法成功初始化配置(错误:%ld)。\n"
-#: misc/mke2fs.c:1597
+#: misc/mke2fs.c:1641
#, c-format
msgid "invalid block size - %s"
msgstr "无效的块大小 - %s"
-#: misc/mke2fs.c:1601
+#: misc/mke2fs.c:1645
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr "警告:块大小 %d 在很多系统中不可用。\n"
-#: misc/mke2fs.c:1617
+#: misc/mke2fs.c:1661
#, c-format
msgid "invalid cluster size - %s"
msgstr "无效的簇大小 - %s"
-#: misc/mke2fs.c:1630
+#: misc/mke2fs.c:1674
msgid "'-R' is deprecated, use '-E' instead"
msgstr "“-R” 选项已被废弃,请使用“-E”选项"
-#: misc/mke2fs.c:1644 misc/tune2fs.c:1830
+#: misc/mke2fs.c:1688 misc/tune2fs.c:1784
#, c-format
msgid "bad error behavior - %s"
msgstr "出错行为有误 - %s"
-#: misc/mke2fs.c:1656
+#: misc/mke2fs.c:1700
msgid "Illegal number for blocks per group"
msgstr "非法的每组块数"
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1705
msgid "blocks per group must be multiple of 8"
msgstr "每组块数必须是8的倍数"
-#: misc/mke2fs.c:1669
+#: misc/mke2fs.c:1713
msgid "Illegal number for flex_bg size"
msgstr "非法的弹性组大小"
-#: misc/mke2fs.c:1675
+#: misc/mke2fs.c:1719
msgid "flex_bg size must be a power of 2"
msgstr "弹性组的大小必须是2的次方"
-#: misc/mke2fs.c:1680
+#: misc/mke2fs.c:1724
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr "弹性组的大小(%lu)必须小于等于2^31"
-#: misc/mke2fs.c:1690
+#: misc/mke2fs.c:1734
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr "无效的inode比 %s(最小 %d /最大 %d)"
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1744
#, c-format
msgid "invalid inode size - %s"
msgstr "无效的inode大小 - %s"
-#: misc/mke2fs.c:1713
-msgid ""
-"Warning: -K option is deprecated and should not be used anymore. Use '-E "
-"nodiscard' extended option instead!\n"
+#: misc/mke2fs.c:1757
+msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
msgstr ""
"警告:-K 选项已被废弃,今后也不应当被使用。请使用扩展选项\n"
"“-E nodiscard”作为替代!\n"
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1768
msgid "in malloc for bad_blocks_filename"
msgstr "为bad_blocks_filename分配内存时"
-#: misc/mke2fs.c:1733
+#: misc/mke2fs.c:1777
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr "警告:卷标太长,已截短为“%s”\n"
-#: misc/mke2fs.c:1742
+#: misc/mke2fs.c:1786
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr "无效的保留块百分比 - %s"
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1801
#, c-format
msgid "bad num inodes - %s"
msgstr "错误的inode数 - %s"
-#: misc/mke2fs.c:1770
+#: misc/mke2fs.c:1814
msgid "while allocating fs_feature string"
msgstr "分配 fs_feature 字符串时"
-#: misc/mke2fs.c:1787
+#: misc/mke2fs.c:1831
#, c-format
msgid "bad revision level - %s"
msgstr "错误的版本号 - %s"
-#: misc/mke2fs.c:1792
+#: misc/mke2fs.c:1836
#, c-format
msgid "while trying to create revision %d"
msgstr "尝试创建版本 %d 时"
-#: misc/mke2fs.c:1806
+#: misc/mke2fs.c:1850
msgid "The -t option may only be used once"
msgstr "-t 选项只能被指定一次"
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1858
msgid "The -T option may only be used once"
msgstr "-T 选项只能被指定一次"
-#: misc/mke2fs.c:1870 misc/mke2fs.c:3215
+#: misc/mke2fs.c:1914 misc/mke2fs.c:3298
#, c-format
msgid "while trying to open journal device %s\n"
msgstr "尝试打开日志设备 %s 时\n"
-#: misc/mke2fs.c:1876
+#: misc/mke2fs.c:1920
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr "日志设备的块大小(%d)不能低于最小的块大小 %d\n"
-#: misc/mke2fs.c:1882
+#: misc/mke2fs.c:1926
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr "根据日志设备确定块大小:%d\n"
-#: misc/mke2fs.c:1893
+#: misc/mke2fs.c:1937
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr "无效的块数“%s”于设备“%s”"
-#: misc/mke2fs.c:1923
+#: misc/mke2fs.c:1967
msgid "filesystem"
msgstr "文件系统"
-#: misc/mke2fs.c:1941 resize/main.c:497
+#: misc/mke2fs.c:1985 resize/main.c:497
msgid "while trying to determine filesystem size"
msgstr "尝试确定文件系统大小时"
-#: misc/mke2fs.c:1947
+#: misc/mke2fs.c:1991
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
msgstr "无法确定设备大小;你必须手动指定大小\n"
-#: misc/mke2fs.c:1954
+#: misc/mke2fs.c:1998
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5736,50 +5769,48 @@ msgstr ""
"\t执行fdisk后未被重新加载(分区正被占用)导致的。\n"
"\t你可能需要重启后重新读取分区表。\n"
-#: misc/mke2fs.c:1971
+#: misc/mke2fs.c:2015
msgid "Filesystem larger than apparent device size."
msgstr "文件系统大小超过设备的实际大小。"
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:2035
msgid "Failed to parse fs types list\n"
msgstr "解析文件系统类型列表失败\n"
-#: misc/mke2fs.c:2040
+#: misc/mke2fs.c:2085
msgid "The HURD does not support the filetype feature.\n"
msgstr "HURD 不支持文件类型。\n"
-#: misc/mke2fs.c:2045
+#: misc/mke2fs.c:2090
msgid "The HURD does not support the huge_file feature.\n"
msgstr "HURD 不支持大文件特性。\n"
-#: misc/mke2fs.c:2050
+#: misc/mke2fs.c:2095
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr "HURD 不支持元数据校验值特性。\n"
-#: misc/mke2fs.c:2055
-#, fuzzy
+#: misc/mke2fs.c:2100
msgid "The HURD does not support the ea_inode feature.\n"
-msgstr "HURD 不支持大文件特性。\n"
+msgstr "HURD 不支持 ea_inode 特性。\n"
-#: misc/mke2fs.c:2065
+#: misc/mke2fs.c:2110
msgid "while trying to determine hardware sector size"
msgstr "尝试确定硬件扇区大小时"
-#: misc/mke2fs.c:2071
+#: misc/mke2fs.c:2116
msgid "while trying to determine physical sector size"
msgstr "尝试确定物理扇区大小时"
-#: misc/mke2fs.c:2103
+#: misc/mke2fs.c:2148
msgid "while setting blocksize; too small for device\n"
msgstr "设置块大小时;对于设备来说太小\n"
-#: misc/mke2fs.c:2108
+#: misc/mke2fs.c:2153
#, c-format
-msgid ""
-"Warning: specified blocksize %d is less than device physical sectorsize %d\n"
+msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr "警告:指定的块大小 %d 小于设备物理扇区大小%d\n"
-#: misc/mke2fs.c:2132
+#: misc/mke2fs.c:2177
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
@@ -5788,8 +5819,11 @@ msgstr ""
"%1$s:设备 %3$s 的尺寸(0x%2$llx 个块)太大,无法用32位数表示\n"
"\t改为使用 %4$d 的块大小。\n"
-#: misc/mke2fs.c:2144
+#: misc/mke2fs.c:2191
#, fuzzy, c-format
+#| msgid ""
+#| "%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
+#| "\tin 32 bits using a blocksize of %d.\n"
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
"\ta filesystem using a blocksize of %d.\n"
@@ -5797,80 +5831,82 @@ msgstr ""
"%1$s:设备 %3$s 的尺寸(0x%2$llx 个块)太大,无法用32位数表示\n"
"\t改为使用 %4$d 的块大小。\n"
-#: misc/mke2fs.c:2166
+#: misc/mke2fs.c:2213
msgid "fs_types for mke2fs.conf resolution: "
msgstr "mke2fs.conf中有关文件系统类型的解释: "
-#: misc/mke2fs.c:2173
+#: misc/mke2fs.c:2220
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr ""
"版本为0的文件系统不支持这些特性\n"
"\n"
-#: misc/mke2fs.c:2181
+#: misc/mke2fs.c:2228
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr "版本为0的文件系统不支持分散式超级块\n"
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2238
msgid "Journals not supported with revision 0 filesystems\n"
msgstr "版本为0的文件系统不支持日志\n"
-#: misc/mke2fs.c:2204
+#: misc/mke2fs.c:2251
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr "无效的保留块百分比 - %lf"
-#: misc/mke2fs.c:2221
-msgid ""
-"Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to "
-"rectify.\n"
+#: misc/mke2fs.c:2268
+msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
msgstr "64位系统必须启用extent特性。请使用“-O extents”选项来修正。\n"
-#: misc/mke2fs.c:2241
+#: misc/mke2fs.c:2288
msgid "The cluster size may not be smaller than the block size.\n"
msgstr "簇大小不能小于块大小。\n"
-#: misc/mke2fs.c:2247
+#: misc/mke2fs.c:2294
msgid "specifying a cluster size requires the bigalloc feature"
msgstr "指定簇大小需要启用bigalloc特性"
-#: misc/mke2fs.c:2267
+#: misc/mke2fs.c:2314
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr "警告:无法获取 %s 的设备布局\n"
-#: misc/mke2fs.c:2270
+#: misc/mke2fs.c:2317
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr "%s 未对齐,偏移了 %lu 个字节。\n"
-#: misc/mke2fs.c:2272
+#: misc/mke2fs.c:2319
#, c-format
-msgid ""
-"This may result in very poor performance, (re)-partitioning suggested.\n"
+msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr "这可能导致性能下降,建议重新进行分区。\n"
-#: misc/mke2fs.c:2293
+#: misc/mke2fs.c:2340
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr "%d字节的块对于系统来说太大(最大为 %d)"
-#: misc/mke2fs.c:2297
+#: misc/mke2fs.c:2344
#, c-format
-msgid ""
-"Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
+msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr "警告:%d字节的块对于系统来说太大(最大为 %d),但仍然强制进行操作\n"
-#: misc/mke2fs.c:2305
+#: misc/mke2fs.c:2352
#, c-format
-msgid ""
-"Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
-"and journal checksum features.\n"
+msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
+msgstr "建议:使用 3.18 以上的 Linux 内核以提高元数据稳定性,以及使用日志校验值特性。\n"
+
+#: misc/mke2fs.c:2398
+#, c-format
+msgid "Unknown filename encoding from profile: %s"
+msgstr ""
+
+#: misc/mke2fs.c:2409
+#, c-format
+msgid "Unknown encoding flags from profile: %s"
msgstr ""
-"建议:使用 3.18 以上的 Linux 内核以提高元数据稳定性,以及使用日志校验值特"
-"性。\n"
-#: misc/mke2fs.c:2360
+#: misc/mke2fs.c:2434
#, c-format
msgid ""
"\n"
@@ -5884,16 +5920,29 @@ msgstr ""
"将创建含有 %llu 个块的文件系统,这可能与您的预期不服。\n"
"\n"
-#: misc/mke2fs.c:2375
+#: misc/mke2fs.c:2449
#, fuzzy, c-format
+#| msgid "%d byte inodes are too small for project quota; specify larger size"
msgid "%d byte inodes are too small for project quota"
msgstr "%d 字节的 inode 对于项目配额来说太小;请指定一个更大的值"
-#: misc/mke2fs.c:2397
+#: misc/mke2fs.c:2465
+#, fuzzy
+#| msgid ""
+#| "The resize_inode and meta_bg features are not compatible.\n"
+#| "They can not be both enabled simultaneously.\n"
+msgid ""
+"The encrypt and casefold features are not compatible.\n"
+"They can not be both enabled simultaneously.\n"
+msgstr ""
+"resize_inode 和 meta_bg 特性不兼容。\n"
+"无法同时启用它们。\n"
+
+#: misc/mke2fs.c:2480
msgid "Can't support bigalloc feature without extents feature"
msgstr "无法在缺乏extent特性的情况下支持bigalloc特性"
-#: misc/mke2fs.c:2404
+#: misc/mke2fs.c:2487
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
@@ -5901,7 +5950,7 @@ msgstr ""
"resize_inode 和 meta_bg 特性不兼容。\n"
"无法同时启用它们。\n"
-#: misc/mke2fs.c:2412
+#: misc/mke2fs.c:2495
msgid ""
"\n"
"Warning: the bigalloc feature is still under development\n"
@@ -5913,39 +5962,39 @@ msgstr ""
"更多详情请参见 https://ext4.wiki.kernel.org/index.php/Bigalloc\n"
"\n"
-#: misc/mke2fs.c:2424
+#: misc/mke2fs.c:2507
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr "非分散式文件系统不支持为在线调整大小设置保留块"
-#: misc/mke2fs.c:2433
+#: misc/mke2fs.c:2516
msgid "blocks per group count out of range"
msgstr "每组块数超过允许范围"
-#: misc/mke2fs.c:2455
+#: misc/mke2fs.c:2538
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr "弹性组特性未启用,所以无法指定弹性组尺寸"
-#: misc/mke2fs.c:2467
+#: misc/mke2fs.c:2550
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr "无效的inode大小 %d(最小 %d /最大 %d)"
-#: misc/mke2fs.c:2482
+#: misc/mke2fs.c:2565
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr "%d 字节的 inode 对于内联数据来说太小;请指定一个更大的值"
-#: misc/mke2fs.c:2497
+#: misc/mke2fs.c:2580
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr "inode太多(%llu),是否提高inode比?"
-#: misc/mke2fs.c:2504
+#: misc/mke2fs.c:2587
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr "inode数量太多(%llu),请指定小于 2^32 的inode数"
-#: misc/mke2fs.c:2518
+#: misc/mke2fs.c:2601
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5956,78 +6005,69 @@ msgstr ""
"\t的系统来说太大,请指定更高的inode比(使用 -i 选项)\n"
"\t或更少的inode数(-N)。\n"
-#: misc/mke2fs.c:2705
+#: misc/mke2fs.c:2788
msgid "Discarding device blocks: "
msgstr "丢弃设备块: "
-#: misc/mke2fs.c:2721
+#: misc/mke2fs.c:2804
msgid "failed - "
msgstr "已失败 - "
-#: misc/mke2fs.c:2780
+#: misc/mke2fs.c:2863
msgid "while initializing quota context"
msgstr "初始化配额上下文时"
-#: misc/mke2fs.c:2787
+#: misc/mke2fs.c:2870
msgid "while writing quota inodes"
msgstr "写入配额 inode 时"
-#: misc/mke2fs.c:2812
+#: misc/mke2fs.c:2895
#, c-format
msgid "bad error behavior in profile - %s"
msgstr "配置中的出错行为有误 - %s"
-#: misc/mke2fs.c:2888
-#, fuzzy
+#: misc/mke2fs.c:2971
msgid "in malloc for android_sparse_params"
-msgstr "为bad_blocks_filename分配内存时"
+msgstr "为 android_sparse_params 分配内存时"
-#: misc/mke2fs.c:2902
+#: misc/mke2fs.c:2985
msgid "while setting up superblock"
msgstr "设置superblock时"
-#: misc/mke2fs.c:2918
-msgid ""
-"Extents are not enabled. The file extent tree can be checksummed, whereas "
-"block maps cannot. Not enabling extents reduces the coverage of metadata "
-"checksumming. Pass -O extents to rectify.\n"
-msgstr ""
-"未启用 extent 特性,所以仅对文件 extent 树进行校验,而不会对块位图进行校验。"
-"不启用 extent 将降低元数据校验值的覆盖范围。可以使用参数“-O extents”来进行纠"
-"正。\n"
+#: misc/mke2fs.c:3001
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
+msgstr "未启用 extent 特性,所以仅对文件 extent 树进行校验,而不会对块位图进行校验。不启用 extent 将降低元数据校验值的覆盖范围。可以使用参数“-O extents”来进行纠正。\n"
-#: misc/mke2fs.c:2925
-msgid ""
-"64-bit filesystem support is not enabled. The larger fields afforded by "
-"this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
+#: misc/mke2fs.c:3008
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr ""
-"未启用 64 位文件系统支持,将无法使用更大的字段来进行更完整的校验。可以使用参"
-"数“-O 64bit”来进行纠正。\n"
+"未启用 64 位文件系统支持,将无法使用更大的字段来进行更完整的校验。可以使用参数“-O 64bit”来进行纠正。\n"
"\n"
-#: misc/mke2fs.c:2933
+#: misc/mke2fs.c:3016
#, fuzzy
+#| msgid "The metadata_csum_seed feature requres the metadata_csum feature.\n"
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr "启用 metadata_csum_seed 特性需要同时启用 metadata_csum 特性。\n"
-#: misc/mke2fs.c:2957
+#: misc/mke2fs.c:3040
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr "舍弃成功,将会返回0值 - 跳过擦除inode表\n"
-#: misc/mke2fs.c:3056
+#: misc/mke2fs.c:3139
#, c-format
msgid "unknown os - %s"
msgstr "未知操作系统 - %s"
-#: misc/mke2fs.c:3119
+#: misc/mke2fs.c:3202
msgid "Allocating group tables: "
msgstr "正在分配组表: "
-#: misc/mke2fs.c:3127
+#: misc/mke2fs.c:3210
msgid "while trying to allocate filesystem tables"
msgstr "尝试分配文件系统表时"
-#: misc/mke2fs.c:3136
+#: misc/mke2fs.c:3219
msgid ""
"\n"
"\twhile converting subcluster bitmap"
@@ -6035,30 +6075,30 @@ msgstr ""
"\n"
"\t转换子簇位图时"
-#: misc/mke2fs.c:3142
+#: misc/mke2fs.c:3225
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr "%s 可能因超级块被改写而损\n"
-#: misc/mke2fs.c:3183
+#: misc/mke2fs.c:3266
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr "对文件系统末尾的块 %llu 填零时"
-#: misc/mke2fs.c:3196
+#: misc/mke2fs.c:3279
msgid "while reserving blocks for online resize"
msgstr "为在线改变大小保留块时"
-#: misc/mke2fs.c:3208 misc/tune2fs.c:1538
+#: misc/mke2fs.c:3291 misc/tune2fs.c:1492
msgid "journal"
msgstr "日志"
-#: misc/mke2fs.c:3220
+#: misc/mke2fs.c:3303
#, c-format
msgid "Adding journal to device %s: "
msgstr "将日志添加到设备 %s: "
-#: misc/mke2fs.c:3227
+#: misc/mke2fs.c:3310
#, c-format
msgid ""
"\n"
@@ -6067,21 +6107,21 @@ msgstr ""
"\n"
"尝试将日志添加到设备 %s时"
-#: misc/mke2fs.c:3232 misc/mke2fs.c:3261 misc/mke2fs.c:3299
-#: misc/mk_hugefiles.c:598 misc/tune2fs.c:1567 misc/tune2fs.c:1586
+#: misc/mke2fs.c:3315 misc/mke2fs.c:3344 misc/mke2fs.c:3382
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
msgid "done\n"
msgstr "完成\n"
-#: misc/mke2fs.c:3238
+#: misc/mke2fs.c:3321
msgid "Skipping journal creation in super-only mode\n"
msgstr "跳过创建日志的步骤(唯超级块模式)\n"
-#: misc/mke2fs.c:3248
+#: misc/mke2fs.c:3331
#, c-format
msgid "Creating journal (%u blocks): "
msgstr "创建日志(%u 个块)"
-#: misc/mke2fs.c:3257
+#: misc/mke2fs.c:3340
msgid ""
"\n"
"\twhile trying to create journal"
@@ -6089,7 +6129,7 @@ msgstr ""
"\n"
"\t尝试创建日志时"
-#: misc/mke2fs.c:3269 misc/tune2fs.c:1185
+#: misc/mke2fs.c:3352 misc/tune2fs.c:1133
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
@@ -6097,29 +6137,28 @@ msgstr ""
"\n"
"启用MMP特性失败。"
-#: misc/mke2fs.c:3274
+#: misc/mke2fs.c:3357
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr "MMP(多重挂载保护)已被启用,更新间隔为 %d 秒。\n"
-#: misc/mke2fs.c:3290
+#: misc/mke2fs.c:3373
msgid "Copying files into the device: "
msgstr "将文件复制到设备:"
-#: misc/mke2fs.c:3296
+#: misc/mke2fs.c:3379
msgid "while populating file system"
msgstr "于填充文件系统时"
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3386
msgid "Writing superblocks and filesystem accounting information: "
msgstr "写入超级块和文件系统账户统计信息: "
-#: misc/mke2fs.c:3310
-#, fuzzy
+#: misc/mke2fs.c:3393
msgid "while writing out and closing file system"
-msgstr "对文件系统末尾的块 %llu 填零时"
+msgstr "写出并关闭文件系统时"
-#: misc/mke2fs.c:3313
+#: misc/mke2fs.c:3396
msgid ""
"done\n"
"\n"
@@ -6129,30 +6168,30 @@ msgstr ""
#: misc/mk_hugefiles.c:339
#, fuzzy, c-format
+#| msgid "while zeroing block %llu at end of filesystem"
msgid "while zeroing block %llu for hugefile"
msgstr "对文件系统末尾的块 %llu 填零时"
-#: misc/mk_hugefiles.c:514
+#: misc/mk_hugefiles.c:515
#, c-format
-msgid ""
-"Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
+msgid "Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
msgstr "分区偏移量 %llu(%uk)块与簇大小 %u 不相容。\n"
-#: misc/mk_hugefiles.c:581
+#: misc/mk_hugefiles.c:583
msgid "Huge files will be zero'ed\n"
msgstr "将对大文件填零\n"
-#: misc/mk_hugefiles.c:582
+#: misc/mk_hugefiles.c:584
#, c-format
msgid "Creating %lu huge file(s) "
msgstr "创建 %lu 个大文件"
-#: misc/mk_hugefiles.c:584
+#: misc/mk_hugefiles.c:586
#, c-format
msgid "with %llu blocks each"
msgstr "每个使用 %llu 个块"
-#: misc/mk_hugefiles.c:593
+#: misc/mk_hugefiles.c:595
#, c-format
msgid "while creating huge file %lu"
msgstr "创建大文件 %lu 时"
@@ -6204,16 +6243,27 @@ msgstr ""
#: misc/tune2fs.c:121
#, fuzzy
+#| msgid "Please run e2fsck -D on the filesystem.\n"
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr "请在这个文件系统上运行 e2fsck -D。\n"
#: misc/tune2fs.c:123
#, fuzzy
+#| msgid "Please run e2fsck -D on the filesystem.\n"
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr "请在这个文件系统上运行 e2fsck -D。\n"
#: misc/tune2fs.c:136
#, fuzzy, c-format
+#| msgid ""
+#| "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
+#| "\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
+#| "\t[-m reserved_blocks_percent] [-o [^]mount_options[,...]]\n"
+#| "\t[-p mmp_update_interval] [-r reserved_blocks_count] [-u user]\n"
+#| "\t[-C mount_count] [-L volume_label] [-M last_mounted_dir]\n"
+#| "\t[-O [^]feature[,...]] [-Q quota_options]\n"
+#| "\t[-E extended-option[,...]] [-T last_check_time] [-U UUID]\n"
+#| "\t[-I new_inode_size] [-z undo_file] device\n"
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
"\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
@@ -6241,16 +6291,25 @@ msgstr "日志超级块未找到!\n"
msgid "while trying to open external journal"
msgstr "尝试打开外部日志时"
-#: misc/tune2fs.c:287 misc/tune2fs.c:2845
+#: misc/tune2fs.c:287 misc/tune2fs.c:2804
#, c-format
msgid "%s is not a journal device.\n"
msgstr "%s 不是日志设备。\n"
-#: misc/tune2fs.c:297 misc/tune2fs.c:2856
+#: misc/tune2fs.c:296 misc/tune2fs.c:2813
+#, c-format
+msgid ""
+"Journal superblock is corrupted, nr_users\n"
+"is too high (%d).\n"
+msgstr ""
+"日志超级块已损坏,nr_users\n"
+"过高(%d)。\n"
+
+#: misc/tune2fs.c:303 misc/tune2fs.c:2820
msgid "Filesystem's UUID not found on journal device.\n"
msgstr "日志设备中未找到文件系统的UUID。\n"
-#: misc/tune2fs.c:321
+#: misc/tune2fs.c:327
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
@@ -6259,52 +6318,52 @@ msgstr ""
"请使用 -f 选项来移除丢失的日志设备。\n"
"\n"
-#: misc/tune2fs.c:330
+#: misc/tune2fs.c:336
msgid "Journal removed\n"
msgstr "日志已删除\n"
-#: misc/tune2fs.c:374
+#: misc/tune2fs.c:380
msgid "while reading bitmaps"
msgstr "读取位图时"
-#: misc/tune2fs.c:382
+#: misc/tune2fs.c:388
msgid "while clearing journal inode"
msgstr "读取坏块inode时"
-#: misc/tune2fs.c:393
+#: misc/tune2fs.c:399
msgid "while writing journal inode"
msgstr "写入日志inode时"
-#: misc/tune2fs.c:429 misc/tune2fs.c:452 misc/tune2fs.c:465
+#: misc/tune2fs.c:435 misc/tune2fs.c:458 misc/tune2fs.c:471
msgid "(and reboot afterwards!)\n"
msgstr "(并且过后重启!)\n"
-#: misc/tune2fs.c:480
+#: misc/tune2fs.c:486
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr "在运行 e2fsck 后,请运行“resize2fs %s %s"
-#: misc/tune2fs.c:483
+#: misc/tune2fs.c:489
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr "请运行“resize2fs %s %s"
-#: misc/tune2fs.c:487
+#: misc/tune2fs.c:493
#, c-format
msgid " -z \"%s\""
msgstr " -z \"%s\""
-#: misc/tune2fs.c:489
+#: misc/tune2fs.c:495
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr "”来启用 64 位模式。\n"
-#: misc/tune2fs.c:491
+#: misc/tune2fs.c:497
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr "”来禁用 64 位模式。\n"
-#: misc/tune2fs.c:1087
+#: misc/tune2fs.c:1035
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
@@ -6312,29 +6371,29 @@ msgstr ""
"警告:无法确定内核是否支持 metadata_csum_seed 特性。\n"
" 该特性仅被 4.4 以上的 Linux 内核支持。\n"
-#: misc/tune2fs.c:1123
+#: misc/tune2fs.c:1071
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr "移除不被支持的文件系统特性“%s”。\n"
-#: misc/tune2fs.c:1129
+#: misc/tune2fs.c:1077
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr "设置不被支持的文件系统特性“%s”。\n"
-#: misc/tune2fs.c:1138
+#: misc/tune2fs.c:1086
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr "只有当文件系统被卸载,或以只读模式挂载时才能移除其has_journal特性。\n"
-#: misc/tune2fs.c:1146
+#: misc/tune2fs.c:1094
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
msgstr "发现needs_recovery标志。请在移除has_journal特性前运行e2fsck。\n"
-#: misc/tune2fs.c:1164
+#: misc/tune2fs.c:1112
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
@@ -6342,100 +6401,89 @@ msgstr ""
"启用了meta_bg特性的文件系统不支持“sparse_super”\n"
"特性。\n"
-#: misc/tune2fs.c:1177
+#: misc/tune2fs.c:1125
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
"read-only.\n"
msgstr "文件系统被挂载或为只读属性时无法设置MMP特性。\n"
-#: misc/tune2fs.c:1195
+#: misc/tune2fs.c:1143
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr "MMP(多重挂载保护)已被启用,更新间隔为 %ds。\n"
-#: misc/tune2fs.c:1204
+#: misc/tune2fs.c:1152
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
msgstr "文件系统为只读状态时无法禁用MMP特性。\n"
-#: misc/tune2fs.c:1212
+#: misc/tune2fs.c:1160
msgid "Error while reading bitmaps\n"
msgstr "读取位图时发生错误\n"
-#: misc/tune2fs.c:1221
+#: misc/tune2fs.c:1169
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr "MMP块的幻数不匹配。期望值:%x,实际:%x\n"
-#: misc/tune2fs.c:1226
+#: misc/tune2fs.c:1174
msgid "while reading MMP block."
msgstr "读取MMP块时"
-#: misc/tune2fs.c:1258
+#: misc/tune2fs.c:1206
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
msgstr "清除弹性组标志将会导致文件系统出现前后不一致的情况。\n"
-#: misc/tune2fs.c:1269
+#: misc/tune2fs.c:1217
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr "只有当文件系统被卸载,或以只读模式挂载时才能移除其huge_file特性。\n"
-#: misc/tune2fs.c:1280
+#: misc/tune2fs.c:1228
msgid "Enabling checksums could take some time."
msgstr "启用校验值需要花费一段时间。"
-#: misc/tune2fs.c:1282
+#: misc/tune2fs.c:1230
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr "无法在已挂载的文件系统上启用元数据校验特性!\n"
-#: misc/tune2fs.c:1288
-msgid ""
-"Extents are not enabled. The file extent tree can be checksummed, whereas "
-"block maps cannot. Not enabling extents reduces the coverage of metadata "
-"checksumming. Re-run with -O extent to rectify.\n"
-msgstr ""
-"未启用 extent 特性,所以仅对文件 extent 树进行校验,而不会对块位图进行校验。"
-"不启用 extent 将降低元数据校验值的覆盖范围。可以加上参数“-O extents”重新运行"
-"来纠正这一问题。\n"
+#: misc/tune2fs.c:1236
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
+msgstr "未启用 extent 特性,所以仅对文件 extent 树进行校验,而不会对块位图进行校验。不启用 extent 将降低元数据校验值的覆盖范围。可以加上参数“-O extents”重新运行来纠正这一问题。\n"
-#: misc/tune2fs.c:1295
-msgid ""
-"64-bit filesystem support is not enabled. The larger fields afforded by "
-"this feature enable full-strength checksumming. Run resize2fs -b to "
-"rectify.\n"
-msgstr ""
-"未启用 64 位文件系统支持,将无法使用更大的字段来进行更完整的校验。可以运"
-"行“resize2fs -b”来纠正这一问题。\n"
+#: misc/tune2fs.c:1243
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
+msgstr "未启用 64 位文件系统支持,将无法使用更大的字段来进行更完整的校验。可以运行“resize2fs -b”来纠正这一问题。\n"
-#: misc/tune2fs.c:1321
+#: misc/tune2fs.c:1269
msgid "Disabling checksums could take some time."
msgstr "禁用校验值需要花费一段时间。"
-#: misc/tune2fs.c:1323
+#: misc/tune2fs.c:1271
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr "无法在已挂载的文件系统上禁用元数据校验特性!\n"
-#: misc/tune2fs.c:1386
+#: misc/tune2fs.c:1334
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr "无法在已挂载的文件系统上启用 64 位模式!\n"
-#: misc/tune2fs.c:1396
+#: misc/tune2fs.c:1344
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr "无法在已挂载的文件系统上禁用 64 位模式!\n"
-#: misc/tune2fs.c:1426
+#: misc/tune2fs.c:1374
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1447
+#: misc/tune2fs.c:1395
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
@@ -6443,7 +6491,11 @@ msgstr ""
"\n"
"警告:“^quota”选项将覆盖“-Q”的参数。\n"
-#: misc/tune2fs.c:1465
+#: misc/tune2fs.c:1405
+msgid "Cannot enable encrypt feature on filesystems with the encoding feature enabled.\n"
+msgstr ""
+
+#: misc/tune2fs.c:1419
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
@@ -6451,26 +6503,23 @@ msgstr ""
"只有在启用了元数据校验值特性的文件系统才支持\n"
"“metadata_csum_seed”特性。\n"
-#: misc/tune2fs.c:1483
+#: misc/tune2fs.c:1437
msgid ""
-"UUID has changed since enabling metadata_csum. Filesystem must be "
-"unmounted \n"
+"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
msgstr ""
-"启用元数据校验值特性后UUID被改变。必须卸载文件系统并安全改写所有元数据,以"
-"便\n"
+"启用元数据校验值特性后UUID被改变。必须卸载文件系统并安全改写所有元数据,以便\n"
"与新的 UUID 相匹配。\n"
-#: misc/tune2fs.c:1489
-#, fuzzy
+#: misc/tune2fs.c:1443
msgid "Recalculating checksums could take some time."
-msgstr "启用校验值需要花费一段时间。"
+msgstr "重新计算校验值需要花费一段时间。"
-#: misc/tune2fs.c:1531
+#: misc/tune2fs.c:1485
msgid "The filesystem already has a journal.\n"
msgstr "文件系统已有日志。\n"
-#: misc/tune2fs.c:1551
+#: misc/tune2fs.c:1505
#, c-format
msgid ""
"\n"
@@ -6479,21 +6528,21 @@ msgstr ""
"\n"
"\t尝试打开位于 %s 的日志时\n"
-#: misc/tune2fs.c:1555
+#: misc/tune2fs.c:1509
#, c-format
msgid "Creating journal on device %s: "
msgstr "在设备 %s 上创建日志: "
-#: misc/tune2fs.c:1563
+#: misc/tune2fs.c:1517
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr "将文件系统添加到 %s 上的日志"
-#: misc/tune2fs.c:1569
+#: misc/tune2fs.c:1523
msgid "Creating journal inode: "
msgstr "创建日志inode: "
-#: misc/tune2fs.c:1583
+#: misc/tune2fs.c:1537
msgid ""
"\n"
"\twhile trying to create journal file"
@@ -6501,37 +6550,36 @@ msgstr ""
"\n"
"\t尝试创建日志文件时"
-#: misc/tune2fs.c:1621
+#: misc/tune2fs.c:1575
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1634
+#: misc/tune2fs.c:1588
msgid "while initializing quota context in support library"
msgstr "初始化支持库中的引用上下文时"
-#: misc/tune2fs.c:1649
+#: misc/tune2fs.c:1603
#, c-format
msgid "while updating quota limits (%d)"
msgstr "更新配额限制(%d)时"
-#: misc/tune2fs.c:1657
+#: misc/tune2fs.c:1611
#, c-format
msgid "while writing quota file (%d)"
msgstr "写入配额文件(%d)时"
-#: misc/tune2fs.c:1675
+#: misc/tune2fs.c:1629
#, c-format
msgid "while removing quota file (%d)"
msgstr "移除配额文件(%d)时"
-#: misc/tune2fs.c:1718
+#: misc/tune2fs.c:1672
msgid ""
"\n"
"Bad quota options specified.\n"
"\n"
-"Following valid quota options are available (pass by separating with "
-"comma):\n"
+"Following valid quota options are available (pass by separating with comma):\n"
"\t[^]usr[quota]\n"
"\t[^]grp[quota]\n"
"\t[^]prj[quota]\n"
@@ -6548,93 +6596,112 @@ msgstr ""
"\n"
"\n"
-#: misc/tune2fs.c:1776
+#: misc/tune2fs.c:1730
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr "无法解析日期/时间描述符:%s"
-#: misc/tune2fs.c:1801 misc/tune2fs.c:1814
+#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
#, c-format
msgid "bad mounts count - %s"
msgstr "错误挂载计数 - %s"
-#: misc/tune2fs.c:1857
+#: misc/tune2fs.c:1811
#, c-format
msgid "bad gid/group name - %s"
msgstr "错误的gid/组名 - %s"
-#: misc/tune2fs.c:1890
+#: misc/tune2fs.c:1844
#, c-format
msgid "bad interval - %s"
msgstr "错误的间隔 - %s"
-#: misc/tune2fs.c:1919
+#: misc/tune2fs.c:1873
#, c-format
msgid "bad reserved block ratio - %s"
msgstr "错误的保留块比 - %s"
-#: misc/tune2fs.c:1934
+#: misc/tune2fs.c:1888
msgid "-o may only be specified once"
msgstr "-o只能被指定一次"
-#: misc/tune2fs.c:1943
+#: misc/tune2fs.c:1897
msgid "-O may only be specified once"
msgstr "-O只能被指定一次"
-#: misc/tune2fs.c:1960
+#: misc/tune2fs.c:1914
#, c-format
msgid "bad reserved blocks count - %s"
msgstr "错误的保留块数 - %s"
-#: misc/tune2fs.c:1989
+#: misc/tune2fs.c:1943
#, c-format
msgid "bad uid/user name - %s"
msgstr "错误的uid/用户名 - %s"
-#: misc/tune2fs.c:2006
+#: misc/tune2fs.c:1960
#, c-format
msgid "bad inode size - %s"
msgstr "无效的inode大小 - %s"
-#: misc/tune2fs.c:2013
+#: misc/tune2fs.c:1967
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr "Inode 大小必须是2的次方- %s"
-#: misc/tune2fs.c:2110
+#: misc/tune2fs.c:2064
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr "MMP更新间隔太长:%lu\n"
-#: misc/tune2fs.c:2115
+#: misc/tune2fs.c:2069
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
-msgid_plural ""
-"Setting multiple mount protection update interval to %lu seconds\n"
+msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
msgstr[0] "设置MMP更新间隔为 %lu 秒\n"
-#: misc/tune2fs.c:2138
+#: misc/tune2fs.c:2078
+#, c-format
+msgid "Setting filesystem error flag to force fsck.\n"
+msgstr "设置文件系统错误标志以强制 fsck。\n"
+
+#: misc/tune2fs.c:2096
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr "无效的RAID带宽:%s\n"
-#: misc/tune2fs.c:2153
+#: misc/tune2fs.c:2111
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr "无效的带宽参数:%s\n"
-#: misc/tune2fs.c:2168
+#: misc/tune2fs.c:2126
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr "无效的hash算法:%s\n"
-#: misc/tune2fs.c:2174
+#: misc/tune2fs.c:2132
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr "将默认hash算法设置为 %s (%d)\n"
-#: misc/tune2fs.c:2193
+#: misc/tune2fs.c:2151
#, fuzzy
+#| msgid ""
+#| "\n"
+#| "Bad options specified.\n"
+#| "\n"
+#| "Extended options are separated by commas, and may take an argument which\n"
+#| "\tis set off by an equals ('=') sign.\n"
+#| "\n"
+#| "Valid extended options are:\n"
+#| "\tclear_mmp\n"
+#| "\thash_alg=<hash algorithm>\n"
+#| "\tmount_opts=<extended default mount options>\n"
+#| "\tstride=<RAID per-disk chunk size in blocks>\n"
+#| "\tstripe_width=<RAID stride*data disks in blocks>\n"
+#| "\ttest_fs\n"
+#| "\t^test_fs\n"
msgid ""
"\n"
"Bad options specified.\n"
@@ -6649,6 +6716,7 @@ msgid ""
"\tmmp_update_interval=<mmp update interval in seconds>\n"
"\tstride=<RAID per-disk chunk size in blocks>\n"
"\tstripe_width=<RAID stride*data disks in blocks>\n"
+"\tforce_fsck\n"
"\ttest_fs\n"
"\t^test_fs\n"
msgstr ""
@@ -6666,31 +6734,31 @@ msgstr ""
"\ttest_fs\n"
"\t^test_fs\n"
-#: misc/tune2fs.c:2663
+#: misc/tune2fs.c:2622
msgid "Failed to read inode bitmap\n"
msgstr "读取inode位图失败\n"
-#: misc/tune2fs.c:2668
+#: misc/tune2fs.c:2627
msgid "Failed to read block bitmap\n"
msgstr "读取块位图失败\n"
-#: misc/tune2fs.c:2685 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
msgid "blocks to be moved"
msgstr "需要移动的块"
-#: misc/tune2fs.c:2688
+#: misc/tune2fs.c:2647
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr "增加inode大小时为分配块位图失败\n"
-#: misc/tune2fs.c:2694
+#: misc/tune2fs.c:2653
msgid "Not enough space to increase inode size \n"
msgstr "没有足够的空间用于增加inode大小\n"
-#: misc/tune2fs.c:2699
+#: misc/tune2fs.c:2658
msgid "Failed to relocate blocks during inode resize \n"
msgstr "改变块大小时重定位块失败 \n"
-#: misc/tune2fs.c:2731
+#: misc/tune2fs.c:2690
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
@@ -6698,7 +6766,7 @@ msgstr ""
"改变inode大小时出错。\n"
"请运行e2undo来撤销对文件系统的更改。\n"
-#: misc/tune2fs.c:2936
+#: misc/tune2fs.c:2900
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
@@ -6706,7 +6774,7 @@ msgstr ""
"如果你确定文件系统并没有挂载到任何节点上,请运行:\n"
"“tune2fs -f -E clear_mmp {设备}”\n"
-#: misc/tune2fs.c:2943
+#: misc/tune2fs.c:2907
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
@@ -6715,29 +6783,29 @@ msgstr ""
"MMP块幻数错误。请尝试运行一下命令来修复:\n"
"“e2fsck -f %s”\n"
-#: misc/tune2fs.c:2955
+#: misc/tune2fs.c:2919
msgid "Cannot modify a journal device.\n"
msgstr "无法修改日志设备。\n"
-#: misc/tune2fs.c:2968
+#: misc/tune2fs.c:2932
#, c-format
msgid "The inode size is already %lu\n"
msgstr "inode大小已经为 %lu\n"
-#: misc/tune2fs.c:2975
+#: misc/tune2fs.c:2939
msgid "Shrinking inode size is not supported\n"
msgstr "不支持缩小inode大小\n"
-#: misc/tune2fs.c:2980
+#: misc/tune2fs.c:2944
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr "无效的inode大小 %lu(最大 %d)\n"
-#: misc/tune2fs.c:2986
+#: misc/tune2fs.c:2950
msgid "Resizing inodes could take some time."
msgstr "改变 inode 大小需要花费一段时间。"
-#: misc/tune2fs.c:3034
+#: misc/tune2fs.c:2998
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6753,57 +6821,57 @@ msgstr ""
"\n"
"然后重新运行本命令。否则,任何所做更改都可能被日志恢复操作所覆盖。\n"
-#: misc/tune2fs.c:3045
+#: misc/tune2fs.c:3009
#, c-format
msgid "Recovering journal.\n"
msgstr "正在修复日志。\n"
-#: misc/tune2fs.c:3063
+#: misc/tune2fs.c:3028
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr "设置最大挂载次数为 %d\n"
-#: misc/tune2fs.c:3069
+#: misc/tune2fs.c:3034
#, c-format
msgid "Setting current mount count to %d\n"
msgstr "设置当前挂载次数为 %d\n"
-#: misc/tune2fs.c:3074
+#: misc/tune2fs.c:3039
#, c-format
msgid "Setting error behavior to %d\n"
msgstr "将出错行为设置为 %d\n"
-#: misc/tune2fs.c:3079
+#: misc/tune2fs.c:3044
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr "设置保留块的gid为 %lu\n"
-#: misc/tune2fs.c:3084
+#: misc/tune2fs.c:3049
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr "检查间隔太长(%lu)"
-#: misc/tune2fs.c:3091
+#: misc/tune2fs.c:3056
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr "将检查间隔设置为 %lu 秒\n"
-#: misc/tune2fs.c:3098
+#: misc/tune2fs.c:3063
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr "将保留块所占百分比设置为 %g%%(%llu 个块)\n"
-#: misc/tune2fs.c:3104
+#: misc/tune2fs.c:3069
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr "保留块的数量太大(%llu)"
-#: misc/tune2fs.c:3111
+#: misc/tune2fs.c:3076
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr "设置保留块数为 %llu\n"
-#: misc/tune2fs.c:3116
+#: misc/tune2fs.c:3081
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
@@ -6811,7 +6879,7 @@ msgstr ""
"\n"
"文件系统已经含有分散式超级块\n"
-#: misc/tune2fs.c:3119
+#: misc/tune2fs.c:3084
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
@@ -6822,7 +6890,7 @@ msgstr ""
"超级块标志。\n"
"\n"
-#: misc/tune2fs.c:3129
+#: misc/tune2fs.c:3094
#, c-format
msgid ""
"\n"
@@ -6831,7 +6899,7 @@ msgstr ""
"\n"
"已设置分散式超级块标志。 %s"
-#: misc/tune2fs.c:3134
+#: misc/tune2fs.c:3099
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
@@ -6839,115 +6907,109 @@ msgstr ""
"\n"
"移除不被支持的分散式超级块标志。\n"
-#: misc/tune2fs.c:3142
+#: misc/tune2fs.c:3107
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr "设置上一次检查的时间为 %s\n"
-#: misc/tune2fs.c:3148
+#: misc/tune2fs.c:3113
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr "设置保留块的uid为 %lu\n"
-#: misc/tune2fs.c:3180
+#: misc/tune2fs.c:3145
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr "clear_mmp选项使用错误,必须和 -f 选项一起使用\n"
-#: misc/tune2fs.c:3198
-msgid ""
-"The quota feature may only be changed when the filesystem is unmounted.\n"
+#: misc/tune2fs.c:3163
+msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
msgstr "只有当文件系统被卸载时才能修改配额特性。\n"
-#: misc/tune2fs.c:3222
+#: misc/tune2fs.c:3181
+msgid "Setting the UUID on this filesystem could take some time."
+msgstr "在此文件系统上设置 UUID 需要花费一段时间。"
+
+#: misc/tune2fs.c:3196
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr "只有当文件系统被卸载时才能改变UUID。\n"
-#: misc/tune2fs.c:3225
-msgid ""
-"If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
-"and re-run this command.\n"
-msgstr ""
-"若您仅使用 Linux 4.4 以上的内核,请运行“tune2fs -O metadata_csum_seed”,然后"
-"重新运行此命了。\n"
-
-#: misc/tune2fs.c:3234
-msgid "Setting UUID on a checksummed filesystem could take some time."
-msgstr "在启用了校验值的文件系统上设置 UUID 需要花费一段时间。"
+#: misc/tune2fs.c:3199
+msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
+msgstr "若您仅使用 Linux 4.4 以上的内核,请运行“tune2fs -O metadata_csum_seed”,然后重新运行此命令。\n"
-#: misc/tune2fs.c:3259
+#: misc/tune2fs.c:3229
msgid "Invalid UUID format\n"
msgstr "无效的 UUID 格式\n"
-#: misc/tune2fs.c:3275
+#: misc/tune2fs.c:3245
msgid "Need to update journal superblock.\n"
msgstr "需要更新日志超级块。\n"
-#: misc/tune2fs.c:3301
+#: misc/tune2fs.c:3267
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
msgstr "只有当文件系统被卸载时才能改变inode大小。\n"
-#: misc/tune2fs.c:3308
+#: misc/tune2fs.c:3274
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
msgstr "启用了弹性组特性的文件系统不支持改变inode大小\n"
-#: misc/tune2fs.c:3326
+#: misc/tune2fs.c:3292
#, c-format
msgid "Setting inode size %lu\n"
msgstr "正在将inode大小设置为 %lu\n"
-#: misc/tune2fs.c:3330
+#: misc/tune2fs.c:3296
msgid "Failed to change inode size\n"
msgstr "改变inode大小失败 \n"
-#: misc/tune2fs.c:3344
+#: misc/tune2fs.c:3310
#, c-format
msgid "Setting stride size to %d\n"
msgstr "设置步长为 %d\n"
-#: misc/tune2fs.c:3349
+#: misc/tune2fs.c:3315
#, c-format
msgid "Setting stripe width to %d\n"
msgstr "设置带宽为 %d\n"
-#: misc/tune2fs.c:3356
+#: misc/tune2fs.c:3322
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr "设置默认挂载的扩展选项为 “%s”\n"
-#: misc/util.c:100
+#: misc/util.c:101
msgid "<proceeding>\n"
msgstr "<处理中>\n"
-#: misc/util.c:104
-#, fuzzy, c-format
+#: misc/util.c:105
+#, c-format
msgid "Proceed anyway (or wait %d seconds to proceed) ? (y,N) "
-msgstr "无论如何也要继续(或等待 %d 秒)?(y,n) "
+msgstr "无论如何也要继续(或等待 %d 秒)?(y,N) "
-#: misc/util.c:108
-#, fuzzy
+#: misc/util.c:109
msgid "Proceed anyway? (y,N) "
-msgstr "无论如何也要继续?(y,n) "
+msgstr "无论如何也要继续?(y,N) "
-#: misc/util.c:133
+#: misc/util.c:136
msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n"
msgstr "强制执行mke2fs。期望/etc/mtab中反映的并非真实情况。\n"
-#: misc/util.c:138
+#: misc/util.c:141
#, c-format
msgid "will not make a %s here!\n"
msgstr "取消建立 %s !\n"
-#: misc/util.c:145
+#: misc/util.c:148
msgid "mke2fs forced anyway.\n"
msgstr "mke2fs 强制执行。\n"
-#: misc/util.c:161
+#: misc/util.c:164
msgid "Couldn't allocate memory to parse journal options!\n"
msgstr "无法为解析日志选项获取内存!\n"
-#: misc/util.c:186
+#: misc/util.c:189
#, c-format
msgid ""
"\n"
@@ -6956,7 +7018,7 @@ msgstr ""
"\n"
"无法找到匹配 %s 的日志设备\n"
-#: misc/util.c:213
+#: misc/util.c:216
msgid ""
"\n"
"Bad journal options specified.\n"
@@ -6986,7 +7048,7 @@ msgstr ""
"日志尺寸必须介于1024至10240000个块之间(块的大小由文件系统决定)。\n"
"\n"
-#: misc/util.c:244
+#: misc/util.c:247
msgid ""
"\n"
"Filesystem too small for a journal\n"
@@ -6994,7 +7056,7 @@ msgstr ""
"\n"
"文件系统太小,无法容纳日志\n"
-#: misc/util.c:251
+#: misc/util.c:254
#, c-format
msgid ""
"\n"
@@ -7005,7 +7067,7 @@ msgstr ""
"给定的日志大小为 %d 个块;但该值必须\n"
"介于1024至10240000块之间。终止执行。\n"
-#: misc/util.c:259
+#: misc/util.c:262
msgid ""
"\n"
"Journal size too big for filesystem.\n"
@@ -7013,7 +7075,7 @@ msgstr ""
"\n"
"日志大小超过文件系统自身。\n"
-#: misc/util.c:273
+#: misc/util.c:276
#, c-format
msgid ""
"This filesystem will be automatically checked every %d mounts or\n"
@@ -7165,14 +7227,12 @@ msgid "#\tNum=%llu, Size=%llu, Cursor=%llu, Sorted=%llu\n"
msgstr "#\t数量=%llu,大小=%llu,指针=%llu,按序=%llu\n"
#: resize/main.c:49
-#, fuzzy, c-format
+#, c-format
msgid ""
-"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] "
-"[-S RAID-stride] [-z undo_file]\n"
+"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] [-S RAID-stride] [-z undo_file]\n"
"\n"
msgstr ""
-"用法:%s [-d 调试标志] [-f] [-F] [-M] [-P] [-p] 设备 [-b|-s|新大小] [-z 撤销"
-"文件]\n"
+"用法:%s [-d 调试标志] [-f] [-F] [-M] [-P] [-p] 设备 [-b|-s|新大小] [S RAID-stride] [-z 撤销文件]\n"
"\n"
#: resize/main.c:73
@@ -7276,9 +7336,7 @@ msgstr "无法设置/取消设置 64 位特性。\n"
#: resize/main.c:575
#, c-format
-msgid ""
-"Cannot change the 64bit feature on a filesystem that is larger than 2^32 "
-"blocks.\n"
+msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
msgstr "无法在含有超过 2^32 个块的文件系统上改变 64 位特性。\n"
#: resize/main.c:581
@@ -7288,9 +7346,7 @@ msgstr "无法在已挂载的文件系统上改变 64 位特性。\n"
#: resize/main.c:587
#, c-format
-msgid ""
-"Please enable the extents feature with tune2fs before enabling the 64bit "
-"feature.\n"
+msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
msgstr "在启用 64 位特性前,请先执行 tune2fs 来启用 extent。\n"
#: resize/main.c:593
@@ -7420,15 +7476,13 @@ msgstr "尝试添加组 #%d 时"
#: resize/online.c:288
#, c-format
-msgid ""
-"Filesystem at %s is mounted on %s, and on-line resizing is not supported on "
-"this system.\n"
+msgid "Filesystem at %s is mounted on %s, and on-line resizing is not supported on this system.\n"
msgstr "文件系统 %s 被挂载在 %s,并且这个系统不支持在线调整大小。\n"
#: resize/resize2fs.c:759
-#, fuzzy, c-format
+#, c-format
msgid "inodes (%llu) must be less than %u\n"
-msgstr "inode数(%llu)必须小于 %u32"
+msgstr "inode数(%llu)必须小于 %u\n"
#: resize/resize2fs.c:1038
msgid "reserved blocks"
@@ -7438,26 +7492,25 @@ msgstr "保留块"
msgid "meta-data blocks"
msgstr "元数据块"
-#: resize/resize2fs.c:1386 resize/resize2fs.c:2475
+#: resize/resize2fs.c:1386 resize/resize2fs.c:2421
msgid "new meta blocks"
msgstr "新的元数据块"
-#: resize/resize2fs.c:2698
+#: resize/resize2fs.c:2644
msgid "Should never happen! No sb in last super_sparse bg?\n"
msgstr "不应当出现的情况:最后一个分散式超级块块组中没有超级块!\n"
-#: resize/resize2fs.c:2703
+#: resize/resize2fs.c:2649
msgid "Should never happen! Unexpected old_desc in super_sparse bg?\n"
msgstr "不应当出现的情况:分散式超级块块组中有未预期的old_desc!\n"
-#: resize/resize2fs.c:2776
+#: resize/resize2fs.c:2722
msgid "Should never happen: resize inode corrupt!\n"
msgstr "不应出现的错误:改变inode大小时发现有数据损坏!\n"
#: lib/ext2fs/ext2_err.c:11
-#, fuzzy
-msgid "EXT2FS Library version 1.44.4"
-msgstr "EXT2FS 库版本 1.43"
+msgid "EXT2FS Library version 1.45.3"
+msgstr "EXT2FS 库版本 1.45.3"
#: lib/ext2fs/ext2_err.c:12
msgid "Wrong magic number for ext2_filsys structure"
@@ -8016,9 +8069,8 @@ msgid "MMP: device currently active"
msgstr "MMP:设备当前为活动状态"
#: lib/ext2fs/ext2_err.c:151
-#, fuzzy
msgid "MMP: e2fsck being run"
-msgstr "MMP:fsck正在运行"
+msgstr "MMP:e2fsck 正在运行"
#: lib/ext2fs/ext2_err.c:152
msgid "MMP: block number beyond filesystem range"
@@ -8073,13 +8125,12 @@ msgid "Unknown checksum algorithm"
msgstr "位置的校验值算法"
#: lib/ext2fs/ext2_err.c:165
-#, fuzzy
msgid "MMP block checksum does not match"
-msgstr "MMP块校验值与MMP块自身不符"
+msgstr "MMP 块校验值不符"
#: lib/ext2fs/ext2_err.c:166
msgid "Ext2 file already exists"
-msgstr "ext2文件已存在"
+msgstr "Ext2 文件已存在"
#: lib/ext2fs/ext2_err.c:167
msgid "Block bitmap checksum does not match bitmap"
@@ -8166,9 +8217,8 @@ msgid "The journal superblock is corrupt"
msgstr "日志超级块已损坏"
#: lib/ext2fs/ext2_err.c:188
-#, fuzzy
msgid "Inode is corrupted"
-msgstr "改变inode大小时有数据损坏"
+msgstr "Inode 已损坏"
#: lib/ext2fs/ext2_err.c:189
msgid "Inode containing extended attribute value is corrupted"
@@ -8364,46 +8414,14 @@ msgstr " %s 有一个 %s 文件系统\n"
#: lib/support/plausible.c:276
#, c-format
msgid "%s contains `%s' data\n"
-msgstr ""
-" %s 含有“%s”数据\n"
-"\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "*** Checksum errors detected in filesystem! Run e2fsck now!\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "*** 发现文件系统的校验值有误!请立即运行 e2fsck!\n"
-#~ "\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "*** Checksum errors detected in bitmaps! Run e2fsck now!\n"
-#~ "\n"
-#~ msgstr ""
-#~ "\n"
-#~ "*** 发现位图的校验值有误!请立即运行 e2fsck!\n"
-#~ "\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "%s: %s: error reading bitmaps: %s\n"
-#~ msgstr ""
-#~ "\n"
-#~ "%s:%s:读取位图错误:%s\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "\n"
-#~ "Warning, had trouble writing out superblocks.\n"
-#~ msgstr ""
-#~ "\n"
-#~ "警告:写入超级块时遇到问题"
+msgstr "%s 含有“%s”数据\n"
#~ msgid "i_dir_acl @F %Id, @s zero.\n"
#~ msgstr "@i %i (%Q)的i_dir_acl为 %ld,@s0。\n"
+#~ msgid "while opening directory \"%s\""
+#~ msgstr "打开目录“%s”时"
+
#~ msgid "Journal features: "
#~ msgstr "日志特性:: "
@@ -8452,6 +8470,38 @@ msgstr ""
#~ msgid "Journal users: %s\n"
#~ msgstr "日志使用者: %s\n"
+#~ msgid ""
+#~ "\n"
+#~ "*** Checksum errors detected in filesystem! Run e2fsck now!\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "*** 发现文件系统的校验值有误!请立即运行 e2fsck!\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "*** Checksum errors detected in bitmaps! Run e2fsck now!\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "*** 发现位图的校验值有误!请立即运行 e2fsck!\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s: %s: error reading bitmaps: %s\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s:%s:读取位图错误:%s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Warning, had trouble writing out superblocks."
+#~ msgstr ""
+#~ "\n"
+#~ "警告:写入超级块时遇到问题"
+
#~ msgid "Please run e2fsck on the filesystem.\n"
#~ msgstr "请在这个文件系统上运行 e2fsck。\n"
@@ -8540,12 +8590,8 @@ msgstr ""
#~ msgid "Could not stat %s --- %s\n"
#~ msgstr "无法对 %s 进行 stat 调用 --- %s\n"
-#~ msgid ""
-#~ "\b\b\b\b\b\b\b\bCopied %llu / %llu blocks (%llu%%) in %s at %.2f MB/"
-#~ "s \n"
-#~ msgstr ""
-#~ "\b\b\b\b\b\b\b\b已复制 %llu / %llu 块(%llu%%),用时 %s,速度 %.2f MB/"
-#~ "s \n"
+#~ msgid "\b\b\b\b\b\b\b\bCopied %llu / %llu blocks (%llu%%) in %s at %.2f MB/s \n"
+#~ msgstr "\b\b\b\b\b\b\b\b已复制 %llu / %llu 块(%llu%%),用时 %s,速度 %.2f MB/s \n"
#~ msgid ""
#~ "\n"
diff --git a/resize/Makefile.in b/resize/Makefile.in
index f7f836a2..27f72130 100644
--- a/resize/Makefile.in
+++ b/resize/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = resize
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
@@ -42,6 +43,8 @@ DEPSTATIC_LIBS= $(STATIC_LIBE2P) $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
all:: $(PROGS) $(TEST_PROGS) $(MANPAGES)
+all-static:: resize2fs.static
+
resize2fs: $(RESIZE_OBJS) $(DEPLIBS)
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o resize2fs $(RESIZE_OBJS) $(LIBS)
diff --git a/resize/extent.c b/resize/extent.c
index e5ca16c0..4177c6f7 100644
--- a/resize/extent.c
+++ b/resize/extent.c
@@ -201,10 +201,15 @@ void ext2fs_extent_dump(ext2_extent extent, FILE *out)
fputs(_("# Extent dump:\n"), out);
fprintf(out, _("#\tNum=%llu, Size=%llu, Cursor=%llu, Sorted=%llu\n"),
- extent->num, extent->size, extent->cursor, extent->sorted);
+ (unsigned long long) extent->num,
+ (unsigned long long) extent->size,
+ (unsigned long long) extent->cursor,
+ (unsigned long long) extent->sorted);
for (i=0, ent=extent->list; i < extent->num; i++, ent++) {
- fprintf(out, "#\t\t %llu -> %llu (%llu)\n", ent->old_loc,
- ent->new_loc, ent->size);
+ fprintf(out, "#\t\t %llu -> %llu (%llu)\n",
+ (unsigned long long) ent->old_loc,
+ (unsigned long long) ent->new_loc,
+ (unsigned long long) ent->size);
}
}
diff --git a/resize/main.c b/resize/main.c
index cb0bf6a0..ccfd2896 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -269,6 +269,8 @@ int main (int argc, char ** argv)
long sysval;
int len, mount_flags;
char *mtpt, *undo_file = NULL;
+ dgrp_t new_group_desc_count;
+ unsigned long new_desc_blocks;
#ifdef ENABLE_NLS
setlocale(LC_MESSAGES, "");
@@ -402,7 +404,7 @@ int main (int argc, char ** argv)
if (!(mount_flags & EXT2_MF_MOUNTED))
io_flags = EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
- io_flags |= EXT2_FLAG_64BITS;
+ io_flags |= EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
if (undo_file) {
retval = resize2fs_setup_tdb(device_name, undo_file, &io_ptr);
if (retval)
@@ -468,7 +470,7 @@ int main (int argc, char ** argv)
if (print_min_size) {
printf(_("Estimated minimum size of the filesystem: %llu\n"),
- min_size);
+ (unsigned long long) min_size);
exit(0);
}
@@ -528,10 +530,23 @@ int main (int argc, char ** argv)
exit(1);
}
}
+ new_group_desc_count = ext2fs_div64_ceil(new_size -
+ fs->super->s_first_data_block,
+ EXT2_BLOCKS_PER_GROUP(fs->super));
+ new_desc_blocks = ext2fs_div_ceil(new_group_desc_count,
+ EXT2_DESC_PER_BLOCK(fs->super));
+ if ((new_desc_blocks + fs->super->s_first_data_block) >
+ EXT2_BLOCKS_PER_GROUP(fs->super)) {
+ com_err(program_name, 0,
+ _("New size results in too many block group "
+ "descriptors.\n"));
+ exit(1);
+ }
if (!force && new_size < min_size) {
com_err(program_name, 0,
- _("New size smaller than minimum (%llu)\n"), min_size);
+ _("New size smaller than minimum (%llu)\n"),
+ (unsigned long long) min_size);
exit(1);
}
if (use_stride >= 0) {
@@ -563,8 +578,8 @@ int main (int argc, char ** argv)
if (!force && (new_size > max_size)) {
fprintf(stderr, _("The containing partition (or device)"
" is only %llu (%dk) blocks.\nYou requested a new size"
- " of %llu blocks.\n\n"), max_size,
- blocksize / 1024, new_size);
+ " of %llu blocks.\n\n"), (unsigned long long) max_size,
+ blocksize / 1024, (unsigned long long) new_size);
exit(1);
}
if ((flags & RESIZE_DISABLE_64BIT) && (flags & RESIZE_ENABLE_64BIT)) {
@@ -591,7 +606,8 @@ int main (int argc, char ** argv)
}
} else if (new_size == ext2fs_blocks_count(fs->super)) {
fprintf(stderr, _("The filesystem is already %llu (%dk) "
- "blocks long. Nothing to do!\n\n"), new_size,
+ "blocks long. Nothing to do!\n\n"),
+ (unsigned long long) new_size,
blocksize / 1024);
exit(0);
}
@@ -622,7 +638,8 @@ int main (int argc, char ** argv)
else
printf(_("Resizing the filesystem on "
"%s to %llu (%dk) blocks.\n"),
- device_name, new_size, blocksize / 1024);
+ device_name, (unsigned long long) new_size,
+ blocksize / 1024);
retval = resize_fs(fs, &new_size, flags,
((flags & RESIZE_PERCENT_COMPLETE) ?
resize_progress_func : 0));
@@ -639,7 +656,7 @@ int main (int argc, char ** argv)
exit(1);
}
printf(_("The filesystem on %s is now %llu (%dk) blocks long.\n\n"),
- device_name, new_size, blocksize / 1024);
+ device_name, (unsigned long long) new_size, blocksize / 1024);
if ((st_buf.st_size > new_file_size) &&
(fd > 0)) {
diff --git a/resize/online.c b/resize/online.c
index 2caf946a..eef7c0bf 100644
--- a/resize/online.c
+++ b/resize/online.c
@@ -218,7 +218,8 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt,
}
printf(_("Performing an on-line resize of %s to %llu (%dk) blocks.\n"),
- fs->device_name, *new_size, fs->blocksize / 1024);
+ fs->device_name, (unsigned long long) *new_size,
+ fs->blocksize / 1024);
size = fs->group_desc_count * sb->s_blocks_per_group +
sb->s_first_data_block;
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
index c2e10471..a0d08e5b 100644
--- a/resize/resize2fs.c
+++ b/resize/resize2fs.c
@@ -49,7 +49,7 @@ static errcode_t inode_scan_and_fix(ext2_resize_t rfs);
static errcode_t inode_ref_fix(ext2_resize_t rfs);
static errcode_t move_itables(ext2_resize_t rfs);
static errcode_t fix_resize_inode(ext2_filsys fs);
-static errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs);
+static errcode_t resize2fs_calculate_summary_stats(ext2_filsys fs);
static errcode_t fix_sb_journal_backup(ext2_filsys fs);
static errcode_t mark_table_blocks(ext2_filsys fs,
ext2fs_block_bitmap bmap);
@@ -177,9 +177,9 @@ errcode_t resize_fs(ext2_filsys fs, blk64_t *new_size, int flags,
#ifdef RESIZE2FS_DEBUG
if (rfs->flags & RESIZE_DEBUG_BMOVE)
printf("Number of free blocks: %llu/%llu, Needed: %llu\n",
- ext2fs_free_blocks_count(rfs->old_fs->super),
- ext2fs_free_blocks_count(rfs->new_fs->super),
- rfs->needed_blocks);
+ (unsigned long long) ext2fs_free_blocks_count(rfs->old_fs->super),
+ (unsigned long long) ext2fs_free_blocks_count(rfs->new_fs->super),
+ (unsigned long long) rfs->needed_blocks);
#endif
init_resource_track(&rtrack, "block_mover", fs->io);
@@ -211,7 +211,7 @@ errcode_t resize_fs(ext2_filsys fs, blk64_t *new_size, int flags,
goto errout;
init_resource_track(&rtrack, "calculate_summary_stats", fs->io);
- retval = ext2fs_calculate_summary_stats(rfs->new_fs);
+ retval = resize2fs_calculate_summary_stats(rfs->new_fs);
if (retval)
goto errout;
print_resource_track(rfs, &rtrack, fs->io);
@@ -703,6 +703,7 @@ errcode_t adjust_fs_info(ext2_filsys fs, ext2_filsys old_fs,
double percent;
ext2fs_blocks_count_set(fs->super, new_size);
+ fs->super->s_overhead_clusters = 0;
retry:
fs->group_desc_count = ext2fs_div64_ceil(ext2fs_blocks_count(fs->super) -
@@ -757,7 +758,7 @@ retry:
new_inodes =(unsigned long long) fs->super->s_inodes_per_group * fs->group_desc_count;
if (new_inodes > ~0U) {
fprintf(stderr, _("inodes (%llu) must be less than %u\n"),
- new_inodes, ~0U);
+ (unsigned long long) new_inodes, ~0U);
return EXT2_ET_TOO_MANY_INODES;
}
fs->super->s_inodes_count = fs->super->s_inodes_per_group *
@@ -1242,7 +1243,8 @@ static void mark_fs_metablock(ext2_resize_t rfs,
* nothing other than standard metadata in use.
*/
return;
- } else if (ext2fs_test_block_bitmap2(rfs->old_fs->block_map, blk) &&
+ } else if (blk < ext2fs_blocks_count(rfs->old_fs->super) &&
+ ext2fs_test_block_bitmap2(rfs->old_fs->block_map, blk) &&
!ext2fs_test_block_bitmap2(meta_bmap, blk)) {
ext2fs_mark_block_bitmap2(rfs->move_blocks, blk);
rfs->needed_blocks++;
@@ -1509,7 +1511,8 @@ static errcode_t blocks_to_move(ext2_resize_t rfs)
if (ext2fs_block_bitmap_loc(old_fs, i) !=
(blk = ext2fs_block_bitmap_loc(fs, i))) {
ext2fs_block_alloc_stats2(fs, blk, +1);
- if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+ if (blk < ext2fs_blocks_count(old_fs->super) &&
+ ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
!ext2fs_test_block_bitmap2(meta_bmap, blk))
ext2fs_mark_block_bitmap2(rfs->move_blocks,
blk);
@@ -1517,7 +1520,8 @@ static errcode_t blocks_to_move(ext2_resize_t rfs)
if (ext2fs_inode_bitmap_loc(old_fs, i) !=
(blk = ext2fs_inode_bitmap_loc(fs, i))) {
ext2fs_block_alloc_stats2(fs, blk, +1);
- if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+ if (blk < ext2fs_blocks_count(old_fs->super) &&
+ ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
!ext2fs_test_block_bitmap2(meta_bmap, blk))
ext2fs_mark_block_bitmap2(rfs->move_blocks,
blk);
@@ -1543,7 +1547,8 @@ static errcode_t blocks_to_move(ext2_resize_t rfs)
for (blk = ext2fs_inode_table_loc(fs, i), j=0;
j < fs->inode_blocks_per_group ; j++, blk++) {
ext2fs_block_alloc_stats2(fs, blk, +1);
- if (ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
+ if (blk < ext2fs_blocks_count(old_fs->super) &&
+ ext2fs_test_block_bitmap2(old_fs->block_map, blk) &&
!ext2fs_test_block_bitmap2(meta_bmap, blk))
ext2fs_mark_block_bitmap2(rfs->move_blocks,
blk);
@@ -1643,7 +1648,8 @@ static errcode_t resize2fs_get_alloc_block(ext2_filsys fs,
#ifdef RESIZE2FS_DEBUG
if (rfs->flags & 0xF)
- printf("get_alloc_block allocating %llu\n", blk);
+ printf("get_alloc_block allocating %llu\n",
+ (unsigned long long) blk);
#endif
ext2fs_mark_block_bitmap2(rfs->old_fs->block_map, blk);
@@ -1749,7 +1755,9 @@ static errcode_t block_mover(ext2_resize_t rfs)
#ifdef RESIZE2FS_DEBUG
if (rfs->flags & RESIZE_DEBUG_BMOVE)
printf("Moving %llu blocks %llu->%llu\n",
- size, old_blk, new_blk);
+ (unsigned long long) size,
+ (unsigned long long) old_blk,
+ (unsigned long long) new_blk);
#endif
do {
c = size;
@@ -1842,8 +1850,9 @@ static int process_block(ext2_filsys fs, blk64_t *block_nr,
#ifdef RESIZE2FS_DEBUG
if (pb->rfs->flags & RESIZE_DEBUG_BMOVE)
printf("ino=%u, blockcnt=%lld, %llu->%llu\n",
- pb->old_ino, blockcnt, block,
- new_block);
+ pb->old_ino, (long long) blockcnt,
+ (unsigned long long) block,
+ (unsigned long long) new_block);
#endif
block = new_block;
}
@@ -2459,7 +2468,8 @@ static errcode_t move_itables(ext2_resize_t rfs)
#ifdef RESIZE2FS_DEBUG
if (rfs->flags & RESIZE_DEBUG_ITABLEMOVE)
printf("Itable move group %d block %llu->%llu (diff %lld)\n",
- i, old_blk, new_blk, diff);
+ i, (unsigned long long) old_blk,
+ (unsigned long long) new_blk, diff);
#endif
if (!diff)
@@ -2739,7 +2749,7 @@ errout:
/*
* Finally, recalculate the summary information
*/
-static errcode_t ext2fs_calculate_summary_stats(ext2_filsys fs)
+static errcode_t resize2fs_calculate_summary_stats(ext2_filsys fs)
{
blk64_t blk;
ext2_ino_t ino;
@@ -2926,14 +2936,15 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
fs->super->s_reserved_gdt_blocks;
/* calculate how many blocks are needed for data */
- data_needed = ext2fs_blocks_count(fs->super) -
- ext2fs_free_blocks_count(fs->super);
-
- for (grp = 0; grp < fs->group_desc_count; grp++)
+ data_needed = ext2fs_blocks_count(fs->super);
+ for (grp = 0; grp < fs->group_desc_count; grp++) {
data_needed -= calc_group_overhead(fs, grp, old_desc_blocks);
+ data_needed -= ext2fs_bg_free_blocks_count(fs, grp);
+ }
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
- printf("fs requires %llu data blocks.\n", data_needed);
+ printf("fs requires %llu data blocks.\n",
+ (unsigned long long) data_needed);
#endif
/*
@@ -2976,7 +2987,7 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
printf("With %d group(s), we have %llu blocks available.\n",
- groups, data_blocks);
+ groups, (unsigned long long) data_blocks);
#endif
/*
@@ -3029,8 +3040,10 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
if (flags & RESIZE_DEBUG_MIN_CALC)
printf("Added %d extra group(s), "
"blks_needed %llu, data_blocks %llu, "
- "last_start %llu\n", extra_grps, blks_needed,
- data_blocks, last_start);
+ "last_start %llu\n", extra_grps,
+ (unsigned long long) blks_needed,
+ (unsigned long long) data_blocks,
+ (unsigned long long) last_start);
#endif
}
@@ -3045,7 +3058,8 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
- printf("Last group's overhead is %llu\n", overhead);
+ printf("Last group's overhead is %llu\n",
+ (unsigned long long) overhead);
#endif
/*
@@ -3058,7 +3072,7 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
printf("Need %llu data blocks in last group\n",
- remainder);
+ (unsigned long long) remainder);
#endif
/*
* 50 is a magic number that mkfs/resize uses to see if its
@@ -3076,7 +3090,8 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
overhead += fs->super->s_first_data_block;
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
- printf("Final size of last group is %lld\n", overhead);
+ printf("Final size of last group is %llu\n",
+ (unsigned long long) overhead);
#endif
/* Add extra slack for bigalloc file systems */
@@ -3103,7 +3118,8 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
- printf("Estimated blocks needed: %llu\n", blks_needed);
+ printf("Estimated blocks needed: %llu\n",
+ (unsigned long long) blks_needed);
#endif
/*
@@ -3138,7 +3154,8 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
- printf("Extents safety margin: %llu\n", safe_margin);
+ printf("Extents safety margin: %llu\n",
+ (unsigned long long) safe_margin);
#endif
blks_needed += safe_margin;
}
diff --git a/resize/test_extent.c b/resize/test_extent.c
index 5e9aed79..11ad1323 100644
--- a/resize/test_extent.c
+++ b/resize/test_extent.c
@@ -88,7 +88,8 @@ void do_test(FILE *in, FILE *out)
goto handle_error;
} else if (!strcmp(cmd, "lookup")) {
num2 = ext2fs_extent_translate(extent, num1);
- fprintf(out, "# Answer: %llu%s\n", num2,
+ fprintf(out, "# Answer: %llu%s\n",
+ (unsigned long long) num2,
num2 ? "" : " (not found)");
} else if (!strcmp(cmd, "dump")) {
ext2fs_extent_dump(extent, out);
@@ -104,7 +105,9 @@ void do_test(FILE *in, FILE *out)
if (!size)
break;
fprintf(out, "# %llu -> %llu (%llu)\n",
- num1, num2, size);
+ (unsigned long long) num1,
+ (unsigned long long) num2,
+ (unsigned long long) size);
}
} else
fputs("# Syntax error\n", out);
diff --git a/scrub/Makefile.in b/scrub/Makefile.in
index 10c2f43e..387f6504 100644
--- a/scrub/Makefile.in
+++ b/scrub/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = scrub
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/scrub/e2scrub.in b/scrub/e2scrub.in
index b778a92a..30ab7cbd 100644
--- a/scrub/e2scrub.in
+++ b/scrub/e2scrub.in
@@ -66,7 +66,7 @@ exitcode() {
# for capturing all the log messages if the scrub fails, because the
# fail service uses the service name to gather log messages for the
# error report.
- if [ -n "${SERVICE_MODE}" ]; then
+ if [ -n "${SERVICE_MODE}" -a "${ret}" -ne 0 ]; then
test "${ret}" -ne 0 && ret=1
sleep 2
fi
@@ -201,7 +201,7 @@ mark_corrupt() {
setup() {
# Try to remove snapshot for 30s, bail out if we can't remove it.
- lveremove_deadline="$(( $(date "+%s") + 30))"
+ lvremove_deadline="$(( $(date "+%s") + 30))"
${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 2>/dev/null
while [ -e "${snap_dev}" ] && [ "$?" -eq "5" ] &&
[ "$(date "+%s")" -lt "${lvremove_deadline}" ]; do
diff --git a/scrub/e2scrub_all.in b/scrub/e2scrub_all.in
index 1418a229..4288b969 100644
--- a/scrub/e2scrub_all.in
+++ b/scrub/e2scrub_all.in
@@ -56,14 +56,8 @@ exitcode() {
# section 22.2) and hope the admin will scan the log for what
# actually happened.
- # We have to sleep 2 seconds here because journald uses the pid to
- # connect our log messages to the systemd service. This is critical
- # for capturing all the log messages if the scrub fails, because the
- # fail service uses the service name to gather log messages for the
- # error report.
- if [ -n "${SERVICE_MODE}" ]; then
+ if [ -n "${SERVICE_MODE}" -a "${ret}" -ne 0 ]; then
test "${ret}" -ne 0 && ret=1
- sleep 2
fi
exit "${ret}"
@@ -80,9 +74,18 @@ while getopts "nrAV" opt; do
done
shift "$((OPTIND - 1))"
-if [ -n "${SERVICE_MODE}" -a "${reap}" -ne 1 -a "${periodic_e2scrub}" -ne 1 ]
-then
- exitcode 0
+# If we're in service mode and the service is not enabled via config file...
+if [ -n "${SERVICE_MODE}" -a "${periodic_e2scrub}" -ne 1 ]; then
+ # ...don't start e2scrub processes.
+ if [ "${reap}" -eq 0 ]; then
+ exitcode 0
+ fi
+
+ # ...and if we don't see any leftover e2scrub snapshots, don't
+ # run the reaping process either, because lvs can be slow.
+ if ! readlink -q -s -e /dev/mapper/*.e2scrub* > /dev/null; then
+ exitcode 0
+ fi
fi
# close file descriptor 3 (from cron) since it causes lvm to kvetch
@@ -92,6 +95,12 @@ exec 3<&-
# indicating success to avoid spamming the sysadmin with fail messages
# when e2scrub_all is run out of cron or a systemd timer.
+if ! type mapfile >& /dev/null ; then
+ test -n "${SERVICE_MODE}" && exitcode 0
+ echo "e2scrub_all: can't find mapfile --- is bash 4.xx installed?"
+ exitcode 1
+fi
+
if ! type lsblk >& /dev/null ; then
test -n "${SERVICE_MODE}" && exitcode 0
echo "e2scrub_all: can't find lsblk --- is util-linux installed?"
@@ -156,13 +165,13 @@ escape_path_for_systemd() {
}
# Scrub any mounted fs on lvm by creating a snapshot and fscking that.
-stdin="$(realpath /dev/stdin)"
-ls_targets | while read tgt; do
+mapfile -t targets < <(ls_targets)
+for tgt in "${targets[@]}"; do
# If we're not reaping and systemd is present, try invoking the
# systemd service.
if [ "${reap}" -ne 1 ] && type systemctl > /dev/null 2>&1; then
tgt_esc="$(escape_path_for_systemd "${tgt}")"
- ${DBG} systemctl start "e2scrub@${tgt_esc}" 2> /dev/null < "${stdin}"
+ ${DBG} systemctl start "e2scrub@${tgt_esc}" 2> /dev/null
res=$?
if [ "${res}" -eq 0 ] || [ "${res}" -eq 1 ]; then
continue;
@@ -170,7 +179,7 @@ ls_targets | while read tgt; do
fi
# Otherwise use direct invocation
- ${DBG} "@root_sbindir@/e2scrub" ${scrub_args} "${tgt}" < "${stdin}"
+ ${DBG} "@root_sbindir@/e2scrub" ${scrub_args} "${tgt}"
done
exitcode 0
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d9f8c731..ba06b3b6 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = tests
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/tests/d_corrupt_journal_nr_users/expect b/tests/d_corrupt_journal_nr_users/expect
index cdfb49a0..656d35c3 100644
--- a/tests/d_corrupt_journal_nr_users/expect
+++ b/tests/d_corrupt_journal_nr_users/expect
@@ -34,8 +34,10 @@ Default directory hash: half_md4
Journal backup: inode blocks
Checksum type: crc32c
Journal features: (none)
-Journal size: 4096k
-Journal length: 1024
+Total journal size: 4096k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
Journal number of users: 9999
diff --git a/tests/f_bad_encryption/expect.1 b/tests/f_bad_encryption/expect.1
new file mode 100644
index 00000000..d743e66f
--- /dev/null
+++ b/tests/f_bad_encryption/expect.1
@@ -0,0 +1,125 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 17 has encrypt flag but no encryption extended attribute.
+Clear flag? yes
+
+Inode 18 has encrypt flag but no encryption extended attribute.
+Clear flag? yes
+
+Encrypted inode 19 has corrupt encryption extended attribute.
+Clear inode? yes
+
+Encrypted inode 20 has corrupt encryption extended attribute.
+Clear inode? yes
+
+Encrypted inode 21 has corrupt encryption extended attribute.
+Clear inode? yes
+
+Encrypted inode 22 has corrupt encryption extended attribute.
+Clear inode? yes
+
+Pass 2: Checking directory structure
+Encrypted entry 'd6M->'M-#I^VM-^KM-F~^WSJ+M-uM-zM-zXM-^' in /edir (12) references unencrypted inode 17.
+Clear? yes
+
+Encrypted entry '\M-!M-Y%DhM-OM-VM-zM-CM-gVM-R3M-^RM-IkE^JM-^S' in /edir (12) references unencrypted inode 18.
+Clear? yes
+
+Entry 'M-{^Qp-M-sM-U7eM-^C^L^PG^ZM-FM-,M-B' in /edir (12) has deleted/unused inode 19. Clear? yes
+
+Entry 'M-f0M-f3/M-NM-GM-:M-^YM-jM-XM-91DM-^_M-V' in /edir (12) has deleted/unused inode 20. Clear? yes
+
+Entry '^M-R"M-^K^P7M-'M-EM-C}^MM-yM-^LwM-^N^Z' in /edir (12) has deleted/unused inode 21. Clear? yes
+
+Entry 'M-s^J_;uIvM-^Z[M-nIM-5vM-^AcM-o' in /edir (12) has deleted/unused inode 22. Clear? yes
+
+Encrypted entry 'kK=,M-bM-^AM-{M-YM-^J6M-hM-y^XM-^W}M-M' in /edir (12) references unencrypted inode 23.
+Clear? yes
+
+Encrypted entry 'M-VM-cxM-jM-zM-b^WM-o*M-jM-uM-,R^PM-hM-2' in /edir (12) references unencrypted inode 24.
+Clear? yes
+
+Encrypted entry 'UqM-AM-#KM-^PM-_^kM-9P0M-^FM-_^@;A^J"R' in /edir (12) references unencrypted inode 25.
+Clear? yes
+
+Encrypted entry 'M-TM-N8^[M-3M-( M-[A^FR}^ZhkM-^?=M-c^Mo' in /edir (12) references inode 26, which has a different encryption policy.
+Clear? yes
+
+Encrypted entry 'M--aM-^?~M-^\M-u^FM-/!^YM-OZM-^LM-)M-p1' in /edir (12) references inode 27, which has a different encryption policy.
+Clear? yes
+
+Encrypted entry '(M-8RKM-LM-eM-^W^[M-'M-SM-@uM-^VM-|M-GiM-^JbM-nM-z' in /edir (12) references inode 28, which has a different encryption policy.
+Clear? yes
+
+Encrypted entry '\M-ggCeM-/?M-^BM-{(M-^OM-9M-^QQAM-^N=M-c^Mo' in /edir (12) references inode 29, which has a different encryption policy.
+Clear? yes
+
+Pass 3: Checking directory connectivity
+Unconnected directory inode 18 (/edir/???)
+Connect to /lost+found? yes
+
+Unconnected directory inode 24 (/edir/???)
+Connect to /lost+found? yes
+
+Unconnected directory inode 27 (/edir/???)
+Connect to /lost+found? yes
+
+Pass 4: Checking reference counts
+Unattached inode 17
+Connect to /lost+found? yes
+
+Inode 17 ref count is 2, should be 1. Fix? yes
+
+Inode 18 ref count is 3, should be 2. Fix? yes
+
+Unattached inode 23
+Connect to /lost+found? yes
+
+Inode 23 ref count is 2, should be 1. Fix? yes
+
+Inode 24 ref count is 3, should be 2. Fix? yes
+
+Unattached inode 25
+Connect to /lost+found? yes
+
+Inode 25 ref count is 2, should be 1. Fix? yes
+
+Unattached inode 26
+Connect to /lost+found? yes
+
+Inode 26 ref count is 2, should be 1. Fix? yes
+
+Inode 27 ref count is 3, should be 2. Fix? yes
+
+Unattached inode 28
+Connect to /lost+found? yes
+
+Inode 28 ref count is 2, should be 1. Fix? yes
+
+Unattached inode 29
+Connect to /lost+found? yes
+
+Inode 29 ref count is 2, should be 1. Fix? yes
+
+Pass 5: Checking group summary information
+Block bitmap differences: -(25--32)
+Fix? yes
+
+Free blocks count wrong for group #0 (75, counted=83).
+Fix? yes
+
+Free blocks count wrong (75, counted=83).
+Fix? yes
+
+Inode bitmap differences: -(19--22)
+Fix? yes
+
+Free inodes count wrong for group #0 (95, counted=99).
+Fix? yes
+
+Free inodes count wrong (95, counted=99).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 29/128 files (0.0% non-contiguous), 45/128 blocks
+Exit status is 1
diff --git a/tests/f_bad_encryption/expect.2 b/tests/f_bad_encryption/expect.2
new file mode 100644
index 00000000..fcfabdbd
--- /dev/null
+++ b/tests/f_bad_encryption/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 29/128 files (0.0% non-contiguous), 45/128 blocks
+Exit status is 0
diff --git a/tests/f_bad_encryption/image.gz b/tests/f_bad_encryption/image.gz
new file mode 100644
index 00000000..64b59b78
--- /dev/null
+++ b/tests/f_bad_encryption/image.gz
Binary files differ
diff --git a/tests/f_bad_encryption/mkimage.sh b/tests/f_bad_encryption/mkimage.sh
new file mode 100755
index 00000000..e58395df
--- /dev/null
+++ b/tests/f_bad_encryption/mkimage.sh
@@ -0,0 +1,169 @@
+#!/bin/bash
+#
+# This is the script that was used to create the image.gz in this directory.
+#
+# This requires a patched version of debugfs that understands the "fscrypt."
+# xattr name prefix, so that the encryption xattrs can be manipulated.
+
+set -e -u
+umask 0022
+
+do_debugfs() {
+ umount mnt
+ debugfs -w "$@" image
+ mount image mnt
+}
+
+create_encrypted_file() {
+ local file=$1
+ local ino
+
+ echo foo > "$file"
+
+ # not needed, but makes image more compressible
+ ino=$(stat -c %i "$file")
+ do_debugfs -R "zap_block -f <$ino> 0"
+}
+
+set_encryption_xattr() {
+ local file=$1
+ local value=$2
+ local ino
+
+ ino=$(stat -c %i "$file")
+ do_debugfs -R "ea_set <$ino> fscrypt.c $value"
+}
+
+rm_encryption_xattr() {
+ local file=$1
+ local ino
+
+ ino=$(stat -c %i "$file")
+ do_debugfs -R "ea_rm <$ino> fscrypt.c"
+}
+
+clear_encrypt_flag() {
+ local file=$1
+ local ino
+
+ ino=$(stat -c %i "$file")
+ do_debugfs -R "set_inode_field <$ino> flags 0"
+}
+
+clear_encryption() {
+ local file=$1
+ local ino
+ local is_symlink=false
+
+ if [ -L "$file" ]; then
+ is_symlink=true
+ fi
+ ino=$(stat -c %i "$file")
+
+ do_debugfs -R "ea_rm <$ino> fscrypt.c"
+ do_debugfs -R "set_inode_field <$ino> flags 0"
+ if $is_symlink; then
+ do_debugfs -R "set_inode_field <$ino> block[0] 0xAAAAAAAA"
+ do_debugfs -R "set_inode_field <$ino> block[1] 0"
+ do_debugfs -R "set_inode_field <$ino> size 4"
+ fi
+}
+
+mkdir -p mnt
+umount mnt &> /dev/null || true
+
+dd if=/dev/zero of=image bs=4096 count=128
+mke2fs -O encrypt -b 4096 -N 128 image
+mount image mnt
+
+# Create an encrypted directory (ino 12)
+dir=mnt/edir
+mkdir $dir
+echo password | e4crypt add_key $dir
+
+# Control cases: valid encrypted regular file, dir, and symlink (ino 13-15)
+create_encrypted_file $dir/encrypted_file
+mkdir $dir/encrypted_dir
+ln -s target $dir/encrypted_symlink
+
+# Control case: file type that is never encrypted (ino 16)
+mkfifo $dir/fifo
+
+# Inodes with missing encryption xattr (ino 17-18).
+# e2fsck should offer to clear the encrypt flag on these inodes.
+
+create_encrypted_file $dir/missing_xattr_file
+rm_encryption_xattr $dir/missing_xattr_file
+
+mkdir $dir/missing_xattr_dir
+rm_encryption_xattr $dir/missing_xattr_dir
+
+# Inodes with corrupt encryption xattr (ino 19-22).
+# e2fsck should offer to clear these inodes.
+
+create_encrypted_file $dir/corrupt_xattr_1
+set_encryption_xattr $dir/corrupt_xattr_1 '\0'
+
+create_encrypted_file $dir/corrupt_xattr_2
+set_encryption_xattr $dir/corrupt_xattr_2 \
+ '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'
+
+create_encrypted_file $dir/corrupt_xattr_3
+set_encryption_xattr $dir/corrupt_xattr_3 '\1'
+
+create_encrypted_file $dir/corrupt_xattr_4
+set_encryption_xattr $dir/corrupt_xattr_4 '\2'
+
+# Unencrypted inodes in encrypted directory (ino 23-25).
+# e2fsck should offer to clear these directory entries.
+
+create_encrypted_file $dir/unencrypted_file
+clear_encryption $dir/unencrypted_file
+
+mkdir $dir/unencrypted_dir
+clear_encryption $dir/unencrypted_dir
+
+ln -s target $dir/unencrypted_symlink
+clear_encryption $dir/unencrypted_symlink
+
+# Inodes with different encryption policy in encrypted directory (ino 26-29).
+# e2fsck should offer to clear these directory entries.
+
+xattr='\1\1\4\0AAAAAAAABBBBBBBBBBBBBBBB'
+
+create_encrypted_file $dir/inconsistent_file_1
+set_encryption_xattr $dir/inconsistent_file_1 $xattr
+
+mkdir $dir/inconsistent_dir
+set_encryption_xattr $dir/inconsistent_dir $xattr
+
+ln -s target $dir/inconsistent_symlink
+set_encryption_xattr $dir/inconsistent_symlink $xattr
+
+xattr='\2\1\4\0\0\0\0\0AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB'
+create_encrypted_file $dir/inconsistent_file_2
+set_encryption_xattr $dir/inconsistent_file_2 $xattr
+
+# Encrypted file and directory with valid v2 encryption policy (ino 30-31).
+# e2fsck shouldn't change these.
+dir2=mnt/edir2
+mkdir $dir2
+echo password | e4crypt add_key $dir2
+xattr='\2\1\4\0\0\0\0\0AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB'
+create_encrypted_file $dir2/file
+set_encryption_xattr $dir2/file $xattr
+set_encryption_xattr $dir2 $xattr
+
+# Encrypted file and directory with unrecognized encryption policy version
+# (ino 32-33). e2fsck shouldn't change these.
+dir3=mnt/edir3
+mkdir $dir3
+echo password | e4crypt add_key $dir3
+xattr='\3'
+create_encrypted_file $dir3/file
+set_encryption_xattr $dir3/file $xattr
+set_encryption_xattr $dir3 $xattr
+
+umount mnt
+rmdir mnt
+gzip -9 -f image
diff --git a/tests/f_bad_encryption/name b/tests/f_bad_encryption/name
new file mode 100644
index 00000000..85b19eda
--- /dev/null
+++ b/tests/f_bad_encryption/name
@@ -0,0 +1 @@
+missing, corrupt, and inconsistent encryption policies
diff --git a/tests/f_bad_fname/expect.1 b/tests/f_bad_fname/expect.1
new file mode 100644
index 00000000..66f87df2
--- /dev/null
+++ b/tests/f_bad_fname/expect.1
@@ -0,0 +1,22 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'AM-^?' in /ci_dir (12) has illegal UTF-8 characters in its name.
+Fix? yes
+
+Entry 'AM-~' in /ci_dir (12) has illegal UTF-8 characters in its name.
+Fix? yes
+
+Duplicate entry 'A.' found.
+ Marking /ci_dir (12) to be rebuilt.
+
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Entry 'A.' in /ci_dir (12) has a non-unique filename.
+Rename to A.~0? yes
+
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 14/16 files (0.0% non-contiguous), 22/100 blocks
+Exit status is 1
diff --git a/tests/f_bad_fname/expect.2 b/tests/f_bad_fname/expect.2
new file mode 100644
index 00000000..13de1c08
--- /dev/null
+++ b/tests/f_bad_fname/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 14/16 files (0.0% non-contiguous), 22/100 blocks
+Exit status is 0
diff --git a/tests/f_bad_fname/image.gz b/tests/f_bad_fname/image.gz
new file mode 100644
index 00000000..a8b3fc6b
--- /dev/null
+++ b/tests/f_bad_fname/image.gz
Binary files differ
diff --git a/tests/f_bad_fname/name b/tests/f_bad_fname/name
new file mode 100644
index 00000000..675165a6
--- /dev/null
+++ b/tests/f_bad_fname/name
@@ -0,0 +1 @@
+Case-insensitive directory with broken file names
diff --git a/tests/f_badjour_indblks/image b/tests/f_badjour_indblks/image
deleted file mode 100644
index adbd1d79..00000000
--- a/tests/f_badjour_indblks/image
+++ /dev/null
Binary files differ
diff --git a/tests/f_bb_in_bb/expect.1 b/tests/f_bb_in_bb/expect.1
index 1d719e51..1bd697ec 100644
--- a/tests/f_bb_in_bb/expect.1
+++ b/tests/f_bb_in_bb/expect.1
@@ -1,6 +1,8 @@
Pass 1: Checking inodes, blocks, and sizes
Bad block list says the bad block list inode is bad. Clear inode? yes
+Restarting e2fsck from the beginning...
+Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
diff --git a/tests/f_dir_bad_csum/expect.1 b/tests/f_dir_bad_csum/expect.1
index 94e72daa..2c684fe6 100644
--- a/tests/f_dir_bad_csum/expect.1
+++ b/tests/f_dir_bad_csum/expect.1
@@ -9,21 +9,15 @@ Fix? yes
Directory inode 14, block #0, offset 0: directory has no checksum.
Fix? yes
-Directory inode 15, block #0, offset 0: directory has no checksum.
-Fix? yes
-
Directory inode 15, block #0, offset 1000: directory corrupted
Salvage? yes
-Directory inode 16, block #0, offset 0: directory has no checksum.
+Entry '' in ??? (15) has rec_len of 0, should be 12.
Fix? yes
Directory inode 16, block #0, offset 12: directory corrupted
Salvage? yes
-Directory inode 17, block #0, offset 0: directory has no checksum.
-Fix? yes
-
Directory inode 17, block #0, offset 0: directory corrupted
Salvage? yes
diff --git a/tests/f_jnl_errno/expect.0 b/tests/f_jnl_errno/expect.0
index 2a9426d9..96fb01a7 100644
--- a/tests/f_jnl_errno/expect.0
+++ b/tests/f_jnl_errno/expect.0
@@ -31,8 +31,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 1024k
-Journal length: 1024
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
Journal sequence: 0x00000005
Journal start: 0
diff --git a/tests/f_large_dir/expect b/tests/f_large_dir/expect
index 8f7d99dc..028234cc 100644
--- a/tests/f_large_dir/expect
+++ b/tests/f_large_dir/expect
@@ -11,6 +11,16 @@ Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test.img: ***** FILE SYSTEM WAS MODIFIED *****
+test.img: 17/65072 files (5.9% non-contiguous), 9732/108341 blocks
+Exit status is 0
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
Directory exceeds max links, but no DIR_NLINK feature in superblock.
Fix? yes
diff --git a/tests/f_large_dir/script b/tests/f_large_dir/script
index 9af042ca..e3235836 100644
--- a/tests/f_large_dir/script
+++ b/tests/f_large_dir/script
@@ -26,17 +26,33 @@ $MKE2FS -b 1024 -O large_dir,uninit_bg -N $((ENTRIES + 50)) \
RC=$?
if [ $RC -eq 0 ]; then
{
- START=$SECONDS
+ # First some initial fs setup to create indexed dir
echo "mkdir /foo"
echo "cd /foo"
touch $TMPFILE.tmp
echo "write $TMPFILE.tmp foofile"
i=0
- last=0
+ while test $i -lt $DIRENT_PER_LEAF ; do
+ printf "mkdir d%0254u\n" $i
+ i=$((i + 1));
+ done
+ echo "expand ./"
+ printf "mkdir d%0254u\n" $i
+} | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
+ RC=$?
+ # e2fsck should optimize the dir to become indexed
+ $E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
+ status=$?
+ echo Exit status is $status >> $OUT.new
+fi
+
+if [ $RC -eq 0 ]; then
+{
+ START=$SECONDS
+ i=$(($DIRENT_PER_LEAF+1))
+ last=$i
+ echo "cd /foo"
while test $i -lt $ENTRIES ; do
- if test $((i % DIRENT_PER_LEAF)) -eq 0; then
- echo "expand ./"
- fi
ELAPSED=$((SECONDS - START))
if test $((i % 5000)) -eq 0 -a $ELAPSED -gt 10; then
RATE=$(((i - last) / ELAPSED))
@@ -54,6 +70,7 @@ if [ $RC -eq 0 ]; then
} | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
RC=$?
fi
+
if [ $RC -eq 0 ]; then
$E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
status=$?
diff --git a/tests/f_large_dir_csum/expect b/tests/f_large_dir_csum/expect
new file mode 100644
index 00000000..aa9f33f1
--- /dev/null
+++ b/tests/f_large_dir_csum/expect
@@ -0,0 +1,32 @@
+Creating filesystem with 31002 1k blocks and 64 inodes
+Superblock backups stored on blocks:
+ 8193, 24577
+
+Allocating group tables: done
+Writing inode tables: done
+Writing superblocks and filesystem accounting information: done
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
+Inode 13 ref count is 1, should be 5. Fix? yes
+
+Pass 5: Checking group summary information
+
+test.img: ***** FILE SYSTEM WAS MODIFIED *****
+test.img: 13/64 files (0.0% non-contiguous), 766/31002 blocks
+Exit status is 1
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
+Inode 13 ref count is 5, should be 46504. Fix? yes
+
+Pass 5: Checking group summary information
+
+test.img: ***** FILE SYSTEM WAS MODIFIED *****
+test.img: 13/64 files (0.0% non-contiguous), 16390/31002 blocks
+Exit status is 1
diff --git a/tests/f_large_dir_csum/is_slow_test b/tests/f_large_dir_csum/is_slow_test
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/f_large_dir_csum/is_slow_test
diff --git a/tests/f_large_dir_csum/name b/tests/f_large_dir_csum/name
new file mode 100644
index 00000000..2b37c8c2
--- /dev/null
+++ b/tests/f_large_dir_csum/name
@@ -0,0 +1 @@
+optimize 3 level htree directories with metadata checksums
diff --git a/tests/f_large_dir_csum/script b/tests/f_large_dir_csum/script
new file mode 100644
index 00000000..286a965d
--- /dev/null
+++ b/tests/f_large_dir_csum/script
@@ -0,0 +1,84 @@
+OUT=$test_name.log
+EXP=$test_dir/expect
+E2FSCK=../e2fsck/e2fsck
+
+NAMELEN=255
+DIRENT_SZ=8
+BLOCKSZ=1024
+INODESZ=128
+CSUM_SZ=8
+CSUM_TAIL_SZ=12
+DIRENT_PER_LEAF=$(((BLOCKSZ - CSUM_TAIL_SZ) / (NAMELEN + DIRENT_SZ)))
+HEADER=32
+INDEX_SZ=8
+INDEX_L1=$(((BLOCKSZ - HEADER - CSUM_SZ) / INDEX_SZ))
+INDEX_L2=$(((BLOCKSZ - DIRENT_SZ - CSUM_SZ) / INDEX_SZ))
+DIRBLK=$((3 + INDEX_L1 * INDEX_L2))
+ENTRIES=$((DIRBLK * DIRENT_PER_LEAF))
+# directory leaf blocks - get twice as much because the leaves won't be full
+# and there are also other filesystem blocks.
+FSIZE=$((DIRBLK * 2))
+
+$MKE2FS -b 1024 -O extents,64bit,large_dir,uninit_bg,metadata_csum -N 50 \
+ -I $INODESZ -F $TMPFILE $FSIZE > $OUT.new 2>&1
+RC=$?
+if [ $RC -eq 0 ]; then
+{
+ # First some initial fs setup to create indexed dir
+ echo "mkdir /foo"
+ echo "cd /foo"
+ touch $TMPFILE.tmp
+ echo "write $TMPFILE.tmp foofile"
+ i=0
+ while test $i -lt $DIRENT_PER_LEAF ; do
+ printf "ln foofile f%0254u\n" $i
+ i=$((i + 1));
+ done
+ echo "expand ./"
+ printf "ln foofile f%0254u\n" $i
+} | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
+ RC=$?
+ # e2fsck should optimize the dir to become indexed
+ $E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
+ status=$?
+ echo Exit status is $status >> $OUT.new
+fi
+
+if [ $RC -eq 0 ]; then
+{
+ START=$SECONDS
+ i=$(($DIRENT_PER_LEAF+1))
+ last=$i
+ echo "cd /foo"
+ while test $i -lt $ENTRIES ; do
+ ELAPSED=$((SECONDS - START))
+ if test $((i % 5000)) -eq 0 -a $ELAPSED -gt 10; then
+ RATE=$(((i - last) / ELAPSED))
+ echo "$test_name: $i/$ENTRIES links, ${ELAPSED}s @ $RATE/s" >&2
+ START=$SECONDS
+ last=$i
+ fi
+ printf "ln foofile f%0254u\n" $i
+ i=$((i + 1))
+ done
+} | $DEBUGFS -w $TMPFILE > /dev/null 2>> $OUT.new
+ RC=$?
+fi
+
+if [ $RC -eq 0 ]; then
+ $E2FSCK -yfD $TMPFILE >> $OUT.new 2>&1
+ status=$?
+ echo Exit status is $status >> $OUT.new
+ sed -f $cmd_dir/filter.sed -e "s;$TMPFILE;test.img;" $OUT.new > $OUT
+ rm -f $OUT.new
+
+ cmp -s $OUT $EXP
+ RC=$?
+fi
+if [ $RC -eq 0 ]; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "$test_name: $test_description: failed"
+ diff -u $EXP $OUT > $test_name.failed
+fi
diff --git a/tests/f_many_subdirs/expect.1 b/tests/f_many_subdirs/expect.1
new file mode 100644
index 00000000..a8da4807
--- /dev/null
+++ b/tests/f_many_subdirs/expect.1
@@ -0,0 +1,47 @@
+Pass 1: Checking inodes, blocks, and sizes
+Deleted inode 26363 has zero dtime. Fix? yes
+
+Pass 2: Checking directory structure
+Entry 'nlink_eq_0' in / (2) has deleted/unused inode 26363. Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Inode 2 ref count is 9, should be 8. Fix? yes
+
+Inode 13201 ref count is 1, should be 2. Fix? yes
+
+Inode 19763 ref count is 65535, should be 2. Fix? yes
+
+Directory exceeds max links, but no DIR_NLINK feature in superblock.
+Fix? yes
+
+Inode 32963 ref count is 65000, should be 2. Fix? yes
+
+Directory inode 39601 ref count set to overflow but could be exact value 2. Fix? yes
+
+Pass 5: Checking group summary information
+Block bitmap differences: -73383
+Fix? yes
+
+Free blocks count wrong for group #8 (0, counted=1).
+Fix? yes
+
+Free blocks count wrong (5388, counted=5389).
+Fix? yes
+
+Inode bitmap differences: -26363
+Fix? yes
+
+Free inodes count wrong for group #3 (37, counted=38).
+Fix? yes
+
+Directories count wrong for group #3 (6563, counted=6562).
+Fix? yes
+
+Free inodes count wrong (382, counted=383).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 65617/66000 files (0.0% non-contiguous), 76531/81920 blocks
+Exit status is 1
diff --git a/tests/f_many_subdirs/expect.2 b/tests/f_many_subdirs/expect.2
new file mode 100644
index 00000000..bb0d8291
--- /dev/null
+++ b/tests/f_many_subdirs/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 65617/66000 files (0.0% non-contiguous), 76531/81920 blocks
+Exit status is 0
diff --git a/tests/f_many_subdirs/image.gz b/tests/f_many_subdirs/image.gz
new file mode 100644
index 00000000..7f60fffc
--- /dev/null
+++ b/tests/f_many_subdirs/image.gz
Binary files differ
diff --git a/tests/f_many_subdirs/name b/tests/f_many_subdirs/name
new file mode 100644
index 00000000..6264a60e
--- /dev/null
+++ b/tests/f_many_subdirs/name
@@ -0,0 +1 @@
+directory with more than 65000 sub-directories
diff --git a/tests/f_mmp/script b/tests/f_mmp/script
index 07ae2321..f433bd5f 100644
--- a/tests/f_mmp/script
+++ b/tests/f_mmp/script
@@ -1,16 +1,5 @@
FSCK_OPT=-yf
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
-
echo "make the test image ..." > $test_name.log
$MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 >> $test_name.log 2>&1
status=$?
diff --git a/tests/f_mmp_garbage/script b/tests/f_mmp_garbage/script
index 6d451a67..69be3387 100644
--- a/tests/f_mmp_garbage/script
+++ b/tests/f_mmp_garbage/script
@@ -1,16 +1,5 @@
FSCK_OPT=-yf
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ] ; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
-
echo "make the test image ..." > $test_name.log
$MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 >> $test_name.log 2>&1
status=$?
diff --git a/tests/f_opt_extent/expect b/tests/f_opt_extent/expect
index 6d4863b5..9d2021e8 100644
--- a/tests/f_opt_extent/expect
+++ b/tests/f_opt_extent/expect
@@ -26,16 +26,16 @@ Pass 5: Checking group summary information
Change in FS metadata:
-@@ -10,7 +10,7 @@
- Inode count: 65536
+@@ -11,7 +11,7 @@
Block count: 524288
Reserved block count: 26214
+ Overhead clusters: 35246
-Free blocks: 570
+Free blocks: 567
Free inodes: 65047
First block: 1
Block size: 1024
-@@ -47,8 +47,8 @@
+@@ -50,8 +50,8 @@
Block bitmap at 262 (+261)
Inode bitmap at 278 (+277)
Inode table at 294-549 (+293)
diff --git a/tests/f_rebuild_csum_rootdir/expect.1 b/tests/f_rebuild_csum_rootdir/expect.1
index 4df58f91..bab07e05 100644
--- a/tests/f_rebuild_csum_rootdir/expect.1
+++ b/tests/f_rebuild_csum_rootdir/expect.1
@@ -1,8 +1,5 @@
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
-Directory inode 2, block #0, offset 0: directory has no checksum.
-Fix? yes
-
Directory inode 2, block #0, offset 0: directory corrupted
Salvage? yes
diff --git a/tests/f_recnect_bad/expect.1 b/tests/f_recnect_bad/expect.1
index d4f72a1c..97ffcc52 100644
--- a/tests/f_recnect_bad/expect.1
+++ b/tests/f_recnect_bad/expect.1
@@ -1,11 +1,10 @@
Pass 1: Checking inodes, blocks, and sizes
+Inode 15, i_size is 51539608576, should be 1024. Fix? yes
+
Pass 2: Checking directory structure
i_faddr for inode 15 (/test/quux) is 23, should be zero.
Clear? yes
-i_size_high for inode 15 (/test/quux) is 12, should be zero.
-Clear? yes
-
i_file_acl for inode 13 (/test/???) is 12, should be zero.
Clear? yes
diff --git a/tests/f_resize_inode_meta_bg/expect.1 b/tests/f_resize_inode_meta_bg/expect.1
index 12055fc7..c733c18d 100644
--- a/tests/f_resize_inode_meta_bg/expect.1
+++ b/tests/f_resize_inode_meta_bg/expect.1
@@ -5,9 +5,6 @@ Resize_inode not enabled, but the resize inode is non-zero. Clear? yes
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
-Directory inode 2, block #0, offset 0: directory has no checksum.
-Fix? yes
-
First entry '' (inode=348) in directory inode 2 (???) should be '.'
Fix? yes
@@ -19,6 +16,9 @@ Setting filetype for entry '..' in ??? (2) to 2.
Directory inode 2, block #0, offset 860: directory corrupted
Salvage? yes
+Entry '' in ??? (2) has rec_len of 0, should be 12.
+Fix? yes
+
Directory inode 11, block #0, offset 0: directory corrupted
Salvage? yes
@@ -42,6 +42,9 @@ Clear? yes
Directory inode 11, block #3, offset 864: directory corrupted
Salvage? yes
+Entry '' in ??? (11) has rec_len of 0, should be 12.
+Fix? yes
+
Pass 3: Checking directory connectivity
'..' in / (2) is <The NULL inode> (0), should be / (2).
Fix? yes
diff --git a/tests/f_short_encrypted_dirent/expect.1 b/tests/f_short_encrypted_dirent/expect.1
index bc649222..29e1625c 100644
--- a/tests/f_short_encrypted_dirent/expect.1
+++ b/tests/f_short_encrypted_dirent/expect.1
@@ -13,5 +13,5 @@ Inode 13 ref count is 2, should be 1. Fix? yes
Pass 5: Checking group summary information
test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 13/16 files (0.0% non-contiguous), 23/100 blocks
+test_filesys: 13/16 files (0.0% non-contiguous), 24/100 blocks
Exit status is 1
diff --git a/tests/f_short_encrypted_dirent/expect.2 b/tests/f_short_encrypted_dirent/expect.2
index 636c6e9e..1ebd598e 100644
--- a/tests/f_short_encrypted_dirent/expect.2
+++ b/tests/f_short_encrypted_dirent/expect.2
@@ -3,5 +3,5 @@ Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-test_filesys: 13/16 files (0.0% non-contiguous), 23/100 blocks
+test_filesys: 13/16 files (0.0% non-contiguous), 24/100 blocks
Exit status is 0
diff --git a/tests/f_short_encrypted_dirent/image.gz b/tests/f_short_encrypted_dirent/image.gz
index a35bfb23..7eb1c951 100644
--- a/tests/f_short_encrypted_dirent/image.gz
+++ b/tests/f_short_encrypted_dirent/image.gz
Binary files differ
diff --git a/tests/f_uninit_bad_free_inodes/expect.1 b/tests/f_uninit_bad_free_inodes/expect.1
new file mode 100644
index 00000000..23d7b1f6
--- /dev/null
+++ b/tests/f_uninit_bad_free_inodes/expect.1
@@ -0,0 +1,25 @@
+Group descriptor 1 has invalid unused inodes count 2048. Fix? yes
+
+Group descriptor 2 has invalid unused inodes count 1344. Fix? yes
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Free inodes count wrong for group #1 (490, counted=2048).
+Fix? yes
+
+Free inodes count wrong for group #2 (250, counted=1344).
+Fix? yes
+
+Free inodes count wrong for group #3 (1967, counted=1969).
+Fix? yes
+
+Free inodes count wrong (4744, counted=7398).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 794/8192 files (0.4% non-contiguous), 8473/32768 blocks
+Exit status is 1
diff --git a/tests/f_uninit_bad_free_inodes/expect.2 b/tests/f_uninit_bad_free_inodes/expect.2
new file mode 100644
index 00000000..431227b2
--- /dev/null
+++ b/tests/f_uninit_bad_free_inodes/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 794/8192 files (0.4% non-contiguous), 8473/32768 blocks
+Exit status is 0
diff --git a/tests/f_uninit_bad_free_inodes/image.gz b/tests/f_uninit_bad_free_inodes/image.gz
new file mode 100644
index 00000000..3e6218b5
--- /dev/null
+++ b/tests/f_uninit_bad_free_inodes/image.gz
Binary files differ
diff --git a/tests/f_uninit_bad_free_inodes/name b/tests/f_uninit_bad_free_inodes/name
new file mode 100644
index 00000000..8bd31800
--- /dev/null
+++ b/tests/f_uninit_bad_free_inodes/name
@@ -0,0 +1 @@
+bad free inode count, but good checksum
diff --git a/tests/f_uninit_blk_used_not_set/expect.1 b/tests/f_uninit_blk_used_not_set/expect.1
new file mode 100644
index 00000000..9e473f87
--- /dev/null
+++ b/tests/f_uninit_blk_used_not_set/expect.1
@@ -0,0 +1,34 @@
+Group descriptor 1 has invalid unused inodes count 2048. Fix? yes
+
+Group descriptor 2 has invalid unused inodes count 2048. Fix? yes
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Group 1 block(s) in use but group is marked BLOCK_UNINIT
+Fix? yes
+
+Block bitmap differences: +(8585--8777)
+Fix? yes
+
+Free blocks count wrong for group #2 (0, counted=7934).
+Fix? yes
+
+Free blocks count wrong (19530, counted=27464).
+Fix? yes
+
+Free inodes count wrong for group #1 (0, counted=2048).
+Fix? yes
+
+Free inodes count wrong for group #2 (0, counted=2048).
+Fix? yes
+
+Free inodes count wrong (4084, counted=8180).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/8192 files (8.3% non-contiguous), 5304/32768 blocks
+Exit status is 1
diff --git a/tests/f_uninit_blk_used_not_set/expect.2 b/tests/f_uninit_blk_used_not_set/expect.2
new file mode 100644
index 00000000..17d0cfa0
--- /dev/null
+++ b/tests/f_uninit_blk_used_not_set/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 12/8192 files (8.3% non-contiguous), 5304/32768 blocks
+Exit status is 0
diff --git a/tests/f_uninit_blk_used_not_set/image.gz b/tests/f_uninit_blk_used_not_set/image.gz
new file mode 100644
index 00000000..63162859
--- /dev/null
+++ b/tests/f_uninit_blk_used_not_set/image.gz
Binary files differ
diff --git a/tests/f_uninit_blk_used_not_set/name b/tests/f_uninit_blk_used_not_set/name
new file mode 100644
index 00000000..e6ee718a
--- /dev/null
+++ b/tests/f_uninit_blk_used_not_set/name
@@ -0,0 +1 @@
+blocks used but block uninit set
diff --git a/tests/f_uninit_checksum_bad/expect.1 b/tests/f_uninit_checksum_bad/expect.1
new file mode 100644
index 00000000..4ff8a8bf
--- /dev/null
+++ b/tests/f_uninit_checksum_bad/expect.1
@@ -0,0 +1,29 @@
+One or more block group descriptor checksums are invalid. Fix? yes
+
+Group descriptor 1 checksum is 0xbbaa, should be 0xff0b. FIXED.
+Group descriptor 2 has invalid unused inodes count 2048. Fix? yes
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Free blocks count wrong for group #2 (0, counted=7934).
+Fix? yes
+
+Free blocks count wrong (19286, counted=27220).
+Fix? yes
+
+Free inodes count wrong for group #1 (0, counted=2048).
+Fix? yes
+
+Free inodes count wrong for group #2 (0, counted=2048).
+Fix? yes
+
+Free inodes count wrong (4085, counted=8181).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 11/8192 files (0.0% non-contiguous), 5548/32768 blocks
+Exit status is 1
diff --git a/tests/f_uninit_checksum_bad/expect.2 b/tests/f_uninit_checksum_bad/expect.2
new file mode 100644
index 00000000..38f23347
--- /dev/null
+++ b/tests/f_uninit_checksum_bad/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/8192 files (0.0% non-contiguous), 5548/32768 blocks
+Exit status is 0
diff --git a/tests/f_uninit_checksum_bad/image.gz b/tests/f_uninit_checksum_bad/image.gz
new file mode 100644
index 00000000..8e91e014
--- /dev/null
+++ b/tests/f_uninit_checksum_bad/image.gz
Binary files differ
diff --git a/tests/f_uninit_checksum_bad/name b/tests/f_uninit_checksum_bad/name
new file mode 100644
index 00000000..b9e4a31e
--- /dev/null
+++ b/tests/f_uninit_checksum_bad/name
@@ -0,0 +1 @@
+invalid group descriptor checksum
diff --git a/tests/f_uninit_disable/expect.1 b/tests/f_uninit_disable/expect.1
new file mode 100644
index 00000000..f568bec4
--- /dev/null
+++ b/tests/f_uninit_disable/expect.1
@@ -0,0 +1,10 @@
+Group descriptor 0 marked uninitialized without feature set.
+Fix? yes
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/2048 files (0.0% non-contiguous), 306/8192 blocks
+Exit status is 1
diff --git a/tests/f_uninit_disable/expect.2 b/tests/f_uninit_disable/expect.2
new file mode 100644
index 00000000..4cd9aa98
--- /dev/null
+++ b/tests/f_uninit_disable/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/2048 files (0.0% non-contiguous), 306/8192 blocks
+Exit status is 0
diff --git a/tests/f_uninit_disable/image.gz b/tests/f_uninit_disable/image.gz
new file mode 100644
index 00000000..38c74556
--- /dev/null
+++ b/tests/f_uninit_disable/image.gz
Binary files differ
diff --git a/tests/f_uninit_disable/name b/tests/f_uninit_disable/name
new file mode 100644
index 00000000..494b4720
--- /dev/null
+++ b/tests/f_uninit_disable/name
@@ -0,0 +1 @@
+disable uninit_bg feature
diff --git a/tests/f_uninit_enable/expect.1 b/tests/f_uninit_enable/expect.1
new file mode 100644
index 00000000..02801bf9
--- /dev/null
+++ b/tests/f_uninit_enable/expect.1
@@ -0,0 +1,10 @@
+One or more block group descriptor checksums are invalid. Fix? yes
+
+Group descriptor 0 checksum is 0x0000, should be 0x13f6. FIXED.
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/2048 files (0.0% non-contiguous), 306/8192 blocks
+Exit status is 1
diff --git a/tests/f_uninit_enable/expect.2 b/tests/f_uninit_enable/expect.2
new file mode 100644
index 00000000..4cd9aa98
--- /dev/null
+++ b/tests/f_uninit_enable/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/2048 files (0.0% non-contiguous), 306/8192 blocks
+Exit status is 0
diff --git a/tests/f_uninit_enable/image.gz b/tests/f_uninit_enable/image.gz
new file mode 100644
index 00000000..4da79c96
--- /dev/null
+++ b/tests/f_uninit_enable/image.gz
Binary files differ
diff --git a/tests/f_uninit_enable/name b/tests/f_uninit_enable/name
new file mode 100644
index 00000000..a818f5c0
--- /dev/null
+++ b/tests/f_uninit_enable/name
@@ -0,0 +1 @@
+enable uninit_bg feature
diff --git a/tests/f_uninit_inode_past_unused/expect.1 b/tests/f_uninit_inode_past_unused/expect.1
new file mode 100644
index 00000000..1cf5c85c
--- /dev/null
+++ b/tests/f_uninit_inode_past_unused/expect.1
@@ -0,0 +1,27 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'foo' in / (2) references inode 14 found in group 0's unused inodes area.
+Fix? yes
+
+Restarting e2fsck from the beginning...
+One or more block group descriptor checksums are invalid. Fix? yes
+
+Group descriptor 0 checksum is 0x4c72, should be 0xde74. FIXED.
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Inode bitmap differences: -12
+Fix? yes
+
+Free inodes count wrong for group #0 (2037, counted=2035).
+Fix? yes
+
+Free inodes count wrong (4073, counted=2035).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 13/2048 files (0.0% non-contiguous), 1336/8192 blocks
+Exit status is 1
diff --git a/tests/f_uninit_inode_past_unused/expect.2 b/tests/f_uninit_inode_past_unused/expect.2
new file mode 100644
index 00000000..bdb029ee
--- /dev/null
+++ b/tests/f_uninit_inode_past_unused/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 13/2048 files (0.0% non-contiguous), 1336/8192 blocks
+Exit status is 0
diff --git a/tests/f_uninit_inode_past_unused/image.gz b/tests/f_uninit_inode_past_unused/image.gz
new file mode 100644
index 00000000..9104a70c
--- /dev/null
+++ b/tests/f_uninit_inode_past_unused/image.gz
Binary files differ
diff --git a/tests/f_uninit_inode_past_unused/name b/tests/f_uninit_inode_past_unused/name
new file mode 100644
index 00000000..95d07f19
--- /dev/null
+++ b/tests/f_uninit_inode_past_unused/name
@@ -0,0 +1 @@
+inode in use beyond bg_itable_unused
diff --git a/tests/f_uninit_restart_fsck/expect.1 b/tests/f_uninit_restart_fsck/expect.1
new file mode 100644
index 00000000..d396beb3
--- /dev/null
+++ b/tests/f_uninit_restart_fsck/expect.1
@@ -0,0 +1,36 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'foo2' in /d1 (1881) references inode 500 found in group 0's unused inodes area.
+Fix? yes
+
+Entry 'foo2' in /d1 (1881) has an incorrect filetype (was 1, should be 0).
+Fix? yes
+
+Entry 'bar2' in /d2 (3761) references inode 2100 found in group 1's unused inodes area.
+Fix? yes
+
+Entry 'bar2' in /d2 (3761) has an incorrect filetype (was 1, should be 0).
+Fix? yes
+
+Restarting e2fsck from the beginning...
+One or more block group descriptor checksums are invalid. Fix? yes
+
+Group descriptor 0 checksum is 0xb92b, should be 0x2b5f. FIXED.
+Group descriptor 1 checksum is 0x2f53, should be 0x8d2f. FIXED.
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'foo2' in /d1 (1881) has deleted/unused inode 500. Clear? yes
+
+Entry 'bar2' in /d2 (3761) has deleted/unused inode 2100. Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Unattached zero-length inode 1883. Clear? yes
+
+Unattached zero-length inode 3763. Clear? yes
+
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 21/7520 files (0.0% non-contiguous), 2352/30000 blocks
+Exit status is 1
diff --git a/tests/f_uninit_restart_fsck/expect.2 b/tests/f_uninit_restart_fsck/expect.2
new file mode 100644
index 00000000..156eb07f
--- /dev/null
+++ b/tests/f_uninit_restart_fsck/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 21/7520 files (0.0% non-contiguous), 2352/30000 blocks
+Exit status is 0
diff --git a/tests/f_uninit_restart_fsck/image.gz b/tests/f_uninit_restart_fsck/image.gz
new file mode 100644
index 00000000..f073186e
--- /dev/null
+++ b/tests/f_uninit_restart_fsck/image.gz
Binary files differ
diff --git a/tests/f_uninit_restart_fsck/name b/tests/f_uninit_restart_fsck/name
new file mode 100644
index 00000000..def2234f
--- /dev/null
+++ b/tests/f_uninit_restart_fsck/name
@@ -0,0 +1 @@
+re-start e2fsck only once for inodes in uninit space
diff --git a/tests/f_uninit_set_inode_not_set/expect.1 b/tests/f_uninit_set_inode_not_set/expect.1
new file mode 100644
index 00000000..4ea3f10a
--- /dev/null
+++ b/tests/f_uninit_set_inode_not_set/expect.1
@@ -0,0 +1,25 @@
+Group descriptor 1 has invalid unused inodes count 1464. Fix? yes
+
+Group descriptor 2 has invalid unused inodes count 1849. Fix? yes
+
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Group 1 block(s) in use but group is marked BLOCK_UNINIT
+Fix? yes
+
+Block bitmap differences: +(9729--14621)
+Fix? yes
+
+Free inodes count wrong for group #1 (0, counted=1464).
+Fix? yes
+
+Free inodes count wrong for group #2 (0, counted=1849).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 794/8192 files (0.3% non-contiguous), 8473/32768 blocks
+Exit status is 1
diff --git a/tests/f_uninit_set_inode_not_set/expect.2 b/tests/f_uninit_set_inode_not_set/expect.2
new file mode 100644
index 00000000..846c5582
--- /dev/null
+++ b/tests/f_uninit_set_inode_not_set/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 794/8192 files (0.3% non-contiguous), 8473/32768 blocks
+Exit status is 0
diff --git a/tests/f_uninit_set_inode_not_set/image.gz b/tests/f_uninit_set_inode_not_set/image.gz
new file mode 100644
index 00000000..cd38e279
--- /dev/null
+++ b/tests/f_uninit_set_inode_not_set/image.gz
Binary files differ
diff --git a/tests/f_uninit_set_inode_not_set/name b/tests/f_uninit_set_inode_not_set/name
new file mode 100644
index 00000000..42b9c534
--- /dev/null
+++ b/tests/f_uninit_set_inode_not_set/name
@@ -0,0 +1 @@
+block uninit set but inode uninit not set
diff --git a/tests/filter.sed b/tests/filter.sed
index f37986ce..796186e7 100644
--- a/tests/filter.sed
+++ b/tests/filter.sed
@@ -37,3 +37,4 @@ s/mmp_node_name: .*/mmp_node_name: test_node/
s/mmp_update_date: .*/mmp_update_date: test date/
s/mmp_update_time: .*/mmp_update_time: test_time/
s/MMP last updated by '.*' on .*/MMP last updated by 'test_node' on test date/
+s/MMP update by '.*' at .*/MMP last updated by 'test_node' on test date/
diff --git a/tests/i_bitmaps/expect b/tests/i_bitmaps/expect
index fb9d8f1f..6199bb7c 100644
--- a/tests/i_bitmaps/expect
+++ b/tests/i_bitmaps/expect
@@ -1,6 +1,8 @@
-46,50d45
+46,52d45
< Journal features: (none)
-< Journal size: 1024k
-< Journal length: 1024
+< Total journal size: 1024k
+< Total journal blocks: 1024
+< Max transaction length: 1024
+< Fast commit length: 0
< Journal sequence: 0x00000001
< Journal start: 0
diff --git a/tests/j_corrupt_journal_block/expect b/tests/j_corrupt_journal_block/expect
index 36a76990..8b6545ae 100644
--- a/tests/j_corrupt_journal_block/expect
+++ b/tests/j_corrupt_journal_block/expect
@@ -1,5 +1,5 @@
test_filesys: recovering journal
-JBD2: Invalid checksum recovering block 1090 in log
+JBD2: Invalid checksum recovering data block 1090 in log
Journal checksum error found in test_filesys
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
diff --git a/tests/j_ext_dumpe2fs/expect b/tests/j_ext_dumpe2fs/expect
index db77a36d..2838bbd1 100644
--- a/tests/j_ext_dumpe2fs/expect
+++ b/tests/j_ext_dumpe2fs/expect
@@ -43,8 +43,10 @@ Desired extra isize: 28
Default directory hash: half_md4
Checksum type: crc32c
Journal features: journal_64bit journal_checksum_v3
-Journal size: 2048k
-Journal length: 2048
+Total journal size: 2048k
+Total journal blocks: 2048
+Max transaction length: 2048
+Fast commit length: 0
Journal first block: 3
Journal sequence: 0x00000003
Journal start: 0
diff --git a/tests/j_recover_fast_commit/commands b/tests/j_recover_fast_commit/commands
new file mode 100644
index 00000000..74e20e4e
--- /dev/null
+++ b/tests/j_recover_fast_commit/commands
@@ -0,0 +1,4 @@
+ls
+ls a/
+ex a/new
+ex a/data
diff --git a/tests/j_recover_fast_commit/expect b/tests/j_recover_fast_commit/expect
new file mode 100644
index 00000000..18e2fe06
--- /dev/null
+++ b/tests/j_recover_fast_commit/expect
@@ -0,0 +1,22 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 14/256 files (14.3% non-contiguous), 1365/2048 blocks
+Exit status is 0
+debugfs: ls
+ 2 (12) . 2 (12) .. 11 (20) lost+found 12 (968) a
+debugfs: ls a/
+ 12 (12) . 2 (12) .. 13 (12) data 14 (976) new
+debugfs: ex a/new
+Level Entries Logical Physical Length Flags
+ 0/ 0 1/ 1 0 - 0 1107 - 1107 1
+debugfs: ex a/data
+Level Entries Logical Physical Length Flags
+ 0/ 1 1/ 1 0 - 255 1618 256
+ 1/ 1 1/ 5 0 - 15 1619 - 1634 16
+ 1/ 1 2/ 5 16 - 31 1601 - 1616 16
+ 1/ 1 3/ 5 32 - 63 1985 - 2016 32
+ 1/ 1 4/ 5 64 - 127 1537 - 1600 64
+ 1/ 1 5/ 5 128 - 255 1793 - 1920 128
diff --git a/tests/j_recover_fast_commit/image.gz b/tests/j_recover_fast_commit/image.gz
new file mode 100644
index 00000000..b7357afc
--- /dev/null
+++ b/tests/j_recover_fast_commit/image.gz
Binary files differ
diff --git a/tests/j_recover_fast_commit/script b/tests/j_recover_fast_commit/script
new file mode 100755
index 00000000..22ef6325
--- /dev/null
+++ b/tests/j_recover_fast_commit/script
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+FSCK_OPT=-fy
+IMAGE=$test_dir/image.gz
+CMDS=$test_dir/commands
+
+gunzip < $IMAGE > $TMPFILE
+
+# Run fsck to fix things?
+EXP=$test_dir/expect
+OUT=$test_name.log
+
+cp $TMPFILE /tmp/debugthis
+$FSCK $FSCK_OPT -E journal_only -N test_filesys $TMPFILE 2>/dev/null | head -n 1000 | tail -n +2 > $OUT
+echo "Exit status is $?" >> $OUT
+
+$DEBUGFS -f $CMDS $TMPFILE >> $OUT 2>/dev/null
+
+# Figure out what happened
+if cmp -s $EXP $OUT; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "$test_name: $test_description: failed"
+ diff -u $EXP $OUT >> $test_name.failed
+fi
diff --git a/tests/m_64bit_flexbg/expect.1 b/tests/m_64bit_flexbg/expect.1
index cfa3bc9b..956d2485 100644
--- a/tests/m_64bit_flexbg/expect.1
+++ b/tests/m_64bit_flexbg/expect.1
@@ -24,6 +24,7 @@ Filesystem OS type: Linux
Inode count: 128
Block count: 1024
Reserved block count: 51
+Overhead clusters: 28
Free blocks: 982
Free inodes: 117
First block: 1
diff --git a/tests/m_bigjournal/expect.1 b/tests/m_bigjournal/expect.1
index 89005966..eb0e3bc3 100644
--- a/tests/m_bigjournal/expect.1
+++ b/tests/m_bigjournal/expect.1
@@ -18,6 +18,7 @@ Filesystem OS type: Linux
Inode count: 1344
Block count: 2750000
Reserved block count: 137500
+Overhead clusters: 1286982
Free blocks: 1463011
Free inodes: 1333
First block: 0
@@ -41,8 +42,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 5000M
-Journal length: 1280000
+Total journal size: 5000M
+Total journal blocks: 1280000
+Max transaction length: 1280000
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/m_dasd_bs/expect.1 b/tests/m_dasd_bs/expect.1
index 0e55e8f7..970d556d 100644
--- a/tests/m_dasd_bs/expect.1
+++ b/tests/m_dasd_bs/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 16384
Block count: 32768
Reserved block count: 1638
+Overhead clusters: 1094
Free blocks: 31664
Free inodes: 16373
First block: 0
diff --git a/tests/m_desc_size_128/expect.1 b/tests/m_desc_size_128/expect.1
index 5a7da87b..1cd9758f 100644
--- a/tests/m_desc_size_128/expect.1
+++ b/tests/m_desc_size_128/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 8192
Block count: 131072
Reserved block count: 6553
+Overhead clusters: 4284
Free blocks: 126774
Free inodes: 8181
First block: 1
diff --git a/tests/m_extent_journal/expect.1 b/tests/m_extent_journal/expect.1
index 34e8a80d..9a9219e9 100644
--- a/tests/m_extent_journal/expect.1
+++ b/tests/m_extent_journal/expect.1
@@ -27,6 +27,7 @@ Filesystem OS type: Linux
Inode count: 16384
Block count: 65536
Reserved block count: 3276
+Overhead clusters: 7446
Free blocks: 58076
Free inodes: 16373
First block: 1
@@ -47,8 +48,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 4096k
-Journal length: 4096
+Total journal size: 4096k
+Total journal blocks: 4096
+Max transaction length: 4096
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/m_image_mmp/script b/tests/m_image_mmp/script
index bc6f320b..5af6f552 100644
--- a/tests/m_image_mmp/script
+++ b/tests/m_image_mmp/script
@@ -1,14 +1,3 @@
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
-
$MKE2FS -q -F -o Linux -b 4096 -O mmp -E mmp_update_interval=1 $TMPFILE 100 >> $test_name.log 2>&1
status=$?
if [ "$status" != 0 ] ; then
diff --git a/tests/m_large_file/expect.1 b/tests/m_large_file/expect.1
index 06c82574..955ba77d 100644
--- a/tests/m_large_file/expect.1
+++ b/tests/m_large_file/expect.1
@@ -24,6 +24,7 @@ Filesystem OS type: Linux
Inode count: 64
Block count: 16384
Reserved block count: 819
+Overhead clusters: 11
Free blocks: 16367
Free inodes: 53
First block: 0
diff --git a/tests/m_meta_bg/expect.1 b/tests/m_meta_bg/expect.1
index 7df4230c..1b90b554 100644
--- a/tests/m_meta_bg/expect.1
+++ b/tests/m_meta_bg/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 32768
Block count: 131072
Reserved block count: 6553
+Overhead clusters: 4376
Free blocks: 126683
Free inodes: 32757
First block: 1
diff --git a/tests/m_minrootdir/expect b/tests/m_minrootdir/expect
index 90158da0..d2e9a9e2 100644
--- a/tests/m_minrootdir/expect
+++ b/tests/m_minrootdir/expect
@@ -11,6 +11,7 @@ Filesystem OS type: Linux
Inode count: 1024
Block count: 16384
Reserved block count: 819
+Overhead clusters: 265
Free blocks: 16065
Free inodes: 1006
First block: 1
diff --git a/tests/m_mmp/expect.1 b/tests/m_mmp/expect.1
index 9d8a5a3c..475cd1d0 100644
--- a/tests/m_mmp/expect.1
+++ b/tests/m_mmp/expect.1
@@ -27,6 +27,7 @@ Filesystem OS type: Linux
Inode count: 65536
Block count: 65536
Reserved block count: 3276
+Overhead clusters: 2086
Free blocks: 63443
Free inodes: 65525
First block: 0
diff --git a/tests/m_mmp/script b/tests/m_mmp/script
index 6a9394de..e456183c 100644
--- a/tests/m_mmp/script
+++ b/tests/m_mmp/script
@@ -3,16 +3,6 @@ FS_SIZE=65536
MKE2FS_DEVICE_SECTSIZE=2048
export MKE2FS_DEVICE_SECTSIZE
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
MKE2FS_OPTS="-b 4096 -O mmp"
. $cmd_dir/run_mke2fs
unset MKE2FS_DEVICE_SECTSIZE
diff --git a/tests/m_mmp_bad_csum/script b/tests/m_mmp_bad_csum/script
index 4c8fe165..a5e222eb 100644
--- a/tests/m_mmp_bad_csum/script
+++ b/tests/m_mmp_bad_csum/script
@@ -1,13 +1,3 @@
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
gzip -dc < $test_dir/image.gz > $TMPFILE
OUT=$test_name.log
diff --git a/tests/m_mmp_bad_magic/script b/tests/m_mmp_bad_magic/script
index 4c8fe165..a5e222eb 100644
--- a/tests/m_mmp_bad_magic/script
+++ b/tests/m_mmp_bad_magic/script
@@ -1,13 +1,3 @@
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
gzip -dc < $test_dir/image.gz > $TMPFILE
OUT=$test_name.log
diff --git a/tests/m_no_opt/expect.1 b/tests/m_no_opt/expect.1
index 58b311c4..deaf22ef 100644
--- a/tests/m_no_opt/expect.1
+++ b/tests/m_no_opt/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 16384
Block count: 65536
Reserved block count: 3276
+Overhead clusters: 2081
Free blocks: 63442
Free inodes: 16373
First block: 1
diff --git a/tests/m_quota/expect.1 b/tests/m_quota/expect.1
index 8cdad301..74e38ca3 100644
--- a/tests/m_quota/expect.1
+++ b/tests/m_quota/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 32768
Block count: 131072
Reserved block count: 6553
+Overhead clusters: 9773
Free blocks: 121267
Free inodes: 32756
First block: 1
diff --git a/tests/m_raid_opt/expect.1 b/tests/m_raid_opt/expect.1
index 0fccb7ca..75366312 100644
--- a/tests/m_raid_opt/expect.1
+++ b/tests/m_raid_opt/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 32768
Block count: 131072
Reserved block count: 6553
+Overhead clusters: 7224
Free blocks: 123834
Free inodes: 32757
First block: 1
diff --git a/tests/m_resize_inode_meta_bg/expect.1 b/tests/m_resize_inode_meta_bg/expect.1
index d36f9730..7feaed9d 100644
--- a/tests/m_resize_inode_meta_bg/expect.1
+++ b/tests/m_resize_inode_meta_bg/expect.1
@@ -27,6 +27,7 @@ Filesystem OS type: Linux
Inode count: 960
Block count: 3840
Reserved block count: 192
+Overhead clusters: 1122
Free blocks: 2713
Free inodes: 949
First block: 0
@@ -50,8 +51,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 4096k
-Journal length: 1024
+Total journal size: 4096k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/m_root_owner/expect.1 b/tests/m_root_owner/expect.1
index 30d119e2..9c978b02 100644
--- a/tests/m_root_owner/expect.1
+++ b/tests/m_root_owner/expect.1
@@ -24,6 +24,7 @@ Filesystem OS type: Linux
Inode count: 128
Block count: 1024
Reserved block count: 51
+Overhead clusters: 24
Free blocks: 986
Free inodes: 117
First block: 1
diff --git a/tests/m_rootdir/expect b/tests/m_rootdir/expect
index 7b5c18d2..dbc79772 100644
--- a/tests/m_rootdir/expect
+++ b/tests/m_rootdir/expect
@@ -10,6 +10,7 @@ Filesystem OS type: Linux
Inode count: 1024
Block count: 16384
Reserved block count: 819
+Overhead clusters: 1543
Free blocks: 14786
Free inodes: 1005
First block: 1
@@ -35,8 +36,10 @@ Default directory hash: half_md4
Journal backup: inode blocks
Checksum type: crc32c
Journal features: (none)
-Journal size: 1024k
-Journal length: 1024
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/m_rootdir_acl/expect b/tests/m_rootdir_acl/expect
new file mode 100644
index 00000000..babd8025
--- /dev/null
+++ b/tests/m_rootdir_acl/expect
@@ -0,0 +1,119 @@
+Filesystem volume name: <none>
+Last mounted on: <not available>
+Filesystem magic number: 0xEF53
+Filesystem revision #: 1 (dynamic)
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg inline_data sparse_super huge_file dir_nlink extra_isize metadata_csum
+Default mount options: (none)
+Filesystem state: clean
+Errors behavior: Continue
+Filesystem OS type: Linux
+Inode count: 1024
+Block count: 16384
+Reserved block count: 819
+Overhead clusters: 1543
+Free blocks: 14788
+Free inodes: 1003
+First block: 1
+Block size: 1024
+Fragment size: 1024
+Group descriptor size: 64
+Reserved GDT blocks: 127
+Blocks per group: 8192
+Fragments per group: 8192
+Inodes per group: 512
+Inode blocks per group: 128
+Flex block group size: 16
+Mount count: 0
+Check interval: 15552000 (6 months)
+Reserved blocks uid: 0
+Reserved blocks gid: 0
+First inode: 11
+Inode size: 256
+Required extra isize: 32
+Desired extra isize: 32
+Journal inode: 8
+Default directory hash: half_md4
+Journal backup: inode blocks
+Checksum type: crc32c
+Journal features: (none)
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
+Journal sequence: 0x00000001
+Journal start: 0
+
+
+Group 0: (Blocks 1-8192)
+ Primary superblock at 1, Group descriptors at 2-2
+ Reserved GDT blocks at 3-129
+ Block bitmap at 130 (+129)
+ Inode bitmap at 132 (+131)
+ Inode table at 134-261 (+133)
+ 7750 free blocks, 491 free inodes, 5 directories, 491 unused inodes
+ Free blocks: 443-8192
+ Free inodes: 22-512
+Group 1: (Blocks 8193-16383) [INODE_UNINIT]
+ Backup superblock at 8193, Group descriptors at 8194-8194
+ Reserved GDT blocks at 8195-8321
+ Block bitmap at 131 (bg #0 + 130)
+ Inode bitmap at 133 (bg #0 + 132)
+ Inode table at 262-389 (bg #0 + 261)
+ 7038 free blocks, 512 free inodes, 0 directories, 512 unused inodes
+ Free blocks: 9346-16383
+ Free inodes: 513-1024
+debugfs: stat /emptyfile
+Inode: III Type: regular
+Size: 0
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /bigfile
+Inode: III Type: regular
+Size: 32768
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /sparsefile
+Inode: III Type: regular
+Size: 1073741825
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /bigzerofile
+Inode: III Type: regular
+Size: 1073741825
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /fifo
+debugfs: stat /emptydir
+Inode: III Type: directory
+Size: 60
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /dir
+Inode: III Type: directory
+Size: 60
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /dir/file
+Inode: III Type: regular
+Size: 8
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /acl_dir
+Inode: III Type: directory
+Size: 60
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /acl_dir/file
+Inode: III Type: regular
+Size: 10
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: ea_list dir/file
+Extended attributes:
+ system.data (0)
+debugfs: ea_list acl_dir
+Extended attributes:
+ system.data (0)
+ system.posix_acl_access (28) = 01 00 00 00 01 00 07 00 04 00 05 00 08 00 05 00 2a 00 00 00 10 00 05 00 20 00 05 00
+ system.posix_acl_default (28) = 01 00 00 00 01 00 07 00 04 00 05 00 08 00 05 00 04 00 00 00 10 00 05 00 20 00 05 00
+debugfs: ea_list acl_dir/file
+Extended attributes:
+ system.data (0)
+ system.posix_acl_access (28) = 01 00 00 00 01 00 07 00 04 00 05 00 08 00 05 00 2a 00 00 00 10 00 05 00 20 00 05 00
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test.img: 21/1024 files (0.0% non-contiguous), 1596/16384 blocks
diff --git a/tests/m_rootdir_acl/output.sed b/tests/m_rootdir_acl/output.sed
new file mode 100644
index 00000000..2e769678
--- /dev/null
+++ b/tests/m_rootdir_acl/output.sed
@@ -0,0 +1,5 @@
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*-[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/X \1\/\2 \3\/\4 \5-\6 AAA-BBB \7/g
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/Y \1\/\2 \3\/\4 \5-\6 AAA \7/g
+s/Mode:.*$//g
+s/User:.*Size:/Size:/g
+s/^Inode: [0-9]*/Inode: III/g
diff --git a/tests/m_rootdir_acl/script b/tests/m_rootdir_acl/script
new file mode 100644
index 00000000..2a2a4c67
--- /dev/null
+++ b/tests/m_rootdir_acl/script
@@ -0,0 +1,98 @@
+test_description="create fs image from dir using inline_data and acls"
+if ! test -x $DEBUGFS_EXE; then
+ echo "$test_name: $test_description: skipped (no debugfs)"
+ return 0
+fi
+
+if ! setfacl --help > /dev/null 2>&1 ; then
+ echo "$test_name: $test_description: skipped (no setfacl)"
+ return 0
+fi
+
+MKFS_DIR=$TMPFILE.dir
+OUT=$test_name.log
+EXP=$test_dir/expect
+
+rm -rf $MKFS_DIR
+mkdir -p $MKFS_DIR
+touch $MKFS_DIR/emptyfile
+dd if=/dev/zero bs=1024 count=32 2> /dev/null | tr '\0' 'a' > $MKFS_DIR/bigfile
+echo "M" | dd of=$MKFS_DIR/sparsefile bs=1 count=1 seek=1024 2> /dev/null
+echo "M" | dd of=$MKFS_DIR/sparsefile bs=1 count=1 seek=524288 conv=notrunc 2> /dev/null
+echo "M" | dd of=$MKFS_DIR/sparsefile bs=1 count=1 seek=1048576 conv=notrunc 2> /dev/null
+echo "M" | dd of=$MKFS_DIR/sparsefile bs=1 count=1 seek=536870912 conv=notrunc 2> /dev/null
+echo "M" | dd of=$MKFS_DIR/sparsefile bs=1 count=1 seek=1073741824 conv=notrunc 2> /dev/null
+dd if=/dev/zero of=$MKFS_DIR/bigzerofile bs=1 count=1 seek=1073741824 2> /dev/null
+ln $MKFS_DIR/bigzerofile $MKFS_DIR/bigzerofile_hardlink
+ln -s /silly_bs_link $MKFS_DIR/silly_bs_link
+mkdir $MKFS_DIR/emptydir
+mkdir $MKFS_DIR/dir
+echo "Test me" > $MKFS_DIR/dir/file
+mkdir $MKFS_DIR/acl_dir
+echo "Test me 2" > $MKFS_DIR/acl_dir/file
+
+setfacl --restore=- <<EOF
+# file: $MKFS_DIR/acl_dir
+user::rwx
+group::r-x
+group:42:r-x
+mask::r-x
+other::r-x
+default:user::rwx
+default:group::r-x
+default:group:4:r-x
+default:mask::r-x
+default:other::r-x
+EOF
+setfacl --restore=- <<EOF
+# file: $MKFS_DIR/acl_dir/file
+user::rwx
+group::r-x
+group:42:r-x
+mask::r-x
+other::r-x
+EOF
+
+$MKE2FS -q -F -o Linux -T ext4 -O metadata_csum,inline_data,64bit -E lazy_itable_init=1 -b 1024 -d $MKFS_DIR $TMPFILE 16384 > $OUT 2>&1
+
+$DUMPE2FS $TMPFILE >> $OUT 2>&1
+cat > $TMPFILE.cmd << ENDL
+stat /emptyfile
+stat /bigfile
+stat /sparsefile
+stat /bigzerofile
+stat /fifo
+stat /emptydir
+stat /dir
+stat /dir/file
+stat /acl_dir
+stat /acl_dir/file
+ENDL
+$DEBUGFS -f $TMPFILE.cmd $TMPFILE 2>&1 | egrep "(stat|Size:|Type:)" >> $OUT
+
+cat > $TMPFILE.cmd << ENDL
+ea_list dir/file
+ea_list acl_dir
+ea_list acl_dir/file
+ENDL
+$DEBUGFS -f $TMPFILE.cmd $TMPFILE >> $OUT 2>&1
+
+$FSCK -f -n $TMPFILE >> $OUT 2>&1
+
+sed -f $cmd_dir/filter.sed -f $test_dir/output.sed -e "s;$TMPFILE;test.img;" < $OUT > $OUT.tmp
+mv $OUT.tmp $OUT
+
+# Do the verification
+cmp -s $OUT $EXP
+status=$?
+
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "$test_name: $test_description: failed"
+ diff $DIFF_OPTS $EXP $OUT > $test_name.failed
+fi
+
+rm -rf $TMPFILE.cmd $MKFS_DIR
+unset MKFS_DIR OUT EXP
diff --git a/tests/m_std/expect.1 b/tests/m_std/expect.1
index b05031f8..a11cb9bc 100644
--- a/tests/m_std/expect.1
+++ b/tests/m_std/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 16384
Block count: 65536
Reserved block count: 3276
+Overhead clusters: 3350
Free blocks: 62172
Free inodes: 16373
First block: 1
diff --git a/tests/m_uninit/expect.1 b/tests/m_uninit/expect.1
index e886dfbf..b60e8cc8 100644
--- a/tests/m_uninit/expect.1
+++ b/tests/m_uninit/expect.1
@@ -26,6 +26,7 @@ Filesystem OS type: Linux
Inode count: 32768
Block count: 131072
Reserved block count: 6553
+Overhead clusters: 5677
Free blocks: 125381
Free inodes: 32757
First block: 1
diff --git a/tests/progs/Makefile.in b/tests/progs/Makefile.in
index b0ed853f..e1325c61 100644
--- a/tests/progs/Makefile.in
+++ b/tests/progs/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ../..
my_dir = tests/progs
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
@MCONFIG@
diff --git a/tests/r_32to64bit/expect b/tests/r_32to64bit/expect
index f5fa56bc..de573b3e 100644
--- a/tests/r_32to64bit/expect
+++ b/tests/r_32to64bit/expect
@@ -31,7 +31,13 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -15,7 +15,8 @@
+@@ -10,13 +10,13 @@
+ Inode count: 65536
+ Block count: 524288
+ Reserved block count: 26214
+-Overhead clusters: 35228
+ Free blocks: 589
+ Free inodes: 65048
First block: 1
Block size: 1024
Fragment size: 1024
@@ -41,7 +47,7 @@ Change in FS metadata:
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 1024
-@@ -40,16 +41,16 @@
+@@ -43,16 +43,16 @@
group:block:super:gdt:bbitmap:ibitmap:itable
@@ -64,7 +70,7 @@ Change in FS metadata:
10:81921:-1:-1:270:286:2852
11:90113:-1:-1:271:287:3108
12:98305:-1:-1:272:288:3364
-@@ -65,9 +66,9 @@
+@@ -68,9 +68,9 @@
22:180225:-1:-1:131079:131095:132641
23:188417:-1:-1:131080:131096:132897
24:196609:-1:-1:131081:131097:133153
@@ -76,7 +82,7 @@ Change in FS metadata:
28:229377:-1:-1:131085:131101:134177
29:237569:-1:-1:131086:131102:134433
30:245761:-1:-1:131087:131103:134689
-@@ -89,7 +90,7 @@
+@@ -92,7 +92,7 @@
46:376833:-1:-1:262159:262175:265761
47:385025:-1:-1:262160:262176:266017
48:393217:-1:-1:393217:393233:393249
diff --git a/tests/r_32to64bit_meta/expect b/tests/r_32to64bit_meta/expect
index 0eacd450..70babbd9 100644
--- a/tests/r_32to64bit_meta/expect
+++ b/tests/r_32to64bit_meta/expect
@@ -31,10 +31,11 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,11 +10,12 @@
+@@ -10,12 +10,12 @@
Inode count: 65536
Block count: 524288
Reserved block count: 26214
+-Overhead clusters: 32912
-Free blocks: 858
+Free blocks: 852
Free inodes: 65046
@@ -45,7 +46,7 @@ Change in FS metadata:
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 1024
-@@ -54,9 +55,9 @@
+@@ -57,9 +57,9 @@
12:98305:-1:-1:15:31:3107
13:106497:-1:-1:16:32:3363
14:114689:-1:-1:17:33:3619
@@ -58,7 +59,7 @@ Change in FS metadata:
18:147457:-1:-1:131075:131091:131617
19:155649:-1:-1:131076:131092:131873
20:163841:-1:-1:131077:131093:132129
-@@ -86,9 +87,9 @@
+@@ -89,9 +89,9 @@
44:360449:-1:-1:262158:262174:265250
45:368641:-1:-1:262159:262175:265506
46:376833:-1:-1:262160:262176:265762
diff --git a/tests/r_32to64bit_move_itable/expect b/tests/r_32to64bit_move_itable/expect
index b51663d5..a1d2aebc 100644
--- a/tests/r_32to64bit_move_itable/expect
+++ b/tests/r_32to64bit_move_itable/expect
@@ -31,10 +31,11 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,11 +10,12 @@
+@@ -10,12 +10,12 @@
Inode count: 98304
Block count: 786432
Reserved block count: 39321
+-Overhead clusters: 41193
-Free blocks: 764
+Free blocks: 734
Free inodes: 97566
@@ -45,7 +46,7 @@ Change in FS metadata:
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 1024
-@@ -38,16 +39,16 @@
+@@ -41,16 +41,16 @@
group:block:super:gdt:bbitmap:ibitmap:itable
@@ -68,7 +69,7 @@ Change in FS metadata:
10:81921:-1:-1:81921:81922:81923
11:90113:-1:-1:90113:90114:90115
12:98305:-1:-1:98305:98306:98307
-@@ -63,9 +64,9 @@
+@@ -66,9 +66,9 @@
22:180225:-1:-1:180225:180226:180227
23:188417:-1:-1:188417:188418:188419
24:196609:-1:-1:196609:196610:196611
@@ -80,7 +81,7 @@ Change in FS metadata:
28:229377:-1:-1:229377:229378:229379
29:237569:-1:-1:237569:237570:237571
30:245761:-1:-1:245761:245762:245763
-@@ -87,7 +88,7 @@
+@@ -90,7 +90,7 @@
46:376833:-1:-1:376833:376834:376835
47:385025:-1:-1:385025:385026:385027
48:393217:-1:-1:393217:393218:393219
@@ -89,7 +90,7 @@ Change in FS metadata:
50:409601:-1:-1:409601:409602:409603
51:417793:-1:-1:417793:417794:417795
52:425985:-1:-1:425985:425986:425987
-@@ -119,7 +120,7 @@
+@@ -122,7 +122,7 @@
78:638977:-1:-1:638977:638978:638979
79:647169:-1:-1:647169:647170:647171
80:655361:-1:-1:655361:655362:655363
diff --git a/tests/r_64to32bit/expect b/tests/r_64to32bit/expect
index 13e94a2d..eb609fbd 100644
--- a/tests/r_64to32bit/expect
+++ b/tests/r_64to32bit/expect
@@ -31,10 +31,11 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,12 +10,11 @@
+@@ -10,13 +10,11 @@
Inode count: 65536
Block count: 524288
Reserved block count: 26214
+-Overhead clusters: 35246
-Free blocks: 571
+Free blocks: 589
Free inodes: 65048
@@ -45,7 +46,7 @@ Change in FS metadata:
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
-@@ -41,16 +40,16 @@
+@@ -44,16 +42,16 @@
group:block:super:gdt:bbitmap:ibitmap:itable
@@ -68,7 +69,7 @@ Change in FS metadata:
10:81921:-1:-1:272:288:2854
11:90113:-1:-1:273:289:3110
12:98305:-1:-1:274:290:3366
-@@ -66,9 +65,9 @@
+@@ -69,9 +67,9 @@
22:180225:-1:-1:131079:131095:132641
23:188417:-1:-1:131080:131096:132897
24:196609:-1:-1:131081:131097:133153
@@ -80,7 +81,7 @@ Change in FS metadata:
28:229377:-1:-1:131085:131101:134177
29:237569:-1:-1:131086:131102:134433
30:245761:-1:-1:131087:131103:134689
-@@ -90,7 +89,7 @@
+@@ -93,7 +91,7 @@
46:376833:-1:-1:262159:262175:265761
47:385025:-1:-1:262160:262176:266017
48:393217:-1:-1:393217:393233:393249
diff --git a/tests/r_64to32bit_meta/expect b/tests/r_64to32bit_meta/expect
index d6e2dccc..70655909 100644
--- a/tests/r_64to32bit_meta/expect
+++ b/tests/r_64to32bit_meta/expect
@@ -31,10 +31,11 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,12 +10,11 @@
+@@ -10,13 +10,11 @@
Inode count: 65536
Block count: 524288
Reserved block count: 26214
+-Overhead clusters: 32918
-Free blocks: 852
+Free blocks: 858
Free inodes: 65046
@@ -45,7 +46,7 @@ Change in FS metadata:
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 1024
-@@ -55,9 +54,9 @@
+@@ -58,9 +56,9 @@
12:98305:-1:-1:15:31:3107
13:106497:-1:-1:16:32:3363
14:114689:-1:-1:17:33:3619
@@ -58,7 +59,7 @@ Change in FS metadata:
18:147457:-1:-1:131076:131092:131618
19:155649:-1:-1:131077:131093:131874
20:163841:-1:-1:131078:131094:132130
-@@ -87,9 +86,9 @@
+@@ -90,9 +88,9 @@
44:360449:-1:-1:262158:262174:265250
45:368641:-1:-1:262159:262175:265506
46:376833:-1:-1:262160:262176:265762
diff --git a/tests/r_inline_xattr/expect b/tests/r_inline_xattr/expect
index 885de59d..773db102 100644
--- a/tests/r_inline_xattr/expect
+++ b/tests/r_inline_xattr/expect
@@ -1,5 +1,5 @@
resize2fs test
-debugfs -R ''stat file'' test.img 2>&1 | grep ''^Inode\|in inode body\|user.name (''
+debugfs -R ''stat file'' test.img 2>&1 | grep -E ''^Inode\|in inode body\|user.name \(''
Inode: 1550 Type: regular Mode: 0644 Flags: 0x0
user.name (11) = "propervalue"
Exit status is 0
@@ -8,7 +8,7 @@ Resizing the filesystem on test.img to 5120 (1k) blocks.
The filesystem on test.img is now 5120 (1k) blocks long.
Exit status is 0
-debugfs -R ''stat file'' test.img 2>&1 | grep ''^Inode\|in inode body\|user.name (''
+debugfs -R ''stat file'' test.img 2>&1 | grep -E ''^Inode\|in inode body\|user.name \(''
Inode: 12 Type: regular Mode: 0644 Flags: 0x0
user.name (11) = "propervalue"
Exit status is 0
diff --git a/tests/r_inline_xattr/script b/tests/r_inline_xattr/script
index 4e7dd94c..2f754e60 100644
--- a/tests/r_inline_xattr/script
+++ b/tests/r_inline_xattr/script
@@ -13,8 +13,8 @@ gunzip < $IMAGE > $TMPFILE
echo "resize2fs test" > $OUT.new
# Look at existing inline extended attribute
-echo "debugfs -R ''stat file'' test.img 2>&1 | grep ''^Inode\|in inode body\|user.name (''" >> $OUT.new
-$DEBUGFS -R "stat file" $TMPFILE 2>&1 | grep "^Inode\|in inode body\|user.name (" >> $OUT.new
+echo "debugfs -R ''stat file'' test.img 2>&1 | grep -E ''^Inode\|in inode body\|user.name \\(''" >> $OUT.new
+$DEBUGFS -R "stat file" $TMPFILE 2>&1 | grep -E "^Inode|in inode body|user.name \(" >> $OUT.new
status=$?
echo Exit status is $status >> $OUT.new
@@ -25,8 +25,8 @@ status=$?
echo Exit status is $status >> $OUT.new
# Look at inline extended attribute in resized fs
-echo "debugfs -R ''stat file'' test.img 2>&1 | grep ''^Inode\|in inode body\|user.name (''" >> $OUT.new
-$DEBUGFS -R "stat file" $TMPFILE 2>&1 | grep "^Inode\|in inode body\|user.name (" >> $OUT.new
+echo "debugfs -R ''stat file'' test.img 2>&1 | grep -E ''^Inode\|in inode body\|user.name \\(''" >> $OUT.new
+$DEBUGFS -R "stat file" $TMPFILE 2>&1 | grep -E "^Inode|in inode body|user.name \(" >> $OUT.new
status=$?
echo Exit status is $status >> $OUT.new
diff --git a/tests/r_move_itable_nostride/expect b/tests/r_move_itable_nostride/expect
index 098cbfc5..74c2cc0a 100644
--- a/tests/r_move_itable_nostride/expect
+++ b/tests/r_move_itable_nostride/expect
@@ -52,8 +52,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 16M
-Journal length: 16384
+Total journal size: 16M
+Total journal blocks: 16384
+Max transaction length: 16384
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/r_move_itable_realloc/expect b/tests/r_move_itable_realloc/expect
index f9a7f515..67f2fe4a 100644
--- a/tests/r_move_itable_realloc/expect
+++ b/tests/r_move_itable_realloc/expect
@@ -51,8 +51,10 @@ Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
Journal features: (none)
-Journal size: 16M
-Journal length: 16384
+Total journal size: 16M
+Total journal blocks: 16384
+Max transaction length: 16384
+Fast commit length: 0
Journal sequence: 0x00000001
Journal start: 0
diff --git a/tests/t_disable_mcsum/expect b/tests/t_disable_mcsum/expect
index e04f26ad..bfa21b89 100644
--- a/tests/t_disable_mcsum/expect
+++ b/tests/t_disable_mcsum/expect
@@ -28,14 +28,14 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -33,7 +33,6 @@
+@@ -34,7 +34,6 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
-Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
+ Total journal size: 16M
+ Total journal blocks: 16384
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
diff --git a/tests/t_disable_mcsum_noinitbg/expect b/tests/t_disable_mcsum_noinitbg/expect
index a022631d..fe61fcbc 100644
--- a/tests/t_disable_mcsum_noinitbg/expect
+++ b/tests/t_disable_mcsum_noinitbg/expect
@@ -28,15 +28,15 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -33,7 +33,6 @@
+@@ -34,7 +34,6 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
-Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
-@@ -47,18 +46,18 @@
+ Total journal size: 16M
+ Total journal blocks: 16384
+@@ -50,18 +49,18 @@
Block bitmap at 262 (+261)
Inode bitmap at 278 (+277)
Inode table at 294-549 (+293)
diff --git a/tests/t_disable_mcsum_yesinitbg/expect b/tests/t_disable_mcsum_yesinitbg/expect
index df3d6c0b..b9062489 100644
--- a/tests/t_disable_mcsum_yesinitbg/expect
+++ b/tests/t_disable_mcsum_yesinitbg/expect
@@ -28,14 +28,14 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -33,7 +33,6 @@
+@@ -34,7 +34,6 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
-Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
+ Total journal size: 16M
+ Total journal blocks: 16384
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
diff --git a/tests/t_enable_mcsum/expect b/tests/t_enable_mcsum/expect
index c8a2674b..fcb0ed16 100644
--- a/tests/t_enable_mcsum/expect
+++ b/tests/t_enable_mcsum/expect
@@ -43,24 +43,24 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,7 +10,7 @@
- Inode count: 65536
+@@ -11,7 +11,7 @@
Block count: 524288
Reserved block count: 26214
+ Overhead clusters: 35246
-Free blocks: 571
+Free blocks: 568
Free inodes: 65048
First block: 1
Block size: 1024
-@@ -33,6 +33,7 @@
+@@ -34,6 +34,7 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
+Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
-@@ -46,8 +47,8 @@
+ Total journal size: 16M
+ Total journal blocks: 16384
+@@ -49,8 +50,8 @@
Block bitmap at 262 (+261)
Inode bitmap at 278 (+277)
Inode table at 294-549 (+293)
diff --git a/tests/t_enable_mcsum_ext3/expect b/tests/t_enable_mcsum_ext3/expect
index 0f761a97..549e60e9 100644
--- a/tests/t_enable_mcsum_ext3/expect
+++ b/tests/t_enable_mcsum_ext3/expect
@@ -31,15 +31,15 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -29,6 +29,7 @@
+@@ -30,6 +30,7 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
+Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
-@@ -36,7 +37,7 @@
+ Total journal size: 16M
+ Total journal blocks: 16384
+@@ -39,7 +40,7 @@
Journal start: 0
@@ -48,7 +48,7 @@ Change in FS metadata:
Primary superblock at 1, Group descriptors at 2-3
Reserved GDT blocks at 4-259
Block bitmap at 260 (+259)
-@@ -45,7 +46,7 @@
+@@ -48,7 +49,7 @@
0 free blocks, 1013 free inodes, 2 directories
Free blocks:
Free inodes: 12-1024
@@ -57,7 +57,7 @@ Change in FS metadata:
Backup superblock at 8193, Group descriptors at 8194-8195
Reserved GDT blocks at 8196-8451
Block bitmap at 8452 (+259)
-@@ -54,6 +55,6 @@
+@@ -57,6 +58,6 @@
0 free blocks, 1024 free inodes, 0 directories
Free blocks:
Free inodes: 1025-2048
diff --git a/tests/t_enable_mcsum_initbg/expect b/tests/t_enable_mcsum_initbg/expect
index e05dd603..987141f1 100644
--- a/tests/t_enable_mcsum_initbg/expect
+++ b/tests/t_enable_mcsum_initbg/expect
@@ -43,24 +43,24 @@ Change in FS metadata:
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
-@@ -10,7 +10,7 @@
- Inode count: 65536
+@@ -11,7 +11,7 @@
Block count: 524288
Reserved block count: 26214
+ Overhead clusters: 35246
-Free blocks: 571
+Free blocks: 568
Free inodes: 65048
First block: 1
Block size: 1024
-@@ -33,6 +33,7 @@
+@@ -34,6 +34,7 @@
Journal inode: 8
Default directory hash: half_md4
Journal backup: inode blocks
+Checksum type: crc32c
Journal features: (none)
- Journal size: 16M
- Journal length: 16384
-@@ -40,24 +41,24 @@
+ Total journal size: 16M
+ Total journal blocks: 16384
+@@ -43,24 +44,24 @@
Journal start: 0
diff --git a/tests/t_iexpand_full/expect b/tests/t_iexpand_full/expect
index 3eb17151..354818e2 100644
--- a/tests/t_iexpand_full/expect
+++ b/tests/t_iexpand_full/expect
@@ -20,13 +20,13 @@ tune2fs -I 256 test.img
Setting inode size 256
Exit status is 0
Change in FS metadata:
-@@ -13 +13 @@
+@@ -14 +14 @@
-Free blocks: 12301
+Free blocks: 12
-@@ -22 +22 @@
+@@ -23 +23 @@
-Inode blocks per group: 128
+Inode blocks per group: 256
-@@ -28 +28 @@
+@@ -29 +29 @@
-Inode size: 128
+Inode size: 256
Pass 1: Checking inodes, blocks, and sizes
diff --git a/tests/t_iexpand_mcsum/expect b/tests/t_iexpand_mcsum/expect
index 772bd623..c24a2456 100644
--- a/tests/t_iexpand_mcsum/expect
+++ b/tests/t_iexpand_mcsum/expect
@@ -39,13 +39,13 @@ Change in FS metadata:
@@ -5 +5 @@
-Filesystem features: has_journal ext_attr dir_index filetype extent 64bit sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
+Filesystem features: has_journal ext_attr dir_index filetype extent 64bit sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
-@@ -21 +21 @@
+@@ -22 +22 @@
-Inode blocks per group: 128
+Inode blocks per group: 256
-@@ -27 +27 @@
+@@ -28 +28 @@
-Inode size: 128
+Inode size: 256
-@@ -30,0 +31 @@
+@@ -31,0 +32 @@
+Checksum type: crc32c
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
diff --git a/tests/t_mmp_1on/script b/tests/t_mmp_1on/script
index cfed2ca8..733395ef 100644
--- a/tests/t_mmp_1on/script
+++ b/tests/t_mmp_1on/script
@@ -1,16 +1,5 @@
FSCK_OPT=-yf
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ] ; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
-
$MKE2FS -q -F -o Linux -b 4096 $TMPFILE 100 > $test_name.log 2>&1
status=$?
if [ "$status" != 0 ] ; then
diff --git a/tests/t_mmp_2off/script b/tests/t_mmp_2off/script
index 6556201f..1cd07191 100644
--- a/tests/t_mmp_2off/script
+++ b/tests/t_mmp_2off/script
@@ -1,16 +1,5 @@
FSCK_OPT=-yf
-# use current directory instead of /tmp becase tmpfs doesn't support DIO
-rm -f $TMPFILE
-TMPFILE=$(mktemp ./tmp-$test_name.XXXXXX)
-
-stat -f $TMPFILE | grep -q "Type: tmpfs"
-if [ $? = 0 ]; then
- rm -f $TMPFILE
- echo "$test_name: $test_description: skipped for tmpfs (no O_DIRECT)"
- return 0
-fi
-
$MKE2FS -q -F -o Linux -b 4096 -O mmp $TMPFILE 100 > $test_name.log 2>&1
status=$?
if [ "$status" != 0 ] ; then
@@ -19,7 +8,7 @@ if [ "$status" != 0 ] ; then
return $status
fi
-$TUNE2FS -O ^mmp $TMPFILE > $test_name.log 2>&1
+$TUNE2FS -O ^mmp $TMPFILE >> $test_name.log 2>&1
status=$?
if [ "$status" != 0 ] ; then
echo "tune2fs -O ^mmp failed" > $test_name.failed
@@ -27,7 +16,7 @@ if [ "$status" != 0 ] ; then
return $status
fi
-$FSCK $FSCK_OPT $TMPFILE > $test_name.log 2>&1
+$FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
status=$?
if [ "$status" = 0 ] ; then
echo "$test_name: $test_description: ok"
diff --git a/tests/t_mmp_fail/is_slow_test b/tests/t_mmp_fail/is_slow_test
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/t_mmp_fail/is_slow_test
diff --git a/tests/t_mmp_fail/name b/tests/t_mmp_fail/name
new file mode 100644
index 00000000..e872ddaa
--- /dev/null
+++ b/tests/t_mmp_fail/name
@@ -0,0 +1 @@
+error running tune2fs with MMP
diff --git a/tests/t_mmp_fail/script b/tests/t_mmp_fail/script
new file mode 100644
index 00000000..5fa6a846
--- /dev/null
+++ b/tests/t_mmp_fail/script
@@ -0,0 +1,44 @@
+FSCK_OPT=-yf
+
+$MKE2FS -q -F -o Linux -I 128 -b 1024 -O mmp $TMPFILE 100 > $test_name.log 2>&1
+status=$?
+if [ "$status" != 0 ] ; then
+ echo "mke2fs -O mmp failed" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return $status
+fi
+
+$TUNE2FS -O project $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" == 0 ] ; then
+ echo "'tune2fs -O project' succeeded on small inode" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return 1
+fi
+$TUNE2FS -o bad_option $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" == 0 ] ; then
+ echo "'tune2fs -o bad_option' succeeded" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return 1
+fi
+$E2MMPSTATUS -i $TMPFILE >> $test_name.log 2>&1
+$E2MMPSTATUS $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" != 0 ] ; then
+ echo "$TUNE2FS left MMP block in bad state" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return $status
+fi
+
+$FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "e2fsck after MMP disable failed" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return $status
+fi
+rm -f $TMPFILE
diff --git a/tests/t_write_subdirectory/name b/tests/t_write_subdirectory/name
new file mode 100644
index 00000000..740c4094
--- /dev/null
+++ b/tests/t_write_subdirectory/name
@@ -0,0 +1 @@
+debugfs write creates file in subdirectory
diff --git a/tests/t_write_subdirectory/script b/tests/t_write_subdirectory/script
new file mode 100644
index 00000000..bb354f8b
--- /dev/null
+++ b/tests/t_write_subdirectory/script
@@ -0,0 +1,29 @@
+FSCK_OPT=-nf
+
+$MKE2FS -q -F -o Linux -I 256 -b 4096 $TMPFILE 10000 > $test_name.log 2>&1
+status=$?
+if [ "$status" != 0 ] ; then
+ echo "mke2fs failed" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return $status
+fi
+
+touch $TMPFILE.1
+cat <<- EOF | $DEBUGFS -w $TMPFILE >> $test_name.log 2>&1
+ mkdir aaa
+ mkdir aaa/bbb
+ write $TMPFILE.1 aaa/bbb/ccc
+EOF
+rm -f $TMPFILE.1
+
+$FSCK $FSCK_OPT $TMPFILE >> $test_name.log 2>&1
+status=$?
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "e2fsck with failed with $status" > $test_name.failed
+ echo "$test_name: $test_description: failed"
+ return $status
+fi
+rm -f $TMPFILE
diff --git a/tests/u_bounce_io/expect.1 b/tests/u_bounce_io/expect.1
new file mode 100644
index 00000000..a11cb9bc
--- /dev/null
+++ b/tests/u_bounce_io/expect.1
@@ -0,0 +1,106 @@
+Creating filesystem with 65536 1k blocks and 16384 inodes
+Superblock backups stored on blocks:
+ 8193, 24577, 40961, 57345
+
+Allocating group tables: done
+Writing inode tables: done
+Writing superblocks and filesystem accounting information: done
+
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 11/16384 files (0.0% non-contiguous), 3364/65536 blocks
+Exit status is 0
+Filesystem volume name: <none>
+Last mounted on: <not available>
+Filesystem magic number: 0xEF53
+Filesystem revision #: 1 (dynamic)
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
+Default mount options: (none)
+Filesystem state: clean
+Errors behavior: Continue
+Filesystem OS type: Linux
+Inode count: 16384
+Block count: 65536
+Reserved block count: 3276
+Overhead clusters: 3350
+Free blocks: 62172
+Free inodes: 16373
+First block: 1
+Block size: 1024
+Fragment size: 1024
+Reserved GDT blocks: 255
+Blocks per group: 8192
+Fragments per group: 8192
+Inodes per group: 2048
+Inode blocks per group: 256
+Mount count: 0
+Check interval: 15552000 (6 months)
+Reserved blocks uid: 0
+Reserved blocks gid: 0
+First inode: 11
+Inode size: 128
+Default directory hash: half_md4
+
+
+Group 0: (Blocks 1-8192)
+ Primary superblock at 1, Group descriptors at 2-2
+ Reserved GDT blocks at 3-257
+ Block bitmap at 258 (+257), Inode bitmap at 259 (+258)
+ Inode table at 260-515 (+259)
+ 7663 free blocks, 2037 free inodes, 2 directories
+ Free blocks: 530-8192
+ Free inodes: 12-2048
+Group 1: (Blocks 8193-16384)
+ Backup superblock at 8193, Group descriptors at 8194-8194
+ Reserved GDT blocks at 8195-8449
+ Block bitmap at 8450 (+257), Inode bitmap at 8451 (+258)
+ Inode table at 8452-8707 (+259)
+ 7677 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 8708-16384
+ Free inodes: 2049-4096
+Group 2: (Blocks 16385-24576)
+ Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1)
+ Inode table at 16387-16642 (+2)
+ 7934 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 16643-24576
+ Free inodes: 4097-6144
+Group 3: (Blocks 24577-32768)
+ Backup superblock at 24577, Group descriptors at 24578-24578
+ Reserved GDT blocks at 24579-24833
+ Block bitmap at 24834 (+257), Inode bitmap at 24835 (+258)
+ Inode table at 24836-25091 (+259)
+ 7677 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 25092-32768
+ Free inodes: 6145-8192
+Group 4: (Blocks 32769-40960)
+ Block bitmap at 32769 (+0), Inode bitmap at 32770 (+1)
+ Inode table at 32771-33026 (+2)
+ 7934 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 33027-40960
+ Free inodes: 8193-10240
+Group 5: (Blocks 40961-49152)
+ Backup superblock at 40961, Group descriptors at 40962-40962
+ Reserved GDT blocks at 40963-41217
+ Block bitmap at 41218 (+257), Inode bitmap at 41219 (+258)
+ Inode table at 41220-41475 (+259)
+ 7677 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 41476-49152
+ Free inodes: 10241-12288
+Group 6: (Blocks 49153-57344)
+ Block bitmap at 49153 (+0), Inode bitmap at 49154 (+1)
+ Inode table at 49155-49410 (+2)
+ 7934 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 49411-57344
+ Free inodes: 12289-14336
+Group 7: (Blocks 57345-65535)
+ Backup superblock at 57345, Group descriptors at 57346-57346
+ Reserved GDT blocks at 57347-57601
+ Block bitmap at 57602 (+257), Inode bitmap at 57603 (+258)
+ Inode table at 57604-57859 (+259)
+ 7676 free blocks, 2048 free inodes, 0 directories
+ Free blocks: 57860-65535
+ Free inodes: 14337-16384
diff --git a/tests/u_bounce_io/script b/tests/u_bounce_io/script
new file mode 100644
index 00000000..5dd63299
--- /dev/null
+++ b/tests/u_bounce_io/script
@@ -0,0 +1,9 @@
+DESCRIPTION="bounce I/O in unix_io"
+DUMPE2FS_IGNORE_80COL=1
+export DUMPE2FS_IGNORE_80COL
+UNIX_IO_FORCE_BOUNCE=yes
+export UNIX_IO_FORCE_BOUNCE
+FS_SIZE=65536
+. $cmd_dir/run_mke2fs
+unset DUMPE2FS_IGNORE_80COL
+unset UNIX_IO_FORCE_BOUNCE
diff --git a/util/Makefile.in b/util/Makefile.in
index a3df17e4..7ad18c0a 100644
--- a/util/Makefile.in
+++ b/util/Makefile.in
@@ -8,6 +8,7 @@ VPATH = @srcdir@
top_builddir = ..
my_dir = util
INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
SRCS = $(srcdir)/subst.c $(srcdir)/mkutf8data.c
diff --git a/util/gcc-wall-cleanup b/util/gcc-wall-cleanup
deleted file mode 100644
index cef7a2dc..00000000
--- a/util/gcc-wall-cleanup
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sed -f
-#
-# This script filters out gcc-wall crud that we're not interested in seeing.
-#
-/^cc /d
-/^kcc /d
-/^gcc /d
-/does not support `long long'/d
-/forbids long long integer constants/d
-/does not support the `ll' length modifier/d
-/does not support the `ll' printf length modifier/d
-/ANSI C forbids long long integer constants/d
-/traditional C rejects string concatenation/d
-/integer constant is unsigned in ANSI C, signed with -traditional/d
-/ISO C forbids conversion of object pointer to function pointer type/,+2d
-/ISO C does not support ‘__FUNCTION__’ predefined identifier/d
-/At top level:/d
-/In file included from/d
-/In function `.*':/d
-/zero-length format string/d
-/warning: (near initialization for/d
-/^[ ]*from/d
-
diff --git a/util/static-analysis-cleanup b/util/static-analysis-cleanup
deleted file mode 100644
index 67492597..00000000
--- a/util/static-analysis-cleanup
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sed -f
-#
-# This script filters out gcc-wall crud that we're not interested in seeing.
-#
-/^cc /d
-/^kcc /d
-/^gcc /d
-/does not support `long long'/d
-/forbids long long integer constants/d
-/does not support the `ll' length modifier/d
-/does not support the `ll' printf length modifier/d
-/ANSI C forbids long long integer constants/d
-/traditional C rejects string concatenation/d
-/integer constant is unsigned in ANSI C, signed with -traditional/d
-/warning: missing initializer/d
-/warning: (near initialization for/d
-/^[ ]*from/d
-/unused parameter/d
-/e2_types.h" not found.$/d
-/e2_bitops.h" not found.$/d
diff --git a/version.h b/version.h
index f3004792..e27de3c1 100644
--- a/version.h
+++ b/version.h
@@ -7,5 +7,5 @@
* file may be redistributed under the GNU Public License v2.
*/
-#define E2FSPROGS_VERSION "1.45.4"
-#define E2FSPROGS_DATE "23-Sep-2019"
+#define E2FSPROGS_VERSION "1.46.2"
+#define E2FSPROGS_DATE "28-Feb-2021"