Merge branch 'maint' into next

Conflicts:

	lib/ext2fs/closefs.c
bitmap-optimize
Theodore Ts'o 2007-12-17 10:28:01 -05:00
commit b689b8dd14
35 changed files with 1406 additions and 5141 deletions

49
aclocal.m4 vendored
View File

@ -2600,3 +2600,52 @@ AC_DEFUN([gl_XSIZE],
AC_REQUIRE([gl_SIZE_MAX])
AC_CHECK_HEADERS(stdint.h)
])
# from http://autoconf-archive.cryp.to/ax_tls.html
#
# This was licensed under the GPL with the following exception:
#
# As a special exception, the respective Autoconf Macro's copyright
# owner gives unlimited permission to copy, distribute and modify the
# configure scripts that are the output of Autoconf when processing
# the Macro. You need not follow the terms of the GNU General Public
# License when using or distributing such scripts, even though
# portions of the text of the Macro appear in them. The GNU General
# Public License (GPL) does govern all other use of the material that
# constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the
# Autoconf Macro released by the Autoconf Macro Archive. When you make
# and distribute a modified version of the Autoconf Macro, you may
# extend this special exception to the GPL to apply to your modified
# version as well.
#
AC_DEFUN([AX_TLS], [
AC_MSG_CHECKING(for thread local storage (TLS) class)
AC_CACHE_VAL(ac_cv_tls, [
ax_tls_keywords="__thread __declspec(thread) none"
for ax_tls_keyword in $ax_tls_keywords; do
case $ax_tls_keyword in
none) ac_cv_tls=none ; break ;;
*)
AC_TRY_COMPILE(
[#include <stdlib.h>
static void
foo(void) {
static ] $ax_tls_keyword [ int bar;
exit(1);
}],
[],
[ac_cv_tls=$ax_tls_keyword ; break],
ac_cv_tls=none
)
esac
done
])
if test "$ac_cv_tls" != "none"; then
dnl AC_DEFINE([TLS], [], [If the compiler supports a TLS storage class define it to that here])
AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here])
fi
AC_MSG_RESULT($ac_cv_tls)
])

79
configure vendored
View File

@ -11406,6 +11406,81 @@ done
fi
{ echo "$as_me:$LINENO: checking for thread local storage (TLS) class" >&5
echo $ECHO_N "checking for thread local storage (TLS) class... $ECHO_C" >&6; }
if test "${ac_cv_tls+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ax_tls_keywords="__thread __declspec(thread) none"
for ax_tls_keyword in $ax_tls_keywords; do
case $ax_tls_keyword in
none) ac_cv_tls=none ; break ;;
*)
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <stdlib.h>
static void
foo(void) {
static $ax_tls_keyword int bar;
exit(1);
}
int
main ()
{
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_tls=$ax_tls_keyword ; break
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_tls=none
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
esac
done
fi
if test "$ac_cv_tls" != "none"; then
cat >>confdefs.h <<_ACEOF
#define TLS $ac_cv_tls
_ACEOF
fi
{ echo "$as_me:$LINENO: result: $ac_cv_tls" >&5
echo "${ECHO_T}$ac_cv_tls" >&6; }
@ -14490,7 +14565,9 @@ fi
for ac_func in chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime
for ac_func in chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5

View File

@ -550,6 +550,7 @@ if test $cross_compiling = no; then
else
AC_CHECK_PROGS(BUILD_CC, gcc cc)
fi
AX_TLS
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 net/if_dl.h netinet/in.h utime.h)
AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
[[
@ -656,7 +657,7 @@ AC_CHECK_MEMBER(struct sockaddr.sa_len,
[#include <sys/types.h>
#include <sys/socket.h>])
dnl
AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime)
AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid)
dnl
dnl Check to see if -lsocket is required (solaris) to make something
dnl that uses socket() to compile; this is needed for the UUID library

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
e2fsprogs (1.40.3-2) unstable; urgency=low
* Add uuidd daemon
-- Theodore Y. Ts'o <tytso@mit.edu> Sun, 09 Dec 2007 22:47:53 -0500
e2fsprogs (1.40.3-1) unstable; urgency=medium
* New upstream release

16
debian/control vendored
View File

@ -2,7 +2,7 @@ Source: e2fsprogs
Section: admin
Priority: required
Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, libsepol1-dev, libdevmapper-dev, libselinux1-dev, debhelper (>= 4)
Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libdevmapper-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], debhelper (>= 4)
Standards-Version: 3.7.3.0
Package: e2fsck-static
@ -78,12 +78,26 @@ Package: libuuid1
Section: libs
Priority: required
Depends: ${shlibs:Depends}
Recommends: uuid-runtime
Replaces: e2fsprogs (<< 1.34-1)
Architecture: any
Description: universally unique id library
libuuid generates and parses 128-bit universally unique id's (UUID's).
See RFC 4122 for more information.
Package: uuid-runtime
Section: libs
Priority: optional
Depends: ${shlibs:Depends}
Replaces: e2fsprogs (<= 1.40.3-1ubuntu1)
Architecture: any
Description: universally unique id library
libuuid generates and parses 128-bit universally unique id's (UUID's).
See RFC 4122 for more information.
.
This package contains the uuidd daemon which is used by libuuid as well as
the uuidgen program.
Package: libuuid1-udeb
Section: debian-installer
Priority: optional

8
debian/libuuid1.postinst vendored Normal file
View File

@ -0,0 +1,8 @@
#!/bin/sh
adduser --system --group --no-create-home --disabled-login \
--quiet --home /var/lib/libuuid libuuid
mkdir -p /var/lib/libuuid
chown libuuid:libuuid /var/lib/libuuid
chmod 2775 /var/lib/libuuid

6
debian/libuuid1.postrm vendored Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh
set -e
if [ "$1" = purge ]
then
rm -rf /var/lib/libuuid
fi

13
debian/rules vendored
View File

