OSDN Git Service

Merge branch 'maint' into next
authorTheodore Ts'o <tytso@mit.edu>
Sun, 17 Feb 2008 22:36:45 +0000 (17:36 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 17 Feb 2008 22:36:45 +0000 (17:36 -0500)
27 files changed:
configure
configure.in
lib/ext2fs/tdb.c
lib/ext2fs/tdb.h
lib/ext2fs/tdb/build-tdb
lib/ext2fs/tdb/patches/copyright
lib/ext2fs/tdb/patches/ext2tdb-rename
lib/ext2fs/tdb/patches/replace-includes
lib/ext2fs/tdb/patches/static-functions
lib/ext2fs/tdb/patches/static-prototypes
lib/ext2fs/tdb/patches/tdbtool-includes
lib/uuid/gen_uuid.c
misc/Makefile.in
misc/fsck.8.in
misc/fsck.c
misc/ismounted.c [new file with mode: 0644]
misc/uuidd.c
po/cs.gmo
po/cs.po
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/sv.gmo
po/sv.po
po/vi.gmo
po/vi.po

index cea632c..6a46e3c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1899,12 +1899,12 @@ esac
 
 base_ver=`echo $E2FSPROGS_VERSION | \
               sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
-pre_vers=`echo $base_ver 0.01 - p | dc`
 
 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
 
 case $E2FSPROGS_VERSION in
 *-WIP|pre-*)
+       pre_vers=`echo $base_ver 0.01 - p | dc`
        E2FSPROGS_PKGVER="$pre_vers+${base_ver}_WIP_$date_spec"
        ;;
 *)
@@ -11757,7 +11757,9 @@ fi
 
 
 
-for ac_header in stdlib.h unistd.h stdarg.h stdint.h errno.h malloc.h mntent.h paths.h dirent.h getopt.h setjmp.h signal.h termios.h linux/fd.h linux/major.h sys/disklabel.h sys/ioctl.h sys/mman.h sys/mkdev.h sys/prctl.h sys/queue.h sys/sockio.h sys/socket.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h sys/wait.h sys/resource.h sys/syscall.h net/if_dl.h netinet/in.h utime.h
+
+
+for ac_header in dirent.h errno.h getopt.h malloc.h mntent.h paths.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h unistd.h utime.h linux/fd.h linux/major.h net/if_dl.h netinet/in.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/mman.h sys/prctl.h sys/queue.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
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
index 20f5d16..756e3bd 100644 (file)
@@ -41,12 +41,12 @@ esac
 
 base_ver=`echo $E2FSPROGS_VERSION | \
               sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
-pre_vers=`echo $base_ver 0.01 - p | dc`
 
 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
 
 case $E2FSPROGS_VERSION in
 *-WIP|pre-*)
+       pre_vers=`echo $base_ver 0.01 - p | dc`
        E2FSPROGS_PKGVER="$pre_vers+${base_ver}_WIP_$date_spec"
        ;;
 *)
@@ -603,7 +603,7 @@ if test $cross_compiling = no; then
 else
   AC_CHECK_PROGS(BUILD_CC, gcc cc)
 fi
-AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h stdint.h errno.h malloc.h mntent.h paths.h dirent.h getopt.h setjmp.h signal.h termios.h linux/fd.h linux/major.h sys/disklabel.h sys/ioctl.h sys/mman.h sys/mkdev.h sys/prctl.h sys/queue.h sys/sockio.h sys/socket.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h sys/wait.h sys/resource.h sys/syscall.h net/if_dl.h netinet/in.h utime.h)
+AC_CHECK_HEADERS(dirent.h errno.h getopt.h malloc.h mntent.h paths.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h unistd.h utime.h linux/fd.h linux/major.h net/if_dl.h netinet/in.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/mman.h sys/prctl.h sys/queue.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)
 AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
 [[
 #if HAVE_SYS_QUEUE_H
index 6f6018b..c868958 100644 (file)
@@ -1,7 +1,7 @@
-/* 
-URL: svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb
-Rev: 22080
-Last Changed: 2007-04-03 05:08:18 -0400
+/*
+URL: svn://svnanon.samba.org/samba/branches/SAMBA_4_0/source/lib/tdb/common
+Rev: 23590
+Last Changed Date: 2007-06-22 13:36:10 -0400 (Fri, 22 Jun 2007)
 */
  /* 
    trivial database library - standalone version
@@ -45,7 +45,9 @@ Last Changed: 2007-04-03 05:08:18 -0400
 #include <stddef.h>
 #include <errno.h>
 #include <string.h>
+#ifdef HAVE_SYS_SELECT_H
 #include <sys/select.h>
+#endif
 #include <sys/time.h>
 #include <sys/types.h>
 #include <time.h>
@@ -101,6 +103,8 @@ static char *rep_strdup(const char *s)
 #endif
 #endif
 
+typedef int bool;
+
 #include "tdb.h"
 
 #ifndef u32
@@ -242,6 +246,7 @@ struct tdb_context {
        struct tdb_transaction *transaction;
        int page_size;
        int max_dead_records;
+       bool have_transaction_lock;
 };
 
 
@@ -253,6 +258,8 @@ static void tdb_mmap(struct tdb_context *tdb);
 static int tdb_lock(struct tdb_context *tdb, int list, int ltype);
 static int tdb_unlock(struct tdb_context *tdb, int list, int ltype);
 static int tdb_brlock(struct tdb_context *tdb, tdb_off_t offset, int rw_type, int lck_type, int probe, size_t len);
+static int tdb_transaction_lock(struct tdb_context *tdb, int ltype);
+static int tdb_transaction_unlock(struct tdb_context *tdb);
 static int tdb_brlock_upgrade(struct tdb_context *tdb, tdb_off_t offset, size_t len);
 static int tdb_write_lock_record(struct tdb_context *tdb, tdb_off_t off);
 static int tdb_write_unlock_record(struct tdb_context *tdb, tdb_off_t off);
@@ -278,6 +285,8 @@ static tdb_off_t tdb_find_lock_hash(struct tdb_context *tdb, TDB_DATA key, u32 h
                           struct list_struct *rec);
 static void tdb_io_init(struct tdb_context *tdb);
 static int tdb_expand(struct tdb_context *tdb, tdb_off_t size);
+static int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
+                     struct list_struct *rec);
 
 
 /* file: error.c */
@@ -312,6 +321,8 @@ const char *tdb_errorstr(struct tdb_context *tdb)
 
 /* file: lock.c */
 
+#define TDB_MARK_LOCK 0x80000000
+
 /* a byte range locking function - return 0 on success
    this functions locks/unlocks 1 byte at the specified offset.
 
@@ -389,10 +400,13 @@ int tdb_brlock_upgrade(struct tdb_context *tdb, tdb_off_t offset, size_t len)
 
 
 /* lock a list in the database. list -1 is the alloc list */
-int tdb_lock(struct tdb_context *tdb, int list, int ltype)
+static int _tdb_lock(struct tdb_context *tdb, int list, int ltype, int op)
 {
        struct tdb_lock_type *new_lck;
        int i;
+       bool mark_lock = ((ltype & TDB_MARK_LOCK) == TDB_MARK_LOCK);
+
+       ltype &= ~TDB_MARK_LOCK;
 
        /* a global lock allows us to avoid per chain locks */
        if (tdb->global_lock.count && 
@@ -442,10 +456,9 @@ int tdb_lock(struct tdb_context *tdb, int list, int ltype)
 
        /* Since fcntl locks don't nest, we do a lock for the first one,
           and simply bump the count for future ones */
-       if (tdb->methods->tdb_brlock(tdb,FREELIST_TOP+4*list,ltype,F_SETLKW,
+       if (!mark_lock &&
+           tdb->methods->tdb_brlock(tdb,FREELIST_TOP+4*list, ltype, op,
                                     0, 1)) {
-               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_lock failed on list %d "
-                        "ltype=%d (%s)\n",  list, ltype, strerror(errno)));
                return -1;
        }
 
@@ -459,6 +472,25 @@ int tdb_lock(struct tdb_context *tdb, int list, int ltype)
        return 0;
 }
 
+/* lock a list in the database. list -1 is the alloc list */
+int tdb_lock(struct tdb_context *tdb, int list, int ltype)
+{
+       int ret;
+       ret = _tdb_lock(tdb, list, ltype, F_SETLKW);
+       if (ret) {
+               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_lock failed on list %d "
+                        "ltype=%d (%s)\n",  list, ltype, strerror(errno)));
+       }
+       return ret;
+}
+
+/* lock a list in the database. list -1 is the alloc list. non-blocking lock */
+int tdb_lock_nonblock(struct tdb_context *tdb, int list, int ltype)
+{
+       return _tdb_lock(tdb, list, ltype, F_SETLK);
+}
+
+
 /* unlock the database: returns void because it's too late for errors. */
        /* changed to return int it may be interesting to know there
           has been an error  --simo */
@@ -467,6 +499,9 @@ int tdb_unlock(struct tdb_context *tdb, int list, int ltype)
        int ret = -1;
        int i;
        struct tdb_lock_type *lck = NULL;
+       bool mark_lock = ((ltype & TDB_MARK_LOCK) == TDB_MARK_LOCK);
+
+       ltype &= ~TDB_MARK_LOCK;
 
        /* a global lock allows us to avoid per chain locks */
        if (tdb->global_lock.count && 
@@ -511,8 +546,12 @@ int tdb_unlock(struct tdb_context *tdb, int list, int ltype)
         * anyway.
         */
 
-       ret = tdb->methods->tdb_brlock(tdb, FREELIST_TOP+4*list, F_UNLCK,
-                                      F_SETLKW, 0, 1);
+       if (mark_lock) {
+               ret = 0;
+       } else {
+               ret = tdb->methods->tdb_brlock(tdb, FREELIST_TOP+4*list, F_UNLCK,
+                                              F_SETLKW, 0, 1);
+       }
        tdb->num_locks--;
 
        /*
@@ -539,11 +578,50 @@ int tdb_unlock(struct tdb_context *tdb, int list, int ltype)
        return ret;
 }
 
+/*
+  get the transaction lock
+ */
+int tdb_transaction_lock(struct tdb_context *tdb, int ltype)
+{
+       if (tdb->have_transaction_lock || tdb->global_lock.count) {
+               return 0;
+       }
+       if (tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, ltype, 
+                                    F_SETLKW, 0, 1) == -1) {
+               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_transaction_lock: failed to get transaction lock\n"));
+               tdb->ecode = TDB_ERR_LOCK;
+               return -1;
+       }
+       tdb->have_transaction_lock = 1;
+       return 0;
+}
+
+/*
+  release the transaction lock
+ */
+int tdb_transaction_unlock(struct tdb_context *tdb)
+{
+       int ret;
+       if (!tdb->have_transaction_lock) {
+               return 0;
+       }
+       ret = tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, F_UNLCK, F_SETLKW, 0, 1);
+       if (ret == 0) {
+               tdb->have_transaction_lock = 0;
+       }
+       return ret;
+}
+
+
 
 
 /* lock/unlock entire database */
-static int _tdb_lockall(struct tdb_context *tdb, int ltype)
+static int _tdb_lockall(struct tdb_context *tdb, int ltype, int op)
 {
+       bool mark_lock = ((ltype & TDB_MARK_LOCK) == TDB_MARK_LOCK);
+
+       ltype &= ~TDB_MARK_LOCK;
+
        /* There are no locks on read-only dbs */
        if (tdb->read_only || tdb->traverse_read)
                return TDB_ERRCODE(TDB_ERR_LOCK, -1);
@@ -563,9 +641,12 @@ static int _tdb_lockall(struct tdb_context *tdb, int ltype)
                return TDB_ERRCODE(TDB_ERR_LOCK, -1);
        }
 
-       if (tdb->methods->tdb_brlock(tdb, FREELIST_TOP, ltype, F_SETLKW, 
+       if (!mark_lock &&
+           tdb->methods->tdb_brlock(tdb, FREELIST_TOP, ltype, op,
                                     0, 4*tdb->header.hash_size)) {
-               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_lockall failed (%s)\n", strerror(errno)));
+               if (op == F_SETLKW) {
+                       TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_lockall failed (%s)\n", strerror(errno)));
+               }
                return -1;
        }
 
@@ -575,9 +656,15 @@ static int _tdb_lockall(struct tdb_context *tdb, int ltype)
        return 0;
 }
 
+
+
 /* unlock entire db */
 static int _tdb_unlockall(struct tdb_context *tdb, int ltype)
 {
+       bool mark_lock = ((ltype & TDB_MARK_LOCK) == TDB_MARK_LOCK);
+
+       ltype &= ~TDB_MARK_LOCK;
+
        /* There are no locks on read-only dbs */
        if (tdb->read_only || tdb->traverse_read) {
                return TDB_ERRCODE(TDB_ERR_LOCK, -1);
@@ -592,7 +679,8 @@ static int _tdb_unlockall(struct tdb_context *tdb, int ltype)
                return 0;
        }
 
-       if (tdb->methods->tdb_brlock(tdb, FREELIST_TOP, F_UNLCK, F_SETLKW, 
+       if (!mark_lock &&
+           tdb->methods->tdb_brlock(tdb, FREELIST_TOP, F_UNLCK, F_SETLKW, 
                                     0, 4*tdb->header.hash_size)) {
                TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_unlockall failed (%s)\n", strerror(errno)));
                return -1;
@@ -607,7 +695,25 @@ static int _tdb_unlockall(struct tdb_context *tdb, int ltype)
 /* lock entire database with write lock */
 int tdb_lockall(struct tdb_context *tdb)
 {
-       return _tdb_lockall(tdb, F_WRLCK);
+       return _tdb_lockall(tdb, F_WRLCK, F_SETLKW);
+}
+
+/* lock entire database with write lock - mark only */
+int tdb_lockall_mark(struct tdb_context *tdb)
+{
+       return _tdb_lockall(tdb, F_WRLCK | TDB_MARK_LOCK, F_SETLKW);
+}
+
+/* unlock entire database with write lock - unmark only */
+int tdb_lockall_unmark(struct tdb_context *tdb)
+{
+       return _tdb_unlockall(tdb, F_WRLCK | TDB_MARK_LOCK);
+}
+
+/* lock entire database with write lock - nonblocking varient */
+int tdb_lockall_nonblock(struct tdb_context *tdb)
+{
+       return _tdb_lockall(tdb, F_WRLCK, F_SETLK);
 }
 
 /* unlock entire database with write lock */
@@ -619,7 +725,13 @@ int tdb_unlockall(struct tdb_context *tdb)
 /* lock entire database with read lock */
 int tdb_lockall_read(struct tdb_context *tdb)
 {
-       return _tdb_lockall(tdb, F_RDLCK);
+       return _tdb_lockall(tdb, F_RDLCK, F_SETLKW);
+}
+
+/* lock entire database with read lock - nonblock varient */
+int tdb_lockall_read_nonblock(struct tdb_context *tdb)
+{
+       return _tdb_lockall(tdb, F_RDLCK, F_SETLK);
 }
 
 /* unlock entire database with read lock */
@@ -635,6 +747,26 @@ int tdb_chainlock(struct tdb_context *tdb, TDB_DATA key)
        return tdb_lock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK);
 }
 
+/* lock/unlock one hash chain, non-blocking. This is meant to be used
+   to reduce contention - it cannot guarantee how many records will be
+   locked */
+int tdb_chainlock_nonblock(struct tdb_context *tdb, TDB_DATA key)
+{
+       return tdb_lock_nonblock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK);
+}
+
+/* mark a chain as locked without actually locking it. Warning! use with great caution! */
+int tdb_chainlock_mark(struct tdb_context *tdb, TDB_DATA key)
+{
+       return tdb_lock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK | TDB_MARK_LOCK);
+}
+
+/* unmark a chain as locked without actually locking it. Warning! use with great caution! */
+int tdb_chainlock_unmark(struct tdb_context *tdb, TDB_DATA key)
+{
+       return tdb_unlock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK | TDB_MARK_LOCK);
+}
+
 int tdb_chainunlock(struct tdb_context *tdb, TDB_DATA key)
 {
        return tdb_unlock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK);
@@ -1428,7 +1560,7 @@ static int transaction_expand_file(struct tdb_context *tdb, tdb_off_t size,
 /*
   brlock during a transaction - ignore them
 */
-static int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset,
+static int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset, 
                              int rw_type, int lck_type, int probe, size_t len)
 {
        return 0;
@@ -1493,9 +1625,7 @@ int tdb_transaction_start(struct tdb_context *tdb)
        /* get the transaction write lock. This is a blocking lock. As
           discussed with Volker, there are a number of ways we could
           make this async, which we will probably do in the future */
-       if (tdb_brlock(tdb, TRANSACTION_LOCK, F_WRLCK, F_SETLKW, 0, 1) == -1) {
-               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_transaction_start: failed to get transaction lock\n"));
-               tdb->ecode = TDB_ERR_LOCK;
+       if (tdb_transaction_lock(tdb, F_WRLCK) == -1) {
                SAFE_FREE(tdb->transaction);
                return -1;
        }
@@ -1539,6 +1669,7 @@ int tdb_transaction_start(struct tdb_context *tdb)
                              TDB_HASHTABLE_SIZE(tdb)) != 0) {
                TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_transaction_start: failed to prime hash table\n"));
                tdb->ecode = TDB_ERR_IO;
+               tdb->methods = tdb->transaction->io_methods;
                goto fail;
        }
 
@@ -1546,7 +1677,7 @@ int tdb_transaction_start(struct tdb_context *tdb)
        
 fail:
        tdb_brlock(tdb, FREELIST_TOP, F_UNLCK, F_SETLKW, 0, 0);
-       tdb_brlock(tdb, TRANSACTION_LOCK, F_UNLCK, F_SETLKW, 0, 1);
+       tdb_transaction_unlock(tdb);
        SAFE_FREE(tdb->transaction->hash_heads);
        SAFE_FREE(tdb->transaction);
        return -1;
@@ -1593,13 +1724,15 @@ int tdb_transaction_cancel(struct tdb_context *tdb)
                                   F_UNLCK,F_SETLKW, 0, 1);
                }
                tdb->num_locks = 0;
+               tdb->num_lockrecs = 0;
+               SAFE_FREE(tdb->lockrecs);
        }
 
        /* restore the normal io methods */
        tdb->methods = tdb->transaction->io_methods;
 
        tdb_brlock(tdb, FREELIST_TOP, F_UNLCK, F_SETLKW, 0, 0);
-       tdb_brlock(tdb, TRANSACTION_LOCK, F_UNLCK, F_SETLKW, 0, 1);
+       tdb_transaction_unlock(tdb);
        SAFE_FREE(tdb->transaction->hash_heads);
        SAFE_FREE(tdb->transaction);
        
@@ -2123,7 +2256,7 @@ int tdb_transaction_recover(struct tdb_context *tdb)
 /* file: freelist.c */
 
 /* read a freelist record and check for simple errors */