@ -14,6 +14,7 @@ export LC_ALL=C
# from having to guess our platform (since we know it already)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_HOST_OS ?= $(shell dpkg-architecture -qDEB_HOST_OS)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
@ -82,6 +83,10 @@ else
CCOPTS += -D__NO_STRING_INLINES
endif
ifeq (${DEB_HOST_ARCH_OS},linux)
DEVMAPPER = --enable-blkid-devmapper
endif
BF_CCOPTS = -Os -fomit-frame-pointer
COMMON_CONF_FLAGS = \
@ -89,7 +94,7 @@ COMMON_CONF_FLAGS = \
--infodir=/usr/share/info --enable-fsck
STD_CONF_FLAGS = --with-ccopts="${CCOPTS}" --enable-compression \
--enable-blkid-devmapper
${DEVMAPPER}
BF_CONF_FLAGS = --with-ccopts="${CCOPTS} ${BF_CCOPTS}" \
--disable-nls --disable-imager \
@ -121,7 +126,7 @@ ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
else
cd ${stdbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
--build=$(DEB_BUILD_GNU_TYPE) $(DEB_HOST_GNU_TYPE)
--build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
endif
# specially-built MIPS libs
@ -147,7 +152,7 @@ ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
else
cd ${bfbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} \
--build=$(DEB_BUILD_GNU_TYPE) $(DEB_HOST_GNU_TYPE)
--build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
endif
mkdir -p ${STAMPSDIR}
touch ${CFGBFSTAMP}
@ -352,7 +357,7 @@ binary-arch: install install-udeb
DH_OPTIONS= dh_installchangelogs -pe2fsprogs \
-plibblkid${BLKID_SOVERSION} -plibcomerr${COMERR_SOVERSION} \
-plibss${SS_SOVERSION} -plibuuid${UUID_SOVERSION} \
-pe2fslibs -puuid-dev -pe2fsck-static
-pe2fslibs -puuid-dev -puuid-runtime -pe2fsck-static
dh_fixperms
ifneq ($(ismips),)

39
debian/uuid-runtime.copyright vendored Normal file
View File

@ -0,0 +1,39 @@
This package was added to the e2fsprogs debian source package by
Theodore Ts'o <tytso@mit.edu> on Fri Dec 14 22:24:35 EST 2007
It is part of the main e2fsprogs distribution, which can be found at:
http://sourceforge.net/projects/e2fsprogs
Upstream Author: Theodore Ts'o <tytso@mit.edu>
Copyright:
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
Theodore Ts'o
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, and the entire permission notice in its entirety,
including the disclaimer of warranties.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

4
debian/uuid-runtime.files vendored Normal file
View File

@ -0,0 +1,4 @@
usr/bin/uuidgen
usr/sbin/uuidd
usr/share/man/man8/uuidd.*
usr/share/man/man1/uuidgen.*

9
debian/uuid-runtime.postinst vendored Normal file
View File

@ -0,0 +1,9 @@
#!/bin/sh
adduser --system --group --no-create-home --disabled-login \
--quiet --home /var/lib/libuuid libuuid
mkdir -p /var/run/uuidd
chown libuuid:libuuid /var/run/uuidd
chmod 775 /var/run/uuidd
chown libuuid:libuuid /usr/sbin/uuidd
chmod 6755 /usr/sbin/uuidd

7
debian/uuid-runtime.postrm vendored Normal file
View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
if [ "$1" = purge ]
then
rm -rf /var/run/uuidd
fi

6
debian/uuid-runtime.prerm vendored Normal file
View File

@ -0,0 +1,6 @@
#! /bin/sh
if [ -x /usr/sbin/uuidd ]
then
/usr/sbin/uuidd -k || true
fi

1
debian/uuid-runtime.shlibs.local vendored Normal file
View File

@ -0,0 +1 @@
libuuid 1 libuuid1 (> 1.40.3-1)

View File

@ -284,6 +284,8 @@ static int probe_fat(struct blkid_probe *probe,
(sector_size-1)) / sector_size;
cluster_count = sect_count - (reserved + fat_size + dir_size);
if (ms->ms_cluster_size == 0)
return 1;
cluster_count /= ms->ms_cluster_size;
if (cluster_count > FAT32_MAX)

View File

@ -69,7 +69,7 @@ const char * error_message (errcode_t code)
#endif
}
for (et = _et_list; et; et = et->next) {
if (et->table->base == table_num) {
if ((et->table->base & 0xffffffL) == (table_num & 0xffffffL)) {
/* This is the right table */
if (et->table->n_msgs <= offset)
goto oops;
@ -77,7 +77,7 @@ const char * error_message (errcode_t code)
}
}
for (et = _et_dynamic_list; et; et = et->next) {
if (et->table->base == table_num) {
if ((et->table->base & 0xffffffL) == (table_num & 0xffffffL)) {
/* This is the right table */
if (et->table->n_msgs <= offset)
goto oops;

View File

@ -206,6 +206,7 @@ errcode_t ext2fs_flush(ext2_filsys fs)
dgrp_t i,j;
errcode_t retval;
unsigned long fs_state;
__u32 feature_incompat;
struct ext2_super_block *super_shadow = 0;
struct ext2_group_desc *group_shadow = 0;
struct ext2_group_desc *s, *t;
@ -215,6 +216,7 @@ errcode_t ext2fs_flush(ext2_filsys fs)
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
fs_state = fs->super->s_state;
feature_incompat = fs->super->s_feature_incompat;
fs->super->s_wtime = fs->now ? fs->now : time(NULL);
fs->super->s_block_group_nr = 0;
@ -247,6 +249,7 @@ errcode_t ext2fs_flush(ext2_filsys fs)
* we write out the backup superblocks.)
*/
fs->super->s_state &= ~EXT2_VALID_FS;
fs->super->s_feature_incompat &= ~EXT3_FEATURE_INCOMPAT_RECOVER;
#ifdef WORDS_BIGENDIAN
*super_shadow = *fs->super;
ext2fs_swap_super(super_shadow);
@ -323,6 +326,7 @@ write_primary_superblock_only:
fs->super->s_block_group_nr = 0;
fs->super->s_state = fs_state;
fs->super->s_feature_incompat = feature_incompat;
#ifdef WORDS_BIGENDIAN
*super_shadow = *fs->super;
ext2fs_swap_super(super_shadow);

View File

@ -170,7 +170,7 @@ test_ss: test_ss.o test_cmd.o $(LIBEXT2FS) $(LIBSS) $(LIBCOM_ERR)
check:: all test_ss
@echo " RUN TEST test_ss"
@(test_ss -f $(srcdir)/test_script >& test_out; exit 0)
@(LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./test_ss -f $(srcdir)/test_script >& test_out; exit 0)
@if ! diff test_out $(srcdir)/test_script_expected > test.diff; then \
echo "Regression test for ss library failed!"; exit 1 ; fi

View File

@ -38,6 +38,7 @@
*/
#define _SVID_SOURCE
#include <stdio.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@ -57,6 +58,7 @@
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#include <sys/un.h>
#ifdef HAVE_SYS_SOCKIO_H
#include <sys/sockio.h>
#endif
@ -74,15 +76,22 @@
#endif
#include "uuidP.h"
#include "uuidd.h"
#ifdef HAVE_SRANDOM
#define srand(x) srandom(x)
#define rand() random()
#endif
#ifdef TLS
#define THREAD_LOCAL static TLS
#else
#define THREAD_LOCAL static
#endif
#if defined(__linux__) && defined(__NR_gettid) && defined(HAVE_JRAND48)
#define DO_JRAND_MIX
static unsigned short jrand_seed[3];
THREAD_LOCAL unsigned short jrand_seed[3];
#endif
static int get_random_fd(void)
@ -247,22 +256,62 @@ static int get_node_id(unsigned char *node_id)
/* Assume that the gettimeofday() has microsecond granularity */
#define MAX_ADJUSTMENT 10
static int get_clock(uint32_t *clock_high, uint32_t *clock_low, uint16_t *ret_clock_seq)
static int get_clock(uint32_t *clock_high, uint32_t *clock_low,
uint16_t *ret_clock_seq, int *num)
{
static int adjustment = 0;
static struct timeval last = {0, 0};
static uint16_t clock_seq;
THREAD_LOCAL int adjustment = 0;
THREAD_LOCAL struct timeval last = {0, 0};
THREAD_LOCAL int state_fd = -2;
THREAD_LOCAL FILE *state_f;
THREAD_LOCAL uint16_t clock_seq;
struct timeval tv;
unsigned long long clock_reg;
try_again:
gettimeofday(&tv, 0);
mode_t save_umask;
if (state_fd == -2) {
save_umask = umask(0);
state_fd = open("/var/lib/libuuid/clock.txt",
O_RDWR|O_CREAT, 0660);
(void) umask(save_umask);
state_f = fdopen(state_fd, "r+");
if (!state_f) {
close(state_fd);
state_fd = -1;
}
}
if (state_fd >= 0) {
rewind(state_f);
while (lockf(state_fd, F_LOCK, 0) < 0) {
if ((errno == EAGAIN) || (errno == EINTR))
continue;
fclose(state_f);
close(state_fd);
state_fd = -1;
}
}
if (state_fd >= 0) {
unsigned int cl;
unsigned long tv1, tv2;
int a;
if (fscanf(state_f, "clock: %04x tv: %lu %lu adj: %d\n",
&cl, &tv1, &tv2, &a) == 4) {
clock_seq = cl & 0x3FFF;
last.tv_sec = tv1;
last.tv_usec = tv2;
adjustment = a;
}
}
if ((last.tv_sec == 0) && (last.tv_usec == 0)) {
get_random_bytes(&clock_seq, sizeof(clock_seq));
clock_seq &= 0x3FFF;
last = tv;
last.tv_sec--;
}
try_again:
gettimeofday(&tv, 0);
if ((tv.tv_sec < last.tv_sec) ||
((tv.tv_sec == last.tv_sec) &&
(tv.tv_usec < last.tv_usec))) {
@ -283,13 +332,124 @@ try_again:
clock_reg += ((unsigned long long) tv.tv_sec)*10000000;
clock_reg += (((unsigned long long) 0x01B21DD2) << 32) + 0x13814000;
if (num && (*num > 1)) {
adjustment += *num - 1;
last.tv_usec += adjustment / 10;
adjustment = adjustment % 10;
last.tv_sec += last.tv_usec / 1000000;
last.tv_usec = last.tv_usec % 1000000;
}
if (state_fd > 0) {
rewind(state_f);
ftruncate(state_fd, 0);
fprintf(state_f, "clock: %04x tv: %lu %lu adj: %d\n",
clock_seq, last.tv_sec, last.tv_usec, adjustment);
fflush(state_f);
rewind(state_f);
lockf(state_fd, F_ULOCK, 0);
}
*clock_high = clock_reg >> 32;
*clock_low = clock_reg;
*ret_clock_seq = clock_seq;
return 0;
}
void uuid_generate_time(uuid_t out)
static ssize_t read_all(int fd, char *buf, size_t count)
{
ssize_t ret;
ssize_t c = 0;
memset(buf, 0, count);
while (count > 0) {
ret = read(fd, buf, count);
if (ret < 0) {
if ((errno == EAGAIN) || (errno == EINTR))
continue;
return -1;
}
count -= ret;
buf += ret;
c += ret;
}
return c;
}
/*
* Try using the uuidd daemon to generate the UUID
*
* Returns 0 on success, non-zero on failure.
*/
static int get_uuid_via_daemon(int op, uuid_t out, int *num)
{
char op_buf[64];
int op_len;
int s;
ssize_t ret;
int32_t reply_len = 0, expected = 16;
struct sockaddr_un srv_addr;
static const char *uuidd_path = UUIDD_PATH;
static int access_ret = -2;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
return -1;
srv_addr.sun_family = AF_UNIX;
strcpy(srv_addr.sun_path, UUIDD_SOCKET_PATH);
if (connect(s, (const struct sockaddr *) &srv_addr,
sizeof(struct sockaddr_un)) < 0) {
if (access_ret == -2)
access_ret = access(uuidd_path, X_OK);
if (access_ret == 0) {
if (fork() == 0) {
execl(uuidd_path, "uuidd", "-qT", "300", 0);
exit(1);
}
usleep(500);
if (connect(s, (const struct sockaddr *) &srv_addr,
sizeof(struct sockaddr_un)) < 0)
goto fail;
} else
goto fail;
}
op_buf[0] = op;
op_len = 1;
if (op == UUIDD_OP_BULK_TIME_UUID) {
memcpy(op_buf+1, num, sizeof(num));
op_len += sizeof(num);
expected += sizeof(num);
}
ret = write(s, op_buf, op_len);
if (ret < 1)
goto fail;
ret = read_all(s, (char *) &reply_len, sizeof(reply_len));
if (ret < 0)
goto fail;
if (reply_len != expected)
goto fail;
ret = read_all(s, op_buf, reply_len);
if (op == UUIDD_OP_BULK_TIME_UUID)
memcpy(op_buf+16, num, sizeof(int));
memcpy(out, op_buf, 16);
close(s);
return ((ret == expected) ? 0 : -1);
fail:
close(s);
return -1;
}
void uuid__generate_time(uuid_t out, int *num)
{
static unsigned char node_id[6];
static int has_init = 0;
@ -308,7 +468,7 @@ void uuid_generate_time(uuid_t out)
}
has_init = 1;
}
get_clock(&clock_mid, &uu.time_low, &uu.clock_seq);
get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num);
uu.clock_seq |= 0x8000;
uu.time_mid = (uint16_t) clock_mid;
uu.time_hi_and_version = ((clock_mid >> 16) & 0x0FFF) | 0x1000;
@ -316,19 +476,82 @@ void uuid_generate_time(uuid_t out)
uuid_pack(&uu, out);
}
void uuid_generate_random(uuid_t out)
void uuid_generate_time(uuid_t out)
{
#ifdef TLS
THREAD_LOCAL int num = 0;
THREAD_LOCAL struct uuid uu;
THREAD_LOCAL time_t last_time = 0;
time_t now;
if (num > 0) {
now = time(0);
if (now > last_time+1)
num = 0;
}
if (num <= 0) {
num = 1000;
if (get_uuid_via_daemon(UUIDD_OP_BULK_TIME_UUID,
out, &num) == 0) {
last_time = time(0);
uuid_unpack(out, &uu);
num--;
return;
}
num = 0;
}
if (num > 0) {
uu.time_low++;
if (uu.time_low == 0) {
uu.time_mid++;
if (uu.time_mid == 0)
uu.time_hi_and_version++;
}
num--;
uuid_pack(&uu, out);
return;
}
#else
if (get_uuid_via_daemon(UUIDD_OP_TIME_UUID, out, 0) == 0)
return;
#endif
uuid__generate_time(out, 0);
}
void uuid__generate_random(uuid_t out, int *num)
{
uuid_t buf;
struct uuid uu;
int i, n;
get_random_bytes(buf, sizeof(buf));
uuid_unpack(buf, &uu);
if (!num || !*num)
n = 1;
else
n = *num;
uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF) | 0x4000;
uuid_pack(&uu, out);
for (i = 0; i < n; i++) {
get_random_bytes(buf, sizeof(buf));
uuid_unpack(buf, &uu);
uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000;
uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF)
| 0x4000;
uuid_pack(&uu, out);
out += sizeof(uuid_t);
}
}
void uuid_generate_random(uuid_t out)
{
int num = 1;
/* No real reason to use the daemon for random uuid's -- yet */
uuid__generate_random(out, &num);
}
/*
* This is the generic front-end to uuid_generate_random and
* uuid_generate_time. It uses uuid_generate_random only if

View File

@ -46,8 +46,8 @@ The
function converts the supplied UUID
.I uu
from the binary representation into a 36\-byte string (plus tailing '\\0')
of the form 1b4e28ba\-2fa1\-11d2\-883f\-b9a76 and stores this value in the
character string pointed to by
of the form 1b4e28ba\-2fa1\-11d2\-883f\-0016d3cca427 and stores this
value in the character string pointed to by
.IR out .
The case of the hex digits returned by
.B uuid_unparse

53
lib/uuid/uuidd.h Normal file
View File

@ -0,0 +1,53 @@
/*
* Definitions used by the uuidd daemon
*
* Copyright (C) 2007 Theodore Ts'o.
*
* %Begin-Header%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, and the entire permission notice in its entirety,
* including the disclaimer of warranties.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
* WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
* %End-Header%
*/
#ifndef _UUID_UUIDD_H
#define _UUID_UUIDD_H
#define UUIDD_SOCKET_PATH "/var/run/uuidd/request"
#define UUIDD_PIDFILE_PATH "/var/run/uuidd/uuidd.pid"
#define UUIDD_PATH "/usr/sbin/uuidd"
#define UUIDD_OP_GETPID 0
#define UUIDD_OP_GET_MAXOP 1
#define UUIDD_OP_TIME_UUID 2
#define UUIDD_OP_RANDOM_UUID 3
#define UUIDD_OP_BULK_TIME_UUID 4
#define UUIDD_OP_BULK_RANDOM_UUID 5
#define UUIDD_MAX_OP UUIDD_OP_BULK_RANDOM_UUID
extern void uuid__generate_time(uuid_t out, int *num);
extern void uuid__generate_random(uuid_t out, int *num);
#endif /* _UUID_UUID_H */

View File

@ -15,11 +15,11 @@ INSTALL = @INSTALL@
@IMAGER_CMT@E2IMAGE_MAN= e2image.8
SPROGS= mke2fs badblocks tune2fs dumpe2fs blkid logsave \
$(E2IMAGE_PROG) @FSCK_PROG@
USPROGS= mklost+found filefrag
$(E2IMAGE_PROG) @FSCK_PROG@
USPROGS= mklost+found filefrag uuidd
SMANPAGES= tune2fs.8 mklost+found.8 mke2fs.8 dumpe2fs.8 badblocks.8 \
e2label.8 findfs.8 blkid.8 $(E2IMAGE_MAN) \
logsave.8 filefrag.8 @FSCK_MAN@
logsave.8 filefrag.8 uuidd.8 @FSCK_MAN@
FMANPAGES= mke2fs.conf.5
UPROGS= chattr lsattr uuidgen
@ -33,6 +33,7 @@ MKE2FS_OBJS= mke2fs.o util.o profile.o prof_err.o default_profile.o
CHATTR_OBJS= chattr.o
LSATTR_OBJS= lsattr.o
UUIDGEN_OBJS= uuidgen.o
UUIDD_OBJS= uuidd.o
DUMPE2FS_OBJS= dumpe2fs.o
BADBLOCKS_OBJS= badblocks.o
E2IMAGE_OBJS= e2image.o
@ -144,6 +145,10 @@ uuidgen: $(UUIDGEN_OBJS) $(DEPLIBUUID)
@echo " LD $@"
@$(CC) $(ALL_LDFLAGS) -o uuidgen $(UUIDGEN_OBJS) $(LIBUUID) $(LIBINTL)
uuidd: $(UUIDD_OBJS) $(DEPLIBUUID)
@echo " LD $@"
@$(CC) $(ALL_LDFLAGS) -o uuidd $(UUIDD_OBJS) $(LIBUUID) $(LIBINTL)
dumpe2fs: $(DUMPE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBUUID)
@echo " LD $@"
@$(CC) $(ALL_LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS) \
@ -213,6 +218,10 @@ logsave.8: $(DEP_SUBSTITUTE) $(srcdir)/logsave.8.in
@echo " SUBST $@"
@$(SUBSTITUTE_UPTIME) $(srcdir)/logsave.8.in logsave.8
uuidd.8: $(DEP_SUBSTITUTE) $(srcdir)/uuidd.8.in
@echo " SUBST $@"
@$(SUBSTITUTE_UPTIME) $(srcdir)/uuidd.8.in uuidd.8
chattr.1: $(DEP_SUBSTITUTE) $(srcdir)/chattr.1.in
@echo " SUBST $@"
@$(SUBSTITUTE_UPTIME) $(srcdir)/chattr.1.in chattr.1
@ -239,7 +248,8 @@ installdirs:
$(DESTDIR)$(root_sbindir) $(DESTDIR)$(bindir) \
$(DESTDIR)$(man1dir) $(DESTDIR)$(man8dir) \
$(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
$(DESTDIR)$(libdir) $(DESTDIR)/$(root_sysconfdir)
$(DESTDIR)$(libdir) $(DESTDIR)/$(root_sysconfdir) \
$(DESTDIR)/etc/init.d
install: all $(SMANPAGES) $(UMANPAGES) installdirs
@for i in $(SPROGS); do \

View File

@ -53,6 +53,31 @@ static void usage(int error)
exit(error);
}
/*
* This function does "safe" printing. It will convert non-printable
* ASCII characters using '^' and M- notation.
*/
static void safe_print(const char *cp, int len)
{
unsigned char ch;
if (len < 0)
len = strlen(cp);
while (len--) {
ch = *cp++;
if (ch > 128) {
fputs("M-", stdout);
ch -= 128;
}
if ((ch < 32) || (ch == 0x7f)) {
fputc('^', stdout);
ch ^= 0x40; /* ^@, ^A, ^B; ^? for DEL */
}
fputc(ch, stdout);
}
}
static void print_tags(blkid_dev dev, char *show[], int numtag, int output)
{
blkid_tag_iterate iter;
@ -76,14 +101,19 @@ static void print_tags(blkid_dev dev, char *show[], int numtag, int output)
if (i >= numtag)
continue;
}
if (first && !(output & OUTPUT_VALUE_ONLY)) {
printf("%s: ", blkid_dev_devname(dev));
first = 0;
if (output & OUTPUT_VALUE_ONLY) {
fputs(value, stdout);
fputc('\n', stdout);
} else {
if (first) {
printf("%s: ", blkid_dev_devname(dev));
first = 0;
}
fputs(type, stdout);
fputs("=\"", stdout);
safe_print(value, -1);
fputs("\" ", stdout);
}
if ((output & OUTPUT_VALUE_ONLY))
printf("%s\n", value);
else
printf("%s=\"%s\" ", type, value);
}
blkid_tag_iterate_end(iter);