-static int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
+static int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
 {
        if (tdb->methods->tdb_read(tdb, off, rec, sizeof(*rec),DOCONV()) == -1)
                return -1;
@@ -2131,7 +2264,7 @@ static int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_str
        if (rec->magic == TDB_MAGIC) {
                /* this happens when a app is showdown while deleting a record - we should
                   not completely fail when this happens */
-               TDB_LOG((tdb, TDB_DEBUG_WARNING, "rec_free_read non-free magic 0x%x at offset=%d - fixing\n", 
+               TDB_LOG((tdb, TDB_DEBUG_WARNING, "tdb_rec_free_read non-free magic 0x%x at offset=%d - fixing\n", 
                         rec->magic, off));
                rec->magic = TDB_FREE_MAGIC;
                if (tdb->methods->tdb_write(tdb, off, rec, sizeof(*rec)) == -1)
@@ -2141,7 +2274,7 @@ static int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_str
        if (rec->magic != TDB_FREE_MAGIC) {
                /* Ensure ecode is set for log fn. */
                tdb->ecode = TDB_ERR_CORRUPT;
-               TDB_LOG((tdb, TDB_DEBUG_WARNING, "rec_free_read bad magic 0x%x at offset=%d\n", 
+               TDB_LOG((tdb, TDB_DEBUG_WARNING, "tdb_rec_free_read bad magic 0x%x at offset=%d\n", 
                           rec->magic, off));
                return TDB_ERRCODE(TDB_ERR_CORRUPT, -1);
        }
@@ -2380,7 +2513,7 @@ tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_st
           issues when faced with a slowly increasing record size.
         */
        while (rec_ptr) {
-               if (rec_free_read(tdb, rec_ptr, rec) == -1) {
+               if (tdb_rec_free_read(tdb, rec_ptr, rec) == -1) {
                        goto fail;
                }
 
@@ -2405,7 +2538,7 @@ tdb_off_t tdb_allocate(struct tdb_context *tdb, tdb_len_t length, struct list_st
        }
 
        if (bestfit.rec_ptr != 0) {
-               if (rec_free_read(tdb, bestfit.rec_ptr, rec) == -1) {
+               if (tdb_rec_free_read(tdb, bestfit.rec_ptr, rec) == -1) {
                        goto fail;
                }
 
@@ -2487,7 +2620,7 @@ int tdb_validate_freelist(struct tdb_context *tdb, int *pnum_entries)
                        goto fail;
                }
 
-               if (rec_free_read(tdb, rec_ptr, &rec) == -1) {
+               if (tdb_rec_free_read(tdb, rec_ptr, &rec) == -1) {
                        goto fail;
                }
 
@@ -2685,12 +2818,10 @@ int tdb_traverse_read(struct tdb_context *tdb,
 {
        struct tdb_traverse_lock tl = { NULL, 0, 0, F_RDLCK };
        int ret;
-       
+
        /* we need to get a read lock on the transaction lock here to
           cope with the lock ordering semantics of solaris10 */
-       if (tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, F_RDLCK, F_SETLKW, 0, 1) == -1) {
-               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_traverse_read: failed to get transaction lock\n"));
-               tdb->ecode = TDB_ERR_LOCK;
+       if (tdb_transaction_lock(tdb, F_RDLCK)) {
                return -1;
        }
 
@@ -2698,7 +2829,7 @@ int tdb_traverse_read(struct tdb_context *tdb,
        ret = tdb_traverse_internal(tdb, fn, private_data, &tl);
        tdb->traverse_read--;
 
-       tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, F_UNLCK, F_SETLKW, 0, 1);
+       tdb_transaction_unlock(tdb);
 
        return ret;
 }
@@ -2717,15 +2848,13 @@ int tdb_traverse(struct tdb_context *tdb,
                return tdb_traverse_read(tdb, fn, private_data);
        }
        
-       if (tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, F_WRLCK, F_SETLKW, 0, 1) == -1) {
-               TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_traverse: failed to get transaction lock\n"));
-               tdb->ecode = TDB_ERR_LOCK;
+       if (tdb_transaction_lock(tdb, F_WRLCK)) {
                return -1;
        }
 
        ret = tdb_traverse_internal(tdb, fn, private_data, &tl);
 
-       tdb->methods->tdb_brlock(tdb, TRANSACTION_LOCK, F_UNLCK, F_SETLKW, 0, 1);
+       tdb_transaction_unlock(tdb);
 
        return ret;
 }
@@ -2743,12 +2872,15 @@ TDB_DATA tdb_firstkey(struct tdb_context *tdb)
        tdb->travlocks.off = tdb->travlocks.hash = 0;
        tdb->travlocks.lock_rw = F_RDLCK;
 
+       /* Grab first record: locks chain and returned record. */
        if (tdb_next_lock(tdb, &tdb->travlocks, &rec) <= 0)
                return tdb_null;
        /* now read the key */
        key.dsize = rec.key_len;
        key.dptr =tdb_alloc_read(tdb,tdb->travlocks.off+sizeof(rec),key.dsize);
-       if (tdb_unlock(tdb, BUCKET(tdb->travlocks.hash), F_WRLCK) != 0)
+
+       /* Unlock the hash chain of the record we just read. */
+       if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0)
                TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_firstkey: error occurred while tdb_unlocking!\n"));
        return key;
 }
@@ -2763,7 +2895,7 @@ TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
 
        /* Is locked key the old key?  If so, traverse will be reliable. */
        if (tdb->travlocks.off) {
-               if (tdb_lock(tdb,tdb->travlocks.hash,F_WRLCK))
+               if (tdb_lock(tdb,tdb->travlocks.hash,tdb->travlocks.lock_rw))
                        return tdb_null;
                if (tdb_rec_read(tdb, tdb->travlocks.off, &rec) == -1
                    || !(k = tdb_alloc_read(tdb,tdb->travlocks.off+sizeof(rec),
@@ -2774,7 +2906,7 @@ TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
                                SAFE_FREE(k);
                                return tdb_null;
                        }
-                       if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0) {
+                       if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0) {
                                SAFE_FREE(k);
                                return tdb_null;
                        }
@@ -2786,7 +2918,7 @@ TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
 
        if (!tdb->travlocks.off) {
                /* No previous element: do normal find, and lock record */
-               tdb->travlocks.off = tdb_find_lock_hash(tdb, oldkey, tdb->hash_fn(&oldkey), F_WRLCK, &rec);
+               tdb->travlocks.off = tdb_find_lock_hash(tdb, oldkey, tdb->hash_fn(&oldkey), tdb->travlocks.lock_rw, &rec);
                if (!tdb->travlocks.off)
                        return tdb_null;
                tdb->travlocks.hash = BUCKET(rec.full_hash);
@@ -2804,18 +2936,19 @@ TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
                key.dptr = tdb_alloc_read(tdb, tdb->travlocks.off+sizeof(rec),
                                          key.dsize);
                /* Unlock the chain of this new record */
-               if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0)
+               if (tdb_unlock(tdb, tdb->travlocks.hash, tdb->travlocks.lock_rw) != 0)
                        TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_nextkey: WARNING tdb_unlock failed!\n"));
        }
        /* Unlock the chain of old record */
-       if (tdb_unlock(tdb, BUCKET(oldhash), F_WRLCK) != 0)
+       if (tdb_unlock(tdb, BUCKET(oldhash), tdb->travlocks.lock_rw) != 0)
                TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_nextkey: WARNING tdb_unlock failed!\n"));
        return key;
 }
 
 /* file: dump.c */
 
-static tdb_off_t tdb_dump_record(struct tdb_context *tdb, tdb_off_t offset)
+static tdb_off_t tdb_dump_record(struct tdb_context *tdb, int hash,
+                                tdb_off_t offset)
 {
        struct list_struct rec;
        tdb_off_t tailer_ofs, tailer;
@@ -2826,8 +2959,10 @@ static tdb_off_t tdb_dump_record(struct tdb_context *tdb, tdb_off_t offset)
                return 0;
        }
 
-       printf(" rec: offset=0x%08x next=0x%08x rec_len=%d key_len=%d data_len=%d full_hash=0x%x magic=0x%x\n",
-              offset, rec.next, rec.rec_len, rec.key_len, rec.data_len, rec.full_hash, rec.magic);
+       printf(" rec: hash=%d offset=0x%08x next=0x%08x rec_len=%d "
+              "key_len=%d data_len=%d full_hash=0x%x magic=0x%x\n",
+              hash, offset, rec.next, rec.rec_len, rec.key_len, rec.data_len,
+              rec.full_hash, rec.magic);
 
        tailer_ofs = offset + sizeof(rec) + rec.rec_len - sizeof(tdb_off_t);
 
@@ -2859,7 +2994,7 @@ static int tdb_dump_chain(struct tdb_context *tdb, int i)
                printf("hash=%d\n", i);
 
        while (rec_ptr) {
-               rec_ptr = tdb_dump_record(tdb, rec_ptr);
+               rec_ptr = tdb_dump_record(tdb, i, rec_ptr);
        }
 
        return tdb_unlock(tdb, i, F_WRLCK);
@@ -2925,10 +3060,10 @@ int tdb_printfreelist(struct tdb_context *tdb)
 TDB_DATA tdb_null;
 
 /*
-  increment the tdb sequence number if the tdb has been opened using
+  non-blocking increment of the tdb sequence number if the tdb has been opened using
   the TDB_SEQNUM flag
 */
-static void tdb_increment_seqnum(struct tdb_context *tdb)
+void tdb_increment_seqnum_nonblock(struct tdb_context *tdb)
 {
        tdb_off_t seqnum=0;
        
@@ -2936,16 +3071,29 @@ static void tdb_increment_seqnum(struct tdb_context *tdb)
                return;
        }
 
-       if (tdb_brlock(tdb, TDB_SEQNUM_OFS, F_WRLCK, F_SETLKW, 1, 1) != 0) {
-               return;
-       }
-
        /* we ignore errors from this, as we have no sane way of
           dealing with them.
        */
        tdb_ofs_read(tdb, TDB_SEQNUM_OFS, &seqnum);
        seqnum++;
        tdb_ofs_write(tdb, TDB_SEQNUM_OFS, &seqnum);
+}
+
+/*
+  increment the tdb sequence number if the tdb has been opened using
+  the TDB_SEQNUM flag
+*/
+static void tdb_increment_seqnum(struct tdb_context *tdb)
+{
+       if (!(tdb->flags & TDB_SEQNUM)) {
+               return;
+       }
+
+       if (tdb_brlock(tdb, TDB_SEQNUM_OFS, F_WRLCK, F_SETLKW, 1, 1) != 0) {
+               return;
+       }
+
+       tdb_increment_seqnum_nonblock(tdb);
 
        tdb_brlock(tdb, TDB_SEQNUM_OFS, F_UNLCK, F_SETLKW, 1, 1);
 }
@@ -3460,8 +3608,12 @@ int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf)
        if (dbuf.dptr == NULL) {
                dbuf.dptr = (unsigned char *)malloc(new_dbuf.dsize);
        } else {
-               dbuf.dptr = (unsigned char *)realloc(dbuf.dptr,
+               unsigned char *new_dptr = (unsigned char *)realloc(dbuf.dptr,
                                                     dbuf.dsize + new_dbuf.dsize);
+               if (new_dptr == NULL) {
+                       free(dbuf.dptr);
+               }
+               dbuf.dptr = new_dptr;
        }
 
        if (dbuf.dptr == NULL) {
@@ -3543,6 +3695,15 @@ int tdb_get_flags(struct tdb_context *tdb)
        return tdb->flags;
 }
 
+
+/*
+  enable sequence number handling on an open tdb
+*/
+void tdb_enable_seqnum(struct tdb_context *tdb)
+{
+       tdb->flags |= TDB_SEQNUM;
+}
+
 /* file: open.c */
 
 /* all contexts, to ensure no double-opens (fcntl locks don't nest!) */
index 7ba7ac7..447d6a1 100644 (file)
@@ -119,7 +119,16 @@ typedef struct TDB_DATA {
 #define tdb_dump_all ext2fs_tdb_dump_all
 #define tdb_printfreelist ext2fs_tdb_printfreelist
 #define tdb_validate_freelist ext2fs_tdb_validate_freelist
-
+#define tdb_chainlock_mark ext2fs_tdb_chainlock_mark
+#define tdb_chainlock_nonblock ext2fs_tdb_chainlock_nonblock
+#define tdb_chainlock_unmark ext2fs_tdb_chainlock_unmark
+#define tdb_enable_seqnum ext2fs_tdb_enable_seqnum
+#define tdb_increment_seqnum_nonblock ext2fs_tdb_increment_seqnum_nonblock
+#define tdb_lock_nonblock ext2fs_tdb_lock_nonblock
+#define tdb_lockall_mark ext2fs_tdb_lockall_mark
+#define tdb_lockall_nonblock ext2fs_tdb_lockall_nonblock
+#define tdb_lockall_read_nonblock ext2fs_tdb_lockall_read_nonblock
+#define tdb_lockall_unmark ext2fs_tdb_lockall_unmark
 
 /* this is the context structure that is returned from a db open */
 typedef struct tdb_context TDB_CONTEXT;
@@ -161,9 +170,13 @@ int tdb_traverse(struct tdb_context *tdb, tdb_traverse_func fn, void *);
 int tdb_traverse_read(struct tdb_context *tdb, tdb_traverse_func fn, void *);
 int tdb_exists(struct tdb_context *tdb, TDB_DATA key);
 int tdb_lockall(struct tdb_context *tdb);
+int tdb_lockall_nonblock(struct tdb_context *tdb);
 int tdb_unlockall(struct tdb_context *tdb);
 int tdb_lockall_read(struct tdb_context *tdb);
+int tdb_lockall_read_nonblock(struct tdb_context *tdb);
 int tdb_unlockall_read(struct tdb_context *tdb);
+int tdb_lockall_mark(struct tdb_context *tdb);
+int tdb_lockall_unmark(struct tdb_context *tdb);
 const char *tdb_name(struct tdb_context *tdb);
 int tdb_fd(struct tdb_context *tdb);
 tdb_log_func tdb_log_fn(struct tdb_context *tdb);
@@ -176,12 +189,17 @@ int tdb_get_seqnum(struct tdb_context *tdb);
 int tdb_hash_size(struct tdb_context *tdb);
 size_t tdb_map_size(struct tdb_context *tdb);
 int tdb_get_flags(struct tdb_context *tdb);
+void tdb_enable_seqnum(struct tdb_context *tdb);
+void tdb_increment_seqnum_nonblock(struct tdb_context *tdb);
 
 /* Low level locking functions: use with care */
 int tdb_chainlock(struct tdb_context *tdb, TDB_DATA key);
+int tdb_chainlock_nonblock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainunlock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainlock_read(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainunlock_read(struct tdb_context *tdb, TDB_DATA key);
+int tdb_chainlock_mark(struct tdb_context *tdb, TDB_DATA key);
+int tdb_chainlock_unmark(struct tdb_context *tdb, TDB_DATA key);
 
 /* Debug functions. Not used in production. */
 void tdb_dump_all(struct tdb_context *tdb);
index f0eaa7f..1cc18f7 100755 (executable)
@@ -6,10 +6,19 @@
 #BASE_DIR=/usr/projects/samba/samba-4.0.0tp4/source/lib/tdb
 BASE_DIR=/usr/projects/samba/tdb
 
+rm -rf .pc
+
 FILES="error.c lock.c io.c transaction.c freelist.c \
        freelistcheck.c traverse.c dump.c tdb.c open.c"
 
-cp $BASE_DIR/common/tdb_private.h tdb.c
+(cd $BASE_DIR/common; svn info ) > .svninfo
+echo "/*" > tdb.c
+grep ^URL .svninfo >> tdb.c
+grep "^Last Changed Rev" .svninfo | sed -e 's/Last Changed //' >> tdb.c
+grep "^Last Changed Date" .svninfo >> tdb.c
+echo "*/" >> tdb.c
+
+cat $BASE_DIR/common/tdb_private.h >> tdb.c
 for i in $FILES; do
        if [ `tail -n 1 tdb.c | wc -c` -gt 1 ]; then
                printf "\n" >> tdb.c
@@ -21,3 +30,5 @@ done
 cp $BASE_DIR/include/tdb.h .
 cp $BASE_DIR/tools/tdbtool.c .
 
+quilt push -a
+
index f519ac6..d9d1d84 100644 (file)
@@ -1,8 +1,10 @@
-Index: tdb-sa/tdb.c
+Index: tdbsa/tdb.c
 ===================================================================
---- tdb-sa.orig/tdb.c  2007-04-04 12:16:26.000000000 -0400
-+++ tdb-sa/tdb.c       2007-04-04 12:16:53.000000000 -0400
-@@ -1,9 +1,9 @@
+--- tdbsa.orig/tdb.c
++++ tdbsa/tdb.c
+@@ -4,11 +4,11 @@ Rev: 23371
+ Last Changed Date: 2007-06-06 20:14:06 -0400 (Wed, 06 Jun 2007)
+ */
   /* 
 -   Unix SMB/CIFS implementation.
 +   trivial database library - standalone version
index 44a3705..15bf085 100644 (file)
@@ -1,8 +1,8 @@
 Index: tdb/tdb.h
 ===================================================================
---- tdb.orig/tdb.h     2007-04-04 20:39:26.000000000 -0400
-+++ tdb/tdb.h  2007-04-04 20:40:13.000000000 -0400
-@@ -76,6 +76,51 @@
+--- tdb.orig/tdb.h
++++ tdb/tdb.h
+@@ -76,6 +76,60 @@ typedef struct TDB_DATA {
  #endif
  #endif
  
@@ -49,7 +49,16 @@ Index: tdb/tdb.h
 +#define tdb_dump_all ext2fs_tdb_dump_all
 +#define tdb_printfreelist ext2fs_tdb_printfreelist
 +#define tdb_validate_freelist ext2fs_tdb_validate_freelist
-+
++#define tdb_chainlock_mark ext2fs_tdb_chainlock_mark
++#define tdb_chainlock_nonblock ext2fs_tdb_chainlock_nonblock
++#define tdb_chainlock_unmark ext2fs_tdb_chainlock_unmark
++#define tdb_enable_seqnum ext2fs_tdb_enable_seqnum
++#define tdb_increment_seqnum_nonblock ext2fs_tdb_increment_seqnum_nonblock
++#define tdb_lock_nonblock ext2fs_tdb_lock_nonblock
++#define tdb_lockall_mark ext2fs_tdb_lockall_mark
++#define tdb_lockall_nonblock ext2fs_tdb_lockall_nonblock
++#define tdb_lockall_read_nonblock ext2fs_tdb_lockall_read_nonblock
++#define tdb_lockall_unmark ext2fs_tdb_lockall_unmark
 +
  /* this is the context structure that is returned from a db open */
  typedef struct tdb_context TDB_CONTEXT;
index e552533..b1d0d57 100644 (file)
@@ -1,8 +1,8 @@
 Index: tdb/tdb.c
 ===================================================================
---- tdb.orig/tdb.c     2007-04-04 20:26:11.000000000 -0400
-+++ tdb/tdb.c  2007-04-04 20:39:58.000000000 -0400
-@@ -24,11 +24,78 @@
+--- tdb.orig/tdb.c
++++ tdb/tdb.c
+@@ -29,11 +29,82 @@ Last Changed Date: 2007-06-22 13:36:10 -
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
  
@@ -27,7 +27,9 @@ Index: tdb/tdb.c
 +#include <stddef.h>
 +#include <errno.h>
 +#include <string.h>
++#ifdef HAVE_SYS_SELECT_H
 +#include <sys/select.h>
++#endif
 +#include <sys/time.h>
 +#include <sys/types.h>
 +#include <time.h>
@@ -83,6 +85,8 @@ Index: tdb/tdb.c
 +#endif
 +#endif
 +
++typedef int bool;
++
  #include "tdb.h"
  
  #ifndef u32
index 7fb76ef..ab0fbef 100644 (file)
@@ -1,24 +1,13 @@
-Index: tdb/tdb.c
+Index: tdbsa/tdb.c
 ===================================================================
---- tdb.orig/tdb.c     2007-04-04 20:40:06.000000000 -0400
-+++ tdb/tdb.c  2007-04-04 20:40:08.000000000 -0400
-@@ -1423,8 +1423,8 @@
- /*
-   brlock during a transaction - ignore them
- */
--int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset, 
--                     int rw_type, int lck_type, int probe, size_t len)
-+static int transaction_brlock(struct tdb_context *tdb, tdb_off_t offset,
-+                            int rw_type, int lck_type, int probe, size_t len)
- {
-       return 0;
- }
-@@ -2118,7 +2118,7 @@
+--- tdbsa.orig/tdb.c
++++ tdbsa/tdb.c
+@@ -2254,7 +2254,7 @@ int tdb_transaction_recover(struct tdb_c
  /* file: freelist.c */
  
  /* read a freelist record and check for simple errors */
--int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
-+static int rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
+-int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
++static int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, struct list_struct *rec)
  {
        if (tdb->methods->tdb_read(tdb, off, rec, sizeof(*rec),DOCONV()) == -1)
                return -1;
index c1049df..cf8af61 100644 (file)
@@ -1,8 +1,8 @@
-Index: tdb/tdb.c
+Index: tdbsa/tdb.c
 ===================================================================
---- tdb.orig/tdb.c     2007-04-04 20:39:58.000000000 -0400
-+++ tdb/tdb.c  2007-04-04 20:40:06.000000000 -0400
-@@ -243,36 +243,36 @@
+--- tdbsa.orig/tdb.c
++++ tdbsa/tdb.c
+@@ -251,39 +251,39 @@ struct tdb_context {
  /*
    internal prototypes
  */
@@ -11,6 +11,8 @@ Index: tdb/tdb.c
 -int tdb_lock(struct tdb_context *tdb, int list, int ltype);
 -int tdb_unlock(struct tdb_context *tdb, int list, int ltype);
 -int tdb_brlock(struct tdb_context *tdb, tdb_off_t offset, int rw_type, int lck_type, int probe, size_t len);
+-int tdb_transaction_lock(struct tdb_context *tdb, int ltype);
+-int tdb_transaction_unlock(struct tdb_context *tdb);
 -int tdb_brlock_upgrade(struct tdb_context *tdb, tdb_off_t offset, size_t len);
 -int tdb_write_lock_record(struct tdb_context *tdb, tdb_off_t off);
 -int tdb_write_unlock_record(struct tdb_context *tdb, tdb_off_t off);
@@ -33,6 +35,8 @@ Index: tdb/tdb.c
 +static int tdb_lock(struct tdb_context *tdb, int list, int ltype);
 +static int tdb_unlock(struct tdb_context *tdb, int list, int ltype);
 +static int tdb_brlock(struct tdb_context *tdb, tdb_off_t offset, int rw_type, int lck_type, int probe, size_t len);
++static int tdb_transaction_lock(struct tdb_context *tdb, int ltype);
++static int tdb_transaction_unlock(struct tdb_context *tdb);
 +static int tdb_brlock_upgrade(struct tdb_context *tdb, tdb_off_t offset, size_t len);
 +static int tdb_write_lock_record(struct tdb_context *tdb, tdb_off_t off);
 +static int tdb_write_unlock_record(struct tdb_context *tdb, tdb_off_t off);
@@ -59,8 +63,10 @@ Index: tdb/tdb.c
                           struct list_struct *rec);
 -void tdb_io_init(struct tdb_context *tdb);
 -int tdb_expand(struct tdb_context *tdb, tdb_off_t size);
+-int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
 +static void tdb_io_init(struct tdb_context *tdb);
 +static int tdb_expand(struct tdb_context *tdb, tdb_off_t size);
++static int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
+                     struct list_struct *rec);
  
  
- /* file: error.c */
index 3743edf..c076c79 100644 (file)
@@ -1,7 +1,7 @@
-Index: tdb/tdbtool.c
+Index: tdbsa/tdbtool.c
 ===================================================================
---- tdb.orig/tdbtool.c 2007-04-04 20:39:28.000000000 -0400
-+++ tdb/tdbtool.c      2007-04-04 20:40:10.000000000 -0400
+--- tdbsa.orig/tdbtool.c
++++ tdbsa/tdbtool.c
 @@ -21,10 +21,21 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
index 9254eb6..cf2b5a6 100644 (file)
@@ -59,7 +59,9 @@
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
+#ifdef HAVE_SYS_UN_H
 #include <sys/un.h>
+#endif
 #ifdef HAVE_SYS_SOCKIO_H
 #include <sys/sockio.h>
 #endif
@@ -266,6 +268,7 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
        THREAD_LOCAL FILE               *state_f;
        THREAD_LOCAL uint16_t           clock_seq;
        struct timeval                  tv;
+       struct flock                    fl;
        unsigned long long              clock_reg;
        mode_t                          save_umask;
 
@@ -280,14 +283,20 @@ static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
                        state_fd = -1;
                }
        }
+       fl.l_type = F_WRLCK;
+       fl.l_whence = SEEK_SET;
+       fl.l_start = 0;
+       fl.l_len = 0;
+       fl.l_pid = 0;
        if (state_fd >= 0) {
                rewind(state_f);
-               while (lockf(state_fd, F_LOCK, 0) < 0) {
+               while (fcntl(state_fd, F_SETLKW, &fl) < 0) {
                        if ((errno == EAGAIN) || (errno == EINTR))
                                continue;
                        fclose(state_f);
                        close(state_fd);
                        state_fd = -1;
+                       break;
                }
        }
        if (state_fd >= 0) {
@@ -348,7 +357,8 @@ try_again:
                        clock_seq, last.tv_sec, last.tv_usec, adjustment);
                fflush(state_f);
                rewind(state_f);
-               lockf(state_fd, F_ULOCK, 0);
+               fl.l_type = F_UNLCK;
+               fcntl(state_fd, F_SETLK, &fl);
        }
 
        *clock_high = clock_reg >> 32;
@@ -385,7 +395,7 @@ static ssize_t read_all(int fd, char *buf, size_t count)
  */
 static int get_uuid_via_daemon(int op, uuid_t out, int *num)
 {
-#ifdef USE_UUIDD
+#if defined(USE_UUIDD) && defined(HAVE_SYS_UN_H)
        char op_buf[64];
        int op_len;
        int s;
index ebf4f88..bf04e65 100644 (file)
@@ -40,7 +40,7 @@ UUIDD_OBJS=   uuidd.o
 DUMPE2FS_OBJS= dumpe2fs.o
 BADBLOCKS_OBJS=        badblocks.o
 E2IMAGE_OBJS=  e2image.o
-FSCK_OBJS=     fsck.o base_device.o
+FSCK_OBJS=     fsck.o base_device.o ismounted.o
 BLKID_OBJS=    blkid.o
 FILEFRAG_OBJS= filefrag.o
 
@@ -51,7 +51,7 @@ SRCS= $(srcdir)/tune2fs.c $(srcdir)/mklost+found.c $(srcdir)/mke2fs.c \
                $(srcdir)/badblocks.c $(srcdir)/fsck.c $(srcdir)/util.c \
                $(srcdir)/uuidgen.c $(srcdir)/blkid.c $(srcdir)/logsave.c \
                $(srcdir)/filefrag.c $(srcdir)/base_device.c \
-               $(srcdir)/../e2fsck/profile.c
+               $(srcdir)/ismounted.c $(srcdir)/../e2fsck/profile.c
 
 LIBS= $(LIBEXT2FS) $(LIBCOM_ERR) 
 DEPLIBS= $(LIBEXT2FS) $(LIBCOM_ERR) 
@@ -173,6 +173,10 @@ filefrag: $(FILEFRAG_OBJS)
        @echo " LD $@"
        @$(CC) $(ALL_LDFLAGS) -o filefrag $(FILEFRAG_OBJS) 
 
+tst_ismounted: $(srcdir)/ismounted.c $(STATIC_LIBEXT2FS)
+       @echo " LD $@"
+       $(CC) -o tst_ismounted $(srcdir)/ismounted.c -DDEBUG $(ALL_CFLAGS) $(LIBCOM_ERR)
+
 tune2fs.8: $(DEP_SUBSTITUTE) $(srcdir)/tune2fs.8.in
        @echo " SUBST $@"
        @$(SUBSTITUTE_UPTIME) $(srcdir)/tune2fs.8.in tune2fs.8
@@ -368,7 +372,7 @@ clean:
                $(FMANPAGES) \
                base_device base_device.out mke2fs.static filefrag \
                e2initrd_helper partinfo prof_err.[ch] default_profile.c \
-               uuidd e2image \#* *.s *.o *.a *~ core 
+               uuidd e2image tst_ismounted \#* *.s *.o *.a *~ core
 
 mostlyclean: clean
 distclean: clean
@@ -444,5 +448,6 @@ blkid.o: $(srcdir)/blkid.c $(top_srcdir)/lib/blkid/blkid.h \
 logsave.o: $(srcdir)/logsave.c
 filefrag.o: $(srcdir)/filefrag.c
 base_device.o: $(srcdir)/base_device.c $(srcdir)/fsck.h
+ismounted.o: $(srcdir)/ismounted.c $(top_srcdir)/lib/et/com_err.h
 profile.o: $(srcdir)/../e2fsck/profile.c $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/../e2fsck/profile.h prof_err.h
index aa5fd05..50fd8ce 100644 (file)
@@ -8,7 +8,7 @@ fsck \- check and repair a Linux file system
 .SH SYNOPSIS
 .B fsck
 [
-.B \-sAVRTNP
+.B \-sAVRTMNP
 ]
 [
 .B \-C
@@ -233,6 +233,10 @@ a progress bar at a time.  GUI front-ends may specify a file descriptor
 .IR fd ,
 in which case the progress bar information will be sent to that file descriptor.
 .TP
+.B \-M
+Do not check mounted filesystems and return an exit code of 0
+for mounted filesystems.
+.TP
 .B \-N
 Don't execute, just show what would be done.
 .TP
index 5cf1a1c..24c095a 100644 (file)
@@ -102,7 +102,7 @@ int doall = 0;
 int noexecute = 0;
 int serialize = 0;
 int skip_root = 0;
-int like_mount = 0;
+int ignore_mounted = 0;
 int notitle = 0;
 int parallel_root = 0;
 int progress = 0;
@@ -973,7 +973,8 @@ static int check_all(NOARGS)
                                break;
                }
                if (fs) {
-                       if (!skip_root && !ignore(fs)) {
+                       if (!skip_root && !ignore(fs) &&
+                           !(ignore_mounted && is_mounted(fs->device))) {
                                fsck_device(fs, 1);
                                status |= wait_many(FLAG_WAIT_ALL);
                                if (status > EXIT_NONDESTRUCT)
@@ -1009,6 +1010,10 @@ static int check_all(NOARGS)
                                not_done_yet++;
                                continue;
                        }
+                       if (ignore_mounted && is_mounted(fs->device)) {
+                               fs->flags |= FLAG_DONE;
+                               continue;
+                       }
                        /*
                         * If a filesystem on a particular device has
                         * already been spawned, then we need to defer
@@ -1058,7 +1063,7 @@ static int check_all(NOARGS)
 
 static void usage(NOARGS)
 {
-       fputs(_("Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"), stderr);
+       fputs(_("Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"), stderr);
        exit(EXIT_USAGE);
 }
 
@@ -1181,7 +1186,7 @@ static void PRS(int argc, char *argv[])
                                notitle++;
                                break;
                        case 'M':
-                               like_mount++;
+                               ignore_mounted++;
                                break;
                        case 'P':
                                parallel_root++;
@@ -1303,6 +1308,8 @@ int main(int argc, char *argv[])
                        if (!fs)
                                continue;
                }
+               if (ignore_mounted && is_mounted(fs->device))
+                       continue;
                fsck_device(fs, interactive);
                if (serialize ||
                    (max_running && (num_running >= max_running))) {
diff --git a/misc/ismounted.c b/misc/ismounted.c
new file mode 100644 (file)
index 0000000..72f4cba
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ * ismounted.c --- Check to see if the filesystem was mounted
+ *
+ * Copyright (C) 1995,1996,1997,1998,1999,2000,2008 Theodore Ts'o.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Public
+ * License.
+ * %End-Header%
+ */
+
+#include <stdio.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <fcntl.h>
+#ifdef HAVE_LINUX_FD_H
+#include <linux/fd.h>
+#endif
+#ifdef HAVE_MNTENT_H
+#include <mntent.h>
+#endif
+#include <string.h>
+#include <sys/stat.h>
+
+/*
+ * ext2fs_check_if_mounted flags
+ */
+#define MF_MOUNTED             1
+
+#include "et/com_err.h"
+
+static char *skip_over_blank(char *cp)
+{
+       while (*cp && isspace(*cp))
+               cp++;
+       return cp;
+}
+
+static char *skip_over_word(char *cp)
+{
+       while (*cp && !isspace(*cp))
+               cp++;
+       return cp;
+}
+
+static char *parse_word(char **buf)
+{
+       char *word, *next;
+
+       word = *buf;
+       if (*word == 0)
+               return 0;
+
+       word = skip_over_blank(word);
+       next = skip_over_word(word);
+       if (*next)
+               *next++ = 0;
+       *buf = next;
+       return word;
+}
+
+/*
+ * Helper function which checks a file in /etc/mtab format to see if a
+ * filesystem is mounted.  Returns an error if the file doesn't exist
+ * or can't be opened.
+ */
+static errcode_t check_mntent_file(const char *mtab_file, const char *file,
+                                  int *mount_flags)
+{
+       struct stat     st_buf;
+       errcode_t       retval = 0;
+       dev_t           file_dev=0, file_rdev=0;
+       ino_t           file_ino=0;
+       FILE            *f;
+       char            buf[1024], *device = 0, *mnt_dir = 0, *cp;
+       int             fd;
+
+       *mount_flags = 0;
+       if ((f = fopen(mtab_file, "r")) == NULL)
+               return errno;
+
+       if ((f = setmntent (mtab_file, "r")) == NULL)
+               return errno;
+       if (stat(file, &st_buf) == 0) {
+               if (S_ISBLK(st_buf.st_mode)) {
+#ifndef __GNU__ /* The GNU hurd is broken with respect to stat devices */
+                       file_rdev = st_buf.st_rdev;
+#endif /* __GNU__ */
+               } else {
+                       file_dev = st_buf.st_dev;
+                       file_ino = st_buf.st_ino;
+               }
+       }
+       while (1) {
+               if (!fgets(buf, sizeof(buf), f)) {
+                       device = mnt_dir = 0;
+                       break;
+               }
+               buf[sizeof(buf)-1] = 0;
+
+               cp = buf;
+               device = parse_word(&cp);
+               if (!device || *device == '#')
+                       return 0;       /* Ignore blank lines and comments */
+               mnt_dir = parse_word(&cp);
+
+               if (device[0] != '/')
+                       continue;
+
+               if (strcmp(file, device) == 0)
+                       break;
+               if (stat(device, &st_buf) == 0) {
+                       if (S_ISBLK(st_buf.st_mode)) {
+#ifndef __GNU__
+                               if (file_rdev && (file_rdev == st_buf.st_rdev))
+                                       break;
+#endif /* __GNU__ */
+                       } else {
+                               if (file_dev && ((file_dev == st_buf.st_dev) &&
+                                                (file_ino == st_buf.st_ino)))
+                                       break;
+                       }
+               }
+       }
+
+       if (mnt_dir == 0) {
+#ifndef __GNU__ /* The GNU hurd is broken with respect to stat devices */
+               /*
+                * Do an extra check to see if this is the root device.  We
+                * can't trust /etc/mtab, and /proc/mounts will only list
+                * /dev/root for the root filesystem.  Argh.  Instead we
+                * check if the given device has the same major/minor number
+                * as the device that the root directory is on.
+                */
+               if (file_rdev && (stat("/", &st_buf) == 0) &&
+                   (st_buf.st_dev == file_rdev))
+                       *mount_flags = MF_MOUNTED;
+#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_dir, &st_buf) < 0) {
+               retval = errno;
+               if (retval == ENOENT) {
+#ifdef DEBUG
+                       printf("Bogus entry in %s!  (%s does not exist)\n",
+                              mtab_file, 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_dir);
+#endif /* DEBUG */
+               goto errout;
+       }
+#endif /* __GNU__ */
+       *mount_flags = MF_MOUNTED;
+
+       retval = 0;
+errout:
+       endmntent (f);
+       return retval;
+}
+
+int is_mounted(const char *file)
+{
+       errcode_t       retval;
+       int             mount_flags = 0;
+
+#ifdef __linux__
+       retval = check_mntent_file("/proc/mounts", file, &mount_flags);
+       if (retval)
+               return 0;
+       if (mount_flags)
+               return 1;
+#endif /* __linux__ */
+       retval = check_mntent_file("/etc/mtab", file, &mount_flags);
+       if (retval)
+               return 0;
+       return (mount_flags);
+}
+
+#ifdef DEBUG
+int main(int argc, char **argv)
+{
+       if (argc < 2) {
+               fprintf(stderr, "Usage: %s device\n", argv[0]);
+               exit(1);
+       }
+
+       if (is_mounted(argv[1]))
+               printf("\t%s is mounted.\n", argv[1]);
+       exit(0);
+}
+#endif /* DEBUG */
index 2fb1057..1b2dedd 100644 (file)
@@ -24,6 +24,7 @@
 #include <sys/un.h>
 #include <fcntl.h>
 #include <signal.h>
+#include <string.h>
 #ifdef HAVE_GETOPT_H
 #include <getopt.h>
 #else
@@ -107,17 +108,138 @@ static void terminate_intr(int signo CODE_ATTR((unused)))
        exit(0);
 }
 
-static void server_loop(const char *socket_path, int debug,
-                       int fd_pidfile, int timeout, int quiet)
+static int call_daemon(const char *socket_path, int op, char *buf,
+                      int buflen, int *num, const char **err_context)
+{
+       char op_buf[8];
+       int op_len;
+       int s;
+       ssize_t ret;
+       int32_t reply_len = 0;
+       struct sockaddr_un srv_addr;
+
+       if (((op == 4) || (op == 5)) && !num) {
+               if (err_context)
+                       *err_context = _("bad arguments");
+               errno = EINVAL;
+               return -1;
+       }
+
+       if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+               if (err_context)
+                       *err_context = _("socket");
+               return -1;
+       }
+
+       srv_addr.sun_family = AF_UNIX;
+       strcpy(srv_addr.sun_path, socket_path);
+
+       if (connect(s, (const struct sockaddr *) &srv_addr,
+                   sizeof(struct sockaddr_un)) < 0) {
+               if (err_context)
+                       *err_context = _("connect");
+               close(s);
+               return -1;
+       }
+
+       if (op == 5) {
+               if ((*num)*16 > buflen-4)
+                       *num = (buflen-4) / 16;
+       }
+       op_buf[0] = op;
+       op_len = 1;
+       if ((op == 4) || (op == 5)) {
+               memcpy(op_buf+1, num, sizeof(int));
+               op_len += sizeof(int);
+       }
+
+       ret = write(s, op_buf, op_len);
+       if (ret < op_len) {
+               if (err_context)
+                       *err_context = _("write");
+               close(s);
+               return -1;
+       }
+
+       ret = read_all(s, (char *) &reply_len, sizeof(reply_len));
+       if (ret < 0) {
+               if (err_context)
+                       *err_context = _("read count");
+               close(s);
+               return -1;
+       }
+       if (reply_len < 0 || reply_len > buflen) {
+               if (err_context)
+                       *err_context = _("bad response length");
+               close(s);
+               return -1;
+       }
+       ret = read_all(s, (char *) buf, reply_len);
+
+       if ((ret > 0) && (op == 4)) {
+               if (reply_len >= (int) (16+sizeof(int)))
+                       memcpy(buf+16, num, sizeof(int));
+               else
+                       *num = -1;
+       }
+       if ((ret > 0) && (op == 5)) {
+               if (*num >= (int) sizeof(int))
+                       memcpy(buf, num, sizeof(int));
+               else
+                       *num = -1;
+       }
+
+       close(s);
+
+       return ret;
+}
+
+static void server_loop(const char *socket_path, const char *pidfile_path,
+                       int debug, int timeout, int quiet)
 {
        struct sockaddr_un      my_addr, from_addr;
        unsigned char           reply_buf[1024], *cp;
+       struct flock            fl;
        socklen_t               fromlen;
        int32_t                 reply_len = 0;
        uuid_t                  uu;
        mode_t                  save_umask;
        char                    op, str[37];
        int                     i, s, ns, len, num;
+       int                     fd_pidfile, ret;
+
+       fd_pidfile = open(pidfile_path, O_CREAT | O_RDWR, 0664);
+       if (fd_pidfile < 0) {
+               if (!quiet)
+                       fprintf(stderr, "Failed to open/create %s: %s\n",
+                               pidfile_path, strerror(errno));
+               exit(1);
+       }
+       cleanup_pidfile = pidfile_path;
+       cleanup_socket = 0;
+       signal(SIGALRM, terminate_intr);
+       alarm(30);
+       fl.l_type = F_WRLCK;
+       fl.l_whence = SEEK_SET;
+       fl.l_start = 0;
+       fl.l_len = 0;
+       fl.l_pid = 0;
+       while (fcntl(fd_pidfile, F_SETLKW, &fl) < 0) {
+               if ((errno == EAGAIN) || (errno == EINTR))
+                       continue;
+               if (!quiet)
+                       fprintf(stderr, "Failed to lock %s: %s\n",
+                               pidfile_path, strerror(errno));
+               exit(1);
+       }
+       ret = call_daemon(socket_path, 0, reply_buf, sizeof(reply_buf), 0, 0);
+       if (ret > 0) {
+               if (!quiet)
+                       printf(_("uuidd daemon already running at pid %s\n"),
+                              reply_buf);
+               exit(1);
+       }
+       alarm(0);
 
        if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
                if (!quiet)
@@ -151,8 +273,6 @@ static void server_loop(const char *socket_path, int debug,
                exit(1);
        }
 
-       if (fd_pidfile > 1)
-               close(fd_pidfile); /* Unlock the pid file */
        cleanup_socket = socket_path;
        if (!debug)
                create_daemon();
@@ -162,6 +282,12 @@ static void server_loop(const char *socket_path, int debug,
        signal(SIGALRM, terminate_intr);
        signal(SIGPIPE, SIG_IGN);
 
+       sprintf(reply_buf, "%d\n", getpid());
+       ftruncate(fd_pidfile, 0);
+       write(fd_pidfile, reply_buf, strlen(reply_buf));
+       if (fd_pidfile > 1)
+               close(fd_pidfile); /* Unlock the pid file */
+
        while (1) {
                fromlen = sizeof(from_addr);
                if (timeout > 0)
@@ -264,130 +390,6 @@ static void server_loop(const char *socket_path, int debug,
        }
 }
 
-static int call_daemon(const char *socket_path, int op, char *buf,
-                      int buflen, int *num, const char **err_context)
-{
-       char op_buf[8];
-       int op_len;
-       int s;
-       ssize_t ret;
-       int32_t reply_len = 0;
-       struct sockaddr_un srv_addr;
-
-       if (((op == 4) || (op == 5)) && !num) {
-               if (err_context)
-                       *err_context = _("bad arguments");
-               errno = EINVAL;
-               return -1;
-       }
-
-       if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
-               if (err_context)
-                       *err_context = _("socket");
-               return -1;
-       }
-
-       srv_addr.sun_family = AF_UNIX;
-       strcpy(srv_addr.sun_path, socket_path);
-
-       if (connect(s, (const struct sockaddr *) &srv_addr,
-                   sizeof(struct sockaddr_un)) < 0) {
-               if (err_context)
-                       *err_context = _("connect");
-               close(s);
-               return -1;
-       }
-
-       if (op == 5) {
-               if ((*num)*16 > buflen-4)
-                       *num = (buflen-4) / 16;
-       }
-       op_buf[0] = op;
-       op_len = 1;
-       if ((op == 4) || (op == 5)) {
-               memcpy(op_buf+1, num, sizeof(int));
-               op_len += sizeof(int);
-       }
-
-       ret = write(s, op_buf, op_len);
-       if (ret < op_len) {
-               if (err_context)
-                       *err_context = _("write");
-               close(s);
-               return -1;
-       }
-
-       ret = read_all(s, (char *) &reply_len, sizeof(reply_len));
-       if (ret < 0) {
-               if (err_context)
-                       *err_context = _("read count");
-               close(s);
-               return -1;
-       }
-       if (reply_len < 0 || reply_len > buflen) {
-               if (err_context)
-                       *err_context = _("bad response length");
-               close(s);
-               return -1;
-       }
-       ret = read_all(s, (char *) buf, reply_len);
-
-       if ((ret > 0) && (op == 4)) {
-               if (reply_len >= (int) (16+sizeof(int)))
-                       memcpy(buf+16, num, sizeof(int));
-               else
-                       *num = -1;
-       }
-       if ((ret > 0) && (op == 5)) {
-               if (*num >= (int) sizeof(int))
-                       memcpy(buf, num, sizeof(int));
-               else
-                       *num = -1;
-       }
-
-       close(s);
-
-       return ret;
-}
-
-static int create_pidfile(const char *socket_path, const char *pidfile_path,
-                         int quiet)
-{
-       int     fd, ret;
-       char    buf[20];
-
-       fd = open(pidfile_path, O_CREAT | O_RDWR, 0664);
-       if (fd < 0) {
-               if (!quiet)
-                       fprintf(stderr, "Failed to open/create %s: %s\n",
-                               pidfile_path, strerror(errno));
-               exit(1);
-       }
-       cleanup_pidfile = pidfile_path;
-       cleanup_socket = 0;
-       signal(SIGALRM, terminate_intr);
-       alarm(30);
-       if (lockf(fd, F_LOCK, 0) < 0) {
-               if (!quiet)
-                       fprintf(stderr, "Failed to lock %s: %s\n", 
-                               pidfile_path, strerror(errno));
-               exit(1);
-       }
-       ret = call_daemon(socket_path, 0, buf, sizeof(buf), 0, 0);
-       if (ret > 0) {
-               if (!quiet)
-                       printf(_("uuidd daemon already running at pid %s\n"),
-                              buf);
-               exit(1);
-       }
-       alarm(0);
-
-       sprintf(buf, "%d\n", getpid());
-       ftruncate(fd, 0);
-       write(fd, buf, strlen(buf));
-       return(fd);
-}
-
 int main(int argc, char **argv)
 {
        const char      *socket_path = UUIDD_SOCKET_PATH;
@@ -398,7 +400,7 @@ int main(int argc, char **argv)
        uuid_t          uu;
        uid_t           uid;
        gid_t           gid;
-       int             i, c, ret, fd_pidfile = -1;
+       int             i, c, ret;
        int             debug = 0, do_type = 0, do_kill = 0, num = 0;
        int             timeout = 0, quiet = 0, drop_privs = 0;
 
@@ -535,8 +537,6 @@ int main(int argc, char **argv)
                exit(0);
        }
 
-       fd_pidfile = create_pidfile(socket_path, pidfile_path, quiet);
-
-       server_loop(socket_path, debug, fd_pidfile, timeout, quiet);
+       server_loop(socket_path, pidfile_path, debug, timeout, quiet);
        return 0;
 }
index 50fe2ba..fe297d4 100644 (file)
Binary files a/po/cs.gmo and b/po/cs.gmo differ
index 50d65f0..21e0835 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.40.4\n"
+"Project-Id-Version: e2fsprogs 1.40.6\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
 "POT-Creation-Date: 2008-02-09 23:16-0500\n"
-"PO-Revision-Date: 2008-01-04 18:58+0100\n"
+"PO-Revision-Date: 2008-02-12 13:44+0100\n"
 "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -112,8 +112,7 @@ msgstr "při aktualizaci inode špatných bloků"
 #: e2fsck/badblocks.c:129
 #, c-format
 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"
+msgstr "Varování: v iuzlu špatných bloků nalezen nepovolený blok %u. Vymazán.\n"
 
 #: e2fsck/ehandler.c:53
 #, c-format
@@ -880,13 +879,11 @@ msgstr "Externí žurnál nepodporuje tento systém souborů\n"
 #: e2fsck/problem.c:212
 msgid ""
 "Ext3 @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 ""
 "Superblok žurnálu ext3 má neznámý typ %N (nepodporováno).\n"
-"Je pravděpodobné, že vaše kopie e2fsck je stará a/nebo nepodporuje tento "
-"formát žurnálu.\n"
+"Je pravděpodobné, že vaše kopie e2fsck je stará a/nebo nepodporuje tento formát žurnálu.\n"
 "Je také možné, že superblok žurnálu je poškozen.\n"
 
 #. @-expanded: Ext3 journal superblock is corrupt.\n
@@ -923,9 +920,7 @@ msgstr "Přesto spustit žurnál"
 #. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
 #: e2fsck/problem.c:250
 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"
+msgstr "Příznak obnovení není nastaven v záložním superbloku, takže přesto spouštím žurnál.\n"
 
 #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
 #: e2fsck/problem.c:255
@@ -957,23 +952,17 @@ msgstr "Neplatná inode %i v seznamu osiřelých inode.\n"
 #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.  
 #: e2fsck/problem.c:280 e2fsck/problem.c:613
 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. "
+msgstr "Systém souborů má příznak(y) vlastností nastaveny, ačkoliv se jedná o revizi 0. "
 
 #. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n
 #: e2fsck/problem.c:285
 msgid "Ext3 @j @S has an unknown read-only feature flag set.\n"
-msgstr ""
-"Superblok žurnálu ext3 má nastaven příznak neznámé vlastnosti jen pro "
-"čtení.\n"
+msgstr "Superblok žurnálu ext3 má nastaven příznak neznámé vlastnosti jen pro čtení.\n"
 
 #. @-expanded: Ext3 journal superblock has an unknown incompatible feature flag set.\n
 #: e2fsck/problem.c:290
 msgid "Ext3 @j @S has an unknown incompatible feature flag set.\n"
-msgstr ""
-"Superblok žurnálu ext3 má nastaven příznak neznámé nekompatibilní "
-"vlastnosti.\n"
+msgstr "Superblok žurnálu ext3 má nastaven příznak neznámé nekompatibilní vlastnosti.\n"
 
 #. @-expanded: journal version not supported by this e2fsck.\n
 #: e2fsck/problem.c:295
@@ -1112,20 +1101,17 @@ msgstr "Inode %i je adresář nulové délky. "
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
 #: e2fsck/problem.c:392
 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"
+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:397
 msgid "@g %g's @i @B at %b @C.\n"
-msgstr ""
-"Bitmapa inode skupiny %g v %b koliduje s jiným blokem systému souborů.\n"
+msgstr "Bitmapa inode 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:402
 msgid "@g %g's @i table at %b @C.\n"
-msgstr ""
-"Tabulka inode skupiny %g v %b koliduje s jiným blokem systému souborů.\n"
+msgstr "Tabulka inode 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:407
@@ -1235,8 +1221,7 @@ 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:490
 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"
+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:496
@@ -1246,14 +1231,12 @@ 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:501
 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"
+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:507
 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"
+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:513
@@ -1330,9 +1313,7 @@ msgstr "Chyba při ukládání informace o počtu inode (inode=%i, počet=%N): %
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
 #: e2fsck/problem.c:578
 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 (inode=%i, blok=%b, čís=%N): %"
-"m\n"
+msgstr "Chyba při ukládání informace o bloku adresáře (inode=%i, blok=%b, čís=%N): %m\n"
 
 #. @-expanded: Error reading inode %i: %m\n
 #: e2fsck/problem.c:584
@@ -1354,17 +1335,14 @@ msgid ""
 "Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
 "or append-only flag set.  "
 msgstr ""
-"Speciální (zařízení/socket/fifo/symbolický odkaz) soubor (inode %i) má "
-"nastaven\n"
+"Speciální (zařízení/socket/fifo/symbolický odkaz) soubor (inode %i) má nastaven\n"
 "příznak immutable nebo append-only. "
 
 #. @-expanded: inode %i has compression flag set on filesystem without compression support.  
 #: e2fsck/problem.c:603
 #, c-format
 msgid "@i %i has @cion flag set on @f without @cion support.  "
-msgstr ""
-"Inode %i má nastaven příznak komprimace na systému souborů bez podpory "
-"komprimace. "
+msgstr "Inode %i má nastaven příznak komprimace na systému souborů bez podpory komprimace. "
 
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
 #: e2fsck/problem.c:608
@@ -1391,8 +1369,7 @@ 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:634
 msgid "@is that were part of a corrupted orphan linked list found.  "
-msgstr ""
-"Nalezeny inode, které byly součástí poškozeného spojového seznamu osiřelých. "
+msgstr "Nalezeny inode, které byly součástí poškozeného spojového seznamu osiřelých. "
 
 #. @-expanded: error allocating refcount structure (%N): %m\n
 #: e2fsck/problem.c:639
@@ -1474,8 +1451,7 @@ msgstr "Blok #%B (%b) působí, že symbolický odkaz je příliš velký. "
 #: e2fsck/problem.c:713
 #, c-format
 msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
-msgstr ""
-"Inode %i má nastaven příznak INDEX_FL na systému souborů bez podpory htree.\n"
+msgstr "Inode %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:718
@@ -1498,15 +1474,12 @@ msgstr "Inode HTREE adresáře %i má nepodporovanou verzi hashe (%N)\n"
 #: e2fsck/problem.c:733
 #, c-format
 msgid "@h %i uses an incompatible htree root node flag.\n"
-msgstr ""
-"Inode HTREE adresáře %i používá nekompatibilní příznak kořenového uzlu "
-"htree.\n"
+msgstr "Inode 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:738
 msgid "@h %i has a tree depth (%N) which is too big\n"
-msgstr ""
-"Inode HTREE adresáře %i má hloubku stromu (%N), která je příliš velká\n"
+msgstr "Inode 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.  
@@ -1537,27 +1510,22 @@ msgstr "Rozšířený atribut v iuzlu %i má délku jména (%N), která není p
 #. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
 #: e2fsck/problem.c:764
 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"
+msgstr "Rozšířený atribut v iuzlu %i má velikost hodnoty (%N), která není platná\n"
 
 #. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
 #: e2fsck/problem.c:769
 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"
+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:774
 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"
+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 hash (%N) which is invalid (must be 0)\n
 #: e2fsck/problem.c:779
 msgid "@a in @i %i has a hash (%N) which is @n (must be 0)\n"
-msgstr ""
-"Rozšířený atribut v iuzlu %i má hash (%N), který není platný (musí být 0)\n"
+msgstr "Rozšířený atribut v iuzlu %i má hash (%N), který není platný (musí být 0)\n"
 
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
 #: e2fsck/problem.c:784
@@ -1604,8 +1572,7 @@ msgstr "Chyba při iteraci přes bloky v inode %i (%s): %m\n"
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
 #: e2fsck/problem.c:827 e2fsck/problem.c:1143
 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"
+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:833
@@ -1691,8 +1658,7 @@ 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:909
 msgid "@E points to @i (%Di) located in a bad @b.\n"
-msgstr ""
-"Položka „%Dn“ v %p (%i) ukazuje na inode (%Di) umístěnou ve špatném bloku.\n"
+msgstr "Položka „%Dn“ v %p (%i) ukazuje na inode (%Di) umístěnou ve špatném bloku.\n"
 
 #. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
 #: e2fsck/problem.c:914
@@ -1724,8 +1690,7 @@ msgstr "Chybí „..“ v inode adresáře %i.\n"
 #. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
 #: e2fsck/problem.c:939
 msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
-msgstr ""
-"První položka „%Dn“ (inode=%Di) v iuzlu adresáře %i (%p) by měla být „.“\n"
+msgstr "První položka „%Dn“ (inode=%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:944
@@ -1902,9 +1867,7 @@ 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:1109
 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"
+msgstr "Systém souborů obsahuje velké soubory, ale v superbloku nemá příznak LARGE_FILE.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
 #: e2fsck/problem.c:1114
@@ -1955,8 +1918,7 @@ msgstr "Problém v iuzlu HTREE adresáře %d: uzel (%B) má špatný počet (%N
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
 #: e2fsck/problem.c:1163
 msgid "@p @h %d: node (%B) has an unordered hash table\n"
-msgstr ""
-"Problém v inode HTREE adresáře %d: uzel (%B) má nesetříděnou hash tabulku\n"
+msgstr "Problém v inode HTREE adresáře %d: uzel (%B) má nesetříděnou hash tabulku\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n
 #: e2fsck/problem.c:1168
@@ -2067,8 +2029,7 @@ msgstr "ext2fs_new_inode: %m při pokusu vytvořit adresář /lost+found\n"
 #: e2fsck/problem.c:1255
 #, 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"
+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:1260
@@ -2237,12 +2198,8 @@ 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:1458
-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"
+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:1464
 msgid "Internal error: fudging end of bitmap (%N)\n"
@@ -2370,8 +2327,7 @@ msgid ""
 " -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"
@@ -2379,10 +2335,8 @@ msgstr ""
 " -p                   Automatická oprava (žádné otázky)\n"
 " -n                   Neprovádět žádné změny systému souborů\n"
 " -y                   Předpokládat „ano“ u všech otázek\n"
-" -c                   Hledat špatné bloky a přidat je do seznamu špatných "
-"bloků\n"
-" -f                   Vynutit kontrolu, i když je systém souborů označen "
-"čistý\n"
+" -c                   Hledat špatné bloky a přidat je do seznamu špatných bloků\n"
+" -f                   Vynutit kontrolu, i když je systém souborů označen čistý\n"
 
 #: e2fsck/unix.c:86
 #, c-format
@@ -2518,7 +2472,7 @@ msgstr "Neplatná verze EA.\n"
 #: e2fsck/unix.c:552
 #, c-format
 msgid "Unknown extended option: %s\n"
-msgstr "Neznamý rozšířený přepínač: %s\n"
+msgstr "Neznámý rozšířený přepínač: %s\n"
 
 #: e2fsck/unix.c:572
 #, c-format
@@ -2669,9 +2623,7 @@ msgstr "při kontrole žurnálu ext3 pro %s"
 
 #: e2fsck/unix.c:1110
 #, c-format
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
+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"
@@ -2928,8 +2880,7 @@ msgstr "hotovo                                \n"
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
 " device [last_block [start_block]]\n"
 msgstr ""
 "Použití: %s [-b velikost_bloku] [-i vstupní_soubor] [-o výstupní_soubor]\n"
@@ -3444,9 +3395,7 @@ msgstr "Nemohu alokovat paměť pro typy systému souborů\n"
 
 #: misc/fsck.c:872
 #, 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: přeskakuji chybný řádek v /etc/fstab: připojení typu bind s nenulovým\n"
 "pořadím průchodu skrze fsck\n"
@@ -3466,11 +3415,8 @@ msgid "--waiting-- (pass %d)\n"
 msgstr "--čekám-- (průchod %d)\n"
 
 #: misc/fsck.c:1061
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"Použití: fsck [-ANPRTV] [-C [fd]] [-t typss] [přepínače-ss] "
-"[systémsouborů…]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Použití: fsck [-ANPRTV] [-C [fd]] [-t typss] [přepínače-ss] [systémsouborů…]\n"
 
 #: misc/fsck.c:1103
 #, c-format
@@ -3507,14 +3453,12 @@ msgid ""
 "\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]] [-qvSV]\n"
 "\tdevice [blocks-count]\n"
 msgstr ""
-"Použití: %s [-c|-t|-l názevsouboru] [-b velikost-bloku] [-f velkost-"
-"fragmentu]\n"
+"Použití: %s [-c|-t|-l názevsouboru] [-b velikost-bloku] [-f velkost-fragmentu]\n"
 "\t[-i bajtů-na-iuzel] [-I velikost-iuzlu] [-j] [-J přepínače-žurnálu]\n"
 "\t[-N počet-iuzlů] [-m procenta-rezervovaných-bloků] [-o tvořící-os]\n"
-"\t[-g bloků-ve-skupině] [-L jmenovka-svazku] [-M adresář-posledního-"
-"připojení]\n"
-"\t[-O vlastnost[,…]] [-r revize-ss] [-E rozšířené-přepínače[,…]] [-qvSV]\n"
-"\tzařízení [počet-bloků]\n"
+"\t[-g bloků-ve-skupině] [-L jmenovka-svazku]\n"
+"\t[-M adresář-posledního-připojení] [-O vlastnost[,…]] [-r revize-ss]\n"
+"\t[-E rozšířené-přepínače[,…]] [-qvSV] zařízení [počet-bloků]\n"
 
 #: misc/mke2fs.c:197
 #, c-format
@@ -3676,7 +3620,7 @@ msgstr "%u inode, %u bloků\n"
 #: misc/mke2fs.c:689
 #, c-format
 msgid "%u blocks (%2.2f%%) reserved for the super user\n"
-msgstr "%u bloků (%2.2f%%) rezervováno pro superuživatele\n"
+msgstr "%u bloků (%2.2f%%) rezervováno pro superuživatele\n"
 
 #: misc/mke2fs.c:692
 #, c-format
@@ -3706,7 +3650,7 @@ msgstr "%u bloků ve skupině, %u fragmentů ve skupině\n"
 #: misc/mke2fs.c:704
 #, c-format
 msgid "%u inodes per group\n"
-msgstr "%u inode ve skupině\n"
+msgstr "%u iuzlů ve skupině\n"
 
 #: misc/mke2fs.c:711
 #, c-format
@@ -3739,7 +3683,7 @@ 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:858
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -3761,7 +3705,7 @@ msgstr ""
 "Platné přepínače jsou:\n"
 "\tstride=<délka kroku (stride) v blocích>\n"
 "\tresize=<maximální velikost změny velikosti v blocích>\n"
-"\n"
+"\ttest_fs\n"
 
 #: misc/mke2fs.c:888
 #, c-format
@@ -3842,8 +3786,7 @@ msgstr "při pokusu otevřít zařízení žurnálu %s\n"
 #: misc/mke2fs.c:1197
 #, 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"
+msgstr "Velikost bloku zařízení žurnálu (%d) menší než minimální velikost bloku %d\n"
 
 #: misc/mke2fs.c:1211
 #, c-format
@@ -3852,11 +3795,8 @@ msgstr "%d-bajtové bloky příliš velké pro systém (max %d)"
 
 #: misc/mke2fs.c:1215
 #, 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"
+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:1233
 msgid "filesystem"
@@ -4049,7 +3989,7 @@ msgid "Please run e2fsck on the filesystem.\n"
 msgstr "Spusťte prosím na tomto systému souborů e2fsck.\n"
 
 #: misc/tune2fs.c:96
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
@@ -4065,7 +4005,7 @@ msgstr ""
 "\t[-o [^]přepínače_připojení[,…]] [-r počet_rezervovaných_bloků]\n"
 "\t[-u uživatel] [-C počet_připojení] [-L jmenovka_svazku]\n"
 "\t[-M poslední_adresář_připojení] [-O [^]vlastnost[,…]]\n"
-"\t[-T čas_poslední_kontroly] [-U UUID] zařízení\n"
+"\t[-E rozšířený-přepínač[,…]] [-T čas_poslední_kontroly] [-U UUID] zařízení\n"
 
 #: misc/tune2fs.c:153
 msgid "while trying to open external journal"
@@ -4209,7 +4149,7 @@ msgid "bad uid/user name - %s"
 msgstr "špatné uid/jméno uživatele - %s"
 
 #: misc/tune2fs.c:804
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -4227,15 +4167,14 @@ msgstr ""
 "Rozšířené přepínače jsou odděleny čárkami a mohou mít argument, který je\n"
 "\toddělen znaménkem rovná se („=“).\n"
 "\n"
-"Platné přepínače jsou:\n"
-"\tstride=<délka kroku (stride) v blocích>\n"
-"\tresize=<maximální velikost změny velikosti v blocích>\n"
-"\n"
+"Platné rozšířené přepínače jsou:\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
 
 #: misc/tune2fs.c:862
-#, fuzzy, c-format
+#, c-format
 msgid "Filesystem %s has unsupported features enabled.\n"
-msgstr "Vlastnosti systému souborů nejsou v revizi 0 podporovány\n"
+msgstr "Systém souborů %s má zapnuté nepodporované vlastnosti.\n"
 
 #: misc/tune2fs.c:886
 #, c-format
@@ -4572,8 +4511,7 @@ msgstr "bloky meta-dat"
 #: resize/resize2fs.c:1534
 #, c-format
 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"
+msgstr "Toto by se nikdy nemělo stát: iuzly pro změnu velikosti jsou poškozeny!\n"
 
 #~ msgid "Clone duplicate/bad blocks"
 #~ msgstr "Klonovat duplikátní/špatné bloky"
@@ -4603,8 +4541,7 @@ msgstr ""
 #~ msgstr "Duplikovaný/špatný blok(y) v inode %i:"
 
 #~ msgid "Forcibly clearing HTREE flag on @i %d (%q).  (Beta test code)\n"
-#~ msgstr ""
-#~ "Vynuceně mažu příznak HTREE v inode %d (%q). (Kód v beta testování)\n"
+#~ msgstr "Vynuceně mažu příznak HTREE v inode %d (%q). (Kód v beta testování)\n"
 
 #~ msgid ""
 #~ "\n"
@@ -4680,9 +4617,8 @@ msgstr ""
 #~ msgid "Usage:  findsuper device [skipbytes [startkb]]\n"
 #~ msgstr "Použití:  findsuper zařízení [přeskakovatbajtů [startkb]]\n"
 
-#, fuzzy
 #~ msgid "skipbytes should be a number, not %s\n"
-#~ msgstr "startkb by mělo být číslo, ne %s\n"
+#~ msgstr "přeskakovatbajtů by mělo být číslo, ne %s\n"
 
 #~ msgid "skipbytes must be a multiple of the sector size\n"
 #~ msgstr "přeskakovatbajtů musí být násobek velikosti sektoru\n"
index 2d9e1d2..e84f5e5 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index e3fd408..efa7f5a 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,6 +1,7 @@
-# Translation of e2fsprogs-1.40.3 to Dutch.
-# Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007.
+# Dutch translations for e2fsprogs.
+# Copyright (C) 2008 Theodore Tso (msgids)
+# This file is distributed under the same license as the e2fsprogs package.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2008.
 #
 #. 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,
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs-1.40.3\n"
+"Project-Id-Version: e2fsprogs-1.40.6\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
 "POT-Creation-Date: 2008-02-09 23:16-0500\n"
-"PO-Revision-Date: 2007-12-11 16:54+0100\n"
+"PO-Revision-Date: 2008-02-13 12:15+0100\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
@@ -112,8 +113,7 @@ msgstr "tijdens bijwerken van de inode van een slecht blok"
 #: e2fsck/badblocks.c:129
 #, c-format
 msgid "Warning: illegal block %u found in bad block inode.  Cleared.\n"
-msgstr ""
-"Waarschuwing: ongeldig blok %u gevonden in inode van slecht blok.  Gewist.\n"
+msgstr "Waarschuwing: ongeldig blok %u gevonden in inode van slecht blok.  Gewist.\n"
 
 #: e2fsck/ehandler.c:53
 #, c-format
@@ -179,8 +179,7 @@ msgstr "Gebruik:  %s schijfnaam\n"
 #: e2fsck/flushb.c:63
 #, c-format
 msgid "BLKFLSBUF ioctl not supported!  Can't flush buffers.\n"
-msgstr ""
-"ioctl(BLKFLSBUF) wordt niet ondersteund!  Kan buffers niet leegmaken.\n"
+msgstr "ioctl(BLKFLSBUF) wordt niet ondersteund!  Kan buffers niet leegmaken.\n"
 
 #: e2fsck/iscan.c:46
 #, c-format
@@ -880,15 +879,12 @@ msgstr "Het externe journal ondersteunt dit bestandssysteem niet.\n"
 #: e2fsck/problem.c:212
 msgid ""
 "Ext3 @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 ""
 "Superblok van ext3-journal is van onbekend en niet-ondersteund type %N.\n"
-"Waarschijnlijk gebruikt u een ouder e2fsck-programma dat deze journal-"
-"indeling\n"
-"niet ondersteunt.  Het kan ook zijn dat het journal-superblok beschadigd "
-"is.\n"
+"Waarschijnlijk gebruikt u een ouder e2fsck-programma dat deze journal-indeling\n"
+"niet ondersteunt.  Het kan ook zijn dat het journal-superblok beschadigd is.\n"
 
 #. @-expanded: Ext3 journal superblock is corrupt.\n
 #: e2fsck/problem.c:220
@@ -899,8 +895,7 @@ msgstr "Het superblok van het ext3-journal is beschadigd.\n"
 #: e2fsck/problem.c:225
 #, c-format
 msgid "@S doesn't have has_@j flag, but has ext3 @j %s.\n"
-msgstr ""
-"Superblok heeft geen journalvlag gezet, maar heeft wel een ext3-journal %s.\n"
+msgstr "Superblok heeft geen journalvlag gezet, maar heeft wel een ext3-journal %s.\n"
 
 #. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n
 #: e2fsck/problem.c:230
@@ -964,14 +959,12 @@ msgstr "Bestandssysteem is een versie 0, maar heeft functievlag(gen) gezet.  "
 #. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n
 #: e2fsck/problem.c:285
 msgid "Ext3 @j @S has an unknown read-only feature flag set.\n"
-msgstr ""
-"Journal-superblok heeft een onbekende alleen-lezen-functievlag gezet.\n"
+msgstr "Journal-superblok heeft een onbekende alleen-lezen-functievlag gezet.\n"
 
 #. @-expanded: Ext3 journal superblock has an unknown incompatible feature flag set.\n
 #: e2fsck/problem.c:290
 msgid "Ext3 @j @S has an unknown incompatible feature flag set.\n"
-msgstr ""
-"Journal-superblok heeft een onbekende en incompatibele functievlag gezet.\n"
+msgstr "Journal-superblok heeft een onbekende en incompatibele functievlag gezet.\n"
 
 #. @-expanded: journal version not supported by this e2fsck.\n
 #: e2fsck/problem.c:295
@@ -1036,8 +1029,7 @@ msgstr ""
 #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.  
 #: e2fsck/problem.c:327
 msgid "Resize_@i not enabled, but the resize @i is non-zero.  "
-msgstr ""
-"'Resize_inode'-vlag is niet gezet, maar de 'resize'-inode is niet nul.  "
+msgstr "'Resize_inode'-vlag is niet gezet, maar de 'resize'-inode is niet nul.  "
 
 #. @-expanded: Resize inode not valid.  
 #: e2fsck/problem.c:332
@@ -1083,9 +1075,7 @@ msgstr "De root-inode is geen map.  "
 #. @-expanded: root inode has dtime set (probably due to old mke2fs).  
 #: e2fsck/problem.c:367
 msgid "@r has dtime set (probably due to old mke2fs).  "
-msgstr ""
-"De verwijderingstijd van de root-inode is niet nul (waarschijnlijk "
-"veroorzaakt door een oude mke2fs).  "
+msgstr "De verwijderingstijd van de root-inode is niet nul (waarschijnlijk veroorzaakt door een oude mke2fs).  "
 
 #. @-expanded: Reserved inode %i (%Q) has invalid mode.  
 #: e2fsck/problem.c:372
@@ -1113,14 +1103,12 @@ msgstr "Inode %i is een map met lengte nul.  "
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
 #: e2fsck/problem.c:392
 msgid "@g %g's @b @B at %b @C.\n"
-msgstr ""
-"De blok-bitkaart van groep %g botst bij %b met een bestandssysteemblok.\n"
+msgstr "De blok-bitkaart van groep %g botst bij %b met een bestandssysteemblok.\n"
 
 #. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
 #: e2fsck/problem.c:397
 msgid "@g %g's @i @B at %b @C.\n"
-msgstr ""
-"De inode-bitkaart van groep %g botst bij %b met een bestandssysteemblok.\n"
+msgstr "De inode-bitkaart van groep %g botst bij %b met een bestandssysteemblok.\n"
 
 #. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
 #: e2fsck/problem.c:402
@@ -1187,9 +1175,7 @@ msgstr "Een dubbel of slecht blok is in gebruik!\n"
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
 #: e2fsck/problem.c:462
 msgid "Bad @b %b used as bad @b @i indirect @b.  "
-msgstr ""
-"Slecht blok %b is in gebruik als indirect blok voor de slechte-blokken-"
-"inode.  "
+msgstr "Slecht blok %b is in gebruik als indirect blok voor de slechte-blokken-inode.  "
 
 #. @-expanded: \n
 #. @-expanded: The bad block inode has probably been corrupted.  You probably\n
@@ -1215,8 +1201,7 @@ msgid ""
 "If the @b is really bad, the @f can not be fixed.\n"
 msgstr ""
 "\n"
-"Als het blok echt slecht is, kan het bestandssysteem niet gerepareerd "
-"worden.\n"
+"Als het blok echt slecht is, kan het bestandssysteem niet gerepareerd worden.\n"
 
 #. @-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
@@ -1239,8 +1224,7 @@ msgstr "Het primaire superblok (%b) staat in de lijst van slechte blokken.\n"
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
 #: e2fsck/problem.c:490
 msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
-msgstr ""
-"Een groepsbeschrijversblok (%b) staat in de lijst van slechte blokken.\n"
+msgstr "Een groepsbeschrijversblok (%b) staat in de lijst van slechte blokken.\n"
 
 #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
 #: e2fsck/problem.c:496
@@ -1250,21 +1234,17 @@ msgstr "Waarschuwing: groep %g heeft een slecht superblok (%b).\n"
 #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
 #: e2fsck/problem.c:501
 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
-msgstr ""
-"Waarschuwing: groep %g bevat een slecht blok (%b) in de groepsbeschrijvers.\n"
+msgstr "Waarschuwing: groep %g bevat een slecht blok (%b) in de groepsbeschrijvers.\n"
 
 #. @-expanded: Programming error?  block #%b claimed for no reason in process_bad_block.\n
 #: e2fsck/problem.c:507
 msgid "Programming error?  @b #%b claimed for no reason in process_bad_@b.\n"
-msgstr ""
-"Interne fout?: blok %b is zonder reden geclaimd in process_bad_block().\n"
+msgstr "Interne fout?: blok %b is zonder reden geclaimd in process_bad_block().\n"
 
 #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
 #: e2fsck/problem.c:513
 msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
-msgstr ""
-"Fout tijdens reserveren van %N aaneengsloten blokken in groep %g voor %s: %"
-"m\n"
+msgstr "Fout tijdens reserveren van %N aaneengsloten blokken in groep %g voor %s: %m\n"
 
 #. @-expanded: error allocating block buffer for relocating %s\n
 #: e2fsck/problem.c:518
@@ -1336,9 +1316,7 @@ msgstr "Fout tijdens opslaan van inodetal (inode=%i, aantal=%N): %m\n"
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
 #: e2fsck/problem.c:578
 msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
-msgstr ""
-"Fout tijdens opslaan van mapblokkeninformatie (inode=%i, blok=%b, aantal=%"
-"N): %m\n"
+msgstr "Fout tijdens opslaan van mapblokkeninformatie (inode=%i, blok=%b, aantal=%N): %m\n"
 
 #. @-expanded: Error reading inode %i: %m\n
 #: e2fsck/problem.c:584
@@ -1367,9 +1345,7 @@ msgstr ""
 #: e2fsck/problem.c:603
 #, c-format
 msgid "@i %i has @cion flag set on @f without @cion support.  "
-msgstr ""
-"Inode %i heeft de compressievlag gezet op een bestandssysteem zonder "
-"compressie-ondersteuning.  "
+msgstr "Inode %i heeft de compressievlag gezet op een bestandssysteem zonder compressie-ondersteuning.  "
 
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
 #: e2fsck/problem.c:608
@@ -1396,9 +1372,7 @@ msgstr "Inode %i was deel van de lijst van verweesde inodes.  "
 #. @-expanded: inodes that were part of a corrupted orphan linked list found.  
 #: e2fsck/problem.c:634
 msgid "@is that were part of a corrupted orphan linked list found.  "
-msgstr ""
-"Inodes gevonden die deel waren van een beschadigde lijst van verweesde "
-"inodes.  "
+msgstr "Inodes gevonden die deel waren van een beschadigde lijst van verweesde inodes.  "
 
 #. @-expanded: error allocating refcount structure (%N): %m\n
 #: e2fsck/problem.c:639
@@ -1408,8 +1382,7 @@ msgstr "Fout tijdens reserveren van 'refcount'-structuur (%N): %m\n"
 #. @-expanded: Error reading extended attribute block %b for inode %i.  
 #: e2fsck/problem.c:644
 msgid "Error reading @a @b %b for @i %i.  "
-msgstr ""
-"Fout tijdens lezen van blok %b met uitgebreide kenmerken voor inode %i.  "
+msgstr "Fout tijdens lezen van blok %b met uitgebreide kenmerken voor inode %i.  "
 
 #. @-expanded: inode %i has a bad extended attribute block %b.  
 #: e2fsck/problem.c:649
@@ -1424,9 +1397,7 @@ msgstr "Fout tijdens lezen van blok %b met uitgebreide kenmerken: %m  "
 #. @-expanded: extended attribute block %b has reference count %B, should be %N.  
 #: e2fsck/problem.c:659
 msgid "@a @b %b has reference count %B, @s %N.  "
-msgstr ""
-"Blok %b met uitgebreide kenmerken heeft verwijzingstal %B, zou %N moeten "
-"zijn.  "
+msgstr "Blok %b met uitgebreide kenmerken heeft verwijzingstal %B, zou %N moeten zijn.  "
 
 #. @-expanded: Error writing extended attribute block %b (%m).  
 #: e2fsck/problem.c:664
@@ -1446,8 +1417,7 @@ msgstr "Fout tijdens reserveren van blok %b met uitgebreide kenmerken.  "
 #. @-expanded: extended attribute block %b is corrupt (allocation collision).  
 #: e2fsck/problem.c:679
 msgid "@a @b %b is corrupt (allocation collision).  "
-msgstr ""
-"Blok %b met uitgebreide kenmerken is beschadigd (reserveringsoverlap).  "
+msgstr "Blok %b met uitgebreide kenmerken is beschadigd (reserveringsoverlap).  "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid name).  
 #: e2fsck/problem.c:684
@@ -1484,9 +1454,7 @@ msgstr "Blok #%B (%b) maakt symbolische koppeling te groot.  "
 #: e2fsck/problem.c:713
 #, c-format
 msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
-msgstr ""
-"Inode %i heeft de 'index_fl'-vlag gezet op een bestandssysteem zonder "
-"'htree'-ondersteuning.\n"
+msgstr "Inode %i heeft de 'index_fl'-vlag gezet op een bestandssysteem zonder 'htree'-ondersteuning.\n"
 
 #. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
 #: e2fsck/problem.c:718
@@ -1503,8 +1471,7 @@ msgstr "Inode %i van 'htree'-map heeft een ongeldige wortelnode.\n"
 #. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
 #: e2fsck/problem.c:728
 msgid "@h %i has an unsupported hash version (%N)\n"
-msgstr ""
-"Inode %i van 'htree'-map gebruikt een niet-ondersteunde hash-versie (%N).\n"
+msgstr "Inode %i van 'htree'-map gebruikt een niet-ondersteunde hash-versie (%N).\n"
 
 #. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
 #: e2fsck/problem.c:733
@@ -1541,40 +1508,32 @@ msgstr "Inode %i heeft een ongeldige extra grootte (%IS).\n"
 #. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
 #: e2fsck/problem.c:759
 msgid "@a in @i %i has a namelen (%N) which is @n\n"
-msgstr ""
-"Een uitgebreid kenmerk in inode %i heeft een ongeldige naamlengte (%N).\n"
+msgstr "Een uitgebreid kenmerk in inode %i heeft een ongeldige naamlengte (%N).\n"
 
 #. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
 #: e2fsck/problem.c:764
 msgid "@a in @i %i has a value size (%N) which is @n\n"
-msgstr ""
-"Een uitgebreid kenmerk in inode %i heeft een ongeldige waardegrootte (%N).\n"
+msgstr "Een uitgebreid kenmerk in inode %i heeft een ongeldige waardegrootte (%N).\n"
 
 #. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
 #: e2fsck/problem.c:769
 msgid "@a in @i %i has a value offset (%N) which is @n\n"
-msgstr ""
-"Een uitgebreid kenmerk in inode %i heeft een ongeldige waardeoffset (%N).\n"
+msgstr "Een uitgebreid kenmerk in inode %i heeft een ongeldige waardeoffset (%N).\n"
 
 #. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
 #: e2fsck/problem.c:774
 msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
-msgstr ""
-"Een uitgebreid kenmerk in inode %i heeft een ongeldig waardeblok (%N, moet 0 "
-"zijn).\n"
+msgstr "Een uitgebreid kenmerk in inode %i heeft een ongeldig waardeblok (%N, moet 0 zijn).\n"
 
 #. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid (must be 0)\n
 #: e2fsck/problem.c:779
 msgid "@a in @i %i has a hash (%N) which is @n (must be 0)\n"
-msgstr ""
-"Een uitgebreid kenmerk in inode %i heeft een ongeldige hashwaarde (%N, moet "
-"0 zijn).\n"
+msgstr "Een uitgebreid kenmerk in inode %i heeft een ongeldige hashwaarde (%N, moet 0 zijn).\n"
 
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
 #: e2fsck/problem.c:784
 msgid "@i %i is a %It but it looks like it is really a directory.\n"
-msgstr ""
-"Inode %i is gemarkeerd als een %It, maar lijkt feitelijk een map te zijn.\n"
+msgstr "Inode %i is gemarkeerd als een %It, maar lijkt feitelijk een map te zijn.\n"
 
 #. @-expanded: \n
 #. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
@@ -1616,15 +1575,12 @@ msgstr "Fout tijdens langslopen van blokken van inode %i (%s): %m\n"
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
 #: e2fsck/problem.c:827 e2fsck/problem.c:1143
 msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
-msgstr ""
-"Fout tijdens bijstellen van verwijzingstal van blok %b met uitgebreide "
-"kenmerken (inode %i): %m\n"
+msgstr "Fout tijdens bijstellen van verwijzingstal van blok %b met uitgebreide kenmerken (inode %i): %m\n"
 
 #. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
 #: e2fsck/problem.c:833
 msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
-msgstr ""
-"Stap 1C: Doorzoeken van mappen naar inodes met meervoudig-geclaimde blokken\n"
+msgstr "Stap 1C: Doorzoeken van mappen naar inodes met meervoudig-geclaimde blokken\n"
 
 #. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
 #: e2fsck/problem.c:839
@@ -1913,9 +1869,7 @@ msgstr "Blok van uitgebreide kenmerken @F is ongeldig (%If).\n"
 #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
 #: e2fsck/problem.c:1109
 msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
-msgstr ""
-"Bestandssysteem bevat grote bestanden, maar heeft in het superblok niet de "
-"'large-file'-vlag gezet.\n"
+msgstr "Bestandssysteem bevat grote bestanden, maar heeft in het superblok niet de 'large-file'-vlag gezet.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
 #: e2fsck/problem.c:1114
@@ -1930,14 +1884,12 @@ msgstr "Probleem in 'htree'-map %d: naar node %B wordt twee keer verwezen.\n"
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has bad min hash\n
 #: e2fsck/problem.c:1124
 msgid "@p @h %d: node (%B) has bad min hash\n"
-msgstr ""
-"Probleem in 'htree'-map %d: node %B heeft een ongeldige minimum hash.\n"
+msgstr "Probleem in 'htree'-map %d: node %B heeft een ongeldige minimum hash.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has bad max hash\n
 #: e2fsck/problem.c:1129
 msgid "@p @h %d: node (%B) has bad max hash\n"
-msgstr ""
-"Probleem in 'htree'-map %d: node %B heeft een ongeldige maximum hash.\n"
+msgstr "Probleem in 'htree'-map %d: node %B heeft een ongeldige maximum hash.\n"
 
 #. @-expanded: invalid HTREE directory inode %d (%q).  
 #: e2fsck/problem.c:1134
@@ -1968,8 +1920,7 @@ msgstr "Probleem in 'htree'-map %d: node %B heeft een ongeldig aantal (%N).\n"
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
 #: e2fsck/problem.c:1163
 msgid "@p @h %d: node (%B) has an unordered hash table\n"
-msgstr ""
-"Probleem in 'htree'-map %d: node %B heeft een ongeordende hash-tabel.\n"
+msgstr "Probleem in 'htree'-map %d: node %B heeft een ongeordende hash-tabel.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n
 #: e2fsck/problem.c:1168
@@ -2044,8 +1995,7 @@ msgstr "'..' in %Q (%i) is %P (%j), moet %q (%d) zijn.\n"
 #. @-expanded: Bad or non-existent /lost+found.  Cannot reconnect.\n
 #: e2fsck/problem.c:1225
 msgid "Bad or non-existent /@l.  Cannot reconnect.\n"
-msgstr ""
-"Beschadigde of niet-bestaande /lost+found.  Kan inode niet herverbinden.\n"
+msgstr "Beschadigde of niet-bestaande /lost+found.  Kan inode niet herverbinden.\n"
 
 #. @-expanded: Could not expand /lost+found: %m\n
 #: e2fsck/problem.c:1230
@@ -2086,8 +2036,7 @@ msgstr "ext2fs_new_dir_block(): %m tijdens maken van nieuw mapblok\n"
 #: e2fsck/problem.c:1260
 #, c-format
 msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
-msgstr ""
-"ext2fs_write_dir_block(): %m tijdens maken van mapblok voor /lost+found\n"
+msgstr "ext2fs_write_dir_block(): %m tijdens maken van mapblok voor /lost+found\n"
 
 #. @-expanded: Error while adjusting inode count on inode %i\n
 #: e2fsck/problem.c:1265
@@ -2114,8 +2063,7 @@ msgid ""
 "Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
 "\n"
 msgstr ""
-"Kan ouderverwijzing van inode %i niet herstellen: kan de oudermap niet "
-"vinden.\n"
+"Kan ouderverwijzing van inode %i niet herstellen: kan de oudermap niet vinden.\n"
 "\n"
 
 #. @-expanded: Error creating root directory (%s): %m\n
@@ -2252,12 +2200,8 @@ msgstr "Verkeerd aantal blokken (%b, geteld=%c).\n"
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
 #: e2fsck/problem.c:1458
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
-msgstr ""
-"PROGRAMMAFOUT in e2fsck: in bestandssysteem %N komen de bitkaart-eindpunten "
-"(%b, %c) niet overeen met de berekende eindpunten (%i, %j)\n"
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
+msgstr "PROGRAMMAFOUT in e2fsck: in bestandssysteem %N komen de bitkaart-eindpunten (%b, %c) niet overeen met de berekende eindpunten (%i, %j)\n"
 
 #: e2fsck/problem.c:1464
 msgid "Internal error: fudging end of bitmap (%N)\n"
@@ -2385,8 +2329,7 @@ msgid ""
 " -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"
@@ -2411,8 +2354,7 @@ msgstr ""
 " -b superblok        Dit superblok gebruiken\n"
 " -B blokgrootte      Deze blokgrootte gebruiken bij zoeken naar superblok\n"
 " -j extern_journal   Dit externe journal gebruiken\n"
-" -l slechte_blokkenbestand   Deze lijst aan de slechte_blokkenlijst "
-"toevoegen\n"
+" -l slechte_blokkenbestand   Deze lijst aan de slechte_blokkenlijst toevoegen\n"
 " -L slechte_blokkenbestand   Deze slechte_blokkenlijst gebruiken\n"
 
 #: e2fsck/unix.c:121
@@ -2484,9 +2426,7 @@ msgstr " is niet goed ontkoppeld"
 
 #: e2fsck/unix.c:284
 msgid " primary superblock features different from backup"
-msgstr ""
-" het primaire superblok heeft andere functievlaggen gezet dan de "
-"reserveblokken"
+msgstr " het primaire superblok heeft andere functievlaggen gezet dan de reserveblokken"
 
 #: e2fsck/unix.c:288
 #, c-format
@@ -2565,8 +2505,7 @@ msgstr "De optie '-t' wordt niet ondersteund door deze versie van e2fsck.\n"
 #: e2fsck/unix.c:747
 #, c-format
 msgid "Byte-swapping filesystems not compiled in this version of e2fsck\n"
-msgstr ""
-"Byte-verwisseling wordt niet ondersteund door deze versie van e2fsck.\n"
+msgstr "Byte-verwisseling wordt niet ondersteund door deze versie van e2fsck.\n"
 
 #: e2fsck/unix.c:770 misc/tune2fs.c:470 misc/tune2fs.c:735 misc/tune2fs.c:752
 #, c-format
@@ -2653,8 +2592,7 @@ msgstr "Is dit misschien een partitie met lengte nul?\n"
 #: e2fsck/unix.c:1003
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
-msgstr ""
-"U dient %s-toegang tot het bestandssyteem te hebben, of root te zijn.\n"
+msgstr "U dient %s-toegang tot het bestandssyteem te hebben, of root te zijn.\n"
 
 #: e2fsck/unix.c:1008
 #, c-format
@@ -2664,8 +2602,7 @@ msgstr "Mogelijk een niet-bestaand apparaat of een swap-apparaat?\n"
 #: e2fsck/unix.c:1010
 #, c-format
 msgid "Filesystem mounted or opened exclusively by another program?\n"
-msgstr ""
-"Bestandssysteem exclusief aangekoppeld of geopend door een ander programma?\n"
+msgstr "Bestandssysteem exclusief aangekoppeld of geopend door een ander programma?\n"
 
 #: e2fsck/unix.c:1014
 #, c-format
@@ -2687,9 +2624,7 @@ msgstr "tijdens controle van het ext3-journal van %s"
 
 #: e2fsck/unix.c:1110
 #, c-format
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
 msgstr ""
 "Waarschuwing: afspelen van journal wordt overgeslagen\n"
 "omdat een alleen-lezencontrole uitgevoerd wordt.\n"
@@ -2760,8 +2695,7 @@ msgid ""
 "*** journal has been re-created - filesystem is now ext3 again ***\n"
 msgstr ""
 "\n"
-"*** journal is opnieuw aangemaakt -- het bestandssysteem is nu weer ext3 "
-"***\n"
+"*** journal is opnieuw aangemaakt -- het bestandssysteem is nu weer ext3 ***\n"
 
 #: e2fsck/unix.c:1281
 #, c-format
@@ -2951,8 +2885,7 @@ msgstr "voltooid                            \n"
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
 " device [last_block [start_block]]\n"
 msgstr ""
 "Gebruik:  %s [-b blokgrootte] [-i invoerbestand] [-o uitvoerbestand]\n"
@@ -2991,8 +2924,7 @@ msgstr "tijdens leegmaken van de buffers"
 
 #: misc/badblocks.c:343 misc/badblocks.c:581
 msgid "while beginning bad block list iteration"
-msgstr ""
-"tijdens voorbereiding van het langslopen van de lijst met slechte blokken"
+msgstr "tijdens voorbereiding van het langslopen van de lijst met slechte blokken"
 
 #: misc/badblocks.c:357 misc/badblocks.c:447 misc/badblocks.c:591
 msgid "while allocating buffers"
@@ -3026,13 +2958,11 @@ msgstr "Lezen en vergelijken: "
 
 #: misc/badblocks.c:603
 msgid "Checking for bad blocks in non-destructive read-write mode\n"
-msgstr ""
-"Zoeken naar slechte blokken in niet-destructieve lezen-en-schrijven-modus\n"
+msgstr "Zoeken naar slechte blokken in niet-destructieve lezen-en-schrijven-modus\n"
 
 #: misc/badblocks.c:607
 msgid "Checking for bad blocks (non-destructive read-write test)\n"
-msgstr ""
-"Zoeken naar slechte blokken (niet-destructieve lezen-en-schrijven-test)\n"
+msgstr "Zoeken naar slechte blokken (niet-destructieve lezen-en-schrijven-test)\n"
 
 #: misc/badblocks.c:614
 msgid ""
@@ -3469,9 +3399,7 @@ msgstr "Kan geen geheugen reserveren voor bestandssysteemsoorten.\n"
 
 #: misc/fsck.c:872
 #, 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: ongeldige regel in /etc/fstab wordt overgeslagen:\n"
 "zesde veld van 'bind'-aankoppeling is niet nul (fsck-volgnummer)\n"
@@ -3491,8 +3419,7 @@ msgid "--waiting-- (pass %d)\n"
 msgstr "--wachten-- (volgnummer %d)\n"
 
 #: misc/fsck.c:1061
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
 msgstr ""
 "Gebruik:  fsck [-ANPRTV] [-C [descriptor]] [-t bestandssysteemsoort]\n"
 "          [bestandssysteemopties] [bestandssysteem...]\n"
@@ -3557,8 +3484,7 @@ msgstr "tijdens verwerken van de gemaakte lijst van slechte blokken"
 #: misc/mke2fs.c:235
 #, c-format
 msgid "Block %d in primary superblock/group descriptor area bad.\n"
-msgstr ""
-"Blok %d in het primaire superblok of de groepsbeschrijvers is slecht.\n"
+msgstr "Blok %d in het primaire superblok of de groepsbeschrijvers is slecht.\n"
 
 #: misc/mke2fs.c:237
 #, c-format
@@ -3759,18 +3685,15 @@ msgstr "Ongeldig argument van 'resize': %s\n"
 #: misc/mke2fs.c:819
 #, c-format
 msgid "The resize maximum must be greater than the filesystem size.\n"
-msgstr ""
-"De maximum grootte moet groter zijn dan de huidige bestandssysteemgrootte.\n"
+msgstr "De maximum grootte moet groter zijn dan de huidige bestandssysteemgrootte.\n"
 
 #: misc/mke2fs.c:843
 #, c-format
 msgid "On-line resizing not supported with revision 0 filesystems\n"
-msgstr ""
-"Vergroten en verkleinen zijn niet mogelijk op een bestandssysteem van versie "
-"0.\n"
+msgstr "Vergroten en verkleinen zijn niet mogelijk op een bestandssysteem van versie 0.\n"
 
 #: misc/mke2fs.c:858
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -3792,6 +3715,7 @@ msgstr ""
 "Geldige uitgebreide opties zijn:\n"
 "    stride=<aantal blokken per stripe, als voorbereiding op RAID>\n"
 "    resize=<maximum grootte van bestandssysteem in blokken>\n"
+"    test_fs\n"
 "\n"
 
 #: misc/mke2fs.c:888
@@ -3816,8 +3740,7 @@ msgstr "ongeldige blokgrootte: %s"
 #: misc/mke2fs.c:1012
 #, c-format
 msgid "Warning: blocksize %d not usable on most systems.\n"
-msgstr ""
-"Waarschuwing: blokgrootte %d is op de meeste systemen niet bruikbaar.\n"
+msgstr "Waarschuwing: blokgrootte %d is op de meeste systemen niet bruikbaar.\n"
 
 #: misc/mke2fs.c:1029
 #, c-format
@@ -3827,8 +3750,7 @@ msgstr "ongeldige fragmentgrootte: %s"
 #: misc/mke2fs.c:1035
 #, c-format
 msgid "Warning: fragments not supported.  Ignoring -f option\n"
-msgstr ""
-"Waarschuwing: fragmenten worden niet ondersteund; optie -f wordt genegeerd\n"
+msgstr "Waarschuwing: fragmenten worden niet ondersteund; optie -f wordt genegeerd\n"
 
 #: misc/mke2fs.c:1042
 msgid "Illegal number for blocks per group"
@@ -3877,8 +3799,7 @@ msgstr "tijdens openen van journal-apparaat %s\n"
 #: misc/mke2fs.c:1197
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
-msgstr ""
-"Blokgrootte %d van journal-apparaat is kleiner dan minimum blokgrootte %d.\n"
+msgstr "Blokgrootte %d van journal-apparaat is kleiner dan minimum blokgrootte %d.\n"
 
 #: misc/mke2fs.c:1211
 #, c-format
@@ -3887,8 +3808,7 @@ msgstr "Blokken van %d bytes zijn te groot voor dit systeem (max %d)."
 
 #: misc/mke2fs.c:1215
 #, 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 ""
 "Waarschuwing: blokken van %d bytes zijn te groot voor dit systeem,\n"
 "het maximum is %d -- maar 'mke2fs' wordt gedwongen uitgevoerd.\n"
@@ -3929,16 +3849,12 @@ msgstr "Bestandssysteem is groter dan de schijnbare apparaatgrootte."
 #: misc/mke2fs.c:1335
 #, c-format
 msgid "Filesystem features not supported with revision 0 filesystems\n"
-msgstr ""
-"Sommige functies worden niet ondersteund op een bestandssysteem van versie "
-"0.\n"
+msgstr "Sommige functies worden niet ondersteund op een bestandssysteem van versie 0.\n"
 
 #: misc/mke2fs.c:1342
 #, c-format
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
-msgstr ""
-"Schaarse superblokken zijn niet mogelijk op een bestandssysteem van versie "
-"0.\n"
+msgstr "Schaarse superblokken zijn niet mogelijk op een bestandssysteem van versie 0.\n"
 
 #: misc/mke2fs.c:1354
 #, c-format
@@ -3951,9 +3867,7 @@ msgstr "tijdens bepalen van de grootte van een sector"
 
 #: misc/mke2fs.c:1432
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
-msgstr ""
-"het reserveren van blokken voor bestandssysteemvergroting wordt niet "
-"ondersteund op een niet-schaars bestandssysteem"
+msgstr "het reserveren van blokken voor bestandssysteemvergroting wordt niet ondersteund op een niet-schaars bestandssysteem"
 
 #: misc/mke2fs.c:1441
 msgid "blocks per group count out of range"
@@ -3988,8 +3902,7 @@ msgstr "ongeldige inode-grootte %d (min %d / max %d)"
 #: misc/mke2fs.c:1478
 #, c-format
 msgid "Warning: %d-byte inodes not usable on older systems\n"
-msgstr ""
-"Waarschuwing: inodes van %d bytes zijn onbruikbaar op oudere systemen\n"
+msgstr "Waarschuwing: inodes van %d bytes zijn onbruikbaar op oudere systemen\n"
 
 #: misc/mke2fs.c:1490
 #, c-format
@@ -4091,7 +4004,7 @@ msgid "Please run e2fsck on the filesystem.\n"
 msgstr "Controleer het bestandssysteem met 'e2fsck'.\n"
 
 #: misc/tune2fs.c:96
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
@@ -4101,14 +4014,13 @@ msgid ""
 "\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
 "\t[-E extended-option[,...]] [-T last_check_time] [-U UUID] device\n"
 msgstr ""
-"Gebruik:  %s [-c maximum_aankoppelingsaantal] [-C aankoppelingsaantal]\n"
-"          [-e gedrag_bij_fouten] [-f] [-g groep] [-i interval[d|w|m]] [-j]\n"
-"          [-J journal-opties] [-l] [-L label] [-M laatst_aangekoppelde_map]\n"
-"          [-m percentage_gereserveerde_blokken] [-O [^]functie[,...]]\n"
-"          [-o [^]aankoppelingsopties[,...]] [-r "
-"aantal_gereserveerde_blokken]\n"
-"          [-s schaarsheidsvlag] [-T tijdstip_van_laatste_controle]\n"
-"          [-u gebruiker] [-U UUID] apparaat\n"
+"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"
+"          [-m percentage_gereserveerde_blokken] [-M laatst_aangekoppelde_map]\n"
+"          [-o [^]aankoppelingsopties[,...]] [-O [^]functie[,...]]\n"
+"          [-r aantal_gereserveerde_blokken] [-s schaarsheidsvlag]\n"
+"          [-T tijdstip_van_laatste_controle] [-u gebruiker] [-U UUID]  apparaat\n"
 
 #: misc/tune2fs.c:153
 msgid "while trying to open external journal"
@@ -4211,7 +4123,7 @@ msgstr "Kan datum/tijd-specificatie niet ontleden: %s"
 #: misc/tune2fs.c:529 misc/tune2fs.c:542
 #, c-format
 msgid "bad mounts count - %s"
-msgstr "onjuist aankoppelingsaantal: %s"
+msgstr "onjuist aankoppelingenaantal: %s"
 
 #: misc/tune2fs.c:558
 #, c-format
@@ -4253,7 +4165,7 @@ msgid "bad uid/user name - %s"
 msgstr "onjuiste UID of gebruikersnaam: %s"
 
 #: misc/tune2fs.c:804
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -4268,20 +4180,15 @@ msgstr ""
 "\n"
 "Ongeldige opties opgegeven.\n"
 "\n"
-"Uitgebreide opties worden gescheiden door komma's,\n"
-"hun argument wordt voorafgegaan door een '='-teken.\n"
-"\n"
 "Geldige uitgebreide opties zijn:\n"
-"    stride=<aantal blokken per stripe, als voorbereiding op RAID>\n"
-"    resize=<maximum grootte van bestandssysteem in blokken>\n"
+"    test_fs\n"
+"    ^test_fs\n"
 "\n"
 
 #: misc/tune2fs.c:862
-#, fuzzy, c-format
+#, c-format
 msgid "Filesystem %s has unsupported features enabled.\n"
-msgstr ""
-"Sommige functies worden niet ondersteund op een bestandssysteem van versie "
-"0.\n"
+msgstr "Bestandssysteem %s heeft functies ingeschakeld die niet ondersteund worden.\n"
 
 #: misc/tune2fs.c:886
 #, c-format
index b5b4cf2..3993487 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index f476ad8..76ab929 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,7 +1,7 @@
 # Polish translation for e2fsprogs.
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 # This file is distributed under the same license as the e2fsprogs package.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2007.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2008.
 #
 #. 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,
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.40.3\n"
+"Project-Id-Version: e2fsprogs 1.40.6\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
 "POT-Creation-Date: 2008-02-09 23:16-0500\n"
-"PO-Revision-Date: 2007-12-11 17:50+0100\n"
+"PO-Revision-Date: 2008-02-11 18:30+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: e2fsck/badblocks.c:22 misc/mke2fs.c:156
 #, c-format
@@ -113,9 +112,7 @@ msgstr "podczas uaktualniania i-w
 #: e2fsck/badblocks.c:129
 #, c-format
 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"
+msgstr "Uwaga: znaleziono niedopuszczalny blok %u w i-wê¼le wadliwego bloku. Wyczyszczono.\n"
 
 #: e2fsck/ehandler.c:53
 #, c-format
@@ -233,8 +230,7 @@ msgstr "%s: odtwarzanie z kroniki\n"
 #: e2fsck/journal.c:843
 #, c-format
 msgid "%s: won't do journal recovery while read-only\n"
-msgstr ""
-"%s: odtworzenie z kroniki nie zostanie wykonane w trybie tylko do odczytu\n"
+msgstr "%s: odtworzenie z kroniki nie zostanie wykonane w trybie tylko do odczytu\n"
 
 #: e2fsck/journal.c:864
 #, c-format
@@ -855,8 +851,7 @@ msgstr "@S ma b
 #. @-expanded: External journal has multiple filesystem users (unsupported).\n
 #: e2fsck/problem.c:192
 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"
+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:197
@@ -880,8 +875,7 @@ msgstr "Zewn
 #: e2fsck/problem.c:212
 msgid ""
 "Ext3 @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 ""
 "@S kroniki ext3 ma nieznany typ %N (nie obs³ugiwany).\n"
@@ -1030,8 +1024,7 @@ msgstr ""
 #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.  
 #: e2fsck/problem.c:327
 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. "
+msgstr "Resize_inode nie w³±czone, ale i-wêze³ zmiany rozmiaru jest niezerowy. "
 
 #. @-expanded: Resize inode not valid.  
 #: e2fsck/problem.c:332
@@ -1177,8 +1170,7 @@ msgstr "Podw
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
 #: e2fsck/problem.c:462
 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. "
+msgstr "Wadliwy @b %b jest u¿ywany jako niebiezpo¶redni @b i-wê¼³a z wadliwym @biem. "
 
 #. @-expanded: \n
 #. @-expanded: The bad block inode has probably been corrupted.  You probably\n
@@ -1313,14 +1305,12 @@ msgstr "B
 #. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
 #: e2fsck/problem.c:573
 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"
+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:578
 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"
+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:584
@@ -1423,8 +1413,7 @@ msgstr "@A @bu rozszerzonych atrybut
 #. @-expanded: extended attribute block %b is corrupt (allocation collision).  
 #: e2fsck/problem.c:679
 msgid "@a @b %b is corrupt (allocation collision).  "
-msgstr ""
-"@b rozszerzonych atrybutów %b jest uszkodzony (kolizja przydzielania). "
+msgstr "@b rozszerzonych atrybutów %b jest uszkodzony (kolizja przydzielania). "
 
 #. @-expanded: extended attribute block %b is corrupt (invalid name).  
 #: e2fsck/problem.c:684
@@ -1461,8 +1450,7 @@ msgstr "@b #%B (%b) powoduje, 
 #: e2fsck/problem.c:713
 #, 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"
+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:718
@@ -1583,15 +1571,12 @@ msgstr "B
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
 #: e2fsck/problem.c:827 e2fsck/problem.c:1143
 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"
+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:833
 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"
+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:839
@@ -1931,8 +1916,7 @@ msgstr "@p i-w
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
 #: e2fsck/problem.c:1163
 msgid "@p @h %d: node (%B) has an unordered hash table\n"
-msgstr ""
-"@p i-wê¼le @du HTREE %d: wêze³ (%B) ma nie uporz±dkowan± tablicê haszuj±c±\n"
+msgstr "@p i-wê¼le @du HTREE %d: wêze³ (%B) ma nie uporz±dkowan± tablicê haszuj±c±\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n
 #: e2fsck/problem.c:1168
@@ -2210,12 +2194,8 @@ msgstr "B
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
 #: e2fsck/problem.c:1458
-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"
+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:1464
 msgid "Internal error: fudging end of bitmap (%N)\n"
@@ -2235,8 +2215,7 @@ msgstr "B
 
 #: e2fsck/problem.c:1499
 msgid "Recreate journal to make the filesystem ext3 again?\n"
-msgstr ""
-"Utworzyæ ponownie kronikê, aby uzyskaæ z powrotem system plików ext3?\n"
+msgstr "Utworzyæ ponownie kronikê, aby uzyskaæ z powrotem system plików ext3?\n"
 
 #: e2fsck/problem.c:1617
 #, c-format
@@ -2344,8 +2323,7 @@ msgid ""
 " -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"
@@ -2354,8 +2332,7 @@ msgstr ""
 " -n                   Nie wykonywanie zmian w systemie plików\n"
 " -y                   Przyjêcie odpowiedzi \"tak\" na wszystkie pytania\n"
 " -c                   Szukanie wadliwych bloków i dodanie ich do listy\n"
-" -f                   Wymuszenie sprawdzenia nawet \"czystego\" systemu "
-"plików\n"
+" -f                   Wymuszenie sprawdzenia nawet \"czystego\" systemu plików\n"
 
 #: e2fsck/unix.c:86
 #, c-format
@@ -2369,8 +2346,7 @@ msgid ""
 msgstr ""
 " -v                   Pokazywanie wiêkszej ilo¶ci informacji\n"
 " -b superblok         U¿ycie innego superbloku\n"
-" -B rozm.bloku        Wymuszenie rozmiaru bloku przy poszukiwaniu "
-"superbloku\n"
+" -B rozm.bloku        Wymuszenie rozmiaru bloku przy poszukiwaniu superbloku\n"
 " -j zewn-kronika      Ustawienie po³o¿enia zewnêtrznej kroniki\n"
 " -l plik_z³ych_bloków Dodanie do listy wadliwych bloków\n"
 " -L plik_z³ych_bloków Ustawienie listy wadliwych bloków\n"
@@ -2619,8 +2595,7 @@ msgstr "Zapewne nie istniej
 #: e2fsck/unix.c:1010
 #, c-format
 msgid "Filesystem mounted or opened exclusively by another program?\n"
-msgstr ""
-"System plików podmontowany lub otwarty na wy³±czno¶æ przez inny program?\n"
+msgstr "System plików podmontowany lub otwarty na wy³±czno¶æ przez inny program?\n"
 
 #: e2fsck/unix.c:1014
 #, c-format
@@ -2642,9 +2617,7 @@ msgstr "podczas sprawdzania kroniki ext3 dla %s"
 
 #: e2fsck/unix.c:1110
 #, c-format
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
+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"
@@ -2901,13 +2874,11 @@ msgstr "zako
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
 " device [last_block [start_block]]\n"
 msgstr ""
 "Sk³adnia: %s [-b rozm_bloku] [-i plik_wej] [-o plik_wyj] [-svwnf]\n"
-" [-c bloków_naraz] [-p przebiegów] [-t wzór_testowy [-t wzór_testowy "
-"[...]]]\n"
+" [-c bloków_naraz] [-p przebiegów] [-t wzór_testowy [-t wzór_testowy [...]]]\n"
 " urz±dzenie [ostatni_blok [pocz±tek]]\n"
 
 #: misc/badblocks.c:88
@@ -3417,12 +3388,8 @@ msgstr "Nie mo
 
 #: misc/fsck.c:872
 #, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
-msgstr ""
-"%s: pominiêto b³êdn± liniê w /etc/fstab: montowanie bind z niezerowym "
-"numerem przebiegu fsck\n"
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: pominiêto b³êdn± liniê w /etc/fstab: montowanie bind z niezerowym numerem przebiegu fsck\n"
 
 #: misc/fsck.c:899
 #, c-format
@@ -3439,11 +3406,8 @@ msgid "--waiting-- (pass %d)\n"
 msgstr "--oczekiwanie-- (przebieg %d)\n"
 
 #: misc/fsck.c:1061
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"Sk³adnia: fsck [-ANPRTV] [ -C [ deskryptor ] ] [-t rodzaj-fs] [opcje-fs] "
-"[system-plików ...]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Sk³adnia: fsck [-ANPRTV] [ -C [ deskryptor ] ] [-t rodzaj-fs] [opcje-fs] [system-plików ...]\n"
 
 #: misc/fsck.c:1103
 #, c-format
@@ -3702,18 +3666,15 @@ msgstr "B
 #: misc/mke2fs.c:819
 #, c-format
 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"
+msgstr "Maksymalny rozmiar (resize) musi byæ wiêkszy od rozmiaru systemu plików.\n"
 
 #: misc/mke2fs.c:843
 #, c-format
 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"
+msgstr "Zmiana rozmiaru w locie nie jest obs³ugiwana przez systemy plików w wersji 0\n"
 
 #: misc/mke2fs.c:858
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -3735,7 +3696,7 @@ msgstr ""
 "Poprawne opcje to:\n"
 "\tstride=<d³ugo¶æ stride w blokach>\n"
 "\tresize=<maksymalny rozmiar powiêkszenia w blokach>\n"
-"\n"
+"\ttest_fs\n"
 
 #: misc/mke2fs.c:888
 #, c-format
@@ -3825,11 +3786,8 @@ msgstr "%d-bajtowe bloki s
 
 #: misc/mke2fs.c:1215
 #, 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"
+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:1233
 msgid "filesystem"
@@ -3871,8 +3829,7 @@ msgstr "Cechy systemu plik
 #: misc/mke2fs.c:1342
 #, c-format
 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"
+msgstr "Rzadkie superbloki nie s± obs³ugiwane przez systemy plików w wersji 0\n"
 
 #: misc/mke2fs.c:1354
 #, c-format
@@ -3885,9 +3842,7 @@ msgstr "podczas pr
 
 #: misc/mke2fs.c:1432
 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"
+msgstr "zarezerwowane bloki do zmiany rozmiaru w locie nie obs³ugiwane na nieci±g³ym systemie plików"
 
 #: misc/mke2fs.c:1441
 msgid "blocks per group count out of range"
@@ -4023,7 +3978,7 @@ msgid "Please run e2fsck on the filesystem.\n"
 msgstr "Proszê uruchomiæ e2fsck na systemie plików.\n"
 
 #: misc/tune2fs.c:96
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
@@ -4039,7 +3994,7 @@ msgstr ""
 "\t[-o [^]opcje-montowania[,...]] [-r liczba-zarez.-bloków]\n"
 "\t[-u u¿ytkownik] [-C licznik-montowañ] [-L etykieta-wolumenu]\n"
 "\t[-M ostatnio-mont.-katalog] [-O [^]cecha[,...]]\n"
-"\t[-T czas-ost.-sprawdz.] [-U UUID] urz±dzenie\n"
+"\t[-E opcja-rozszerzona[,...]] [-T czas-ost.-sprawdz.] [-U UUID] urz±dzenie\n"
 
 #: misc/tune2fs.c:153
 msgid "while trying to open external journal"
@@ -4183,7 +4138,7 @@ msgid "bad uid/user name - %s"
 msgstr "b³êdny uid/nazwa u¿ytkownika - %s"
 
 #: misc/tune2fs.c:804
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -4204,12 +4159,13 @@ msgstr ""
 "Poprawne opcje to:\n"
 "\tstride=<d³ugo¶æ stride w blokach>\n"
 "\tresize=<maksymalny rozmiar powiêkszenia w blokach>\n"
-"\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
 
 #: misc/tune2fs.c:862
-#, fuzzy, c-format
+#, c-format
 msgid "Filesystem %s has unsupported features enabled.\n"
-msgstr "Cechy systemu plików nie obs³ugiwane przez systemy plików w wersji 0\n"
+msgstr "System plików %s ma w³±czone nie obs³ugiwane cechy.\n"
 
 #: misc/tune2fs.c:886
 #, c-format
index aff4cf7..67ce41b 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index 369e4b8..a2a9dc2 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -3,7 +3,7 @@
 # This file is distributed under the same license as the e2fsprogs package.
 # Göran Uddeborg <goeran@uddeborg.se>, 2003, 2005, 2006, 2008.
 #
-# $Revision: 1.34 $
+# $Revision: 1.36 $
 #
 #. 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,
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.40.4\n"
+"Project-Id-Version: e2fsprogs 1.40.6\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
 "POT-Creation-Date: 2008-02-09 23:16-0500\n"
-"PO-Revision-Date: 2008-01-20 15:15+0100\n"
+"PO-Revision-Date: 2008-02-12 13:01+0100\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "MIME-Version: 1.0\n"
@@ -891,8 +891,7 @@ msgstr "Extern journal st
 #: e2fsck/problem.c:212
 msgid ""
 "Ext3 @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 ""
 "Ext3-journalsuperblock är av okänd typ %N (ej stött).\n"
@@ -914,8 +913,7 @@ msgstr "superblock har inte har-journal-flagga, men har ext3-journal %s.\n"
 #. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n
 #: e2fsck/problem.c:230
 msgid "@S has ext3 needs_recovery flag set, but no @j.\n"
-msgstr ""
-"superblock har ext3-behöver-rättas-flagga satt, men har ext3-journal %s.\n"
+msgstr "superblock har ext3-behöver-rättas-flagga satt, men har ext3-journal %s.\n"
 
 #. @-expanded: ext3 recovery flag is clear, but journal has data.\n
 #: e2fsck/problem.c:235
@@ -940,8 +938,7 @@ msgstr "R
 #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
 #: e2fsck/problem.c:255
 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"
+msgstr "%s föräldralös inod %i (uid=%Iu, gid=%Ig, rättighet=%Im, storlek=%Is)\n"
 
 #. @-expanded: illegal block #%B (%b) found in orphaned inode %i.\n
 #: e2fsck/problem.c:260
@@ -968,8 +965,7 @@ msgstr "Ogiltig inod %i i f
 #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.  
 #: e2fsck/problem.c:280 e2fsck/problem.c:613
 msgid "@f has feature flag(s) set, but is a revision 0 @f.  "
-msgstr ""
-"filsystemet har funktionsflaggor satta, men är ett revision 0-filsystem.  "
+msgstr "filsystemet har funktionsflaggor satta, men är ett revision 0-filsystem.  "
 
 #. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n
 #: e2fsck/problem.c:285
@@ -1044,8 +1040,7 @@ msgstr ""
 #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.  
 #: e2fsck/problem.c:327
 msgid "Resize_@i not enabled, but the resize @i is non-zero.  "
-msgstr ""
-"Resize_inode är inte aktiverat, men storleksändringsinoden är inte noll.  "
+msgstr "Resize_inode är inte aktiverat, men storleksändringsinoden är inte noll.  "
 
 #. @-expanded: Resize inode not valid.  
 #: e2fsck/problem.c:332
@@ -1119,20 +1114,17 @@ msgstr "Inod %i 
 #. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
 #: e2fsck/problem.c:392
 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"
+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:397
 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"
+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:402
 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"
+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:407
@@ -1194,8 +1186,7 @@ msgstr "Duplicerat eller felaktigt block anv
 #. @-expanded: Bad block %b used as bad block inode indirect block.  
 #: e2fsck/problem.c:462
 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.  "
+msgstr "Felaktigt block %b använt som indirektblock för inod för dåliga block.  "
 
 #. @-expanded: \n
 #. @-expanded: The bad block inode has probably been corrupted.  You probably\n
@@ -1244,8 +1235,7 @@ msgstr "Det prim
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
 #: e2fsck/problem.c:490
 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"
+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:496
@@ -1255,21 +1245,17 @@ msgstr "Varning: Grupp %g:s superblock (%b) 
 #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
 #: e2fsck/problem.c:501
 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"
+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:507
 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"
+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:513
 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"
+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:518
@@ -1340,9 +1326,7 @@ msgstr "Fel vid lagring av inodsr
 #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
 #: e2fsck/problem.c:578
 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"
+msgstr "Fel vid lagring av katalogblocksinformation (inod=%i, block=%b, antal=%N): %m\n"
 
 #. @-expanded: Error reading inode %i: %m\n
 #: e2fsck/problem.c:584
@@ -1371,8 +1355,7 @@ msgstr ""
 #: e2fsck/problem.c:603
 #, c-format
 msgid "@i %i has @cion flag set on @f without @cion support.  "
-msgstr ""
-"Inod %i har kompressionsflagga satt på filsystem utan kompressionsstöd.  "
+msgstr "Inod %i har kompressionsflagga satt på filsystem utan kompressionsstöd.  "
 
 #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.  
 #: e2fsck/problem.c:608
@@ -1550,16 +1533,12 @@ msgstr "Ut
 #. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
 #: e2fsck/problem.c:774
 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"
+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 hash (%N) which is invalid (must be 0)\n
 #: e2fsck/problem.c:779
 msgid "@a in @i %i has a hash (%N) which is @n (must be 0)\n"
-msgstr ""
-"Utökat attribut i inod %i har en kontrollsumma (%N) som är ogiltig (måste "
-"vara 0)\n"
+msgstr "Utökat attribut i inod %i har en kontrollsumma (%N) som är ogiltig (måste vara 0)\n"
 
 #. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
 #: e2fsck/problem.c:784
@@ -1576,8 +1555,7 @@ msgid ""
 "Pass 1B: Rescanning for @m @bs\n"
 msgstr ""
 "\n"
-"Kör ytterliggare pass för att lösa upp block som används av mer än en "
-"inod ...\n"
+"Kör ytterliggare pass för att lösa upp block som används av mer än en inod ...\n"
 "Pass 1B: Söker igen efter block som används flera gånger\n"
 
 #. @-expanded: multiply-claimed block(s) in inode %i:
@@ -1606,15 +1584,12 @@ msgstr "Fel vid iterering 
 #. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
 #: e2fsck/problem.c:827 e2fsck/problem.c:1143
 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"
+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:833
 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"
+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:839
@@ -1695,8 +1670,7 @@ msgstr "Post \"%Dn\" i %p (%i) 
 #. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
 #: e2fsck/problem.c:909
 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"
+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:914
@@ -1728,8 +1702,7 @@ msgstr "\"..\" saknas i kataloginod %i.\n"
 #. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
 #: e2fsck/problem.c:939
 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"
+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:944
@@ -1882,8 +1855,7 @@ msgstr "S
 #. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
 #: e2fsck/problem.c:1084
 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"
+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:1089
@@ -1908,9 +1880,7 @@ msgstr "Ut
 #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
 #: e2fsck/problem.c:1109
 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"
+msgstr "Filsystem innehåller stora filer, men saknar flaggan LARGE_FILE i superblock.\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
 #: e2fsck/problem.c:1114
@@ -1963,8 +1933,7 @@ msgstr ""
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
 #: e2fsck/problem.c:1163
 msgid "@p @h %d: node (%B) has an unordered hash table\n"
-msgstr ""
-"Problem i HTREE-katalognod %d (%q): not (%B) har en oordnat hash-tabell\n"
+msgstr "Problem i HTREE-katalognod %d (%q): not (%B) har en oordnat hash-tabell\n"
 
 #. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n
 #: e2fsck/problem.c:1168
@@ -2080,8 +2049,7 @@ msgstr "ext2fs_new_dir_block: %m n
 #: e2fsck/problem.c:1260
 #, 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"
+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:1265
@@ -2108,8 +2076,7 @@ msgid ""
 "Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
 "\n"
 msgstr ""
-"Kunde inte rätta förälder till inod %i: Kunde inte hitta "
-"förälderkatalogpost\n"
+"Kunde inte rätta förälder till inod %i: Kunde inte hitta förälderkatalogpost\n"
 "\n"
 
 #. @-expanded: Error creating root directory (%s): %m\n
@@ -2188,8 +2155,7 @@ msgid ""
 "@i_link_info[%i] is %N, @i.i_links_count is %Il.  They @s the same!\n"
 msgstr ""
 "VARNING: PROGRAMMERINGSFEL I E2FSCK!\n"
-"    ELLER NÅGON KLANTSKALLE (DU) KONTROLLERAR ETT MONTERAT (AKTIVT) "
-"FILSYSTEM.\n"
+"    ELLER NÅGON KLANTSKALLE (DU) KONTROLLERAR ETT MONTERAT (AKTIVT) FILSYSTEM.\n"
 "inod_link_info[%i] är %N, inod.i_links_count är %Il.  De skulle vara samma!\n"
 
 #. @-expanded: Pass 5: Checking group summary information\n
@@ -2245,9 +2211,7 @@ msgstr "Antal fria block 
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
 #: e2fsck/problem.c:1458
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
+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"
@@ -2378,8 +2342,7 @@ msgid ""
 " -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"
@@ -2388,8 +2351,7 @@ msgstr ""
 " -n                   Gör inga förändringar av filsystemet\n"
 " -y                   Anta \"ja\" som svar på alla frågor\n"
 " -c                   Leta efter dåliga block och lägg till dem i listan\n"
-" -f                   Framtvinga kontroll även om filsystemet är markerat "
-"rent\n"
+" -f                   Framtvinga kontroll även om filsystemet är markerat rent\n"
 
 #: e2fsck/unix.c:86
 #, c-format
@@ -2555,8 +2517,7 @@ msgstr "Flaggan -t st
 #: e2fsck/unix.c:747
 #, c-format
 msgid "Byte-swapping filesystems not compiled in this version of e2fsck\n"
-msgstr ""
-"Byteväxling av filsystem är inte inkompilerat i denna version av e2fsck\n"
+msgstr "Byteväxling av filsystem är inte inkompilerat i denna version av e2fsck\n"
 
 #: e2fsck/unix.c:770 misc/tune2fs.c:470 misc/tune2fs.c:735 misc/tune2fs.c:752
 #, c-format
@@ -2675,12 +2636,8 @@ msgstr "vid kontroll av ext3-journal f
 
 #: e2fsck/unix.c:1110
 #, c-format
-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"
+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:1123
 #, c-format
@@ -2934,13 +2891,11 @@ msgstr "klar                                \n"
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
 " device [last_block [start_block]]\n"
 msgstr ""
 "Användning: %s [-b blockstorlek] [-i infil] [-o utfile] [-svwnf]\n"
-" [-c block_åt_gången] [-p antal_pass] [-t testmönster [-t testmönster "
-"[...]]]\n"
+" [-c block_åt_gången] [-p antal_pass] [-t testmönster [-t testmönster [...]]]\n"
 " enhet [sista_block [start_block]]\n"
 
 #: misc/badblocks.c:88
@@ -3450,12 +3405,8 @@ msgstr "Kunde inte allokera minne f
 
 #: misc/fsck.c:872
 #, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
-msgstr ""
-"%s: hoppar över felaktig rad i /etc/fstab: bind-montering med fsck-"
-"passnummer som inte är noll\n"
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: hoppar över felaktig rad i /etc/fstab: bind-montering med fsck-passnummer som inte är noll\n"
 
 #: misc/fsck.c:899
 #, c-format
@@ -3472,11 +3423,8 @@ msgid "--waiting-- (pass %d)\n"
 msgstr "--väntar-- (pass %d)\n"
 
 #: misc/fsck.c:1061
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"Användning: fsck [-ANPRTV] [ -C [ fh ] ] [-t fstyp] [fs-flaggor] "
-"[filsys ...]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Användning: fsck [-ANPRTV] [ -C [ fh ] ] [-t fstyp] [fs-flaggor] [filsys ...]\n"
 
 #: misc/fsck.c:1103
 #, c-format
@@ -3735,8 +3683,7 @@ msgstr "Ogiltig storleks
 #: misc/mke2fs.c:819
 #, c-format
 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"
+msgstr "Storleksändringens maximum måste vara större än filsystemets storlek.\n"
 
 #: misc/mke2fs.c:843
 #, c-format
@@ -3744,7 +3691,7 @@ 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:858
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -3760,14 +3707,13 @@ msgstr ""
 "\n"
 "Felaktiga flaggor angivna.\n"
 "\n"
-"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas "
-"med\n"
+"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas med\n"
 "\tett likhetstecken (\"=\").\n"
 "\n"
 "Giltiga utökade flaggor är:\n"
 "\tstride=<stride-längd i block>\n"
 "\tresize=<maximal storleksändring i block>\n"
-"\n"
+"\ttest_fs\n"
 
 #: misc/mke2fs.c:888
 #, c-format
@@ -3857,10 +3803,8 @@ msgstr "%d-byteblock f
 
 #: misc/mke2fs.c:1215
 #, 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"
+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"
 
 # "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.
@@ -3917,9 +3861,7 @@ msgstr "vid f
 
 #: misc/mke2fs.c:1432
 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"
+msgstr "reserverade block för storleksändring under drift stöds inte på icke-glesa filsystem"
 
 #: misc/mke2fs.c:1441
 msgid "blocks per group count out of range"
@@ -4057,7 +3999,7 @@ msgid "Please run e2fsck on the filesystem.\n"
 msgstr "Kör e2fsck på filsystemet.\n"
 
 #: misc/tune2fs.c:96
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
@@ -4073,7 +4015,7 @@ msgstr ""
 "\t[-o [^]monteringsflaggor[,...]] [-r antal_reserverade_block]\n"
 "\t[-u användare] [-C antal_monteringar] [-L volymetikett]\n"
 "\t[-M senast_monterad_katalog] [-O [^]funktion[,...]]\n"
-"\t[-T senaste_kontroll_tid] [-U UUID] enhet\n"
+"\t[-E utökad-flagga[,...]] [-T senaste_kontroll_tid] [-U UUID] enhet\n"
 
 #: misc/tune2fs.c:153
 msgid "while trying to open external journal"
@@ -4217,7 +4159,7 @@ msgid "bad uid/user name - %s"
 msgstr "felagtigt uid/användarnamn - %s"
 
 #: misc/tune2fs.c:804
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -4232,19 +4174,17 @@ msgstr ""
 "\n"
 "Felaktiga flaggor angivna.\n"
 "\n"
-"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas "
-"med\n"
+"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas med\n"
 "\tett likhetstecken (\"=\").\n"
 "\n"
 "Giltiga utökade flaggor är:\n"
-"\tstride=<stride-längd i block>\n"
-"\tresize=<maximal storleksändring i block>\n"
-"\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
 
 #: misc/tune2fs.c:862
-#, fuzzy, c-format
+#, c-format
 msgid "Filesystem %s has unsupported features enabled.\n"
-msgstr "Filsystemsfunktioner som inte stöds med revision 0-filsystem\n"
+msgstr "Filsystem %s har funktioner som inte stöds aktiverade.\n"
 
 #: misc/tune2fs.c:886
 #, c-format
index 31bc4bf..cea3894 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index ec93ba2..ba2c5ec 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -1,6 +1,7 @@
 # Vietnamese translation for e2fsprogs.
-# Copyright © 2007 Free Software Foundation, Inc.
-# Clytie Siddall <clytie@riverland.net.au>, 2006-2007.
+# Copyright © 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the e2fsprogs-1.40.6 package.
+# Clytie Siddall <clytie@riverland.net.au>, 2006-2008.
 # 
 #. 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,
 #.
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.40.4\n"
+"Project-Id-Version: e2fsprogs 1.40.6\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
 "POT-Creation-Date: 2008-02-09 23:16-0500\n"
-"PO-Revision-Date: 2008-01-02 16:52+1030\n"
+"PO-Revision-Date: 2008-02-12 22:09+1030\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.7b1\n"
+"X-Generator: LocFactoryEditor 1.7b3\n"
 
 #: e2fsck/badblocks.c:22 misc/mke2fs.c:156
 #, c-format
@@ -112,8 +113,7 @@ msgstr "trong khi cập nhật nút thông tin khối hỏng"
 #: e2fsck/badblocks.c:129
 #, c-format
 msgid "Warning: illegal block %u found in bad block inode.  Cleared.\n"
-msgstr ""
-"Cảnh báo : tìm thấy khối cấm %u trong nút thông tin khối hỏng nên bị xoá.\n"
+msgstr "Cảnh báo : tìm thấy khối cấm %u trong nút thông tin khối hỏng nên bị xoá.\n"
 
 #: e2fsck/ehandler.c:53
 #, c-format
@@ -879,13 +879,11 @@ msgstr "@j bên ngoài không hỗ trợ @f này\n"
 #: e2fsck/problem.c:212
 msgid ""
 "Ext3 @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 ""
 "@S @j ext3 có kiểu lạ %N (không được hỗ trợ).\n"
-"Rất có thể là bạn có một bản sao e2fsck cũ mà/hay không hỗ trợ định dạng @j "
-"này.\n"
+"Rất có thể là bạn có một bản sao e2fsck cũ mà/hay không hỗ trợ định dạng @j này.\n"
 "It is also possible the @S @j is corrupt.\n"
 
 #. @-expanded: Ext3 journal superblock is corrupt.\n
@@ -1223,8 +1221,7 @@ msgstr "@S chính (%b) nằm trên danh sách các @b sai.\n"
 #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
 #: e2fsck/problem.c:490
 msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
-msgstr ""
-"Khối %b trong những mô tả @g chính có nằm trong danh sách các @b sai.\n"
+msgstr "Khối %b trong những mô tả @g chính có nằm trong danh sách các @b sai.\n"
 
 #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
 #: e2fsck/problem.c:496
@@ -1239,8 +1236,7 @@ msgstr "Cảnh báo : bản sao các mô tả @g của nhóm %g có một @b sai
 #. @-expanded: Programming error?  block #%b claimed for no reason in process_bad_block.\n
 #: e2fsck/problem.c:507
 msgid "Programming error?  @b #%b claimed for no reason in process_bad_@b.\n"
-msgstr ""
-"Lỗi lập trình ? @b %b được tuyên bố, không có lý do, trong process_bad_@b\n"
+msgstr "Lỗi lập trình ? @b %b được tuyên bố, không có lý do, trong process_bad_@b\n"
 
 #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
 #: e2fsck/problem.c:513
@@ -1750,15 +1746,13 @@ msgstr "@i @d %i có một @b #%B chưa cấp phát."
 #: e2fsck/problem.c:994
 #, c-format
 msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
-msgstr ""
-"@e @d « . » trong @i @d %i không được chấm dứt bằng NULL (vô giá trị)\n"
+msgstr "@e @d « . » trong @i @d %i không được chấm dứt bằng NULL (vô giá trị)\n"
 
 #. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
 #: e2fsck/problem.c:999
 #, c-format
 msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
-msgstr ""
-"@e @d « .. » trong @i @d %i không được chấm dứt bằng NULL (vô giá trị)\n"
+msgstr "@e @d « .. » trong @i @d %i không được chấm dứt bằng NULL (vô giá trị)\n"
 
 #. @-expanded: inode %i (%Q) is an illegal character device.\n
 #: e2fsck/problem.c:1004
@@ -2201,12 +2195,8 @@ msgstr "Số đếm các @b rảnh không đúng (%b, đã đếm=%c).\n"
 #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap 
 #. @-expanded: endpoints (%i, %j)\n
 #: e2fsck/problem.c:1458
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
-msgstr ""
-"LỖI LẬP TRÌNH: trong @f (#%N) có các điểm cuối @B (%b, %c) không tương ứng "
-"với các điểm cuối @B đã tính (%i, %j)\n"
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
+msgstr "LỖI LẬP TRÌNH: trong @f (#%N) có các điểm cuối @B (%b, %c) không tương ứng với các điểm cuối @B đã tính (%i, %j)\n"
 
 #: e2fsck/problem.c:1464
 msgid "Internal error: fudging end of bitmap (%N)\n"
@@ -2258,15 +2248,13 @@ msgstr "trong khi chạy tiến trình quét nút thông tin"
 #: e2fsck/super.c:187
 #, c-format
 msgid "while calling ext2fs_block_iterate for inode %d"
-msgstr ""
-"trong khi gọi hàm lặp lại khối « ext2fs_block_iterate » cho nút thông tin %d"
+msgstr "trong khi gọi hàm lặp lại khối « ext2fs_block_iterate » cho nút thông tin %d"
 
 #: e2fsck/super.c:210
 #, c-format
 msgid "while calling ext2fs_adjust_ea_refcount for inode %d"
 msgstr ""
-"trong khi gọi hàm điều chỉnh số đếm tham chiếu « ext2fs_adjust_ea_refcount "
-"»\n"
+"trong khi gọi hàm điều chỉnh số đếm tham chiếu « ext2fs_adjust_ea_refcount »\n"
 "cho nút thông tin %d"
 
 #: e2fsck/super.c:268
@@ -2338,8 +2326,7 @@ msgid ""
 " -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"
@@ -2348,8 +2335,7 @@ msgstr ""
 " -n                   Không thay đổi hệ thống tập tin\n"
 " -y                   Giả sử trả lời « Có » mọi câu hỏi\n"
 " -c                   Kiểm tra tìm khối sai: thêm vào danh sách khối sai\n"
-" -f                   Buộc kiểm tra ngay cả khi hệ thống tập tin có nhãn là "
-"sạch\n"
+" -f                   Buộc kiểm tra ngay cả khi hệ thống tập tin có nhãn là sạch\n"
 
 #: e2fsck/unix.c:86
 #, c-format
@@ -2532,8 +2518,7 @@ msgstr "Không cho phép tùy chọn không tương thích khi trao đổi byte.
 #: e2fsck/unix.c:808
 #, c-format
 msgid "The -c and the -l/-L options may not be both used at the same time.\n"
-msgstr ""
-"Không cho phép sử dụng đồng thời cả hai tùy chọn « --c » và « --l/L ».\n"
+msgstr "Không cho phép sử dụng đồng thời cả hai tùy chọn « --c » và « --l/L ».\n"
 
 #: e2fsck/unix.c:856
 #, c-format
@@ -2605,9 +2590,7 @@ msgstr "Phân vùng này có thể có độ dài bằng không ?\n"
 #: e2fsck/unix.c:1003
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
-msgstr ""
-"Bạn phải có quyền truy cập %s vào hệ thống tập tin, hoặc là người chủ "
-"(root)\n"
+msgstr "Bạn phải có quyền truy cập %s vào hệ thống tập tin, hoặc là người chủ (root)\n"
 
 #: e2fsck/unix.c:1008
 #, c-format
@@ -2617,8 +2600,7 @@ msgstr "Có thể là thiết bị không tồn tại, hoặc thiết bị trao
 #: e2fsck/unix.c:1010
 #, c-format
 msgid "Filesystem mounted or opened exclusively by another program?\n"
-msgstr ""
-"Hệ thống tập tin đã được gắn kết hay mở hoàn toàn bởi chương trình khác ?\n"
+msgstr "Hệ thống tập tin đã được gắn kết hay mở hoàn toàn bởi chương trình khác ?\n"
 
 #: e2fsck/unix.c:1014
 #, c-format
@@ -2640,12 +2622,8 @@ msgstr "trong khi kiểm tra nhật ký ext3 tìm %s"
 
 #: e2fsck/unix.c:1110
 #, c-format
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
-msgstr ""
-"Cảnh báo : đang bỏ qua việc phục hồi nhật ký vì đang kiểm tra hệ thống tập "
-"tin một cách chỉ đọc.\n"
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
+msgstr "Cảnh báo : đang bỏ qua việc phục hồi nhật ký vì đang kiểm tra hệ thống tập tin một cách chỉ đọc.\n"
 
 #: e2fsck/unix.c:1123
 #, c-format
@@ -2682,8 +2660,7 @@ msgstr "trong khi đọc nút thông tin khối sai"
 #: e2fsck/unix.c:1234
 #, c-format
 msgid "This doesn't bode well, but we'll try to go on...\n"
-msgstr ""
-"Đây không phải báo trước điềm hay, nhưng tiến trình này sẽ thử tiếp tục...\n"
+msgstr "Đây không phải báo trước điềm hay, nhưng tiến trình này sẽ thử tiếp tục...\n"
 
 #: e2fsck/unix.c:1260
 msgid "Couldn't determine journal size"
@@ -2900,13 +2877,11 @@ msgstr "done                                \n"
 #, c-format
 msgid ""
 "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
 " device [last_block [start_block]]\n"
 msgstr ""
 "Cách sử dụng: %s [-b cỡ_khối] [-i tập_tin_nhập] [-o tập_tin_xuất] [-svwnf]\n"
-" [-c các_khối_cùng_lúc] [-p số_lần_qua] [-t mẫu_thử_ra [-t mẫu_thử_ra "
-"[...]]]\n"
+" [-c các_khối_cùng_lúc] [-p số_lần_qua] [-t mẫu_thử_ra [-t mẫu_thử_ra [...]]]\n"
 " thiết_bị [khối_cuối [khối_đầu]]\n"
 
 #: misc/badblocks.c:88
@@ -3035,8 +3010,7 @@ msgstr "mẫu thử (test_pattern) không hợp lệ: %s\n"
 
 #: misc/badblocks.c:961
 msgid "Maximum of one test_pattern may be specified in read-only mode"
-msgstr ""
-"Trong chế độ chỉ đọc, có thể xác định tối đa một mẫu thử (test_pattern)"
+msgstr "Trong chế độ chỉ đọc, có thể xác định tối đa một mẫu thử (test_pattern)"
 
 #: misc/badblocks.c:967
 msgid "Random test_pattern is not allowed in read-only mode"
@@ -3419,12 +3393,8 @@ msgstr "Không thể cấp phát bộ nhớ cho kiểu hế thống tập tin\n"
 
 #: misc/fsck.c:872
 #, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
-msgstr ""
-"%s: đang bỏ qua dòng sai trong « /etc/fstab »: đóng kết lắp với số gửi qua "
-"fsck khác số không\n"
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: đang bỏ qua dòng sai trong « /etc/fstab »: đóng kết lắp với số gửi qua fsck khác số không\n"
 
 #: misc/fsck.c:899
 #, c-format
@@ -3441,8 +3411,7 @@ msgid "--waiting-- (pass %d)\n"
 msgstr "--đang đợi-- (lần qua %d)\n"
 
 #: misc/fsck.c:1061
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
 msgstr ""
 "Cách sử dụng: fsck [-ANPRTV] [ -C [ fd ] ] [-t kiểu_HTT]\n"
 "[tùy_chọn_HTT] [HTT ...]\n"
@@ -3709,8 +3678,7 @@ msgstr "Tham số thay đổi kích cỡ không hợp lệ: %s\n"
 #: misc/mke2fs.c:819
 #, c-format
 msgid "The resize maximum must be greater than the filesystem size.\n"
-msgstr ""
-"Số thay đổi kích cỡ tối đa phải lớn hơn kích cỡ của hệ thống tập tin.\n"
+msgstr "Số thay đổi kích cỡ tối đa phải lớn hơn kích cỡ của hệ thống tập tin.\n"
 
 #: misc/mke2fs.c:843
 #, c-format
@@ -3720,7 +3688,7 @@ msgstr ""
 "trên hệ thống tập tin bản sửa đổi 0\n"
 
 #: misc/mke2fs.c:858
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -3734,15 +3702,15 @@ msgid ""
 "\ttest_fs\n"
 msgstr ""
 "\n"
-"Tùy chọn sai đã xác định.\n"
+"Sai xác định tùy chọn.\n"
 "\n"
 "Các tùy chọn đã mở rộng cũng định giới bằng dấu phẩy, có thể chấp nhận\n"
 "đối số được ngụ ý với dấu bằng « = ».\n"
 "\n"
 "Tùy chọn đã mở rộng hợp lệ:\n"
-"\tstride=<độ dài stride theo khối>\n"
+"\tstride=<chiều dài stride theo khối>\n"
 "\tresize=<kích cỡ thay đổi kích cỡ tối đa theo khối>\n"
-"\n"
+"\ttest_fs\n"
 
 #: misc/mke2fs.c:888
 #, c-format
@@ -3834,8 +3802,7 @@ msgstr "Khối %d-byte quá lớn đối với hệ thống (tối đa %d)"
 
 #: misc/mke2fs.c:1215
 #, 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 ""
 "Cảnh báo : khối %d-byte quá lớn đối với hệ thống (tối đa %d)\n"
 "nên bị buộc tiếp tục\n"
@@ -4042,7 +4009,7 @@ msgid "Please run e2fsck on the filesystem.\n"
 msgstr "Hãy chạy tiến trình e2fsck trên hệ thống tập tin.\n"
 
 #: misc/tune2fs.c:96
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n"
 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
@@ -4052,12 +4019,13 @@ msgid ""
 "\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
 "\t[-E extended-option[,...]] [-T last_check_time] [-U UUID] device\n"
 msgstr ""
-"Cách sử dụng: %s [-c số_đếm_lắp_tối_đa] [-e ứng_xử_lỗi] [-g nhóm]\n"
+"Sử dụng: %s [-c số_đếm_lắp_tối_đa] [-e ứng_xử_lỗi] [-g nhóm]\n"
 "\t[-i khoảng[d|m|w]] [-j] [-J tùy_chọn_nhật_ký]\n"
 "\t[-l] [-s cờ_thưa_thớt] [-m phần_trăm_khối_dành_riêng]\n"
 "\t[-o [^]tùy_chọn_lắp[,...]] [-r số_đếm_khối_dành_riêng]\n"
-"\t[-u người_dùng] [-C số_đếm_lắp] [-L nhãn_khối_tin] [-M thư_mục_lắp_cuối]\n"
-"\t[-O [^]tính_năng[,...]] [-T giờ_kiểm_tra_cuối] [-U UUID] thiết_bị\n"
+"\t[-u người_dùng] [-C số_đếm_lắp] [-L nhãn_khối_tin]\n"
+"\t[-M thư_mục_lắp_cuối] [-O [^]tính_năng[,...]]\n"
+"\t[-E tùy_chọn_đã_mở_rộng[,...] [-T giờ_kiểm_tra_cuối] [-U UUID] thiết_bị\n"
 
 #: misc/tune2fs.c:153
 msgid "while trying to open external journal"
@@ -4202,7 +4170,7 @@ msgid "bad uid/user name - %s"
 msgstr "UID/tên người dùng sai — %s"
 
 #: misc/tune2fs.c:804
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -4215,22 +4183,19 @@ msgid ""
 "\t^test_fs\n"
 msgstr ""
 "\n"
-"Tùy chọn sai đã xác định.\n"
+"Sai xác định tùy chọn.\n"
 "\n"
 "Các tùy chọn đã mở rộng cũng định giới bằng dấu phẩy, có thể chấp nhận\n"
 "đối số được ngụ ý với dấu bằng « = ».\n"
 "\n"
 "Tùy chọn đã mở rộng hợp lệ:\n"
-"\tstride=<độ dài stride theo khối>\n"
-"\tresize=<kích cỡ thay đổi kích cỡ tối đa theo khối>\n"
-"\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
 
 #: misc/tune2fs.c:862
-#, fuzzy, c-format
+#, c-format
 msgid "Filesystem %s has unsupported features enabled.\n"
-msgstr ""
-"Tính năng hệ thống tập tin không được hỗ trợ trên hệ thống tập tin\n"
-"bản sửa đổi 0\n"
+msgstr "Hệ thống tập tin %s đã hiệu lực tính năng không được hỗ trợ.\n"
 
 #: misc/tune2fs.c:886
 #, c-format