View File

@ -275,20 +275,17 @@ static int parse_fstab_line(char *line, struct fs_info **ret_fs)
*ret_fs = 0;
strip_line(line);
if ((cp = strchr(line, '#')))
*cp = 0; /* Ignore everything after the comment char */
cp = line;
device = parse_word(&cp);
if (!device || *device == '#')
return 0; /* Ignore blank lines and comments */
mntpnt = parse_word(&cp);
type = parse_word(&cp);
opts = parse_word(&cp);
freq = parse_word(&cp);
passno = parse_word(&cp);
if (!device)
return 0; /* Allow blank lines */
if (!mntpnt || !type)
return -1;

97
misc/uuidd.8.in Normal file
View File

@ -0,0 +1,97 @@
.\" -*- nroff -*-
.\" Copyright 2007 by Theodore Ts'o. All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\"
.TH UUIDD 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
uuidd \- UUID generation daemon
.SH SYNOPSIS
.B uuidd
[
.B \-d
]
[
.B \-p
.I pidfile
]
[
.B \-s
.I socketpath
]
[
.B \-T
.I timeout
]
.B uuidd
[
.B \-r
|
.B \-t
]
[
.B \-n
.I number
]
[
.B \-s
.I socketpath
]
.B uuidd \-k
.SH DESCRIPTION
The
.B uuidd
daemon is used by the UUID library to generate
universally unique identifiers (UUIDs), especially time-based UUID's
in a secure and guaranteed-unique fashion, even in the face of large
numbers of threads trying to grab UUID's running on different CPU's.
.SH OPTIONS
.TP
.B \-d
Run
.B uuidd
in debugging mode. This prevents uuidd from running as a daemon.
.TP
.B \-k
If a currently uuidd daemon is running, kill it.
.TP
.BI \-n " number"
When issuing a test request to a running uuidd, request a bulk response
of
.I number
UUID's.
.TP
.BI \-p " pidfile"
Specify the pathname where the pid file should be written. By default,
the pid file is written to /var/run/uuidd.pid.
.TP
.BI \-s " socketpath"
Specify the pathname used for the unix-domain socket used by uuidd. By
qdefault, the pathname used is /var/run/uuidd.sock. This is primarily
for debugging purposes, since the pathname is hard-coded in the libuuid
library.
.TP
.B \-r
Test uuidd by trying to connect to a running uuidd daemon and
request it to return a random-based UUID.
.TP
.B \-t
Test uuidd by trying to connect to a running uuidd daemon and
request it to return a time-based UUID.
.TP
.BI \-T " timeout"
Specify a timeout for uuidd. If specified, then uuidd will exit after
.I timeout
seconds of inactivity.
.SH AUTHOR
The
.B uuidd
daemon was written by Theodore Ts'o <tytso@mit.edu>.
.SH AVAILABILITY
.B uuidd
is part of libuuid from the e2fsprogs package and is available from
http://e2fsprogs.sourceforge.net.
.SH "SEE ALSO"
.BR libuuid (3),
.BR uuidgen (1)

518
misc/uuidd.c Normal file
View File

@ -0,0 +1,518 @@
/*
* uuidd.c --- UUID-generation daemon
*
* Copyright (C) 2007 Theodore Ts'o
*
* %Begin-Header%
* This file may be redistributed under the terms of the GNU Public
* License.
* %End-Header%
*/
#include <stdio.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <unistd.h>
#include <inttypes.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <fcntl.h>
#include <signal.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#else
extern int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind;
#endif
#include "uuid/uuid.h"
#include "uuid/uuidd.h"
#include "nls-enable.h"
#ifdef __GNUC__
#define CODE_ATTR(x) __attribute__(x)
#else
#define CODE_ATTR(x)
#endif
static void usage(const char *progname)
{
fprintf(stderr, _("Usage: %s [-d] [-p pidfile] [-s socketpath] "
"[-T timeout]\n"), progname);
fprintf(stderr, _(" %s [-r|t] [-n num] [-s socketpath]\n"),
progname);
fprintf(stderr, _(" %s -k\n"), progname);
exit(1);
}
static void create_daemon(const char *pidfile_path)
{
pid_t pid;
uid_t euid;
FILE *f;
pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
} else if (pid != 0) {
exit(0);
}
close(0);
close(1);
close(2);
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
open("/dev/null", O_RDWR);
chdir("/");
(void) setsid();
euid = geteuid();
(void) setreuid(euid, euid);
f = fopen(pidfile_path, "w");
if (f) {
fprintf(f, "%d\n", getpid());
fclose(f);
}
}
static int read_all(int fd, char *buf, size_t count)
{
ssize_t ret;
int c = 0;
memset(buf, 0, count);
while (count > 0) {
ret = read(fd, buf, count);
if (ret < 0) {
if ((errno == EAGAIN) || (errno == EINTR))
continue;
return -1;
}
count -= ret;
buf += ret;
c += ret;
}
return c;
}
static const char *cleanup_pidfile, *cleanup_socket;
static void terminate_intr(int signo CODE_ATTR((unused)))
{
(void) unlink(cleanup_pidfile);
(void) unlink(cleanup_socket);
exit(0);
}
static void server_loop(const char *socket_path, int debug,
const char *pidfile_path,
int timeout, int quiet)
{
struct sockaddr_un my_addr, from_addr;
unsigned char reply_buf[1024], *cp;
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;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
if (!quiet)
fprintf(stderr, _("Couldn't create unix stream "
"socket: %s"), strerror(errno));
exit(1);
}
/*
* Create the address we will be binding to.
*/
my_addr.sun_family = AF_UNIX;
strcpy(my_addr.sun_path, socket_path);
(void) unlink(socket_path);
save_umask = umask(0);
if (bind(s, (const struct sockaddr *) &my_addr,
sizeof(struct sockaddr_un)) < 0) {
if (!quiet)
fprintf(stderr,
_("Couldn't bind unix socket %s: %s\n"),
socket_path, strerror(errno));
exit(1);
}
(void) umask(save_umask);
if (listen(s, 5) < 0) {
if (!quiet)
fprintf(stderr, _("Couldn't listen on unix "
"socket %s: %s\n"), socket_path,
strerror(errno));
exit(1);
}
if (!debug) {
create_daemon(pidfile_path);
cleanup_pidfile = pidfile_path;
cleanup_socket = socket_path;
signal(SIGHUP, terminate_intr);
signal(SIGINT, terminate_intr);
signal(SIGPIPE, terminate_intr);
signal(SIGTERM, terminate_intr);
signal(SIGALRM, terminate_intr);
}
signal(SIGPIPE, SIG_IGN);
while (1) {
fromlen = sizeof(from_addr);
if (timeout > 0)
alarm(timeout);
ns = accept(s, (struct sockaddr *) &from_addr, &fromlen);
alarm(0);
if (ns < 0) {
if ((errno == EAGAIN) || (errno == EINTR))
continue;
perror("accept");
exit(1);
}
len = read(ns, &op, 1);
if (len != 1) {
if (len < 0)
perror("read");
else
printf(_("Error reading from client, "
"len = %d\n"), len);
goto shutdown_socket;
}
if ((op == 4) || (op == 5)) {
if (read_all(ns, (char *) &num, sizeof(num)) != 4)
goto shutdown_socket;
if (debug)
printf(_("operation %d, incoming num = %d\n"),
op, num);
} else if (debug)
printf("operation %d\n", op);
switch(op) {
case UUIDD_OP_GETPID:
sprintf((char *) reply_buf, "%d", getpid());
reply_len = strlen((char *) reply_buf)+1;
break;
case UUIDD_OP_GET_MAXOP:
sprintf((char *) reply_buf, "%d", UUIDD_MAX_OP);
reply_len = strlen((char *) reply_buf)+1;
break;
case UUIDD_OP_TIME_UUID:
num = 1;
uuid__generate_time(uu, &num);
if (debug) {
uuid_unparse(uu, str);
printf(_("Generated time UUID: %s\n"), str);
}
memcpy(reply_buf, uu, sizeof(uu));
reply_len = sizeof(uu);
break;
case UUIDD_OP_RANDOM_UUID:
num = 1;
uuid__generate_random(uu, &num);
if (debug) {
uuid_unparse(uu, str);
printf(_("Generated random UUID: %s\n"), str);
}
memcpy(reply_buf, uu, sizeof(uu));
reply_len = sizeof(uu);
break;
case UUIDD_OP_BULK_TIME_UUID:
uuid__generate_time(uu, &num);
if (debug) {
uuid_unparse(uu, str);
printf(_("Generated time UUID %s and %d "
"following\n"), str, num);
}
memcpy(reply_buf, uu, sizeof(uu));
reply_len = sizeof(uu);
memcpy(reply_buf+reply_len, &num, sizeof(num));
reply_len += sizeof(num);
break;
case UUIDD_OP_BULK_RANDOM_UUID:
if (num < 0)
num = 1;
if (num > 1000)
num = 1000;
if (num*16 > (int) (sizeof(reply_buf)-sizeof(num)))
num = (sizeof(reply_buf)-sizeof(num)) / 16;
uuid__generate_random(reply_buf+sizeof(num), &num);
if (debug) {
printf(_("Generated %d UUID's:\n"), num);
for (i=0, cp=reply_buf+sizeof(num);
i < num; i++, cp+=16) {
uuid_unparse(cp, str);
printf("\t%s\n", str);
}
}
reply_len = (num*16) + sizeof(num);
memcpy(reply_buf, &num, sizeof(num));
break;
default:
if (debug)
printf(_("Invalid operation %d\n"), op);
goto shutdown_socket;
}
write(ns, &reply_len, sizeof(reply_len));
write(ns, reply_buf, reply_len);
shutdown_socket:
close(ns);
}
}
static int call_daemon(const char *socket_path, int op, unsigned 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;
}
int main(int argc, char **argv)
{
const char *socket_path = UUIDD_SOCKET_PATH;
const char *pidfile_path = UUIDD_PIDFILE_PATH;
const char *err_context;
unsigned char buf[1024], *cp;
char str[37], *tmp;
uuid_t uu;
uid_t uid;
gid_t gid;
int i, c, ret;
int debug = 0, do_type = 0, do_kill = 0, num = 0;
int timeout = 0, quiet = 0, drop_privs = 0;
#ifdef ENABLE_NLS
setlocale(LC_MESSAGES, "");
setlocale(LC_CTYPE, "");
bindtextdomain(NLS_CAT_NAME, LOCALEDIR);
textdomain(NLS_CAT_NAME);
#endif
while ((c = getopt (argc, argv, "dkn:qp:s:tT:r")) != EOF) {
switch (c) {
case 'd':
debug++;
drop_privs++;
break;
case 'k':
do_kill++;
drop_privs++;
break;
case 'n':
num = strtol(optarg, &tmp, 0);
if ((num < 0) || *tmp) {
fprintf(stderr, _("Bad number: %s\n"), optarg);
exit(1);
}
case 'p':
pidfile_path = optarg;
drop_privs++;
break;
case 'q':
quiet++;
break;
case 's':
socket_path = optarg;
drop_privs++;
break;
case 't':
do_type = UUIDD_OP_TIME_UUID;
drop_privs++;
break;
case 'T':
timeout = strtol(optarg, &tmp, 0);
if ((timeout < 0) || *tmp) {
fprintf(stderr, _("Bad number: %s\n"), optarg);
exit(1);
}
break;
case 'r':
do_type = UUIDD_OP_RANDOM_UUID;
drop_privs++;
break;
default:
usage(argv[0]);
}
}
uid = getuid();
if (uid && drop_privs) {
gid = getgid();
#ifdef HAVE_SETRESUID
setresuid(uid, uid, uid);
#else
setreuid(uid, uid);
#endif
#ifdef HAVE_SETRESGID
setresgid(gid, gid, gid);
#else
setregid(gid, gid);
#endif
}
if (num && do_type) {
ret = call_daemon(socket_path, do_type+2, buf,
sizeof(buf), &num, &err_context);
if (ret < 0) {
printf(_("Error calling uuidd daemon (%s): %s\n"),
err_context, strerror(errno));
exit(1);
}
if (do_type == UUIDD_OP_TIME_UUID) {
if (ret != sizeof(uu) + sizeof(num))
goto unexpected_size;
uuid_unparse(buf, str);
printf(_("%s and subsequent %d UUID's\n"), str, num);
} else {
printf(_("List of UUID's:\n"));
cp = buf + 4;
if (ret != sizeof(num) + num*sizeof(uu))
goto unexpected_size;
for (i=0; i < num; i++, cp+=16) {
uuid_unparse(cp, str);
printf("\t%s\n", str);
}
}
exit(0);
}
if (do_type) {
ret = call_daemon(socket_path, do_type, (unsigned char *) &uu,
sizeof(uu), 0, &err_context);
if (ret < 0) {
printf(_("Error calling uuidd daemon (%s): %s\n"),
err_context, strerror(errno));
exit(1);
}
if (ret != sizeof(uu)) {
unexpected_size:
printf(_("Unexpected reply length from server %d\n"),
ret);
exit(1);
}
uuid_unparse(uu, str);
printf("%s\n", str);
exit(0);
}
/*
* Check to make sure there isn't another daemon running already
*/
ret = call_daemon(socket_path, 0, buf, sizeof(buf), 0, 0);
if (ret > 0) {
if (do_kill && ((do_kill = atoi((char *) buf)) > 0)) {
ret = kill(do_kill, SIGTERM);
if (ret < 0) {
if (!quiet)
fprintf(stderr,
_("Couldn't kill uuidd running "
"at pid %d: %s\n"), do_kill,
strerror(errno));
exit(1);
}
if (!quiet)
printf(_("Killed uuidd running at pid %d\n"),
do_kill);
exit(0);
}
if (!quiet)
printf(_("uuidd daemon already running at pid %s\n"),
buf);
exit(1);
}
if (do_kill)
exit(0); /* Nothing to kill */
server_loop(socket_path, debug, pidfile_path, timeout, quiet);
return 0;
}

55
misc/uuidd.rc Normal file
View File

@ -0,0 +1,55 @@
#! /bin/sh -e
### BEGIN INIT INFO
# Provides: uuidd
# Required-Start: $time $local_fs
# Required-Stop: $time $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: uuidd daemon
# Description: Init script for the uuid generation daemon
### END INIT INFO
#
# Author: "Theodore Ts'o" <tytso@mit.edu>
#
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/uuidd
PIDFILE=/var/run/uuidd/uuidd.pid
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting uuid generator" "uuidd"
start_daemon -p $PIDFILE $DAEMON
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping uuidd generator" "uuidd"
killproc -p $PIDFILE $DAEMON
log_end_msg $?
;;
status)
if pidofproc -p $PIDFILE $DAEMON >& /dev/null ; then
echo "$DAEMON is running";
exit 0;
else
echo "$DAEMON is NOT running";
if test -f /var/run/uuidd.pid; then exit 2; fi
exit 3;
fi
;;
force-reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/uuidd {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0

View File

@ -1 +1 @@
ca cs de es fr it nl pl rw sv tr vi
ca cs de es fr it nl pl sv tr vi

BIN
po/nl.gmo

Binary file not shown.

258
po/nl.po
View File

@ -1,4 +1,4 @@
# Translation of e2fsprogs-1.40.1 to Dutch.
# 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.
#
@ -62,10 +62,10 @@
#.
msgid ""
msgstr ""
"Project-Id-Version: e2fsprogs 1.40.1\n"
"Project-Id-Version: e2fsprogs-1.40.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2007-12-05 19:25-0500\n"
"PO-Revision-Date: 2007-08-14 11:12+0200\n"
"PO-Revision-Date: 2007-12-11 16:54+0100\n"
"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"MIME-Version: 1.0\n"
@ -112,8 +112,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 +178,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
@ -534,7 +532,7 @@ msgstr "Stap 2"
#: e2fsck/pass3.c:79
msgid "inode done bitmap"
msgstr "bitkaart van affe inodes"
msgstr "bitkaart van behandelde inodes"
#: e2fsck/pass3.c:90
msgid "Peak memory"
@ -880,15 +878,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 +894,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 +958,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 +1028,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 +1074,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 +1102,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 +1174,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 +1200,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 +1223,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 +1233,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 +1315,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 +1344,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 +1371,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 +1381,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 +1396,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 +1416,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 +1453,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 +1470,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 +1507,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 +1574,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 +1868,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 +1883,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 +1919,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 +1994,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 +2035,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 +2062,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 +2199,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 +2328,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 +2353,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,7 +2425,7 @@ msgstr " is niet goed ontkoppeld"
#: e2fsck/unix.c:284
msgid " primary superblock features different from backup"
msgstr ""
msgstr " het primaire superblok heeft andere functievlaggen gezet dan de reserveblokken"
#: e2fsck/unix.c:288
#, c-format
@ -2563,8 +2504,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:459 misc/tune2fs.c:717 misc/tune2fs.c:734
#, c-format
@ -2587,6 +2527,8 @@ msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
msgstr ""
"E2FSCK_JBD_DEBUG -- \"%s\" is geen geheel getal\n"
"\n"
#: e2fsck/unix.c:864
#, c-format
@ -2595,6 +2537,9 @@ msgid ""
"Invalid non-numeric argument to -%c (\"%s\")\n"
"\n"
msgstr ""
"\n"
"Ongeldig niet-numeriek argument van '-%c': \"%s\"\n"
"\n"
#: e2fsck/unix.c:903
#, c-format
@ -2615,13 +2560,13 @@ msgid "need terminal for interactive repairs"
msgstr "voor interactieve reparaties is een terminal vereist"
#: e2fsck/unix.c:977
#, fuzzy, c-format
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr "%s reservekopieën worden bekeken...\n"
msgstr "%s: %s reservekopieblokken worden bekeken...\n"
#: e2fsck/unix.c:979
msgid "Superblock invalid,"
msgstr ""
msgstr "Superblok is ongeldig --"
#: e2fsck/unix.c:980
msgid "Group descriptors look bad..."
@ -2646,8 +2591,7 @@ msgstr "Is dit misschien een partitie met lengte nul?\n"
#: e2fsck/unix.c:1002
#, 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:1007
#, c-format
@ -2657,8 +2601,7 @@ msgstr "Mogelijk een niet-bestaand apparaat of een swap-apparaat?\n"
#: e2fsck/unix.c:1009
#, 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:1013
#, c-format
@ -2680,9 +2623,7 @@ msgstr "tijdens controle van het ext3-journal van %s"
#: e2fsck/unix.c:1109
#, 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"
@ -2753,8 +2694,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:1280
#, c-format
@ -2944,8 +2884,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"
@ -2984,8 +2923,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"
@ -3019,13 +2957,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 ""
@ -3462,10 +3398,10 @@ msgstr "Kan geen geheugen reserveren voor bestandssysteemsoorten.\n"
#: misc/fsck.c:875
#, 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"
#: misc/fsck.c:902
#, c-format
@ -3482,8 +3418,7 @@ msgid "--waiting-- (pass %d)\n"
msgstr "--wachten-- (volgnummer %d)\n"
#: misc/fsck.c:1064
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"
@ -3514,7 +3449,7 @@ msgid "While reading version on %s"
msgstr "Tijdens lezen van versie op %s"
#: misc/mke2fs.c:97
#, fuzzy, c-format
#, c-format
msgid ""
"Usage: %s [-c|-t|-l filename] [-b block-size] [-f fragment-size]\n"
"\t[-i bytes-per-inode] [-I inode-size] [-j] [-J journal-options]\n"
@ -3528,8 +3463,8 @@ msgstr ""
" [-j] [-J journalopties] [-L label] [-M laatst_aangekoppelde_map]\n"
" [-m percentage_gereserveerde_blokken] [-N aantal_inodes]\n"
" [-o naam_van_aanmakende_besturingssyteem] [-O functie[,...]]\n"
" [-r bestandssysteemversie] [-R opties] [-T bestandssysteemtype]\n"
" [-nqSvV] apparaat [aantal_blokken]\n"
" [-r bestandssysteemversie] [-T bestandssysteemtype] [-nqSvV]\n"
" [-E uitgebreide_optie[,...]] apparaat [aantal_blokken]\n"
#: misc/mke2fs.c:197
#, c-format
@ -3548,8 +3483,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
@ -3750,15 +3684,12 @@ 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:856
#, c-format
@ -3807,8 +3738,7 @@ msgstr "ongeldige blokgrootte: %s"
#: misc/mke2fs.c:1008
#, 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:1025
#, c-format
@ -3818,8 +3748,7 @@ msgstr "ongeldige fragmentgrootte: %s"
#: misc/mke2fs.c:1031
#, 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:1038
msgid "Illegal number for blocks per group"
@ -3868,8 +3797,7 @@ msgstr "tijdens openen van journal-apparaat %s\n"
#: misc/mke2fs.c:1193
#, 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:1207
#, c-format
@ -3878,8 +3806,7 @@ msgstr "Blokken van %d bytes zijn te groot voor dit systeem (max %d)."
#: misc/mke2fs.c:1211
#, 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"
@ -3920,16 +3847,12 @@ msgstr "Bestandssysteem is groter dan de schijnbare apparaatgrootte."
#: misc/mke2fs.c:1331
#, 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:1338
#, 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:1350
#, c-format
@ -3942,9 +3865,7 @@ msgstr "tijdens bepalen van de grootte van een sector"
#: misc/mke2fs.c:1428
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:1437
msgid "blocks per group count out of range"
@ -3979,8 +3900,7 @@ msgstr "ongeldige inode-grootte %d (min %d / max %d)"
#: misc/mke2fs.c:1474
#, 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:1486
#, c-format
@ -4069,7 +3989,7 @@ msgid ""
"done\n"
"\n"
msgstr ""
"klaar\n"
"voltooid\n"
"\n"
#: misc/mklost+found.c:49
@ -4095,8 +4015,7 @@ msgstr ""
" [-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"
" [-o [^]aankoppelingsopties[,...]] [-r aantal_gereserveerde_blokken]\n"
" [-s schaarsheidsvlag] [-T tijdstip_van_laatste_controle]\n"
" [-u gebruiker] [-U UUID] apparaat\n"
@ -4579,6 +4498,3 @@ msgstr "blokken voor metagegevens"
#, c-format
msgid "Should never happen: resize inode corrupt!\n"
msgstr "Zou nooit mogen gebeuren: de 'resize'-inode is beschadigd!\n"
#~ msgid "Couldn't find ext2 superblock,"
#~ msgstr "Kan het ext2-superblok niet vinden --"

BIN
po/pl.gmo

Binary file not shown.

135
po/pl.po
View File

@ -63,17 +63,16 @@
#.
msgid ""
msgstr ""
"Project-Id-Version: e2fsprogs 1.40.1\n"
"Project-Id-Version: e2fsprogs 1.40.3\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2007-12-05 19:25-0500\n"
"PO-Revision-Date: 2007-07-09 21:11+0200\n"
"PO-Revision-Date: 2007-12-11 17:50+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"
@ -2443,7 +2419,7 @@ msgstr " nie by
#: e2fsck/unix.c:284
msgid " primary superblock features different from backup"
msgstr ""
msgstr " cechy głównego superbloku różnią się od kopii zapasowej"
#: e2fsck/unix.c:288
#, c-format
@ -2545,6 +2521,8 @@ msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
msgstr ""
"E2FSCK_JBD_DEBUG \"%s\" nie jest liczbą całkowitą\n"
"\n"
#: e2fsck/unix.c:864
#, c-format
@ -2553,6 +2531,9 @@ msgid ""
"Invalid non-numeric argument to -%c (\"%s\")\n"
"\n"
msgstr ""
"\n"
"Błędny argument nieliczbowy dla -%c (\"%s\")\n"
"\n"
#: e2fsck/unix.c:903
#, c-format
@ -2573,13 +2554,13 @@ msgid "need terminal for interactive repairs"
msgstr "interaktywna naprawa wymaga terminala"
#: e2fsck/unix.c:977
#, fuzzy, c-format
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr "%s podczas próby wykonania kopii zapasowej bloków...\n"
msgstr "%s: %s podczas próby wykonania kopii zapasowej bloków...\n"
#: e2fsck/unix.c:979
msgid "Superblock invalid,"
msgstr ""
msgstr "Superblok błędny,"
#: e2fsck/unix.c:980
msgid "Group descriptors look bad..."
@ -2614,8 +2595,7 @@ msgstr "Zapewne nie istniej
#: e2fsck/unix.c:1009
#, 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:1013
#, c-format
@ -2637,9 +2617,7 @@ msgstr "podczas sprawdzania kroniki ext3 dla %s"
#: e2fsck/unix.c:1109
#, 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"
@ -2896,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
@ -3412,10 +3388,8 @@ msgstr "Nie mo
#: misc/fsck.c:875
#, c-format
msgid ""
"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
"number\n"
msgstr ""
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:902
#, c-format
@ -3432,11 +3406,8 @@ msgid "--waiting-- (pass %d)\n"
msgstr "--oczekiwanie-- (przebieg %d)\n"
#: misc/fsck.c:1064
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:1106
#, c-format
@ -3464,7 +3435,7 @@ msgid "While reading version on %s"
msgstr "Podczas odczytu wersji %s"
#: misc/mke2fs.c:97
#, fuzzy, c-format
#, c-format
msgid ""
"Usage: %s [-c|-t|-l filename] [-b block-size] [-f fragment-size]\n"
"\t[-i bytes-per-inode] [-I inode-size] [-j] [-J journal-options]\n"
@ -3477,7 +3448,7 @@ msgstr ""
"\t[-i bajtów-na-i-wêze³] [-I rozm-i-wêz³a] [-j] [-J opcje-kroniki]\n"
"\t[-N liczba-i-wêz³ów] [-m procent-rezerw.-bloków] [-o os-twórcy]\n"
"\t[-g bloków-w-grupie] [-L etykieta-wolumenu] [-M ost.-mont.-katalog]\n"
"\t[-O cecha[,...]] [-r wersja-fs] [-R opcje] [-qvSV]\n"
"\t[-O cecha[,...]] [-r wersja-fs] [-E opcja-rozszerzona[,...]] [-qvSV]\n"
"\turz±dzenie [liczba-bloków]\n"
#: misc/mke2fs.c:197
@ -3695,15 +3666,12 @@ 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:856
#, c-format
@ -3818,11 +3786,8 @@ msgstr "%d-bajtowe bloki s
#: misc/mke2fs.c:1211
#, 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:1229
msgid "filesystem"
@ -3864,8 +3829,7 @@ msgstr "Cechy systemu plik
#: misc/mke2fs.c:1338
#, 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:1350
#, c-format
@ -3878,9 +3842,7 @@ msgstr "podczas pr
#: misc/mke2fs.c:1428
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:1437
msgid "blocks per group count out of range"
@ -4511,6 +4473,3 @@ msgstr "bloki metadanych"
#, c-format
msgid "Should never happen: resize inode corrupt!\n"
msgstr "Nigdy siê nie powinno zdarzyæ: i-wêze³ zmiany rozmiaru uszkodzony!\n"
#~ msgid "Couldn't find ext2 superblock,"
#~ msgstr "Nie znaleziono superbloku ext2,"

BIN
po/rw.gmo

Binary file not shown.

4837
po/rw.po

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,7 @@ extern char *program_name;
errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt,
blk_t *new_size, int flags EXT2FS_ATTR((unused)))
{
#ifdef __linux__
struct ext2_new_group_input input;
struct ext2_super_block *sb = fs->super;
unsigned long new_desc_blocks;
@ -158,4 +159,9 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt,
close(fd);
return 0;
#else
printf(_("Filesystem at %s is mounted on %s, and on-line resizing is"
"not supported on this system.\n"), fs->device_name, mtpt);
exit(1);
#endif
}